pixi-effects 0.47.4 → 0.47.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +5 -5
- package/ai/chat-template.html +3 -3
- package/dist/Composition-PMWLJQPI.cjs +16 -0
- package/dist/{Composition-ZYRDRLYB.cjs.map → Composition-PMWLJQPI.cjs.map} +1 -1
- package/dist/Composition-ZCRJHBB5.js +7 -0
- package/dist/{Composition-HTHQ2RLF.js.map → Composition-ZCRJHBB5.js.map} +1 -1
- package/dist/Controller.d.cts +1 -1
- package/dist/Controller.d.ts +1 -1
- package/dist/{Movie-sV8nJr_f.d.ts → Movie--qSYKgAQ.d.ts} +2 -2
- package/dist/{Movie-BqrAWN0g.d.cts → Movie-svZQF-9Z.d.cts} +2 -2
- package/dist/{Spans-JYCTJV4V.js → Spans-FMAVPATS.js} +4 -4
- package/dist/{Spans-JYCTJV4V.js.map → Spans-FMAVPATS.js.map} +1 -1
- package/dist/{Spans-I7P7ZVZO.cjs → Spans-KTUPDFSR.cjs} +9 -9
- package/dist/{Spans-I7P7ZVZO.cjs.map → Spans-KTUPDFSR.cjs.map} +1 -1
- package/dist/{chunk-AES2L75M.cjs → chunk-2AT5WSSV.cjs} +58 -45
- package/dist/chunk-2AT5WSSV.cjs.map +1 -0
- package/dist/{chunk-34YNRCMT.js → chunk-4PYVHLIK.js} +20 -5
- package/dist/chunk-4PYVHLIK.js.map +1 -0
- package/dist/{chunk-CJS2S5XU.cjs → chunk-ECLBZV4N.cjs} +20 -5
- package/dist/chunk-ECLBZV4N.cjs.map +1 -0
- package/dist/{chunk-NCM2WU7R.js → chunk-LHUIEFMH.js} +17 -4
- package/dist/chunk-LHUIEFMH.js.map +1 -0
- package/dist/{chunk-DS2EWRV4.cjs → chunk-OGLRSR6C.cjs} +63 -63
- package/dist/{chunk-DS2EWRV4.cjs.map → chunk-OGLRSR6C.cjs.map} +1 -1
- package/dist/{chunk-RTZ5MW3E.js → chunk-UI7CEUTP.js} +3 -3
- package/dist/{chunk-RTZ5MW3E.js.map → chunk-UI7CEUTP.js.map} +1 -1
- package/dist/index.cjs +33 -33
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/loader.css +1 -1
- package/dist/present.cjs +3 -3
- package/dist/present.d.cts +1 -1
- package/dist/present.d.ts +1 -1
- package/dist/present.js +3 -3
- package/dist/three.cjs +5 -5
- package/dist/three.js +1 -1
- package/docs/api.md +2 -2
- package/docs/dsl.md +7 -7
- package/llms-full.txt +11 -11
- package/package.json +1 -1
- package/skills/pixi-effects/SKILL.md +1 -1
- package/skills/pixi-effects/reference/pitfalls.md +1 -1
- package/skills/pixi-effects/template.html +6 -6
- package/dist/Composition-HTHQ2RLF.js +0 -7
- package/dist/Composition-ZYRDRLYB.cjs +0 -16
- package/dist/chunk-34YNRCMT.js.map +0 -1
- package/dist/chunk-AES2L75M.cjs.map +0 -1
- package/dist/chunk-CJS2S5XU.cjs.map +0 -1
- package/dist/chunk-NCM2WU7R.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.47.5
|
|
4
|
+
|
|
5
|
+
An island inside a hole no longer draws a wedge, and `init({ loudness })` is never quieter than the plain gain. Nothing breaks.
|
|
6
|
+
|
|
7
|
+
Eight more test films (playback against seek, same-`at` keyframes and `speed`, the sound in an exported file, a stroke round holes, the loudness target, two more warning families, a matte under a crossfade, what `check` leaves alone).
|
|
8
|
+
|
|
9
|
+
- **Fixed: an island inside a hole of an `evenodd` path drew a wedge of the fill inside the hole** (cutting a shape out of a hole that was already cut). The island is now neither filled nor cut nor stroked, as the docs say.
|
|
10
|
+
- **Fixed: `init({ loudness })` could leave a mix QUIETER than with no option** when a loud click carried the plain mix's loudness: limiting the click let the very quiet bed back into the loudness gate and the integrated loudness fell. The limiter result is compared with the plain gain and the plain gain is used when the limiter would be worse.
|
|
11
|
+
- **Docs, each pinned by a film:** a frame drawn while playing is the snapshot of that frame; keyframes with the same `at`; the loudness of an exported file against the mix (an mp4's sound is padded to a whole AAC frame); the stroke of a shape is centred on its outline; crossfade is not a linear mix and a composition's `alpha` goes into each child; where a wipe starts and ends; `canvas`'s build warning for `Math.random` catches only a direct call; what `check` samples (every 0.25 s) and the layout sentences; the `loudness` JSDoc and the out-of-reach note were stale.
|
|
12
|
+
|
|
3
13
|
## 0.47.4
|
|
4
14
|
|
|
5
15
|
A morph between two quads keeps its corners when one is written with a closing line, and `style.colour` points at `fill`. Nothing breaks.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# pixi-effects
|
|
2
2
|
|
|
3
|
-
> **Status**: experimental — current release `0.47.
|
|
3
|
+
> **Status**: experimental — current release `0.47.5`. 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.47.
|
|
53
|
-
"pixi-effects/controller": "https://cdn.jsdelivr.net/npm/pixi-effects@0.47.
|
|
52
|
+
"pixi-effects": "https://cdn.jsdelivr.net/npm/pixi-effects@0.47.5/dist/index.js",
|
|
53
|
+
"pixi-effects/controller": "https://cdn.jsdelivr.net/npm/pixi-effects@0.47.5/dist/Controller.js"
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
</script>
|
|
@@ -61,7 +61,7 @@ Drop the imports into an [importmap](https://developer.mozilla.org/docs/Web/HTML
|
|
|
61
61
|
</script>
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
Load the `dist/` files **as they are** (jsDelivr's `/npm/…/dist/…`, or unpkg's `https://unpkg.com/pixi-effects@0.47.
|
|
64
|
+
Load the `dist/` files **as they are** (jsDelivr's `/npm/…/dist/…`, or unpkg's `https://unpkg.com/pixi-effects@0.47.5/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.
|
|
65
65
|
|
|
66
66
|
> **Using three.js?** Add two more entries (`three` and `pixi-effects/three`) to this importmap — see [Adding three.js](#adding-threejs-optional) below.
|
|
67
67
|
>
|
|
@@ -78,7 +78,7 @@ Add two more entries to the importmap above: three.js itself, and the `pixi-effe
|
|
|
78
78
|
"...": "(everything from the importmap above)",
|
|
79
79
|
"three": "https://esm.sh/three@0.178.0",
|
|
80
80
|
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.178.0/examples/jsm/",
|
|
81
|
-
"pixi-effects/three": "https://cdn.jsdelivr.net/npm/pixi-effects@0.47.
|
|
81
|
+
"pixi-effects/three": "https://cdn.jsdelivr.net/npm/pixi-effects@0.47.5/dist/three.js"
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
</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.47.
|
|
63
|
-
"pixi-effects/controller": "https://cdn.jsdelivr.net/npm/pixi-effects@0.47.
|
|
64
|
-
"pixi-effects/present": "https://cdn.jsdelivr.net/npm/pixi-effects@0.47.
|
|
62
|
+
"pixi-effects": "https://cdn.jsdelivr.net/npm/pixi-effects@0.47.5/dist/index.js",
|
|
63
|
+
"pixi-effects/controller": "https://cdn.jsdelivr.net/npm/pixi-effects@0.47.5/dist/Controller.js",
|
|
64
|
+
"pixi-effects/present": "https://cdn.jsdelivr.net/npm/pixi-effects@0.47.5/dist/present.js"
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
</script>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkOGLRSR6C_cjs = require('./chunk-OGLRSR6C.cjs');
|
|
4
|
+
require('./chunk-ECLBZV4N.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 chunkOGLRSR6C_cjs.CompositionSequence; }
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=Composition-PMWLJQPI.cjs.map
|
|
16
|
+
//# sourceMappingURL=Composition-PMWLJQPI.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"Composition-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"Composition-PMWLJQPI.cjs"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { CompositionSequence } from './chunk-UI7CEUTP.js';
|
|
2
|
+
import './chunk-4PYVHLIK.js';
|
|
3
|
+
import './chunk-JBDBICS2.js';
|
|
4
|
+
import './chunk-BFRWSV3R.js';
|
|
5
|
+
import './chunk-WGRWFQOB.js';
|
|
6
|
+
//# sourceMappingURL=Composition-ZCRJHBB5.js.map
|
|
7
|
+
//# sourceMappingURL=Composition-ZCRJHBB5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"Composition-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"Composition-ZCRJHBB5.js"}
|
package/dist/Controller.d.cts
CHANGED
package/dist/Controller.d.ts
CHANGED
|
@@ -434,8 +434,8 @@ interface MovieOptions {
|
|
|
434
434
|
/** Start with `movie.loop` on: playing goes back to the start at the end instead of stopping. Default false (like a `<video>`). */
|
|
435
435
|
loop?: boolean;
|
|
436
436
|
/**
|
|
437
|
-
* The loudness of the whole mix in LUFS (ITU-R BS.1770): `-16` is usual for web video. The finished mix gets one gain (up or down) so its integrated loudness is that number
|
|
438
|
-
* never passes -1
|
|
437
|
+
* The loudness of the whole mix in LUFS (ITU-R BS.1770): `-16` is usual for web video. The finished mix gets one gain (up or down) so its integrated loudness is that number: a look-ahead limiter takes a click or a hit on top of a quiet bed down (by up to 10 dB) and the true peak
|
|
438
|
+
* never passes -1 dBTP. A mix whose peaks are out of that reach stops short, and `inspectAudio()` / `check` say how far it got and why. Default: off (the mix is what the layers make; `check` says when it is quiet).
|
|
439
439
|
* A number of 0 or below, or `false`.
|
|
440
440
|
*/
|
|
441
441
|
loudness?: number | false;
|
|
@@ -434,8 +434,8 @@ interface MovieOptions {
|
|
|
434
434
|
/** Start with `movie.loop` on: playing goes back to the start at the end instead of stopping. Default false (like a `<video>`). */
|
|
435
435
|
loop?: boolean;
|
|
436
436
|
/**
|
|
437
|
-
* The loudness of the whole mix in LUFS (ITU-R BS.1770): `-16` is usual for web video. The finished mix gets one gain (up or down) so its integrated loudness is that number
|
|
438
|
-
* never passes -1
|
|
437
|
+
* The loudness of the whole mix in LUFS (ITU-R BS.1770): `-16` is usual for web video. The finished mix gets one gain (up or down) so its integrated loudness is that number: a look-ahead limiter takes a click or a hit on top of a quiet bed down (by up to 10 dB) and the true peak
|
|
438
|
+
* never passes -1 dBTP. A mix whose peaks are out of that reach stops short, and `inspectAudio()` / `check` say how far it got and why. Default: off (the mix is what the layers make; `check` says when it is quiet).
|
|
439
439
|
* A number of 0 or below, or `false`.
|
|
440
440
|
*/
|
|
441
441
|
loudness?: number | false;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CompositionSequence } from './chunk-
|
|
2
|
-
import { spansMeta, resolveNumber, bindCounterKeyframes, TextSequence } from './chunk-
|
|
1
|
+
import { CompositionSequence } from './chunk-UI7CEUTP.js';
|
|
2
|
+
import { spansMeta, resolveNumber, bindCounterKeyframes, TextSequence } from './chunk-4PYVHLIK.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-FMAVPATS.js.map
|
|
53
|
+
//# sourceMappingURL=Spans-FMAVPATS.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-FMAVPATS.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,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkOGLRSR6C_cjs = require('./chunk-OGLRSR6C.cjs');
|
|
4
|
+
var chunkECLBZV4N_cjs = require('./chunk-ECLBZV4N.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 chunkOGLRSR6C_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 = chunkECLBZV4N_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 chunkDS2EWRV4_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 : chunkECLBZV4N_cjs.resolveNumber(first, scope);
|
|
37
|
+
chunkECLBZV4N_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 chunkDS2EWRV4_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 chunkECLBZV4N_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 chunkDS2EWRV4_cjs.CompositionSequence {
|
|
|
51
51
|
};
|
|
52
52
|
|
|
53
53
|
exports.SpansSequence = SpansSequence;
|
|
54
|
-
//# sourceMappingURL=Spans-
|
|
55
|
-
//# sourceMappingURL=Spans-
|
|
54
|
+
//# sourceMappingURL=Spans-KTUPDFSR.cjs.map
|
|
55
|
+
//# sourceMappingURL=Spans-KTUPDFSR.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-KTUPDFSR.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,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkOGLRSR6C_cjs = require('./chunk-OGLRSR6C.cjs');
|
|
4
|
+
var chunkECLBZV4N_cjs = require('./chunk-ECLBZV4N.cjs');
|
|
5
5
|
var chunkZAHCGFGC_cjs = require('./chunk-ZAHCGFGC.cjs');
|
|
6
6
|
var chunkWYR2AU4W_cjs = require('./chunk-WYR2AU4W.cjs');
|
|
7
7
|
var chunkNGJXVJB7_cjs = require('./chunk-NGJXVJB7.cjs');
|
|
@@ -250,6 +250,19 @@ async function normalizeMix(buffer, target, between) {
|
|
|
250
250
|
gainDb = next;
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
|
+
if (original && final.integratedLufs !== null && m.integratedLufs !== null) {
|
|
254
|
+
const plainDb = Math.min(target - m.integratedLufs, LOUDNESS_CEILING_DB - m.samplePeakDb);
|
|
255
|
+
if (final.integratedLufs < m.integratedLufs + plainDb - 0.1) {
|
|
256
|
+
const k = 10 ** (plainDb / 20);
|
|
257
|
+
for (let ch = 0; ch < chans.length; ch++) {
|
|
258
|
+
const o = original[ch], d = chans[ch];
|
|
259
|
+
for (let i = 0; i < d.length; i++) d[i] = o[i] * k;
|
|
260
|
+
}
|
|
261
|
+
gainDb = plainDb;
|
|
262
|
+
applied = { reductionDb: 0, at: 0 };
|
|
263
|
+
final = chunkZAHCGFGC_cjs.measureLoudness(chans, sr);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
253
266
|
let trimDb = 0;
|
|
254
267
|
if (final.truePeakDb > LOUDNESS_CEILING_DB) {
|
|
255
268
|
trimDb = final.truePeakDb - LOUDNESS_CEILING_DB + 0.01;
|
|
@@ -1245,8 +1258,8 @@ function expandTransitions(spec) {
|
|
|
1245
1258
|
}
|
|
1246
1259
|
const transitions = out.transitions;
|
|
1247
1260
|
const sequences = out.sequences ?? [];
|
|
1248
|
-
const remap = out.duration !== void 0 ?
|
|
1249
|
-
const parentDuration = remap ?
|
|
1261
|
+
const remap = out.duration !== void 0 ? chunkECLBZV4N_cjs.timeRemapOf(out) : null;
|
|
1262
|
+
const parentDuration = remap ? chunkECLBZV4N_cjs.contentLength(remap, out.duration) : out.duration ?? Infinity;
|
|
1250
1263
|
const compW = out.width;
|
|
1251
1264
|
const compH = out.height;
|
|
1252
1265
|
const threeDByName = new Set(sequences.filter((s) => s.name && s.threeD).map((s) => s.name));
|
|
@@ -1314,16 +1327,16 @@ function expandTransitions(spec) {
|
|
|
1314
1327
|
if (toUses > 1) {
|
|
1315
1328
|
throw new Error(`pixi-effects: ${tag} sequence "${t.to}" is used as \`to\` in more than one transition`);
|
|
1316
1329
|
}
|
|
1317
|
-
const tStart =
|
|
1330
|
+
const tStart = chunkECLBZV4N_cjs.resolveAt(t.at, parentDuration);
|
|
1318
1331
|
const tEnd = tStart + t.duration;
|
|
1319
1332
|
const fromSeq = fromEntry.seq;
|
|
1320
|
-
const fromStart =
|
|
1333
|
+
const fromStart = chunkECLBZV4N_cjs.resolveAt(fromSeq.at, parentDuration);
|
|
1321
1334
|
const fromEnd = fromStart + (fromSeq.duration ?? parentDuration);
|
|
1322
1335
|
if (tStart < fromStart - EPS || tEnd > fromEnd + EPS) {
|
|
1323
1336
|
throw new Error(`pixi-effects: ${tag} window [${tStart}, ${tEnd}] is not covered by \`from\` "${t.from}" (lives [${fromStart}, ${fromEnd}], so it ends at ${fromEnd})`);
|
|
1324
1337
|
}
|
|
1325
1338
|
const toSeq = toEntry.seq;
|
|
1326
|
-
const toStart =
|
|
1339
|
+
const toStart = chunkECLBZV4N_cjs.resolveAt(toSeq.at, parentDuration);
|
|
1327
1340
|
const toEnd = toStart + (toSeq.duration ?? parentDuration);
|
|
1328
1341
|
if (tStart < toStart - EPS || tEnd > toEnd + EPS) {
|
|
1329
1342
|
throw new Error(`pixi-effects: ${tag} window [${tStart}, ${tEnd}] is not covered by \`to\` "${t.to}" (lives [${toStart}, ${toEnd}], so it starts at ${toStart})`);
|
|
@@ -1383,7 +1396,7 @@ function wrapAsFullComposition(seq, compW, compH) {
|
|
|
1383
1396
|
delete inner.at;
|
|
1384
1397
|
delete inner.duration;
|
|
1385
1398
|
const m = inner.mask;
|
|
1386
|
-
const carriesMatte = m !== void 0 &&
|
|
1399
|
+
const carriesMatte = m !== void 0 && chunkOGLRSR6C_cjs.maskSourceOf(m).kind === "refs";
|
|
1387
1400
|
if (carriesMatte) delete inner.mask;
|
|
1388
1401
|
return {
|
|
1389
1402
|
...carriesMatte ? { mask: m } : {},
|
|
@@ -1653,7 +1666,7 @@ function canvasReport(root) {
|
|
|
1653
1666
|
const problem = threw.length ? `${name} could not draw at ${threw.map((t) => `${t} s`).join(", ")} (its ${kind === "three" ? "update or render threw" : "draw threw"}, or the layer failed to build): ${kind === "three" ? "the warning above says why" : "it shows a magenta checkerboard there; the warning above says why"}, so the layer cannot be called deterministic` : differs.length ? `${name} does not draw the same picture for the same time (checked at ${differs.map(describeDiff).join(", ")}; drawn in two orders after one draw that was thrown away): ` + (kind === "three" ? "usually its update uses Math.random, Date.now, a clock, or state that builds up from call to call: a mixer advanced with mixer.update(dt) is one (pose a clip with mixer.setTime(t), or threeGltf(url).pose(t)), and so is a value moved by the time since the last call. A skinned model of your own (not loaded by threeGltf) that moves and casts a shadow does it too: three culls a skinned mesh by a bounding sphere that does not follow it, so set mesh.frustumCulled = false. Set every object from t, so playback, a seek and an export agree" : "usually its draw uses Math.random, Date.now or state that outlives the call (a value it keeps from the last call), so playback, a seek and an export would not agree: use info.random() (seeded) and derive everything from t. If it uses none of these, look at the canvases it draws from: make sprites and masks with info.canvas(w, h) (not document.createElement) and draw them into the picture before the strokes that depend on them") : "";
|
|
1654
1667
|
out.push({ name: seq.spec.name ?? name, moments, drawMs, ok: !differs.length && !threw.length, problem, kind });
|
|
1655
1668
|
}
|
|
1656
|
-
if (seq instanceof
|
|
1669
|
+
if (seq instanceof chunkOGLRSR6C_cjs.CompositionSequence) walk3(seq);
|
|
1657
1670
|
};
|
|
1658
1671
|
const walk3 = (comp) => {
|
|
1659
1672
|
for (const { seq } of comp.layers()) {
|
|
@@ -1705,8 +1718,8 @@ function motionOf(keyframes, local, lives, keys = (k) => GEOMETRY.has(k)) {
|
|
|
1705
1718
|
let length = 0;
|
|
1706
1719
|
if (typeof kf.duration === "number") length = kf.duration;
|
|
1707
1720
|
else if (kf.duration === "auto") {
|
|
1708
|
-
const sp =
|
|
1709
|
-
length = sp ? Math.round(
|
|
1721
|
+
const sp = chunkECLBZV4N_cjs.parseSpring(kf.ease);
|
|
1722
|
+
length = sp ? Math.round(chunkECLBZV4N_cjs.springDuration(sp) * 1e3) / 1e3 : 0.5;
|
|
1710
1723
|
}
|
|
1711
1724
|
if (!(length > 0)) continue;
|
|
1712
1725
|
const kat = kf.at ?? 0;
|
|
@@ -1786,7 +1799,7 @@ function inspectScene(root, frame, time, canvas, opts = {}) {
|
|
|
1786
1799
|
if (motion.ever) hasMotion.add(info);
|
|
1787
1800
|
let shown = bounds ? clip(bounds, view) : null;
|
|
1788
1801
|
const maskTarget = seq.maskSequence?.target;
|
|
1789
|
-
const maskSrc =
|
|
1802
|
+
const maskSrc = chunkOGLRSR6C_cjs.maskSourceOf(seq.spec.mask);
|
|
1790
1803
|
if (shown && maskTarget && !(maskSrc.kind === "inline" && maskSrc.invert)) {
|
|
1791
1804
|
const m = maskTarget.getBounds();
|
|
1792
1805
|
shown = clip(shown, { x: m.x, y: m.y, width: m.width, height: m.height });
|
|
@@ -1795,7 +1808,7 @@ function inspectScene(root, frame, time, canvas, opts = {}) {
|
|
|
1795
1808
|
const group = parentScene ?? (name !== void 0 && blending.has(name) ? name : void 0);
|
|
1796
1809
|
if (group) scene.set(info, group);
|
|
1797
1810
|
if (zero || seq.showsNothingYet) scaledToNothing.add(info);
|
|
1798
|
-
if (seq instanceof
|
|
1811
|
+
if (seq instanceof chunkOGLRSR6C_cjs.CompositionSequence) walk3(seq, prefix + label + "/", insideThreeD || threeD, visible, group, motion, zero, parentAlpha * alpha);
|
|
1799
1812
|
});
|
|
1800
1813
|
};
|
|
1801
1814
|
walk3(root, "", false, true);
|
|
@@ -1967,12 +1980,12 @@ function pickScene(root, x, y, opts = {}, deps = {}) {
|
|
|
1967
1980
|
const alive = (threeD ? d.visible : (t?.renderable ?? true) && t?.visible !== false) && carriers.every((c) => c.target?.renderable ?? true);
|
|
1968
1981
|
const visible = parentVisible && alive && alpha > 0;
|
|
1969
1982
|
if (!visible) {
|
|
1970
|
-
if (seq instanceof
|
|
1983
|
+
if (seq instanceof chunkOGLRSR6C_cjs.CompositionSequence && !threeD && parentVisible && alpha > 0 && t?.visible === false && (t?.renderable ?? true) && carriers.every((c) => c.target?.renderable ?? true)) hiddenSources.set(seq, path);
|
|
1971
1984
|
return;
|
|
1972
1985
|
}
|
|
1973
|
-
const isComposition = seq instanceof
|
|
1986
|
+
const isComposition = seq instanceof chunkOGLRSR6C_cjs.CompositionSequence;
|
|
1974
1987
|
if (isComposition && !threeD) {
|
|
1975
|
-
const gm = seq.maskSequence?.target, gs =
|
|
1988
|
+
const gm = seq.maskSequence?.target, gs = chunkOGLRSR6C_cjs.maskSourceOf(seq.spec.mask);
|
|
1976
1989
|
if (gm && gs.kind === "inline" && !gs.invert && !inMask(gm, at)) return;
|
|
1977
1990
|
walk3(seq, path + "/", visible, at, orderBase, via);
|
|
1978
1991
|
return;
|
|
@@ -2028,7 +2041,7 @@ function pickScene(root, x, y, opts = {}, deps = {}) {
|
|
|
2028
2041
|
}
|
|
2029
2042
|
if (!hit) return;
|
|
2030
2043
|
const maskTarget = seq.maskSequence?.target;
|
|
2031
|
-
const maskSrc =
|
|
2044
|
+
const maskSrc = chunkOGLRSR6C_cjs.maskSourceOf(seq.spec.mask);
|
|
2032
2045
|
if (maskTarget && !(maskSrc.kind === "inline" && maskSrc.invert) && !(maskSrc.kind === "inline" ? inMask(maskTarget, point) : inside(maskTarget.getBounds(), point))) return;
|
|
2033
2046
|
found.push({ hit: via ? { ...hit, point: { x, y }, via } : hit, order: orderBase ? [...orderBase, ...orderOf(d)] : orderOf(d) });
|
|
2034
2047
|
});
|
|
@@ -2038,7 +2051,7 @@ function pickScene(root, x, y, opts = {}, deps = {}) {
|
|
|
2038
2051
|
const path = hiddenSources.get(f.source);
|
|
2039
2052
|
if (path === void 0) continue;
|
|
2040
2053
|
const g = f.source.target.toGlobal({ x: f.at.x * f.source.intrinsicWidth, y: f.at.y * f.source.intrinsicHeight });
|
|
2041
|
-
const sm = f.source.maskSequence?.target, ss =
|
|
2054
|
+
const sm = f.source.maskSequence?.target, ss = chunkOGLRSR6C_cjs.maskSourceOf(f.source.spec.mask);
|
|
2042
2055
|
if (sm && ss.kind === "inline" && !ss.invert && !inMask(sm, g)) continue;
|
|
2043
2056
|
walk3(f.source, path + "/", true, g, f.order, f.via);
|
|
2044
2057
|
}
|
|
@@ -2074,7 +2087,7 @@ function walk(root, visit) {
|
|
|
2074
2087
|
visit(seq);
|
|
2075
2088
|
const mask = seq.maskSequence;
|
|
2076
2089
|
if (mask) visit(mask);
|
|
2077
|
-
if (seq instanceof
|
|
2090
|
+
if (seq instanceof chunkOGLRSR6C_cjs.CompositionSequence) walk(seq, visit);
|
|
2078
2091
|
}
|
|
2079
2092
|
}
|
|
2080
2093
|
function reusePoolOf(old) {
|
|
@@ -2175,7 +2188,7 @@ var round = (n) => Math.round(n * 1e6) / 1e6;
|
|
|
2175
2188
|
var family = (name) => name.replace(/\d+/g, "#");
|
|
2176
2189
|
function detailOf(seq) {
|
|
2177
2190
|
const s = seq.spec;
|
|
2178
|
-
const spans =
|
|
2191
|
+
const spans = chunkECLBZV4N_cjs.spansMeta.get(seq.spec)?.preview;
|
|
2179
2192
|
if (spans) return spans.length > 60 ? spans.slice(0, 57) + "\u2026" : spans;
|
|
2180
2193
|
if (typeof s.text === "string") return s.text.length > 60 ? s.text.slice(0, 57) + "\u2026" : s.text;
|
|
2181
2194
|
if (typeof s.asset === "string") return `asset \u201C${s.asset}\u201D`;
|
|
@@ -2191,10 +2204,10 @@ function walk2(comp, parentStart, parentEnd, depth, prefix, rows, transitions, l
|
|
|
2191
2204
|
const start = parentStart + (seq.at ?? 0);
|
|
2192
2205
|
const end = Math.min(parentEnd, seq.duration !== void 0 ? start + seq.duration : parentEnd);
|
|
2193
2206
|
const span = end - start;
|
|
2194
|
-
const keys = (seq.spec.keyframes ?? []).map((kf) => round(start +
|
|
2207
|
+
const keys = (seq.spec.keyframes ?? []).map((kf) => round(start + chunkECLBZV4N_cjs.resolveAt(kf.at, span))).sort((a, b) => a - b).slice(0, MAX_KEYS);
|
|
2195
2208
|
const row = { path: prefix + name, name, type: seq.spec.type, depth, start: round(start), end: round(end), keys, detail: detailOf(seq), ...local ? { local } : {} };
|
|
2196
2209
|
const inner = [];
|
|
2197
|
-
const isComp = seq instanceof
|
|
2210
|
+
const isComp = seq instanceof chunkOGLRSR6C_cjs.CompositionSequence;
|
|
2198
2211
|
if (isComp) {
|
|
2199
2212
|
const label = seq.remapLabel();
|
|
2200
2213
|
walk2(seq, label ? 0 : start, label ? seq.contentSpan : end, depth + 1, prefix + name + "/", inner, transitions, label ? `${name} ${label}` : local);
|
|
@@ -2353,7 +2366,7 @@ function sheetLayout(n, columns, cellW, srcW, srcH, labelH) {
|
|
|
2353
2366
|
}
|
|
2354
2367
|
|
|
2355
2368
|
// src/core/vars.ts
|
|
2356
|
-
var RESERVED_NAMES = ["w", "h", "W", "H", "GW", "GH", "t", "d", "T", "contain", "cover", "value", ...
|
|
2369
|
+
var RESERVED_NAMES = ["w", "h", "W", "H", "GW", "GH", "t", "d", "T", "contain", "cover", "value", ...chunkECLBZV4N_cjs.EXPRESSION_NAMES];
|
|
2357
2370
|
var NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
2358
2371
|
var isPlain = (v) => !!v && typeof v === "object" && (Object.getPrototypeOf(v) === Object.prototype || Object.getPrototypeOf(v) === null);
|
|
2359
2372
|
function normalizeVars(raw, where, warn = (m) => console.warn(m)) {
|
|
@@ -2897,8 +2910,8 @@ var Movie = class {
|
|
|
2897
2910
|
this.stops = normalizeStops(applyVars(options.composition, this._vars)?.stops, this.duration, this.frameRate);
|
|
2898
2911
|
this._posterFrame = poster.frame;
|
|
2899
2912
|
this.background = options.background ?? "#000000";
|
|
2900
|
-
this.timeline =
|
|
2901
|
-
|
|
2913
|
+
this.timeline = chunkECLBZV4N_cjs.createTimeline({ paused: true, defaults: { ease: "none" } });
|
|
2914
|
+
chunkECLBZV4N_cjs.lengthen(this.timeline, this.duration);
|
|
2902
2915
|
const baseAppOptions = {
|
|
2903
2916
|
width: this.width,
|
|
2904
2917
|
height: this.height,
|
|
@@ -2997,7 +3010,7 @@ var Movie = class {
|
|
|
2997
3010
|
height: sizeWins ? height : spec.height ?? height,
|
|
2998
3011
|
duration: spec.duration ?? this.duration
|
|
2999
3012
|
} : void 0;
|
|
3000
|
-
await
|
|
3013
|
+
await chunkECLBZV4N_cjs.ensureFilterLibrary(seededComposition);
|
|
3001
3014
|
if (chunkWYR2AU4W_cjs.usesAdvancedBlend(seededComposition)) await chunkWYR2AU4W_cjs.enableAdvancedBlend(this.app.renderer);
|
|
3002
3015
|
const userComposition = seededComposition ? expandTransitions(seededComposition) : void 0;
|
|
3003
3016
|
const rootSeqSpec = {
|
|
@@ -3008,7 +3021,7 @@ var Movie = class {
|
|
|
3008
3021
|
...userComposition
|
|
3009
3022
|
};
|
|
3010
3023
|
if (userComposition) carryTransitionWindows(userComposition, rootSeqSpec);
|
|
3011
|
-
const sequence = new
|
|
3024
|
+
const sequence = new chunkOGLRSR6C_cjs.CompositionSequence(rootSeqSpec, null, rootShape);
|
|
3012
3025
|
lp?.begin("build", countLayers(rootSeqSpec));
|
|
3013
3026
|
try {
|
|
3014
3027
|
await sequence.build();
|
|
@@ -3147,8 +3160,8 @@ var Movie = class {
|
|
|
3147
3160
|
if (!changed) return { reason, ms: 0, audio: "none", frame: this.currentFrame, playing: this.isPlaying, unchanged: true };
|
|
3148
3161
|
sequence = await this._construct(composition, vars, width, height, void 0, this._resized || sizeChanged, reusePoolOf(this._rootSequence));
|
|
3149
3162
|
alive();
|
|
3150
|
-
const timeline =
|
|
3151
|
-
|
|
3163
|
+
const timeline = chunkECLBZV4N_cjs.createTimeline({ paused: true, defaults: { ease: "none" } });
|
|
3164
|
+
chunkECLBZV4N_cjs.lengthen(timeline, this.duration);
|
|
3152
3165
|
sequence.bindTimeline(timeline);
|
|
3153
3166
|
const hadSound = this.audioBuffer !== null;
|
|
3154
3167
|
const audio = await this._mixSound(sequence, this._ensureAudioContext());
|
|
@@ -3923,7 +3936,7 @@ function countLayers(spec) {
|
|
|
3923
3936
|
n += 1 + countLayers(s);
|
|
3924
3937
|
const spans = s.spans;
|
|
3925
3938
|
if (Array.isArray(spans)) n += spans.length;
|
|
3926
|
-
const src =
|
|
3939
|
+
const src = chunkOGLRSR6C_cjs.maskSourceOf(mask);
|
|
3927
3940
|
if (src.kind === "inline") n += 1 + countLayers(src.spec);
|
|
3928
3941
|
}
|
|
3929
3942
|
return n;
|
|
@@ -4012,8 +4025,8 @@ function splitVertical(text, style, ts, right, top, align, by) {
|
|
|
4012
4025
|
|
|
4013
4026
|
// src/presets/_ease.ts
|
|
4014
4027
|
function parseEase2(name) {
|
|
4015
|
-
|
|
4016
|
-
return
|
|
4028
|
+
chunkECLBZV4N_cjs.checkEase(name, "a preset");
|
|
4029
|
+
return chunkECLBZV4N_cjs.parseEase(name);
|
|
4017
4030
|
}
|
|
4018
4031
|
|
|
4019
4032
|
// src/presets/kenBurns.ts
|
|
@@ -4148,17 +4161,17 @@ function orbit(opts) {
|
|
|
4148
4161
|
throw new Error("pixi-effects: orbit() cannot combine `radius` with `dollyZoom` \u2014 the radius follows the animated fov");
|
|
4149
4162
|
}
|
|
4150
4163
|
const [cx, cy] = opts.center ?? [width / 2, height / 2];
|
|
4151
|
-
const fixedR = opts.radius ??
|
|
4164
|
+
const fixedR = opts.radius ?? chunkECLBZV4N_cjs.homeDistance(height, fov ?? chunkECLBZV4N_cjs.DEFAULT_FOV);
|
|
4152
4165
|
const start = opts.start ?? -degrees / 2;
|
|
4153
4166
|
const steps = Math.max(1, Math.round(duration * stepsPerSecond));
|
|
4154
4167
|
const easeFn = parseEase2(ease);
|
|
4155
4168
|
const dollyEase = dolly ? parseEase2(dolly.ease ?? ease) : null;
|
|
4156
4169
|
const pos = (i) => {
|
|
4157
4170
|
const p = i / steps;
|
|
4158
|
-
const a = (start + degrees * easeFn(p)) *
|
|
4171
|
+
const a = (start + degrees * easeFn(p)) * chunkECLBZV4N_cjs.DEG;
|
|
4159
4172
|
if (!dolly) return { x: cx + fixedR * Math.sin(a), z: fixedR * Math.cos(a) };
|
|
4160
4173
|
const f = dolly.from + (dolly.to - dolly.from) * dollyEase(p);
|
|
4161
|
-
const R =
|
|
4174
|
+
const R = chunkECLBZV4N_cjs.homeDistance(height, f);
|
|
4162
4175
|
return { x: cx + R * Math.sin(a), z: R * Math.cos(a), fov: f };
|
|
4163
4176
|
};
|
|
4164
4177
|
const keyframes = [];
|
|
@@ -4213,7 +4226,7 @@ function particles(opts) {
|
|
|
4213
4226
|
const round2 = (v) => Math.round(v * 1e6) / 1e6;
|
|
4214
4227
|
const out = [];
|
|
4215
4228
|
for (let i = 0; i < count; i++) {
|
|
4216
|
-
const r =
|
|
4229
|
+
const r = chunkECLBZV4N_cjs.random(seed * 1000003 + i * 7919 + 17);
|
|
4217
4230
|
const pick = ([a2, b]) => a2 + r() * (b - a2);
|
|
4218
4231
|
const born = at + r() * emit;
|
|
4219
4232
|
const lifetime = pick(life);
|
|
@@ -4226,7 +4239,7 @@ function particles(opts) {
|
|
|
4226
4239
|
const turn = spin ? pick(spin) : 0;
|
|
4227
4240
|
const startAngle = spin ? r() * 360 : 0;
|
|
4228
4241
|
const swayAmp = sway?.amp ?? 0, swayFreq = sway?.freq ?? 1;
|
|
4229
|
-
const n0 = sway ?
|
|
4242
|
+
const n0 = sway ? chunkECLBZV4N_cjs.noise(0, seed * 1000003 + i) : 0;
|
|
4230
4243
|
const at_ = (t) => {
|
|
4231
4244
|
const axis = (p0, v0, acc) => {
|
|
4232
4245
|
if (drag > 0) {
|
|
@@ -4235,7 +4248,7 @@ function particles(opts) {
|
|
|
4235
4248
|
}
|
|
4236
4249
|
return p0 + v0 * t + 0.5 * acc * t * t;
|
|
4237
4250
|
};
|
|
4238
|
-
const sw = sway ? swayAmp * (
|
|
4251
|
+
const sw = sway ? swayAmp * (chunkECLBZV4N_cjs.noise(t * swayFreq, seed * 1000003 + i) - n0) : 0;
|
|
4239
4252
|
return { x: axis(x0, vx, wind) + sw, y: axis(y0, vy, gravity) };
|
|
4240
4253
|
};
|
|
4241
4254
|
const kfs = [];
|
|
@@ -4297,7 +4310,7 @@ function followPath(opts) {
|
|
|
4297
4310
|
if (steps > MAX_STEPS) throw new Error(`followPath(): ${steps} samples is too many (max ${MAX_STEPS}); lower frameRate or duration`);
|
|
4298
4311
|
const segments = [];
|
|
4299
4312
|
let total = 0;
|
|
4300
|
-
for (const line of
|
|
4313
|
+
for (const line of chunkECLBZV4N_cjs.flattenSvgPath(d)) {
|
|
4301
4314
|
const p = line.closed ? [...line.pts, line.pts[0], line.pts[1]] : line.pts;
|
|
4302
4315
|
for (let i = 2; i < p.length; i += 2) {
|
|
4303
4316
|
const len = Math.hypot(p[i] - p[i - 2], p[i + 1] - p[i - 1]);
|
|
@@ -4350,7 +4363,7 @@ function followPath(opts) {
|
|
|
4350
4363
|
// src/core/pathSample.ts
|
|
4351
4364
|
function samplePath(d) {
|
|
4352
4365
|
if (typeof d !== "string" || d.trim() === "") throw new Error('samplePath(): d must be SVG path data, e.g. "M 40 300 C 200 20 400 20 560 300"');
|
|
4353
|
-
const lines =
|
|
4366
|
+
const lines = chunkECLBZV4N_cjs.flattenSvgPath(d);
|
|
4354
4367
|
const segments = [];
|
|
4355
4368
|
let length = 0;
|
|
4356
4369
|
for (const line of lines) {
|
|
@@ -4381,7 +4394,7 @@ function samplePath(d) {
|
|
|
4381
4394
|
return { x: g.x0 + (g.x1 - g.x0) * t, y: g.y0 + (g.y1 - g.y0) * t, angle: Math.atan2(g.y1 - g.y0, g.x1 - g.x0) };
|
|
4382
4395
|
},
|
|
4383
4396
|
trim(start = 0, end = 1) {
|
|
4384
|
-
return
|
|
4397
|
+
return chunkECLBZV4N_cjs.trimPolylines(lines, start, end).map((l) => l.closed ? [...l.pts, l.pts[0], l.pts[1]] : l.pts);
|
|
4385
4398
|
}
|
|
4386
4399
|
};
|
|
4387
4400
|
}
|
|
@@ -4492,7 +4505,7 @@ function distances(n, from, grid, seed) {
|
|
|
4492
4505
|
if (n === 0) return [];
|
|
4493
4506
|
if (from === "random") {
|
|
4494
4507
|
const order = Array.from({ length: n }, (_, i) => i);
|
|
4495
|
-
const r =
|
|
4508
|
+
const r = chunkECLBZV4N_cjs.random(seed);
|
|
4496
4509
|
for (let i = n - 1; i > 0; i--) {
|
|
4497
4510
|
const j = Math.floor(r() * (i + 1));
|
|
4498
4511
|
[order[i], order[j]] = [order[j], order[i]];
|
|
@@ -4554,7 +4567,7 @@ function wiggle(opts) {
|
|
|
4554
4567
|
to[n] = p.around;
|
|
4555
4568
|
return;
|
|
4556
4569
|
}
|
|
4557
|
-
const off = (
|
|
4570
|
+
const off = (chunkECLBZV4N_cjs.rand(seed * 7919 + pi * 104729 + s * 31 + 1) * 2 - 1) * p.amp;
|
|
4558
4571
|
to[n] = typeof p.around === "number" ? p.around + off : `(${p.around}) ${off < 0 ? "-" : "+"} ${Math.abs(off)}`;
|
|
4559
4572
|
});
|
|
4560
4573
|
out.push({ at: at + s * stepLen, to, duration: stepLen, ease });
|
|
@@ -5025,5 +5038,5 @@ exports.splitText = splitText;
|
|
|
5025
5038
|
exports.stagger = stagger;
|
|
5026
5039
|
exports.wiggle = wiggle;
|
|
5027
5040
|
exports.withFade = withFade;
|
|
5028
|
-
//# sourceMappingURL=chunk-
|
|
5029
|
-
//# sourceMappingURL=chunk-
|
|
5041
|
+
//# sourceMappingURL=chunk-2AT5WSSV.cjs.map
|
|
5042
|
+
//# sourceMappingURL=chunk-2AT5WSSV.cjs.map
|