motionary 7.0.0 → 7.2.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 (94) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/chunks/audio-DcPvT2Kh.js +333 -0
  3. package/dist/chunks/audio-DcPvT2Kh.js.map +1 -0
  4. package/dist/chunks/audio-EXUoijsG.cjs +342 -0
  5. package/dist/chunks/audio-EXUoijsG.cjs.map +1 -0
  6. package/dist/chunks/{base-DchG4q_S.js → base-2-yYc93C.js} +2 -2
  7. package/dist/chunks/{base-DchG4q_S.js.map → base-2-yYc93C.js.map} +1 -1
  8. package/dist/chunks/{core-DVyTlo9Q.js → core-D5rU0CV6.js} +2 -2
  9. package/dist/chunks/{core-DVyTlo9Q.js.map → core-D5rU0CV6.js.map} +1 -1
  10. package/dist/chunks/{core-D2vF8kZb.js → core-DuO-AVXL.js} +2 -2
  11. package/dist/chunks/{core-D2vF8kZb.js.map → core-DuO-AVXL.js.map} +1 -1
  12. package/dist/chunks/{fx-DUMVKSvg.js → fx-CMxWNwH8.js} +2 -2
  13. package/dist/chunks/{fx-DUMVKSvg.js.map → fx-CMxWNwH8.js.map} +1 -1
  14. package/dist/chunks/{gpu-Bkw605Ds.js → gpu-DLPghVWr.js} +2 -2
  15. package/dist/chunks/{gpu-Bkw605Ds.js.map → gpu-DLPghVWr.js.map} +1 -1
  16. package/dist/chunks/{player-C-TwEEy6.js → player-DxvCYo7Q.js} +4 -4
  17. package/dist/chunks/{player-C-TwEEy6.js.map → player-DxvCYo7Q.js.map} +1 -1
  18. package/dist/chunks/{registry-D23neB4M.js → registry-CyKExAmE.js} +2 -2
  19. package/dist/chunks/{registry-D23neB4M.js.map → registry-CyKExAmE.js.map} +1 -1
  20. package/dist/chunks/{spring-BhoT09Qb.js → spring-BK8DiezC.js} +2 -2
  21. package/dist/chunks/{spring-BhoT09Qb.js.map → spring-BK8DiezC.js.map} +1 -1
  22. package/dist/chunks/{variants-C_hv_s23.js → variants-BQ6bhzn4.js} +2 -2
  23. package/dist/chunks/{variants-C_hv_s23.js.map → variants-BQ6bhzn4.js.map} +1 -1
  24. package/dist/components/a11y.js +2 -2
  25. package/dist/components/angular.js +7 -7
  26. package/dist/components/background.js +2 -2
  27. package/dist/components/bridge.js +1 -1
  28. package/dist/components/cards.js +2 -2
  29. package/dist/components/click.js +3 -3
  30. package/dist/components/depth.js +3 -3
  31. package/dist/components/effects.cjs +11 -336
  32. package/dist/components/effects.cjs.map +1 -1
  33. package/dist/components/effects.js +9 -333
  34. package/dist/components/effects.js.map +1 -1
  35. package/dist/components/feedback.js +1 -1
  36. package/dist/components/fx-3d.js +2 -2
  37. package/dist/components/fx-chart.cjs +158 -0
  38. package/dist/components/fx-chart.cjs.map +1 -0
  39. package/dist/components/fx-chart.d.cts +73 -0
  40. package/dist/components/fx-chart.d.ts +73 -0
  41. package/dist/components/fx-chart.js +154 -0
  42. package/dist/components/fx-chart.js.map +1 -0
  43. package/dist/components/fx-focus.js +2 -2
  44. package/dist/components/fx-gpu.js +3 -3
  45. package/dist/components/fx-light.js +2 -2
  46. package/dist/components/fx-morph.js +2 -2
  47. package/dist/components/fx-music.cjs +179 -0
  48. package/dist/components/fx-music.cjs.map +1 -0
  49. package/dist/components/fx-music.d.cts +102 -0
  50. package/dist/components/fx-music.d.ts +102 -0
  51. package/dist/components/fx-music.js +174 -0
  52. package/dist/components/fx-music.js.map +1 -0
  53. package/dist/components/fx-physics.js +2 -2
  54. package/dist/components/fx-text.js +2 -2
  55. package/dist/components/fx-transitions.js +3 -3
  56. package/dist/components/fx-weather.js +2 -2
  57. package/dist/components/fx.js +5 -5
  58. package/dist/components/fx2.cjs +14 -0
  59. package/dist/components/fx2.cjs.map +1 -1
  60. package/dist/components/fx2.d.cts +88 -1
  61. package/dist/components/fx2.d.ts +88 -1
  62. package/dist/components/fx2.js +14 -5
  63. package/dist/components/fx2.js.map +1 -1
  64. package/dist/components/gesture.js +4 -4
  65. package/dist/components/interaction.js +1 -1
  66. package/dist/components/layout.js +1 -1
  67. package/dist/components/marketplace.js +2 -2
  68. package/dist/components/packs.js +1 -1
  69. package/dist/components/page.js +3 -3
  70. package/dist/components/perf.js +2 -2
  71. package/dist/components/physics.js +3 -3
  72. package/dist/components/reveal.js +1 -1
  73. package/dist/components/solid.js +7 -7
  74. package/dist/components/svelte.js +7 -7
  75. package/dist/components/svg.js +1 -1
  76. package/dist/components/text.js +2 -2
  77. package/dist/components/timeline.js +3 -3
  78. package/dist/components/transitions.js +1 -1
  79. package/dist/components/ui.js +4 -4
  80. package/dist/components/vue.js +7 -7
  81. package/dist/components/webgl.js +1 -1
  82. package/dist/components/widgets.cjs +953 -61
  83. package/dist/components/widgets.cjs.map +1 -1
  84. package/dist/components/widgets.d.cts +143 -2
  85. package/dist/components/widgets.d.ts +143 -2
  86. package/dist/components/widgets.js +947 -67
  87. package/dist/components/widgets.js.map +1 -1
  88. package/dist/components.js +9 -9
  89. package/dist/index.js +2 -2
  90. package/dist/widgets.umd.js +1 -1
  91. package/dist/widgets.umd.js.map +1 -1
  92. package/docs/ROADMAP.md +2 -2
  93. package/docs/components.md +49 -0
  94. package/package.json +41 -1
