use-scroll-animate 6.0.1 → 6.1.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 (81) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +39 -1
  3. package/README_ja.md +31 -0
  4. package/README_zh.md +31 -0
  5. package/dist/chunks/{core-mV_TPgG_.js → core-BVQW34aX.js} +10 -202
  6. package/dist/chunks/core-BVQW34aX.js.map +1 -0
  7. package/dist/chunks/{core-qpECfEkb.cjs → core-BYLtO0Po.cjs} +13 -209
  8. package/dist/chunks/core-BYLtO0Po.cjs.map +1 -0
  9. package/dist/chunks/presets-BJ09NeTo.js +226 -0
  10. package/dist/chunks/presets-BJ09NeTo.js.map +1 -0
  11. package/dist/chunks/presets-D2ksQNzJ.cjs +233 -0
  12. package/dist/chunks/presets-D2ksQNzJ.cjs.map +1 -0
  13. package/dist/chunks/{stagger-CLc3j58T.cjs → stagger-CvhYlKrF.cjs} +2 -2
  14. package/dist/chunks/{stagger-CLc3j58T.cjs.map → stagger-CvhYlKrF.cjs.map} +1 -1
  15. package/dist/chunks/{stagger-BFAhKknX.js → stagger-Dh4V-OL0.js} +2 -2
  16. package/dist/chunks/{stagger-BFAhKknX.js.map → stagger-Dh4V-OL0.js.map} +1 -1
  17. package/dist/components/lite.cjs +4 -0
  18. package/dist/components/lite.cjs.map +1 -1
  19. package/dist/components/lite.js +4 -0
  20. package/dist/components/lite.js.map +1 -1
  21. package/dist/components/reveal.cjs +4 -0
  22. package/dist/components/reveal.cjs.map +1 -1
  23. package/dist/components/reveal.js +4 -0
  24. package/dist/components/reveal.js.map +1 -1
  25. package/dist/components.umd.js +2 -2
  26. package/dist/components.umd.js.map +1 -1
  27. package/dist/element.cjs +2 -1
  28. package/dist/element.cjs.map +1 -1
  29. package/dist/element.d.cts +16 -2
  30. package/dist/element.d.ts +16 -2
  31. package/dist/element.js +2 -1
  32. package/dist/element.js.map +1 -1
  33. package/dist/element.umd.js +1 -1
  34. package/dist/element.umd.js.map +1 -1
  35. package/dist/index.cjs +22 -19
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.d.cts +34 -9
  38. package/dist/index.d.ts +34 -9
  39. package/dist/index.js +4 -3
  40. package/dist/index.js.map +1 -1
  41. package/dist/index.umd.js +2 -2
  42. package/dist/index.umd.js.map +1 -1
  43. package/dist/presets/extended.cjs +243 -0
  44. package/dist/presets/extended.cjs.map +1 -0
  45. package/dist/presets/extended.d.cts +37 -0
  46. package/dist/presets/extended.d.ts +37 -0
  47. package/dist/presets/extended.js +239 -0
  48. package/dist/presets/extended.js.map +1 -0
  49. package/dist/presets-extended.umd.js +2 -0
  50. package/dist/presets-extended.umd.js.map +1 -0
  51. package/dist/react.cjs +3 -2
  52. package/dist/react.cjs.map +1 -1
  53. package/dist/react.d.cts +16 -2
  54. package/dist/react.d.ts +16 -2
  55. package/dist/react.js +3 -2
  56. package/dist/react.js.map +1 -1
  57. package/dist/solid.cjs +3 -2
  58. package/dist/solid.cjs.map +1 -1
  59. package/dist/solid.d.cts +16 -2
  60. package/dist/solid.d.ts +16 -2
  61. package/dist/solid.js +3 -2
  62. package/dist/solid.js.map +1 -1
  63. package/dist/svelte.cjs +3 -2
  64. package/dist/svelte.cjs.map +1 -1
  65. package/dist/svelte.d.cts +16 -2
  66. package/dist/svelte.d.ts +16 -2
  67. package/dist/svelte.js +3 -2
  68. package/dist/svelte.js.map +1 -1
  69. package/dist/vue.cjs +3 -2
  70. package/dist/vue.cjs.map +1 -1
  71. package/dist/vue.d.cts +16 -2
  72. package/dist/vue.d.ts +16 -2
  73. package/dist/vue.js +3 -2
  74. package/dist/vue.js.map +1 -1
  75. package/docs/API.md +7 -2
  76. package/docs/ROADMAP.md +12 -11
  77. package/docs/components.md +1 -1
  78. package/docs/presets.md +310 -0
  79. package/package.json +15 -2
  80. package/dist/chunks/core-mV_TPgG_.js.map +0 -1
  81. package/dist/chunks/core-qpECfEkb.cjs.map +0 -1
@@ -50,6 +50,10 @@ function revealFrom(effect, distance = 32) {
50
50
  }
51
51
  /** Keyframes from the effect to the natural state. */
52
52
  function revealKeyframes(effect, distance) {
53
+ // Any preset registered with the scroll library (core, `presets/extended`, your own)
54
+ const p = REVEAL_EFFECTS.includes(effect) ? null : globalThis[Symbol.for('use-scroll-animate.presets')]?.[effect];
55
+ if (p)
56
+ return [p.from, ...(p.frames || []), p.to];
53
57
  const from = revealFrom(effect, distance);
54
58
  const to = {};
55
59
  for (const k of Object.keys(from)) {
@@ -1 +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 };\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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"}
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 // Any preset registered with the scroll library (core, `presets/extended`, your own)\n const p = (REVEAL_EFFECTS as readonly string[]).includes(effect) ? null : (globalThis as any)[Symbol.for('use-scroll-animate.presets')]?.[effect];\n if (p) return [p.from, ...(p.frames || []), p.to];\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 };\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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"}
@@ -48,6 +48,10 @@ function revealFrom(effect, distance = 32) {
48
48
  }
49
49
  /** Keyframes from the effect to the natural state. */
50
50
  function revealKeyframes(effect, distance) {
51
+ // Any preset registered with the scroll library (core, `presets/extended`, your own)
52
+ const p = REVEAL_EFFECTS.includes(effect) ? null : globalThis[Symbol.for('use-scroll-animate.presets')]?.[effect];
53
+ if (p)
54
+ return [p.from, ...(p.frames || []), p.to];
51
55
  const from = revealFrom(effect, distance);
52
56
  const to = {};
53
57
  for (const k of Object.keys(from)) {
@@ -1 +1 @@
1
- {"version":3,"file":"reveal.js","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 };\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":["css"],"mappings":"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"}
1
+ {"version":3,"file":"reveal.js","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 // Any preset registered with the scroll library (core, `presets/extended`, your own)\n const p = (REVEAL_EFFECTS as readonly string[]).includes(effect) ? null : (globalThis as any)[Symbol.for('use-scroll-animate.presets')]?.[effect];\n if (p) return [p.from, ...(p.frames || []), p.to];\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 };\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":["css"],"mappings":"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"}