@3driseai/3drise-viewer 0.1.26 → 0.1.27

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 (456) hide show
  1. package/dist/animationsV2/ClipPlayer.d.ts +3 -0
  2. package/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
  3. package/dist/animationsV2/ClipPlayer.js +67 -8
  4. package/dist/animationsV2/ClipsRuntime.d.ts +39 -0
  5. package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
  6. package/dist/animationsV2/ClipsRuntime.js +245 -14
  7. package/dist/animationsV2/appliers.d.ts +5 -0
  8. package/dist/animationsV2/appliers.d.ts.map +1 -1
  9. package/dist/animationsV2/appliers.js +25 -7
  10. package/dist/animationsV2/index.d.ts +1 -1
  11. package/dist/animationsV2/index.d.ts.map +1 -1
  12. package/dist/animationsV2/normalize.d.ts.map +1 -1
  13. package/dist/animationsV2/normalize.js +18 -7
  14. package/dist/animationsV2/sequenceUtils.d.ts +42 -1
  15. package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
  16. package/dist/animationsV2/sequenceUtils.js +103 -3
  17. package/dist/animationsV2/types.d.ts +20 -0
  18. package/dist/animationsV2/types.d.ts.map +1 -1
  19. package/dist/components/AdvancedGrid.d.ts +8 -2
  20. package/dist/components/AdvancedGrid.d.ts.map +1 -1
  21. package/dist/components/AdvancedGrid.js +31 -14
  22. package/dist/components/AnimatedObject.d.ts.map +1 -1
  23. package/dist/components/AnimatedObject.js +7 -5
  24. package/dist/components/Bubbles.d.ts +7 -1
  25. package/dist/components/Bubbles.d.ts.map +1 -1
  26. package/dist/components/Bubbles.js +42 -22
  27. package/dist/components/ChladniGrid.d.ts +8 -4
  28. package/dist/components/ChladniGrid.d.ts.map +1 -1
  29. package/dist/components/ChladniGrid.js +31 -13
  30. package/dist/components/CircuitGrid.d.ts +8 -11
  31. package/dist/components/CircuitGrid.d.ts.map +1 -1
  32. package/dist/components/CircuitGrid.js +31 -13
  33. package/dist/components/CloudsGenerator.d.ts +1 -1
  34. package/dist/components/CloudsGenerator.js +1 -1
  35. package/dist/components/ContourGrid.d.ts +8 -14
  36. package/dist/components/ContourGrid.d.ts.map +1 -1
  37. package/dist/components/ContourGrid.js +31 -13
  38. package/dist/components/EffectsGenerator.d.ts +7 -1
  39. package/dist/components/EffectsGenerator.d.ts.map +1 -1
  40. package/dist/components/EffectsGenerator.js +39 -38
  41. package/dist/components/EnvironmentManager.d.ts +4 -4
  42. package/dist/components/EnvironmentManager.d.ts.map +1 -1
  43. package/dist/components/FlowNetGrid.d.ts +8 -4
  44. package/dist/components/FlowNetGrid.d.ts.map +1 -1
  45. package/dist/components/FlowNetGrid.js +31 -13
  46. package/dist/components/FractalGrid.d.ts +8 -12
  47. package/dist/components/FractalGrid.d.ts.map +1 -1
  48. package/dist/components/FractalGrid.js +31 -13
  49. package/dist/components/GirihGrid.d.ts +8 -1
  50. package/dist/components/GirihGrid.d.ts.map +1 -1
  51. package/dist/components/GirihGrid.js +31 -13
  52. package/dist/components/Glyphs.d.ts +7 -1
  53. package/dist/components/Glyphs.d.ts.map +1 -1
  54. package/dist/components/Glyphs.js +40 -34
  55. package/dist/components/GravWaveGrid.d.ts +8 -1
  56. package/dist/components/GravWaveGrid.d.ts.map +1 -1
  57. package/dist/components/GravWaveGrid.js +31 -13
  58. package/dist/components/GridsGenerator.d.ts +7 -1
  59. package/dist/components/GridsGenerator.d.ts.map +1 -1
  60. package/dist/components/GridsGenerator.js +20 -18
  61. package/dist/components/HexGrid.d.ts +8 -10
  62. package/dist/components/HexGrid.d.ts.map +1 -1
  63. package/dist/components/HexGrid.js +31 -13
  64. package/dist/components/HyperbolicGrid.d.ts +8 -4
  65. package/dist/components/HyperbolicGrid.d.ts.map +1 -1
  66. package/dist/components/HyperbolicGrid.js +31 -13
  67. package/dist/components/LandscapeBuilder.d.ts +1 -1
  68. package/dist/components/LandscapeBuilder.d.ts.map +1 -1
  69. package/dist/components/LandscapeBuilder.js +1 -1
  70. package/dist/components/LandscapeObject.d.ts +1 -1
  71. package/dist/components/LandscapeObject.d.ts.map +1 -1
  72. package/dist/components/LandscapeObject.js +1 -1
  73. package/dist/components/MoireGrid.d.ts +8 -12
  74. package/dist/components/MoireGrid.d.ts.map +1 -1
  75. package/dist/components/MoireGrid.js +31 -13
  76. package/dist/components/ObjectNode.d.ts.map +1 -1
  77. package/dist/components/ObjectNode.js +2 -2
  78. package/dist/components/ObjectsRenderer.d.ts.map +1 -1
  79. package/dist/components/ObjectsRenderer.js +37 -3
  80. package/dist/components/OceanBuilder.d.ts +1 -1
  81. package/dist/components/OceanBuilder.js +1 -1
  82. package/dist/components/ParticlesGenerator.d.ts.map +1 -1
  83. package/dist/components/ParticlesGenerator.js +6 -0
  84. package/dist/components/QuasiGrid.d.ts +8 -11
  85. package/dist/components/QuasiGrid.d.ts.map +1 -1
  86. package/dist/components/QuasiGrid.js +31 -13
  87. package/dist/components/RadarGrid.d.ts +8 -13
  88. package/dist/components/RadarGrid.d.ts.map +1 -1
  89. package/dist/components/RadarGrid.js +31 -13
  90. package/dist/components/ReactionDiffusionGrid.d.ts +8 -1
  91. package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
  92. package/dist/components/ReactionDiffusionGrid.js +33 -139
  93. package/dist/components/SceneBuilder.js +1 -1
  94. package/dist/components/SkySystem.d.ts +1 -1
  95. package/dist/components/SparklesBurst.d.ts +7 -1
  96. package/dist/components/SparklesBurst.d.ts.map +1 -1
  97. package/dist/components/SparklesBurst.js +31 -28
  98. package/dist/components/TerrainBuilder.d.ts +1 -1
  99. package/dist/components/TerrainBuilder.d.ts.map +1 -1
  100. package/dist/components/TerrainBuilder.js +1 -1
  101. package/dist/components/VoronoiGrid.d.ts +8 -10
  102. package/dist/components/VoronoiGrid.d.ts.map +1 -1
  103. package/dist/components/VoronoiGrid.js +31 -13
  104. package/dist/components/WallpaperGrid.d.ts +8 -1
  105. package/dist/components/WallpaperGrid.d.ts.map +1 -1
  106. package/dist/components/WallpaperGrid.js +33 -210
  107. package/dist/components/effects/AuraEffect.d.ts +8 -3
  108. package/dist/components/effects/AuraEffect.d.ts.map +1 -1
  109. package/dist/components/effects/AuraEffect.js +49 -24
  110. package/dist/components/effects/AuroraEffect.d.ts +8 -3
  111. package/dist/components/effects/AuroraEffect.d.ts.map +1 -1
  112. package/dist/components/effects/AuroraEffect.js +45 -25
  113. package/dist/components/effects/BlackHoleEffect.d.ts +8 -3
  114. package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -1
  115. package/dist/components/effects/BlackHoleEffect.js +42 -21
  116. package/dist/components/effects/ConstellationEffect.d.ts +8 -3
  117. package/dist/components/effects/ConstellationEffect.d.ts.map +1 -1
  118. package/dist/components/effects/ConstellationEffect.js +49 -23
  119. package/dist/components/effects/DandelionSeedsEffect.d.ts +7 -2
  120. package/dist/components/effects/DandelionSeedsEffect.d.ts.map +1 -1
  121. package/dist/components/effects/DandelionSeedsEffect.js +19 -9
  122. package/dist/components/effects/DataStreamEffect.d.ts +8 -3
  123. package/dist/components/effects/DataStreamEffect.d.ts.map +1 -1
  124. package/dist/components/effects/DataStreamEffect.js +54 -26
  125. package/dist/components/effects/DnaHelixEffect.d.ts +8 -3
  126. package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -1
  127. package/dist/components/effects/DnaHelixEffect.js +62 -30
  128. package/dist/components/effects/FallingLeavesEffect.d.ts +7 -2
  129. package/dist/components/effects/FallingLeavesEffect.d.ts.map +1 -1
  130. package/dist/components/effects/FallingLeavesEffect.js +19 -9
  131. package/dist/components/effects/FieldLinesEffect.d.ts +8 -3
  132. package/dist/components/effects/FieldLinesEffect.d.ts.map +1 -1
  133. package/dist/components/effects/FieldLinesEffect.js +30 -20
  134. package/dist/components/effects/Fire.d.ts +8 -3
  135. package/dist/components/effects/Fire.d.ts.map +1 -1
  136. package/dist/components/effects/Fire.js +47 -10
  137. package/dist/components/effects/FireflySwarmEffect.d.ts +7 -2
  138. package/dist/components/effects/FireflySwarmEffect.d.ts.map +1 -1
  139. package/dist/components/effects/FireflySwarmEffect.js +19 -9
  140. package/dist/components/effects/Flares.d.ts +10 -3
  141. package/dist/components/effects/Flares.d.ts.map +1 -1
  142. package/dist/components/effects/Flares.js +53 -56
  143. package/dist/components/effects/ForcefieldEffect.d.ts +8 -3
  144. package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -1
  145. package/dist/components/effects/ForcefieldEffect.js +52 -33
  146. package/dist/components/effects/GalaxyEffect.d.ts +7 -2
  147. package/dist/components/effects/GalaxyEffect.d.ts.map +1 -1
  148. package/dist/components/effects/GalaxyEffect.js +19 -9
  149. package/dist/components/effects/HarmonicShellEffect.d.ts +8 -3
  150. package/dist/components/effects/HarmonicShellEffect.d.ts.map +1 -1
  151. package/dist/components/effects/HarmonicShellEffect.js +30 -22
  152. package/dist/components/effects/HologramEffect.d.ts +8 -3
  153. package/dist/components/effects/HologramEffect.d.ts.map +1 -1
  154. package/dist/components/effects/HologramEffect.js +52 -23
  155. package/dist/components/effects/IceCrystalsEffect.d.ts +8 -3
  156. package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -1
  157. package/dist/components/effects/IceCrystalsEffect.js +36 -21
  158. package/dist/components/effects/IceHaloEffect.d.ts +7 -2
  159. package/dist/components/effects/IceHaloEffect.d.ts.map +1 -1
  160. package/dist/components/effects/IceHaloEffect.js +19 -9
  161. package/dist/components/effects/LichtenbergEffect.d.ts +7 -2
  162. package/dist/components/effects/LichtenbergEffect.d.ts.map +1 -1
  163. package/dist/components/effects/LichtenbergEffect.js +19 -9
  164. package/dist/components/effects/LightningEffect.d.ts +8 -3
  165. package/dist/components/effects/LightningEffect.d.ts.map +1 -1
  166. package/dist/components/effects/LightningEffect.js +54 -32
  167. package/dist/components/effects/MoleculesEffect.d.ts +8 -3
  168. package/dist/components/effects/MoleculesEffect.d.ts.map +1 -1
  169. package/dist/components/effects/MoleculesEffect.js +31 -21
  170. package/dist/components/effects/MurmurationEffect.d.ts +7 -2
  171. package/dist/components/effects/MurmurationEffect.d.ts.map +1 -1
  172. package/dist/components/effects/MurmurationEffect.js +19 -9
  173. package/dist/components/effects/NeuralNetworkEffect.d.ts +8 -3
  174. package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -1
  175. package/dist/components/effects/NeuralNetworkEffect.js +66 -33
  176. package/dist/components/effects/OrbEffect.d.ts +8 -3
  177. package/dist/components/effects/OrbEffect.d.ts.map +1 -1
  178. package/dist/components/effects/OrbEffect.js +89 -42
  179. package/dist/components/effects/PlanetaryRingsEffect.d.ts +7 -2
  180. package/dist/components/effects/PlanetaryRingsEffect.d.ts.map +1 -1
  181. package/dist/components/effects/PlanetaryRingsEffect.js +19 -9
  182. package/dist/components/effects/PortalEffect.d.ts +8 -3
  183. package/dist/components/effects/PortalEffect.d.ts.map +1 -1
  184. package/dist/components/effects/PortalEffect.js +41 -25
  185. package/dist/components/effects/ShockwaveEffect.d.ts +7 -2
  186. package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -1
  187. package/dist/components/effects/ShockwaveEffect.js +19 -9
  188. package/dist/components/effects/SmokePlumeEffect.d.ts +8 -3
  189. package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -1
  190. package/dist/components/effects/SmokePlumeEffect.js +30 -20
  191. package/dist/components/effects/SmokeRibbon.d.ts +8 -2
  192. package/dist/components/effects/SmokeRibbon.d.ts.map +1 -1
  193. package/dist/components/effects/SmokeRibbon.js +34 -24
  194. package/dist/components/effects/SmokeRingEffect.d.ts +8 -3
  195. package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -1
  196. package/dist/components/effects/SmokeRingEffect.js +33 -21
  197. package/dist/components/effects/StrangeAttractorEffect.d.ts +8 -3
  198. package/dist/components/effects/StrangeAttractorEffect.d.ts.map +1 -1
  199. package/dist/components/effects/StrangeAttractorEffect.js +30 -20
  200. package/dist/components/effects/VolumetricFogEffect.d.ts +8 -3
  201. package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -1
  202. package/dist/components/effects/VolumetricFogEffect.js +38 -20
  203. package/dist/components/effects/WaterCausticsEffect.d.ts +7 -2
  204. package/dist/components/effects/WaterCausticsEffect.d.ts.map +1 -1
  205. package/dist/components/effects/WaterCausticsEffect.js +19 -9
  206. package/dist/components/effects/index.d.ts +0 -1
  207. package/dist/components/effects/index.d.ts.map +1 -1
  208. package/dist/components/effects/index.js +0 -1
  209. package/dist/components/index.d.ts +0 -1
  210. package/dist/components/index.d.ts.map +1 -1
  211. package/dist/components/index.js +0 -1
  212. package/dist/components/landscape/LandscapeMesh.js +1 -1
  213. package/dist/components/landscape/types.d.ts +1 -1
  214. package/dist/components/landscape/types.d.ts.map +1 -1
  215. package/dist/components/particles/MagneticBottleParticles.d.ts +17 -0
  216. package/dist/components/particles/MagneticBottleParticles.d.ts.map +1 -0
  217. package/dist/components/particles/MagneticBottleParticles.js +618 -0
  218. package/dist/components/particles/ShapeBurstParticles.d.ts +17 -0
  219. package/dist/components/particles/ShapeBurstParticles.d.ts.map +1 -0
  220. package/dist/components/particles/ShapeBurstParticles.js +588 -0
  221. package/dist/components/particles/ShapeFlowParticles.d.ts +17 -0
  222. package/dist/components/particles/ShapeFlowParticles.d.ts.map +1 -0
  223. package/dist/components/particles/ShapeFlowParticles.js +755 -0
  224. package/dist/components/particles/index.d.ts +6 -0
  225. package/dist/components/particles/index.d.ts.map +1 -1
  226. package/dist/components/particles/index.js +3 -0
  227. package/dist/components/terrain/types.d.ts +1 -1
  228. package/dist/components/terrain/types.d.ts.map +1 -1
  229. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +1 -1
  230. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
  231. package/dist/components/volumetricClouds/types.d.ts +1 -1
  232. package/dist/components/volumetricClouds/types.d.ts.map +1 -1
  233. package/dist/components/water/types.d.ts +1 -1
  234. package/dist/components/water/types.d.ts.map +1 -1
  235. package/dist/constants.d.ts +1 -1
  236. package/dist/constants.d.ts.map +1 -1
  237. package/dist/constants.js +1 -1
  238. package/dist/hooks/index.d.ts +2 -0
  239. package/dist/hooks/index.d.ts.map +1 -1
  240. package/dist/hooks/index.js +1 -0
  241. package/dist/hooks/useConfigDriver.d.ts +22 -0
  242. package/dist/hooks/useConfigDriver.d.ts.map +1 -0
  243. package/dist/hooks/useConfigDriver.js +43 -0
  244. package/dist/hooks/useConfigLive.d.ts +1 -1
  245. package/dist/hooks/useConfigLive.d.ts.map +1 -1
  246. package/dist/hooks/useLandscapeMaps.d.ts +1 -1
  247. package/dist/hooks/useLandscapeMaps.d.ts.map +1 -1
  248. package/dist/hooks/useOceanMaterial.d.ts +1 -1
  249. package/dist/hooks/useThunder.d.ts +1 -1
  250. package/dist/index.d.ts +1 -2
  251. package/dist/index.d.ts.map +1 -1
  252. package/dist/index.js +1 -2
  253. package/dist/interactions/index.d.ts +2 -1
  254. package/dist/interactions/index.d.ts.map +1 -1
  255. package/dist/interactions/index.js +1 -1
  256. package/dist/interactions/runner.d.ts +18 -3
  257. package/dist/interactions/runner.d.ts.map +1 -1
  258. package/dist/interactions/runner.js +25 -2
  259. package/dist/operations/catalogue/curlSmoke.d.ts +3 -0
  260. package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -0
  261. package/dist/operations/catalogue/curlSmoke.js +178 -0
  262. package/dist/operations/catalogue/displayImage.d.ts.map +1 -1
  263. package/dist/operations/catalogue/displayImage.js +1 -0
  264. package/dist/operations/catalogue/dissolve.d.ts +3 -0
  265. package/dist/operations/catalogue/dissolve.d.ts.map +1 -0
  266. package/dist/operations/catalogue/dissolve.js +57 -0
  267. package/dist/operations/catalogue/emberAsh.d.ts +3 -0
  268. package/dist/operations/catalogue/emberAsh.d.ts.map +1 -0
  269. package/dist/operations/catalogue/emberAsh.js +171 -0
  270. package/dist/operations/catalogue/fade.d.ts.map +1 -1
  271. package/dist/operations/catalogue/fade.js +1 -0
  272. package/dist/operations/catalogue/flip.d.ts +3 -0
  273. package/dist/operations/catalogue/flip.d.ts.map +1 -0
  274. package/dist/operations/catalogue/flip.js +69 -0
  275. package/dist/operations/catalogue/flock.d.ts +3 -0
  276. package/dist/operations/catalogue/flock.d.ts.map +1 -0
  277. package/dist/operations/catalogue/flock.js +163 -0
  278. package/dist/operations/catalogue/focus.d.ts.map +1 -1
  279. package/dist/operations/catalogue/focus.js +1 -0
  280. package/dist/operations/catalogue/frame.d.ts +3 -0
  281. package/dist/operations/catalogue/frame.d.ts.map +1 -0
  282. package/dist/operations/catalogue/frame.js +44 -0
  283. package/dist/operations/catalogue/frost.d.ts +3 -0
  284. package/dist/operations/catalogue/frost.d.ts.map +1 -0
  285. package/dist/operations/catalogue/frost.js +111 -0
  286. package/dist/operations/catalogue/fxInstances.d.ts +21 -0
  287. package/dist/operations/catalogue/fxInstances.d.ts.map +1 -0
  288. package/dist/operations/catalogue/fxInstances.js +47 -0
  289. package/dist/operations/catalogue/fxPoints.d.ts +22 -0
  290. package/dist/operations/catalogue/fxPoints.d.ts.map +1 -0
  291. package/dist/operations/catalogue/fxPoints.js +70 -0
  292. package/dist/operations/catalogue/glow.d.ts.map +1 -1
  293. package/dist/operations/catalogue/glow.js +2 -1
  294. package/dist/operations/catalogue/heatCracks.d.ts +3 -0
  295. package/dist/operations/catalogue/heatCracks.d.ts.map +1 -0
  296. package/dist/operations/catalogue/heatCracks.js +134 -0
  297. package/dist/operations/catalogue/hologram.d.ts +3 -0
  298. package/dist/operations/catalogue/hologram.d.ts.map +1 -0
  299. package/dist/operations/catalogue/hologram.js +118 -0
  300. package/dist/operations/catalogue/inkBloom.d.ts +3 -0
  301. package/dist/operations/catalogue/inkBloom.d.ts.map +1 -0
  302. package/dist/operations/catalogue/inkBloom.js +156 -0
  303. package/dist/operations/catalogue/ivy.d.ts +13 -0
  304. package/dist/operations/catalogue/ivy.d.ts.map +1 -0
  305. package/dist/operations/catalogue/ivy.js +469 -0
  306. package/dist/operations/catalogue/jelly.d.ts +3 -0
  307. package/dist/operations/catalogue/jelly.d.ts.map +1 -0
  308. package/dist/operations/catalogue/jelly.js +50 -0
  309. package/dist/operations/catalogue/kintsugi.d.ts +3 -0
  310. package/dist/operations/catalogue/kintsugi.d.ts.map +1 -0
  311. package/dist/operations/catalogue/kintsugi.js +173 -0
  312. package/dist/operations/catalogue/lidarScan.d.ts +3 -0
  313. package/dist/operations/catalogue/lidarScan.d.ts.map +1 -0
  314. package/dist/operations/catalogue/lidarScan.js +240 -0
  315. package/dist/operations/catalogue/liquidMetal.d.ts +3 -0
  316. package/dist/operations/catalogue/liquidMetal.d.ts.map +1 -0
  317. package/dist/operations/catalogue/liquidMetal.js +122 -0
  318. package/dist/operations/catalogue/metalize.d.ts +3 -0
  319. package/dist/operations/catalogue/metalize.d.ts.map +1 -0
  320. package/dist/operations/catalogue/metalize.js +135 -0
  321. package/dist/operations/catalogue/moveToFront.d.ts.map +1 -1
  322. package/dist/operations/catalogue/moveToFront.js +1 -0
  323. package/dist/operations/catalogue/orbit.d.ts +3 -0
  324. package/dist/operations/catalogue/orbit.d.ts.map +1 -0
  325. package/dist/operations/catalogue/orbit.js +29 -0
  326. package/dist/operations/catalogue/particleSwarm.d.ts +3 -0
  327. package/dist/operations/catalogue/particleSwarm.d.ts.map +1 -0
  328. package/dist/operations/catalogue/particleSwarm.js +138 -0
  329. package/dist/operations/catalogue/petalPeel.d.ts +3 -0
  330. package/dist/operations/catalogue/petalPeel.d.ts.map +1 -0
  331. package/dist/operations/catalogue/petalPeel.js +137 -0
  332. package/dist/operations/catalogue/petrify.d.ts +3 -0
  333. package/dist/operations/catalogue/petrify.d.ts.map +1 -0
  334. package/dist/operations/catalogue/petrify.js +94 -0
  335. package/dist/operations/catalogue/portal.d.ts +3 -0
  336. package/dist/operations/catalogue/portal.d.ts.map +1 -0
  337. package/dist/operations/catalogue/portal.js +224 -0
  338. package/dist/operations/catalogue/print3d.d.ts +3 -0
  339. package/dist/operations/catalogue/print3d.d.ts.map +1 -0
  340. package/dist/operations/catalogue/print3d.js +275 -0
  341. package/dist/operations/catalogue/rainBeads.d.ts +3 -0
  342. package/dist/operations/catalogue/rainBeads.d.ts.map +1 -0
  343. package/dist/operations/catalogue/rainBeads.js +223 -0
  344. package/dist/operations/catalogue/restPose.d.ts +21 -0
  345. package/dist/operations/catalogue/restPose.d.ts.map +1 -0
  346. package/dist/operations/catalogue/restPose.js +55 -0
  347. package/dist/operations/catalogue/rimLight.d.ts +3 -0
  348. package/dist/operations/catalogue/rimLight.d.ts.map +1 -0
  349. package/dist/operations/catalogue/rimLight.js +72 -0
  350. package/dist/operations/catalogue/sandErosion.d.ts +3 -0
  351. package/dist/operations/catalogue/sandErosion.d.ts.map +1 -0
  352. package/dist/operations/catalogue/sandErosion.js +167 -0
  353. package/dist/operations/catalogue/shaderLayers.d.ts +74 -0
  354. package/dist/operations/catalogue/shaderLayers.d.ts.map +1 -0
  355. package/dist/operations/catalogue/shaderLayers.js +322 -0
  356. package/dist/operations/catalogue/shatter.d.ts +3 -0
  357. package/dist/operations/catalogue/shatter.d.ts.map +1 -0
  358. package/dist/operations/catalogue/shatter.js +267 -0
  359. package/dist/operations/catalogue/silkDrape.d.ts +3 -0
  360. package/dist/operations/catalogue/silkDrape.d.ts.map +1 -0
  361. package/dist/operations/catalogue/silkDrape.js +340 -0
  362. package/dist/operations/catalogue/spin.d.ts +3 -0
  363. package/dist/operations/catalogue/spin.d.ts.map +1 -0
  364. package/dist/operations/catalogue/spin.js +42 -0
  365. package/dist/operations/catalogue/surfaceSample.d.ts +17 -0
  366. package/dist/operations/catalogue/surfaceSample.d.ts.map +1 -0
  367. package/dist/operations/catalogue/surfaceSample.js +187 -0
  368. package/dist/operations/catalogue/swirl.d.ts +3 -0
  369. package/dist/operations/catalogue/swirl.d.ts.map +1 -0
  370. package/dist/operations/catalogue/swirl.js +69 -0
  371. package/dist/operations/catalogue/teleport.d.ts +3 -0
  372. package/dist/operations/catalogue/teleport.d.ts.map +1 -0
  373. package/dist/operations/catalogue/teleport.js +213 -0
  374. package/dist/operations/catalogue/transitionField.d.ts +124 -0
  375. package/dist/operations/catalogue/transitionField.d.ts.map +1 -0
  376. package/dist/operations/catalogue/transitionField.js +278 -0
  377. package/dist/operations/catalogue/unweave.d.ts +3 -0
  378. package/dist/operations/catalogue/unweave.d.ts.map +1 -0
  379. package/dist/operations/catalogue/unweave.js +233 -0
  380. package/dist/operations/catalogue/visibility.d.ts.map +1 -1
  381. package/dist/operations/catalogue/visibility.js +1 -0
  382. package/dist/operations/catalogue/voxelize.d.ts +3 -0
  383. package/dist/operations/catalogue/voxelize.d.ts.map +1 -0
  384. package/dist/operations/catalogue/voxelize.js +148 -0
  385. package/dist/operations/catalogue/warmup.d.ts +22 -0
  386. package/dist/operations/catalogue/warmup.d.ts.map +1 -0
  387. package/dist/operations/catalogue/warmup.js +106 -0
  388. package/dist/operations/catalogue/zoom.d.ts.map +1 -1
  389. package/dist/operations/catalogue/zoom.js +1 -0
  390. package/dist/operations/index.d.ts +4 -2
  391. package/dist/operations/index.d.ts.map +1 -1
  392. package/dist/operations/index.js +4 -2
  393. package/dist/operations/objectEffects.d.ts +46 -0
  394. package/dist/operations/objectEffects.d.ts.map +1 -0
  395. package/dist/operations/objectEffects.js +136 -0
  396. package/dist/operations/registry.d.ts +7 -2
  397. package/dist/operations/registry.d.ts.map +1 -1
  398. package/dist/operations/registry.js +45 -3
  399. package/dist/operations/runtime.d.ts +40 -2
  400. package/dist/operations/runtime.d.ts.map +1 -1
  401. package/dist/operations/runtime.js +164 -8
  402. package/dist/operations/types.d.ts +29 -3
  403. package/dist/operations/types.d.ts.map +1 -1
  404. package/dist/operations/types.js +6 -0
  405. package/dist/operations/useObjectEffectLayers.d.ts +4 -0
  406. package/dist/operations/useObjectEffectLayers.d.ts.map +1 -0
  407. package/dist/operations/useObjectEffectLayers.js +42 -0
  408. package/dist/operations/useOperationsRuntime.d.ts.map +1 -1
  409. package/dist/operations/useOperationsRuntime.js +42 -4
  410. package/dist/presets/landscapePresets.d.ts +1 -1
  411. package/dist/presets/landscapePresets.d.ts.map +1 -1
  412. package/dist/presets/landscapePresets.js +1 -1
  413. package/dist/presets/landscapeTypes.d.ts +1 -1
  414. package/dist/presets/landscapeTypes.d.ts.map +1 -1
  415. package/dist/presets/landscapeTypes.js +1 -1
  416. package/dist/presets/oceanSurfacePresets.d.ts +1 -1
  417. package/dist/presets/terrainPresets.d.ts +1 -1
  418. package/dist/presets/terrainPresets.d.ts.map +1 -1
  419. package/dist/presets/volumetricCloudPresets.d.ts +1 -1
  420. package/dist/types/cloudConfigs.d.ts +2 -309
  421. package/dist/types/cloudConfigs.d.ts.map +1 -1
  422. package/dist/types/cloudConfigs.js +2 -339
  423. package/dist/types/index.d.ts +8 -8
  424. package/dist/types/index.d.ts.map +1 -1
  425. package/dist/types/index.js +4 -4
  426. package/dist/types/landscapeConfigs.d.ts +2 -217
  427. package/dist/types/landscapeConfigs.d.ts.map +1 -1
  428. package/dist/types/landscapeConfigs.js +2 -256
  429. package/dist/types/oceanConfigs.d.ts +2 -289
  430. package/dist/types/oceanConfigs.d.ts.map +1 -1
  431. package/dist/types/oceanConfigs.js +2 -380
  432. package/dist/types/terrainConfigs.d.ts +2 -250
  433. package/dist/types/terrainConfigs.d.ts.map +1 -1
  434. package/dist/types/terrainConfigs.js +2 -292
  435. package/dist/utils/cloudUniforms.d.ts +1 -1
  436. package/dist/utils/configAnimations.d.ts +6 -0
  437. package/dist/utils/configAnimations.d.ts.map +1 -1
  438. package/dist/utils/configAnimations.js +14 -0
  439. package/dist/utils/gridConfig.d.ts +19 -0
  440. package/dist/utils/gridConfig.d.ts.map +1 -0
  441. package/dist/utils/gridConfig.js +52 -0
  442. package/dist/utils/handleCloudsAnimations.d.ts +1 -1
  443. package/dist/utils/handleCloudsAnimations.js +1 -1
  444. package/dist/utils/hasHoverAnimation.d.ts.map +1 -1
  445. package/dist/utils/hasHoverAnimation.js +0 -2
  446. package/dist/utils/landscapeUniforms.d.ts +1 -1
  447. package/dist/utils/landscapeUniforms.d.ts.map +1 -1
  448. package/dist/utils/oceanUniforms.d.ts +1 -1
  449. package/dist/utils/particleShape.d.ts +33 -0
  450. package/dist/utils/particleShape.d.ts.map +1 -0
  451. package/dist/utils/particleShape.js +207 -0
  452. package/dist/utils/particleTrails.d.ts.map +1 -1
  453. package/dist/utils/particleTrails.js +29 -14
  454. package/dist/utils/terrainUniforms.d.ts +1 -1
  455. package/dist/utils/terrainUniforms.d.ts.map +1 -1
  456. package/package.json +2 -2
