pixi-effects 0.18.1 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +6 -6
- package/ai/CHAT.md +1 -1
- package/ai/SKILL.md +1 -1
- package/ai/chat-template.html +4 -4
- package/ai/reference/cheatsheet.md +4 -4
- package/ai/reference/pitfalls.md +4 -0
- package/ai/reference/recipes.md +65 -0
- package/ai/template.html +5 -5
- package/ai/tools/check.mjs +14 -3
- package/dist/{Base-BQUodYZK.d.ts → Base-B4WbUJO2.d.ts} +1 -1
- package/dist/{Base-OHqp8qvX.d.cts → Base-i88XXaiP.d.cts} +1 -1
- package/dist/Composition-KYNPRWK3.cjs +14 -0
- package/dist/{Composition-6JMXWNVV.cjs.map → Composition-KYNPRWK3.cjs.map} +1 -1
- package/dist/Composition-QBKEEJBV.js +5 -0
- package/dist/{Composition-MLBHYYFF.js.map → Composition-QBKEEJBV.js.map} +1 -1
- package/dist/Controller.d.cts +2 -2
- package/dist/Controller.d.ts +2 -2
- package/dist/{Movie-DlHQ9C02.d.ts → Movie-8IrqL3kO.d.ts} +6 -1
- package/dist/{Movie-K2YuVAdg.d.cts → Movie-CpmdNadg.d.cts} +6 -1
- package/dist/Presenter.d.cts +2 -2
- package/dist/Presenter.d.ts +2 -2
- package/dist/{chunk-UXDR3ZDU.js → chunk-B3YB2TNY.js} +4 -3
- package/dist/chunk-B3YB2TNY.js.map +1 -0
- package/dist/{chunk-JW67MDHQ.cjs → chunk-CTZRFSVU.cjs} +27 -26
- package/dist/chunk-CTZRFSVU.cjs.map +1 -0
- package/dist/{chunk-ANO5R2E6.cjs → chunk-VTBT6NNE.cjs} +755 -48
- package/dist/chunk-VTBT6NNE.cjs.map +1 -0
- package/dist/{chunk-SG3Y66FN.js → chunk-YRXTKOV5.js} +757 -51
- package/dist/chunk-YRXTKOV5.js.map +1 -0
- package/dist/index.cjs +63 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +40 -13
- package/dist/index.js.map +1 -1
- package/dist/loader.css +1 -1
- package/dist/three.cjs +5 -5
- package/dist/three.d.cts +2 -2
- package/dist/three.d.ts +2 -2
- package/dist/three.js +1 -1
- package/dist/{types-SS51lP6O.d.cts → types-bzLJ7aUx.d.cts} +16 -6
- package/dist/{types-SS51lP6O.d.ts → types-bzLJ7aUx.d.ts} +16 -6
- package/docs/dsl.md +36 -5
- package/llms-full.txt +110 -10
- package/package.json +1 -1
- package/dist/Composition-6JMXWNVV.cjs +0 -14
- package/dist/Composition-MLBHYYFF.js +0 -5
- package/dist/chunk-ANO5R2E6.cjs.map +0 -1
- package/dist/chunk-JW67MDHQ.cjs.map +0 -1
- package/dist/chunk-SG3Y66FN.js.map +0 -1
- package/dist/chunk-UXDR3ZDU.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkCTZRFSVU_cjs = require('./chunk-CTZRFSVU.cjs');
|
|
4
|
+
var chunkVTBT6NNE_cjs = require('./chunk-VTBT6NNE.cjs');
|
|
5
5
|
var chunkUQBGW5DO_cjs = require('./chunk-UQBGW5DO.cjs');
|
|
6
6
|
var PIXI = require('pixi.js');
|
|
7
7
|
var gsap = require('gsap');
|
|
@@ -489,6 +489,14 @@ function namedScenes(rows) {
|
|
|
489
489
|
return rows.filter((r) => r.depth === 0 && r.type === "composition" && !/[#×]/.test(r.name) && r.end - r.start >= 1).map((r) => ({ name: r.name, start: r.start, end: r.end }));
|
|
490
490
|
}
|
|
491
491
|
|
|
492
|
+
// src/core/timeFilters.ts
|
|
493
|
+
function collectTimeFilters(seq, out = []) {
|
|
494
|
+
for (const f of seq.filters ?? []) if (typeof f.setTime === "function") out.push(f);
|
|
495
|
+
if (seq.maskSequence) collectTimeFilters(seq.maskSequence, out);
|
|
496
|
+
for (const child of seq._children ?? []) collectTimeFilters(child, out);
|
|
497
|
+
return out;
|
|
498
|
+
}
|
|
499
|
+
|
|
492
500
|
// src/core/review.ts
|
|
493
501
|
function sampleFrames({ totalFrames, frameRate, scenes = [], step = 0.25, cap = 240 }) {
|
|
494
502
|
const last = totalFrames;
|
|
@@ -1225,16 +1233,16 @@ function expandTransitions(spec) {
|
|
|
1225
1233
|
if (toUses > 1) {
|
|
1226
1234
|
throw new Error(`pixi-effects: ${tag} sequence "${t.to}" is used as \`to\` in more than one transition`);
|
|
1227
1235
|
}
|
|
1228
|
-
const tStart =
|
|
1236
|
+
const tStart = chunkVTBT6NNE_cjs.resolveAt(t.at, parentDuration);
|
|
1229
1237
|
const tEnd = tStart + t.duration;
|
|
1230
1238
|
const fromSeq = fromEntry.seq;
|
|
1231
|
-
const fromStart =
|
|
1239
|
+
const fromStart = chunkVTBT6NNE_cjs.resolveAt(fromSeq.at, parentDuration);
|
|
1232
1240
|
const fromEnd = fromStart + (fromSeq.duration ?? parentDuration);
|
|
1233
1241
|
if (tStart < fromStart - EPS || tEnd > fromEnd + EPS) {
|
|
1234
1242
|
throw new Error(`pixi-effects: ${tag} window [${tStart}, ${tEnd}] is not covered by \`from\` "${t.from}" (lives [${fromStart}, ${fromEnd}], so it ends at ${fromEnd})`);
|
|
1235
1243
|
}
|
|
1236
1244
|
const toSeq = toEntry.seq;
|
|
1237
|
-
const toStart =
|
|
1245
|
+
const toStart = chunkVTBT6NNE_cjs.resolveAt(toSeq.at, parentDuration);
|
|
1238
1246
|
const toEnd = toStart + (toSeq.duration ?? parentDuration);
|
|
1239
1247
|
if (tStart < toStart - EPS || tEnd > toEnd + EPS) {
|
|
1240
1248
|
throw new Error(`pixi-effects: ${tag} window [${tStart}, ${tEnd}] is not covered by \`to\` "${t.to}" (lives [${toStart}, ${toEnd}], so it starts at ${toStart})`);
|
|
@@ -1574,9 +1582,9 @@ function inspectScene(root, frame, time, canvas, opts = {}) {
|
|
|
1574
1582
|
onCanvas = inter === 0 && area > 0 ? "none" : inter >= area - 1e-6 ? "full" : "partial";
|
|
1575
1583
|
if (area === 0) onCanvas = "none";
|
|
1576
1584
|
}
|
|
1577
|
-
const keys =
|
|
1585
|
+
const keys = chunkVTBT6NNE_cjs.collectPropKeys(seq.spec);
|
|
1578
1586
|
const carried = carriers.some((c) => {
|
|
1579
|
-
const k =
|
|
1587
|
+
const k = chunkVTBT6NNE_cjs.collectPropKeys(c.spec);
|
|
1580
1588
|
return (c.spec.keyframes ?? []).length > 0 && (k.has("x") || k.has("y") || k.has("rotation") || k.has("scale"));
|
|
1581
1589
|
});
|
|
1582
1590
|
const moving = parentMoving || carried || (seq.spec.keyframes ?? []).length > 0 && (keys.has("x") || keys.has("y"));
|
|
@@ -1597,7 +1605,7 @@ function inspectScene(root, frame, time, canvas, opts = {}) {
|
|
|
1597
1605
|
const group = parentScene ?? (name !== void 0 && blending.has(name) ? name : void 0);
|
|
1598
1606
|
if (group) scene.set(info, group);
|
|
1599
1607
|
if (zero || seq.showsNothingYet) scaledToNothing.add(info);
|
|
1600
|
-
if (seq instanceof
|
|
1608
|
+
if (seq instanceof chunkCTZRFSVU_cjs.CompositionSequence) walk2(seq, prefix + label + "/", insideThreeD || threeD, visible, group, moving, zero);
|
|
1601
1609
|
});
|
|
1602
1610
|
};
|
|
1603
1611
|
walk2(root, "", false, true);
|
|
@@ -1658,10 +1666,10 @@ function walk(comp, parentStart, parentEnd, depth, prefix, rows, transitions) {
|
|
|
1658
1666
|
const start = parentStart + (seq.at ?? 0);
|
|
1659
1667
|
const end = Math.min(parentEnd, seq.duration !== void 0 ? start + seq.duration : parentEnd);
|
|
1660
1668
|
const span = end - start;
|
|
1661
|
-
const keys = (seq.spec.keyframes ?? []).map((kf) => round(start +
|
|
1669
|
+
const keys = (seq.spec.keyframes ?? []).map((kf) => round(start + chunkVTBT6NNE_cjs.resolveAt(kf.at, span))).sort((a, b) => a - b).slice(0, MAX_KEYS);
|
|
1662
1670
|
const row = { path: prefix + name, name, type: seq.spec.type, depth, start: round(start), end: round(end), keys, detail: detailOf(seq) };
|
|
1663
1671
|
const inner = [];
|
|
1664
|
-
const isComp = seq instanceof
|
|
1672
|
+
const isComp = seq instanceof chunkCTZRFSVU_cjs.CompositionSequence;
|
|
1665
1673
|
if (isComp) walk(seq, start, end, depth + 1, prefix + name + "/", inner, transitions);
|
|
1666
1674
|
entries.push({ row, inner, groupable: !isComp });
|
|
1667
1675
|
});
|
|
@@ -2094,6 +2102,15 @@ var Movie = class {
|
|
|
2094
2102
|
background = "#000000";
|
|
2095
2103
|
_audioContext = null;
|
|
2096
2104
|
_rootSequence = null;
|
|
2105
|
+
/** The filters that take the time of the frame they draw (`grain`), collected once after the build. */
|
|
2106
|
+
_timeFilters = [];
|
|
2107
|
+
/** While a motion-blurred frame is exposed: the frame's own time, so all its sub-frames share one grain frame (and not the playhead's). */
|
|
2108
|
+
_nominalTime = null;
|
|
2109
|
+
_feedTimeFilters() {
|
|
2110
|
+
if (!this._timeFilters.length) return;
|
|
2111
|
+
const t = this._nominalTime ?? this._timeOf(this.currentFrame);
|
|
2112
|
+
for (const f of this._timeFilters) f.setTime(t);
|
|
2113
|
+
}
|
|
2097
2114
|
_rootContainer = null;
|
|
2098
2115
|
_raf = null;
|
|
2099
2116
|
/** What went into the mix, and its peak before limiting — kept for inspectAudio(). */
|
|
@@ -2210,7 +2227,7 @@ var Movie = class {
|
|
|
2210
2227
|
height: options.composition.height ?? this.height,
|
|
2211
2228
|
duration: options.composition.duration ?? this.duration
|
|
2212
2229
|
} : void 0;
|
|
2213
|
-
await
|
|
2230
|
+
await chunkVTBT6NNE_cjs.ensureFilterLibrary(seededComposition);
|
|
2214
2231
|
const userComposition = seededComposition ? expandTransitions(seededComposition) : void 0;
|
|
2215
2232
|
const rootSeqSpec = {
|
|
2216
2233
|
type: "composition",
|
|
@@ -2220,11 +2237,12 @@ var Movie = class {
|
|
|
2220
2237
|
...userComposition
|
|
2221
2238
|
};
|
|
2222
2239
|
if (userComposition) carryTransitionWindows(userComposition, rootSeqSpec);
|
|
2223
|
-
const composition = new
|
|
2240
|
+
const composition = new chunkCTZRFSVU_cjs.CompositionSequence(rootSeqSpec, null, rootShape);
|
|
2224
2241
|
await composition.build();
|
|
2225
2242
|
this._rootSequence = composition;
|
|
2226
2243
|
if (composition.target) root.addChild(composition.target);
|
|
2227
2244
|
composition.bindTimeline(this.timeline);
|
|
2245
|
+
this._timeFilters = collectTimeFilters(composition);
|
|
2228
2246
|
const audios = [];
|
|
2229
2247
|
composition.collectAudio(audios, 0);
|
|
2230
2248
|
if (audios.length > 0) {
|
|
@@ -2562,6 +2580,7 @@ var Movie = class {
|
|
|
2562
2580
|
if (!app?.renderer) return;
|
|
2563
2581
|
if (!this._synced) this._rootSequence?.syncFrame();
|
|
2564
2582
|
this._synced = false;
|
|
2583
|
+
this._feedTimeFilters();
|
|
2565
2584
|
PIXI.Culler.shared.cull(app.stage, app.renderer.screen, false);
|
|
2566
2585
|
app.renderer.render({ container: app.stage });
|
|
2567
2586
|
}
|
|
@@ -2578,6 +2597,7 @@ var Movie = class {
|
|
|
2578
2597
|
* the frame before (after a jump seek, a card whose children were animated showed a stale picture).
|
|
2579
2598
|
*/
|
|
2580
2599
|
_updateSpace(t = this._timeOf(this.currentFrame)) {
|
|
2600
|
+
this._feedTimeFilters();
|
|
2581
2601
|
if (!this._rootSequence || !this.app) return;
|
|
2582
2602
|
this._rootSequence.syncFrame();
|
|
2583
2603
|
this._synced = true;
|
|
@@ -2596,15 +2616,20 @@ var Movie = class {
|
|
|
2596
2616
|
const stage = this.app.canvas;
|
|
2597
2617
|
this._atPoster = false;
|
|
2598
2618
|
const times = blurTimes(frame, this.frameRate, mb, Math.max(0, this.duration - END_MARGIN));
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2619
|
+
this._nominalTime = this._timeOf(Math.max(0, Math.min(frame, this.totalFrames)));
|
|
2620
|
+
try {
|
|
2621
|
+
for (let k = 0; k < times.length; k++) {
|
|
2622
|
+
const t = times[k];
|
|
2623
|
+
this.timeline.time(t);
|
|
2624
|
+
await this._awaitVideoFrames(t);
|
|
2625
|
+
this._updateSpace(t);
|
|
2626
|
+
this._renderNow();
|
|
2627
|
+
if (k === 0) g.clearRect(0, 0, target.width, target.height);
|
|
2628
|
+
g.globalAlpha = 1 / (k + 1);
|
|
2629
|
+
g.drawImage(stage, 0, 0, target.width, target.height);
|
|
2630
|
+
}
|
|
2631
|
+
} finally {
|
|
2632
|
+
this._nominalTime = null;
|
|
2608
2633
|
}
|
|
2609
2634
|
g.globalAlpha = 1;
|
|
2610
2635
|
if (settle) await this._goto(frame);
|
|
@@ -2826,6 +2851,7 @@ var Movie = class {
|
|
|
2826
2851
|
}
|
|
2827
2852
|
async destroy() {
|
|
2828
2853
|
safeRun(() => this.pause());
|
|
2854
|
+
this._timeFilters = [];
|
|
2829
2855
|
safeRun(() => this._rootSequence?.destroy());
|
|
2830
2856
|
this._rootSequence = null;
|
|
2831
2857
|
safeRun(() => this.timeline?.kill());
|
|
@@ -3027,7 +3053,7 @@ function clamp(v, lo, hi) {
|
|
|
3027
3053
|
return Math.max(lo, Math.min(hi, v));
|
|
3028
3054
|
}
|
|
3029
3055
|
function parseEase(name) {
|
|
3030
|
-
|
|
3056
|
+
chunkVTBT6NNE_cjs.checkEase(name, "a preset");
|
|
3031
3057
|
return gsap.gsap.parseEase(name);
|
|
3032
3058
|
}
|
|
3033
3059
|
|
|
@@ -3050,17 +3076,17 @@ function orbit(opts) {
|
|
|
3050
3076
|
throw new Error("pixi-effects: orbit() cannot combine `radius` with `dollyZoom` \u2014 the radius follows the animated fov");
|
|
3051
3077
|
}
|
|
3052
3078
|
const [cx, cy] = opts.center ?? [width / 2, height / 2];
|
|
3053
|
-
const fixedR = opts.radius ??
|
|
3079
|
+
const fixedR = opts.radius ?? chunkVTBT6NNE_cjs.homeDistance(height, fov ?? chunkVTBT6NNE_cjs.DEFAULT_FOV);
|
|
3054
3080
|
const start = opts.start ?? -degrees / 2;
|
|
3055
3081
|
const steps = Math.max(1, Math.round(duration * stepsPerSecond));
|
|
3056
3082
|
const easeFn = parseEase(ease);
|
|
3057
3083
|
const dollyEase = dolly ? parseEase(dolly.ease ?? ease) : null;
|
|
3058
3084
|
const pos = (i) => {
|
|
3059
3085
|
const p = i / steps;
|
|
3060
|
-
const a = (start + degrees * easeFn(p)) *
|
|
3086
|
+
const a = (start + degrees * easeFn(p)) * chunkVTBT6NNE_cjs.DEG;
|
|
3061
3087
|
if (!dolly) return { x: cx + fixedR * Math.sin(a), z: fixedR * Math.cos(a) };
|
|
3062
3088
|
const f = dolly.from + (dolly.to - dolly.from) * dollyEase(p);
|
|
3063
|
-
const R =
|
|
3089
|
+
const R = chunkVTBT6NNE_cjs.homeDistance(height, f);
|
|
3064
3090
|
return { x: cx + R * Math.sin(a), z: R * Math.cos(a), fov: f };
|
|
3065
3091
|
};
|
|
3066
3092
|
const keyframes = [];
|
|
@@ -3115,7 +3141,7 @@ function particles(opts) {
|
|
|
3115
3141
|
const round3 = (v) => Math.round(v * 1e6) / 1e6;
|
|
3116
3142
|
const out = [];
|
|
3117
3143
|
for (let i = 0; i < count; i++) {
|
|
3118
|
-
const r =
|
|
3144
|
+
const r = chunkVTBT6NNE_cjs.random(seed * 1000003 + i * 7919 + 17);
|
|
3119
3145
|
const pick = ([a2, b]) => a2 + r() * (b - a2);
|
|
3120
3146
|
const born = at + r() * emit;
|
|
3121
3147
|
const lifetime = pick(life);
|
|
@@ -3128,7 +3154,7 @@ function particles(opts) {
|
|
|
3128
3154
|
const turn = spin ? pick(spin) : 0;
|
|
3129
3155
|
const startAngle = spin ? r() * 360 : 0;
|
|
3130
3156
|
const swayAmp = sway?.amp ?? 0, swayFreq = sway?.freq ?? 1;
|
|
3131
|
-
const n0 = sway ?
|
|
3157
|
+
const n0 = sway ? chunkVTBT6NNE_cjs.noise(0, seed * 1000003 + i) : 0;
|
|
3132
3158
|
const at_ = (t) => {
|
|
3133
3159
|
const axis = (p0, v0, acc) => {
|
|
3134
3160
|
if (drag > 0) {
|
|
@@ -3137,7 +3163,7 @@ function particles(opts) {
|
|
|
3137
3163
|
}
|
|
3138
3164
|
return p0 + v0 * t + 0.5 * acc * t * t;
|
|
3139
3165
|
};
|
|
3140
|
-
const sw = sway ? swayAmp * (
|
|
3166
|
+
const sw = sway ? swayAmp * (chunkVTBT6NNE_cjs.noise(t * swayFreq, seed * 1000003 + i) - n0) : 0;
|
|
3141
3167
|
return { x: axis(x0, vx, wind) + sw, y: axis(y0, vy, gravity) };
|
|
3142
3168
|
};
|
|
3143
3169
|
const kfs = [];
|
|
@@ -3199,7 +3225,7 @@ function followPath(opts) {
|
|
|
3199
3225
|
if (steps > MAX_STEPS) throw new Error(`followPath(): ${steps} samples is too many (max ${MAX_STEPS}); lower frameRate or duration`);
|
|
3200
3226
|
const segments = [];
|
|
3201
3227
|
let total = 0;
|
|
3202
|
-
for (const line of
|
|
3228
|
+
for (const line of chunkVTBT6NNE_cjs.flattenSvgPath(d)) {
|
|
3203
3229
|
const p = line.closed ? [...line.pts, line.pts[0], line.pts[1]] : line.pts;
|
|
3204
3230
|
for (let i = 2; i < p.length; i += 2) {
|
|
3205
3231
|
const len = Math.hypot(p[i] - p[i - 2], p[i + 1] - p[i - 1]);
|
|
@@ -3344,7 +3370,8 @@ function stagger(items, options = {}) {
|
|
|
3344
3370
|
const max = dist2.reduce((m, d) => Math.max(m, d), 0);
|
|
3345
3371
|
const total = amount !== void 0 ? amount : (each ?? 0.1) * max;
|
|
3346
3372
|
const shape = parseEase(ease);
|
|
3347
|
-
const
|
|
3373
|
+
const clamp01 = (v) => Math.min(1, Math.max(0, v));
|
|
3374
|
+
const delays = dist2.map((d) => max === 0 ? 0 : Math.round(total * clamp01(shape(d / max)) * 1e6) / 1e6);
|
|
3348
3375
|
if (isCount) return delays;
|
|
3349
3376
|
return items.map((layer, i) => ({ ...layer, at: Math.round(((layer.at ?? 0) + delays[i]) * 1e6) / 1e6 }));
|
|
3350
3377
|
}
|
|
@@ -3352,7 +3379,7 @@ function distances(n, from, grid, seed) {
|
|
|
3352
3379
|
if (n === 0) return [];
|
|
3353
3380
|
if (from === "random") {
|
|
3354
3381
|
const order = Array.from({ length: n }, (_, i) => i);
|
|
3355
|
-
const r =
|
|
3382
|
+
const r = chunkVTBT6NNE_cjs.random(seed);
|
|
3356
3383
|
for (let i = n - 1; i > 0; i--) {
|
|
3357
3384
|
const j = Math.floor(r() * (i + 1));
|
|
3358
3385
|
[order[i], order[j]] = [order[j], order[i]];
|
|
@@ -3414,7 +3441,7 @@ function wiggle(opts) {
|
|
|
3414
3441
|
to[n] = p.around;
|
|
3415
3442
|
return;
|
|
3416
3443
|
}
|
|
3417
|
-
const off = (
|
|
3444
|
+
const off = (chunkVTBT6NNE_cjs.rand(seed * 7919 + pi * 104729 + s * 31 + 1) * 2 - 1) * p.amp;
|
|
3418
3445
|
to[n] = typeof p.around === "number" ? p.around + off : `(${p.around}) ${off < 0 ? "-" : "+"} ${Math.abs(off)}`;
|
|
3419
3446
|
});
|
|
3420
3447
|
out.push({ at: at + s * stepLen, to, duration: stepLen, ease });
|
|
@@ -3889,19 +3916,19 @@ function withFade(spec, opts) {
|
|
|
3889
3916
|
|
|
3890
3917
|
Object.defineProperty(exports, "noise", {
|
|
3891
3918
|
enumerable: true,
|
|
3892
|
-
get: function () { return
|
|
3919
|
+
get: function () { return chunkVTBT6NNE_cjs.noise; }
|
|
3893
3920
|
});
|
|
3894
3921
|
Object.defineProperty(exports, "rand", {
|
|
3895
3922
|
enumerable: true,
|
|
3896
|
-
get: function () { return
|
|
3923
|
+
get: function () { return chunkVTBT6NNE_cjs.rand; }
|
|
3897
3924
|
});
|
|
3898
3925
|
Object.defineProperty(exports, "random", {
|
|
3899
3926
|
enumerable: true,
|
|
3900
|
-
get: function () { return
|
|
3927
|
+
get: function () { return chunkVTBT6NNE_cjs.random; }
|
|
3901
3928
|
});
|
|
3902
3929
|
Object.defineProperty(exports, "registerSequenceType", {
|
|
3903
3930
|
enumerable: true,
|
|
3904
|
-
get: function () { return
|
|
3931
|
+
get: function () { return chunkVTBT6NNE_cjs.registerSequenceType; }
|
|
3905
3932
|
});
|
|
3906
3933
|
exports.Movie = Movie;
|
|
3907
3934
|
exports.animateText = animateText;
|