@@ -1 +1 @@
1
- {"version":3,"file":"gpu-Bkw605Ds.js","sources":["../../src/components/fx2/webgpu.ts","../../src/components/fx2/gl.ts","../../src/components/fx2/gpu.ts"],"sourcesContent":["/**\n * 7.0 — WebGPU backend for the shader backgrounds (`shaderBackground()`).\n *\n * Every 6.x shader is written once as a small GLSL `main()` body. 7.0 runs it\n * on **WebGPU** where the browser has it: `glslToWgsl()` translates the body\n * (types, constructors, literals, loops, uniforms) into a WGSL fragment\n * shader with the same noise helpers; a spec can also ship hand-written\n * `wgsl`. If WebGPU is missing, the adapter / device is refused, or the\n * shader does not compile, the effect falls back to **WebGL2**, then to the\n * Canvas 2D fallback — `el.dataset.usaBackend` says which one runs.\n */\nimport type { EffectContext } from '../fx/registry';\nimport { hexRgb } from '../effects/generative';\n\n/** WGSL shared by every shader: uniforms, hash, value noise, fbm (mirrors `GLSL_HEAD`). */\nexport const WGSL_HEAD = `struct U{res:vec2f,ptr:vec2f,t:f32,speed:f32,scale:f32,pad:f32,c0:vec4f,c1:vec4f,c2:vec4f};\n@group(0) @binding(0) var<uniform> u:U;\nfn h(p:vec2f)->f32{return fract(sin(dot(p,vec2f(127.1,311.7)))*43758.5453);}\nfn n(p:vec2f)->f32{let i=floor(p);var f=fract(p);f=f*f*(3.0-2.0*f);return mix(mix(h(i),h(i+vec2f(1.0,0.0)),f.x),mix(h(i+vec2f(0.0,1.0)),h(i+vec2f(1.0,1.0)),f.x),f.y);}\nfn fbm(p0:vec2f)->f32{var v=0.0;var a=0.5;var p=p0;for(var k=0;k<5;k++){v+=a*n(p);p=p*2.03+vec2f(1.7,9.2);a*=0.5;}return v;}\n@vertex fn vs(@builtin(vertex_index) i:u32)->@builtin(position) vec4f{var q=array<vec2f,3>(vec2f(-1.0,-1.0),vec2f(3.0,-1.0),vec2f(-1.0,3.0));return vec4f(q[i],0.0,1.0);}\n`;\n\n/**\n * Translate a GLSL `main()` body (the 6.x `ShaderSpec.body` dialect) to WGSL\n * statements. Throws on constructs it does not support (ternaries, `mod`,\n * `discard`, user functions) so the caller can fall back to WebGL2.\n */\nexport function glslToWgsl(body: string): string {\n if (/[?]|\\bmod\\s*\\(|\\bdiscard\\b|\\bstruct\\b|\\buniform\\b|\\bvoid\\b/.test(body)) throw new Error('unsupported GLSL construct');\n let s = body;\n s = s.replace(/\\bu_c([012])\\b/g, 'u.c$1.xyz').replace(/\\bu_ptr\\b/g, 'u.ptr').replace(/\\bu_res\\b/g, 'u.res').replace(/\\bu_t\\b/g, 'u.t');\n s = s.replace(/for\\s*\\(\\s*int\\s+(\\w+)\\s*=/g, 'for(var $1:i32=');\n s = s.replace(/\\bfloat\\s+(\\w+)\\s*=/g, 'var $1:f32=');\n s = s.replace(/\\bvec([234])\\s+(\\w+)\\s*=/g, 'var $2:vec$1f=');\n s = s.replace(/\\bint\\s+(\\w+)\\s*=/g, 'var $1:i32=');\n s = s.replace(/\\bvec([234])\\s*\\(/g, 'vec$1f(').replace(/\\bfloat\\s*\\(/g, 'f32(').replace(/\\bint\\s*\\(/g, 'i32(').replace(/\\batan\\s*\\(([^(),]+),/g, 'atan2($1,');\n s = s.replace(/(\\d)\\.(?![\\d\\w])/g, '$1.0');\n s = s.replace(/(^|[^\\w.])\\.(\\d)/g, '$10.$2');\n if (/\\b(float|vec[234]|int|mat[234])\\s+\\w+\\s*[,;]/.test(s)) throw new Error('unsupported declaration');\n return s;\n}\n\n/** The full WGSL module for a body. */\nexport const wgslModule = (body: string): string =>\n `${WGSL_HEAD}@fragment fn fs(@builtin(position) fc:vec4f)->@location(0) vec4f{var uv=vec2f(fc.x,u.res.y-fc.y)/u.res;var p=uv*vec2f(u.res.x/u.res.y,1.0)*u.scale;var t=u.t*u.speed;var o=vec4f(0.0,0.0,0.0,1.0);${body}return o;}`;\n\n/** `true` when `navigator.gpu` exists (the adapter may still be refused). */\nexport const supportsWebGPU = (): boolean => typeof navigator !== 'undefined' && !!(navigator as Navigator & { gpu?: unknown }).gpu;\n\nconst rgb = (c: string): number[] => [...hexRgb(c).map((v) => v / 255), 1];\n\n/**\n * Start a WebGPU shader background behind `el`. Resolves to its cleanup, or\n * `null` when WebGPU cannot run this shader (the caller falls back).\n */\nexport async function webgpuBackground(el: HTMLElement, fx: EffectContext, spec: { body: string; wgsl?: string }, o: any): Promise<(() => void) | null> {\n if (!supportsWebGPU()) return null;\n let code: string;\n try {\n code = wgslModule(spec.wgsl || glslToWgsl(spec.body));\n } catch {\n return null;\n }\n const gpu = (navigator as any).gpu;\n try {\n const adapter = await gpu.requestAdapter({ powerPreference: 'low-power' });\n if (!adapter) return null;\n const device = await adapter.requestDevice();\n const module = device.createShaderModule({ code });\n const info = await module.getCompilationInfo?.();\n if (info?.messages?.some((m: any) => m.type === 'error')) return (device.destroy?.(), null);\n if (!el.isConnected) return (device.destroy?.(), null);\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('webgpu') as any;\n if (!ctx) return (device.destroy?.(), null);\n const format = gpu.getPreferredCanvasFormat();\n ctx.configure({ device, format, alphaMode: 'opaque' });\n device.pushErrorScope?.('validation');\n const pipeline = device.createRenderPipeline({ layout: 'auto', vertex: { module, entryPoint: 'vs' }, fragment: { module, entryPoint: 'fs', targets: [{ format }] }, primitive: { topology: 'triangle-list' } });\n const ubuf = device.createBuffer({ size: 80, usage: 0x40 | 0x8 /* UNIFORM | COPY_DST */ });\n const bind = device.createBindGroup({ layout: pipeline.getBindGroupLayout(0), entries: [{ binding: 0, resource: { buffer: ubuf } }] });\n const err = await device.popErrorScope?.();\n if (err) return (device.destroy?.(), null);\n canvas.setAttribute('aria-hidden', 'true');\n canvas.setAttribute('data-usa-fx-canvas', '');\n canvas.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1;border-radius:inherit';\n const restore: [string, string][] = [];\n const set = (k: 'position' | 'isolation', v: string) => {\n restore.push([k, el.style[k]]);\n el.style[k] = v;\n };\n if (getComputedStyle(el).position === 'static') set('position', 'relative');\n set('isolation', 'isolate');\n el.prepend(canvas);\n el.dataset.usaBackend = 'webgpu';\n const cols: string[] = o.colors || [];\n const data = new Float32Array(20);\n data.set([Number(o.speed) || 1, Number(o.scale) || 3, 0], 5);\n [0, 1, 2].forEach((i) => data.set(rgb(cols[i] || cols[0] || '#7c5cff'), 8 + i * 4));\n let ptr: [number, number] = [0.5, 0.5];\n let quality = Math.min(1, Math.max(0.3, Number(o.quality) || 0.75));\n let raf = 0;\n let visible = true;\n const t0 = performance.now();\n const resize = () => {\n const r = el.getBoundingClientRect();\n const dpr = Math.min(2, devicePixelRatio || 1) * quality;\n canvas.width = Math.max(1, Math.round(r.width * dpr));\n canvas.height = Math.max(1, Math.round(r.height * dpr));\n };\n const draw = (t: number) => {\n data.set([canvas.width, canvas.height, ptr[0], ptr[1], t], 0);\n device.queue.writeBuffer(ubuf, 0, data);\n const enc = device.createCommandEncoder();\n const pass = enc.beginRenderPass({ colorAttachments: [{ view: ctx.getCurrentTexture().createView(), loadOp: 'clear', storeOp: 'store', clearValue: { r: 0, g: 0, b: 0, a: 1 } }] });\n pass.setPipeline(pipeline);\n pass.setBindGroup(0, bind);\n pass.draw(3);\n pass.end();\n device.queue.submit([enc.finish()]);\n };\n let last = 0;\n let slow = 0;\n const frame = (now: number) => {\n raf = 0;\n if (last && now - last > 34 && ++slow > 24 && quality > 0.3) ((quality = Math.max(0.3, quality - 0.15)), (slow = 0), resize());\n last = now;\n draw((now - t0) / 1000);\n if (visible && !document.hidden) raf = requestAnimationFrame(frame);\n };\n const start = () => {\n if (!raf && !fx.reduced) raf = requestAnimationFrame(frame);\n };\n resize();\n draw(fx.reduced ? 7 : 0);\n const move = (e: PointerEvent) => {\n const r = el.getBoundingClientRect();\n ptr = [(e.clientX - r.left) / Math.max(1, r.width), 1 - (e.clientY - r.top) / Math.max(1, r.height)];\n };\n el.addEventListener('pointermove', move);\n const io = typeof IntersectionObserver === 'function' ? new IntersectionObserver((es) => (visible = es.some((e) => e.isIntersecting)) && start()) : null;\n io?.observe(el);\n const ro = typeof ResizeObserver === 'function' ? new ResizeObserver(() => (resize(), fx.reduced && draw(7))) : null;\n ro?.observe(el);\n const vis = () => !document.hidden && visible && start();\n document.addEventListener('visibilitychange', vis);\n start();\n return () => {\n cancelAnimationFrame(raf);\n io?.disconnect();\n ro?.disconnect();\n el.removeEventListener('pointermove', move);\n document.removeEventListener('visibilitychange', vis);\n canvas.remove();\n for (const [k, v] of restore) el.style[k as 'position'] = v;\n delete el.dataset.usaBackend;\n device.destroy?.();\n };\n } catch {\n return null;\n }\n}\n","/**\n * 6.2 — tiny WebGL2 full-screen shader runner with a Canvas 2D fallback, shared\n * by the 6.x GPU effect packs. One canvas behind the element (aria-hidden,\n * pointer-transparent), renders only while visible and the tab is shown,\n * adaptive resolution, pointer uniform, and a static first frame under reduced\n * motion. No WebGL2 (or a lost context / compile error) → the Canvas 2D\n * `fallback` spec runs through `canvasBackground()` instead.\n * `el.dataset.usaBackend` tells which one is active: `webgl2` or `canvas`.\n */\nimport type { EffectContext } from '../fx/registry';\nimport { webgpuBackground, supportsWebGPU } from './webgpu';\nimport { canvasBackground, hexRgb, noise2, type GenerativeSpec } from '../effects/generative';\n\nexport { hexRgb, noise2 };\n\n/** GLSL shared by every shader: uniforms, hash, value noise, fbm. */\nexport const GLSL_HEAD = `#version 300 es\nprecision highp float;\nuniform vec2 u_res;uniform float u_t;uniform vec3 u_c0,u_c1,u_c2;uniform vec2 u_ptr;uniform float u_speed,u_scale;\nout vec4 o;\nfloat h(vec2 p){return fract(sin(dot(p,vec2(127.1,311.7)))*43758.5453);}\nfloat n(vec2 p){vec2 i=floor(p),f=fract(p);f=f*f*(3.-2.*f);return mix(mix(h(i),h(i+vec2(1,0)),f.x),mix(h(i+vec2(0,1)),h(i+1.),f.x),f.y);}\nfloat fbm(vec2 p){float v=0.,a=.5;for(int k=0;k<5;k++){v+=a*n(p);p=p*2.03+vec2(1.7,9.2);a*=.5;}return v;}\n`;\nconst VERT = `#version 300 es\nin vec2 a;void main(){gl_Position=vec4(a,0.,1.);}`;\n\nexport interface ShaderSpec {\n /** 7.0: hand-written WGSL statements for the WebGPU backend (default: `glslToWgsl(body)`). */\n wgsl?: string;\n /** GLSL body of `main()`: `uv` (0–1), `p` (aspect-corrected, scaled), `t` (s × speed) are in scope; write `o`. */\n body: string;\n /** Canvas 2D fallback. */\n fallback: GenerativeSpec;\n}\n\n/** `true` when this browser can create a WebGL2 context (cached). */\nlet gl2: boolean | null = null;\nexport function supportsWebGL2(): boolean {\n if (gl2 !== null) return gl2;\n try {\n gl2 = typeof document !== 'undefined' && !!document.createElement('canvas').getContext('webgl2');\n } catch {\n gl2 = false;\n }\n return gl2;\n}\n\nfunction compile(gl: WebGL2RenderingContext, frag: string): WebGLProgram | null {\n const mk = (type: number, src: string) => {\n const s = gl.createShader(type)!;\n gl.shaderSource(s, src);\n gl.compileShader(s);\n return gl.getShaderParameter(s, gl.COMPILE_STATUS) ? s : null;\n };\n const v = mk(gl.VERTEX_SHADER, VERT);\n const f = mk(gl.FRAGMENT_SHADER, frag);\n if (!v || !f) return null;\n const p = gl.createProgram()!;\n gl.attachShader(p, v);\n gl.attachShader(p, f);\n gl.bindAttribLocation(p, 0, 'a');\n gl.linkProgram(p);\n return gl.getProgramParameter(p, gl.LINK_STATUS) ? p : null;\n}\n\nconst rgb = (c: string): [number, number, number] => hexRgb(c).map((v) => v / 255) as [number, number, number];\n\n/**\n * Mount a shader background behind `el` (options: `colors` [3 hex], `speed`,\n * `scale`, `quality`, `backend` = `'auto' | 'webgpu' | 'webgl2' | 'canvas'`).\n * 7.0: `auto` tries WebGPU first, then WebGL2, then Canvas 2D\n * (`el.dataset.usaBackend` names the one running). Returns the cleanup.\n */\nexport function shaderBackground(el: HTMLElement, fx: EffectContext, spec: ShaderSpec, o: any): () => void {\n const want = o.backend || 'auto';\n if ((want === 'auto' || want === 'webgpu') && supportsWebGPU()) {\n let stop: (() => void) | null = null;\n let dead = false;\n webgpuBackground(el, fx, spec, o).then((s) => {\n if (dead) return s?.();\n stop = s || webglBackground(el, fx, spec, o);\n });\n return () => {\n dead = true;\n stop?.();\n };\n }\n return webglBackground(el, fx, spec, o);\n}\n\nfunction webglBackground(el: HTMLElement, fx: EffectContext, spec: ShaderSpec, o: any): () => void {\n const fallback = () => {\n el.dataset.usaBackend = 'canvas';\n const stop = canvasBackground(el, fx, spec.fallback, o);\n return () => {\n stop();\n delete el.dataset.usaBackend;\n };\n };\n if (o.backend === 'canvas' || !supportsWebGL2()) return fallback();\n const canvas = document.createElement('canvas');\n const gl = canvas.getContext('webgl2', { alpha: false, antialias: false, preserveDrawingBuffer: false }) as WebGL2RenderingContext | null;\n const prog = gl && compile(gl, `${GLSL_HEAD}void main(){vec2 uv=gl_FragCoord.xy/u_res;vec2 p=uv*vec2(u_res.x/u_res.y,1.)*u_scale;float t=u_t*u_speed;${spec.body}}`);\n if (!gl || !prog) return fallback();\n el.dataset.usaBackend = 'webgl2';\n canvas.setAttribute('aria-hidden', 'true');\n canvas.setAttribute('data-usa-fx-canvas', '');\n canvas.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1;border-radius:inherit';\n const restore: [string, string][] = [];\n const set = (k: 'position' | 'isolation', v: string) => {\n restore.push([k, el.style[k]]);\n el.style[k] = v;\n };\n if (getComputedStyle(el).position === 'static') set('position', 'relative');\n set('isolation', 'isolate');\n el.prepend(canvas);\n gl.useProgram(prog);\n const buf = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buf);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, -1, 3, -1, -1, 3]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(0);\n gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);\n const U = (n: string) => gl.getUniformLocation(prog, n);\n const cols: string[] = o.colors || [];\n ['u_c0', 'u_c1', 'u_c2'].forEach((u, i) => gl.uniform3fv(U(u), rgb(cols[i] || cols[0] || '#7c5cff')));\n gl.uniform1f(U('u_speed'), Number(o.speed) || 1);\n gl.uniform1f(U('u_scale'), Number(o.scale) || 3);\n const uRes = U('u_res');\n const uT = U('u_t');\n const uPtr = U('u_ptr');\n let ptr: [number, number] = [0.5, 0.5];\n let quality = Math.min(1, Math.max(0.3, Number(o.quality) || 0.75));\n let raf = 0;\n let visible = true;\n let slow = 0;\n let last = 0;\n const t0 = performance.now();\n const resize = () => {\n const r = el.getBoundingClientRect();\n const dpr = Math.min(2, devicePixelRatio || 1) * quality;\n canvas.width = Math.max(1, Math.round(r.width * dpr));\n canvas.height = Math.max(1, Math.round(r.height * dpr));\n gl.viewport(0, 0, canvas.width, canvas.height);\n gl.uniform2f(uRes, canvas.width, canvas.height);\n };\n const draw = (t: number) => {\n gl.uniform1f(uT, t);\n gl.uniform2f(uPtr, ptr[0], ptr[1]);\n gl.drawArrays(gl.TRIANGLES, 0, 3);\n };\n const frame = (now: number) => {\n raf = 0;\n if (last && now - last > 34 && ++slow > 24 && quality > 0.3) {\n quality = Math.max(0.3, quality - 0.15);\n slow = 0;\n resize();\n }\n last = now;\n draw((now - t0) / 1000);\n if (visible && !document.hidden) raf = requestAnimationFrame(frame);\n };\n const start = () => {\n if (!raf && !fx.reduced) raf = requestAnimationFrame(frame);\n };\n resize();\n draw(fx.reduced ? 7 : 0);\n const move = (e: PointerEvent) => {\n const r = el.getBoundingClientRect();\n ptr = [(e.clientX - r.left) / Math.max(1, r.width), 1 - (e.clientY - r.top) / Math.max(1, r.height)];\n };\n el.addEventListener('pointermove', move);\n const io = typeof IntersectionObserver === 'function' ? new IntersectionObserver((es) => (visible = es.some((e) => e.isIntersecting)) && start()) : null;\n io?.observe(el);\n const ro = typeof ResizeObserver === 'function' ? new ResizeObserver(() => (resize(), fx.reduced && draw(7))) : null;\n ro?.observe(el);\n const vis = () => !document.hidden && visible && start();\n document.addEventListener('visibilitychange', vis);\n let swapped: (() => void) | null = null;\n const lost = (e: Event) => {\n e.preventDefault();\n stop();\n swapped = fallback();\n };\n canvas.addEventListener('webglcontextlost', lost);\n const stop = () => {\n cancelAnimationFrame(raf);\n raf = 0;\n io?.disconnect();\n ro?.disconnect();\n el.removeEventListener('pointermove', move);\n document.removeEventListener('visibilitychange', vis);\n canvas.removeEventListener('webglcontextlost', lost);\n canvas.remove();\n for (const [k, v] of restore) el.style[k as 'position'] = v;\n };\n start();\n return () => {\n if (swapped) return swapped();\n stop();\n gl.getExtension('WEBGL_lose_context')?.loseContext();\n delete el.dataset.usaBackend;\n };\n}\n\n/**\n * Canvas 2D fallback for a scalar field: `color(x, y, t)` (x, y in 0–1)\n * returns `[r, g, b]` (0–255), sampled on a coarse grid and scaled up smoothly.\n */\nexport function fieldFallback(color: (x: number, y: number, t: number, o: any) => [number, number, number], cell = 8): GenerativeSpec {\n return {\n init: (w, h) => {\n const c = document.createElement('canvas');\n c.width = Math.max(2, Math.ceil(w / cell));\n c.height = Math.max(2, Math.ceil(h / cell));\n const x = c.getContext('2d');\n return { c, x, img: x?.createImageData(c.width, c.height) };\n },\n draw: ({ ctx, w, h, t, state, o }) => {\n const { c, x, img } = state;\n if (!x || !img) return;\n const d = img.data;\n for (let j = 0; j < c.height; j++)\n for (let i = 0; i < c.width; i++) {\n const [r, g, b] = color(i / c.width, 1 - j / c.height, t * (Number(o.speed) || 1), o);\n const k = (j * c.width + i) * 4;\n d[k] = r;\n d[k + 1] = g;\n d[k + 2] = b;\n d[k + 3] = 255;\n }\n x.putImageData(img, 0, 0);\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(c, 0, 0, w, h);\n },\n };\n}\n\n/** Linear blend of two `[r,g,b]` colors. */\nexport const mixRgb = (a: number[], b: number[], k: number): [number, number, number] => {\n const q = Math.min(1, Math.max(0, k));\n return [a[0] + (b[0] - a[0]) * q, a[1] + (b[1] - a[1]) * q, a[2] + (b[2] - a[2]) * q];\n};\n/** Smoothstep. */\nexport const sstep = (a: number, b: number, x: number): number => {\n const t = Math.min(1, Math.max(0, (x - a) / (b - a)));\n return t * t * (3 - 2 * t);\n};\n/** fbm-like noise in 0–1 built on `noise2`. */\nexport const fbm2 = (x: number, y: number, t = 0): number => 0.5 + 0.35 * noise2(x, y, t) + 0.15 * noise2(x * 2.1 + 3, y * 2.1 - 1, t * 1.3);\n","/**\n * 6.2 — GPU effect pack (`motionary/components/fx-gpu`), registered through\n * `registerEffect()`:\n *\n * - WebGL2 shaders with a Canvas 2D fallback (kind `background`): `fluid`\n * (domain-warped fluid that swirls around the pointer), `smoke`, `fire`,\n * `ink` (ink blooming in water), `fireflies`.\n * - Canvas 2D particles (kind `background`): `sakura` (falling cherry\n * petals), `leaves` (tumbling autumn leaves).\n * - `splash` (kind `click`): droplets + a ring burst from the pointer.\n *\n * Every background renders only while visible, lowers its resolution when\n * frames are slow, and draws one static frame under reduced motion.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\nimport { canvasBackground, type GenerativeSpec } from '../effects/generative';\nimport { origin, spawn, rand, all } from '../effects/shared';\nimport { shaderBackground, fieldFallback, hexRgb, mixRgb, sstep, fbm2, type ShaderSpec } from './gl';\n\nconst shader = (name: string, description: string, colors: string[], spec: ShaderSpec, extra: Record<string, unknown> = {}): EffectDefinition => ({\n name,\n kind: 'background',\n description,\n reduced: 'run',\n defaults: { colors, speed: 1, scale: 3, quality: 0.75, backend: 'auto', ...extra },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const stop = shaderBackground(el, ctx, spec, o);\n ctx.onCleanup(stop);\n return stop;\n },\n});\n\nconst C = (o: any) => (o.colors as string[]).map(hexRgb);\n\nexport const GPU_FX: EffectDefinition[] = [\n shader('fluid', 'Domain-warped fluid colors that swirl around the pointer (WebGL2, Canvas 2D fallback).', ['#1b1446', '#7c5cff', '#22d3ee'], {\n body: 'vec2 q=vec2(fbm(p+t*.1),fbm(p+vec2(5.2,1.3)-t*.08));vec2 d=uv-u_ptr;q+=.5*exp(-dot(d,d)*14.)*vec2(sin(t*1.3),cos(t*1.1));float f=fbm(p+3.*q+t*.05);vec3 c=mix(u_c0,u_c1,clamp(f*1.7-.2,0.,1.));c=mix(c,u_c2,clamp(length(q)*1.1-.45,0.,1.));o=vec4(c,1.);',\n fallback: fieldFallback((x, y, t, o) => {\n const [a, b, c] = C(o);\n const q = fbm2(x * 3 + t * 0.1, y * 3);\n const f = fbm2(x * 3 + q * 2, y * 3 + q * 2, t * 0.3);\n return mixRgb(mixRgb(a, b, f * 1.7 - 0.2), c, q * 1.1 - 0.45);\n }),\n }),\n shader('smoke', 'Soft smoke rising and curling (WebGL2, Canvas 2D fallback).', ['#0f172a', '#cbd5e1', '#64748b'], {\n body: 'vec2 s=p;s.y-=t*.25;float f=fbm(s+fbm(s*1.5+t*.1));float a=smoothstep(.38,.92,f)*(1.05-uv.y*.55);o=vec4(mix(u_c0,mix(u_c2,u_c1,f),a),1.);',\n fallback: fieldFallback((x, y, t, o) => {\n const [bg, sm, ac] = C(o);\n const f = fbm2(x * 3, y * 3 - t * 0.25, t * 0.2);\n return mixRgb(bg, mixRgb(ac, sm, f), sstep(0.38, 0.92, f) * (1.05 - y * 0.55));\n }),\n }),\n shader('fire', 'Licking flames from the bottom edge (WebGL2, Canvas 2D fallback).', ['#140404', '#e2401b', '#fbbf24'], {\n body: 'vec2 s=p*vec2(1.,1.4);s.y-=t*.9;float f=fbm(s*1.6+fbm(s*2.+t*.3));float g=f*(1.3-uv.y)*1.7-.3;vec3 c=mix(u_c0,u_c1,smoothstep(0.,.4,g));c=mix(c,u_c2,smoothstep(.35,.72,g));c=mix(c,vec3(1.,.96,.82),smoothstep(.72,1.05,g));o=vec4(c,1.);',\n fallback: fieldFallback((x, y, t, o) => {\n const [a, b, c] = C(o);\n const g = fbm2(x * 4, y * 5 - t * 0.9, t) * (1.3 - y) * 1.7 - 0.3;\n return mixRgb(mixRgb(mixRgb(a, b, sstep(0, 0.4, g)), c, sstep(0.35, 0.72, g)), [255, 245, 210], sstep(0.72, 1.05, g));\n }, 6),\n }),\n shader('ink', 'Ink blooming and drifting in water on a paper background (WebGL2, Canvas 2D fallback).', ['#f6f1e7', '#1e1b4b', '#be185d'], {\n body: 'vec2 q=vec2(fbm(p*.8+t*.04),fbm(p*.8+vec2(3.1,7.7)+t*.05));float f=fbm(p*1.2+2.5*q);float b=smoothstep(.48,.74,f+.12*sin(t*.4));o=vec4(mix(u_c0,mix(u_c1,u_c2,clamp(q.x*1.4-.2,0.,1.)),b),1.);',\n fallback: fieldFallback((x, y, t, o) => {\n const [bg, i1, i2] = C(o);\n const q = fbm2(x * 2 + t * 0.04, y * 2);\n const f = fbm2(x * 3 + q * 2.5, y * 3 + q * 2.5, t * 0.1);\n return mixRgb(bg, mixRgb(i1, i2, q * 1.4 - 0.2), sstep(0.48, 0.74, f));\n }),\n }, { scale: 2.4 }),\n shader('fireflies', 'Glowing fireflies wandering and blinking at dusk (WebGL2, Canvas 2D fallback).', ['#06121f', '#facc15', '#a3e635'], {\n body: 'vec3 c=u_c0*(.55+.45*uv.y);float ar=u_res.x/u_res.y;for(int i=0;i<28;i++){float fi=float(i);vec2 b=vec2(h(vec2(fi,1.)),h(vec2(fi,2.)));vec2 pos=fract(b+.07*vec2(sin(t*.3+fi),cos(t*.23+fi*1.7)));vec2 d=(uv-pos)*vec2(ar,1.);float k=.5+.5*sin(t*(1.+h(vec2(fi,3.))*2.)+fi*2.1);c+=mix(u_c1,u_c2,h(vec2(fi,4.)))*k*.00055/(dot(d,d)+.0003);}o=vec4(min(c,vec3(1.)),1.);',\n fallback: {\n init: (w, h) => ({ f: Array.from({ length: 28 }, () => [Math.random(), Math.random(), Math.random() * 6, Math.random()]) }),\n draw: ({ ctx, w, h, t, state, o }) => {\n ctx.fillStyle = o.colors[0];\n ctx.fillRect(0, 0, w, h);\n for (const [bx, by, ph, hue] of state.f) {\n const x = ((bx + 0.07 * Math.sin(t * 0.3 + ph)) % 1) * w;\n const y = ((by + 0.07 * Math.cos(t * 0.23 + ph)) % 1) * h;\n const k = 0.5 + 0.5 * Math.sin(t * 2 + ph * 3);\n const g = ctx.createRadialGradient(x, y, 0, x, y, 14);\n g.addColorStop(0, hue > 0.5 ? o.colors[1] : o.colors[2]);\n g.addColorStop(1, 'transparent');\n ctx.globalAlpha = 0.25 + k * 0.75;\n ctx.fillStyle = g;\n ctx.fillRect(x - 14, y - 14, 28, 28);\n }\n ctx.globalAlpha = 1;\n },\n },\n }),\n];\n\ninterface Flake {\n x: number;\n y: number;\n r: number;\n a: number;\n va: number;\n vy: number;\n ph: number;\n c: string;\n}\nconst fall = (draw: (ctx: CanvasRenderingContext2D, f: Flake) => void): GenerativeSpec => ({\n init: (w, h, o) => ({ f: Array.from({ length: o.count }, (): Flake => ({ x: Math.random() * w, y: Math.random() * h, r: rand(5, 11) * (o.size || 1), a: rand(0, 6.3), va: rand(-1.5, 1.5), vy: rand(18, 46), ph: rand(0, 6.3), c: o.colors[Math.floor(Math.random() * o.colors.length)] })), last: 0 }),\n draw: ({ ctx, w, h, t, state, o, quality }) => {\n const dt = state.last ? Math.min(0.05, t - state.last) : 0;\n state.last = t;\n ctx.clearRect(0, 0, w, h);\n const n = Math.max(4, Math.round(state.f.length * quality));\n for (let i = 0; i < n; i++) {\n const f: Flake = state.f[i];\n f.y += f.vy * dt * o.speed;\n f.x += (Math.sin(t * 1.2 + f.ph) * 22 + (o.wind || 0)) * dt * o.speed;\n f.a += f.va * dt * o.speed;\n if (f.y > h + 16) (f.y = -16), (f.x = Math.random() * w);\n if (f.x > w + 16) f.x = -16;\n if (f.x < -16) f.x = w + 16;\n ctx.save();\n ctx.translate(f.x, f.y);\n ctx.rotate(f.a);\n ctx.scale(1, 0.55 + 0.45 * Math.abs(Math.cos(t * 1.7 + f.ph)));\n ctx.fillStyle = f.c;\n draw(ctx, f);\n ctx.restore();\n }\n },\n});\nconst particles = (name: string, description: string, defaults: Record<string, unknown>, spec: GenerativeSpec): EffectDefinition => ({\n name,\n kind: 'background',\n description,\n reduced: 'run',\n defaults: { speed: 1, quality: 1, ...defaults },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const stop = canvasBackground(el, ctx, spec, o);\n ctx.onCleanup(stop);\n return stop;\n },\n});\n\nGPU_FX.push(\n particles('sakura', 'Cherry-blossom petals drifting down, swaying and flipping (Canvas 2D).', { count: 46, colors: ['#ffc8dd', '#ffafcc', '#fde2e4', '#f9a8d4'], wind: 14 }, fall((ctx, f) => {\n ctx.beginPath();\n ctx.moveTo(0, -f.r);\n ctx.bezierCurveTo(f.r, -f.r, f.r * 0.9, f.r * 0.6, 0, f.r);\n ctx.bezierCurveTo(-f.r * 0.9, f.r * 0.6, -f.r, -f.r, 0, -f.r * 0.55);\n ctx.fill();\n })),\n particles('leaves', 'Autumn leaves tumbling down in the wind (Canvas 2D).', { count: 30, size: 1.4, colors: ['#ea580c', '#d97706', '#b45309', '#dc2626', '#ca8a04'], wind: 26 }, fall((ctx, f) => {\n ctx.beginPath();\n ctx.moveTo(0, -f.r);\n ctx.quadraticCurveTo(f.r * 0.9, -f.r * 0.2, 0, f.r);\n ctx.quadraticCurveTo(-f.r * 0.9, -f.r * 0.2, 0, -f.r);\n ctx.fill();\n ctx.strokeStyle = 'rgba(0,0,0,.25)';\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(0, -f.r * 0.8);\n ctx.lineTo(0, f.r * 1.25);\n ctx.stroke();\n }))\n);\n\nGPU_FX.push({\n name: 'splash',\n kind: 'click',\n description: 'A water splash from the pointer: a ring plus droplets that arc out and fall with gravity.',\n defaults: { color: '#38bdf8', count: 14 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const { x, y } = origin(el, ctx);\n if (ctx.reduced) return spawn(x - 12, y - 12, `width:24px;height:24px;border-radius:50%;background:${o.color};opacity:.5`, ctx, [{ opacity: 0.5 }, { opacity: 0 }], { duration: 300 });\n const anims: (Animation | null)[] = [\n spawn(x - 30, y - 30, `width:60px;height:60px;border-radius:50%;border:3px solid ${o.color}`, ctx, [{ transform: 'scale(.2)', opacity: 1 }, { transform: 'scale(1.6)', opacity: 0 }], { duration: 520, easing: 'cubic-bezier(.2,.8,.3,1)' }),\n ];\n for (let i = 0; i < o.count; i++) {\n const ang = -Math.PI / 2 + rand(-1.15, 1.15);\n const v = rand(50, 110);\n const dx = Math.cos(ang) * v;\n const s = rand(4, 9);\n const peak = Math.sin(ang) * v;\n anims.push(spawn(x - s / 2, y - s / 2, `width:${s}px;height:${s * 1.25}px;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:${o.color}`, ctx, [\n { transform: 'translate(0,0) scale(1)', opacity: 1 },\n { transform: `translate(${dx * 0.6}px,${peak}px) scale(1)`, opacity: 1, offset: 0.45, easing: 'cubic-bezier(.3,0,.7,1)' },\n { transform: `translate(${dx}px,${peak + 90}px) scale(.6)`, opacity: 0 },\n ], { duration: rand(650, 900), easing: 'cubic-bezier(.15,.6,.4,1)' }));\n }\n return all(anims);\n },\n});\n\n/** Register the 6.2 GPU pack (idempotent). */\nexport function registerGpuPack(): void {\n registerEffects(GPU_FX);\n}\n\n"],"names":["rgb"],"mappings":"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"}
1
+ {"version":3,"file":"gpu-DLPghVWr.js","sources":["../../src/components/fx2/webgpu.ts","../../src/components/fx2/gl.ts","../../src/components/fx2/gpu.ts"],"sourcesContent":["/**\n * 7.0 — WebGPU backend for the shader backgrounds (`shaderBackground()`).\n *\n * Every 6.x shader is written once as a small GLSL `main()` body. 7.0 runs it\n * on **WebGPU** where the browser has it: `glslToWgsl()` translates the body\n * (types, constructors, literals, loops, uniforms) into a WGSL fragment\n * shader with the same noise helpers; a spec can also ship hand-written\n * `wgsl`. If WebGPU is missing, the adapter / device is refused, or the\n * shader does not compile, the effect falls back to **WebGL2**, then to the\n * Canvas 2D fallback — `el.dataset.usaBackend` says which one runs.\n */\nimport type { EffectContext } from '../fx/registry';\nimport { hexRgb } from '../effects/generative';\n\n/** WGSL shared by every shader: uniforms, hash, value noise, fbm (mirrors `GLSL_HEAD`). */\nexport const WGSL_HEAD = `struct U{res:vec2f,ptr:vec2f,t:f32,speed:f32,scale:f32,pad:f32,c0:vec4f,c1:vec4f,c2:vec4f};\n@group(0) @binding(0) var<uniform> u:U;\nfn h(p:vec2f)->f32{return fract(sin(dot(p,vec2f(127.1,311.7)))*43758.5453);}\nfn n(p:vec2f)->f32{let i=floor(p);var f=fract(p);f=f*f*(3.0-2.0*f);return mix(mix(h(i),h(i+vec2f(1.0,0.0)),f.x),mix(h(i+vec2f(0.0,1.0)),h(i+vec2f(1.0,1.0)),f.x),f.y);}\nfn fbm(p0:vec2f)->f32{var v=0.0;var a=0.5;var p=p0;for(var k=0;k<5;k++){v+=a*n(p);p=p*2.03+vec2f(1.7,9.2);a*=0.5;}return v;}\n@vertex fn vs(@builtin(vertex_index) i:u32)->@builtin(position) vec4f{var q=array<vec2f,3>(vec2f(-1.0,-1.0),vec2f(3.0,-1.0),vec2f(-1.0,3.0));return vec4f(q[i],0.0,1.0);}\n`;\n\n/**\n * Translate a GLSL `main()` body (the 6.x `ShaderSpec.body` dialect) to WGSL\n * statements. Throws on constructs it does not support (ternaries, `mod`,\n * `discard`, user functions) so the caller can fall back to WebGL2.\n */\nexport function glslToWgsl(body: string): string {\n if (/[?]|\\bmod\\s*\\(|\\bdiscard\\b|\\bstruct\\b|\\buniform\\b|\\bvoid\\b/.test(body)) throw new Error('unsupported GLSL construct');\n let s = body;\n s = s.replace(/\\bu_c([012])\\b/g, 'u.c$1.xyz').replace(/\\bu_ptr\\b/g, 'u.ptr').replace(/\\bu_res\\b/g, 'u.res').replace(/\\bu_t\\b/g, 'u.t');\n s = s.replace(/for\\s*\\(\\s*int\\s+(\\w+)\\s*=/g, 'for(var $1:i32=');\n s = s.replace(/\\bfloat\\s+(\\w+)\\s*=/g, 'var $1:f32=');\n s = s.replace(/\\bvec([234])\\s+(\\w+)\\s*=/g, 'var $2:vec$1f=');\n s = s.replace(/\\bint\\s+(\\w+)\\s*=/g, 'var $1:i32=');\n s = s.replace(/\\bvec([234])\\s*\\(/g, 'vec$1f(').replace(/\\bfloat\\s*\\(/g, 'f32(').replace(/\\bint\\s*\\(/g, 'i32(').replace(/\\batan\\s*\\(([^(),]+),/g, 'atan2($1,');\n s = s.replace(/(\\d)\\.(?![\\d\\w])/g, '$1.0');\n s = s.replace(/(^|[^\\w.])\\.(\\d)/g, '$10.$2');\n if (/\\b(float|vec[234]|int|mat[234])\\s+\\w+\\s*[,;]/.test(s)) throw new Error('unsupported declaration');\n return s;\n}\n\n/** The full WGSL module for a body. */\nexport const wgslModule = (body: string): string =>\n `${WGSL_HEAD}@fragment fn fs(@builtin(position) fc:vec4f)->@location(0) vec4f{var uv=vec2f(fc.x,u.res.y-fc.y)/u.res;var p=uv*vec2f(u.res.x/u.res.y,1.0)*u.scale;var t=u.t*u.speed;var o=vec4f(0.0,0.0,0.0,1.0);${body}return o;}`;\n\n/** `true` when `navigator.gpu` exists (the adapter may still be refused). */\nexport const supportsWebGPU = (): boolean => typeof navigator !== 'undefined' && !!(navigator as Navigator & { gpu?: unknown }).gpu;\n\nconst rgb = (c: string): number[] => [...hexRgb(c).map((v) => v / 255), 1];\n\n/**\n * Start a WebGPU shader background behind `el`. Resolves to its cleanup, or\n * `null` when WebGPU cannot run this shader (the caller falls back).\n */\nexport async function webgpuBackground(el: HTMLElement, fx: EffectContext, spec: { body: string; wgsl?: string }, o: any): Promise<(() => void) | null> {\n if (!supportsWebGPU()) return null;\n let code: string;\n try {\n code = wgslModule(spec.wgsl || glslToWgsl(spec.body));\n } catch {\n return null;\n }\n const gpu = (navigator as any).gpu;\n try {\n const adapter = await gpu.requestAdapter({ powerPreference: 'low-power' });\n if (!adapter) return null;\n const device = await adapter.requestDevice();\n const module = device.createShaderModule({ code });\n const info = await module.getCompilationInfo?.();\n if (info?.messages?.some((m: any) => m.type === 'error')) return (device.destroy?.(), null);\n if (!el.isConnected) return (device.destroy?.(), null);\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('webgpu') as any;\n if (!ctx) return (device.destroy?.(), null);\n const format = gpu.getPreferredCanvasFormat();\n ctx.configure({ device, format, alphaMode: 'opaque' });\n device.pushErrorScope?.('validation');\n const pipeline = device.createRenderPipeline({ layout: 'auto', vertex: { module, entryPoint: 'vs' }, fragment: { module, entryPoint: 'fs', targets: [{ format }] }, primitive: { topology: 'triangle-list' } });\n const ubuf = device.createBuffer({ size: 80, usage: 0x40 | 0x8 /* UNIFORM | COPY_DST */ });\n const bind = device.createBindGroup({ layout: pipeline.getBindGroupLayout(0), entries: [{ binding: 0, resource: { buffer: ubuf } }] });\n const err = await device.popErrorScope?.();\n if (err) return (device.destroy?.(), null);\n canvas.setAttribute('aria-hidden', 'true');\n canvas.setAttribute('data-usa-fx-canvas', '');\n canvas.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1;border-radius:inherit';\n const restore: [string, string][] = [];\n const set = (k: 'position' | 'isolation', v: string) => {\n restore.push([k, el.style[k]]);\n el.style[k] = v;\n };\n if (getComputedStyle(el).position === 'static') set('position', 'relative');\n set('isolation', 'isolate');\n el.prepend(canvas);\n el.dataset.usaBackend = 'webgpu';\n const cols: string[] = o.colors || [];\n const data = new Float32Array(20);\n data.set([Number(o.speed) || 1, Number(o.scale) || 3, 0], 5);\n [0, 1, 2].forEach((i) => data.set(rgb(cols[i] || cols[0] || '#7c5cff'), 8 + i * 4));\n let ptr: [number, number] = [0.5, 0.5];\n let quality = Math.min(1, Math.max(0.3, Number(o.quality) || 0.75));\n let raf = 0;\n let visible = true;\n const t0 = performance.now();\n const resize = () => {\n const r = el.getBoundingClientRect();\n const dpr = Math.min(2, devicePixelRatio || 1) * quality;\n canvas.width = Math.max(1, Math.round(r.width * dpr));\n canvas.height = Math.max(1, Math.round(r.height * dpr));\n };\n const draw = (t: number) => {\n data.set([canvas.width, canvas.height, ptr[0], ptr[1], t], 0);\n device.queue.writeBuffer(ubuf, 0, data);\n const enc = device.createCommandEncoder();\n const pass = enc.beginRenderPass({ colorAttachments: [{ view: ctx.getCurrentTexture().createView(), loadOp: 'clear', storeOp: 'store', clearValue: { r: 0, g: 0, b: 0, a: 1 } }] });\n pass.setPipeline(pipeline);\n pass.setBindGroup(0, bind);\n pass.draw(3);\n pass.end();\n device.queue.submit([enc.finish()]);\n };\n let last = 0;\n let slow = 0;\n const frame = (now: number) => {\n raf = 0;\n if (last && now - last > 34 && ++slow > 24 && quality > 0.3) ((quality = Math.max(0.3, quality - 0.15)), (slow = 0), resize());\n last = now;\n draw((now - t0) / 1000);\n if (visible && !document.hidden) raf = requestAnimationFrame(frame);\n };\n const start = () => {\n if (!raf && !fx.reduced) raf = requestAnimationFrame(frame);\n };\n resize();\n draw(fx.reduced ? 7 : 0);\n const move = (e: PointerEvent) => {\n const r = el.getBoundingClientRect();\n ptr = [(e.clientX - r.left) / Math.max(1, r.width), 1 - (e.clientY - r.top) / Math.max(1, r.height)];\n };\n el.addEventListener('pointermove', move);\n const io = typeof IntersectionObserver === 'function' ? new IntersectionObserver((es) => (visible = es.some((e) => e.isIntersecting)) && start()) : null;\n io?.observe(el);\n const ro = typeof ResizeObserver === 'function' ? new ResizeObserver(() => (resize(), fx.reduced && draw(7))) : null;\n ro?.observe(el);\n const vis = () => !document.hidden && visible && start();\n document.addEventListener('visibilitychange', vis);\n start();\n return () => {\n cancelAnimationFrame(raf);\n io?.disconnect();\n ro?.disconnect();\n el.removeEventListener('pointermove', move);\n document.removeEventListener('visibilitychange', vis);\n canvas.remove();\n for (const [k, v] of restore) el.style[k as 'position'] = v;\n delete el.dataset.usaBackend;\n device.destroy?.();\n };\n } catch {\n return null;\n }\n}\n","/**\n * 6.2 — tiny WebGL2 full-screen shader runner with a Canvas 2D fallback, shared\n * by the 6.x GPU effect packs. One canvas behind the element (aria-hidden,\n * pointer-transparent), renders only while visible and the tab is shown,\n * adaptive resolution, pointer uniform, and a static first frame under reduced\n * motion. No WebGL2 (or a lost context / compile error) → the Canvas 2D\n * `fallback` spec runs through `canvasBackground()` instead.\n * `el.dataset.usaBackend` tells which one is active: `webgl2` or `canvas`.\n */\nimport type { EffectContext } from '../fx/registry';\nimport { webgpuBackground, supportsWebGPU } from './webgpu';\nimport { canvasBackground, hexRgb, noise2, type GenerativeSpec } from '../effects/generative';\n\nexport { hexRgb, noise2 };\n\n/** GLSL shared by every shader: uniforms, hash, value noise, fbm. */\nexport const GLSL_HEAD = `#version 300 es\nprecision highp float;\nuniform vec2 u_res;uniform float u_t;uniform vec3 u_c0,u_c1,u_c2;uniform vec2 u_ptr;uniform float u_speed,u_scale;\nout vec4 o;\nfloat h(vec2 p){return fract(sin(dot(p,vec2(127.1,311.7)))*43758.5453);}\nfloat n(vec2 p){vec2 i=floor(p),f=fract(p);f=f*f*(3.-2.*f);return mix(mix(h(i),h(i+vec2(1,0)),f.x),mix(h(i+vec2(0,1)),h(i+1.),f.x),f.y);}\nfloat fbm(vec2 p){float v=0.,a=.5;for(int k=0;k<5;k++){v+=a*n(p);p=p*2.03+vec2(1.7,9.2);a*=.5;}return v;}\n`;\nconst VERT = `#version 300 es\nin vec2 a;void main(){gl_Position=vec4(a,0.,1.);}`;\n\nexport interface ShaderSpec {\n /** 7.0: hand-written WGSL statements for the WebGPU backend (default: `glslToWgsl(body)`). */\n wgsl?: string;\n /** GLSL body of `main()`: `uv` (0–1), `p` (aspect-corrected, scaled), `t` (s × speed) are in scope; write `o`. */\n body: string;\n /** Canvas 2D fallback. */\n fallback: GenerativeSpec;\n}\n\n/** `true` when this browser can create a WebGL2 context (cached). */\nlet gl2: boolean | null = null;\nexport function supportsWebGL2(): boolean {\n if (gl2 !== null) return gl2;\n try {\n gl2 = typeof document !== 'undefined' && !!document.createElement('canvas').getContext('webgl2');\n } catch {\n gl2 = false;\n }\n return gl2;\n}\n\nfunction compile(gl: WebGL2RenderingContext, frag: string): WebGLProgram | null {\n const mk = (type: number, src: string) => {\n const s = gl.createShader(type)!;\n gl.shaderSource(s, src);\n gl.compileShader(s);\n return gl.getShaderParameter(s, gl.COMPILE_STATUS) ? s : null;\n };\n const v = mk(gl.VERTEX_SHADER, VERT);\n const f = mk(gl.FRAGMENT_SHADER, frag);\n if (!v || !f) return null;\n const p = gl.createProgram()!;\n gl.attachShader(p, v);\n gl.attachShader(p, f);\n gl.bindAttribLocation(p, 0, 'a');\n gl.linkProgram(p);\n return gl.getProgramParameter(p, gl.LINK_STATUS) ? p : null;\n}\n\nconst rgb = (c: string): [number, number, number] => hexRgb(c).map((v) => v / 255) as [number, number, number];\n\n/**\n * Mount a shader background behind `el` (options: `colors` [3 hex], `speed`,\n * `scale`, `quality`, `backend` = `'auto' | 'webgpu' | 'webgl2' | 'canvas'`).\n * 7.0: `auto` tries WebGPU first, then WebGL2, then Canvas 2D\n * (`el.dataset.usaBackend` names the one running). Returns the cleanup.\n */\nexport function shaderBackground(el: HTMLElement, fx: EffectContext, spec: ShaderSpec, o: any): () => void {\n const want = o.backend || 'auto';\n if ((want === 'auto' || want === 'webgpu') && supportsWebGPU()) {\n let stop: (() => void) | null = null;\n let dead = false;\n webgpuBackground(el, fx, spec, o).then((s) => {\n if (dead) return s?.();\n stop = s || webglBackground(el, fx, spec, o);\n });\n return () => {\n dead = true;\n stop?.();\n };\n }\n return webglBackground(el, fx, spec, o);\n}\n\nfunction webglBackground(el: HTMLElement, fx: EffectContext, spec: ShaderSpec, o: any): () => void {\n const fallback = () => {\n el.dataset.usaBackend = 'canvas';\n const stop = canvasBackground(el, fx, spec.fallback, o);\n return () => {\n stop();\n delete el.dataset.usaBackend;\n };\n };\n if (o.backend === 'canvas' || !supportsWebGL2()) return fallback();\n const canvas = document.createElement('canvas');\n const gl = canvas.getContext('webgl2', { alpha: false, antialias: false, preserveDrawingBuffer: false }) as WebGL2RenderingContext | null;\n const prog = gl && compile(gl, `${GLSL_HEAD}void main(){vec2 uv=gl_FragCoord.xy/u_res;vec2 p=uv*vec2(u_res.x/u_res.y,1.)*u_scale;float t=u_t*u_speed;${spec.body}}`);\n if (!gl || !prog) return fallback();\n el.dataset.usaBackend = 'webgl2';\n canvas.setAttribute('aria-hidden', 'true');\n canvas.setAttribute('data-usa-fx-canvas', '');\n canvas.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1;border-radius:inherit';\n const restore: [string, string][] = [];\n const set = (k: 'position' | 'isolation', v: string) => {\n restore.push([k, el.style[k]]);\n el.style[k] = v;\n };\n if (getComputedStyle(el).position === 'static') set('position', 'relative');\n set('isolation', 'isolate');\n el.prepend(canvas);\n gl.useProgram(prog);\n const buf = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buf);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, -1, 3, -1, -1, 3]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(0);\n gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);\n const U = (n: string) => gl.getUniformLocation(prog, n);\n const cols: string[] = o.colors || [];\n ['u_c0', 'u_c1', 'u_c2'].forEach((u, i) => gl.uniform3fv(U(u), rgb(cols[i] || cols[0] || '#7c5cff')));\n gl.uniform1f(U('u_speed'), Number(o.speed) || 1);\n gl.uniform1f(U('u_scale'), Number(o.scale) || 3);\n const uRes = U('u_res');\n const uT = U('u_t');\n const uPtr = U('u_ptr');\n let ptr: [number, number] = [0.5, 0.5];\n let quality = Math.min(1, Math.max(0.3, Number(o.quality) || 0.75));\n let raf = 0;\n let visible = true;\n let slow = 0;\n let last = 0;\n const t0 = performance.now();\n const resize = () => {\n const r = el.getBoundingClientRect();\n const dpr = Math.min(2, devicePixelRatio || 1) * quality;\n canvas.width = Math.max(1, Math.round(r.width * dpr));\n canvas.height = Math.max(1, Math.round(r.height * dpr));\n gl.viewport(0, 0, canvas.width, canvas.height);\n gl.uniform2f(uRes, canvas.width, canvas.height);\n };\n const draw = (t: number) => {\n gl.uniform1f(uT, t);\n gl.uniform2f(uPtr, ptr[0], ptr[1]);\n gl.drawArrays(gl.TRIANGLES, 0, 3);\n };\n const frame = (now: number) => {\n raf = 0;\n if (last && now - last > 34 && ++slow > 24 && quality > 0.3) {\n quality = Math.max(0.3, quality - 0.15);\n slow = 0;\n resize();\n }\n last = now;\n draw((now - t0) / 1000);\n if (visible && !document.hidden) raf = requestAnimationFrame(frame);\n };\n const start = () => {\n if (!raf && !fx.reduced) raf = requestAnimationFrame(frame);\n };\n resize();\n draw(fx.reduced ? 7 : 0);\n const move = (e: PointerEvent) => {\n const r = el.getBoundingClientRect();\n ptr = [(e.clientX - r.left) / Math.max(1, r.width), 1 - (e.clientY - r.top) / Math.max(1, r.height)];\n };\n el.addEventListener('pointermove', move);\n const io = typeof IntersectionObserver === 'function' ? new IntersectionObserver((es) => (visible = es.some((e) => e.isIntersecting)) && start()) : null;\n io?.observe(el);\n const ro = typeof ResizeObserver === 'function' ? new ResizeObserver(() => (resize(), fx.reduced && draw(7))) : null;\n ro?.observe(el);\n const vis = () => !document.hidden && visible && start();\n document.addEventListener('visibilitychange', vis);\n let swapped: (() => void) | null = null;\n const lost = (e: Event) => {\n e.preventDefault();\n stop();\n swapped = fallback();\n };\n canvas.addEventListener('webglcontextlost', lost);\n const stop = () => {\n cancelAnimationFrame(raf);\n raf = 0;\n io?.disconnect();\n ro?.disconnect();\n el.removeEventListener('pointermove', move);\n document.removeEventListener('visibilitychange', vis);\n canvas.removeEventListener('webglcontextlost', lost);\n canvas.remove();\n for (const [k, v] of restore) el.style[k as 'position'] = v;\n };\n start();\n return () => {\n if (swapped) return swapped();\n stop();\n gl.getExtension('WEBGL_lose_context')?.loseContext();\n delete el.dataset.usaBackend;\n };\n}\n\n/**\n * Canvas 2D fallback for a scalar field: `color(x, y, t)` (x, y in 0–1)\n * returns `[r, g, b]` (0–255), sampled on a coarse grid and scaled up smoothly.\n */\nexport function fieldFallback(color: (x: number, y: number, t: number, o: any) => [number, number, number], cell = 8): GenerativeSpec {\n return {\n init: (w, h) => {\n const c = document.createElement('canvas');\n c.width = Math.max(2, Math.ceil(w / cell));\n c.height = Math.max(2, Math.ceil(h / cell));\n const x = c.getContext('2d');\n return { c, x, img: x?.createImageData(c.width, c.height) };\n },\n draw: ({ ctx, w, h, t, state, o }) => {\n const { c, x, img } = state;\n if (!x || !img) return;\n const d = img.data;\n for (let j = 0; j < c.height; j++)\n for (let i = 0; i < c.width; i++) {\n const [r, g, b] = color(i / c.width, 1 - j / c.height, t * (Number(o.speed) || 1), o);\n const k = (j * c.width + i) * 4;\n d[k] = r;\n d[k + 1] = g;\n d[k + 2] = b;\n d[k + 3] = 255;\n }\n x.putImageData(img, 0, 0);\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(c, 0, 0, w, h);\n },\n };\n}\n\n/** Linear blend of two `[r,g,b]` colors. */\nexport const mixRgb = (a: number[], b: number[], k: number): [number, number, number] => {\n const q = Math.min(1, Math.max(0, k));\n return [a[0] + (b[0] - a[0]) * q, a[1] + (b[1] - a[1]) * q, a[2] + (b[2] - a[2]) * q];\n};\n/** Smoothstep. */\nexport const sstep = (a: number, b: number, x: number): number => {\n const t = Math.min(1, Math.max(0, (x - a) / (b - a)));\n return t * t * (3 - 2 * t);\n};\n/** fbm-like noise in 0–1 built on `noise2`. */\nexport const fbm2 = (x: number, y: number, t = 0): number => 0.5 + 0.35 * noise2(x, y, t) + 0.15 * noise2(x * 2.1 + 3, y * 2.1 - 1, t * 1.3);\n","/**\n * 6.2 — GPU effect pack (`motionary/components/fx-gpu`), registered through\n * `registerEffect()`:\n *\n * - WebGL2 shaders with a Canvas 2D fallback (kind `background`): `fluid`\n * (domain-warped fluid that swirls around the pointer), `smoke`, `fire`,\n * `ink` (ink blooming in water), `fireflies`.\n * - Canvas 2D particles (kind `background`): `sakura` (falling cherry\n * petals), `leaves` (tumbling autumn leaves).\n * - `splash` (kind `click`): droplets + a ring burst from the pointer.\n *\n * Every background renders only while visible, lowers its resolution when\n * frames are slow, and draws one static frame under reduced motion.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\nimport { canvasBackground, type GenerativeSpec } from '../effects/generative';\nimport { origin, spawn, rand, all } from '../effects/shared';\nimport { shaderBackground, fieldFallback, hexRgb, mixRgb, sstep, fbm2, type ShaderSpec } from './gl';\n\nconst shader = (name: string, description: string, colors: string[], spec: ShaderSpec, extra: Record<string, unknown> = {}): EffectDefinition => ({\n name,\n kind: 'background',\n description,\n reduced: 'run',\n defaults: { colors, speed: 1, scale: 3, quality: 0.75, backend: 'auto', ...extra },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const stop = shaderBackground(el, ctx, spec, o);\n ctx.onCleanup(stop);\n return stop;\n },\n});\n\nconst C = (o: any) => (o.colors as string[]).map(hexRgb);\n\nexport const GPU_FX: EffectDefinition[] = [\n shader('fluid', 'Domain-warped fluid colors that swirl around the pointer (WebGL2, Canvas 2D fallback).', ['#1b1446', '#7c5cff', '#22d3ee'], {\n body: 'vec2 q=vec2(fbm(p+t*.1),fbm(p+vec2(5.2,1.3)-t*.08));vec2 d=uv-u_ptr;q+=.5*exp(-dot(d,d)*14.)*vec2(sin(t*1.3),cos(t*1.1));float f=fbm(p+3.*q+t*.05);vec3 c=mix(u_c0,u_c1,clamp(f*1.7-.2,0.,1.));c=mix(c,u_c2,clamp(length(q)*1.1-.45,0.,1.));o=vec4(c,1.);',\n fallback: fieldFallback((x, y, t, o) => {\n const [a, b, c] = C(o);\n const q = fbm2(x * 3 + t * 0.1, y * 3);\n const f = fbm2(x * 3 + q * 2, y * 3 + q * 2, t * 0.3);\n return mixRgb(mixRgb(a, b, f * 1.7 - 0.2), c, q * 1.1 - 0.45);\n }),\n }),\n shader('smoke', 'Soft smoke rising and curling (WebGL2, Canvas 2D fallback).', ['#0f172a', '#cbd5e1', '#64748b'], {\n body: 'vec2 s=p;s.y-=t*.25;float f=fbm(s+fbm(s*1.5+t*.1));float a=smoothstep(.38,.92,f)*(1.05-uv.y*.55);o=vec4(mix(u_c0,mix(u_c2,u_c1,f),a),1.);',\n fallback: fieldFallback((x, y, t, o) => {\n const [bg, sm, ac] = C(o);\n const f = fbm2(x * 3, y * 3 - t * 0.25, t * 0.2);\n return mixRgb(bg, mixRgb(ac, sm, f), sstep(0.38, 0.92, f) * (1.05 - y * 0.55));\n }),\n }),\n shader('fire', 'Licking flames from the bottom edge (WebGL2, Canvas 2D fallback).', ['#140404', '#e2401b', '#fbbf24'], {\n body: 'vec2 s=p*vec2(1.,1.4);s.y-=t*.9;float f=fbm(s*1.6+fbm(s*2.+t*.3));float g=f*(1.3-uv.y)*1.7-.3;vec3 c=mix(u_c0,u_c1,smoothstep(0.,.4,g));c=mix(c,u_c2,smoothstep(.35,.72,g));c=mix(c,vec3(1.,.96,.82),smoothstep(.72,1.05,g));o=vec4(c,1.);',\n fallback: fieldFallback((x, y, t, o) => {\n const [a, b, c] = C(o);\n const g = fbm2(x * 4, y * 5 - t * 0.9, t) * (1.3 - y) * 1.7 - 0.3;\n return mixRgb(mixRgb(mixRgb(a, b, sstep(0, 0.4, g)), c, sstep(0.35, 0.72, g)), [255, 245, 210], sstep(0.72, 1.05, g));\n }, 6),\n }),\n shader('ink', 'Ink blooming and drifting in water on a paper background (WebGL2, Canvas 2D fallback).', ['#f6f1e7', '#1e1b4b', '#be185d'], {\n body: 'vec2 q=vec2(fbm(p*.8+t*.04),fbm(p*.8+vec2(3.1,7.7)+t*.05));float f=fbm(p*1.2+2.5*q);float b=smoothstep(.48,.74,f+.12*sin(t*.4));o=vec4(mix(u_c0,mix(u_c1,u_c2,clamp(q.x*1.4-.2,0.,1.)),b),1.);',\n fallback: fieldFallback((x, y, t, o) => {\n const [bg, i1, i2] = C(o);\n const q = fbm2(x * 2 + t * 0.04, y * 2);\n const f = fbm2(x * 3 + q * 2.5, y * 3 + q * 2.5, t * 0.1);\n return mixRgb(bg, mixRgb(i1, i2, q * 1.4 - 0.2), sstep(0.48, 0.74, f));\n }),\n }, { scale: 2.4 }),\n shader('fireflies', 'Glowing fireflies wandering and blinking at dusk (WebGL2, Canvas 2D fallback).', ['#06121f', '#facc15', '#a3e635'], {\n body: 'vec3 c=u_c0*(.55+.45*uv.y);float ar=u_res.x/u_res.y;for(int i=0;i<28;i++){float fi=float(i);vec2 b=vec2(h(vec2(fi,1.)),h(vec2(fi,2.)));vec2 pos=fract(b+.07*vec2(sin(t*.3+fi),cos(t*.23+fi*1.7)));vec2 d=(uv-pos)*vec2(ar,1.);float k=.5+.5*sin(t*(1.+h(vec2(fi,3.))*2.)+fi*2.1);c+=mix(u_c1,u_c2,h(vec2(fi,4.)))*k*.00055/(dot(d,d)+.0003);}o=vec4(min(c,vec3(1.)),1.);',\n fallback: {\n init: (w, h) => ({ f: Array.from({ length: 28 }, () => [Math.random(), Math.random(), Math.random() * 6, Math.random()]) }),\n draw: ({ ctx, w, h, t, state, o }) => {\n ctx.fillStyle = o.colors[0];\n ctx.fillRect(0, 0, w, h);\n for (const [bx, by, ph, hue] of state.f) {\n const x = ((bx + 0.07 * Math.sin(t * 0.3 + ph)) % 1) * w;\n const y = ((by + 0.07 * Math.cos(t * 0.23 + ph)) % 1) * h;\n const k = 0.5 + 0.5 * Math.sin(t * 2 + ph * 3);\n const g = ctx.createRadialGradient(x, y, 0, x, y, 14);\n g.addColorStop(0, hue > 0.5 ? o.colors[1] : o.colors[2]);\n g.addColorStop(1, 'transparent');\n ctx.globalAlpha = 0.25 + k * 0.75;\n ctx.fillStyle = g;\n ctx.fillRect(x - 14, y - 14, 28, 28);\n }\n ctx.globalAlpha = 1;\n },\n },\n }),\n];\n\ninterface Flake {\n x: number;\n y: number;\n r: number;\n a: number;\n va: number;\n vy: number;\n ph: number;\n c: string;\n}\nconst fall = (draw: (ctx: CanvasRenderingContext2D, f: Flake) => void): GenerativeSpec => ({\n init: (w, h, o) => ({ f: Array.from({ length: o.count }, (): Flake => ({ x: Math.random() * w, y: Math.random() * h, r: rand(5, 11) * (o.size || 1), a: rand(0, 6.3), va: rand(-1.5, 1.5), vy: rand(18, 46), ph: rand(0, 6.3), c: o.colors[Math.floor(Math.random() * o.colors.length)] })), last: 0 }),\n draw: ({ ctx, w, h, t, state, o, quality }) => {\n const dt = state.last ? Math.min(0.05, t - state.last) : 0;\n state.last = t;\n ctx.clearRect(0, 0, w, h);\n const n = Math.max(4, Math.round(state.f.length * quality));\n for (let i = 0; i < n; i++) {\n const f: Flake = state.f[i];\n f.y += f.vy * dt * o.speed;\n f.x += (Math.sin(t * 1.2 + f.ph) * 22 + (o.wind || 0)) * dt * o.speed;\n f.a += f.va * dt * o.speed;\n if (f.y > h + 16) (f.y = -16), (f.x = Math.random() * w);\n if (f.x > w + 16) f.x = -16;\n if (f.x < -16) f.x = w + 16;\n ctx.save();\n ctx.translate(f.x, f.y);\n ctx.rotate(f.a);\n ctx.scale(1, 0.55 + 0.45 * Math.abs(Math.cos(t * 1.7 + f.ph)));\n ctx.fillStyle = f.c;\n draw(ctx, f);\n ctx.restore();\n }\n },\n});\nconst particles = (name: string, description: string, defaults: Record<string, unknown>, spec: GenerativeSpec): EffectDefinition => ({\n name,\n kind: 'background',\n description,\n reduced: 'run',\n defaults: { speed: 1, quality: 1, ...defaults },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const stop = canvasBackground(el, ctx, spec, o);\n ctx.onCleanup(stop);\n return stop;\n },\n});\n\nGPU_FX.push(\n particles('sakura', 'Cherry-blossom petals drifting down, swaying and flipping (Canvas 2D).', { count: 46, colors: ['#ffc8dd', '#ffafcc', '#fde2e4', '#f9a8d4'], wind: 14 }, fall((ctx, f) => {\n ctx.beginPath();\n ctx.moveTo(0, -f.r);\n ctx.bezierCurveTo(f.r, -f.r, f.r * 0.9, f.r * 0.6, 0, f.r);\n ctx.bezierCurveTo(-f.r * 0.9, f.r * 0.6, -f.r, -f.r, 0, -f.r * 0.55);\n ctx.fill();\n })),\n particles('leaves', 'Autumn leaves tumbling down in the wind (Canvas 2D).', { count: 30, size: 1.4, colors: ['#ea580c', '#d97706', '#b45309', '#dc2626', '#ca8a04'], wind: 26 }, fall((ctx, f) => {\n ctx.beginPath();\n ctx.moveTo(0, -f.r);\n ctx.quadraticCurveTo(f.r * 0.9, -f.r * 0.2, 0, f.r);\n ctx.quadraticCurveTo(-f.r * 0.9, -f.r * 0.2, 0, -f.r);\n ctx.fill();\n ctx.strokeStyle = 'rgba(0,0,0,.25)';\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(0, -f.r * 0.8);\n ctx.lineTo(0, f.r * 1.25);\n ctx.stroke();\n }))\n);\n\nGPU_FX.push({\n name: 'splash',\n kind: 'click',\n description: 'A water splash from the pointer: a ring plus droplets that arc out and fall with gravity.',\n defaults: { color: '#38bdf8', count: 14 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const { x, y } = origin(el, ctx);\n if (ctx.reduced) return spawn(x - 12, y - 12, `width:24px;height:24px;border-radius:50%;background:${o.color};opacity:.5`, ctx, [{ opacity: 0.5 }, { opacity: 0 }], { duration: 300 });\n const anims: (Animation | null)[] = [\n spawn(x - 30, y - 30, `width:60px;height:60px;border-radius:50%;border:3px solid ${o.color}`, ctx, [{ transform: 'scale(.2)', opacity: 1 }, { transform: 'scale(1.6)', opacity: 0 }], { duration: 520, easing: 'cubic-bezier(.2,.8,.3,1)' }),\n ];\n for (let i = 0; i < o.count; i++) {\n const ang = -Math.PI / 2 + rand(-1.15, 1.15);\n const v = rand(50, 110);\n const dx = Math.cos(ang) * v;\n const s = rand(4, 9);\n const peak = Math.sin(ang) * v;\n anims.push(spawn(x - s / 2, y - s / 2, `width:${s}px;height:${s * 1.25}px;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:${o.color}`, ctx, [\n { transform: 'translate(0,0) scale(1)', opacity: 1 },\n { transform: `translate(${dx * 0.6}px,${peak}px) scale(1)`, opacity: 1, offset: 0.45, easing: 'cubic-bezier(.3,0,.7,1)' },\n { transform: `translate(${dx}px,${peak + 90}px) scale(.6)`, opacity: 0 },\n ], { duration: rand(650, 900), easing: 'cubic-bezier(.15,.6,.4,1)' }));\n }\n return all(anims);\n },\n});\n\n/** Register the 6.2 GPU pack (idempotent). */\nexport function registerGpuPack(): void {\n registerEffects(GPU_FX);\n}\n\n"],"names":["rgb"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { playEffect } from './registry-D23neB4M.js';
2
- import { y as defineElement, p as prefersReducedMotion } from './base-DchG4q_S.js';
3
- import { T as TIMELINE_PRESETS } from './core-DVyTlo9Q.js';
1
+ import { playEffect } from './registry-CyKExAmE.js';
2
+ import { u as defineElement, p as prefersReducedMotion } from './base-2-yYc93C.js';
3
+ import { T as TIMELINE_PRESETS } from './core-D5rU0CV6.js';
4
4
 
5
5
  /**
6
6
  * 5.4 — `<usa-story template="…">` scroll-storytelling templates.
@@ -513,4 +513,4 @@ function definePlayer(tag = 'usa-player') {
513
513
  }
514
514
 
515
515
  export { ANIMATION_FORMAT as A, STORY_TEMPLATES as S, definePlayer as a, createPlayer as c, defineStory as d, formatCount as f, normalizeAnimation as n, storyProgress as s };
516
- //# sourceMappingURL=player-C-TwEEy6.js.map
516
+ //# sourceMappingURL=player-DxvCYo7Q.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"player-C-TwEEy6.js","sources":["../../src/components/effects/story.ts","../../src/components/effects/player.ts"],"sourcesContent":["/**\n * 5.4 — `<usa-story template=\"…\">` scroll-storytelling templates.\n *\n * - `pin` — a sticky `[data-stage]` while `[data-step]` sections scroll past; the\n * step in view gets `data-active`, the stage gets `data-active-step=\"<index>\"`.\n * - `gallery` — a horizontal `[data-track]` slides sideways as you scroll down.\n * - `zoom` — the `[data-stage]` zooms toward the viewer (`zoom=\"6\"`) and fades.\n * - `compare` — before / after (`[data-before]`, `[data-after]`) wipe driven by\n * scroll, plus a draggable, keyboard-accessible handle (`role=\"slider\"`).\n * - `counter` — `[data-count=\"1234\"]` numbers count up when they enter view.\n * - `highlight` — paragraphs dim except the one crossing the viewport center.\n *\n * Every template sets `--usa-story-progress` (0–1) on the host and dispatches\n * `usa-story-step` (`detail: { index }`). Reduced motion: no sliding / zooming\n * (the gallery stacks vertically), counters show final values, the rest is\n * class changes only.\n */\nimport { defineElement, type UsaElement } from '../base';\n\nexport const STORY_TEMPLATES = ['pin', 'gallery', 'zoom', 'compare', 'counter', 'highlight'] as const;\nexport type StoryTemplate = (typeof STORY_TEMPLATES)[number];\n\nexport interface UsaStoryElement extends UsaElement {\n /** Scroll progress through the story, 0–1. */\n readonly progress: number;\n /** Index of the active step (pin / highlight), or -1. */\n readonly step: number;\n}\n\nconst CSS = `usa-story{display:block;position:relative}\nusa-story[template=pin] [data-stage],usa-story[template=gallery] [data-sticky],usa-story[template=zoom] [data-stage],usa-story[template=compare] [data-sticky]{position:sticky;top:0}\nusa-story[template=pin] [data-stage]{align-self:start}\nusa-story[template=pin] [data-step]{min-height:80vh;opacity:.35;transition:opacity .3s}\nusa-story[template=pin] [data-step][data-active]{opacity:1}\nusa-story[template=gallery] [data-sticky]{height:100vh;overflow:hidden;display:flex;align-items:center}\nusa-story[template=gallery] [data-track]{display:flex;gap:24px;will-change:transform}\nusa-story[template=gallery][data-static] [data-sticky]{position:static;height:auto;overflow:visible}\nusa-story[template=gallery][data-static] [data-track]{flex-direction:column;transform:none!important}\nusa-story[template=zoom] [data-stage]{height:100vh;overflow:hidden;display:grid;place-items:center}\nusa-story[template=compare] [data-sticky]{height:var(--usa-story-h,70vh);overflow:hidden}\nusa-story[template=compare] [data-before],usa-story[template=compare] [data-after]{position:absolute;inset:0}\nusa-story[template=compare] [data-after]{clip-path:inset(0 0 0 var(--usa-split,50%))}\nusa-story [data-handle]{position:absolute;top:0;bottom:0;left:var(--usa-split,50%);width:4px;margin-left:-2px;background:#fff;box-shadow:0 0 0 1px #0003;cursor:ew-resize;touch-action:none}\nusa-story [data-handle]:focus-visible{outline:3px solid #7c5cff;outline-offset:2px}\nusa-story[template=highlight] p,usa-story[template=highlight] [data-step]{opacity:.3;transition:opacity .25s}\nusa-story[template=highlight] [data-active]{opacity:1}`;\n\nconst clamp = (v: number, a = 0, b = 1) => Math.min(b, Math.max(a, v));\n\n/** Progress of `el` through the viewport: 0 when its top hits the viewport top, 1 when its bottom hits the viewport bottom. */\nexport function storyProgress(el: Element, vh = typeof innerHeight === 'number' ? innerHeight : 800): number {\n const r = el.getBoundingClientRect();\n const span = r.height - vh;\n return span > 0 ? clamp(-r.top / span) : clamp((vh - r.top) / (vh + r.height));\n}\n\n/** Format a counted value like the target (`1,234`, `12.5`, prefix / suffix kept). */\nexport function formatCount(target: string, t: number): string {\n const m = target.match(/^(\\D*)([\\d,]*\\.?\\d+)(.*)$/);\n if (!m) return target;\n const [, pre, num, post] = m;\n const n = parseFloat(num.replace(/,/g, ''));\n const dec = (num.split('.')[1] || '').length;\n let s = (n * t).toFixed(dec);\n if (num.includes(',')) s = Number(s).toLocaleString('en-US', { minimumFractionDigits: dec, maximumFractionDigits: dec });\n return pre + s + post;\n}\n\nexport function defineStory(tag = 'usa-story'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaStory extends Base {\n static get observedAttributes(): string[] {\n return ['template', 'zoom'];\n }\n progress = 0;\n step = -1;\n private frame = 0;\n get template(): StoryTemplate {\n const t = this.str('template', 'pin') as StoryTemplate;\n return STORY_TEMPLATES.includes(t) ? t : 'pin';\n }\n private steps(): HTMLElement[] {\n const own = Array.from(this.querySelectorAll<HTMLElement>('[data-step]:not([data-stage])'));\n return own.length || this.template !== 'highlight' ? own : Array.from(this.querySelectorAll<HTMLElement>('p'));\n }\n private setStep(i: number): void {\n if (i === this.step) return;\n this.step = i;\n this.steps().forEach((s, k) => s.toggleAttribute('data-active', k === i));\n const stage = this.querySelector<HTMLElement>('[data-stage]');\n if (stage) stage.dataset.activeStep = String(i);\n this.dispatchEvent(new CustomEvent('usa-story-step', { detail: { index: i }, bubbles: true }));\n }\n /** Recompute from the current scroll position (called on scroll / resize). */\n update(): void {\n this.frame = 0;\n const p = (this.progress = storyProgress(this));\n this.style.setProperty('--usa-story-progress', p.toFixed(4));\n const t = this.template;\n const vh = innerHeight || 800;\n if (t === 'pin' || t === 'highlight') {\n const mid = vh / 2;\n let best = -1;\n let bestD = Infinity;\n this.steps().forEach((s, i) => {\n const r = s.getBoundingClientRect();\n const d = r.top <= mid && r.bottom >= mid ? 0 : Math.min(Math.abs(r.top - mid), Math.abs(r.bottom - mid));\n if (d < bestD) (bestD = d), (best = i);\n });\n this.setStep(best);\n } else if (t === 'gallery' && !this.reduced) {\n const track = this.querySelector<HTMLElement>('[data-track]');\n const box = this.querySelector<HTMLElement>('[data-sticky]');\n if (track && box) track.style.transform = `translateX(${(-p * Math.max(0, track.scrollWidth - box.clientWidth)).toFixed(1)}px)`;\n } else if (t === 'zoom' && !this.reduced) {\n const inner = this.querySelector<HTMLElement>('[data-stage] > *');\n if (inner) {\n inner.style.transform = `scale(${(1 + p * (this.num('zoom', 6) - 1)).toFixed(3)})`;\n inner.style.opacity = String(clamp(1.4 - p * 1.4).toFixed(3));\n }\n } else if (t === 'compare' && !this.hasAttribute('data-dragged')) {\n this.setSplit(p * 100);\n } else if (t === 'counter') {\n this.querySelectorAll<HTMLElement>('[data-count]:not([data-counted])').forEach((el) => {\n const r = el.getBoundingClientRect();\n if (r.top < vh * 0.9 && r.bottom > 0) this.count(el);\n });\n }\n }\n private setSplit(pct: number): void {\n const v = clamp(pct, 0, 100);\n this.style.setProperty('--usa-split', `${v.toFixed(2)}%`);\n const h = this.querySelector<HTMLElement>('[data-handle]');\n if (h) h.setAttribute('aria-valuenow', String(Math.round(v)));\n }\n private count(el: HTMLElement): void {\n el.dataset.counted = '';\n const target = el.dataset.count || el.textContent || '0';\n el.setAttribute('aria-label', target);\n if (this.reduced) {\n el.textContent = target;\n return;\n }\n const dur = Number(el.dataset.duration) || 1600;\n const t0 = performance.now();\n const tick = (now: number) => {\n const k = clamp((now - t0) / dur);\n el.textContent = formatCount(target, 1 - (1 - k) ** 3);\n if (k < 1) requestAnimationFrame(tick);\n };\n requestAnimationFrame(tick);\n }\n mount(): void {\n this.toggleAttribute('data-static', this.reduced);\n if (this.template === 'compare') this.mountCompare();\n const kick = () => {\n if (!this.frame) this.frame = requestAnimationFrame(() => this.update());\n };\n this.listen(window, 'scroll', kick, { passive: true });\n this.listen(window, 'resize', kick);\n this.onCleanup(() => cancelAnimationFrame(this.frame));\n this.update();\n }\n private mountCompare(): void {\n const box = this.querySelector<HTMLElement>('[data-sticky]') || this;\n let h = this.querySelector<HTMLElement>('[data-handle]');\n if (!h) {\n h = document.createElement('div');\n h.setAttribute('data-handle', '');\n box.appendChild(h);\n this.onCleanup(() => h!.remove());\n }\n h.tabIndex = 0;\n h.setAttribute('role', 'slider');\n h.setAttribute('aria-label', this.str('label', 'Before / after'));\n h.setAttribute('aria-valuemin', '0');\n h.setAttribute('aria-valuemax', '100');\n const at = (e: PointerEvent) => {\n const r = box.getBoundingClientRect();\n this.dataset.dragged = '';\n this.setSplit(((e.clientX - r.left) / (r.width || 1)) * 100);\n };\n let drag = false;\n this.listen(h, 'pointerdown', (e: PointerEvent) => {\n drag = true;\n h!.setPointerCapture?.(e.pointerId);\n });\n this.listen(h, 'pointermove', (e: PointerEvent) => drag && at(e));\n this.listen(h, 'pointerup', () => (drag = false));\n this.listen(h, 'keydown', (e: KeyboardEvent) => {\n const cur = parseFloat(h!.getAttribute('aria-valuenow') || '50');\n const step = e.shiftKey ? 10 : 2;\n const next = e.key === 'ArrowLeft' || e.key === 'ArrowDown' ? cur - step : e.key === 'ArrowRight' || e.key === 'ArrowUp' ? cur + step : e.key === 'Home' ? 0 : e.key === 'End' ? 100 : null;\n if (next == null) return;\n e.preventDefault();\n this.dataset.dragged = '';\n this.setSplit(next);\n });\n this.setSplit(50);\n }\n unmount(): void {\n this.step = -1;\n delete this.dataset.dragged;\n }\n },\n { id: 'usa-story', text: CSS }\n );\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-story': UsaStoryElement;\n }\n}\n","/**\n * 5.9 — `<usa-player>`: plays JSON animations.\n *\n * Format `use-scroll-animate/animation` v1:\n *\n * ```json\n * { \"format\": \"use-scroll-animate/animation\", \"version\": 1, \"name\": \"Hero\",\n * \"loop\": false,\n * \"tracks\": [\n * { \"target\": \"h1\", \"start\": 0, \"duration\": 600, \"preset\": \"fade-up\" },\n * { \"target\": \".cta\", \"start\": 500, \"duration\": 500, \"keyframes\": [{ \"opacity\": 0 }, { \"opacity\": 1 }], \"easing\": \"ease-out\" },\n * { \"target\": \".cta\", \"start\": 1100, \"effect\": \"jelly\", \"options\": {} }\n * ] }\n * ```\n *\n * A track animates `target` (a selector inside the player; `:scope` for the\n * player itself) with a timeline preset, its own keyframes, or fires any\n * registered effect at `start`. Playground presets (format\n * `use-scroll-animate/playground`) are accepted too — their tracks map to the\n * player's children in order.\n *\n * Keyframe tracks are WAAPI animations driven by one clock, so the player can\n * play, pause, seek, change rate and be scrubbed by scroll\n * (`trigger=\"scroll\"`). Reduced motion: jumps to the end state, effects skipped.\n */\nimport { playEffect } from '../fx/registry';\nimport { defineElement, prefersReducedMotion, type UsaElement } from '../base';\nimport { TIMELINE_PRESETS } from '../timeline/core';\nimport { storyProgress } from './story';\n\nexport interface AnimationTrack {\n /** Selector inside the player (`:scope` = the player). */\n target?: string;\n /** Start time in ms. */\n start?: number;\n duration?: number;\n /** A timeline preset (`fade-up`, `scale`, `blur`…). */\n preset?: string;\n keyframes?: Keyframe[];\n easing?: string;\n /** A registered effect fired at `start` (instead of keyframes). */\n effect?: string;\n options?: Record<string, unknown>;\n label?: string;\n}\n\nexport interface AnimationJSON {\n format?: string;\n version?: number;\n name?: string;\n loop?: boolean;\n /** Total length; defaults to the end of the last track. */\n duration?: number;\n tracks: AnimationTrack[];\n}\n\nexport const ANIMATION_FORMAT = 'use-scroll-animate/animation';\n\nfunction decodePlayground(state: string): AnimationTrack[] {\n try {\n const b64 = state.replace(/-/g, '+').replace(/_/g, '/');\n const json = decodeURIComponent(escape(atob(b64)));\n const t = (JSON.parse(json).t || []) as [string, number, number, string][];\n return t.map(([preset, start, duration, label], i) => ({ target: `:scope > :nth-child(${i + 1})`, preset, start, duration, label }));\n } catch {\n return [];\n }\n}\n\n/** Validate / normalise an animation (object or JSON text). Throws on anything unusable. */\nexport function normalizeAnimation(input: string | AnimationJSON | Record<string, any>): Required<Pick<AnimationJSON, 'tracks' | 'duration' | 'loop' | 'name'>> {\n const d: any = typeof input === 'string' ? JSON.parse(input) : input;\n if (!d || typeof d !== 'object') throw new Error('[motionary] animation: expected an object');\n let tracks: AnimationTrack[];\n if (d.format === 'use-scroll-animate/playground') tracks = decodePlayground(String(d.state || ''));\n else if (Array.isArray(d.tracks)) tracks = d.tracks;\n else throw new Error('[motionary] animation: missing \"tracks\"');\n if (d.format && d.format !== ANIMATION_FORMAT && d.format !== 'use-scroll-animate/playground') throw new Error(`[motionary] animation: unknown format \"${d.format}\"`);\n if (d.version && d.version > 1 && d.format === ANIMATION_FORMAT) throw new Error(`[motionary] animation: version ${d.version} needs a newer motionary`);\n const out = tracks\n .filter((t) => t && (t.effect || t.preset || Array.isArray(t.keyframes)))\n .map((t) => ({ ...t, target: t.target || ':scope', start: Math.max(0, Number(t.start) || 0), duration: t.effect ? 0 : Math.max(1, Number(t.duration) || 600) }));\n const end = out.reduce((m, t) => Math.max(m, t.start + t.duration), 0);\n return { tracks: out, duration: Math.max(end, Number(d.duration) || 0), loop: !!d.loop, name: String(d.name || 'animation') };\n}\n\nexport interface Player {\n readonly duration: number;\n readonly currentTime: number;\n readonly playing: boolean;\n play(): void;\n pause(): void;\n /** Jump to `ms` (effects between are not replayed). */\n seek(ms: number): void;\n /** Playback rate (default 1). */\n rate: number;\n /** Resolves each time the animation reaches its end (not when looping). */\n readonly finished: Promise<void>;\n destroy(): void;\n}\n\nconst pick = (root: HTMLElement, sel: string): HTMLElement[] => {\n if (sel === ':scope') return [root];\n try {\n return Array.from(root.querySelectorAll<HTMLElement>(sel));\n } catch {\n return [];\n }\n};\n\n/** Bind an animation to `root` and return its controller (paused at 0 unless `autoplay`). */\nexport function createPlayer(root: HTMLElement, animation: string | AnimationJSON, o: { autoplay?: boolean; loop?: boolean; rate?: number; onFinish?: () => void } = {}): Player {\n const a = normalizeAnimation(animation);\n const loop = o.loop ?? a.loop;\n const anims: Animation[] = [];\n const effects: { els: HTMLElement[]; t: AnimationTrack; fired: boolean }[] = [];\n for (const t of a.tracks) {\n const els = pick(root, t.target!);\n if (t.effect) effects.push({ els, t, fired: false });\n else {\n const kf = t.keyframes || TIMELINE_PRESETS[t.preset!] || TIMELINE_PRESETS.fade;\n for (const el of els) {\n if (typeof el.animate !== 'function') continue;\n const an = el.animate(kf, { duration: t.duration, delay: t.start, easing: t.easing || 'cubic-bezier(0.22, 1, 0.36, 1)', fill: 'both' });\n an.pause();\n an.currentTime = 0;\n anims.push(an);\n }\n }\n }\n let time = 0;\n let playing = false;\n let raf = 0;\n let last = 0;\n let resolve!: () => void;\n let finished = new Promise<void>((r) => (resolve = r));\n const set = (ms: number) => {\n time = Math.min(a.duration, Math.max(0, ms));\n for (const an of anims) an.currentTime = time;\n };\n const fireDue = () => {\n if (prefersReducedMotion()) return;\n for (const e of effects)\n if (!e.fired && time >= e.t.start!) {\n e.fired = true;\n for (const el of e.els) playEffect(el, e.t.effect!, e.t.options || {}).catch(() => undefined);\n }\n };\n const done = () => {\n resolve();\n o.onFinish?.();\n finished = new Promise<void>((r) => (resolve = r));\n };\n const frame = (now: number) => {\n raf = 0;\n if (!playing) return;\n set(time + (now - last) * player.rate);\n last = now;\n fireDue();\n if (time >= a.duration) {\n if (loop) {\n effects.forEach((e) => (e.fired = false));\n set(0);\n } else {\n playing = false;\n done();\n return;\n }\n }\n raf = requestAnimationFrame(frame);\n };\n const player: Player = {\n get duration() {\n return a.duration;\n },\n get currentTime() {\n return time;\n },\n get playing() {\n return playing;\n },\n rate: o.rate ?? 1,\n get finished() {\n return finished;\n },\n play() {\n if (prefersReducedMotion()) {\n set(a.duration);\n effects.forEach((e) => (e.fired = true));\n done();\n return;\n }\n if (playing) return;\n if (time >= a.duration) {\n effects.forEach((e) => (e.fired = false));\n set(0);\n }\n playing = true;\n last = performance.now();\n fireDue();\n raf = requestAnimationFrame(frame);\n },\n pause() {\n playing = false;\n cancelAnimationFrame(raf);\n raf = 0;\n },\n seek(ms: number) {\n set(ms);\n effects.forEach((e) => (e.fired = e.t.start! < time));\n },\n destroy() {\n player.pause();\n anims.forEach((an) => an.cancel());\n },\n };\n if (o.autoplay) player.play();\n return player;\n}\n\nexport interface UsaPlayerElement extends UsaElement {\n readonly player: Player | null;\n /** Load an animation (object or JSON text) and restart. */\n load(animation: string | AnimationJSON): void;\n play(): void;\n pause(): void;\n seek(ms: number): void;\n}\n\n/**\n * `<usa-player src=\"hero.json\" | <script type=\"application/json\"> child\n * trigger=\"load | view | scroll | click | manual\" loop rate controls>`.\n * Emits `usa-player-ready` and `usa-player-finish`; sets `data-error` when the\n * animation cannot be loaded.\n */\nexport function definePlayer(tag = 'usa-player'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaPlayer extends Base {\n static get observedAttributes(): string[] {\n return ['src', 'trigger', 'loop', 'rate'];\n }\n player: Player | null = null;\n private json: string | AnimationJSON | null = null;\n load(animation: string | AnimationJSON): void {\n this.json = animation;\n this.start();\n }\n play(): void {\n this.player?.play();\n }\n pause(): void {\n this.player?.pause();\n }\n seek(ms: number): void {\n this.player?.seek(ms);\n }\n private start(): void {\n this.player?.destroy();\n this.player = null;\n if (!this.json) return;\n try {\n this.player = createPlayer(this, this.json, {\n loop: this.hasAttribute('loop') ? true : undefined,\n rate: this.num('rate', 1),\n onFinish: () => this.dispatchEvent(new CustomEvent('usa-player-finish', { bubbles: true })),\n });\n this.removeAttribute('data-error');\n } catch (err) {\n this.setAttribute('data-error', String((err as Error).message || err));\n return;\n }\n const p = this.player;\n this.dispatchEvent(new CustomEvent('usa-player-ready', { detail: { duration: p.duration }, bubbles: true }));\n const trig = this.str('trigger', 'view');\n if (trig === 'load') p.play();\n else if (trig === 'view') this.inView((v) => v && p.play(), { threshold: 0.25 });\n else if (trig === 'click') this.listen(this, 'click', () => (p.playing ? p.pause() : p.play()));\n else if (trig === 'scroll') {\n let f = 0;\n const upd = () => {\n f = 0;\n p.seek(storyProgress(this) * p.duration);\n };\n const kick = () => void (f ||= requestAnimationFrame(upd));\n this.listen(window, 'scroll', kick, { passive: true });\n this.listen(window, 'resize', kick);\n this.onCleanup(() => cancelAnimationFrame(f));\n upd();\n }\n if (this.flag('controls')) this.mountControls(p);\n }\n private mountControls(p: Player): void {\n const b = document.createElement('button');\n b.type = 'button';\n b.setAttribute('data-player-toggle', '');\n b.textContent = '▶︎ / ❚❚';\n b.setAttribute('aria-label', 'Play / pause animation');\n this.listen(b, 'click', (e: Event) => {\n e.stopPropagation();\n if (p.playing) p.pause();\n else p.play();\n b.setAttribute('aria-pressed', String(p.playing));\n });\n this.append(b);\n this.onCleanup(() => b.remove());\n }\n changed(name: string): void {\n if (name === 'src') this.json = null;\n super.changed(name);\n }\n mount(): void {\n this.onCleanup(() => {\n this.player?.destroy();\n this.player = null;\n });\n const inline = this.querySelector<HTMLScriptElement>('script[type=\"application/json\"]');\n const src = this.str('src');\n if (inline && !this.json) this.json = inline.textContent || '';\n if (src && !this.json) {\n fetch(src)\n .then((r) => (r.ok ? r.text() : Promise.reject(new Error(`HTTP ${r.status}`))))\n .then((t) => this.isConnected && this.load(t))\n .catch((err) => this.setAttribute('data-error', String(err.message || err)));\n return;\n }\n this.start();\n }\n },\n { id: 'usa-player', text: 'usa-player{display:block;position:relative}usa-player>script{display:none}usa-player [data-player-toggle]{position:absolute;right:8px;bottom:8px}' }\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"player-DxvCYo7Q.js","sources":["../../src/components/effects/story.ts","../../src/components/effects/player.ts"],"sourcesContent":["/**\n * 5.4 — `<usa-story template=\"…\">` scroll-storytelling templates.\n *\n * - `pin` — a sticky `[data-stage]` while `[data-step]` sections scroll past; the\n * step in view gets `data-active`, the stage gets `data-active-step=\"<index>\"`.\n * - `gallery` — a horizontal `[data-track]` slides sideways as you scroll down.\n * - `zoom` — the `[data-stage]` zooms toward the viewer (`zoom=\"6\"`) and fades.\n * - `compare` — before / after (`[data-before]`, `[data-after]`) wipe driven by\n * scroll, plus a draggable, keyboard-accessible handle (`role=\"slider\"`).\n * - `counter` — `[data-count=\"1234\"]` numbers count up when they enter view.\n * - `highlight` — paragraphs dim except the one crossing the viewport center.\n *\n * Every template sets `--usa-story-progress` (0–1) on the host and dispatches\n * `usa-story-step` (`detail: { index }`). Reduced motion: no sliding / zooming\n * (the gallery stacks vertically), counters show final values, the rest is\n * class changes only.\n */\nimport { defineElement, type UsaElement } from '../base';\n\nexport const STORY_TEMPLATES = ['pin', 'gallery', 'zoom', 'compare', 'counter', 'highlight'] as const;\nexport type StoryTemplate = (typeof STORY_TEMPLATES)[number];\n\nexport interface UsaStoryElement extends UsaElement {\n /** Scroll progress through the story, 0–1. */\n readonly progress: number;\n /** Index of the active step (pin / highlight), or -1. */\n readonly step: number;\n}\n\nconst CSS = `usa-story{display:block;position:relative}\nusa-story[template=pin] [data-stage],usa-story[template=gallery] [data-sticky],usa-story[template=zoom] [data-stage],usa-story[template=compare] [data-sticky]{position:sticky;top:0}\nusa-story[template=pin] [data-stage]{align-self:start}\nusa-story[template=pin] [data-step]{min-height:80vh;opacity:.35;transition:opacity .3s}\nusa-story[template=pin] [data-step][data-active]{opacity:1}\nusa-story[template=gallery] [data-sticky]{height:100vh;overflow:hidden;display:flex;align-items:center}\nusa-story[template=gallery] [data-track]{display:flex;gap:24px;will-change:transform}\nusa-story[template=gallery][data-static] [data-sticky]{position:static;height:auto;overflow:visible}\nusa-story[template=gallery][data-static] [data-track]{flex-direction:column;transform:none!important}\nusa-story[template=zoom] [data-stage]{height:100vh;overflow:hidden;display:grid;place-items:center}\nusa-story[template=compare] [data-sticky]{height:var(--usa-story-h,70vh);overflow:hidden}\nusa-story[template=compare] [data-before],usa-story[template=compare] [data-after]{position:absolute;inset:0}\nusa-story[template=compare] [data-after]{clip-path:inset(0 0 0 var(--usa-split,50%))}\nusa-story [data-handle]{position:absolute;top:0;bottom:0;left:var(--usa-split,50%);width:4px;margin-left:-2px;background:#fff;box-shadow:0 0 0 1px #0003;cursor:ew-resize;touch-action:none}\nusa-story [data-handle]:focus-visible{outline:3px solid #7c5cff;outline-offset:2px}\nusa-story[template=highlight] p,usa-story[template=highlight] [data-step]{opacity:.3;transition:opacity .25s}\nusa-story[template=highlight] [data-active]{opacity:1}`;\n\nconst clamp = (v: number, a = 0, b = 1) => Math.min(b, Math.max(a, v));\n\n/** Progress of `el` through the viewport: 0 when its top hits the viewport top, 1 when its bottom hits the viewport bottom. */\nexport function storyProgress(el: Element, vh = typeof innerHeight === 'number' ? innerHeight : 800): number {\n const r = el.getBoundingClientRect();\n const span = r.height - vh;\n return span > 0 ? clamp(-r.top / span) : clamp((vh - r.top) / (vh + r.height));\n}\n\n/** Format a counted value like the target (`1,234`, `12.5`, prefix / suffix kept). */\nexport function formatCount(target: string, t: number): string {\n const m = target.match(/^(\\D*)([\\d,]*\\.?\\d+)(.*)$/);\n if (!m) return target;\n const [, pre, num, post] = m;\n const n = parseFloat(num.replace(/,/g, ''));\n const dec = (num.split('.')[1] || '').length;\n let s = (n * t).toFixed(dec);\n if (num.includes(',')) s = Number(s).toLocaleString('en-US', { minimumFractionDigits: dec, maximumFractionDigits: dec });\n return pre + s + post;\n}\n\nexport function defineStory(tag = 'usa-story'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaStory extends Base {\n static get observedAttributes(): string[] {\n return ['template', 'zoom'];\n }\n progress = 0;\n step = -1;\n private frame = 0;\n get template(): StoryTemplate {\n const t = this.str('template', 'pin') as StoryTemplate;\n return STORY_TEMPLATES.includes(t) ? t : 'pin';\n }\n private steps(): HTMLElement[] {\n const own = Array.from(this.querySelectorAll<HTMLElement>('[data-step]:not([data-stage])'));\n return own.length || this.template !== 'highlight' ? own : Array.from(this.querySelectorAll<HTMLElement>('p'));\n }\n private setStep(i: number): void {\n if (i === this.step) return;\n this.step = i;\n this.steps().forEach((s, k) => s.toggleAttribute('data-active', k === i));\n const stage = this.querySelector<HTMLElement>('[data-stage]');\n if (stage) stage.dataset.activeStep = String(i);\n this.dispatchEvent(new CustomEvent('usa-story-step', { detail: { index: i }, bubbles: true }));\n }\n /** Recompute from the current scroll position (called on scroll / resize). */\n update(): void {\n this.frame = 0;\n const p = (this.progress = storyProgress(this));\n this.style.setProperty('--usa-story-progress', p.toFixed(4));\n const t = this.template;\n const vh = innerHeight || 800;\n if (t === 'pin' || t === 'highlight') {\n const mid = vh / 2;\n let best = -1;\n let bestD = Infinity;\n this.steps().forEach((s, i) => {\n const r = s.getBoundingClientRect();\n const d = r.top <= mid && r.bottom >= mid ? 0 : Math.min(Math.abs(r.top - mid), Math.abs(r.bottom - mid));\n if (d < bestD) (bestD = d), (best = i);\n });\n this.setStep(best);\n } else if (t === 'gallery' && !this.reduced) {\n const track = this.querySelector<HTMLElement>('[data-track]');\n const box = this.querySelector<HTMLElement>('[data-sticky]');\n if (track && box) track.style.transform = `translateX(${(-p * Math.max(0, track.scrollWidth - box.clientWidth)).toFixed(1)}px)`;\n } else if (t === 'zoom' && !this.reduced) {\n const inner = this.querySelector<HTMLElement>('[data-stage] > *');\n if (inner) {\n inner.style.transform = `scale(${(1 + p * (this.num('zoom', 6) - 1)).toFixed(3)})`;\n inner.style.opacity = String(clamp(1.4 - p * 1.4).toFixed(3));\n }\n } else if (t === 'compare' && !this.hasAttribute('data-dragged')) {\n this.setSplit(p * 100);\n } else if (t === 'counter') {\n this.querySelectorAll<HTMLElement>('[data-count]:not([data-counted])').forEach((el) => {\n const r = el.getBoundingClientRect();\n if (r.top < vh * 0.9 && r.bottom > 0) this.count(el);\n });\n }\n }\n private setSplit(pct: number): void {\n const v = clamp(pct, 0, 100);\n this.style.setProperty('--usa-split', `${v.toFixed(2)}%`);\n const h = this.querySelector<HTMLElement>('[data-handle]');\n if (h) h.setAttribute('aria-valuenow', String(Math.round(v)));\n }\n private count(el: HTMLElement): void {\n el.dataset.counted = '';\n const target = el.dataset.count || el.textContent || '0';\n el.setAttribute('aria-label', target);\n if (this.reduced) {\n el.textContent = target;\n return;\n }\n const dur = Number(el.dataset.duration) || 1600;\n const t0 = performance.now();\n const tick = (now: number) => {\n const k = clamp((now - t0) / dur);\n el.textContent = formatCount(target, 1 - (1 - k) ** 3);\n if (k < 1) requestAnimationFrame(tick);\n };\n requestAnimationFrame(tick);\n }\n mount(): void {\n this.toggleAttribute('data-static', this.reduced);\n if (this.template === 'compare') this.mountCompare();\n const kick = () => {\n if (!this.frame) this.frame = requestAnimationFrame(() => this.update());\n };\n this.listen(window, 'scroll', kick, { passive: true });\n this.listen(window, 'resize', kick);\n this.onCleanup(() => cancelAnimationFrame(this.frame));\n this.update();\n }\n private mountCompare(): void {\n const box = this.querySelector<HTMLElement>('[data-sticky]') || this;\n let h = this.querySelector<HTMLElement>('[data-handle]');\n if (!h) {\n h = document.createElement('div');\n h.setAttribute('data-handle', '');\n box.appendChild(h);\n this.onCleanup(() => h!.remove());\n }\n h.tabIndex = 0;\n h.setAttribute('role', 'slider');\n h.setAttribute('aria-label', this.str('label', 'Before / after'));\n h.setAttribute('aria-valuemin', '0');\n h.setAttribute('aria-valuemax', '100');\n const at = (e: PointerEvent) => {\n const r = box.getBoundingClientRect();\n this.dataset.dragged = '';\n this.setSplit(((e.clientX - r.left) / (r.width || 1)) * 100);\n };\n let drag = false;\n this.listen(h, 'pointerdown', (e: PointerEvent) => {\n drag = true;\n h!.setPointerCapture?.(e.pointerId);\n });\n this.listen(h, 'pointermove', (e: PointerEvent) => drag && at(e));\n this.listen(h, 'pointerup', () => (drag = false));\n this.listen(h, 'keydown', (e: KeyboardEvent) => {\n const cur = parseFloat(h!.getAttribute('aria-valuenow') || '50');\n const step = e.shiftKey ? 10 : 2;\n const next = e.key === 'ArrowLeft' || e.key === 'ArrowDown' ? cur - step : e.key === 'ArrowRight' || e.key === 'ArrowUp' ? cur + step : e.key === 'Home' ? 0 : e.key === 'End' ? 100 : null;\n if (next == null) return;\n e.preventDefault();\n this.dataset.dragged = '';\n this.setSplit(next);\n });\n this.setSplit(50);\n }\n unmount(): void {\n this.step = -1;\n delete this.dataset.dragged;\n }\n },\n { id: 'usa-story', text: CSS }\n );\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-story': UsaStoryElement;\n }\n}\n","/**\n * 5.9 — `<usa-player>`: plays JSON animations.\n *\n * Format `use-scroll-animate/animation` v1:\n *\n * ```json\n * { \"format\": \"use-scroll-animate/animation\", \"version\": 1, \"name\": \"Hero\",\n * \"loop\": false,\n * \"tracks\": [\n * { \"target\": \"h1\", \"start\": 0, \"duration\": 600, \"preset\": \"fade-up\" },\n * { \"target\": \".cta\", \"start\": 500, \"duration\": 500, \"keyframes\": [{ \"opacity\": 0 }, { \"opacity\": 1 }], \"easing\": \"ease-out\" },\n * { \"target\": \".cta\", \"start\": 1100, \"effect\": \"jelly\", \"options\": {} }\n * ] }\n * ```\n *\n * A track animates `target` (a selector inside the player; `:scope` for the\n * player itself) with a timeline preset, its own keyframes, or fires any\n * registered effect at `start`. Playground presets (format\n * `use-scroll-animate/playground`) are accepted too — their tracks map to the\n * player's children in order.\n *\n * Keyframe tracks are WAAPI animations driven by one clock, so the player can\n * play, pause, seek, change rate and be scrubbed by scroll\n * (`trigger=\"scroll\"`). Reduced motion: jumps to the end state, effects skipped.\n */\nimport { playEffect } from '../fx/registry';\nimport { defineElement, prefersReducedMotion, type UsaElement } from '../base';\nimport { TIMELINE_PRESETS } from '../timeline/core';\nimport { storyProgress } from './story';\n\nexport interface AnimationTrack {\n /** Selector inside the player (`:scope` = the player). */\n target?: string;\n /** Start time in ms. */\n start?: number;\n duration?: number;\n /** A timeline preset (`fade-up`, `scale`, `blur`…). */\n preset?: string;\n keyframes?: Keyframe[];\n easing?: string;\n /** A registered effect fired at `start` (instead of keyframes). */\n effect?: string;\n options?: Record<string, unknown>;\n label?: string;\n}\n\nexport interface AnimationJSON {\n format?: string;\n version?: number;\n name?: string;\n loop?: boolean;\n /** Total length; defaults to the end of the last track. */\n duration?: number;\n tracks: AnimationTrack[];\n}\n\nexport const ANIMATION_FORMAT = 'use-scroll-animate/animation';\n\nfunction decodePlayground(state: string): AnimationTrack[] {\n try {\n const b64 = state.replace(/-/g, '+').replace(/_/g, '/');\n const json = decodeURIComponent(escape(atob(b64)));\n const t = (JSON.parse(json).t || []) as [string, number, number, string][];\n return t.map(([preset, start, duration, label], i) => ({ target: `:scope > :nth-child(${i + 1})`, preset, start, duration, label }));\n } catch {\n return [];\n }\n}\n\n/** Validate / normalise an animation (object or JSON text). Throws on anything unusable. */\nexport function normalizeAnimation(input: string | AnimationJSON | Record<string, any>): Required<Pick<AnimationJSON, 'tracks' | 'duration' | 'loop' | 'name'>> {\n const d: any = typeof input === 'string' ? JSON.parse(input) : input;\n if (!d || typeof d !== 'object') throw new Error('[motionary] animation: expected an object');\n let tracks: AnimationTrack[];\n if (d.format === 'use-scroll-animate/playground') tracks = decodePlayground(String(d.state || ''));\n else if (Array.isArray(d.tracks)) tracks = d.tracks;\n else throw new Error('[motionary] animation: missing \"tracks\"');\n if (d.format && d.format !== ANIMATION_FORMAT && d.format !== 'use-scroll-animate/playground') throw new Error(`[motionary] animation: unknown format \"${d.format}\"`);\n if (d.version && d.version > 1 && d.format === ANIMATION_FORMAT) throw new Error(`[motionary] animation: version ${d.version} needs a newer motionary`);\n const out = tracks\n .filter((t) => t && (t.effect || t.preset || Array.isArray(t.keyframes)))\n .map((t) => ({ ...t, target: t.target || ':scope', start: Math.max(0, Number(t.start) || 0), duration: t.effect ? 0 : Math.max(1, Number(t.duration) || 600) }));\n const end = out.reduce((m, t) => Math.max(m, t.start + t.duration), 0);\n return { tracks: out, duration: Math.max(end, Number(d.duration) || 0), loop: !!d.loop, name: String(d.name || 'animation') };\n}\n\nexport interface Player {\n readonly duration: number;\n readonly currentTime: number;\n readonly playing: boolean;\n play(): void;\n pause(): void;\n /** Jump to `ms` (effects between are not replayed). */\n seek(ms: number): void;\n /** Playback rate (default 1). */\n rate: number;\n /** Resolves each time the animation reaches its end (not when looping). */\n readonly finished: Promise<void>;\n destroy(): void;\n}\n\nconst pick = (root: HTMLElement, sel: string): HTMLElement[] => {\n if (sel === ':scope') return [root];\n try {\n return Array.from(root.querySelectorAll<HTMLElement>(sel));\n } catch {\n return [];\n }\n};\n\n/** Bind an animation to `root` and return its controller (paused at 0 unless `autoplay`). */\nexport function createPlayer(root: HTMLElement, animation: string | AnimationJSON, o: { autoplay?: boolean; loop?: boolean; rate?: number; onFinish?: () => void } = {}): Player {\n const a = normalizeAnimation(animation);\n const loop = o.loop ?? a.loop;\n const anims: Animation[] = [];\n const effects: { els: HTMLElement[]; t: AnimationTrack; fired: boolean }[] = [];\n for (const t of a.tracks) {\n const els = pick(root, t.target!);\n if (t.effect) effects.push({ els, t, fired: false });\n else {\n const kf = t.keyframes || TIMELINE_PRESETS[t.preset!] || TIMELINE_PRESETS.fade;\n for (const el of els) {\n if (typeof el.animate !== 'function') continue;\n const an = el.animate(kf, { duration: t.duration, delay: t.start, easing: t.easing || 'cubic-bezier(0.22, 1, 0.36, 1)', fill: 'both' });\n an.pause();\n an.currentTime = 0;\n anims.push(an);\n }\n }\n }\n let time = 0;\n let playing = false;\n let raf = 0;\n let last = 0;\n let resolve!: () => void;\n let finished = new Promise<void>((r) => (resolve = r));\n const set = (ms: number) => {\n time = Math.min(a.duration, Math.max(0, ms));\n for (const an of anims) an.currentTime = time;\n };\n const fireDue = () => {\n if (prefersReducedMotion()) return;\n for (const e of effects)\n if (!e.fired && time >= e.t.start!) {\n e.fired = true;\n for (const el of e.els) playEffect(el, e.t.effect!, e.t.options || {}).catch(() => undefined);\n }\n };\n const done = () => {\n resolve();\n o.onFinish?.();\n finished = new Promise<void>((r) => (resolve = r));\n };\n const frame = (now: number) => {\n raf = 0;\n if (!playing) return;\n set(time + (now - last) * player.rate);\n last = now;\n fireDue();\n if (time >= a.duration) {\n if (loop) {\n effects.forEach((e) => (e.fired = false));\n set(0);\n } else {\n playing = false;\n done();\n return;\n }\n }\n raf = requestAnimationFrame(frame);\n };\n const player: Player = {\n get duration() {\n return a.duration;\n },\n get currentTime() {\n return time;\n },\n get playing() {\n return playing;\n },\n rate: o.rate ?? 1,\n get finished() {\n return finished;\n },\n play() {\n if (prefersReducedMotion()) {\n set(a.duration);\n effects.forEach((e) => (e.fired = true));\n done();\n return;\n }\n if (playing) return;\n if (time >= a.duration) {\n effects.forEach((e) => (e.fired = false));\n set(0);\n }\n playing = true;\n last = performance.now();\n fireDue();\n raf = requestAnimationFrame(frame);\n },\n pause() {\n playing = false;\n cancelAnimationFrame(raf);\n raf = 0;\n },\n seek(ms: number) {\n set(ms);\n effects.forEach((e) => (e.fired = e.t.start! < time));\n },\n destroy() {\n player.pause();\n anims.forEach((an) => an.cancel());\n },\n };\n if (o.autoplay) player.play();\n return player;\n}\n\nexport interface UsaPlayerElement extends UsaElement {\n readonly player: Player | null;\n /** Load an animation (object or JSON text) and restart. */\n load(animation: string | AnimationJSON): void;\n play(): void;\n pause(): void;\n seek(ms: number): void;\n}\n\n/**\n * `<usa-player src=\"hero.json\" | <script type=\"application/json\"> child\n * trigger=\"load | view | scroll | click | manual\" loop rate controls>`.\n * Emits `usa-player-ready` and `usa-player-finish`; sets `data-error` when the\n * animation cannot be loaded.\n */\nexport function definePlayer(tag = 'usa-player'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaPlayer extends Base {\n static get observedAttributes(): string[] {\n return ['src', 'trigger', 'loop', 'rate'];\n }\n player: Player | null = null;\n private json: string | AnimationJSON | null = null;\n load(animation: string | AnimationJSON): void {\n this.json = animation;\n this.start();\n }\n play(): void {\n this.player?.play();\n }\n pause(): void {\n this.player?.pause();\n }\n seek(ms: number): void {\n this.player?.seek(ms);\n }\n private start(): void {\n this.player?.destroy();\n this.player = null;\n if (!this.json) return;\n try {\n this.player = createPlayer(this, this.json, {\n loop: this.hasAttribute('loop') ? true : undefined,\n rate: this.num('rate', 1),\n onFinish: () => this.dispatchEvent(new CustomEvent('usa-player-finish', { bubbles: true })),\n });\n this.removeAttribute('data-error');\n } catch (err) {\n this.setAttribute('data-error', String((err as Error).message || err));\n return;\n }\n const p = this.player;\n this.dispatchEvent(new CustomEvent('usa-player-ready', { detail: { duration: p.duration }, bubbles: true }));\n const trig = this.str('trigger', 'view');\n if (trig === 'load') p.play();\n else if (trig === 'view') this.inView((v) => v && p.play(), { threshold: 0.25 });\n else if (trig === 'click') this.listen(this, 'click', () => (p.playing ? p.pause() : p.play()));\n else if (trig === 'scroll') {\n let f = 0;\n const upd = () => {\n f = 0;\n p.seek(storyProgress(this) * p.duration);\n };\n const kick = () => void (f ||= requestAnimationFrame(upd));\n this.listen(window, 'scroll', kick, { passive: true });\n this.listen(window, 'resize', kick);\n this.onCleanup(() => cancelAnimationFrame(f));\n upd();\n }\n if (this.flag('controls')) this.mountControls(p);\n }\n private mountControls(p: Player): void {\n const b = document.createElement('button');\n b.type = 'button';\n b.setAttribute('data-player-toggle', '');\n b.textContent = '▶︎ / ❚❚';\n b.setAttribute('aria-label', 'Play / pause animation');\n this.listen(b, 'click', (e: Event) => {\n e.stopPropagation();\n if (p.playing) p.pause();\n else p.play();\n b.setAttribute('aria-pressed', String(p.playing));\n });\n this.append(b);\n this.onCleanup(() => b.remove());\n }\n changed(name: string): void {\n if (name === 'src') this.json = null;\n super.changed(name);\n }\n mount(): void {\n this.onCleanup(() => {\n this.player?.destroy();\n this.player = null;\n });\n const inline = this.querySelector<HTMLScriptElement>('script[type=\"application/json\"]');\n const src = this.str('src');\n if (inline && !this.json) this.json = inline.textContent || '';\n if (src && !this.json) {\n fetch(src)\n .then((r) => (r.ok ? r.text() : Promise.reject(new Error(`HTTP ${r.status}`))))\n .then((t) => this.isConnected && this.load(t))\n .catch((err) => this.setAttribute('data-error', String(err.message || err)));\n return;\n }\n this.start();\n }\n },\n { id: 'usa-player', text: 'usa-player{display:block;position:relative}usa-player>script{display:none}usa-player [data-player-toggle]{position:absolute;right:8px;bottom:8px}' }\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { e as animateWithMotion, i as getMotionSensitivity, p as prefersReducedMotion } from './base-DchG4q_S.js';
1
+ import { e as animateWithMotion, i as getMotionSensitivity, p as prefersReducedMotion } from './base-2-yYc93C.js';
2
2
 
3
3
  var _a;
4
4
  const EFFECT_KINDS = ['enter', 'exit', 'attention', 'click', 'hover', 'card', 'loop', 'page', 'background', 'text', 'cursor', 'scroll'];
@@ -118,4 +118,4 @@ function bindEffect(el, name, options = {}) {
118
118
  }
119
119
 
120
120
  export { EFFECT_KINDS, EFFECT_TRIGGERS, bindEffect, getEffect, hasEffect, listEffects, playEffect, registerEffect, registerEffects };
121
- //# sourceMappingURL=registry-D23neB4M.js.map
121
+ //# sourceMappingURL=registry-CyKExAmE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry-D23neB4M.js","sources":["../../src/components/fx/registry.ts"],"sourcesContent":["/**\n * 5.0 — unified plugin-style effect registration. Every effect (built-in or\n * yours) is a plain object registered once and played the same way:\n * `playEffect(el, name)`, `bindEffect(el, name, { trigger })` or\n * `<usa-fx effect=\"name\" trigger=\"click\">`. Effects get a context that\n * already applies reduced motion, motion sensitivity, intensity and the\n * animation budget.\n */\nimport { animateWithMotion, prefersReducedMotion, getMotionSensitivity, type MotionSensitivity, type Cleanup } from '../base';\n\nexport const EFFECT_KINDS = ['enter', 'exit', 'attention', 'click', 'hover', 'card', 'loop', 'page', 'background', 'text', 'cursor', 'scroll'] as const;\nexport type EffectKind = (typeof EFFECT_KINDS)[number];\n\nexport const EFFECT_TRIGGERS = ['click', 'hover', 'enter', 'load', 'loop', 'manual'] as const;\nexport type EffectTrigger = (typeof EFFECT_TRIGGERS)[number];\n\nexport interface EffectContext {\n /** Reduced motion applies (OS setting, `minimal` / `static` sensitivity). */\n readonly reduced: boolean;\n readonly sensitivity: MotionSensitivity;\n /** The triggering event (pointer position for click effects), if any. */\n readonly event?: Event;\n /** `el.animate()` with the library's motion rules (may return `null`). */\n animate(el: Element, keyframes: Keyframe[], options: KeyframeAnimationOptions): Animation | null;\n /** Register teardown for long-running effects (loops, listeners). */\n onCleanup(fn: Cleanup): void;\n}\n\nexport interface EffectDefinition<O extends Record<string, unknown> = Record<string, any>> {\n /** Unique, kebab-case. */\n name: string;\n kind: EffectKind;\n /** One line for docs and the gallery. */\n description?: string;\n /** Option defaults (merged under the caller's options). */\n defaults?: Partial<O>;\n /**\n * Under reduced motion: `'skip'` (do nothing — default for loop, background\n * and cursor effects) or `'run'` (run with `ctx.reduced === true`, the\n * effect degrades itself — default for everything else).\n */\n reduced?: 'skip' | 'run';\n /** Play the effect. Return an Animation / Promise to be awaited, or a cleanup. */\n run(el: HTMLElement, options: O, ctx: EffectContext): void | Cleanup | Animation | null | Promise<unknown>;\n}\n\n// 6.2: one table per page (Symbol.for), shared by every bundle that registers effects —\n// e.g. dist/components.umd.js and dist/widgets.umd.js on the same page.\nconst REG_KEY = Symbol.for('use-scroll-animate.effects');\nconst registry: Map<string, EffectDefinition> = ((globalThis as any)[REG_KEY] ||= new Map<string, EffectDefinition>());\n\n/** Register an effect (throws on a duplicate name unless `override`). Returns an unregister function. */\nexport function registerEffect<O extends Record<string, unknown>>(def: EffectDefinition<O>, opts: { override?: boolean } = {}): () => void {\n if (!/^[a-z][a-z0-9-]*$/.test(def.name)) throw new Error(`[motionary] invalid effect name \"${def.name}\"`);\n if (!EFFECT_KINDS.includes(def.kind)) throw new Error(`[motionary] unknown effect kind \"${def.kind}\"`);\n if (registry.has(def.name) && !opts.override) throw new Error(`[motionary] effect \"${def.name}\" is already registered`);\n registry.set(def.name, def as unknown as EffectDefinition);\n return () => {\n if (registry.get(def.name) === (def as unknown)) registry.delete(def.name);\n };\n}\n\n/** Register several effects at once (already-registered names are skipped). */\nexport function registerEffects(defs: EffectDefinition<any>[]): void {\n for (const d of defs) if (!registry.has(d.name)) registerEffect(d);\n}\n\nexport const getEffect = (name: string): EffectDefinition | undefined => registry.get(name);\nexport const hasEffect = (name: string): boolean => registry.has(name);\n/** Registered effects (optionally of one kind), sorted by name. */\nexport function listEffects(kind?: EffectKind): EffectDefinition[] {\n return Array.from(registry.values())\n .filter((d) => !kind || d.kind === kind)\n .sort((a, b) => a.name.localeCompare(b.name));\n}\n\nconst SKIP_BY_DEFAULT: EffectKind[] = ['loop', 'background', 'cursor'];\n\nfunction context(event?: Event): EffectContext & { cleanups: Cleanup[] } {\n const cleanups: Cleanup[] = [];\n return {\n reduced: prefersReducedMotion(),\n sensitivity: getMotionSensitivity(),\n event,\n animate: animateWithMotion,\n onCleanup: (fn) => cleanups.push(fn),\n cleanups,\n };\n}\n\n/**\n * Play a registered effect once on `el`. Resolves when it finishes (or\n * immediately for fire-and-forget effects). Unknown names reject.\n */\nexport async function playEffect(el: HTMLElement, name: string, options: Record<string, unknown> = {}, event?: Event): Promise<void> {\n const def = registry.get(name);\n if (!def) throw new Error(`[motionary] unknown effect \"${name}\" — registered: ${Array.from(registry.keys()).join(', ')}`);\n const ctx = context(event);\n if (ctx.reduced && (def.reduced ?? (SKIP_BY_DEFAULT.includes(def.kind) ? 'skip' : 'run')) === 'skip') return;\n const out = def.run(el, { ...(def.defaults || {}), ...options }, ctx);\n if (out && typeof (out as Animation).finished?.then === 'function') await (out as Animation).finished.catch(() => undefined);\n else if (out && typeof (out as Promise<unknown>).then === 'function') await out;\n}\n\n/**\n * Bind an effect to a trigger on `el`: `click`, `hover` (pointerenter / focus),\n * `enter` (scrolls into view; `once` by default), `load` (now), `loop`\n * (starts now, cleanup stops it) or `manual` (nothing). Returns an unbind.\n */\nexport function bindEffect(el: HTMLElement, name: string, options: Record<string, unknown> & { trigger?: EffectTrigger; once?: boolean } = {}): Cleanup {\n const { trigger = 'click', once, ...opts } = options;\n const def = registry.get(name);\n if (!def) throw new Error(`[motionary] unknown effect \"${name}\"`);\n const offs: Cleanup[] = [];\n let current: Cleanup | null = null;\n const fire = (e?: Event) => {\n const ctx = context(e);\n if (ctx.reduced && (def.reduced ?? (SKIP_BY_DEFAULT.includes(def.kind) ? 'skip' : 'run')) === 'skip') return;\n // A persistent effect (returns a cleanup) replaces its previous run instead of stacking.\n current?.();\n current = null;\n const out = def.run(el, { ...(def.defaults || {}), ...opts }, ctx);\n const stops = [...ctx.cleanups, ...(typeof out === 'function' ? [out as Cleanup] : [])];\n if (stops.length) current = () => stops.splice(0).forEach((f) => f());\n };\n offs.push(() => {\n current?.();\n current = null;\n });\n const on = (type: string, opt?: AddEventListenerOptions) => {\n el.addEventListener(type, fire, opt);\n offs.push(() => el.removeEventListener(type, fire, opt));\n };\n if (trigger === 'click') on('click', { once: !!once });\n else if (trigger === 'hover') (on('pointerenter'), on('focusin'));\n else if (trigger === 'load' || trigger === 'loop') fire();\n else if (trigger === 'enter' && typeof IntersectionObserver !== 'undefined') {\n const io = new IntersectionObserver((entries) => {\n for (const en of entries)\n if (en.isIntersecting) {\n fire();\n if (once !== false) io.disconnect();\n }\n }, { threshold: 0.15 });\n io.observe(el);\n offs.push(() => io.disconnect());\n }\n return () => offs.splice(0).reverse().forEach((f) => f());\n}\n"],"names":[],"mappings":";;;AAUO,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;AAGtI,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;AAiCnF;AACA;AACA,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC;AACxD,MAAM,QAAQ,IAAkC,CAAA,EAAA,GAAE,UAAkB,EAAC,OAAO,CAAA,KAAA,EAAA,CAAP,OAAO,CAAA,GAAM,IAAI,GAAG,EAA4B,EAAC;AAEtH;SACgB,cAAc,CAAoC,GAAwB,EAAE,OAA+B,EAAE,EAAA;IAC3H,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,CAAA,iCAAA,EAAoC,GAAG,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;IACzG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,CAAA,iCAAA,EAAoC,GAAG,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;AACtG,IAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,GAAG,CAAC,IAAI,CAAA,uBAAA,CAAyB,CAAC;IACvH,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAkC,CAAC;AAC1D,IAAA,OAAO,MAAK;QACV,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAM,GAAe;AAAE,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5E,IAAA,CAAC;AACH;AAEA;AACM,SAAU,eAAe,CAAC,IAA6B,EAAA;IAC3D,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,cAAc,CAAC,CAAC,CAAC;AACpE;AAEO,MAAM,SAAS,GAAG,CAAC,IAAY,KAAmC,QAAQ,CAAC,GAAG,CAAC,IAAI;AACnF,MAAM,SAAS,GAAG,CAAC,IAAY,KAAc,QAAQ,CAAC,GAAG,CAAC,IAAI;AACrE;AACM,SAAU,WAAW,CAAC,IAAiB,EAAA;IAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAChC,SAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;AACtC,SAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD;AAEA,MAAM,eAAe,GAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC;AAEtE,SAAS,OAAO,CAAC,KAAa,EAAA;IAC5B,MAAM,QAAQ,GAAc,EAAE;IAC9B,OAAO;QACL,OAAO,EAAE,oBAAoB,EAAE;QAC/B,WAAW,EAAE,oBAAoB,EAAE;QACnC,KAAK;AACL,QAAA,OAAO,EAAE,iBAAiB;QAC1B,SAAS,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,QAAQ;KACT;AACH;AAEA;;;AAGG;AACI,eAAe,UAAU,CAAC,EAAe,EAAE,IAAY,EAAE,OAAA,GAAmC,EAAE,EAAE,KAAa,EAAA;IAClH,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,IAAA,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,IAAI,CAAA,gBAAA,EAAmB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AACzH,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1B,IAAA,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,MAAM;QAAE;IACtG,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,CAAC;IACrE,IAAI,GAAG,IAAI,OAAQ,GAAiB,CAAC,QAAQ,EAAE,IAAI,KAAK,UAAU;QAAE,MAAO,GAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC;AACvH,SAAA,IAAI,GAAG,IAAI,OAAQ,GAAwB,CAAC,IAAI,KAAK,UAAU;AAAE,QAAA,MAAM,GAAG;AACjF;AAEA;;;;AAIG;AACG,SAAU,UAAU,CAAC,EAAe,EAAE,IAAY,EAAE,UAAiF,EAAE,EAAA;AAC3I,IAAA,MAAM,EAAE,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO;IACpD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAA,CAAA,CAAG,CAAC;IACjE,MAAM,IAAI,GAAc,EAAE;IAC1B,IAAI,OAAO,GAAmB,IAAI;AAClC,IAAA,MAAM,IAAI,GAAG,CAAC,CAAS,KAAI;AACzB,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;AACtB,QAAA,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,MAAM;YAAE;;QAEtG,OAAO,IAAI;QACX,OAAO,GAAG,IAAI;QACd,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC;QAClE,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,OAAO,GAAG,KAAK,UAAU,GAAG,CAAC,GAAc,CAAC,GAAG,EAAE,CAAC,CAAC;QACvF,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACvE,IAAA,CAAC;AACD,IAAA,IAAI,CAAC,IAAI,CAAC,MAAK;QACb,OAAO,IAAI;QACX,OAAO,GAAG,IAAI;AAChB,IAAA,CAAC,CAAC;AACF,IAAA,MAAM,EAAE,GAAG,CAAC,IAAY,EAAE,GAA6B,KAAI;QACzD,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAC1D,IAAA,CAAC;IACD,IAAI,OAAO,KAAK,OAAO;QAAE,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SACjD,IAAI,OAAO,KAAK,OAAO;QAAE,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC;AAC3D,SAAA,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM;AAAE,QAAA,IAAI,EAAE;SACpD,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,oBAAoB,KAAK,WAAW,EAAE;QAC3E,MAAM,EAAE,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAI;YAC9C,KAAK,MAAM,EAAE,IAAI,OAAO;AACtB,gBAAA,IAAI,EAAE,CAAC,cAAc,EAAE;AACrB,oBAAA,IAAI,EAAE;oBACN,IAAI,IAAI,KAAK,KAAK;wBAAE,EAAE,CAAC,UAAU,EAAE;gBACrC;AACJ,QAAA,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACvB,QAAA,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;IAClC;IACA,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3D;;;;"}
1
+ {"version":3,"file":"registry-CyKExAmE.js","sources":["../../src/components/fx/registry.ts"],"sourcesContent":["/**\n * 5.0 — unified plugin-style effect registration. Every effect (built-in or\n * yours) is a plain object registered once and played the same way:\n * `playEffect(el, name)`, `bindEffect(el, name, { trigger })` or\n * `<usa-fx effect=\"name\" trigger=\"click\">`. Effects get a context that\n * already applies reduced motion, motion sensitivity, intensity and the\n * animation budget.\n */\nimport { animateWithMotion, prefersReducedMotion, getMotionSensitivity, type MotionSensitivity, type Cleanup } from '../base';\n\nexport const EFFECT_KINDS = ['enter', 'exit', 'attention', 'click', 'hover', 'card', 'loop', 'page', 'background', 'text', 'cursor', 'scroll'] as const;\nexport type EffectKind = (typeof EFFECT_KINDS)[number];\n\nexport const EFFECT_TRIGGERS = ['click', 'hover', 'enter', 'load', 'loop', 'manual'] as const;\nexport type EffectTrigger = (typeof EFFECT_TRIGGERS)[number];\n\nexport interface EffectContext {\n /** Reduced motion applies (OS setting, `minimal` / `static` sensitivity). */\n readonly reduced: boolean;\n readonly sensitivity: MotionSensitivity;\n /** The triggering event (pointer position for click effects), if any. */\n readonly event?: Event;\n /** `el.animate()` with the library's motion rules (may return `null`). */\n animate(el: Element, keyframes: Keyframe[], options: KeyframeAnimationOptions): Animation | null;\n /** Register teardown for long-running effects (loops, listeners). */\n onCleanup(fn: Cleanup): void;\n}\n\nexport interface EffectDefinition<O extends Record<string, unknown> = Record<string, any>> {\n /** Unique, kebab-case. */\n name: string;\n kind: EffectKind;\n /** One line for docs and the gallery. */\n description?: string;\n /** Option defaults (merged under the caller's options). */\n defaults?: Partial<O>;\n /**\n * Under reduced motion: `'skip'` (do nothing — default for loop, background\n * and cursor effects) or `'run'` (run with `ctx.reduced === true`, the\n * effect degrades itself — default for everything else).\n */\n reduced?: 'skip' | 'run';\n /** Play the effect. Return an Animation / Promise to be awaited, or a cleanup. */\n run(el: HTMLElement, options: O, ctx: EffectContext): void | Cleanup | Animation | null | Promise<unknown>;\n}\n\n// 6.2: one table per page (Symbol.for), shared by every bundle that registers effects —\n// e.g. dist/components.umd.js and dist/widgets.umd.js on the same page.\nconst REG_KEY = Symbol.for('use-scroll-animate.effects');\nconst registry: Map<string, EffectDefinition> = ((globalThis as any)[REG_KEY] ||= new Map<string, EffectDefinition>());\n\n/** Register an effect (throws on a duplicate name unless `override`). Returns an unregister function. */\nexport function registerEffect<O extends Record<string, unknown>>(def: EffectDefinition<O>, opts: { override?: boolean } = {}): () => void {\n if (!/^[a-z][a-z0-9-]*$/.test(def.name)) throw new Error(`[motionary] invalid effect name \"${def.name}\"`);\n if (!EFFECT_KINDS.includes(def.kind)) throw new Error(`[motionary] unknown effect kind \"${def.kind}\"`);\n if (registry.has(def.name) && !opts.override) throw new Error(`[motionary] effect \"${def.name}\" is already registered`);\n registry.set(def.name, def as unknown as EffectDefinition);\n return () => {\n if (registry.get(def.name) === (def as unknown)) registry.delete(def.name);\n };\n}\n\n/** Register several effects at once (already-registered names are skipped). */\nexport function registerEffects(defs: EffectDefinition<any>[]): void {\n for (const d of defs) if (!registry.has(d.name)) registerEffect(d);\n}\n\nexport const getEffect = (name: string): EffectDefinition | undefined => registry.get(name);\nexport const hasEffect = (name: string): boolean => registry.has(name);\n/** Registered effects (optionally of one kind), sorted by name. */\nexport function listEffects(kind?: EffectKind): EffectDefinition[] {\n return Array.from(registry.values())\n .filter((d) => !kind || d.kind === kind)\n .sort((a, b) => a.name.localeCompare(b.name));\n}\n\nconst SKIP_BY_DEFAULT: EffectKind[] = ['loop', 'background', 'cursor'];\n\nfunction context(event?: Event): EffectContext & { cleanups: Cleanup[] } {\n const cleanups: Cleanup[] = [];\n return {\n reduced: prefersReducedMotion(),\n sensitivity: getMotionSensitivity(),\n event,\n animate: animateWithMotion,\n onCleanup: (fn) => cleanups.push(fn),\n cleanups,\n };\n}\n\n/**\n * Play a registered effect once on `el`. Resolves when it finishes (or\n * immediately for fire-and-forget effects). Unknown names reject.\n */\nexport async function playEffect(el: HTMLElement, name: string, options: Record<string, unknown> = {}, event?: Event): Promise<void> {\n const def = registry.get(name);\n if (!def) throw new Error(`[motionary] unknown effect \"${name}\" — registered: ${Array.from(registry.keys()).join(', ')}`);\n const ctx = context(event);\n if (ctx.reduced && (def.reduced ?? (SKIP_BY_DEFAULT.includes(def.kind) ? 'skip' : 'run')) === 'skip') return;\n const out = def.run(el, { ...(def.defaults || {}), ...options }, ctx);\n if (out && typeof (out as Animation).finished?.then === 'function') await (out as Animation).finished.catch(() => undefined);\n else if (out && typeof (out as Promise<unknown>).then === 'function') await out;\n}\n\n/**\n * Bind an effect to a trigger on `el`: `click`, `hover` (pointerenter / focus),\n * `enter` (scrolls into view; `once` by default), `load` (now), `loop`\n * (starts now, cleanup stops it) or `manual` (nothing). Returns an unbind.\n */\nexport function bindEffect(el: HTMLElement, name: string, options: Record<string, unknown> & { trigger?: EffectTrigger; once?: boolean } = {}): Cleanup {\n const { trigger = 'click', once, ...opts } = options;\n const def = registry.get(name);\n if (!def) throw new Error(`[motionary] unknown effect \"${name}\"`);\n const offs: Cleanup[] = [];\n let current: Cleanup | null = null;\n const fire = (e?: Event) => {\n const ctx = context(e);\n if (ctx.reduced && (def.reduced ?? (SKIP_BY_DEFAULT.includes(def.kind) ? 'skip' : 'run')) === 'skip') return;\n // A persistent effect (returns a cleanup) replaces its previous run instead of stacking.\n current?.();\n current = null;\n const out = def.run(el, { ...(def.defaults || {}), ...opts }, ctx);\n const stops = [...ctx.cleanups, ...(typeof out === 'function' ? [out as Cleanup] : [])];\n if (stops.length) current = () => stops.splice(0).forEach((f) => f());\n };\n offs.push(() => {\n current?.();\n current = null;\n });\n const on = (type: string, opt?: AddEventListenerOptions) => {\n el.addEventListener(type, fire, opt);\n offs.push(() => el.removeEventListener(type, fire, opt));\n };\n if (trigger === 'click') on('click', { once: !!once });\n else if (trigger === 'hover') (on('pointerenter'), on('focusin'));\n else if (trigger === 'load' || trigger === 'loop') fire();\n else if (trigger === 'enter' && typeof IntersectionObserver !== 'undefined') {\n const io = new IntersectionObserver((entries) => {\n for (const en of entries)\n if (en.isIntersecting) {\n fire();\n if (once !== false) io.disconnect();\n }\n }, { threshold: 0.15 });\n io.observe(el);\n offs.push(() => io.disconnect());\n }\n return () => offs.splice(0).reverse().forEach((f) => f());\n}\n"],"names":[],"mappings":"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"}