use-scroll-animate 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cards.js","sources":["../../src/components/cards/card.ts","../../src/components/cards/card-stack.ts","../../src/components/cards/sticky-stack.ts","../../src/components/cards/carousel-3d.ts","../../src/components/cards/index.ts"],"sourcesContent":["import { defineElement, raf, caf, clamp, EASE_OUT, type UsaElement } from '../base';\nimport { springEasing } from '../physics/spring';\nimport css from './card.css?raw';\n\nexport const CARD_EFFECTS = ['flip', 'holo', 'glass', 'border-glow', 'conic-border', 'lift', 'spotlight', 'sheen', 'parallax-layers', 'expand'] as const;\nexport type CardEffect = (typeof CARD_EFFECTS)[number];\n\n/** Effects that follow the pointer (they share one rAF-throttled tracker). */\nconst TRACKING = new Set(['holo', 'border-glow', 'spotlight', 'parallax-layers', 'lift']);\n\n/**\n * `<usa-card>` — card effects, combinable: `effect=\"lift sheen\"`.\n *\n * - `flip` — front/back (`[data-front]` / `[data-back]` children) flip on\n * hover or `trigger=\"click\"`, `axis=\"y\"` (default, horizontal flip) or `x`.\n * - `holo` — holographic foil that shifts with the pointer.\n * - `glass` — frosted glass surface (backdrop blur).\n * - `border-glow` — a glow on the border that follows the pointer.\n * - `conic-border` — a rotating conic-gradient border.\n * - `lift` — rises with a deeper shadow and a slight pointer tilt.\n * - `spotlight` — a soft light that follows the pointer.\n * - `sheen` — a light sweep across the card on hover / focus.\n * - `parallax-layers` — children with `data-depth=\"0.2…1\"` move at different depths.\n * - `expand` — click to grow into a full detail view (`[data-detail]`\n * content is shown), FLIP + spring; Esc, `[data-close]` or the backdrop closes.\n *\n * Attributes: `effect`, `axis`, `trigger`, `depth` (parallax px, 16),\n * `color` (glow / spotlight colour), `flipped`, `expanded`, `disabled`.\n * CSS variables: `--usa-card-x/-y` (pointer %, 0–100), `--usa-card-nx/-ny` (−1…1).\n * Methods: `flip(force?)`, `expand()`, `collapse()`. Events: `usa:flip`,\n * `usa:expand`, `usa:collapse`. Reduced motion: no tilt / parallax / sweep;\n * flips and expansions cross-fade.\n */\nexport interface UsaCardElement extends UsaElement {\n readonly effects: string[];\n flipped: boolean;\n readonly expanded: boolean;\n flip(force?: boolean): void;\n expand(): Promise<void>;\n collapse(): Promise<void>;\n}\n\nexport function defineCard(tag = 'usa-card'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCard extends Base {\n static get observedAttributes(): string[] {\n return ['effect', 'trigger', 'disabled'];\n }\n\n private _frame = 0;\n private _spacer: HTMLElement | null = null;\n private _backdrop: HTMLElement | null = null;\n private _busy = false;\n\n get effects(): string[] {\n return this.str('effect', 'lift').split(/[\\s,]+/).filter(Boolean);\n }\n private has(e: string): boolean {\n return this.effects.includes(e);\n }\n get flipped(): boolean {\n return this.flag('flipped');\n }\n set flipped(v: boolean) {\n this.setFlag('flipped', v);\n }\n get expanded(): boolean {\n return this.flag('expanded');\n }\n\n mount(): void {\n if (this.flag('disabled')) return;\n const color = this.str('color');\n if (color) this.style.setProperty('--usa-card-glow', color);\n if (this.has('sheen') && !this.querySelector(':scope > .usa-card-sheen')) this.append(deco('usa-card-sheen'));\n if (this.has('holo') && !this.querySelector(':scope > .usa-card-holo')) this.append(deco('usa-card-holo'));\n if (this.has('flip')) {\n const click = this.str('trigger', 'hover') === 'click';\n if (click) {\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('role', this.getAttribute('role') || 'button');\n this.setAttribute('aria-pressed', String(this.flipped));\n this.listen(this, 'click', (e: MouseEvent) => !interactive(e.target, this) && this.flip());\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if ((e.key === 'Enter' || e.key === ' ') && e.target === this) {\n e.preventDefault();\n this.flip();\n }\n });\n }\n this.setBackHidden();\n }\n if (this.has('expand')) {\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('aria-expanded', String(this.expanded));\n this.listen(this, 'click', (e: MouseEvent) => {\n const t = e.target as Element;\n if (t.closest?.('[data-close]')) {\n e.stopPropagation();\n this.collapse();\n } else if (!this.expanded && !interactive(t, this)) this.expand();\n });\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'Escape' && this.expanded) this.collapse();\n else if ((e.key === 'Enter' || e.key === ' ') && e.target === this && !this.expanded) {\n e.preventDefault();\n this.expand();\n }\n });\n }\n if (!this.effects.some((e) => TRACKING.has(e)) || this.reduced) return;\n let rect: DOMRect | null = null;\n let px = 0.5;\n let py = 0.5;\n const apply = () => {\n this._frame = 0;\n const nx = clamp(px * 2 - 1, -1, 1);\n const ny = clamp(py * 2 - 1, -1, 1);\n this.style.setProperty('--usa-card-x', `${(px * 100).toFixed(1)}%`);\n this.style.setProperty('--usa-card-y', `${(py * 100).toFixed(1)}%`);\n this.style.setProperty('--usa-card-nx', nx.toFixed(3));\n this.style.setProperty('--usa-card-ny', ny.toFixed(3));\n if (this.has('parallax-layers')) {\n const depth = this.num('depth', 16);\n this.querySelectorAll<HTMLElement>('[data-depth]').forEach((l) => {\n const d = Number(l.dataset.depth) || 0.5;\n l.style.transform = `translate3d(${(nx * depth * d).toFixed(1)}px, ${(ny * depth * d).toFixed(1)}px, 0)`;\n });\n }\n };\n this.listen(this, 'pointerenter', () => {\n rect = this.getBoundingClientRect();\n this.setAttribute('data-hover', '');\n });\n this.listen(this, 'pointermove', (e: PointerEvent) => {\n if (this.expanded) return;\n rect = rect || this.getBoundingClientRect();\n px = (e.clientX - rect.left) / (rect.width || 1);\n py = (e.clientY - rect.top) / (rect.height || 1);\n if (!this._frame) this._frame = raf(apply);\n });\n this.listen(this, 'pointerleave', () => {\n rect = null;\n px = py = 0.5;\n this.removeAttribute('data-hover');\n if (!this._frame) this._frame = raf(apply);\n });\n }\n\n unmount(): void {\n caf(this._frame);\n this._frame = 0;\n if (this.expanded) this.finishCollapse();\n }\n\n private setBackHidden(): void {\n const front = this.querySelector<HTMLElement>(':scope > [data-front]');\n const back = this.querySelector<HTMLElement>(':scope > [data-back]');\n front?.setAttribute('aria-hidden', String(this.flipped));\n back?.setAttribute('aria-hidden', String(!this.flipped));\n }\n\n flip(force?: boolean): void {\n const next = force === undefined ? !this.flipped : force;\n if (next === this.flipped) return;\n this.flipped = next;\n if (this.hasAttribute('aria-pressed')) this.setAttribute('aria-pressed', String(next));\n this.setBackHidden();\n this.emit('flip', { flipped: next });\n }\n\n async expand(): Promise<void> {\n if (this.expanded || this._busy) return;\n this._busy = true;\n const first = this.getBoundingClientRect();\n const spacer = document.createElement('div');\n spacer.className = 'usa-card-spacer';\n spacer.style.cssText = `width:${first.width}px;height:${first.height}px`;\n spacer.setAttribute('aria-hidden', 'true');\n this.before(spacer);\n this._spacer = spacer;\n const backdrop = document.createElement('div');\n backdrop.className = 'usa-card-backdrop';\n backdrop.addEventListener('click', () => this.collapse());\n this.before(backdrop);\n this._backdrop = backdrop;\n this.setFlag('expanded', true);\n this.setAttribute('aria-expanded', 'true');\n this.emit('expand');\n const last = this.getBoundingClientRect();\n await this.flipFrom(first, last);\n this.motion(backdrop, [{ opacity: 0 }, { opacity: 1 }], { duration: 250, easing: 'ease-out' });\n this.focus({ preventScroll: true });\n this._busy = false;\n }\n\n async collapse(): Promise<void> {\n if (!this.expanded || this._busy) return;\n this._busy = true;\n const first = this.getBoundingClientRect();\n const b = this._backdrop;\n if (b) this.motion(b, [{ opacity: 1 }, { opacity: 0 }], { duration: 200, easing: 'ease-in', fill: 'forwards' });\n this.finishCollapse();\n this.emit('collapse');\n const last = this.getBoundingClientRect();\n await this.flipFrom(first, last);\n this._busy = false;\n }\n\n private finishCollapse(): void {\n this.setFlag('expanded', false);\n this.setAttribute('aria-expanded', 'false');\n this._spacer?.remove();\n this._backdrop?.remove();\n this._spacer = this._backdrop = null;\n }\n\n private async flipFrom(first: DOMRect, last: DOMRect): Promise<void> {\n if (this.reduced) {\n const a = this.motion(this, [{ opacity: 0.4 }, { opacity: 1 }], { duration: 200 });\n await a?.finished.catch(() => undefined);\n return;\n }\n const sx = first.width / (last.width || 1);\n const sy = first.height / (last.height || 1);\n const dx = first.left - last.left;\n const dy = first.top - last.top;\n const { easing, duration } = springEasing('stiff');\n const a = this.motion(\n this,\n [{ transformOrigin: '0 0', transform: `translate(${dx}px, ${dy}px) scale(${sx}, ${sy})` }, { transformOrigin: '0 0', transform: 'none' }],\n { duration: Math.min(duration, 900), easing: easing || EASE_OUT }\n );\n await a?.finished.catch(() => undefined);\n }\n },\n { id: 'card', text: css }\n );\n}\n\nfunction deco(cls: string): HTMLSpanElement {\n const s = document.createElement('span');\n s.className = cls;\n s.setAttribute('aria-hidden', 'true');\n return s;\n}\n\n/** Clicks on links, buttons and form fields inside the card keep their own behaviour. */\nfunction interactive(t: EventTarget | null, host: Element): boolean {\n const el = (t as Element)?.closest?.('a, button, input, select, textarea, label, [contenteditable]');\n return !!el && el !== host && host.contains(el);\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { createSpring, type SpringValue } from '../physics/spring';\nimport css from './card-stack.css?raw';\n\n/**\n * `<usa-card-stack>` — a deck of cards (its element children). The top card\n * can be swiped away left or right (pointer, touch or arrow keys); the rest\n * fan out behind it and move up with a spring.\n *\n * Attributes: `threshold` (px to dismiss, 90), `visible` (cards fanned\n * behind, 3), `offset` (px between cards, 10), `loop` (swiped cards go back\n * to the bottom), `disabled`. Methods: `swipe(direction)`, `top`. Events:\n * `usa:swipe` (`{ direction: 'left' | 'right', card }`), `usa:empty`.\n * Reduced motion: cards are removed instantly, no rotation.\n */\nexport interface UsaCardStackElement extends UsaElement {\n readonly top: HTMLElement | null;\n swipe(direction: 'left' | 'right'): Promise<void>;\n}\n\nexport function defineCardStack(tag = 'usa-card-stack'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCardStack extends Base {\n static get observedAttributes(): string[] {\n return ['visible', 'offset', 'disabled'];\n }\n\n private _x!: SpringValue;\n private _drag: { id: number; x0: number; t0: number } | null = null;\n private _busy = false;\n\n get top(): HTMLElement | null {\n return this.cards()[0] || null;\n }\n\n private cards(): HTMLElement[] {\n return Array.from(this.children).filter((c) => !(c as HTMLElement).hasAttribute('data-gone')) as HTMLElement[];\n }\n\n private layout(dragX = 0): void {\n const visible = this.num('visible', 3);\n const off = this.num('offset', 10);\n const reduced = this.reduced;\n this.cards().forEach((c, i) => {\n c.style.zIndex = String(100 - i);\n c.toggleAttribute('data-top', i === 0);\n c.setAttribute('aria-hidden', String(i !== 0));\n if (i === 0) {\n const rot = reduced ? 0 : dragX / 18;\n c.style.transform = `translate3d(${dragX}px, 0, 0) rotate(${rot.toFixed(2)}deg)`;\n c.style.opacity = '1';\n } else {\n const k = Math.min(i, visible);\n const pull = Math.min(1, Math.abs(dragX) / this.num('threshold', 90));\n const kk = Math.max(0, k - pull);\n c.style.transform = `translate3d(0, ${(kk * off).toFixed(1)}px, 0) scale(${(1 - kk * 0.05).toFixed(3)})`;\n c.style.opacity = i > visible ? '0' : '1';\n }\n });\n }\n\n mount(): void {\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n if (!this.hasAttribute('role')) this.setAttribute('role', 'group');\n this.setAttribute('aria-roledescription', 'card stack');\n this._x = createSpring({ spring: 'wobbly', onUpdate: (v) => this.layout(v) });\n this.layout();\n this.listen(this, 'pointerdown', (e: PointerEvent) => {\n if (this.flag('disabled') || this._busy || !this.top || !this.top.contains(e.target as Node)) return;\n this._x.stop();\n this._drag = { id: e.pointerId, x0: e.clientX - this._x.value, t0: e.timeStamp };\n try {\n this.setPointerCapture?.(e.pointerId);\n } catch {\n /* synthetic */\n }\n this.setAttribute('data-dragging', '');\n });\n this.listen(this, 'pointermove', (e: PointerEvent) => {\n if (!this._drag || e.pointerId !== this._drag.id) return;\n this._x.jump(e.clientX - this._drag.x0);\n });\n const up = (e: PointerEvent) => {\n if (!this._drag || e.pointerId !== this._drag.id) return;\n this._drag = null;\n this.removeAttribute('data-dragging');\n const x = this._x.value;\n if (Math.abs(x) >= this.num('threshold', 90)) this.swipe(x > 0 ? 'right' : 'left');\n else this._x.set(0);\n };\n this.listen(this, 'pointerup', up);\n this.listen(this, 'pointercancel', up);\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault();\n this.swipe(e.key === 'ArrowLeft' ? 'left' : 'right');\n }\n });\n const mo = typeof MutationObserver !== 'undefined' ? new MutationObserver(() => this.layout(this._x.value)) : null;\n mo?.observe(this, { childList: true });\n this.onCleanup(() => mo?.disconnect());\n }\n\n unmount(): void {\n this._x?.stop();\n }\n\n async swipe(direction: 'left' | 'right'): Promise<void> {\n const card = this.top;\n if (!card || this._busy || this.flag('disabled')) return;\n this._busy = true;\n this._x.stop();\n const from = this._x.value;\n const to = (direction === 'left' ? -1 : 1) * Math.max(320, (this.getBoundingClientRect().width || 300) * 1.4);\n card.setAttribute('data-gone', '');\n this._x.jump(0);\n this.layout(0);\n const a = this.reduced\n ? null\n : this.motion(card, [{ transform: `translate3d(${from}px,0,0) rotate(${from / 18}deg)`, opacity: 1 }, { transform: `translate3d(${to}px,0,0) rotate(${to / 14}deg)`, opacity: 0 }], {\n duration: 380,\n easing: 'cubic-bezier(0.3, 0.7, 0.4, 1)',\n fill: 'forwards',\n });\n await a?.finished.catch(() => undefined);\n a?.cancel();\n card.removeAttribute('data-gone');\n if (this.flag('loop')) this.append(card);\n else card.remove();\n this.layout(0);\n this._busy = false;\n this.emit('swipe', { direction, card });\n if (!this.top) this.emit('empty');\n }\n },\n { id: 'card-stack', text: css }\n );\n}\n","import { defineElement, raf, caf, clamp, type UsaElement } from '../base';\nimport css from './sticky-stack.css?raw';\n\n/**\n * `<usa-sticky-stack>` — cards (element children) stick to the top while\n * scrolling and the ones underneath scale down and dim as the next card\n * slides over them, like a deck building up.\n *\n * Attributes: `top` (px from the viewport top, 80), `gap` (px each card\n * peeks below the previous, 16), `scale` (how much a covered card shrinks,\n * 0.06). Reduced motion: cards still stack (sticky) but do not scale.\n */\nexport interface UsaStickyStackElement extends UsaElement {\n update(): void;\n}\n\nexport function defineStickyStack(tag = 'usa-sticky-stack'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaStickyStack extends Base {\n static get observedAttributes(): string[] {\n return ['top', 'gap', 'scale'];\n }\n\n private _frame = 0;\n\n mount(): void {\n const top = this.num('top', 80);\n const gap = this.num('gap', 16);\n const cards = Array.from(this.children) as HTMLElement[];\n cards.forEach((c, i) => {\n c.style.top = `${top + i * gap}px`;\n c.style.zIndex = String(i + 1);\n });\n if (this.reduced) return;\n const schedule = () => {\n if (!this._frame) this._frame = raf(() => this.update());\n };\n let active = false;\n this.inView((v) => {\n if (v && !active) {\n active = true;\n window.addEventListener('scroll', schedule, { passive: true });\n window.addEventListener('resize', schedule, { passive: true });\n schedule();\n } else if (!v && active) {\n active = false;\n window.removeEventListener('scroll', schedule);\n window.removeEventListener('resize', schedule);\n }\n });\n this.onCleanup(() => {\n window.removeEventListener('scroll', schedule);\n window.removeEventListener('resize', schedule);\n });\n }\n\n unmount(): void {\n caf(this._frame);\n this._frame = 0;\n }\n\n update(): void {\n this._frame = 0;\n const cards = Array.from(this.children) as HTMLElement[];\n const rects = cards.map((c) => c.getBoundingClientRect());\n const shrink = this.num('scale', 0.06);\n cards.forEach((c, i) => {\n let covered = 0;\n for (let j = i + 1; j < cards.length; j++) {\n const h = rects[i].height || 1;\n covered += clamp((rects[i].bottom - rects[j].top) / h, 0, 1);\n }\n const s = 1 - Math.min(3, covered) * shrink;\n c.style.transform = covered > 0.001 ? `scale(${s.toFixed(4)})` : '';\n c.style.filter = covered > 0.001 ? `brightness(${(1 - Math.min(0.35, covered * 0.12)).toFixed(3)})` : '';\n });\n }\n },\n { id: 'sticky-stack', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { createSpring, type SpringValue } from '../physics/spring';\nimport css from './carousel-3d.css?raw';\n\n/**\n * `<usa-carousel-3d>` — its element children on a 3D ring. Rotate with the\n * arrow keys, a drag/swipe, the wheel (shift) or `next()` / `prev()`; the\n * front item is `aria-current`. Spring-driven rotation.\n *\n * Attributes: `radius` (px, auto from item width), `autoplay` (ms between\n * steps, pauses on hover/focus), `perspective` (px, 1200), `index`.\n * Events: `usa:change` (`{ index }`). Reduced motion: a flat, instant\n * switch (only the current item is shown, others dimmed).\n */\nexport interface UsaCarousel3dElement extends UsaElement {\n index: number;\n next(): void;\n prev(): void;\n goTo(i: number): void;\n}\n\nexport function defineCarousel3d(tag = 'usa-carousel-3d'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaCarousel3d extends Base {\n static get observedAttributes(): string[] {\n return ['radius', 'perspective', 'autoplay'];\n }\n\n private _angle!: SpringValue;\n private _i = 0;\n\n get index(): number {\n return this._i;\n }\n set index(v: number) {\n this.goTo(v);\n }\n\n private items(): HTMLElement[] {\n return Array.from(this.children) as HTMLElement[];\n }\n\n private render(angle: number): void {\n const items = this.items();\n const n = items.length || 1;\n const step = 360 / n;\n const w = items[0]?.offsetWidth || 200;\n const r = this.num('radius', Math.round(w / 2 / Math.tan(Math.PI / n)) + 24);\n const reduced = this.reduced;\n items.forEach((it, i) => {\n const norm = ((((i * step - angle) % 360) + 540) % 360) - 180;\n it.style.transform = reduced ? '' : `rotateY(${norm.toFixed(2)}deg) translateZ(${r}px)`;\n it.style.opacity = reduced ? (i === this._i ? '1' : '0') : String(Math.max(0.25, 1 - Math.abs(norm) / 200));\n });\n }\n\n mount(): void {\n this.style.setProperty('--usa-c3d-perspective', `${this.num('perspective', 1200)}px`);\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('role', 'region');\n this.setAttribute('aria-roledescription', 'carousel');\n this._i = Math.max(0, Math.min(this.items().length - 1, this.num('index', 0)));\n const step = () => 360 / (this.items().length || 1);\n this._angle = createSpring({ value: this._i * step(), spring: 'gentle', onUpdate: (v) => this.render(v) });\n this.render(this._angle.value);\n this.mark();\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'ArrowRight') this.next();\n else if (e.key === 'ArrowLeft') this.prev();\n else return;\n e.preventDefault();\n });\n let x0: number | null = null;\n this.listen(this, 'pointerdown', (e: PointerEvent) => (x0 = e.clientX));\n this.listen(this, 'pointerup', (e: PointerEvent) => {\n if (x0 === null) return;\n const dx = e.clientX - x0;\n x0 = null;\n if (Math.abs(dx) > 40) dx < 0 ? this.next() : this.prev();\n });\n this.listen(this, 'click', (e: MouseEvent) => {\n const it = this.items().find((c) => c.contains(e.target as Node));\n if (it) {\n const i = this.items().indexOf(it);\n if (i !== this._i) this.goTo(i);\n }\n });\n const every = this.num('autoplay', 0);\n if (every > 0 && !this.reduced) {\n let paused = false;\n const pause = () => (paused = true);\n const resume = () => (paused = false);\n this.listen(this, 'pointerenter', pause);\n this.listen(this, 'pointerleave', resume);\n this.listen(this, 'focusin', pause);\n this.listen(this, 'focusout', resume);\n const t = setInterval(() => !paused && !document.hidden && this.next(), every);\n this.onCleanup(() => clearInterval(t));\n }\n }\n\n unmount(): void {\n this._angle?.stop();\n }\n\n private mark(): void {\n this.items().forEach((it, i) => {\n if (i === this._i) it.setAttribute('aria-current', 'true');\n else it.removeAttribute('aria-current');\n });\n }\n\n goTo(i: number): void {\n const n = this.items().length;\n if (!n || !this._angle) return;\n const step = 360 / n;\n // shortest rotation from the current target\n const cur = this._angle.target;\n const curIdx = Math.round(cur / step);\n let delta = (((i - curIdx) % n) + n) % n;\n if (delta > n / 2) delta -= n;\n this._i = ((i % n) + n) % n;\n this._angle.set((curIdx + delta) * step);\n if (this.reduced) this.render(this._angle.value);\n this.mark();\n this.emit('change', { index: this._i });\n }\n\n next(): void {\n this.goTo(this._i + 1);\n }\n\n prev(): void {\n this.goTo(this._i - 1);\n }\n },\n { id: 'carousel-3d', text: css }\n );\n}\n","/**\n * use-scroll-animate/components/cards — card effects (v2.4).\n * `<usa-card effect=\"flip | holo | glass | border-glow | conic-border | lift |\n * spotlight | sheen | parallax-layers | expand\">` (combinable),\n * `<usa-card-stack>` (swipeable deck), `<usa-sticky-stack>` (stacking on\n * scroll) and `<usa-carousel-3d>`.\n */\nimport { defineCard, type UsaCardElement } from './card';\nimport { defineCardStack, type UsaCardStackElement } from './card-stack';\nimport { defineStickyStack, type UsaStickyStackElement } from './sticky-stack';\nimport { defineCarousel3d, type UsaCarousel3dElement } from './carousel-3d';\n\nexport { defineCard, defineCardStack, defineStickyStack, defineCarousel3d };\nexport { CARD_EFFECTS } from './card';\nexport type { CardEffect } from './card';\nexport type { UsaCardElement, UsaCardStackElement, UsaStickyStackElement, UsaCarousel3dElement };\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 defineCardComponents(): void {\n defineCard();\n defineCardStack();\n defineStickyStack();\n defineCarousel3d();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-card': UsaCardElement;\n 'usa-card-stack': UsaCardStackElement;\n 'usa-sticky-stack': UsaStickyStackElement;\n 'usa-carousel-3d': UsaCarousel3dElement;\n }\n}\n"],"names":["css"],"mappings":"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"}
@@ -1,221 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var base = require('../chunks/base-CJ7XfidP.cjs');
4
-
5
- const SPRING_PRESETS = {
6
- default: { stiffness: 170, damping: 26, mass: 1 },
7
- gentle: { stiffness: 120, damping: 14, mass: 1 },
8
- wobbly: { stiffness: 180, damping: 12, mass: 1 },
9
- stiff: { stiffness: 210, damping: 20, mass: 1 },
10
- bouncy: { stiffness: 300, damping: 10, mass: 1 },
11
- slow: { stiffness: 280, damping: 60, mass: 1 },
12
- molasses: { stiffness: 280, damping: 120, mass: 1 },
13
- };
14
- /** Resolve a preset name or a partial config to a full config. */
15
- function resolveSpring(input) {
16
- const base = typeof input === 'string' ? SPRING_PRESETS[input] || SPRING_PRESETS.default : { ...SPRING_PRESETS.default, ...(input || {}) };
17
- const pos = (v, d) => (typeof v === 'number' && Number.isFinite(v) && v > 0 ? v : d);
18
- const o = (typeof input === 'object' && input) || {};
19
- return {
20
- stiffness: pos(base.stiffness, 170),
21
- damping: Math.max(0, Number.isFinite(base.damping) ? base.damping : 26),
22
- mass: pos(base.mass, 1),
23
- velocity: Number.isFinite(o.velocity) ? o.velocity : 0,
24
- precision: pos(o.precision, 0.001),
25
- };
26
- }
27
- /** One integration step (semi-implicit Euler) towards `to`. Returns [x, v]. */
28
- function stepSpring(cfg, x, v, to, dt) {
29
- const a = (-cfg.stiffness * (x - to) - cfg.damping * v) / cfg.mass;
30
- const nv = v + a * dt;
31
- return [x + nv * dt, nv];
32
- }
33
- const cache = new Map();
34
- /**
35
- * Sample the spring from 0 to 1 at `fps` (default 60). `values` may exceed 1
36
- * (overshoot); `duration` is the time to rest, in ms (max 10 s).
37
- */
38
- function springSamples(input, fps = 60) {
39
- const cfg = resolveSpring(input);
40
- const key = `${cfg.stiffness}|${cfg.damping}|${cfg.mass}|${cfg.velocity}|${cfg.precision}|${fps}`;
41
- const hit = cache.get(key);
42
- if (hit)
43
- return hit;
44
- const values = [0];
45
- let x = 0;
46
- let v = cfg.velocity;
47
- const frame = 1000 / fps;
48
- let t = 0;
49
- let next = frame;
50
- while (t < 10000) {
51
- [x, v] = stepSpring(cfg, x, v, 1, 0.001);
52
- t += 1;
53
- if (t >= next) {
54
- values.push(x);
55
- next += frame;
56
- if (Math.abs(1 - x) < cfg.precision && Math.abs(v) < cfg.precision * 10)
57
- break;
58
- }
59
- }
60
- values[values.length - 1] = 1;
61
- const out = { values, duration: Math.round(t) };
62
- if (cache.size > 64)
63
- cache.clear();
64
- cache.set(key, out);
65
- return out;
66
- }
67
- /** `true` when CSS `linear()` easing is supported. */
68
- function supportsLinearEasing() {
69
- return typeof CSS !== 'undefined' && typeof CSS.supports === 'function' && CSS.supports('animation-timing-function', 'linear(0, 1)');
70
- }
71
- /**
72
- * The spring as `{ easing, duration }` for `el.animate()` / CSS. `easing` is
73
- * a `linear(…)` function with at most `points` stops (default 48), or a
74
- * cubic-bezier overshoot where `linear()` is unsupported.
75
- */
76
- function springEasing(input, points = 48) {
77
- const { values, duration } = springSamples(input);
78
- if (!supportsLinearEasing())
79
- return { easing: base.EASE_SPRING, duration: Math.min(duration, 1200) };
80
- return { easing: linearEasing(values, points), duration };
81
- }
82
- /** Build a CSS `linear()` easing from samples (down-sampled to `points`). */
83
- function linearEasing(values, points = 48) {
84
- const n = values.length;
85
- const step = Math.max(1, Math.ceil((n - 1) / Math.max(2, points - 1)));
86
- const out = [];
87
- for (let i = 0; i < n - 1; i += step)
88
- out.push(String(Math.round(values[i] * 1000) / 1000));
89
- out.push('1');
90
- return `linear(${out.join(', ')})`;
91
- }
92
- /**
93
- * Animate `el` between keyframes with spring timing (WAAPI). Under reduced
94
- * motion the final frame is applied immediately. Returns the Animation (or
95
- * `null` without WAAPI / under reduced motion).
96
- */
97
- function spring(el, keyframes, input, options = {}) {
98
- const target = el;
99
- if (base.prefersReducedMotion() || typeof target.animate !== 'function') {
100
- base.applyFrame(target, keyframes[keyframes.length - 1]);
101
- return null;
102
- }
103
- const { easing, duration } = springEasing(input);
104
- return target.animate(keyframes, { duration, easing, fill: 'both', ...options });
105
- }
106
- /**
107
- * An interruptible spring-animated number: call `set()` as often as you like,
108
- * the motion keeps its velocity (like iOS / Framer springs). Reduced motion
109
- * jumps straight to the target.
110
- */
111
- function createSpring(opts = {}) {
112
- let cfg = resolveSpring(opts.spring);
113
- let x = opts.value ?? 0;
114
- let v = 0;
115
- let to = x;
116
- let id = 0;
117
- let last = 0;
118
- let running = false;
119
- const stop = () => {
120
- if (running)
121
- base.caf(id);
122
- running = false;
123
- };
124
- const loop = () => {
125
- const t = base.now();
126
- let dt = Math.min(64, Math.max(1, t - last));
127
- last = t;
128
- while (dt > 0) {
129
- const s = Math.min(dt, 4);
130
- [x, v] = stepSpring(cfg, x, v, to, s / 1000);
131
- dt -= s;
132
- }
133
- const scale = Math.max(1, Math.abs(to) * 0.0005);
134
- if (Math.abs(to - x) < cfg.precision * scale * 10 && Math.abs(v) < cfg.precision * scale * 100) {
135
- x = to;
136
- v = 0;
137
- running = false;
138
- opts.onUpdate?.(x, 0);
139
- opts.onRest?.(x);
140
- return;
141
- }
142
- opts.onUpdate?.(x, v);
143
- id = base.raf(loop);
144
- };
145
- const api = {
146
- get value() {
147
- return x;
148
- },
149
- get velocity() {
150
- return v;
151
- },
152
- get target() {
153
- return to;
154
- },
155
- get animating() {
156
- return running;
157
- },
158
- set(target, velocity) {
159
- to = target;
160
- if (velocity !== undefined && Number.isFinite(velocity))
161
- v = velocity;
162
- if (base.prefersReducedMotion()) {
163
- api.jump(target);
164
- opts.onRest?.(target);
165
- return;
166
- }
167
- if (!running) {
168
- running = true;
169
- last = base.now();
170
- id = base.raf(loop);
171
- }
172
- },
173
- jump(value) {
174
- stop();
175
- x = to = value;
176
- v = 0;
177
- opts.onUpdate?.(x, 0);
178
- },
179
- stop() {
180
- stop();
181
- v = 0;
182
- to = x;
183
- },
184
- configure(input) {
185
- cfg = resolveSpring(input);
186
- },
187
- };
188
- return api;
189
- }
190
- /* ------------------------------------------------------------------ */
191
- /* Inertia + snapping */
192
- /* ------------------------------------------------------------------ */
193
- /**
194
- * Where a flick at `velocity` (units/s) comes to rest with exponential
195
- * decay: `value + velocity · timeConstant` (default 0.325 s, iOS-like).
196
- */
197
- function projectInertia(value, velocity, timeConstant = 0.325) {
198
- return value + velocity * timeConstant;
199
- }
200
- /** Snap to a grid (`number`) or the nearest of a list of points. */
201
- function snapTo(value, to) {
202
- if (Array.isArray(to)) {
203
- if (!to.length)
204
- return value;
205
- return to.reduce((best, p) => (Math.abs(p - value) < Math.abs(best - value) ? p : best), to[0]);
206
- }
207
- if (typeof to === 'number' && to > 0)
208
- return Math.round(value / to) * to;
209
- return value;
210
- }
211
- /** iOS-style rubber-band resistance: how far content moves when pulled `distance` past an edge. */
212
- function rubberBand(distance, dimension, constant = 0.55) {
213
- if (dimension <= 0)
214
- return 0;
215
- const sign = distance < 0 ? -1 : 1;
216
- const d = Math.abs(distance);
217
- return sign * (1 - 1 / ((d * constant) / dimension + 1)) * dimension;
218
- }
4
+ var spring = require('../chunks/spring-CGO9Jd9b.cjs');
219
5
 
220
6
  var css$2 = "usa-spring{display:inline-block;transform-origin:50% 70%}usa-spring[block]{display:block}usa-spring[effect=\"drop\"]{transform-origin:50% 100%}usa-spring[data-state=\"hidden\"]{opacity:0}usa-spring[trigger=\"click\"],usa-spring[trigger=\"hover\"]{cursor:pointer;-webkit-tap-highlight-color:transparent}";
221
7
 
@@ -314,7 +100,7 @@ function defineSpring(tag = 'usa-spring') {
314
100
  this.setAttribute('data-state', 'playing');
315
101
  const frames = springEffectKeyframes(effect, reduced);
316
102
  const timing = ENTRANCE.has(effect) && !reduced
317
- ? springEasing(this.config())
103
+ ? spring.springEasing(this.config())
318
104
  : { duration: reduced ? 250 : this.num('duration', 900), easing: 'ease-out' };
319
105
  const a = this.motion(this, frames, { ...timing, delay: this.num('delay', 0), fill: 'backwards' });
320
106
  this._anim = a;
@@ -392,9 +178,9 @@ function defineDraggable(tag = 'usa-draggable') {
392
178
  this.emit('settle', { x: this._x, y: this._y });
393
179
  }
394
180
  };
395
- const spring = this.str('preset', 'wobbly');
396
- this._sx = createSpring({ value: this._x, spring, onUpdate: (v) => ((this._x = v), this.render()), onRest: rest });
397
- this._sy = createSpring({ value: this._y, spring, onUpdate: (v) => ((this._y = v), this.render()), onRest: rest });
181
+ const spring$1 = this.str('preset', 'wobbly');
182
+ this._sx = spring.createSpring({ value: this._x, spring: spring$1, onUpdate: (v) => ((this._x = v), this.render()), onRest: rest });
183
+ this._sy = spring.createSpring({ value: this._y, spring: spring$1, onUpdate: (v) => ((this._y = v), this.render()), onRest: rest });
398
184
  if (!this.hasAttribute('tabindex'))
399
185
  this.tabIndex = 0;
400
186
  this.setAttribute('aria-roledescription', 'draggable');
@@ -434,7 +220,7 @@ function defineDraggable(tag = 'usa-draggable') {
434
220
  let y = axis === 'x' ? d.oy : d.oy + e.clientY - d.py;
435
221
  const b = this.limits();
436
222
  if (b) {
437
- const band = (v, lo, hi, dim) => (v < lo ? lo + rubberBand(v - lo, dim) : v > hi ? hi + rubberBand(v - hi, dim) : v);
223
+ const band = (v, lo, hi, dim) => (v < lo ? lo + spring.rubberBand(v - lo, dim) : v > hi ? hi + spring.rubberBand(v - hi, dim) : v);
438
224
  x = band(x, b.minX, b.maxX, 200);
439
225
  y = band(y, b.minY, b.maxY, 200);
440
226
  }
@@ -477,8 +263,8 @@ function defineDraggable(tag = 'usa-draggable') {
477
263
  }
478
264
  else {
479
265
  if (this.flag('inertia') && !this.reduced) {
480
- tx = projectInertia(tx, vx);
481
- ty = projectInertia(ty, vy);
266
+ tx = spring.projectInertia(tx, vx);
267
+ ty = spring.projectInertia(ty, vy);
482
268
  }
483
269
  [tx, ty] = this.constrain(tx, ty);
484
270
  }
@@ -487,8 +273,8 @@ function defineDraggable(tag = 'usa-draggable') {
487
273
  }
488
274
  constrain(x, y) {
489
275
  const snap = parseSnap(this.str('snap'));
490
- let tx = snapTo(x, snap);
491
- let ty = snapTo(y, snap);
276
+ let tx = spring.snapTo(x, snap);
277
+ let ty = spring.snapTo(y, snap);
492
278
  const b = this.limits();
493
279
  if (b) {
494
280
  tx = base.clamp(tx, b.minX, Math.max(b.minX, b.maxX));
@@ -562,10 +348,10 @@ function defineOverscroll(tag = 'usa-overscroll') {
562
348
  }
563
349
  stretch(raw) {
564
350
  const max = this.num('max', 120);
565
- this.set(Math.max(-max, Math.min(max, rubberBand(raw, max * 2.5))));
351
+ this.set(Math.max(-max, Math.min(max, spring.rubberBand(raw, max * 2.5))));
566
352
  }
567
353
  mount() {
568
- this._spring = createSpring({ spring: this.str('preset', 'default'), onUpdate: (v) => this.set(v) });
354
+ this._spring = spring.createSpring({ spring: this.str('preset', 'default'), onUpdate: (v) => this.set(v) });
569
355
  const x = this.str('axis', 'y') === 'x';
570
356
  const off = () => this.flag('disabled') || this.reduced;
571
357
  // Wheel / trackpad: accumulate past the edge, spring back when it stops.
@@ -643,22 +429,22 @@ function definePhysicsComponents() {
643
429
 
644
430
  exports.configureComponents = base.configureComponents;
645
431
  exports.prefersReducedMotion = base.prefersReducedMotion;
432
+ exports.SPRING_PRESETS = spring.SPRING_PRESETS;
433
+ exports.createSpring = spring.createSpring;
434
+ exports.linearEasing = spring.linearEasing;
435
+ exports.projectInertia = spring.projectInertia;
436
+ exports.resolveSpring = spring.resolveSpring;
437
+ exports.rubberBand = spring.rubberBand;
438
+ exports.snapTo = spring.snapTo;
439
+ exports.spring = spring.spring;
440
+ exports.springEasing = spring.springEasing;
441
+ exports.springSamples = spring.springSamples;
442
+ exports.stepSpring = spring.stepSpring;
443
+ exports.supportsLinearEasing = spring.supportsLinearEasing;
646
444
  exports.SPRING_EFFECTS = SPRING_EFFECTS;
647
- exports.SPRING_PRESETS = SPRING_PRESETS;
648
- exports.createSpring = createSpring;
649
445
  exports.defineDraggable = defineDraggable;
650
446
  exports.defineOverscroll = defineOverscroll;
651
447
  exports.definePhysicsComponents = definePhysicsComponents;
652
448
  exports.defineSpring = defineSpring;
653
- exports.linearEasing = linearEasing;
654
- exports.projectInertia = projectInertia;
655
- exports.resolveSpring = resolveSpring;
656
- exports.rubberBand = rubberBand;
657
- exports.snapTo = snapTo;
658
- exports.spring = spring;
659
- exports.springEasing = springEasing;
660
449
  exports.springEffectKeyframes = springEffectKeyframes;
661
- exports.springSamples = springSamples;
662
- exports.stepSpring = stepSpring;
663
- exports.supportsLinearEasing = supportsLinearEasing;
664
450
  //# sourceMappingURL=physics.cjs.map