use-scroll-animate 6.6.0 → 6.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/chunks/{gpu-EjV49FQk.js → gpu-CsP2ZB3x.js} +2 -2
  3. package/dist/chunks/{gpu-EjV49FQk.js.map → gpu-CsP2ZB3x.js.map} +1 -1
  4. package/dist/chunks/{registry-Bu5NrAyA.js → registry-D23neB4M.js} +2 -2
  5. package/dist/chunks/{registry-Bu5NrAyA.js.map → registry-D23neB4M.js.map} +1 -1
  6. package/dist/components/angular.js +1 -1
  7. package/dist/components/effects.js +1 -1
  8. package/dist/components/fx-3d.js +1 -1
  9. package/dist/components/fx-gpu.js +2 -2
  10. package/dist/components/fx-light.js +1 -1
  11. package/dist/components/fx-morph.js +1 -1
  12. package/dist/components/fx-text.js +1 -1
  13. package/dist/components/fx-transitions.cjs +249 -0
  14. package/dist/components/fx-transitions.cjs.map +1 -0
  15. package/dist/components/fx-transitions.d.cts +77 -0
  16. package/dist/components/fx-transitions.d.ts +77 -0
  17. package/dist/components/fx-transitions.js +244 -0
  18. package/dist/components/fx-transitions.js.map +1 -0
  19. package/dist/components/fx.js +2 -2
  20. package/dist/components/fx2.cjs +7 -0
  21. package/dist/components/fx2.cjs.map +1 -1
  22. package/dist/components/fx2.d.cts +34 -1
  23. package/dist/components/fx2.d.ts +34 -1
  24. package/dist/components/fx2.js +8 -4
  25. package/dist/components/fx2.js.map +1 -1
  26. package/dist/components/solid.js +1 -1
  27. package/dist/components/svelte.js +1 -1
  28. package/dist/components/vue.js +1 -1
  29. package/dist/components/widgets.cjs +458 -37
  30. package/dist/components/widgets.cjs.map +1 -1
  31. package/dist/components/widgets.d.cts +72 -2
  32. package/dist/components/widgets.d.ts +72 -2
  33. package/dist/components/widgets.js +452 -38
  34. package/dist/components/widgets.js.map +1 -1
  35. package/dist/components.js +1 -1
  36. package/dist/widgets.umd.js +1 -1
  37. package/dist/widgets.umd.js.map +1 -1
  38. package/docs/ROADMAP.md +1 -1
  39. package/docs/components.md +23 -0
  40. package/package.json +11 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fx-transitions.cjs","sources":["../../src/components/fx2/transitions2.ts"],"sourcesContent":["/**\n * 6.7 — Transitions 2.0 (`motionary/components/fx-transitions`), registered\n * through `registerEffect()` (kind `page`; option `mode: 'in' | 'out'`):\n *\n * - `ripple-dissolve` — a circle with a ripple ring grows from the pointer\n * (or `x` / `y` 0–1) and reveals / hides the element.\n * - `shatter` — the element breaks into shards that fly apart (out) or\n * fly together (in).\n * - `mosaic-flip` — a grid of tiles flips over in a diagonal wave.\n * - `liquid-wipe` — a wavy liquid edge sweeps across.\n * - `page-curl` — the element turns like a page around its left edge.\n * - `camera-dolly` — a dolly zoom: scale + depth blur + fade.\n *\n * `pageTransition(update, effect)` runs a DOM update inside the View\n * Transitions API (when available) and plays the effect on the new snapshot;\n * without the API it runs `update()` and plays the effect on `target`.\n * `crossDocumentTransitions(effect)` opts an MPA into cross-document view\n * transitions (`@view-transition { navigation: auto }`) with the same look.\n * Reduced motion: plain short fades.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects, getEffect } from '../fx/registry';\nimport { prefersReducedMotion } from '../base';\nimport { all, origin } from '../effects/shared';\n\nconst fade = (el: Element, ctx: EffectContext, out: boolean) => ctx.animate(el, out ? [{ opacity: 1 }, { opacity: 0 }] : [{ opacity: 0 }, { opacity: 1 }], { duration: 200, fill: out ? 'forwards' : 'none' });\nconst isOut = (o: any) => o.mode === 'out';\nconst dir = (frames: Keyframe[], out: boolean) => (out ? [...frames].reverse().map((f) => ({ ...f, offset: undefined as unknown as number })).map(({ offset, ...f }) => f) : frames);\n\n/** Clipped copies of `el` laid over it (the original is hidden meanwhile). */\nfunction pieces(el: HTMLElement, clips: string[]): { parts: HTMLElement[]; done: () => void } {\n if (getComputedStyle(el).position === 'static') el.style.position = 'relative';\n const prevVis = el.style.visibility;\n const wrap = document.createElement('div');\n wrap.setAttribute('aria-hidden', 'true');\n wrap.style.cssText = 'position:absolute;inset:0;pointer-events:none;perspective:900px;visibility:visible;z-index:1';\n const parts = clips.map((c) => {\n const p = el.cloneNode(true) as HTMLElement;\n p.removeAttribute('id');\n p.querySelectorAll('[id]').forEach((x) => x.removeAttribute('id'));\n p.style.cssText += `;position:absolute;inset:0;margin:0;width:100%;height:100%;box-sizing:border-box;clip-path:${c};visibility:visible`;\n wrap.appendChild(p);\n return p;\n });\n el.style.visibility = 'hidden';\n el.appendChild(wrap);\n return {\n parts,\n done: () => {\n wrap.remove();\n el.style.visibility = prevVis;\n },\n };\n}\n\nexport const TRANSITIONS2_FX: EffectDefinition[] = [\n {\n name: 'ripple-dissolve',\n kind: 'page',\n description: 'A circle with a ripple ring grows from the pointer (or `x` / `y` 0–1) and reveals (`mode: \"in\"`) or hides (`\"out\"`) the element.',\n defaults: { mode: 'in', duration: 900, x: 0.5, y: 0.5 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const out = isOut(o);\n if (ctx.reduced) return fade(el, ctx, out);\n const r = el.getBoundingClientRect();\n const p = ctx.event ? origin(el, ctx) : { x: r.left + r.width * o.x, y: r.top + r.height * o.y };\n const at = `${(p.x - r.left).toFixed(0)}px ${(p.y - r.top).toFixed(0)}px`;\n const f: Keyframe[] = [\n { clipPath: `circle(0% at ${at})`, filter: 'blur(2px)' },\n { clipPath: `circle(38% at ${at})`, filter: 'blur(0)', offset: 0.45 },\n { clipPath: `circle(150% at ${at})`, filter: 'blur(0)' },\n ];\n return ctx.animate(el, out ? [f[2], f[0]] : f, { duration: o.duration, easing: 'cubic-bezier(.6,.05,.3,1)', fill: out ? 'forwards' : 'none' });\n },\n },\n {\n name: 'shatter',\n kind: 'page',\n description: 'The element breaks into shards that fly apart (`mode: \"out\"`) or fly together (`\"in\"`) (`pieces`, `duration`).',\n defaults: { mode: 'out', duration: 900, pieces: 12 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const out = isOut(o);\n if (ctx.reduced) return fade(el, ctx, out);\n const n = Math.max(4, Math.min(24, o.pieces | 0));\n const cols = Math.ceil(Math.sqrt(n / 2));\n const rows = Math.ceil(n / 2 / cols);\n const clips: string[] = [];\n for (let r = 0; r < rows; r++)\n for (let c = 0; c < cols; c++) {\n const x0 = (c / cols) * 100;\n const x1 = ((c + 1) / cols) * 100;\n const y0 = (r / rows) * 100;\n const y1 = ((r + 1) / rows) * 100;\n clips.push(`polygon(${x0}% ${y0}%,${x1}% ${y0}%,${x0}% ${y1}%)`, `polygon(${x1}% ${y0}%,${x1}% ${y1}%,${x0}% ${y1}%)`);\n }\n const { parts, done } = pieces(el, clips);\n const anims = parts.map((p, i) => {\n const a = (i * 2.399) % (Math.PI * 2);\n const d = 80 + (i % 5) * 30;\n const scattered = { transform: `translate(${(Math.cos(a) * d).toFixed(0)}px,${(Math.sin(a) * d + 40).toFixed(0)}px) rotate(${((i % 7) - 3) * 35}deg) rotateX(${(i % 3) * 40}deg)`, opacity: 0 };\n const whole = { transform: 'none', opacity: 1 };\n return ctx.animate(p, out ? [whole, scattered] : [scattered, whole], { duration: o.duration, delay: (i % 6) * 25, easing: out ? 'cubic-bezier(.4,0,.9,.6)' : 'cubic-bezier(.1,.6,.3,1)', fill: 'both' });\n });\n return all(anims).then(() => {\n done();\n if (out) el.style.visibility = 'hidden';\n });\n },\n },\n {\n name: 'mosaic-flip',\n kind: 'page',\n description: 'A grid of tiles flips over in a diagonal wave (`cols`, `rows`, `duration` per tile).',\n defaults: { mode: 'in', cols: 6, rows: 4, duration: 520 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const out = isOut(o);\n if (ctx.reduced) return fade(el, ctx, out);\n const C = Math.max(2, Math.min(12, o.cols | 0));\n const R = Math.max(2, Math.min(10, o.rows | 0));\n const clips: string[] = [];\n for (let r = 0; r < R; r++) for (let c = 0; c < C; c++) clips.push(`inset(${((r / R) * 100).toFixed(2)}% ${(100 - ((c + 1) / C) * 100).toFixed(2)}% ${(100 - ((r + 1) / R) * 100).toFixed(2)}% ${((c / C) * 100).toFixed(2)}%)`);\n const { parts, done } = pieces(el, clips);\n const anims = parts.map((p, i) => {\n const r = Math.floor(i / C);\n const c = i % C;\n p.style.transformOrigin = `${((c + 0.5) / C) * 100}% ${((r + 0.5) / R) * 100}%`;\n p.style.backfaceVisibility = 'hidden';\n const f: Keyframe[] = [{ transform: 'rotateY(-90deg)', opacity: 0 }, { transform: 'rotateY(0)', opacity: 1 }];\n return ctx.animate(p, out ? [f[1], f[0]] : f, { duration: o.duration, delay: (r + c) * 45, easing: 'cubic-bezier(.3,.7,.3,1)', fill: 'both' });\n });\n return all(anims).then(() => {\n done();\n if (out) el.style.visibility = 'hidden';\n });\n },\n },\n {\n name: 'liquid-wipe',\n kind: 'page',\n description: 'A wavy liquid edge sweeps across the element (`direction` left | right | up | down, `waves`, `duration`).',\n defaults: { mode: 'in', direction: 'right', waves: 3, duration: 1000 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const out = isOut(o);\n if (ctx.reduced) return fade(el, ctx, out);\n const N = 24;\n const shape = (k: number) => {\n const pts: string[] = [];\n const amp = 6 * Math.sin(Math.PI * k);\n for (let i = 0; i <= N; i++) {\n const t = (i / N) * 100;\n const edge = k * 120 - 10 + amp * Math.sin((i / N) * Math.PI * 2 * o.waves + k * 6);\n pts.push(o.direction === 'up' || o.direction === 'down' ? `${t.toFixed(1)}% ${(o.direction === 'down' ? edge : 100 - edge).toFixed(1)}%` : `${(o.direction === 'left' ? 100 - edge : edge).toFixed(1)}% ${t.toFixed(1)}%`);\n }\n const tail = o.direction === 'up' ? ['100% 100%', '0% 100%'] : o.direction === 'down' ? ['100% 0%', '0% 0%'] : o.direction === 'left' ? ['100% 100%', '100% 0%'] : ['0% 100%', '0% 0%'];\n if (o.direction === 'up' || o.direction === 'down') return `polygon(${[...pts, ...tail].join(',')})`;\n return `polygon(${[...pts, ...tail].join(',')})`;\n };\n const frames: Keyframe[] = Array.from({ length: 9 }, (_, i) => ({ clipPath: shape(i / 8) }));\n return ctx.animate(el, out ? frames.reverse() : frames, { duration: o.duration, easing: 'cubic-bezier(.65,.05,.35,1)', fill: out ? 'forwards' : 'none' });\n },\n },\n {\n name: 'page-curl',\n kind: 'page',\n description: 'The element turns like a page around its left edge, with a moving shade (`duration`).',\n defaults: { mode: 'in', duration: 900 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const out = isOut(o);\n if (ctx.reduced) return fade(el, ctx, out);\n const prev = el.style.transformOrigin;\n el.style.transformOrigin = '0% 50%';\n const f: Keyframe[] = [\n { transform: 'perspective(1400px) rotateY(-100deg) skewY(-4deg)', filter: 'brightness(.55)', boxShadow: '30px 0 40px rgba(0,0,0,.35)', opacity: 0.4 },\n { transform: 'perspective(1400px) rotateY(-40deg) skewY(-2deg)', filter: 'brightness(.8)', boxShadow: '20px 0 30px rgba(0,0,0,.25)', opacity: 1, offset: 0.5 },\n { transform: 'perspective(1400px) rotateY(0) skewY(0)', filter: 'brightness(1)', boxShadow: '0 0 0 rgba(0,0,0,0)', opacity: 1 },\n ];\n const a = ctx.animate(el, dir(f, out), { duration: o.duration, easing: 'cubic-bezier(.45,.05,.3,1)', fill: out ? 'forwards' : 'none' });\n const reset = () => (el.style.transformOrigin = prev);\n if (a) a.finished.then(reset, reset);\n else reset();\n return a;\n },\n },\n {\n name: 'camera-dolly',\n kind: 'page',\n description: 'A dolly zoom: the element moves in from (or out to) depth with a depth-of-field blur (`scale`, `duration`).',\n defaults: { mode: 'in', duration: 900, scale: 1.35 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const out = isOut(o);\n if (ctx.reduced) return fade(el, ctx, out);\n const f: Keyframe[] = [\n { transform: `perspective(900px) translateZ(-260px) scale(${o.scale})`, filter: 'blur(10px)', opacity: 0 },\n { transform: 'perspective(900px) translateZ(0) scale(1)', filter: 'blur(0)', opacity: 1 },\n ];\n return ctx.animate(el, out ? [f[1], { ...f[0], transform: `perspective(900px) translateZ(260px) scale(${(1 / o.scale).toFixed(3)})` }] : f, { duration: o.duration, easing: 'cubic-bezier(.2,.7,.2,1)', fill: out ? 'forwards' : 'none' });\n },\n },\n];\n\n/** CSS keyframes for the `::view-transition-new(root)` snapshot of each effect (cross-document transitions). */\nconst VT_CSS: Record<string, string> = {\n 'ripple-dissolve': 'from{clip-path:circle(0% at 50% 50%)}to{clip-path:circle(150% at 50% 50%)}',\n 'liquid-wipe': 'from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}',\n 'page-curl': 'from{transform:perspective(1400px) rotateY(-100deg);transform-origin:0 50%;filter:brightness(.6)}to{transform:none;transform-origin:0 50%}',\n 'camera-dolly': 'from{transform:scale(1.35);filter:blur(10px);opacity:0}to{transform:none;filter:none;opacity:1}',\n 'mosaic-flip': 'from{transform:perspective(900px) rotateY(-90deg);opacity:0}to{transform:none;opacity:1}',\n shatter: 'from{transform:scale(.85) rotate(-3deg);opacity:0;filter:blur(4px)}to{transform:none;opacity:1;filter:none}',\n};\n\n/**\n * Run `update` (a DOM change) as a transition: inside `document.startViewTransition`\n * when supported (the new snapshot plays `effect`), otherwise `update()` then the\n * effect on `target` (default `document.body`'s first element).\n */\nexport async function pageTransition(update: () => void | Promise<void>, effect = 'ripple-dissolve', options: Record<string, unknown> = {}, target?: HTMLElement): Promise<void> {\n const doc = document as Document & { startViewTransition?: (cb: () => unknown) => { ready: Promise<void>; finished: Promise<void> } };\n const def = getEffect(effect);\n if (typeof doc.startViewTransition === 'function' && !prefersReducedMotion()) {\n const vt = doc.startViewTransition(update);\n await vt.ready.catch(() => undefined);\n const css = VT_CSS[effect];\n if (css) {\n const dur = Number(options.duration) || Number(def?.defaults?.duration) || 800;\n const m = /from\\{([^}]*)\\}to\\{([^}]*)\\}/.exec(css);\n const toObj = (s: string) => Object.fromEntries(s.split(';').filter(Boolean).map((d) => { const i = d.indexOf(':'); return [d.slice(0, i).replace(/-([a-z])/g, (_, c) => c.toUpperCase()), d.slice(i + 1)]; }));\n if (m) document.documentElement.animate([toObj(m[1]), toObj(m[2])], { duration: dur, easing: 'cubic-bezier(.6,.05,.3,1)', pseudoElement: '::view-transition-new(root)' } as KeyframeAnimationOptions);\n }\n await vt.finished.catch(() => undefined);\n return;\n }\n await update();\n const el = target || (document.body.firstElementChild as HTMLElement | null);\n if (el && def) {\n const { playEffect } = await import('../fx/registry');\n await playEffect(el, effect, { ...options, mode: 'in' });\n }\n}\n\n/** Opt a multi-page site into cross-document view transitions with an effect's look. Returns a remover. */\nexport function crossDocumentTransitions(effect = 'ripple-dissolve', duration = 700): () => void {\n const style = document.createElement('style');\n style.setAttribute('data-usa-vt', effect);\n const kf = VT_CSS[effect] || VT_CSS['camera-dolly'];\n style.textContent = `@view-transition{navigation:auto}@keyframes usa-vt-in{${kf}}::view-transition-new(root){animation:usa-vt-in ${duration}ms cubic-bezier(.6,.05,.3,1) both}::view-transition-old(root){animation:none}@media (prefers-reduced-motion:reduce){::view-transition-new(root){animation-duration:1ms}}`;\n document.head.appendChild(style);\n return () => style.remove();\n}\n\n/** Register the 6.7 transitions pack (idempotent). */\nexport function registerTransitionEffects2(): void {\n registerEffects(TRANSITIONS2_FX);\n}\n"],"names":["origin","all","getEffect","prefersReducedMotion","registerEffects"],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ type MotionSensitivity = 'full' | 'gentle' | 'minimal' | 'static';
