pixi-effects 0.26.0 → 0.26.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.
Files changed (46) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +5 -5
  3. package/ai/chat-template.html +3 -3
  4. package/ai/tools/check.mjs +12 -0
  5. package/dist/{Base-BgnRXbtJ.d.ts → Base-CpdDs4HT.d.ts} +1 -1
  6. package/dist/{Base-DHVKqA46.d.cts → Base-TbBhHPrG.d.cts} +1 -1
  7. package/dist/Composition-THQPG4E5.cjs +16 -0
  8. package/dist/{Composition-2GJSCHPP.cjs.map → Composition-THQPG4E5.cjs.map} +1 -1
  9. package/dist/Composition-Z2VY3KWZ.js +7 -0
  10. package/dist/{Composition-C4FSWJZF.js.map → Composition-Z2VY3KWZ.js.map} +1 -1
  11. package/dist/Controller.d.cts +2 -2
  12. package/dist/Controller.d.ts +2 -2
  13. package/dist/{Movie-DP5p1r4E.d.ts → Movie-DVeDTdnc.d.ts} +23 -2
  14. package/dist/{Movie-DXReF4-W.d.cts → Movie-i05Oh9mJ.d.cts} +23 -2
  15. package/dist/Presenter.d.cts +2 -2
  16. package/dist/Presenter.d.ts +2 -2
  17. package/dist/{chunk-DP37TTMO.cjs → chunk-EABL3UKJ.cjs} +5 -3
  18. package/dist/chunk-EABL3UKJ.cjs.map +1 -0
  19. package/dist/{chunk-SY27HZC5.cjs → chunk-H3RHEH5W.cjs} +59 -59
  20. package/dist/{chunk-SY27HZC5.cjs.map → chunk-H3RHEH5W.cjs.map} +1 -1
  21. package/dist/{chunk-PRZ4U6JN.js → chunk-JHJNEIDI.js} +5 -3
  22. package/dist/chunk-JHJNEIDI.js.map +1 -0
  23. package/dist/{chunk-XS6GSJCN.js → chunk-YEVAUQ6Y.js} +3 -3
  24. package/dist/{chunk-XS6GSJCN.js.map → chunk-YEVAUQ6Y.js.map} +1 -1
  25. package/dist/index.cjs +186 -32
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.cts +4 -4
  28. package/dist/index.d.ts +4 -4
  29. package/dist/index.js +162 -8
  30. package/dist/index.js.map +1 -1
  31. package/dist/loader.css +35 -2
  32. package/dist/three.cjs +5 -5
  33. package/dist/three.d.cts +2 -2
  34. package/dist/three.d.ts +2 -2
  35. package/dist/three.js +1 -1
  36. package/dist/{types-CoT0ypcx.d.ts → types-DSGwN5w1.d.cts} +2 -0
  37. package/dist/{types-CoT0ypcx.d.cts → types-DSGwN5w1.d.ts} +2 -0
  38. package/docs/api.md +3 -2
  39. package/llms-full.txt +4 -3
  40. package/package.json +1 -1
  41. package/skills/pixi-effects/SKILL.md +2 -2
  42. package/skills/pixi-effects/template.html +6 -5
  43. package/dist/Composition-2GJSCHPP.cjs +0 -16
  44. package/dist/Composition-C4FSWJZF.js +0 -7
  45. package/dist/chunk-DP37TTMO.cjs.map +0 -1
  46. package/dist/chunk-PRZ4U6JN.js.map +0 -1
package/dist/loader.css CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * pixi-effects loader: one line of HTML on the page, a few lines of CSS, no JavaScript of your own.
3
3
  *
4
- * <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pixi-effects@0.26.0/dist/loader.css">
4
+ * <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pixi-effects@0.26.1/dist/loader.css">
5
5
  * <div class="stage" style="position: relative"> <!-- any box the canvas sits in, with position: relative -->
6
6
  * <canvas id="stage" width="1280" height="720"></canvas>
7
7
  * <div class="pe-loader" data-label="LOADING"></div> <!-- or class="pe-loader pe-loader--bar" -->
@@ -15,6 +15,8 @@
15
15
  *
16
16
  * Looks: .pe-loader (a ring) · .pe-loader--pulse (a breathing dot) · .pe-loader--bar (a sweeping line along the bottom)
17
17
  * .pe-loader--custom: no built-in drawing; put your own markup inside (animate only transform / opacity there too).
