use-scroll-animate 9.1.0 → 9.2.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 +12 -0
- package/dist/components/fx-lottie.cjs +216 -0
- package/dist/components/fx-lottie.cjs.map +1 -0
- package/dist/components/fx-lottie.d.cts +88 -0
- package/dist/components/fx-lottie.d.ts +88 -0
- package/dist/components/fx-lottie.js +210 -0
- package/dist/components/fx-lottie.js.map +1 -0
- package/dist/components/fx2.cjs +8 -0
- package/dist/components/fx2.cjs.map +1 -1
- package/dist/components/fx2.d.cts +44 -1
- package/dist/components/fx2.d.ts +44 -1
- package/dist/components/fx2.js +5 -1
- package/dist/components/fx2.js.map +1 -1
- package/dist/components/marketplace.cjs +1 -0
- package/dist/components/marketplace.cjs.map +1 -1
- package/dist/components/marketplace.js +1 -0
- package/dist/components/marketplace.js.map +1 -1
- package/dist/components/widgets.cjs +351 -171
- package/dist/components/widgets.cjs.map +1 -1
- package/dist/components/widgets.d.cts +70 -2
- package/dist/components/widgets.d.ts +70 -2
- package/dist/components/widgets.js +349 -172
- package/dist/components/widgets.js.map +1 -1
- package/dist/widgets.umd.js +1 -1
- package/dist/widgets.umd.js.map +1 -1
- package/docs/ROADMAP.md +1 -1
- package/docs/components.md +15 -0
- package/package.json +21 -1
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { registerEffects } from '../chunks/registry-CnO7ZVPK.js';
|
|
2
|
+
import '../chunks/base-CLuqlLfG.js';
|
|
3
|
+
|
|
4
|
+
const arr = (v) => (Array.isArray(v) ? v.map(Number) : [Number(v)]);
|
|
5
|
+
/** Frames (t) → values for one transform property (static props give one key at t = ip) (9.2). */
|
|
6
|
+
function track(p, ip) {
|
|
7
|
+
if (!p)
|
|
8
|
+
return [];
|
|
9
|
+
if (!p.a || !Array.isArray(p.k) || typeof p.k[0] !== 'object')
|
|
10
|
+
return [{ t: ip, v: arr(p.k) }];
|
|
11
|
+
return p.k.filter((k) => k && k.s != null).map((k) => ({ t: Number(k.t), v: arr(k.s) }));
|
|
12
|
+
}
|
|
13
|
+
const at = (tr, t) => {
|
|
14
|
+
if (!tr.length)
|
|
15
|
+
return undefined;
|
|
16
|
+
if (t <= tr[0].t)
|
|
17
|
+
return tr[0].v;
|
|
18
|
+
for (let i = 1; i < tr.length; i++)
|
|
19
|
+
if (t <= tr[i].t) {
|
|
20
|
+
const a = tr[i - 1];
|
|
21
|
+
const b = tr[i];
|
|
22
|
+
const u = b.t === a.t ? 1 : (t - a.t) / (b.t - a.t);
|
|
23
|
+
return a.v.map((x, j) => x + ((b.v[j] ?? x) - x) * u);
|
|
24
|
+
}
|
|
25
|
+
return tr[tr.length - 1].v;
|
|
26
|
+
};
|
|
27
|
+
const r2 = (n) => Math.round(n * 100) / 100;
|
|
28
|
+
/** Lottie JSON → WAAPI keyframes per layer + duration (ms) (9.2). */
|
|
29
|
+
function lottieToKeyframes(json) {
|
|
30
|
+
const d = typeof json === 'string' ? JSON.parse(json) : json;
|
|
31
|
+
const fr = Number(d?.fr) || 30;
|
|
32
|
+
const ip = Number(d?.ip) || 0;
|
|
33
|
+
const op = Number(d?.op) || ip + fr;
|
|
34
|
+
const span = Math.max(1, op - ip);
|
|
35
|
+
const layers = (Array.isArray(d?.layers) ? d.layers : []).map((L, index) => {
|
|
36
|
+
const ks = L?.ks || {};
|
|
37
|
+
const tracks = { p: track(ks.p, ip), s: track(ks.s, ip), r: track(ks.r, ip), o: track(ks.o, ip) };
|
|
38
|
+
const anchor = arr(ks.a?.k ?? [0, 0]).slice(0, 2) || [0, 0];
|
|
39
|
+
const times = Array.from(new Set([ip, op, ...Object.values(tracks).flat().map((k) => k.t)])).filter((t) => t >= ip && t <= op).sort((a, b) => a - b);
|
|
40
|
+
const keyframes = times.map((t) => {
|
|
41
|
+
const p = at(tracks.p, t);
|
|
42
|
+
const s = at(tracks.s, t);
|
|
43
|
+
const r = at(tracks.r, t);
|
|
44
|
+
const o = at(tracks.o, t);
|
|
45
|
+
// Lottie order: move the anchor to the position, rotate + scale around the anchor
|
|
46
|
+
const pp = p || anchor;
|
|
47
|
+
const tf = [`translate(${r2(pp[0])}px, ${r2(pp[1] ?? 0)}px)`];
|
|
48
|
+
if (r)
|
|
49
|
+
tf.push(`rotate(${r2(r[0])}deg)`);
|
|
50
|
+
if (s)
|
|
51
|
+
tf.push(`scale(${r2(s[0] / 100)}, ${r2((s[1] ?? s[0]) / 100)})`);
|
|
52
|
+
tf.push(`translate(${r2(-anchor[0])}px, ${r2(-anchor[1])}px)`);
|
|
53
|
+
const k = { offset: r2((t - ip) / span), transform: tf.join(' ') };
|
|
54
|
+
if (o)
|
|
55
|
+
k.opacity = r2(o[0] / 100);
|
|
56
|
+
return k;
|
|
57
|
+
});
|
|
58
|
+
return { name: String(L?.nm ?? `layer ${index + 1}`), index, keyframes, anchor };
|
|
59
|
+
});
|
|
60
|
+
return { width: Number(d?.w) || 100, height: Number(d?.h) || 100, duration: Math.round((span / fr) * 1000), layers };
|
|
61
|
+
}
|
|
62
|
+
const hex = (c) => {
|
|
63
|
+
const v = arr(c?.k ?? c).slice(0, 3).map((x) => Math.round(Math.min(1, Math.max(0, x)) * 255));
|
|
64
|
+
return `#${v.map((x) => x.toString(16).padStart(2, '0')).join('')}`;
|
|
65
|
+
};
|
|
66
|
+
function shapes(items, fill, stroke, sw) {
|
|
67
|
+
let f = fill;
|
|
68
|
+
let s = stroke;
|
|
69
|
+
let w = sw;
|
|
70
|
+
for (const it of items) {
|
|
71
|
+
if (it?.ty === 'fl')
|
|
72
|
+
f = hex(it.c);
|
|
73
|
+
if (it?.ty === 'st') {
|
|
74
|
+
s = hex(it.c);
|
|
75
|
+
w = Number(it.w?.k) || 2;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const paint = `fill="${f}"${s !== 'none' ? ` stroke="${s}" stroke-width="${w}"` : ''}`;
|
|
79
|
+
return items
|
|
80
|
+
.map((it) => {
|
|
81
|
+
if (it?.ty === 'gr')
|
|
82
|
+
return `<g>${shapes(it.it || [], f, s, w)}</g>`;
|
|
83
|
+
if (it?.ty === 'el') {
|
|
84
|
+
const [cx, cy] = arr(it.p?.k ?? [0, 0]);
|
|
85
|
+
const [sx, sy] = arr(it.s?.k ?? [10, 10]);
|
|
86
|
+
return `<ellipse cx="${cx}" cy="${cy}" rx="${sx / 2}" ry="${(sy ?? sx) / 2}" ${paint}/>`;
|
|
87
|
+
}
|
|
88
|
+
if (it?.ty === 'rc') {
|
|
89
|
+
const [cx, cy] = arr(it.p?.k ?? [0, 0]);
|
|
90
|
+
const [sx, sy] = arr(it.s?.k ?? [10, 10]);
|
|
91
|
+
return `<rect x="${cx - sx / 2}" y="${cy - sy / 2}" width="${sx}" height="${sy}" rx="${Number(it.r?.k) || 0}" ${paint}/>`;
|
|
92
|
+
}
|
|
93
|
+
if (it?.ty === 'sh') {
|
|
94
|
+
const k = it.ks?.k;
|
|
95
|
+
const v = k?.v || [];
|
|
96
|
+
if (!v.length)
|
|
97
|
+
return '';
|
|
98
|
+
const i = k.i || [];
|
|
99
|
+
const o = k.o || [];
|
|
100
|
+
let dd = `M${v[0][0]} ${v[0][1]}`;
|
|
101
|
+
for (let n = 1; n < v.length + (k.c ? 1 : 0); n++) {
|
|
102
|
+
const a = v[n - 1];
|
|
103
|
+
const b = v[n % v.length];
|
|
104
|
+
const c1 = [a[0] + (o[n - 1]?.[0] || 0), a[1] + (o[n - 1]?.[1] || 0)];
|
|
105
|
+
const c2 = [b[0] + (i[n % v.length]?.[0] || 0), b[1] + (i[n % v.length]?.[1] || 0)];
|
|
106
|
+
dd += ` C${c1[0]} ${c1[1]} ${c2[0]} ${c2[1]} ${b[0]} ${b[1]}`;
|
|
107
|
+
}
|
|
108
|
+
return `<path d="${dd}${k.c ? 'Z' : ''}" ${paint}/>`;
|
|
109
|
+
}
|
|
110
|
+
return '';
|
|
111
|
+
})
|
|
112
|
+
.join('');
|
|
113
|
+
}
|
|
114
|
+
/** Render the simple vector layers of a Lottie JSON as an SVG string (one `<g data-layer>` per layer, top layer last) (9.2). */
|
|
115
|
+
function lottieToSvg(json) {
|
|
116
|
+
const d = typeof json === 'string' ? JSON.parse(json) : json;
|
|
117
|
+
const w = Number(d?.w) || 100;
|
|
118
|
+
const h = Number(d?.h) || 100;
|
|
119
|
+
const ls = Array.isArray(d?.layers) ? d.layers : [];
|
|
120
|
+
const groups = ls
|
|
121
|
+
.map((L, i) => ({ L, i }))
|
|
122
|
+
.reverse()
|
|
123
|
+
.map(({ L, i }) => `<g data-layer="${i}"><g class="usa-lt-inner">${shapes(L?.shapes || [], '#000', 'none', 0)}</g></g>`)
|
|
124
|
+
.join('');
|
|
125
|
+
return `<svg viewBox="0 0 ${w} ${h}" width="${w}" height="${h}" aria-hidden="true">${groups}</svg>`;
|
|
126
|
+
}
|
|
127
|
+
/** Wire hover / press / click / enter on `el` to a Rive state machine's inputs: map { hover: 'isHover', click: 'fire' } (9.2). */
|
|
128
|
+
function riveInputs(instance, stateMachine, el, map) {
|
|
129
|
+
const inputs = (instance.stateMachineInputs(stateMachine) || []);
|
|
130
|
+
const get = (n) => inputs.find((i) => i.name === n);
|
|
131
|
+
const set = (n, v) => {
|
|
132
|
+
const i = get(n);
|
|
133
|
+
if (!i)
|
|
134
|
+
return;
|
|
135
|
+
// Rive StateMachineInputType: 58 = trigger (fire on true), 59 = boolean
|
|
136
|
+
if (i.type === 58 && typeof i.fire === 'function') {
|
|
137
|
+
if (v)
|
|
138
|
+
i.fire();
|
|
139
|
+
}
|
|
140
|
+
else
|
|
141
|
+
i.value = v;
|
|
142
|
+
};
|
|
143
|
+
const offs = [];
|
|
144
|
+
const on = (t, fn) => {
|
|
145
|
+
el.addEventListener(t, fn);
|
|
146
|
+
offs.push(() => el.removeEventListener(t, fn));
|
|
147
|
+
};
|
|
148
|
+
if (map.hover)
|
|
149
|
+
(on('pointerenter', () => set(map.hover, true)), on('pointerleave', () => set(map.hover, false)));
|
|
150
|
+
if (map.press)
|
|
151
|
+
(on('pointerdown', () => set(map.press, true)), on('pointerup', () => set(map.press, false)));
|
|
152
|
+
if (map.click)
|
|
153
|
+
on('click', () => set(map.click, true));
|
|
154
|
+
if (map.enter && typeof IntersectionObserver !== 'undefined') {
|
|
155
|
+
const io = new IntersectionObserver((es) => es.forEach((e) => set(map.enter, e.isIntersecting)));
|
|
156
|
+
io.observe(el);
|
|
157
|
+
offs.push(() => io.disconnect());
|
|
158
|
+
}
|
|
159
|
+
return () => offs.splice(0).forEach((f) => f());
|
|
160
|
+
}
|
|
161
|
+
const LOTTIE_FX = [
|
|
162
|
+
{
|
|
163
|
+
name: 'lottie-play',
|
|
164
|
+
kind: 'attention',
|
|
165
|
+
description: 'Replays the Lottie keyframes stored on an element by <usa-lottie> (or a `json` option) once.',
|
|
166
|
+
defaults: {},
|
|
167
|
+
run: (el, o, ctx) => {
|
|
168
|
+
if (ctx.reduced)
|
|
169
|
+
return;
|
|
170
|
+
const host = el.closest('usa-lottie');
|
|
171
|
+
if (host?.play)
|
|
172
|
+
return void host.play();
|
|
173
|
+
if (!o.json)
|
|
174
|
+
return;
|
|
175
|
+
const m = lottieToKeyframes(o.json);
|
|
176
|
+
return Promise.all(m.layers.map((l) => ctx.animate(el, l.keyframes, { duration: m.duration })?.finished.catch(() => undefined))).then(() => undefined);
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
name: 'icon-pop',
|
|
181
|
+
kind: 'click',
|
|
182
|
+
description: 'A sticker-like pop with a ring burst, for icons (`color`).',
|
|
183
|
+
defaults: { color: '#f43f5e', duration: 500 },
|
|
184
|
+
run: (el, o, ctx) => {
|
|
185
|
+
if (ctx.reduced)
|
|
186
|
+
return;
|
|
187
|
+
if (getComputedStyle(el).position === 'static') {
|
|
188
|
+
const prev = el.style.position;
|
|
189
|
+
el.style.position = 'relative';
|
|
190
|
+
ctx.onCleanup(() => (el.style.position = prev));
|
|
191
|
+
}
|
|
192
|
+
const ring = document.createElement('span');
|
|
193
|
+
ring.setAttribute('aria-hidden', 'true');
|
|
194
|
+
Object.assign(ring.style, { position: 'absolute', inset: '0', borderRadius: '50%', border: `2px solid ${o.color}`, pointerEvents: 'none' });
|
|
195
|
+
el.appendChild(ring);
|
|
196
|
+
ctx.onCleanup(() => ring.remove());
|
|
197
|
+
const a = ctx.animate(el, [{ transform: 'scale(1)' }, { transform: 'scale(.8)', offset: 0.2 }, { transform: 'scale(1.2)', offset: 0.55 }, { transform: 'scale(1)' }], { duration: o.duration, easing: 'cubic-bezier(.3,1.5,.5,1)' });
|
|
198
|
+
const b = ctx.animate(ring, [{ transform: 'scale(.6)', opacity: 1 }, { transform: 'scale(1.8)', opacity: 0 }], { duration: o.duration, easing: 'ease-out' });
|
|
199
|
+
const end = () => ring.remove();
|
|
200
|
+
return Promise.all([a?.finished.catch(() => undefined), b?.finished.catch(() => undefined)]).then(end, end);
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
];
|
|
204
|
+
/** Register lottie-play and icon-pop (9.2). */
|
|
205
|
+
function registerLottiePack() {
|
|
206
|
+
registerEffects(LOTTIE_FX);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export { LOTTIE_FX, lottieToKeyframes, lottieToSvg, registerLottiePack, riveInputs };
|
|
210
|
+
//# sourceMappingURL=fx-lottie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fx-lottie.js","sources":["../../src/components/fx2/lottie.ts"],"sourcesContent":["/**\n * 9.2 — Lottie import (`motionary/fx/lottie`, also `motionary/components/fx-lottie`).\n *\n * `lottieToKeyframes(json)` converts the layer transforms of a Lottie\n * (bodymovin) JSON — position `p`, scale `s`, rotation `r`, opacity `o`\n * (static or keyframed) — into WAAPI keyframes per layer plus the duration\n * (`op − ip` frames at `fr` fps), so a designer's After Effects motion runs\n * on Motionary's clock without lottie-web. `lottieToSvg(json)` renders the\n * simple vector shapes (ellipse `el`, rect `rc`, path `sh`, fill `fl`,\n * stroke `st`) as SVG groups, one per layer. `riveInputs(instance, el, map)`\n * wires Motionary-style triggers (hover / press / click / enter) to the\n * boolean / trigger inputs of a Rive state machine you created with the\n * Rive runtime.\n *\n * Effects: `lottie-play` (attention) plays the keyframes stored on an\n * element by `<usa-lottie>`; `icon-pop` (click) a sticker-like pop with a\n * ring burst for icons. Reduced motion: no motion.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\n\ntype Prop = { a?: number; k: any };\nexport interface LottieLayerMotion {\n name: string;\n index: number;\n keyframes: Keyframe[];\n anchor: [number, number];\n}\nexport interface LottieMotion {\n width: number;\n height: number;\n duration: number;\n layers: LottieLayerMotion[];\n}\n\nconst arr = (v: any): number[] => (Array.isArray(v) ? v.map(Number) : [Number(v)]);\n/** Frames (t) → values for one transform property (static props give one key at t = ip) (9.2). */\nfunction track(p: Prop | undefined, ip: number): { t: number; v: number[] }[] {\n if (!p) return [];\n if (!p.a || !Array.isArray(p.k) || typeof p.k[0] !== 'object') return [{ t: ip, v: arr(p.k) }];\n return (p.k as any[]).filter((k) => k && k.s != null).map((k) => ({ t: Number(k.t), v: arr(k.s) }));\n}\nconst at = (tr: { t: number; v: number[] }[], t: number): number[] | undefined => {\n if (!tr.length) return undefined;\n if (t <= tr[0].t) return tr[0].v;\n for (let i = 1; i < tr.length; i++)\n if (t <= tr[i].t) {\n const a = tr[i - 1];\n const b = tr[i];\n const u = b.t === a.t ? 1 : (t - a.t) / (b.t - a.t);\n return a.v.map((x, j) => x + ((b.v[j] ?? x) - x) * u);\n }\n return tr[tr.length - 1].v;\n};\nconst r2 = (n: number) => Math.round(n * 100) / 100;\n\n/** Lottie JSON → WAAPI keyframes per layer + duration (ms) (9.2). */\nexport function lottieToKeyframes(json: any): LottieMotion {\n const d = typeof json === 'string' ? JSON.parse(json) : json;\n const fr = Number(d?.fr) || 30;\n const ip = Number(d?.ip) || 0;\n const op = Number(d?.op) || ip + fr;\n const span = Math.max(1, op - ip);\n const layers: LottieLayerMotion[] = (Array.isArray(d?.layers) ? d.layers : []).map((L: any, index: number) => {\n const ks = L?.ks || {};\n const tracks = { p: track(ks.p, ip), s: track(ks.s, ip), r: track(ks.r, ip), o: track(ks.o, ip) };\n const anchor = (arr(ks.a?.k ?? [0, 0]).slice(0, 2) as [number, number]) || [0, 0];\n const times = Array.from(new Set([ip, op, ...Object.values(tracks).flat().map((k) => k.t)])).filter((t) => t >= ip && t <= op).sort((a, b) => a - b);\n const keyframes: Keyframe[] = times.map((t) => {\n const p = at(tracks.p, t);\n const s = at(tracks.s, t);\n const r = at(tracks.r, t);\n const o = at(tracks.o, t);\n // Lottie order: move the anchor to the position, rotate + scale around the anchor\n const pp = p || anchor;\n const tf: string[] = [`translate(${r2(pp[0])}px, ${r2(pp[1] ?? 0)}px)`];\n if (r) tf.push(`rotate(${r2(r[0])}deg)`);\n if (s) tf.push(`scale(${r2(s[0] / 100)}, ${r2((s[1] ?? s[0]) / 100)})`);\n tf.push(`translate(${r2(-anchor[0])}px, ${r2(-anchor[1])}px)`);\n const k: Keyframe = { offset: r2((t - ip) / span), transform: tf.join(' ') };\n if (o) k.opacity = r2(o[0] / 100);\n return k;\n });\n return { name: String(L?.nm ?? `layer ${index + 1}`), index, keyframes, anchor };\n });\n return { width: Number(d?.w) || 100, height: Number(d?.h) || 100, duration: Math.round((span / fr) * 1000), layers };\n}\n\nconst hex = (c: any): string => {\n const v = arr(c?.k ?? c).slice(0, 3).map((x) => Math.round(Math.min(1, Math.max(0, x)) * 255));\n return `#${v.map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n};\nfunction shapes(items: any[], fill: string, stroke: string, sw: number): string {\n let f = fill;\n let s = stroke;\n let w = sw;\n for (const it of items) {\n if (it?.ty === 'fl') f = hex(it.c);\n if (it?.ty === 'st') {\n s = hex(it.c);\n w = Number(it.w?.k) || 2;\n }\n }\n const paint = `fill=\"${f}\"${s !== 'none' ? ` stroke=\"${s}\" stroke-width=\"${w}\"` : ''}`;\n return items\n .map((it) => {\n if (it?.ty === 'gr') return `<g>${shapes(it.it || [], f, s, w)}</g>`;\n if (it?.ty === 'el') {\n const [cx, cy] = arr(it.p?.k ?? [0, 0]);\n const [sx, sy] = arr(it.s?.k ?? [10, 10]);\n return `<ellipse cx=\"${cx}\" cy=\"${cy}\" rx=\"${sx / 2}\" ry=\"${(sy ?? sx) / 2}\" ${paint}/>`;\n }\n if (it?.ty === 'rc') {\n const [cx, cy] = arr(it.p?.k ?? [0, 0]);\n const [sx, sy] = arr(it.s?.k ?? [10, 10]);\n return `<rect x=\"${cx - sx / 2}\" y=\"${cy - sy / 2}\" width=\"${sx}\" height=\"${sy}\" rx=\"${Number(it.r?.k) || 0}\" ${paint}/>`;\n }\n if (it?.ty === 'sh') {\n const k = it.ks?.k;\n const v: number[][] = k?.v || [];\n if (!v.length) return '';\n const i: number[][] = k.i || [];\n const o: number[][] = k.o || [];\n let dd = `M${v[0][0]} ${v[0][1]}`;\n for (let n = 1; n < v.length + (k.c ? 1 : 0); n++) {\n const a = v[n - 1];\n const b = v[n % v.length];\n const c1 = [a[0] + (o[n - 1]?.[0] || 0), a[1] + (o[n - 1]?.[1] || 0)];\n const c2 = [b[0] + (i[n % v.length]?.[0] || 0), b[1] + (i[n % v.length]?.[1] || 0)];\n dd += ` C${c1[0]} ${c1[1]} ${c2[0]} ${c2[1]} ${b[0]} ${b[1]}`;\n }\n return `<path d=\"${dd}${k.c ? 'Z' : ''}\" ${paint}/>`;\n }\n return '';\n })\n .join('');\n}\n\n/** Render the simple vector layers of a Lottie JSON as an SVG string (one `<g data-layer>` per layer, top layer last) (9.2). */\nexport function lottieToSvg(json: any): string {\n const d = typeof json === 'string' ? JSON.parse(json) : json;\n const w = Number(d?.w) || 100;\n const h = Number(d?.h) || 100;\n const ls: any[] = Array.isArray(d?.layers) ? d.layers : [];\n const groups = ls\n .map((L, i) => ({ L, i }))\n .reverse()\n .map(({ L, i }) => `<g data-layer=\"${i}\"><g class=\"usa-lt-inner\">${shapes(L?.shapes || [], '#000', 'none', 0)}</g></g>`)\n .join('');\n return `<svg viewBox=\"0 0 ${w} ${h}\" width=\"${w}\" height=\"${h}\" aria-hidden=\"true\">${groups}</svg>`;\n}\n\n/** Wire hover / press / click / enter on `el` to a Rive state machine's inputs: map { hover: 'isHover', click: 'fire' } (9.2). */\nexport function riveInputs(instance: { stateMachineInputs(sm: string): any[] }, stateMachine: string, el: HTMLElement, map: Partial<Record<'hover' | 'press' | 'click' | 'enter', string>>): () => void {\n const inputs = (instance.stateMachineInputs(stateMachine) || []) as { name: string; type?: number; value?: boolean; fire?: () => void }[];\n const get = (n?: string) => inputs.find((i) => i.name === n);\n const set = (n: string | undefined, v: boolean) => {\n const i = get(n);\n if (!i) return;\n // Rive StateMachineInputType: 58 = trigger (fire on true), 59 = boolean\n if (i.type === 58 && typeof i.fire === 'function') {\n if (v) i.fire();\n } else i.value = v;\n };\n const offs: (() => void)[] = [];\n const on = (t: string, fn: (e: Event) => void) => {\n el.addEventListener(t, fn);\n offs.push(() => el.removeEventListener(t, fn));\n };\n if (map.hover) (on('pointerenter', () => set(map.hover, true)), on('pointerleave', () => set(map.hover, false)));\n if (map.press) (on('pointerdown', () => set(map.press, true)), on('pointerup', () => set(map.press, false)));\n if (map.click) on('click', () => set(map.click, true));\n if (map.enter && typeof IntersectionObserver !== 'undefined') {\n const io = new IntersectionObserver((es) => es.forEach((e) => set(map.enter, e.isIntersecting)));\n io.observe(el);\n offs.push(() => io.disconnect());\n }\n return () => offs.splice(0).forEach((f) => f());\n}\n\nexport const LOTTIE_FX: EffectDefinition[] = [\n {\n name: 'lottie-play',\n kind: 'attention',\n description: 'Replays the Lottie keyframes stored on an element by <usa-lottie> (or a `json` option) once.',\n defaults: {},\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (ctx.reduced) return;\n const host = el.closest('usa-lottie') as (HTMLElement & { play?: () => void }) | null;\n if (host?.play) return void host.play();\n if (!o.json) return;\n const m = lottieToKeyframes(o.json);\n return Promise.all(m.layers.map((l) => ctx.animate(el, l.keyframes, { duration: m.duration })?.finished.catch(() => undefined))).then(() => undefined);\n },\n },\n {\n name: 'icon-pop',\n kind: 'click',\n description: 'A sticker-like pop with a ring burst, for icons (`color`).',\n defaults: { color: '#f43f5e', duration: 500 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (ctx.reduced) return;\n if (getComputedStyle(el).position === 'static') {\n const prev = el.style.position;\n el.style.position = 'relative';\n ctx.onCleanup(() => (el.style.position = prev));\n }\n const ring = document.createElement('span');\n ring.setAttribute('aria-hidden', 'true');\n Object.assign(ring.style, { position: 'absolute', inset: '0', borderRadius: '50%', border: `2px solid ${o.color}`, pointerEvents: 'none' });\n el.appendChild(ring);\n ctx.onCleanup(() => ring.remove());\n const a = ctx.animate(el, [{ transform: 'scale(1)' }, { transform: 'scale(.8)', offset: 0.2 }, { transform: 'scale(1.2)', offset: 0.55 }, { transform: 'scale(1)' }], { duration: o.duration, easing: 'cubic-bezier(.3,1.5,.5,1)' });\n const b = ctx.animate(ring, [{ transform: 'scale(.6)', opacity: 1 }, { transform: 'scale(1.8)', opacity: 0 }], { duration: o.duration, easing: 'ease-out' });\n const end = () => ring.remove();\n return Promise.all([a?.finished.catch(() => undefined), b?.finished.catch(() => undefined)]).then(end, end);\n },\n },\n];\n\n/** Register lottie-play and icon-pop (9.2). */\nexport function registerLottiePack(): void {\n registerEffects(LOTTIE_FX);\n}\n"],"names":[],"mappings":"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"}
|
package/dist/components/fx2.cjs
CHANGED
|
@@ -27,6 +27,7 @@ var components_fxSurface = require('./fx-surface.cjs');
|
|
|
27
27
|
var components_fxGesture = require('./fx-gesture.cjs');
|
|
28
28
|
var components_fxSpatial = require('./fx-spatial.cjs');
|
|
29
29
|
var components_fxCinema = require('./fx-cinema.cjs');
|
|
30
|
+
var components_fxLottie = require('./fx-lottie.cjs');
|
|
30
31
|
require('../chunks/registry-BVklOepd.cjs');
|
|
31
32
|
require('../chunks/base-DoRUZBy-.cjs');
|
|
32
33
|
require('../chunks/generative-BHIj-NU0.cjs');
|
|
@@ -61,6 +62,7 @@ const EFFECT_PACKS = {
|
|
|
61
62
|
gesture3: components_fxGesture.GESTURE3_FX,
|
|
62
63
|
spatial: components_fxSpatial.SPATIAL_FX,
|
|
63
64
|
cinema: components_fxCinema.CINEMA_FX,
|
|
65
|
+
lottie: components_fxLottie.LOTTIE_FX,
|
|
64
66
|
};
|
|
65
67
|
/** Register every 6.x effect pack (idempotent). */
|
|
66
68
|
function registerEffectPacks() {
|
|
@@ -90,6 +92,7 @@ function registerEffectPacks() {
|
|
|
90
92
|
components_fxGesture.registerGesture3Pack();
|
|
91
93
|
components_fxSpatial.registerSpatialPack();
|
|
92
94
|
components_fxCinema.registerCinemaPack();
|
|
95
|
+
components_fxLottie.registerLottiePack();
|
|
93
96
|
}
|
|
94
97
|
|
|
95
98
|
exports.EFFECT_PACK_FORMAT = manifest.EFFECT_PACK_FORMAT;
|
|
@@ -189,6 +192,11 @@ exports.CAMERA_MOVES = components_fxCinema.CAMERA_MOVES;
|
|
|
189
192
|
exports.CINEMA_FX = components_fxCinema.CINEMA_FX;
|
|
190
193
|
exports.cameraFrame = components_fxCinema.cameraFrame;
|
|
191
194
|
exports.registerCinemaPack = components_fxCinema.registerCinemaPack;
|
|
195
|
+
exports.LOTTIE_FX = components_fxLottie.LOTTIE_FX;
|
|
196
|
+
exports.lottieToKeyframes = components_fxLottie.lottieToKeyframes;
|
|
197
|
+
exports.lottieToSvg = components_fxLottie.lottieToSvg;
|
|
198
|
+
exports.registerLottiePack = components_fxLottie.registerLottiePack;
|
|
199
|
+
exports.riveInputs = components_fxLottie.riveInputs;
|
|
192
200
|
exports.EFFECT_PACKS = EFFECT_PACKS;
|
|
193
201
|
exports.registerEffectPacks = registerEffectPacks;
|
|
194
202
|
//# sourceMappingURL=fx2.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fx2.cjs","sources":["../../src/components/fx2/index.ts"],"sourcesContent":["/**\n * The 6.x effect packs, one entry each (`motionary/components/fx-gpu`, …) so\n * their size budgets stay separate. This module (`registerFx2()`) registers\n * them all — used by dist/widgets.umd.js and the showcase.\n */\nimport type { EffectDefinition } from '../fx/registry';\nexport { EFFECT_PACK_FORMAT, packManifest, validateManifest, loadEffectPack } from './manifest';\nexport type { EffectPackManifest } from './manifest';\nimport { GPU_FX, registerGpuPack } from './gpu';\nimport { TEXT3_FX, registerTextPack, splitChars } from './text3';\nimport { LIGHT_FX, registerLightPack, trackPointer } from './light';\nimport { DEPTH3_FX, register3dPack } from './depth3';\nimport { MORPH2_FX, registerMorphPack, samplePath, pointsToPath } from './morph2';\nimport { TRANSITIONS2_FX, registerTransitionsPack, pageTransition, crossDocumentTransitions } from './transitions2';\nimport { WEATHER_FX, registerWeatherPack, skyAt } from './weather';\nimport { PHYSICS2_FX, registerPhysicsPack, VerletWorld } from './physics2';\nimport { FOCUS_FX, registerFocusPack } from './focus';\nimport { MUSIC_FX, registerMusicPack, syntheticSample, musicSample } from './music';\nimport { CHART_FX, registerChartPack, parseFigure } from './chart';\nimport { SHOP_FX, registerShopPack, arcPath } from './shop';\nimport { SOCIAL_FX, registerSocialPack, fanAngles } from './social';\nimport { GAME_FX, registerGamePack, throwPath } from './game';\nimport { GEO_FX, registerGeoPack, routeLength } from './geo';\nimport { FORM_FX, registerFormPack, shakeFrames } from './form';\nimport { AI_FX, registerAiPack, splitWords } from './ai';\nimport { FESTIVAL_FX, registerFestivalPack, sparkVectors } from './festival';\nimport { RETRO_FX, registerRetroPack, pixelSteps } from './retro2';\nimport { ORGANIC_FX, registerOrganicPack, blobRadius } from './organic';\nimport { CYBER_FX, registerCyberPack, decodeFrame } from './cyber';\nimport { PAPER_FX, registerPaperPack, roughLine, paperRandom } from './paper';\nimport { SURFACE_FX, registerSurfacePack, SURFACE_THEMES, applySurfaceTheme } from './themefx';\nimport { GESTURE3_FX, registerGesture3Pack, pinchScale, pinchAngle, orientationToTilt } from './gesture3';\nimport { SPATIAL_FX, registerSpatialPack, yawToOffset, xrSupport } from './spatial';\nimport { CINEMA_FX, registerCinemaPack, cameraFrame, CAMERA_MOVES } from './cinema';\n\nexport { GPU_FX, registerGpuPack, TEXT3_FX, registerTextPack, splitChars };\nexport { shaderBackground, supportsWebGL2, fieldFallback, GLSL_HEAD } from './gl';\nexport { supportsWebGPU, glslToWgsl, wgslModule, webgpuBackground, WGSL_HEAD } from './webgpu';\nexport type { ShaderSpec } from './gl';\n\nexport { LIGHT_FX, registerLightPack, trackPointer };\n\nexport { DEPTH3_FX, register3dPack };\n\nexport { MORPH2_FX, registerMorphPack, samplePath, pointsToPath };\n\nexport { TRANSITIONS2_FX, registerTransitionsPack, pageTransition, crossDocumentTransitions };\n\nexport { WEATHER_FX, registerWeatherPack, skyAt };\n\nexport { PHYSICS2_FX, registerPhysicsPack, VerletWorld };\n\nexport { FOCUS_FX, registerFocusPack };\n\nexport { MUSIC_FX, registerMusicPack, syntheticSample, musicSample };\n\nexport { CHART_FX, registerChartPack, parseFigure };\n\nexport { SHOP_FX, registerShopPack, arcPath };\n\nexport { SOCIAL_FX, registerSocialPack, fanAngles };\n\nexport { GAME_FX, registerGamePack, throwPath };\n\nexport { GEO_FX, registerGeoPack, routeLength };\n\nexport { FORM_FX, registerFormPack, shakeFrames };\n\nexport { AI_FX, registerAiPack, splitWords };\n\nexport { FESTIVAL_FX, registerFestivalPack, sparkVectors };\n\nexport { RETRO_FX, registerRetroPack, pixelSteps };\n\nexport { ORGANIC_FX, registerOrganicPack, blobRadius };\n\nexport { CYBER_FX, registerCyberPack, decodeFrame };\n\nexport { PAPER_FX, registerPaperPack, roughLine, paperRandom };\n\nexport { SURFACE_FX, registerSurfacePack, SURFACE_THEMES, applySurfaceTheme };\n\nexport { GESTURE3_FX, registerGesture3Pack, pinchScale, pinchAngle, orientationToTilt };\n\nexport { SPATIAL_FX, registerSpatialPack, yawToOffset, xrSupport };\n\nexport { CINEMA_FX, registerCinemaPack, cameraFrame, CAMERA_MOVES };\n\n/** The 6.x effect packs by name. */\nexport const EFFECT_PACKS: Record<string, EffectDefinition[]> = {\n gpu: GPU_FX,\n text: TEXT3_FX,\n light: LIGHT_FX,\n depth: DEPTH3_FX,\n morph: MORPH2_FX,\n transitions: TRANSITIONS2_FX,\n weather: WEATHER_FX,\n physics: PHYSICS2_FX,\n focus: FOCUS_FX,\n music: MUSIC_FX,\n chart: CHART_FX,\n shop: SHOP_FX,\n social: SOCIAL_FX,\n game: GAME_FX,\n geo: GEO_FX,\n form: FORM_FX,\n ai: AI_FX,\n festival: FESTIVAL_FX,\n retro: RETRO_FX,\n organic: ORGANIC_FX,\n cyber: CYBER_FX,\n paper: PAPER_FX,\n surface: SURFACE_FX,\n gesture3: GESTURE3_FX,\n spatial: SPATIAL_FX,\n cinema: CINEMA_FX,\n};\n\n/** Register every 6.x effect pack (idempotent). */\nexport function registerEffectPacks(): void {\n registerGpuPack();\n registerTextPack();\n registerLightPack();\n register3dPack();\n registerMorphPack();\n registerTransitionsPack();\n registerWeatherPack();\n registerPhysicsPack();\n registerFocusPack();\n registerMusicPack();\n registerChartPack();\n registerShopPack();\n registerSocialPack();\n registerGamePack();\n registerGeoPack();\n registerFormPack();\n registerAiPack();\n registerFestivalPack();\n registerRetroPack();\n registerOrganicPack();\n registerCyberPack();\n registerPaperPack();\n registerSurfacePack();\n registerGesture3Pack();\n registerSpatialPack();\n registerCinemaPack();\n}\n\n\n"],"names":["GPU_FX","TEXT3_FX","LIGHT_FX","DEPTH3_FX","MORPH2_FX","TRANSITIONS2_FX","WEATHER_FX","PHYSICS2_FX","FOCUS_FX","MUSIC_FX","CHART_FX","SHOP_FX","SOCIAL_FX","GAME_FX","GEO_FX","FORM_FX","AI_FX","FESTIVAL_FX","RETRO_FX","ORGANIC_FX","CYBER_FX","PAPER_FX","SURFACE_FX","GESTURE3_FX","SPATIAL_FX","CINEMA_FX","registerGpuPack","registerTextPack","registerLightPack","register3dPack","registerMorphPack","registerTransitionsPack","registerWeatherPack","registerPhysicsPack","registerFocusPack","registerMusicPack","registerChartPack","registerShopPack","registerSocialPack","registerGamePack","registerGeoPack","registerFormPack","registerAiPack","registerFestivalPack","registerRetroPack","registerOrganicPack","registerCyberPack","registerPaperPack","registerSurfacePack","registerGesture3Pack","registerSpatialPack","registerCinemaPack"],"mappings":"
|
|
1
|
+
{"version":3,"file":"fx2.cjs","sources":["../../src/components/fx2/index.ts"],"sourcesContent":["/**\n * The 6.x effect packs, one entry each (`motionary/components/fx-gpu`, …) so\n * their size budgets stay separate. This module (`registerFx2()`) registers\n * them all — used by dist/widgets.umd.js and the showcase.\n */\nimport type { EffectDefinition } from '../fx/registry';\nexport { EFFECT_PACK_FORMAT, packManifest, validateManifest, loadEffectPack } from './manifest';\nexport type { EffectPackManifest } from './manifest';\nimport { GPU_FX, registerGpuPack } from './gpu';\nimport { TEXT3_FX, registerTextPack, splitChars } from './text3';\nimport { LIGHT_FX, registerLightPack, trackPointer } from './light';\nimport { DEPTH3_FX, register3dPack } from './depth3';\nimport { MORPH2_FX, registerMorphPack, samplePath, pointsToPath } from './morph2';\nimport { TRANSITIONS2_FX, registerTransitionsPack, pageTransition, crossDocumentTransitions } from './transitions2';\nimport { WEATHER_FX, registerWeatherPack, skyAt } from './weather';\nimport { PHYSICS2_FX, registerPhysicsPack, VerletWorld } from './physics2';\nimport { FOCUS_FX, registerFocusPack } from './focus';\nimport { MUSIC_FX, registerMusicPack, syntheticSample, musicSample } from './music';\nimport { CHART_FX, registerChartPack, parseFigure } from './chart';\nimport { SHOP_FX, registerShopPack, arcPath } from './shop';\nimport { SOCIAL_FX, registerSocialPack, fanAngles } from './social';\nimport { GAME_FX, registerGamePack, throwPath } from './game';\nimport { GEO_FX, registerGeoPack, routeLength } from './geo';\nimport { FORM_FX, registerFormPack, shakeFrames } from './form';\nimport { AI_FX, registerAiPack, splitWords } from './ai';\nimport { FESTIVAL_FX, registerFestivalPack, sparkVectors } from './festival';\nimport { RETRO_FX, registerRetroPack, pixelSteps } from './retro2';\nimport { ORGANIC_FX, registerOrganicPack, blobRadius } from './organic';\nimport { CYBER_FX, registerCyberPack, decodeFrame } from './cyber';\nimport { PAPER_FX, registerPaperPack, roughLine, paperRandom } from './paper';\nimport { SURFACE_FX, registerSurfacePack, SURFACE_THEMES, applySurfaceTheme } from './themefx';\nimport { GESTURE3_FX, registerGesture3Pack, pinchScale, pinchAngle, orientationToTilt } from './gesture3';\nimport { SPATIAL_FX, registerSpatialPack, yawToOffset, xrSupport } from './spatial';\nimport { CINEMA_FX, registerCinemaPack, cameraFrame, CAMERA_MOVES } from './cinema';\nimport { LOTTIE_FX, registerLottiePack, lottieToKeyframes, lottieToSvg, riveInputs } from './lottie';\n\nexport { GPU_FX, registerGpuPack, TEXT3_FX, registerTextPack, splitChars };\nexport { shaderBackground, supportsWebGL2, fieldFallback, GLSL_HEAD } from './gl';\nexport { supportsWebGPU, glslToWgsl, wgslModule, webgpuBackground, WGSL_HEAD } from './webgpu';\nexport type { ShaderSpec } from './gl';\n\nexport { LIGHT_FX, registerLightPack, trackPointer };\n\nexport { DEPTH3_FX, register3dPack };\n\nexport { MORPH2_FX, registerMorphPack, samplePath, pointsToPath };\n\nexport { TRANSITIONS2_FX, registerTransitionsPack, pageTransition, crossDocumentTransitions };\n\nexport { WEATHER_FX, registerWeatherPack, skyAt };\n\nexport { PHYSICS2_FX, registerPhysicsPack, VerletWorld };\n\nexport { FOCUS_FX, registerFocusPack };\n\nexport { MUSIC_FX, registerMusicPack, syntheticSample, musicSample };\n\nexport { CHART_FX, registerChartPack, parseFigure };\n\nexport { SHOP_FX, registerShopPack, arcPath };\n\nexport { SOCIAL_FX, registerSocialPack, fanAngles };\n\nexport { GAME_FX, registerGamePack, throwPath };\n\nexport { GEO_FX, registerGeoPack, routeLength };\n\nexport { FORM_FX, registerFormPack, shakeFrames };\n\nexport { AI_FX, registerAiPack, splitWords };\n\nexport { FESTIVAL_FX, registerFestivalPack, sparkVectors };\n\nexport { RETRO_FX, registerRetroPack, pixelSteps };\n\nexport { ORGANIC_FX, registerOrganicPack, blobRadius };\n\nexport { CYBER_FX, registerCyberPack, decodeFrame };\n\nexport { PAPER_FX, registerPaperPack, roughLine, paperRandom };\n\nexport { SURFACE_FX, registerSurfacePack, SURFACE_THEMES, applySurfaceTheme };\n\nexport { GESTURE3_FX, registerGesture3Pack, pinchScale, pinchAngle, orientationToTilt };\n\nexport { SPATIAL_FX, registerSpatialPack, yawToOffset, xrSupport };\n\nexport { CINEMA_FX, registerCinemaPack, cameraFrame, CAMERA_MOVES };\n\nexport { LOTTIE_FX, registerLottiePack, lottieToKeyframes, lottieToSvg, riveInputs };\n\n/** The 6.x effect packs by name. */\nexport const EFFECT_PACKS: Record<string, EffectDefinition[]> = {\n gpu: GPU_FX,\n text: TEXT3_FX,\n light: LIGHT_FX,\n depth: DEPTH3_FX,\n morph: MORPH2_FX,\n transitions: TRANSITIONS2_FX,\n weather: WEATHER_FX,\n physics: PHYSICS2_FX,\n focus: FOCUS_FX,\n music: MUSIC_FX,\n chart: CHART_FX,\n shop: SHOP_FX,\n social: SOCIAL_FX,\n game: GAME_FX,\n geo: GEO_FX,\n form: FORM_FX,\n ai: AI_FX,\n festival: FESTIVAL_FX,\n retro: RETRO_FX,\n organic: ORGANIC_FX,\n cyber: CYBER_FX,\n paper: PAPER_FX,\n surface: SURFACE_FX,\n gesture3: GESTURE3_FX,\n spatial: SPATIAL_FX,\n cinema: CINEMA_FX,\n lottie: LOTTIE_FX,\n};\n\n/** Register every 6.x effect pack (idempotent). */\nexport function registerEffectPacks(): void {\n registerGpuPack();\n registerTextPack();\n registerLightPack();\n register3dPack();\n registerMorphPack();\n registerTransitionsPack();\n registerWeatherPack();\n registerPhysicsPack();\n registerFocusPack();\n registerMusicPack();\n registerChartPack();\n registerShopPack();\n registerSocialPack();\n registerGamePack();\n registerGeoPack();\n registerFormPack();\n registerAiPack();\n registerFestivalPack();\n registerRetroPack();\n registerOrganicPack();\n registerCyberPack();\n registerPaperPack();\n registerSurfacePack();\n registerGesture3Pack();\n registerSpatialPack();\n registerCinemaPack();\n registerLottiePack();\n}\n\n\n"],"names":["GPU_FX","TEXT3_FX","LIGHT_FX","DEPTH3_FX","MORPH2_FX","TRANSITIONS2_FX","WEATHER_FX","PHYSICS2_FX","FOCUS_FX","MUSIC_FX","CHART_FX","SHOP_FX","SOCIAL_FX","GAME_FX","GEO_FX","FORM_FX","AI_FX","FESTIVAL_FX","RETRO_FX","ORGANIC_FX","CYBER_FX","PAPER_FX","SURFACE_FX","GESTURE3_FX","SPATIAL_FX","CINEMA_FX","LOTTIE_FX","registerGpuPack","registerTextPack","registerLightPack","register3dPack","registerMorphPack","registerTransitionsPack","registerWeatherPack","registerPhysicsPack","registerFocusPack","registerMusicPack","registerChartPack","registerShopPack","registerSocialPack","registerGamePack","registerGeoPack","registerFormPack","registerAiPack","registerFestivalPack","registerRetroPack","registerOrganicPack","registerCyberPack","registerPaperPack","registerSurfacePack","registerGesture3Pack","registerSpatialPack","registerCinemaPack","registerLottiePack"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FA;AACO,MAAM,YAAY,GAAuC;AAC9D,IAAA,GAAG,EAAEA,uBAAM;AACX,IAAA,IAAI,EAAEC,0BAAQ;AACd,IAAA,KAAK,EAAEC,2BAAQ;AACf,IAAA,KAAK,EAAEC,yBAAS;AAChB,IAAA,KAAK,EAAEC,4BAAS;AAChB,IAAA,WAAW,EAAEC,wCAAe;AAC5B,IAAA,OAAO,EAAEC,+BAAU;AACnB,IAAA,OAAO,EAAEC,gCAAW;AACpB,IAAA,KAAK,EAAEC,2BAAQ;AACf,IAAA,KAAK,EAAEC,2BAAQ;AACf,IAAA,KAAK,EAAEC,2BAAQ;AACf,IAAA,IAAI,EAAEC,yBAAO;AACb,IAAA,MAAM,EAAEC,6BAAS;AACjB,IAAA,IAAI,EAAEC,yBAAO;AACb,IAAA,GAAG,EAAEC,uBAAM;AACX,IAAA,IAAI,EAAEC,yBAAO;AACb,IAAA,EAAE,EAAEC,qBAAK;AACT,IAAA,QAAQ,EAAEC,iCAAW;AACrB,IAAA,KAAK,EAAEC,2BAAQ;AACf,IAAA,OAAO,EAAEC,+BAAU;AACnB,IAAA,KAAK,EAAEC,2BAAQ;AACf,IAAA,KAAK,EAAEC,2BAAQ;AACf,IAAA,OAAO,EAAEC,+BAAU;AACnB,IAAA,QAAQ,EAAEC,gCAAW;AACrB,IAAA,OAAO,EAAEC,+BAAU;AACnB,IAAA,MAAM,EAAEC,6BAAS;AACjB,IAAA,MAAM,EAAEC,6BAAS;;AAGnB;SACgB,mBAAmB,GAAA;AACjC,IAAAC,gCAAe,EAAE;AACjB,IAAAC,kCAAgB,EAAE;AAClB,IAAAC,oCAAiB,EAAE;AACnB,IAAAC,8BAAc,EAAE;AAChB,IAAAC,oCAAiB,EAAE;AACnB,IAAAC,gDAAuB,EAAE;AACzB,IAAAC,wCAAmB,EAAE;AACrB,IAAAC,wCAAmB,EAAE;AACrB,IAAAC,oCAAiB,EAAE;AACnB,IAAAC,oCAAiB,EAAE;AACnB,IAAAC,oCAAiB,EAAE;AACnB,IAAAC,kCAAgB,EAAE;AAClB,IAAAC,sCAAkB,EAAE;AACpB,IAAAC,kCAAgB,EAAE;AAClB,IAAAC,gCAAe,EAAE;AACjB,IAAAC,kCAAgB,EAAE;AAClB,IAAAC,8BAAc,EAAE;AAChB,IAAAC,0CAAoB,EAAE;AACtB,IAAAC,oCAAiB,EAAE;AACnB,IAAAC,wCAAmB,EAAE;AACrB,IAAAC,oCAAiB,EAAE;AACnB,IAAAC,oCAAiB,EAAE;AACnB,IAAAC,wCAAmB,EAAE;AACrB,IAAAC,yCAAoB,EAAE;AACtB,IAAAC,wCAAmB,EAAE;AACrB,IAAAC,sCAAkB,EAAE;AACpB,IAAAC,sCAAkB,EAAE;AACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -804,6 +804,49 @@ declare const CINEMA_FX: EffectDefinition[];
|
|
|
804
804
|
/** Register dolly-in, pan-reveal, letterbox and rack-focus (9.1). */
|
|
805
805
|
declare function registerCinemaPack(): void;
|
|
806
806
|
|
|
807
|
+
/**
|
|
808
|
+
* 9.2 — Lottie import (`motionary/fx/lottie`, also `motionary/components/fx-lottie`).
|
|
809
|
+
*
|
|
810
|
+
* `lottieToKeyframes(json)` converts the layer transforms of a Lottie
|
|
811
|
+
* (bodymovin) JSON — position `p`, scale `s`, rotation `r`, opacity `o`
|
|
812
|
+
* (static or keyframed) — into WAAPI keyframes per layer plus the duration
|
|
813
|
+
* (`op − ip` frames at `fr` fps), so a designer's After Effects motion runs
|
|
814
|
+
* on Motionary's clock without lottie-web. `lottieToSvg(json)` renders the
|
|
815
|
+
* simple vector shapes (ellipse `el`, rect `rc`, path `sh`, fill `fl`,
|
|
816
|
+
* stroke `st`) as SVG groups, one per layer. `riveInputs(instance, el, map)`
|
|
817
|
+
* wires Motionary-style triggers (hover / press / click / enter) to the
|
|
818
|
+
* boolean / trigger inputs of a Rive state machine you created with the
|
|
819
|
+
* Rive runtime.
|
|
820
|
+
*
|
|
821
|
+
* Effects: `lottie-play` (attention) plays the keyframes stored on an
|
|
822
|
+
* element by `<usa-lottie>`; `icon-pop` (click) a sticker-like pop with a
|
|
823
|
+
* ring burst for icons. Reduced motion: no motion.
|
|
824
|
+
*/
|
|
825
|
+
|
|
826
|
+
interface LottieLayerMotion {
|
|
827
|
+
name: string;
|
|
828
|
+
index: number;
|
|
829
|
+
keyframes: Keyframe[];
|
|
830
|
+
anchor: [number, number];
|
|
831
|
+
}
|
|
832
|
+
interface LottieMotion {
|
|
833
|
+
width: number;
|
|
834
|
+
height: number;
|
|
835
|
+
duration: number;
|
|
836
|
+
layers: LottieLayerMotion[];
|
|
837
|
+
}
|
|
838
|
+
/** Lottie JSON → WAAPI keyframes per layer + duration (ms) (9.2). */
|
|
839
|
+
declare function lottieToKeyframes(json: any): LottieMotion;
|
|
840
|
+
/** Render the simple vector layers of a Lottie JSON as an SVG string (one `<g data-layer>` per layer, top layer last) (9.2). */
|
|
841
|
+
declare function lottieToSvg(json: any): string;
|
|
842
|
+
/** Wire hover / press / click / enter on `el` to a Rive state machine's inputs: map { hover: 'isHover', click: 'fire' } (9.2). */
|
|
843
|
+
declare function riveInputs(instance: {
|
|
844
|
+
stateMachineInputs(sm: string): any[];
|
|
845
|
+
}, stateMachine: string, el: HTMLElement, map: Partial<Record<'hover' | 'press' | 'click' | 'enter', string>>): () => void;
|
|
846
|
+
declare const LOTTIE_FX: EffectDefinition[];
|
|
847
|
+
/** Register lottie-play and icon-pop (9.2). */
|
|
848
|
+
declare function registerLottiePack(): void;
|
|
849
|
+
|
|
807
850
|
/**
|
|
808
851
|
* 5.5 — generative backgrounds on Canvas 2D, registered through
|
|
809
852
|
* `registerEffect()` (kind `background`): `flow-field`, `voronoi`,
|
|
@@ -913,5 +956,5 @@ declare const EFFECT_PACKS: Record<string, EffectDefinition[]>;
|
|
|
913
956
|
/** Register every 6.x effect pack (idempotent). */
|
|
914
957
|
declare function registerEffectPacks(): void;
|
|
915
958
|
|
|
916
|
-
export { AI_FX, CAMERA_MOVES, CHART_FX, CINEMA_FX, CYBER_FX, DEPTH3_FX, EFFECT_PACKS, EFFECT_PACK_FORMAT, FESTIVAL_FX, FOCUS_FX, FORM_FX, GAME_FX, GEO_FX, GESTURE3_FX, GLSL_HEAD, GPU_FX, LIGHT_FX, MORPH2_FX, MUSIC_FX, ORGANIC_FX, PAPER_FX, PHYSICS2_FX, RETRO_FX, SHOP_FX, SOCIAL_FX, SPATIAL_FX, SURFACE_FX, SURFACE_THEMES, TEXT3_FX, TRANSITIONS2_FX, VerletWorld, WEATHER_FX, WGSL_HEAD, applySurfaceTheme, arcPath, blobRadius, cameraFrame, crossDocumentTransitions, decodeFrame, fanAngles, fieldFallback, glslToWgsl, loadEffectPack, musicSample, orientationToTilt, packManifest, pageTransition, paperRandom, parseFigure, pinchAngle, pinchScale, pixelSteps, pointsToPath, register3dPack, registerAiPack, registerChartPack, registerCinemaPack, registerCyberPack, registerEffectPacks, registerFestivalPack, registerFocusPack, registerFormPack, registerGamePack, registerGeoPack, registerGesture3Pack, registerGpuPack, registerLightPack, registerMorphPack, registerMusicPack, registerOrganicPack, registerPaperPack, registerPhysicsPack, registerRetroPack, registerShopPack, registerSocialPack, registerSpatialPack, registerSurfacePack, registerTextPack, registerTransitionsPack, registerWeatherPack, roughLine, routeLength, samplePath, shaderBackground, shakeFrames, skyAt, sparkVectors, splitChars, splitWords, supportsWebGL2, supportsWebGPU, syntheticSample, throwPath, trackPointer, validateManifest, webgpuBackground, wgslModule, xrSupport, yawToOffset };
|
|
959
|
+
export { AI_FX, CAMERA_MOVES, CHART_FX, CINEMA_FX, CYBER_FX, DEPTH3_FX, EFFECT_PACKS, EFFECT_PACK_FORMAT, FESTIVAL_FX, FOCUS_FX, FORM_FX, GAME_FX, GEO_FX, GESTURE3_FX, GLSL_HEAD, GPU_FX, LIGHT_FX, LOTTIE_FX, MORPH2_FX, MUSIC_FX, ORGANIC_FX, PAPER_FX, PHYSICS2_FX, RETRO_FX, SHOP_FX, SOCIAL_FX, SPATIAL_FX, SURFACE_FX, SURFACE_THEMES, TEXT3_FX, TRANSITIONS2_FX, VerletWorld, WEATHER_FX, WGSL_HEAD, applySurfaceTheme, arcPath, blobRadius, cameraFrame, crossDocumentTransitions, decodeFrame, fanAngles, fieldFallback, glslToWgsl, loadEffectPack, lottieToKeyframes, lottieToSvg, musicSample, orientationToTilt, packManifest, pageTransition, paperRandom, parseFigure, pinchAngle, pinchScale, pixelSteps, pointsToPath, register3dPack, registerAiPack, registerChartPack, registerCinemaPack, registerCyberPack, registerEffectPacks, registerFestivalPack, registerFocusPack, registerFormPack, registerGamePack, registerGeoPack, registerGesture3Pack, registerGpuPack, registerLightPack, registerLottiePack, registerMorphPack, registerMusicPack, registerOrganicPack, registerPaperPack, registerPhysicsPack, registerRetroPack, registerShopPack, registerSocialPack, registerSpatialPack, registerSurfacePack, registerTextPack, registerTransitionsPack, registerWeatherPack, riveInputs, roughLine, routeLength, samplePath, shaderBackground, shakeFrames, skyAt, sparkVectors, splitChars, splitWords, supportsWebGL2, supportsWebGPU, syntheticSample, throwPath, trackPointer, validateManifest, webgpuBackground, wgslModule, xrSupport, yawToOffset };
|
|
917
960
|
export type { EffectPackManifest, ShaderSpec };
|
package/dist/components/fx2.d.ts
CHANGED
|
@@ -804,6 +804,49 @@ declare const CINEMA_FX: EffectDefinition[];
|
|
|
804
804
|
/** Register dolly-in, pan-reveal, letterbox and rack-focus (9.1). */
|
|
805
805
|
declare function registerCinemaPack(): void;
|
|
806
806
|
|
|
807
|
+
/**
|
|
808
|
+
* 9.2 — Lottie import (`motionary/fx/lottie`, also `motionary/components/fx-lottie`).
|
|
809
|
+
*
|
|
810
|
+
* `lottieToKeyframes(json)` converts the layer transforms of a Lottie
|
|
811
|
+
* (bodymovin) JSON — position `p`, scale `s`, rotation `r`, opacity `o`
|
|
812
|
+
* (static or keyframed) — into WAAPI keyframes per layer plus the duration
|
|
813
|
+
* (`op − ip` frames at `fr` fps), so a designer's After Effects motion runs
|
|
814
|
+
* on Motionary's clock without lottie-web. `lottieToSvg(json)` renders the
|
|
815
|
+
* simple vector shapes (ellipse `el`, rect `rc`, path `sh`, fill `fl`,
|
|
816
|
+
* stroke `st`) as SVG groups, one per layer. `riveInputs(instance, el, map)`
|
|
817
|
+
* wires Motionary-style triggers (hover / press / click / enter) to the
|
|
818
|
+
* boolean / trigger inputs of a Rive state machine you created with the
|
|
819
|
+
* Rive runtime.
|
|
820
|
+
*
|
|
821
|
+
* Effects: `lottie-play` (attention) plays the keyframes stored on an
|
|
822
|
+
* element by `<usa-lottie>`; `icon-pop` (click) a sticker-like pop with a
|
|
823
|
+
* ring burst for icons. Reduced motion: no motion.
|
|
824
|
+
*/
|
|
825
|
+
|
|
826
|
+
interface LottieLayerMotion {
|
|
827
|
+
name: string;
|
|
828
|
+
index: number;
|
|
829
|
+
keyframes: Keyframe[];
|
|
830
|
+
anchor: [number, number];
|
|
831
|
+
}
|
|
832
|
+
interface LottieMotion {
|
|
833
|
+
width: number;
|
|
834
|
+
height: number;
|
|
835
|
+
duration: number;
|
|
836
|
+
layers: LottieLayerMotion[];
|
|
837
|
+
}
|
|
838
|
+
/** Lottie JSON → WAAPI keyframes per layer + duration (ms) (9.2). */
|
|
839
|
+
declare function lottieToKeyframes(json: any): LottieMotion;
|
|
840
|
+
/** Render the simple vector layers of a Lottie JSON as an SVG string (one `<g data-layer>` per layer, top layer last) (9.2). */
|
|
841
|
+
declare function lottieToSvg(json: any): string;
|
|
842
|
+
/** Wire hover / press / click / enter on `el` to a Rive state machine's inputs: map { hover: 'isHover', click: 'fire' } (9.2). */
|
|
843
|
+
declare function riveInputs(instance: {
|
|
844
|
+
stateMachineInputs(sm: string): any[];
|
|
845
|
+
}, stateMachine: string, el: HTMLElement, map: Partial<Record<'hover' | 'press' | 'click' | 'enter', string>>): () => void;
|
|
846
|
+
declare const LOTTIE_FX: EffectDefinition[];
|
|
847
|
+
/** Register lottie-play and icon-pop (9.2). */
|
|
848
|
+
declare function registerLottiePack(): void;
|
|
849
|
+
|
|
807
850
|
/**
|
|
808
851
|
* 5.5 — generative backgrounds on Canvas 2D, registered through
|
|
809
852
|
* `registerEffect()` (kind `background`): `flow-field`, `voronoi`,
|
|
@@ -913,5 +956,5 @@ declare const EFFECT_PACKS: Record<string, EffectDefinition[]>;
|
|
|
913
956
|
/** Register every 6.x effect pack (idempotent). */
|
|
914
957
|
declare function registerEffectPacks(): void;
|
|
915
958
|
|
|
916
|
-
export { AI_FX, CAMERA_MOVES, CHART_FX, CINEMA_FX, CYBER_FX, DEPTH3_FX, EFFECT_PACKS, EFFECT_PACK_FORMAT, FESTIVAL_FX, FOCUS_FX, FORM_FX, GAME_FX, GEO_FX, GESTURE3_FX, GLSL_HEAD, GPU_FX, LIGHT_FX, MORPH2_FX, MUSIC_FX, ORGANIC_FX, PAPER_FX, PHYSICS2_FX, RETRO_FX, SHOP_FX, SOCIAL_FX, SPATIAL_FX, SURFACE_FX, SURFACE_THEMES, TEXT3_FX, TRANSITIONS2_FX, VerletWorld, WEATHER_FX, WGSL_HEAD, applySurfaceTheme, arcPath, blobRadius, cameraFrame, crossDocumentTransitions, decodeFrame, fanAngles, fieldFallback, glslToWgsl, loadEffectPack, musicSample, orientationToTilt, packManifest, pageTransition, paperRandom, parseFigure, pinchAngle, pinchScale, pixelSteps, pointsToPath, register3dPack, registerAiPack, registerChartPack, registerCinemaPack, registerCyberPack, registerEffectPacks, registerFestivalPack, registerFocusPack, registerFormPack, registerGamePack, registerGeoPack, registerGesture3Pack, registerGpuPack, registerLightPack, registerMorphPack, registerMusicPack, registerOrganicPack, registerPaperPack, registerPhysicsPack, registerRetroPack, registerShopPack, registerSocialPack, registerSpatialPack, registerSurfacePack, registerTextPack, registerTransitionsPack, registerWeatherPack, roughLine, routeLength, samplePath, shaderBackground, shakeFrames, skyAt, sparkVectors, splitChars, splitWords, supportsWebGL2, supportsWebGPU, syntheticSample, throwPath, trackPointer, validateManifest, webgpuBackground, wgslModule, xrSupport, yawToOffset };
|
|
959
|
+
export { AI_FX, CAMERA_MOVES, CHART_FX, CINEMA_FX, CYBER_FX, DEPTH3_FX, EFFECT_PACKS, EFFECT_PACK_FORMAT, FESTIVAL_FX, FOCUS_FX, FORM_FX, GAME_FX, GEO_FX, GESTURE3_FX, GLSL_HEAD, GPU_FX, LIGHT_FX, LOTTIE_FX, MORPH2_FX, MUSIC_FX, ORGANIC_FX, PAPER_FX, PHYSICS2_FX, RETRO_FX, SHOP_FX, SOCIAL_FX, SPATIAL_FX, SURFACE_FX, SURFACE_THEMES, TEXT3_FX, TRANSITIONS2_FX, VerletWorld, WEATHER_FX, WGSL_HEAD, applySurfaceTheme, arcPath, blobRadius, cameraFrame, crossDocumentTransitions, decodeFrame, fanAngles, fieldFallback, glslToWgsl, loadEffectPack, lottieToKeyframes, lottieToSvg, musicSample, orientationToTilt, packManifest, pageTransition, paperRandom, parseFigure, pinchAngle, pinchScale, pixelSteps, pointsToPath, register3dPack, registerAiPack, registerChartPack, registerCinemaPack, registerCyberPack, registerEffectPacks, registerFestivalPack, registerFocusPack, registerFormPack, registerGamePack, registerGeoPack, registerGesture3Pack, registerGpuPack, registerLightPack, registerLottiePack, registerMorphPack, registerMusicPack, registerOrganicPack, registerPaperPack, registerPhysicsPack, registerRetroPack, registerShopPack, registerSocialPack, registerSpatialPack, registerSurfacePack, registerTextPack, registerTransitionsPack, registerWeatherPack, riveInputs, roughLine, routeLength, samplePath, shaderBackground, shakeFrames, skyAt, sparkVectors, splitChars, splitWords, supportsWebGL2, supportsWebGPU, syntheticSample, throwPath, trackPointer, validateManifest, webgpuBackground, wgslModule, xrSupport, yawToOffset };
|
|
917
960
|
export type { EffectPackManifest, ShaderSpec };
|
package/dist/components/fx2.js
CHANGED
|
@@ -49,6 +49,8 @@ import { SPATIAL_FX, registerSpatialPack } from './fx-spatial.js';
|
|
|
49
49
|
export { xrSupport, yawToOffset } from './fx-spatial.js';
|
|
50
50
|
import { CINEMA_FX, registerCinemaPack } from './fx-cinema.js';
|
|
51
51
|
export { CAMERA_MOVES, cameraFrame } from './fx-cinema.js';
|
|
52
|
+
import { LOTTIE_FX, registerLottiePack } from './fx-lottie.js';
|
|
53
|
+
export { lottieToKeyframes, lottieToSvg, riveInputs } from './fx-lottie.js';
|
|
52
54
|
import '../chunks/registry-CnO7ZVPK.js';
|
|
53
55
|
import '../chunks/base-CLuqlLfG.js';
|
|
54
56
|
import '../chunks/generative-2LhxG5BJ.js';
|
|
@@ -83,6 +85,7 @@ const EFFECT_PACKS = {
|
|
|
83
85
|
gesture3: GESTURE3_FX,
|
|
84
86
|
spatial: SPATIAL_FX,
|
|
85
87
|
cinema: CINEMA_FX,
|
|
88
|
+
lottie: LOTTIE_FX,
|
|
86
89
|
};
|
|
87
90
|
/** Register every 6.x effect pack (idempotent). */
|
|
88
91
|
function registerEffectPacks() {
|
|
@@ -112,7 +115,8 @@ function registerEffectPacks() {
|
|
|
112
115
|
registerGesture3Pack();
|
|
113
116
|
registerSpatialPack();
|
|
114
117
|
registerCinemaPack();
|
|
118
|
+
registerLottiePack();
|
|
115
119
|
}
|
|
116
120
|
|
|
117
|
-
export { AI_FX, CHART_FX, CINEMA_FX, CYBER_FX, DEPTH3_FX, EFFECT_PACKS, FESTIVAL_FX, FOCUS_FX, FORM_FX, GAME_FX, GEO_FX, GESTURE3_FX, GPU_FX, LIGHT_FX, MORPH2_FX, MUSIC_FX, ORGANIC_FX, PAPER_FX, PHYSICS2_FX, RETRO_FX, SHOP_FX, SOCIAL_FX, SPATIAL_FX, SURFACE_FX, TEXT3_FX, TRANSITIONS2_FX, WEATHER_FX, register3dPack, registerAiPack, registerChartPack, registerCinemaPack, registerCyberPack, registerEffectPacks, registerFestivalPack, registerFocusPack, registerFormPack, registerGamePack, registerGeoPack, registerGesture3Pack, registerGpuPack, registerLightPack, registerMorphPack, registerMusicPack, registerOrganicPack, registerPaperPack, registerPhysicsPack, registerRetroPack, registerShopPack, registerSocialPack, registerSpatialPack, registerSurfacePack, registerTextPack, registerTransitionsPack, registerWeatherPack };
|
|
121
|
+
export { AI_FX, CHART_FX, CINEMA_FX, CYBER_FX, DEPTH3_FX, EFFECT_PACKS, FESTIVAL_FX, FOCUS_FX, FORM_FX, GAME_FX, GEO_FX, GESTURE3_FX, GPU_FX, LIGHT_FX, LOTTIE_FX, MORPH2_FX, MUSIC_FX, ORGANIC_FX, PAPER_FX, PHYSICS2_FX, RETRO_FX, SHOP_FX, SOCIAL_FX, SPATIAL_FX, SURFACE_FX, TEXT3_FX, TRANSITIONS2_FX, WEATHER_FX, register3dPack, registerAiPack, registerChartPack, registerCinemaPack, registerCyberPack, registerEffectPacks, registerFestivalPack, registerFocusPack, registerFormPack, registerGamePack, registerGeoPack, registerGesture3Pack, registerGpuPack, registerLightPack, registerLottiePack, registerMorphPack, registerMusicPack, registerOrganicPack, registerPaperPack, registerPhysicsPack, registerRetroPack, registerShopPack, registerSocialPack, registerSpatialPack, registerSurfacePack, registerTextPack, registerTransitionsPack, registerWeatherPack };
|
|
118
122
|
//# sourceMappingURL=fx2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fx2.js","sources":["../../src/components/fx2/index.ts"],"sourcesContent":["/**\n * The 6.x effect packs, one entry each (`motionary/components/fx-gpu`, …) so\n * their size budgets stay separate. This module (`registerFx2()`) registers\n * them all — used by dist/widgets.umd.js and the showcase.\n */\nimport type { EffectDefinition } from '../fx/registry';\nexport { EFFECT_PACK_FORMAT, packManifest, validateManifest, loadEffectPack } from './manifest';\nexport type { EffectPackManifest } from './manifest';\nimport { GPU_FX, registerGpuPack } from './gpu';\nimport { TEXT3_FX, registerTextPack, splitChars } from './text3';\nimport { LIGHT_FX, registerLightPack, trackPointer } from './light';\nimport { DEPTH3_FX, register3dPack } from './depth3';\nimport { MORPH2_FX, registerMorphPack, samplePath, pointsToPath } from './morph2';\nimport { TRANSITIONS2_FX, registerTransitionsPack, pageTransition, crossDocumentTransitions } from './transitions2';\nimport { WEATHER_FX, registerWeatherPack, skyAt } from './weather';\nimport { PHYSICS2_FX, registerPhysicsPack, VerletWorld } from './physics2';\nimport { FOCUS_FX, registerFocusPack } from './focus';\nimport { MUSIC_FX, registerMusicPack, syntheticSample, musicSample } from './music';\nimport { CHART_FX, registerChartPack, parseFigure } from './chart';\nimport { SHOP_FX, registerShopPack, arcPath } from './shop';\nimport { SOCIAL_FX, registerSocialPack, fanAngles } from './social';\nimport { GAME_FX, registerGamePack, throwPath } from './game';\nimport { GEO_FX, registerGeoPack, routeLength } from './geo';\nimport { FORM_FX, registerFormPack, shakeFrames } from './form';\nimport { AI_FX, registerAiPack, splitWords } from './ai';\nimport { FESTIVAL_FX, registerFestivalPack, sparkVectors } from './festival';\nimport { RETRO_FX, registerRetroPack, pixelSteps } from './retro2';\nimport { ORGANIC_FX, registerOrganicPack, blobRadius } from './organic';\nimport { CYBER_FX, registerCyberPack, decodeFrame } from './cyber';\nimport { PAPER_FX, registerPaperPack, roughLine, paperRandom } from './paper';\nimport { SURFACE_FX, registerSurfacePack, SURFACE_THEMES, applySurfaceTheme } from './themefx';\nimport { GESTURE3_FX, registerGesture3Pack, pinchScale, pinchAngle, orientationToTilt } from './gesture3';\nimport { SPATIAL_FX, registerSpatialPack, yawToOffset, xrSupport } from './spatial';\nimport { CINEMA_FX, registerCinemaPack, cameraFrame, CAMERA_MOVES } from './cinema';\n\nexport { GPU_FX, registerGpuPack, TEXT3_FX, registerTextPack, splitChars };\nexport { shaderBackground, supportsWebGL2, fieldFallback, GLSL_HEAD } from './gl';\nexport { supportsWebGPU, glslToWgsl, wgslModule, webgpuBackground, WGSL_HEAD } from './webgpu';\nexport type { ShaderSpec } from './gl';\n\nexport { LIGHT_FX, registerLightPack, trackPointer };\n\nexport { DEPTH3_FX, register3dPack };\n\nexport { MORPH2_FX, registerMorphPack, samplePath, pointsToPath };\n\nexport { TRANSITIONS2_FX, registerTransitionsPack, pageTransition, crossDocumentTransitions };\n\nexport { WEATHER_FX, registerWeatherPack, skyAt };\n\nexport { PHYSICS2_FX, registerPhysicsPack, VerletWorld };\n\nexport { FOCUS_FX, registerFocusPack };\n\nexport { MUSIC_FX, registerMusicPack, syntheticSample, musicSample };\n\nexport { CHART_FX, registerChartPack, parseFigure };\n\nexport { SHOP_FX, registerShopPack, arcPath };\n\nexport { SOCIAL_FX, registerSocialPack, fanAngles };\n\nexport { GAME_FX, registerGamePack, throwPath };\n\nexport { GEO_FX, registerGeoPack, routeLength };\n\nexport { FORM_FX, registerFormPack, shakeFrames };\n\nexport { AI_FX, registerAiPack, splitWords };\n\nexport { FESTIVAL_FX, registerFestivalPack, sparkVectors };\n\nexport { RETRO_FX, registerRetroPack, pixelSteps };\n\nexport { ORGANIC_FX, registerOrganicPack, blobRadius };\n\nexport { CYBER_FX, registerCyberPack, decodeFrame };\n\nexport { PAPER_FX, registerPaperPack, roughLine, paperRandom };\n\nexport { SURFACE_FX, registerSurfacePack, SURFACE_THEMES, applySurfaceTheme };\n\nexport { GESTURE3_FX, registerGesture3Pack, pinchScale, pinchAngle, orientationToTilt };\n\nexport { SPATIAL_FX, registerSpatialPack, yawToOffset, xrSupport };\n\nexport { CINEMA_FX, registerCinemaPack, cameraFrame, CAMERA_MOVES };\n\n/** The 6.x effect packs by name. */\nexport const EFFECT_PACKS: Record<string, EffectDefinition[]> = {\n gpu: GPU_FX,\n text: TEXT3_FX,\n light: LIGHT_FX,\n depth: DEPTH3_FX,\n morph: MORPH2_FX,\n transitions: TRANSITIONS2_FX,\n weather: WEATHER_FX,\n physics: PHYSICS2_FX,\n focus: FOCUS_FX,\n music: MUSIC_FX,\n chart: CHART_FX,\n shop: SHOP_FX,\n social: SOCIAL_FX,\n game: GAME_FX,\n geo: GEO_FX,\n form: FORM_FX,\n ai: AI_FX,\n festival: FESTIVAL_FX,\n retro: RETRO_FX,\n organic: ORGANIC_FX,\n cyber: CYBER_FX,\n paper: PAPER_FX,\n surface: SURFACE_FX,\n gesture3: GESTURE3_FX,\n spatial: SPATIAL_FX,\n cinema: CINEMA_FX,\n};\n\n/** Register every 6.x effect pack (idempotent). */\nexport function registerEffectPacks(): void {\n registerGpuPack();\n registerTextPack();\n registerLightPack();\n register3dPack();\n registerMorphPack();\n registerTransitionsPack();\n registerWeatherPack();\n registerPhysicsPack();\n registerFocusPack();\n registerMusicPack();\n registerChartPack();\n registerShopPack();\n registerSocialPack();\n registerGamePack();\n registerGeoPack();\n registerFormPack();\n registerAiPack();\n registerFestivalPack();\n registerRetroPack();\n registerOrganicPack();\n registerCyberPack();\n registerPaperPack();\n registerSurfacePack();\n registerGesture3Pack();\n registerSpatialPack();\n registerCinemaPack();\n}\n\n\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fx2.js","sources":["../../src/components/fx2/index.ts"],"sourcesContent":["/**\n * The 6.x effect packs, one entry each (`motionary/components/fx-gpu`, …) so\n * their size budgets stay separate. This module (`registerFx2()`) registers\n * them all — used by dist/widgets.umd.js and the showcase.\n */\nimport type { EffectDefinition } from '../fx/registry';\nexport { EFFECT_PACK_FORMAT, packManifest, validateManifest, loadEffectPack } from './manifest';\nexport type { EffectPackManifest } from './manifest';\nimport { GPU_FX, registerGpuPack } from './gpu';\nimport { TEXT3_FX, registerTextPack, splitChars } from './text3';\nimport { LIGHT_FX, registerLightPack, trackPointer } from './light';\nimport { DEPTH3_FX, register3dPack } from './depth3';\nimport { MORPH2_FX, registerMorphPack, samplePath, pointsToPath } from './morph2';\nimport { TRANSITIONS2_FX, registerTransitionsPack, pageTransition, crossDocumentTransitions } from './transitions2';\nimport { WEATHER_FX, registerWeatherPack, skyAt } from './weather';\nimport { PHYSICS2_FX, registerPhysicsPack, VerletWorld } from './physics2';\nimport { FOCUS_FX, registerFocusPack } from './focus';\nimport { MUSIC_FX, registerMusicPack, syntheticSample, musicSample } from './music';\nimport { CHART_FX, registerChartPack, parseFigure } from './chart';\nimport { SHOP_FX, registerShopPack, arcPath } from './shop';\nimport { SOCIAL_FX, registerSocialPack, fanAngles } from './social';\nimport { GAME_FX, registerGamePack, throwPath } from './game';\nimport { GEO_FX, registerGeoPack, routeLength } from './geo';\nimport { FORM_FX, registerFormPack, shakeFrames } from './form';\nimport { AI_FX, registerAiPack, splitWords } from './ai';\nimport { FESTIVAL_FX, registerFestivalPack, sparkVectors } from './festival';\nimport { RETRO_FX, registerRetroPack, pixelSteps } from './retro2';\nimport { ORGANIC_FX, registerOrganicPack, blobRadius } from './organic';\nimport { CYBER_FX, registerCyberPack, decodeFrame } from './cyber';\nimport { PAPER_FX, registerPaperPack, roughLine, paperRandom } from './paper';\nimport { SURFACE_FX, registerSurfacePack, SURFACE_THEMES, applySurfaceTheme } from './themefx';\nimport { GESTURE3_FX, registerGesture3Pack, pinchScale, pinchAngle, orientationToTilt } from './gesture3';\nimport { SPATIAL_FX, registerSpatialPack, yawToOffset, xrSupport } from './spatial';\nimport { CINEMA_FX, registerCinemaPack, cameraFrame, CAMERA_MOVES } from './cinema';\nimport { LOTTIE_FX, registerLottiePack, lottieToKeyframes, lottieToSvg, riveInputs } from './lottie';\n\nexport { GPU_FX, registerGpuPack, TEXT3_FX, registerTextPack, splitChars };\nexport { shaderBackground, supportsWebGL2, fieldFallback, GLSL_HEAD } from './gl';\nexport { supportsWebGPU, glslToWgsl, wgslModule, webgpuBackground, WGSL_HEAD } from './webgpu';\nexport type { ShaderSpec } from './gl';\n\nexport { LIGHT_FX, registerLightPack, trackPointer };\n\nexport { DEPTH3_FX, register3dPack };\n\nexport { MORPH2_FX, registerMorphPack, samplePath, pointsToPath };\n\nexport { TRANSITIONS2_FX, registerTransitionsPack, pageTransition, crossDocumentTransitions };\n\nexport { WEATHER_FX, registerWeatherPack, skyAt };\n\nexport { PHYSICS2_FX, registerPhysicsPack, VerletWorld };\n\nexport { FOCUS_FX, registerFocusPack };\n\nexport { MUSIC_FX, registerMusicPack, syntheticSample, musicSample };\n\nexport { CHART_FX, registerChartPack, parseFigure };\n\nexport { SHOP_FX, registerShopPack, arcPath };\n\nexport { SOCIAL_FX, registerSocialPack, fanAngles };\n\nexport { GAME_FX, registerGamePack, throwPath };\n\nexport { GEO_FX, registerGeoPack, routeLength };\n\nexport { FORM_FX, registerFormPack, shakeFrames };\n\nexport { AI_FX, registerAiPack, splitWords };\n\nexport { FESTIVAL_FX, registerFestivalPack, sparkVectors };\n\nexport { RETRO_FX, registerRetroPack, pixelSteps };\n\nexport { ORGANIC_FX, registerOrganicPack, blobRadius };\n\nexport { CYBER_FX, registerCyberPack, decodeFrame };\n\nexport { PAPER_FX, registerPaperPack, roughLine, paperRandom };\n\nexport { SURFACE_FX, registerSurfacePack, SURFACE_THEMES, applySurfaceTheme };\n\nexport { GESTURE3_FX, registerGesture3Pack, pinchScale, pinchAngle, orientationToTilt };\n\nexport { SPATIAL_FX, registerSpatialPack, yawToOffset, xrSupport };\n\nexport { CINEMA_FX, registerCinemaPack, cameraFrame, CAMERA_MOVES };\n\nexport { LOTTIE_FX, registerLottiePack, lottieToKeyframes, lottieToSvg, riveInputs };\n\n/** The 6.x effect packs by name. */\nexport const EFFECT_PACKS: Record<string, EffectDefinition[]> = {\n gpu: GPU_FX,\n text: TEXT3_FX,\n light: LIGHT_FX,\n depth: DEPTH3_FX,\n morph: MORPH2_FX,\n transitions: TRANSITIONS2_FX,\n weather: WEATHER_FX,\n physics: PHYSICS2_FX,\n focus: FOCUS_FX,\n music: MUSIC_FX,\n chart: CHART_FX,\n shop: SHOP_FX,\n social: SOCIAL_FX,\n game: GAME_FX,\n geo: GEO_FX,\n form: FORM_FX,\n ai: AI_FX,\n festival: FESTIVAL_FX,\n retro: RETRO_FX,\n organic: ORGANIC_FX,\n cyber: CYBER_FX,\n paper: PAPER_FX,\n surface: SURFACE_FX,\n gesture3: GESTURE3_FX,\n spatial: SPATIAL_FX,\n cinema: CINEMA_FX,\n lottie: LOTTIE_FX,\n};\n\n/** Register every 6.x effect pack (idempotent). */\nexport function registerEffectPacks(): void {\n registerGpuPack();\n registerTextPack();\n registerLightPack();\n register3dPack();\n registerMorphPack();\n registerTransitionsPack();\n registerWeatherPack();\n registerPhysicsPack();\n registerFocusPack();\n registerMusicPack();\n registerChartPack();\n registerShopPack();\n registerSocialPack();\n registerGamePack();\n registerGeoPack();\n registerFormPack();\n registerAiPack();\n registerFestivalPack();\n registerRetroPack();\n registerOrganicPack();\n registerCyberPack();\n registerPaperPack();\n registerSurfacePack();\n registerGesture3Pack();\n registerSpatialPack();\n registerCinemaPack();\n registerLottiePack();\n}\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FA;AACO,MAAM,YAAY,GAAuC;AAC9D,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,WAAW,EAAE,eAAe;AAC5B,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,MAAM,EAAE,SAAS;;AAGnB;SACgB,mBAAmB,GAAA;AACjC,IAAA,eAAe,EAAE;AACjB,IAAA,gBAAgB,EAAE;AAClB,IAAA,iBAAiB,EAAE;AACnB,IAAA,cAAc,EAAE;AAChB,IAAA,iBAAiB,EAAE;AACnB,IAAA,uBAAuB,EAAE;AACzB,IAAA,mBAAmB,EAAE;AACrB,IAAA,mBAAmB,EAAE;AACrB,IAAA,iBAAiB,EAAE;AACnB,IAAA,iBAAiB,EAAE;AACnB,IAAA,iBAAiB,EAAE;AACnB,IAAA,gBAAgB,EAAE;AAClB,IAAA,kBAAkB,EAAE;AACpB,IAAA,gBAAgB,EAAE;AAClB,IAAA,eAAe,EAAE;AACjB,IAAA,gBAAgB,EAAE;AAClB,IAAA,cAAc,EAAE;AAChB,IAAA,oBAAoB,EAAE;AACtB,IAAA,iBAAiB,EAAE;AACnB,IAAA,mBAAmB,EAAE;AACrB,IAAA,iBAAiB,EAAE;AACnB,IAAA,iBAAiB,EAAE;AACnB,IAAA,mBAAmB,EAAE;AACrB,IAAA,oBAAoB,EAAE;AACtB,IAAA,mBAAmB,EAAE;AACrB,IAAA,kBAAkB,EAAE;AACpB,IAAA,kBAAkB,EAAE;AACtB;;;;"}
|
|
@@ -17,6 +17,7 @@ const MARKETPLACE = [
|
|
|
17
17
|
L('motionary/fx/gesture', 'Gestures 3.0', 'Swipe and pinch hints, tilt wobble, depth-in.', 'motionary/fx/gesture', 'registerGesture3Pack', 'swipe-hint pinch-hint tilt-wobble depth-in', 'touch onboarding 3d', '8.7'),
|
|
18
18
|
L('motionary/fx/spatial', 'XR / spatial', 'Portal open, orbit-in, spatial float and depth pop.', 'motionary/fx/spatial', 'registerSpatialPack', 'portal-open orbit-in spatial-float depth-pop', 'xr vr visionos 3d', '8.8'),
|
|
19
19
|
L('motionary/fx/cinema', 'Cinematic', 'Dolly-in, pan reveal, letterbox and rack focus.', 'motionary/fx/cinema', 'registerCinemaPack', 'dolly-in pan-reveal letterbox rack-focus', 'film camera story', '9.1'),
|
|
20
|
+
L('motionary/fx/lottie', 'Lottie & Rive', 'Lottie import (keyframes + SVG), Rive state-machine inputs, icon pop.', 'motionary/fx/lottie', 'registerLottiePack', 'lottie-play icon-pop', 'lottie rive after-effects icons', '9.2'),
|
|
20
21
|
];
|
|
21
22
|
/** Ranked search over listings (name / title / tags / effects / description) (9.0). */
|
|
22
23
|
function searchPlugins(query, list = MARKETPLACE) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketplace.cjs","sources":["../../src/components/marketplace/index.ts"],"sourcesContent":["/**\n * `motionary/marketplace` (= `motionary/components/marketplace`, 9.0 GA) —\n * the plugin marketplace. Builds on the 6.9 effect-pack manifest\n * (`packManifest`, `validateManifest`, `loadEffectPack`) with:\n *\n * - **`MARKETPLACE`** — the first-party catalogue: every Motionary effect\n * pack as a marketplace listing (name, entry, effects, tags, since).\n * - **`searchPlugins(query, list?)`** — ranked search over names,\n * descriptions, tags and effect names.\n * - **`installPlugin(listing | url, { load })`** — imports a pack (your\n * `load` can map entries to bundler imports), validates it and registers\n * its effects; remembered by `installedPlugins()`.\n * - **`fetchMarketplace(url)`** — read a third-party index\n * (`{ \"format\": \"motionary/marketplace\", \"version\": 1, \"plugins\": [...] }`).\n */\nimport type { EffectDefinition } from '../fx/registry';\nimport { loadEffectPack } from '../fx2/manifest';\n\nexport { EFFECT_PACK_FORMAT, packManifest, validateManifest, loadEffectPack } from '../fx2/manifest';\nexport type { EffectPackManifest } from '../fx2/manifest';\n\nexport const MARKETPLACE_FORMAT = 'motionary/marketplace';\nexport interface PluginListing {\n name: string;\n title: string;\n description: string;\n entry: string;\n register: string;\n effects: string[];\n tags: string[];\n since: string;\n author?: string;\n official?: boolean;\n}\n\nconst L = (name: string, title: string, description: string, entry: string, register: string, effects: string, tags: string, since: string): PluginListing => ({ name, title, description, entry, register, effects: effects.split(' '), tags: tags.split(' '), since, author: 'Motionary', official: true });\n\n/** The first-party catalogue (9.0). */\nexport const MARKETPLACE: PluginListing[] = [\n L('motionary/fx/festival', 'Festival', 'Fireworks, lanterns, Christmas snow and spooky floats.', 'motionary/fx/festival', 'registerFestivalPack', 'firework-burst lantern-rise xmas-snow spooky-float', 'holiday celebration seasonal', '8.1'),\n L('motionary/fx/retro', 'Retro', 'Pixel, CRT, VHS and Y2K looks.', 'motionary/fx/retro', 'registerRetroPack', 'pixelate-in crt-power vhs-glitch y2k-shine', 'pixel 8-bit vintage', '8.2'),\n L('motionary/fx/organic', 'Organic', 'Vines, blooms, water drops and breathing blobs.', 'motionary/fx/organic', 'registerOrganicPack', 'vine-grow bloom water-drop breathe', 'nature blob liquid', '8.3'),\n L('motionary/fx/cyber', 'Cyber', 'HUD lock-on, scanlines, holograms and data decode.', 'motionary/fx/cyber', 'registerCyberPack', 'hud-frame scanline-sweep hologram data-decode', 'sci-fi hud glitch', '8.4'),\n L('motionary/fx/paper', 'Paper & hand-drawn', 'Paper unfold, pencil sketch, watercolor and crumple.', 'motionary/fx/paper', 'registerPaperPack', 'paper-unfold pencil-sketch watercolor crumple', 'sketch paper drawing', '8.5'),\n L('motionary/fx/surface', 'Surface themes', 'Neon ignite and pulse, glass frost, neumorphic press.', 'motionary/fx/surface', 'registerSurfacePack', 'neon-ignite neon-pulse glass-frost neu-press', 'neon glassmorphism neumorphism theme', '8.6'),\n L('motionary/fx/gesture', 'Gestures 3.0', 'Swipe and pinch hints, tilt wobble, depth-in.', 'motionary/fx/gesture', 'registerGesture3Pack', 'swipe-hint pinch-hint tilt-wobble depth-in', 'touch onboarding 3d', '8.7'),\n L('motionary/fx/spatial', 'XR / spatial', 'Portal open, orbit-in, spatial float and depth pop.', 'motionary/fx/spatial', 'registerSpatialPack', 'portal-open orbit-in spatial-float depth-pop', 'xr vr visionos 3d', '8.8'),\n L('motionary/fx/cinema', 'Cinematic', 'Dolly-in, pan reveal, letterbox and rack focus.', 'motionary/fx/cinema', 'registerCinemaPack', 'dolly-in pan-reveal letterbox rack-focus', 'film camera story', '9.1'),\n];\n\n/** Ranked search over listings (name / title / tags / effects / description) (9.0). */\nexport function searchPlugins(query: string, list: PluginListing[] = MARKETPLACE): PluginListing[] {\n const q = query.toLowerCase().trim().split(/\\s+/).filter(Boolean);\n if (!q.length) return list.slice();\n const score = (p: PluginListing) =>\n q.reduce((s, w) => {\n let n = 0;\n if (p.title.toLowerCase().includes(w)) n += 5;\n if (p.tags.some((t) => t.includes(w))) n += 4;\n if (p.effects.some((e) => e.includes(w))) n += 3;\n if (p.name.toLowerCase().includes(w)) n += 2;\n if (p.description.toLowerCase().includes(w)) n += 1;\n return n ? s + n : -1e9;\n }, 0);\n return list\n .map((p) => [p, score(p)] as const)\n .filter(([, s]) => s > 0)\n .sort((a, b) => b[1] - a[1])\n .map(([p]) => p);\n}\n\nconst installed = new Map<string, string[]>();\n/** Names of installed plugins → their registered effects (9.0). */\nexport function installedPlugins(): Record<string, string[]> {\n return Object.fromEntries(installed);\n}\n\n/**\n * Install a plugin: `load(entry)` imports the module (default: dynamic `import()`), then its\n * `register*` function runs (first-party listing) or its `effects` are validated and registered\n * through `loadEffectPack` (third-party pack). Returns the registered effect names (9.0).\n */\nexport async function installPlugin(p: PluginListing | string, opts: { load?: (entry: string) => Promise<any>; override?: boolean } = {}): Promise<string[]> {\n const listing = typeof p === 'string' ? null : p;\n const entry = listing ? listing.entry : (p as string);\n const key = listing ? listing.name : entry;\n if (installed.has(key)) return installed.get(key) as string[];\n const load = opts.load || ((u: string) => import(/* @vite-ignore */ u));\n const mod = await load(entry);\n let names: string[];\n if (listing && typeof mod?.[listing.register] === 'function') {\n mod[listing.register]();\n names = listing.effects.slice();\n } else names = await loadEffectPack(mod as { effects?: EffectDefinition[]; default?: EffectDefinition[] }, { override: opts.override, manifest: mod?.manifest });\n installed.set(key, names);\n return names;\n}\n\n/** Read a marketplace index (`{ format: \"motionary/marketplace\", version: 1, plugins }`) (9.0). */\nexport async function fetchMarketplace(url: string, fetcher: typeof fetch = fetch): Promise<PluginListing[]> {\n const r = await fetcher(url);\n const j = await r.json();\n if (j?.format !== MARKETPLACE_FORMAT || j?.version !== 1 || !Array.isArray(j.plugins)) throw new Error(`[motionary] ${url} is not a ${MARKETPLACE_FORMAT} v1 index`);\n return j.plugins.filter((p: any) => p && typeof p.name === 'string' && typeof p.entry === 'string').map((p: any) => ({ title: p.name, description: '', register: '', effects: [], tags: [], since: '', ...p }));\n}\n"],"names":["loadEffectPack"],"mappings":";;;;;;AAqBO,MAAM,kBAAkB,GAAG;AAclC,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,WAAmB,EAAE,KAAa,EAAE,QAAgB,EAAE,OAAe,EAAE,IAAY,EAAE,KAAa,MAAqB,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE7S;AACO,MAAM,WAAW,GAAoB;AAC1C,IAAA,CAAC,CAAC,uBAAuB,EAAE,UAAU,EAAE,wDAAwD,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,oDAAoD,EAAE,8BAA8B,EAAE,KAAK,CAAC;AAC9O,IAAA,CAAC,CAAC,oBAAoB,EAAE,OAAO,EAAE,gCAAgC,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,4CAA4C,EAAE,qBAAqB,EAAE,KAAK,CAAC;AACzL,IAAA,CAAC,CAAC,sBAAsB,EAAE,SAAS,EAAE,iDAAiD,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,oCAAoC,EAAE,oBAAoB,EAAE,KAAK,CAAC;AACzM,IAAA,CAAC,CAAC,oBAAoB,EAAE,OAAO,EAAE,oDAAoD,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,+CAA+C,EAAE,mBAAmB,EAAE,KAAK,CAAC;AAC9M,IAAA,CAAC,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,sDAAsD,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,+CAA+C,EAAE,sBAAsB,EAAE,KAAK,CAAC;AAChO,IAAA,CAAC,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,uDAAuD,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,8CAA8C,EAAE,sCAAsC,EAAE,KAAK,CAAC;AAClP,IAAA,CAAC,CAAC,sBAAsB,EAAE,cAAc,EAAE,+CAA+C,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,4CAA4C,EAAE,qBAAqB,EAAE,KAAK,CAAC;AACtN,IAAA,CAAC,CAAC,sBAAsB,EAAE,cAAc,EAAE,qDAAqD,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,8CAA8C,EAAE,mBAAmB,EAAE,KAAK,CAAC;AAC3N,IAAA,CAAC,CAAC,qBAAqB,EAAE,WAAW,EAAE,iDAAiD,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,0CAA0C,EAAE,mBAAmB,EAAE,KAAK,CAAC;;AAG/M;SACgB,aAAa,CAAC,KAAa,EAAE,OAAwB,WAAW,EAAA;AAC9E,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACjE,IAAI,CAAC,CAAC,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE;AAClC,IAAA,MAAM,KAAK,GAAG,CAAC,CAAgB,KAC7B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;QAChB,IAAI,CAAC,GAAG,CAAC;QACT,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,CAAC,IAAI,CAAC;AAC7C,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,IAAI,CAAC;AAC7C,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,IAAI,CAAC;QAChD,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,CAAC,IAAI,CAAC;AACnD,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI;IACzB,CAAC,EAAE,CAAC,CAAC;AACP,IAAA,OAAO;AACJ,SAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAU;AACjC,SAAA,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACvB,SAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACpB;AAEA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB;AAC7C;SACgB,gBAAgB,GAAA;AAC9B,IAAA,OAAO,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;AACtC;AAEA;;;;AAIG;AACI,eAAe,aAAa,CAAC,CAAyB,EAAE,OAAuE,EAAE,EAAA;AACtI,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,QAAQ,GAAG,IAAI,GAAG,CAAC;AAChD,IAAA,MAAM,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC,KAAK,GAAI,CAAY;AACrD,IAAA,MAAM,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK;AAC1C,IAAA,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAa;AAC7D,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAS,KAAK,0BAA0B,CAAC,CAAC,CAAC;AACvE,IAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;AAC7B,IAAA,IAAI,KAAe;AACnB,IAAA,IAAI,OAAO,IAAI,OAAO,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE;AAC5D,QAAA,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACvB,QAAA,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;IACjC;;QAAO,KAAK,GAAG,MAAMA,uBAAc,CAAC,GAAqE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAChK,IAAA,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACzB,IAAA,OAAO,KAAK;AACd;AAEA;AACO,eAAe,gBAAgB,CAAC,GAAW,EAAE,UAAwB,KAAK,EAAA;AAC/E,IAAA,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AAC5B,IAAA,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE;IACxB,IAAI,CAAC,EAAE,MAAM,KAAK,kBAAkB,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,CAAA,YAAA,EAAe,GAAG,CAAA,UAAA,EAAa,kBAAkB,CAAA,SAAA,CAAW,CAAC;AACpK,IAAA,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACjN;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"marketplace.cjs","sources":["../../src/components/marketplace/index.ts"],"sourcesContent":["/**\n * `motionary/marketplace` (= `motionary/components/marketplace`, 9.0 GA) —\n * the plugin marketplace. Builds on the 6.9 effect-pack manifest\n * (`packManifest`, `validateManifest`, `loadEffectPack`) with:\n *\n * - **`MARKETPLACE`** — the first-party catalogue: every Motionary effect\n * pack as a marketplace listing (name, entry, effects, tags, since).\n * - **`searchPlugins(query, list?)`** — ranked search over names,\n * descriptions, tags and effect names.\n * - **`installPlugin(listing | url, { load })`** — imports a pack (your\n * `load` can map entries to bundler imports), validates it and registers\n * its effects; remembered by `installedPlugins()`.\n * - **`fetchMarketplace(url)`** — read a third-party index\n * (`{ \"format\": \"motionary/marketplace\", \"version\": 1, \"plugins\": [...] }`).\n */\nimport type { EffectDefinition } from '../fx/registry';\nimport { loadEffectPack } from '../fx2/manifest';\n\nexport { EFFECT_PACK_FORMAT, packManifest, validateManifest, loadEffectPack } from '../fx2/manifest';\nexport type { EffectPackManifest } from '../fx2/manifest';\n\nexport const MARKETPLACE_FORMAT = 'motionary/marketplace';\nexport interface PluginListing {\n name: string;\n title: string;\n description: string;\n entry: string;\n register: string;\n effects: string[];\n tags: string[];\n since: string;\n author?: string;\n official?: boolean;\n}\n\nconst L = (name: string, title: string, description: string, entry: string, register: string, effects: string, tags: string, since: string): PluginListing => ({ name, title, description, entry, register, effects: effects.split(' '), tags: tags.split(' '), since, author: 'Motionary', official: true });\n\n/** The first-party catalogue (9.0). */\nexport const MARKETPLACE: PluginListing[] = [\n L('motionary/fx/festival', 'Festival', 'Fireworks, lanterns, Christmas snow and spooky floats.', 'motionary/fx/festival', 'registerFestivalPack', 'firework-burst lantern-rise xmas-snow spooky-float', 'holiday celebration seasonal', '8.1'),\n L('motionary/fx/retro', 'Retro', 'Pixel, CRT, VHS and Y2K looks.', 'motionary/fx/retro', 'registerRetroPack', 'pixelate-in crt-power vhs-glitch y2k-shine', 'pixel 8-bit vintage', '8.2'),\n L('motionary/fx/organic', 'Organic', 'Vines, blooms, water drops and breathing blobs.', 'motionary/fx/organic', 'registerOrganicPack', 'vine-grow bloom water-drop breathe', 'nature blob liquid', '8.3'),\n L('motionary/fx/cyber', 'Cyber', 'HUD lock-on, scanlines, holograms and data decode.', 'motionary/fx/cyber', 'registerCyberPack', 'hud-frame scanline-sweep hologram data-decode', 'sci-fi hud glitch', '8.4'),\n L('motionary/fx/paper', 'Paper & hand-drawn', 'Paper unfold, pencil sketch, watercolor and crumple.', 'motionary/fx/paper', 'registerPaperPack', 'paper-unfold pencil-sketch watercolor crumple', 'sketch paper drawing', '8.5'),\n L('motionary/fx/surface', 'Surface themes', 'Neon ignite and pulse, glass frost, neumorphic press.', 'motionary/fx/surface', 'registerSurfacePack', 'neon-ignite neon-pulse glass-frost neu-press', 'neon glassmorphism neumorphism theme', '8.6'),\n L('motionary/fx/gesture', 'Gestures 3.0', 'Swipe and pinch hints, tilt wobble, depth-in.', 'motionary/fx/gesture', 'registerGesture3Pack', 'swipe-hint pinch-hint tilt-wobble depth-in', 'touch onboarding 3d', '8.7'),\n L('motionary/fx/spatial', 'XR / spatial', 'Portal open, orbit-in, spatial float and depth pop.', 'motionary/fx/spatial', 'registerSpatialPack', 'portal-open orbit-in spatial-float depth-pop', 'xr vr visionos 3d', '8.8'),\n L('motionary/fx/cinema', 'Cinematic', 'Dolly-in, pan reveal, letterbox and rack focus.', 'motionary/fx/cinema', 'registerCinemaPack', 'dolly-in pan-reveal letterbox rack-focus', 'film camera story', '9.1'),\n L('motionary/fx/lottie', 'Lottie & Rive', 'Lottie import (keyframes + SVG), Rive state-machine inputs, icon pop.', 'motionary/fx/lottie', 'registerLottiePack', 'lottie-play icon-pop', 'lottie rive after-effects icons', '9.2'),\n];\n\n/** Ranked search over listings (name / title / tags / effects / description) (9.0). */\nexport function searchPlugins(query: string, list: PluginListing[] = MARKETPLACE): PluginListing[] {\n const q = query.toLowerCase().trim().split(/\\s+/).filter(Boolean);\n if (!q.length) return list.slice();\n const score = (p: PluginListing) =>\n q.reduce((s, w) => {\n let n = 0;\n if (p.title.toLowerCase().includes(w)) n += 5;\n if (p.tags.some((t) => t.includes(w))) n += 4;\n if (p.effects.some((e) => e.includes(w))) n += 3;\n if (p.name.toLowerCase().includes(w)) n += 2;\n if (p.description.toLowerCase().includes(w)) n += 1;\n return n ? s + n : -1e9;\n }, 0);\n return list\n .map((p) => [p, score(p)] as const)\n .filter(([, s]) => s > 0)\n .sort((a, b) => b[1] - a[1])\n .map(([p]) => p);\n}\n\nconst installed = new Map<string, string[]>();\n/** Names of installed plugins → their registered effects (9.0). */\nexport function installedPlugins(): Record<string, string[]> {\n return Object.fromEntries(installed);\n}\n\n/**\n * Install a plugin: `load(entry)` imports the module (default: dynamic `import()`), then its\n * `register*` function runs (first-party listing) or its `effects` are validated and registered\n * through `loadEffectPack` (third-party pack). Returns the registered effect names (9.0).\n */\nexport async function installPlugin(p: PluginListing | string, opts: { load?: (entry: string) => Promise<any>; override?: boolean } = {}): Promise<string[]> {\n const listing = typeof p === 'string' ? null : p;\n const entry = listing ? listing.entry : (p as string);\n const key = listing ? listing.name : entry;\n if (installed.has(key)) return installed.get(key) as string[];\n const load = opts.load || ((u: string) => import(/* @vite-ignore */ u));\n const mod = await load(entry);\n let names: string[];\n if (listing && typeof mod?.[listing.register] === 'function') {\n mod[listing.register]();\n names = listing.effects.slice();\n } else names = await loadEffectPack(mod as { effects?: EffectDefinition[]; default?: EffectDefinition[] }, { override: opts.override, manifest: mod?.manifest });\n installed.set(key, names);\n return names;\n}\n\n/** Read a marketplace index (`{ format: \"motionary/marketplace\", version: 1, plugins }`) (9.0). */\nexport async function fetchMarketplace(url: string, fetcher: typeof fetch = fetch): Promise<PluginListing[]> {\n const r = await fetcher(url);\n const j = await r.json();\n if (j?.format !== MARKETPLACE_FORMAT || j?.version !== 1 || !Array.isArray(j.plugins)) throw new Error(`[motionary] ${url} is not a ${MARKETPLACE_FORMAT} v1 index`);\n return j.plugins.filter((p: any) => p && typeof p.name === 'string' && typeof p.entry === 'string').map((p: any) => ({ title: p.name, description: '', register: '', effects: [], tags: [], since: '', ...p }));\n}\n"],"names":["loadEffectPack"],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ const MARKETPLACE = [
|
|
|
16
16
|
L('motionary/fx/gesture', 'Gestures 3.0', 'Swipe and pinch hints, tilt wobble, depth-in.', 'motionary/fx/gesture', 'registerGesture3Pack', 'swipe-hint pinch-hint tilt-wobble depth-in', 'touch onboarding 3d', '8.7'),
|
|
17
17
|
L('motionary/fx/spatial', 'XR / spatial', 'Portal open, orbit-in, spatial float and depth pop.', 'motionary/fx/spatial', 'registerSpatialPack', 'portal-open orbit-in spatial-float depth-pop', 'xr vr visionos 3d', '8.8'),
|
|
18
18
|
L('motionary/fx/cinema', 'Cinematic', 'Dolly-in, pan reveal, letterbox and rack focus.', 'motionary/fx/cinema', 'registerCinemaPack', 'dolly-in pan-reveal letterbox rack-focus', 'film camera story', '9.1'),
|
|
19
|
+
L('motionary/fx/lottie', 'Lottie & Rive', 'Lottie import (keyframes + SVG), Rive state-machine inputs, icon pop.', 'motionary/fx/lottie', 'registerLottiePack', 'lottie-play icon-pop', 'lottie rive after-effects icons', '9.2'),
|
|
19
20
|
];
|
|
20
21
|
/** Ranked search over listings (name / title / tags / effects / description) (9.0). */
|
|
21
22
|
function searchPlugins(query, list = MARKETPLACE) {
|