2
+ type Cleanup = () => void;
3
+
4
+ /**
5
+ * 5.0 — unified plugin-style effect registration. Every effect (built-in or
6
+ * yours) is a plain object registered once and played the same way:
7
+ * `playEffect(el, name)`, `bindEffect(el, name, { trigger })` or
8
+ * `<usa-fx effect="name" trigger="click">`. Effects get a context that
9
+ * already applies reduced motion, motion sensitivity, intensity and the
10
+ * animation budget.
11
+ */
12
+
13
+ declare const EFFECT_KINDS: readonly ["enter", "exit", "attention", "click", "hover", "card", "loop", "page", "background", "text", "cursor", "scroll"];
14
+ type EffectKind = (typeof EFFECT_KINDS)[number];
15
+ interface EffectContext {
16
+ /** Reduced motion applies (OS setting, `minimal` / `static` sensitivity). */
17
+ readonly reduced: boolean;
18
+ readonly sensitivity: MotionSensitivity;
19
+ /** The triggering event (pointer position for click effects), if any. */
20
+ readonly event?: Event;
21
+ /** `el.animate()` with the library's motion rules (may return `null`). */
22
+ animate(el: Element, keyframes: Keyframe[], options: KeyframeAnimationOptions): Animation | null;
23
+ /** Register teardown for long-running effects (loops, listeners). */
24
+ onCleanup(fn: Cleanup): void;
25
+ }
26
+ interface EffectDefinition<O extends Record<string, unknown> = Record<string, any>> {
27
+ /** Unique, kebab-case. */
28
+ name: string;
29
+ kind: EffectKind;
30
+ /** One line for docs and the gallery. */
31
+ description?: string;
32
+ /** Option defaults (merged under the caller's options). */
33
+ defaults?: Partial<O>;
34
+ /**
35
+ * Under reduced motion: `'skip'` (do nothing — default for loop, background
36
+ * and cursor effects) or `'run'` (run with `ctx.reduced === true`, the
37
+ * effect degrades itself — default for everything else).
38
+ */
39
+ reduced?: 'skip' | 'run';
40
+ /** Play the effect. Return an Animation / Promise to be awaited, or a cleanup. */
41
+ run(el: HTMLElement, options: O, ctx: EffectContext): void | Cleanup | Animation | null | Promise<unknown>;
42
+ }
43
+
44
+ /**
45
+ * 6.7 — Transitions 2.0 (`motionary/components/fx-transitions`), registered
46
+ * through `registerEffect()` (kind `page`; option `mode: 'in' | 'out'`):
47
+ *
48
+ * - `ripple-dissolve` — a circle with a ripple ring grows from the pointer
49
+ * (or `x` / `y` 0–1) and reveals / hides the element.
50
+ * - `shatter` — the element breaks into shards that fly apart (out) or
51
+ * fly together (in).
52
+ * - `mosaic-flip` — a grid of tiles flips over in a diagonal wave.
53
+ * - `liquid-wipe` — a wavy liquid edge sweeps across.
54
+ * - `page-curl` — the element turns like a page around its left edge.
55
+ * - `camera-dolly` — a dolly zoom: scale + depth blur + fade.
56
+ *
57
+ * `pageTransition(update, effect)` runs a DOM update inside the View
58
+ * Transitions API (when available) and plays the effect on the new snapshot;
59
+ * without the API it runs `update()` and plays the effect on `target`.
60
+ * `crossDocumentTransitions(effect)` opts an MPA into cross-document view
61
+ * transitions (`@view-transition { navigation: auto }`) with the same look.
62
+ * Reduced motion: plain short fades.
63
+ */
64
+
65
+ declare const TRANSITIONS2_FX: EffectDefinition[];
66
+ /**
67
+ * Run `update` (a DOM change) as a transition: inside `document.startViewTransition`
68
+ * when supported (the new snapshot plays `effect`), otherwise `update()` then the
69
+ * effect on `target` (default `document.body`'s first element).
70
+ */
71
+ declare function pageTransition(update: () => void | Promise<void>, effect?: string, options?: Record<string, unknown>, target?: HTMLElement): Promise<void>;
72
+ /** Opt a multi-page site into cross-document view transitions with an effect's look. Returns a remover. */
73
+ declare function crossDocumentTransitions(effect?: string, duration?: number): () => void;
74
+ /** Register the 6.7 transitions pack (idempotent). */
75
+ declare function registerTransitionEffects2(): void;
76
+
77
+ export { TRANSITIONS2_FX, crossDocumentTransitions, pageTransition, registerTransitionEffects2 };
@@ -0,0 +1,77 @@
1
+ type MotionSensitivity = 'full' | 'gentle' | 'minimal' | 'static';
2
+ type Cleanup = () => void;
3
+
4
+ /**
5
+ * 5.0 — unified plugin-style effect registration. Every effect (built-in or
6
+ * yours) is a plain object registered once and played the same way:
7
+ * `playEffect(el, name)`, `bindEffect(el, name, { trigger })` or
8
+ * `<usa-fx effect="name" trigger="click">`. Effects get a context that
9
+ * already applies reduced motion, motion sensitivity, intensity and the
10
+ * animation budget.
11
+ */
12
+
13
+ declare const EFFECT_KINDS: readonly ["enter", "exit", "attention", "click", "hover", "card", "loop", "page", "background", "text", "cursor", "scroll"];
14
+ type EffectKind = (typeof EFFECT_KINDS)[number];
15
+ interface EffectContext {
16
+ /** Reduced motion applies (OS setting, `minimal` / `static` sensitivity). */
17
+ readonly reduced: boolean;
18
+ readonly sensitivity: MotionSensitivity;
19
+ /** The triggering event (pointer position for click effects), if any. */
20
+ readonly event?: Event;
21
+ /** `el.animate()` with the library's motion rules (may return `null`). */
22
+ animate(el: Element, keyframes: Keyframe[], options: KeyframeAnimationOptions): Animation | null;
23
+ /** Register teardown for long-running effects (loops, listeners). */
24
+ onCleanup(fn: Cleanup): void;
25
+ }
26
+ interface EffectDefinition<O extends Record<string, unknown> = Record<string, any>> {
27
+ /** Unique, kebab-case. */
28
+ name: string;
29
+ kind: EffectKind;
30
+ /** One line for docs and the gallery. */
31
+ description?: string;
32
+ /** Option defaults (merged under the caller's options). */
33
+ defaults?: Partial<O>;
34
+ /**
35
+ * Under reduced motion: `'skip'` (do nothing — default for loop, background
36
+ * and cursor effects) or `'run'` (run with `ctx.reduced === true`, the
37
+ * effect degrades itself — default for everything else).
38
+ */
39
+ reduced?: 'skip' | 'run';
40
+ /** Play the effect. Return an Animation / Promise to be awaited, or a cleanup. */
41
+ run(el: HTMLElement, options: O, ctx: EffectContext): void | Cleanup | Animation | null | Promise<unknown>;
42
+ }
43
+
44
+ /**
45
+ * 6.7 — Transitions 2.0 (`motionary/components/fx-transitions`), registered
46
+ * through `registerEffect()` (kind `page`; option `mode: 'in' | 'out'`):
47
+ *
48
+ * - `ripple-dissolve` — a circle with a ripple ring grows from the pointer
49
+ * (or `x` / `y` 0–1) and reveals / hides the element.
50
+ * - `shatter` — the element breaks into shards that fly apart (out) or
51
+ * fly together (in).
52
+ * - `mosaic-flip` — a grid of tiles flips over in a diagonal wave.
53
+ * - `liquid-wipe` — a wavy liquid edge sweeps across.
54
+ * - `page-curl` — the element turns like a page around its left edge.
55
+ * - `camera-dolly` — a dolly zoom: scale + depth blur + fade.
56
+ *
57
+ * `pageTransition(update, effect)` runs a DOM update inside the View
58
+ * Transitions API (when available) and plays the effect on the new snapshot;
59
+ * without the API it runs `update()` and plays the effect on `target`.
60
+ * `crossDocumentTransitions(effect)` opts an MPA into cross-document view
61
+ * transitions (`@view-transition { navigation: auto }`) with the same look.
62
+ * Reduced motion: plain short fades.
63
+ */
64
+
65
+ declare const TRANSITIONS2_FX: EffectDefinition[];
66
+ /**
67
+ * Run `update` (a DOM change) as a transition: inside `document.startViewTransition`
68
+ * when supported (the new snapshot plays `effect`), otherwise `update()` then the
69
+ * effect on `target` (default `document.body`'s first element).
70
+ */
71
+ declare function pageTransition(update: () => void | Promise<void>, effect?: string, options?: Record<string, unknown>, target?: HTMLElement): Promise<void>;
72
+ /** Opt a multi-page site into cross-document view transitions with an effect's look. Returns a remover. */
73
+ declare function crossDocumentTransitions(effect?: string, duration?: number): () => void;
74
+ /** Register the 6.7 transitions pack (idempotent). */
75
+ declare function registerTransitionEffects2(): void;
76
+
77
+ export { TRANSITIONS2_FX, crossDocumentTransitions, pageTransition, registerTransitionEffects2 };
@@ -0,0 +1,244 @@
1
+ import { getEffect, registerEffects } from '../chunks/registry-D23neB4M.js';
2
+ import { p as prefersReducedMotion } from '../chunks/base-DchG4q_S.js';
3
+ import { b as origin, a as all } from '../chunks/shared-CkKHWrtJ.js';
4
+
5
+ const fade = (el, ctx, out) => ctx.animate(el, out ? [{ opacity: 1 }, { opacity: 0 }] : [{ opacity: 0 }, { opacity: 1 }], { duration: 200, fill: out ? 'forwards' : 'none' });
6
+ const isOut = (o) => o.mode === 'out';
7
+ const dir = (frames, out) => (out ? [...frames].reverse().map((f) => ({ ...f, offset: undefined })).map(({ offset, ...f }) => f) : frames);
8
+ /** Clipped copies of `el` laid over it (the original is hidden meanwhile). */
9
+ function pieces(el, clips) {
10
+ if (getComputedStyle(el).position === 'static')
11
+ el.style.position = 'relative';
12
+ const prevVis = el.style.visibility;
13
+ const wrap = document.createElement('div');
14
+ wrap.setAttribute('aria-hidden', 'true');
15
+ wrap.style.cssText = 'position:absolute;inset:0;pointer-events:none;perspective:900px;visibility:visible;z-index:1';
16
+ const parts = clips.map((c) => {
17
+ const p = el.cloneNode(true);
18
+ p.removeAttribute('id');
19
+ p.querySelectorAll('[id]').forEach((x) => x.removeAttribute('id'));
20
+ p.style.cssText += `;position:absolute;inset:0;margin:0;width:100%;height:100%;box-sizing:border-box;clip-path:${c};visibility:visible`;
21
+ wrap.appendChild(p);
22
+ return p;
23
+ });
24
+ el.style.visibility = 'hidden';
25
+ el.appendChild(wrap);
26
+ return {
27
+ parts,
28
+ done: () => {
29
+ wrap.remove();
30
+ el.style.visibility = prevVis;
31
+ },
32
+ };
33
+ }
34
+ const TRANSITIONS2_FX = [
35
+ {
36
+ name: 'ripple-dissolve',
37
+ kind: 'page',
38
+ description: 'A circle with a ripple ring grows from the pointer (or `x` / `y` 0–1) and reveals (`mode: "in"`) or hides (`"out"`) the element.',
39
+ defaults: { mode: 'in', duration: 900, x: 0.5, y: 0.5 },
40
+ run: (el, o, ctx) => {
41
+ const out = isOut(o);
42
+ if (ctx.reduced)
43
+ return fade(el, ctx, out);
44
+ const r = el.getBoundingClientRect();
45
+ const p = ctx.event ? origin(el, ctx) : { x: r.left + r.width * o.x, y: r.top + r.height * o.y };
46
+ const at = `${(p.x - r.left).toFixed(0)}px ${(p.y - r.top).toFixed(0)}px`;
47
+ const f = [
48
+ { clipPath: `circle(0% at ${at})`, filter: 'blur(2px)' },
49
+ { clipPath: `circle(38% at ${at})`, filter: 'blur(0)', offset: 0.45 },
50
+ { clipPath: `circle(150% at ${at})`, filter: 'blur(0)' },
51
+ ];
52
+ return ctx.animate(el, out ? [f[2], f[0]] : f, { duration: o.duration, easing: 'cubic-bezier(.6,.05,.3,1)', fill: out ? 'forwards' : 'none' });
53
+ },
54
+ },
55
+ {
56
+ name: 'shatter',
57
+ kind: 'page',
58
+ description: 'The element breaks into shards that fly apart (`mode: "out"`) or fly together (`"in"`) (`pieces`, `duration`).',
59
+ defaults: { mode: 'out', duration: 900, pieces: 12 },
60
+ run: (el, o, ctx) => {
61
+ const out = isOut(o);
62
+ if (ctx.reduced)
63
+ return fade(el, ctx, out);
64
+ const n = Math.max(4, Math.min(24, o.pieces | 0));
65
+ const cols = Math.ceil(Math.sqrt(n / 2));
66
+ const rows = Math.ceil(n / 2 / cols);
67
+ const clips = [];
68
+ for (let r = 0; r < rows; r++)
69
+ for (let c = 0; c < cols; c++) {
70
+ const x0 = (c / cols) * 100;
71
+ const x1 = ((c + 1) / cols) * 100;
72
+ const y0 = (r / rows) * 100;
73
+ const y1 = ((r + 1) / rows) * 100;
74
+ clips.push(`polygon(${x0}% ${y0}%,${x1}% ${y0}%,${x0}% ${y1}%)`, `polygon(${x1}% ${y0}%,${x1}% ${y1}%,${x0}% ${y1}%)`);
75
+ }
76
+ const { parts, done } = pieces(el, clips);
77
+ const anims = parts.map((p, i) => {
78
+ const a = (i * 2.399) % (Math.PI * 2);
79
+ const d = 80 + (i % 5) * 30;
80
+ const scattered = { transform: `translate(${(Math.cos(a) * d).toFixed(0)}px,${(Math.sin(a) * d + 40).toFixed(0)}px) rotate(${((i % 7) - 3) * 35}deg) rotateX(${(i % 3) * 40}deg)`, opacity: 0 };
81
+ const whole = { transform: 'none', opacity: 1 };
82
+ return ctx.animate(p, out ? [whole, scattered] : [scattered, whole], { duration: o.duration, delay: (i % 6) * 25, easing: out ? 'cubic-bezier(.4,0,.9,.6)' : 'cubic-bezier(.1,.6,.3,1)', fill: 'both' });
83
+ });
84
+ return all(anims).then(() => {
85
+ done();
86
+ if (out)
87
+ el.style.visibility = 'hidden';
88
+ });
89
+ },
90
+ },
91
+ {
92
+ name: 'mosaic-flip',
93
+ kind: 'page',
94
+ description: 'A grid of tiles flips over in a diagonal wave (`cols`, `rows`, `duration` per tile).',
95
+ defaults: { mode: 'in', cols: 6, rows: 4, duration: 520 },
96
+ run: (el, o, ctx) => {
97
+ const out = isOut(o);
98
+ if (ctx.reduced)
99
+ return fade(el, ctx, out);
100
+ const C = Math.max(2, Math.min(12, o.cols | 0));
101
+ const R = Math.max(2, Math.min(10, o.rows | 0));
102
+ const clips = [];
103
+ for (let r = 0; r < R; r++)
104
+ for (let c = 0; c < C; c++)
105
+ clips.push(`inset(${((r / R) * 100).toFixed(2)}% ${(100 - ((c + 1) / C) * 100).toFixed(2)}% ${(100 - ((r + 1) / R) * 100).toFixed(2)}% ${((c / C) * 100).toFixed(2)}%)`);
106
+ const { parts, done } = pieces(el, clips);
107
+ const anims = parts.map((p, i) => {
108
+ const r = Math.floor(i / C);
109
+ const c = i % C;
110
+ p.style.transformOrigin = `${((c + 0.5) / C) * 100}% ${((r + 0.5) / R) * 100}%`;
111
+ p.style.backfaceVisibility = 'hidden';
112
+ const f = [{ transform: 'rotateY(-90deg)', opacity: 0 }, { transform: 'rotateY(0)', opacity: 1 }];
113
+ return ctx.animate(p, out ? [f[1], f[0]] : f, { duration: o.duration, delay: (r + c) * 45, easing: 'cubic-bezier(.3,.7,.3,1)', fill: 'both' });
114
+ });
115
+ return all(anims).then(() => {
116
+ done();
117
+ if (out)
118
+ el.style.visibility = 'hidden';
119
+ });
120
+ },
121
+ },
122
+ {
123
+ name: 'liquid-wipe',
124
+ kind: 'page',
125
+ description: 'A wavy liquid edge sweeps across the element (`direction` left | right | up | down, `waves`, `duration`).',
126
+ defaults: { mode: 'in', direction: 'right', waves: 3, duration: 1000 },
127
+ run: (el, o, ctx) => {
128
+ const out = isOut(o);
129
+ if (ctx.reduced)
130
+ return fade(el, ctx, out);
131
+ const N = 24;
132
+ const shape = (k) => {
133
+ const pts = [];
134
+ const amp = 6 * Math.sin(Math.PI * k);
135
+ for (let i = 0; i <= N; i++) {
136
+ const t = (i / N) * 100;
137
+ const edge = k * 120 - 10 + amp * Math.sin((i / N) * Math.PI * 2 * o.waves + k * 6);
138
+ pts.push(o.direction === 'up' || o.direction === 'down' ? `${t.toFixed(1)}% ${(o.direction === 'down' ? edge : 100 - edge).toFixed(1)}%` : `${(o.direction === 'left' ? 100 - edge : edge).toFixed(1)}% ${t.toFixed(1)}%`);
139
+ }
140
+ const tail = o.direction === 'up' ? ['100% 100%', '0% 100%'] : o.direction === 'down' ? ['100% 0%', '0% 0%'] : o.direction === 'left' ? ['100% 100%', '100% 0%'] : ['0% 100%', '0% 0%'];
141
+ if (o.direction === 'up' || o.direction === 'down')
142
+ return `polygon(${[...pts, ...tail].join(',')})`;
143
+ return `polygon(${[...pts, ...tail].join(',')})`;
144
+ };
145
+ const frames = Array.from({ length: 9 }, (_, i) => ({ clipPath: shape(i / 8) }));
146
+ return ctx.animate(el, out ? frames.reverse() : frames, { duration: o.duration, easing: 'cubic-bezier(.65,.05,.35,1)', fill: out ? 'forwards' : 'none' });
147
+ },
148
+ },
149
+ {
150
+ name: 'page-curl',
151
+ kind: 'page',
152
+ description: 'The element turns like a page around its left edge, with a moving shade (`duration`).',
153
+ defaults: { mode: 'in', duration: 900 },
154
+ run: (el, o, ctx) => {
155
+ const out = isOut(o);
156
+ if (ctx.reduced)
157
+ return fade(el, ctx, out);
158
+ const prev = el.style.transformOrigin;
159
+ el.style.transformOrigin = '0% 50%';
160
+ const f = [
161
+ { transform: 'perspective(1400px) rotateY(-100deg) skewY(-4deg)', filter: 'brightness(.55)', boxShadow: '30px 0 40px rgba(0,0,0,.35)', opacity: 0.4 },
162
+ { transform: 'perspective(1400px) rotateY(-40deg) skewY(-2deg)', filter: 'brightness(.8)', boxShadow: '20px 0 30px rgba(0,0,0,.25)', opacity: 1, offset: 0.5 },
163
+ { transform: 'perspective(1400px) rotateY(0) skewY(0)', filter: 'brightness(1)', boxShadow: '0 0 0 rgba(0,0,0,0)', opacity: 1 },
164
+ ];
165
+ const a = ctx.animate(el, dir(f, out), { duration: o.duration, easing: 'cubic-bezier(.45,.05,.3,1)', fill: out ? 'forwards' : 'none' });
166
+ const reset = () => (el.style.transformOrigin = prev);
167
+ if (a)
168
+ a.finished.then(reset, reset);
169
+ else
170
+ reset();
171
+ return a;
172
+ },
173
+ },
174
+ {
175
+ name: 'camera-dolly',
176
+ kind: 'page',
177
+ description: 'A dolly zoom: the element moves in from (or out to) depth with a depth-of-field blur (`scale`, `duration`).',
178
+ defaults: { mode: 'in', duration: 900, scale: 1.35 },
179
+ run: (el, o, ctx) => {
180
+ const out = isOut(o);
181
+ if (ctx.reduced)
182
+ return fade(el, ctx, out);
183
+ const f = [
184
+ { transform: `perspective(900px) translateZ(-260px) scale(${o.scale})`, filter: 'blur(10px)', opacity: 0 },
185
+ { transform: 'perspective(900px) translateZ(0) scale(1)', filter: 'blur(0)', opacity: 1 },
186
+ ];
187
+ return ctx.animate(el, out ? [f[1], { ...f[0], transform: `perspective(900px) translateZ(260px) scale(${(1 / o.scale).toFixed(3)})` }] : f, { duration: o.duration, easing: 'cubic-bezier(.2,.7,.2,1)', fill: out ? 'forwards' : 'none' });
188
+ },
189
+ },
190
+ ];
191
+ /** CSS keyframes for the `::view-transition-new(root)` snapshot of each effect (cross-document transitions). */
192
+ const VT_CSS = {
193
+ 'ripple-dissolve': 'from{clip-path:circle(0% at 50% 50%)}to{clip-path:circle(150% at 50% 50%)}',
194
+ 'liquid-wipe': 'from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}',
195
+ 'page-curl': 'from{transform:perspective(1400px) rotateY(-100deg);transform-origin:0 50%;filter:brightness(.6)}to{transform:none;transform-origin:0 50%}',
196
+ 'camera-dolly': 'from{transform:scale(1.35);filter:blur(10px);opacity:0}to{transform:none;filter:none;opacity:1}',
197
+ 'mosaic-flip': 'from{transform:perspective(900px) rotateY(-90deg);opacity:0}to{transform:none;opacity:1}',
198
+ shatter: 'from{transform:scale(.85) rotate(-3deg);opacity:0;filter:blur(4px)}to{transform:none;opacity:1;filter:none}',
199
+ };
200
+ /**
201
+ * Run `update` (a DOM change) as a transition: inside `document.startViewTransition`
202
+ * when supported (the new snapshot plays `effect`), otherwise `update()` then the
203
+ * effect on `target` (default `document.body`'s first element).
204
+ */
205
+ async function pageTransition(update, effect = 'ripple-dissolve', options = {}, target) {
206
+ const doc = document;
207
+ const def = getEffect(effect);
208
+ if (typeof doc.startViewTransition === 'function' && !prefersReducedMotion()) {
209
+ const vt = doc.startViewTransition(update);
210
+ await vt.ready.catch(() => undefined);
211
+ const css = VT_CSS[effect];
212
+ if (css) {
213
+ const dur = Number(options.duration) || Number(def?.defaults?.duration) || 800;
214
+ const m = /from\{([^}]*)\}to\{([^}]*)\}/.exec(css);
215
+ const toObj = (s) => Object.fromEntries(s.split(';').filter(Boolean).map((d) => { const i = d.indexOf(':'); return [d.slice(0, i).replace(/-([a-z])/g, (_, c) => c.toUpperCase()), d.slice(i + 1)]; }));
216
+ if (m)
217
+ document.documentElement.animate([toObj(m[1]), toObj(m[2])], { duration: dur, easing: 'cubic-bezier(.6,.05,.3,1)', pseudoElement: '::view-transition-new(root)' });
218
+ }
219
+ await vt.finished.catch(() => undefined);
220
+ return;
221
+ }
222
+ await update();
223
+ const el = target || document.body.firstElementChild;
224
+ if (el && def) {
225
+ const { playEffect } = await import('../chunks/registry-D23neB4M.js');
226
+ await playEffect(el, effect, { ...options, mode: 'in' });
227
+ }
228
+ }
229
+ /** Opt a multi-page site into cross-document view transitions with an effect's look. Returns a remover. */
230
+ function crossDocumentTransitions(effect = 'ripple-dissolve', duration = 700) {
231
+ const style = document.createElement('style');
232
+ style.setAttribute('data-usa-vt', effect);
233
+ const kf = VT_CSS[effect] || VT_CSS['camera-dolly'];
234
+ style.textContent = `@view-transition{navigation:auto}@keyframes usa-vt-in{${kf}}::view-transition-new(root){animation:usa-vt-in ${duration}ms cubic-bezier(.6,.05,.3,1) both}::view-transition-old(root){animation:none}@media (prefers-reduced-motion:reduce){::view-transition-new(root){animation-duration:1ms}}`;
235
+ document.head.appendChild(style);
236
+ return () => style.remove();
237
+ }
238
+ /** Register the 6.7 transitions pack (idempotent). */
239
+ function registerTransitionEffects2() {
240
+ registerEffects(TRANSITIONS2_FX);
241
+ }
242
+
243
+ export { TRANSITIONS2_FX, crossDocumentTransitions, pageTransition, registerTransitionEffects2 };
244
+ //# sourceMappingURL=fx-transitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fx-transitions.js","sources":["../../src/components/fx2/transitions2.ts"],"sourcesContent":["/**\n * 6.7 — Transitions 2.0 (`motionary/components/fx-transitions`), registered\n * through `registerEffect()` (kind `page`; option `mode: 'in' | 'out'`):\n *\n * - `ripple-dissolve` — a circle with a ripple ring grows from the pointer\n * (or `x` / `y` 0–1) and reveals / hides the element.\n * - `shatter` — the element breaks into shards that fly apart (out) or\n * fly together (in).\n * - `mosaic-flip` — a grid of tiles flips over in a diagonal wave.\n * - `liquid-wipe` — a wavy liquid edge sweeps across.\n * - `page-curl` — the element turns like a page around its left edge.\n * - `camera-dolly` — a dolly zoom: scale + depth blur + fade.\n *\n * `pageTransition(update, effect)` runs a DOM update inside the View\n * Transitions API (when available) and plays the effect on the new snapshot;\n * without the API it runs `update()` and plays the effect on `target`.\n * `crossDocumentTransitions(effect)` opts an MPA into cross-document view\n * transitions (`@view-transition { navigation: auto }`) with the same look.\n * Reduced motion: plain short fades.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects, getEffect } from '../fx/registry';\nimport { prefersReducedMotion } from '../base';\nimport { all, origin } from '../effects/shared';\n\nconst fade = (el: Element, ctx: EffectContext, out: boolean) => ctx.animate(el, out ? [{ opacity: 1 }, { opacity: 0 }] : [{ opacity: 0 }, { opacity: 1 }], { duration: 200, fill: out ? 'forwards' : 'none' });\nconst isOut = (o: any) => o.mode === 'out';\nconst dir = (frames: Keyframe[], out: boolean) => (out ? [...frames].reverse().map((f) => ({ ...f, offset: undefined as unknown as number })).map(({ offset, ...f }) => f) : frames);\n\n/** Clipped copies of `el` laid over it (the original is hidden meanwhile). */\nfunction pieces(el: HTMLElement, clips: string[]): { parts: HTMLElement[]; done: () => void } {\n if (getComputedStyle(el).position === 'static') el.style.position = 'relative';\n const prevVis = el.style.visibility;\n const wrap = document.createElement('div');\n wrap.setAttribute('aria-hidden', 'true');\n wrap.style.cssText = 'position:absolute;inset:0;pointer-events:none;perspective:900px;visibility:visible;z-index:1';\n const parts = clips.map((c) => {\n const p = el.cloneNode(true) as HTMLElement;\n p.removeAttribute('id');\n p.querySelectorAll('[id]').forEach((x) => x.removeAttribute('id'));\n p.style.cssText += `;position:absolute;inset:0;margin:0;width:100%;height:100%;box-sizing:border-box;clip-path:${c};visibility:visible`;\n wrap.appendChild(p);\n return p;\n });\n el.style.visibility = 'hidden';\n el.appendChild(wrap);\n return {\n parts,\n done: () => {\n wrap.remove();\n el.style.visibility = prevVis;\n },\n };\n}\n\nexport const TRANSITIONS2_FX: EffectDefinition[] = [\n {\n name: 'ripple-dissolve',\n kind: 'page',\n description: 'A circle with a ripple ring grows from the pointer (or `x` / `y` 0–1) and reveals (`mode: \"in\"`) or hides (`\"out\"`) the element.',\n defaults: { mode: 'in', duration: 900, x: 0.5, y: 0.5 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const out = isOut(o);\n if (ctx.reduced) return fade(el, ctx, out);\n const r = el.getBoundingClientRect();\n const p = ctx.event ? origin(el, ctx) : { x: r.left + r.width * o.x, y: r.top + r.height * o.y };\n const at = `${(p.x - r.left).toFixed(0)}px ${(p.y - r.top).toFixed(0)}px`;\n const f: Keyframe[] = [\n { clipPath: `circle(0% at ${at})`, filter: 'blur(2px)' },\n { clipPath: `circle(38% at ${at})`, filter: 'blur(0)', offset: 0.45 },\n { clipPath: `circle(150% at ${at})`, filter: 'blur(0)' },\n ];\n return ctx.animate(el, out ? [f[2], f[0]] : f, { duration: o.duration, easing: 'cubic-bezier(.6,.05,.3,1)', fill: out ? 'forwards' : 'none' });\n },\n },\n {\n name: 'shatter',\n kind: 'page',\n description: 'The element breaks into shards that fly apart (`mode: \"out\"`) or fly together (`\"in\"`) (`pieces`, `duration`).',\n defaults: { mode: 'out', duration: 900, pieces: 12 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const out = isOut(o);\n if (ctx.reduced) return fade(el, ctx, out);\n const n = Math.max(4, Math.min(24, o.pieces | 0));\n const cols = Math.ceil(Math.sqrt(n / 2));\n const rows = Math.ceil(n / 2 / cols);\n const clips: string[] = [];\n for (let r = 0; r < rows; r++)\n for (let c = 0; c < cols; c++) {\n const x0 = (c / cols) * 100;\n const x1 = ((c + 1) / cols) * 100;\n const y0 = (r / rows) * 100;\n const y1 = ((r + 1) / rows) * 100;\n clips.push(`polygon(${x0}% ${y0}%,${x1}% ${y0}%,${x0}% ${y1}%)`, `polygon(${x1}% ${y0}%,${x1}% ${y1}%,${x0}% ${y1}%)`);\n }\n const { parts, done } = pieces(el, clips);\n const anims = parts.map((p, i) => {\n const a = (i * 2.399) % (Math.PI * 2);\n const d = 80 + (i % 5) * 30;\n const scattered = { transform: `translate(${(Math.cos(a) * d).toFixed(0)}px,${(Math.sin(a) * d + 40).toFixed(0)}px) rotate(${((i % 7) - 3) * 35}deg) rotateX(${(i % 3) * 40}deg)`, opacity: 0 };\n const whole = { transform: 'none', opacity: 1 };\n return ctx.animate(p, out ? [whole, scattered] : [scattered, whole], { duration: o.duration, delay: (i % 6) * 25, easing: out ? 'cubic-bezier(.4,0,.9,.6)' : 'cubic-bezier(.1,.6,.3,1)', fill: 'both' });\n });\n return all(anims).then(() => {\n done();\n if (out) el.style.visibility = 'hidden';\n });\n },\n },\n {\n name: 'mosaic-flip',\n kind: 'page',\n description: 'A grid of tiles flips over in a diagonal wave (`cols`, `rows`, `duration` per tile).',\n defaults: { mode: 'in', cols: 6, rows: 4, duration: 520 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const out = isOut(o);\n if (ctx.reduced) return fade(el, ctx, out);\n const C = Math.max(2, Math.min(12, o.cols | 0));\n const R = Math.max(2, Math.min(10, o.rows | 0));\n const clips: string[] = [];\n for (let r = 0; r < R; r++) for (let c = 0; c < C; c++) clips.push(`inset(${((r / R) * 100).toFixed(2)}% ${(100 - ((c + 1) / C) * 100).toFixed(2)}% ${(100 - ((r + 1) / R) * 100).toFixed(2)}% ${((c / C) * 100).toFixed(2)}%)`);\n const { parts, done } = pieces(el, clips);\n const anims = parts.map((p, i) => {\n const r = Math.floor(i / C);\n const c = i % C;\n p.style.transformOrigin = `${((c + 0.5) / C) * 100}% ${((r + 0.5) / R) * 100}%`;\n p.style.backfaceVisibility = 'hidden';\n const f: Keyframe[] = [{ transform: 'rotateY(-90deg)', opacity: 0 }, { transform: 'rotateY(0)', opacity: 1 }];\n return ctx.animate(p, out ? [f[1], f[0]] : f, { duration: o.duration, delay: (r + c) * 45, easing: 'cubic-bezier(.3,.7,.3,1)', fill: 'both' });\n });\n return all(anims).then(() => {\n done();\n if (out) el.style.visibility = 'hidden';\n });\n },\n },\n {\n name: 'liquid-wipe',\n kind: 'page',\n description: 'A wavy liquid edge sweeps across the element (`direction` left | right | up | down, `waves`, `duration`).',\n defaults: { mode: 'in', direction: 'right', waves: 3, duration: 1000 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const out = isOut(o);\n if (ctx.reduced) return fade(el, ctx, out);\n const N = 24;\n const shape = (k: number) => {\n const pts: string[] = [];\n const amp = 6 * Math.sin(Math.PI * k);\n for (let i = 0; i <= N; i++) {\n const t = (i / N) * 100;\n const edge = k * 120 - 10 + amp * Math.sin((i / N) * Math.PI * 2 * o.waves + k * 6);\n pts.push(o.direction === 'up' || o.direction === 'down' ? `${t.toFixed(1)}% ${(o.direction === 'down' ? edge : 100 - edge).toFixed(1)}%` : `${(o.direction === 'left' ? 100 - edge : edge).toFixed(1)}% ${t.toFixed(1)}%`);\n }\n const tail = o.direction === 'up' ? ['100% 100%', '0% 100%'] : o.direction === 'down' ? ['100% 0%', '0% 0%'] : o.direction === 'left' ? ['100% 100%', '100% 0%'] : ['0% 100%', '0% 0%'];\n if (o.direction === 'up' || o.direction === 'down') return `polygon(${[...pts, ...tail].join(',')})`;\n return `polygon(${[...pts, ...tail].join(',')})`;\n };\n const frames: Keyframe[] = Array.from({ length: 9 }, (_, i) => ({ clipPath: shape(i / 8) }));\n return ctx.animate(el, out ? frames.reverse() : frames, { duration: o.duration, easing: 'cubic-bezier(.65,.05,.35,1)', fill: out ? 'forwards' : 'none' });\n },\n },\n {\n name: 'page-curl',\n kind: 'page',\n description: 'The element turns like a page around its left edge, with a moving shade (`duration`).',\n defaults: { mode: 'in', duration: 900 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const out = isOut(o);\n if (ctx.reduced) return fade(el, ctx, out);\n const prev = el.style.transformOrigin;\n el.style.transformOrigin = '0% 50%';\n const f: Keyframe[] = [\n { transform: 'perspective(1400px) rotateY(-100deg) skewY(-4deg)', filter: 'brightness(.55)', boxShadow: '30px 0 40px rgba(0,0,0,.35)', opacity: 0.4 },\n { transform: 'perspective(1400px) rotateY(-40deg) skewY(-2deg)', filter: 'brightness(.8)', boxShadow: '20px 0 30px rgba(0,0,0,.25)', opacity: 1, offset: 0.5 },\n { transform: 'perspective(1400px) rotateY(0) skewY(0)', filter: 'brightness(1)', boxShadow: '0 0 0 rgba(0,0,0,0)', opacity: 1 },\n ];\n const a = ctx.animate(el, dir(f, out), { duration: o.duration, easing: 'cubic-bezier(.45,.05,.3,1)', fill: out ? 'forwards' : 'none' });\n const reset = () => (el.style.transformOrigin = prev);\n if (a) a.finished.then(reset, reset);\n else reset();\n return a;\n },\n },\n {\n name: 'camera-dolly',\n kind: 'page',\n description: 'A dolly zoom: the element moves in from (or out to) depth with a depth-of-field blur (`scale`, `duration`).',\n defaults: { mode: 'in', duration: 900, scale: 1.35 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const out = isOut(o);\n if (ctx.reduced) return fade(el, ctx, out);\n const f: Keyframe[] = [\n { transform: `perspective(900px) translateZ(-260px) scale(${o.scale})`, filter: 'blur(10px)', opacity: 0 },\n { transform: 'perspective(900px) translateZ(0) scale(1)', filter: 'blur(0)', opacity: 1 },\n ];\n return ctx.animate(el, out ? [f[1], { ...f[0], transform: `perspective(900px) translateZ(260px) scale(${(1 / o.scale).toFixed(3)})` }] : f, { duration: o.duration, easing: 'cubic-bezier(.2,.7,.2,1)', fill: out ? 'forwards' : 'none' });\n },\n },\n];\n\n/** CSS keyframes for the `::view-transition-new(root)` snapshot of each effect (cross-document transitions). */\nconst VT_CSS: Record<string, string> = {\n 'ripple-dissolve': 'from{clip-path:circle(0% at 50% 50%)}to{clip-path:circle(150% at 50% 50%)}',\n 'liquid-wipe': 'from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}',\n 'page-curl': 'from{transform:perspective(1400px) rotateY(-100deg);transform-origin:0 50%;filter:brightness(.6)}to{transform:none;transform-origin:0 50%}',\n 'camera-dolly': 'from{transform:scale(1.35);filter:blur(10px);opacity:0}to{transform:none;filter:none;opacity:1}',\n 'mosaic-flip': 'from{transform:perspective(900px) rotateY(-90deg);opacity:0}to{transform:none;opacity:1}',\n shatter: 'from{transform:scale(.85) rotate(-3deg);opacity:0;filter:blur(4px)}to{transform:none;opacity:1;filter:none}',\n};\n\n/**\n * Run `update` (a DOM change) as a transition: inside `document.startViewTransition`\n * when supported (the new snapshot plays `effect`), otherwise `update()` then the\n * effect on `target` (default `document.body`'s first element).\n */\nexport async function pageTransition(update: () => void | Promise<void>, effect = 'ripple-dissolve', options: Record<string, unknown> = {}, target?: HTMLElement): Promise<void> {\n const doc = document as Document & { startViewTransition?: (cb: () => unknown) => { ready: Promise<void>; finished: Promise<void> } };\n const def = getEffect(effect);\n if (typeof doc.startViewTransition === 'function' && !prefersReducedMotion()) {\n const vt = doc.startViewTransition(update);\n await vt.ready.catch(() => undefined);\n const css = VT_CSS[effect];\n if (css) {\n const dur = Number(options.duration) || Number(def?.defaults?.duration) || 800;\n const m = /from\\{([^}]*)\\}to\\{([^}]*)\\}/.exec(css);\n const toObj = (s: string) => Object.fromEntries(s.split(';').filter(Boolean).map((d) => { const i = d.indexOf(':'); return [d.slice(0, i).replace(/-([a-z])/g, (_, c) => c.toUpperCase()), d.slice(i + 1)]; }));\n if (m) document.documentElement.animate([toObj(m[1]), toObj(m[2])], { duration: dur, easing: 'cubic-bezier(.6,.05,.3,1)', pseudoElement: '::view-transition-new(root)' } as KeyframeAnimationOptions);\n }\n await vt.finished.catch(() => undefined);\n return;\n }\n await update();\n const el = target || (document.body.firstElementChild as HTMLElement | null);\n if (el && def) {\n const { playEffect } = await import('../fx/registry');\n await playEffect(el, effect, { ...options, mode: 'in' });\n }\n}\n\n/** Opt a multi-page site into cross-document view transitions with an effect's look. Returns a remover. */\nexport function crossDocumentTransitions(effect = 'ripple-dissolve', duration = 700): () => void {\n const style = document.createElement('style');\n style.setAttribute('data-usa-vt', effect);\n const kf = VT_CSS[effect] || VT_CSS['camera-dolly'];\n style.textContent = `@view-transition{navigation:auto}@keyframes usa-vt-in{${kf}}::view-transition-new(root){animation:usa-vt-in ${duration}ms cubic-bezier(.6,.05,.3,1) both}::view-transition-old(root){animation:none}@media (prefers-reduced-motion:reduce){::view-transition-new(root){animation-duration:1ms}}`;\n document.head.appendChild(style);\n return () => style.remove();\n}\n\n/** Register the 6.7 transitions pack (idempotent). */\nexport function registerTransitionEffects2(): void {\n registerEffects(TRANSITIONS2_FX);\n}\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { y as defineElement } from '../chunks/base-DchG4q_S.js';
2
- import { p as playEffect, b as bindEffect, a as EFFECT_TRIGGERS, c as registerEffects } from '../chunks/registry-Bu5NrAyA.js';
3
- export { E as EFFECT_KINDS, g as getEffect, h as hasEffect, l as listEffects, r as registerEffect } from '../chunks/registry-Bu5NrAyA.js';
2
+ import { playEffect, bindEffect, EFFECT_TRIGGERS, registerEffects } from '../chunks/registry-D23neB4M.js';
3
+ export { EFFECT_KINDS, getEffect, hasEffect, listEffects, registerEffect } from '../chunks/registry-D23neB4M.js';
4
4
  import { T as TIMELINE_PRESETS } from '../chunks/core-DVyTlo9Q.js';