18
+ * Progress: movie.init() also writes how far it is (--pe-progress 0..1, data-stage, data-percent): a bar along the bottom and the label
19
+ * "BUILDING LAYERS 62%" appear by themselves; the same numbers come as the movie's `loadprogress` event.
18
20
  * Restyle: --pe-loader-color, --pe-loader-bg, --pe-loader-track, --pe-loader-size (set them on the element or on any ancestor).
19
21
  */
20
22
  .pe-loader {
@@ -80,7 +82,37 @@
80
82
  }
81
83
  .pe-loader--bar[data-label]::after { top: calc(50% - 6px); }
82
84
 
83
- /* your own drawing inside the box */
85
+ /* how far init is: a thin bar along the bottom edge and a label of the stage and the percent. The bar is scaled by --pe-progress (a number the library
86
+ writes; the browser eases between the steps), so it moves on the compositor like the rest and keeps its look while the page is busy. */
87
+ .pe-loader__bar {
88
+ position: absolute;
89
+ left: 0;
90
+ right: 0;
91
+ bottom: 0;
92
+ height: 3px;
93
+ background: var(--pe-loader-color, #ffffff);
94
+ transform-origin: 0 50%;
95
+ transform: scaleX(var(--pe-progress, 0));
96
+ transition: transform 0.35s linear;
97
+ }
98
+ .pe-loader[data-stage]::after {
99
+ content: attr(data-stage) ' ' attr(data-percent) '%';
100
+ position: absolute;
101
+ left: 0;
102
+ right: 0;
103
+ top: calc(50% + var(--pe-loader-size, 34px) / 2 + 18px);
104
+ padding-left: 0.4em;
105
+ text-align: center;
106
+ font: 600 11px/1 system-ui, -apple-system, 'Helvetica Neue', Arial, sans-serif;
107
+ letter-spacing: 0.4em;
108
+ opacity: 0.7;
109
+ animation: none;
110
+ }
111
+ .pe-loader--bar[data-stage]::before { display: none; }
112
+ .pe-loader--bar[data-stage]::after { top: 50%; }
113
+
114
+ /* your own drawing inside the box (the built-in bar and label stay out of it; --pe-progress is still there for your own markup) */
115
+ .pe-loader--custom .pe-loader__bar { display: none; }
84
116
  .pe-loader--custom::before,
85
117
  .pe-loader--custom::after { content: none; display: none; }
86
118
 
@@ -104,6 +136,7 @@
104
136
  }
105
137
 
