use-scroll-animate 2.1.0 → 2.3.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.
Files changed (70) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +31 -2
  3. package/README_ja.md +19 -0
  4. package/README_zh.md +30 -0
  5. package/dist/chunks/base-CJ7XfidP.cjs +233 -0
  6. package/dist/chunks/base-CJ7XfidP.cjs.map +1 -0
  7. package/dist/chunks/base-CuvCgqLy.js +219 -0
  8. package/dist/chunks/base-CuvCgqLy.js.map +1 -0
  9. package/dist/components/background.cjs +395 -0
  10. package/dist/components/background.cjs.map +1 -0
  11. package/dist/components/background.css +7 -0
  12. package/dist/components/background.d.cts +132 -0
  13. package/dist/components/background.d.ts +132 -0
  14. package/dist/components/background.js +387 -0
  15. package/dist/components/background.js.map +1 -0
  16. package/dist/components/feedback.cjs +444 -0
  17. package/dist/components/feedback.cjs.map +1 -0
  18. package/dist/components/feedback.css +7 -0
  19. package/dist/components/feedback.d.cts +170 -0
  20. package/dist/components/feedback.d.ts +170 -0
  21. package/dist/components/feedback.js +434 -0
  22. package/dist/components/feedback.js.map +1 -0
  23. package/dist/components/interaction.cjs +426 -0
  24. package/dist/components/interaction.cjs.map +1 -0
  25. package/dist/components/interaction.css +8 -0
  26. package/dist/components/interaction.d.cts +142 -0
  27. package/dist/components/interaction.d.ts +142 -0
  28. package/dist/components/interaction.js +417 -0
  29. package/dist/components/interaction.js.map +1 -0
  30. package/dist/components/physics.cjs +664 -0
  31. package/dist/components/physics.cjs.map +1 -0
  32. package/dist/components/physics.css +5 -0
  33. package/dist/components/physics.d.cts +216 -0
  34. package/dist/components/physics.d.ts +216 -0
  35. package/dist/components/physics.js +644 -0
  36. package/dist/components/physics.js.map +1 -0
  37. package/dist/components/reveal.cjs +360 -0
  38. package/dist/components/reveal.cjs.map +1 -0
  39. package/dist/components/reveal.css +5 -0
  40. package/dist/components/reveal.d.cts +132 -0
  41. package/dist/components/reveal.d.ts +132 -0
  42. package/dist/components/reveal.js +350 -0
  43. package/dist/components/reveal.js.map +1 -0
  44. package/dist/components/text.cjs +528 -0
  45. package/dist/components/text.cjs.map +1 -0
  46. package/dist/components/text.css +7 -0
  47. package/dist/components/text.d.cts +164 -0
  48. package/dist/components/text.d.ts +164 -0
  49. package/dist/components/text.js +517 -0
  50. package/dist/components/text.js.map +1 -0
  51. package/dist/components/transitions.cjs +546 -0
  52. package/dist/components/transitions.cjs.map +1 -0
  53. package/dist/components/transitions.css +6 -0
  54. package/dist/components/transitions.d.cts +180 -0
  55. package/dist/components/transitions.d.ts +180 -0
  56. package/dist/components/transitions.js +536 -0
  57. package/dist/components/transitions.js.map +1 -0
  58. package/dist/components.cjs +127 -0
  59. package/dist/components.cjs.map +1 -0
  60. package/dist/components.css +33 -0
  61. package/dist/components.d.cts +919 -0
  62. package/dist/components.d.ts +919 -0
  63. package/dist/components.js +65 -0
  64. package/dist/components.js.map +1 -0
  65. package/dist/components.umd.js +22 -0
  66. package/dist/components.umd.js.map +1 -0
  67. package/docs/API.md +2 -0
  68. package/docs/components.md +169 -0
  69. package/docs/windows-apps.md +108 -0
  70. package/package.json +105 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physics.js","sources":["../../src/components/physics/spring.ts","../../src/components/physics/spring-effect.ts","../../src/components/physics/draggable.ts","../../src/components/physics/overscroll.ts","../../src/components/physics/index.ts"],"sourcesContent":["import { prefersReducedMotion, raf, caf, now, applyFrame, EASE_SPRING } from '../base';\n\n/**\n * Spring physics core (v2.3). A damped harmonic oscillator integrated in\n * 1 ms steps: `stiffness` (k, N/m), `damping` (c) and `mass` (m). Used by\n * the `<usa-spring>`, `<usa-draggable>` and `<usa-overscroll>` elements and\n * exported for your own animations:\n *\n * - `springEasing()` turns a spring into a CSS `linear()` easing + duration\n * for WAAPI / CSS (falls back to a cubic-bezier overshoot where `linear()`\n * is unsupported);\n * - `spring(el, keyframes, cfg)` animates with it;\n * - `createSpring()` is an interruptible, velocity-preserving value for\n * gestures (drag, inertia, snap).\n */\nexport interface SpringConfig {\n /** Spring stiffness (default 170). Higher = faster, snappier. */\n stiffness?: number;\n /** Damping / friction (default 26). Lower = more bounces. */\n damping?: number;\n /** Mass (default 1). Higher = slower, heavier. */\n mass?: number;\n /** Initial velocity in progress units per second (default 0). */\n velocity?: number;\n /** Rest threshold (default 0.001). */\n precision?: number;\n}\n\nexport type SpringPreset = 'default' | 'gentle' | 'wobbly' | 'stiff' | 'bouncy' | 'slow' | 'molasses';\n\nexport const SPRING_PRESETS: Record<SpringPreset, Required<Pick<SpringConfig, 'stiffness' | 'damping' | 'mass'>>> = {\n default: { stiffness: 170, damping: 26, mass: 1 },\n gentle: { stiffness: 120, damping: 14, mass: 1 },\n wobbly: { stiffness: 180, damping: 12, mass: 1 },\n stiff: { stiffness: 210, damping: 20, mass: 1 },\n bouncy: { stiffness: 300, damping: 10, mass: 1 },\n slow: { stiffness: 280, damping: 60, mass: 1 },\n molasses: { stiffness: 280, damping: 120, mass: 1 },\n};\n\nexport type SpringInput = SpringPreset | SpringConfig | string | undefined;\n\n/** Resolve a preset name or a partial config to a full config. */\nexport function resolveSpring(input?: SpringInput): Required<SpringConfig> {\n const base = typeof input === 'string' ? SPRING_PRESETS[input as SpringPreset] || SPRING_PRESETS.default : { ...SPRING_PRESETS.default, ...(input || {}) };\n const pos = (v: unknown, d: number) => (typeof v === 'number' && Number.isFinite(v) && v > 0 ? v : d);\n const o = (typeof input === 'object' && input) || {};\n return {\n stiffness: pos(base.stiffness, 170),\n damping: Math.max(0, Number.isFinite(base.damping) ? base.damping : 26),\n mass: pos(base.mass, 1),\n velocity: Number.isFinite(o.velocity) ? (o.velocity as number) : 0,\n precision: pos(o.precision, 0.001),\n };\n}\n\n/** One integration step (semi-implicit Euler) towards `to`. Returns [x, v]. */\nexport function stepSpring(cfg: Required<SpringConfig>, x: number, v: number, to: number, dt: number): [number, number] {\n const a = (-cfg.stiffness * (x - to) - cfg.damping * v) / cfg.mass;\n const nv = v + a * dt;\n return [x + nv * dt, nv];\n}\n\nconst cache = new Map<string, { values: number[]; duration: number }>();\n\n/**\n * Sample the spring from 0 to 1 at `fps` (default 60). `values` may exceed 1\n * (overshoot); `duration` is the time to rest, in ms (max 10 s).\n */\nexport function springSamples(input?: SpringInput, fps = 60): { values: number[]; duration: number } {\n const cfg = resolveSpring(input);\n const key = `${cfg.stiffness}|${cfg.damping}|${cfg.mass}|${cfg.velocity}|${cfg.precision}|${fps}`;\n const hit = cache.get(key);\n if (hit) return hit;\n const values = [0];\n let x = 0;\n let v = cfg.velocity;\n const frame = 1000 / fps;\n let t = 0;\n let next = frame;\n while (t < 10000) {\n [x, v] = stepSpring(cfg, x, v, 1, 0.001);\n t += 1;\n if (t >= next) {\n values.push(x);\n next += frame;\n if (Math.abs(1 - x) < cfg.precision && Math.abs(v) < cfg.precision * 10) break;\n }\n }\n values[values.length - 1] = 1;\n const out = { values, duration: Math.round(t) };\n if (cache.size > 64) cache.clear();\n cache.set(key, out);\n return out;\n}\n\n/** `true` when CSS `linear()` easing is supported. */\nexport function supportsLinearEasing(): boolean {\n return typeof CSS !== 'undefined' && typeof CSS.supports === 'function' && CSS.supports('animation-timing-function', 'linear(0, 1)');\n}\n\n/**\n * The spring as `{ easing, duration }` for `el.animate()` / CSS. `easing` is\n * a `linear(…)` function with at most `points` stops (default 48), or a\n * cubic-bezier overshoot where `linear()` is unsupported.\n */\nexport function springEasing(input?: SpringInput, points = 48): { easing: string; duration: number } {\n const { values, duration } = springSamples(input);\n if (!supportsLinearEasing()) return { easing: EASE_SPRING, duration: Math.min(duration, 1200) };\n return { easing: linearEasing(values, points), duration };\n}\n\n/** Build a CSS `linear()` easing from samples (down-sampled to `points`). */\nexport function linearEasing(values: number[], points = 48): string {\n const n = values.length;\n const step = Math.max(1, Math.ceil((n - 1) / Math.max(2, points - 1)));\n const out: string[] = [];\n for (let i = 0; i < n - 1; i += step) out.push(String(Math.round(values[i] * 1000) / 1000));\n out.push('1');\n return `linear(${out.join(', ')})`;\n}\n\n/**\n * Animate `el` between keyframes with spring timing (WAAPI). Under reduced\n * motion the final frame is applied immediately. Returns the Animation (or\n * `null` without WAAPI / under reduced motion).\n */\nexport function spring(el: Element, keyframes: Keyframe[], input?: SpringInput, options: KeyframeAnimationOptions = {}): Animation | null {\n const target = el as HTMLElement;\n if (prefersReducedMotion() || typeof target.animate !== 'function') {\n applyFrame(target, keyframes[keyframes.length - 1]);\n return null;\n }\n const { easing, duration } = springEasing(input);\n return target.animate(keyframes, { duration, easing, fill: 'both', ...options });\n}\n\n/* ------------------------------------------------------------------ */\n/* Interactive springs */\n/* ------------------------------------------------------------------ */\n\nexport interface SpringValueOptions {\n /** Start value (default 0). */\n value?: number;\n /** Spring config or preset (default `'default'`). */\n spring?: SpringInput;\n /** Called with the value every frame (and on `jump()`). */\n onUpdate?: (value: number, velocity: number) => void;\n /** Called when the value comes to rest at its target. */\n onRest?: (value: number) => void;\n}\n\nexport interface SpringValue {\n readonly value: number;\n /** Units per second. */\n readonly velocity: number;\n readonly target: number;\n readonly animating: boolean;\n /** Animate to `target`, optionally with a new initial velocity (units/s). */\n set(target: number, velocity?: number): void;\n /** Jump to `value` with no animation. */\n jump(value: number): void;\n /** Stop where it is. */\n stop(): void;\n /** Change the spring config. */\n configure(spring: SpringInput): void;\n}\n\n/**\n * An interruptible spring-animated number: call `set()` as often as you like,\n * the motion keeps its velocity (like iOS / Framer springs). Reduced motion\n * jumps straight to the target.\n */\nexport function createSpring(opts: SpringValueOptions = {}): SpringValue {\n let cfg = resolveSpring(opts.spring);\n let x = opts.value ?? 0;\n let v = 0;\n let to = x;\n let id = 0;\n let last = 0;\n let running = false;\n const stop = () => {\n if (running) caf(id);\n running = false;\n };\n const loop = () => {\n const t = now();\n let dt = Math.min(64, Math.max(1, t - last));\n last = t;\n while (dt > 0) {\n const s = Math.min(dt, 4);\n [x, v] = stepSpring(cfg, x, v, to, s / 1000);\n dt -= s;\n }\n const scale = Math.max(1, Math.abs(to) * 0.0005);\n if (Math.abs(to - x) < cfg.precision * scale * 10 && Math.abs(v) < cfg.precision * scale * 100) {\n x = to;\n v = 0;\n running = false;\n opts.onUpdate?.(x, 0);\n opts.onRest?.(x);\n return;\n }\n opts.onUpdate?.(x, v);\n id = raf(loop);\n };\n const api: SpringValue = {\n get value() {\n return x;\n },\n get velocity() {\n return v;\n },\n get target() {\n return to;\n },\n get animating() {\n return running;\n },\n set(target, velocity) {\n to = target;\n if (velocity !== undefined && Number.isFinite(velocity)) v = velocity;\n if (prefersReducedMotion()) {\n api.jump(target);\n opts.onRest?.(target);\n return;\n }\n if (!running) {\n running = true;\n last = now();\n id = raf(loop);\n }\n },\n jump(value) {\n stop();\n x = to = value;\n v = 0;\n opts.onUpdate?.(x, 0);\n },\n stop() {\n stop();\n v = 0;\n to = x;\n },\n configure(input) {\n cfg = resolveSpring(input);\n },\n };\n return api;\n}\n\n/* ------------------------------------------------------------------ */\n/* Inertia + snapping */\n/* ------------------------------------------------------------------ */\n\n/**\n * Where a flick at `velocity` (units/s) comes to rest with exponential\n * decay: `value + velocity · timeConstant` (default 0.325 s, iOS-like).\n */\nexport function projectInertia(value: number, velocity: number, timeConstant = 0.325): number {\n return value + velocity * timeConstant;\n}\n\n/** Snap to a grid (`number`) or the nearest of a list of points. */\nexport function snapTo(value: number, to: number | number[] | null | undefined): number {\n if (Array.isArray(to)) {\n if (!to.length) return value;\n return to.reduce((best, p) => (Math.abs(p - value) < Math.abs(best - value) ? p : best), to[0]);\n }\n if (typeof to === 'number' && to > 0) return Math.round(value / to) * to;\n return value;\n}\n\n/** iOS-style rubber-band resistance: how far content moves when pulled `distance` past an edge. */\nexport function rubberBand(distance: number, dimension: number, constant = 0.55): number {\n if (dimension <= 0) return 0;\n const sign = distance < 0 ? -1 : 1;\n const d = Math.abs(distance);\n return sign * (1 - 1 / ((d * constant) / dimension + 1)) * dimension;\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { springEasing, type SpringInput } from './spring';\nimport css from './spring-effect.css?raw';\n\nexport const SPRING_EFFECTS = ['bounce-in', 'pop', 'drop', 'jelly', 'rubber-band'] as const;\nexport type SpringEffect = (typeof SPRING_EFFECTS)[number];\n\n/** Entrance effects start hidden; attention effects (jelly, rubber-band) play on visible content. */\nconst ENTRANCE = new Set<string>(['bounce-in', 'pop', 'drop']);\n\n/** Keyframes of a spring effect (entrances use spring timing, attention effects fixed frames). */\nexport function springEffectKeyframes(effect: string, reduced = false): Keyframe[] {\n if (reduced) return ENTRANCE.has(effect) ? [{ opacity: 0 }, { opacity: 1 }] : [{ opacity: 1 }, { opacity: 1 }];\n switch (effect) {\n case 'pop':\n return [{ opacity: 0, transform: 'scale(0.5)' }, { opacity: 1, transform: 'scale(1)' }];\n case 'drop':\n return [{ opacity: 0, transform: 'translate3d(0, -120%, 0)' }, { opacity: 1, transform: 'translate3d(0, 0, 0)' }];\n case 'jelly':\n return [\n { transform: 'scale3d(1, 1, 1)' },\n { transform: 'scale3d(1.25, 0.75, 1)', offset: 0.3 },\n { transform: 'scale3d(0.75, 1.25, 1)', offset: 0.4 },\n { transform: 'scale3d(1.15, 0.85, 1)', offset: 0.5 },\n { transform: 'scale3d(0.95, 1.05, 1)', offset: 0.65 },\n { transform: 'scale3d(1.05, 0.95, 1)', offset: 0.75 },\n { transform: 'scale3d(1, 1, 1)' },\n ];\n case 'rubber-band':\n return [\n { transform: 'scale3d(1, 1, 1)' },\n { transform: 'scale3d(1.3, 0.7, 1)', offset: 0.3 },\n { transform: 'scale3d(0.8, 1.2, 1)', offset: 0.45 },\n { transform: 'scale3d(1.1, 0.9, 1)', offset: 0.6 },\n { transform: 'scale3d(0.97, 1.03, 1)', offset: 0.8 },\n { transform: 'scale3d(1, 1, 1)' },\n ];\n default:\n return [{ opacity: 0, transform: 'scale(0.3)' }, { opacity: 1, transform: 'scale(1)' }];\n }\n}\n\nconst DEFAULT_PRESET: Record<string, string> = { 'bounce-in': 'bouncy', pop: 'wobbly', drop: 'bouncy' };\n\n/**\n * `<usa-spring>` — spring / bounce effects on its content.\n *\n * Attributes: `effect` (`bounce-in` default, `pop`, `drop`, `jelly`,\n * `rubber-band`), `trigger` (`view` default, `hover`, `click`, `manual`),\n * `preset` (`gentle`, `wobbly`, `stiff`, `bouncy`, …) or `stiffness` /\n * `damping` / `mass`, `delay` (ms), `duration` (ms, attention effects; 900),\n * `repeat` (replay every time it re-enters the view), `block`.\n * Events: `usa:complete`. Reduced motion: entrances fade, attention effects do nothing.\n */\nexport interface UsaSpringElement extends UsaElement {\n effect: string;\n play(): Promise<void>;\n reset(): void;\n}\n\nexport function defineSpring(tag = 'usa-spring'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaSpring extends Base {\n static get observedAttributes(): string[] {\n return ['effect', 'trigger', 'repeat'];\n }\n\n private _anim: Animation | null = null;\n\n get effect(): string {\n return this.str('effect', 'bounce-in');\n }\n set effect(v: string) {\n this.setAttribute('effect', v);\n }\n\n private config(): SpringInput {\n if (this.hasAttribute('stiffness') || this.hasAttribute('damping') || this.hasAttribute('mass'))\n return { stiffness: this.num('stiffness', 170), damping: this.num('damping', 26), mass: this.num('mass', 1) };\n return this.str('preset', DEFAULT_PRESET[this.effect] || 'wobbly');\n }\n\n mount(): void {\n const trigger = this.str('trigger', 'view');\n const entrance = ENTRANCE.has(this.effect);\n if (trigger === 'view') {\n if (entrance) this.setAttribute('data-state', 'hidden');\n this.inView((visible) => {\n if (visible) this.play();\n else if (this.flag('repeat') && entrance) this.reset();\n }, { threshold: 0.15 });\n } else {\n if (trigger === 'hover') this.listen(this, 'pointerenter', () => this.play());\n if (trigger === 'click') {\n this.listen(this, 'click', () => this.play());\n this.listen(this, 'keydown', (e: KeyboardEvent) => (e.key === 'Enter' || e.key === ' ') && !e.repeat && this.play());\n }\n }\n }\n\n unmount(): void {\n this._anim?.cancel();\n this._anim = null;\n }\n\n reset(): void {\n this._anim?.cancel();\n this._anim = null;\n if (ENTRANCE.has(this.effect)) this.setAttribute('data-state', 'hidden');\n }\n\n async play(): Promise<void> {\n const effect = this.effect;\n const reduced = this.reduced;\n this._anim?.cancel();\n this.setAttribute('data-state', 'playing');\n const frames = springEffectKeyframes(effect, reduced);\n const timing: KeyframeAnimationOptions = ENTRANCE.has(effect) && !reduced\n ? springEasing(this.config())\n : { duration: reduced ? 250 : this.num('duration', 900), easing: 'ease-out' };\n const a = this.motion(this, frames, { ...timing, delay: this.num('delay', 0), fill: 'backwards' });\n this._anim = a;\n if (a) {\n try {\n await a.finished;\n } catch {\n return;\n }\n if (this._anim !== a) return;\n }\n this._anim = null;\n this.setAttribute('data-state', 'done');\n this.emit('complete', { effect });\n }\n },\n { id: 'spring', text: css }\n );\n}\n","import { defineElement, clamp, type UsaElement } from '../base';\nimport { createSpring, projectInertia, snapTo, rubberBand, type SpringValue } from './spring';\nimport css from './draggable.css?raw';\n\n/**\n * `<usa-draggable>` — drag its content with the pointer (mouse, touch, pen)\n * or the arrow keys; physics on release.\n *\n * Attributes: `axis` (`both` default, `x`, `y`), `spring-back` (return to\n * the origin with a spring), `inertia` (keep gliding after a flick),\n * `snap` (grid size like `80`, or points like `0,120,240`), `bounds`\n * (`parent` = stay inside the parent box, rubber-banding past its edges),\n * `preset` (spring, default `wobbly`), `step` (arrow-key step, px, 16),\n * `disabled`. Methods: `moveTo(x, y, animate?)`, `reset()`. Events:\n * `usa:drag-start`, `usa:drag-end` (`{ x, y, vx, vy }`), `usa:settle`.\n * Reduced motion: positions change instantly (no spring or inertia).\n */\nexport interface UsaDraggableElement extends UsaElement {\n readonly x: number;\n readonly y: number;\n readonly dragging: boolean;\n moveTo(x: number, y: number, animate?: boolean): void;\n reset(): void;\n}\n\nconst parseSnap = (s: string): number | number[] | null => {\n if (!s.trim()) return null;\n const parts = s.split(',').map((p) => Number(p.trim())).filter((n) => Number.isFinite(n));\n if (!parts.length) return null;\n return s.includes(',') ? parts : parts[0];\n};\n\nexport function defineDraggable(tag = 'usa-draggable'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaDraggable extends Base {\n static get observedAttributes(): string[] {\n return ['axis', 'disabled', 'preset'];\n }\n\n private _x = 0;\n private _y = 0;\n private _sx!: SpringValue;\n private _sy!: SpringValue;\n private _drag: { id: number; px: number; py: number; ox: number; oy: number; samples: [number, number, number][] } | null = null;\n\n get x(): number {\n return this._x;\n }\n get y(): number {\n return this._y;\n }\n get dragging(): boolean {\n return !!this._drag;\n }\n\n private render(): void {\n this.style.transform = `translate3d(${this._x}px, ${this._y}px, 0)`;\n this.style.setProperty('--usa-drag-x', `${this._x}px`);\n this.style.setProperty('--usa-drag-y', `${this._y}px`);\n }\n\n private axis(): string {\n return this.str('axis', 'both');\n }\n\n /** Bounds relative to the origin, from the parent box. */\n private limits(): { minX: number; maxX: number; minY: number; maxY: number } | null {\n if (this.str('bounds') !== 'parent' || !this.parentElement) return null;\n const p = this.parentElement.getBoundingClientRect();\n const r = this.getBoundingClientRect();\n const ox = r.left - this._x;\n const oy = r.top - this._y;\n return { minX: p.left - ox, maxX: p.right - ox - r.width, minY: p.top - oy, maxY: p.bottom - oy - r.height };\n }\n\n mount(): void {\n let settled = 0;\n const rest = () => {\n if (++settled >= 2) {\n settled = 0;\n this.removeAttribute('data-moving');\n this.emit('settle', { x: this._x, y: this._y });\n }\n };\n const spring = this.str('preset', 'wobbly');\n this._sx = createSpring({ value: this._x, spring, onUpdate: (v) => ((this._x = v), this.render()), onRest: rest });\n this._sy = createSpring({ value: this._y, spring, onUpdate: (v) => ((this._y = v), this.render()), onRest: rest });\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('aria-roledescription', 'draggable');\n this.listen(this, 'pointerdown', (e: PointerEvent) => this.start(e));\n this.listen(this, 'pointermove', (e: PointerEvent) => this.move(e));\n this.listen(this, 'pointerup', (e: PointerEvent) => this.end(e));\n this.listen(this, 'pointercancel', (e: PointerEvent) => this.end(e));\n this.listen(this, 'keydown', (e: KeyboardEvent) => this.key(e));\n this.render();\n }\n\n unmount(): void {\n this._sx?.stop();\n this._sy?.stop();\n this._drag = null;\n }\n\n private start(e: PointerEvent): void {\n if (this.flag('disabled') || (e.pointerType === 'mouse' && e.button !== 0)) return;\n this._sx.stop();\n this._sy.stop();\n this._drag = { id: e.pointerId, px: e.clientX, py: e.clientY, ox: this._x, oy: this._y, samples: [[e.clientX, e.clientY, typeof e.timeStamp === 'number' ? e.timeStamp : Date.now()]] };\n try {\n this.setPointerCapture?.(e.pointerId);\n } catch {\n /* synthetic events */\n }\n this.setAttribute('data-dragging', '');\n this.emit('drag-start', { x: this._x, y: this._y });\n }\n\n private move(e: PointerEvent): void {\n const d = this._drag;\n if (!d || e.pointerId !== d.id) return;\n const axis = this.axis();\n let x = axis === 'y' ? d.ox : d.ox + e.clientX - d.px;\n let y = axis === 'x' ? d.oy : d.oy + e.clientY - d.py;\n const b = this.limits();\n if (b) {\n const band = (v: number, lo: number, hi: number, dim: number) => (v < lo ? lo + rubberBand(v - lo, dim) : v > hi ? hi + rubberBand(v - hi, dim) : v);\n x = band(x, b.minX, b.maxX, 200);\n y = band(y, b.minY, b.maxY, 200);\n }\n this._x = x;\n this._y = y;\n d.samples.push([e.clientX, e.clientY, typeof e.timeStamp === 'number' ? e.timeStamp : Date.now()]);\n if (d.samples.length > 6) d.samples.shift();\n this.render();\n this.emit('drag', { x, y });\n }\n\n private velocity(): [number, number] {\n const s = this._drag?.samples || [];\n if (s.length < 2) return [0, 0];\n const a = s[0];\n const b = s[s.length - 1];\n const dt = (b[2] - a[2]) / 1000;\n if (dt <= 0 || dt > 0.3) return [0, 0];\n return [(b[0] - a[0]) / dt, (b[1] - a[1]) / dt];\n }\n\n private end(e: PointerEvent): void {\n const d = this._drag;\n if (!d || e.pointerId !== d.id) return;\n let [vx, vy] = this.velocity();\n const axis = this.axis();\n if (axis === 'y') vx = 0;\n if (axis === 'x') vy = 0;\n this._drag = null;\n this.removeAttribute('data-dragging');\n let tx = this._x;\n let ty = this._y;\n if (this.flag('spring-back')) {\n tx = 0;\n ty = 0;\n } else {\n if (this.flag('inertia') && !this.reduced) {\n tx = projectInertia(tx, vx);\n ty = projectInertia(ty, vy);\n }\n [tx, ty] = this.constrain(tx, ty);\n }\n this.emit('drag-end', { x: tx, y: ty, vx, vy });\n this.go(tx, ty, vx, vy);\n }\n\n private constrain(x: number, y: number): [number, number] {\n const snap = parseSnap(this.str('snap'));\n let tx = snapTo(x, snap);\n let ty = snapTo(y, snap);\n const b = this.limits();\n if (b) {\n tx = clamp(tx, b.minX, Math.max(b.minX, b.maxX));\n ty = clamp(ty, b.minY, Math.max(b.minY, b.maxY));\n }\n const axis = this.axis();\n return [axis === 'y' ? 0 : tx, axis === 'x' ? 0 : ty];\n }\n\n private go(x: number, y: number, vx = 0, vy = 0): void {\n this.setAttribute('data-moving', '');\n this._sx.set(x, vx);\n this._sy.set(y, vy);\n }\n\n private key(e: KeyboardEvent): void {\n if (this.flag('disabled')) return;\n const step = this.num('step', 16);\n const snap = parseSnap(this.str('snap'));\n const s = typeof snap === 'number' ? snap : step;\n const map: Record<string, [number, number]> = { ArrowLeft: [-s, 0], ArrowRight: [s, 0], ArrowUp: [0, -s], ArrowDown: [0, s] };\n if (e.key === 'Home' || e.key === 'Escape') {\n e.preventDefault();\n this.reset();\n return;\n }\n const m = map[e.key];\n if (!m) return;\n e.preventDefault();\n const [tx, ty] = this.flag('spring-back') ? [this._sx.target + m[0], this._sy.target + m[1]] : this.constrain(this._sx.target + m[0], this._sy.target + m[1]);\n this.go(tx, ty);\n }\n\n moveTo(x: number, y: number, animate = true): void {\n if (!animate) {\n this._sx.jump(x);\n this._sy.jump(y);\n return;\n }\n this.go(x, y);\n }\n\n reset(): void {\n this.go(0, 0);\n }\n },\n { id: 'draggable', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { createSpring, rubberBand, type SpringValue } from './spring';\nimport css from './overscroll.css?raw';\n\n/**\n * `<usa-overscroll>` — an elastic scroll container: pulling past the top or\n * bottom (touch, trackpad or wheel) stretches the content with iOS-style\n * rubber-band resistance and it springs back on release.\n *\n * Attributes: `axis` (`y` default, `x`), `max` (largest stretch in px, 120),\n * `preset` (spring, default `default`), `disabled`. CSS variable\n * `--usa-overscroll` holds the current offset. Reduced motion: no stretch\n * (a plain scroll container with `overscroll-behavior: contain`).\n */\nexport interface UsaOverscrollElement extends UsaElement {\n /** Current stretch in px (negative = pulled past the end). */\n readonly offset: number;\n}\n\nexport function defineOverscroll(tag = 'usa-overscroll'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaOverscroll extends Base {\n static get observedAttributes(): string[] {\n return ['axis', 'disabled'];\n }\n\n private _off = 0;\n private _spring!: SpringValue;\n\n get offset(): number {\n return this._off;\n }\n\n private set(v: number): void {\n this._off = v;\n this.style.setProperty('--usa-overscroll', `${v}px`);\n this.toggleAttribute('data-stretched', Math.abs(v) > 0.5);\n }\n\n private edge(delta: number): boolean {\n const x = this.str('axis', 'y') === 'x';\n const pos = x ? this.scrollLeft : this.scrollTop;\n const max = (x ? this.scrollWidth - this.clientWidth : this.scrollHeight - this.clientHeight) - 1;\n return (delta < 0 && pos <= 0) || (delta > 0 && pos >= max);\n }\n\n private stretch(raw: number): void {\n const max = this.num('max', 120);\n this.set(Math.max(-max, Math.min(max, rubberBand(raw, max * 2.5))));\n }\n\n mount(): void {\n this._spring = createSpring({ spring: this.str('preset', 'default'), onUpdate: (v) => this.set(v) });\n const x = this.str('axis', 'y') === 'x';\n const off = () => this.flag('disabled') || this.reduced;\n // Wheel / trackpad: accumulate past the edge, spring back when it stops.\n let pull = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n this.listen(this, 'wheel', (e: WheelEvent) => {\n const d = x ? e.deltaX || e.deltaY : e.deltaY;\n if (off() || !d || !this.edge(d)) return;\n this._spring.stop();\n pull -= d;\n this.stretch(pull);\n clearTimeout(timer);\n timer = setTimeout(() => {\n pull = 0;\n this._spring.jump(this._off);\n this._spring.set(0);\n }, 140);\n }, { passive: true });\n this.onCleanup(() => clearTimeout(timer));\n // Touch: rubber-band while the finger pulls past the edge.\n let start = 0;\n let active = false;\n this.listen(this, 'touchstart', (e: TouchEvent) => {\n if (off()) return;\n const t = e.touches[0];\n start = x ? t.clientX : t.clientY;\n active = false;\n this._spring.stop();\n }, { passive: true });\n this.listen(this, 'touchmove', (e: TouchEvent) => {\n if (off()) return;\n const t = e.touches[0];\n const dist = (x ? t.clientX : t.clientY) - start;\n if (!active && dist !== 0 && this.edge(-dist)) active = true;\n if (!active) return;\n if (e.cancelable) e.preventDefault();\n this.stretch(dist);\n }, { passive: false });\n const release = () => {\n if (!active) return;\n active = false;\n this._spring.jump(this._off);\n this._spring.set(0);\n };\n this.listen(this, 'touchend', release);\n this.listen(this, 'touchcancel', release);\n }\n\n unmount(): void {\n this._spring?.stop();\n this.set(0);\n }\n },\n { id: 'overscroll', text: css }\n );\n}\n","/**\n * use-scroll-animate/components/physics — spring & bounce physics (v2.3).\n * `<usa-spring>` (bounce-in, pop, drop, jelly, rubber-band), `<usa-draggable>`\n * (spring-back, inertia, snap) and `<usa-overscroll>` (elastic edges), plus\n * the spring core: `spring()`, `springEasing()`, `createSpring()`,\n * `SPRING_PRESETS`, `projectInertia()`, `snapTo()`, `rubberBand()`.\n */\nimport { defineSpring, type UsaSpringElement } from './spring-effect';\nimport { defineDraggable, type UsaDraggableElement } from './draggable';\nimport { defineOverscroll, type UsaOverscrollElement } from './overscroll';\n\nexport { defineSpring, defineDraggable, defineOverscroll };\nexport { SPRING_EFFECTS, springEffectKeyframes } from './spring-effect';\nexport type { SpringEffect } from './spring-effect';\nexport {\n SPRING_PRESETS,\n resolveSpring,\n stepSpring,\n springSamples,\n springEasing,\n linearEasing,\n supportsLinearEasing,\n spring,\n createSpring,\n projectInertia,\n snapTo,\n rubberBand,\n} from './spring';\nexport type { SpringConfig, SpringPreset, SpringInput, SpringValue, SpringValueOptions } from './spring';\nexport type { UsaSpringElement, UsaDraggableElement, UsaOverscrollElement };\nexport { configureComponents, prefersReducedMotion } from '../base';\nexport type { ComponentsConfig, UsaElement } from '../base';\n\n/** Register every component of this category under its default tag. */\nexport function definePhysicsComponents(): void {\n defineSpring();\n defineDraggable();\n defineOverscroll();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-spring': UsaSpringElement;\n 'usa-draggable': UsaDraggableElement;\n 'usa-overscroll': UsaOverscrollElement;\n }\n}\n"],"names":["css"],"mappings":"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"}
@@ -0,0 +1,360 @@
1
+ 'use strict';
2
+
3
+ var base = require('../chunks/base-CJ7XfidP.cjs');
4
+
5
+ /** Entrance effects shared by `<usa-reveal>` and `<usa-stagger>` (transform / opacity / filter only). */
6
+ const REVEAL_EFFECTS = [
7
+ 'fade',
8
+ 'fade-up',
9
+ 'fade-down',
10
+ 'fade-left',
11
+ 'fade-right',
12
+ 'zoom-in',
13
+ 'zoom-out',
14
+ 'blur',
15
+ 'blur-up',
16
+ 'flip-up',
17
+ 'flip-left',
18
+ 'rise',
19
+ ];
20
+ /** The "from" keyframe of an effect; the "to" keyframe is the element's natural state. */
21
+ function revealFrom(effect, distance = 32) {
22
+ const d = `${distance}px`;
23
+ switch (effect) {
24
+ case 'fade':
25
+ return { opacity: 0 };
26
+ case 'fade-down':
27
+ return { opacity: 0, transform: `translate3d(0,-${d},0)` };
28
+ case 'fade-left':
29
+ return { opacity: 0, transform: `translate3d(-${d},0,0)` };
30
+ case 'fade-right':
31
+ return { opacity: 0, transform: `translate3d(${d},0,0)` };
32
+ case 'zoom-in':
33
+ return { opacity: 0, transform: 'scale(0.86)' };
34
+ case 'zoom-out':
35
+ return { opacity: 0, transform: 'scale(1.14)' };
36
+ case 'blur':
37
+ return { opacity: 0, filter: 'blur(12px)' };
38
+ case 'blur-up':
39
+ return { opacity: 0, filter: 'blur(10px)', transform: `translate3d(0,${d},0)` };
40
+ case 'flip-up':
41
+ return { opacity: 0, transform: 'perspective(800px) rotateX(-55deg)', transformOrigin: '50% 100%' };
42
+ case 'flip-left':
43
+ return { opacity: 0, transform: 'perspective(800px) rotateY(55deg)', transformOrigin: '0% 50%' };
44
+ case 'rise':
45
+ return { opacity: 0, transform: `translate3d(0,${distance * 1.5}px,0) scale(0.96)` };
46
+ case 'fade-up':
47
+ default:
48
+ return { opacity: 0, transform: `translate3d(0,${d},0)` };
49
+ }
50
+ }
51
+ /** Keyframes from the effect to the natural state. */
52
+ function revealKeyframes(effect, distance) {
53
+ const from = revealFrom(effect, distance);
54
+ const to = {};
55
+ for (const k of Object.keys(from)) {
56
+ if (k === 'opacity')
57
+ to.opacity = 1;
58
+ else if (k === 'transform')
59
+ to.transform = 'none';
60
+ else if (k === 'filter')
61
+ to.filter = 'none';
62
+ else if (k === 'transformOrigin')
63
+ to.transformOrigin = from.transformOrigin;
64
+ }
65
+ return [from, to];
66
+ }
67
+
68
+ var css$2 = "usa-reveal,usa-stagger{display:block}usa-reveal[data-state=\"hidden\"],usa-stagger[data-state=\"hidden\"]>*{opacity:0}@media (prefers-reduced-motion:reduce){usa-reveal[data-state=\"hidden\"],usa-stagger[data-state=\"hidden\"]>*{opacity:1}}";
69
+
70
+ function defineReveal(tag = 'usa-reveal') {
71
+ return base.defineElement(tag, (Base) => class UsaReveal extends Base {
72
+ constructor() {
73
+ super(...arguments);
74
+ this._anim = null;
75
+ }
76
+ static get observedAttributes() {
77
+ return ['effect', 'distance', 'repeat', 'threshold', 'root-margin'];
78
+ }
79
+ get effect() {
80
+ return this.str('effect', 'fade-up');
81
+ }
82
+ set effect(v) {
83
+ this.setAttribute('effect', v);
84
+ }
85
+ get revealed() {
86
+ return this.getAttribute('data-state') !== 'hidden';
87
+ }
88
+ mount() {
89
+ if (this.reduced) {
90
+ this.setAttribute('data-state', 'shown');
91
+ return;
92
+ }
93
+ if (this.getAttribute('data-state') !== 'shown')
94
+ this.setAttribute('data-state', 'hidden');
95
+ this.inView((visible) => {
96
+ if (visible) {
97
+ this.emit('enter');
98
+ if (!this.revealed)
99
+ this.reveal();
100
+ }
101
+ else {
102
+ this.emit('leave');
103
+ if (this.flag('repeat') && this.revealed)
104
+ this.reset();
105
+ }
106
+ }, { threshold: this.num('threshold', 0.15), rootMargin: this.str('root-margin', '0px') });
107
+ }
108
+ unmount() {
109
+ this._anim?.cancel();
110
+ this._anim = null;
111
+ }
112
+ reveal() {
113
+ this._anim?.cancel();
114
+ this.setAttribute('data-state', 'shown');
115
+ if (this.reduced)
116
+ return Promise.resolve();
117
+ const a = this.motion(this, revealKeyframes(this.effect, this.num('distance', 32)), {
118
+ duration: this.num('duration', 700),
119
+ delay: this.num('delay', 0),
120
+ easing: this.str('easing', base.EASE_OUT),
121
+ fill: 'backwards',
122
+ });
123
+ this._anim = a;
124
+ return new Promise((resolve) => {
125
+ const done = () => {
126
+ if (this._anim === a)
127
+ this._anim = null;
128
+ this.emit('complete');
129
+ resolve();
130
+ };
131
+ if (!a)
132
+ done();
133
+ else
134
+ a.onfinish = done;
135
+ });
136
+ }
137
+ reset() {
138
+ this._anim?.cancel();
139
+ this._anim = null;
140
+ if (!this.reduced)
141
+ this.setAttribute('data-state', 'hidden');
142
+ }
143
+ }, { id: 'reveal', text: css$2 });
144
+ }
145
+
146
+ function defineStagger(tag = 'usa-stagger') {
147
+ return base.defineElement(tag, (Base) => class UsaStagger extends Base {
148
+ constructor() {
149
+ super(...arguments);
150
+ this._anims = [];
151
+ }
152
+ static get observedAttributes() {
153
+ return ['effect', 'repeat', 'threshold'];
154
+ }
155
+ mount() {
156
+ if (this.reduced) {
157
+ this.setAttribute('data-state', 'shown');
158
+ return;
159
+ }
160
+ if (this.getAttribute('data-state') !== 'shown')
161
+ this.setAttribute('data-state', 'hidden');
162
+ this.inView((visible) => {
163
+ if (visible && this.getAttribute('data-state') === 'hidden') {
164
+ this.emit('enter');
165
+ this.reveal();
166
+ }
167
+ else if (!visible && this.flag('repeat'))
168
+ this.reset();
169
+ }, { threshold: this.num('threshold', 0.1) });
170
+ }
171
+ unmount() {
172
+ this.cancel();
173
+ }
174
+ cancel() {
175
+ this._anims.splice(0).forEach((a) => a.cancel());
176
+ }
177
+ reveal() {
178
+ this.cancel();
179
+ this.setAttribute('data-state', 'shown');
180
+ const kids = Array.from(this.children);
181
+ if (this.reduced || !kids.length)
182
+ return Promise.resolve();
183
+ const frames = revealKeyframes(this.str('effect', 'fade-up'), this.num('distance', 24));
184
+ const interval = this.num('interval', 70);
185
+ const base$1 = this.num('delay', 0);
186
+ const duration = this.num('duration', 600);
187
+ const easing = this.str('easing', base.EASE_OUT);
188
+ const anims = kids
189
+ .map((kid, i) => this.motion(kid, frames, { duration, easing, delay: base$1 + i * interval, fill: 'backwards' }))
190
+ .filter((a) => !!a);
191
+ this._anims = anims;
192
+ const last = anims[anims.length - 1];
193
+ return new Promise((resolve) => {
194
+ const done = () => {
195
+ this.emit('complete');
196
+ resolve();
197
+ };
198
+ if (!last)
199
+ done();
200
+ else
201
+ last.onfinish = done;
202
+ });
203
+ }
204
+ reset() {
205
+ this.cancel();
206
+ if (!this.reduced)
207
+ this.setAttribute('data-state', 'hidden');
208
+ }
209
+ }, { id: 'reveal', text: css$2 });
210
+ }
211
+
212
+ var css$1 = "usa-scroll-progress{display:block;position:fixed;left:0;right:0;top:0;z-index:1000;height:var(--usa-progress-height,3px);background:var(--usa-progress-track,transparent);pointer-events:none;contain:strict}usa-scroll-progress[position=\"bottom\"]{top:auto;bottom:0}usa-scroll-progress[position=\"inline\"]{position:relative;z-index:auto;border-radius:999px;overflow:hidden}usa-scroll-progress .usa-progress-fill{display:block;height:100%;transform:scaleX(0);transform-origin:0 50%;background:var(--usa-progress-color,linear-gradient(90deg,#7c5cff,#22d3ee));will-change:transform}";
213
+
214
+ /** Progress (0–1) of `target` scrolling through the viewport, or of the page. */
215
+ function readScrollProgress(target) {
216
+ if (typeof window === 'undefined')
217
+ return 0;
218
+ const vh = window.innerHeight || document.documentElement.clientHeight;
219
+ if (target) {
220
+ const r = target.getBoundingClientRect();
221
+ const total = r.height - vh;
222
+ return total <= 0 ? (r.top <= 0 ? 1 : 0) : base.clamp(-r.top / total, 0, 1);
223
+ }
224
+ const doc = document.documentElement;
225
+ const max = doc.scrollHeight - vh;
226
+ return max <= 0 ? 0 : base.clamp((window.scrollY || doc.scrollTop) / max, 0, 1);
227
+ }
228
+ function defineScrollProgress(tag = 'usa-scroll-progress') {
229
+ return base.defineElement(tag, (Base) => class UsaScrollProgress extends Base {
230
+ constructor() {
231
+ super(...arguments);
232
+ this._bar = null;
233
+ this._p = -1;
234
+ this._frame = 0;
235
+ }
236
+ static get observedAttributes() {
237
+ return ['target', 'label'];
238
+ }
239
+ get progress() {
240
+ return Math.max(0, this._p);
241
+ }
242
+ mount() {
243
+ if (!this._bar) {
244
+ this._bar = document.createElement('span');
245
+ this._bar.className = 'usa-progress-fill';
246
+ this.replaceChildren(this._bar);
247
+ }
248
+ this.setAttribute('role', 'progressbar');
249
+ this.setAttribute('aria-valuemin', '0');
250
+ this.setAttribute('aria-valuemax', '100');
251
+ if (!this.hasAttribute('aria-label'))
252
+ this.setAttribute('aria-label', this.str('label', 'Reading progress'));
253
+ const schedule = () => {
254
+ if (!this._frame)
255
+ this._frame = base.raf(() => ((this._frame = 0), this.update()));
256
+ };
257
+ this.listen(window, 'scroll', schedule, { passive: true });
258
+ this.listen(window, 'resize', schedule, { passive: true });
259
+ this.update();
260
+ }
261
+ unmount() {
262
+ base.caf(this._frame);
263
+ this._frame = 0;
264
+ }
265
+ update() {
266
+ const sel = this.getAttribute('target');
267
+ const target = sel ? document.querySelector(sel) : null;
268
+ const p = readScrollProgress(target);
269
+ if (Math.abs(p - this._p) < 0.0005)
270
+ return;
271
+ this._p = p;
272
+ if (this._bar)
273
+ this._bar.style.transform = `scaleX(${p})`;
274
+ this.style.setProperty('--usa-progress', String(p));
275
+ const pct = String(Math.round(p * 100));
276
+ if (this.getAttribute('aria-valuenow') !== pct)
277
+ this.setAttribute('aria-valuenow', pct);
278
+ this.emit('progress', { progress: p });
279
+ }
280
+ }, { id: 'scroll-progress', text: css$1 });
281
+ }
282
+
283
+ var css = "usa-scrolly{display:block;position:relative}usa-scrolly [data-sticky]{position:sticky;top:var(--usa-sticky-top,0px)}usa-scrolly [data-step]{opacity:var(--usa-step-dim,0.35);transition:opacity 0.4s ease}usa-scrolly [data-step][data-active]{opacity:1}@media (prefers-reduced-motion:reduce){usa-scrolly [data-step]{transition:none}}";
284
+
285
+ function defineScrolly(tag = 'usa-scrolly') {
286
+ return base.defineElement(tag, (Base) => class UsaScrolly extends Base {
287
+ constructor() {
288
+ super(...arguments);
289
+ this._active = -1;
290
+ }
291
+ static get observedAttributes() {
292
+ return ['offset'];
293
+ }
294
+ get active() {
295
+ return this._active;
296
+ }
297
+ get steps() {
298
+ return Array.from(this.querySelectorAll('[data-step]'));
299
+ }
300
+ mount() {
301
+ const steps = this.steps;
302
+ if (!steps.length)
303
+ return;
304
+ const offset = base.clamp(this.num('offset', 0.5), 0, 1);
305
+ // A thin trigger band `offset` down the viewport
306
+ const top = Math.min(99, Math.round(offset * 100));
307
+ const rootMargin = `-${top}% 0px -${Math.max(0, 99 - top)}% 0px`;
308
+ if (typeof IntersectionObserver === 'undefined') {
309
+ this.activate(0);
310
+ return;
311
+ }
312
+ const io = new IntersectionObserver((entries) => {
313
+ for (const e of entries)
314
+ if (e.isIntersecting)
315
+ this.activate(steps.indexOf(e.target));
316
+ }, { rootMargin });
317
+ steps.forEach((s) => io.observe(s));
318
+ this.onCleanup(() => io.disconnect());
319
+ if (this._active < 0)
320
+ this.activate(0, true);
321
+ }
322
+ activate(index, silent = false) {
323
+ const steps = this.steps;
324
+ if (index < 0 || index >= steps.length || index === this._active)
325
+ return;
326
+ this._active = index;
327
+ steps.forEach((s, i) => s.toggleAttribute('data-active', i === index));
328
+ const step = steps[index];
329
+ this.setAttribute('active', String(index));
330
+ this.style.setProperty('--usa-step', String(index));
331
+ this.setAttribute('data-step-name', step.dataset.step || String(index));
332
+ if (!silent)
333
+ this.emit('step', { index, step, name: step.dataset.step || '' });
334
+ }
335
+ }, { id: 'scrolly', text: css });
336
+ }
337
+
338
+ /**
339
+ * use-scroll-animate/components/reveal — entrance & scroll reveal components.
340
+ * `<usa-reveal>`, `<usa-stagger>`, `<usa-scroll-progress>`, `<usa-scrolly>`.
341
+ */
342
+ /** Register every component of this category under its default tag. */
343
+ function defineRevealComponents() {
344
+ defineReveal();
345
+ defineStagger();
346
+ defineScrollProgress();
347
+ defineScrolly();
348
+ }
349
+
350
+ exports.configureComponents = base.configureComponents;
351
+ exports.prefersReducedMotion = base.prefersReducedMotion;
352
+ exports.REVEAL_EFFECTS = REVEAL_EFFECTS;
353
+ exports.defineReveal = defineReveal;
354
+ exports.defineRevealComponents = defineRevealComponents;
355
+ exports.defineScrollProgress = defineScrollProgress;
356
+ exports.defineScrolly = defineScrolly;
357
+ exports.defineStagger = defineStagger;
358
+ exports.readScrollProgress = readScrollProgress;
359
+ exports.revealKeyframes = revealKeyframes;
360
+ //# sourceMappingURL=reveal.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reveal.cjs","sources":["../../src/components/reveal/effects.ts","../../src/components/reveal/reveal.ts","../../src/components/reveal/stagger.ts","../../src/components/reveal/scroll-progress.ts","../../src/components/reveal/scrolly.ts","../../src/components/reveal/index.ts"],"sourcesContent":["/** Entrance effects shared by `<usa-reveal>` and `<usa-stagger>` (transform / opacity / filter only). */\n\nexport const REVEAL_EFFECTS = [\n 'fade',\n 'fade-up',\n 'fade-down',\n 'fade-left',\n 'fade-right',\n 'zoom-in',\n 'zoom-out',\n 'blur',\n 'blur-up',\n 'flip-up',\n 'flip-left',\n 'rise',\n] as const;\n\nexport type RevealEffect = (typeof REVEAL_EFFECTS)[number];\n\n/** The \"from\" keyframe of an effect; the \"to\" keyframe is the element's natural state. */\nexport function revealFrom(effect: string, distance = 32): Keyframe {\n const d = `${distance}px`;\n switch (effect) {\n case 'fade':\n return { opacity: 0 };\n case 'fade-down':\n return { opacity: 0, transform: `translate3d(0,-${d},0)` };\n case 'fade-left':\n return { opacity: 0, transform: `translate3d(-${d},0,0)` };\n case 'fade-right':\n return { opacity: 0, transform: `translate3d(${d},0,0)` };\n case 'zoom-in':\n return { opacity: 0, transform: 'scale(0.86)' };\n case 'zoom-out':\n return { opacity: 0, transform: 'scale(1.14)' };\n case 'blur':\n return { opacity: 0, filter: 'blur(12px)' };\n case 'blur-up':\n return { opacity: 0, filter: 'blur(10px)', transform: `translate3d(0,${d},0)` };\n case 'flip-up':\n return { opacity: 0, transform: 'perspective(800px) rotateX(-55deg)', transformOrigin: '50% 100%' };\n case 'flip-left':\n return { opacity: 0, transform: 'perspective(800px) rotateY(55deg)', transformOrigin: '0% 50%' };\n case 'rise':\n return { opacity: 0, transform: `translate3d(0,${distance * 1.5}px,0) scale(0.96)` };\n case 'fade-up':\n default:\n return { opacity: 0, transform: `translate3d(0,${d},0)` };\n }\n}\n\n/** Keyframes from the effect to the natural state. */\nexport function revealKeyframes(effect: string, distance?: number): Keyframe[] {\n const from = revealFrom(effect, distance);\n const to: Keyframe = {};\n for (const k of Object.keys(from)) {\n if (k === 'opacity') to.opacity = 1;\n else if (k === 'transform') to.transform = 'none';\n else if (k === 'filter') to.filter = 'none';\n else if (k === 'transformOrigin') to.transformOrigin = from.transformOrigin;\n }\n return [from, to];\n}\n","import { defineElement, EASE_OUT, type UsaElement } from '../base';\nimport { revealKeyframes, type RevealEffect } from './effects';\nimport css from './reveal.css?raw';\n\n/**\n * `<usa-reveal>` — reveals its content when it scrolls into view.\n *\n * Attributes: `effect` (see {@link RevealEffect}, default `fade-up`),\n * `duration` (ms, 700), `delay` (ms, 0), `distance` (px, 32), `easing`,\n * `threshold` (0–1, 0.15), `root-margin`, `repeat` (hide again when it\n * leaves, replay on re-entry). Events: `usa:enter`, `usa:leave`, `usa:complete`.\n */\nexport interface UsaRevealElement extends UsaElement {\n effect: RevealEffect | string;\n /** Play the entrance now (also called automatically on enter). */\n reveal(): Promise<void>;\n /** Hide again so the next `reveal()` replays the entrance. */\n reset(): void;\n readonly revealed: boolean;\n}\n\nexport function defineReveal(tag = 'usa-reveal'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaReveal extends Base {\n static get observedAttributes(): string[] {\n return ['effect', 'distance', 'repeat', 'threshold', 'root-margin'];\n }\n\n private _anim: Animation | null = null;\n\n get effect(): string {\n return this.str('effect', 'fade-up');\n }\n set effect(v: string) {\n this.setAttribute('effect', v);\n }\n get revealed(): boolean {\n return this.getAttribute('data-state') !== 'hidden';\n }\n\n mount(): void {\n if (this.reduced) {\n this.setAttribute('data-state', 'shown');\n return;\n }\n if (this.getAttribute('data-state') !== 'shown') this.setAttribute('data-state', 'hidden');\n this.inView(\n (visible) => {\n if (visible) {\n this.emit('enter');\n if (!this.revealed) this.reveal();\n } else {\n this.emit('leave');\n if (this.flag('repeat') && this.revealed) this.reset();\n }\n },\n { threshold: this.num('threshold', 0.15), rootMargin: this.str('root-margin', '0px') }\n );\n }\n\n unmount(): void {\n this._anim?.cancel();\n this._anim = null;\n }\n\n reveal(): Promise<void> {\n this._anim?.cancel();\n this.setAttribute('data-state', 'shown');\n if (this.reduced) return Promise.resolve();\n const a = this.motion(this, revealKeyframes(this.effect, this.num('distance', 32)), {\n duration: this.num('duration', 700),\n delay: this.num('delay', 0),\n easing: this.str('easing', EASE_OUT),\n fill: 'backwards',\n });\n this._anim = a;\n return new Promise((resolve) => {\n const done = () => {\n if (this._anim === a) this._anim = null;\n this.emit('complete');\n resolve();\n };\n if (!a) done();\n else a.onfinish = done;\n });\n }\n\n reset(): void {\n this._anim?.cancel();\n this._anim = null;\n if (!this.reduced) this.setAttribute('data-state', 'hidden');\n }\n },\n { id: 'reveal', text: css }\n );\n}\n","import { defineElement, EASE_OUT, type UsaElement } from '../base';\nimport { revealKeyframes } from './effects';\nimport css from './reveal.css?raw';\n\n/**\n * `<usa-stagger>` — reveals its direct children one after another when the\n * list scrolls into view.\n *\n * Attributes: `effect` (default `fade-up`), `interval` (ms between children,\n * 70), `duration` (600), `delay` (0), `distance` (24), `easing`,\n * `threshold` (0.1), `repeat`. Events: `usa:enter`, `usa:complete`.\n */\nexport interface UsaStaggerElement extends UsaElement {\n reveal(): Promise<void>;\n reset(): void;\n}\n\nexport function defineStagger(tag = 'usa-stagger'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaStagger extends Base {\n static get observedAttributes(): string[] {\n return ['effect', 'repeat', 'threshold'];\n }\n\n private _anims: Animation[] = [];\n\n mount(): void {\n if (this.reduced) {\n this.setAttribute('data-state', 'shown');\n return;\n }\n if (this.getAttribute('data-state') !== 'shown') this.setAttribute('data-state', 'hidden');\n this.inView(\n (visible) => {\n if (visible && this.getAttribute('data-state') === 'hidden') {\n this.emit('enter');\n this.reveal();\n } else if (!visible && this.flag('repeat')) this.reset();\n },\n { threshold: this.num('threshold', 0.1) }\n );\n }\n\n unmount(): void {\n this.cancel();\n }\n\n private cancel(): void {\n this._anims.splice(0).forEach((a) => a.cancel());\n }\n\n reveal(): Promise<void> {\n this.cancel();\n this.setAttribute('data-state', 'shown');\n const kids = Array.from(this.children) as HTMLElement[];\n if (this.reduced || !kids.length) return Promise.resolve();\n const frames = revealKeyframes(this.str('effect', 'fade-up'), this.num('distance', 24));\n const interval = this.num('interval', 70);\n const base = this.num('delay', 0);\n const duration = this.num('duration', 600);\n const easing = this.str('easing', EASE_OUT);\n const anims = kids\n .map((kid, i) => this.motion(kid, frames, { duration, easing, delay: base + i * interval, fill: 'backwards' }))\n .filter((a): a is Animation => !!a);\n this._anims = anims;\n const last = anims[anims.length - 1];\n return new Promise((resolve) => {\n const done = () => {\n this.emit('complete');\n resolve();\n };\n if (!last) done();\n else last.onfinish = done;\n });\n }\n\n reset(): void {\n this.cancel();\n if (!this.reduced) this.setAttribute('data-state', 'hidden');\n }\n },\n { id: 'reveal', text: css }\n );\n}\n","import { defineElement, raf, caf, clamp, type UsaElement } from '../base';\nimport css from './scroll-progress.css?raw';\n\n/**\n * `<usa-scroll-progress>` — a reading-progress bar.\n *\n * Attributes: `target` (CSS selector of an article to track; default the\n * whole page), `position` (`top` | `bottom` | `inline`, default `top`),\n * `label` (accessible name, default \"Reading progress\"). Style with\n * `--usa-progress-color`, `--usa-progress-height`, `--usa-progress-track`.\n * Exposes the progress (0–1) as `--usa-progress` on the element and as the\n * `progress` property. Event: `usa:progress` (`detail.progress`).\n *\n * Writes only `transform: scaleX()` (compositor-friendly); reads layout\n * once per animation frame, and only while scrolling.\n */\nexport interface UsaScrollProgressElement extends UsaElement {\n readonly progress: number;\n /** Re-measure (e.g. after content loaded). */\n update(): void;\n}\n\n/** Progress (0–1) of `target` scrolling through the viewport, or of the page. */\nexport function readScrollProgress(target?: Element | null): number {\n if (typeof window === 'undefined') return 0;\n const vh = window.innerHeight || document.documentElement.clientHeight;\n if (target) {\n const r = target.getBoundingClientRect();\n const total = r.height - vh;\n return total <= 0 ? (r.top <= 0 ? 1 : 0) : clamp(-r.top / total, 0, 1);\n }\n const doc = document.documentElement;\n const max = doc.scrollHeight - vh;\n return max <= 0 ? 0 : clamp((window.scrollY || doc.scrollTop) / max, 0, 1);\n}\n\nexport function defineScrollProgress(tag = 'usa-scroll-progress'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaScrollProgress extends Base {\n static get observedAttributes(): string[] {\n return ['target', 'label'];\n }\n\n private _bar: HTMLElement | null = null;\n private _p = -1;\n private _frame = 0;\n\n get progress(): number {\n return Math.max(0, this._p);\n }\n\n mount(): void {\n if (!this._bar) {\n this._bar = document.createElement('span');\n this._bar.className = 'usa-progress-fill';\n this.replaceChildren(this._bar);\n }\n this.setAttribute('role', 'progressbar');\n this.setAttribute('aria-valuemin', '0');\n this.setAttribute('aria-valuemax', '100');\n if (!this.hasAttribute('aria-label')) this.setAttribute('aria-label', this.str('label', 'Reading progress'));\n const schedule = () => {\n if (!this._frame) this._frame = raf(() => ((this._frame = 0), this.update()));\n };\n this.listen(window, 'scroll', schedule, { passive: true });\n this.listen(window, 'resize', schedule, { passive: true });\n this.update();\n }\n\n unmount(): void {\n caf(this._frame);\n this._frame = 0;\n }\n\n update(): void {\n const sel = this.getAttribute('target');\n const target = sel ? document.querySelector(sel) : null;\n const p = readScrollProgress(target);\n if (Math.abs(p - this._p) < 0.0005) return;\n this._p = p;\n if (this._bar) this._bar.style.transform = `scaleX(${p})`;\n this.style.setProperty('--usa-progress', String(p));\n const pct = String(Math.round(p * 100));\n if (this.getAttribute('aria-valuenow') !== pct) this.setAttribute('aria-valuenow', pct);\n this.emit('progress', { progress: p });\n }\n },\n { id: 'scroll-progress', text: css }\n );\n}\n","import { defineElement, clamp, type UsaElement } from '../base';\nimport css from './scrolly.css?raw';\n\n/**\n * `<usa-scrolly>` — sticky scrollytelling. A child marked `data-sticky`\n * stays pinned while the `[data-step]` children scroll past; the step that\n * crosses the trigger line becomes active.\n *\n * Attributes: `offset` (trigger line as a fraction of the viewport height,\n * default 0.5), `active` (reflected index of the active step). The active\n * step gets `data-active`; the host gets `--usa-step` and `data-step-name`\n * (the step's `data-step` value). Event: `usa:step` (`detail.index`,\n * `detail.step`, `detail.name`).\n */\nexport interface UsaScrollyElement extends UsaElement {\n readonly active: number;\n readonly steps: HTMLElement[];\n}\n\nexport function defineScrolly(tag = 'usa-scrolly'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaScrolly extends Base {\n static get observedAttributes(): string[] {\n return ['offset'];\n }\n\n private _active = -1;\n\n get active(): number {\n return this._active;\n }\n get steps(): HTMLElement[] {\n return Array.from(this.querySelectorAll<HTMLElement>('[data-step]'));\n }\n\n mount(): void {\n const steps = this.steps;\n if (!steps.length) return;\n const offset = clamp(this.num('offset', 0.5), 0, 1);\n // A thin trigger band `offset` down the viewport\n const top = Math.min(99, Math.round(offset * 100));\n const rootMargin = `-${top}% 0px -${Math.max(0, 99 - top)}% 0px`;\n if (typeof IntersectionObserver === 'undefined') {\n this.activate(0);\n return;\n }\n const io = new IntersectionObserver(\n (entries) => {\n for (const e of entries) if (e.isIntersecting) this.activate(steps.indexOf(e.target as HTMLElement));\n },\n { rootMargin }\n );\n steps.forEach((s) => io.observe(s));\n this.onCleanup(() => io.disconnect());\n if (this._active < 0) this.activate(0, true);\n }\n\n activate(index: number, silent = false): void {\n const steps = this.steps;\n if (index < 0 || index >= steps.length || index === this._active) return;\n this._active = index;\n steps.forEach((s, i) => s.toggleAttribute('data-active', i === index));\n const step = steps[index];\n this.setAttribute('active', String(index));\n this.style.setProperty('--usa-step', String(index));\n this.setAttribute('data-step-name', step.dataset.step || String(index));\n if (!silent) this.emit('step', { index, step, name: step.dataset.step || '' });\n }\n },\n { id: 'scrolly', text: css }\n );\n}\n","/**\n * use-scroll-animate/components/reveal — entrance & scroll reveal components.\n * `<usa-reveal>`, `<usa-stagger>`, `<usa-scroll-progress>`, `<usa-scrolly>`.\n */\nimport { defineReveal, type UsaRevealElement } from './reveal';\nimport { defineStagger, type UsaStaggerElement } from './stagger';\nimport { defineScrollProgress, type UsaScrollProgressElement } from './scroll-progress';\nimport { defineScrolly, type UsaScrollyElement } from './scrolly';\n\nexport { defineReveal, defineStagger, defineScrollProgress, defineScrolly };\nexport { readScrollProgress } from './scroll-progress';\nexport { REVEAL_EFFECTS, revealKeyframes } from './effects';\nexport type { RevealEffect } from './effects';\nexport type { UsaRevealElement, UsaStaggerElement, UsaScrollProgressElement, UsaScrollyElement };\nexport { configureComponents, prefersReducedMotion } from '../base';\nexport type { ComponentsConfig, UsaElement } from '../base';\n\n/** Register every component of this category under its default tag. */\nexport function defineRevealComponents(): void {\n defineReveal();\n defineStagger();\n defineScrollProgress();\n defineScrolly();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-reveal': UsaRevealElement;\n 'usa-stagger': UsaStaggerElement;\n 'usa-scroll-progress': UsaScrollProgressElement;\n 'usa-scrolly': UsaScrollyElement;\n }\n}\n"],"names":["defineElement","EASE_OUT","css","base","clamp","raf","caf"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /* use-scroll-animate/components/reveal */
2
+ .usa-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
3
+ usa-reveal,usa-stagger{display:block}usa-reveal[data-state="hidden"],usa-stagger[data-state="hidden"]>*{opacity:0}@media (prefers-reduced-motion:reduce){usa-reveal[data-state="hidden"],usa-stagger[data-state="hidden"]>*{opacity:1}}
4
+ usa-scroll-progress{display:block;position:fixed;left:0;right:0;top:0;z-index:1000;height:var(--usa-progress-height,3px);background:var(--usa-progress-track,transparent);pointer-events:none;contain:strict}usa-scroll-progress[position="bottom"]{top:auto;bottom:0}usa-scroll-progress[position="inline"]{position:relative;z-index:auto;border-radius:999px;overflow:hidden}usa-scroll-progress .usa-progress-fill{display:block;height:100%;transform:scaleX(0);transform-origin:0 50%;background:var(--usa-progress-color,linear-gradient(90deg,#7c5cff,#22d3ee));will-change:transform}
5
+ usa-scrolly{display:block;position:relative}usa-scrolly [data-sticky]{position:sticky;top:var(--usa-sticky-top,0px)}usa-scrolly [data-step]{opacity:var(--usa-step-dim,0.35);transition:opacity 0.4s ease}usa-scrolly [data-step][data-active]{opacity:1}@media (prefers-reduced-motion:reduce){usa-scrolly [data-step]{transition:none}}