5
5
  import { b as burst, c as confetti, s as shake } from '../chunks/fx-DUMVKSvg.js';
6
6
  import './tokens.js';
@@ -5,6 +5,7 @@ var components_fxText = require('./fx-text.cjs');
5
5
  var components_fxLight = require('./fx-light.cjs');
6
6
  var components_fx3d = require('./fx-3d.cjs');
7
7
  var components_fxMorph = require('./fx-morph.cjs');
8
+ var components_fxTransitions = require('./fx-transitions.cjs');
8
9
  require('../chunks/registry-DehBVRDV.cjs');
9
10
  require('../chunks/base-BaQV-2ha.cjs');
10
11
  require('../chunks/generative-BHIj-NU0.cjs');
@@ -17,6 +18,7 @@ const FX2_PACKS = {
17
18
  light: components_fxLight.LIGHT_FX,
18
19
  depth: components_fx3d.DEPTH3_FX,
19
20
  morph: components_fxMorph.MORPH2_FX,
21
+ transitions: components_fxTransitions.TRANSITIONS2_FX,
20
22
  };
21
23
  /** Register every 6.x pack (idempotent). */
22
24
  function registerFx2() {
@@ -25,6 +27,7 @@ function registerFx2() {
25
27
  components_fxLight.registerLightEffects();
26
28
  components_fx3d.register3dEffects();
27
29
  components_fxMorph.registerMorphEffects2();
30
+ components_fxTransitions.registerTransitionEffects2();
28
31
  }
29
32
 
30
33
  exports.GLSL_HEAD = components_fxGpu.GLSL_HEAD;
@@ -45,6 +48,10 @@ exports.MORPH2_FX = components_fxMorph.MORPH2_FX;
45
48
  exports.pointsToPath = components_fxMorph.pointsToPath;
46
49
  exports.registerMorphEffects2 = components_fxMorph.registerMorphEffects2;
47
50
  exports.samplePath = components_fxMorph.samplePath;
51
+ exports.TRANSITIONS2_FX = components_fxTransitions.TRANSITIONS2_FX;
52
+ exports.crossDocumentTransitions = components_fxTransitions.crossDocumentTransitions;
53
+ exports.pageTransition = components_fxTransitions.pageTransition;
54
+ exports.registerTransitionEffects2 = components_fxTransitions.registerTransitionEffects2;
48
55
  exports.FX2_PACKS = FX2_PACKS;
49
56
  exports.registerFx2 = registerFx2;
50
57
  //# sourceMappingURL=fx2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"fx2.cjs","sources":["../../src/components/fx2/index.ts"],"sourcesContent":["/**\n * The 6.x effect packs, one entry each (`motionary/components/fx-gpu`, …) so\n * their size budgets stay separate. This module (`registerFx2()`) registers\n * them all — used by dist/widgets.umd.js and the showcase.\n */\nimport type { EffectDefinition } from '../fx/registry';\nimport { GPU_FX, registerGpuEffects } from './gpu';\nimport { TEXT3_FX, registerTextEffects3, splitChars } from './text3';\nimport { LIGHT_FX, registerLightEffects, trackPointer } from './light';\nimport { DEPTH3_FX, register3dEffects } from './depth3';\nimport { MORPH2_FX, registerMorphEffects2, samplePath, pointsToPath } from './morph2';\n\nexport { GPU_FX, registerGpuEffects, TEXT3_FX, registerTextEffects3, splitChars };\nexport { shaderBackground, supportsWebGL2, fieldFallback, GLSL_HEAD } from './gl';\nexport type { ShaderSpec } from './gl';\n\nexport { LIGHT_FX, registerLightEffects, trackPointer };\n\nexport { DEPTH3_FX, register3dEffects };\n\nexport { MORPH2_FX, registerMorphEffects2, samplePath, pointsToPath };\n\n/** The 6.x effect packs by name. */\nexport const FX2_PACKS: Record<string, EffectDefinition[]> = {\n gpu: GPU_FX,\n text: TEXT3_FX,\n light: LIGHT_FX,\n depth: DEPTH3_FX,\n morph: MORPH2_FX,\n};\n\n/** Register every 6.x pack (idempotent). */\nexport function registerFx2(): void {\n registerGpuEffects();\n registerTextEffects3();\n registerLightEffects();\n register3dEffects();\n registerMorphEffects2();\n}\n"],"names":["GPU_FX","TEXT3_FX","LIGHT_FX","DEPTH3_FX","MORPH2_FX","registerGpuEffects","registerTextEffects3","registerLightEffects","register3dEffects","registerMorphEffects2"],"mappings":";;;;;;;;;;;;AAsBA;AACO,MAAM,SAAS,GAAuC;AAC3D,IAAA,GAAG,EAAEA,uBAAM;AACX,IAAA,IAAI,EAAEC,0BAAQ;AACd,IAAA,KAAK,EAAEC,2BAAQ;AACf,IAAA,KAAK,EAAEC,yBAAS;AAChB,IAAA,KAAK,EAAEC,4BAAS;;AAGlB;SACgB,WAAW,GAAA;AACzB,IAAAC,mCAAkB,EAAE;AACpB,IAAAC,sCAAoB,EAAE;AACtB,IAAAC,uCAAoB,EAAE;AACtB,IAAAC,iCAAiB,EAAE;AACnB,IAAAC,wCAAqB,EAAE;AACzB;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"fx2.cjs","sources":["../../src/components/fx2/index.ts"],"sourcesContent":["/**\n * The 6.x effect packs, one entry each (`motionary/components/fx-gpu`, …) so\n * their size budgets stay separate. This module (`registerFx2()`) registers\n * them all — used by dist/widgets.umd.js and the showcase.\n */\nimport type { EffectDefinition } from '../fx/registry';\nimport { GPU_FX, registerGpuEffects } from './gpu';\nimport { TEXT3_FX, registerTextEffects3, splitChars } from './text3';\nimport { LIGHT_FX, registerLightEffects, trackPointer } from './light';\nimport { DEPTH3_FX, register3dEffects } from './depth3';\nimport { MORPH2_FX, registerMorphEffects2, samplePath, pointsToPath } from './morph2';\nimport { TRANSITIONS2_FX, registerTransitionEffects2, pageTransition, crossDocumentTransitions } from './transitions2';\n\nexport { GPU_FX, registerGpuEffects, TEXT3_FX, registerTextEffects3, splitChars };\nexport { shaderBackground, supportsWebGL2, fieldFallback, GLSL_HEAD } from './gl';\nexport type { ShaderSpec } from './gl';\n\nexport { LIGHT_FX, registerLightEffects, trackPointer };\n\nexport { DEPTH3_FX, register3dEffects };\n\nexport { MORPH2_FX, registerMorphEffects2, samplePath, pointsToPath };\n\nexport { TRANSITIONS2_FX, registerTransitionEffects2, pageTransition, crossDocumentTransitions };\n\n/** The 6.x effect packs by name. */\nexport const FX2_PACKS: Record<string, EffectDefinition[]> = {\n gpu: GPU_FX,\n text: TEXT3_FX,\n light: LIGHT_FX,\n depth: DEPTH3_FX,\n morph: MORPH2_FX,\n transitions: TRANSITIONS2_FX,\n};\n\n/** Register every 6.x pack (idempotent). */\nexport function registerFx2(): void {\n registerGpuEffects();\n registerTextEffects3();\n registerLightEffects();\n register3dEffects();\n registerMorphEffects2();\n registerTransitionEffects2();\n}\n"],"names":["GPU_FX","TEXT3_FX","LIGHT_FX","DEPTH3_FX","MORPH2_FX","TRANSITIONS2_FX","registerGpuEffects","registerTextEffects3","registerLightEffects","register3dEffects","registerMorphEffects2","registerTransitionEffects2"],"mappings":";;;;;;;;;;;;;AAyBA;AACO,MAAM,SAAS,GAAuC;AAC3D,IAAA,GAAG,EAAEA,uBAAM;AACX,IAAA,IAAI,EAAEC,0BAAQ;AACd,IAAA,KAAK,EAAEC,2BAAQ;AACf,IAAA,KAAK,EAAEC,yBAAS;AAChB,IAAA,KAAK,EAAEC,4BAAS;AAChB,IAAA,WAAW,EAAEC,wCAAe;;AAG9B;SACgB,WAAW,GAAA;AACzB,IAAAC,mCAAkB,EAAE;AACpB,IAAAC,sCAAoB,EAAE;AACtB,IAAAC,uCAAoB,EAAE;AACtB,IAAAC,iCAAiB,EAAE;AACnB,IAAAC,wCAAqB,EAAE;AACvB,IAAAC,mDAA0B,EAAE;AAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;"}