use-scroll-animate 10.2.0 → 10.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/AGENTS.md +4 -0
  2. package/CHANGELOG.md +35 -0
  3. package/README.md +67 -0
  4. package/bin/motionary-mcp.mjs +265 -0
  5. package/dist/chunks/anim-image-DDdb9q3X.js +166 -0
  6. package/dist/chunks/anim-image-DDdb9q3X.js.map +1 -0
  7. package/dist/chunks/anim-image-blQgPFFS.cjs +174 -0
  8. package/dist/chunks/anim-image-blQgPFFS.cjs.map +1 -0
  9. package/dist/chunks/audio-BpU-A1m1.cjs.map +1 -1
  10. package/dist/chunks/{audio-D95jwlOh.js → audio-CWt1xdZB.js} +3 -3
  11. package/dist/chunks/{audio-D95jwlOh.js.map → audio-CWt1xdZB.js.map} +1 -1
  12. package/dist/chunks/{base-BnRyfuyM.js → base-BTev8qxg.js} +2 -2
  13. package/dist/chunks/{base-BnRyfuyM.js.map → base-BTev8qxg.js.map} +1 -1
  14. package/dist/chunks/base-DBheNxJu.cjs.map +1 -1
  15. package/dist/chunks/bind-B_CTL6Qn.js.map +1 -1
  16. package/dist/chunks/bind-Ui43-n2d.cjs.map +1 -1
  17. package/dist/chunks/builtins-CKKZNR95.cjs.map +1 -1
  18. package/dist/chunks/{builtins-CqIq1zBv.js → builtins-CPmS6aDB.js} +3 -3
  19. package/dist/chunks/{builtins-CqIq1zBv.js.map → builtins-CPmS6aDB.js.map} +1 -1
  20. package/dist/chunks/core-B5T0dhFH.cjs.map +1 -1
  21. package/dist/chunks/{core-DsGoL9EY.js → core-BviA7nFa.js} +2 -2
  22. package/dist/chunks/{core-DsGoL9EY.js.map → core-BviA7nFa.js.map} +1 -1
  23. package/dist/chunks/core-D74Fz-dL.cjs.map +1 -1
  24. package/dist/chunks/core-D7cVumUu.js.map +1 -1
  25. package/dist/chunks/{core-XA2yhn1b.js → core-KiM7MXjL.js} +2 -2
  26. package/dist/chunks/{core-XA2yhn1b.js.map → core-KiM7MXjL.js.map} +1 -1
  27. package/dist/chunks/core-MQlXZKUG.cjs.map +1 -1
  28. package/dist/chunks/ease-HwYZnZat.cjs +94 -0
  29. package/dist/chunks/ease-HwYZnZat.cjs.map +1 -0
  30. package/dist/chunks/ease-XN8_0sXu.js +89 -0
  31. package/dist/chunks/ease-XN8_0sXu.js.map +1 -0
  32. package/dist/chunks/fx-B_pbhpDp.cjs.map +1 -1
  33. package/dist/chunks/{fx-CtnrFEg9.js → fx-CgWKqVsn.js} +2 -2
  34. package/dist/chunks/{fx-CtnrFEg9.js.map → fx-CgWKqVsn.js.map} +1 -1
  35. package/dist/chunks/generative-2LhxG5BJ.js.map +1 -1
  36. package/dist/chunks/generative-BHIj-NU0.cjs.map +1 -1
  37. package/dist/chunks/{gpu-CDcXiNA8.js → gpu-BWfgYWMY.js} +2 -2
  38. package/dist/chunks/{gpu-CDcXiNA8.js.map → gpu-BWfgYWMY.js.map} +1 -1
  39. package/dist/chunks/gpu-cUixt7kT.cjs.map +1 -1
  40. package/dist/chunks/index-tags-B-JBecYg.js.map +1 -1
  41. package/dist/chunks/index-tags-hLIF2Clq.cjs.map +1 -1
  42. package/dist/chunks/{keyframes-W-474DMc.js → keyframes-B5PWe5bU.js} +3 -2
  43. package/dist/chunks/keyframes-B5PWe5bU.js.map +1 -0
  44. package/dist/chunks/{keyframes-ZheOkpt0.cjs → keyframes-tC3I7anQ.cjs} +4 -3
  45. package/dist/chunks/keyframes-tC3I7anQ.cjs.map +1 -0
  46. package/dist/chunks/{manifest-D58HXVY-.js → manifest-BHx5yPN6.js} +2 -2
  47. package/dist/chunks/{manifest-D58HXVY-.js.map → manifest-BHx5yPN6.js.map} +1 -1
  48. package/dist/chunks/manifest-PaF9B8Vt.cjs.map +1 -1
  49. package/dist/chunks/{player-48Zy_NBG.js → player-BfHMNtiM.js} +4 -4
  50. package/dist/chunks/{player-48Zy_NBG.js.map → player-BfHMNtiM.js.map} +1 -1
  51. package/dist/chunks/player-C4y4jXSv.cjs.map +1 -1
  52. package/dist/chunks/presets-BYBVJVeP.js.map +1 -1
  53. package/dist/chunks/presets-CUHys3sK.cjs.map +1 -1
  54. package/dist/chunks/{registry-gFJRpPES.js → registry-BKzyg1JV.js} +2 -2
  55. package/dist/chunks/{registry-gFJRpPES.js.map → registry-BKzyg1JV.js.map} +1 -1
  56. package/dist/chunks/{registry-BIEjKngP.js → registry-CT-TT_bx.js} +3 -3
  57. package/dist/chunks/{registry-BIEjKngP.js.map → registry-CT-TT_bx.js.map} +1 -1
  58. package/dist/chunks/{registry-eJgpFAzI.cjs → registry-tzwKkldE.cjs} +2 -2
  59. package/dist/chunks/{registry-eJgpFAzI.cjs.map → registry-tzwKkldE.cjs.map} +1 -1
  60. package/dist/chunks/registry-xQZnSqqV.cjs.map +1 -1
  61. package/dist/chunks/shared-CkKHWrtJ.js.map +1 -1
  62. package/dist/chunks/shared-jkgRH-Hx.cjs.map +1 -1
  63. package/dist/chunks/{spring-CZDNyqWp.js → spring-BHuP55DR.js} +2 -2
  64. package/dist/chunks/{spring-CZDNyqWp.js.map → spring-BHuP55DR.js.map} +1 -1
  65. package/dist/chunks/spring-BlTQD2AV.cjs.map +1 -1
  66. package/dist/chunks/stagger-CCFyhzSw.cjs.map +1 -1
  67. package/dist/chunks/stagger-DtMKo2SK.js.map +1 -1
  68. package/dist/chunks/{ticker-CM_56oVy.js → ticker-C8lSGml9.js} +2 -2
  69. package/dist/chunks/{ticker-CM_56oVy.js.map → ticker-C8lSGml9.js.map} +1 -1
  70. package/dist/chunks/{ticker-D4o6enH0.cjs → ticker-Un0bvTWR.cjs} +2 -2
  71. package/dist/chunks/{ticker-D4o6enH0.cjs.map → ticker-Un0bvTWR.cjs.map} +1 -1
  72. package/dist/chunks/{tween-CqX1JBuj.js → tween-BcejKpsx.js} +15 -91
  73. package/dist/chunks/tween-BcejKpsx.js.map +1 -0
  74. package/dist/chunks/{tween-CBuWYpI-.cjs → tween-CwLLC3Ko.cjs} +15 -95
  75. package/dist/chunks/tween-CwLLC3Ko.cjs.map +1 -0
  76. package/dist/chunks/variants-CrDDJoYK.cjs.map +1 -1
  77. package/dist/chunks/{variants-GU3yIL4F.js → variants-CsRGUIyA.js} +2 -2
  78. package/dist/chunks/{variants-GU3yIL4F.js.map → variants-CsRGUIyA.js.map} +1 -1
  79. package/dist/components/a11y.cjs.map +1 -1
  80. package/dist/components/a11y.js +2 -2
  81. package/dist/components/a11y.js.map +1 -1
  82. package/dist/components/angular.cjs.map +1 -1
  83. package/dist/components/angular.js +8 -8
  84. package/dist/components/angular.js.map +1 -1
  85. package/dist/components/background.cjs.map +1 -1
  86. package/dist/components/background.js +2 -2
  87. package/dist/components/background.js.map +1 -1
  88. package/dist/components/bridge.cjs.map +1 -1
  89. package/dist/components/bridge.js +1 -1
  90. package/dist/components/bridge.js.map +1 -1
  91. package/dist/components/cards.cjs.map +1 -1
  92. package/dist/components/cards.js +2 -2
  93. package/dist/components/cards.js.map +1 -1
  94. package/dist/components/click.cjs.map +1 -1
  95. package/dist/components/click.js +3 -3
  96. package/dist/components/click.js.map +1 -1
  97. package/dist/components/core.cjs.map +1 -1
  98. package/dist/components/core.js.map +1 -1
  99. package/dist/components/depth.cjs.map +1 -1
  100. package/dist/components/depth.js +3 -3
  101. package/dist/components/depth.js.map +1 -1
  102. package/dist/components/design.cjs.map +1 -1
  103. package/dist/components/design.js +3 -3
  104. package/dist/components/design.js.map +1 -1
  105. package/dist/components/dsl.cjs.map +1 -1
  106. package/dist/components/dsl.js +2 -2
  107. package/dist/components/dsl.js.map +1 -1
  108. package/dist/components/effects.cjs.map +1 -1
  109. package/dist/components/effects.js +9 -9
  110. package/dist/components/effects.js.map +1 -1
  111. package/dist/components/engine.cjs.map +1 -1
  112. package/dist/components/engine.js +2 -2
  113. package/dist/components/engine.js.map +1 -1
  114. package/dist/components/feedback.cjs.map +1 -1
  115. package/dist/components/feedback.js +1 -1
  116. package/dist/components/feedback.js.map +1 -1
  117. package/dist/components/fx-3d.cjs.map +1 -1
  118. package/dist/components/fx-3d.js +2 -2
  119. package/dist/components/fx-3d.js.map +1 -1
  120. package/dist/components/fx-ai.cjs.map +1 -1
  121. package/dist/components/fx-ai.js +2 -2
  122. package/dist/components/fx-ai.js.map +1 -1
  123. package/dist/components/fx-chart.cjs.map +1 -1
  124. package/dist/components/fx-chart.js +2 -2
  125. package/dist/components/fx-chart.js.map +1 -1
  126. package/dist/components/fx-cinema.cjs.map +1 -1
  127. package/dist/components/fx-cinema.js +2 -2
  128. package/dist/components/fx-cinema.js.map +1 -1
  129. package/dist/components/fx-cyber.cjs.map +1 -1
  130. package/dist/components/fx-cyber.js +2 -2
  131. package/dist/components/fx-cyber.js.map +1 -1
  132. package/dist/components/fx-festival.cjs.map +1 -1
  133. package/dist/components/fx-festival.js +2 -2
  134. package/dist/components/fx-festival.js.map +1 -1
  135. package/dist/components/fx-focus.cjs.map +1 -1
  136. package/dist/components/fx-focus.js +2 -2
  137. package/dist/components/fx-focus.js.map +1 -1
  138. package/dist/components/fx-form.cjs.map +1 -1
  139. package/dist/components/fx-form.js +2 -2
  140. package/dist/components/fx-form.js.map +1 -1
  141. package/dist/components/fx-game.cjs.map +1 -1
  142. package/dist/components/fx-game.js +2 -2
  143. package/dist/components/fx-game.js.map +1 -1
  144. package/dist/components/fx-genart.cjs.map +1 -1
  145. package/dist/components/fx-genart.js +2 -2
  146. package/dist/components/fx-genart.js.map +1 -1
  147. package/dist/components/fx-geo.cjs.map +1 -1
  148. package/dist/components/fx-geo.js +2 -2
  149. package/dist/components/fx-geo.js.map +1 -1
  150. package/dist/components/fx-gesture.cjs.map +1 -1
  151. package/dist/components/fx-gesture.js +2 -2
  152. package/dist/components/fx-gesture.js.map +1 -1
  153. package/dist/components/fx-gpu.js +3 -3
  154. package/dist/components/fx-light.cjs.map +1 -1
  155. package/dist/components/fx-light.js +2 -2
  156. package/dist/components/fx-light.js.map +1 -1
  157. package/dist/components/fx-lottie.cjs.map +1 -1
  158. package/dist/components/fx-lottie.js +2 -2
  159. package/dist/components/fx-lottie.js.map +1 -1
  160. package/dist/components/fx-morph.cjs.map +1 -1
  161. package/dist/components/fx-morph.js +2 -2
  162. package/dist/components/fx-morph.js.map +1 -1
  163. package/dist/components/fx-music.cjs.map +1 -1
  164. package/dist/components/fx-music.js +3 -3
  165. package/dist/components/fx-music.js.map +1 -1
  166. package/dist/components/fx-organic.cjs.map +1 -1
  167. package/dist/components/fx-organic.js +2 -2
  168. package/dist/components/fx-organic.js.map +1 -1
  169. package/dist/components/fx-paper.cjs.map +1 -1
  170. package/dist/components/fx-paper.js +2 -2
  171. package/dist/components/fx-paper.js.map +1 -1
  172. package/dist/components/fx-perf.cjs.map +1 -1
  173. package/dist/components/fx-perf.js +2 -2
  174. package/dist/components/fx-perf.js.map +1 -1
  175. package/dist/components/fx-physics.cjs.map +1 -1
  176. package/dist/components/fx-physics.js +2 -2
  177. package/dist/components/fx-physics.js.map +1 -1
  178. package/dist/components/fx-retro.cjs.map +1 -1
  179. package/dist/components/fx-retro.js +2 -2
  180. package/dist/components/fx-retro.js.map +1 -1
  181. package/dist/components/fx-safe.cjs.map +1 -1
  182. package/dist/components/fx-safe.js +2 -2
  183. package/dist/components/fx-safe.js.map +1 -1
  184. package/dist/components/fx-shop.cjs.map +1 -1
  185. package/dist/components/fx-shop.js +2 -2
  186. package/dist/components/fx-shop.js.map +1 -1
  187. package/dist/components/fx-social.cjs.map +1 -1
  188. package/dist/components/fx-social.js +2 -2
  189. package/dist/components/fx-social.js.map +1 -1
  190. package/dist/components/fx-spatial.cjs.map +1 -1
  191. package/dist/components/fx-spatial.js +2 -2
  192. package/dist/components/fx-spatial.js.map +1 -1
  193. package/dist/components/fx-surface.cjs.map +1 -1
  194. package/dist/components/fx-surface.js +2 -2
  195. package/dist/components/fx-surface.js.map +1 -1
  196. package/dist/components/fx-text.cjs.map +1 -1
  197. package/dist/components/fx-text.js +2 -2
  198. package/dist/components/fx-text.js.map +1 -1
  199. package/dist/components/fx-transitions.cjs.map +1 -1
  200. package/dist/components/fx-transitions.js +3 -3
  201. package/dist/components/fx-transitions.js.map +1 -1
  202. package/dist/components/fx-video.cjs.map +1 -1
  203. package/dist/components/fx-video.js +2 -2
  204. package/dist/components/fx-video.js.map +1 -1
  205. package/dist/components/fx-weather.cjs.map +1 -1
  206. package/dist/components/fx-weather.js +2 -2
  207. package/dist/components/fx-weather.js.map +1 -1
  208. package/dist/components/fx.cjs.map +1 -1
  209. package/dist/components/fx.js +6 -6
  210. package/dist/components/fx.js.map +1 -1
  211. package/dist/components/fx2.cjs.map +1 -1
  212. package/dist/components/fx2.js +6 -6
  213. package/dist/components/fx2.js.map +1 -1
  214. package/dist/components/gesture.cjs.map +1 -1
  215. package/dist/components/gesture.js +4 -4
  216. package/dist/components/gesture.js.map +1 -1
  217. package/dist/components/interaction.cjs.map +1 -1
  218. package/dist/components/interaction.js +1 -1
  219. package/dist/components/interaction.js.map +1 -1
  220. package/dist/components/layout.cjs.map +1 -1
  221. package/dist/components/layout.js +1 -1
  222. package/dist/components/layout.js.map +1 -1
  223. package/dist/components/lazy.cjs.map +1 -1
  224. package/dist/components/lazy.js.map +1 -1
  225. package/dist/components/lite.cjs.map +1 -1
  226. package/dist/components/lite.js.map +1 -1
  227. package/dist/components/marketplace.cjs.map +1 -1
  228. package/dist/components/marketplace.js +4 -4
  229. package/dist/components/marketplace.js.map +1 -1
  230. package/dist/components/native.cjs.map +1 -1
  231. package/dist/components/native.js +3 -3
  232. package/dist/components/native.js.map +1 -1
  233. package/dist/components/packs.cjs.map +1 -1
  234. package/dist/components/packs.js +1 -1
  235. package/dist/components/packs.js.map +1 -1
  236. package/dist/components/page.cjs.map +1 -1
  237. package/dist/components/page.js +3 -3
  238. package/dist/components/page.js.map +1 -1
  239. package/dist/components/perf.cjs.map +1 -1
  240. package/dist/components/perf.js +2 -2
  241. package/dist/components/perf.js.map +1 -1
  242. package/dist/components/physics.cjs.map +1 -1
  243. package/dist/components/physics.js +3 -3
  244. package/dist/components/physics.js.map +1 -1
  245. package/dist/components/plugins.cjs.map +1 -1
  246. package/dist/components/plugins.js +4 -4
  247. package/dist/components/plugins.js.map +1 -1
  248. package/dist/components/react.cjs.map +1 -1
  249. package/dist/components/react.js.map +1 -1
  250. package/dist/components/reveal.cjs.map +1 -1
  251. package/dist/components/reveal.js +1 -1
  252. package/dist/components/reveal.js.map +1 -1
  253. package/dist/components/solid.cjs.map +1 -1
  254. package/dist/components/solid.js +8 -8
  255. package/dist/components/solid.js.map +1 -1
  256. package/dist/components/svelte.cjs.map +1 -1
  257. package/dist/components/svelte.js +8 -8
  258. package/dist/components/svelte.js.map +1 -1
  259. package/dist/components/svg.cjs.map +1 -1
  260. package/dist/components/svg.js +1 -1
  261. package/dist/components/svg.js.map +1 -1
  262. package/dist/components/text.cjs.map +1 -1
  263. package/dist/components/text.js +2 -2
  264. package/dist/components/text.js.map +1 -1
  265. package/dist/components/timeline.cjs.map +1 -1
  266. package/dist/components/timeline.js +3 -3
  267. package/dist/components/timeline.js.map +1 -1
  268. package/dist/components/tokens.cjs.map +1 -1
  269. package/dist/components/tokens.js.map +1 -1
  270. package/dist/components/transitions.cjs.map +1 -1
  271. package/dist/components/transitions.js +1 -1
  272. package/dist/components/transitions.js.map +1 -1
  273. package/dist/components/ui.cjs.map +1 -1
  274. package/dist/components/ui.js +4 -4
  275. package/dist/components/ui.js.map +1 -1
  276. package/dist/components/vue.cjs.map +1 -1
  277. package/dist/components/vue.js +8 -8
  278. package/dist/components/vue.js.map +1 -1
  279. package/dist/components/webgl.cjs.map +1 -1
  280. package/dist/components/webgl.js +1 -1
  281. package/dist/components/webgl.js.map +1 -1
  282. package/dist/components/widgets.cjs +766 -212
  283. package/dist/components/widgets.cjs.map +1 -1
  284. package/dist/components/widgets.d.cts +207 -2
  285. package/dist/components/widgets.d.ts +207 -2
  286. package/dist/components/widgets.js +770 -221
  287. package/dist/components/widgets.js.map +1 -1
  288. package/dist/components.cjs.map +1 -1
  289. package/dist/components.js +10 -10
  290. package/dist/components.js.map +1 -1
  291. package/dist/element.cjs.map +1 -1
  292. package/dist/element.js.map +1 -1
  293. package/dist/index.cjs.map +1 -1
  294. package/dist/index.js +2 -2
  295. package/dist/index.js.map +1 -1
  296. package/dist/llms-full.txt +250 -1
  297. package/dist/llms.txt +13 -2
  298. package/dist/manifest.json +646 -1
  299. package/dist/presets/extended.cjs.map +1 -1
  300. package/dist/presets/extended.js.map +1 -1
  301. package/dist/react.cjs.map +1 -1
  302. package/dist/react.js.map +1 -1
  303. package/dist/runtime/format-apng.cjs +131 -0
  304. package/dist/runtime/format-apng.cjs.map +1 -0
  305. package/dist/runtime/format-apng.d.cts +250 -0
  306. package/dist/runtime/format-apng.d.ts +250 -0
  307. package/dist/runtime/format-apng.iife.js +2 -0
  308. package/dist/runtime/format-apng.iife.js.map +1 -0
  309. package/dist/runtime/format-apng.js +123 -0
  310. package/dist/runtime/format-apng.js.map +1 -0
  311. package/dist/runtime/format-css.cjs +5 -4
  312. package/dist/runtime/format-css.cjs.map +1 -1
  313. package/dist/runtime/format-css.js +5 -4
  314. package/dist/runtime/format-css.js.map +1 -1
  315. package/dist/runtime/format-gif.cjs +206 -0
  316. package/dist/runtime/format-gif.cjs.map +1 -0
  317. package/dist/runtime/format-gif.d.cts +223 -0
  318. package/dist/runtime/format-gif.d.ts +223 -0
  319. package/dist/runtime/format-gif.iife.js +2 -0
  320. package/dist/runtime/format-gif.iife.js.map +1 -0
  321. package/dist/runtime/format-gif.js +199 -0
  322. package/dist/runtime/format-gif.js.map +1 -0
  323. package/dist/runtime/format-motion.cjs +9 -8
  324. package/dist/runtime/format-motion.cjs.map +1 -1
  325. package/dist/runtime/format-motion.js +5 -4
  326. package/dist/runtime/format-motion.js.map +1 -1
  327. package/dist/runtime/format-sprite.cjs +226 -0
  328. package/dist/runtime/format-sprite.cjs.map +1 -0
  329. package/dist/runtime/format-sprite.d.cts +224 -0
  330. package/dist/runtime/format-sprite.d.ts +224 -0
  331. package/dist/runtime/format-sprite.iife.js +2 -0
  332. package/dist/runtime/format-sprite.iife.js.map +1 -0
  333. package/dist/runtime/format-sprite.js +216 -0
  334. package/dist/runtime/format-sprite.js.map +1 -0
  335. package/dist/runtime/format-svg.cjs +5 -4
  336. package/dist/runtime/format-svg.cjs.map +1 -1
  337. package/dist/runtime/format-svg.iife.js.map +1 -1
  338. package/dist/runtime/format-svg.js +4 -3
  339. package/dist/runtime/format-svg.js.map +1 -1
  340. package/dist/runtime/format-webp.cjs +123 -0
  341. package/dist/runtime/format-webp.cjs.map +1 -0
  342. package/dist/runtime/format-webp.d.cts +245 -0
  343. package/dist/runtime/format-webp.d.ts +245 -0
  344. package/dist/runtime/format-webp.iife.js +2 -0
  345. package/dist/runtime/format-webp.iife.js.map +1 -0
  346. package/dist/runtime/format-webp.js +115 -0
  347. package/dist/runtime/format-webp.js.map +1 -0
  348. package/dist/runtime/scroll.cjs +2 -2
  349. package/dist/runtime/scroll.cjs.map +1 -1
  350. package/dist/runtime/scroll.js +2 -2
  351. package/dist/runtime/scroll.js.map +1 -1
  352. package/dist/runtime/smooth.cjs +284 -0
  353. package/dist/runtime/smooth.cjs.map +1 -0
  354. package/dist/runtime/smooth.d.cts +137 -0
  355. package/dist/runtime/smooth.d.ts +137 -0
  356. package/dist/runtime/smooth.iife.js +2 -0
  357. package/dist/runtime/smooth.iife.js.map +1 -0
  358. package/dist/runtime/smooth.js +279 -0
  359. package/dist/runtime/smooth.js.map +1 -0
  360. package/dist/runtime/text.cjs +147 -0
  361. package/dist/runtime/text.cjs.map +1 -0
  362. package/dist/runtime/text.d.cts +65 -0
  363. package/dist/runtime/text.d.ts +65 -0
  364. package/dist/runtime/text.iife.js +2 -0
  365. package/dist/runtime/text.iife.js.map +1 -0
  366. package/dist/runtime/text.js +143 -0
  367. package/dist/runtime/text.js.map +1 -0
  368. package/dist/runtime.cjs +9 -8
  369. package/dist/runtime.cjs.map +1 -1
  370. package/dist/runtime.d.cts +9 -2
  371. package/dist/runtime.d.ts +9 -2
  372. package/dist/runtime.iife.js +1 -1
  373. package/dist/runtime.iife.js.map +1 -1
  374. package/dist/runtime.js +6 -5
  375. package/dist/runtime.js.map +1 -1
  376. package/dist/solid.cjs.map +1 -1
  377. package/dist/solid.js.map +1 -1
  378. package/dist/svelte.cjs.map +1 -1
  379. package/dist/svelte.js.map +1 -1
  380. package/dist/vue.cjs.map +1 -1
  381. package/dist/vue.js.map +1 -1
  382. package/dist/widgets.umd.js +1 -1
  383. package/dist/widgets.umd.js.map +1 -1
  384. package/docs/ROADMAP.md +2 -2
  385. package/docs/components/README.md +12 -7
  386. package/docs/components/usa-parallax-layers.md +38 -0
  387. package/docs/components/usa-route-transition.md +38 -0
  388. package/docs/components/usa-scroll-ring.md +32 -0
  389. package/docs/components/usa-smooth-scroll.md +60 -0
  390. package/docs/components/usa-text-splitter.md +60 -0
  391. package/docs/components.md +94 -0
  392. package/docs/mcp.md +50 -0
  393. package/docs/runtime/format-apng.md +59 -0
  394. package/docs/runtime/format-gif.md +60 -0
  395. package/docs/runtime/format-sprite.md +60 -0
  396. package/docs/runtime/format-webp.md +58 -0
  397. package/docs/runtime/smooth.md +60 -0
  398. package/docs/runtime/text.md +59 -0
  399. package/package.json +64 -2
  400. package/dist/chunks/keyframes-W-474DMc.js.map +0 -1
  401. package/dist/chunks/keyframes-ZheOkpt0.cjs.map +0 -1
  402. package/dist/chunks/tween-CBuWYpI-.cjs.map +0 -1
  403. package/dist/chunks/tween-CqX1JBuj.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fx-light.js","sources":["../../src/components/fx2/light.ts"],"sourcesContent":["/**\n * 6.4 — Light & materials (`motionary/components/fx-light`), registered\n * through `registerEffect()`. Persistent effects (use `trigger=\"load\"`)\n * that return a cleanup:\n *\n * - `light-follow` (hover) — a soft point light + specular highlight that\n * follows the pointer over the surface.\n * - `refraction` (hover) — a glass lens that bends and magnifies what is\n * behind it as it follows the pointer (backdrop filter, chromatic rim).\n * - `brushed-metal` (card) — fine brushed lines with an anisotropic sheen\n * that turns with the pointer angle.\n * - `pearlescent` (card) — a nacre / holographic film whose hues shift with\n * the pointer position.\n * - `god-rays` (background) — volumetric light shafts from a source point\n * (Canvas 2D, additive).\n * - `pointer-shadow` (hover) — the pointer is the light: the element casts\n * a soft real-time shadow away from it.\n *\n * Reduced motion: surfaces stay lit from a fixed angle (no tracking),\n * `god-rays` draws one still frame.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\nimport { canvasBackground, hexRgb } from '../effects/generative';\nimport { overlay } from '../effects/shared';\n\n/** Track the pointer over `el` as 0–1 coordinates (`fn(x, y, inside)`); starts at (`x0`, `y0`). Returns a remover. */\nexport function trackPointer(el: HTMLElement, ctx: EffectContext, fn: (x: number, y: number, inside: boolean) => void, x0 = 0.3, y0 = 0.25): () => void {\n fn(x0, y0, false);\n if (ctx.reduced) return () => undefined;\n let raf = 0;\n let px = x0;\n let py = y0;\n let inside = false;\n const flush = () => {\n raf = 0;\n fn(px, py, inside);\n };\n const queue = () => {\n if (!raf) raf = typeof requestAnimationFrame === 'function' ? requestAnimationFrame(flush) : (flush(), 0);\n };\n const move = (e: PointerEvent) => {\n const r = el.getBoundingClientRect();\n px = r.width ? Math.min(1, Math.max(0, (e.clientX - r.left) / r.width)) : 0.5;\n py = r.height ? Math.min(1, Math.max(0, (e.clientY - r.top) / r.height)) : 0.5;\n inside = true;\n queue();\n };\n const leave = () => {\n inside = false;\n px = x0;\n py = y0;\n queue();\n };\n el.addEventListener('pointermove', move);\n el.addEventListener('pointerleave', leave);\n return () => {\n if (raf && typeof cancelAnimationFrame === 'function') cancelAnimationFrame(raf);\n el.removeEventListener('pointermove', move);\n el.removeEventListener('pointerleave', leave);\n };\n}\n\nconst rgba = (hex: string, a: number) => {\n const [r, g, b] = hexRgb(hex);\n return `rgba(${r},${g},${b},${a})`;\n};\n\nexport const LIGHT_FX: EffectDefinition[] = [\n {\n name: 'light-follow',\n kind: 'hover',\n reduced: 'run',\n description: 'A soft point light with a specular hot spot follows the pointer over the surface (persistent; `color`, `size` px, `intensity` 0–1).',\n defaults: { color: '#ffffff', size: 260, intensity: 0.55 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const [ov, rm] = overlay(el, 'mix-blend-mode:soft-light;transition:opacity .3s;z-index:1');\n const [spec, rm2] = overlay(el, 'mix-blend-mode:screen;z-index:1');\n const stop = trackPointer(el, ctx, (x, y, inside) => {\n const p = `${(x * 100).toFixed(1)}% ${(y * 100).toFixed(1)}%`;\n ov.style.background = `radial-gradient(${o.size}px circle at ${p}, ${rgba(o.color, o.intensity)}, transparent 70%), radial-gradient(${o.size * 2.4}px circle at ${p}, transparent 30%, rgba(0,0,0,${(o.intensity * 0.45).toFixed(2)}))`;\n spec.style.background = `radial-gradient(${Math.round(o.size / 5)}px circle at ${p}, ${rgba(o.color, inside ? o.intensity * 0.7 : o.intensity * 0.35)}, transparent 70%)`;\n el.style.setProperty('--usa-lx', x.toFixed(3));\n el.style.setProperty('--usa-ly', y.toFixed(3));\n });\n return () => {\n stop();\n rm();\n rm2();\n };\n },\n },\n {\n name: 'refraction',\n kind: 'hover',\n reduced: 'run',\n description: 'A glass lens bends and magnifies what is behind it while following the pointer (persistent; `size` px, `blur`, `rim` color). Uses backdrop-filter.',\n defaults: { size: 120, blur: 1.5, zoom: 1.12, rim: '#9be7ff' },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (getComputedStyle(el).position === 'static') el.style.position = 'relative';\n const lens = document.createElement('span');\n lens.setAttribute('aria-hidden', 'true');\n const s = Number(o.size) || 120;\n lens.style.cssText = `position:absolute;left:0;top:0;width:${s}px;height:${s}px;border-radius:50%;pointer-events:none;z-index:2;` +\n `-webkit-backdrop-filter:blur(${o.blur}px) saturate(1.6) contrast(1.08) brightness(1.08);backdrop-filter:blur(${o.blur}px) saturate(1.6) contrast(1.08) brightness(1.08);` +\n `box-shadow:inset 0 0 0 1px rgba(255,255,255,.55),inset 6px 8px 14px rgba(255,255,255,.45),inset -8px -10px 18px ${rgba(o.rim, 0.45)},0 10px 30px -8px rgba(0,0,0,.35);` +\n `background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.55),rgba(255,255,255,0) 32%),radial-gradient(circle at 70% 78%,${rgba(o.rim, 0.25)},transparent 45%);transform-origin:50% 50%;will-change:transform;transition:opacity .25s`;\n el.appendChild(lens);\n const stop = trackPointer(el, ctx, (x, y, inside) => {\n const w = el.clientWidth;\n const h = el.clientHeight;\n lens.style.transform = `translate(${(x * w - s / 2).toFixed(1)}px,${(y * h - s / 2).toFixed(1)}px) scale(${inside ? o.zoom : 1})`;\n lens.style.opacity = inside || ctx.reduced ? '1' : '.85';\n }, 0.5, 0.5);\n return () => {\n stop();\n lens.remove();\n };\n },\n },\n {\n name: 'brushed-metal',\n kind: 'card',\n reduced: 'run',\n description: 'Fine brushed-metal lines with an anisotropic sheen that turns with the pointer angle (persistent; `tint`, `lines` px).',\n defaults: { tint: '#cbd5e1', lines: 2 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const l = Math.max(1, Number(o.lines) || 2);\n const [grain, rm] = overlay(el, `z-index:0;opacity:.55;mix-blend-mode:overlay;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 1px,rgba(0,0,0,.12) 1px ${l}px,rgba(255,255,255,.06) ${l}px ${l * 2 + 1}px),linear-gradient(180deg,${rgba(o.tint, 0.9)},${rgba(o.tint, 0.55)})`);\n const [sheen, rm2] = overlay(el, 'z-index:1;mix-blend-mode:soft-light');\n const stop = trackPointer(el, ctx, (x, y) => {\n const ang = Math.atan2(y - 0.5, x - 0.5) * (180 / Math.PI) + 90;\n sheen.style.background = `conic-gradient(from ${ang.toFixed(1)}deg at ${(x * 100).toFixed(1)}% ${(y * 100).toFixed(1)}%, rgba(255,255,255,.75), rgba(0,0,0,.35) 25%, rgba(255,255,255,.6) 50%, rgba(0,0,0,.35) 75%, rgba(255,255,255,.75))`;\n });\n void grain;\n return () => {\n stop();\n rm();\n rm2();\n };\n },\n },\n {\n name: 'pearlescent',\n kind: 'card',\n reduced: 'run',\n description: 'A nacre / holographic film whose hues shift with the pointer position (persistent; `strength` 0–1).',\n defaults: { strength: 0.6 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const [film, rm] = overlay(el, `z-index:1;mix-blend-mode:color-dodge;opacity:${o.strength}`);\n const [gloss, rm2] = overlay(el, 'z-index:1;mix-blend-mode:soft-light');\n const stop = trackPointer(el, ctx, (x, y) => {\n const hue = Math.round((x * 0.7 + y * 0.3) * 360);\n film.style.background = `linear-gradient(${Math.round(115 + x * 50)}deg, hsla(${hue},90%,70%,.55), hsla(${hue + 60},90%,75%,.35) 25%, hsla(${hue + 140},85%,70%,.5) 50%, hsla(${hue + 220},90%,75%,.35) 75%, hsla(${hue + 300},90%,70%,.55))`;\n film.style.backgroundSize = '220% 220%';\n film.style.backgroundPosition = `${(x * 100).toFixed(1)}% ${(y * 100).toFixed(1)}%`;\n gloss.style.background = `radial-gradient(80% 60% at ${(x * 100).toFixed(1)}% ${(y * 100).toFixed(1)}%, rgba(255,255,255,.65), transparent 60%)`;\n });\n return () => {\n stop();\n rm();\n rm2();\n };\n },\n },\n {\n name: 'god-rays',\n kind: 'background',\n reduced: 'run',\n description: 'Volumetric light shafts fan out from a source point and slowly sweep (Canvas 2D, additive; `color`, `rays`, `x` / `y` source 0–1).',\n defaults: { color: '#ffe7a3', background: '#0b1020', rays: 14, x: 0.5, y: -0.1, speed: 1, quality: 1 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const stop = canvasBackground(el, ctx, {\n init: () => ({ seeds: Array.from({ length: Math.max(3, o.rays | 0) }, (_, i) => ({ a: (i / o.rays) * 1.6 - 0.8 + Math.random() * 0.08, w: 0.03 + Math.random() * 0.06, p: Math.random() * 6.28 })) }),\n draw: ({ ctx: g, w, h, t, state }) => {\n g.globalCompositeOperation = 'source-over';\n g.fillStyle = o.background;\n g.fillRect(0, 0, w, h);\n const sx = o.x * w;\n const sy = o.y * h;\n const len = Math.hypot(w, h) * 1.2;\n const [r, gg, b] = hexRgb(o.color);\n g.globalCompositeOperation = 'lighter';\n for (const s of state.seeds) {\n const a = Math.PI / 2 + s.a + Math.sin(t * 0.25 * o.speed + s.p) * 0.08;\n const alpha = 0.1 + 0.08 * Math.sin(t * 0.8 * o.speed + s.p * 2);\n const grad = g.createLinearGradient(sx, sy, sx + Math.cos(a) * len, sy + Math.sin(a) * len);\n grad.addColorStop(0, `rgba(${r},${gg},${b},${(alpha * 2).toFixed(3)})`);\n grad.addColorStop(1, `rgba(${r},${gg},${b},0)`);\n g.fillStyle = grad;\n g.beginPath();\n g.moveTo(sx, sy);\n g.lineTo(sx + Math.cos(a - s.w) * len, sy + Math.sin(a - s.w) * len);\n g.lineTo(sx + Math.cos(a + s.w) * len, sy + Math.sin(a + s.w) * len);\n g.closePath();\n g.fill();\n }\n const glow = g.createRadialGradient(sx, sy, 0, sx, sy, Math.max(w, h) * 0.45);\n glow.addColorStop(0, `rgba(${r},${gg},${b},.45)`);\n glow.addColorStop(1, `rgba(${r},${gg},${b},0)`);\n g.fillStyle = glow;\n g.fillRect(0, 0, w, h);\n g.globalCompositeOperation = 'source-over';\n },\n }, o);\n ctx.onCleanup(stop);\n return stop;\n },\n },\n {\n name: 'pointer-shadow',\n kind: 'hover',\n reduced: 'run',\n description: 'The pointer is the light: the element casts a soft real-time shadow away from it (persistent; `depth` px, `blur`, `color`).',\n defaults: { depth: 22, blur: 18, color: 'rgba(15,23,42,.38)' },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const prev = el.style.filter;\n const stop = trackPointer(el, ctx, (x, y, inside) => {\n const dx = (0.5 - x) * 2 * o.depth;\n const dy = (0.5 - y) * 2 * o.depth;\n const k = inside ? 1 : 0.6;\n el.style.filter = `drop-shadow(${(dx * k).toFixed(1)}px ${(dy * k + 4).toFixed(1)}px ${o.blur}px ${o.color})`;\n }, 0.35, 0.2);\n return () => {\n stop();\n el.style.filter = prev;\n };\n },\n },\n];\n\n/** Register the 6.4 light & materials pack (idempotent). */\nexport function registerLightPack(): void {\n registerEffects(LIGHT_FX);\n}\n\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fx-light.js","sources":["../../src/components/fx2/light.ts"],"sourcesContent":["/**\n * 6.4 — Light & materials (`motionary/components/fx-light`), registered\n * through `registerEffect()`. Persistent effects (use `trigger=\"load\"`)\n * that return a cleanup:\n *\n * - `light-follow` (hover) — a soft point light + specular highlight that\n * follows the pointer over the surface.\n * - `refraction` (hover) — a glass lens that bends and magnifies what is\n * behind it as it follows the pointer (backdrop filter, chromatic rim).\n * - `brushed-metal` (card) — fine brushed lines with an anisotropic sheen\n * that turns with the pointer angle.\n * - `pearlescent` (card) — a nacre / holographic film whose hues shift with\n * the pointer position.\n * - `god-rays` (background) — volumetric light shafts from a source point\n * (Canvas 2D, additive).\n * - `pointer-shadow` (hover) — the pointer is the light: the element casts\n * a soft real-time shadow away from it.\n *\n * Reduced motion: surfaces stay lit from a fixed angle (no tracking),\n * `god-rays` draws one still frame.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\nimport { canvasBackground, hexRgb } from '../effects/generative';\nimport { overlay } from '../effects/shared';\n\n/** Track the pointer over `el` as 0–1 coordinates (`fn(x, y, inside)`); starts at (`x0`, `y0`). Returns a remover. */\nexport function trackPointer(el: HTMLElement, ctx: EffectContext, fn: (x: number, y: number, inside: boolean) => void, x0 = 0.3, y0 = 0.25): () => void {\n fn(x0, y0, false);\n if (ctx.reduced) return () => undefined;\n let raf = 0;\n let px = x0;\n let py = y0;\n let inside = false;\n const flush = () => {\n raf = 0;\n fn(px, py, inside);\n };\n const queue = () => {\n if (!raf) raf = typeof requestAnimationFrame === 'function' ? requestAnimationFrame(flush) : (flush(), 0);\n };\n const move = (e: PointerEvent) => {\n const r = el.getBoundingClientRect();\n px = r.width ? Math.min(1, Math.max(0, (e.clientX - r.left) / r.width)) : 0.5;\n py = r.height ? Math.min(1, Math.max(0, (e.clientY - r.top) / r.height)) : 0.5;\n inside = true;\n queue();\n };\n const leave = () => {\n inside = false;\n px = x0;\n py = y0;\n queue();\n };\n el.addEventListener('pointermove', move);\n el.addEventListener('pointerleave', leave);\n return () => {\n if (raf && typeof cancelAnimationFrame === 'function') cancelAnimationFrame(raf);\n el.removeEventListener('pointermove', move);\n el.removeEventListener('pointerleave', leave);\n };\n}\n\nconst rgba = (hex: string, a: number) => {\n const [r, g, b] = hexRgb(hex);\n return `rgba(${r},${g},${b},${a})`;\n};\n\nexport const LIGHT_FX: EffectDefinition[] = [\n {\n name: 'light-follow',\n kind: 'hover',\n reduced: 'run',\n description: 'A soft point light with a specular hot spot follows the pointer over the surface (persistent; `color`, `size` px, `intensity` 0–1).',\n defaults: { color: '#ffffff', size: 260, intensity: 0.55 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const [ov, rm] = overlay(el, 'mix-blend-mode:soft-light;transition:opacity .3s;z-index:1');\n const [spec, rm2] = overlay(el, 'mix-blend-mode:screen;z-index:1');\n const stop = trackPointer(el, ctx, (x, y, inside) => {\n const p = `${(x * 100).toFixed(1)}% ${(y * 100).toFixed(1)}%`;\n ov.style.background = `radial-gradient(${o.size}px circle at ${p}, ${rgba(o.color, o.intensity)}, transparent 70%), radial-gradient(${o.size * 2.4}px circle at ${p}, transparent 30%, rgba(0,0,0,${(o.intensity * 0.45).toFixed(2)}))`;\n spec.style.background = `radial-gradient(${Math.round(o.size / 5)}px circle at ${p}, ${rgba(o.color, inside ? o.intensity * 0.7 : o.intensity * 0.35)}, transparent 70%)`;\n el.style.setProperty('--usa-lx', x.toFixed(3));\n el.style.setProperty('--usa-ly', y.toFixed(3));\n });\n return () => {\n stop();\n rm();\n rm2();\n };\n },\n },\n {\n name: 'refraction',\n kind: 'hover',\n reduced: 'run',\n description: 'A glass lens bends and magnifies what is behind it while following the pointer (persistent; `size` px, `blur`, `rim` color). Uses backdrop-filter.',\n defaults: { size: 120, blur: 1.5, zoom: 1.12, rim: '#9be7ff' },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (getComputedStyle(el).position === 'static') el.style.position = 'relative';\n const lens = document.createElement('span');\n lens.setAttribute('aria-hidden', 'true');\n const s = Number(o.size) || 120;\n lens.style.cssText = `position:absolute;left:0;top:0;width:${s}px;height:${s}px;border-radius:50%;pointer-events:none;z-index:2;` +\n `-webkit-backdrop-filter:blur(${o.blur}px) saturate(1.6) contrast(1.08) brightness(1.08);backdrop-filter:blur(${o.blur}px) saturate(1.6) contrast(1.08) brightness(1.08);` +\n `box-shadow:inset 0 0 0 1px rgba(255,255,255,.55),inset 6px 8px 14px rgba(255,255,255,.45),inset -8px -10px 18px ${rgba(o.rim, 0.45)},0 10px 30px -8px rgba(0,0,0,.35);` +\n `background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.55),rgba(255,255,255,0) 32%),radial-gradient(circle at 70% 78%,${rgba(o.rim, 0.25)},transparent 45%);transform-origin:50% 50%;will-change:transform;transition:opacity .25s`;\n el.appendChild(lens);\n const stop = trackPointer(el, ctx, (x, y, inside) => {\n const w = el.clientWidth;\n const h = el.clientHeight;\n lens.style.transform = `translate(${(x * w - s / 2).toFixed(1)}px,${(y * h - s / 2).toFixed(1)}px) scale(${inside ? o.zoom : 1})`;\n lens.style.opacity = inside || ctx.reduced ? '1' : '.85';\n }, 0.5, 0.5);\n return () => {\n stop();\n lens.remove();\n };\n },\n },\n {\n name: 'brushed-metal',\n kind: 'card',\n reduced: 'run',\n description: 'Fine brushed-metal lines with an anisotropic sheen that turns with the pointer angle (persistent; `tint`, `lines` px).',\n defaults: { tint: '#cbd5e1', lines: 2 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const l = Math.max(1, Number(o.lines) || 2);\n const [grain, rm] = overlay(el, `z-index:0;opacity:.55;mix-blend-mode:overlay;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 1px,rgba(0,0,0,.12) 1px ${l}px,rgba(255,255,255,.06) ${l}px ${l * 2 + 1}px),linear-gradient(180deg,${rgba(o.tint, 0.9)},${rgba(o.tint, 0.55)})`);\n const [sheen, rm2] = overlay(el, 'z-index:1;mix-blend-mode:soft-light');\n const stop = trackPointer(el, ctx, (x, y) => {\n const ang = Math.atan2(y - 0.5, x - 0.5) * (180 / Math.PI) + 90;\n sheen.style.background = `conic-gradient(from ${ang.toFixed(1)}deg at ${(x * 100).toFixed(1)}% ${(y * 100).toFixed(1)}%, rgba(255,255,255,.75), rgba(0,0,0,.35) 25%, rgba(255,255,255,.6) 50%, rgba(0,0,0,.35) 75%, rgba(255,255,255,.75))`;\n });\n void grain;\n return () => {\n stop();\n rm();\n rm2();\n };\n },\n },\n {\n name: 'pearlescent',\n kind: 'card',\n reduced: 'run',\n description: 'A nacre / holographic film whose hues shift with the pointer position (persistent; `strength` 0–1).',\n defaults: { strength: 0.6 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const [film, rm] = overlay(el, `z-index:1;mix-blend-mode:color-dodge;opacity:${o.strength}`);\n const [gloss, rm2] = overlay(el, 'z-index:1;mix-blend-mode:soft-light');\n const stop = trackPointer(el, ctx, (x, y) => {\n const hue = Math.round((x * 0.7 + y * 0.3) * 360);\n film.style.background = `linear-gradient(${Math.round(115 + x * 50)}deg, hsla(${hue},90%,70%,.55), hsla(${hue + 60},90%,75%,.35) 25%, hsla(${hue + 140},85%,70%,.5) 50%, hsla(${hue + 220},90%,75%,.35) 75%, hsla(${hue + 300},90%,70%,.55))`;\n film.style.backgroundSize = '220% 220%';\n film.style.backgroundPosition = `${(x * 100).toFixed(1)}% ${(y * 100).toFixed(1)}%`;\n gloss.style.background = `radial-gradient(80% 60% at ${(x * 100).toFixed(1)}% ${(y * 100).toFixed(1)}%, rgba(255,255,255,.65), transparent 60%)`;\n });\n return () => {\n stop();\n rm();\n rm2();\n };\n },\n },\n {\n name: 'god-rays',\n kind: 'background',\n reduced: 'run',\n description: 'Volumetric light shafts fan out from a source point and slowly sweep (Canvas 2D, additive; `color`, `rays`, `x` / `y` source 0–1).',\n defaults: { color: '#ffe7a3', background: '#0b1020', rays: 14, x: 0.5, y: -0.1, speed: 1, quality: 1 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const stop = canvasBackground(el, ctx, {\n init: () => ({ seeds: Array.from({ length: Math.max(3, o.rays | 0) }, (_, i) => ({ a: (i / o.rays) * 1.6 - 0.8 + Math.random() * 0.08, w: 0.03 + Math.random() * 0.06, p: Math.random() * 6.28 })) }),\n draw: ({ ctx: g, w, h, t, state }) => {\n g.globalCompositeOperation = 'source-over';\n g.fillStyle = o.background;\n g.fillRect(0, 0, w, h);\n const sx = o.x * w;\n const sy = o.y * h;\n const len = Math.hypot(w, h) * 1.2;\n const [r, gg, b] = hexRgb(o.color);\n g.globalCompositeOperation = 'lighter';\n for (const s of state.seeds) {\n const a = Math.PI / 2 + s.a + Math.sin(t * 0.25 * o.speed + s.p) * 0.08;\n const alpha = 0.1 + 0.08 * Math.sin(t * 0.8 * o.speed + s.p * 2);\n const grad = g.createLinearGradient(sx, sy, sx + Math.cos(a) * len, sy + Math.sin(a) * len);\n grad.addColorStop(0, `rgba(${r},${gg},${b},${(alpha * 2).toFixed(3)})`);\n grad.addColorStop(1, `rgba(${r},${gg},${b},0)`);\n g.fillStyle = grad;\n g.beginPath();\n g.moveTo(sx, sy);\n g.lineTo(sx + Math.cos(a - s.w) * len, sy + Math.sin(a - s.w) * len);\n g.lineTo(sx + Math.cos(a + s.w) * len, sy + Math.sin(a + s.w) * len);\n g.closePath();\n g.fill();\n }\n const glow = g.createRadialGradient(sx, sy, 0, sx, sy, Math.max(w, h) * 0.45);\n glow.addColorStop(0, `rgba(${r},${gg},${b},.45)`);\n glow.addColorStop(1, `rgba(${r},${gg},${b},0)`);\n g.fillStyle = glow;\n g.fillRect(0, 0, w, h);\n g.globalCompositeOperation = 'source-over';\n },\n }, o);\n ctx.onCleanup(stop);\n return stop;\n },\n },\n {\n name: 'pointer-shadow',\n kind: 'hover',\n reduced: 'run',\n description: 'The pointer is the light: the element casts a soft real-time shadow away from it (persistent; `depth` px, `blur`, `color`).',\n defaults: { depth: 22, blur: 18, color: 'rgba(15,23,42,.38)' },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const prev = el.style.filter;\n const stop = trackPointer(el, ctx, (x, y, inside) => {\n const dx = (0.5 - x) * 2 * o.depth;\n const dy = (0.5 - y) * 2 * o.depth;\n const k = inside ? 1 : 0.6;\n el.style.filter = `drop-shadow(${(dx * k).toFixed(1)}px ${(dy * k + 4).toFixed(1)}px ${o.blur}px ${o.color})`;\n }, 0.35, 0.2);\n return () => {\n stop();\n el.style.filter = prev;\n };\n },\n },\n];\n\n/** Register the 6.4 light & materials pack (idempotent). */\nexport function registerLightPack(): void {\n registerEffects(LIGHT_FX);\n}\n\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fx-lottie.cjs","sources":["../../src/components/fx2/lottie.ts"],"sourcesContent":["/**\n * 9.2 — Lottie import (`motionary/fx/lottie`, also `motionary/components/fx-lottie`).\n *\n * `lottieToKeyframes(json)` converts the layer transforms of a Lottie\n * (bodymovin) JSON — position `p`, scale `s`, rotation `r`, opacity `o`\n * (static or keyframed) — into WAAPI keyframes per layer plus the duration\n * (`op − ip` frames at `fr` fps), so a designer's After Effects motion runs\n * on Motionary's clock without lottie-web. `lottieToSvg(json)` renders the\n * simple vector shapes (ellipse `el`, rect `rc`, path `sh`, fill `fl`,\n * stroke `st`) as SVG groups, one per layer. `riveInputs(instance, el, map)`\n * wires Motionary-style triggers (hover / press / click / enter) to the\n * boolean / trigger inputs of a Rive state machine you created with the\n * Rive runtime.\n *\n * Effects: `lottie-play` (attention) plays the keyframes stored on an\n * element by `<usa-lottie>`; `icon-pop` (click) a sticker-like pop with a\n * ring burst for icons. Reduced motion: no motion.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\n\ntype Prop = { a?: number; k: any };\nexport interface LottieLayerMotion {\n name: string;\n index: number;\n keyframes: Keyframe[];\n anchor: [number, number];\n}\nexport interface LottieMotion {\n width: number;\n height: number;\n duration: number;\n layers: LottieLayerMotion[];\n}\n\nconst arr = (v: any): number[] => (Array.isArray(v) ? v.map(Number) : [Number(v)]);\n/** Frames (t) → values for one transform property (static props give one key at t = ip) (9.2). */\nfunction track(p: Prop | undefined, ip: number): { t: number; v: number[] }[] {\n if (!p) return [];\n if (!p.a || !Array.isArray(p.k) || typeof p.k[0] !== 'object') return [{ t: ip, v: arr(p.k) }];\n return (p.k as any[]).filter((k) => k && k.s != null).map((k) => ({ t: Number(k.t), v: arr(k.s) }));\n}\nconst at = (tr: { t: number; v: number[] }[], t: number): number[] | undefined => {\n if (!tr.length) return undefined;\n if (t <= tr[0].t) return tr[0].v;\n for (let i = 1; i < tr.length; i++)\n if (t <= tr[i].t) {\n const a = tr[i - 1];\n const b = tr[i];\n const u = b.t === a.t ? 1 : (t - a.t) / (b.t - a.t);\n return a.v.map((x, j) => x + ((b.v[j] ?? x) - x) * u);\n }\n return tr[tr.length - 1].v;\n};\nconst r2 = (n: number) => Math.round(n * 100) / 100;\n\n/** Lottie JSON → WAAPI keyframes per layer + duration (ms) (9.2). */\nexport function lottieToKeyframes(json: any): LottieMotion {\n const d = typeof json === 'string' ? JSON.parse(json) : json;\n const fr = Number(d?.fr) || 30;\n const ip = Number(d?.ip) || 0;\n const op = Number(d?.op) || ip + fr;\n const span = Math.max(1, op - ip);\n const layers: LottieLayerMotion[] = (Array.isArray(d?.layers) ? d.layers : []).map((L: any, index: number) => {\n const ks = L?.ks || {};\n const tracks = { p: track(ks.p, ip), s: track(ks.s, ip), r: track(ks.r, ip), o: track(ks.o, ip) };\n const anchor = (arr(ks.a?.k ?? [0, 0]).slice(0, 2) as [number, number]) || [0, 0];\n const times = Array.from(new Set([ip, op, ...Object.values(tracks).flat().map((k) => k.t)])).filter((t) => t >= ip && t <= op).sort((a, b) => a - b);\n const keyframes: Keyframe[] = times.map((t) => {\n const p = at(tracks.p, t);\n const s = at(tracks.s, t);\n const r = at(tracks.r, t);\n const o = at(tracks.o, t);\n // Lottie order: move the anchor to the position, rotate + scale around the anchor\n const pp = p || anchor;\n const tf: string[] = [`translate(${r2(pp[0])}px, ${r2(pp[1] ?? 0)}px)`];\n if (r) tf.push(`rotate(${r2(r[0])}deg)`);\n if (s) tf.push(`scale(${r2(s[0] / 100)}, ${r2((s[1] ?? s[0]) / 100)})`);\n tf.push(`translate(${r2(-anchor[0])}px, ${r2(-anchor[1])}px)`);\n const k: Keyframe = { offset: r2((t - ip) / span), transform: tf.join(' ') };\n if (o) k.opacity = r2(o[0] / 100);\n return k;\n });\n return { name: String(L?.nm ?? `layer ${index + 1}`), index, keyframes, anchor };\n });\n return { width: Number(d?.w) || 100, height: Number(d?.h) || 100, duration: Math.round((span / fr) * 1000), layers };\n}\n\nconst hex = (c: any): string => {\n const v = arr(c?.k ?? c).slice(0, 3).map((x) => Math.round(Math.min(1, Math.max(0, x)) * 255));\n return `#${v.map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n};\nfunction shapes(items: any[], fill: string, stroke: string, sw: number): string {\n let f = fill;\n let s = stroke;\n let w = sw;\n for (const it of items) {\n if (it?.ty === 'fl') f = hex(it.c);\n if (it?.ty === 'st') {\n s = hex(it.c);\n w = Number(it.w?.k) || 2;\n }\n }\n const paint = `fill=\"${f}\"${s !== 'none' ? ` stroke=\"${s}\" stroke-width=\"${w}\"` : ''}`;\n return items\n .map((it) => {\n if (it?.ty === 'gr') return `<g>${shapes(it.it || [], f, s, w)}</g>`;\n if (it?.ty === 'el') {\n const [cx, cy] = arr(it.p?.k ?? [0, 0]);\n const [sx, sy] = arr(it.s?.k ?? [10, 10]);\n return `<ellipse cx=\"${cx}\" cy=\"${cy}\" rx=\"${sx / 2}\" ry=\"${(sy ?? sx) / 2}\" ${paint}/>`;\n }\n if (it?.ty === 'rc') {\n const [cx, cy] = arr(it.p?.k ?? [0, 0]);\n const [sx, sy] = arr(it.s?.k ?? [10, 10]);\n return `<rect x=\"${cx - sx / 2}\" y=\"${cy - sy / 2}\" width=\"${sx}\" height=\"${sy}\" rx=\"${Number(it.r?.k) || 0}\" ${paint}/>`;\n }\n if (it?.ty === 'sh') {\n const k = it.ks?.k;\n const v: number[][] = k?.v || [];\n if (!v.length) return '';\n const i: number[][] = k.i || [];\n const o: number[][] = k.o || [];\n let dd = `M${v[0][0]} ${v[0][1]}`;\n for (let n = 1; n < v.length + (k.c ? 1 : 0); n++) {\n const a = v[n - 1];\n const b = v[n % v.length];\n const c1 = [a[0] + (o[n - 1]?.[0] || 0), a[1] + (o[n - 1]?.[1] || 0)];\n const c2 = [b[0] + (i[n % v.length]?.[0] || 0), b[1] + (i[n % v.length]?.[1] || 0)];\n dd += ` C${c1[0]} ${c1[1]} ${c2[0]} ${c2[1]} ${b[0]} ${b[1]}`;\n }\n return `<path d=\"${dd}${k.c ? 'Z' : ''}\" ${paint}/>`;\n }\n return '';\n })\n .join('');\n}\n\n/** Render the simple vector layers of a Lottie JSON as an SVG string (one `<g data-layer>` per layer, top layer last) (9.2). */\nexport function lottieToSvg(json: any): string {\n const d = typeof json === 'string' ? JSON.parse(json) : json;\n const w = Number(d?.w) || 100;\n const h = Number(d?.h) || 100;\n const ls: any[] = Array.isArray(d?.layers) ? d.layers : [];\n const groups = ls\n .map((L, i) => ({ L, i }))\n .reverse()\n .map(({ L, i }) => `<g data-layer=\"${i}\"><g class=\"usa-lt-inner\">${shapes(L?.shapes || [], '#000', 'none', 0)}</g></g>`)\n .join('');\n return `<svg viewBox=\"0 0 ${w} ${h}\" width=\"${w}\" height=\"${h}\" aria-hidden=\"true\">${groups}</svg>`;\n}\n\n/** Wire hover / press / click / enter on `el` to a Rive state machine's inputs: map { hover: 'isHover', click: 'fire' } (9.2). */\nexport function riveInputs(instance: { stateMachineInputs(sm: string): any[] }, stateMachine: string, el: HTMLElement, map: Partial<Record<'hover' | 'press' | 'click' | 'enter', string>>): () => void {\n const inputs = (instance.stateMachineInputs(stateMachine) || []) as { name: string; type?: number; value?: boolean; fire?: () => void }[];\n const get = (n?: string) => inputs.find((i) => i.name === n);\n const set = (n: string | undefined, v: boolean) => {\n const i = get(n);\n if (!i) return;\n // Rive StateMachineInputType: 58 = trigger (fire on true), 59 = boolean\n if (i.type === 58 && typeof i.fire === 'function') {\n if (v) i.fire();\n } else i.value = v;\n };\n const offs: (() => void)[] = [];\n const on = (t: string, fn: (e: Event) => void) => {\n el.addEventListener(t, fn);\n offs.push(() => el.removeEventListener(t, fn));\n };\n if (map.hover) (on('pointerenter', () => set(map.hover, true)), on('pointerleave', () => set(map.hover, false)));\n if (map.press) (on('pointerdown', () => set(map.press, true)), on('pointerup', () => set(map.press, false)));\n if (map.click) on('click', () => set(map.click, true));\n if (map.enter && typeof IntersectionObserver !== 'undefined') {\n const io = new IntersectionObserver((es) => es.forEach((e) => set(map.enter, e.isIntersecting)));\n io.observe(el);\n offs.push(() => io.disconnect());\n }\n return () => offs.splice(0).forEach((f) => f());\n}\n\nexport const LOTTIE_FX: EffectDefinition[] = [\n {\n name: 'lottie-play',\n kind: 'attention',\n description: 'Replays the Lottie keyframes stored on an element by <usa-lottie> (or a `json` option) once.',\n defaults: {},\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (ctx.reduced) return;\n const host = el.closest('usa-lottie') as (HTMLElement & { play?: () => void }) | null;\n if (host?.play) return void host.play();\n if (!o.json) return;\n const m = lottieToKeyframes(o.json);\n return Promise.all(m.layers.map((l) => ctx.animate(el, l.keyframes, { duration: m.duration })?.finished.catch(() => undefined))).then(() => undefined);\n },\n },\n {\n name: 'icon-pop',\n kind: 'click',\n description: 'A sticker-like pop with a ring burst, for icons (`color`).',\n defaults: { color: '#f43f5e', duration: 500 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (ctx.reduced) return;\n if (getComputedStyle(el).position === 'static') {\n const prev = el.style.position;\n el.style.position = 'relative';\n ctx.onCleanup(() => (el.style.position = prev));\n }\n const ring = document.createElement('span');\n ring.setAttribute('aria-hidden', 'true');\n Object.assign(ring.style, { position: 'absolute', inset: '0', borderRadius: '50%', border: `2px solid ${o.color}`, pointerEvents: 'none' });\n el.appendChild(ring);\n ctx.onCleanup(() => ring.remove());\n const a = ctx.animate(el, [{ transform: 'scale(1)' }, { transform: 'scale(.8)', offset: 0.2 }, { transform: 'scale(1.2)', offset: 0.55 }, { transform: 'scale(1)' }], { duration: o.duration, easing: 'cubic-bezier(.3,1.5,.5,1)' });\n const b = ctx.animate(ring, [{ transform: 'scale(.6)', opacity: 1 }, { transform: 'scale(1.8)', opacity: 0 }], { duration: o.duration, easing: 'ease-out' });\n const end = () => ring.remove();\n return Promise.all([a?.finished.catch(() => undefined), b?.finished.catch(() => undefined)]).then(end, end);\n },\n },\n];\n\n/** Register lottie-play and icon-pop (9.2). */\nexport function registerLottiePack(): void {\n registerEffects(LOTTIE_FX);\n}\n"],"names":["registerEffects"],"mappings":"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"}
1
+ {"version":3,"file":"fx-lottie.cjs","sources":["../../src/components/fx2/lottie.ts"],"sourcesContent":["/**\n * 9.2 — Lottie import (`motionary/fx/lottie`, also `motionary/components/fx-lottie`).\n *\n * `lottieToKeyframes(json)` converts the layer transforms of a Lottie\n * (bodymovin) JSON — position `p`, scale `s`, rotation `r`, opacity `o`\n * (static or keyframed) — into WAAPI keyframes per layer plus the duration\n * (`op − ip` frames at `fr` fps), so a designer's After Effects motion runs\n * on Motionary's clock without lottie-web. `lottieToSvg(json)` renders the\n * simple vector shapes (ellipse `el`, rect `rc`, path `sh`, fill `fl`,\n * stroke `st`) as SVG groups, one per layer. `riveInputs(instance, el, map)`\n * wires Motionary-style triggers (hover / press / click / enter) to the\n * boolean / trigger inputs of a Rive state machine you created with the\n * Rive runtime.\n *\n * Effects: `lottie-play` (attention) plays the keyframes stored on an\n * element by `<usa-lottie>`; `icon-pop` (click) a sticker-like pop with a\n * ring burst for icons. Reduced motion: no motion.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\n\ntype Prop = { a?: number; k: any };\nexport interface LottieLayerMotion {\n name: string;\n index: number;\n keyframes: Keyframe[];\n anchor: [number, number];\n}\nexport interface LottieMotion {\n width: number;\n height: number;\n duration: number;\n layers: LottieLayerMotion[];\n}\n\nconst arr = (v: any): number[] => (Array.isArray(v) ? v.map(Number) : [Number(v)]);\n/** Frames (t) → values for one transform property (static props give one key at t = ip) (9.2). */\nfunction track(p: Prop | undefined, ip: number): { t: number; v: number[] }[] {\n if (!p) return [];\n if (!p.a || !Array.isArray(p.k) || typeof p.k[0] !== 'object') return [{ t: ip, v: arr(p.k) }];\n return (p.k as any[]).filter((k) => k && k.s != null).map((k) => ({ t: Number(k.t), v: arr(k.s) }));\n}\nconst at = (tr: { t: number; v: number[] }[], t: number): number[] | undefined => {\n if (!tr.length) return undefined;\n if (t <= tr[0].t) return tr[0].v;\n for (let i = 1; i < tr.length; i++)\n if (t <= tr[i].t) {\n const a = tr[i - 1];\n const b = tr[i];\n const u = b.t === a.t ? 1 : (t - a.t) / (b.t - a.t);\n return a.v.map((x, j) => x + ((b.v[j] ?? x) - x) * u);\n }\n return tr[tr.length - 1].v;\n};\nconst r2 = (n: number) => Math.round(n * 100) / 100;\n\n/** Lottie JSON → WAAPI keyframes per layer + duration (ms) (9.2). */\nexport function lottieToKeyframes(json: any): LottieMotion {\n const d = typeof json === 'string' ? JSON.parse(json) : json;\n const fr = Number(d?.fr) || 30;\n const ip = Number(d?.ip) || 0;\n const op = Number(d?.op) || ip + fr;\n const span = Math.max(1, op - ip);\n const layers: LottieLayerMotion[] = (Array.isArray(d?.layers) ? d.layers : []).map((L: any, index: number) => {\n const ks = L?.ks || {};\n const tracks = { p: track(ks.p, ip), s: track(ks.s, ip), r: track(ks.r, ip), o: track(ks.o, ip) };\n const anchor = (arr(ks.a?.k ?? [0, 0]).slice(0, 2) as [number, number]) || [0, 0];\n const times = Array.from(new Set([ip, op, ...Object.values(tracks).flat().map((k) => k.t)])).filter((t) => t >= ip && t <= op).sort((a, b) => a - b);\n const keyframes: Keyframe[] = times.map((t) => {\n const p = at(tracks.p, t);\n const s = at(tracks.s, t);\n const r = at(tracks.r, t);\n const o = at(tracks.o, t);\n // Lottie order: move the anchor to the position, rotate + scale around the anchor\n const pp = p || anchor;\n const tf: string[] = [`translate(${r2(pp[0])}px, ${r2(pp[1] ?? 0)}px)`];\n if (r) tf.push(`rotate(${r2(r[0])}deg)`);\n if (s) tf.push(`scale(${r2(s[0] / 100)}, ${r2((s[1] ?? s[0]) / 100)})`);\n tf.push(`translate(${r2(-anchor[0])}px, ${r2(-anchor[1])}px)`);\n const k: Keyframe = { offset: r2((t - ip) / span), transform: tf.join(' ') };\n if (o) k.opacity = r2(o[0] / 100);\n return k;\n });\n return { name: String(L?.nm ?? `layer ${index + 1}`), index, keyframes, anchor };\n });\n return { width: Number(d?.w) || 100, height: Number(d?.h) || 100, duration: Math.round((span / fr) * 1000), layers };\n}\n\nconst hex = (c: any): string => {\n const v = arr(c?.k ?? c).slice(0, 3).map((x) => Math.round(Math.min(1, Math.max(0, x)) * 255));\n return `#${v.map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n};\nfunction shapes(items: any[], fill: string, stroke: string, sw: number): string {\n let f = fill;\n let s = stroke;\n let w = sw;\n for (const it of items) {\n if (it?.ty === 'fl') f = hex(it.c);\n if (it?.ty === 'st') {\n s = hex(it.c);\n w = Number(it.w?.k) || 2;\n }\n }\n const paint = `fill=\"${f}\"${s !== 'none' ? ` stroke=\"${s}\" stroke-width=\"${w}\"` : ''}`;\n return items\n .map((it) => {\n if (it?.ty === 'gr') return `<g>${shapes(it.it || [], f, s, w)}</g>`;\n if (it?.ty === 'el') {\n const [cx, cy] = arr(it.p?.k ?? [0, 0]);\n const [sx, sy] = arr(it.s?.k ?? [10, 10]);\n return `<ellipse cx=\"${cx}\" cy=\"${cy}\" rx=\"${sx / 2}\" ry=\"${(sy ?? sx) / 2}\" ${paint}/>`;\n }\n if (it?.ty === 'rc') {\n const [cx, cy] = arr(it.p?.k ?? [0, 0]);\n const [sx, sy] = arr(it.s?.k ?? [10, 10]);\n return `<rect x=\"${cx - sx / 2}\" y=\"${cy - sy / 2}\" width=\"${sx}\" height=\"${sy}\" rx=\"${Number(it.r?.k) || 0}\" ${paint}/>`;\n }\n if (it?.ty === 'sh') {\n const k = it.ks?.k;\n const v: number[][] = k?.v || [];\n if (!v.length) return '';\n const i: number[][] = k.i || [];\n const o: number[][] = k.o || [];\n let dd = `M${v[0][0]} ${v[0][1]}`;\n for (let n = 1; n < v.length + (k.c ? 1 : 0); n++) {\n const a = v[n - 1];\n const b = v[n % v.length];\n const c1 = [a[0] + (o[n - 1]?.[0] || 0), a[1] + (o[n - 1]?.[1] || 0)];\n const c2 = [b[0] + (i[n % v.length]?.[0] || 0), b[1] + (i[n % v.length]?.[1] || 0)];\n dd += ` C${c1[0]} ${c1[1]} ${c2[0]} ${c2[1]} ${b[0]} ${b[1]}`;\n }\n return `<path d=\"${dd}${k.c ? 'Z' : ''}\" ${paint}/>`;\n }\n return '';\n })\n .join('');\n}\n\n/** Render the simple vector layers of a Lottie JSON as an SVG string (one `<g data-layer>` per layer, top layer last) (9.2). */\nexport function lottieToSvg(json: any): string {\n const d = typeof json === 'string' ? JSON.parse(json) : json;\n const w = Number(d?.w) || 100;\n const h = Number(d?.h) || 100;\n const ls: any[] = Array.isArray(d?.layers) ? d.layers : [];\n const groups = ls\n .map((L, i) => ({ L, i }))\n .reverse()\n .map(({ L, i }) => `<g data-layer=\"${i}\"><g class=\"usa-lt-inner\">${shapes(L?.shapes || [], '#000', 'none', 0)}</g></g>`)\n .join('');\n return `<svg viewBox=\"0 0 ${w} ${h}\" width=\"${w}\" height=\"${h}\" aria-hidden=\"true\">${groups}</svg>`;\n}\n\n/** Wire hover / press / click / enter on `el` to a Rive state machine's inputs: map { hover: 'isHover', click: 'fire' } (9.2). */\nexport function riveInputs(instance: { stateMachineInputs(sm: string): any[] }, stateMachine: string, el: HTMLElement, map: Partial<Record<'hover' | 'press' | 'click' | 'enter', string>>): () => void {\n const inputs = (instance.stateMachineInputs(stateMachine) || []) as { name: string; type?: number; value?: boolean; fire?: () => void }[];\n const get = (n?: string) => inputs.find((i) => i.name === n);\n const set = (n: string | undefined, v: boolean) => {\n const i = get(n);\n if (!i) return;\n // Rive StateMachineInputType: 58 = trigger (fire on true), 59 = boolean\n if (i.type === 58 && typeof i.fire === 'function') {\n if (v) i.fire();\n } else i.value = v;\n };\n const offs: (() => void)[] = [];\n const on = (t: string, fn: (e: Event) => void) => {\n el.addEventListener(t, fn);\n offs.push(() => el.removeEventListener(t, fn));\n };\n if (map.hover) (on('pointerenter', () => set(map.hover, true)), on('pointerleave', () => set(map.hover, false)));\n if (map.press) (on('pointerdown', () => set(map.press, true)), on('pointerup', () => set(map.press, false)));\n if (map.click) on('click', () => set(map.click, true));\n if (map.enter && typeof IntersectionObserver !== 'undefined') {\n const io = new IntersectionObserver((es) => es.forEach((e) => set(map.enter, e.isIntersecting)));\n io.observe(el);\n offs.push(() => io.disconnect());\n }\n return () => offs.splice(0).forEach((f) => f());\n}\n\nexport const LOTTIE_FX: EffectDefinition[] = [\n {\n name: 'lottie-play',\n kind: 'attention',\n description: 'Replays the Lottie keyframes stored on an element by <usa-lottie> (or a `json` option) once.',\n defaults: {},\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (ctx.reduced) return;\n const host = el.closest('usa-lottie') as (HTMLElement & { play?: () => void }) | null;\n if (host?.play) return void host.play();\n if (!o.json) return;\n const m = lottieToKeyframes(o.json);\n return Promise.all(m.layers.map((l) => ctx.animate(el, l.keyframes, { duration: m.duration })?.finished.catch(() => undefined))).then(() => undefined);\n },\n },\n {\n name: 'icon-pop',\n kind: 'click',\n description: 'A sticker-like pop with a ring burst, for icons (`color`).',\n defaults: { color: '#f43f5e', duration: 500 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (ctx.reduced) return;\n if (getComputedStyle(el).position === 'static') {\n const prev = el.style.position;\n el.style.position = 'relative';\n ctx.onCleanup(() => (el.style.position = prev));\n }\n const ring = document.createElement('span');\n ring.setAttribute('aria-hidden', 'true');\n Object.assign(ring.style, { position: 'absolute', inset: '0', borderRadius: '50%', border: `2px solid ${o.color}`, pointerEvents: 'none' });\n el.appendChild(ring);\n ctx.onCleanup(() => ring.remove());\n const a = ctx.animate(el, [{ transform: 'scale(1)' }, { transform: 'scale(.8)', offset: 0.2 }, { transform: 'scale(1.2)', offset: 0.55 }, { transform: 'scale(1)' }], { duration: o.duration, easing: 'cubic-bezier(.3,1.5,.5,1)' });\n const b = ctx.animate(ring, [{ transform: 'scale(.6)', opacity: 1 }, { transform: 'scale(1.8)', opacity: 0 }], { duration: o.duration, easing: 'ease-out' });\n const end = () => ring.remove();\n return Promise.all([a?.finished.catch(() => undefined), b?.finished.catch(() => undefined)]).then(end, end);\n },\n },\n];\n\n/** Register lottie-play and icon-pop (9.2). */\nexport function registerLottiePack(): void {\n registerEffects(LOTTIE_FX);\n}\n"],"names":["registerEffects"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { registerEffects } from '../chunks/registry-gFJRpPES.js';
2
- import '../chunks/base-BnRyfuyM.js';
1
+ import { registerEffects } from '../chunks/registry-BKzyg1JV.js';
2
+ import '../chunks/base-BTev8qxg.js';
3
3
 
4
4
  const arr = (v) => (Array.isArray(v) ? v.map(Number) : [Number(v)]);
5
5
  /** Frames (t) → values for one transform property (static props give one key at t = ip) (9.2). */
@@ -1 +1 @@
1
- {"version":3,"file":"fx-lottie.js","sources":["../../src/components/fx2/lottie.ts"],"sourcesContent":["/**\n * 9.2 — Lottie import (`motionary/fx/lottie`, also `motionary/components/fx-lottie`).\n *\n * `lottieToKeyframes(json)` converts the layer transforms of a Lottie\n * (bodymovin) JSON — position `p`, scale `s`, rotation `r`, opacity `o`\n * (static or keyframed) — into WAAPI keyframes per layer plus the duration\n * (`op − ip` frames at `fr` fps), so a designer's After Effects motion runs\n * on Motionary's clock without lottie-web. `lottieToSvg(json)` renders the\n * simple vector shapes (ellipse `el`, rect `rc`, path `sh`, fill `fl`,\n * stroke `st`) as SVG groups, one per layer. `riveInputs(instance, el, map)`\n * wires Motionary-style triggers (hover / press / click / enter) to the\n * boolean / trigger inputs of a Rive state machine you created with the\n * Rive runtime.\n *\n * Effects: `lottie-play` (attention) plays the keyframes stored on an\n * element by `<usa-lottie>`; `icon-pop` (click) a sticker-like pop with a\n * ring burst for icons. Reduced motion: no motion.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\n\ntype Prop = { a?: number; k: any };\nexport interface LottieLayerMotion {\n name: string;\n index: number;\n keyframes: Keyframe[];\n anchor: [number, number];\n}\nexport interface LottieMotion {\n width: number;\n height: number;\n duration: number;\n layers: LottieLayerMotion[];\n}\n\nconst arr = (v: any): number[] => (Array.isArray(v) ? v.map(Number) : [Number(v)]);\n/** Frames (t) → values for one transform property (static props give one key at t = ip) (9.2). */\nfunction track(p: Prop | undefined, ip: number): { t: number; v: number[] }[] {\n if (!p) return [];\n if (!p.a || !Array.isArray(p.k) || typeof p.k[0] !== 'object') return [{ t: ip, v: arr(p.k) }];\n return (p.k as any[]).filter((k) => k && k.s != null).map((k) => ({ t: Number(k.t), v: arr(k.s) }));\n}\nconst at = (tr: { t: number; v: number[] }[], t: number): number[] | undefined => {\n if (!tr.length) return undefined;\n if (t <= tr[0].t) return tr[0].v;\n for (let i = 1; i < tr.length; i++)\n if (t <= tr[i].t) {\n const a = tr[i - 1];\n const b = tr[i];\n const u = b.t === a.t ? 1 : (t - a.t) / (b.t - a.t);\n return a.v.map((x, j) => x + ((b.v[j] ?? x) - x) * u);\n }\n return tr[tr.length - 1].v;\n};\nconst r2 = (n: number) => Math.round(n * 100) / 100;\n\n/** Lottie JSON → WAAPI keyframes per layer + duration (ms) (9.2). */\nexport function lottieToKeyframes(json: any): LottieMotion {\n const d = typeof json === 'string' ? JSON.parse(json) : json;\n const fr = Number(d?.fr) || 30;\n const ip = Number(d?.ip) || 0;\n const op = Number(d?.op) || ip + fr;\n const span = Math.max(1, op - ip);\n const layers: LottieLayerMotion[] = (Array.isArray(d?.layers) ? d.layers : []).map((L: any, index: number) => {\n const ks = L?.ks || {};\n const tracks = { p: track(ks.p, ip), s: track(ks.s, ip), r: track(ks.r, ip), o: track(ks.o, ip) };\n const anchor = (arr(ks.a?.k ?? [0, 0]).slice(0, 2) as [number, number]) || [0, 0];\n const times = Array.from(new Set([ip, op, ...Object.values(tracks).flat().map((k) => k.t)])).filter((t) => t >= ip && t <= op).sort((a, b) => a - b);\n const keyframes: Keyframe[] = times.map((t) => {\n const p = at(tracks.p, t);\n const s = at(tracks.s, t);\n const r = at(tracks.r, t);\n const o = at(tracks.o, t);\n // Lottie order: move the anchor to the position, rotate + scale around the anchor\n const pp = p || anchor;\n const tf: string[] = [`translate(${r2(pp[0])}px, ${r2(pp[1] ?? 0)}px)`];\n if (r) tf.push(`rotate(${r2(r[0])}deg)`);\n if (s) tf.push(`scale(${r2(s[0] / 100)}, ${r2((s[1] ?? s[0]) / 100)})`);\n tf.push(`translate(${r2(-anchor[0])}px, ${r2(-anchor[1])}px)`);\n const k: Keyframe = { offset: r2((t - ip) / span), transform: tf.join(' ') };\n if (o) k.opacity = r2(o[0] / 100);\n return k;\n });\n return { name: String(L?.nm ?? `layer ${index + 1}`), index, keyframes, anchor };\n });\n return { width: Number(d?.w) || 100, height: Number(d?.h) || 100, duration: Math.round((span / fr) * 1000), layers };\n}\n\nconst hex = (c: any): string => {\n const v = arr(c?.k ?? c).slice(0, 3).map((x) => Math.round(Math.min(1, Math.max(0, x)) * 255));\n return `#${v.map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n};\nfunction shapes(items: any[], fill: string, stroke: string, sw: number): string {\n let f = fill;\n let s = stroke;\n let w = sw;\n for (const it of items) {\n if (it?.ty === 'fl') f = hex(it.c);\n if (it?.ty === 'st') {\n s = hex(it.c);\n w = Number(it.w?.k) || 2;\n }\n }\n const paint = `fill=\"${f}\"${s !== 'none' ? ` stroke=\"${s}\" stroke-width=\"${w}\"` : ''}`;\n return items\n .map((it) => {\n if (it?.ty === 'gr') return `<g>${shapes(it.it || [], f, s, w)}</g>`;\n if (it?.ty === 'el') {\n const [cx, cy] = arr(it.p?.k ?? [0, 0]);\n const [sx, sy] = arr(it.s?.k ?? [10, 10]);\n return `<ellipse cx=\"${cx}\" cy=\"${cy}\" rx=\"${sx / 2}\" ry=\"${(sy ?? sx) / 2}\" ${paint}/>`;\n }\n if (it?.ty === 'rc') {\n const [cx, cy] = arr(it.p?.k ?? [0, 0]);\n const [sx, sy] = arr(it.s?.k ?? [10, 10]);\n return `<rect x=\"${cx - sx / 2}\" y=\"${cy - sy / 2}\" width=\"${sx}\" height=\"${sy}\" rx=\"${Number(it.r?.k) || 0}\" ${paint}/>`;\n }\n if (it?.ty === 'sh') {\n const k = it.ks?.k;\n const v: number[][] = k?.v || [];\n if (!v.length) return '';\n const i: number[][] = k.i || [];\n const o: number[][] = k.o || [];\n let dd = `M${v[0][0]} ${v[0][1]}`;\n for (let n = 1; n < v.length + (k.c ? 1 : 0); n++) {\n const a = v[n - 1];\n const b = v[n % v.length];\n const c1 = [a[0] + (o[n - 1]?.[0] || 0), a[1] + (o[n - 1]?.[1] || 0)];\n const c2 = [b[0] + (i[n % v.length]?.[0] || 0), b[1] + (i[n % v.length]?.[1] || 0)];\n dd += ` C${c1[0]} ${c1[1]} ${c2[0]} ${c2[1]} ${b[0]} ${b[1]}`;\n }\n return `<path d=\"${dd}${k.c ? 'Z' : ''}\" ${paint}/>`;\n }\n return '';\n })\n .join('');\n}\n\n/** Render the simple vector layers of a Lottie JSON as an SVG string (one `<g data-layer>` per layer, top layer last) (9.2). */\nexport function lottieToSvg(json: any): string {\n const d = typeof json === 'string' ? JSON.parse(json) : json;\n const w = Number(d?.w) || 100;\n const h = Number(d?.h) || 100;\n const ls: any[] = Array.isArray(d?.layers) ? d.layers : [];\n const groups = ls\n .map((L, i) => ({ L, i }))\n .reverse()\n .map(({ L, i }) => `<g data-layer=\"${i}\"><g class=\"usa-lt-inner\">${shapes(L?.shapes || [], '#000', 'none', 0)}</g></g>`)\n .join('');\n return `<svg viewBox=\"0 0 ${w} ${h}\" width=\"${w}\" height=\"${h}\" aria-hidden=\"true\">${groups}</svg>`;\n}\n\n/** Wire hover / press / click / enter on `el` to a Rive state machine's inputs: map { hover: 'isHover', click: 'fire' } (9.2). */\nexport function riveInputs(instance: { stateMachineInputs(sm: string): any[] }, stateMachine: string, el: HTMLElement, map: Partial<Record<'hover' | 'press' | 'click' | 'enter', string>>): () => void {\n const inputs = (instance.stateMachineInputs(stateMachine) || []) as { name: string; type?: number; value?: boolean; fire?: () => void }[];\n const get = (n?: string) => inputs.find((i) => i.name === n);\n const set = (n: string | undefined, v: boolean) => {\n const i = get(n);\n if (!i) return;\n // Rive StateMachineInputType: 58 = trigger (fire on true), 59 = boolean\n if (i.type === 58 && typeof i.fire === 'function') {\n if (v) i.fire();\n } else i.value = v;\n };\n const offs: (() => void)[] = [];\n const on = (t: string, fn: (e: Event) => void) => {\n el.addEventListener(t, fn);\n offs.push(() => el.removeEventListener(t, fn));\n };\n if (map.hover) (on('pointerenter', () => set(map.hover, true)), on('pointerleave', () => set(map.hover, false)));\n if (map.press) (on('pointerdown', () => set(map.press, true)), on('pointerup', () => set(map.press, false)));\n if (map.click) on('click', () => set(map.click, true));\n if (map.enter && typeof IntersectionObserver !== 'undefined') {\n const io = new IntersectionObserver((es) => es.forEach((e) => set(map.enter, e.isIntersecting)));\n io.observe(el);\n offs.push(() => io.disconnect());\n }\n return () => offs.splice(0).forEach((f) => f());\n}\n\nexport const LOTTIE_FX: EffectDefinition[] = [\n {\n name: 'lottie-play',\n kind: 'attention',\n description: 'Replays the Lottie keyframes stored on an element by <usa-lottie> (or a `json` option) once.',\n defaults: {},\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (ctx.reduced) return;\n const host = el.closest('usa-lottie') as (HTMLElement & { play?: () => void }) | null;\n if (host?.play) return void host.play();\n if (!o.json) return;\n const m = lottieToKeyframes(o.json);\n return Promise.all(m.layers.map((l) => ctx.animate(el, l.keyframes, { duration: m.duration })?.finished.catch(() => undefined))).then(() => undefined);\n },\n },\n {\n name: 'icon-pop',\n kind: 'click',\n description: 'A sticker-like pop with a ring burst, for icons (`color`).',\n defaults: { color: '#f43f5e', duration: 500 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (ctx.reduced) return;\n if (getComputedStyle(el).position === 'static') {\n const prev = el.style.position;\n el.style.position = 'relative';\n ctx.onCleanup(() => (el.style.position = prev));\n }\n const ring = document.createElement('span');\n ring.setAttribute('aria-hidden', 'true');\n Object.assign(ring.style, { position: 'absolute', inset: '0', borderRadius: '50%', border: `2px solid ${o.color}`, pointerEvents: 'none' });\n el.appendChild(ring);\n ctx.onCleanup(() => ring.remove());\n const a = ctx.animate(el, [{ transform: 'scale(1)' }, { transform: 'scale(.8)', offset: 0.2 }, { transform: 'scale(1.2)', offset: 0.55 }, { transform: 'scale(1)' }], { duration: o.duration, easing: 'cubic-bezier(.3,1.5,.5,1)' });\n const b = ctx.animate(ring, [{ transform: 'scale(.6)', opacity: 1 }, { transform: 'scale(1.8)', opacity: 0 }], { duration: o.duration, easing: 'ease-out' });\n const end = () => ring.remove();\n return Promise.all([a?.finished.catch(() => undefined), b?.finished.catch(() => undefined)]).then(end, end);\n },\n },\n];\n\n/** Register lottie-play and icon-pop (9.2). */\nexport function registerLottiePack(): void {\n registerEffects(LOTTIE_FX);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fx-lottie.js","sources":["../../src/components/fx2/lottie.ts"],"sourcesContent":["/**\n * 9.2 — Lottie import (`motionary/fx/lottie`, also `motionary/components/fx-lottie`).\n *\n * `lottieToKeyframes(json)` converts the layer transforms of a Lottie\n * (bodymovin) JSON — position `p`, scale `s`, rotation `r`, opacity `o`\n * (static or keyframed) — into WAAPI keyframes per layer plus the duration\n * (`op − ip` frames at `fr` fps), so a designer's After Effects motion runs\n * on Motionary's clock without lottie-web. `lottieToSvg(json)` renders the\n * simple vector shapes (ellipse `el`, rect `rc`, path `sh`, fill `fl`,\n * stroke `st`) as SVG groups, one per layer. `riveInputs(instance, el, map)`\n * wires Motionary-style triggers (hover / press / click / enter) to the\n * boolean / trigger inputs of a Rive state machine you created with the\n * Rive runtime.\n *\n * Effects: `lottie-play` (attention) plays the keyframes stored on an\n * element by `<usa-lottie>`; `icon-pop` (click) a sticker-like pop with a\n * ring burst for icons. Reduced motion: no motion.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\n\ntype Prop = { a?: number; k: any };\nexport interface LottieLayerMotion {\n name: string;\n index: number;\n keyframes: Keyframe[];\n anchor: [number, number];\n}\nexport interface LottieMotion {\n width: number;\n height: number;\n duration: number;\n layers: LottieLayerMotion[];\n}\n\nconst arr = (v: any): number[] => (Array.isArray(v) ? v.map(Number) : [Number(v)]);\n/** Frames (t) → values for one transform property (static props give one key at t = ip) (9.2). */\nfunction track(p: Prop | undefined, ip: number): { t: number; v: number[] }[] {\n if (!p) return [];\n if (!p.a || !Array.isArray(p.k) || typeof p.k[0] !== 'object') return [{ t: ip, v: arr(p.k) }];\n return (p.k as any[]).filter((k) => k && k.s != null).map((k) => ({ t: Number(k.t), v: arr(k.s) }));\n}\nconst at = (tr: { t: number; v: number[] }[], t: number): number[] | undefined => {\n if (!tr.length) return undefined;\n if (t <= tr[0].t) return tr[0].v;\n for (let i = 1; i < tr.length; i++)\n if (t <= tr[i].t) {\n const a = tr[i - 1];\n const b = tr[i];\n const u = b.t === a.t ? 1 : (t - a.t) / (b.t - a.t);\n return a.v.map((x, j) => x + ((b.v[j] ?? x) - x) * u);\n }\n return tr[tr.length - 1].v;\n};\nconst r2 = (n: number) => Math.round(n * 100) / 100;\n\n/** Lottie JSON → WAAPI keyframes per layer + duration (ms) (9.2). */\nexport function lottieToKeyframes(json: any): LottieMotion {\n const d = typeof json === 'string' ? JSON.parse(json) : json;\n const fr = Number(d?.fr) || 30;\n const ip = Number(d?.ip) || 0;\n const op = Number(d?.op) || ip + fr;\n const span = Math.max(1, op - ip);\n const layers: LottieLayerMotion[] = (Array.isArray(d?.layers) ? d.layers : []).map((L: any, index: number) => {\n const ks = L?.ks || {};\n const tracks = { p: track(ks.p, ip), s: track(ks.s, ip), r: track(ks.r, ip), o: track(ks.o, ip) };\n const anchor = (arr(ks.a?.k ?? [0, 0]).slice(0, 2) as [number, number]) || [0, 0];\n const times = Array.from(new Set([ip, op, ...Object.values(tracks).flat().map((k) => k.t)])).filter((t) => t >= ip && t <= op).sort((a, b) => a - b);\n const keyframes: Keyframe[] = times.map((t) => {\n const p = at(tracks.p, t);\n const s = at(tracks.s, t);\n const r = at(tracks.r, t);\n const o = at(tracks.o, t);\n // Lottie order: move the anchor to the position, rotate + scale around the anchor\n const pp = p || anchor;\n const tf: string[] = [`translate(${r2(pp[0])}px, ${r2(pp[1] ?? 0)}px)`];\n if (r) tf.push(`rotate(${r2(r[0])}deg)`);\n if (s) tf.push(`scale(${r2(s[0] / 100)}, ${r2((s[1] ?? s[0]) / 100)})`);\n tf.push(`translate(${r2(-anchor[0])}px, ${r2(-anchor[1])}px)`);\n const k: Keyframe = { offset: r2((t - ip) / span), transform: tf.join(' ') };\n if (o) k.opacity = r2(o[0] / 100);\n return k;\n });\n return { name: String(L?.nm ?? `layer ${index + 1}`), index, keyframes, anchor };\n });\n return { width: Number(d?.w) || 100, height: Number(d?.h) || 100, duration: Math.round((span / fr) * 1000), layers };\n}\n\nconst hex = (c: any): string => {\n const v = arr(c?.k ?? c).slice(0, 3).map((x) => Math.round(Math.min(1, Math.max(0, x)) * 255));\n return `#${v.map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n};\nfunction shapes(items: any[], fill: string, stroke: string, sw: number): string {\n let f = fill;\n let s = stroke;\n let w = sw;\n for (const it of items) {\n if (it?.ty === 'fl') f = hex(it.c);\n if (it?.ty === 'st') {\n s = hex(it.c);\n w = Number(it.w?.k) || 2;\n }\n }\n const paint = `fill=\"${f}\"${s !== 'none' ? ` stroke=\"${s}\" stroke-width=\"${w}\"` : ''}`;\n return items\n .map((it) => {\n if (it?.ty === 'gr') return `<g>${shapes(it.it || [], f, s, w)}</g>`;\n if (it?.ty === 'el') {\n const [cx, cy] = arr(it.p?.k ?? [0, 0]);\n const [sx, sy] = arr(it.s?.k ?? [10, 10]);\n return `<ellipse cx=\"${cx}\" cy=\"${cy}\" rx=\"${sx / 2}\" ry=\"${(sy ?? sx) / 2}\" ${paint}/>`;\n }\n if (it?.ty === 'rc') {\n const [cx, cy] = arr(it.p?.k ?? [0, 0]);\n const [sx, sy] = arr(it.s?.k ?? [10, 10]);\n return `<rect x=\"${cx - sx / 2}\" y=\"${cy - sy / 2}\" width=\"${sx}\" height=\"${sy}\" rx=\"${Number(it.r?.k) || 0}\" ${paint}/>`;\n }\n if (it?.ty === 'sh') {\n const k = it.ks?.k;\n const v: number[][] = k?.v || [];\n if (!v.length) return '';\n const i: number[][] = k.i || [];\n const o: number[][] = k.o || [];\n let dd = `M${v[0][0]} ${v[0][1]}`;\n for (let n = 1; n < v.length + (k.c ? 1 : 0); n++) {\n const a = v[n - 1];\n const b = v[n % v.length];\n const c1 = [a[0] + (o[n - 1]?.[0] || 0), a[1] + (o[n - 1]?.[1] || 0)];\n const c2 = [b[0] + (i[n % v.length]?.[0] || 0), b[1] + (i[n % v.length]?.[1] || 0)];\n dd += ` C${c1[0]} ${c1[1]} ${c2[0]} ${c2[1]} ${b[0]} ${b[1]}`;\n }\n return `<path d=\"${dd}${k.c ? 'Z' : ''}\" ${paint}/>`;\n }\n return '';\n })\n .join('');\n}\n\n/** Render the simple vector layers of a Lottie JSON as an SVG string (one `<g data-layer>` per layer, top layer last) (9.2). */\nexport function lottieToSvg(json: any): string {\n const d = typeof json === 'string' ? JSON.parse(json) : json;\n const w = Number(d?.w) || 100;\n const h = Number(d?.h) || 100;\n const ls: any[] = Array.isArray(d?.layers) ? d.layers : [];\n const groups = ls\n .map((L, i) => ({ L, i }))\n .reverse()\n .map(({ L, i }) => `<g data-layer=\"${i}\"><g class=\"usa-lt-inner\">${shapes(L?.shapes || [], '#000', 'none', 0)}</g></g>`)\n .join('');\n return `<svg viewBox=\"0 0 ${w} ${h}\" width=\"${w}\" height=\"${h}\" aria-hidden=\"true\">${groups}</svg>`;\n}\n\n/** Wire hover / press / click / enter on `el` to a Rive state machine's inputs: map { hover: 'isHover', click: 'fire' } (9.2). */\nexport function riveInputs(instance: { stateMachineInputs(sm: string): any[] }, stateMachine: string, el: HTMLElement, map: Partial<Record<'hover' | 'press' | 'click' | 'enter', string>>): () => void {\n const inputs = (instance.stateMachineInputs(stateMachine) || []) as { name: string; type?: number; value?: boolean; fire?: () => void }[];\n const get = (n?: string) => inputs.find((i) => i.name === n);\n const set = (n: string | undefined, v: boolean) => {\n const i = get(n);\n if (!i) return;\n // Rive StateMachineInputType: 58 = trigger (fire on true), 59 = boolean\n if (i.type === 58 && typeof i.fire === 'function') {\n if (v) i.fire();\n } else i.value = v;\n };\n const offs: (() => void)[] = [];\n const on = (t: string, fn: (e: Event) => void) => {\n el.addEventListener(t, fn);\n offs.push(() => el.removeEventListener(t, fn));\n };\n if (map.hover) (on('pointerenter', () => set(map.hover, true)), on('pointerleave', () => set(map.hover, false)));\n if (map.press) (on('pointerdown', () => set(map.press, true)), on('pointerup', () => set(map.press, false)));\n if (map.click) on('click', () => set(map.click, true));\n if (map.enter && typeof IntersectionObserver !== 'undefined') {\n const io = new IntersectionObserver((es) => es.forEach((e) => set(map.enter, e.isIntersecting)));\n io.observe(el);\n offs.push(() => io.disconnect());\n }\n return () => offs.splice(0).forEach((f) => f());\n}\n\nexport const LOTTIE_FX: EffectDefinition[] = [\n {\n name: 'lottie-play',\n kind: 'attention',\n description: 'Replays the Lottie keyframes stored on an element by <usa-lottie> (or a `json` option) once.',\n defaults: {},\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (ctx.reduced) return;\n const host = el.closest('usa-lottie') as (HTMLElement & { play?: () => void }) | null;\n if (host?.play) return void host.play();\n if (!o.json) return;\n const m = lottieToKeyframes(o.json);\n return Promise.all(m.layers.map((l) => ctx.animate(el, l.keyframes, { duration: m.duration })?.finished.catch(() => undefined))).then(() => undefined);\n },\n },\n {\n name: 'icon-pop',\n kind: 'click',\n description: 'A sticker-like pop with a ring burst, for icons (`color`).',\n defaults: { color: '#f43f5e', duration: 500 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (ctx.reduced) return;\n if (getComputedStyle(el).position === 'static') {\n const prev = el.style.position;\n el.style.position = 'relative';\n ctx.onCleanup(() => (el.style.position = prev));\n }\n const ring = document.createElement('span');\n ring.setAttribute('aria-hidden', 'true');\n Object.assign(ring.style, { position: 'absolute', inset: '0', borderRadius: '50%', border: `2px solid ${o.color}`, pointerEvents: 'none' });\n el.appendChild(ring);\n ctx.onCleanup(() => ring.remove());\n const a = ctx.animate(el, [{ transform: 'scale(1)' }, { transform: 'scale(.8)', offset: 0.2 }, { transform: 'scale(1.2)', offset: 0.55 }, { transform: 'scale(1)' }], { duration: o.duration, easing: 'cubic-bezier(.3,1.5,.5,1)' });\n const b = ctx.animate(ring, [{ transform: 'scale(.6)', opacity: 1 }, { transform: 'scale(1.8)', opacity: 0 }], { duration: o.duration, easing: 'ease-out' });\n const end = () => ring.remove();\n return Promise.all([a?.finished.catch(() => undefined), b?.finished.catch(() => undefined)]).then(end, end);\n },\n },\n];\n\n/** Register lottie-play and icon-pop (9.2). */\nexport function registerLottiePack(): void {\n registerEffects(LOTTIE_FX);\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fx-morph.cjs","sources":["../../src/components/fx2/morph2.ts"],"sourcesContent":["/**\n * 6.6 — Morph & SVG 2.0 (`motionary/components/fx-morph`), registered\n * through `registerEffect()`:\n *\n * - `path-morph` (loop) — an SVG `<path>` flows between shapes (`paths`, any\n * number of `d` strings): both shapes are resampled to the same number of\n * points, so paths with different commands still morph smoothly.\n * - `blob-button` (hover, persistent) — a liquid blob behind the element\n * wobbles and bulges toward the pointer.\n * - `stroke-draw` (enter) — every stroke in an inline SVG draws itself,\n * staggered, then the fills fade in.\n * - `noise-reveal` (enter) — the element condenses out of SVG turbulence\n * (displacement + blur) — an SVG-filter transition.\n * - `icon-swap` (click) — cycles through the element's child icons with a\n * gooey morph (blur + scale + rotate crossfade).\n *\n * Reduced motion: no loops / wobble; enter effects and swaps fade.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\nimport { all } from '../effects/shared';\n\nconst NS = 'http://www.w3.org/2000/svg';\nconst raf = (f: FrameRequestCallback): number => (typeof requestAnimationFrame === 'function' ? requestAnimationFrame(f) : 0);\nconst caf = (h: number): void => {\n if (h && typeof cancelAnimationFrame === 'function') cancelAnimationFrame(h);\n};\n\n/** Sample `d` into `n` points (needs SVG geometry support; `null` without it). */\nexport function samplePath(d: string, n = 64): [number, number][] | null {\n const p = document.createElementNS(NS, 'path') as SVGPathElement;\n p.setAttribute('d', d);\n const svg = document.createElementNS(NS, 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.style.cssText = 'position:absolute;width:0;height:0;overflow:hidden';\n svg.appendChild(p);\n document.body.appendChild(svg);\n try {\n if (typeof p.getTotalLength !== 'function') return null;\n const L = p.getTotalLength();\n if (!L) return null;\n const out: [number, number][] = [];\n for (let i = 0; i < n; i++) {\n const pt = p.getPointAtLength((i / n) * L);\n out.push([pt.x, pt.y]);\n }\n return out;\n } catch {\n return null;\n } finally {\n svg.remove();\n }\n}\n\n/** Points → closed path `d`. */\nexport const pointsToPath = (pts: [number, number][]): string => (pts.length ? `M${pts.map(([x, y]) => `${x.toFixed(2)} ${y.toFixed(2)}`).join('L')}Z` : '');\n\n/** Rotate `b` so its start point is the one closest to `a[0]` (less twisting). */\nfunction align(a: [number, number][], b: [number, number][]): [number, number][] {\n let best = 0;\n let bd = Infinity;\n for (let i = 0; i < b.length; i++) {\n const d = (b[i][0] - a[0][0]) ** 2 + (b[i][1] - a[0][1]) ** 2;\n if (d < bd) {\n bd = d;\n best = i;\n }\n }\n return b.slice(best).concat(b.slice(0, best));\n}\n\nconst ease = (t: number) => (t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2);\n\nexport const MORPH2_FX: EffectDefinition[] = [\n {\n name: 'path-morph',\n kind: 'loop',\n description: 'An SVG `<path>` flows between shapes (`paths`: `d` strings; `duration` per shape, `hold` ms). Shapes are resampled, so any two paths morph.',\n defaults: { paths: [] as string[], duration: 1200, hold: 600, points: 72 },\n run: (el: HTMLElement, o: any) => {\n const path = ((el as Element).localName === 'path' ? el : el.querySelector('path')) as unknown as SVGPathElement | null;\n if (!path) return;\n const ds: string[] = [path.getAttribute('d') || '', ...(o.paths || [])].filter(Boolean);\n const shapes = ds.map((d) => samplePath(d, o.points)).filter(Boolean) as [number, number][][];\n if (shapes.length < 2) return;\n for (let i = 1; i < shapes.length; i++) shapes[i] = align(shapes[i - 1], shapes[i]);\n const orig = path.getAttribute('d');\n let i = 0;\n let t0 = performance.now();\n let h = 0;\n const tick = (now: number) => {\n const a = shapes[i % shapes.length];\n const b = shapes[(i + 1) % shapes.length];\n const k = Math.min(1, Math.max(0, (now - t0) / o.duration));\n const e = ease(k);\n path.setAttribute('d', pointsToPath(a.map(([x, y], j) => [x + (b[j][0] - x) * e, y + (b[j][1] - y) * e])));\n if (now - t0 > o.duration + o.hold) {\n i++;\n t0 = now;\n }\n h = raf(tick);\n };\n h = raf(tick);\n return () => {\n caf(h);\n if (orig !== null) path.setAttribute('d', orig);\n };\n },\n },\n {\n name: 'blob-button',\n kind: 'hover',\n reduced: 'run',\n description: 'A liquid blob behind the element wobbles and bulges toward the pointer (persistent; `color`, `wobble` 0–1, `bulge` px).',\n defaults: { color: '#7c5cff', wobble: 0.5, bulge: 10, points: 10 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (getComputedStyle(el).position === 'static') el.style.position = 'relative';\n const prevZ = el.style.isolation;\n el.style.isolation = 'isolate';\n const svg = document.createElementNS(NS, 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('width', '100%');\n svg.setAttribute('height', '100%');\n svg.style.cssText = 'position:absolute;inset:-14px;width:calc(100% + 28px);height:calc(100% + 28px);z-index:-1;pointer-events:none;overflow:visible';\n const path = document.createElementNS(NS, 'path');\n path.setAttribute('fill', o.color);\n svg.appendChild(path);\n el.prepend(svg);\n const n = Math.max(6, o.points | 0);\n let px = 0.5;\n let py = 0.5;\n let hover = 0;\n let target = 0;\n let h = 0;\n const t0 = performance.now();\n const draw = (now: number) => {\n const w = el.offsetWidth + 28 || 128;\n const hh = el.offsetHeight + 28 || 72;\n const t = ctx.reduced ? 0 : (now - t0) / 1000;\n hover += (target - hover) * 0.12;\n const pts: [number, number][] = [];\n for (let i = 0; i < n; i++) {\n const a = (i / n) * Math.PI * 2;\n const cx = Math.cos(a);\n const cy = Math.sin(a);\n const toward = Math.max(0, cx * (px - 0.5) * 2 + cy * (py - 0.5) * 2);\n const r = 1 + (ctx.reduced ? 0 : o.wobble * 0.06 * Math.sin(t * 2.2 + i * 1.7)) + (toward * o.bulge * hover) / Math.min(w, hh);\n pts.push([w / 2 + cx * (w / 2 - 12) * r, hh / 2 + cy * (hh / 2 - 12) * r]);\n }\n // smooth closed curve through the points (Catmull-Rom → cubic Bézier)\n let d = `M${pts[0][0].toFixed(1)} ${pts[0][1].toFixed(1)}`;\n for (let i = 0; i < n; i++) {\n const p0 = pts[(i - 1 + n) % n];\n const p1 = pts[i];\n const p2 = pts[(i + 1) % n];\n const p3 = pts[(i + 2) % n];\n d += `C${(p1[0] + (p2[0] - p0[0]) / 6).toFixed(1)} ${(p1[1] + (p2[1] - p0[1]) / 6).toFixed(1)} ${(p2[0] - (p3[0] - p1[0]) / 6).toFixed(1)} ${(p2[1] - (p3[1] - p1[1]) / 6).toFixed(1)} ${p2[0].toFixed(1)} ${p2[1].toFixed(1)}`;\n }\n path.setAttribute('d', d + 'Z');\n h = !ctx.reduced && (target || Math.abs(hover) > 0.01 || o.wobble) ? raf(draw) : 0;\n };\n const kick = () => {\n if (!h) h = raf(draw);\n };\n const move = (e: PointerEvent) => {\n const r = el.getBoundingClientRect();\n px = r.width ? (e.clientX - r.left) / r.width : 0.5;\n py = r.height ? (e.clientY - r.top) / r.height : 0.5;\n target = 1;\n kick();\n };\n const leave = () => {\n target = 0;\n kick();\n };\n draw(t0);\n el.addEventListener('pointermove', move);\n el.addEventListener('pointerleave', leave);\n return () => {\n caf(h);\n el.removeEventListener('pointermove', move);\n el.removeEventListener('pointerleave', leave);\n svg.remove();\n el.style.isolation = prevZ;\n };\n },\n },\n {\n name: 'stroke-draw',\n kind: 'enter',\n description: 'Every stroke of an inline SVG draws itself, staggered, then the fills fade in (`duration`, `stagger`).',\n defaults: { duration: 1200, stagger: 120 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const shapes = Array.from(el.querySelectorAll<SVGGeometryElement>('path, line, polyline, polygon, circle, ellipse, rect'));\n return all(shapes.map((s, i) => {\n let L = 0;\n try {\n L = typeof s.getTotalLength === 'function' ? s.getTotalLength() : 0;\n } catch {\n L = 0;\n }\n if (ctx.reduced || !L) return ctx.animate(s, [{ opacity: 0 }, { opacity: 1 }], { duration: 300, delay: i * 40, fill: 'backwards' });\n const fill = getComputedStyle(s).fillOpacity || '1';\n return ctx.animate(s, [\n { strokeDasharray: `${L}`, strokeDashoffset: `${L}`, fillOpacity: 0 },\n { strokeDasharray: `${L}`, strokeDashoffset: '0', fillOpacity: 0, offset: 0.75 },\n { strokeDasharray: `${L}`, strokeDashoffset: '0', fillOpacity: fill },\n ], { duration: o.duration, delay: i * o.stagger, easing: 'ease-in-out', fill: 'backwards' });\n }));\n },\n },\n {\n name: 'noise-reveal',\n kind: 'enter',\n description: 'The element condenses out of SVG turbulence — displacement and blur settle to zero (`duration`, `strength`). An SVG-filter transition.',\n defaults: { duration: 1100, strength: 60 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (ctx.reduced) return ctx.animate(el, [{ opacity: 0 }, { opacity: 1 }], { duration: 300 });\n const id = `usa-noise-${Math.random().toString(36).slice(2, 8)}`;\n const svg = document.createElementNS(NS, 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('width', '0');\n svg.setAttribute('height', '0');\n svg.style.cssText = 'position:absolute;width:0;height:0;overflow:hidden';\n svg.innerHTML = `<filter id=\"${id}\" x=\"-20%\" y=\"-20%\" width=\"140%\" height=\"140%\"><feTurbulence type=\"fractalNoise\" baseFrequency=\"0.035\" numOctaves=\"2\" result=\"n\"/><feDisplacementMap in=\"SourceGraphic\" in2=\"n\" scale=\"${o.strength}\" xChannelSelector=\"R\" yChannelSelector=\"G\"/><feGaussianBlur stdDeviation=\"0\"/></filter>`;\n document.body.appendChild(svg);\n const disp = svg.querySelector('feDisplacementMap');\n const blur = svg.querySelector('feGaussianBlur');\n const prev = el.style.filter;\n el.style.filter = `url(#${id})`;\n const fade = ctx.animate(el, [{ opacity: 0 }, { opacity: 1, offset: 0.4 }, { opacity: 1 }], { duration: o.duration, easing: 'ease-out' });\n const t0 = performance.now();\n return new Promise<void>((done) => {\n const end = () => {\n el.style.filter = prev;\n svg.remove();\n done();\n };\n const tick = (now: number) => {\n const k = Math.min(1, (now - t0) / o.duration);\n const e = 1 - Math.pow(1 - k, 3);\n disp?.setAttribute('scale', ((1 - e) * o.strength).toFixed(2));\n blur?.setAttribute('stdDeviation', ((1 - e) * 4).toFixed(2));\n if (k < 1) raf(tick);\n else end();\n };\n if (!raf(tick)) (fade ? fade.finished.then(end, end) : end());\n });\n },\n },\n {\n name: 'icon-swap',\n kind: 'click',\n description: 'Cycles through the element\\'s child icons with a gooey morph — blur, scale and rotate crossfade (`duration`). The visible icon is the only one not `aria-hidden`.',\n defaults: { duration: 420 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const icons = Array.from(el.children) as HTMLElement[];\n if (icons.length < 2) return null;\n if (!el.dataset.usaSwap) {\n el.dataset.usaSwap = '0';\n el.style.display = el.style.display || 'inline-grid';\n icons.forEach((ic, i) => {\n ic.style.gridArea = '1 / 1';\n ic.style.opacity = i ? '0' : '1';\n ic.setAttribute('aria-hidden', String(i !== 0));\n });\n }\n const cur = Number(el.dataset.usaSwap) || 0;\n const nxt = (cur + 1) % icons.length;\n el.dataset.usaSwap = String(nxt);\n const a = icons[cur];\n const b = icons[nxt];\n a.setAttribute('aria-hidden', 'true');\n b.setAttribute('aria-hidden', 'false');\n a.style.opacity = '0';\n b.style.opacity = '1';\n if (ctx.reduced) return all([ctx.animate(a, [{ opacity: 1 }, { opacity: 0 }], { duration: 150 }), ctx.animate(b, [{ opacity: 0 }, { opacity: 1 }], { duration: 150 })]);\n return all([\n ctx.animate(a, [{ opacity: 1, transform: 'none', filter: 'blur(0)' }, { opacity: 0, transform: 'scale(.3) rotate(-90deg)', filter: 'blur(6px)' }], { duration: o.duration, easing: 'cubic-bezier(.5,0,.75,0)' }),\n ctx.animate(b, [{ opacity: 0, transform: 'scale(.3) rotate(90deg)', filter: 'blur(6px)' }, { opacity: 1, transform: 'scale(1.15) rotate(-8deg)', filter: 'blur(0)', offset: 0.7 }, { opacity: 1, transform: 'none', filter: 'blur(0)' }], { duration: o.duration * 1.3, easing: 'cubic-bezier(.2,.8,.3,1.2)' }),\n ]);\n },\n },\n];\n\n/** Register the 6.6 morph & SVG pack (idempotent). */\nexport function registerMorphPack(): void {\n registerEffects(MORPH2_FX);\n}\n\n"],"names":["all","registerEffects"],"mappings":"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"}
1
+ {"version":3,"file":"fx-morph.cjs","sources":["../../src/components/fx2/morph2.ts"],"sourcesContent":["/**\n * 6.6 — Morph & SVG 2.0 (`motionary/components/fx-morph`), registered\n * through `registerEffect()`:\n *\n * - `path-morph` (loop) — an SVG `<path>` flows between shapes (`paths`, any\n * number of `d` strings): both shapes are resampled to the same number of\n * points, so paths with different commands still morph smoothly.\n * - `blob-button` (hover, persistent) — a liquid blob behind the element\n * wobbles and bulges toward the pointer.\n * - `stroke-draw` (enter) — every stroke in an inline SVG draws itself,\n * staggered, then the fills fade in.\n * - `noise-reveal` (enter) — the element condenses out of SVG turbulence\n * (displacement + blur) — an SVG-filter transition.\n * - `icon-swap` (click) — cycles through the element's child icons with a\n * gooey morph (blur + scale + rotate crossfade).\n *\n * Reduced motion: no loops / wobble; enter effects and swaps fade.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\nimport { all } from '../effects/shared';\n\nconst NS = 'http://www.w3.org/2000/svg';\nconst raf = (f: FrameRequestCallback): number => (typeof requestAnimationFrame === 'function' ? requestAnimationFrame(f) : 0);\nconst caf = (h: number): void => {\n if (h && typeof cancelAnimationFrame === 'function') cancelAnimationFrame(h);\n};\n\n/** Sample `d` into `n` points (needs SVG geometry support; `null` without it). */\nexport function samplePath(d: string, n = 64): [number, number][] | null {\n const p = document.createElementNS(NS, 'path') as SVGPathElement;\n p.setAttribute('d', d);\n const svg = document.createElementNS(NS, 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.style.cssText = 'position:absolute;width:0;height:0;overflow:hidden';\n svg.appendChild(p);\n document.body.appendChild(svg);\n try {\n if (typeof p.getTotalLength !== 'function') return null;\n const L = p.getTotalLength();\n if (!L) return null;\n const out: [number, number][] = [];\n for (let i = 0; i < n; i++) {\n const pt = p.getPointAtLength((i / n) * L);\n out.push([pt.x, pt.y]);\n }\n return out;\n } catch {\n return null;\n } finally {\n svg.remove();\n }\n}\n\n/** Points → closed path `d`. */\nexport const pointsToPath = (pts: [number, number][]): string => (pts.length ? `M${pts.map(([x, y]) => `${x.toFixed(2)} ${y.toFixed(2)}`).join('L')}Z` : '');\n\n/** Rotate `b` so its start point is the one closest to `a[0]` (less twisting). */\nfunction align(a: [number, number][], b: [number, number][]): [number, number][] {\n let best = 0;\n let bd = Infinity;\n for (let i = 0; i < b.length; i++) {\n const d = (b[i][0] - a[0][0]) ** 2 + (b[i][1] - a[0][1]) ** 2;\n if (d < bd) {\n bd = d;\n best = i;\n }\n }\n return b.slice(best).concat(b.slice(0, best));\n}\n\nconst ease = (t: number) => (t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2);\n\nexport const MORPH2_FX: EffectDefinition[] = [\n {\n name: 'path-morph',\n kind: 'loop',\n description: 'An SVG `<path>` flows between shapes (`paths`: `d` strings; `duration` per shape, `hold` ms). Shapes are resampled, so any two paths morph.',\n defaults: { paths: [] as string[], duration: 1200, hold: 600, points: 72 },\n run: (el: HTMLElement, o: any) => {\n const path = ((el as Element).localName === 'path' ? el : el.querySelector('path')) as unknown as SVGPathElement | null;\n if (!path) return;\n const ds: string[] = [path.getAttribute('d') || '', ...(o.paths || [])].filter(Boolean);\n const shapes = ds.map((d) => samplePath(d, o.points)).filter(Boolean) as [number, number][][];\n if (shapes.length < 2) return;\n for (let i = 1; i < shapes.length; i++) shapes[i] = align(shapes[i - 1], shapes[i]);\n const orig = path.getAttribute('d');\n let i = 0;\n let t0 = performance.now();\n let h = 0;\n const tick = (now: number) => {\n const a = shapes[i % shapes.length];\n const b = shapes[(i + 1) % shapes.length];\n const k = Math.min(1, Math.max(0, (now - t0) / o.duration));\n const e = ease(k);\n path.setAttribute('d', pointsToPath(a.map(([x, y], j) => [x + (b[j][0] - x) * e, y + (b[j][1] - y) * e])));\n if (now - t0 > o.duration + o.hold) {\n i++;\n t0 = now;\n }\n h = raf(tick);\n };\n h = raf(tick);\n return () => {\n caf(h);\n if (orig !== null) path.setAttribute('d', orig);\n };\n },\n },\n {\n name: 'blob-button',\n kind: 'hover',\n reduced: 'run',\n description: 'A liquid blob behind the element wobbles and bulges toward the pointer (persistent; `color`, `wobble` 0–1, `bulge` px).',\n defaults: { color: '#7c5cff', wobble: 0.5, bulge: 10, points: 10 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (getComputedStyle(el).position === 'static') el.style.position = 'relative';\n const prevZ = el.style.isolation;\n el.style.isolation = 'isolate';\n const svg = document.createElementNS(NS, 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('width', '100%');\n svg.setAttribute('height', '100%');\n svg.style.cssText = 'position:absolute;inset:-14px;width:calc(100% + 28px);height:calc(100% + 28px);z-index:-1;pointer-events:none;overflow:visible';\n const path = document.createElementNS(NS, 'path');\n path.setAttribute('fill', o.color);\n svg.appendChild(path);\n el.prepend(svg);\n const n = Math.max(6, o.points | 0);\n let px = 0.5;\n let py = 0.5;\n let hover = 0;\n let target = 0;\n let h = 0;\n const t0 = performance.now();\n const draw = (now: number) => {\n const w = el.offsetWidth + 28 || 128;\n const hh = el.offsetHeight + 28 || 72;\n const t = ctx.reduced ? 0 : (now - t0) / 1000;\n hover += (target - hover) * 0.12;\n const pts: [number, number][] = [];\n for (let i = 0; i < n; i++) {\n const a = (i / n) * Math.PI * 2;\n const cx = Math.cos(a);\n const cy = Math.sin(a);\n const toward = Math.max(0, cx * (px - 0.5) * 2 + cy * (py - 0.5) * 2);\n const r = 1 + (ctx.reduced ? 0 : o.wobble * 0.06 * Math.sin(t * 2.2 + i * 1.7)) + (toward * o.bulge * hover) / Math.min(w, hh);\n pts.push([w / 2 + cx * (w / 2 - 12) * r, hh / 2 + cy * (hh / 2 - 12) * r]);\n }\n // smooth closed curve through the points (Catmull-Rom → cubic Bézier)\n let d = `M${pts[0][0].toFixed(1)} ${pts[0][1].toFixed(1)}`;\n for (let i = 0; i < n; i++) {\n const p0 = pts[(i - 1 + n) % n];\n const p1 = pts[i];\n const p2 = pts[(i + 1) % n];\n const p3 = pts[(i + 2) % n];\n d += `C${(p1[0] + (p2[0] - p0[0]) / 6).toFixed(1)} ${(p1[1] + (p2[1] - p0[1]) / 6).toFixed(1)} ${(p2[0] - (p3[0] - p1[0]) / 6).toFixed(1)} ${(p2[1] - (p3[1] - p1[1]) / 6).toFixed(1)} ${p2[0].toFixed(1)} ${p2[1].toFixed(1)}`;\n }\n path.setAttribute('d', d + 'Z');\n h = !ctx.reduced && (target || Math.abs(hover) > 0.01 || o.wobble) ? raf(draw) : 0;\n };\n const kick = () => {\n if (!h) h = raf(draw);\n };\n const move = (e: PointerEvent) => {\n const r = el.getBoundingClientRect();\n px = r.width ? (e.clientX - r.left) / r.width : 0.5;\n py = r.height ? (e.clientY - r.top) / r.height : 0.5;\n target = 1;\n kick();\n };\n const leave = () => {\n target = 0;\n kick();\n };\n draw(t0);\n el.addEventListener('pointermove', move);\n el.addEventListener('pointerleave', leave);\n return () => {\n caf(h);\n el.removeEventListener('pointermove', move);\n el.removeEventListener('pointerleave', leave);\n svg.remove();\n el.style.isolation = prevZ;\n };\n },\n },\n {\n name: 'stroke-draw',\n kind: 'enter',\n description: 'Every stroke of an inline SVG draws itself, staggered, then the fills fade in (`duration`, `stagger`).',\n defaults: { duration: 1200, stagger: 120 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const shapes = Array.from(el.querySelectorAll<SVGGeometryElement>('path, line, polyline, polygon, circle, ellipse, rect'));\n return all(shapes.map((s, i) => {\n let L = 0;\n try {\n L = typeof s.getTotalLength === 'function' ? s.getTotalLength() : 0;\n } catch {\n L = 0;\n }\n if (ctx.reduced || !L) return ctx.animate(s, [{ opacity: 0 }, { opacity: 1 }], { duration: 300, delay: i * 40, fill: 'backwards' });\n const fill = getComputedStyle(s).fillOpacity || '1';\n return ctx.animate(s, [\n { strokeDasharray: `${L}`, strokeDashoffset: `${L}`, fillOpacity: 0 },\n { strokeDasharray: `${L}`, strokeDashoffset: '0', fillOpacity: 0, offset: 0.75 },\n { strokeDasharray: `${L}`, strokeDashoffset: '0', fillOpacity: fill },\n ], { duration: o.duration, delay: i * o.stagger, easing: 'ease-in-out', fill: 'backwards' });\n }));\n },\n },\n {\n name: 'noise-reveal',\n kind: 'enter',\n description: 'The element condenses out of SVG turbulence — displacement and blur settle to zero (`duration`, `strength`). An SVG-filter transition.',\n defaults: { duration: 1100, strength: 60 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n if (ctx.reduced) return ctx.animate(el, [{ opacity: 0 }, { opacity: 1 }], { duration: 300 });\n const id = `usa-noise-${Math.random().toString(36).slice(2, 8)}`;\n const svg = document.createElementNS(NS, 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('width', '0');\n svg.setAttribute('height', '0');\n svg.style.cssText = 'position:absolute;width:0;height:0;overflow:hidden';\n svg.innerHTML = `<filter id=\"${id}\" x=\"-20%\" y=\"-20%\" width=\"140%\" height=\"140%\"><feTurbulence type=\"fractalNoise\" baseFrequency=\"0.035\" numOctaves=\"2\" result=\"n\"/><feDisplacementMap in=\"SourceGraphic\" in2=\"n\" scale=\"${o.strength}\" xChannelSelector=\"R\" yChannelSelector=\"G\"/><feGaussianBlur stdDeviation=\"0\"/></filter>`;\n document.body.appendChild(svg);\n const disp = svg.querySelector('feDisplacementMap');\n const blur = svg.querySelector('feGaussianBlur');\n const prev = el.style.filter;\n el.style.filter = `url(#${id})`;\n const fade = ctx.animate(el, [{ opacity: 0 }, { opacity: 1, offset: 0.4 }, { opacity: 1 }], { duration: o.duration, easing: 'ease-out' });\n const t0 = performance.now();\n return new Promise<void>((done) => {\n const end = () => {\n el.style.filter = prev;\n svg.remove();\n done();\n };\n const tick = (now: number) => {\n const k = Math.min(1, (now - t0) / o.duration);\n const e = 1 - Math.pow(1 - k, 3);\n disp?.setAttribute('scale', ((1 - e) * o.strength).toFixed(2));\n blur?.setAttribute('stdDeviation', ((1 - e) * 4).toFixed(2));\n if (k < 1) raf(tick);\n else end();\n };\n if (!raf(tick)) (fade ? fade.finished.then(end, end) : end());\n });\n },\n },\n {\n name: 'icon-swap',\n kind: 'click',\n description: 'Cycles through the element\\'s child icons with a gooey morph — blur, scale and rotate crossfade (`duration`). The visible icon is the only one not `aria-hidden`.',\n defaults: { duration: 420 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const icons = Array.from(el.children) as HTMLElement[];\n if (icons.length < 2) return null;\n if (!el.dataset.usaSwap) {\n el.dataset.usaSwap = '0';\n el.style.display = el.style.display || 'inline-grid';\n icons.forEach((ic, i) => {\n ic.style.gridArea = '1 / 1';\n ic.style.opacity = i ? '0' : '1';\n ic.setAttribute('aria-hidden', String(i !== 0));\n });\n }\n const cur = Number(el.dataset.usaSwap) || 0;\n const nxt = (cur + 1) % icons.length;\n el.dataset.usaSwap = String(nxt);\n const a = icons[cur];\n const b = icons[nxt];\n a.setAttribute('aria-hidden', 'true');\n b.setAttribute('aria-hidden', 'false');\n a.style.opacity = '0';\n b.style.opacity = '1';\n if (ctx.reduced) return all([ctx.animate(a, [{ opacity: 1 }, { opacity: 0 }], { duration: 150 }), ctx.animate(b, [{ opacity: 0 }, { opacity: 1 }], { duration: 150 })]);\n return all([\n ctx.animate(a, [{ opacity: 1, transform: 'none', filter: 'blur(0)' }, { opacity: 0, transform: 'scale(.3) rotate(-90deg)', filter: 'blur(6px)' }], { duration: o.duration, easing: 'cubic-bezier(.5,0,.75,0)' }),\n ctx.animate(b, [{ opacity: 0, transform: 'scale(.3) rotate(90deg)', filter: 'blur(6px)' }, { opacity: 1, transform: 'scale(1.15) rotate(-8deg)', filter: 'blur(0)', offset: 0.7 }, { opacity: 1, transform: 'none', filter: 'blur(0)' }], { duration: o.duration * 1.3, easing: 'cubic-bezier(.2,.8,.3,1.2)' }),\n ]);\n },\n },\n];\n\n/** Register the 6.6 morph & SVG pack (idempotent). */\nexport function registerMorphPack(): void {\n registerEffects(MORPH2_FX);\n}\n\n"],"names":["all","registerEffects"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { registerEffects } from '../chunks/registry-gFJRpPES.js';
1
+ import { registerEffects } from '../chunks/registry-BKzyg1JV.js';
2
2
  import { a as all } from '../chunks/shared-CkKHWrtJ.js';
3
- import '../chunks/base-BnRyfuyM.js';
3
+ import '../chunks/base-BTev8qxg.js';
4
4
 
5
5
  const NS = 'http://www.w3.org/2000/svg';
6
6
  const raf = (f) => (typeof requestAnimationFrame === 'function' ? requestAnimationFrame(f) : 0);