@@ -1,10 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useMemo, useRef } from 'react';
2
+ import { useEffect, useMemo, useRef, useCallback, useLayoutEffect } from 'react';
3
3
  import * as THREE from 'three';
4
4
  import { useFrame } from '@react-three/fiber';
5
5
  import { useObjectReady } from '../hooks/useObjectReady.js';
6
6
  import { useGridSurface } from '../hooks/useGridSurface.js';
7
- import { WallpaperGridMaterial } from '@3driseai/3drise-core';
7
+ import { useConfigDriver } from '../hooks/useConfigDriver.js';
8
+ import { withConfigDefaults } from '../utils/configAnimations.js';
9
+ import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
10
+ import { WallpaperGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
8
11
  // Side-effect import registers <wallpaperGridMaterial> via extend().
9
12
  void WallpaperGridMaterial;
10
13
  /** WallpaperGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
@@ -38,124 +41,6 @@ export const defaultWallpaperGridConfig = {
38
41
  reveal: 1,
39
42
  revealDuration: 0,
40
43
  };
41
- const gridFragHeader = /* glsl */ `
42
- precision highp float;
43
-
44
- uniform float u_time;
45
- uniform float u_cellSize;
46
- uniform float u_lineWidth;
47
- uniform float u_sectionSize;
48
- uniform float u_sectionWidth;
49
- uniform vec3 u_lineColor;
50
- uniform vec3 u_sectionColor;
51
- uniform vec3 u_cellColor;
52
- uniform vec3 u_glowColor;
53
- uniform vec3 u_bgColor;
54
- uniform float u_bgOpacity;
55
- uniform float u_lineMode;
56
- uniform float u_cellMode;
57
- uniform float u_animSpeed;
58
- uniform float u_animScale;
59
- uniform float u_animIntensity;
60
- uniform float u_fadeDistance;
61
- uniform float u_fadeStrength;
62
- uniform vec2 u_focus;
63
- uniform float u_reveal;
64
-
65
- varying vec2 vGridPos;
66
-
67
- float lineAt(float c, float width, float fp){
68
- float d = abs(fract(c - 0.5) - 0.5);
69
- return 1.0 - clamp(d / max(fp * max(width, 0.05), 1e-6), 0.0, 1.0);
70
- }
71
- `;
72
- const gridCommon = /* glsl */ `
73
- const float PI = 3.14159265359;
74
- const float TAU = 6.28318530718;
75
-
76
- float hash21(vec2 p){
77
- p = fract(p * vec2(123.34, 456.21));
78
- p += dot(p, p + 45.32);
79
- return fract(p.x * p.y);
80
- }
81
- `;
82
- const gridTail = /* glsl */ `
83
- // ---- line animation --------------------------------------------------
84
- float lineAnim = 1.0;
85
- if (u_lineMode > 0.5){
86
- if (u_lineMode < 1.5){
87
- lineAnim = 0.5 + 0.5 * sin(cellDist * u_animScale - t);
88
- } else if (u_lineMode < 2.5){
89
- lineAnim = 0.5 + 0.5 * sin(flowCoord * u_animScale - t);
90
- } else if (u_lineMode < 3.5){
91
- float s = fract(scanCoord * 0.05 * u_animScale - t * 0.15);
92
- lineAnim = 0.25 + smoothstep(0.0, 0.15, s) * (1.0 - smoothstep(0.15, 0.35, s));
93
- } else {
94
- lineAnim = 0.5 + 0.5 * sin(t);
95
- }
96
- }
97
- lineAnim = mix(1.0, lineAnim, u_animIntensity);
98
-
99
- // ---- cell fill -------------------------------------------------------
100
- float cell = 0.0;
101
- if (u_cellMode > 0.5){
102
- if (u_cellMode < 1.5){
103
- cell = 0.5 + 0.5 * sin(flowCoord * 0.5 * u_animScale - t);
104
- } else if (u_cellMode < 2.5){
105
- cell = 0.5 + 0.5 * sin(t * (0.6 + cellH) + cellH * TAU);
106
- } else if (u_cellMode < 3.5){
107
- cell = smoothstep(0.6, 1.0, sin(cellDist * u_animScale - t));
108
- } else {
109
- cell = step(0.5, cellH) * (0.5 + 0.5 * sin(t));
110
- }
111
- }
112
- cell *= u_animIntensity * edgeKeep;
113
-
114
- float tone = step(0.55, cellH);
115
-
116
- vec3 col = u_bgColor * u_bgOpacity;
117
- float a = u_bgOpacity;
118
-
119
- col += mix(u_cellColor, u_cellColor * 2.2, tone) * cell;
120
- a = max(a, cell * 0.9);
121
- float linesI = lines * lineAnim;
122
- col += u_lineColor * linesI; a = max(a, linesI);
123
- float accentI = accent * lineAnim;
124
- col += u_sectionColor * accentI; a = max(a, accentI);
125
- col += u_glowColor * (linesI * 0.2 + cell * 0.35) * u_animIntensity;
126
-
127
- col = col * regionMask + extraCol;
128
- a = max(a * regionMask, extraA);
129
-
130
- float fade = 1.0 - smoothstep(1.0 - u_fadeStrength, 1.0, fadeR);
131
- col *= fade;
132
- a *= fade;
133
-
134
- // ---- reveal ----------------------------------------------------------
135
- // The build boundary sweeps outward from the focus point with a bright
136
- // leading edge, so the grid reads as assembling itself.
137
- if (u_reveal < 0.999){
138
- float rd = length(vGridPos - u_focus) / max(u_fadeDistance, 1e-4);
139
- float edge = u_reveal * 1.1;
140
- float mask = 1.0 - smoothstep(edge - 0.05, edge, rd);
141
- float front = mask * smoothstep(edge - 0.22, edge - 0.05, rd);
142
- col = col * mask + u_glowColor * front * (a * 1.8 + 0.08);
143
- a = max(a * mask, front * 0.10);
144
- }
145
-
146
- if (a < 0.002) discard;
147
- gl_FragColor = vec4(col, a);
148
- }
149
- `;
150
- const gridVertexHead = /* glsl */ `
151
- uniform float u_time;
152
- uniform float u_cellSize;
153
- uniform float u_displace;
154
- uniform float u_animSpeed;
155
- uniform float u_animScale;
156
-
157
- varying vec2 vGridPos;
158
- `;
159
44
  // ---------------------------------------------------------------------------
160
45
  // The 17 wallpaper groups (Farris, "Creating Symmetry").
161
46
  // Each group is listed by its ITA general positions in lattice coordinates:
@@ -363,29 +248,6 @@ function wallpaperRms(tab, wave, sk, sre, sim) {
363
248
  sum += sre[s] * sre[s] + sim[s] * sim[s];
364
249
  return Math.sqrt(sum * 0.5);
365
250
  }
366
- function createExtraUniforms() {
367
- return {
368
- u_wave: { value: new Float32Array(12) },
369
- u_RA: { value: new Float32Array(48) },
370
- u_TA: { value: new Float32Array(24) },
371
- u_countA: { value: 1 },
372
- u_basisA: { value: new Float32Array([1, 0, 0, 1]) },
373
- u_normA: { value: 1 },
374
- u_axA: { value: new Float32Array(24) },
375
- u_axKA: { value: new Float32Array(18) },
376
- u_axNA: { value: 0 },
377
- u_RB: { value: new Float32Array(48) },
378
- u_TB: { value: new Float32Array(24) },
379
- u_countB: { value: 1 },
380
- u_basisB: { value: new Float32Array([1, 0, 0, 1]) },
381
- u_normB: { value: 1 },
382
- u_axB: { value: new Float32Array(24) },
383
- u_axKB: { value: new Float32Array(18) },
384
- u_axNB: { value: 0 },
385
- u_mix: { value: 0 },
386
- u_mixGain: { value: 1 },
387
- };
388
- }
389
251
  function createRuntime(u, renderer, c) {
390
252
  const tables = [];
391
253
  for (let i = 0; i < 17; i++)
@@ -460,80 +322,41 @@ function updateRuntime(rt, u, c, dt, renderer) {
460
322
  function disposeRuntime(rt) {
461
323
  rt.tables.length = 0;
462
324
  }
463
- // ---------------------------------------------------------------------------
464
- // Farris' recipe: a lattice-periodic motif m(q) summed over the coset
465
- // representatives g of a wallpaper group, F(p) = sum_g m(g.q), q = B^-1 p.
466
- // For any h in the group, {g h} runs over the same cosets, and m ignores
467
- // lattice translations, so F(h.p) = F(p) exactly: the picture has precisely
468
- // the group's mirrors, glides and rotation centres, and tiles seamlessly.
469
- // Level sets of F are the lines; its value bands are the cells.
470
- // ---------------------------------------------------------------------------
471
- const wallpaperField = /* glsl */ `
472
- uniform vec2 u_wave[6];
473
- uniform mat2 u_RA[12];
474
- uniform vec2 u_TA[12];
475
- uniform float u_countA;
476
- uniform mat2 u_basisA;
477
- uniform float u_normA;
478
- uniform mat2 u_RB[12];
479
- uniform vec2 u_TB[12];
480
- uniform float u_countB;
481
- uniform mat2 u_basisB;
482
- uniform float u_normB;
483
- uniform float u_mix;
484
- uniform float u_mixGain;
485
-
486
- float wpMotif(vec2 q){
487
- vec2 a = TAU * q;
488
- return u_wave[0].x * cos(dot(a, vec2(1.0, 1.0)) + u_wave[0].y)
489
- + u_wave[1].x * cos(dot(a, vec2(2.0, 0.0)) + u_wave[1].y)
490
- + u_wave[2].x * cos(dot(a, vec2(1.0, -2.0)) + u_wave[2].y)
491
- + u_wave[3].x * cos(dot(a, vec2(2.0, 1.0)) + u_wave[3].y)
492
- + u_wave[4].x * cos(dot(a, vec2(3.0, 1.0)) + u_wave[4].y)
493
- + u_wave[5].x * cos(dot(a, vec2(1.0, 3.0)) + u_wave[5].y);
494
- }
495
-
496
- float wpSym(vec2 p, mat2 Bi, mat2 R[12], vec2 T[12], float n){
497
- vec2 q = Bi * p;
498
- q -= floor(q);
499
- float s = 0.0;
500
- for (int i = 0; i < 12; i++){
501
- if (float(i) >= n) break;
502
- s += wpMotif(R[i] * q + T[i]);
503
- }
504
- return s;
505
- }
506
-
507
- // unit-RMS field, crossfaded between group A and group B
508
- float wpField(vec2 p){
509
- float f = wpSym(p, u_basisA, u_RA, u_TA, u_countA) * u_normA;
510
- if (u_mix > 0.001){
511
- float g = wpSym(p, u_basisB, u_RB, u_TB, u_countB) * u_normB;
512
- f = mix(f, g, u_mix) * u_mixGain;
513
- }
514
- return f;
515
- }
516
- `;
325
+ /** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
326
+ const VARIANT = ['group', 'cycleTime', 'motif', 'levels'];
327
+ /** No computed uniforms: every knob maps straight to its u_<key>. */
328
+ const DERIVE = {};
329
+ /** Knobs that rebuild the plane or pick a mode: they change on commit, never through the live path. */
330
+ const STRUCTURAL = [...GRID_STRUCTURAL, 'group', 'levels'];
331
+ /** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
332
+ const ANIMATABLE = new Set((GRIDS_ANIMATABLE.wallpaperGrid ?? []).map((p) => p.value));
517
333
  /**
518
334
  * Wallpaper-group kaleidoscope: a drifting lattice-periodic Fourier motif summed over the coset representatives of one of the 17 plane crystallographic groups. The runtime builds the group tables and crossfades from group to group.
519
335
  */
520
- export function WallpaperGrid({ config = defaultWallpaperGridConfig, groupProps, onObjectReady, onObjectDispose }) {
336
+ export function WallpaperGrid({ config = defaultWallpaperGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
521
337
  const matRef = useRef(null);
522
338
  const rootRef = useRef(null);
523
339
  const meshRef = useRef(null);
524
340
  useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
525
- const { cellSize, size, segments, flat, lineMode, cellMode, lineWidth, sectionSize, sectionWidth, animSpeed, animScale, animIntensity, fadeDistance, fadeStrength, displace, group, cycleTime, motif, levels, lineColor, sectionColor, cellColor, glowColor, bgColor, bgOpacity, followMouse, reveal, revealDuration, } = config;
341
+ // The committed config over this grid's defaults: every knob has a value to render
342
+ // and for a keyframe or pointer binding to start from.
343
+ const base = useMemo(() => withConfigDefaults(defaultWallpaperGridConfig, config), [config]);
344
+ const { cellSize, size, segments, flat, displace, followMouse, reveal, revealDuration } = base;
526
345
  // the motif has up to ~3 waves per unit cell, so 16 vertices per cell keep the displaced relief smooth
527
346
  const segs = segments ?? (displace > 0 ? Math.min(512, Math.max(96, Math.ceil(size / Math.max(cellSize, 1e-4)) * 16)) : 1);
528
- const fade = fadeDistance ?? size * 0.5;
529
- const colors = useMemo(() => ({
530
- line: new THREE.Color(lineColor),
531
- section: new THREE.Color(sectionColor),
532
- cell: new THREE.Color(cellColor),
533
- glow: new THREE.Color(glowColor),
534
- bg: new THREE.Color(bgColor),
535
- }), [lineColor, sectionColor, cellColor, glowColor, bgColor]);
536
347
  useGridSurface(matRef, meshRef, { followMouse, reveal, revealDuration });
348
+ // One push point for every uniform the config owns: the committed config when the
349
+ // material mounts or the config commits, the merged one while anything overrides it.
350
+ const baseRef = useRef(base);
351
+ baseRef.current = base;
352
+ const setMaterial = useCallback((m) => {
353
+ matRef.current = m;
354
+ if (m)
355
+ applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
356
+ }, []);
357
+ useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
358
+ const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
359
+ useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
537
360
  // the simulation behind this grid: created on mount, stepped every frame
538
361
  const runtimeRef = useRef(null);
539
362
  useFrame((state, delta) => {
@@ -541,8 +364,8 @@ export function WallpaperGrid({ config = defaultWallpaperGridConfig, groupProps,
541
364
  if (!mat)
542
365
  return;
543
366
  if (!runtimeRef.current)
544
- runtimeRef.current = createRuntime(mat.uniforms, state.gl, config);
545
- updateRuntime(runtimeRef.current, mat.uniforms, config, Math.min(delta, 0.1), state.gl);
367
+ runtimeRef.current = createRuntime(mat.uniforms, state.gl, base);
368
+ updateRuntime(runtimeRef.current, mat.uniforms, base, Math.min(delta, 0.1), state.gl);
546
369
  });
547
370
  useEffect(() => () => {
548
371
  if (runtimeRef.current) {
@@ -550,6 +373,6 @@ export function WallpaperGrid({ config = defaultWallpaperGridConfig, groupProps,
550
373
  runtimeRef.current = null;
551
374
  }
552
375
  }, []);
553
- return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: flat ? [-Math.PI / 2, 0, 0] : [0, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("wallpaperGridMaterial", { ref: matRef, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide, u_cellSize: cellSize, u_lineWidth: lineWidth, u_sectionSize: sectionSize, u_sectionWidth: sectionWidth, u_lineMode: lineMode, u_cellMode: cellMode, u_animSpeed: animSpeed, u_animScale: animScale, u_animIntensity: animIntensity, u_fadeDistance: fade, u_fadeStrength: fadeStrength, u_displace: displace, u_group: group, u_cycleTime: cycleTime, u_motif: motif, u_levels: levels, u_lineColor: colors.line, u_sectionColor: colors.section, u_cellColor: colors.cell, u_glowColor: colors.glow, u_bgColor: colors.bg, u_bgOpacity: bgOpacity }, WallpaperGridMaterial.key)] }) }));
376
+ return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: flat ? [-Math.PI / 2, 0, 0] : [0, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("wallpaperGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, WallpaperGridMaterial.key)] }) }));
554
377
  }
555
378
  export default WallpaperGrid;
@@ -1,10 +1,15 @@
1
1
  import React from "react";
2
- import type { AuraConfig, AnimationOptions } from "@3driseai/3drise-core";
2
+ import type { AuraConfig, AnimationOptions, MouseMoveDomain } from "@3driseai/3drise-core";
3
3
  import type { ObjectReadyProps } from '../../types/objectReady';
4
- interface AuraEffectProps extends ObjectReadyProps {
4
+ export interface AuraEffectProps extends ObjectReadyProps {
5
5
  boundingRadius: number;
6
6
  config: AuraConfig;
7
- animations?: AnimationOptions[];
7
+ /** Scene object id of a standalone effect: the live-edit handle is found by it. */
8
+ id?: string;
9
+ /** Keyframes on this effect's config knobs (animations.effect.animations). */
10
+ keyframes?: AnimationOptions[];
11
+ /** Pointer bindings on this effect's config knobs (mouseMove.effect). */
12
+ mouseMove?: MouseMoveDomain;
8
13
  }
9
14
  declare const AuraEffect: React.FC<AuraEffectProps>;
10
15
  export default AuraEffect;
@@ -1 +1 @@
1
- {"version":3,"file":"AuraEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/AuraEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,UAAU,eAAgB,SAAQ,gBAAgB;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAgFD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA6CzC,CAAC;AACF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"AuraEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/AuraEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAyGD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAkDzC,CAAC;AACF,eAAe,UAAU,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useRef, useMemo } from 'react';
2
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
3
3
  import { useFrame } from '@react-three/fiber';
4
4
  import * as THREE from 'three';
5
- import { applyGenerativeAnimations } from '../../utils/handleGenerativeEffectsAnimations.js';
5
+ import { withConfigDefaults } from '../../utils/configAnimations.js';
6
+ import { DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from "@3driseai/3drise-core";
6
7
  import { useObjectReady } from '../../hooks/useObjectReady.js';
8
+ import { useConfigDriver } from '../../hooks/useConfigDriver.js';
7
9
  const vertexShader = /* glsl */ `
8
10
  varying vec3 vNormal;
9
11
  varying vec3 vViewDir;
@@ -21,6 +23,7 @@ const fragmentShader = /* glsl */ `
21
23
  uniform float u_time;
22
24
  uniform float uFresnelPower;
23
25
  uniform float uPulseSpeed;
26
+ uniform float uPulsePhase; // integrated on the CPU: pulse speed changes never jump
24
27
  uniform float uNoiseAmount;
25
28
  uniform float uOpacity;
26
29
  uniform float uLayerIndex; // 0..1
@@ -70,7 +73,7 @@ const fragmentShader = /* glsl */ `
70
73
  float tendrils = smoothstep(0.60, 0.75, f + uLayerIndex * 0.05);
71
74
 
72
75
  // ── Pulse per layer (staggered phase) ──────────────────────────────────
73
- float pulse = 0.65 + 0.35 * sin(u_time * uPulseSpeed + uLayerIndex * 2.1);
76
+ float pulse = 0.65 + 0.35 * sin(uPulsePhase + uLayerIndex * 2.1);
74
77
 
75
78
  // ── Combine ────────────────────────────────────────────────────────────
76
79
  float noiseBlend = (1.0 - uNoiseAmount) + uNoiseAmount * f;
@@ -81,42 +84,64 @@ const fragmentShader = /* glsl */ `
81
84
  gl_FragColor = vec4(col, alpha);
82
85
  }
83
86
  `;
84
- const AuraEffect = ({ boundingRadius, config, animations, onObjectReady, onObjectDispose }) => {
85
- const { layerCount, fresnelPower, pulseSpeed, innerColor, outerColor, noiseAmount, sizeMultiplier, opacity, speed, intensity } = config;
86
- const startValuesCacheRef = useRef({});
87
+ /** Knobs that rebuild the object (layer count, shell radii): commit only, never live. */
88
+ const STRUCTURAL = ['layerCount', 'sizeMultiplier'];
89
+ /** Knobs a keyframe or pointer binding may drive per frame — exactly what applyConfig pushes. */
90
+ const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.aura.map((p) => p.value));
91
+ const _color = new THREE.Color();
92
+ const _hsl = { h: 0, s: 0, l: 0 };
93
+ /** The single push point: every config knob reaches its uniform here. */
94
+ function applyConfig(materials, c) {
95
+ // one base hue, derived from the inner colour
96
+ _color.set(c.innerColor).getHSL(_hsl);
97
+ for (const m of materials) {
98
+ const u = m.uniforms;
99
+ u.uFresnelPower.value = c.fresnelPower;
100
+ u.uPulseSpeed.value = c.pulseSpeed * c.speed;
101
+ u.uNoiseAmount.value = c.noiseAmount;
102
+ u.uOpacity.value = c.opacity;
103
+ u.uBaseHue.value = _hsl.h;
104
+ u.uIntensity.value = c.intensity;
105
+ }
106
+ }
107
+ const AuraEffect = ({ boundingRadius, config, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
108
+ const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.aura, config), [config]);
109
+ const { layerCount, sizeMultiplier } = cfg;
87
110
  const rootRef = useRef(null);
88
111
  useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
89
- // Derive a single base hue from the innerColor
90
- const baseHue = useMemo(() => {
91
- const c = new THREE.Color(innerColor);
92
- const h = { h: 0, s: 0, l: 0 };
93
- c.getHSL(h);
94
- return h.h;
95
- }, [innerColor]);
112
+ // Built once per layer count; every other knob is pushed into the uniforms.
96
113
  const materials = useMemo(() => Array.from({ length: layerCount }, (_, i) => new THREE.ShaderMaterial({
97
114
  vertexShader,
98
115
  fragmentShader,
99
116
  uniforms: {
100
117
  u_time: { value: 0 },
101
- uFresnelPower: { value: fresnelPower },
102
- uPulseSpeed: { value: pulseSpeed * speed },
103
- uNoiseAmount: { value: noiseAmount },
104
- uOpacity: { value: opacity },
118
+ uPulsePhase: { value: 0 },
119
+ uFresnelPower: { value: 3 },
120
+ uPulseSpeed: { value: 1 },
121
+ uNoiseAmount: { value: 0.3 },
122
+ uOpacity: { value: 1 },
105
123
  uLayerIndex: { value: layerCount > 1 ? i / (layerCount - 1) : 0 },
106
- uBaseHue: { value: baseHue },
107
- uIntensity: { value: intensity },
124
+ uBaseHue: { value: 0 },
125
+ uIntensity: { value: 1 },
108
126
  },
109
127
  transparent: true,
110
128
  depthWrite: false,
111
129
  blending: THREE.AdditiveBlending,
112
130
  side: THREE.BackSide,
113
- })), [layerCount, fresnelPower, pulseSpeed, speed, noiseAmount, opacity, baseHue, intensity]);
114
- useFrame((state) => {
131
+ })), [layerCount]);
132
+ useEffect(() => () => materials.forEach((m) => m.dispose()), [materials]);
133
+ const push = useCallback((merged) => {
134
+ applyConfig(materials, merged);
135
+ }, [materials]);
136
+ useLayoutEffect(() => { push(cfg); }, [push, cfg]);
137
+ useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
138
+ useFrame((state, delta) => {
115
139
  const t = state.clock.getElapsedTime();
116
- for (const mat of materials)
140
+ const dt = Math.min(delta, 0.1);
141
+ for (const mat of materials) {
117
142
  mat.uniforms.u_time.value = t;
118
- if (animations?.length) {
119
- applyGenerativeAnimations(materials, animations, startValuesCacheRef.current, Date.now(), false);
143
+ // integrated, so changing the pulse speed never makes the phase jump
144
+ mat.uniforms.uPulsePhase.value += dt * mat.uniforms.uPulseSpeed.value;
120
145
  }
121
146
  });
122
147
  const baseR = boundingRadius * sizeMultiplier;
@@ -1,10 +1,15 @@
1
1
  import React from "react";
2
- import type { AuroraConfig, AnimationOptions } from "@3driseai/3drise-core";
2
+ import type { AuroraConfig, AnimationOptions, MouseMoveDomain } from "@3driseai/3drise-core";
3
3
  import type { ObjectReadyProps } from '../../types/objectReady';
4
- interface AuroraEffectProps extends ObjectReadyProps {
4
+ export interface AuroraEffectProps extends ObjectReadyProps {
5
5
  boundingRadius: number;
6
6
  config: AuroraConfig;
7
- animations?: AnimationOptions[];
7
+ /** Scene object id of a standalone effect: the live-edit handle is found by it. */
8
+ id?: string;
9
+ /** Keyframes on this effect's config knobs (animations.effect.animations). */
10
+ keyframes?: AnimationOptions[];
11
+ /** Pointer bindings on this effect's config knobs (mouseMove.effect). */
12
+ mouseMove?: MouseMoveDomain;
8
13
  }
9
14
  declare const AuroraEffect: React.FC<AuroraEffectProps>;
10
15
  export default AuroraEffect;
@@ -1 +1 @@
1
- {"version":3,"file":"AuroraEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/AuroraEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,UAAU,iBAAkB,SAAQ,gBAAgB;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAqDD,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAwD7C,CAAC;AACF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"AuroraEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/AuroraEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAgFD,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuD7C,CAAC;AACF,eAAe,YAAY,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useRef, useMemo } from 'react';
2
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
3
3
  import { useFrame } from '@react-three/fiber';
4
4
  import * as THREE from 'three';
5
- import { applyGenerativeAnimations } from '../../utils/handleGenerativeEffectsAnimations.js';
5
+ import { withConfigDefaults } from '../../utils/configAnimations.js';
6
+ import { DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from "@3driseai/3drise-core";
6
7
  import { useObjectReady } from '../../hooks/useObjectReady.js';
8
+ import { useConfigDriver } from '../../hooks/useConfigDriver.js';
7
9
  const ribbonVert = /* glsl */ `
8
10
  uniform float u_time;
9
11
  uniform float uPhase;
@@ -54,22 +56,42 @@ const ribbonFrag = /* glsl */ `
54
56
  gl_FragColor = vec4(col, alpha);
55
57
  }
56
58
  `;
57
- const AuroraEffect = ({ boundingRadius, config, animations, onObjectReady, onObjectDispose }) => {
58
- const { ribbonCount, waveAmplitude, colorShift, arcWidth, opacity, speed, intensity } = config;
59
+ /** Knobs that rebuild the object: commit only, never live. */
60
+ const STRUCTURAL = ['ribbonCount'];
61
+ /** Knobs a keyframe or pointer binding may drive per frame — exactly what the push point applies. */
62
+ const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.aurora.map((p) => p.value));
63
+ // Aurora spectrum: green -> teal -> cyan -> violet
64
+ const HUES = [0.33, 0.38, 0.45, 0.50, 0.57, 0.65, 0.72, 0.78, 0.82, 0.87];
65
+ /** The single push point: every config knob reaches its uniform (or the ribbon's placement) here. */
66
+ function applyConfig(ribbons, c, r) {
67
+ const rad = r * 1.35;
68
+ for (const { mesh, mat, i, t } of ribbons) {
69
+ const angle = (t - 0.5) * c.arcWidth * Math.PI; // spread across arc
70
+ // Position ribbon in arc - tilted slightly inward to wrap over the object
71
+ mesh.position.set(Math.sin(angle) * rad, r * 0.55, -Math.cos(angle) * rad);
72
+ mesh.rotation.y = angle; // face inward
73
+ const u = mat.uniforms;
74
+ u.uWaveAmp.value = c.waveAmplitude * r * 0.55;
75
+ u.uHue.value = (((c.colorShift + HUES[i % HUES.length]) % 1) + 1) % 1;
76
+ u.uOpacity.value = c.opacity;
77
+ u.uIntensity.value = c.intensity;
78
+ }
79
+ }
80
+ const AuroraEffect = ({ boundingRadius, config, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
81
+ const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.aurora, config), [config]);
82
+ const { ribbonCount } = cfg;
59
83
  const groupRef = useRef(null);
60
84
  useObjectReady(groupRef, config, onObjectReady, onObjectDispose);
85
+ // the knobs read per frame (speed), from the last merged config
86
+ const cur = useRef(cfg);
87
+ // Built once per ribbon count and host size; everything else is pushed.
61
88
  const ribbons = useMemo(() => {
62
89
  const N = Math.max(3, Math.min(ribbonCount, 10));
63
90
  const r = boundingRadius;
64
91
  const w = r * 0.9;
65
92
  const h = r * 2.2;
66
- const rad = r * 1.35;
67
- // Aurora spectrum: green → teal → cyan → violet
68
- const hues = [0.33, 0.38, 0.45, 0.50, 0.57, 0.65, 0.72, 0.78, 0.82, 0.87];
69
93
  return Array.from({ length: N }, (_, i) => {
70
94
  const t = N === 1 ? 0.5 : i / (N - 1);
71
- const angle = (t - 0.5) * arcWidth * Math.PI; // spread across arc
72
- const hue = (colorShift + hues[i % hues.length]) % 1;
73
95
  const geo = new THREE.PlaneGeometry(w, h, 1, 24);
74
96
  const mat = new THREE.ShaderMaterial({
75
97
  vertexShader: ribbonVert,
@@ -78,36 +100,34 @@ const AuroraEffect = ({ boundingRadius, config, animations, onObjectReady, onObj
78
100
  u_time: { value: 0 },
79
101
  uPhase: { value: i * 1.13 + t * Math.PI * 2 },
80
102
  u_speed: { value: 0.55 + Math.random() * 0.3 },
81
- uWaveAmp: { value: waveAmplitude * r * 0.55 },
82
- uHue: { value: hue },
83
- uOpacity: { value: opacity },
84
- uIntensity: { value: intensity },
103
+ uWaveAmp: { value: 0 },
104
+ uHue: { value: 0 },
105
+ uOpacity: { value: 1 },
106
+ uIntensity: { value: 1 },
85
107
  },
86
108
  transparent: true,
87
109
  depthWrite: false,
88
110
  blending: THREE.AdditiveBlending,
89
111
  side: THREE.DoubleSide,
90
112
  });
91
- // Position ribbon in arc — tilted slightly inward to wrap over the object
92
113
  const mesh = new THREE.Mesh(geo, mat);
93
- mesh.position.set(Math.sin(angle) * rad, r * 0.55, // float above object
94
- -Math.cos(angle) * rad);
95
- mesh.rotation.y = angle; // face inward
96
114
  mesh.rotation.x = 0.08; // slight forward tilt
97
- return { mesh, mat };
115
+ return { mesh, mat, geo, i, t };
98
116
  });
99
- // eslint-disable-next-line react-hooks/exhaustive-deps
100
- }, [ribbonCount, waveAmplitude, colorShift, arcWidth, opacity, intensity, boundingRadius]);
101
- const startValuesCacheRef = useRef({});
117
+ }, [ribbonCount, boundingRadius]);
118
+ useEffect(() => () => ribbons.forEach(({ geo, mat }) => { geo.dispose(); mat.dispose(); }), [ribbons]);
119
+ const push = useCallback((merged) => {
120
+ cur.current = merged;
121
+ applyConfig(ribbons, merged, boundingRadius);
122
+ }, [ribbons, boundingRadius]);
123
+ useLayoutEffect(() => { push(cfg); }, [push, cfg]);
124
+ useConfigDriver({ rootRef: groupRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
102
125
  useFrame((state, delta) => {
103
126
  if (!groupRef.current)
104
127
  return;
105
128
  const t = state.clock.getElapsedTime();
106
129
  ribbons.forEach(({ mat }) => { mat.uniforms.u_time.value = t; });
107
- groupRef.current.rotation.y += delta * speed * 0.06;
108
- if (animations?.length) {
109
- applyGenerativeAnimations(ribbons.map(({ mat }) => mat), animations, startValuesCacheRef.current, Date.now(), false);
110
- }
130
+ groupRef.current.rotation.y += delta * cur.current.speed * 0.06;
111
131
  });
112
132
  return (_jsx("group", { ref: groupRef, children: ribbons.map(({ mesh }, i) => (_jsx("primitive", { object: mesh }, i))) }));
113
133
  };
@@ -1,10 +1,15 @@
1
- import React from 'react';
2
- import type { AnimationOptions, BlackHoleConfig } from '@3driseai/3drise-core';
1
+ import React from "react";
2
+ import type { BlackHoleConfig, AnimationOptions, MouseMoveDomain } from "@3driseai/3drise-core";
3
3
  import type { ObjectReadyProps } from '../../types/objectReady';
4
4
  export interface BlackHoleEffectProps extends ObjectReadyProps {
5
5
  boundingRadius: number;
6
6
  config: BlackHoleConfig;
7
- animations?: AnimationOptions[];
7
+ /** Scene object id of a standalone effect: the live-edit handle is found by it. */
8
+ id?: string;
9
+ /** Keyframes on this effect's config knobs (animations.effect.animations). */
10
+ keyframes?: AnimationOptions[];
11
+ /** Pointer bindings on this effect's config knobs (mouseMove.effect). */
12
+ mouseMove?: MouseMoveDomain;
8
13
  }
9
14
  declare const BlackHoleEffect: React.FC<BlackHoleEffectProps>;
10
15
  export default BlackHoleEffect;
@@ -1 +1 @@
1
- {"version":3,"file":"BlackHoleEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/BlackHoleEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAG3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AA2PD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA6FnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"BlackHoleEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/BlackHoleEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGhG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAgRD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA4FnD,CAAC;AAEF,eAAe,eAAe,CAAC"}