use-scroll-animate 7.6.0 → 7.8.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 +27 -0
- package/dist/components/fx-ai.cjs +130 -0
- package/dist/components/fx-ai.cjs.map +1 -0
- package/dist/components/fx-ai.d.cts +66 -0
- package/dist/components/fx-ai.d.ts +66 -0
- package/dist/components/fx-ai.js +126 -0
- package/dist/components/fx-ai.js.map +1 -0
- package/dist/components/fx-form.cjs +92 -0
- package/dist/components/fx-form.cjs.map +1 -0
- package/dist/components/fx-form.d.cts +66 -0
- package/dist/components/fx-form.d.ts +66 -0
- package/dist/components/fx-form.js +88 -0
- package/dist/components/fx-form.js.map +1 -0
- package/dist/components/fx2.cjs +12 -0
- package/dist/components/fx2.cjs.map +1 -1
- package/dist/components/fx2.d.cts +45 -1
- package/dist/components/fx2.d.ts +45 -1
- package/dist/components/fx2.js +9 -1
- package/dist/components/fx2.js.map +1 -1
- package/dist/components/widgets.cjs +735 -109
- package/dist/components/widgets.cjs.map +1 -1
- package/dist/components/widgets.d.cts +120 -2
- package/dist/components/widgets.d.ts +120 -2
- package/dist/components/widgets.js +726 -111
- 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 +2 -2
- package/docs/components.md +46 -0
- package/package.json +41 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
type MotionSensitivity = 'full' | 'gentle' | 'minimal' | 'static';
|
|
2
|
+
type Cleanup = () => void;
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 5.0 — unified plugin-style effect registration. Every effect (built-in or
|
|
6
|
+
* yours) is a plain object registered once and played the same way:
|
|
7
|
+
* `playEffect(el, name)`, `bindEffect(el, name, { trigger })` or
|
|
8
|
+
* `<usa-fx effect="name" trigger="click">`. Effects get a context that
|
|
9
|
+
* already applies reduced motion, motion sensitivity, intensity and the
|
|
10
|
+
* animation budget.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
declare const EFFECT_KINDS: readonly ["enter", "exit", "attention", "click", "hover", "card", "loop", "page", "background", "text", "cursor", "scroll"];
|
|
14
|
+
type EffectKind = (typeof EFFECT_KINDS)[number];
|
|
15
|
+
interface EffectContext {
|
|
16
|
+
/** Reduced motion applies (OS setting, `minimal` / `static` sensitivity). */
|
|
17
|
+
readonly reduced: boolean;
|
|
18
|
+
readonly sensitivity: MotionSensitivity;
|
|
19
|
+
/** The triggering event (pointer position for click effects), if any. */
|
|
20
|
+
readonly event?: Event;
|
|
21
|
+
/** `el.animate()` with the library's motion rules (may return `null`). */
|
|
22
|
+
animate(el: Element, keyframes: Keyframe[], options: KeyframeAnimationOptions): Animation | null;
|
|
23
|
+
/** Register teardown for long-running effects (loops, listeners). */
|
|
24
|
+
onCleanup(fn: Cleanup): void;
|
|
25
|
+
}
|
|
26
|
+
interface EffectDefinition<O extends Record<string, unknown> = Record<string, any>> {
|
|
27
|
+
/** Unique, kebab-case. */
|
|
28
|
+
name: string;
|
|
29
|
+
kind: EffectKind;
|
|
30
|
+
/** One line for docs and the gallery. */
|
|
31
|
+
description?: string;
|
|
32
|
+
/** Option defaults (merged under the caller's options). */
|
|
33
|
+
defaults?: Partial<O>;
|
|
34
|
+
/**
|
|
35
|
+
* Under reduced motion: `'skip'` (do nothing — default for loop, background
|
|
36
|
+
* and cursor effects) or `'run'` (run with `ctx.reduced === true`, the
|
|
37
|
+
* effect degrades itself — default for everything else).
|
|
38
|
+
*/
|
|
39
|
+
reduced?: 'skip' | 'run';
|
|
40
|
+
/** Play the effect. Return an Animation / Promise to be awaited, or a cleanup. */
|
|
41
|
+
run(el: HTMLElement, options: O, ctx: EffectContext): void | Cleanup | Animation | null | Promise<unknown>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 7.7 — Form motion (`motionary/fx/form`, also `motionary/components/fx-form`):
|
|
46
|
+
*
|
|
47
|
+
* - `field-shake` (attention) — the element shakes sideways with a red
|
|
48
|
+
* outline flash, the classic "invalid" cue (`distance`, `color`).
|
|
49
|
+
* - `field-success` (attention) — a green glow pulses round the element and a
|
|
50
|
+
* small check badge pops on its corner (`color`).
|
|
51
|
+
* - `label-float` (enter) — every `label` (or `[data-label]`) inside rises and
|
|
52
|
+
* settles, one after another, like floating labels (`stagger`).
|
|
53
|
+
* - `form-cascade` (enter) — the element's children (fields, buttons) slide
|
|
54
|
+
* in one after another (`stagger`, `distance`).
|
|
55
|
+
*
|
|
56
|
+
* Reduced motion: field-shake / field-success only flash the outline colour,
|
|
57
|
+
* label-float and form-cascade fade in.
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
/** Decaying sideways shake keyframes (7.7). */
|
|
61
|
+
declare function shakeFrames(distance?: number, steps?: number): Keyframe[];
|
|
62
|
+
declare const FORM_FX: EffectDefinition[];
|
|
63
|
+
/** Register field-shake, field-success, label-float and form-cascade (7.7). */
|
|
64
|
+
declare function registerFormPack(): void;
|
|
65
|
+
|
|
66
|
+
export { FORM_FX, registerFormPack, shakeFrames };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
type MotionSensitivity = 'full' | 'gentle' | 'minimal' | 'static';
|
|
2
|
+
type Cleanup = () => void;
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 5.0 — unified plugin-style effect registration. Every effect (built-in or
|
|
6
|
+
* yours) is a plain object registered once and played the same way:
|
|
7
|
+
* `playEffect(el, name)`, `bindEffect(el, name, { trigger })` or
|
|
8
|
+
* `<usa-fx effect="name" trigger="click">`. Effects get a context that
|
|
9
|
+
* already applies reduced motion, motion sensitivity, intensity and the
|
|
10
|
+
* animation budget.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
declare const EFFECT_KINDS: readonly ["enter", "exit", "attention", "click", "hover", "card", "loop", "page", "background", "text", "cursor", "scroll"];
|
|
14
|
+
type EffectKind = (typeof EFFECT_KINDS)[number];
|
|
15
|
+
interface EffectContext {
|
|
16
|
+
/** Reduced motion applies (OS setting, `minimal` / `static` sensitivity). */
|
|
17
|
+
readonly reduced: boolean;
|
|
18
|
+
readonly sensitivity: MotionSensitivity;
|
|
19
|
+
/** The triggering event (pointer position for click effects), if any. */
|
|
20
|
+
readonly event?: Event;
|
|
21
|
+
/** `el.animate()` with the library's motion rules (may return `null`). */
|
|
22
|
+
animate(el: Element, keyframes: Keyframe[], options: KeyframeAnimationOptions): Animation | null;
|
|
23
|
+
/** Register teardown for long-running effects (loops, listeners). */
|
|
24
|
+
onCleanup(fn: Cleanup): void;
|
|
25
|
+
}
|
|
26
|
+
interface EffectDefinition<O extends Record<string, unknown> = Record<string, any>> {
|
|
27
|
+
/** Unique, kebab-case. */
|
|
28
|
+
name: string;
|
|
29
|
+
kind: EffectKind;
|
|
30
|
+
/** One line for docs and the gallery. */
|
|
31
|
+
description?: string;
|
|
32
|
+
/** Option defaults (merged under the caller's options). */
|
|
33
|
+
defaults?: Partial<O>;
|
|
34
|
+
/**
|
|
35
|
+
* Under reduced motion: `'skip'` (do nothing — default for loop, background
|
|
36
|
+
* and cursor effects) or `'run'` (run with `ctx.reduced === true`, the
|
|
37
|
+
* effect degrades itself — default for everything else).
|
|
38
|
+
*/
|
|
39
|
+
reduced?: 'skip' | 'run';
|
|
40
|
+
/** Play the effect. Return an Animation / Promise to be awaited, or a cleanup. */
|
|
41
|
+
run(el: HTMLElement, options: O, ctx: EffectContext): void | Cleanup | Animation | null | Promise<unknown>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 7.7 — Form motion (`motionary/fx/form`, also `motionary/components/fx-form`):
|
|
46
|
+
*
|
|
47
|
+
* - `field-shake` (attention) — the element shakes sideways with a red
|
|
48
|
+
* outline flash, the classic "invalid" cue (`distance`, `color`).
|
|
49
|
+
* - `field-success` (attention) — a green glow pulses round the element and a
|
|
50
|
+
* small check badge pops on its corner (`color`).
|
|
51
|
+
* - `label-float` (enter) — every `label` (or `[data-label]`) inside rises and
|
|
52
|
+
* settles, one after another, like floating labels (`stagger`).
|
|
53
|
+
* - `form-cascade` (enter) — the element's children (fields, buttons) slide
|
|
54
|
+
* in one after another (`stagger`, `distance`).
|
|
55
|
+
*
|
|
56
|
+
* Reduced motion: field-shake / field-success only flash the outline colour,
|
|
57
|
+
* label-float and form-cascade fade in.
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
/** Decaying sideways shake keyframes (7.7). */
|
|
61
|
+
declare function shakeFrames(distance?: number, steps?: number): Keyframe[];
|
|
62
|
+
declare const FORM_FX: EffectDefinition[];
|
|
63
|
+
/** Register field-shake, field-success, label-float and form-cascade (7.7). */
|
|
64
|
+
declare function registerFormPack(): void;
|
|
65
|
+
|
|
66
|
+
export { FORM_FX, registerFormPack, shakeFrames };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { registerEffects } from '../chunks/registry-CyKExAmE.js';
|
|
2
|
+
import '../chunks/base-2-yYc93C.js';
|
|
3
|
+
|
|
4
|
+
/** Decaying sideways shake keyframes (7.7). */
|
|
5
|
+
function shakeFrames(distance = 8, steps = 5) {
|
|
6
|
+
const f = [{ transform: 'none' }];
|
|
7
|
+
for (let i = 0; i < steps; i++) {
|
|
8
|
+
const d = Math.round(distance * (1 - i / steps) * 10) / 10;
|
|
9
|
+
f.push({ transform: `translateX(${i % 2 ? d : -d}px)` });
|
|
10
|
+
}
|
|
11
|
+
f.push({ transform: 'none' });
|
|
12
|
+
return f;
|
|
13
|
+
}
|
|
14
|
+
const fade = (el, ctx) => ctx.animate(el, [{ opacity: 0 }, { opacity: 1 }], { duration: 250 })?.finished.catch(() => undefined);
|
|
15
|
+
const ring = (el, color, ctx, duration) => ctx.animate(el, [{ boxShadow: `0 0 0 0 ${color}` }, { boxShadow: `0 0 0 4px ${color}`, offset: 0.3 }, { boxShadow: '0 0 0 0 transparent' }], { duration })?.finished.catch(() => undefined);
|
|
16
|
+
const FORM_FX = [
|
|
17
|
+
{
|
|
18
|
+
name: 'field-shake',
|
|
19
|
+
kind: 'attention',
|
|
20
|
+
description: 'Shakes the element sideways with a red outline flash — the "invalid" cue (`distance`, `color`).',
|
|
21
|
+
defaults: { distance: 8, color: 'rgba(225,29,72,.55)', duration: 450 },
|
|
22
|
+
run: (el, o, ctx) => {
|
|
23
|
+
const r = ring(el, o.color, ctx, o.duration + 200);
|
|
24
|
+
if (ctx.reduced)
|
|
25
|
+
return r;
|
|
26
|
+
return ctx.animate(el, shakeFrames(Number(o.distance) || 8), { duration: o.duration, easing: 'ease-out' })?.finished.catch(() => undefined);
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'field-success',
|
|
31
|
+
kind: 'attention',
|
|
32
|
+
description: 'A green glow pulses round the element and a check badge pops on its corner (`color`).',
|
|
33
|
+
defaults: { color: 'rgba(22,163,74,.5)', duration: 900 },
|
|
34
|
+
run: (el, o, ctx) => {
|
|
35
|
+
const r = ring(el, o.color, ctx, o.duration);
|
|
36
|
+
if (ctx.reduced)
|
|
37
|
+
return r;
|
|
38
|
+
if (getComputedStyle(el).position === 'static') {
|
|
39
|
+
const prev = el.style.position;
|
|
40
|
+
el.style.position = 'relative';
|
|
41
|
+
ctx.onCleanup(() => (el.style.position = prev));
|
|
42
|
+
}
|
|
43
|
+
const b = document.createElement('span');
|
|
44
|
+
b.setAttribute('aria-hidden', 'true');
|
|
45
|
+
b.textContent = '✓';
|
|
46
|
+
Object.assign(b.style, { position: 'absolute', right: '-6px', top: '-6px', width: '18px', height: '18px', borderRadius: '50%', background: '#16a34a', color: '#fff', font: '700 12px/18px system-ui,sans-serif', textAlign: 'center', pointerEvents: 'none' });
|
|
47
|
+
el.appendChild(b);
|
|
48
|
+
const end = () => b.remove();
|
|
49
|
+
ctx.onCleanup(end);
|
|
50
|
+
const a = ctx.animate(b, [{ transform: 'scale(0)', opacity: 0 }, { transform: 'scale(1.25)', opacity: 1, offset: 0.25 }, { transform: 'scale(1)', opacity: 1, offset: 0.4 }, { transform: 'scale(1)', opacity: 1, offset: 0.85 }, { transform: 'scale(.6)', opacity: 0 }], { duration: o.duration + 500, easing: 'ease-out' });
|
|
51
|
+
return a ? a.finished.then(end, end) : (end(), undefined);
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'label-float',
|
|
56
|
+
kind: 'enter',
|
|
57
|
+
description: 'Every `label` (or `[data-label]`) inside rises and settles one after another, like floating labels (`stagger`).',
|
|
58
|
+
defaults: { stagger: 80, duration: 450 },
|
|
59
|
+
run: (el, o, ctx) => {
|
|
60
|
+
const marked = Array.from(el.querySelectorAll('[data-label]'));
|
|
61
|
+
const labels = marked.length ? marked : Array.from(el.querySelectorAll('label'));
|
|
62
|
+
const items = labels.length ? labels : [el];
|
|
63
|
+
return Promise.all(items.map((l, i) => ctx.reduced
|
|
64
|
+
? fade(l, ctx)
|
|
65
|
+
: ctx.animate(l, [{ transform: 'translateY(14px) scale(1.12)', opacity: 0, transformOrigin: '0 50%' }, { transform: 'translateY(-3px) scale(.96)', opacity: 1, offset: 0.7 }, { transform: 'none', opacity: 1 }], { duration: o.duration, delay: i * o.stagger, easing: 'cubic-bezier(.2,.8,.2,1)', fill: 'backwards' })?.finished.catch(() => undefined))).then(() => undefined);
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'form-cascade',
|
|
70
|
+
kind: 'enter',
|
|
71
|
+
description: "The element's children (fields, buttons) slide in one after another (`stagger`, `distance`).",
|
|
72
|
+
defaults: { stagger: 70, distance: 18, duration: 500 },
|
|
73
|
+
run: (el, o, ctx) => {
|
|
74
|
+
const kids = Array.from(el.children);
|
|
75
|
+
const items = kids.length ? kids : [el];
|
|
76
|
+
return Promise.all(items.map((k, i) => ctx.reduced
|
|
77
|
+
? fade(k, ctx)
|
|
78
|
+
: ctx.animate(k, [{ transform: `translateY(${Number(o.distance) || 18}px)`, opacity: 0 }, { transform: 'none', opacity: 1 }], { duration: o.duration, delay: i * o.stagger, easing: 'cubic-bezier(.2,.8,.2,1)', fill: 'backwards' })?.finished.catch(() => undefined))).then(() => undefined);
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
];
|
|
82
|
+
/** Register field-shake, field-success, label-float and form-cascade (7.7). */
|
|
83
|
+
function registerFormPack() {
|
|
84
|
+
registerEffects(FORM_FX);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export { FORM_FX, registerFormPack, shakeFrames };
|
|
88
|
+
//# sourceMappingURL=fx-form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fx-form.js","sources":["../../src/components/fx2/form.ts"],"sourcesContent":["/**\n * 7.7 — Form motion (`motionary/fx/form`, also `motionary/components/fx-form`):\n *\n * - `field-shake` (attention) — the element shakes sideways with a red\n * outline flash, the classic \"invalid\" cue (`distance`, `color`).\n * - `field-success` (attention) — a green glow pulses round the element and a\n * small check badge pops on its corner (`color`).\n * - `label-float` (enter) — every `label` (or `[data-label]`) inside rises and\n * settles, one after another, like floating labels (`stagger`).\n * - `form-cascade` (enter) — the element's children (fields, buttons) slide\n * in one after another (`stagger`, `distance`).\n *\n * Reduced motion: field-shake / field-success only flash the outline colour,\n * label-float and form-cascade fade in.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\n\n/** Decaying sideways shake keyframes (7.7). */\nexport function shakeFrames(distance = 8, steps = 5): Keyframe[] {\n const f: Keyframe[] = [{ transform: 'none' }];\n for (let i = 0; i < steps; i++) {\n const d = Math.round(distance * (1 - i / steps) * 10) / 10;\n f.push({ transform: `translateX(${i % 2 ? d : -d}px)` });\n }\n f.push({ transform: 'none' });\n return f;\n}\n\nconst fade = (el: HTMLElement, ctx: EffectContext) => ctx.animate(el, [{ opacity: 0 }, { opacity: 1 }], { duration: 250 })?.finished.catch(() => undefined);\nconst ring = (el: HTMLElement, color: string, ctx: EffectContext, duration: number) =>\n ctx.animate(el, [{ boxShadow: `0 0 0 0 ${color}` }, { boxShadow: `0 0 0 4px ${color}`, offset: 0.3 }, { boxShadow: '0 0 0 0 transparent' }], { duration })?.finished.catch(() => undefined);\n\nexport const FORM_FX: EffectDefinition[] = [\n {\n name: 'field-shake',\n kind: 'attention',\n description: 'Shakes the element sideways with a red outline flash — the \"invalid\" cue (`distance`, `color`).',\n defaults: { distance: 8, color: 'rgba(225,29,72,.55)', duration: 450 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const r = ring(el, o.color, ctx, o.duration + 200);\n if (ctx.reduced) return r;\n return ctx.animate(el, shakeFrames(Number(o.distance) || 8), { duration: o.duration, easing: 'ease-out' })?.finished.catch(() => undefined);\n },\n },\n {\n name: 'field-success',\n kind: 'attention',\n description: 'A green glow pulses round the element and a check badge pops on its corner (`color`).',\n defaults: { color: 'rgba(22,163,74,.5)', duration: 900 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const r = ring(el, o.color, ctx, o.duration);\n if (ctx.reduced) return r;\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 b = document.createElement('span');\n b.setAttribute('aria-hidden', 'true');\n b.textContent = '✓';\n Object.assign(b.style, { position: 'absolute', right: '-6px', top: '-6px', width: '18px', height: '18px', borderRadius: '50%', background: '#16a34a', color: '#fff', font: '700 12px/18px system-ui,sans-serif', textAlign: 'center', pointerEvents: 'none' });\n el.appendChild(b);\n const end = () => b.remove();\n ctx.onCleanup(end);\n const a = ctx.animate(b, [{ transform: 'scale(0)', opacity: 0 }, { transform: 'scale(1.25)', opacity: 1, offset: 0.25 }, { transform: 'scale(1)', opacity: 1, offset: 0.4 }, { transform: 'scale(1)', opacity: 1, offset: 0.85 }, { transform: 'scale(.6)', opacity: 0 }], { duration: o.duration + 500, easing: 'ease-out' });\n return a ? a.finished.then(end, end) : (end(), undefined);\n },\n },\n {\n name: 'label-float',\n kind: 'enter',\n description: 'Every `label` (or `[data-label]`) inside rises and settles one after another, like floating labels (`stagger`).',\n defaults: { stagger: 80, duration: 450 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const marked = Array.from(el.querySelectorAll<HTMLElement>('[data-label]'));\n const labels = marked.length ? marked : Array.from(el.querySelectorAll<HTMLElement>('label'));\n const items = labels.length ? labels : [el];\n return Promise.all(\n items.map((l, i) =>\n ctx.reduced\n ? fade(l, ctx)\n : ctx.animate(l, [{ transform: 'translateY(14px) scale(1.12)', opacity: 0, transformOrigin: '0 50%' }, { transform: 'translateY(-3px) scale(.96)', opacity: 1, offset: 0.7 }, { transform: 'none', opacity: 1 }], { duration: o.duration, delay: i * o.stagger, easing: 'cubic-bezier(.2,.8,.2,1)', fill: 'backwards' })?.finished.catch(() => undefined)\n )\n ).then(() => undefined);\n },\n },\n {\n name: 'form-cascade',\n kind: 'enter',\n description: \"The element's children (fields, buttons) slide in one after another (`stagger`, `distance`).\",\n defaults: { stagger: 70, distance: 18, duration: 500 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const kids = Array.from(el.children) as HTMLElement[];\n const items = kids.length ? kids : [el];\n return Promise.all(\n items.map((k, i) =>\n ctx.reduced\n ? fade(k, ctx)\n : ctx.animate(k, [{ transform: `translateY(${Number(o.distance) || 18}px)`, opacity: 0 }, { transform: 'none', opacity: 1 }], { duration: o.duration, delay: i * o.stagger, easing: 'cubic-bezier(.2,.8,.2,1)', fill: 'backwards' })?.finished.catch(() => undefined)\n )\n ).then(() => undefined);\n },\n },\n];\n\n/** Register field-shake, field-success, label-float and form-cascade (7.7). */\nexport function registerFormPack(): void {\n registerEffects(FORM_FX);\n}\n"],"names":[],"mappings":"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"}
|
package/dist/components/fx2.cjs
CHANGED
|
@@ -16,6 +16,8 @@ var components_fxShop = require('./fx-shop.cjs');
|
|
|
16
16
|
var components_fxSocial = require('./fx-social.cjs');
|
|
17
17
|
var components_fxGame = require('./fx-game.cjs');
|
|
18
18
|
var components_fxGeo = require('./fx-geo.cjs');
|
|
19
|
+
var components_fxForm = require('./fx-form.cjs');
|
|
20
|
+
var components_fxAi = require('./fx-ai.cjs');
|
|
19
21
|
require('../chunks/registry-DehBVRDV.cjs');
|
|
20
22
|
require('../chunks/base-BaQV-2ha.cjs');
|
|
21
23
|
require('../chunks/generative-BHIj-NU0.cjs');
|
|
@@ -39,6 +41,8 @@ const EFFECT_PACKS = {
|
|
|
39
41
|
social: components_fxSocial.SOCIAL_FX,
|
|
40
42
|
game: components_fxGame.GAME_FX,
|
|
41
43
|
geo: components_fxGeo.GEO_FX,
|
|
44
|
+
form: components_fxForm.FORM_FX,
|
|
45
|
+
ai: components_fxAi.AI_FX,
|
|
42
46
|
};
|
|
43
47
|
/** Register every 6.x effect pack (idempotent). */
|
|
44
48
|
function registerEffectPacks() {
|
|
@@ -57,6 +61,8 @@ function registerEffectPacks() {
|
|
|
57
61
|
components_fxSocial.registerSocialPack();
|
|
58
62
|
components_fxGame.registerGamePack();
|
|
59
63
|
components_fxGeo.registerGeoPack();
|
|
64
|
+
components_fxForm.registerFormPack();
|
|
65
|
+
components_fxAi.registerAiPack();
|
|
60
66
|
}
|
|
61
67
|
|
|
62
68
|
exports.EFFECT_PACK_FORMAT = components_marketplace.EFFECT_PACK_FORMAT;
|
|
@@ -117,6 +123,12 @@ exports.throwPath = components_fxGame.throwPath;
|
|
|
117
123
|
exports.GEO_FX = components_fxGeo.GEO_FX;
|
|
118
124
|
exports.registerGeoPack = components_fxGeo.registerGeoPack;
|
|
119
125
|
exports.routeLength = components_fxGeo.routeLength;
|
|
126
|
+
exports.FORM_FX = components_fxForm.FORM_FX;
|
|
127
|
+
exports.registerFormPack = components_fxForm.registerFormPack;
|
|
128
|
+
exports.shakeFrames = components_fxForm.shakeFrames;
|
|
129
|
+
exports.AI_FX = components_fxAi.AI_FX;
|
|
130
|
+
exports.registerAiPack = components_fxAi.registerAiPack;
|
|
131
|
+
exports.splitWords = components_fxAi.splitWords;
|
|
120
132
|
exports.EFFECT_PACKS = EFFECT_PACKS;
|
|
121
133
|
exports.registerEffectPacks = registerEffectPacks;
|
|
122
134
|
//# 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';\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\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};\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}\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","registerGpuPack","registerTextPack","registerLightPack","register3dPack","registerMorphPack","registerTransitionsPack","registerWeatherPack","registerPhysicsPack","registerFocusPack","registerMusicPack","registerChartPack","registerShopPack","registerSocialPack","registerGamePack","registerGeoPack"],"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';\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\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};\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}\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","registerGpuPack","registerTextPack","registerLightPack","register3dPack","registerMorphPack","registerTransitionsPack","registerWeatherPack","registerPhysicsPack","registerFocusPack","registerMusicPack","registerChartPack","registerShopPack","registerSocialPack","registerGamePack","registerGeoPack","registerFormPack","registerAiPack"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA;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;;AAGX;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;AAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -541,6 +541,50 @@ declare const GEO_FX: EffectDefinition[];
|
|
|
541
541
|
/** Register route-draw, marker-pulse, pin-drop and globe-spin (7.6). */
|
|
542
542
|
declare function registerGeoPack(): void;
|
|
543
543
|
|
|
544
|
+
/**
|
|
545
|
+
* 7.7 — Form motion (`motionary/fx/form`, also `motionary/components/fx-form`):
|
|
546
|
+
*
|
|
547
|
+
* - `field-shake` (attention) — the element shakes sideways with a red
|
|
548
|
+
* outline flash, the classic "invalid" cue (`distance`, `color`).
|
|
549
|
+
* - `field-success` (attention) — a green glow pulses round the element and a
|
|
550
|
+
* small check badge pops on its corner (`color`).
|
|
551
|
+
* - `label-float` (enter) — every `label` (or `[data-label]`) inside rises and
|
|
552
|
+
* settles, one after another, like floating labels (`stagger`).
|
|
553
|
+
* - `form-cascade` (enter) — the element's children (fields, buttons) slide
|
|
554
|
+
* in one after another (`stagger`, `distance`).
|
|
555
|
+
*
|
|
556
|
+
* Reduced motion: field-shake / field-success only flash the outline colour,
|
|
557
|
+
* label-float and form-cascade fade in.
|
|
558
|
+
*/
|
|
559
|
+
|
|
560
|
+
/** Decaying sideways shake keyframes (7.7). */
|
|
561
|
+
declare function shakeFrames(distance?: number, steps?: number): Keyframe[];
|
|
562
|
+
declare const FORM_FX: EffectDefinition[];
|
|
563
|
+
/** Register field-shake, field-success, label-float and form-cascade (7.7). */
|
|
564
|
+
declare function registerFormPack(): void;
|
|
565
|
+
|
|
566
|
+
/**
|
|
567
|
+
* 7.8 — AI UI motion (`motionary/fx/ai`, also `motionary/components/fx-ai`):
|
|
568
|
+
*
|
|
569
|
+
* - `stream-text` (enter) — the element's text appears word by word, like a
|
|
570
|
+
* streamed LLM reply, with a blinking caret at the end (`speed` ms/word).
|
|
571
|
+
* - `thinking-glow` (loop) — a soft colour glow breathes and drifts round the
|
|
572
|
+
* element while a model is "thinking" (`colors`); the cleanup stops it.
|
|
573
|
+
* - `voice-wave` (attention) — the element's children bounce in a wave like
|
|
574
|
+
* voice level bars (or the element pulses when it has none) (`cycles`).
|
|
575
|
+
* - `gen-skeleton` (enter) — a shimmering skeleton covers the element, then
|
|
576
|
+
* dissolves to reveal the generated content (`hold`).
|
|
577
|
+
*
|
|
578
|
+
* Reduced motion: stream-text shows the text, thinking-glow is skipped,
|
|
579
|
+
* voice-wave does nothing, gen-skeleton fades in.
|
|
580
|
+
*/
|
|
581
|
+
|
|
582
|
+
/** Split text into words, keeping the whitespace after each (7.8). */
|
|
583
|
+
declare function splitWords(text: string): string[];
|
|
584
|
+
declare const AI_FX: EffectDefinition[];
|
|
585
|
+
/** Register stream-text, thinking-glow, voice-wave and gen-skeleton (7.8). */
|
|
586
|
+
declare function registerAiPack(): void;
|
|
587
|
+
|
|
544
588
|
/**
|
|
545
589
|
* 5.5 — generative backgrounds on Canvas 2D, registered through
|
|
546
590
|
* `registerEffect()` (kind `background`): `flow-field`, `voronoi`,
|
|
@@ -650,5 +694,5 @@ declare const EFFECT_PACKS: Record<string, EffectDefinition[]>;
|
|
|
650
694
|
/** Register every 6.x effect pack (idempotent). */
|
|
651
695
|
declare function registerEffectPacks(): void;
|
|
652
696
|
|
|
653
|
-
export { CHART_FX, DEPTH3_FX, EFFECT_PACKS, EFFECT_PACK_FORMAT, FOCUS_FX, GAME_FX, GEO_FX, GLSL_HEAD, GPU_FX, LIGHT_FX, MORPH2_FX, MUSIC_FX, PHYSICS2_FX, SHOP_FX, SOCIAL_FX, TEXT3_FX, TRANSITIONS2_FX, VerletWorld, WEATHER_FX, WGSL_HEAD, arcPath, crossDocumentTransitions, fanAngles, fieldFallback, glslToWgsl, loadEffectPack, musicSample, packManifest, pageTransition, parseFigure, pointsToPath, register3dPack, registerChartPack, registerEffectPacks, registerFocusPack, registerGamePack, registerGeoPack, registerGpuPack, registerLightPack, registerMorphPack, registerMusicPack, registerPhysicsPack, registerShopPack, registerSocialPack, registerTextPack, registerTransitionsPack, registerWeatherPack, routeLength, samplePath, shaderBackground, skyAt, splitChars, supportsWebGL2, supportsWebGPU, syntheticSample, throwPath, trackPointer, validateManifest, webgpuBackground, wgslModule };
|
|
697
|
+
export { AI_FX, CHART_FX, DEPTH3_FX, EFFECT_PACKS, EFFECT_PACK_FORMAT, FOCUS_FX, FORM_FX, GAME_FX, GEO_FX, GLSL_HEAD, GPU_FX, LIGHT_FX, MORPH2_FX, MUSIC_FX, PHYSICS2_FX, SHOP_FX, SOCIAL_FX, TEXT3_FX, TRANSITIONS2_FX, VerletWorld, WEATHER_FX, WGSL_HEAD, arcPath, crossDocumentTransitions, fanAngles, fieldFallback, glslToWgsl, loadEffectPack, musicSample, packManifest, pageTransition, parseFigure, pointsToPath, register3dPack, registerAiPack, registerChartPack, registerEffectPacks, registerFocusPack, registerFormPack, registerGamePack, registerGeoPack, registerGpuPack, registerLightPack, registerMorphPack, registerMusicPack, registerPhysicsPack, registerShopPack, registerSocialPack, registerTextPack, registerTransitionsPack, registerWeatherPack, routeLength, samplePath, shaderBackground, shakeFrames, skyAt, splitChars, splitWords, supportsWebGL2, supportsWebGPU, syntheticSample, throwPath, trackPointer, validateManifest, webgpuBackground, wgslModule };
|
|
654
698
|
export type { EffectPackManifest, ShaderSpec };
|
package/dist/components/fx2.d.ts
CHANGED
|
@@ -541,6 +541,50 @@ declare const GEO_FX: EffectDefinition[];
|
|
|
541
541
|
/** Register route-draw, marker-pulse, pin-drop and globe-spin (7.6). */
|
|
542
542
|
declare function registerGeoPack(): void;
|
|
543
543
|
|
|
544
|
+
/**
|
|
545
|
+
* 7.7 — Form motion (`motionary/fx/form`, also `motionary/components/fx-form`):
|
|
546
|
+
*
|
|
547
|
+
* - `field-shake` (attention) — the element shakes sideways with a red
|
|
548
|
+
* outline flash, the classic "invalid" cue (`distance`, `color`).
|
|
549
|
+
* - `field-success` (attention) — a green glow pulses round the element and a
|
|
550
|
+
* small check badge pops on its corner (`color`).
|
|
551
|
+
* - `label-float` (enter) — every `label` (or `[data-label]`) inside rises and
|
|
552
|
+
* settles, one after another, like floating labels (`stagger`).
|
|
553
|
+
* - `form-cascade` (enter) — the element's children (fields, buttons) slide
|
|
554
|
+
* in one after another (`stagger`, `distance`).
|
|
555
|
+
*
|
|
556
|
+
* Reduced motion: field-shake / field-success only flash the outline colour,
|
|
557
|
+
* label-float and form-cascade fade in.
|
|
558
|
+
*/
|
|
559
|
+
|
|
560
|
+
/** Decaying sideways shake keyframes (7.7). */
|
|
561
|
+
declare function shakeFrames(distance?: number, steps?: number): Keyframe[];
|
|
562
|
+
declare const FORM_FX: EffectDefinition[];
|
|
563
|
+
/** Register field-shake, field-success, label-float and form-cascade (7.7). */
|
|
564
|
+
declare function registerFormPack(): void;
|
|
565
|
+
|
|
566
|
+
/**
|
|
567
|
+
* 7.8 — AI UI motion (`motionary/fx/ai`, also `motionary/components/fx-ai`):
|
|
568
|
+
*
|
|
569
|
+
* - `stream-text` (enter) — the element's text appears word by word, like a
|
|
570
|
+
* streamed LLM reply, with a blinking caret at the end (`speed` ms/word).
|
|
571
|
+
* - `thinking-glow` (loop) — a soft colour glow breathes and drifts round the
|
|
572
|
+
* element while a model is "thinking" (`colors`); the cleanup stops it.
|
|
573
|
+
* - `voice-wave` (attention) — the element's children bounce in a wave like
|
|
574
|
+
* voice level bars (or the element pulses when it has none) (`cycles`).
|
|
575
|
+
* - `gen-skeleton` (enter) — a shimmering skeleton covers the element, then
|
|
576
|
+
* dissolves to reveal the generated content (`hold`).
|
|
577
|
+
*
|
|
578
|
+
* Reduced motion: stream-text shows the text, thinking-glow is skipped,
|
|
579
|
+
* voice-wave does nothing, gen-skeleton fades in.
|
|
580
|
+
*/
|
|
581
|
+
|
|
582
|
+
/** Split text into words, keeping the whitespace after each (7.8). */
|
|
583
|
+
declare function splitWords(text: string): string[];
|
|
584
|
+
declare const AI_FX: EffectDefinition[];
|
|
585
|
+
/** Register stream-text, thinking-glow, voice-wave and gen-skeleton (7.8). */
|
|
586
|
+
declare function registerAiPack(): void;
|
|
587
|
+
|
|
544
588
|
/**
|
|
545
589
|
* 5.5 — generative backgrounds on Canvas 2D, registered through
|
|
546
590
|
* `registerEffect()` (kind `background`): `flow-field`, `voronoi`,
|
|
@@ -650,5 +694,5 @@ declare const EFFECT_PACKS: Record<string, EffectDefinition[]>;
|
|
|
650
694
|
/** Register every 6.x effect pack (idempotent). */
|
|
651
695
|
declare function registerEffectPacks(): void;
|
|
652
696
|
|
|
653
|
-
export { CHART_FX, DEPTH3_FX, EFFECT_PACKS, EFFECT_PACK_FORMAT, FOCUS_FX, GAME_FX, GEO_FX, GLSL_HEAD, GPU_FX, LIGHT_FX, MORPH2_FX, MUSIC_FX, PHYSICS2_FX, SHOP_FX, SOCIAL_FX, TEXT3_FX, TRANSITIONS2_FX, VerletWorld, WEATHER_FX, WGSL_HEAD, arcPath, crossDocumentTransitions, fanAngles, fieldFallback, glslToWgsl, loadEffectPack, musicSample, packManifest, pageTransition, parseFigure, pointsToPath, register3dPack, registerChartPack, registerEffectPacks, registerFocusPack, registerGamePack, registerGeoPack, registerGpuPack, registerLightPack, registerMorphPack, registerMusicPack, registerPhysicsPack, registerShopPack, registerSocialPack, registerTextPack, registerTransitionsPack, registerWeatherPack, routeLength, samplePath, shaderBackground, skyAt, splitChars, supportsWebGL2, supportsWebGPU, syntheticSample, throwPath, trackPointer, validateManifest, webgpuBackground, wgslModule };
|
|
697
|
+
export { AI_FX, CHART_FX, DEPTH3_FX, EFFECT_PACKS, EFFECT_PACK_FORMAT, FOCUS_FX, FORM_FX, GAME_FX, GEO_FX, GLSL_HEAD, GPU_FX, LIGHT_FX, MORPH2_FX, MUSIC_FX, PHYSICS2_FX, SHOP_FX, SOCIAL_FX, TEXT3_FX, TRANSITIONS2_FX, VerletWorld, WEATHER_FX, WGSL_HEAD, arcPath, crossDocumentTransitions, fanAngles, fieldFallback, glslToWgsl, loadEffectPack, musicSample, packManifest, pageTransition, parseFigure, pointsToPath, register3dPack, registerAiPack, registerChartPack, registerEffectPacks, registerFocusPack, registerFormPack, registerGamePack, registerGeoPack, registerGpuPack, registerLightPack, registerMorphPack, registerMusicPack, registerPhysicsPack, registerShopPack, registerSocialPack, registerTextPack, registerTransitionsPack, registerWeatherPack, routeLength, samplePath, shaderBackground, shakeFrames, skyAt, splitChars, splitWords, supportsWebGL2, supportsWebGPU, syntheticSample, throwPath, trackPointer, validateManifest, webgpuBackground, wgslModule };
|
|
654
698
|
export type { EffectPackManifest, ShaderSpec };
|
package/dist/components/fx2.js
CHANGED
|
@@ -27,6 +27,10 @@ import { GAME_FX, registerGamePack } from './fx-game.js';
|
|
|
27
27
|
export { throwPath } from './fx-game.js';
|
|
28
28
|
import { GEO_FX, registerGeoPack } from './fx-geo.js';
|
|
29
29
|
export { routeLength } from './fx-geo.js';
|
|
30
|
+
import { FORM_FX, registerFormPack } from './fx-form.js';
|
|
31
|
+
export { shakeFrames } from './fx-form.js';
|
|
32
|
+
import { AI_FX, registerAiPack } from './fx-ai.js';
|
|
33
|
+
export { splitWords } from './fx-ai.js';
|
|
30
34
|
import '../chunks/registry-CyKExAmE.js';
|
|
31
35
|
import '../chunks/base-2-yYc93C.js';
|
|
32
36
|
import '../chunks/generative-2LhxG5BJ.js';
|
|
@@ -50,6 +54,8 @@ const EFFECT_PACKS = {
|
|
|
50
54
|
social: SOCIAL_FX,
|
|
51
55
|
game: GAME_FX,
|
|
52
56
|
geo: GEO_FX,
|
|
57
|
+
form: FORM_FX,
|
|
58
|
+
ai: AI_FX,
|
|
53
59
|
};
|
|
54
60
|
/** Register every 6.x effect pack (idempotent). */
|
|
55
61
|
function registerEffectPacks() {
|
|
@@ -68,7 +74,9 @@ function registerEffectPacks() {
|
|
|
68
74
|
registerSocialPack();
|
|
69
75
|
registerGamePack();
|
|
70
76
|
registerGeoPack();
|
|
77
|
+
registerFormPack();
|
|
78
|
+
registerAiPack();
|
|
71
79
|
}
|
|
72
80
|
|
|
73
|
-
export { CHART_FX, DEPTH3_FX, EFFECT_PACKS, FOCUS_FX, GAME_FX, GEO_FX, GPU_FX, LIGHT_FX, MORPH2_FX, MUSIC_FX, PHYSICS2_FX, SHOP_FX, SOCIAL_FX, TEXT3_FX, TRANSITIONS2_FX, WEATHER_FX, register3dPack, registerChartPack, registerEffectPacks, registerFocusPack, registerGamePack, registerGeoPack, registerGpuPack, registerLightPack, registerMorphPack, registerMusicPack, registerPhysicsPack, registerShopPack, registerSocialPack, registerTextPack, registerTransitionsPack, registerWeatherPack };
|
|
81
|
+
export { AI_FX, CHART_FX, DEPTH3_FX, EFFECT_PACKS, FOCUS_FX, FORM_FX, GAME_FX, GEO_FX, GPU_FX, LIGHT_FX, MORPH2_FX, MUSIC_FX, PHYSICS2_FX, SHOP_FX, SOCIAL_FX, TEXT3_FX, TRANSITIONS2_FX, WEATHER_FX, register3dPack, registerAiPack, registerChartPack, registerEffectPacks, registerFocusPack, registerFormPack, registerGamePack, registerGeoPack, registerGpuPack, registerLightPack, registerMorphPack, registerMusicPack, registerPhysicsPack, registerShopPack, registerSocialPack, registerTextPack, registerTransitionsPack, registerWeatherPack };
|
|
74
82
|
//# 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';\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\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};\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}\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';\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\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};\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}\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA;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;;AAGX;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;AAClB;;;;"}
|