pixi-effects 0.48.1 → 0.48.2
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 +7 -0
- package/README.md +5 -5
- package/ai/chat-template.html +3 -3
- package/dist/Composition-5FKV2IBP.js +7 -0
- package/dist/{Composition-BOLWGT2R.js.map → Composition-5FKV2IBP.js.map} +1 -1
- package/dist/Composition-TJ5D7Z63.cjs +16 -0
- package/dist/{Composition-ZZEOEETS.cjs.map → Composition-TJ5D7Z63.cjs.map} +1 -1
- package/dist/{Spans-MWYFG7RI.cjs → Spans-5ENZ3XGS.cjs} +9 -9
- package/dist/{Spans-MWYFG7RI.cjs.map → Spans-5ENZ3XGS.cjs.map} +1 -1
- package/dist/{Spans-PGXRMD6J.js → Spans-6A3VLHRH.js} +4 -4
- package/dist/{Spans-PGXRMD6J.js.map → Spans-6A3VLHRH.js.map} +1 -1
- package/dist/{chunk-L3XC464G.cjs → chunk-45ALIMAF.cjs} +76 -56
- package/dist/chunk-45ALIMAF.cjs.map +1 -0
- package/dist/{chunk-AJWUCFGM.js → chunk-6D4W2KZQ.js} +3 -3
- package/dist/{chunk-AJWUCFGM.js.map → chunk-6D4W2KZQ.js.map} +1 -1
- package/dist/{chunk-M2LFQY2E.cjs → chunk-CCPJD76D.cjs} +63 -63
- package/dist/{chunk-M2LFQY2E.cjs.map → chunk-CCPJD76D.cjs.map} +1 -1
- package/dist/{chunk-L3MEZZAV.js → chunk-IVKI6CPH.js} +10 -12
- package/dist/chunk-IVKI6CPH.js.map +1 -0
- package/dist/{chunk-IY5YTIK3.js → chunk-RCKLUCB7.js} +36 -16
- package/dist/chunk-RCKLUCB7.js.map +1 -0
- package/dist/{chunk-V3VBHSK6.cjs → chunk-Z3DM4ETD.cjs} +55 -76
- package/dist/chunk-Z3DM4ETD.cjs.map +1 -0
- package/dist/index.cjs +33 -33
- package/dist/index.js +3 -3
- package/dist/loader.css +1 -1
- package/dist/present.cjs +3 -3
- package/dist/present.js +3 -3
- package/dist/three.cjs +5 -5
- package/dist/three.js +1 -1
- package/llms-full.txt +1 -1
- package/package.json +1 -1
- package/skills/pixi-effects/SKILL.md +1 -1
- package/skills/pixi-effects/template.html +6 -6
- package/dist/Composition-BOLWGT2R.js +0 -7
- package/dist/Composition-ZZEOEETS.cjs +0 -16
- package/dist/chunk-IY5YTIK3.js.map +0 -1
- package/dist/chunk-L3MEZZAV.js.map +0 -1
- package/dist/chunk-L3XC464G.cjs.map +0 -1
- package/dist/chunk-V3VBHSK6.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.48.2
|
|
4
|
+
|
|
5
|
+
Nothing breaks: an app that bundles pixi-effects keeps about 100 KB (gzipped) less of pixi.js, and closing movies no longer uses up PixiJS's 500 warnings.
|
|
6
|
+
|
|
7
|
+
- **An app that bundles pixi-effects (Vite, webpack, esbuild) no longer keeps all of pixi.js.** The named filters read pixi.js's classes from a namespace by a string, so a bundler kept every export, renderers and `@xmldom/xmldom` included. They are imported by name now. Measured on a Vite app that only plays: 366.6 KB gzipped before, 266.4 KB (WebGPU) / 270.5 KB (WebGL) after, the renderer fetched on demand, no `@xmldom/xmldom`. A test keeps `import * as … from 'pixi.js'` out of `src/`.
|
|
8
|
+
- **Fixed: closing a few movies on one page used up PixiJS's 500 warnings** ("PixiJS Warning: too many warnings", reported on 0.48.1 after the second closed modal), and then PixiJS's real warnings were gone for that page. 0.48.1 only hid the "destroyed while still bound to a shader" lines; PixiJS still counted them. Now a teardown (`destroy()`, a rebuild) unbinds a destroyed texture or buffer from its bind group without calling PixiJS's `warn()` at all, so nothing is counted; at any other time PixiJS warns as before. (Destroying in another order does not help: PixiJS's own renderer teardown warns about a filter's buffers, and `app.destroy(true)` empties the texture pool shared by the page.) The film `warnings-none-at-destroy` now also makes, plays and destroys three movies on one page and checks that 499 later PixiJS warnings all print.
|
|
9
|
+
|
|
3
10
|
## 0.48.1
|
|
4
11
|
|
|
5
12
|
Two fixes, nothing breaks: `movie.destroy()` no longer makes PixiJS print hundreds of warnings, and a missing pixi-filters names the filters that need it.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# pixi-effects
|
|
2
2
|
|
|
3
|
-
> **Status**: experimental — current release `0.48.
|
|
3
|
+
> **Status**: experimental — current release `0.48.2`. The API may still change between minor versions; see the [CHANGELOG](./CHANGELOG.md) for what each release changed.
|
|
4
4
|
|
|
5
5
|
**[Gallery →](https://yjmtmtk.github.io/pixi-effects/examples/gallery/)** · 43 pieces written as plain data by AI models · **[For AI →](https://yjmtmtk.github.io/pixi-effects/for-ai.html)** · what an AI reads and runs · **[Playground →](https://yjmtmtk.github.io/pixi-effects/examples/playground.html)** in the browser.
|
|
6
6
|
|
|
@@ -49,8 +49,8 @@ Drop the imports into an [importmap](https://developer.mozilla.org/docs/Web/HTML
|
|
|
49
49
|
"imports": {
|
|
50
50
|
"pixi.js": "https://esm.sh/pixi.js@8.22.0?bundle-deps",
|
|
51
51
|
"mediabunny": "https://esm.sh/mediabunny",
|
|
52
|
-
"pixi-effects": "https://cdn.jsdelivr.net/npm/pixi-effects@0.48.
|
|
53
|
-
"pixi-effects/controller": "https://cdn.jsdelivr.net/npm/pixi-effects@0.48.
|
|
52
|
+
"pixi-effects": "https://cdn.jsdelivr.net/npm/pixi-effects@0.48.2/dist/index.js",
|
|
53
|
+
"pixi-effects/controller": "https://cdn.jsdelivr.net/npm/pixi-effects@0.48.2/dist/Controller.js"
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
</script>
|
|
@@ -63,7 +63,7 @@ Drop the imports into an [importmap](https://developer.mozilla.org/docs/Web/HTML
|
|
|
63
63
|
|
|
64
64
|
The `mediabunny` line is needed only to export (the download button, `movie.render()`) or for a `video` layer; a page that only plays can leave it out and never fetches it (or call `useMediabunny(url)` instead, see [the API](docs/api.md#where-the-encoder-comes-from-usemediabunnysource)).
|
|
65
65
|
|
|
66
|
-
Load the `dist/` files **as they are** (jsDelivr's `/npm/…/dist/…`, or unpkg's `https://unpkg.com/pixi-effects@0.48.
|
|
66
|
+
Load the `dist/` files **as they are** (jsDelivr's `/npm/…/dist/…`, or unpkg's `https://unpkg.com/pixi-effects@0.48.2/dist/index.js`) rather than a CDN-rebundled build such as `esm.sh/pixi-effects` or jsDelivr's `+esm`: the entries (`pixi-effects`, `…/controller`, `…/three`) share internal chunks, which only works when each file is served untouched.
|
|
67
67
|
|
|
68
68
|
> **Using three.js?** Add two more entries (`three` and `pixi-effects/three`) to this importmap — see [Adding three.js](#adding-threejs-optional) below.
|
|
69
69
|
>
|
|
@@ -80,7 +80,7 @@ Add two more entries to the importmap above: three.js itself, and the `pixi-effe
|
|
|
80
80
|
"...": "(everything from the importmap above)",
|
|
81
81
|
"three": "https://esm.sh/three@0.178.0",
|
|
82
82
|
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.178.0/examples/jsm/",
|
|
83
|
-
"pixi-effects/three": "https://cdn.jsdelivr.net/npm/pixi-effects@0.48.
|
|
83
|
+
"pixi-effects/three": "https://cdn.jsdelivr.net/npm/pixi-effects@0.48.2/dist/three.js"
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
</script>
|
package/ai/chat-template.html
CHANGED
|
@@ -59,9 +59,9 @@
|
|
|
59
59
|
"imports": {
|
|
60
60
|
"pixi.js": "https://cdn.jsdelivr.net/npm/pixi.js@8.22.0/dist/pixi.min.mjs",
|
|
61
61
|
"mediabunny": "https://cdn.jsdelivr.net/npm/mediabunny@1.61.3/+esm",
|
|
62
|
-
"pixi-effects": "https://cdn.jsdelivr.net/npm/pixi-effects@0.48.
|
|
63
|
-
"pixi-effects/controller": "https://cdn.jsdelivr.net/npm/pixi-effects@0.48.
|
|
64
|
-
"pixi-effects/present": "https://cdn.jsdelivr.net/npm/pixi-effects@0.48.
|
|
62
|
+
"pixi-effects": "https://cdn.jsdelivr.net/npm/pixi-effects@0.48.2/dist/index.js",
|
|
63
|
+
"pixi-effects/controller": "https://cdn.jsdelivr.net/npm/pixi-effects@0.48.2/dist/Controller.js",
|
|
64
|
+
"pixi-effects/present": "https://cdn.jsdelivr.net/npm/pixi-effects@0.48.2/dist/present.js"
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
</script>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { CompositionSequence } from './chunk-6D4W2KZQ.js';
|
|
2
|
+
import './chunk-IVKI6CPH.js';
|
|
3
|
+
import './chunk-JBDBICS2.js';
|
|
4
|
+
import './chunk-BFRWSV3R.js';
|
|
5
|
+
import './chunk-WGRWFQOB.js';
|
|
6
|
+
//# sourceMappingURL=Composition-5FKV2IBP.js.map
|
|
7
|
+
//# sourceMappingURL=Composition-5FKV2IBP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"Composition-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"Composition-5FKV2IBP.js"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkCCPJD76D_cjs = require('./chunk-CCPJD76D.cjs');
|
|
4
|
+
require('./chunk-Z3DM4ETD.cjs');
|
|
5
|
+
require('./chunk-WYR2AU4W.cjs');
|
|
6
|
+
require('./chunk-NGJXVJB7.cjs');
|
|
7
|
+
require('./chunk-DOLTCXCL.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
Object.defineProperty(exports, "CompositionSequence", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return chunkCCPJD76D_cjs.CompositionSequence; }
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=Composition-TJ5D7Z63.cjs.map
|
|
16
|
+
//# sourceMappingURL=Composition-TJ5D7Z63.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"Composition-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"Composition-TJ5D7Z63.cjs"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkCCPJD76D_cjs = require('./chunk-CCPJD76D.cjs');
|
|
4
|
+
var chunkZ3DM4ETD_cjs = require('./chunk-Z3DM4ETD.cjs');
|
|
5
5
|
require('./chunk-WYR2AU4W.cjs');
|
|
6
6
|
require('./chunk-NGJXVJB7.cjs');
|
|
7
7
|
require('./chunk-DOLTCXCL.cjs');
|
|
@@ -12,12 +12,12 @@ var strip = (props) => {
|
|
|
12
12
|
const { visibleChars: _gone, ...rest } = props;
|
|
13
13
|
return rest;
|
|
14
14
|
};
|
|
15
|
-
var SpansSequence = class extends
|
|
15
|
+
var SpansSequence = class extends chunkCCPJD76D_cjs.CompositionSequence {
|
|
16
16
|
_meta;
|
|
17
17
|
_count = { value: 0, visibleChars: 0 };
|
|
18
18
|
constructor(spec, parent, root) {
|
|
19
19
|
super(spec, parent, root);
|
|
20
|
-
this._meta =
|
|
20
|
+
this._meta = chunkZ3DM4ETD_cjs.spansMeta.get(spec);
|
|
21
21
|
}
|
|
22
22
|
/** `visibleChars` is the group's own counter, not a property to write on the container. */
|
|
23
23
|
displayProps() {
|
|
@@ -33,8 +33,8 @@ var SpansSequence = class extends chunkM2LFQY2E_cjs.CompositionSequence {
|
|
|
33
33
|
if (!this._meta?.typed) return;
|
|
34
34
|
const scope = this.scope();
|
|
35
35
|
const first = this.spec.initial?.visibleChars;
|
|
36
|
-
this._count.visibleChars = first === void 0 ? 0 :
|
|
37
|
-
|
|
36
|
+
this._count.visibleChars = first === void 0 ? 0 : chunkZ3DM4ETD_cjs.resolveNumber(first, scope);
|
|
37
|
+
chunkZ3DM4ETD_cjs.bindCounterKeyframes(timeline, this._count, "visibleChars", () => this._distribute(), this.spec.keyframes ?? [], this.duration, offset + this.at, scope);
|
|
38
38
|
this._distribute();
|
|
39
39
|
}
|
|
40
40
|
/** Every piece shows its part of the first N characters of the whole text. */
|
|
@@ -43,7 +43,7 @@ var SpansSequence = class extends chunkM2LFQY2E_cjs.CompositionSequence {
|
|
|
43
43
|
const total = Math.max(0, Math.floor(this._count.visibleChars));
|
|
44
44
|
let i = 0;
|
|
45
45
|
for (const child of this._children) {
|
|
46
|
-
if (!(child instanceof
|
|
46
|
+
if (!(child instanceof chunkZ3DM4ETD_cjs.TextSequence)) continue;
|
|
47
47
|
const p = pieces[i++];
|
|
48
48
|
if (p) child.setVisibleChars(Math.min(p.length, Math.max(0, total - p.start)));
|
|
49
49
|
}
|
|
@@ -51,5 +51,5 @@ var SpansSequence = class extends chunkM2LFQY2E_cjs.CompositionSequence {
|
|
|
51
51
|
};
|
|
52
52
|
|
|
53
53
|
exports.SpansSequence = SpansSequence;
|
|
54
|
-
//# sourceMappingURL=Spans-
|
|
55
|
-
//# sourceMappingURL=Spans-
|
|
54
|
+
//# sourceMappingURL=Spans-5ENZ3XGS.cjs.map
|
|
55
|
+
//# sourceMappingURL=Spans-5ENZ3XGS.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sequences/Spans.ts"],"names":["CompositionSequence","spansMeta","resolveNumber","bindCounterKeyframes","TextSequence"],"mappings":";;;;;;;;;AAQA,IAAM,KAAA,GAAQ,CAAC,KAAA,KAAgD;AAC7D,EAAA,IAAI,CAAC,KAAA,IAAS,EAAE,cAAA,IAAkB,QAAQ,OAAO,KAAA;AACjD,EAAA,MAAM,EAAE,YAAA,EAAc,KAAA,EAAO,GAAG,MAAK,GAAI,KAAA;AACzC,EAAA,OAAO,IAAA;AACT,CAAA;AAEO,IAAM,aAAA,GAAN,cAA4BA,qCAAA,CAAoB;AAAA,EACpC,KAAA;AAAA,EACA,MAAA,GAAuB,EAAE,KAAA,EAAO,CAAA,EAAG,cAAc,CAAA,EAAE;AAAA,EAEpE,WAAA,CAAY,IAAA,EAAoB,MAAA,EAAiC,IAAA,EAAwB;AACvF,IAAA,KAAA,CAAM,IAAA,EAAM,QAAQ,IAAI,CAAA;AACxB,IAAA,IAAA,CAAK,KAAA,GAAQC,2BAAA,CAAU,GAAA,CAAI,IAAI,CAAA;AAAA,EACjC;AAAA;AAAA,EAGmB,YAAA,GAAyH;AAC1I,IAAA,MAAM,CAAA,GAAI,MAAM,YAAA,EAAa;AAC7B,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,OAAO,CAAA;AAC/B,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA,CAAM,CAAA,CAAE,OAA4B,CAAA;AAAA,MAC7C,SAAA,EAAW,EAAE,SAAA,EAAW,GAAA,CAAI,SAAO,EAAE,GAAG,EAAA,EAAI,GAAA,EAAK,KAAA,CAAM,EAAA,CAAG,GAAG,CAAA,EAAG,EAAA,EAAI,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA,EAAG,MAAM,KAAA,CAAM,EAAA,CAAG,IAAI,CAAA,EAAE,CAAE;AAAA,KAC3G;AAAA,EACF;AAAA,EAES,YAAA,CAAa,QAAA,EAAoB,MAAA,GAAS,CAAA,EAAS;AAC1D,IAAA,KAAA,CAAM,YAAA,CAAa,UAAU,MAAM,CAAA;AACnC,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO;AACxB,IAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,EAAM;AACzB,IAAA,MAAM,KAAA,GAAS,IAAA,CAAK,IAAA,CAAK,OAAA,EAAiD,YAAA;AAC1E,IAAA,IAAA,CAAK,OAAO,YAAA,GAAe,KAAA,KAAU,SAAY,CAAA,GAAIC,+BAAA,CAAc,OAAO,KAAK,CAAA;AAC/E,IAAAC,sCAAA,CAAqB,UAAU,IAAA,CAAK,MAAA,EAAQ,gBAAgB,MAAM,IAAA,CAAK,aAAY,EAAG,IAAA,CAAK,IAAA,CAAK,SAAA,IAAa,EAAC,EAAG,IAAA,CAAK,UAAW,MAAA,GAAS,IAAA,CAAK,IAAI,KAAK,CAAA;AACxJ,IAAA,IAAA,CAAK,WAAA,EAAY;AAAA,EACnB;AAAA;AAAA,EAGQ,WAAA,GAAoB;AAC1B,IAAA,MAAM,MAAA,GAAS,KAAK,KAAA,CAAO,MAAA;AAC3B,IAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,YAAY,CAAC,CAAA;AAC9D,IAAA,IAAI,CAAA,GAAI,CAAA;AACR,IAAA,KAAA,MAAW,KAAA,IAAS,KAAK,SAAA,EAAW;AAClC,MAAA,IAAI,EAAE,iBAAiBC,8BAAA,CAAA,EAAe;AACtC,MAAA,MAAM,CAAA,GAAI,OAAO,CAAA,EAAG,CAAA;AACpB,MAAA,IAAI,CAAA,EAAG,KAAA,CAAM,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA,CAAE,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAA,GAAQ,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAAA,IAC/E;AAAA,EACF;AACF","file":"Spans-
|
|
1
|
+
{"version":3,"sources":["../src/sequences/Spans.ts"],"names":["CompositionSequence","spansMeta","resolveNumber","bindCounterKeyframes","TextSequence"],"mappings":";;;;;;;;;AAQA,IAAM,KAAA,GAAQ,CAAC,KAAA,KAAgD;AAC7D,EAAA,IAAI,CAAC,KAAA,IAAS,EAAE,cAAA,IAAkB,QAAQ,OAAO,KAAA;AACjD,EAAA,MAAM,EAAE,YAAA,EAAc,KAAA,EAAO,GAAG,MAAK,GAAI,KAAA;AACzC,EAAA,OAAO,IAAA;AACT,CAAA;AAEO,IAAM,aAAA,GAAN,cAA4BA,qCAAA,CAAoB;AAAA,EACpC,KAAA;AAAA,EACA,MAAA,GAAuB,EAAE,KAAA,EAAO,CAAA,EAAG,cAAc,CAAA,EAAE;AAAA,EAEpE,WAAA,CAAY,IAAA,EAAoB,MAAA,EAAiC,IAAA,EAAwB;AACvF,IAAA,KAAA,CAAM,IAAA,EAAM,QAAQ,IAAI,CAAA;AACxB,IAAA,IAAA,CAAK,KAAA,GAAQC,2BAAA,CAAU,GAAA,CAAI,IAAI,CAAA;AAAA,EACjC;AAAA;AAAA,EAGmB,YAAA,GAAyH;AAC1I,IAAA,MAAM,CAAA,GAAI,MAAM,YAAA,EAAa;AAC7B,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,OAAO,CAAA;AAC/B,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA,CAAM,CAAA,CAAE,OAA4B,CAAA;AAAA,MAC7C,SAAA,EAAW,EAAE,SAAA,EAAW,GAAA,CAAI,SAAO,EAAE,GAAG,EAAA,EAAI,GAAA,EAAK,KAAA,CAAM,EAAA,CAAG,GAAG,CAAA,EAAG,EAAA,EAAI,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA,EAAG,MAAM,KAAA,CAAM,EAAA,CAAG,IAAI,CAAA,EAAE,CAAE;AAAA,KAC3G;AAAA,EACF;AAAA,EAES,YAAA,CAAa,QAAA,EAAoB,MAAA,GAAS,CAAA,EAAS;AAC1D,IAAA,KAAA,CAAM,YAAA,CAAa,UAAU,MAAM,CAAA;AACnC,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO;AACxB,IAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,EAAM;AACzB,IAAA,MAAM,KAAA,GAAS,IAAA,CAAK,IAAA,CAAK,OAAA,EAAiD,YAAA;AAC1E,IAAA,IAAA,CAAK,OAAO,YAAA,GAAe,KAAA,KAAU,SAAY,CAAA,GAAIC,+BAAA,CAAc,OAAO,KAAK,CAAA;AAC/E,IAAAC,sCAAA,CAAqB,UAAU,IAAA,CAAK,MAAA,EAAQ,gBAAgB,MAAM,IAAA,CAAK,aAAY,EAAG,IAAA,CAAK,IAAA,CAAK,SAAA,IAAa,EAAC,EAAG,IAAA,CAAK,UAAW,MAAA,GAAS,IAAA,CAAK,IAAI,KAAK,CAAA;AACxJ,IAAA,IAAA,CAAK,WAAA,EAAY;AAAA,EACnB;AAAA;AAAA,EAGQ,WAAA,GAAoB;AAC1B,IAAA,MAAM,MAAA,GAAS,KAAK,KAAA,CAAO,MAAA;AAC3B,IAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,YAAY,CAAC,CAAA;AAC9D,IAAA,IAAI,CAAA,GAAI,CAAA;AACR,IAAA,KAAA,MAAW,KAAA,IAAS,KAAK,SAAA,EAAW;AAClC,MAAA,IAAI,EAAE,iBAAiBC,8BAAA,CAAA,EAAe;AACtC,MAAA,MAAM,CAAA,GAAI,OAAO,CAAA,EAAG,CAAA;AACpB,MAAA,IAAI,CAAA,EAAG,KAAA,CAAM,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA,CAAE,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAA,GAAQ,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAAA,IAC/E;AAAA,EACF;AACF","file":"Spans-5ENZ3XGS.cjs","sourcesContent":["// The sequence behind a text layer with `spans`: a composition of ordinary text layers (see src/text/spans.ts) that also owns the typewriter\n// (`visibleChars`) of the whole text: it counts over every character of every piece, and tells each piece how many of its own to show.\nimport { CompositionSequence } from './Composition';\nimport { TextSequence, bindCounterKeyframes, resolveNumber, type CounterState } from './Text';\nimport { spansMeta, type SpansMeta } from '../text/spans';\nimport type { CompositionShape, SequenceSpec, Props } from '../types';\nimport type { Timeline } from '../core/timelineEngine';\n\nconst strip = (props: Props | undefined): Props | undefined => {\n if (!props || !('visibleChars' in props)) return props;\n const { visibleChars: _gone, ...rest } = props as Record<string, unknown>;\n return rest as unknown as Props;\n};\n\nexport class SpansSequence extends CompositionSequence {\n private readonly _meta: SpansMeta | undefined;\n private readonly _count: CounterState = { value: 0, visibleChars: 0 };\n\n constructor(spec: SequenceSpec, parent: CompositionShape | null, root: CompositionShape) {\n super(spec, parent, root);\n this._meta = spansMeta.get(spec);\n }\n\n /** `visibleChars` is the group's own counter, not a property to write on the container. */\n protected override displayProps(): { initial: CompositionSequence['spec']['initial']; keyframes: CompositionSequence['spec']['keyframes'] } {\n const p = super.displayProps();\n if (!this._meta?.typed) return p;\n return {\n initial: strip(p.initial as Props | undefined) as never,\n keyframes: p.keyframes?.map(kf => ({ ...kf, set: strip(kf.set), to: strip(kf.to), from: strip(kf.from) })),\n };\n }\n\n override bindTimeline(timeline: Timeline, offset = 0): void {\n super.bindTimeline(timeline, offset);\n if (!this._meta?.typed) return;\n const scope = this.scope();\n const first = (this.spec.initial as Record<string, unknown> | undefined)?.visibleChars;\n this._count.visibleChars = first === undefined ? 0 : resolveNumber(first, scope); // like a text: it starts at 0 once it is animated\n bindCounterKeyframes(timeline, this._count, 'visibleChars', () => this._distribute(), this.spec.keyframes ?? [], this.duration!, offset + this.at, scope);\n this._distribute();\n }\n\n /** Every piece shows its part of the first N characters of the whole text. */\n private _distribute(): void {\n const pieces = this._meta!.pieces;\n const total = Math.max(0, Math.floor(this._count.visibleChars));\n let i = 0;\n for (const child of this._children) {\n if (!(child instanceof TextSequence)) continue;\n const p = pieces[i++];\n if (p) child.setVisibleChars(Math.min(p.length, Math.max(0, total - p.start)));\n }\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CompositionSequence } from './chunk-
|
|
2
|
-
import { spansMeta, resolveNumber, bindCounterKeyframes, TextSequence } from './chunk-
|
|
1
|
+
import { CompositionSequence } from './chunk-6D4W2KZQ.js';
|
|
2
|
+
import { spansMeta, resolveNumber, bindCounterKeyframes, TextSequence } from './chunk-IVKI6CPH.js';
|
|
3
3
|
import './chunk-JBDBICS2.js';
|
|
4
4
|
import './chunk-BFRWSV3R.js';
|
|
5
5
|
import './chunk-WGRWFQOB.js';
|
|
@@ -49,5 +49,5 @@ var SpansSequence = class extends CompositionSequence {
|
|
|
49
49
|
};
|
|
50
50
|
|
|
51
51
|
export { SpansSequence };
|
|
52
|
-
//# sourceMappingURL=Spans-
|
|
53
|
-
//# sourceMappingURL=Spans-
|
|
52
|
+
//# sourceMappingURL=Spans-6A3VLHRH.js.map
|
|
53
|
+
//# sourceMappingURL=Spans-6A3VLHRH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sequences/Spans.ts"],"names":[],"mappings":";;;;;;;AAQA,IAAM,KAAA,GAAQ,CAAC,KAAA,KAAgD;AAC7D,EAAA,IAAI,CAAC,KAAA,IAAS,EAAE,cAAA,IAAkB,QAAQ,OAAO,KAAA;AACjD,EAAA,MAAM,EAAE,YAAA,EAAc,KAAA,EAAO,GAAG,MAAK,GAAI,KAAA;AACzC,EAAA,OAAO,IAAA;AACT,CAAA;AAEO,IAAM,aAAA,GAAN,cAA4B,mBAAA,CAAoB;AAAA,EACpC,KAAA;AAAA,EACA,MAAA,GAAuB,EAAE,KAAA,EAAO,CAAA,EAAG,cAAc,CAAA,EAAE;AAAA,EAEpE,WAAA,CAAY,IAAA,EAAoB,MAAA,EAAiC,IAAA,EAAwB;AACvF,IAAA,KAAA,CAAM,IAAA,EAAM,QAAQ,IAAI,CAAA;AACxB,IAAA,IAAA,CAAK,KAAA,GAAQ,SAAA,CAAU,GAAA,CAAI,IAAI,CAAA;AAAA,EACjC;AAAA;AAAA,EAGmB,YAAA,GAAyH;AAC1I,IAAA,MAAM,CAAA,GAAI,MAAM,YAAA,EAAa;AAC7B,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,OAAO,CAAA;AAC/B,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA,CAAM,CAAA,CAAE,OAA4B,CAAA;AAAA,MAC7C,SAAA,EAAW,EAAE,SAAA,EAAW,GAAA,CAAI,SAAO,EAAE,GAAG,EAAA,EAAI,GAAA,EAAK,KAAA,CAAM,EAAA,CAAG,GAAG,CAAA,EAAG,EAAA,EAAI,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA,EAAG,MAAM,KAAA,CAAM,EAAA,CAAG,IAAI,CAAA,EAAE,CAAE;AAAA,KAC3G;AAAA,EACF;AAAA,EAES,YAAA,CAAa,QAAA,EAAoB,MAAA,GAAS,CAAA,EAAS;AAC1D,IAAA,KAAA,CAAM,YAAA,CAAa,UAAU,MAAM,CAAA;AACnC,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO;AACxB,IAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,EAAM;AACzB,IAAA,MAAM,KAAA,GAAS,IAAA,CAAK,IAAA,CAAK,OAAA,EAAiD,YAAA;AAC1E,IAAA,IAAA,CAAK,OAAO,YAAA,GAAe,KAAA,KAAU,SAAY,CAAA,GAAI,aAAA,CAAc,OAAO,KAAK,CAAA;AAC/E,IAAA,oBAAA,CAAqB,UAAU,IAAA,CAAK,MAAA,EAAQ,gBAAgB,MAAM,IAAA,CAAK,aAAY,EAAG,IAAA,CAAK,IAAA,CAAK,SAAA,IAAa,EAAC,EAAG,IAAA,CAAK,UAAW,MAAA,GAAS,IAAA,CAAK,IAAI,KAAK,CAAA;AACxJ,IAAA,IAAA,CAAK,WAAA,EAAY;AAAA,EACnB;AAAA;AAAA,EAGQ,WAAA,GAAoB;AAC1B,IAAA,MAAM,MAAA,GAAS,KAAK,KAAA,CAAO,MAAA;AAC3B,IAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,YAAY,CAAC,CAAA;AAC9D,IAAA,IAAI,CAAA,GAAI,CAAA;AACR,IAAA,KAAA,MAAW,KAAA,IAAS,KAAK,SAAA,EAAW;AAClC,MAAA,IAAI,EAAE,iBAAiB,YAAA,CAAA,EAAe;AACtC,MAAA,MAAM,CAAA,GAAI,OAAO,CAAA,EAAG,CAAA;AACpB,MAAA,IAAI,CAAA,EAAG,KAAA,CAAM,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA,CAAE,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAA,GAAQ,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAAA,IAC/E;AAAA,EACF;AACF","file":"Spans-
|
|
1
|
+
{"version":3,"sources":["../src/sequences/Spans.ts"],"names":[],"mappings":";;;;;;;AAQA,IAAM,KAAA,GAAQ,CAAC,KAAA,KAAgD;AAC7D,EAAA,IAAI,CAAC,KAAA,IAAS,EAAE,cAAA,IAAkB,QAAQ,OAAO,KAAA;AACjD,EAAA,MAAM,EAAE,YAAA,EAAc,KAAA,EAAO,GAAG,MAAK,GAAI,KAAA;AACzC,EAAA,OAAO,IAAA;AACT,CAAA;AAEO,IAAM,aAAA,GAAN,cAA4B,mBAAA,CAAoB;AAAA,EACpC,KAAA;AAAA,EACA,MAAA,GAAuB,EAAE,KAAA,EAAO,CAAA,EAAG,cAAc,CAAA,EAAE;AAAA,EAEpE,WAAA,CAAY,IAAA,EAAoB,MAAA,EAAiC,IAAA,EAAwB;AACvF,IAAA,KAAA,CAAM,IAAA,EAAM,QAAQ,IAAI,CAAA;AACxB,IAAA,IAAA,CAAK,KAAA,GAAQ,SAAA,CAAU,GAAA,CAAI,IAAI,CAAA;AAAA,EACjC;AAAA;AAAA,EAGmB,YAAA,GAAyH;AAC1I,IAAA,MAAM,CAAA,GAAI,MAAM,YAAA,EAAa;AAC7B,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,OAAO,CAAA;AAC/B,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA,CAAM,CAAA,CAAE,OAA4B,CAAA;AAAA,MAC7C,SAAA,EAAW,EAAE,SAAA,EAAW,GAAA,CAAI,SAAO,EAAE,GAAG,EAAA,EAAI,GAAA,EAAK,KAAA,CAAM,EAAA,CAAG,GAAG,CAAA,EAAG,EAAA,EAAI,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA,EAAG,MAAM,KAAA,CAAM,EAAA,CAAG,IAAI,CAAA,EAAE,CAAE;AAAA,KAC3G;AAAA,EACF;AAAA,EAES,YAAA,CAAa,QAAA,EAAoB,MAAA,GAAS,CAAA,EAAS;AAC1D,IAAA,KAAA,CAAM,YAAA,CAAa,UAAU,MAAM,CAAA;AACnC,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO;AACxB,IAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,EAAM;AACzB,IAAA,MAAM,KAAA,GAAS,IAAA,CAAK,IAAA,CAAK,OAAA,EAAiD,YAAA;AAC1E,IAAA,IAAA,CAAK,OAAO,YAAA,GAAe,KAAA,KAAU,SAAY,CAAA,GAAI,aAAA,CAAc,OAAO,KAAK,CAAA;AAC/E,IAAA,oBAAA,CAAqB,UAAU,IAAA,CAAK,MAAA,EAAQ,gBAAgB,MAAM,IAAA,CAAK,aAAY,EAAG,IAAA,CAAK,IAAA,CAAK,SAAA,IAAa,EAAC,EAAG,IAAA,CAAK,UAAW,MAAA,GAAS,IAAA,CAAK,IAAI,KAAK,CAAA;AACxJ,IAAA,IAAA,CAAK,WAAA,EAAY;AAAA,EACnB;AAAA;AAAA,EAGQ,WAAA,GAAoB;AAC1B,IAAA,MAAM,MAAA,GAAS,KAAK,KAAA,CAAO,MAAA;AAC3B,IAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,YAAY,CAAC,CAAA;AAC9D,IAAA,IAAI,CAAA,GAAI,CAAA;AACR,IAAA,KAAA,MAAW,KAAA,IAAS,KAAK,SAAA,EAAW;AAClC,MAAA,IAAI,EAAE,iBAAiB,YAAA,CAAA,EAAe;AACtC,MAAA,MAAM,CAAA,GAAI,OAAO,CAAA,EAAG,CAAA;AACpB,MAAA,IAAI,CAAA,EAAG,KAAA,CAAM,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA,CAAE,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAA,GAAQ,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AAAA,IAC/E;AAAA,EACF;AACF","file":"Spans-6A3VLHRH.js","sourcesContent":["// The sequence behind a text layer with `spans`: a composition of ordinary text layers (see src/text/spans.ts) that also owns the typewriter\n// (`visibleChars`) of the whole text: it counts over every character of every piece, and tells each piece how many of its own to show.\nimport { CompositionSequence } from './Composition';\nimport { TextSequence, bindCounterKeyframes, resolveNumber, type CounterState } from './Text';\nimport { spansMeta, type SpansMeta } from '../text/spans';\nimport type { CompositionShape, SequenceSpec, Props } from '../types';\nimport type { Timeline } from '../core/timelineEngine';\n\nconst strip = (props: Props | undefined): Props | undefined => {\n if (!props || !('visibleChars' in props)) return props;\n const { visibleChars: _gone, ...rest } = props as Record<string, unknown>;\n return rest as unknown as Props;\n};\n\nexport class SpansSequence extends CompositionSequence {\n private readonly _meta: SpansMeta | undefined;\n private readonly _count: CounterState = { value: 0, visibleChars: 0 };\n\n constructor(spec: SequenceSpec, parent: CompositionShape | null, root: CompositionShape) {\n super(spec, parent, root);\n this._meta = spansMeta.get(spec);\n }\n\n /** `visibleChars` is the group's own counter, not a property to write on the container. */\n protected override displayProps(): { initial: CompositionSequence['spec']['initial']; keyframes: CompositionSequence['spec']['keyframes'] } {\n const p = super.displayProps();\n if (!this._meta?.typed) return p;\n return {\n initial: strip(p.initial as Props | undefined) as never,\n keyframes: p.keyframes?.map(kf => ({ ...kf, set: strip(kf.set), to: strip(kf.to), from: strip(kf.from) })),\n };\n }\n\n override bindTimeline(timeline: Timeline, offset = 0): void {\n super.bindTimeline(timeline, offset);\n if (!this._meta?.typed) return;\n const scope = this.scope();\n const first = (this.spec.initial as Record<string, unknown> | undefined)?.visibleChars;\n this._count.visibleChars = first === undefined ? 0 : resolveNumber(first, scope); // like a text: it starts at 0 once it is animated\n bindCounterKeyframes(timeline, this._count, 'visibleChars', () => this._distribute(), this.spec.keyframes ?? [], this.duration!, offset + this.at, scope);\n this._distribute();\n }\n\n /** Every piece shows its part of the first N characters of the whole text. */\n private _distribute(): void {\n const pieces = this._meta!.pieces;\n const total = Math.max(0, Math.floor(this._count.visibleChars));\n let i = 0;\n for (const child of this._children) {\n if (!(child instanceof TextSequence)) continue;\n const p = pieces[i++];\n if (p) child.setVisibleChars(Math.min(p.length, Math.max(0, total - p.start)));\n }\n }\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkCCPJD76D_cjs = require('./chunk-CCPJD76D.cjs');
|
|
4
4
|
var chunkVQXZ2NOI_cjs = require('./chunk-VQXZ2NOI.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkZ3DM4ETD_cjs = require('./chunk-Z3DM4ETD.cjs');
|
|
6
6
|
var chunkZAHCGFGC_cjs = require('./chunk-ZAHCGFGC.cjs');
|
|
7
7
|
var chunkWYR2AU4W_cjs = require('./chunk-WYR2AU4W.cjs');
|
|
8
8
|
var chunkNGJXVJB7_cjs = require('./chunk-NGJXVJB7.cjs');
|
|
@@ -1268,8 +1268,8 @@ function expandTransitions(spec) {
|
|
|
1268
1268
|
}
|
|
1269
1269
|
const transitions = out.transitions;
|
|
1270
1270
|
const sequences = out.sequences ?? [];
|
|
1271
|
-
const remap = out.duration !== void 0 ?
|
|
1272
|
-
const parentDuration = remap ?
|
|
1271
|
+
const remap = out.duration !== void 0 ? chunkZ3DM4ETD_cjs.timeRemapOf(out) : null;
|
|
1272
|
+
const parentDuration = remap ? chunkZ3DM4ETD_cjs.contentLength(remap, out.duration) : out.duration ?? Infinity;
|
|
1273
1273
|
const compW = out.width;
|
|
1274
1274
|
const compH = out.height;
|
|
1275
1275
|
const threeDByName = new Set(sequences.filter((s) => s.name && s.threeD).map((s) => s.name));
|
|
@@ -1337,16 +1337,16 @@ function expandTransitions(spec) {
|
|
|
1337
1337
|
if (toUses > 1) {
|
|
1338
1338
|
throw new Error(`pixi-effects: ${tag} sequence "${t.to}" is used as \`to\` in more than one transition`);
|
|
1339
1339
|
}
|
|
1340
|
-
const tStart =
|
|
1340
|
+
const tStart = chunkZ3DM4ETD_cjs.resolveAt(t.at, parentDuration);
|
|
1341
1341
|
const tEnd = tStart + t.duration;
|
|
1342
1342
|
const fromSeq = fromEntry.seq;
|
|
1343
|
-
const fromStart =
|
|
1343
|
+
const fromStart = chunkZ3DM4ETD_cjs.resolveAt(fromSeq.at, parentDuration);
|
|
1344
1344
|
const fromEnd = fromStart + (fromSeq.duration ?? parentDuration);
|
|
1345
1345
|
if (tStart < fromStart - EPS || tEnd > fromEnd + EPS) {
|
|
1346
1346
|
throw new Error(`pixi-effects: ${tag} window [${tStart}, ${tEnd}] is not covered by \`from\` "${t.from}" (lives [${fromStart}, ${fromEnd}], so it ends at ${fromEnd})`);
|
|
1347
1347
|
}
|
|
1348
1348
|
const toSeq = toEntry.seq;
|
|
1349
|
-
const toStart =
|
|
1349
|
+
const toStart = chunkZ3DM4ETD_cjs.resolveAt(toSeq.at, parentDuration);
|
|
1350
1350
|
const toEnd = toStart + (toSeq.duration ?? parentDuration);
|
|
1351
1351
|
if (tStart < toStart - EPS || tEnd > toEnd + EPS) {
|
|
1352
1352
|
throw new Error(`pixi-effects: ${tag} window [${tStart}, ${tEnd}] is not covered by \`to\` "${t.to}" (lives [${toStart}, ${toEnd}], so it starts at ${toStart})`);
|
|
@@ -1406,7 +1406,7 @@ function wrapAsFullComposition(seq, compW, compH) {
|
|
|
1406
1406
|
delete inner.at;
|
|
1407
1407
|
delete inner.duration;
|
|
1408
1408
|
const m = inner.mask;
|
|
1409
|
-
const carriesMatte = m !== void 0 &&
|
|
1409
|
+
const carriesMatte = m !== void 0 && chunkCCPJD76D_cjs.maskSourceOf(m).kind === "refs";
|
|
1410
1410
|
if (carriesMatte) delete inner.mask;
|
|
1411
1411
|
return {
|
|
1412
1412
|
...carriesMatte ? { mask: m } : {},
|
|
@@ -1676,7 +1676,7 @@ function canvasReport(root) {
|
|
|
1676
1676
|
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") : "";
|
|
1677
1677
|
out.push({ name: seq.spec.name ?? name, moments, drawMs, ok: !differs.length && !threw.length, problem, kind });
|
|
1678
1678
|
}
|
|
1679
|
-
if (seq instanceof
|
|
1679
|
+
if (seq instanceof chunkCCPJD76D_cjs.CompositionSequence) walk3(seq);
|
|
1680
1680
|
};
|
|
1681
1681
|
const walk3 = (comp) => {
|
|
1682
1682
|
for (const { seq } of comp.layers()) {
|
|
@@ -1728,8 +1728,8 @@ function motionOf(keyframes, local, lives, keys = (k) => GEOMETRY.has(k)) {
|
|
|
1728
1728
|
let length = 0;
|
|
1729
1729
|
if (typeof kf.duration === "number") length = kf.duration;
|
|
1730
1730
|
else if (kf.duration === "auto") {
|
|
1731
|
-
const sp =
|
|
1732
|
-
length = sp ? Math.round(
|
|
1731
|
+
const sp = chunkZ3DM4ETD_cjs.parseSpring(kf.ease);
|
|
1732
|
+
length = sp ? Math.round(chunkZ3DM4ETD_cjs.springDuration(sp) * 1e3) / 1e3 : 0.5;
|
|
1733
1733
|
}
|
|
1734
1734
|
if (!(length > 0)) continue;
|
|
1735
1735
|
const kat = kf.at ?? 0;
|
|
@@ -1809,7 +1809,7 @@ function inspectScene(root, frame, time, canvas, opts = {}) {
|
|
|
1809
1809
|
if (motion.ever) hasMotion.add(info);
|
|
1810
1810
|
let shown = bounds ? clip(bounds, view) : null;
|
|
1811
1811
|
const maskTarget = seq.maskSequence?.target;
|
|
1812
|
-
const maskSrc =
|
|
1812
|
+
const maskSrc = chunkCCPJD76D_cjs.maskSourceOf(seq.spec.mask);
|
|
1813
1813
|
if (shown && maskTarget && !(maskSrc.kind === "inline" && maskSrc.invert)) {
|
|
1814
1814
|
const m = maskTarget.getBounds();
|
|
1815
1815
|
shown = clip(shown, { x: m.x, y: m.y, width: m.width, height: m.height });
|
|
@@ -1818,7 +1818,7 @@ function inspectScene(root, frame, time, canvas, opts = {}) {
|
|
|
1818
1818
|
const group = parentScene ?? (name !== void 0 && blending.has(name) ? name : void 0);
|
|
1819
1819
|
if (group) scene.set(info, group);
|
|
1820
1820
|
if (zero || seq.showsNothingYet) scaledToNothing.add(info);
|
|
1821
|
-
if (seq instanceof
|
|
1821
|
+
if (seq instanceof chunkCCPJD76D_cjs.CompositionSequence) walk3(seq, prefix + label + "/", insideThreeD || threeD, visible, group, motion, zero, parentAlpha * alpha);
|
|
1822
1822
|
});
|
|
1823
1823
|
};
|
|
1824
1824
|
walk3(root, "", false, true);
|
|
@@ -1990,12 +1990,12 @@ function pickScene(root, x, y, opts = {}, deps = {}) {
|
|
|
1990
1990
|
const alive = (threeD ? d.visible : (t?.renderable ?? true) && t?.visible !== false) && carriers.every((c) => c.target?.renderable ?? true);
|
|
1991
1991
|
const visible = parentVisible && alive && alpha > 0;
|
|
1992
1992
|
if (!visible) {
|
|
1993
|
-
if (seq instanceof
|
|
1993
|
+
if (seq instanceof chunkCCPJD76D_cjs.CompositionSequence && !threeD && parentVisible && alpha > 0 && t?.visible === false && (t?.renderable ?? true) && carriers.every((c) => c.target?.renderable ?? true)) hiddenSources.set(seq, path);
|
|
1994
1994
|
return;
|
|
1995
1995
|
}
|
|
1996
|
-
const isComposition = seq instanceof
|
|
1996
|
+
const isComposition = seq instanceof chunkCCPJD76D_cjs.CompositionSequence;
|
|
1997
1997
|
if (isComposition && !threeD) {
|
|
1998
|
-
const gm = seq.maskSequence?.target, gs =
|
|
1998
|
+
const gm = seq.maskSequence?.target, gs = chunkCCPJD76D_cjs.maskSourceOf(seq.spec.mask);
|
|
1999
1999
|
if (gm && gs.kind === "inline" && !gs.invert && !inMask(gm, at)) return;
|
|
2000
2000
|
walk3(seq, path + "/", visible, at, orderBase, via);
|
|
2001
2001
|
return;
|
|
@@ -2051,7 +2051,7 @@ function pickScene(root, x, y, opts = {}, deps = {}) {
|
|
|
2051
2051
|
}
|
|
2052
2052
|
if (!hit) return;
|
|
2053
2053
|
const maskTarget = seq.maskSequence?.target;
|
|
2054
|
-
const maskSrc =
|
|
2054
|
+
const maskSrc = chunkCCPJD76D_cjs.maskSourceOf(seq.spec.mask);
|
|
2055
2055
|
if (maskTarget && !(maskSrc.kind === "inline" && maskSrc.invert) && !(maskSrc.kind === "inline" ? inMask(maskTarget, point) : inside(maskTarget.getBounds(), point))) return;
|
|
2056
2056
|
found.push({ hit: via ? { ...hit, point: { x, y }, via } : hit, order: orderBase ? [...orderBase, ...orderOf(d)] : orderOf(d) });
|
|
2057
2057
|
});
|
|
@@ -2061,7 +2061,7 @@ function pickScene(root, x, y, opts = {}, deps = {}) {
|
|
|
2061
2061
|
const path = hiddenSources.get(f.source);
|
|
2062
2062
|
if (path === void 0) continue;
|
|
2063
2063
|
const g = f.source.target.toGlobal({ x: f.at.x * f.source.intrinsicWidth, y: f.at.y * f.source.intrinsicHeight });
|
|
2064
|
-
const sm = f.source.maskSequence?.target, ss =
|
|
2064
|
+
const sm = f.source.maskSequence?.target, ss = chunkCCPJD76D_cjs.maskSourceOf(f.source.spec.mask);
|
|
2065
2065
|
if (sm && ss.kind === "inline" && !ss.invert && !inMask(sm, g)) continue;
|
|
2066
2066
|
walk3(f.source, path + "/", true, g, f.order, f.via);
|
|
2067
2067
|
}
|
|
@@ -2097,7 +2097,7 @@ function walk(root, visit) {
|
|
|
2097
2097
|
visit(seq);
|
|
2098
2098
|
const mask = seq.maskSequence;
|
|
2099
2099
|
if (mask) visit(mask);
|
|
2100
|
-
if (seq instanceof
|
|
2100
|
+
if (seq instanceof chunkCCPJD76D_cjs.CompositionSequence) walk(seq, visit);
|
|
2101
2101
|
}
|
|
2102
2102
|
}
|
|
2103
2103
|
function reusePoolOf(old) {
|
|
@@ -2198,7 +2198,7 @@ var round = (n) => Math.round(n * 1e6) / 1e6;
|
|
|
2198
2198
|
var family = (name) => name.replace(/\d+/g, "#");
|
|
2199
2199
|
function detailOf(seq) {
|
|
2200
2200
|
const s = seq.spec;
|
|
2201
|
-
const spans =
|
|
2201
|
+
const spans = chunkZ3DM4ETD_cjs.spansMeta.get(seq.spec)?.preview;
|
|
2202
2202
|
if (spans) return spans.length > 60 ? spans.slice(0, 57) + "\u2026" : spans;
|
|
2203
2203
|
if (typeof s.text === "string") return s.text.length > 60 ? s.text.slice(0, 57) + "\u2026" : s.text;
|
|
2204
2204
|
if (typeof s.asset === "string") return `asset \u201C${s.asset}\u201D`;
|
|
@@ -2214,10 +2214,10 @@ function walk2(comp, parentStart, parentEnd, depth, prefix, rows, transitions, l
|
|
|
2214
2214
|
const start = parentStart + (seq.at ?? 0);
|
|
2215
2215
|
const end = Math.min(parentEnd, seq.duration !== void 0 ? start + seq.duration : parentEnd);
|
|
2216
2216
|
const span = end - start;
|
|
2217
|
-
const keys = (seq.spec.keyframes ?? []).map((kf) => round(start +
|
|
2217
|
+
const keys = (seq.spec.keyframes ?? []).map((kf) => round(start + chunkZ3DM4ETD_cjs.resolveAt(kf.at, span))).sort((a, b) => a - b).slice(0, MAX_KEYS);
|
|
2218
2218
|
const row = { path: prefix + name, name, type: seq.spec.type, depth, start: round(start), end: round(end), keys, detail: detailOf(seq), ...local ? { local } : {} };
|
|
2219
2219
|
const inner = [];
|
|
2220
|
-
const isComp = seq instanceof
|
|
2220
|
+
const isComp = seq instanceof chunkCCPJD76D_cjs.CompositionSequence;
|
|
2221
2221
|
if (isComp) {
|
|
2222
2222
|
const label = seq.remapLabel();
|
|
2223
2223
|
walk2(seq, label ? 0 : start, label ? seq.contentSpan : end, depth + 1, prefix + name + "/", inner, transitions, label ? `${name} ${label}` : local);
|
|
@@ -2376,7 +2376,7 @@ function sheetLayout(n, columns, cellW, srcW, srcH, labelH) {
|
|
|
2376
2376
|
}
|
|
2377
2377
|
|
|
2378
2378
|
// src/core/vars.ts
|
|
2379
|
-
var RESERVED_NAMES = ["w", "h", "W", "H", "GW", "GH", "t", "d", "T", "contain", "cover", "value", ...
|
|
2379
|
+
var RESERVED_NAMES = ["w", "h", "W", "H", "GW", "GH", "t", "d", "T", "contain", "cover", "value", ...chunkZ3DM4ETD_cjs.EXPRESSION_NAMES];
|
|
2380
2380
|
var NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
2381
2381
|
var isPlain = (v) => !!v && typeof v === "object" && (Object.getPrototypeOf(v) === Object.prototype || Object.getPrototypeOf(v) === null);
|
|
2382
2382
|
function normalizeVars(raw, where, warn = (m) => console.warn(m)) {
|
|
@@ -2920,8 +2920,8 @@ var Movie = class {
|
|
|
2920
2920
|
this.stops = normalizeStops(applyVars(options.composition, this._vars)?.stops, this.duration, this.frameRate);
|
|
2921
2921
|
this._posterFrame = poster.frame;
|
|
2922
2922
|
this.background = options.background ?? "#000000";
|
|
2923
|
-
this.timeline =
|
|
2924
|
-
|
|
2923
|
+
this.timeline = chunkZ3DM4ETD_cjs.createTimeline({ paused: true, defaults: { ease: "none" } });
|
|
2924
|
+
chunkZ3DM4ETD_cjs.lengthen(this.timeline, this.duration);
|
|
2925
2925
|
const baseAppOptions = {
|
|
2926
2926
|
width: this.width,
|
|
2927
2927
|
height: this.height,
|
|
@@ -2932,6 +2932,7 @@ var Movie = class {
|
|
|
2932
2932
|
preserveDrawingBuffer: true,
|
|
2933
2933
|
canvas: options.canvas
|
|
2934
2934
|
};
|
|
2935
|
+
installQuietUnbind();
|
|
2935
2936
|
this.app = new pixi_js.Application();
|
|
2936
2937
|
try {
|
|
2937
2938
|
await this.app.init({ ...baseAppOptions, preference: "webgpu" });
|
|
@@ -3020,7 +3021,7 @@ var Movie = class {
|
|
|
3020
3021
|
height: sizeWins ? height : spec.height ?? height,
|
|
3021
3022
|
duration: spec.duration ?? this.duration
|
|
3022
3023
|
} : void 0;
|
|
3023
|
-
await
|
|
3024
|
+
await chunkZ3DM4ETD_cjs.ensureFilterLibrary(seededComposition);
|
|
3024
3025
|
if (chunkWYR2AU4W_cjs.usesAdvancedBlend(seededComposition)) await chunkWYR2AU4W_cjs.enableAdvancedBlend(this.app.renderer);
|
|
3025
3026
|
const userComposition = seededComposition ? expandTransitions(seededComposition) : void 0;
|
|
3026
3027
|
const rootSeqSpec = {
|
|
@@ -3031,7 +3032,7 @@ var Movie = class {
|
|
|
3031
3032
|
...userComposition
|
|
3032
3033
|
};
|
|
3033
3034
|
if (userComposition) carryTransitionWindows(userComposition, rootSeqSpec);
|
|
3034
|
-
const sequence = new
|
|
3035
|
+
const sequence = new chunkCCPJD76D_cjs.CompositionSequence(rootSeqSpec, null, rootShape);
|
|
3035
3036
|
lp?.begin("build", countLayers(rootSeqSpec));
|
|
3036
3037
|
try {
|
|
3037
3038
|
await sequence.build();
|
|
@@ -3170,8 +3171,8 @@ var Movie = class {
|
|
|
3170
3171
|
if (!changed) return { reason, ms: 0, audio: "none", frame: this.currentFrame, playing: this.isPlaying, unchanged: true };
|
|
3171
3172
|
sequence = await this._construct(composition, vars, width, height, void 0, this._resized || sizeChanged, reusePoolOf(this._rootSequence));
|
|
3172
3173
|
alive();
|
|
3173
|
-
const timeline =
|
|
3174
|
-
|
|
3174
|
+
const timeline = chunkZ3DM4ETD_cjs.createTimeline({ paused: true, defaults: { ease: "none" } });
|
|
3175
|
+
chunkZ3DM4ETD_cjs.lengthen(timeline, this.duration);
|
|
3175
3176
|
sequence.bindTimeline(timeline);
|
|
3176
3177
|
const hadSound = this.audioBuffer !== null;
|
|
3177
3178
|
const audio = await this._mixSound(sequence, this._ensureAudioContext());
|
|
@@ -3211,11 +3212,11 @@ var Movie = class {
|
|
|
3211
3212
|
commitReuse(sequence);
|
|
3212
3213
|
this.timeline = timeline;
|
|
3213
3214
|
this._timeFilters = collectTimeFilters(sequence);
|
|
3214
|
-
const
|
|
3215
|
+
const loud = quietUnbind();
|
|
3215
3216
|
try {
|
|
3216
3217
|
safeRun(() => old?.destroy());
|
|
3217
3218
|
} finally {
|
|
3218
|
-
|
|
3219
|
+
loud();
|
|
3219
3220
|
}
|
|
3220
3221
|
safeRun(() => oldTimeline?.kill());
|
|
3221
3222
|
this._vars = vars;
|
|
@@ -3888,7 +3889,7 @@ var Movie = class {
|
|
|
3888
3889
|
async destroy() {
|
|
3889
3890
|
safeRun(() => this.pause());
|
|
3890
3891
|
this._timeFilters = [];
|
|
3891
|
-
const
|
|
3892
|
+
const loud = quietUnbind();
|
|
3892
3893
|
try {
|
|
3893
3894
|
safeRun(() => this._rootSequence?.destroy());
|
|
3894
3895
|
this._rootSequence = null;
|
|
@@ -3897,7 +3898,7 @@ var Movie = class {
|
|
|
3897
3898
|
safeRun(() => this.app?.destroy(true, { children: true, texture: true }));
|
|
3898
3899
|
this.app = null;
|
|
3899
3900
|
} finally {
|
|
3900
|
-
|
|
3901
|
+
loud();
|
|
3901
3902
|
}
|
|
3902
3903
|
this.audioBuffer = null;
|
|
3903
3904
|
this._audioSources = [];
|
|
@@ -3910,15 +3911,34 @@ var Movie = class {
|
|
|
3910
3911
|
}
|
|
3911
3912
|
};
|
|
3912
3913
|
var END_MARGIN = 1e-4;
|
|
3913
|
-
|
|
3914
|
-
|
|
3915
|
-
|
|
3916
|
-
|
|
3917
|
-
|
|
3914
|
+
var quietDepth = 0;
|
|
3915
|
+
var quietInstalled = false;
|
|
3916
|
+
function installQuietUnbind() {
|
|
3917
|
+
if (quietInstalled) return;
|
|
3918
|
+
quietInstalled = true;
|
|
3919
|
+
const proto = pixi_js.BindGroup.prototype;
|
|
3920
|
+
const original = proto.onResourceChange;
|
|
3921
|
+
if (typeof original !== "function") return;
|
|
3922
|
+
proto.onResourceChange = function(resource) {
|
|
3923
|
+
if (!quietDepth || !resource?.destroyed) {
|
|
3924
|
+
original.call(this, resource);
|
|
3925
|
+
return;
|
|
3926
|
+
}
|
|
3927
|
+
this._dirty = true;
|
|
3928
|
+
const resources = this.resources;
|
|
3929
|
+
if (resources) {
|
|
3930
|
+
for (const i in resources) if (resources[i] === resource) resources[i] = null;
|
|
3931
|
+
}
|
|
3918
3932
|
};
|
|
3919
|
-
|
|
3933
|
+
}
|
|
3934
|
+
function quietUnbind() {
|
|
3935
|
+
quietDepth++;
|
|
3936
|
+
let done = false;
|
|
3920
3937
|
return () => {
|
|
3921
|
-
if (
|
|
3938
|
+
if (!done) {
|
|
3939
|
+
done = true;
|
|
3940
|
+
quietDepth--;
|
|
3941
|
+
}
|
|
3922
3942
|
};
|
|
3923
3943
|
}
|
|
3924
3944
|
var clampFrame = (f, last) => Math.max(0, Math.min(Math.round(f), last));
|
|
@@ -3951,7 +3971,7 @@ function countLayers(spec) {
|
|
|
3951
3971
|
n += 1 + countLayers(s);
|
|
3952
3972
|
const spans = s.spans;
|
|
3953
3973
|
if (Array.isArray(spans)) n += spans.length;
|
|
3954
|
-
const src =
|
|
3974
|
+
const src = chunkCCPJD76D_cjs.maskSourceOf(mask);
|
|
3955
3975
|
if (src.kind === "inline") n += 1 + countLayers(src.spec);
|
|
3956
3976
|
}
|
|
3957
3977
|
return n;
|
|
@@ -4040,8 +4060,8 @@ function splitVertical(text, style, ts, right, top, align, by) {
|
|
|
4040
4060
|
|
|
4041
4061
|
// src/presets/_ease.ts
|
|
4042
4062
|
function parseEase2(name) {
|
|
4043
|
-
|
|
4044
|
-
return
|
|
4063
|
+
chunkZ3DM4ETD_cjs.checkEase(name, "a preset");
|
|
4064
|
+
return chunkZ3DM4ETD_cjs.parseEase(name);
|
|
4045
4065
|
}
|
|
4046
4066
|
|
|
4047
4067
|
// src/presets/kenBurns.ts
|
|
@@ -4176,17 +4196,17 @@ function orbit(opts) {
|
|
|
4176
4196
|
throw new Error("pixi-effects: orbit() cannot combine `radius` with `dollyZoom` \u2014 the radius follows the animated fov");
|
|
4177
4197
|
}
|
|
4178
4198
|
const [cx, cy] = opts.center ?? [width / 2, height / 2];
|
|
4179
|
-
const fixedR = opts.radius ??
|
|
4199
|
+
const fixedR = opts.radius ?? chunkZ3DM4ETD_cjs.homeDistance(height, fov ?? chunkZ3DM4ETD_cjs.DEFAULT_FOV);
|
|
4180
4200
|
const start = opts.start ?? -degrees / 2;
|
|
4181
4201
|
const steps = Math.max(1, Math.round(duration * stepsPerSecond));
|
|
4182
4202
|
const easeFn = parseEase2(ease);
|
|
4183
4203
|
const dollyEase = dolly ? parseEase2(dolly.ease ?? ease) : null;
|
|
4184
4204
|
const pos = (i) => {
|
|
4185
4205
|
const p = i / steps;
|
|
4186
|
-
const a = (start + degrees * easeFn(p)) *
|
|
4206
|
+
const a = (start + degrees * easeFn(p)) * chunkZ3DM4ETD_cjs.DEG;
|
|
4187
4207
|
if (!dolly) return { x: cx + fixedR * Math.sin(a), z: fixedR * Math.cos(a) };
|
|
4188
4208
|
const f = dolly.from + (dolly.to - dolly.from) * dollyEase(p);
|
|
4189
|
-
const R =
|
|
4209
|
+
const R = chunkZ3DM4ETD_cjs.homeDistance(height, f);
|
|
4190
4210
|
return { x: cx + R * Math.sin(a), z: R * Math.cos(a), fov: f };
|
|
4191
4211
|
};
|
|
4192
4212
|
const keyframes = [];
|
|
@@ -4241,7 +4261,7 @@ function particles(opts) {
|
|
|
4241
4261
|
const round2 = (v) => Math.round(v * 1e6) / 1e6;
|
|
4242
4262
|
const out = [];
|
|
4243
4263
|
for (let i = 0; i < count; i++) {
|
|
4244
|
-
const r =
|
|
4264
|
+
const r = chunkZ3DM4ETD_cjs.random(seed * 1000003 + i * 7919 + 17);
|
|
4245
4265
|
const pick = ([a2, b]) => a2 + r() * (b - a2);
|
|
4246
4266
|
const born = at + r() * emit;
|
|
4247
4267
|
const lifetime = pick(life);
|
|
@@ -4254,7 +4274,7 @@ function particles(opts) {
|
|
|
4254
4274
|
const turn = spin ? pick(spin) : 0;
|
|
4255
4275
|
const startAngle = spin ? r() * 360 : 0;
|
|
4256
4276
|
const swayAmp = sway?.amp ?? 0, swayFreq = sway?.freq ?? 1;
|
|
4257
|
-
const n0 = sway ?
|
|
4277
|
+
const n0 = sway ? chunkZ3DM4ETD_cjs.noise(0, seed * 1000003 + i) : 0;
|
|
4258
4278
|
const at_ = (t) => {
|
|
4259
4279
|
const axis = (p0, v0, acc) => {
|
|
4260
4280
|
if (drag > 0) {
|
|
@@ -4263,7 +4283,7 @@ function particles(opts) {
|
|
|
4263
4283
|
}
|
|
4264
4284
|
return p0 + v0 * t + 0.5 * acc * t * t;
|
|
4265
4285
|
};
|
|
4266
|
-
const sw = sway ? swayAmp * (
|
|
4286
|
+
const sw = sway ? swayAmp * (chunkZ3DM4ETD_cjs.noise(t * swayFreq, seed * 1000003 + i) - n0) : 0;
|
|
4267
4287
|
return { x: axis(x0, vx, wind) + sw, y: axis(y0, vy, gravity) };
|
|
4268
4288
|
};
|
|
4269
4289
|
const kfs = [];
|
|
@@ -4325,7 +4345,7 @@ function followPath(opts) {
|
|
|
4325
4345
|
if (steps > MAX_STEPS) throw new Error(`followPath(): ${steps} samples is too many (max ${MAX_STEPS}); lower frameRate or duration`);
|
|
4326
4346
|
const segments = [];
|
|
4327
4347
|
let total = 0;
|
|
4328
|
-
for (const line of
|
|
4348
|
+
for (const line of chunkZ3DM4ETD_cjs.flattenSvgPath(d)) {
|
|
4329
4349
|
const p = line.closed ? [...line.pts, line.pts[0], line.pts[1]] : line.pts;
|
|
4330
4350
|
for (let i = 2; i < p.length; i += 2) {
|
|
4331
4351
|
const len = Math.hypot(p[i] - p[i - 2], p[i + 1] - p[i - 1]);
|
|
@@ -4378,7 +4398,7 @@ function followPath(opts) {
|
|
|
4378
4398
|
// src/core/pathSample.ts
|
|
4379
4399
|
function samplePath(d) {
|
|
4380
4400
|
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"');
|
|
4381
|
-
const lines =
|
|
4401
|
+
const lines = chunkZ3DM4ETD_cjs.flattenSvgPath(d);
|
|
4382
4402
|
const segments = [];
|
|
4383
4403
|
let length = 0;
|
|
4384
4404
|
for (const line of lines) {
|
|
@@ -4409,7 +4429,7 @@ function samplePath(d) {
|
|
|
4409
4429
|
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) };
|
|
4410
4430
|
},
|
|
4411
4431
|
trim(start = 0, end = 1) {
|
|
4412
|
-
return
|
|
4432
|
+
return chunkZ3DM4ETD_cjs.trimPolylines(lines, start, end).map((l) => l.closed ? [...l.pts, l.pts[0], l.pts[1]] : l.pts);
|
|
4413
4433
|
}
|
|
4414
4434
|
};
|
|
4415
4435
|
}
|
|
@@ -4520,7 +4540,7 @@ function distances(n, from, grid, seed) {
|
|
|
4520
4540
|
if (n === 0) return [];
|
|
4521
4541
|
if (from === "random") {
|
|
4522
4542
|
const order = Array.from({ length: n }, (_, i) => i);
|
|
4523
|
-
const r =
|
|
4543
|
+
const r = chunkZ3DM4ETD_cjs.random(seed);
|
|
4524
4544
|
for (let i = n - 1; i > 0; i--) {
|
|
4525
4545
|
const j = Math.floor(r() * (i + 1));
|
|
4526
4546
|
[order[i], order[j]] = [order[j], order[i]];
|
|
@@ -4582,7 +4602,7 @@ function wiggle(opts) {
|
|
|
4582
4602
|
to[n] = p.around;
|
|
4583
4603
|
return;
|
|
4584
4604
|
}
|
|
4585
|
-
const off = (
|
|
4605
|
+
const off = (chunkZ3DM4ETD_cjs.rand(seed * 7919 + pi * 104729 + s * 31 + 1) * 2 - 1) * p.amp;
|
|
4586
4606
|
to[n] = typeof p.around === "number" ? p.around + off : `(${p.around}) ${off < 0 ? "-" : "+"} ${Math.abs(off)}`;
|
|
4587
4607
|
});
|
|
4588
4608
|
out.push({ at: at + s * stepLen, to, duration: stepLen, ease });
|
|
@@ -5053,5 +5073,5 @@ exports.splitText = splitText;
|
|
|
5053
5073
|
exports.stagger = stagger;
|
|
5054
5074
|
exports.wiggle = wiggle;
|
|
5055
5075
|
exports.withFade = withFade;
|
|
5056
|
-
//# sourceMappingURL=chunk-
|
|
5057
|
-
//# sourceMappingURL=chunk-
|
|
5076
|
+
//# sourceMappingURL=chunk-45ALIMAF.cjs.map
|
|
5077
|
+
//# sourceMappingURL=chunk-45ALIMAF.cjs.map
|