use-scroll-animate 5.2.0 → 5.4.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/effects.cjs +407 -1
- package/dist/components/effects.cjs.map +1 -1
- package/dist/components/effects.d.cts +65 -2
- package/dist/components/effects.d.ts +65 -2
- package/dist/components/effects.js +401 -2
- package/dist/components/effects.js.map +1 -1
- package/dist/components.umd.js +2 -2
- package/dist/components.umd.js.map +1 -1
- package/docs/ROADMAP.md +2 -2
- package/docs/components.md +35 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects.cjs","sources":["../../src/components/effects/shared.ts","../../src/components/effects/cards-click.ts","../../src/components/effects/physics.ts","../../src/components/effects/index.ts"],"sourcesContent":["/** Helpers shared by the 5.x effect packs. */\nimport type { EffectContext } from '../fx/registry';\n\nlet layer: HTMLElement | null = null;\n/** A fixed, pointer-transparent, aria-hidden layer for transient particles. */\nexport function fxLayer(): HTMLElement {\n if (layer?.isConnected) return layer;\n layer = document.createElement('div');\n layer.setAttribute('aria-hidden', 'true');\n layer.setAttribute('data-usa-fx-layer', '');\n layer.style.cssText = 'position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:2147483000;contain:strict';\n document.body.appendChild(layer);\n return layer;\n}\n\n/** Client point of the triggering pointer event, or the element's center. */\nexport function origin(el: Element, ctx: EffectContext): { x: number; y: number } {\n const e = ctx.event as PointerEvent | MouseEvent | undefined;\n const r = el.getBoundingClientRect();\n return e && typeof e.clientX === 'number' && (e.clientX || e.clientY) ? { x: e.clientX, y: e.clientY } : { x: r.left + r.width / 2, y: r.top + r.height / 2 };\n}\n\n/** Spawn an absolutely positioned node in the fx layer at (x, y); removed when its animation ends. */\nexport function spawn(x: number, y: number, css: string, ctx: EffectContext, frames: Keyframe[], opts: KeyframeAnimationOptions, text = ''): Animation | null {\n const n = document.createElement('span');\n n.style.cssText = `position:absolute;left:${x}px;top:${y}px;${css}`;\n if (text) n.textContent = text;\n fxLayer().appendChild(n);\n const a = ctx.animate(n, frames, { fill: 'forwards', ...opts });\n const rm = () => n.remove();\n if (a) a.finished.then(rm, rm);\n else rm();\n return a;\n}\n\n/** An overlay child covering `el` (makes `el` a positioning context). Returns it and a remover. */\nexport function overlay(el: HTMLElement, css: string): [HTMLElement, () => void] {\n const o = document.createElement('span');\n o.setAttribute('aria-hidden', 'true');\n o.style.cssText = `position:absolute;inset:0;pointer-events:none;border-radius:inherit;${css}`;\n if (getComputedStyle(el).position === 'static') el.style.position = 'relative';\n el.appendChild(o);\n return [o, () => o.remove()];\n}\n\nexport const PALETTE = ['#7c5cff', '#ff5c8a', '#22d3ee', '#facc15', '#34d399'];\nexport const rand = (a: number, b: number): number => a + Math.random() * (b - a);\n\n/** Wait for all animations (ignoring nulls). */\nexport const all = (anims: (Animation | null)[]): Promise<unknown> => Promise.all(anims.filter(Boolean).map((a) => a!.finished.catch(() => undefined)));\n","/**\n * 5.1 — card & click effects 2.0, registered through `registerEffect()`.\n * Card: `holo` (holographic foil following the pointer), `glare-sweep`,\n * `book-open`, `card-fan`, `topple`, `float-tilt`. Click: `shockwave`,\n * `ink-splash`, `star-burst`, `jelly-press`, `ring-ripple`, `emoji-rain`.\n */\nimport type { EffectDefinition } from '../fx/registry';\nimport { origin, spawn, overlay, PALETTE, rand, all } from './shared';\n\nexport const CARD_FX: EffectDefinition[] = [\n {\n name: 'holo',\n kind: 'card',\n description: 'Holographic foil: a rainbow sheen and sparkle that follow the pointer (persistent; bind with trigger=\"load\").',\n reduced: 'run',\n defaults: { strength: 0.55 },\n run: (el, o: any, ctx) => {\n const [layer, remove] = overlay(el, `mix-blend-mode:color-dodge;opacity:${o.strength};background:linear-gradient(115deg,transparent 20%,#ff8bd855 35%,#8bf3ff55 45%,#fff58b55 55%,transparent 70%),repeating-linear-gradient(55deg,#ffffff10 0 2px,transparent 2px 6px);background-size:250% 250%,100% 100%;background-position:50% 50%;transition:background-position .2s ease-out`);\n if (ctx.reduced) return remove;\n const move = (e: PointerEvent) => {\n const r = el.getBoundingClientRect();\n const x = ((e.clientX - r.left) / (r.width || 1)) * 100;\n const y = ((e.clientY - r.top) / (r.height || 1)) * 100;\n layer.style.backgroundPosition = `${x}% ${y}%, 0 0`;\n el.style.transform = `perspective(700px) rotateY(${(x - 50) / 8}deg) rotateX(${(50 - y) / 8}deg)`;\n };\n const leave = () => {\n layer.style.backgroundPosition = '50% 50%, 0 0';\n el.style.transform = '';\n };\n el.addEventListener('pointermove', move);\n el.addEventListener('pointerleave', leave);\n return () => {\n el.removeEventListener('pointermove', move);\n el.removeEventListener('pointerleave', leave);\n leave();\n remove();\n };\n },\n },\n {\n name: 'glare-sweep',\n kind: 'card',\n description: 'A diagonal light streak sweeps across the card once.',\n defaults: { duration: 900, color: 'rgba(255,255,255,.55)' },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const [g, remove] = overlay(el, `overflow:hidden;background:linear-gradient(105deg,transparent 35%,${o.color} 50%,transparent 65%);background-size:250% 100%`);\n const a = ctx.animate(g, [{ backgroundPosition: '150% 0' }, { backgroundPosition: '-50% 0' }], { duration: o.duration, easing: 'ease-in-out' });\n if (a) a.finished.then(remove, remove);\n else remove();\n return a;\n },\n },\n {\n name: 'book-open',\n kind: 'card',\n description: 'The card opens like a book cover around its left edge, peeks and closes.',\n defaults: { angle: 35, duration: 1100 },\n run: (el, o: any, ctx) => {\n el.style.transformOrigin = 'left center';\n return ctx.animate(el, [{ transform: 'perspective(900px) rotateY(0)' }, { transform: `perspective(900px) rotateY(-${o.angle}deg)`, offset: 0.45 }, { transform: 'perspective(900px) rotateY(0)' }], { duration: o.duration, easing: 'cubic-bezier(0.34, 1.3, 0.64, 1)' });\n },\n },\n {\n name: 'card-fan',\n kind: 'card',\n description: 'The element’s children fan out like a hand of cards, then gather.',\n defaults: { spread: 14, duration: 900 },\n run: (el, o: any, ctx) => {\n const kids = Array.from(el.children) as HTMLElement[];\n const mid = (kids.length - 1) / 2;\n return all(kids.map((k, i) => ctx.animate(k, [{ transform: 'none' }, { transform: `translateX(${(i - mid) * o.spread}px) rotate(${(i - mid) * (o.spread / 2)}deg)`, offset: 0.5 }, { transform: 'none' }], { duration: o.duration, easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)' })));\n },\n },\n {\n name: 'topple',\n kind: 'card',\n description: 'Tips backwards on its bottom edge and springs upright.',\n defaults: { duration: 1000 },\n run: (el, o: any, ctx) => {\n el.style.transformOrigin = 'bottom center';\n return ctx.animate(el, [{ transform: 'perspective(800px) rotateX(0)' }, { transform: 'perspective(800px) rotateX(55deg)', offset: 0.35 }, { transform: 'perspective(800px) rotateX(-12deg)', offset: 0.6 }, { transform: 'perspective(800px) rotateX(5deg)', offset: 0.8 }, { transform: 'perspective(800px) rotateX(0)' }], { duration: o.duration, easing: 'ease-out' });\n },\n },\n {\n name: 'float-tilt',\n kind: 'loop',\n description: 'Idle floating with a slow 3D sway (loop; stops under reduced motion).',\n defaults: { duration: 4200, distance: 8 },\n run: (el, o: any, ctx) => {\n const a = ctx.animate(el, [{ transform: 'translateY(0) rotateX(0) rotateY(0)' }, { transform: `translateY(-${o.distance}px) rotateX(4deg) rotateY(-5deg)` }, { transform: 'translateY(0) rotateX(0) rotateY(0)' }], { duration: o.duration, iterations: Infinity, easing: 'ease-in-out' });\n return () => a?.cancel();\n },\n },\n];\n\nexport const CLICK_FX: EffectDefinition[] = [\n {\n name: 'shockwave',\n kind: 'click',\n description: 'Two expanding rings from the click point.',\n defaults: { color: '#7c5cff', size: 160, duration: 700 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const { x, y } = origin(el, ctx);\n return all([0, 120].map((delay) => spawn(x, y, `width:${o.size}px;height:${o.size}px;margin:${-o.size / 2}px 0 0 ${-o.size / 2}px;border:3px solid ${o.color};border-radius:50%`, ctx, [{ transform: 'scale(0)', opacity: 0.9 }, { transform: 'scale(1)', opacity: 0 }], { duration: o.duration, delay, easing: 'cubic-bezier(0.22, 1, 0.36, 1)' })));\n },\n },\n {\n name: 'ink-splash',\n kind: 'click',\n description: 'Ink blobs splatter from the click point and fade.',\n defaults: { count: 9, colors: PALETTE, duration: 800 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const { x, y } = origin(el, ctx);\n return all(Array.from({ length: o.count }, (_, i) => {\n const s = rand(6, 22);\n const ang = rand(0, Math.PI * 2);\n const d = rand(20, 70);\n return spawn(x, y, `width:${s}px;height:${s}px;margin:${-s / 2}px 0 0 ${-s / 2}px;background:${o.colors[i % o.colors.length]};border-radius:${rand(40, 50)}% ${rand(50, 60)}% ${rand(40, 60)}% ${rand(45, 55)}%`, ctx, [{ transform: 'translate(0,0) scale(.3)', opacity: 1 }, { transform: `translate(${Math.cos(ang) * d}px,${Math.sin(ang) * d}px) scale(1)`, opacity: 0.9, offset: 0.5 }, { transform: `translate(${Math.cos(ang) * d}px,${Math.sin(ang) * d + 8}px) scale(1.1)`, opacity: 0 }], { duration: o.duration, easing: 'cubic-bezier(0.22, 1, 0.36, 1)' });\n }));\n },\n },\n {\n name: 'star-burst',\n kind: 'click',\n description: 'Spinning stars burst outward.',\n defaults: { count: 10, colors: ['#facc15', '#fb923c', '#f472b6'], duration: 900 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const { x, y } = origin(el, ctx);\n return all(Array.from({ length: o.count }, (_, i) => {\n const ang = (i / o.count) * Math.PI * 2;\n const d = rand(40, 80);\n const s = rand(12, 22);\n return spawn(x, y, `font-size:${s}px;line-height:1;margin:${-s / 2}px 0 0 ${-s / 2}px;color:${o.colors[i % o.colors.length]}`, ctx, [{ transform: 'translate(0,0) rotate(0) scale(.2)', opacity: 1 }, { transform: `translate(${Math.cos(ang) * d}px,${Math.sin(ang) * d}px) rotate(${rand(180, 360)}deg) scale(1)`, opacity: 0 }], { duration: o.duration, easing: 'cubic-bezier(0.22, 1, 0.36, 1)' }, '★');\n }));\n },\n },\n {\n name: 'jelly-press',\n kind: 'click',\n description: 'The pressed element squishes like jelly and wobbles back.',\n defaults: { duration: 650 },\n run: (el, o: any, ctx) =>\n ctx.reduced ? ctx.animate(el, [{ opacity: 1 }, { opacity: 0.7 }, { opacity: 1 }], { duration: 250 }) : ctx.animate(el, [{ transform: 'scale(1,1)' }, { transform: 'scale(1.15,.85)', offset: 0.2 }, { transform: 'scale(.9,1.1)', offset: 0.4 }, { transform: 'scale(1.05,.95)', offset: 0.6 }, { transform: 'scale(.98,1.02)', offset: 0.8 }, { transform: 'scale(1,1)' }], { duration: o.duration, easing: 'ease-out' }),\n },\n {\n name: 'ring-ripple',\n kind: 'click',\n description: 'Concentric outlined rings ripple out like water.',\n defaults: { rings: 3, color: '#22d3ee', size: 120, duration: 1000 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const { x, y } = origin(el, ctx);\n return all(Array.from({ length: o.rings }, (_, i) => spawn(x, y, `width:${o.size}px;height:${o.size}px;margin:${-o.size / 2}px 0 0 ${-o.size / 2}px;border:2px solid ${o.color};border-radius:50%`, ctx, [{ transform: 'scale(.1)', opacity: 0.8 }, { transform: 'scale(1)', opacity: 0 }], { duration: o.duration, delay: i * 160, easing: 'ease-out' })));\n },\n },\n {\n name: 'emoji-rain',\n kind: 'click',\n description: 'Emoji pop up and fall around the click (pass `emoji: \"🎉✨💜\"`).',\n defaults: { emoji: '🎉✨💜🔥', count: 14, duration: 1300 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const { x, y } = origin(el, ctx);\n const chars = Array.from(String(o.emoji));\n return all(Array.from({ length: o.count }, (_, i) => {\n const dx = rand(-90, 90);\n return spawn(x, y, `font-size:${rand(16, 28)}px;line-height:1`, ctx, [{ transform: 'translate(0,0) scale(.4)', opacity: 0 }, { transform: `translate(${dx * 0.6}px,${rand(-90, -50)}px) scale(1)`, opacity: 1, offset: 0.35 }, { transform: `translate(${dx}px,${rand(40, 90)}px) rotate(${rand(-60, 60)}deg) scale(.9)`, opacity: 0 }], { duration: o.duration, delay: i * 25, easing: 'cubic-bezier(0.33, 0, 0.67, 1)' }, chars[i % chars.length]);\n }));\n },\n },\n];\n","/**\n * 5.2 — bounce & physics micro-interactions, registered through\n * `registerEffect()`. Keyframes come from a damped-spring / gravity solver\n * (`springKeyframes()`, `bounceKeyframes()`), so the motion is physical but\n * still runs on the Web Animations API (compositor, reduced-motion aware).\n * Effects: `bounce-in`, `rubber-band`, `elastic-hover`, `drop-bounce`,\n * `gravity-text`, `spring-follow`, `bell-swing`.\n */\nimport type { EffectDefinition } from '../fx/registry';\nimport { all } from './shared';\n\nexport interface SpringOptions {\n stiffness?: number;\n damping?: number;\n mass?: number;\n /** Samples (keyframes). */\n steps?: number;\n}\n\n/**\n * Sample a damped spring from 0 → 1 and return the progress values plus the\n * time (ms) it takes to settle. Pure, deterministic.\n */\nexport function solveSpring({ stiffness = 180, damping = 12, mass = 1, steps = 40 }: SpringOptions = {}): { values: number[]; duration: number } {\n const dt = 1 / 120;\n let x = 0;\n let v = 0;\n const trace: number[] = [];\n let t = 0;\n for (; t < 4; t += dt) {\n const a = (-stiffness * (x - 1) - damping * v) / mass;\n v += a * dt;\n x += v * dt;\n trace.push(x);\n if (t > 0.1 && Math.abs(x - 1) < 0.001 && Math.abs(v) < 0.01) break;\n }\n const values = Array.from({ length: steps + 1 }, (_, i) => +trace[Math.min(trace.length - 1, Math.round((i / steps) * (trace.length - 1)))].toFixed(4));\n values[0] = 0;\n values[steps] = 1;\n return { values, duration: Math.round(trace.length * dt * 1000) };\n}\n\n/** Keyframes for a property driven by a spring: `map(progress)` → keyframe. */\nexport function springKeyframes(map: (p: number) => Keyframe, spring?: SpringOptions): { frames: Keyframe[]; duration: number } {\n const { values, duration } = solveSpring(spring);\n return { frames: values.map(map), duration };\n}\n\n/** Height (0 = floor, 1 = drop height) of a ball dropped with restitution `bounce`, sampled `steps` times. */\nexport function bounceKeyframes(bounce = 0.5, steps = 48): number[] {\n // segment durations scale with sqrt(height); heights scale with bounce^2 per hop\n const hops: number[] = [1];\n let h = 1;\n while (hops.length < 6 && h > 0.01) {\n h *= bounce * bounce;\n hops.push(h);\n }\n const segT = hops.map((hh, i) => (i === 0 ? Math.sqrt(hh) : 2 * Math.sqrt(hh)));\n const total = segT.reduce((a, b) => a + b, 0);\n return Array.from({ length: steps + 1 }, (_, i) => {\n let t = (i / steps) * total;\n for (let k = 0; k < hops.length; k++) {\n if (t <= segT[k] || k === hops.length - 1) {\n const tt = Math.min(t, segT[k]);\n if (k === 0) return +(1 - (tt / segT[0]) ** 2).toFixed(4);\n const half = segT[k] / 2;\n return +(hops[k] * (1 - ((tt - half) / half) ** 2)).toFixed(4);\n }\n t -= segT[k];\n }\n return 0;\n });\n}\n\nconst fade = (el: HTMLElement, ctx: Parameters<EffectDefinition['run']>[2]) => ctx.animate(el, [{ opacity: 0 }, { opacity: 1 }], { duration: 200 });\n\nexport const PHYSICS_FX: EffectDefinition[] = [\n {\n name: 'bounce-in',\n kind: 'enter',\n description: 'Springs in from small with an overshoot (spring solver; stiffness / damping options).',\n defaults: { stiffness: 220, damping: 11, from: 0.3 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return fade(el, ctx);\n const { frames, duration } = springKeyframes((p) => ({ transform: `scale(${(o.from + (1 - o.from) * p).toFixed(4)})`, opacity: Math.min(1, p * 3) }), o);\n return ctx.animate(el, frames, { duration, easing: 'linear' });\n },\n },\n {\n name: 'rubber-band',\n kind: 'attention',\n description: 'Stretches wide, snaps back thin and settles like a rubber band.',\n defaults: { duration: 900, amount: 0.25 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const a = o.amount;\n return ctx.animate(el, [{ transform: 'scale(1,1)' }, { transform: `scale(${1 + a},${1 - a})`, offset: 0.3 }, { transform: `scale(${1 - a},${1 + a})`, offset: 0.4 }, { transform: `scale(${1 + a / 2},${1 - a / 2})`, offset: 0.5 }, { transform: `scale(${1 - a / 5},${1 + a / 5})`, offset: 0.65 }, { transform: `scale(${1 + a / 10},${1 - a / 10})`, offset: 0.75 }, { transform: 'scale(1,1)' }], { duration: o.duration });\n },\n },\n {\n name: 'elastic-hover',\n kind: 'hover',\n description: 'Hover lifts with a springy overshoot; leaving springs back (persistent; trigger=\"load\").',\n defaults: { lift: 6, scale: 1.04, stiffness: 260, damping: 10 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const to = (on: boolean) => {\n const from = on ? 0 : 1;\n const { frames, duration } = springKeyframes((p) => {\n const k = from + (on ? p : -p);\n return { transform: `translateY(${(-o.lift * k).toFixed(2)}px) scale(${(1 + (o.scale - 1) * k).toFixed(4)})` };\n }, o);\n ctx.animate(el, frames, { duration, fill: 'forwards', easing: 'linear' });\n };\n const enter = () => to(true);\n const leave = () => to(false);\n el.addEventListener('pointerenter', enter);\n el.addEventListener('pointerleave', leave);\n return () => {\n el.removeEventListener('pointerenter', enter);\n el.removeEventListener('pointerleave', leave);\n };\n },\n },\n {\n name: 'drop-bounce',\n kind: 'enter',\n description: 'Falls in under gravity and bounces to rest (`height`, `bounce` restitution 0–0.9).',\n defaults: { height: 120, bounce: 0.5, duration: 1100 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return fade(el, ctx);\n const hs = bounceKeyframes(Math.min(0.9, Math.max(0, o.bounce)));\n return ctx.animate(el, hs.map((h, i) => ({ transform: `translateY(${(-h * o.height).toFixed(1)}px)`, opacity: i === 0 ? 0 : 1 })), { duration: o.duration, easing: 'linear' });\n },\n },\n {\n name: 'gravity-text',\n kind: 'text',\n description: 'Each character drops in under gravity with a bounce, staggered (splits the text into aria-hidden spans; the label stays readable).',\n defaults: { height: 60, bounce: 0.45, duration: 900, stagger: 45 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n if (!el.dataset.usaSplit) {\n const text = el.textContent || '';\n el.setAttribute('aria-label', text);\n el.textContent = '';\n for (const ch of Array.from(text)) {\n const s = document.createElement('span');\n s.setAttribute('aria-hidden', 'true');\n s.style.display = 'inline-block';\n s.style.whiteSpace = 'pre';\n s.textContent = ch;\n el.appendChild(s);\n }\n el.dataset.usaSplit = '1';\n }\n const hs = bounceKeyframes(o.bounce, 32);\n return all((Array.from(el.children) as HTMLElement[]).map((s, i) => ctx.animate(s, hs.map((h) => ({ transform: `translateY(${(-h * o.height).toFixed(1)}px)` })), { duration: o.duration, delay: i * o.stagger, easing: 'linear', fill: 'backwards' })));\n },\n },\n {\n name: 'spring-follow',\n kind: 'cursor',\n description: 'The element springs toward the pointer while it moves over its parent, and back home on leave (persistent).',\n defaults: { stiffness: 0.12, damping: 0.75, range: 40 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const host = el.parentElement || el;\n let tx = 0;\n let ty = 0;\n let x = 0;\n let y = 0;\n let vx = 0;\n let vy = 0;\n let raf = 0;\n const tick = () => {\n vx = (vx + (tx - x) * o.stiffness) * o.damping;\n vy = (vy + (ty - y) * o.stiffness) * o.damping;\n x += vx;\n y += vy;\n el.style.translate = `${x.toFixed(2)}px ${y.toFixed(2)}px`;\n raf = Math.abs(vx) + Math.abs(vy) + Math.abs(tx - x) + Math.abs(ty - y) > 0.05 ? requestAnimationFrame(tick) : 0;\n };\n const kick = () => {\n if (!raf) raf = requestAnimationFrame(tick);\n };\n const move = (e: PointerEvent) => {\n const r = host.getBoundingClientRect();\n const nx = (e.clientX - r.left) / (r.width || 1) - 0.5;\n const ny = (e.clientY - r.top) / (r.height || 1) - 0.5;\n tx = nx * 2 * o.range;\n ty = ny * 2 * o.range;\n kick();\n };\n const leave = () => {\n tx = ty = 0;\n kick();\n };\n host.addEventListener('pointermove', move);\n host.addEventListener('pointerleave', leave);\n return () => {\n host.removeEventListener('pointermove', move);\n host.removeEventListener('pointerleave', leave);\n cancelAnimationFrame(raf);\n el.style.translate = '';\n };\n },\n },\n {\n name: 'bell-swing',\n kind: 'attention',\n description: 'Swings from its top like a ringing bell with damped oscillation.',\n defaults: { angle: 22, stiffness: 120, damping: 4 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n el.style.transformOrigin = 'top center';\n const { frames, duration } = springKeyframes((p) => ({ transform: `rotate(${(o.angle * (1 - p)).toFixed(2)}deg)` }), { stiffness: o.stiffness, damping: o.damping, steps: 48 });\n frames[0] = { transform: 'rotate(0deg)' };\n return ctx.animate(el, frames, { duration: Math.min(duration, 2400), easing: 'linear' });\n },\n },\n];\n","/**\n * use-scroll-animate/components/effects — the 5.x effect packs, all\n * registered through `registerEffect()` (5.0) and playable with\n * `playEffect()`, `bindEffect()` or `<usa-fx>`. Kept out of\n * `use-scroll-animate/components` / `components/lite` so their size budgets\n * hold; the UMD bundle registers everything.\n *\n * ```ts\n * import { registerAllEffects } from 'use-scroll-animate/components/effects';\n * registerAllEffects();\n * ```\n */\nimport { registerEffects, registerBuiltinEffects } from '../fx/index';\nimport type { EffectDefinition } from '../fx/registry';\nimport { CARD_FX, CLICK_FX } from './cards-click';\nimport { PHYSICS_FX } from './physics';\n\nexport { CARD_FX, CLICK_FX, PHYSICS_FX };\nexport { solveSpring, springKeyframes, bounceKeyframes } from './physics';\nexport type { SpringOptions } from './physics';\nexport { fxLayer } from './shared';\n\n/** The effect packs by version, in release order. */\nexport const EFFECT_PACKS: Record<string, EffectDefinition[]> = {\n 'cards-click': [...CARD_FX, ...CLICK_FX],\n physics: PHYSICS_FX,\n};\n\n/** 5.1: card & click effects 2.0. */\nexport function registerCardClickEffects(): void {\n registerEffects(EFFECT_PACKS['cards-click']);\n}\n\n/** 5.2: bounce & physics micro-interactions. */\nexport function registerPhysicsEffects(): void {\n registerEffects(EFFECT_PACKS.physics);\n}\n\n/** Register the built-ins and every pack (idempotent). */\nexport function registerAllEffects(): void {\n registerBuiltinEffects();\n for (const defs of Object.values(EFFECT_PACKS)) registerEffects(defs);\n}\n"],"names":["registerEffects","registerBuiltinEffects"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"effects.cjs","sources":["../../src/components/effects/shared.ts","../../src/components/effects/cards-click.ts","../../src/components/effects/physics.ts","../../src/components/effects/page.ts","../../src/components/effects/story.ts","../../src/components/effects/index.ts"],"sourcesContent":["/** Helpers shared by the 5.x effect packs. */\nimport type { EffectContext } from '../fx/registry';\n\nlet layer: HTMLElement | null = null;\n/** A fixed, pointer-transparent, aria-hidden layer for transient particles. */\nexport function fxLayer(): HTMLElement {\n if (layer?.isConnected) return layer;\n layer = document.createElement('div');\n layer.setAttribute('aria-hidden', 'true');\n layer.setAttribute('data-usa-fx-layer', '');\n layer.style.cssText = 'position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:2147483000;contain:strict';\n document.body.appendChild(layer);\n return layer;\n}\n\n/** Client point of the triggering pointer event, or the element's center. */\nexport function origin(el: Element, ctx: EffectContext): { x: number; y: number } {\n const e = ctx.event as PointerEvent | MouseEvent | undefined;\n const r = el.getBoundingClientRect();\n return e && typeof e.clientX === 'number' && (e.clientX || e.clientY) ? { x: e.clientX, y: e.clientY } : { x: r.left + r.width / 2, y: r.top + r.height / 2 };\n}\n\n/** Spawn an absolutely positioned node in the fx layer at (x, y); removed when its animation ends. */\nexport function spawn(x: number, y: number, css: string, ctx: EffectContext, frames: Keyframe[], opts: KeyframeAnimationOptions, text = ''): Animation | null {\n const n = document.createElement('span');\n n.style.cssText = `position:absolute;left:${x}px;top:${y}px;${css}`;\n if (text) n.textContent = text;\n fxLayer().appendChild(n);\n const a = ctx.animate(n, frames, { fill: 'forwards', ...opts });\n const rm = () => n.remove();\n if (a) a.finished.then(rm, rm);\n else rm();\n return a;\n}\n\n/** An overlay child covering `el` (makes `el` a positioning context). Returns it and a remover. */\nexport function overlay(el: HTMLElement, css: string): [HTMLElement, () => void] {\n const o = document.createElement('span');\n o.setAttribute('aria-hidden', 'true');\n o.style.cssText = `position:absolute;inset:0;pointer-events:none;border-radius:inherit;${css}`;\n if (getComputedStyle(el).position === 'static') el.style.position = 'relative';\n el.appendChild(o);\n return [o, () => o.remove()];\n}\n\nexport const PALETTE = ['#7c5cff', '#ff5c8a', '#22d3ee', '#facc15', '#34d399'];\nexport const rand = (a: number, b: number): number => a + Math.random() * (b - a);\n\n/** Wait for all animations (ignoring nulls). */\nexport const all = (anims: (Animation | null)[]): Promise<unknown> => Promise.all(anims.filter(Boolean).map((a) => a!.finished.catch(() => undefined)));\n","/**\n * 5.1 — card & click effects 2.0, registered through `registerEffect()`.\n * Card: `holo` (holographic foil following the pointer), `glare-sweep`,\n * `book-open`, `card-fan`, `topple`, `float-tilt`. Click: `shockwave`,\n * `ink-splash`, `star-burst`, `jelly-press`, `ring-ripple`, `emoji-rain`.\n */\nimport type { EffectDefinition } from '../fx/registry';\nimport { origin, spawn, overlay, PALETTE, rand, all } from './shared';\n\nexport const CARD_FX: EffectDefinition[] = [\n {\n name: 'holo',\n kind: 'card',\n description: 'Holographic foil: a rainbow sheen and sparkle that follow the pointer (persistent; bind with trigger=\"load\").',\n reduced: 'run',\n defaults: { strength: 0.55 },\n run: (el, o: any, ctx) => {\n const [layer, remove] = overlay(el, `mix-blend-mode:color-dodge;opacity:${o.strength};background:linear-gradient(115deg,transparent 20%,#ff8bd855 35%,#8bf3ff55 45%,#fff58b55 55%,transparent 70%),repeating-linear-gradient(55deg,#ffffff10 0 2px,transparent 2px 6px);background-size:250% 250%,100% 100%;background-position:50% 50%;transition:background-position .2s ease-out`);\n if (ctx.reduced) return remove;\n const move = (e: PointerEvent) => {\n const r = el.getBoundingClientRect();\n const x = ((e.clientX - r.left) / (r.width || 1)) * 100;\n const y = ((e.clientY - r.top) / (r.height || 1)) * 100;\n layer.style.backgroundPosition = `${x}% ${y}%, 0 0`;\n el.style.transform = `perspective(700px) rotateY(${(x - 50) / 8}deg) rotateX(${(50 - y) / 8}deg)`;\n };\n const leave = () => {\n layer.style.backgroundPosition = '50% 50%, 0 0';\n el.style.transform = '';\n };\n el.addEventListener('pointermove', move);\n el.addEventListener('pointerleave', leave);\n return () => {\n el.removeEventListener('pointermove', move);\n el.removeEventListener('pointerleave', leave);\n leave();\n remove();\n };\n },\n },\n {\n name: 'glare-sweep',\n kind: 'card',\n description: 'A diagonal light streak sweeps across the card once.',\n defaults: { duration: 900, color: 'rgba(255,255,255,.55)' },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const [g, remove] = overlay(el, `overflow:hidden;background:linear-gradient(105deg,transparent 35%,${o.color} 50%,transparent 65%);background-size:250% 100%`);\n const a = ctx.animate(g, [{ backgroundPosition: '150% 0' }, { backgroundPosition: '-50% 0' }], { duration: o.duration, easing: 'ease-in-out' });\n if (a) a.finished.then(remove, remove);\n else remove();\n return a;\n },\n },\n {\n name: 'book-open',\n kind: 'card',\n description: 'The card opens like a book cover around its left edge, peeks and closes.',\n defaults: { angle: 35, duration: 1100 },\n run: (el, o: any, ctx) => {\n el.style.transformOrigin = 'left center';\n return ctx.animate(el, [{ transform: 'perspective(900px) rotateY(0)' }, { transform: `perspective(900px) rotateY(-${o.angle}deg)`, offset: 0.45 }, { transform: 'perspective(900px) rotateY(0)' }], { duration: o.duration, easing: 'cubic-bezier(0.34, 1.3, 0.64, 1)' });\n },\n },\n {\n name: 'card-fan',\n kind: 'card',\n description: 'The element’s children fan out like a hand of cards, then gather.',\n defaults: { spread: 14, duration: 900 },\n run: (el, o: any, ctx) => {\n const kids = Array.from(el.children) as HTMLElement[];\n const mid = (kids.length - 1) / 2;\n return all(kids.map((k, i) => ctx.animate(k, [{ transform: 'none' }, { transform: `translateX(${(i - mid) * o.spread}px) rotate(${(i - mid) * (o.spread / 2)}deg)`, offset: 0.5 }, { transform: 'none' }], { duration: o.duration, easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)' })));\n },\n },\n {\n name: 'topple',\n kind: 'card',\n description: 'Tips backwards on its bottom edge and springs upright.',\n defaults: { duration: 1000 },\n run: (el, o: any, ctx) => {\n el.style.transformOrigin = 'bottom center';\n return ctx.animate(el, [{ transform: 'perspective(800px) rotateX(0)' }, { transform: 'perspective(800px) rotateX(55deg)', offset: 0.35 }, { transform: 'perspective(800px) rotateX(-12deg)', offset: 0.6 }, { transform: 'perspective(800px) rotateX(5deg)', offset: 0.8 }, { transform: 'perspective(800px) rotateX(0)' }], { duration: o.duration, easing: 'ease-out' });\n },\n },\n {\n name: 'float-tilt',\n kind: 'loop',\n description: 'Idle floating with a slow 3D sway (loop; stops under reduced motion).',\n defaults: { duration: 4200, distance: 8 },\n run: (el, o: any, ctx) => {\n const a = ctx.animate(el, [{ transform: 'translateY(0) rotateX(0) rotateY(0)' }, { transform: `translateY(-${o.distance}px) rotateX(4deg) rotateY(-5deg)` }, { transform: 'translateY(0) rotateX(0) rotateY(0)' }], { duration: o.duration, iterations: Infinity, easing: 'ease-in-out' });\n return () => a?.cancel();\n },\n },\n];\n\nexport const CLICK_FX: EffectDefinition[] = [\n {\n name: 'shockwave',\n kind: 'click',\n description: 'Two expanding rings from the click point.',\n defaults: { color: '#7c5cff', size: 160, duration: 700 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const { x, y } = origin(el, ctx);\n return all([0, 120].map((delay) => spawn(x, y, `width:${o.size}px;height:${o.size}px;margin:${-o.size / 2}px 0 0 ${-o.size / 2}px;border:3px solid ${o.color};border-radius:50%`, ctx, [{ transform: 'scale(0)', opacity: 0.9 }, { transform: 'scale(1)', opacity: 0 }], { duration: o.duration, delay, easing: 'cubic-bezier(0.22, 1, 0.36, 1)' })));\n },\n },\n {\n name: 'ink-splash',\n kind: 'click',\n description: 'Ink blobs splatter from the click point and fade.',\n defaults: { count: 9, colors: PALETTE, duration: 800 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const { x, y } = origin(el, ctx);\n return all(Array.from({ length: o.count }, (_, i) => {\n const s = rand(6, 22);\n const ang = rand(0, Math.PI * 2);\n const d = rand(20, 70);\n return spawn(x, y, `width:${s}px;height:${s}px;margin:${-s / 2}px 0 0 ${-s / 2}px;background:${o.colors[i % o.colors.length]};border-radius:${rand(40, 50)}% ${rand(50, 60)}% ${rand(40, 60)}% ${rand(45, 55)}%`, ctx, [{ transform: 'translate(0,0) scale(.3)', opacity: 1 }, { transform: `translate(${Math.cos(ang) * d}px,${Math.sin(ang) * d}px) scale(1)`, opacity: 0.9, offset: 0.5 }, { transform: `translate(${Math.cos(ang) * d}px,${Math.sin(ang) * d + 8}px) scale(1.1)`, opacity: 0 }], { duration: o.duration, easing: 'cubic-bezier(0.22, 1, 0.36, 1)' });\n }));\n },\n },\n {\n name: 'star-burst',\n kind: 'click',\n description: 'Spinning stars burst outward.',\n defaults: { count: 10, colors: ['#facc15', '#fb923c', '#f472b6'], duration: 900 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const { x, y } = origin(el, ctx);\n return all(Array.from({ length: o.count }, (_, i) => {\n const ang = (i / o.count) * Math.PI * 2;\n const d = rand(40, 80);\n const s = rand(12, 22);\n return spawn(x, y, `font-size:${s}px;line-height:1;margin:${-s / 2}px 0 0 ${-s / 2}px;color:${o.colors[i % o.colors.length]}`, ctx, [{ transform: 'translate(0,0) rotate(0) scale(.2)', opacity: 1 }, { transform: `translate(${Math.cos(ang) * d}px,${Math.sin(ang) * d}px) rotate(${rand(180, 360)}deg) scale(1)`, opacity: 0 }], { duration: o.duration, easing: 'cubic-bezier(0.22, 1, 0.36, 1)' }, '★');\n }));\n },\n },\n {\n name: 'jelly-press',\n kind: 'click',\n description: 'The pressed element squishes like jelly and wobbles back.',\n defaults: { duration: 650 },\n run: (el, o: any, ctx) =>\n ctx.reduced ? ctx.animate(el, [{ opacity: 1 }, { opacity: 0.7 }, { opacity: 1 }], { duration: 250 }) : ctx.animate(el, [{ transform: 'scale(1,1)' }, { transform: 'scale(1.15,.85)', offset: 0.2 }, { transform: 'scale(.9,1.1)', offset: 0.4 }, { transform: 'scale(1.05,.95)', offset: 0.6 }, { transform: 'scale(.98,1.02)', offset: 0.8 }, { transform: 'scale(1,1)' }], { duration: o.duration, easing: 'ease-out' }),\n },\n {\n name: 'ring-ripple',\n kind: 'click',\n description: 'Concentric outlined rings ripple out like water.',\n defaults: { rings: 3, color: '#22d3ee', size: 120, duration: 1000 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const { x, y } = origin(el, ctx);\n return all(Array.from({ length: o.rings }, (_, i) => spawn(x, y, `width:${o.size}px;height:${o.size}px;margin:${-o.size / 2}px 0 0 ${-o.size / 2}px;border:2px solid ${o.color};border-radius:50%`, ctx, [{ transform: 'scale(.1)', opacity: 0.8 }, { transform: 'scale(1)', opacity: 0 }], { duration: o.duration, delay: i * 160, easing: 'ease-out' })));\n },\n },\n {\n name: 'emoji-rain',\n kind: 'click',\n description: 'Emoji pop up and fall around the click (pass `emoji: \"🎉✨💜\"`).',\n defaults: { emoji: '🎉✨💜🔥', count: 14, duration: 1300 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const { x, y } = origin(el, ctx);\n const chars = Array.from(String(o.emoji));\n return all(Array.from({ length: o.count }, (_, i) => {\n const dx = rand(-90, 90);\n return spawn(x, y, `font-size:${rand(16, 28)}px;line-height:1`, ctx, [{ transform: 'translate(0,0) scale(.4)', opacity: 0 }, { transform: `translate(${dx * 0.6}px,${rand(-90, -50)}px) scale(1)`, opacity: 1, offset: 0.35 }, { transform: `translate(${dx}px,${rand(40, 90)}px) rotate(${rand(-60, 60)}deg) scale(.9)`, opacity: 0 }], { duration: o.duration, delay: i * 25, easing: 'cubic-bezier(0.33, 0, 0.67, 1)' }, chars[i % chars.length]);\n }));\n },\n },\n];\n","/**\n * 5.2 — bounce & physics micro-interactions, registered through\n * `registerEffect()`. Keyframes come from a damped-spring / gravity solver\n * (`springKeyframes()`, `bounceKeyframes()`), so the motion is physical but\n * still runs on the Web Animations API (compositor, reduced-motion aware).\n * Effects: `bounce-in`, `rubber-band`, `elastic-hover`, `drop-bounce`,\n * `gravity-text`, `spring-follow`, `bell-swing`.\n */\nimport type { EffectDefinition } from '../fx/registry';\nimport { all } from './shared';\n\nexport interface SpringOptions {\n stiffness?: number;\n damping?: number;\n mass?: number;\n /** Samples (keyframes). */\n steps?: number;\n}\n\n/**\n * Sample a damped spring from 0 → 1 and return the progress values plus the\n * time (ms) it takes to settle. Pure, deterministic.\n */\nexport function solveSpring({ stiffness = 180, damping = 12, mass = 1, steps = 40 }: SpringOptions = {}): { values: number[]; duration: number } {\n const dt = 1 / 120;\n let x = 0;\n let v = 0;\n const trace: number[] = [];\n let t = 0;\n for (; t < 4; t += dt) {\n const a = (-stiffness * (x - 1) - damping * v) / mass;\n v += a * dt;\n x += v * dt;\n trace.push(x);\n if (t > 0.1 && Math.abs(x - 1) < 0.001 && Math.abs(v) < 0.01) break;\n }\n const values = Array.from({ length: steps + 1 }, (_, i) => +trace[Math.min(trace.length - 1, Math.round((i / steps) * (trace.length - 1)))].toFixed(4));\n values[0] = 0;\n values[steps] = 1;\n return { values, duration: Math.round(trace.length * dt * 1000) };\n}\n\n/** Keyframes for a property driven by a spring: `map(progress)` → keyframe. */\nexport function springKeyframes(map: (p: number) => Keyframe, spring?: SpringOptions): { frames: Keyframe[]; duration: number } {\n const { values, duration } = solveSpring(spring);\n return { frames: values.map(map), duration };\n}\n\n/** Height (0 = floor, 1 = drop height) of a ball dropped with restitution `bounce`, sampled `steps` times. */\nexport function bounceKeyframes(bounce = 0.5, steps = 48): number[] {\n // segment durations scale with sqrt(height); heights scale with bounce^2 per hop\n const hops: number[] = [1];\n let h = 1;\n while (hops.length < 6 && h > 0.01) {\n h *= bounce * bounce;\n hops.push(h);\n }\n const segT = hops.map((hh, i) => (i === 0 ? Math.sqrt(hh) : 2 * Math.sqrt(hh)));\n const total = segT.reduce((a, b) => a + b, 0);\n return Array.from({ length: steps + 1 }, (_, i) => {\n let t = (i / steps) * total;\n for (let k = 0; k < hops.length; k++) {\n if (t <= segT[k] || k === hops.length - 1) {\n const tt = Math.min(t, segT[k]);\n if (k === 0) return +(1 - (tt / segT[0]) ** 2).toFixed(4);\n const half = segT[k] / 2;\n return +(hops[k] * (1 - ((tt - half) / half) ** 2)).toFixed(4);\n }\n t -= segT[k];\n }\n return 0;\n });\n}\n\nconst fade = (el: HTMLElement, ctx: Parameters<EffectDefinition['run']>[2]) => ctx.animate(el, [{ opacity: 0 }, { opacity: 1 }], { duration: 200 });\n\nexport const PHYSICS_FX: EffectDefinition[] = [\n {\n name: 'bounce-in',\n kind: 'enter',\n description: 'Springs in from small with an overshoot (spring solver; stiffness / damping options).',\n defaults: { stiffness: 220, damping: 11, from: 0.3 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return fade(el, ctx);\n const { frames, duration } = springKeyframes((p) => ({ transform: `scale(${(o.from + (1 - o.from) * p).toFixed(4)})`, opacity: Math.min(1, p * 3) }), o);\n return ctx.animate(el, frames, { duration, easing: 'linear' });\n },\n },\n {\n name: 'rubber-band',\n kind: 'attention',\n description: 'Stretches wide, snaps back thin and settles like a rubber band.',\n defaults: { duration: 900, amount: 0.25 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const a = o.amount;\n return ctx.animate(el, [{ transform: 'scale(1,1)' }, { transform: `scale(${1 + a},${1 - a})`, offset: 0.3 }, { transform: `scale(${1 - a},${1 + a})`, offset: 0.4 }, { transform: `scale(${1 + a / 2},${1 - a / 2})`, offset: 0.5 }, { transform: `scale(${1 - a / 5},${1 + a / 5})`, offset: 0.65 }, { transform: `scale(${1 + a / 10},${1 - a / 10})`, offset: 0.75 }, { transform: 'scale(1,1)' }], { duration: o.duration });\n },\n },\n {\n name: 'elastic-hover',\n kind: 'hover',\n description: 'Hover lifts with a springy overshoot; leaving springs back (persistent; trigger=\"load\").',\n defaults: { lift: 6, scale: 1.04, stiffness: 260, damping: 10 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const to = (on: boolean) => {\n const from = on ? 0 : 1;\n const { frames, duration } = springKeyframes((p) => {\n const k = from + (on ? p : -p);\n return { transform: `translateY(${(-o.lift * k).toFixed(2)}px) scale(${(1 + (o.scale - 1) * k).toFixed(4)})` };\n }, o);\n ctx.animate(el, frames, { duration, fill: 'forwards', easing: 'linear' });\n };\n const enter = () => to(true);\n const leave = () => to(false);\n el.addEventListener('pointerenter', enter);\n el.addEventListener('pointerleave', leave);\n return () => {\n el.removeEventListener('pointerenter', enter);\n el.removeEventListener('pointerleave', leave);\n };\n },\n },\n {\n name: 'drop-bounce',\n kind: 'enter',\n description: 'Falls in under gravity and bounces to rest (`height`, `bounce` restitution 0–0.9).',\n defaults: { height: 120, bounce: 0.5, duration: 1100 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return fade(el, ctx);\n const hs = bounceKeyframes(Math.min(0.9, Math.max(0, o.bounce)));\n return ctx.animate(el, hs.map((h, i) => ({ transform: `translateY(${(-h * o.height).toFixed(1)}px)`, opacity: i === 0 ? 0 : 1 })), { duration: o.duration, easing: 'linear' });\n },\n },\n {\n name: 'gravity-text',\n kind: 'text',\n description: 'Each character drops in under gravity with a bounce, staggered (splits the text into aria-hidden spans; the label stays readable).',\n defaults: { height: 60, bounce: 0.45, duration: 900, stagger: 45 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n if (!el.dataset.usaSplit) {\n const text = el.textContent || '';\n el.setAttribute('aria-label', text);\n el.textContent = '';\n for (const ch of Array.from(text)) {\n const s = document.createElement('span');\n s.setAttribute('aria-hidden', 'true');\n s.style.display = 'inline-block';\n s.style.whiteSpace = 'pre';\n s.textContent = ch;\n el.appendChild(s);\n }\n el.dataset.usaSplit = '1';\n }\n const hs = bounceKeyframes(o.bounce, 32);\n return all((Array.from(el.children) as HTMLElement[]).map((s, i) => ctx.animate(s, hs.map((h) => ({ transform: `translateY(${(-h * o.height).toFixed(1)}px)` })), { duration: o.duration, delay: i * o.stagger, easing: 'linear', fill: 'backwards' })));\n },\n },\n {\n name: 'spring-follow',\n kind: 'cursor',\n description: 'The element springs toward the pointer while it moves over its parent, and back home on leave (persistent).',\n defaults: { stiffness: 0.12, damping: 0.75, range: 40 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n const host = el.parentElement || el;\n let tx = 0;\n let ty = 0;\n let x = 0;\n let y = 0;\n let vx = 0;\n let vy = 0;\n let raf = 0;\n const tick = () => {\n vx = (vx + (tx - x) * o.stiffness) * o.damping;\n vy = (vy + (ty - y) * o.stiffness) * o.damping;\n x += vx;\n y += vy;\n el.style.translate = `${x.toFixed(2)}px ${y.toFixed(2)}px`;\n raf = Math.abs(vx) + Math.abs(vy) + Math.abs(tx - x) + Math.abs(ty - y) > 0.05 ? requestAnimationFrame(tick) : 0;\n };\n const kick = () => {\n if (!raf) raf = requestAnimationFrame(tick);\n };\n const move = (e: PointerEvent) => {\n const r = host.getBoundingClientRect();\n const nx = (e.clientX - r.left) / (r.width || 1) - 0.5;\n const ny = (e.clientY - r.top) / (r.height || 1) - 0.5;\n tx = nx * 2 * o.range;\n ty = ny * 2 * o.range;\n kick();\n };\n const leave = () => {\n tx = ty = 0;\n kick();\n };\n host.addEventListener('pointermove', move);\n host.addEventListener('pointerleave', leave);\n return () => {\n host.removeEventListener('pointermove', move);\n host.removeEventListener('pointerleave', leave);\n cancelAnimationFrame(raf);\n el.style.translate = '';\n };\n },\n },\n {\n name: 'bell-swing',\n kind: 'attention',\n description: 'Swings from its top like a ringing bell with damped oscillation.',\n defaults: { angle: 22, stiffness: 120, damping: 4 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n el.style.transformOrigin = 'top center';\n const { frames, duration } = springKeyframes((p) => ({ transform: `rotate(${(o.angle * (1 - p)).toFixed(2)}deg)` }), { stiffness: o.stiffness, damping: o.damping, steps: 48 });\n frames[0] = { transform: 'rotate(0deg)' };\n return ctx.animate(el, frames, { duration: Math.min(duration, 2400), easing: 'linear' });\n },\n },\n];\n","/**\n * 5.3 — page-wide effects, registered through `registerEffect()`.\n * Transitions (cover → `onCovered()` → reveal): `curtain`, `iris`,\n * `pixel-dissolve`, `blinds`. Persistent page effects: `velocity-skew`,\n * `spotlight`, `edge-glow`.\n *\n * ```ts\n * await playEffect(document.body, 'iris', { onCovered: () => router.go('/next') });\n * ```\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { origin } from './shared';\n\n/** A full-viewport, aria-hidden, pointer-blocking (while covering) transition layer. */\nfunction screen(css = ''): HTMLElement {\n const s = document.createElement('div');\n s.setAttribute('aria-hidden', 'true');\n s.setAttribute('data-usa-page-fx', '');\n s.style.cssText = `position:fixed;inset:0;z-index:2147483001;pointer-events:auto;${css}`;\n document.body.appendChild(s);\n return s;\n}\n\nconst wait = (a: Animation | null) => (a ? a.finished.catch(() => undefined) : Promise.resolve());\nconst call = async (fn: unknown) => {\n if (typeof fn === 'function') await fn();\n};\n\n/** Reduced-motion version of every transition: a quick cross-fade through the cover colour. */\nasync function crossFade(o: any, ctx: EffectContext): Promise<void> {\n const s = screen(`background:${o.color};opacity:0`);\n await wait(ctx.animate(s, [{ opacity: 0 }, { opacity: 1 }], { duration: 150, fill: 'forwards' }));\n await call(o.onCovered);\n await wait(ctx.animate(s, [{ opacity: 1 }, { opacity: 0 }], { duration: 150, fill: 'forwards' }));\n s.remove();\n}\n\n/** Build a transition from a cover layer and cover / reveal animations of its parts. */\nfunction transition(build: (s: HTMLElement, o: any, ctx: EffectContext, el: HTMLElement) => { parts: HTMLElement[]; cover: Keyframe[] | ((i: number) => Keyframe[]); delay?: (i: number) => number }): EffectDefinition['run'] {\n return async (el, o: any, ctx) => {\n if (ctx.reduced) return crossFade(o, ctx);\n const s = screen('pointer-events:auto');\n const { parts, cover, delay } = build(s, o, ctx, el);\n const frames = (i: number) => (typeof cover === 'function' ? cover(i) : cover);\n const half = o.duration / 2;\n await Promise.all(parts.map((p, i) => wait(ctx.animate(p, frames(i), { duration: half, delay: delay?.(i) ?? 0, easing: 'cubic-bezier(0.65, 0, 0.35, 1)', fill: 'both' }))));\n await call(o.onCovered);\n if (o.hold) await new Promise((r) => setTimeout(r, o.hold));\n await Promise.all(parts.map((p, i) => wait(ctx.animate(p, [...frames(i)].reverse(), { duration: half, delay: delay?.(i) ?? 0, easing: 'cubic-bezier(0.65, 0, 0.35, 1)', fill: 'both' }))));\n s.remove();\n };\n}\n\nconst part = (s: HTMLElement, css: string) => {\n const p = document.createElement('div');\n p.style.cssText = `position:absolute;${css}`;\n s.appendChild(p);\n return p;\n};\n\nconst TRANSITION_DEFAULTS = { color: '#0f0f1a', duration: 1000, hold: 0, onCovered: undefined as undefined | (() => unknown) };\n\nexport const PAGE_FX: EffectDefinition[] = [\n {\n name: 'curtain',\n kind: 'page',\n description: 'Two curtain panels close from the sides, call onCovered(), then open.',\n reduced: 'run',\n defaults: TRANSITION_DEFAULTS,\n run: transition((s, o) => ({\n parts: [part(s, `top:0;bottom:0;left:0;width:50.5%;background:${o.color}`), part(s, `top:0;bottom:0;right:0;width:50.5%;background:${o.color}`)],\n cover: (i) => [{ transform: `translateX(${i ? 100 : -100}%)` }, { transform: 'translateX(0)' }],\n })),\n },\n {\n name: 'iris',\n kind: 'page',\n description: 'A circle closes on the click point (or the element’s center), calls onCovered(), then opens.',\n reduced: 'run',\n defaults: TRANSITION_DEFAULTS,\n run: transition((s, o, ctx, el) => {\n const { x, y } = origin(el, ctx);\n const r = Math.hypot(Math.max(x, innerWidth - x), Math.max(y, innerHeight - y)) + 2;\n // a huge box-shadow ring around a hole: the hole shrinks to 0 to cover\n const p = part(s, `left:${x}px;top:${y}px;width:0;height:0;border-radius:50%;box-shadow:0 0 0 ${Math.ceil(r)}px ${o.color}`);\n s.style.background = 'transparent';\n return { parts: [p], cover: [{ width: `${r * 2}px`, height: `${r * 2}px`, margin: `${-r}px 0 0 ${-r}px` }, { width: '0px', height: '0px', margin: '0px 0 0 0px' }] };\n }),\n },\n {\n name: 'pixel-dissolve',\n kind: 'page',\n description: 'The screen fills with pixels in random order, calls onCovered(), then dissolves (`cols` × `rows`).',\n reduced: 'run',\n defaults: { ...TRANSITION_DEFAULTS, cols: 16, rows: 10 },\n run: transition((s, o) => {\n const n = o.cols * o.rows;\n const order = Array.from({ length: n }, (_, i) => i).sort(() => Math.random() - 0.5);\n const parts = Array.from({ length: n }, (_, i) => part(s, `left:${((i % o.cols) * 100) / o.cols}%;top:${(Math.floor(i / o.cols) * 100) / o.rows}%;width:${100 / o.cols + 0.2}%;height:${100 / o.rows + 0.2}%;background:${o.color};opacity:0`));\n return { parts, cover: [{ opacity: 0 }, { opacity: 1 }], delay: (i) => (order[i] / n) * (o.duration / 2) * 0.6 };\n }),\n },\n {\n name: 'blinds',\n kind: 'page',\n description: 'Horizontal slats rotate shut like venetian blinds, call onCovered(), then open (`slats`).',\n reduced: 'run',\n defaults: { ...TRANSITION_DEFAULTS, slats: 8 },\n run: transition((s, o) => ({\n parts: Array.from({ length: o.slats }, (_, i) => part(s, `left:0;right:0;top:${(i * 100) / o.slats}%;height:${100 / o.slats + 0.3}%;background:${o.color};transform-origin:top`)),\n cover: [{ transform: 'scaleY(0)' }, { transform: 'scaleY(1)' }],\n delay: (i) => i * 30,\n })),\n },\n {\n name: 'velocity-skew',\n kind: 'scroll',\n description: 'Skews the element with scroll velocity and eases back when scrolling stops (persistent).',\n defaults: { max: 8, factor: 0.25 },\n run: (el, o: any, ctx) => {\n if (ctx.reduced) return;\n let last = scrollY;\n let skew = 0;\n let raf = 0;\n const tick = () => {\n const y = scrollY;\n const target = Math.max(-o.max, Math.min(o.max, (y - last) * o.factor));\n last = y;\n skew += (target - skew) * 0.2;\n el.style.transform = `skewY(${skew.toFixed(3)}deg)`;\n raf = Math.abs(skew) > 0.01 || Math.abs(target) > 0.01 ? requestAnimationFrame(tick) : 0;\n if (!raf) el.style.transform = '';\n };\n const onScroll = () => {\n if (!raf) raf = requestAnimationFrame(tick);\n };\n addEventListener('scroll', onScroll, { passive: true });\n return () => {\n removeEventListener('scroll', onScroll);\n cancelAnimationFrame(raf);\n el.style.transform = '';\n };\n },\n },\n {\n name: 'spotlight',\n kind: 'cursor',\n description: 'Dims the page except a soft circle that follows the pointer (persistent; `radius`, `dim`).',\n defaults: { radius: 180, dim: 0.72 },\n run: (_el, o: any, ctx) => {\n if (ctx.reduced) return;\n const s = screen(`pointer-events:none;background:radial-gradient(circle ${o.radius}px at var(--x,50%) var(--y,50%),transparent 0,transparent 60%,rgba(0,0,0,${o.dim}) 100%)`);\n const move = (e: PointerEvent) => {\n s.style.setProperty('--x', `${e.clientX}px`);\n s.style.setProperty('--y', `${e.clientY}px`);\n };\n addEventListener('pointermove', move, { passive: true });\n return () => {\n removeEventListener('pointermove', move);\n s.remove();\n };\n },\n },\n {\n name: 'edge-glow',\n kind: 'scroll',\n description: 'A soft glow lights the top / bottom edge of the viewport while scrolling in that direction (persistent).',\n defaults: { color: '#7c5cff', size: 90 },\n run: (_el, o: any, ctx) => {\n if (ctx.reduced) return;\n const s = screen('pointer-events:none;opacity:0;transition:opacity .35s ease-out');\n let last = scrollY;\n let t = 0;\n const onScroll = () => {\n const down = scrollY >= last;\n last = scrollY;\n s.style.background = `linear-gradient(${down ? 'to top' : 'to bottom'},${o.color}55,transparent ${o.size}px)`;\n s.style.opacity = '1';\n clearTimeout(t);\n t = setTimeout(() => (s.style.opacity = '0'), 160) as unknown as number;\n };\n addEventListener('scroll', onScroll, { passive: true });\n return () => {\n removeEventListener('scroll', onScroll);\n clearTimeout(t);\n s.remove();\n };\n },\n },\n];\n","/**\n * 5.4 — `<usa-story template=\"…\">` scroll-storytelling templates.\n *\n * - `pin` — a sticky `[data-stage]` while `[data-step]` sections scroll past; the\n * step in view gets `data-active`, the stage gets `data-active-step=\"<index>\"`.\n * - `gallery` — a horizontal `[data-track]` slides sideways as you scroll down.\n * - `zoom` — the `[data-stage]` zooms toward the viewer (`zoom=\"6\"`) and fades.\n * - `compare` — before / after (`[data-before]`, `[data-after]`) wipe driven by\n * scroll, plus a draggable, keyboard-accessible handle (`role=\"slider\"`).\n * - `counter` — `[data-count=\"1234\"]` numbers count up when they enter view.\n * - `highlight` — paragraphs dim except the one crossing the viewport center.\n *\n * Every template sets `--usa-story-progress` (0–1) on the host and dispatches\n * `usa-story-step` (`detail: { index }`). Reduced motion: no sliding / zooming\n * (the gallery stacks vertically), counters show final values, the rest is\n * class changes only.\n */\nimport { defineElement, type UsaElement } from '../base';\n\nexport const STORY_TEMPLATES = ['pin', 'gallery', 'zoom', 'compare', 'counter', 'highlight'] as const;\nexport type StoryTemplate = (typeof STORY_TEMPLATES)[number];\n\nexport interface UsaStoryElement extends UsaElement {\n /** Scroll progress through the story, 0–1. */\n readonly progress: number;\n /** Index of the active step (pin / highlight), or -1. */\n readonly step: number;\n}\n\nconst CSS = `usa-story{display:block;position:relative}\nusa-story[template=pin] [data-stage],usa-story[template=gallery] [data-sticky],usa-story[template=zoom] [data-stage],usa-story[template=compare] [data-sticky]{position:sticky;top:0}\nusa-story[template=pin] [data-stage]{align-self:start}\nusa-story[template=pin] [data-step]{min-height:80vh;opacity:.35;transition:opacity .3s}\nusa-story[template=pin] [data-step][data-active]{opacity:1}\nusa-story[template=gallery] [data-sticky]{height:100vh;overflow:hidden;display:flex;align-items:center}\nusa-story[template=gallery] [data-track]{display:flex;gap:24px;will-change:transform}\nusa-story[template=gallery][data-static] [data-sticky]{position:static;height:auto;overflow:visible}\nusa-story[template=gallery][data-static] [data-track]{flex-direction:column;transform:none!important}\nusa-story[template=zoom] [data-stage]{height:100vh;overflow:hidden;display:grid;place-items:center}\nusa-story[template=compare] [data-sticky]{height:var(--usa-story-h,70vh);overflow:hidden}\nusa-story[template=compare] [data-before],usa-story[template=compare] [data-after]{position:absolute;inset:0}\nusa-story[template=compare] [data-after]{clip-path:inset(0 0 0 var(--usa-split,50%))}\nusa-story [data-handle]{position:absolute;top:0;bottom:0;left:var(--usa-split,50%);width:4px;margin-left:-2px;background:#fff;box-shadow:0 0 0 1px #0003;cursor:ew-resize;touch-action:none}\nusa-story [data-handle]:focus-visible{outline:3px solid #7c5cff;outline-offset:2px}\nusa-story[template=highlight] p,usa-story[template=highlight] [data-step]{opacity:.3;transition:opacity .25s}\nusa-story[template=highlight] [data-active]{opacity:1}`;\n\nconst clamp = (v: number, a = 0, b = 1) => Math.min(b, Math.max(a, v));\n\n/** Progress of `el` through the viewport: 0 when its top hits the viewport top, 1 when its bottom hits the viewport bottom. */\nexport function storyProgress(el: Element, vh = typeof innerHeight === 'number' ? innerHeight : 800): number {\n const r = el.getBoundingClientRect();\n const span = r.height - vh;\n return span > 0 ? clamp(-r.top / span) : clamp((vh - r.top) / (vh + r.height));\n}\n\n/** Format a counted value like the target (`1,234`, `12.5`, prefix / suffix kept). */\nexport function formatCount(target: string, t: number): string {\n const m = target.match(/^(\\D*)([\\d,]*\\.?\\d+)(.*)$/);\n if (!m) return target;\n const [, pre, num, post] = m;\n const n = parseFloat(num.replace(/,/g, ''));\n const dec = (num.split('.')[1] || '').length;\n let s = (n * t).toFixed(dec);\n if (num.includes(',')) s = Number(s).toLocaleString('en-US', { minimumFractionDigits: dec, maximumFractionDigits: dec });\n return pre + s + post;\n}\n\nexport function defineStory(tag = 'usa-story'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaStory extends Base {\n static get observedAttributes(): string[] {\n return ['template', 'zoom'];\n }\n progress = 0;\n step = -1;\n private frame = 0;\n get template(): StoryTemplate {\n const t = this.str('template', 'pin') as StoryTemplate;\n return STORY_TEMPLATES.includes(t) ? t : 'pin';\n }\n private steps(): HTMLElement[] {\n const own = Array.from(this.querySelectorAll<HTMLElement>('[data-step]:not([data-stage])'));\n return own.length || this.template !== 'highlight' ? own : Array.from(this.querySelectorAll<HTMLElement>('p'));\n }\n private setStep(i: number): void {\n if (i === this.step) return;\n this.step = i;\n this.steps().forEach((s, k) => s.toggleAttribute('data-active', k === i));\n const stage = this.querySelector<HTMLElement>('[data-stage]');\n if (stage) stage.dataset.activeStep = String(i);\n this.dispatchEvent(new CustomEvent('usa-story-step', { detail: { index: i }, bubbles: true }));\n }\n /** Recompute from the current scroll position (called on scroll / resize). */\n update(): void {\n this.frame = 0;\n const p = (this.progress = storyProgress(this));\n this.style.setProperty('--usa-story-progress', p.toFixed(4));\n const t = this.template;\n const vh = innerHeight || 800;\n if (t === 'pin' || t === 'highlight') {\n const mid = vh / 2;\n let best = -1;\n let bestD = Infinity;\n this.steps().forEach((s, i) => {\n const r = s.getBoundingClientRect();\n const d = r.top <= mid && r.bottom >= mid ? 0 : Math.min(Math.abs(r.top - mid), Math.abs(r.bottom - mid));\n if (d < bestD) (bestD = d), (best = i);\n });\n this.setStep(best);\n } else if (t === 'gallery' && !this.reduced) {\n const track = this.querySelector<HTMLElement>('[data-track]');\n const box = this.querySelector<HTMLElement>('[data-sticky]');\n if (track && box) track.style.transform = `translateX(${(-p * Math.max(0, track.scrollWidth - box.clientWidth)).toFixed(1)}px)`;\n } else if (t === 'zoom' && !this.reduced) {\n const inner = this.querySelector<HTMLElement>('[data-stage] > *');\n if (inner) {\n inner.style.transform = `scale(${(1 + p * (this.num('zoom', 6) - 1)).toFixed(3)})`;\n inner.style.opacity = String(clamp(1.4 - p * 1.4).toFixed(3));\n }\n } else if (t === 'compare' && !this.hasAttribute('data-dragged')) {\n this.setSplit(p * 100);\n } else if (t === 'counter') {\n this.querySelectorAll<HTMLElement>('[data-count]:not([data-counted])').forEach((el) => {\n const r = el.getBoundingClientRect();\n if (r.top < vh * 0.9 && r.bottom > 0) this.count(el);\n });\n }\n }\n private setSplit(pct: number): void {\n const v = clamp(pct, 0, 100);\n this.style.setProperty('--usa-split', `${v.toFixed(2)}%`);\n const h = this.querySelector<HTMLElement>('[data-handle]');\n if (h) h.setAttribute('aria-valuenow', String(Math.round(v)));\n }\n private count(el: HTMLElement): void {\n el.dataset.counted = '';\n const target = el.dataset.count || el.textContent || '0';\n el.setAttribute('aria-label', target);\n if (this.reduced) {\n el.textContent = target;\n return;\n }\n const dur = Number(el.dataset.duration) || 1600;\n const t0 = performance.now();\n const tick = (now: number) => {\n const k = clamp((now - t0) / dur);\n el.textContent = formatCount(target, 1 - (1 - k) ** 3);\n if (k < 1) requestAnimationFrame(tick);\n };\n requestAnimationFrame(tick);\n }\n mount(): void {\n this.toggleAttribute('data-static', this.reduced);\n if (this.template === 'compare') this.mountCompare();\n const kick = () => {\n if (!this.frame) this.frame = requestAnimationFrame(() => this.update());\n };\n this.listen(window, 'scroll', kick, { passive: true });\n this.listen(window, 'resize', kick);\n this.onCleanup(() => cancelAnimationFrame(this.frame));\n this.update();\n }\n private mountCompare(): void {\n const box = this.querySelector<HTMLElement>('[data-sticky]') || this;\n let h = this.querySelector<HTMLElement>('[data-handle]');\n if (!h) {\n h = document.createElement('div');\n h.setAttribute('data-handle', '');\n box.appendChild(h);\n this.onCleanup(() => h!.remove());\n }\n h.tabIndex = 0;\n h.setAttribute('role', 'slider');\n h.setAttribute('aria-label', this.str('label', 'Before / after'));\n h.setAttribute('aria-valuemin', '0');\n h.setAttribute('aria-valuemax', '100');\n const at = (e: PointerEvent) => {\n const r = box.getBoundingClientRect();\n this.dataset.dragged = '';\n this.setSplit(((e.clientX - r.left) / (r.width || 1)) * 100);\n };\n let drag = false;\n this.listen(h, 'pointerdown', (e: PointerEvent) => {\n drag = true;\n h!.setPointerCapture?.(e.pointerId);\n });\n this.listen(h, 'pointermove', (e: PointerEvent) => drag && at(e));\n this.listen(h, 'pointerup', () => (drag = false));\n this.listen(h, 'keydown', (e: KeyboardEvent) => {\n const cur = parseFloat(h!.getAttribute('aria-valuenow') || '50');\n const step = e.shiftKey ? 10 : 2;\n const next = e.key === 'ArrowLeft' || e.key === 'ArrowDown' ? cur - step : e.key === 'ArrowRight' || e.key === 'ArrowUp' ? cur + step : e.key === 'Home' ? 0 : e.key === 'End' ? 100 : null;\n if (next == null) return;\n e.preventDefault();\n this.dataset.dragged = '';\n this.setSplit(next);\n });\n this.setSplit(50);\n }\n unmount(): void {\n this.step = -1;\n delete this.dataset.dragged;\n }\n },\n { id: 'usa-story', text: CSS }\n );\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-story': UsaStoryElement;\n }\n}\n","/**\n * use-scroll-animate/components/effects — the 5.x effect packs, all\n * registered through `registerEffect()` (5.0) and playable with\n * `playEffect()`, `bindEffect()` or `<usa-fx>`. Kept out of\n * `use-scroll-animate/components` / `components/lite` so their size budgets\n * hold; the UMD bundle registers everything.\n *\n * ```ts\n * import { registerAllEffects } from 'use-scroll-animate/components/effects';\n * registerAllEffects();\n * ```\n */\nimport { registerEffects, registerBuiltinEffects } from '../fx/index';\nimport type { EffectDefinition } from '../fx/registry';\nimport { CARD_FX, CLICK_FX } from './cards-click';\nimport { PHYSICS_FX } from './physics';\nimport { PAGE_FX } from './page';\nimport { defineStory } from './story';\n\nexport { CARD_FX, CLICK_FX, PHYSICS_FX, PAGE_FX };\nexport { solveSpring, springKeyframes, bounceKeyframes } from './physics';\nexport type { SpringOptions } from './physics';\nexport { defineStory, STORY_TEMPLATES, storyProgress, formatCount } from './story';\nexport type { StoryTemplate, UsaStoryElement } from './story';\nexport { fxLayer } from './shared';\n\n/** The effect packs by version, in release order. */\nexport const EFFECT_PACKS: Record<string, EffectDefinition[]> = {\n 'cards-click': [...CARD_FX, ...CLICK_FX],\n physics: PHYSICS_FX,\n page: PAGE_FX,\n};\n\n/** 5.1: card & click effects 2.0. */\nexport function registerCardClickEffects(): void {\n registerEffects(EFFECT_PACKS['cards-click']);\n}\n\n/** 5.2: bounce & physics micro-interactions. */\nexport function registerPhysicsEffects(): void {\n registerEffects(EFFECT_PACKS.physics);\n}\n\n/** 5.3: page-wide transitions and effects. */\nexport function registerPageEffects(): void {\n registerEffects(EFFECT_PACKS.page);\n}\n\n/** Define the 5.x elements of this entry (`<usa-story>`, …) under their default tags. */\nexport function defineEffectElements(): void {\n defineStory();\n}\n\n/** Register the built-ins and every pack (idempotent). */\nexport function registerAllEffects(): void {\n registerBuiltinEffects();\n for (const defs of Object.values(EFFECT_PACKS)) registerEffects(defs);\n}\n"],"names":["defineElement","registerEffects","registerBuiltinEffects"],"mappings":"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"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
type MotionSensitivity = 'full' | 'gentle' | 'minimal' | 'static';
|
|
2
2
|
type Cleanup = () => void;
|
|
3
|
+
/**
|
|
4
|
+
* Members shared by every `<usa-*>` element. Attribute helpers, a cleanup
|
|
5
|
+
* bag that is emptied on disconnect, and motion helpers that degrade to the
|
|
6
|
+
* final state without WAAPI or under reduced motion.
|
|
7
|
+
*/
|
|
8
|
+
interface UsaElement extends HTMLElement {
|
|
9
|
+
/** `true` while reduced motion applies to this element. */
|
|
10
|
+
readonly reduced: boolean;
|
|
11
|
+
}
|
|
3
12
|
|
|
4
13
|
/**
|
|
5
14
|
* 5.0 — unified plugin-style effect registration. Every effect (built-in or
|
|
@@ -84,6 +93,56 @@ declare function springKeyframes(map: (p: number) => Keyframe, spring?: SpringOp
|
|
|
84
93
|
declare function bounceKeyframes(bounce?: number, steps?: number): number[];
|
|
85
94
|
declare const PHYSICS_FX: EffectDefinition[];
|
|
86
95
|
|
|
96
|
+
/**
|
|
97
|
+
* 5.3 — page-wide effects, registered through `registerEffect()`.
|
|
98
|
+
* Transitions (cover → `onCovered()` → reveal): `curtain`, `iris`,
|
|
99
|
+
* `pixel-dissolve`, `blinds`. Persistent page effects: `velocity-skew`,
|
|
100
|
+
* `spotlight`, `edge-glow`.
|
|
101
|
+
*
|
|
102
|
+
* ```ts
|
|
103
|
+
* await playEffect(document.body, 'iris', { onCovered: () => router.go('/next') });
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
|
|
107
|
+
declare const PAGE_FX: EffectDefinition[];
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* 5.4 — `<usa-story template="…">` scroll-storytelling templates.
|
|
111
|
+
*
|
|
112
|
+
* - `pin` — a sticky `[data-stage]` while `[data-step]` sections scroll past; the
|
|
113
|
+
* step in view gets `data-active`, the stage gets `data-active-step="<index>"`.
|
|
114
|
+
* - `gallery` — a horizontal `[data-track]` slides sideways as you scroll down.
|
|
115
|
+
* - `zoom` — the `[data-stage]` zooms toward the viewer (`zoom="6"`) and fades.
|
|
116
|
+
* - `compare` — before / after (`[data-before]`, `[data-after]`) wipe driven by
|
|
117
|
+
* scroll, plus a draggable, keyboard-accessible handle (`role="slider"`).
|
|
118
|
+
* - `counter` — `[data-count="1234"]` numbers count up when they enter view.
|
|
119
|
+
* - `highlight` — paragraphs dim except the one crossing the viewport center.
|
|
120
|
+
*
|
|
121
|
+
* Every template sets `--usa-story-progress` (0–1) on the host and dispatches
|
|
122
|
+
* `usa-story-step` (`detail: { index }`). Reduced motion: no sliding / zooming
|
|
123
|
+
* (the gallery stacks vertically), counters show final values, the rest is
|
|
124
|
+
* class changes only.
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
declare const STORY_TEMPLATES: readonly ["pin", "gallery", "zoom", "compare", "counter", "highlight"];
|
|
128
|
+
type StoryTemplate = (typeof STORY_TEMPLATES)[number];
|
|
129
|
+
interface UsaStoryElement extends UsaElement {
|
|
130
|
+
/** Scroll progress through the story, 0–1. */
|
|
131
|
+
readonly progress: number;
|
|
132
|
+
/** Index of the active step (pin / highlight), or -1. */
|
|
133
|
+
readonly step: number;
|
|
134
|
+
}
|
|
135
|
+
/** Progress of `el` through the viewport: 0 when its top hits the viewport top, 1 when its bottom hits the viewport bottom. */
|
|
136
|
+
declare function storyProgress(el: Element, vh?: number): number;
|
|
137
|
+
/** Format a counted value like the target (`1,234`, `12.5`, prefix / suffix kept). */
|
|
138
|
+
declare function formatCount(target: string, t: number): string;
|
|
139
|
+
declare function defineStory(tag?: string): CustomElementConstructor | undefined;
|
|
140
|
+
declare global {
|
|
141
|
+
interface HTMLElementTagNameMap {
|
|
142
|
+
'usa-story': UsaStoryElement;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
87
146
|
/** Helpers shared by the 5.x effect packs. */
|
|
88
147
|
|
|
89
148
|
/** A fixed, pointer-transparent, aria-hidden layer for transient particles. */
|
|
@@ -95,8 +154,12 @@ declare const EFFECT_PACKS: Record<string, EffectDefinition[]>;
|
|
|
95
154
|
declare function registerCardClickEffects(): void;
|
|
96
155
|
/** 5.2: bounce & physics micro-interactions. */
|
|
97
156
|
declare function registerPhysicsEffects(): void;
|
|
157
|
+
/** 5.3: page-wide transitions and effects. */
|
|
158
|
+
declare function registerPageEffects(): void;
|
|
159
|
+
/** Define the 5.x elements of this entry (`<usa-story>`, …) under their default tags. */
|
|
160
|
+
declare function defineEffectElements(): void;
|
|
98
161
|
/** Register the built-ins and every pack (idempotent). */
|
|
99
162
|
declare function registerAllEffects(): void;
|
|
100
163
|
|
|
101
|
-
export { CARD_FX, CLICK_FX, EFFECT_PACKS, PHYSICS_FX, bounceKeyframes, fxLayer, registerAllEffects, registerCardClickEffects, registerPhysicsEffects, solveSpring, springKeyframes };
|
|
102
|
-
export type { SpringOptions };
|
|
164
|
+
export { CARD_FX, CLICK_FX, EFFECT_PACKS, PAGE_FX, PHYSICS_FX, STORY_TEMPLATES, bounceKeyframes, defineEffectElements, defineStory, formatCount, fxLayer, registerAllEffects, registerCardClickEffects, registerPageEffects, registerPhysicsEffects, solveSpring, springKeyframes, storyProgress };
|
|
165
|
+
export type { SpringOptions, StoryTemplate, UsaStoryElement };
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
type MotionSensitivity = 'full' | 'gentle' | 'minimal' | 'static';
|
|
2
2
|
type Cleanup = () => void;
|
|
3
|
+
/**
|
|
4
|
+
* Members shared by every `<usa-*>` element. Attribute helpers, a cleanup
|
|
5
|
+
* bag that is emptied on disconnect, and motion helpers that degrade to the
|
|
6
|
+
* final state without WAAPI or under reduced motion.
|
|
7
|
+
*/
|
|
8
|
+
interface UsaElement extends HTMLElement {
|
|
9
|
+
/** `true` while reduced motion applies to this element. */
|
|
10
|
+
readonly reduced: boolean;
|
|
11
|
+
}
|
|
3
12
|
|
|
4
13
|
/**
|
|
5
14
|
* 5.0 — unified plugin-style effect registration. Every effect (built-in or
|
|
@@ -84,6 +93,56 @@ declare function springKeyframes(map: (p: number) => Keyframe, spring?: SpringOp
|
|
|
84
93
|
declare function bounceKeyframes(bounce?: number, steps?: number): number[];
|
|
85
94
|
declare const PHYSICS_FX: EffectDefinition[];
|
|
86
95
|
|
|
96
|
+
/**
|
|
97
|
+
* 5.3 — page-wide effects, registered through `registerEffect()`.
|
|
98
|
+
* Transitions (cover → `onCovered()` → reveal): `curtain`, `iris`,
|
|
99
|
+
* `pixel-dissolve`, `blinds`. Persistent page effects: `velocity-skew`,
|
|
100
|
+
* `spotlight`, `edge-glow`.
|
|
101
|
+
*
|
|
102
|
+
* ```ts
|
|
103
|
+
* await playEffect(document.body, 'iris', { onCovered: () => router.go('/next') });
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
|
|
107
|
+
declare const PAGE_FX: EffectDefinition[];
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* 5.4 — `<usa-story template="…">` scroll-storytelling templates.
|
|
111
|
+
*
|
|
112
|
+
* - `pin` — a sticky `[data-stage]` while `[data-step]` sections scroll past; the
|
|
113
|
+
* step in view gets `data-active`, the stage gets `data-active-step="<index>"`.
|
|
114
|
+
* - `gallery` — a horizontal `[data-track]` slides sideways as you scroll down.
|
|
115
|
+
* - `zoom` — the `[data-stage]` zooms toward the viewer (`zoom="6"`) and fades.
|
|
116
|
+
* - `compare` — before / after (`[data-before]`, `[data-after]`) wipe driven by
|
|
117
|
+
* scroll, plus a draggable, keyboard-accessible handle (`role="slider"`).
|
|
118
|
+
* - `counter` — `[data-count="1234"]` numbers count up when they enter view.
|
|
119
|
+
* - `highlight` — paragraphs dim except the one crossing the viewport center.
|
|
120
|
+
*
|
|
121
|
+
* Every template sets `--usa-story-progress` (0–1) on the host and dispatches
|
|
122
|
+
* `usa-story-step` (`detail: { index }`). Reduced motion: no sliding / zooming
|
|
123
|
+
* (the gallery stacks vertically), counters show final values, the rest is
|
|
124
|
+
* class changes only.
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
declare const STORY_TEMPLATES: readonly ["pin", "gallery", "zoom", "compare", "counter", "highlight"];
|
|
128
|
+
type StoryTemplate = (typeof STORY_TEMPLATES)[number];
|
|
129
|
+
interface UsaStoryElement extends UsaElement {
|
|
130
|
+
/** Scroll progress through the story, 0–1. */
|
|
131
|
+
readonly progress: number;
|
|
132
|
+
/** Index of the active step (pin / highlight), or -1. */
|
|
133
|
+
readonly step: number;
|
|
134
|
+
}
|
|
135
|
+
/** Progress of `el` through the viewport: 0 when its top hits the viewport top, 1 when its bottom hits the viewport bottom. */
|
|
136
|
+
declare function storyProgress(el: Element, vh?: number): number;
|
|
137
|
+
/** Format a counted value like the target (`1,234`, `12.5`, prefix / suffix kept). */
|
|
138
|
+
declare function formatCount(target: string, t: number): string;
|
|
139
|
+
declare function defineStory(tag?: string): CustomElementConstructor | undefined;
|
|
140
|
+
declare global {
|
|
141
|
+
interface HTMLElementTagNameMap {
|
|
142
|
+
'usa-story': UsaStoryElement;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
87
146
|
/** Helpers shared by the 5.x effect packs. */
|
|
88
147
|
|
|
89
148
|
/** A fixed, pointer-transparent, aria-hidden layer for transient particles. */
|
|
@@ -95,8 +154,12 @@ declare const EFFECT_PACKS: Record<string, EffectDefinition[]>;
|
|
|
95
154
|
declare function registerCardClickEffects(): void;
|
|
96
155
|
/** 5.2: bounce & physics micro-interactions. */
|
|
97
156
|
declare function registerPhysicsEffects(): void;
|
|
157
|
+
/** 5.3: page-wide transitions and effects. */
|
|
158
|
+
declare function registerPageEffects(): void;
|
|
159
|
+
/** Define the 5.x elements of this entry (`<usa-story>`, …) under their default tags. */
|
|
160
|
+
declare function defineEffectElements(): void;
|
|
98
161
|
/** Register the built-ins and every pack (idempotent). */
|
|
99
162
|
declare function registerAllEffects(): void;
|
|
100
163
|
|
|
101
|
-
export { CARD_FX, CLICK_FX, EFFECT_PACKS, PHYSICS_FX, bounceKeyframes, fxLayer, registerAllEffects, registerCardClickEffects, registerPhysicsEffects, solveSpring, springKeyframes };
|
|
102
|
-
export type { SpringOptions };
|
|
164
|
+
export { CARD_FX, CLICK_FX, EFFECT_PACKS, PAGE_FX, PHYSICS_FX, STORY_TEMPLATES, bounceKeyframes, defineEffectElements, defineStory, formatCount, fxLayer, registerAllEffects, registerCardClickEffects, registerPageEffects, registerPhysicsEffects, solveSpring, springKeyframes, storyProgress };
|
|
165
|
+
export type { SpringOptions, StoryTemplate, UsaStoryElement };
|