106
138
  @media (prefers-reduced-motion: reduce) {
139
+ .pe-loader__bar { transition: none; }
107
140
  .pe-loader::before { animation-duration: 3s; }
108
141
  .pe-loader--pulse::before, .pe-loader--bar::before { animation-duration: 3.2s; }
109
142
  .pe-loader[data-label]::after { animation: none; opacity: 0.6; }
package/dist/three.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkDP37TTMO_cjs = require('./chunk-DP37TTMO.cjs');
3
+ var chunkEABL3UKJ_cjs = require('./chunk-EABL3UKJ.cjs');
4
4
  require('./chunk-ECA2WNRX.cjs');
5
5
  require('./chunk-TWZNOUM7.cjs');
6
6
  var pixi_js = require('pixi.js');
7
7
  var three$1 = require('three');
8
8
 
9
- var ThreeSequence = class extends chunkDP37TTMO_cjs.Sequence {
9
+ var ThreeSequence = class extends chunkEABL3UKJ_cjs.Sequence {
10
10
  _renderer = null;
11
11
  _scene = null;
12
12
  _camera = null;
@@ -25,7 +25,7 @@ var ThreeSequence = class extends chunkDP37TTMO_cjs.Sequence {
25
25
  if (this.duration === void 0) {
26
26
  this.duration = this.parent?.duration ?? this.root.duration;
27
27
  }
28
- const scope = chunkDP37TTMO_cjs.buildScope(this, this.parent, this.root);
28
+ const scope = chunkEABL3UKJ_cjs.buildScope(this, this.parent, this.root);
29
29
  const width = resolveDim(spec.width, scope) ?? this.parent?.width ?? this.root.width;
30
30
  const height = resolveDim(spec.height, scope) ?? this.parent?.height ?? this.root.height;
31
31
  const resolution = spec.resolution ?? 1;
@@ -145,12 +145,12 @@ var ThreeSequence = class extends chunkDP37TTMO_cjs.Sequence {
145
145
  function resolveDim(v, scope) {
146
146
  if (v === void 0) return void 0;
147
147
  if (typeof v === "number") return v;
148
- return chunkDP37TTMO_cjs.evaluateExpr(v, scope);
148
+ return chunkEABL3UKJ_cjs.evaluateExpr(v, scope);
149
149
  }
150
150
 
151
151
  // src/three/index.ts
152
152
  function registerThree() {
153
- chunkDP37TTMO_cjs.registerSequenceType("three", ThreeSequence);
153
+ chunkEABL3UKJ_cjs.registerSequenceType("three", ThreeSequence);
154
154
  }
155
155
  function three(spec) {
156
156
  return spec;
package/dist/three.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- import { d as SequenceCommon, O as PropValue, S as SequenceSpec } from './types-CoT0ypcx.cjs';
1
+ import { d as SequenceCommon, O as PropValue, S as SequenceSpec } from './types-DSGwN5w1.cjs';
2
2
  import { Scene, Camera, WebGLRenderer } from 'three';
3
- import { S as Sequence, P as PathRouters } from './Base-DHVKqA46.cjs';
3
+ import { S as Sequence, P as PathRouters } from './Base-TbBhHPrG.cjs';
4
4
  import 'pixi.js';
5
5
  import 'gsap';
6
6
 
package/dist/three.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { d as SequenceCommon, O as PropValue, S as SequenceSpec } from './types-CoT0ypcx.js';
1
+ import { d as SequenceCommon, O as PropValue, S as SequenceSpec } from './types-DSGwN5w1.js';
2
2
  import { Scene, Camera, WebGLRenderer } from 'three';
3
- import { S as Sequence, P as PathRouters } from './Base-BgnRXbtJ.js';
3
+ import { S as Sequence, P as PathRouters } from './Base-CpdDs4HT.js';
4
4
  import 'pixi.js';
5
5
  import 'gsap';
6
6
 
package/dist/three.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Sequence, buildScope, evaluateExpr, registerSequenceType } from './chunk-PRZ4U6JN.js';
1
+ import { Sequence, buildScope, evaluateExpr, registerSequenceType } from './chunk-JHJNEIDI.js';
2
2
  import './chunk-TLYTYBWX.js';
3
3
  import './chunk-BXOCEZ4U.js';
4
4
  import { Texture, Sprite } from 'pixi.js';
@@ -710,6 +710,8 @@ interface CompositionShape {
710
710
  duration: number;
711
711
  /** The movie's frame rate, on the root shape only (a shader layer's `iFrame` needs it). */
712
712
  frameRate?: number;
713
+ /** Called after each layer is built (the root shape only): feeds `loadprogress` and lets the page paint now and then. */
714
+ onLayerBuilt?: () => void | Promise<void>;
713
715
  }
714
716
  /** Audio descriptor pushed to the mixdown queue by AudioSequence/VideoSequence. */
715
717
  interface AudioDescriptor {
@@ -710,6 +710,8 @@ interface CompositionShape {
710
710
  duration: number;
711
711
  /** The movie's frame rate, on the root shape only (a shader layer's `iFrame` needs it). */
712
712
  frameRate?: number;
713
+ /** Called after each layer is built (the root shape only): feeds `loadprogress` and lets the page paint now and then. */
714
+ onLayerBuilt?: () => void | Promise<void>;
713
715
  }
714
716
  /** Audio descriptor pushed to the mixdown queue by AudioSequence/VideoSequence. */
715
717
  interface AudioDescriptor {
package/docs/api.md CHANGED
@@ -45,7 +45,7 @@ interface MovieOptions {
45
45
  composition?: CompositionSpec; // root composition (see DSL reference)
46
46
  poster?: number; // seconds: the frame shown before play (negative: from the end), see movie.poster
47
47
  motionBlur?: boolean | number | { samples?: number; shutter?: number }; // blur for render() / snapshot() / contactSheet(), not live playback; see Motion blur
48
- loader?: HTMLElement | string | false; // the page's loader (see pixi-effects/loader.css): faded out when ready, stopped if init fails; default: a .pe-loader next to the canvas
48
+ loader?: HTMLElement | string | false; // the page's loader (see pixi-effects/loader.css): shows how far init is (a bar, "BUILDING LAYERS 62%"), faded out when ready, stopped if init fails; default: a .pe-loader next to the canvas
49
49
  }
50
50
  ```
51
51
 
@@ -223,6 +223,7 @@ movie.off(event, fn): this
223
223
  | `'play'` | none | when `play()` actually transitions from paused |
224
224
  | `'pause'` | none | when `pause()` actually transitions from playing |
225
225
  | `'progress'`| `{ progress: number; frame: number; totalFrames: number }` | during `render()`, once per encoded frame |
226
+ | `'loadprogress'` | `{ stage: 'assets' \| 'build' \| 'sound' \| 'frames'; loaded: number; total: number; progress: number }` | during `init()`, after each asset and each layer built, once the sound is mixed; `progress` is 0 to 1 for the whole init. The page's `.pe-loader` already shows it; `movie.loadStages` gives the milliseconds per stage afterwards |
226
227
  | `'seeking'` / `'seeked'` | `{ frame, totalFrames }` (the frame it lands on) | a `gotoFrame()` to another frame starts / has finished. NOT emitted for playback ticks, `render()`, `snapshot()` or `contactSheet()` |
227
228
  | `'stop'` | `{ index: number; stop: Stop; pageIndex: number }` | a presentation is on a stop: `next()` played to it, or `prev()` / `goToStop()` / `goToPage()` jumped to it |
228
229
  | `'ended'` | none | playback ran off the end (after `'pause'`); pausing by hand does not emit it |
@@ -372,7 +373,7 @@ el('play').onclick = () => (movie.isPlaying ? movie.pause() : movie.play());
372
373
  el('seek').oninput = e => movie.gotoFrame(+e.target.value);
373
374
  ```
374
375
 
375
- What you have: `play()`, `pause()`, `gotoFrame(frame)`, `volume`, `muted` / `toggleMute()`; the state `currentFrame`, `totalFrames`, `frameRate`, `duration`, `isPlaying`, `isReady`, `audioBlocked` (true while the browser keeps the movie's sound silent until a tap: show "tap for sound"; a tap or key press that arrives while `play()` is pending, or the next `play()` made from a tap, starts it); the events above; `render()` for a download button; `snapshot()` for a thumbnail; `timelineData()` / `timelineSvg()` for a timeline like `pixi-effects-view`'s. Keep the movie's `canvas` wherever your layout wants it (the page's CSS sizes it). To only change how `Controller` looks, see **Theme** below.
376
+ What you have: `play()`, `pause()`, `gotoFrame(frame)`, `volume`, `muted` / `toggleMute()`; the state `currentFrame`, `totalFrames`, `frameRate`, `duration`, `isPlaying`, `isReady`, `loadStages` (milliseconds `init()` spent in `assets` / `build` / `sound` / `frames`), `audioBlocked` (true while the browser keeps the movie's sound silent until a tap: show "tap for sound"; a tap or key press that arrives while `play()` is pending, or the next `play()` made from a tap, starts it); the events above; `render()` for a download button; `snapshot()` for a thumbnail; `timelineData()` / `timelineSvg()` for a timeline like `pixi-effects-view`'s. Keep the movie's `canvas` wherever your layout wants it (the page's CSS sizes it). To only change how `Controller` looks, see **Theme** below.
376
377
 
377
378
  ## `Controller`
378
379
 
package/llms-full.txt CHANGED
@@ -6,7 +6,7 @@ Concatenation of the skill, cheatsheet, pitfalls, recipes and the DSL / API refe
6
6
 
7
7
  <!-- ===== skills/pixi-effects/SKILL.md ===== -->
8
8
 
9
- > Written for pixi-effects 0.26.0. Update this skill with `npx skills update`; the newest docs are at https://yjmtmtk.github.io/pixi-effects/
9
+ > Written for pixi-effects 0.26.1. Update this skill with `npx skills update`; the newest docs are at https://yjmtmtk.github.io/pixi-effects/
10
10
 
11
11
  # pixi-effects — write a video as data
12
12
 
@@ -3236,7 +3236,7 @@ interface MovieOptions {
3236
3236
  composition?: CompositionSpec; // root composition (see DSL reference)
3237
3237
  poster?: number; // seconds: the frame shown before play (negative: from the end), see movie.poster
3238
3238
  motionBlur?: boolean | number | { samples?: number; shutter?: number }; // blur for render() / snapshot() / contactSheet(), not live playback; see Motion blur
3239
- loader?: HTMLElement | string | false; // the page's loader (see pixi-effects/loader.css): faded out when ready, stopped if init fails; default: a .pe-loader next to the canvas
3239
+ loader?: HTMLElement | string | false; // the page's loader (see pixi-effects/loader.css): shows how far init is (a bar, "BUILDING LAYERS 62%"), faded out when ready, stopped if init fails; default: a .pe-loader next to the canvas
3240
3240
  }
3241
3241
  ```
3242
3242
 
@@ -3414,6 +3414,7 @@ movie.off(event, fn): this
3414
3414
  | `'play'` | none | when `play()` actually transitions from paused |
3415
3415
  | `'pause'` | none | when `pause()` actually transitions from playing |
3416
3416
  | `'progress'`| `{ progress: number; frame: number; totalFrames: number }` | during `render()`, once per encoded frame |
3417
+ | `'loadprogress'` | `{ stage: 'assets' \| 'build' \| 'sound' \| 'frames'; loaded: number; total: number; progress: number }` | during `init()`, after each asset and each layer built, once the sound is mixed; `progress` is 0 to 1 for the whole init. The page's `.pe-loader` already shows it; `movie.loadStages` gives the milliseconds per stage afterwards |
3417
3418
  | `'seeking'` / `'seeked'` | `{ frame, totalFrames }` (the frame it lands on) | a `gotoFrame()` to another frame starts / has finished. NOT emitted for playback ticks, `render()`, `snapshot()` or `contactSheet()` |
3418
3419
  | `'stop'` | `{ index: number; stop: Stop; pageIndex: number }` | a presentation is on a stop: `next()` played to it, or `prev()` / `goToStop()` / `goToPage()` jumped to it |
3419
3420
  | `'ended'` | none | playback ran off the end (after `'pause'`); pausing by hand does not emit it |
@@ -3563,7 +3564,7 @@ el('play').onclick = () => (movie.isPlaying ? movie.pause() : movie.play());
3563
3564
  el('seek').oninput = e => movie.gotoFrame(+e.target.value);
3564
3565
  ```
3565
3566
 
3566
- What you have: `play()`, `pause()`, `gotoFrame(frame)`, `volume`, `muted` / `toggleMute()`; the state `currentFrame`, `totalFrames`, `frameRate`, `duration`, `isPlaying`, `isReady`, `audioBlocked` (true while the browser keeps the movie's sound silent until a tap: show "tap for sound"; a tap or key press that arrives while `play()` is pending, or the next `play()` made from a tap, starts it); the events above; `render()` for a download button; `snapshot()` for a thumbnail; `timelineData()` / `timelineSvg()` for a timeline like `pixi-effects-view`'s. Keep the movie's `canvas` wherever your layout wants it (the page's CSS sizes it). To only change how `Controller` looks, see **Theme** below.
3567
+ What you have: `play()`, `pause()`, `gotoFrame(frame)`, `volume`, `muted` / `toggleMute()`; the state `currentFrame`, `totalFrames`, `frameRate`, `duration`, `isPlaying`, `isReady`, `loadStages` (milliseconds `init()` spent in `assets` / `build` / `sound` / `frames`), `audioBlocked` (true while the browser keeps the movie's sound silent until a tap: show "tap for sound"; a tap or key press that arrives while `play()` is pending, or the next `play()` made from a tap, starts it); the events above; `render()` for a download button; `snapshot()` for a thumbnail; `timelineData()` / `timelineSvg()` for a timeline like `pixi-effects-view`'s. Keep the movie's `canvas` wherever your layout wants it (the page's CSS sizes it). To only change how `Controller` looks, see **Theme** below.
3567
3568
 
3568
3569
  ## `Controller`
3569
3570
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixi-effects",
3
- "version": "0.26.0",
3
+ "version": "0.26.1",
4
4
  "description": "Declarative composition and video rendering for the web. Built on PixiJS v8.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: pixi-effects
3
- description: Use when asked to make, animate, preview or export a video, motion graphics, an animated title, a lower third, kinetic type, a promo, a slideshow with transitions, an animated chart or data story, a social clip, a 2.5D / depth scene, or music and sound for a video, written as code in JavaScript or HTML. pixi-effects is a JS library where a video is a plain-object composition (text, shape, image, video, audio and file-free sfx / music, camera, light and shader layers with keyframes) that plays in the browser, is checked by a tool the agent can run, and exports MP4 / WebM / MOV with no server. Not for a project that already uses another video tool (Remotion, Motion Canvas, ffmpeg): follow that tool instead.
3
+ description: Use when asked to make, animate, preview or export a video, motion graphics, an animated title, a lower third, kinetic type, a promo, a slideshow with transitions, an animated chart or data story, a social clip, a 2.5D / depth scene, or music and sound for a video, written as code in JavaScript or HTML. pixi-effects is a JS library where a video is a plain-object composition (text, shape, image, video, audio and file-free sfx / music, camera, light and shader layers with keyframes) that plays in the browser, is checked by a tool the agent can run, and exports MP4 / WebM / MOV with no server. Not for a project that already uses another video tool (Remotion, Motion Canvas, ffmpeg); follow that tool instead.
4
4
  ---
5
5
 
6
- > Written for pixi-effects 0.26.0. Update this skill with `npx skills update`; the newest docs are at https://yjmtmtk.github.io/pixi-effects/
6
+ > Written for pixi-effects 0.26.1. Update this skill with `npx skills update`; the newest docs are at https://yjmtmtk.github.io/pixi-effects/
7
7
 
8
8
  # pixi-effects — write a video as data
9
9
 
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <title>pixi-effects video</title>
7
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pixi-effects@0.26.0/dist/loader.css" /> <!-- the loader: HTML + CSS only, so it is on screen at once and keeps moving while the page builds the video -->
7
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/pixi-effects@0.26.1/dist/loader.css" /> <!-- the loader: HTML + CSS only, so it is on screen at once and keeps moving while the page builds the video -->
8
8
  <style>
9
9
  body { background: #0d1220; margin: 0; padding: 16px; }
10
10
  .stage { position: relative; width: min(960px, 100%); } /* the player and the loader both sit inside this box */
@@ -39,15 +39,16 @@
39
39
  "gsap": "https://esm.sh/gsap@3.12.5",
40
40
  "gsap/PixiPlugin": "https://esm.sh/gsap@3.12.5/PixiPlugin",
41
41
  "mediabunny": "https://esm.sh/mediabunny",
42
- "pixi-effects": "https://cdn.jsdelivr.net/npm/pixi-effects@0.26.0/dist/index.js",
43
- "pixi-effects/controller": "https://cdn.jsdelivr.net/npm/pixi-effects@0.26.0/dist/Controller.js",
44
- "pixi-effects/presenter": "https://cdn.jsdelivr.net/npm/pixi-effects@0.26.0/dist/Presenter.js",
45
- "pixi-effects/three": "https://cdn.jsdelivr.net/npm/pixi-effects@0.26.0/dist/three.js",
42
+ "pixi-effects": "https://cdn.jsdelivr.net/npm/pixi-effects@0.26.1/dist/index.js",
43
+ "pixi-effects/controller": "https://cdn.jsdelivr.net/npm/pixi-effects@0.26.1/dist/Controller.js",
44
+ "pixi-effects/presenter": "https://cdn.jsdelivr.net/npm/pixi-effects@0.26.1/dist/Presenter.js",
45
+ "pixi-effects/three": "https://cdn.jsdelivr.net/npm/pixi-effects@0.26.1/dist/three.js",
46
46
  "pixi-filters": "https://esm.sh/pixi-filters@6.1.5?external=pixi.js",
47
47
  "three": "https://esm.sh/three@0.178.0"
48
48
  }
49
49
  }
50
50
  </script>
51
+ <link rel="modulepreload" href="https://cdn.jsdelivr.net/npm/pixi-effects@0.26.1/dist/index.js" /> <!-- after the import map: the library downloads while the page is parsed -->
51
52
 
52
53
  <script type="module">
53
54
  import { Movie, kenBurns, withFade } from 'pixi-effects';
@@ -1,16 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkSY27HZC5_cjs = require('./chunk-SY27HZC5.cjs');
4
- require('./chunk-DP37TTMO.cjs');
5
- require('./chunk-3DLYAPK7.cjs');
6
- require('./chunk-ECA2WNRX.cjs');
7
- require('./chunk-TWZNOUM7.cjs');
8
-
9
-
10
-
11
- Object.defineProperty(exports, "CompositionSequence", {
12
- enumerable: true,
13
- get: function () { return chunkSY27HZC5_cjs.CompositionSequence; }
14
- });
15
- //# sourceMappingURL=Composition-2GJSCHPP.cjs.map
16
- //# sourceMappingURL=Composition-2GJSCHPP.cjs.map
@@ -1,7 +0,0 @@
1
- export { CompositionSequence } from './chunk-XS6GSJCN.js';
2
- import './chunk-PRZ4U6JN.js';
3
- import './chunk-AXZUKNXF.js';
4
- import './chunk-TLYTYBWX.js';
5
- import './chunk-BXOCEZ4U.js';
6
- //# sourceMappingURL=Composition-C4FSWJZF.js.map
7
- //# sourceMappingURL=Composition-C4FSWJZF.js.map