use-scroll-animate 6.4.0 → 6.5.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 +14 -0
- package/dist/components/fx-3d.cjs +236 -0
- package/dist/components/fx-3d.cjs.map +1 -0
- package/dist/components/fx-3d.d.cts +67 -0
- package/dist/components/fx-3d.d.ts +67 -0
- package/dist/components/fx-3d.js +233 -0
- package/dist/components/fx-3d.js.map +1 -0
- package/dist/components/fx2.cjs +5 -0
- package/dist/components/fx2.cjs.map +1 -1
- package/dist/components/fx2.d.cts +24 -1
- package/dist/components/fx2.d.ts +24 -1
- package/dist/components/fx2.js +4 -1
- package/dist/components/fx2.js.map +1 -1
- package/dist/components/widgets.cjs +504 -21
- package/dist/components/widgets.cjs.map +1 -1
- package/dist/components/widgets.d.cts +67 -2
- package/dist/components/widgets.d.ts +67 -2
- package/dist/components/widgets.js +501 -22
- 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 +26 -0
- package/package.json +11 -1
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { c as registerEffects } from '../chunks/registry-Bu5NrAyA.js';
|
|
2
|
+
import { a as all } from '../chunks/shared-CkKHWrtJ.js';
|
|
3
|
+
import { trackPointer } from './fx-light.js';
|
|
4
|
+
import '../chunks/base-DchG4q_S.js';
|
|
5
|
+
import '../chunks/generative-2LhxG5BJ.js';
|
|
6
|
+
|
|
7
|
+
const layers = (el) => {
|
|
8
|
+
const marked = Array.from(el.querySelectorAll('[data-depth]'));
|
|
9
|
+
return marked.length ? marked : Array.from(el.children);
|
|
10
|
+
};
|
|
11
|
+
const raf = (f) => (typeof requestAnimationFrame === 'function' ? requestAnimationFrame(f) : 0);
|
|
12
|
+
const caf = (h) => {
|
|
13
|
+
if (h && typeof cancelAnimationFrame === 'function')
|
|
14
|
+
cancelAnimationFrame(h);
|
|
15
|
+
};
|
|
16
|
+
const DEPTH3_FX = [
|
|
17
|
+
{
|
|
18
|
+
name: 'depth-stack',
|
|
19
|
+
kind: 'card',
|
|
20
|
+
reduced: 'run',
|
|
21
|
+
description: 'The children (or `[data-depth]` layers) separate in Z and parallax as the card tilts toward the pointer (persistent; `tilt` deg, `depth` px between layers).',
|
|
22
|
+
defaults: { tilt: 14, depth: 28 },
|
|
23
|
+
run: (el, o, ctx) => {
|
|
24
|
+
const prev = [el.style.transform, el.style.transformStyle, el.style.transition];
|
|
25
|
+
el.style.transformStyle = 'preserve-3d';
|
|
26
|
+
el.style.transition = 'transform .25s ease-out';
|
|
27
|
+
const ls = layers(el);
|
|
28
|
+
const saved = ls.map((l) => [l.style.transform, l.style.transition]);
|
|
29
|
+
ls.forEach((l) => (l.style.transition = 'transform .3s ease-out'));
|
|
30
|
+
const stop = trackPointer(el, ctx, (x, y, inside) => {
|
|
31
|
+
const rx = (0.5 - y) * 2 * o.tilt;
|
|
32
|
+
const ry = (x - 0.5) * 2 * o.tilt;
|
|
33
|
+
el.style.transform = ctx.reduced ? '' : inside ? `perspective(800px) rotateX(${rx.toFixed(2)}deg) rotateY(${ry.toFixed(2)}deg)` : 'perspective(800px) rotateX(6deg) rotateY(-8deg)';
|
|
34
|
+
ls.forEach((l, i) => {
|
|
35
|
+
const d = ctx.reduced ? 0 : Number(l.dataset.depth || i + 1) * o.depth * (inside ? 1 : 0.5);
|
|
36
|
+
l.style.transform = `translateZ(${d.toFixed(1)}px)`;
|
|
37
|
+
});
|
|
38
|
+
}, 0.5, 0.5);
|
|
39
|
+
return () => {
|
|
40
|
+
stop();
|
|
41
|
+
[el.style.transform, el.style.transformStyle, el.style.transition] = prev;
|
|
42
|
+
ls.forEach((l, i) => ([l.style.transform, l.style.transition] = saved[i]));
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'product-spin',
|
|
48
|
+
kind: 'card',
|
|
49
|
+
description: 'A 360° product viewer: drag to turn the element in 3D with inertia; idles with a slow turntable spin (persistent; `idle` deg/s, `friction`, `tilt`).',
|
|
50
|
+
defaults: { idle: 18, friction: 0.94, tilt: -8 },
|
|
51
|
+
run: (el, o, ctx) => {
|
|
52
|
+
const prev = [el.style.transform, el.style.touchAction, el.style.cursor];
|
|
53
|
+
el.style.touchAction = 'pan-y';
|
|
54
|
+
el.style.cursor = 'grab';
|
|
55
|
+
let a = 0;
|
|
56
|
+
let v = 0;
|
|
57
|
+
let drag = false;
|
|
58
|
+
let lx = 0;
|
|
59
|
+
let h = 0;
|
|
60
|
+
let last = performance.now();
|
|
61
|
+
const paint = () => (el.style.transform = `perspective(900px) rotateX(${o.tilt}deg) rotateY(${a.toFixed(2)}deg)`);
|
|
62
|
+
paint();
|
|
63
|
+
const tick = (now) => {
|
|
64
|
+
const dt = Math.min(64, now - last) / 1000;
|
|
65
|
+
last = now;
|
|
66
|
+
if (!drag) {
|
|
67
|
+
v *= o.friction;
|
|
68
|
+
a += v * dt + (Math.abs(v) < 4 ? o.idle * dt : 0);
|
|
69
|
+
}
|
|
70
|
+
paint();
|
|
71
|
+
h = raf(tick);
|
|
72
|
+
};
|
|
73
|
+
h = raf(tick);
|
|
74
|
+
const down = (e) => {
|
|
75
|
+
drag = true;
|
|
76
|
+
lx = e.clientX;
|
|
77
|
+
v = 0;
|
|
78
|
+
el.style.cursor = 'grabbing';
|
|
79
|
+
el.setPointerCapture?.(e.pointerId);
|
|
80
|
+
};
|
|
81
|
+
const move = (e) => {
|
|
82
|
+
if (!drag)
|
|
83
|
+
return;
|
|
84
|
+
const dx = e.clientX - lx;
|
|
85
|
+
lx = e.clientX;
|
|
86
|
+
a += dx * 0.6;
|
|
87
|
+
v = dx * 36;
|
|
88
|
+
};
|
|
89
|
+
const up = () => {
|
|
90
|
+
drag = false;
|
|
91
|
+
el.style.cursor = 'grab';
|
|
92
|
+
};
|
|
93
|
+
el.addEventListener('pointerdown', down);
|
|
94
|
+
el.addEventListener('pointermove', move);
|
|
95
|
+
el.addEventListener('pointerup', up);
|
|
96
|
+
el.addEventListener('pointercancel', up);
|
|
97
|
+
return () => {
|
|
98
|
+
caf(h);
|
|
99
|
+
el.removeEventListener('pointerdown', down);
|
|
100
|
+
el.removeEventListener('pointermove', move);
|
|
101
|
+
el.removeEventListener('pointerup', up);
|
|
102
|
+
el.removeEventListener('pointercancel', up);
|
|
103
|
+
[el.style.transform, el.style.touchAction, el.style.cursor] = prev;
|
|
104
|
+
};
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
name: 'card-flip-3d',
|
|
109
|
+
kind: 'click',
|
|
110
|
+
description: 'A thick card flips to its back face (second child) and back, showing its edge (`duration`, `axis` y | x). The faces swap `aria-hidden`.',
|
|
111
|
+
defaults: { duration: 800, axis: 'y', thickness: 6 },
|
|
112
|
+
run: (el, o, ctx) => {
|
|
113
|
+
const [front, back] = Array.from(el.children);
|
|
114
|
+
if (!front || !back)
|
|
115
|
+
return null;
|
|
116
|
+
const R = o.axis === 'x' ? 'rotateX' : 'rotateY';
|
|
117
|
+
if (!el.dataset.usaFlip) {
|
|
118
|
+
el.dataset.usaFlip = 'front';
|
|
119
|
+
el.style.display = 'grid';
|
|
120
|
+
el.style.transformStyle = 'preserve-3d';
|
|
121
|
+
for (const f of [front, back]) {
|
|
122
|
+
f.style.gridArea = '1 / 1';
|
|
123
|
+
f.style.backfaceVisibility = 'hidden';
|
|
124
|
+
}
|
|
125
|
+
back.setAttribute('aria-hidden', 'true');
|
|
126
|
+
back.style.transform = `${R}(180deg)`;
|
|
127
|
+
}
|
|
128
|
+
const toBack = el.dataset.usaFlip === 'front';
|
|
129
|
+
el.dataset.usaFlip = toBack ? 'back' : 'front';
|
|
130
|
+
front.setAttribute('aria-hidden', String(toBack));
|
|
131
|
+
back.setAttribute('aria-hidden', String(!toBack));
|
|
132
|
+
const from = toBack ? 0 : 180;
|
|
133
|
+
const to = toBack ? 180 : 0;
|
|
134
|
+
el.style.transform = `perspective(1000px) ${R}(${to}deg)`;
|
|
135
|
+
if (ctx.reduced)
|
|
136
|
+
return ctx.animate(toBack ? back : front, [{ opacity: 0 }, { opacity: 1 }], { duration: 200 });
|
|
137
|
+
return ctx.animate(el, [
|
|
138
|
+
{ transform: `perspective(1000px) ${R}(${from}deg) scale(1)` },
|
|
139
|
+
{ transform: `perspective(1000px) ${R}(${(from + to) / 2}deg) scale(1.08) translateZ(${o.thickness * 4}px)`, offset: 0.5 },
|
|
140
|
+
{ transform: `perspective(1000px) ${R}(${to}deg) scale(1)` },
|
|
141
|
+
], { duration: o.duration, easing: 'cubic-bezier(.45,.05,.25,1)' });
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
name: 'origami',
|
|
146
|
+
kind: 'enter',
|
|
147
|
+
description: 'The element unfolds panel by panel like folded paper (`panels`, `duration` per fold). Uses clipped copies during the fold.',
|
|
148
|
+
defaults: { panels: 4, duration: 420 },
|
|
149
|
+
reduced: 'skip',
|
|
150
|
+
run: (el, o, ctx) => {
|
|
151
|
+
if (el.dataset.usaOrigami)
|
|
152
|
+
return null;
|
|
153
|
+
el.dataset.usaOrigami = '1';
|
|
154
|
+
const n = Math.max(2, Math.min(8, Math.round(o.panels)));
|
|
155
|
+
if (getComputedStyle(el).position === 'static')
|
|
156
|
+
el.style.position = 'relative';
|
|
157
|
+
const prevVis = el.style.visibility;
|
|
158
|
+
const wrap = document.createElement('div');
|
|
159
|
+
wrap.setAttribute('aria-hidden', 'true');
|
|
160
|
+
wrap.style.cssText = 'position:absolute;inset:0;pointer-events:none;perspective:900px;visibility:visible';
|
|
161
|
+
const anims = [];
|
|
162
|
+
for (let i = 0; i < n; i++) {
|
|
163
|
+
const slice = el.cloneNode(true);
|
|
164
|
+
slice.removeAttribute('id');
|
|
165
|
+
slice.querySelectorAll('[id]').forEach((x) => x.removeAttribute('id'));
|
|
166
|
+
const top = (i / n) * 100;
|
|
167
|
+
const bottom = 100 - ((i + 1) / n) * 100;
|
|
168
|
+
slice.style.cssText += `;position:absolute;inset:0;margin:0;width:100%;height:100%;box-sizing:border-box;clip-path:inset(${top}% 0 ${bottom}% 0);transform-origin:50% ${top}%;visibility:visible`;
|
|
169
|
+
wrap.appendChild(slice);
|
|
170
|
+
const dir = i % 2 ? 1 : -1;
|
|
171
|
+
anims.push(ctx.animate(slice, [
|
|
172
|
+
{ transform: `rotateX(${dir * 92}deg)`, filter: 'brightness(.55)', opacity: 0 },
|
|
173
|
+
{ opacity: 1, offset: 0.15 },
|
|
174
|
+
{ transform: 'rotateX(0)', filter: 'brightness(1)', opacity: 1 },
|
|
175
|
+
], { duration: o.duration, delay: i * o.duration * 0.55, easing: 'cubic-bezier(.3,.7,.3,1)', fill: 'backwards' }));
|
|
176
|
+
}
|
|
177
|
+
el.style.visibility = 'hidden';
|
|
178
|
+
el.appendChild(wrap);
|
|
179
|
+
const done = () => {
|
|
180
|
+
wrap.remove();
|
|
181
|
+
el.style.visibility = prevVis;
|
|
182
|
+
delete el.dataset.usaOrigami;
|
|
183
|
+
};
|
|
184
|
+
return all(anims).then(done, done);
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
name: 'orbit-camera',
|
|
189
|
+
kind: 'scroll',
|
|
190
|
+
description: 'While the element scrolls through the viewport the camera orbits its 3D children (persistent; `range` deg of orbit, `tilt`, `depth` px between layers).',
|
|
191
|
+
defaults: { range: 70, tilt: 10, depth: 60 },
|
|
192
|
+
run: (el, o, ctx) => {
|
|
193
|
+
const prev = [el.style.transform, el.style.transformStyle];
|
|
194
|
+
const ls = layers(el);
|
|
195
|
+
el.style.transformStyle = 'preserve-3d';
|
|
196
|
+
if (!ctx.reduced)
|
|
197
|
+
ls.forEach((l, i) => (l.style.transform = `translateZ(${((i - (ls.length - 1) / 2) * o.depth).toFixed(0)}px)`));
|
|
198
|
+
let h = 0;
|
|
199
|
+
const paint = () => {
|
|
200
|
+
h = 0;
|
|
201
|
+
const r = el.getBoundingClientRect();
|
|
202
|
+
const vh = window.innerHeight || 800;
|
|
203
|
+
const p = Math.min(1, Math.max(0, (vh - r.top) / (vh + r.height)));
|
|
204
|
+
el.style.setProperty('--usa-orbit', p.toFixed(3));
|
|
205
|
+
if (!ctx.reduced)
|
|
206
|
+
el.style.transform = `perspective(1000px) rotateX(${o.tilt}deg) rotateY(${((p - 0.5) * o.range).toFixed(2)}deg)`;
|
|
207
|
+
};
|
|
208
|
+
paint();
|
|
209
|
+
const on = () => {
|
|
210
|
+
if (!h)
|
|
211
|
+
h = raf(paint);
|
|
212
|
+
};
|
|
213
|
+
if (!ctx.reduced) {
|
|
214
|
+
window.addEventListener('scroll', on, { passive: true });
|
|
215
|
+
window.addEventListener('resize', on);
|
|
216
|
+
}
|
|
217
|
+
return () => {
|
|
218
|
+
caf(h);
|
|
219
|
+
window.removeEventListener('scroll', on);
|
|
220
|
+
window.removeEventListener('resize', on);
|
|
221
|
+
[el.style.transform, el.style.transformStyle] = prev;
|
|
222
|
+
ls.forEach((l) => (l.style.transform = ''));
|
|
223
|
+
};
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
];
|
|
227
|
+
/** Register the 6.5 3D pack (idempotent). */
|
|
228
|
+
function register3dEffects() {
|
|
229
|
+
registerEffects(DEPTH3_FX);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
export { DEPTH3_FX, register3dEffects };
|
|
233
|
+
//# sourceMappingURL=fx-3d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fx-3d.js","sources":["../../src/components/fx2/depth3.ts"],"sourcesContent":["/**\n * 6.5 — 3D scene cards (`motionary/components/fx-3d`), registered through\n * `registerEffect()`:\n *\n * - `depth-stack` (card, persistent) — the children (or `[data-depth]`\n * layers) separate in Z and parallax against each other as the card tilts\n * toward the pointer.\n * - `product-spin` (card, persistent) — a 360° product viewer: drag to turn\n * the element in 3D with inertia, idles with a slow turntable spin.\n * - `card-flip-3d` (click) — a thick card flips to its back face (second\n * child) with an edge that shows its depth.\n * - `origami` (enter) — the element unfolds panel by panel like folded paper.\n * - `orbit-camera` (scroll, persistent) — while the element scrolls through\n * the viewport the camera orbits its 3D children.\n *\n * Reduced motion: no tilt, spin, orbit or fold; the flip swaps faces with a\n * crossfade.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\nimport { all } from '../effects/shared';\nimport { trackPointer } from './light';\n\nconst layers = (el: HTMLElement): HTMLElement[] => {\n const marked = Array.from(el.querySelectorAll<HTMLElement>('[data-depth]'));\n return marked.length ? marked : (Array.from(el.children) as HTMLElement[]);\n};\n\nconst raf = (f: FrameRequestCallback): number => (typeof requestAnimationFrame === 'function' ? requestAnimationFrame(f) : 0);\nconst caf = (h: number): void => {\n if (h && typeof cancelAnimationFrame === 'function') cancelAnimationFrame(h);\n};\n\nexport const DEPTH3_FX: EffectDefinition[] = [\n {\n name: 'depth-stack',\n kind: 'card',\n reduced: 'run',\n description: 'The children (or `[data-depth]` layers) separate in Z and parallax as the card tilts toward the pointer (persistent; `tilt` deg, `depth` px between layers).',\n defaults: { tilt: 14, depth: 28 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const prev = [el.style.transform, el.style.transformStyle, el.style.transition];\n el.style.transformStyle = 'preserve-3d';\n el.style.transition = 'transform .25s ease-out';\n const ls = layers(el);\n const saved = ls.map((l) => [l.style.transform, l.style.transition] as const);\n ls.forEach((l) => (l.style.transition = 'transform .3s ease-out'));\n const stop = trackPointer(el, ctx, (x, y, inside) => {\n const rx = (0.5 - y) * 2 * o.tilt;\n const ry = (x - 0.5) * 2 * o.tilt;\n el.style.transform = ctx.reduced ? '' : inside ? `perspective(800px) rotateX(${rx.toFixed(2)}deg) rotateY(${ry.toFixed(2)}deg)` : 'perspective(800px) rotateX(6deg) rotateY(-8deg)';\n ls.forEach((l, i) => {\n const d = ctx.reduced ? 0 : Number(l.dataset.depth || i + 1) * o.depth * (inside ? 1 : 0.5);\n l.style.transform = `translateZ(${d.toFixed(1)}px)`;\n });\n }, 0.5, 0.5);\n return () => {\n stop();\n [el.style.transform, el.style.transformStyle, el.style.transition] = prev;\n ls.forEach((l, i) => ([l.style.transform, l.style.transition] = saved[i]));\n };\n },\n },\n {\n name: 'product-spin',\n kind: 'card',\n description: 'A 360° product viewer: drag to turn the element in 3D with inertia; idles with a slow turntable spin (persistent; `idle` deg/s, `friction`, `tilt`).',\n defaults: { idle: 18, friction: 0.94, tilt: -8 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const prev = [el.style.transform, el.style.touchAction, el.style.cursor];\n el.style.touchAction = 'pan-y';\n el.style.cursor = 'grab';\n let a = 0;\n let v = 0;\n let drag = false;\n let lx = 0;\n let h = 0;\n let last = performance.now();\n const paint = () => (el.style.transform = `perspective(900px) rotateX(${o.tilt}deg) rotateY(${a.toFixed(2)}deg)`);\n paint();\n const tick = (now: number) => {\n const dt = Math.min(64, now - last) / 1000;\n last = now;\n if (!drag) {\n v *= o.friction;\n a += v * dt + (Math.abs(v) < 4 ? o.idle * dt : 0);\n }\n paint();\n h = raf(tick);\n };\n h = raf(tick);\n const down = (e: PointerEvent) => {\n drag = true;\n lx = e.clientX;\n v = 0;\n el.style.cursor = 'grabbing';\n el.setPointerCapture?.(e.pointerId);\n };\n const move = (e: PointerEvent) => {\n if (!drag) return;\n const dx = e.clientX - lx;\n lx = e.clientX;\n a += dx * 0.6;\n v = dx * 36;\n };\n const up = () => {\n drag = false;\n el.style.cursor = 'grab';\n };\n el.addEventListener('pointerdown', down);\n el.addEventListener('pointermove', move);\n el.addEventListener('pointerup', up);\n el.addEventListener('pointercancel', up);\n return () => {\n caf(h);\n el.removeEventListener('pointerdown', down);\n el.removeEventListener('pointermove', move);\n el.removeEventListener('pointerup', up);\n el.removeEventListener('pointercancel', up);\n [el.style.transform, el.style.touchAction, el.style.cursor] = prev;\n };\n },\n },\n {\n name: 'card-flip-3d',\n kind: 'click',\n description: 'A thick card flips to its back face (second child) and back, showing its edge (`duration`, `axis` y | x). The faces swap `aria-hidden`.',\n defaults: { duration: 800, axis: 'y', thickness: 6 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const [front, back] = Array.from(el.children) as HTMLElement[];\n if (!front || !back) return null;\n const R = o.axis === 'x' ? 'rotateX' : 'rotateY';\n if (!el.dataset.usaFlip) {\n el.dataset.usaFlip = 'front';\n el.style.display = 'grid';\n el.style.transformStyle = 'preserve-3d';\n for (const f of [front, back]) {\n f.style.gridArea = '1 / 1';\n f.style.backfaceVisibility = 'hidden';\n }\n back.setAttribute('aria-hidden', 'true');\n back.style.transform = `${R}(180deg)`;\n }\n const toBack = el.dataset.usaFlip === 'front';\n el.dataset.usaFlip = toBack ? 'back' : 'front';\n front.setAttribute('aria-hidden', String(toBack));\n back.setAttribute('aria-hidden', String(!toBack));\n const from = toBack ? 0 : 180;\n const to = toBack ? 180 : 0;\n el.style.transform = `perspective(1000px) ${R}(${to}deg)`;\n if (ctx.reduced) return ctx.animate(toBack ? back : front, [{ opacity: 0 }, { opacity: 1 }], { duration: 200 });\n return ctx.animate(el, [\n { transform: `perspective(1000px) ${R}(${from}deg) scale(1)` },\n { transform: `perspective(1000px) ${R}(${(from + to) / 2}deg) scale(1.08) translateZ(${o.thickness * 4}px)`, offset: 0.5 },\n { transform: `perspective(1000px) ${R}(${to}deg) scale(1)` },\n ], { duration: o.duration, easing: 'cubic-bezier(.45,.05,.25,1)' });\n },\n },\n {\n name: 'origami',\n kind: 'enter',\n description: 'The element unfolds panel by panel like folded paper (`panels`, `duration` per fold). Uses clipped copies during the fold.',\n defaults: { panels: 4, duration: 420 },\n reduced: 'skip',\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (el.dataset.usaOrigami) return null;\n el.dataset.usaOrigami = '1';\n const n = Math.max(2, Math.min(8, Math.round(o.panels)));\n if (getComputedStyle(el).position === 'static') el.style.position = 'relative';\n const prevVis = el.style.visibility;\n const wrap = document.createElement('div');\n wrap.setAttribute('aria-hidden', 'true');\n wrap.style.cssText = 'position:absolute;inset:0;pointer-events:none;perspective:900px;visibility:visible';\n const anims: (Animation | null)[] = [];\n for (let i = 0; i < n; i++) {\n const slice = el.cloneNode(true) as HTMLElement;\n slice.removeAttribute('id');\n slice.querySelectorAll('[id]').forEach((x) => x.removeAttribute('id'));\n const top = (i / n) * 100;\n const bottom = 100 - ((i + 1) / n) * 100;\n slice.style.cssText += `;position:absolute;inset:0;margin:0;width:100%;height:100%;box-sizing:border-box;clip-path:inset(${top}% 0 ${bottom}% 0);transform-origin:50% ${top}%;visibility:visible`;\n wrap.appendChild(slice);\n const dir = i % 2 ? 1 : -1;\n anims.push(ctx.animate(slice, [\n { transform: `rotateX(${dir * 92}deg)`, filter: 'brightness(.55)', opacity: 0 },\n { opacity: 1, offset: 0.15 },\n { transform: 'rotateX(0)', filter: 'brightness(1)', opacity: 1 },\n ], { duration: o.duration, delay: i * o.duration * 0.55, easing: 'cubic-bezier(.3,.7,.3,1)', fill: 'backwards' }));\n }\n el.style.visibility = 'hidden';\n el.appendChild(wrap);\n const done = () => {\n wrap.remove();\n el.style.visibility = prevVis;\n delete el.dataset.usaOrigami;\n };\n return all(anims).then(done, done);\n },\n },\n {\n name: 'orbit-camera',\n kind: 'scroll',\n description: 'While the element scrolls through the viewport the camera orbits its 3D children (persistent; `range` deg of orbit, `tilt`, `depth` px between layers).',\n defaults: { range: 70, tilt: 10, depth: 60 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const prev = [el.style.transform, el.style.transformStyle];\n const ls = layers(el);\n el.style.transformStyle = 'preserve-3d';\n if (!ctx.reduced) ls.forEach((l, i) => (l.style.transform = `translateZ(${((i - (ls.length - 1) / 2) * o.depth).toFixed(0)}px)`));\n let h = 0;\n const paint = () => {\n h = 0;\n const r = el.getBoundingClientRect();\n const vh = window.innerHeight || 800;\n const p = Math.min(1, Math.max(0, (vh - r.top) / (vh + r.height)));\n el.style.setProperty('--usa-orbit', p.toFixed(3));\n if (!ctx.reduced) el.style.transform = `perspective(1000px) rotateX(${o.tilt}deg) rotateY(${((p - 0.5) * o.range).toFixed(2)}deg)`;\n };\n paint();\n const on = () => {\n if (!h) h = raf(paint);\n };\n if (!ctx.reduced) {\n window.addEventListener('scroll', on, { passive: true });\n window.addEventListener('resize', on);\n }\n return () => {\n caf(h);\n window.removeEventListener('scroll', on);\n window.removeEventListener('resize', on);\n [el.style.transform, el.style.transformStyle] = prev;\n ls.forEach((l) => (l.style.transform = ''));\n };\n },\n },\n];\n\n/** Register the 6.5 3D pack (idempotent). */\nexport function register3dEffects(): void {\n registerEffects(DEPTH3_FX);\n}\n"],"names":[],"mappings":"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"}
|
package/dist/components/fx2.cjs
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var components_fxGpu = require('../chunks/gpu-BBRLgEzM.cjs');
|
|
4
4
|
var components_fxText = require('./fx-text.cjs');
|
|
5
5
|
var components_fxLight = require('./fx-light.cjs');
|
|
6
|
+
var components_fx3d = require('./fx-3d.cjs');
|
|
6
7
|
require('../chunks/registry-DehBVRDV.cjs');
|
|
7
8
|
require('../chunks/base-BaQV-2ha.cjs');
|
|
8
9
|
require('../chunks/generative-BHIj-NU0.cjs');
|
|
@@ -13,12 +14,14 @@ const FX2_PACKS = {
|
|
|
13
14
|
gpu: components_fxGpu.GPU_FX,
|
|
14
15
|
text: components_fxText.TEXT3_FX,
|
|
15
16
|
light: components_fxLight.LIGHT_FX,
|
|
17
|
+
depth: components_fx3d.DEPTH3_FX,
|
|
16
18
|
};
|
|
17
19
|
/** Register every 6.x pack (idempotent). */
|
|
18
20
|
function registerFx2() {
|
|
19
21
|
components_fxGpu.registerGpuEffects();
|
|
20
22
|
components_fxText.registerTextEffects3();
|
|
21
23
|
components_fxLight.registerLightEffects();
|
|
24
|
+
components_fx3d.register3dEffects();
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
exports.GLSL_HEAD = components_fxGpu.GLSL_HEAD;
|
|
@@ -33,6 +36,8 @@ exports.splitChars = components_fxText.splitChars;
|
|
|
33
36
|
exports.LIGHT_FX = components_fxLight.LIGHT_FX;
|
|
34
37
|
exports.registerLightEffects = components_fxLight.registerLightEffects;
|
|
35
38
|
exports.trackPointer = components_fxLight.trackPointer;
|
|
39
|
+
exports.DEPTH3_FX = components_fx3d.DEPTH3_FX;
|
|
40
|
+
exports.register3dEffects = components_fx3d.register3dEffects;
|
|
36
41
|
exports.FX2_PACKS = FX2_PACKS;
|
|
37
42
|
exports.registerFx2 = registerFx2;
|
|
38
43
|
//# 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';\nimport { GPU_FX, registerGpuEffects } from './gpu';\nimport { TEXT3_FX, registerTextEffects3, splitChars } from './text3';\nimport { LIGHT_FX, registerLightEffects, trackPointer } from './light';\n\nexport { GPU_FX, registerGpuEffects, TEXT3_FX, registerTextEffects3, splitChars };\nexport { shaderBackground, supportsWebGL2, fieldFallback, GLSL_HEAD } from './gl';\nexport type { ShaderSpec } from './gl';\n\nexport { LIGHT_FX, registerLightEffects, trackPointer };\n\n/** The 6.x effect packs by name. */\nexport const FX2_PACKS: Record<string, EffectDefinition[]> = {\n gpu: GPU_FX,\n text: TEXT3_FX,\n light: LIGHT_FX,\n};\n\n/** Register every 6.x pack (idempotent). */\nexport function registerFx2(): void {\n registerGpuEffects();\n registerTextEffects3();\n registerLightEffects();\n}\n"],"names":["GPU_FX","TEXT3_FX","LIGHT_FX","registerGpuEffects","registerTextEffects3","registerLightEffects"],"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';\nimport { GPU_FX, registerGpuEffects } from './gpu';\nimport { TEXT3_FX, registerTextEffects3, splitChars } from './text3';\nimport { LIGHT_FX, registerLightEffects, trackPointer } from './light';\nimport { DEPTH3_FX, register3dEffects } from './depth3';\n\nexport { GPU_FX, registerGpuEffects, TEXT3_FX, registerTextEffects3, splitChars };\nexport { shaderBackground, supportsWebGL2, fieldFallback, GLSL_HEAD } from './gl';\nexport type { ShaderSpec } from './gl';\n\nexport { LIGHT_FX, registerLightEffects, trackPointer };\n\nexport { DEPTH3_FX, register3dEffects };\n\n/** The 6.x effect packs by name. */\nexport const FX2_PACKS: Record<string, EffectDefinition[]> = {\n gpu: GPU_FX,\n text: TEXT3_FX,\n light: LIGHT_FX,\n depth: DEPTH3_FX,\n};\n\n/** Register every 6.x pack (idempotent). */\nexport function registerFx2(): void {\n registerGpuEffects();\n registerTextEffects3();\n registerLightEffects();\n register3dEffects();\n}\n"],"names":["GPU_FX","TEXT3_FX","LIGHT_FX","DEPTH3_FX","registerGpuEffects","registerTextEffects3","registerLightEffects","register3dEffects"],"mappings":";;;;;;;;;;;AAmBA;AACO,MAAM,SAAS,GAAuC;AAC3D,IAAA,GAAG,EAAEA,uBAAM;AACX,IAAA,IAAI,EAAEC,0BAAQ;AACd,IAAA,KAAK,EAAEC,2BAAQ;AACf,IAAA,KAAK,EAAEC,yBAAS;;AAGlB;SACgB,WAAW,GAAA;AACzB,IAAAC,mCAAkB,EAAE;AACpB,IAAAC,sCAAoB,EAAE;AACtB,IAAAC,uCAAoB,EAAE;AACtB,IAAAC,iCAAiB,EAAE;AACrB;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -114,6 +114,29 @@ declare const LIGHT_FX: EffectDefinition[];
|
|
|
114
114
|
/** Register the 6.4 light & materials pack (idempotent). */
|
|
115
115
|
declare function registerLightEffects(): void;
|
|
116
116
|
|
|
117
|
+
/**
|
|
118
|
+
* 6.5 — 3D scene cards (`motionary/components/fx-3d`), registered through
|
|
119
|
+
* `registerEffect()`:
|
|
120
|
+
*
|
|
121
|
+
* - `depth-stack` (card, persistent) — the children (or `[data-depth]`
|
|
122
|
+
* layers) separate in Z and parallax against each other as the card tilts
|
|
123
|
+
* toward the pointer.
|
|
124
|
+
* - `product-spin` (card, persistent) — a 360° product viewer: drag to turn
|
|
125
|
+
* the element in 3D with inertia, idles with a slow turntable spin.
|
|
126
|
+
* - `card-flip-3d` (click) — a thick card flips to its back face (second
|
|
127
|
+
* child) with an edge that shows its depth.
|
|
128
|
+
* - `origami` (enter) — the element unfolds panel by panel like folded paper.
|
|
129
|
+
* - `orbit-camera` (scroll, persistent) — while the element scrolls through
|
|
130
|
+
* the viewport the camera orbits its 3D children.
|
|
131
|
+
*
|
|
132
|
+
* Reduced motion: no tilt, spin, orbit or fold; the flip swaps faces with a
|
|
133
|
+
* crossfade.
|
|
134
|
+
*/
|
|
135
|
+
|
|
136
|
+
declare const DEPTH3_FX: EffectDefinition[];
|
|
137
|
+
/** Register the 6.5 3D pack (idempotent). */
|
|
138
|
+
declare function register3dEffects(): void;
|
|
139
|
+
|
|
117
140
|
/**
|
|
118
141
|
* 5.5 — generative backgrounds on Canvas 2D, registered through
|
|
119
142
|
* `registerEffect()` (kind `background`): `flow-field`, `voronoi`,
|
|
@@ -186,5 +209,5 @@ declare const FX2_PACKS: Record<string, EffectDefinition[]>;
|
|
|
186
209
|
/** Register every 6.x pack (idempotent). */
|
|
187
210
|
declare function registerFx2(): void;
|
|
188
211
|
|
|
189
|
-
export { FX2_PACKS, GLSL_HEAD, GPU_FX, LIGHT_FX, TEXT3_FX, fieldFallback, registerFx2, registerGpuEffects, registerLightEffects, registerTextEffects3, shaderBackground, splitChars, supportsWebGL2, trackPointer };
|
|
212
|
+
export { DEPTH3_FX, FX2_PACKS, GLSL_HEAD, GPU_FX, LIGHT_FX, TEXT3_FX, fieldFallback, register3dEffects, registerFx2, registerGpuEffects, registerLightEffects, registerTextEffects3, shaderBackground, splitChars, supportsWebGL2, trackPointer };
|
|
190
213
|
export type { ShaderSpec };
|
package/dist/components/fx2.d.ts
CHANGED
|
@@ -114,6 +114,29 @@ declare const LIGHT_FX: EffectDefinition[];
|
|
|
114
114
|
/** Register the 6.4 light & materials pack (idempotent). */
|
|
115
115
|
declare function registerLightEffects(): void;
|
|
116
116
|
|
|
117
|
+
/**
|
|
118
|
+
* 6.5 — 3D scene cards (`motionary/components/fx-3d`), registered through
|
|
119
|
+
* `registerEffect()`:
|
|
120
|
+
*
|
|
121
|
+
* - `depth-stack` (card, persistent) — the children (or `[data-depth]`
|
|
122
|
+
* layers) separate in Z and parallax against each other as the card tilts
|
|
123
|
+
* toward the pointer.
|
|
124
|
+
* - `product-spin` (card, persistent) — a 360° product viewer: drag to turn
|
|
125
|
+
* the element in 3D with inertia, idles with a slow turntable spin.
|
|
126
|
+
* - `card-flip-3d` (click) — a thick card flips to its back face (second
|
|
127
|
+
* child) with an edge that shows its depth.
|
|
128
|
+
* - `origami` (enter) — the element unfolds panel by panel like folded paper.
|
|
129
|
+
* - `orbit-camera` (scroll, persistent) — while the element scrolls through
|
|
130
|
+
* the viewport the camera orbits its 3D children.
|
|
131
|
+
*
|
|
132
|
+
* Reduced motion: no tilt, spin, orbit or fold; the flip swaps faces with a
|
|
133
|
+
* crossfade.
|
|
134
|
+
*/
|
|
135
|
+
|
|
136
|
+
declare const DEPTH3_FX: EffectDefinition[];
|
|
137
|
+
/** Register the 6.5 3D pack (idempotent). */
|
|
138
|
+
declare function register3dEffects(): void;
|
|
139
|
+
|
|
117
140
|
/**
|
|
118
141
|
* 5.5 — generative backgrounds on Canvas 2D, registered through
|
|
119
142
|
* `registerEffect()` (kind `background`): `flow-field`, `voronoi`,
|
|
@@ -186,5 +209,5 @@ declare const FX2_PACKS: Record<string, EffectDefinition[]>;
|
|
|
186
209
|
/** Register every 6.x pack (idempotent). */
|
|
187
210
|
declare function registerFx2(): void;
|
|
188
211
|
|
|
189
|
-
export { FX2_PACKS, GLSL_HEAD, GPU_FX, LIGHT_FX, TEXT3_FX, fieldFallback, registerFx2, registerGpuEffects, registerLightEffects, registerTextEffects3, shaderBackground, splitChars, supportsWebGL2, trackPointer };
|
|
212
|
+
export { DEPTH3_FX, FX2_PACKS, GLSL_HEAD, GPU_FX, LIGHT_FX, TEXT3_FX, fieldFallback, register3dEffects, registerFx2, registerGpuEffects, registerLightEffects, registerTextEffects3, shaderBackground, splitChars, supportsWebGL2, trackPointer };
|
|
190
213
|
export type { ShaderSpec };
|
package/dist/components/fx2.js
CHANGED
|
@@ -4,6 +4,7 @@ import { TEXT3_FX, registerTextEffects3 } from './fx-text.js';
|
|
|
4
4
|
export { splitChars } from './fx-text.js';
|
|
5
5
|
import { LIGHT_FX, registerLightEffects } from './fx-light.js';
|
|
6
6
|
export { trackPointer } from './fx-light.js';
|
|
7
|
+
import { DEPTH3_FX, register3dEffects } from './fx-3d.js';
|
|
7
8
|
import '../chunks/registry-Bu5NrAyA.js';
|
|
8
9
|
import '../chunks/base-DchG4q_S.js';
|
|
9
10
|
import '../chunks/generative-2LhxG5BJ.js';
|
|
@@ -14,13 +15,15 @@ const FX2_PACKS = {
|
|
|
14
15
|
gpu: GPU_FX,
|
|
15
16
|
text: TEXT3_FX,
|
|
16
17
|
light: LIGHT_FX,
|
|
18
|
+
depth: DEPTH3_FX,
|
|
17
19
|
};
|
|
18
20
|
/** Register every 6.x pack (idempotent). */
|
|
19
21
|
function registerFx2() {
|
|
20
22
|
registerGpuEffects();
|
|
21
23
|
registerTextEffects3();
|
|
22
24
|
registerLightEffects();
|
|
25
|
+
register3dEffects();
|
|
23
26
|
}
|
|
24
27
|
|
|
25
|
-
export { FX2_PACKS, GPU_FX, LIGHT_FX, TEXT3_FX, registerFx2, registerGpuEffects, registerLightEffects, registerTextEffects3 };
|
|
28
|
+
export { DEPTH3_FX, FX2_PACKS, GPU_FX, LIGHT_FX, TEXT3_FX, register3dEffects, registerFx2, registerGpuEffects, registerLightEffects, registerTextEffects3 };
|
|
26
29
|
//# 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';\nimport { GPU_FX, registerGpuEffects } from './gpu';\nimport { TEXT3_FX, registerTextEffects3, splitChars } from './text3';\nimport { LIGHT_FX, registerLightEffects, trackPointer } from './light';\n\nexport { GPU_FX, registerGpuEffects, TEXT3_FX, registerTextEffects3, splitChars };\nexport { shaderBackground, supportsWebGL2, fieldFallback, GLSL_HEAD } from './gl';\nexport type { ShaderSpec } from './gl';\n\nexport { LIGHT_FX, registerLightEffects, trackPointer };\n\n/** The 6.x effect packs by name. */\nexport const FX2_PACKS: Record<string, EffectDefinition[]> = {\n gpu: GPU_FX,\n text: TEXT3_FX,\n light: LIGHT_FX,\n};\n\n/** Register every 6.x pack (idempotent). */\nexport function registerFx2(): void {\n registerGpuEffects();\n registerTextEffects3();\n registerLightEffects();\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';\nimport { GPU_FX, registerGpuEffects } from './gpu';\nimport { TEXT3_FX, registerTextEffects3, splitChars } from './text3';\nimport { LIGHT_FX, registerLightEffects, trackPointer } from './light';\nimport { DEPTH3_FX, register3dEffects } from './depth3';\n\nexport { GPU_FX, registerGpuEffects, TEXT3_FX, registerTextEffects3, splitChars };\nexport { shaderBackground, supportsWebGL2, fieldFallback, GLSL_HEAD } from './gl';\nexport type { ShaderSpec } from './gl';\n\nexport { LIGHT_FX, registerLightEffects, trackPointer };\n\nexport { DEPTH3_FX, register3dEffects };\n\n/** The 6.x effect packs by name. */\nexport const FX2_PACKS: Record<string, EffectDefinition[]> = {\n gpu: GPU_FX,\n text: TEXT3_FX,\n light: LIGHT_FX,\n depth: DEPTH3_FX,\n};\n\n/** Register every 6.x pack (idempotent). */\nexport function registerFx2(): void {\n registerGpuEffects();\n registerTextEffects3();\n registerLightEffects();\n register3dEffects();\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAmBA;AACO,MAAM,SAAS,GAAuC;AAC3D,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,KAAK,EAAE,SAAS;;AAGlB;SACgB,WAAW,GAAA;AACzB,IAAA,kBAAkB,EAAE;AACpB,IAAA,oBAAoB,EAAE;AACtB,IAAA,oBAAoB,EAAE;AACtB,IAAA,iBAAiB,EAAE;AACrB;;;;"}
|