use-scroll-animate 2.7.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/README.md +4 -4
- package/README_ja.md +2 -2
- package/README_zh.md +3 -3
- package/dist/chunks/{base-BR6fYLBA.cjs → base-BkQcvoSG.cjs} +29 -1
- package/dist/chunks/{base-BR6fYLBA.cjs.map → base-BkQcvoSG.cjs.map} +1 -1
- package/dist/chunks/{base-D6zLiNGH.js → base-CB8gChoe.js} +29 -2
- package/dist/chunks/{base-D6zLiNGH.js.map → base-CB8gChoe.js.map} +1 -1
- package/dist/chunks/{core-B_J4rXbC.cjs → core-C1cEwjJj.cjs} +11 -2
- package/dist/chunks/core-C1cEwjJj.cjs.map +1 -0
- package/dist/chunks/{core-BP-a1iNc.js → core-J_KM443q.js} +12 -3
- package/dist/chunks/core-J_KM443q.js.map +1 -0
- package/dist/chunks/index-tags-BEM98giN.cjs +20 -0
- package/dist/chunks/index-tags-BEM98giN.cjs.map +1 -0
- package/dist/chunks/index-tags-f37txHmb.js +18 -0
- package/dist/chunks/index-tags-f37txHmb.js.map +1 -0
- package/dist/chunks/{spring-DyHe1Hfa.cjs → spring-7U9MC6yQ.cjs} +2 -2
- package/dist/chunks/{spring-DyHe1Hfa.cjs.map → spring-7U9MC6yQ.cjs.map} +1 -1
- package/dist/chunks/{spring-C2Megtcf.js → spring-ka0YJ_ZR.js} +2 -2
- package/dist/chunks/{spring-C2Megtcf.js.map → spring-ka0YJ_ZR.js.map} +1 -1
- package/dist/chunks/{stagger-DTv_WiUQ.js → stagger-CGF18oNs.js} +2 -2
- package/dist/chunks/{stagger-DTv_WiUQ.js.map → stagger-CGF18oNs.js.map} +1 -1
- package/dist/chunks/{stagger-DHw0ExuR.cjs → stagger-DtKKS6GP.cjs} +2 -2
- package/dist/chunks/{stagger-DHw0ExuR.cjs.map → stagger-DtKKS6GP.cjs.map} +1 -1
- package/dist/chunks/variants-Ce9CboVc.js +35 -0
- package/dist/chunks/variants-Ce9CboVc.js.map +1 -0
- package/dist/chunks/variants-PsCXbQ5h.cjs +39 -0
- package/dist/chunks/variants-PsCXbQ5h.cjs.map +1 -0
- package/dist/components/background.cjs +277 -11
- package/dist/components/background.cjs.map +1 -1
- package/dist/components/background.css +3 -1
- package/dist/components/background.d.cts +64 -3
- package/dist/components/background.d.ts +64 -3
- package/dist/components/background.js +274 -13
- package/dist/components/background.js.map +1 -1
- package/dist/components/cards.cjs +2 -2
- package/dist/components/cards.js +3 -3
- package/dist/components/click.cjs +2 -2
- package/dist/components/click.js +3 -3
- package/dist/components/feedback.cjs +15 -8
- package/dist/components/feedback.cjs.map +1 -1
- package/dist/components/feedback.d.cts +4 -1
- package/dist/components/feedback.d.ts +4 -1
- package/dist/components/feedback.js +16 -9
- package/dist/components/feedback.js.map +1 -1
- package/dist/components/interaction.cjs +1 -1
- package/dist/components/interaction.js +2 -2
- package/dist/components/jsx.cjs +3 -0
- package/dist/components/jsx.cjs.map +1 -0
- package/dist/components/jsx.d.cts +45 -0
- package/dist/components/jsx.d.ts +45 -0
- package/dist/components/jsx.js +2 -0
- package/dist/components/jsx.js.map +1 -0
- package/dist/components/lazy.cjs +84 -0
- package/dist/components/lazy.cjs.map +1 -0
- package/dist/components/lazy.d.cts +40 -0
- package/dist/components/lazy.d.ts +40 -0
- package/dist/components/lazy.js +79 -0
- package/dist/components/lazy.js.map +1 -0
- package/dist/components/page.cjs +2 -2
- package/dist/components/page.js +3 -3
- package/dist/components/physics.cjs +2 -2
- package/dist/components/physics.js +4 -4
- package/dist/components/react.cjs +96 -0
- package/dist/components/react.cjs.map +1 -0
- package/dist/components/react.d.cts +18 -0
- package/dist/components/react.d.ts +18 -0
- package/dist/components/react.js +91 -0
- package/dist/components/react.js.map +1 -0
- package/dist/components/reveal.cjs +1 -1
- package/dist/components/reveal.js +2 -2
- package/dist/components/text.cjs +180 -11
- package/dist/components/text.cjs.map +1 -1
- package/dist/components/text.css +1 -0
- package/dist/components/text.d.cts +54 -2
- package/dist/components/text.d.ts +54 -2
- package/dist/components/text.js +177 -13
- package/dist/components/text.js.map +1 -1
- package/dist/components/transitions.cjs +3 -4
- package/dist/components/transitions.cjs.map +1 -1
- package/dist/components/transitions.js +4 -5
- package/dist/components/transitions.js.map +1 -1
- package/dist/components/ui.cjs +18 -48
- package/dist/components/ui.cjs.map +1 -1
- package/dist/components/ui.js +6 -35
- package/dist/components/ui.js.map +1 -1
- package/dist/components/vue.cjs +51 -0
- package/dist/components/vue.cjs.map +1 -0
- package/dist/components/vue.d.cts +1344 -0
- package/dist/components/vue.d.ts +1344 -0
- package/dist/components/vue.js +48 -0
- package/dist/components/vue.js.map +1 -0
- package/dist/components.cjs +19 -21
- package/dist/components.cjs.map +1 -1
- package/dist/components.css +4 -1
- package/dist/components.d.cts +123 -6
- package/dist/components.d.ts +123 -6
- package/dist/components.js +11 -22
- package/dist/components.js.map +1 -1
- package/dist/components.umd.js +2 -2
- package/dist/components.umd.js.map +1 -1
- package/dist/element.cjs +1 -1
- package/dist/element.js +1 -1
- package/dist/element.umd.js +1 -1
- package/dist/element.umd.js.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +3 -3
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.js.map +1 -1
- package/dist/react.cjs +2 -2
- package/dist/react.js +2 -2
- package/dist/solid.cjs +2 -2
- package/dist/solid.js +2 -2
- package/dist/svelte.cjs +2 -2
- package/dist/svelte.js +2 -2
- package/dist/vue.cjs +2 -2
- package/dist/vue.js +2 -2
- package/docs/accessibility.md +32 -0
- package/docs/components.md +45 -6
- package/docs/frameworks-ssr.md +64 -0
- package/docs/upgrading-3.md +20 -0
- package/docs/windows-apps.md +13 -2
- package/package.json +42 -1
- package/dist/chunks/core-BP-a1iNc.js.map +0 -1
- package/dist/chunks/core-B_J4rXbC.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sources":["../../src/components/text/typewriter.ts","../../src/components/text/split-text.ts","../../src/components/text/scramble.ts","../../src/components/text/counter.ts","../../src/components/text/shimmer-text.ts","../../src/components/text/text-rotate.ts","../../src/components/text/index.ts"],"sourcesContent":["import { defineElement, srText, type UsaElement } from '../base';\nimport css from './typewriter.css?raw';\n\n/**\n * `<usa-typewriter>` — types text character by character, optionally cycling\n * through several phrases (typing, pausing, deleting).\n *\n * Attributes: `text` (default: the element's text), `words` (phrases\n * separated by `|`, overrides `text`), `speed` (ms per character, 55),\n * `delete-speed` (ms, 30), `pause` (ms before deleting, 1400), `delay`\n * (ms, 0), `loop`, `cursor=\"false\"` to hide the caret, `start`\n * (`view` | `load` | `manual`, default `view`). The full text is exposed to\n * assistive tech via `aria-label`. Event: `usa:complete` (one pass done).\n * Reduced motion: the text appears at once.\n */\nexport interface UsaTypewriterElement extends UsaElement {\n /** Phrases being typed. */\n readonly phrases: string[];\n start(): void;\n stop(): void;\n restart(): void;\n}\n\nexport function defineTypewriter(tag = 'usa-typewriter'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaTypewriter extends Base {\n static get observedAttributes(): string[] {\n return ['text', 'words'];\n }\n\n private _source: string | null = null;\n private _out: HTMLElement | null = null;\n private _timer: ReturnType<typeof setTimeout> | 0 = 0;\n private _running = false;\n\n get phrases(): string[] {\n const words = this.getAttribute('words');\n if (words) return words.split('|').map((w) => w.trim()).filter(Boolean);\n return [this.getAttribute('text') ?? this._source ?? ''];\n }\n\n mount(): void {\n if (this._source === null) this._source = (this.textContent || '').trim();\n const phrases = this.phrases;\n const sr = srText(phrases.join(', '));\n this._out = document.createElement('span');\n this._out.className = 'usa-tw-text';\n this._out.setAttribute('aria-hidden', 'true');\n const caret = document.createElement('span');\n caret.className = 'usa-tw-caret';\n caret.setAttribute('aria-hidden', 'true');\n this.replaceChildren(sr, this._out, caret);\n this.toggleAttribute('data-no-cursor', this.getAttribute('cursor') === 'false');\n if (this.reduced) {\n this._out.textContent = phrases[0] || '';\n return;\n }\n const start = this.str('start', 'view');\n if (start === 'load') this.start();\n else if (start === 'view') {\n this.inView((visible) => {\n if (visible && !this._running && !this._out?.textContent) this.start();\n });\n }\n }\n\n unmount(): void {\n this.stop();\n }\n\n stop(): void {\n clearTimeout(this._timer as ReturnType<typeof setTimeout>);\n this._timer = 0;\n this._running = false;\n this.removeAttribute('data-typing');\n }\n\n restart(): void {\n this.stop();\n if (this._out) this._out.textContent = '';\n this.start();\n }\n\n start(): void {\n if (this._running || !this._out) return;\n const out = this._out;\n const phrases = this.phrases;\n if (this.reduced) {\n out.textContent = phrases[0] || '';\n return;\n }\n this._running = true;\n const speed = this.num('speed', 55);\n const del = this.num('delete-speed', 30);\n const pause = this.num('pause', 1400);\n const loop = this.flag('loop') || phrases.length > 1;\n let p = 0;\n let i = 0;\n let deleting = false;\n const tick = () => {\n const word = phrases[p] || '';\n if (!deleting) {\n i++;\n out.textContent = word.slice(0, i);\n this.setAttribute('data-typing', '');\n if (i >= word.length) {\n this.removeAttribute('data-typing');\n const last = p === phrases.length - 1;\n if (last) this.emit('complete');\n if (!loop && last) {\n this._running = false;\n return;\n }\n deleting = true;\n this._timer = setTimeout(tick, pause);\n return;\n }\n this._timer = setTimeout(tick, speed * (0.6 + Math.random() * 0.8));\n } else {\n i--;\n out.textContent = word.slice(0, Math.max(0, i));\n if (i <= 0) {\n deleting = false;\n p = (p + 1) % phrases.length;\n this._timer = setTimeout(tick, speed * 4);\n return;\n }\n this._timer = setTimeout(tick, del);\n }\n };\n this._timer = setTimeout(tick, this.num('delay', 0));\n }\n },\n { id: 'typewriter', text: css }\n );\n}\n","import { defineElement, srText, type UsaElement } from '../base';\nimport css from './split-text.css?raw';\n\n/**\n * `<usa-split-text>` — splits its text into words or characters and reveals\n * them in a cascade (pure CSS animation per unit, transform / opacity /\n * filter only). Words never break across lines.\n *\n * Attributes: `by` (`chars` | `words`, default `chars`), `effect`\n * (`rise` | `fade` | `blur` | `flip` | `pop`, default `rise`), `stagger`\n * (ms between units, 28 for chars / 70 for words), `duration` (ms, 620),\n * `delay` (ms, 0), `trigger` (`view` | `load` | `manual`, default `view`),\n * `repeat`. The original text stays readable via `aria-label`.\n * Event: `usa:complete`.\n */\nexport interface UsaSplitTextElement extends UsaElement {\n readonly units: HTMLElement[];\n play(): void;\n reset(): void;\n}\n\nexport function defineSplitText(tag = 'usa-split-text'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaSplitText extends Base {\n static get observedAttributes(): string[] {\n return ['by', 'text'];\n }\n\n private _source: string | null = null;\n private _timer: ReturnType<typeof setTimeout> | 0 = 0;\n\n get units(): HTMLElement[] {\n return Array.from(this.querySelectorAll<HTMLElement>('.usa-split-unit'));\n }\n\n mount(): void {\n if (this._source === null) this._source = this.getAttribute('text') ?? (this.textContent || '').replace(/\\s+/g, ' ').trim();\n const text = this.getAttribute('text') ?? this._source;\n const byWords = this.str('by', 'chars') === 'words';\n const frag = document.createDocumentFragment();\n frag.append(srText(text));\n let i = 0;\n text.split(' ').forEach((word, w) => {\n if (w > 0) frag.append(' ');\n const wordEl = document.createElement('span');\n wordEl.className = 'usa-split-word';\n wordEl.setAttribute('aria-hidden', 'true');\n const parts = byWords ? [word] : Array.from(word);\n for (const part of parts) {\n const u = document.createElement('span');\n u.className = 'usa-split-unit';\n u.textContent = part;\n u.style.setProperty('--i', String(i++));\n wordEl.append(u);\n }\n frag.append(wordEl);\n });\n this.replaceChildren(frag);\n this.style.setProperty('--usa-split-stagger', `${this.num('stagger', byWords ? 70 : 28)}ms`);\n this.style.setProperty('--usa-split-duration', `${this.num('duration', 620)}ms`);\n this.style.setProperty('--usa-split-delay', `${this.num('delay', 0)}ms`);\n this.style.setProperty('--usa-split-count', String(i));\n if (this.reduced) {\n this.setAttribute('data-state', 'shown');\n return;\n }\n this.setAttribute('data-state', 'hidden');\n const trigger = this.str('trigger', 'view');\n if (trigger === 'load') this.play();\n else if (trigger === 'view') {\n this.inView((visible) => {\n if (visible && this.getAttribute('data-state') === 'hidden') this.play();\n else if (!visible && this.flag('repeat')) this.reset();\n }, { threshold: 0.2 });\n }\n }\n\n unmount(): void {\n clearTimeout(this._timer as ReturnType<typeof setTimeout>);\n }\n\n play(): void {\n clearTimeout(this._timer as ReturnType<typeof setTimeout>);\n if (this.reduced) {\n this.setAttribute('data-state', 'shown');\n return;\n }\n // Restart the CSS animations\n this.setAttribute('data-state', 'hidden');\n void this.offsetWidth;\n this.setAttribute('data-state', 'play');\n const n = this.units.length;\n const total = this.num('delay', 0) + this.num('duration', 620) + Math.max(0, n - 1) * this.num('stagger', this.str('by') === 'words' ? 70 : 28);\n this._timer = setTimeout(() => {\n this.setAttribute('data-state', 'shown');\n this.emit('complete');\n }, total);\n }\n\n reset(): void {\n clearTimeout(this._timer as ReturnType<typeof setTimeout>);\n this.setAttribute('data-state', this.reduced ? 'shown' : 'hidden');\n }\n },\n { id: 'split-text', text: css }\n );\n}\n","import { defineElement, srText, raf, caf, now, type UsaElement } from '../base';\n\nconst GLYPHS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#%&*+=<>/\\\\?!';\n\n/**\n * `<usa-scramble>` — \"decodes\" text out of random glyphs, left to right.\n *\n * Attributes: `text` (default: the element's text), `duration` (ms, 900),\n * `chars` (glyph set), `trigger` (`view` | `hover` | `load` | `manual`,\n * default `view`). Spaces and punctuation stay in place. Uses a monospace-\n * friendly fixed width per glyph only if you style it so; the element sets\n * nothing that causes reflow beyond its own text. Event: `usa:complete`.\n * Reduced motion: shows the final text.\n */\nexport interface UsaScrambleElement extends UsaElement {\n play(): Promise<void>;\n}\n\n/** One frame of the scramble: the first `progress` share is resolved. */\nexport function scrambleFrame(text: string, progress: number, glyphs = GLYPHS, rnd: () => number = Math.random): string {\n const done = Math.floor(text.length * progress);\n let out = '';\n for (let i = 0; i < text.length; i++) {\n const ch = text[i];\n out += i < done || /\\s|[.,:;!?'\"()\\-–—]/.test(ch) ? ch : glyphs[Math.floor(rnd() * glyphs.length)];\n }\n return out;\n}\n\nexport function defineScramble(tag = 'usa-scramble'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaScramble extends Base {\n static get observedAttributes(): string[] {\n return ['text'];\n }\n\n private _source: string | null = null;\n private _out: HTMLElement | null = null;\n private _frame = 0;\n\n private get text(): string {\n return this.getAttribute('text') ?? this._source ?? '';\n }\n\n mount(): void {\n if (this._source === null) this._source = (this.textContent || '').trim();\n this._out = document.createElement('span');\n this._out.setAttribute('aria-hidden', 'true');\n this._out.textContent = this.text;\n this.replaceChildren(srText(this.text), this._out);\n if (this.reduced) return;\n const trigger = this.str('trigger', 'view');\n if (trigger === 'load') this.play();\n else if (trigger === 'hover') {\n this.listen(this, 'pointerenter', () => this.play());\n this.listen(this, 'focusin', () => this.play());\n } else if (trigger === 'view') {\n let played = false;\n this.inView((v) => {\n if (v && !played) {\n played = true;\n this.play();\n }\n });\n }\n }\n\n unmount(): void {\n caf(this._frame);\n this._frame = 0;\n }\n\n play(): Promise<void> {\n caf(this._frame);\n const out = this._out;\n const text = this.text;\n if (!out || this.reduced) {\n if (out) out.textContent = text;\n return Promise.resolve();\n }\n const duration = this.num('duration', 900);\n const glyphs = this.str('chars', GLYPHS) || GLYPHS;\n const t0 = now();\n let last = -1;\n return new Promise((resolve) => {\n const step = () => {\n const p = Math.min(1, Math.max(0, now() - t0) / duration);\n // ~30 fps glyph churn is plenty and halves DOM writes\n const bucket = Math.floor(p * duration / 33);\n if (bucket !== last || p === 1) {\n last = bucket;\n out.textContent = p === 1 ? text : scrambleFrame(text, p, glyphs);\n }\n if (p < 1) this._frame = raf(step);\n else {\n this._frame = 0;\n this.emit('complete');\n resolve();\n }\n };\n this._frame = raf(step);\n });\n }\n },\n undefined\n );\n}\n","import { defineElement, raf, caf, now, type UsaElement } from '../base';\nimport css from './counter.css?raw';\n\n/**\n * `<usa-counter>` — counts up (or down) to a number when it scrolls into view.\n *\n * Attributes: `to` (target, required), `from` (0), `duration` (ms, 1600),\n * `decimals` (0), `locale` (default: the document language), `prefix`,\n * `suffix`, `grouping=\"false\"` (no thousands separators), `start`\n * (`view` | `load` | `manual`). Setting the `value` property animates from\n * the current value — handy for live dashboards. Uses tabular digits so\n * the width does not jump. Event: `usa:complete`. Reduced motion: jumps.\n */\nexport interface UsaCounterElement extends UsaElement {\n /** Current target; setting it animates to the new number. */\n value: number;\n /** Animate to `to` (default: the `to` attribute). */\n play(to?: number): Promise<void>;\n format(n: number): string;\n}\n\n/** easeOutExpo */\nexport const easeOutExpo = (t: number): number => (t >= 1 ? 1 : 1 - Math.pow(2, -10 * t));\n\nexport function defineCounter(tag = 'usa-counter'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCounter extends Base {\n static get observedAttributes(): string[] {\n return ['to', 'decimals', 'locale', 'prefix', 'suffix', 'grouping'];\n }\n\n private _current = NaN;\n private _target = NaN;\n private _frame = 0;\n private _fmt: Intl.NumberFormat | null = null;\n\n get value(): number {\n return Number.isNaN(this._target) ? this.num('to', 0) : this._target;\n }\n set value(v: number) {\n this.play(Number(v));\n }\n\n format(n: number): string {\n if (!this._fmt) {\n const d = Math.max(0, Math.min(20, this.num('decimals', 0)));\n const locale = this.getAttribute('locale') || (typeof document !== 'undefined' && document.documentElement.lang) || undefined;\n try {\n this._fmt = new Intl.NumberFormat(locale, { minimumFractionDigits: d, maximumFractionDigits: d, useGrouping: this.getAttribute('grouping') !== 'false' });\n } catch {\n this._fmt = new Intl.NumberFormat(undefined, { minimumFractionDigits: d, maximumFractionDigits: d });\n }\n }\n return `${this.str('prefix')}${this._fmt.format(n)}${this.str('suffix')}`;\n }\n\n private render(n: number): void {\n this._current = n;\n this.textContent = this.format(n);\n }\n\n changed(name: string): void {\n this._fmt = null;\n if (name === 'to') this.play();\n else this.render(Number.isNaN(this._current) ? this.num('from', 0) : this._current);\n }\n\n mount(): void {\n this._fmt = null;\n const to = this.num('to', 0);\n if (this.reduced) {\n this._target = to;\n this.render(to);\n return;\n }\n if (Number.isNaN(this._current)) this.render(this.num('from', 0));\n const start = this.str('start', 'view');\n if (start === 'load') this.play();\n else if (start === 'view') {\n let done = false;\n this.inView((v) => {\n if (v && !done) {\n done = true;\n this.play();\n }\n }, { threshold: 0.4 });\n }\n }\n\n unmount(): void {\n caf(this._frame);\n this._frame = 0;\n }\n\n play(to = this.num('to', 0)): Promise<void> {\n caf(this._frame);\n this._target = to;\n const from = Number.isNaN(this._current) ? this.num('from', 0) : this._current;\n if (this.reduced || from === to || !this.isConnected) {\n this.render(to);\n this.emit('complete', { value: to });\n return Promise.resolve();\n }\n const duration = this.num('duration', 1600);\n const t0 = now();\n return new Promise((resolve) => {\n const step = () => {\n const t = Math.min(1, Math.max(0, now() - t0) / duration);\n this.render(from + (to - from) * easeOutExpo(t));\n if (t < 1) this._frame = raf(step);\n else {\n this._frame = 0;\n this.render(to);\n this.emit('complete', { value: to });\n resolve();\n }\n };\n this._frame = raf(step);\n });\n }\n },\n { id: 'counter', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport css from './shimmer-text.css?raw';\n\n/**\n * `<usa-shimmer-text>` — a light sweep across gradient-filled text (CSS\n * only; the element just maps attributes to custom properties).\n *\n * Attributes: `duration` (ms, 2600), `color` (base text colour), `shine`\n * (highlight colour), `angle` (deg, 110). Or style `--usa-shimmer-*`\n * directly. Reduced motion: static gradient text.\n */\nexport type UsaShimmerTextElement = UsaElement;\n\nexport function defineShimmerText(tag = 'usa-shimmer-text'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaShimmerText extends Base {\n static get observedAttributes(): string[] {\n return ['duration', 'color', 'shine', 'angle'];\n }\n\n mount(): void {\n const set = (attr: string, prop: string, unit = '') => {\n const v = this.getAttribute(attr);\n if (v !== null) this.style.setProperty(prop, v + unit);\n else this.style.removeProperty(prop);\n };\n set('duration', '--usa-shimmer-duration', 'ms');\n set('color', '--usa-shimmer-color');\n set('shine', '--usa-shimmer-shine');\n set('angle', '--usa-shimmer-angle', 'deg');\n }\n },\n { id: 'shimmer-text', text: css }\n );\n}\n","import { defineElement, srText, EASE_SPRING, EASE_OUT, type UsaElement } from '../base';\nimport css from './text-rotate.css?raw';\n\n/**\n * `<usa-text-rotate>` — cycles through words in place (\"Build *fast* /\n * *small* / *typed* apps\"). All words share one grid cell, so the width is\n * that of the longest word and nothing around it reflows.\n *\n * Attributes: `words` (separated by `|`, default: the element's text split\n * on `|`), `interval` (ms, 2200), `effect` (`slide` | `fade` | `flip` |\n * `blur`, default `slide`), `paused`. Pauses while off-screen and on hover\n * is not needed. Event: `usa:change` (`detail.index`, `detail.word`).\n * Reduced motion: words still change, without movement (fade only).\n */\nexport interface UsaTextRotateElement extends UsaElement {\n readonly index: number;\n next(): void;\n}\n\nexport function defineTextRotate(tag = 'usa-text-rotate'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaTextRotate extends Base {\n static get observedAttributes(): string[] {\n return ['words', 'interval', 'paused'];\n }\n\n private _source: string | null = null;\n private _index = 0;\n private _timer: ReturnType<typeof setInterval> | 0 = 0;\n private _visible = true;\n\n get index(): number {\n return this._index;\n }\n\n private get words(): string[] {\n return (this.getAttribute('words') ?? this._source ?? '').split('|').map((w) => w.trim()).filter(Boolean);\n }\n\n mount(): void {\n if (this._source === null) this._source = (this.textContent || '').trim();\n const words = this.words;\n this.replaceChildren(\n srText(words.join(', ')),\n ...words.map((w, i) => {\n const s = document.createElement('span');\n s.className = 'usa-rotate-word';\n s.textContent = w;\n s.setAttribute('aria-hidden', 'true');\n if (i !== this._index) s.setAttribute('data-hidden', '');\n return s;\n })\n );\n if (this._index >= words.length) this._index = 0;\n if (words.length < 2) return;\n this.inView((v) => (this._visible = v));\n if (!this.flag('paused')) {\n this._timer = setInterval(() => {\n if (this._visible && !(typeof document !== 'undefined' && document.hidden)) this.next();\n }, Math.max(400, this.num('interval', 2200)));\n }\n }\n\n unmount(): void {\n clearInterval(this._timer as ReturnType<typeof setInterval>);\n this._timer = 0;\n }\n\n next(): void {\n const els = Array.from(this.querySelectorAll<HTMLElement>('.usa-rotate-word'));\n if (els.length < 2) return;\n const prev = els[this._index];\n this._index = (this._index + 1) % els.length;\n const cur = els[this._index];\n prev.setAttribute('data-hidden', '');\n cur.removeAttribute('data-hidden');\n const effect = this.reduced ? 'fade' : this.str('effect', 'slide');\n const [inFrom, outTo] =\n effect === 'fade'\n ? [{ opacity: 0 }, { opacity: 0 }]\n : effect === 'flip'\n ? [{ opacity: 0, transform: 'perspective(400px) rotateX(-90deg)' }, { opacity: 0, transform: 'perspective(400px) rotateX(90deg)' }]\n : effect === 'blur'\n ? [{ opacity: 0, filter: 'blur(8px)' }, { opacity: 0, filter: 'blur(8px)' }]\n : [{ opacity: 0, transform: 'translateY(0.8em)' }, { opacity: 0, transform: 'translateY(-0.8em)' }];\n const neutral = { opacity: 1, transform: 'none', filter: 'none' };\n const pick = (f: Keyframe) => Object.fromEntries(Object.keys(f).map((k) => [k, (neutral as any)[k]]));\n this.motion(prev, [{ ...pick(outTo) }, outTo], { duration: 380, easing: EASE_OUT });\n this.motion(cur, [inFrom, pick(inFrom)], { duration: 520, easing: effect === 'slide' ? EASE_SPRING : EASE_OUT });\n this.emit('change', { index: this._index, word: cur.textContent });\n }\n },\n { id: 'text-rotate', text: css }\n );\n}\n","/**\n * use-scroll-animate/components/text — text effects.\n * `<usa-typewriter>`, `<usa-split-text>`, `<usa-scramble>`, `<usa-counter>`,\n * `<usa-shimmer-text>`, `<usa-text-rotate>`.\n */\nimport { defineTypewriter, type UsaTypewriterElement } from './typewriter';\nimport { defineSplitText, type UsaSplitTextElement } from './split-text';\nimport { defineScramble, type UsaScrambleElement } from './scramble';\nimport { defineCounter, type UsaCounterElement } from './counter';\nimport { defineShimmerText, type UsaShimmerTextElement } from './shimmer-text';\nimport { defineTextRotate, type UsaTextRotateElement } from './text-rotate';\n\nexport { defineTypewriter, defineSplitText, defineScramble, defineCounter, defineShimmerText, defineTextRotate };\nexport { scrambleFrame } from './scramble';\nexport { easeOutExpo } from './counter';\nexport type { UsaTypewriterElement, UsaSplitTextElement, UsaScrambleElement, UsaCounterElement, UsaShimmerTextElement, UsaTextRotateElement };\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 defineTextComponents(): void {\n defineTypewriter();\n defineSplitText();\n defineScramble();\n defineCounter();\n defineShimmerText();\n defineTextRotate();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-typewriter': UsaTypewriterElement;\n 'usa-split-text': UsaSplitTextElement;\n 'usa-scramble': UsaScrambleElement;\n 'usa-counter': UsaCounterElement;\n 'usa-shimmer-text': UsaShimmerTextElement;\n 'usa-text-rotate': UsaTextRotateElement;\n }\n}\n"],"names":["css"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"text.js","sources":["../../src/components/text/typewriter.ts","../../src/components/text/split-text.ts","../../src/components/text/scramble.ts","../../src/components/text/counter.ts","../../src/components/text/shimmer-text.ts","../../src/components/text/text-rotate.ts","../../src/components/text/text-fx.ts","../../src/components/text/index.ts"],"sourcesContent":["import { defineElement, srText, type UsaElement } from '../base';\nimport css from './typewriter.css?raw';\n\n/**\n * `<usa-typewriter>` — types text character by character, optionally cycling\n * through several phrases (typing, pausing, deleting).\n *\n * Attributes: `text` (default: the element's text), `words` (phrases\n * separated by `|`, overrides `text`), `speed` (ms per character, 55),\n * `delete-speed` (ms, 30), `pause` (ms before deleting, 1400), `delay`\n * (ms, 0), `loop`, `cursor=\"false\"` to hide the caret, `start`\n * (`view` | `load` | `manual`, default `view`). The full text is exposed to\n * assistive tech via `aria-label`. Event: `usa:complete` (one pass done).\n * Reduced motion: the text appears at once.\n */\nexport interface UsaTypewriterElement extends UsaElement {\n /** Phrases being typed. */\n readonly phrases: string[];\n start(): void;\n stop(): void;\n restart(): void;\n}\n\nexport function defineTypewriter(tag = 'usa-typewriter'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaTypewriter extends Base {\n static get observedAttributes(): string[] {\n return ['text', 'words'];\n }\n\n private _source: string | null = null;\n private _out: HTMLElement | null = null;\n private _timer: ReturnType<typeof setTimeout> | 0 = 0;\n private _running = false;\n\n get phrases(): string[] {\n const words = this.getAttribute('words');\n if (words) return words.split('|').map((w) => w.trim()).filter(Boolean);\n return [this.getAttribute('text') ?? this._source ?? ''];\n }\n\n mount(): void {\n if (this._source === null) this._source = (this.textContent || '').trim();\n const phrases = this.phrases;\n const sr = srText(phrases.join(', '));\n this._out = document.createElement('span');\n this._out.className = 'usa-tw-text';\n this._out.setAttribute('aria-hidden', 'true');\n const caret = document.createElement('span');\n caret.className = 'usa-tw-caret';\n caret.setAttribute('aria-hidden', 'true');\n this.replaceChildren(sr, this._out, caret);\n this.toggleAttribute('data-no-cursor', this.getAttribute('cursor') === 'false');\n if (this.reduced) {\n this._out.textContent = phrases[0] || '';\n return;\n }\n const start = this.str('start', 'view');\n if (start === 'load') this.start();\n else if (start === 'view') {\n this.inView((visible) => {\n if (visible && !this._running && !this._out?.textContent) this.start();\n });\n }\n }\n\n unmount(): void {\n this.stop();\n }\n\n stop(): void {\n clearTimeout(this._timer as ReturnType<typeof setTimeout>);\n this._timer = 0;\n this._running = false;\n this.removeAttribute('data-typing');\n }\n\n restart(): void {\n this.stop();\n if (this._out) this._out.textContent = '';\n this.start();\n }\n\n start(): void {\n if (this._running || !this._out) return;\n const out = this._out;\n const phrases = this.phrases;\n if (this.reduced) {\n out.textContent = phrases[0] || '';\n return;\n }\n this._running = true;\n const speed = this.num('speed', 55);\n const del = this.num('delete-speed', 30);\n const pause = this.num('pause', 1400);\n const loop = this.flag('loop') || phrases.length > 1;\n let p = 0;\n let i = 0;\n let deleting = false;\n const tick = () => {\n const word = phrases[p] || '';\n if (!deleting) {\n i++;\n out.textContent = word.slice(0, i);\n this.setAttribute('data-typing', '');\n if (i >= word.length) {\n this.removeAttribute('data-typing');\n const last = p === phrases.length - 1;\n if (last) this.emit('complete');\n if (!loop && last) {\n this._running = false;\n return;\n }\n deleting = true;\n this._timer = setTimeout(tick, pause);\n return;\n }\n this._timer = setTimeout(tick, speed * (0.6 + Math.random() * 0.8));\n } else {\n i--;\n out.textContent = word.slice(0, Math.max(0, i));\n if (i <= 0) {\n deleting = false;\n p = (p + 1) % phrases.length;\n this._timer = setTimeout(tick, speed * 4);\n return;\n }\n this._timer = setTimeout(tick, del);\n }\n };\n this._timer = setTimeout(tick, this.num('delay', 0));\n }\n },\n { id: 'typewriter', text: css }\n );\n}\n","import { defineElement, srText, type UsaElement } from '../base';\nimport css from './split-text.css?raw';\n\n/**\n * `<usa-split-text>` — splits its text into words or characters and reveals\n * them in a cascade (pure CSS animation per unit, transform / opacity /\n * filter only). Words never break across lines.\n *\n * Attributes: `by` (`chars` | `words`, default `chars`), `effect`\n * (`rise` | `fade` | `blur` | `flip` | `pop`, default `rise`), `stagger`\n * (ms between units, 28 for chars / 70 for words), `duration` (ms, 620),\n * `delay` (ms, 0), `trigger` (`view` | `load` | `manual`, default `view`),\n * `repeat`. The original text stays readable via `aria-label`.\n * Event: `usa:complete`.\n */\nexport interface UsaSplitTextElement extends UsaElement {\n readonly units: HTMLElement[];\n play(): void;\n reset(): void;\n}\n\nexport function defineSplitText(tag = 'usa-split-text'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaSplitText extends Base {\n static get observedAttributes(): string[] {\n return ['by', 'text'];\n }\n\n private _source: string | null = null;\n private _timer: ReturnType<typeof setTimeout> | 0 = 0;\n\n get units(): HTMLElement[] {\n return Array.from(this.querySelectorAll<HTMLElement>('.usa-split-unit'));\n }\n\n mount(): void {\n if (this._source === null) this._source = this.getAttribute('text') ?? (this.textContent || '').replace(/\\s+/g, ' ').trim();\n const text = this.getAttribute('text') ?? this._source;\n const byWords = this.str('by', 'chars') === 'words';\n const frag = document.createDocumentFragment();\n frag.append(srText(text));\n let i = 0;\n text.split(' ').forEach((word, w) => {\n if (w > 0) frag.append(' ');\n const wordEl = document.createElement('span');\n wordEl.className = 'usa-split-word';\n wordEl.setAttribute('aria-hidden', 'true');\n const parts = byWords ? [word] : Array.from(word);\n for (const part of parts) {\n const u = document.createElement('span');\n u.className = 'usa-split-unit';\n u.textContent = part;\n u.style.setProperty('--i', String(i++));\n wordEl.append(u);\n }\n frag.append(wordEl);\n });\n this.replaceChildren(frag);\n this.style.setProperty('--usa-split-stagger', `${this.num('stagger', byWords ? 70 : 28)}ms`);\n this.style.setProperty('--usa-split-duration', `${this.num('duration', 620)}ms`);\n this.style.setProperty('--usa-split-delay', `${this.num('delay', 0)}ms`);\n this.style.setProperty('--usa-split-count', String(i));\n if (this.reduced) {\n this.setAttribute('data-state', 'shown');\n return;\n }\n this.setAttribute('data-state', 'hidden');\n const trigger = this.str('trigger', 'view');\n if (trigger === 'load') this.play();\n else if (trigger === 'view') {\n this.inView((visible) => {\n if (visible && this.getAttribute('data-state') === 'hidden') this.play();\n else if (!visible && this.flag('repeat')) this.reset();\n }, { threshold: 0.2 });\n }\n }\n\n unmount(): void {\n clearTimeout(this._timer as ReturnType<typeof setTimeout>);\n }\n\n play(): void {\n clearTimeout(this._timer as ReturnType<typeof setTimeout>);\n if (this.reduced) {\n this.setAttribute('data-state', 'shown');\n return;\n }\n // Restart the CSS animations\n this.setAttribute('data-state', 'hidden');\n void this.offsetWidth;\n this.setAttribute('data-state', 'play');\n const n = this.units.length;\n const total = this.num('delay', 0) + this.num('duration', 620) + Math.max(0, n - 1) * this.num('stagger', this.str('by') === 'words' ? 70 : 28);\n this._timer = setTimeout(() => {\n this.setAttribute('data-state', 'shown');\n this.emit('complete');\n }, total);\n }\n\n reset(): void {\n clearTimeout(this._timer as ReturnType<typeof setTimeout>);\n this.setAttribute('data-state', this.reduced ? 'shown' : 'hidden');\n }\n },\n { id: 'split-text', text: css }\n );\n}\n","import { defineElement, srText, raf, caf, now, type UsaElement } from '../base';\n\nconst GLYPHS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#%&*+=<>/\\\\?!';\n\n/**\n * `<usa-scramble>` — \"decodes\" text out of random glyphs, left to right.\n *\n * Attributes: `text` (default: the element's text), `duration` (ms, 900),\n * `chars` (glyph set), `trigger` (`view` | `hover` | `load` | `manual`,\n * default `view`). Spaces and punctuation stay in place. Uses a monospace-\n * friendly fixed width per glyph only if you style it so; the element sets\n * nothing that causes reflow beyond its own text. Event: `usa:complete`.\n * Reduced motion: shows the final text.\n */\nexport interface UsaScrambleElement extends UsaElement {\n play(): Promise<void>;\n}\n\n/** One frame of the scramble: the first `progress` share is resolved. */\nexport function scrambleFrame(text: string, progress: number, glyphs = GLYPHS, rnd: () => number = Math.random): string {\n const done = Math.floor(text.length * progress);\n let out = '';\n for (let i = 0; i < text.length; i++) {\n const ch = text[i];\n out += i < done || /\\s|[.,:;!?'\"()\\-–—]/.test(ch) ? ch : glyphs[Math.floor(rnd() * glyphs.length)];\n }\n return out;\n}\n\nexport function defineScramble(tag = 'usa-scramble'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaScramble extends Base {\n static get observedAttributes(): string[] {\n return ['text'];\n }\n\n private _source: string | null = null;\n private _out: HTMLElement | null = null;\n private _frame = 0;\n\n private get text(): string {\n return this.getAttribute('text') ?? this._source ?? '';\n }\n\n mount(): void {\n if (this._source === null) this._source = (this.textContent || '').trim();\n this._out = document.createElement('span');\n this._out.setAttribute('aria-hidden', 'true');\n this._out.textContent = this.text;\n this.replaceChildren(srText(this.text), this._out);\n if (this.reduced) return;\n const trigger = this.str('trigger', 'view');\n if (trigger === 'load') this.play();\n else if (trigger === 'hover') {\n this.listen(this, 'pointerenter', () => this.play());\n this.listen(this, 'focusin', () => this.play());\n } else if (trigger === 'view') {\n let played = false;\n this.inView((v) => {\n if (v && !played) {\n played = true;\n this.play();\n }\n });\n }\n }\n\n unmount(): void {\n caf(this._frame);\n this._frame = 0;\n }\n\n play(): Promise<void> {\n caf(this._frame);\n const out = this._out;\n const text = this.text;\n if (!out || this.reduced) {\n if (out) out.textContent = text;\n return Promise.resolve();\n }\n const duration = this.num('duration', 900);\n const glyphs = this.str('chars', GLYPHS) || GLYPHS;\n const t0 = now();\n let last = -1;\n return new Promise((resolve) => {\n const step = () => {\n const p = Math.min(1, Math.max(0, now() - t0) / duration);\n // ~30 fps glyph churn is plenty and halves DOM writes\n const bucket = Math.floor(p * duration / 33);\n if (bucket !== last || p === 1) {\n last = bucket;\n out.textContent = p === 1 ? text : scrambleFrame(text, p, glyphs);\n }\n if (p < 1) this._frame = raf(step);\n else {\n this._frame = 0;\n this.emit('complete');\n resolve();\n }\n };\n this._frame = raf(step);\n });\n }\n },\n undefined\n );\n}\n","import { defineElement, raf, caf, now, type UsaElement } from '../base';\nimport css from './counter.css?raw';\n\n/**\n * `<usa-counter>` — counts up (or down) to a number when it scrolls into view.\n *\n * Attributes: `to` (target, required), `from` (0), `duration` (ms, 1600),\n * `decimals` (0), `locale` (default: the document language), `prefix`,\n * `suffix`, `grouping=\"false\"` (no thousands separators), `start`\n * (`view` | `load` | `manual`). Setting the `value` property animates from\n * the current value — handy for live dashboards. Uses tabular digits so\n * the width does not jump. Event: `usa:complete`. Reduced motion: jumps.\n */\nexport interface UsaCounterElement extends UsaElement {\n /** Current target; setting it animates to the new number. */\n value: number;\n /** Animate to `to` (default: the `to` attribute). */\n play(to?: number): Promise<void>;\n format(n: number): string;\n}\n\n/** easeOutExpo */\nexport const easeOutExpo = (t: number): number => (t >= 1 ? 1 : 1 - Math.pow(2, -10 * t));\n\nexport function defineCounter(tag = 'usa-counter'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCounter extends Base {\n static get observedAttributes(): string[] {\n return ['to', 'decimals', 'locale', 'prefix', 'suffix', 'grouping'];\n }\n\n private _current = NaN;\n private _target = NaN;\n private _frame = 0;\n private _fmt: Intl.NumberFormat | null = null;\n\n get value(): number {\n return Number.isNaN(this._target) ? this.num('to', 0) : this._target;\n }\n set value(v: number) {\n this.play(Number(v));\n }\n\n format(n: number): string {\n if (!this._fmt) {\n const d = Math.max(0, Math.min(20, this.num('decimals', 0)));\n const locale = this.getAttribute('locale') || (typeof document !== 'undefined' && document.documentElement.lang) || undefined;\n try {\n this._fmt = new Intl.NumberFormat(locale, { minimumFractionDigits: d, maximumFractionDigits: d, useGrouping: this.getAttribute('grouping') !== 'false' });\n } catch {\n this._fmt = new Intl.NumberFormat(undefined, { minimumFractionDigits: d, maximumFractionDigits: d });\n }\n }\n return `${this.str('prefix')}${this._fmt.format(n)}${this.str('suffix')}`;\n }\n\n private render(n: number): void {\n this._current = n;\n this.textContent = this.format(n);\n }\n\n changed(name: string): void {\n this._fmt = null;\n if (name === 'to') this.play();\n else this.render(Number.isNaN(this._current) ? this.num('from', 0) : this._current);\n }\n\n mount(): void {\n this._fmt = null;\n const to = this.num('to', 0);\n if (this.reduced) {\n this._target = to;\n this.render(to);\n return;\n }\n if (Number.isNaN(this._current)) this.render(this.num('from', 0));\n const start = this.str('start', 'view');\n if (start === 'load') this.play();\n else if (start === 'view') {\n let done = false;\n this.inView((v) => {\n if (v && !done) {\n done = true;\n this.play();\n }\n }, { threshold: 0.4 });\n }\n }\n\n unmount(): void {\n caf(this._frame);\n this._frame = 0;\n }\n\n play(to = this.num('to', 0)): Promise<void> {\n caf(this._frame);\n this._target = to;\n const from = Number.isNaN(this._current) ? this.num('from', 0) : this._current;\n if (this.reduced || from === to || !this.isConnected) {\n this.render(to);\n this.emit('complete', { value: to });\n return Promise.resolve();\n }\n const duration = this.num('duration', 1600);\n const t0 = now();\n return new Promise((resolve) => {\n const step = () => {\n const t = Math.min(1, Math.max(0, now() - t0) / duration);\n this.render(from + (to - from) * easeOutExpo(t));\n if (t < 1) this._frame = raf(step);\n else {\n this._frame = 0;\n this.render(to);\n this.emit('complete', { value: to });\n resolve();\n }\n };\n this._frame = raf(step);\n });\n }\n },\n { id: 'counter', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport css from './shimmer-text.css?raw';\n\n/**\n * `<usa-shimmer-text>` — a light sweep across gradient-filled text (CSS\n * only; the element just maps attributes to custom properties).\n *\n * Attributes: `duration` (ms, 2600), `color` (base text colour), `shine`\n * (highlight colour), `angle` (deg, 110). Or style `--usa-shimmer-*`\n * directly. Reduced motion: static gradient text.\n */\nexport type UsaShimmerTextElement = UsaElement;\n\nexport function defineShimmerText(tag = 'usa-shimmer-text'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaShimmerText extends Base {\n static get observedAttributes(): string[] {\n return ['duration', 'color', 'shine', 'angle'];\n }\n\n mount(): void {\n const set = (attr: string, prop: string, unit = '') => {\n const v = this.getAttribute(attr);\n if (v !== null) this.style.setProperty(prop, v + unit);\n else this.style.removeProperty(prop);\n };\n set('duration', '--usa-shimmer-duration', 'ms');\n set('color', '--usa-shimmer-color');\n set('shine', '--usa-shimmer-shine');\n set('angle', '--usa-shimmer-angle', 'deg');\n }\n },\n { id: 'shimmer-text', text: css }\n );\n}\n","import { defineElement, srText, EASE_SPRING, EASE_OUT, type UsaElement } from '../base';\nimport css from './text-rotate.css?raw';\n\n/**\n * `<usa-text-rotate>` — cycles through words in place (\"Build *fast* /\n * *small* / *typed* apps\"). All words share one grid cell, so the width is\n * that of the longest word and nothing around it reflows.\n *\n * Attributes: `words` (separated by `|`, default: the element's text split\n * on `|`), `interval` (ms, 2200), `effect` (`slide` | `fade` | `flip` |\n * `blur`, default `slide`), `paused`. Pauses while off-screen and on hover\n * is not needed. Event: `usa:change` (`detail.index`, `detail.word`).\n * Reduced motion: words still change, without movement (fade only).\n */\nexport interface UsaTextRotateElement extends UsaElement {\n readonly index: number;\n next(): void;\n}\n\nexport function defineTextRotate(tag = 'usa-text-rotate'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaTextRotate extends Base {\n static get observedAttributes(): string[] {\n return ['words', 'interval', 'paused'];\n }\n\n private _source: string | null = null;\n private _index = 0;\n private _timer: ReturnType<typeof setInterval> | 0 = 0;\n private _visible = true;\n\n get index(): number {\n return this._index;\n }\n\n private get words(): string[] {\n return (this.getAttribute('words') ?? this._source ?? '').split('|').map((w) => w.trim()).filter(Boolean);\n }\n\n mount(): void {\n if (this._source === null) this._source = (this.textContent || '').trim();\n const words = this.words;\n this.replaceChildren(\n srText(words.join(', ')),\n ...words.map((w, i) => {\n const s = document.createElement('span');\n s.className = 'usa-rotate-word';\n s.textContent = w;\n s.setAttribute('aria-hidden', 'true');\n if (i !== this._index) s.setAttribute('data-hidden', '');\n return s;\n })\n );\n if (this._index >= words.length) this._index = 0;\n if (words.length < 2) return;\n this.inView((v) => (this._visible = v));\n if (!this.flag('paused')) {\n this._timer = setInterval(() => {\n if (this._visible && !(typeof document !== 'undefined' && document.hidden)) this.next();\n }, Math.max(400, this.num('interval', 2200)));\n }\n }\n\n unmount(): void {\n clearInterval(this._timer as ReturnType<typeof setInterval>);\n this._timer = 0;\n }\n\n next(): void {\n const els = Array.from(this.querySelectorAll<HTMLElement>('.usa-rotate-word'));\n if (els.length < 2) return;\n const prev = els[this._index];\n this._index = (this._index + 1) % els.length;\n const cur = els[this._index];\n prev.setAttribute('data-hidden', '');\n cur.removeAttribute('data-hidden');\n const effect = this.reduced ? 'fade' : this.str('effect', 'slide');\n const [inFrom, outTo] =\n effect === 'fade'\n ? [{ opacity: 0 }, { opacity: 0 }]\n : effect === 'flip'\n ? [{ opacity: 0, transform: 'perspective(400px) rotateX(-90deg)' }, { opacity: 0, transform: 'perspective(400px) rotateX(90deg)' }]\n : effect === 'blur'\n ? [{ opacity: 0, filter: 'blur(8px)' }, { opacity: 0, filter: 'blur(8px)' }]\n : [{ opacity: 0, transform: 'translateY(0.8em)' }, { opacity: 0, transform: 'translateY(-0.8em)' }];\n const neutral = { opacity: 1, transform: 'none', filter: 'none' };\n const pick = (f: Keyframe) => Object.fromEntries(Object.keys(f).map((k) => [k, (neutral as any)[k]]));\n this.motion(prev, [{ ...pick(outTo) }, outTo], { duration: 380, easing: EASE_OUT });\n this.motion(cur, [inFrom, pick(inFrom)], { duration: 520, easing: effect === 'slide' ? EASE_SPRING : EASE_OUT });\n this.emit('change', { index: this._index, word: cur.textContent });\n }\n },\n { id: 'text-rotate', text: css }\n );\n}\n","import { defineElement, srText, raf, caf, clamp, type UsaElement } from '../base';\nimport css from './text-fx.css?raw';\n\n/** Split `text` into per-character spans (words never break). The animated copy is aria-hidden. */\nfunction splitChars(host: HTMLElement, text: string): HTMLElement[] {\n const vis = document.createElement('span');\n vis.setAttribute('aria-hidden', 'true');\n const chars: HTMLElement[] = [];\n text.split(/(\\s+)/).forEach((w) => {\n if (/^\\s+$/.test(w)) {\n vis.append(document.createTextNode(w));\n return;\n }\n const word = document.createElement('span');\n word.className = 'usa-word';\n for (const c of Array.from(w)) {\n const s = document.createElement('span');\n s.className = 'usa-char';\n s.textContent = c;\n s.style.setProperty('--i', String(chars.length));\n word.append(s);\n chars.push(s);\n }\n vis.append(word);\n });\n host.replaceChildren(srText(text), vis);\n return chars;\n}\n\nconst textOf = (el: HTMLElement): string => (el.getAttribute('text') ?? el.dataset.usaText ?? (el.dataset.usaText = (el.textContent || '').trim()));\n\n/**\n * `<usa-wave-text>` — letters bob in a travelling wave.\n * Attributes: `amplitude` (em, 0.25), `speed` (s per cycle, 1.6), `stagger`\n * (s between letters, 0.06). Reduced motion: still text.\n */\nexport interface UsaWaveTextElement extends UsaElement {}\nexport function defineWaveText(tag = 'usa-wave-text'): CustomElementConstructor | undefined {\n return defineElement(tag, (Base) => class extends Base {\n static get observedAttributes(): string[] { return ['text']; }\n mount(): void {\n splitChars(this, textOf(this));\n this.style.setProperty('--usa-wave-a', `${this.num('amplitude', 0.25)}em`);\n this.style.setProperty('--usa-wave-s', `${this.num('speed', 1.6)}s`);\n this.style.setProperty('--usa-wave-d', `${this.num('stagger', 0.06)}s`);\n }\n }, { id: 'text-fx', text: css });\n}\n\n/**\n * `<usa-glitch>` — an RGB-split glitch on its text (`trigger=\"always\"`\n * default, or `hover`). Attributes: `intensity` (px, 3), `trigger`.\n * Reduced motion: no animation (plain text).\n */\nexport interface UsaGlitchElement extends UsaElement {}\nexport function defineGlitch(tag = 'usa-glitch'): CustomElementConstructor | undefined {\n return defineElement(tag, (Base) => class extends Base {\n static get observedAttributes(): string[] { return ['text', 'intensity']; }\n mount(): void {\n const t = textOf(this);\n this.setAttribute('data-text', t);\n this.style.setProperty('--usa-glitch-i', `${this.num('intensity', 3)}px`);\n if (!this.firstChild) this.textContent = t;\n }\n }, { id: 'text-fx', text: css });\n}\n\n/**\n * `<usa-gradient-text>` — text filled with a flowing multi-colour gradient.\n * Attributes: `colors` (comma list), `speed` (s, 6), `angle` (deg, 90).\n * Reduced motion: a static gradient.\n */\nexport interface UsaGradientTextElement extends UsaElement {}\nexport function defineGradientText(tag = 'usa-gradient-text'): CustomElementConstructor | undefined {\n return defineElement(tag, (Base) => class extends Base {\n static get observedAttributes(): string[] { return ['colors', 'speed', 'angle']; }\n mount(): void {\n const c = this.str('colors', '#7c5cff,#22d3ee,#f472b6,#facc15').split(',').map((s) => s.trim());\n this.style.setProperty('--usa-grad', `linear-gradient(${this.num('angle', 90)}deg, ${[...c, c[0]].join(', ')})`);\n this.style.setProperty('--usa-grad-s', `${this.num('speed', 6)}s`);\n }\n }, { id: 'text-fx', text: css });\n}\n\n/**\n * `<usa-handwriting>` — the text draws itself stroke by stroke (SVG text\n * outline), then fills in, when it scrolls into view.\n * Attributes: `text`, `duration` (ms, 2400), `stroke` (colour), `size` (px,\n * 64), `font` (family; a script font looks best). Events: `usa:complete`.\n * Reduced motion: the filled text appears at once.\n */\nexport interface UsaHandwritingElement extends UsaElement {\n play(): void;\n}\nexport function defineHandwriting(tag = 'usa-handwriting'): CustomElementConstructor | undefined {\n return defineElement(tag, (Base) => class extends Base {\n static get observedAttributes(): string[] { return ['text', 'size', 'font']; }\n mount(): void {\n const t = textOf(this);\n const size = this.num('size', 64);\n const w = Math.ceil(t.length * size * 0.62) + 8;\n this.replaceChildren(srText(t));\n this.insertAdjacentHTML('beforeend', `<svg aria-hidden=\"true\" viewBox=\"0 0 ${w} ${Math.ceil(size * 1.3)}\" width=\"${w}\" height=\"${Math.ceil(size * 1.3)}\"><text x=\"4\" y=\"${Math.round(size)}\" font-size=\"${size}\"></text></svg>`);\n const text = this.querySelector('text')!;\n text.textContent = t;\n if (this.str('font')) text.setAttribute('font-family', this.str('font'));\n if (this.str('stroke')) this.style.setProperty('--usa-hw-stroke', this.str('stroke'));\n this.style.setProperty('--usa-hw-d', `${this.num('duration', 2400)}ms`);\n if (this.reduced) {\n this.setAttribute('data-state', 'done');\n return;\n }\n this.inView((v) => v && this.play(), { threshold: 0.3 });\n }\n play(): void {\n this.removeAttribute('data-state');\n void this.offsetWidth;\n this.setAttribute('data-state', 'drawing');\n setTimeout(() => {\n this.setAttribute('data-state', 'done');\n this.emit('complete');\n }, this.reduced ? 0 : this.num('duration', 2400));\n }\n }, { id: 'text-fx', text: css });\n}\n\n/**\n * `<usa-scroll-highlight>` — reading highlight: words light up one by one\n * as the paragraph scrolls through the viewport (`mode=\"words\"`, default),\n * or a highlighter marker sweeps behind the text on enter (`mode=\"marker\"`).\n * Attributes: `mode`, `color` (marker), `dim` (opacity of unread words,\n * 0.2). Reduced motion: fully highlighted text.\n */\nexport interface UsaScrollHighlightElement extends UsaElement {\n readonly progress: number;\n}\nexport function defineScrollHighlight(tag = 'usa-scroll-highlight'): CustomElementConstructor | undefined {\n return defineElement(tag, (Base) => class extends Base {\n static get observedAttributes(): string[] { return ['mode', 'text']; }\n private _f = 0;\n private _p = 0;\n get progress(): number { return this._p; }\n mount(): void {\n const mode = this.str('mode', 'words');\n if (this.str('color')) this.style.setProperty('--usa-hl-color', this.str('color'));\n this.style.setProperty('--usa-hl-dim', String(this.num('dim', 0.2)));\n if (mode === 'marker') {\n if (this.reduced) this.setAttribute('data-lit', '');\n else this.inView((v) => v && this.setAttribute('data-lit', ''), { threshold: 0.6 });\n return;\n }\n const t = textOf(this);\n const vis = document.createElement('span');\n vis.setAttribute('aria-hidden', 'true');\n const words = t.split(/\\s+/).filter(Boolean).map((w) => {\n const s = document.createElement('span');\n s.className = 'usa-hl-word';\n s.textContent = w;\n vis.append(s, ' ');\n return s;\n });\n this.replaceChildren(srText(t), vis);\n if (this.reduced) {\n words.forEach((w) => w.setAttribute('data-on', ''));\n return;\n }\n const update = () => {\n this._f = 0;\n const r = this.getBoundingClientRect();\n const H = window.innerHeight || 800;\n this._p = clamp((H * 0.85 - r.top) / (r.height + H * 0.35), 0, 1);\n const lit = Math.round(this._p * words.length);\n words.forEach((w, i) => w.toggleAttribute('data-on', i < lit));\n };\n const on = () => !this._f && (this._f = raf(update));\n let active = false;\n this.inView((v) => {\n if (v === active) return;\n active = v;\n if (v) window.addEventListener('scroll', on, { passive: true });\n else window.removeEventListener('scroll', on);\n on();\n });\n this.onCleanup(() => window.removeEventListener('scroll', on));\n }\n unmount(): void {\n caf(this._f);\n this._f = 0;\n }\n }, { id: 'text-fx', text: css });\n}\n","/**\n * use-scroll-animate/components/text — text effects.\n * `<usa-typewriter>`, `<usa-split-text>`, `<usa-scramble>`, `<usa-counter>`,\n * `<usa-shimmer-text>`, `<usa-text-rotate>`.\n */\nimport { defineTypewriter, type UsaTypewriterElement } from './typewriter';\nimport { defineSplitText, type UsaSplitTextElement } from './split-text';\nimport { defineScramble, type UsaScrambleElement } from './scramble';\nimport { defineCounter, type UsaCounterElement } from './counter';\nimport { defineShimmerText, type UsaShimmerTextElement } from './shimmer-text';\nimport { defineTextRotate, type UsaTextRotateElement } from './text-rotate';\n\nimport { defineWaveText, defineGlitch, defineGradientText, defineHandwriting, defineScrollHighlight } from './text-fx';\nimport type { UsaWaveTextElement, UsaGlitchElement, UsaGradientTextElement, UsaHandwritingElement, UsaScrollHighlightElement } from './text-fx';\nexport { defineTypewriter, defineSplitText, defineScramble, defineCounter, defineShimmerText, defineTextRotate };\nexport { scrambleFrame } from './scramble';\nexport { easeOutExpo } from './counter';\nexport type { UsaTypewriterElement, UsaSplitTextElement, UsaScrambleElement, UsaCounterElement, UsaShimmerTextElement, UsaTextRotateElement };\nexport { defineWaveText, defineGlitch, defineGradientText, defineHandwriting, defineScrollHighlight };\nexport type { UsaWaveTextElement, UsaGlitchElement, UsaGradientTextElement, UsaHandwritingElement, UsaScrollHighlightElement };\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 defineTextComponents(): void {\n defineTypewriter();\n defineSplitText();\n defineScramble();\n defineCounter();\n defineShimmerText();\n defineTextRotate();\n defineWaveText();\n defineGlitch();\n defineGradientText();\n defineHandwriting();\n defineScrollHighlight();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-wave-text': UsaWaveTextElement;\n 'usa-glitch': UsaGlitchElement;\n 'usa-gradient-text': UsaGradientTextElement;\n 'usa-handwriting': UsaHandwritingElement;\n 'usa-scroll-highlight': UsaScrollHighlightElement;\n 'usa-typewriter': UsaTypewriterElement;\n 'usa-split-text': UsaSplitTextElement;\n 'usa-scramble': UsaScrambleElement;\n 'usa-counter': UsaCounterElement;\n 'usa-shimmer-text': UsaShimmerTextElement;\n 'usa-text-rotate': UsaTextRotateElement;\n }\n}\n"],"names":["css"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var base = require('../chunks/base-
|
|
3
|
+
var base = require('../chunks/base-BkQcvoSG.cjs');
|
|
4
4
|
|
|
5
5
|
var shadowCss = ":host{display:contents}dialog{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;color:inherit;overflow:hidden}dialog:not([open]){display:none}dialog::backdrop{background:transparent}[part=\"backdrop\"]{position:absolute;inset:0;background:var(--usa-dialog-backdrop,rgb(0 0 0 / 0.42))}[part=\"panel\"]{position:absolute;left:50%;top:50%;translate:-50% -50%;box-sizing:border-box;width:min(var(--usa-dialog-width,480px),calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;padding:var(--usa-dialog-padding,24px);border-radius:var(--usa-dialog-radius,12px);background:var(--usa-dialog-bg,Canvas);color:var(--usa-dialog-fg,CanvasText);box-shadow:0 32px 64px -12px rgb(0 0 0 / 0.45),0 0 0 1px rgb(127 127 127 / 0.18)}dialog[data-variant^=\"drawer\"] [part=\"panel\"]{top:0;bottom:0;translate:none;max-height:none;height:100%;border-radius:0;width:min(var(--usa-dialog-width,380px),88vw)}dialog[data-variant=\"drawer-start\"] [part=\"panel\"]{left:0}dialog[data-variant=\"drawer-end\"] [part=\"panel\"]{left:auto;right:0}dialog[data-variant=\"drawer-bottom\"] [part=\"panel\"],dialog[data-variant=\"sheet\"] [part=\"panel\"]{top:auto;bottom:0;left:0;right:0;translate:none;width:100%;height:auto;max-height:85vh;border-radius:var(--usa-dialog-radius,16px) var(--usa-dialog-radius,16px) 0 0}dialog[data-variant=\"sheet\"] [part=\"panel\"]{left:50%;translate:-50% 0;width:min(var(--usa-dialog-width,560px),100vw)}";
|
|
6
6
|
|
|
@@ -25,7 +25,7 @@ function defineDialog(tag = 'usa-dialog') {
|
|
|
25
25
|
this.returnValue = '';
|
|
26
26
|
}
|
|
27
27
|
static get observedAttributes() {
|
|
28
|
-
return ['open', 'variant', 'label'];
|
|
28
|
+
return ['open', 'kind', 'variant', 'label'];
|
|
29
29
|
}
|
|
30
30
|
get dialog() {
|
|
31
31
|
return this._dialog;
|
|
@@ -37,8 +37,7 @@ function defineDialog(tag = 'usa-dialog') {
|
|
|
37
37
|
this.toggleAttribute('open', !!v);
|
|
38
38
|
}
|
|
39
39
|
get variant() {
|
|
40
|
-
|
|
41
|
-
return FROM[v] ? v : 'modal';
|
|
40
|
+
return base.kindOf(this, FROM, 'modal');
|
|
42
41
|
}
|
|
43
42
|
changed(name) {
|
|
44
43
|
if (name === 'open') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transitions.cjs","sources":["../../src/components/transitions/dialog.ts","../../src/components/transitions/accordion.ts","../../src/components/transitions/flip-list.ts","../../src/components/transitions/view-switch.ts","../../src/components/transitions/helpers.ts","../../src/components/transitions/index.ts"],"sourcesContent":["import { defineElement, shadowStyles, EASE_OUT, FLUENT_DECELERATE, type UsaElement } from '../base';\nimport shadowCss from './dialog.shadow.css?raw';\nimport css from './dialog.css?raw';\n\nexport type DialogVariant = 'modal' | 'drawer-start' | 'drawer-end' | 'drawer-bottom' | 'sheet';\n\n/**\n * `<usa-dialog>` — an animated modal or drawer built on the native\n * `<dialog>` (top layer, focus trapping, inert page, Esc to close). Its\n * children are slotted into the panel (they stay in the light DOM, so\n * React / Vue / Svelte keep owning them). Style with `::part(panel)`,\n * `::part(backdrop)` and the `--usa-dialog-*` custom properties.\n *\n * Attributes: `open` (reflects; set/remove to open/close), `variant`\n * (`modal` default — Fluent scale + fade; `drawer-start` / `drawer-end`\n * slide from the side, `drawer-bottom` / `sheet` from below), `label`\n * (accessible name), `no-backdrop-close`, `no-esc`. Elements inside\n * with `data-close` close it. Events: `usa:open`, `usa:close` (cancelable\n * `usa:beforeclose`). Reduced motion: fade only.\n */\nexport interface UsaDialogElement extends UsaElement {\n open: boolean;\n show(): Promise<void>;\n close(returnValue?: string): Promise<void>;\n readonly dialog: HTMLDialogElement | null;\n returnValue: string;\n}\n\nconst FROM: Record<string, string> = {\n modal: 'scale(0.94)',\n 'drawer-start': 'translateX(-100%)',\n 'drawer-end': 'translateX(100%)',\n 'drawer-bottom': 'translateY(100%)',\n sheet: 'translateY(40px)',\n};\n\nexport function defineDialog(tag = 'usa-dialog'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaDialog extends Base {\n static get observedAttributes(): string[] {\n return ['open', 'variant', 'label'];\n }\n\n private _dialog: HTMLDialogElement | null = null;\n private _panel: HTMLElement | null = null;\n private _backdrop: HTMLElement | null = null;\n private _busy: Promise<void> | null = null;\n private _syncing = false;\n returnValue = '';\n\n get dialog(): HTMLDialogElement | null {\n return this._dialog;\n }\n get open(): boolean {\n return this.hasAttribute('open');\n }\n set open(v: boolean) {\n this.toggleAttribute('open', !!v);\n }\n\n private get variant(): string {\n const v = this.str('variant', 'modal');\n return FROM[v] ? v : 'modal';\n }\n\n changed(name: string): void {\n if (name === 'open') {\n if (this._syncing) return;\n if (this.open) this.show();\n else this.close();\n } else this.syncAttrs();\n }\n\n private syncAttrs(): void {\n if (!this._dialog) return;\n this._dialog.setAttribute('data-variant', this.variant);\n this._dialog.setAttribute('aria-modal', 'true');\n const label = this.getAttribute('label');\n if (label) this._dialog.setAttribute('aria-label', label);\n }\n\n mount(): void {\n if (!this._dialog) {\n const root = this.shadowRoot || this.attachShadow({ mode: 'open' });\n root.innerHTML = '<dialog part=\"dialog\"><div part=\"backdrop\" aria-hidden=\"true\"></div><div part=\"panel\"><slot></slot></div></dialog>';\n shadowStyles(root, shadowCss);\n this._dialog = root.querySelector('dialog');\n this._backdrop = root.querySelector('[part=backdrop]');\n this._panel = root.querySelector('[part=panel]');\n }\n this.syncAttrs();\n const dlg = this._dialog!;\n this.listen(dlg, 'cancel', (e: Event) => {\n e.preventDefault();\n if (!this.flag('no-esc')) this.close('cancel');\n });\n this.listen(this._backdrop!, 'click', () => !this.flag('no-backdrop-close') && this.close('backdrop'));\n this.listen(this, 'click', (e: Event) => {\n const t = (e.target as Element).closest?.('[data-close]');\n if (t && this.contains(t)) this.close((t as HTMLElement).getAttribute('data-close') || 'close');\n });\n if (this.open && !dlg.open) this.show();\n }\n\n unmount(): void {\n if (this._dialog?.open) this._dialog.close();\n }\n\n private setOpenAttr(on: boolean): void {\n this._syncing = true;\n this.toggleAttribute('open', on);\n this._syncing = false;\n }\n\n async show(): Promise<void> {\n await this._busy;\n const dlg = this._dialog;\n if (!dlg) {\n this.setOpenAttr(true); // opens on connect\n return;\n }\n if (dlg.open) return;\n this.setOpenAttr(true);\n try {\n if (typeof dlg.showModal === 'function') dlg.showModal();\n else dlg.setAttribute('open', '');\n } catch {\n dlg.setAttribute('open', '');\n }\n this.emit('open');\n if (this.reduced) {\n await this.animate2([{ opacity: 0 }, { opacity: 1 }], [{ opacity: 0 }, { opacity: 1 }], 160, EASE_OUT);\n return;\n }\n await this.animate2(\n [{ opacity: 0, transform: FROM[this.variant] }, { opacity: 1, transform: 'none' }],\n [{ opacity: 0 }, { opacity: 1 }],\n this.variant === 'modal' ? 260 : 360,\n FLUENT_DECELERATE\n );\n }\n\n async close(returnValue = ''): Promise<void> {\n await this._busy;\n const dlg = this._dialog;\n if (!dlg || !dlg.open) {\n this.setOpenAttr(false);\n return;\n }\n if (!this.emit('beforeclose', { returnValue })) {\n this.setOpenAttr(true);\n return;\n }\n this.returnValue = returnValue;\n this._busy = (async () => {\n const panelTo = this.reduced ? { opacity: 0 } : { opacity: 0, transform: FROM[this.variant] };\n const panelFrom = this.reduced ? { opacity: 1 } : { opacity: 1, transform: 'none' };\n await this.animate2([panelFrom, panelTo], [{ opacity: 1 }, { opacity: 0 }], this.reduced ? 120 : 200, 'cubic-bezier(0.7, 0, 0.84, 0)', 'forwards');\n try {\n if (typeof dlg.close === 'function') dlg.close(returnValue);\n else dlg.removeAttribute('open');\n } catch {\n dlg.removeAttribute('open');\n }\n dlg.removeAttribute('open');\n this._panel?.getAnimations?.().forEach((a) => a.cancel());\n this._backdrop?.getAnimations?.().forEach((a) => a.cancel());\n this.setOpenAttr(false);\n this.emit('close', { returnValue });\n })();\n await this._busy;\n this._busy = null;\n }\n\n private animate2(panel: Keyframe[], backdrop: Keyframe[], duration: number, easing: string, fill: FillMode = 'none'): Promise<void> {\n const a = this._panel ? this.motion(this._panel, panel, { duration, easing, fill }) : null;\n const b = this._backdrop ? this.motion(this._backdrop, backdrop, { duration, easing: 'linear', fill }) : null;\n return Promise.all([a?.finished, b?.finished].map((p) => p?.catch(() => undefined))).then(() => undefined);\n }\n },\n { id: 'dialog', text: css }\n );\n}\n","import { defineElement, EASE_OUT, type UsaElement } from '../base';\nimport css from './accordion.css?raw';\n\n/**\n * `<usa-accordion>` — smooth expand / collapse for the native `<details>`\n * elements inside it (keeps their semantics, keyboard support and\n * find-in-page, and adds no wrapper elements, so framework-rendered content\n * is left alone). Only one stays open unless `multiple` is set.\n *\n * Attributes: `multiple`, `duration` (ms, 300). Event: `usa:toggle`\n * (`detail.details`, `detail.open`). Reduced motion: instant.\n * Heights are measured once per toggle and animated on the `<details>`.\n */\nexport interface UsaAccordionElement extends UsaElement {\n readonly items: HTMLDetailsElement[];\n toggleItem(details: HTMLDetailsElement, open?: boolean): Promise<void>;\n}\n\nexport function defineAccordion(tag = 'usa-accordion'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaAccordion extends Base {\n static get observedAttributes(): string[] {\n return [];\n }\n\n private _running = new WeakMap<HTMLDetailsElement, Animation>();\n\n get items(): HTMLDetailsElement[] {\n return Array.from(this.children).filter((c): c is HTMLDetailsElement => c.tagName === 'DETAILS');\n }\n\n mount(): void {\n this.listen(this, 'click', (e: MouseEvent) => {\n const summary = (e.target as Element).closest?.('summary');\n const d = summary?.parentElement;\n if (!summary || !d || d.tagName !== 'DETAILS' || d.parentElement !== this) return;\n e.preventDefault();\n this.toggleItem(d as HTMLDetailsElement);\n });\n }\n\n /** Height of `d` when closed: its summary plus its own padding and border. */\n private closedHeight(d: HTMLDetailsElement): number {\n const summary = d.querySelector(':scope > summary');\n const cs = typeof getComputedStyle === 'function' ? getComputedStyle(d) : null;\n const extra = cs\n ? ['paddingTop', 'paddingBottom', 'borderTopWidth', 'borderBottomWidth'].reduce((n, k) => n + (parseFloat((cs as any)[k]) || 0), 0)\n : 0;\n return (summary ? summary.getBoundingClientRect().height : 0) + extra;\n }\n\n async toggleItem(d: HTMLDetailsElement, open = !d.open || d.hasAttribute('data-closing')): Promise<void> {\n if (open && !this.flag('multiple')) this.items.forEach((o) => o !== d && o.open && this.toggleItem(o, false));\n this._running.get(d)?.cancel();\n this._running.delete(d);\n const duration = this.reduced ? 0 : this.num('duration', 300);\n const startH = d.getBoundingClientRect().height;\n if (open) {\n d.removeAttribute('data-closing');\n d.open = true;\n }\n this.emit('toggle', { details: d, open });\n if (!duration || typeof d.animate !== 'function') {\n if (!open) d.open = false;\n return;\n }\n const endH = open ? d.getBoundingClientRect().height : this.closedHeight(d);\n if (!open) d.setAttribute('data-closing', '');\n d.style.overflow = 'hidden';\n const a = d.animate([{ height: `${startH}px` }, { height: `${endH}px` }], { duration, easing: EASE_OUT });\n this._running.set(d, a);\n await a.finished.catch(() => undefined);\n if (this._running.get(d) !== a) return;\n this._running.delete(d);\n d.style.overflow = '';\n if (!open) {\n d.open = false;\n d.removeAttribute('data-closing');\n }\n }\n },\n { id: 'accordion', text: css }\n );\n}\n","import { defineElement, FLUENT_DECELERATE, type UsaElement } from '../base';\nimport css from './flip-list.css?raw';\n\n/**\n * `<usa-flip-list>` — animates its children to their new places whenever\n * they are added, removed or reordered (FLIP: transforms only). Works with\n * any rendering: plain DOM, React keyed lists, Vue `v-for`, Svelte `{#each}`.\n *\n * Attributes: `duration` (ms, 420), `easing`, `disabled`.\n * Method: `flip(mutate)` for explicit changes (also measures resizes).\n * Reduced motion: no animation.\n */\nexport interface UsaFlipListElement extends UsaElement {\n flip(mutate: () => void | Promise<void>): Promise<void>;\n}\n\nexport function defineFlipList(tag = 'usa-flip-list'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaFlipList extends Base {\n static get observedAttributes(): string[] {\n return [];\n }\n\n /** Child positions relative to the host, from the last layout we saw. */\n private _pos = new WeakMap<Element, { x: number; y: number }>();\n private _manual = false;\n\n private snapshot(): void {\n const host = this.getBoundingClientRect();\n for (const el of Array.from(this.children)) {\n const r = el.getBoundingClientRect();\n this._pos.set(el, { x: r.left - host.left, y: r.top - host.top });\n }\n }\n\n mount(): void {\n this.snapshot();\n if (typeof MutationObserver !== 'undefined') {\n const mo = new MutationObserver(() => {\n if (!this._manual) this.animateFrom(this._pos);\n });\n mo.observe(this, { childList: true });\n this.onCleanup(() => mo.disconnect());\n }\n if (typeof ResizeObserver !== 'undefined') {\n const ro = new ResizeObserver(() => this.snapshot());\n ro.observe(this);\n this.onCleanup(() => ro.disconnect());\n }\n }\n\n private animateFrom(prev: WeakMap<Element, { x: number; y: number }>): Promise<void> {\n const off = this.reduced || this.flag('disabled');\n const host = this.getBoundingClientRect();\n const kids = Array.from(this.children) as HTMLElement[];\n const now = kids.map((el) => {\n const r = el.getBoundingClientRect();\n return { x: r.left - host.left, y: r.top - host.top };\n });\n const anims: Promise<unknown>[] = [];\n const duration = this.num('duration', 420);\n const easing = this.str('easing', FLUENT_DECELERATE);\n kids.forEach((el, i) => {\n const before = prev.get(el);\n this._pos.set(el, now[i]);\n if (off || typeof el.animate !== 'function') return;\n if (!before) {\n anims.push(el.animate([{ opacity: 0, transform: 'scale(0.92)' }, { opacity: 1, transform: 'none' }], { duration, easing }).finished.catch(() => 0));\n return;\n }\n const dx = before.x - now[i].x;\n const dy = before.y - now[i].y;\n if (Math.abs(dx) < 0.5 && Math.abs(dy) < 0.5) return;\n anims.push(el.animate([{ transform: `translate(${dx}px, ${dy}px)` }, { transform: 'none' }], { duration, easing, composite: 'add' } as KeyframeAnimationOptions).finished.catch(() => 0));\n });\n return Promise.all(anims).then(() => undefined);\n }\n\n async flip(mutate: () => void | Promise<void>): Promise<void> {\n this.snapshot();\n const prev = this._pos;\n this._pos = new WeakMap();\n // Copy the snapshot so the observer does not overwrite it mid-mutation\n for (const el of Array.from(this.children)) {\n const p = prev.get(el);\n if (p) this._pos.set(el, p);\n }\n this._manual = true;\n try {\n await mutate();\n } finally {\n this._manual = false;\n }\n await this.animateFrom(prev);\n }\n },\n { id: 'flip-list', text: css }\n );\n}\n","import { defineElement, EASE_OUT, FLUENT_DECELERATE, type UsaElement } from '../base';\nimport css from './view-switch.css?raw';\n\n/**\n * `<usa-view-switch>` — shows one of its children at a time (tabs, wizard\n * steps, app pages) and animates between them. Children are views; name\n * them with `data-view`, or address them by index.\n *\n * Attributes: `active` (view name or index, default the first),\n * `effect` (`fade` | `slide` (default, direction-aware — Fluent \"page\n * transition\") | `scale` | `drill`), `duration` (ms, 320). Inactive views\n * get `hidden` + `inert`. Event: `usa:change` (`detail.view`,\n * `detail.index`). Reduced motion: a quick fade.\n */\nexport interface UsaViewSwitchElement extends UsaElement {\n active: string;\n readonly views: HTMLElement[];\n show(view: string | number): Promise<void>;\n}\n\nexport function defineViewSwitch(tag = 'usa-view-switch'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaViewSwitch extends Base {\n static get observedAttributes(): string[] {\n return ['active'];\n }\n\n private _index = -1;\n private _anims: Animation[] = [];\n\n get views(): HTMLElement[] {\n return Array.from(this.children) as HTMLElement[];\n }\n get active(): string {\n return this.str('active', '0');\n }\n set active(v: string) {\n this.setAttribute('active', String(v));\n }\n\n private indexOf(v: string | number): number {\n const views = this.views;\n const byName = views.findIndex((el) => el.dataset.view === String(v));\n if (byName >= 0) return byName;\n const n = Number(v);\n return Number.isInteger(n) && n >= 0 && n < views.length ? n : -1;\n }\n\n changed(): void {\n this.show(this.active);\n }\n\n mount(): void {\n const i = Math.max(0, this.indexOf(this.active));\n this._index = i;\n this.views.forEach((v, j) => this.setVisible(v, j === i));\n }\n\n private setVisible(v: HTMLElement, on: boolean): void {\n v.hidden = !on;\n v.toggleAttribute('inert', !on);\n v.toggleAttribute('data-active', on);\n }\n\n async show(view: string | number): Promise<void> {\n const next = this.indexOf(view);\n const prev = this._index;\n if (next < 0 || next === prev) return;\n const views = this.views;\n const from = views[prev];\n const to = views[next];\n this._index = next;\n const name = to.dataset.view ?? String(next);\n if (this.active !== name && this.active !== String(next)) this.setAttribute('active', name);\n this._anims.splice(0).forEach((a) => a.finish());\n this.setVisible(to, true);\n this.emit('change', { view: to, index: next, name });\n if (!from) return;\n const duration = this.num('duration', 320);\n const effect = this.reduced ? 'fade' : this.str('effect', 'slide');\n const dir = next > prev ? 1 : -1;\n let outF: Keyframe;\n let inF: Keyframe;\n switch (effect) {\n case 'fade':\n outF = { opacity: 0 };\n inF = { opacity: 0 };\n break;\n case 'scale':\n outF = { opacity: 0, transform: 'scale(0.96)' };\n inF = { opacity: 0, transform: 'scale(1.04)' };\n break;\n case 'drill':\n outF = { opacity: 0, transform: `scale(${dir > 0 ? 1.06 : 0.94})` };\n inF = { opacity: 0, transform: `scale(${dir > 0 ? 0.94 : 1.06})` };\n break;\n default:\n outF = { opacity: 0, transform: `translateX(${-dir * 32}px)` };\n inF = { opacity: 0, transform: `translateX(${dir * 48}px)` };\n }\n const neutral = (f: Keyframe): Keyframe => ('transform' in f ? { opacity: 1, transform: 'none' } : { opacity: 1 });\n // Outgoing view stays stacked in the same grid cell while it leaves\n from.setAttribute('data-leaving', '');\n const a = this.motion(from, [neutral(outF), outF], { duration: duration * 0.6, easing: EASE_OUT, fill: 'forwards' });\n const b = this.motion(to, [inF, neutral(inF)], { duration, delay: duration * 0.15, easing: FLUENT_DECELERATE, fill: 'backwards' });\n this._anims = [a, b].filter((x): x is Animation => !!x);\n await Promise.all(this._anims.map((x) => x.finished.catch(() => undefined)));\n from.removeAttribute('data-leaving');\n if (this._index !== prev) this.setVisible(from, false);\n a?.cancel();\n }\n },\n { id: 'view-switch', text: css }\n );\n}\n","import { prefersReducedMotion, EASE_OUT, FLUENT_DECELERATE } from '../base';\n\nexport interface ViewTransitionOptions {\n /**\n * Element to cross-fade when the View Transitions API is missing (default:\n * none — the update is applied without animation).\n */\n fallback?: HTMLElement | null;\n /** Fallback fade duration in ms (default 180 out + 220 in). */\n duration?: number;\n /** View transition types (`document.startViewTransition({ types })`, where supported). */\n types?: string[];\n}\n\n/**\n * Run `update()` (which changes the DOM) inside a view transition:\n * `document.startViewTransition()` where available (Chrome/Edge 111+, so\n * Electron, WebView2 and Tauri on Windows), otherwise a short cross-fade of\n * `options.fallback`. Instant under reduced motion. Resolves when finished.\n *\n * Give elements a `view-transition-name` in CSS for shared-element morphs.\n */\nexport async function viewTransition(update: () => void | Promise<void>, options: ViewTransitionOptions = {}): Promise<void> {\n const doc: any = typeof document !== 'undefined' ? document : null;\n if (!doc || prefersReducedMotion()) {\n await update();\n return;\n }\n if (typeof doc.startViewTransition === 'function') {\n let vt: any;\n try {\n vt = options.types ? doc.startViewTransition({ update, types: options.types }) : doc.startViewTransition(update);\n } catch {\n vt = doc.startViewTransition(update);\n }\n await vt.finished.catch(() => undefined);\n return;\n }\n const el = options.fallback;\n const d = options.duration ?? 200;\n if (!el || typeof el.animate !== 'function') {\n await update();\n return;\n }\n await el.animate([{ opacity: 1 }, { opacity: 0 }], { duration: d * 0.8, easing: 'ease-in', fill: 'forwards' }).finished.catch(() => undefined);\n await update();\n const a = el.animate([{ opacity: 0, transform: 'translateY(6px)' }, { opacity: 1, transform: 'none' }], { duration: d * 1.1, easing: EASE_OUT });\n // remove the forwards fill of the fade-out\n el.getAnimations?.().forEach((x) => x !== a && x.cancel());\n await a.finished.catch(() => undefined);\n}\n\nexport interface FlipOptions {\n duration?: number;\n easing?: string;\n /** Fade/scale in elements that did not exist before (default true). */\n animateEnter?: boolean;\n}\n\ntype Targets = Element | Iterable<Element> | ArrayLike<Element>;\nconst list = (t: Targets): HTMLElement[] =>\n (t instanceof Element ? Array.from(t.children) : Array.from(t as ArrayLike<Element>)) as HTMLElement[];\n\n/**\n * FLIP animation for layout changes (list reorder, filter, grid resize):\n * measures `targets` (an element's children, or a list), runs `mutate()`,\n * then animates each element from its old position to its new one with\n * transforms only. Elements added by `mutate()` fade in.\n *\n * ```js\n * await flip(list, () => list.append(...shuffled));\n * ```\n */\nexport async function flip(targets: Targets, mutate: () => void | Promise<void>, options: FlipOptions = {}): Promise<void> {\n const before = new Map(list(targets).map((el) => [el, el.getBoundingClientRect()]));\n await mutate();\n if (prefersReducedMotion()) return;\n const after = list(targets);\n const duration = options.duration ?? 420;\n const easing = options.easing ?? FLUENT_DECELERATE;\n const anims: Animation[] = [];\n // Read all, then write all\n const rects = after.map((el) => el.getBoundingClientRect());\n after.forEach((el, i) => {\n if (typeof el.animate !== 'function') return;\n const first = before.get(el);\n const last = rects[i];\n if (!first) {\n if (options.animateEnter !== false) anims.push(el.animate([{ opacity: 0, transform: 'scale(0.9)' }, { opacity: 1, transform: 'none' }], { duration, easing }));\n return;\n }\n const dx = first.left - last.left;\n const dy = first.top - last.top;\n const sx = last.width ? first.width / last.width : 1;\n const sy = last.height ? first.height / last.height : 1;\n if (Math.abs(dx) < 0.5 && Math.abs(dy) < 0.5 && Math.abs(sx - 1) < 0.01 && Math.abs(sy - 1) < 0.01) return;\n anims.push(\n el.animate(\n [{ transformOrigin: '0 0', transform: `translate(${dx}px, ${dy}px) scale(${sx}, ${sy})` }, { transformOrigin: '0 0', transform: 'none' }],\n { duration, easing }\n )\n );\n });\n await Promise.all(anims.map((a) => a.finished.catch(() => undefined)));\n}\n\nexport interface ConnectedOptions {\n duration?: number;\n easing?: string;\n /** Hide `from` while the animation runs (default true). */\n hideSource?: boolean;\n}\n\n/**\n * Connected (shared-element) animation, like WinUI's\n * `ConnectedAnimationService`: `to` flies from the position and size of\n * `from` into its own place (e.g. a thumbnail opening into a detail view).\n * Call it right after `to` is shown. Transforms only.\n */\nexport async function connectedAnimation(from: Element, to: HTMLElement, options: ConnectedOptions = {}): Promise<void> {\n if (prefersReducedMotion() || typeof to.animate !== 'function') return;\n const a = from.getBoundingClientRect();\n const b = to.getBoundingClientRect();\n if (!b.width || !b.height) return;\n const hide = options.hideSource !== false && from instanceof HTMLElement;\n const prev = hide ? (from as HTMLElement).style.visibility : '';\n if (hide) (from as HTMLElement).style.visibility = 'hidden';\n const anim = to.animate(\n [\n { transformOrigin: '0 0', transform: `translate(${a.left - b.left}px, ${a.top - b.top}px) scale(${a.width / b.width}, ${a.height / b.height})` },\n { transformOrigin: '0 0', transform: 'none' },\n ],\n { duration: options.duration ?? 480, easing: options.easing ?? FLUENT_DECELERATE }\n );\n await anim.finished.catch(() => undefined);\n if (hide) (from as HTMLElement).style.visibility = prev;\n}\n","/**\n * use-scroll-animate/components/transitions — view & layout transitions.\n * `<usa-dialog>`, `<usa-accordion>`, `<usa-flip-list>`, `<usa-view-switch>`\n * and the `viewTransition()`, `flip()`, `connectedAnimation()` helpers.\n */\nimport { defineDialog, type UsaDialogElement } from './dialog';\nimport { defineAccordion, type UsaAccordionElement } from './accordion';\nimport { defineFlipList, type UsaFlipListElement } from './flip-list';\nimport { defineViewSwitch, type UsaViewSwitchElement } from './view-switch';\n\nexport { defineDialog, defineAccordion, defineFlipList, defineViewSwitch };\nexport { viewTransition, flip, connectedAnimation } from './helpers';\nexport type { ViewTransitionOptions, FlipOptions, ConnectedOptions } from './helpers';\nexport type { DialogVariant } from './dialog';\nexport type { UsaDialogElement, UsaAccordionElement, UsaFlipListElement, UsaViewSwitchElement };\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 defineTransitionComponents(): void {\n defineDialog();\n defineAccordion();\n defineFlipList();\n defineViewSwitch();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-dialog': UsaDialogElement;\n 'usa-accordion': UsaAccordionElement;\n 'usa-flip-list': UsaFlipListElement;\n 'usa-view-switch': UsaViewSwitchElement;\n }\n}\n"],"names":["defineElement","shadowStyles","EASE_OUT","FLUENT_DECELERATE","css","prefersReducedMotion"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transitions.cjs","sources":["../../src/components/transitions/dialog.ts","../../src/components/transitions/accordion.ts","../../src/components/transitions/flip-list.ts","../../src/components/transitions/view-switch.ts","../../src/components/transitions/helpers.ts","../../src/components/transitions/index.ts"],"sourcesContent":["import { kindOf, defineElement, shadowStyles, EASE_OUT, FLUENT_DECELERATE, type UsaElement } from '../base';\nimport shadowCss from './dialog.shadow.css?raw';\nimport css from './dialog.css?raw';\n\nexport type DialogVariant = 'modal' | 'drawer-start' | 'drawer-end' | 'drawer-bottom' | 'sheet';\n\n/**\n * `<usa-dialog>` — an animated modal or drawer built on the native\n * `<dialog>` (top layer, focus trapping, inert page, Esc to close). Its\n * children are slotted into the panel (they stay in the light DOM, so\n * React / Vue / Svelte keep owning them). Style with `::part(panel)`,\n * `::part(backdrop)` and the `--usa-dialog-*` custom properties.\n *\n * Attributes: `open` (reflects; set/remove to open/close), `variant`\n * (`modal` default — Fluent scale + fade; `drawer-start` / `drawer-end`\n * slide from the side, `drawer-bottom` / `sheet` from below), `label`\n * (accessible name), `no-backdrop-close`, `no-esc`. Elements inside\n * with `data-close` close it. Events: `usa:open`, `usa:close` (cancelable\n * `usa:beforeclose`). Reduced motion: fade only.\n */\nexport interface UsaDialogElement extends UsaElement {\n open: boolean;\n show(): Promise<void>;\n close(returnValue?: string): Promise<void>;\n readonly dialog: HTMLDialogElement | null;\n returnValue: string;\n}\n\nconst FROM: Record<string, string> = {\n modal: 'scale(0.94)',\n 'drawer-start': 'translateX(-100%)',\n 'drawer-end': 'translateX(100%)',\n 'drawer-bottom': 'translateY(100%)',\n sheet: 'translateY(40px)',\n};\n\nexport function defineDialog(tag = 'usa-dialog'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaDialog extends Base {\n static get observedAttributes(): string[] {\n return ['open', 'kind', 'variant', 'label'];\n }\n\n private _dialog: HTMLDialogElement | null = null;\n private _panel: HTMLElement | null = null;\n private _backdrop: HTMLElement | null = null;\n private _busy: Promise<void> | null = null;\n private _syncing = false;\n returnValue = '';\n\n get dialog(): HTMLDialogElement | null {\n return this._dialog;\n }\n get open(): boolean {\n return this.hasAttribute('open');\n }\n set open(v: boolean) {\n this.toggleAttribute('open', !!v);\n }\n\n private get variant(): string {\n return kindOf(this, FROM, 'modal');\n }\n\n changed(name: string): void {\n if (name === 'open') {\n if (this._syncing) return;\n if (this.open) this.show();\n else this.close();\n } else this.syncAttrs();\n }\n\n private syncAttrs(): void {\n if (!this._dialog) return;\n this._dialog.setAttribute('data-variant', this.variant);\n this._dialog.setAttribute('aria-modal', 'true');\n const label = this.getAttribute('label');\n if (label) this._dialog.setAttribute('aria-label', label);\n }\n\n mount(): void {\n if (!this._dialog) {\n const root = this.shadowRoot || this.attachShadow({ mode: 'open' });\n root.innerHTML = '<dialog part=\"dialog\"><div part=\"backdrop\" aria-hidden=\"true\"></div><div part=\"panel\"><slot></slot></div></dialog>';\n shadowStyles(root, shadowCss);\n this._dialog = root.querySelector('dialog');\n this._backdrop = root.querySelector('[part=backdrop]');\n this._panel = root.querySelector('[part=panel]');\n }\n this.syncAttrs();\n const dlg = this._dialog!;\n this.listen(dlg, 'cancel', (e: Event) => {\n e.preventDefault();\n if (!this.flag('no-esc')) this.close('cancel');\n });\n this.listen(this._backdrop!, 'click', () => !this.flag('no-backdrop-close') && this.close('backdrop'));\n this.listen(this, 'click', (e: Event) => {\n const t = (e.target as Element).closest?.('[data-close]');\n if (t && this.contains(t)) this.close((t as HTMLElement).getAttribute('data-close') || 'close');\n });\n if (this.open && !dlg.open) this.show();\n }\n\n unmount(): void {\n if (this._dialog?.open) this._dialog.close();\n }\n\n private setOpenAttr(on: boolean): void {\n this._syncing = true;\n this.toggleAttribute('open', on);\n this._syncing = false;\n }\n\n async show(): Promise<void> {\n await this._busy;\n const dlg = this._dialog;\n if (!dlg) {\n this.setOpenAttr(true); // opens on connect\n return;\n }\n if (dlg.open) return;\n this.setOpenAttr(true);\n try {\n if (typeof dlg.showModal === 'function') dlg.showModal();\n else dlg.setAttribute('open', '');\n } catch {\n dlg.setAttribute('open', '');\n }\n this.emit('open');\n if (this.reduced) {\n await this.animate2([{ opacity: 0 }, { opacity: 1 }], [{ opacity: 0 }, { opacity: 1 }], 160, EASE_OUT);\n return;\n }\n await this.animate2(\n [{ opacity: 0, transform: FROM[this.variant] }, { opacity: 1, transform: 'none' }],\n [{ opacity: 0 }, { opacity: 1 }],\n this.variant === 'modal' ? 260 : 360,\n FLUENT_DECELERATE\n );\n }\n\n async close(returnValue = ''): Promise<void> {\n await this._busy;\n const dlg = this._dialog;\n if (!dlg || !dlg.open) {\n this.setOpenAttr(false);\n return;\n }\n if (!this.emit('beforeclose', { returnValue })) {\n this.setOpenAttr(true);\n return;\n }\n this.returnValue = returnValue;\n this._busy = (async () => {\n const panelTo = this.reduced ? { opacity: 0 } : { opacity: 0, transform: FROM[this.variant] };\n const panelFrom = this.reduced ? { opacity: 1 } : { opacity: 1, transform: 'none' };\n await this.animate2([panelFrom, panelTo], [{ opacity: 1 }, { opacity: 0 }], this.reduced ? 120 : 200, 'cubic-bezier(0.7, 0, 0.84, 0)', 'forwards');\n try {\n if (typeof dlg.close === 'function') dlg.close(returnValue);\n else dlg.removeAttribute('open');\n } catch {\n dlg.removeAttribute('open');\n }\n dlg.removeAttribute('open');\n this._panel?.getAnimations?.().forEach((a) => a.cancel());\n this._backdrop?.getAnimations?.().forEach((a) => a.cancel());\n this.setOpenAttr(false);\n this.emit('close', { returnValue });\n })();\n await this._busy;\n this._busy = null;\n }\n\n private animate2(panel: Keyframe[], backdrop: Keyframe[], duration: number, easing: string, fill: FillMode = 'none'): Promise<void> {\n const a = this._panel ? this.motion(this._panel, panel, { duration, easing, fill }) : null;\n const b = this._backdrop ? this.motion(this._backdrop, backdrop, { duration, easing: 'linear', fill }) : null;\n return Promise.all([a?.finished, b?.finished].map((p) => p?.catch(() => undefined))).then(() => undefined);\n }\n },\n { id: 'dialog', text: css }\n );\n}\n","import { defineElement, EASE_OUT, type UsaElement } from '../base';\nimport css from './accordion.css?raw';\n\n/**\n * `<usa-accordion>` — smooth expand / collapse for the native `<details>`\n * elements inside it (keeps their semantics, keyboard support and\n * find-in-page, and adds no wrapper elements, so framework-rendered content\n * is left alone). Only one stays open unless `multiple` is set.\n *\n * Attributes: `multiple`, `duration` (ms, 300). Event: `usa:toggle`\n * (`detail.details`, `detail.open`). Reduced motion: instant.\n * Heights are measured once per toggle and animated on the `<details>`.\n */\nexport interface UsaAccordionElement extends UsaElement {\n readonly items: HTMLDetailsElement[];\n toggleItem(details: HTMLDetailsElement, open?: boolean): Promise<void>;\n}\n\nexport function defineAccordion(tag = 'usa-accordion'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaAccordion extends Base {\n static get observedAttributes(): string[] {\n return [];\n }\n\n private _running = new WeakMap<HTMLDetailsElement, Animation>();\n\n get items(): HTMLDetailsElement[] {\n return Array.from(this.children).filter((c): c is HTMLDetailsElement => c.tagName === 'DETAILS');\n }\n\n mount(): void {\n this.listen(this, 'click', (e: MouseEvent) => {\n const summary = (e.target as Element).closest?.('summary');\n const d = summary?.parentElement;\n if (!summary || !d || d.tagName !== 'DETAILS' || d.parentElement !== this) return;\n e.preventDefault();\n this.toggleItem(d as HTMLDetailsElement);\n });\n }\n\n /** Height of `d` when closed: its summary plus its own padding and border. */\n private closedHeight(d: HTMLDetailsElement): number {\n const summary = d.querySelector(':scope > summary');\n const cs = typeof getComputedStyle === 'function' ? getComputedStyle(d) : null;\n const extra = cs\n ? ['paddingTop', 'paddingBottom', 'borderTopWidth', 'borderBottomWidth'].reduce((n, k) => n + (parseFloat((cs as any)[k]) || 0), 0)\n : 0;\n return (summary ? summary.getBoundingClientRect().height : 0) + extra;\n }\n\n async toggleItem(d: HTMLDetailsElement, open = !d.open || d.hasAttribute('data-closing')): Promise<void> {\n if (open && !this.flag('multiple')) this.items.forEach((o) => o !== d && o.open && this.toggleItem(o, false));\n this._running.get(d)?.cancel();\n this._running.delete(d);\n const duration = this.reduced ? 0 : this.num('duration', 300);\n const startH = d.getBoundingClientRect().height;\n if (open) {\n d.removeAttribute('data-closing');\n d.open = true;\n }\n this.emit('toggle', { details: d, open });\n if (!duration || typeof d.animate !== 'function') {\n if (!open) d.open = false;\n return;\n }\n const endH = open ? d.getBoundingClientRect().height : this.closedHeight(d);\n if (!open) d.setAttribute('data-closing', '');\n d.style.overflow = 'hidden';\n const a = d.animate([{ height: `${startH}px` }, { height: `${endH}px` }], { duration, easing: EASE_OUT });\n this._running.set(d, a);\n await a.finished.catch(() => undefined);\n if (this._running.get(d) !== a) return;\n this._running.delete(d);\n d.style.overflow = '';\n if (!open) {\n d.open = false;\n d.removeAttribute('data-closing');\n }\n }\n },\n { id: 'accordion', text: css }\n );\n}\n","import { defineElement, FLUENT_DECELERATE, type UsaElement } from '../base';\nimport css from './flip-list.css?raw';\n\n/**\n * `<usa-flip-list>` — animates its children to their new places whenever\n * they are added, removed or reordered (FLIP: transforms only). Works with\n * any rendering: plain DOM, React keyed lists, Vue `v-for`, Svelte `{#each}`.\n *\n * Attributes: `duration` (ms, 420), `easing`, `disabled`.\n * Method: `flip(mutate)` for explicit changes (also measures resizes).\n * Reduced motion: no animation.\n */\nexport interface UsaFlipListElement extends UsaElement {\n flip(mutate: () => void | Promise<void>): Promise<void>;\n}\n\nexport function defineFlipList(tag = 'usa-flip-list'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaFlipList extends Base {\n static get observedAttributes(): string[] {\n return [];\n }\n\n /** Child positions relative to the host, from the last layout we saw. */\n private _pos = new WeakMap<Element, { x: number; y: number }>();\n private _manual = false;\n\n private snapshot(): void {\n const host = this.getBoundingClientRect();\n for (const el of Array.from(this.children)) {\n const r = el.getBoundingClientRect();\n this._pos.set(el, { x: r.left - host.left, y: r.top - host.top });\n }\n }\n\n mount(): void {\n this.snapshot();\n if (typeof MutationObserver !== 'undefined') {\n const mo = new MutationObserver(() => {\n if (!this._manual) this.animateFrom(this._pos);\n });\n mo.observe(this, { childList: true });\n this.onCleanup(() => mo.disconnect());\n }\n if (typeof ResizeObserver !== 'undefined') {\n const ro = new ResizeObserver(() => this.snapshot());\n ro.observe(this);\n this.onCleanup(() => ro.disconnect());\n }\n }\n\n private animateFrom(prev: WeakMap<Element, { x: number; y: number }>): Promise<void> {\n const off = this.reduced || this.flag('disabled');\n const host = this.getBoundingClientRect();\n const kids = Array.from(this.children) as HTMLElement[];\n const now = kids.map((el) => {\n const r = el.getBoundingClientRect();\n return { x: r.left - host.left, y: r.top - host.top };\n });\n const anims: Promise<unknown>[] = [];\n const duration = this.num('duration', 420);\n const easing = this.str('easing', FLUENT_DECELERATE);\n kids.forEach((el, i) => {\n const before = prev.get(el);\n this._pos.set(el, now[i]);\n if (off || typeof el.animate !== 'function') return;\n if (!before) {\n anims.push(el.animate([{ opacity: 0, transform: 'scale(0.92)' }, { opacity: 1, transform: 'none' }], { duration, easing }).finished.catch(() => 0));\n return;\n }\n const dx = before.x - now[i].x;\n const dy = before.y - now[i].y;\n if (Math.abs(dx) < 0.5 && Math.abs(dy) < 0.5) return;\n anims.push(el.animate([{ transform: `translate(${dx}px, ${dy}px)` }, { transform: 'none' }], { duration, easing, composite: 'add' } as KeyframeAnimationOptions).finished.catch(() => 0));\n });\n return Promise.all(anims).then(() => undefined);\n }\n\n async flip(mutate: () => void | Promise<void>): Promise<void> {\n this.snapshot();\n const prev = this._pos;\n this._pos = new WeakMap();\n // Copy the snapshot so the observer does not overwrite it mid-mutation\n for (const el of Array.from(this.children)) {\n const p = prev.get(el);\n if (p) this._pos.set(el, p);\n }\n this._manual = true;\n try {\n await mutate();\n } finally {\n this._manual = false;\n }\n await this.animateFrom(prev);\n }\n },\n { id: 'flip-list', text: css }\n );\n}\n","import { defineElement, EASE_OUT, FLUENT_DECELERATE, type UsaElement } from '../base';\nimport css from './view-switch.css?raw';\n\n/**\n * `<usa-view-switch>` — shows one of its children at a time (tabs, wizard\n * steps, app pages) and animates between them. Children are views; name\n * them with `data-view`, or address them by index.\n *\n * Attributes: `active` (view name or index, default the first),\n * `effect` (`fade` | `slide` (default, direction-aware — Fluent \"page\n * transition\") | `scale` | `drill`), `duration` (ms, 320). Inactive views\n * get `hidden` + `inert`. Event: `usa:change` (`detail.view`,\n * `detail.index`). Reduced motion: a quick fade.\n */\nexport interface UsaViewSwitchElement extends UsaElement {\n active: string;\n readonly views: HTMLElement[];\n show(view: string | number): Promise<void>;\n}\n\nexport function defineViewSwitch(tag = 'usa-view-switch'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaViewSwitch extends Base {\n static get observedAttributes(): string[] {\n return ['active'];\n }\n\n private _index = -1;\n private _anims: Animation[] = [];\n\n get views(): HTMLElement[] {\n return Array.from(this.children) as HTMLElement[];\n }\n get active(): string {\n return this.str('active', '0');\n }\n set active(v: string) {\n this.setAttribute('active', String(v));\n }\n\n private indexOf(v: string | number): number {\n const views = this.views;\n const byName = views.findIndex((el) => el.dataset.view === String(v));\n if (byName >= 0) return byName;\n const n = Number(v);\n return Number.isInteger(n) && n >= 0 && n < views.length ? n : -1;\n }\n\n changed(): void {\n this.show(this.active);\n }\n\n mount(): void {\n const i = Math.max(0, this.indexOf(this.active));\n this._index = i;\n this.views.forEach((v, j) => this.setVisible(v, j === i));\n }\n\n private setVisible(v: HTMLElement, on: boolean): void {\n v.hidden = !on;\n v.toggleAttribute('inert', !on);\n v.toggleAttribute('data-active', on);\n }\n\n async show(view: string | number): Promise<void> {\n const next = this.indexOf(view);\n const prev = this._index;\n if (next < 0 || next === prev) return;\n const views = this.views;\n const from = views[prev];\n const to = views[next];\n this._index = next;\n const name = to.dataset.view ?? String(next);\n if (this.active !== name && this.active !== String(next)) this.setAttribute('active', name);\n this._anims.splice(0).forEach((a) => a.finish());\n this.setVisible(to, true);\n this.emit('change', { view: to, index: next, name });\n if (!from) return;\n const duration = this.num('duration', 320);\n const effect = this.reduced ? 'fade' : this.str('effect', 'slide');\n const dir = next > prev ? 1 : -1;\n let outF: Keyframe;\n let inF: Keyframe;\n switch (effect) {\n case 'fade':\n outF = { opacity: 0 };\n inF = { opacity: 0 };\n break;\n case 'scale':\n outF = { opacity: 0, transform: 'scale(0.96)' };\n inF = { opacity: 0, transform: 'scale(1.04)' };\n break;\n case 'drill':\n outF = { opacity: 0, transform: `scale(${dir > 0 ? 1.06 : 0.94})` };\n inF = { opacity: 0, transform: `scale(${dir > 0 ? 0.94 : 1.06})` };\n break;\n default:\n outF = { opacity: 0, transform: `translateX(${-dir * 32}px)` };\n inF = { opacity: 0, transform: `translateX(${dir * 48}px)` };\n }\n const neutral = (f: Keyframe): Keyframe => ('transform' in f ? { opacity: 1, transform: 'none' } : { opacity: 1 });\n // Outgoing view stays stacked in the same grid cell while it leaves\n from.setAttribute('data-leaving', '');\n const a = this.motion(from, [neutral(outF), outF], { duration: duration * 0.6, easing: EASE_OUT, fill: 'forwards' });\n const b = this.motion(to, [inF, neutral(inF)], { duration, delay: duration * 0.15, easing: FLUENT_DECELERATE, fill: 'backwards' });\n this._anims = [a, b].filter((x): x is Animation => !!x);\n await Promise.all(this._anims.map((x) => x.finished.catch(() => undefined)));\n from.removeAttribute('data-leaving');\n if (this._index !== prev) this.setVisible(from, false);\n a?.cancel();\n }\n },\n { id: 'view-switch', text: css }\n );\n}\n","import { prefersReducedMotion, EASE_OUT, FLUENT_DECELERATE } from '../base';\n\nexport interface ViewTransitionOptions {\n /**\n * Element to cross-fade when the View Transitions API is missing (default:\n * none — the update is applied without animation).\n */\n fallback?: HTMLElement | null;\n /** Fallback fade duration in ms (default 180 out + 220 in). */\n duration?: number;\n /** View transition types (`document.startViewTransition({ types })`, where supported). */\n types?: string[];\n}\n\n/**\n * Run `update()` (which changes the DOM) inside a view transition:\n * `document.startViewTransition()` where available (Chrome/Edge 111+, so\n * Electron, WebView2 and Tauri on Windows), otherwise a short cross-fade of\n * `options.fallback`. Instant under reduced motion. Resolves when finished.\n *\n * Give elements a `view-transition-name` in CSS for shared-element morphs.\n */\nexport async function viewTransition(update: () => void | Promise<void>, options: ViewTransitionOptions = {}): Promise<void> {\n const doc: any = typeof document !== 'undefined' ? document : null;\n if (!doc || prefersReducedMotion()) {\n await update();\n return;\n }\n if (typeof doc.startViewTransition === 'function') {\n let vt: any;\n try {\n vt = options.types ? doc.startViewTransition({ update, types: options.types }) : doc.startViewTransition(update);\n } catch {\n vt = doc.startViewTransition(update);\n }\n await vt.finished.catch(() => undefined);\n return;\n }\n const el = options.fallback;\n const d = options.duration ?? 200;\n if (!el || typeof el.animate !== 'function') {\n await update();\n return;\n }\n await el.animate([{ opacity: 1 }, { opacity: 0 }], { duration: d * 0.8, easing: 'ease-in', fill: 'forwards' }).finished.catch(() => undefined);\n await update();\n const a = el.animate([{ opacity: 0, transform: 'translateY(6px)' }, { opacity: 1, transform: 'none' }], { duration: d * 1.1, easing: EASE_OUT });\n // remove the forwards fill of the fade-out\n el.getAnimations?.().forEach((x) => x !== a && x.cancel());\n await a.finished.catch(() => undefined);\n}\n\nexport interface FlipOptions {\n duration?: number;\n easing?: string;\n /** Fade/scale in elements that did not exist before (default true). */\n animateEnter?: boolean;\n}\n\ntype Targets = Element | Iterable<Element> | ArrayLike<Element>;\nconst list = (t: Targets): HTMLElement[] =>\n (t instanceof Element ? Array.from(t.children) : Array.from(t as ArrayLike<Element>)) as HTMLElement[];\n\n/**\n * FLIP animation for layout changes (list reorder, filter, grid resize):\n * measures `targets` (an element's children, or a list), runs `mutate()`,\n * then animates each element from its old position to its new one with\n * transforms only. Elements added by `mutate()` fade in.\n *\n * ```js\n * await flip(list, () => list.append(...shuffled));\n * ```\n */\nexport async function flip(targets: Targets, mutate: () => void | Promise<void>, options: FlipOptions = {}): Promise<void> {\n const before = new Map(list(targets).map((el) => [el, el.getBoundingClientRect()]));\n await mutate();\n if (prefersReducedMotion()) return;\n const after = list(targets);\n const duration = options.duration ?? 420;\n const easing = options.easing ?? FLUENT_DECELERATE;\n const anims: Animation[] = [];\n // Read all, then write all\n const rects = after.map((el) => el.getBoundingClientRect());\n after.forEach((el, i) => {\n if (typeof el.animate !== 'function') return;\n const first = before.get(el);\n const last = rects[i];\n if (!first) {\n if (options.animateEnter !== false) anims.push(el.animate([{ opacity: 0, transform: 'scale(0.9)' }, { opacity: 1, transform: 'none' }], { duration, easing }));\n return;\n }\n const dx = first.left - last.left;\n const dy = first.top - last.top;\n const sx = last.width ? first.width / last.width : 1;\n const sy = last.height ? first.height / last.height : 1;\n if (Math.abs(dx) < 0.5 && Math.abs(dy) < 0.5 && Math.abs(sx - 1) < 0.01 && Math.abs(sy - 1) < 0.01) return;\n anims.push(\n el.animate(\n [{ transformOrigin: '0 0', transform: `translate(${dx}px, ${dy}px) scale(${sx}, ${sy})` }, { transformOrigin: '0 0', transform: 'none' }],\n { duration, easing }\n )\n );\n });\n await Promise.all(anims.map((a) => a.finished.catch(() => undefined)));\n}\n\nexport interface ConnectedOptions {\n duration?: number;\n easing?: string;\n /** Hide `from` while the animation runs (default true). */\n hideSource?: boolean;\n}\n\n/**\n * Connected (shared-element) animation, like WinUI's\n * `ConnectedAnimationService`: `to` flies from the position and size of\n * `from` into its own place (e.g. a thumbnail opening into a detail view).\n * Call it right after `to` is shown. Transforms only.\n */\nexport async function connectedAnimation(from: Element, to: HTMLElement, options: ConnectedOptions = {}): Promise<void> {\n if (prefersReducedMotion() || typeof to.animate !== 'function') return;\n const a = from.getBoundingClientRect();\n const b = to.getBoundingClientRect();\n if (!b.width || !b.height) return;\n const hide = options.hideSource !== false && from instanceof HTMLElement;\n const prev = hide ? (from as HTMLElement).style.visibility : '';\n if (hide) (from as HTMLElement).style.visibility = 'hidden';\n const anim = to.animate(\n [\n { transformOrigin: '0 0', transform: `translate(${a.left - b.left}px, ${a.top - b.top}px) scale(${a.width / b.width}, ${a.height / b.height})` },\n { transformOrigin: '0 0', transform: 'none' },\n ],\n { duration: options.duration ?? 480, easing: options.easing ?? FLUENT_DECELERATE }\n );\n await anim.finished.catch(() => undefined);\n if (hide) (from as HTMLElement).style.visibility = prev;\n}\n","/**\n * use-scroll-animate/components/transitions — view & layout transitions.\n * `<usa-dialog>`, `<usa-accordion>`, `<usa-flip-list>`, `<usa-view-switch>`\n * and the `viewTransition()`, `flip()`, `connectedAnimation()` helpers.\n */\nimport { defineDialog, type UsaDialogElement } from './dialog';\nimport { defineAccordion, type UsaAccordionElement } from './accordion';\nimport { defineFlipList, type UsaFlipListElement } from './flip-list';\nimport { defineViewSwitch, type UsaViewSwitchElement } from './view-switch';\n\nexport { defineDialog, defineAccordion, defineFlipList, defineViewSwitch };\nexport { viewTransition, flip, connectedAnimation } from './helpers';\nexport type { ViewTransitionOptions, FlipOptions, ConnectedOptions } from './helpers';\nexport type { DialogVariant } from './dialog';\nexport type { UsaDialogElement, UsaAccordionElement, UsaFlipListElement, UsaViewSwitchElement };\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 defineTransitionComponents(): void {\n defineDialog();\n defineAccordion();\n defineFlipList();\n defineViewSwitch();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-dialog': UsaDialogElement;\n 'usa-accordion': UsaAccordionElement;\n 'usa-flip-list': UsaFlipListElement;\n 'usa-view-switch': UsaViewSwitchElement;\n }\n}\n"],"names":["defineElement","kindOf","shadowStyles","EASE_OUT","FLUENT_DECELERATE","css","prefersReducedMotion"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { a as configureComponents } from '../chunks/base-
|
|
1
|
+
import { f as defineElement, k as kindOf, s as shadowStyles, i as EASE_OUT, F as FLUENT_DECELERATE, p as prefersReducedMotion } from '../chunks/base-CB8gChoe.js';
|
|
2
|
+
export { a as configureComponents } from '../chunks/base-CB8gChoe.js';
|
|
3
3
|
|
|
4
4
|
var shadowCss = ":host{display:contents}dialog{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;color:inherit;overflow:hidden}dialog:not([open]){display:none}dialog::backdrop{background:transparent}[part=\"backdrop\"]{position:absolute;inset:0;background:var(--usa-dialog-backdrop,rgb(0 0 0 / 0.42))}[part=\"panel\"]{position:absolute;left:50%;top:50%;translate:-50% -50%;box-sizing:border-box;width:min(var(--usa-dialog-width,480px),calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;padding:var(--usa-dialog-padding,24px);border-radius:var(--usa-dialog-radius,12px);background:var(--usa-dialog-bg,Canvas);color:var(--usa-dialog-fg,CanvasText);box-shadow:0 32px 64px -12px rgb(0 0 0 / 0.45),0 0 0 1px rgb(127 127 127 / 0.18)}dialog[data-variant^=\"drawer\"] [part=\"panel\"]{top:0;bottom:0;translate:none;max-height:none;height:100%;border-radius:0;width:min(var(--usa-dialog-width,380px),88vw)}dialog[data-variant=\"drawer-start\"] [part=\"panel\"]{left:0}dialog[data-variant=\"drawer-end\"] [part=\"panel\"]{left:auto;right:0}dialog[data-variant=\"drawer-bottom\"] [part=\"panel\"],dialog[data-variant=\"sheet\"] [part=\"panel\"]{top:auto;bottom:0;left:0;right:0;translate:none;width:100%;height:auto;max-height:85vh;border-radius:var(--usa-dialog-radius,16px) var(--usa-dialog-radius,16px) 0 0}dialog[data-variant=\"sheet\"] [part=\"panel\"]{left:50%;translate:-50% 0;width:min(var(--usa-dialog-width,560px),100vw)}";
|
|
5
5
|
|
|
@@ -24,7 +24,7 @@ function defineDialog(tag = 'usa-dialog') {
|
|
|
24
24
|
this.returnValue = '';
|
|
25
25
|
}
|
|
26
26
|
static get observedAttributes() {
|
|
27
|
-
return ['open', 'variant', 'label'];
|
|
27
|
+
return ['open', 'kind', 'variant', 'label'];
|
|
28
28
|
}
|
|
29
29
|
get dialog() {
|
|
30
30
|
return this._dialog;
|
|
@@ -36,8 +36,7 @@ function defineDialog(tag = 'usa-dialog') {
|
|
|
36
36
|
this.toggleAttribute('open', !!v);
|
|
37
37
|
}
|
|
38
38
|
get variant() {
|
|
39
|
-
|
|
40
|
-
return FROM[v] ? v : 'modal';
|
|
39
|
+
return kindOf(this, FROM, 'modal');
|
|
41
40
|
}
|
|
42
41
|
changed(name) {
|
|
43
42
|
if (name === 'open') {
|