@3driseai/3drise-viewer 0.1.28 → 0.1.30

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 (804) hide show
  1. package/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
  2. package/dist/animationsV2/ClipPlayer.js +13 -9
  3. package/dist/animationsV2/ClipsRuntime.d.ts +48 -3
  4. package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
  5. package/dist/animationsV2/ClipsRuntime.js +239 -57
  6. package/dist/animationsV2/appliers.d.ts.map +1 -1
  7. package/dist/animationsV2/appliers.js +21 -5
  8. package/dist/animationsV2/clipUtils.js +1 -1
  9. package/dist/animationsV2/index.d.ts +1 -1
  10. package/dist/animationsV2/index.d.ts.map +1 -1
  11. package/dist/animationsV2/normalize.d.ts.map +1 -1
  12. package/dist/animationsV2/normalize.js +7 -3
  13. package/dist/animationsV2/sequenceUtils.d.ts +49 -6
  14. package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
  15. package/dist/animationsV2/sequenceUtils.js +68 -12
  16. package/dist/animationsV2/types.d.ts +28 -12
  17. package/dist/animationsV2/types.d.ts.map +1 -1
  18. package/dist/api/sceneHandle.d.ts +35 -1
  19. package/dist/api/sceneHandle.d.ts.map +1 -1
  20. package/dist/api/sceneHandle.js +88 -17
  21. package/dist/components/AdvancedGrid.d.ts +1 -5
  22. package/dist/components/AdvancedGrid.d.ts.map +1 -1
  23. package/dist/components/AdvancedGrid.js +6 -35
  24. package/dist/components/AnimatedObject.d.ts.map +1 -1
  25. package/dist/components/AnimatedObject.js +9 -4
  26. package/dist/components/ApollonianGrid.d.ts +1 -1
  27. package/dist/components/ApollonianGrid.d.ts.map +1 -1
  28. package/dist/components/ApollonianGrid.js +3 -28
  29. package/dist/components/ChladniGrid.d.ts +1 -1
  30. package/dist/components/ChladniGrid.d.ts.map +1 -1
  31. package/dist/components/ChladniGrid.js +6 -35
  32. package/dist/components/CircuitGrid.d.ts +1 -1
  33. package/dist/components/CircuitGrid.d.ts.map +1 -1
  34. package/dist/components/CircuitGrid.js +6 -34
  35. package/dist/components/ConformalGrid.d.ts +1 -1
  36. package/dist/components/ConformalGrid.d.ts.map +1 -1
  37. package/dist/components/ConformalGrid.js +3 -34
  38. package/dist/components/ContourGrid.d.ts +1 -1
  39. package/dist/components/ContourGrid.d.ts.map +1 -1
  40. package/dist/components/ContourGrid.js +6 -34
  41. package/dist/components/CustomPrimitive.js +1 -1
  42. package/dist/components/EffectsGenerator.d.ts.map +1 -1
  43. package/dist/components/EffectsGenerator.js +43 -38
  44. package/dist/components/EnvironmentObject.d.ts.map +1 -1
  45. package/dist/components/EnvironmentObject.js +9 -7
  46. package/dist/components/FlowNetGrid.d.ts +1 -1
  47. package/dist/components/FlowNetGrid.d.ts.map +1 -1
  48. package/dist/components/FlowNetGrid.js +6 -34
  49. package/dist/components/FractalGrid.d.ts +1 -1
  50. package/dist/components/FractalGrid.d.ts.map +1 -1
  51. package/dist/components/FractalGrid.js +6 -37
  52. package/dist/components/Galaxy.d.ts.map +1 -1
  53. package/dist/components/Galaxy.js +9 -23
  54. package/dist/components/GeometryShape.d.ts.map +1 -1
  55. package/dist/components/GeometryShape.js +22 -2
  56. package/dist/components/GirihGrid.d.ts +1 -1
  57. package/dist/components/GirihGrid.d.ts.map +1 -1
  58. package/dist/components/GirihGrid.js +6 -35
  59. package/dist/components/GravWaveGrid.d.ts +1 -1
  60. package/dist/components/GravWaveGrid.d.ts.map +1 -1
  61. package/dist/components/GravWaveGrid.js +6 -35
  62. package/dist/components/HexGrid.d.ts +1 -5
  63. package/dist/components/HexGrid.d.ts.map +1 -1
  64. package/dist/components/HexGrid.js +6 -36
  65. package/dist/components/HilbertGrid.d.ts +1 -1
  66. package/dist/components/HilbertGrid.d.ts.map +1 -1
  67. package/dist/components/HilbertGrid.js +3 -30
  68. package/dist/components/HyperbolicGrid.d.ts +1 -1
  69. package/dist/components/HyperbolicGrid.d.ts.map +1 -1
  70. package/dist/components/HyperbolicGrid.js +6 -34
  71. package/dist/components/LandObject.d.ts +9 -0
  72. package/dist/components/LandObject.d.ts.map +1 -0
  73. package/dist/components/LandObject.js +15 -0
  74. package/dist/components/LensingGrid.d.ts +1 -1
  75. package/dist/components/LensingGrid.d.ts.map +1 -1
  76. package/dist/components/LensingGrid.js +3 -29
  77. package/dist/components/LightsManager.d.ts.map +1 -1
  78. package/dist/components/LightsManager.js +8 -0
  79. package/dist/components/ModelBoundary.d.ts +2 -0
  80. package/dist/components/ModelBoundary.d.ts.map +1 -1
  81. package/dist/components/ModelBoundary.js +3 -0
  82. package/dist/components/ModelPrimitive.d.ts.map +1 -1
  83. package/dist/components/ModelPrimitive.js +6 -0
  84. package/dist/components/MoireGrid.d.ts +1 -1
  85. package/dist/components/MoireGrid.d.ts.map +1 -1
  86. package/dist/components/MoireGrid.js +6 -35
  87. package/dist/components/MoonDisc.d.ts +11 -0
  88. package/dist/components/MoonDisc.d.ts.map +1 -0
  89. package/dist/components/MoonDisc.js +128 -0
  90. package/dist/components/ObjectNode.d.ts.map +1 -1
  91. package/dist/components/ObjectNode.js +10 -10
  92. package/dist/components/ObjectsRenderer.d.ts.map +1 -1
  93. package/dist/components/ObjectsRenderer.js +7 -5
  94. package/dist/components/OceanBuilder.d.ts.map +1 -1
  95. package/dist/components/OceanBuilder.js +2 -0
  96. package/dist/components/ParastichyGrid.d.ts +1 -1
  97. package/dist/components/ParastichyGrid.d.ts.map +1 -1
  98. package/dist/components/ParastichyGrid.js +3 -30
  99. package/dist/components/ParticlesGenerator.d.ts.map +1 -1
  100. package/dist/components/ParticlesGenerator.js +44 -24
  101. package/dist/components/PhyllotaxisGrid.d.ts +1 -1
  102. package/dist/components/PhyllotaxisGrid.d.ts.map +1 -1
  103. package/dist/components/PhyllotaxisGrid.js +3 -32
  104. package/dist/components/PickVolume.d.ts +17 -0
  105. package/dist/components/PickVolume.d.ts.map +1 -0
  106. package/dist/components/PickVolume.js +20 -0
  107. package/dist/components/ProjectLoader.d.ts +5 -3
  108. package/dist/components/ProjectLoader.d.ts.map +1 -1
  109. package/dist/components/ProjectLoader.js +6 -3
  110. package/dist/components/QuasiGrid.d.ts +1 -1
  111. package/dist/components/QuasiGrid.d.ts.map +1 -1
  112. package/dist/components/QuasiGrid.js +6 -33
  113. package/dist/components/RadarGrid.d.ts +1 -1
  114. package/dist/components/RadarGrid.d.ts.map +1 -1
  115. package/dist/components/RadarGrid.js +6 -34
  116. package/dist/components/ReactionDiffusionGrid.d.ts +1 -1
  117. package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
  118. package/dist/components/ReactionDiffusionGrid.js +6 -35
  119. package/dist/components/SceneBuilder.d.ts +25 -3
  120. package/dist/components/SceneBuilder.d.ts.map +1 -1
  121. package/dist/components/SceneBuilder.js +68 -38
  122. package/dist/components/SkyController.d.ts +25 -1
  123. package/dist/components/SkyController.d.ts.map +1 -1
  124. package/dist/components/SkyController.js +189 -130
  125. package/dist/components/SkyMesh.d.ts.map +1 -1
  126. package/dist/components/SkyMesh.js +26 -1
  127. package/dist/components/SkyStars.d.ts +11 -0
  128. package/dist/components/SkyStars.d.ts.map +1 -0
  129. package/dist/components/SkyStars.js +268 -0
  130. package/dist/components/SkySystem.d.ts +3 -3
  131. package/dist/components/SkySystem.d.ts.map +1 -1
  132. package/dist/components/SkySystem.js +8 -2
  133. package/dist/components/Sun.d.ts +15 -1
  134. package/dist/components/Sun.d.ts.map +1 -1
  135. package/dist/components/Sun.js +64 -3
  136. package/dist/components/SunLight.d.ts +6 -1
  137. package/dist/components/SunLight.d.ts.map +1 -1
  138. package/dist/components/SunLight.js +96 -44
  139. package/dist/components/TerrainBuilder.d.ts.map +1 -1
  140. package/dist/components/TerrainBuilder.js +2 -0
  141. package/dist/components/TextGenerator.d.ts +9 -0
  142. package/dist/components/TextGenerator.d.ts.map +1 -0
  143. package/dist/components/TextGenerator.js +30 -0
  144. package/dist/components/TruchetGrid.d.ts +1 -1
  145. package/dist/components/TruchetGrid.d.ts.map +1 -1
  146. package/dist/components/TruchetGrid.js +3 -30
  147. package/dist/components/VoronoiGrid.d.ts +1 -1
  148. package/dist/components/VoronoiGrid.d.ts.map +1 -1
  149. package/dist/components/VoronoiGrid.js +6 -33
  150. package/dist/components/WallpaperGrid.d.ts +1 -1
  151. package/dist/components/WallpaperGrid.d.ts.map +1 -1
  152. package/dist/components/WallpaperGrid.js +6 -35
  153. package/dist/components/environment/Rain.d.ts +15 -0
  154. package/dist/components/environment/Rain.d.ts.map +1 -0
  155. package/dist/components/environment/Rain.js +110 -0
  156. package/dist/components/environment/Rainbow.d.ts +20 -0
  157. package/dist/components/environment/Rainbow.d.ts.map +1 -0
  158. package/dist/components/environment/Rainbow.js +974 -0
  159. package/dist/components/environment/Sandstorm.d.ts +20 -0
  160. package/dist/components/environment/Sandstorm.d.ts.map +1 -0
  161. package/dist/components/environment/Sandstorm.js +776 -0
  162. package/dist/components/environment/Snow.d.ts +20 -0
  163. package/dist/components/environment/Snow.d.ts.map +1 -0
  164. package/dist/components/environment/Snow.js +609 -0
  165. package/dist/components/environment/Thunderstorm.d.ts +20 -0
  166. package/dist/components/environment/Thunderstorm.d.ts.map +1 -0
  167. package/dist/components/environment/Thunderstorm.js +731 -0
  168. package/dist/components/environment/Tornado.d.ts +20 -0
  169. package/dist/components/environment/Tornado.d.ts.map +1 -0
  170. package/dist/components/environment/Tornado.js +762 -0
  171. package/dist/components/environment/index.d.ts +13 -0
  172. package/dist/components/environment/index.d.ts.map +1 -0
  173. package/dist/components/environment/index.js +7 -0
  174. package/dist/components/index.d.ts +11 -18
  175. package/dist/components/index.d.ts.map +1 -1
  176. package/dist/components/index.js +9 -10
  177. package/dist/components/land/LandPatch.d.ts +15 -0
  178. package/dist/components/land/LandPatch.d.ts.map +1 -0
  179. package/dist/components/land/LandPatch.js +170 -0
  180. package/dist/components/land/index.d.ts +3 -0
  181. package/dist/components/land/index.d.ts.map +1 -0
  182. package/dist/components/land/index.js +1 -0
  183. package/dist/components/particles/BioluminescentWakeParticles.d.ts +5 -0
  184. package/dist/components/particles/BioluminescentWakeParticles.d.ts.map +1 -1
  185. package/dist/components/particles/BioluminescentWakeParticles.js +2 -1
  186. package/dist/components/particles/BrownianDustParticles.d.ts +5 -0
  187. package/dist/components/particles/BrownianDustParticles.d.ts.map +1 -1
  188. package/dist/components/particles/BrownianDustParticles.js +2 -0
  189. package/dist/components/particles/ChladniSandParticles.d.ts +5 -0
  190. package/dist/components/particles/ChladniSandParticles.d.ts.map +1 -1
  191. package/dist/components/particles/ChladniSandParticles.js +2 -1
  192. package/dist/components/particles/ElectronOrbitalsParticles.d.ts +5 -0
  193. package/dist/components/particles/ElectronOrbitalsParticles.d.ts.map +1 -1
  194. package/dist/components/particles/ElectronOrbitalsParticles.js +2 -1
  195. package/dist/components/particles/FaradayPowderParticles.d.ts +5 -0
  196. package/dist/components/particles/FaradayPowderParticles.d.ts.map +1 -1
  197. package/dist/components/particles/FaradayPowderParticles.js +2 -1
  198. package/dist/components/particles/GrinderSparksParticles.d.ts +5 -0
  199. package/dist/components/particles/GrinderSparksParticles.d.ts.map +1 -1
  200. package/dist/components/particles/GrinderSparksParticles.js +2 -1
  201. package/dist/components/particles/MagneticBottleParticles.d.ts +5 -0
  202. package/dist/components/particles/MagneticBottleParticles.d.ts.map +1 -1
  203. package/dist/components/particles/MagneticBottleParticles.js +2 -1
  204. package/dist/components/particles/NeonRainParticles.d.ts +5 -0
  205. package/dist/components/particles/NeonRainParticles.d.ts.map +1 -1
  206. package/dist/components/particles/NeonRainParticles.js +2 -1
  207. package/dist/components/particles/ShapeBurstParticles.d.ts +5 -0
  208. package/dist/components/particles/ShapeBurstParticles.d.ts.map +1 -1
  209. package/dist/components/particles/ShapeBurstParticles.js +2 -1
  210. package/dist/components/particles/ShapeFlowParticles.d.ts +5 -0
  211. package/dist/components/particles/ShapeFlowParticles.d.ts.map +1 -1
  212. package/dist/components/particles/ShapeFlowParticles.js +2 -1
  213. package/dist/components/particles/TidalStreamParticles.d.ts +5 -0
  214. package/dist/components/particles/TidalStreamParticles.d.ts.map +1 -1
  215. package/dist/components/particles/TidalStreamParticles.js +2 -0
  216. package/dist/components/space/Earth.d.ts +16 -0
  217. package/dist/components/space/Earth.d.ts.map +1 -0
  218. package/dist/components/space/Earth.js +75 -0
  219. package/dist/components/space/ShootingStar.d.ts +21 -0
  220. package/dist/components/space/ShootingStar.d.ts.map +1 -0
  221. package/dist/components/space/ShootingStar.js +101 -0
  222. package/dist/components/space/ShootingStars.d.ts +16 -0
  223. package/dist/components/space/ShootingStars.d.ts.map +1 -0
  224. package/dist/components/space/ShootingStars.js +71 -0
  225. package/dist/components/space/SolarSystem.d.ts +16 -0
  226. package/dist/components/space/SolarSystem.d.ts.map +1 -0
  227. package/dist/components/space/SolarSystem.js +141 -0
  228. package/dist/components/space/Stars.d.ts +20 -0
  229. package/dist/components/space/Stars.d.ts.map +1 -0
  230. package/dist/components/space/Stars.js +160 -0
  231. package/dist/components/space/index.d.ts +11 -0
  232. package/dist/components/space/index.d.ts.map +1 -0
  233. package/dist/components/space/index.js +8 -0
  234. package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
  235. package/dist/components/terrain/TerrainSurface.js +27 -3
  236. package/dist/components/terrain/types.d.ts +5 -1
  237. package/dist/components/terrain/types.d.ts.map +1 -1
  238. package/dist/components/text/BurnAwayText.d.ts +15 -0
  239. package/dist/components/text/BurnAwayText.d.ts.map +1 -0
  240. package/dist/components/text/BurnAwayText.js +4 -0
  241. package/dist/components/text/ChalkboardText.d.ts +15 -0
  242. package/dist/components/text/ChalkboardText.d.ts.map +1 -0
  243. package/dist/components/text/ChalkboardText.js +4 -0
  244. package/dist/components/text/ConstellationText.d.ts +15 -0
  245. package/dist/components/text/ConstellationText.d.ts.map +1 -0
  246. package/dist/components/text/ConstellationText.js +4 -0
  247. package/dist/components/text/EmbroideryText.d.ts +15 -0
  248. package/dist/components/text/EmbroideryText.d.ts.map +1 -0
  249. package/dist/components/text/EmbroideryText.js +4 -0
  250. package/dist/components/text/FourierSketchText.d.ts +15 -0
  251. package/dist/components/text/FourierSketchText.d.ts.map +1 -0
  252. package/dist/components/text/FourierSketchText.js +4 -0
  253. package/dist/components/text/FrostGrowthText.d.ts +15 -0
  254. package/dist/components/text/FrostGrowthText.d.ts.map +1 -0
  255. package/dist/components/text/FrostGrowthText.js +4 -0
  256. package/dist/components/text/HandwritingText.d.ts +15 -0
  257. package/dist/components/text/HandwritingText.d.ts.map +1 -0
  258. package/dist/components/text/HandwritingText.js +4 -0
  259. package/dist/components/text/InkBleedText.d.ts +15 -0
  260. package/dist/components/text/InkBleedText.d.ts.map +1 -0
  261. package/dist/components/text/InkBleedText.js +4 -0
  262. package/dist/components/text/LightPaintingText.d.ts +15 -0
  263. package/dist/components/text/LightPaintingText.d.ts.map +1 -0
  264. package/dist/components/text/LightPaintingText.js +4 -0
  265. package/dist/components/text/LiquidMetalText.d.ts +15 -0
  266. package/dist/components/text/LiquidMetalText.d.ts.map +1 -0
  267. package/dist/components/text/LiquidMetalText.js +4 -0
  268. package/dist/components/text/NeonTubeText.d.ts +15 -0
  269. package/dist/components/text/NeonTubeText.d.ts.map +1 -0
  270. package/dist/components/text/NeonTubeText.js +4 -0
  271. package/dist/components/text/PlainText.d.ts +15 -0
  272. package/dist/components/text/PlainText.d.ts.map +1 -0
  273. package/dist/components/text/PlainText.js +4 -0
  274. package/dist/components/text/PlasmaDischargeText.d.ts +15 -0
  275. package/dist/components/text/PlasmaDischargeText.d.ts.map +1 -0
  276. package/dist/components/text/PlasmaDischargeText.js +4 -0
  277. package/dist/components/text/TextObjectView.d.ts +14 -0
  278. package/dist/components/text/TextObjectView.d.ts.map +1 -0
  279. package/dist/components/text/TextObjectView.js +17 -0
  280. package/dist/components/text/engine/fieldkit.d.ts +24 -0
  281. package/dist/components/text/engine/fieldkit.d.ts.map +1 -0
  282. package/dist/components/text/engine/fieldkit.js +201 -0
  283. package/dist/components/text/engine/glyphs.d.ts +19 -0
  284. package/dist/components/text/engine/glyphs.d.ts.map +1 -0
  285. package/dist/components/text/engine/glyphs.js +269 -0
  286. package/dist/components/text/engine/looks/burnAway.d.ts +144 -0
  287. package/dist/components/text/engine/looks/burnAway.d.ts.map +1 -0
  288. package/dist/components/text/engine/looks/burnAway.js +593 -0
  289. package/dist/components/text/engine/looks/chalkboard.d.ts +135 -0
  290. package/dist/components/text/engine/looks/chalkboard.d.ts.map +1 -0
  291. package/dist/components/text/engine/looks/chalkboard.js +426 -0
  292. package/dist/components/text/engine/looks/constellation.d.ts +111 -0
  293. package/dist/components/text/engine/looks/constellation.d.ts.map +1 -0
  294. package/dist/components/text/engine/looks/constellation.js +496 -0
  295. package/dist/components/text/engine/looks/embroidery.d.ts +165 -0
  296. package/dist/components/text/engine/looks/embroidery.d.ts.map +1 -0
  297. package/dist/components/text/engine/looks/embroidery.js +645 -0
  298. package/dist/components/text/engine/looks/frostGrowth.d.ts +109 -0
  299. package/dist/components/text/engine/looks/frostGrowth.d.ts.map +1 -0
  300. package/dist/components/text/engine/looks/frostGrowth.js +727 -0
  301. package/dist/components/text/engine/looks/index.d.ts +2 -0
  302. package/dist/components/text/engine/looks/index.d.ts.map +1 -0
  303. package/dist/components/text/engine/looks/index.js +49 -0
  304. package/dist/components/text/engine/looks/inkBleed.d.ts +103 -0
  305. package/dist/components/text/engine/looks/inkBleed.d.ts.map +1 -0
  306. package/dist/components/text/engine/looks/inkBleed.js +590 -0
  307. package/dist/components/text/engine/looks/lightPainting.d.ts +132 -0
  308. package/dist/components/text/engine/looks/lightPainting.d.ts.map +1 -0
  309. package/dist/components/text/engine/looks/lightPainting.js +567 -0
  310. package/dist/components/text/engine/looks/liquidMetal.d.ts +135 -0
  311. package/dist/components/text/engine/looks/liquidMetal.d.ts.map +1 -0
  312. package/dist/components/text/engine/looks/liquidMetal.js +655 -0
  313. package/dist/components/text/engine/looks/plain.d.ts +146 -0
  314. package/dist/components/text/engine/looks/plain.d.ts.map +1 -0
  315. package/dist/components/text/engine/looks/plain.js +104 -0
  316. package/dist/components/text/engine/looks/plasmaDischarge.d.ts +126 -0
  317. package/dist/components/text/engine/looks/plasmaDischarge.d.ts.map +1 -0
  318. package/dist/components/text/engine/looks/plasmaDischarge.js +763 -0
  319. package/dist/components/text/engine/methods.d.ts +19 -0
  320. package/dist/components/text/engine/methods.d.ts.map +1 -0
  321. package/dist/components/text/engine/methods.js +126 -0
  322. package/dist/components/text/engine/playback.d.ts +40 -0
  323. package/dist/components/text/engine/playback.d.ts.map +1 -0
  324. package/dist/components/text/engine/playback.js +114 -0
  325. package/dist/components/text/engine/ribbon.d.ts +58 -0
  326. package/dist/components/text/engine/ribbon.d.ts.map +1 -0
  327. package/dist/components/text/engine/ribbon.js +250 -0
  328. package/dist/components/text/engine/variants.d.ts +159 -0
  329. package/dist/components/text/engine/variants.d.ts.map +1 -0
  330. package/dist/components/text/engine/variants.js +378 -0
  331. package/dist/components/text/fonts/architects-daughter.outline.d.ts +3 -0
  332. package/dist/components/text/fonts/architects-daughter.outline.d.ts.map +1 -0
  333. package/dist/components/text/fonts/architects-daughter.outline.js +4 -0
  334. package/dist/components/text/fonts/architects-daughter.strokes.d.ts +3 -0
  335. package/dist/components/text/fonts/architects-daughter.strokes.d.ts.map +1 -0
  336. package/dist/components/text/fonts/architects-daughter.strokes.js +4 -0
  337. package/dist/components/text/fonts/bebas-neue.outline.d.ts +3 -0
  338. package/dist/components/text/fonts/bebas-neue.outline.d.ts.map +1 -0
  339. package/dist/components/text/fonts/bebas-neue.outline.js +4 -0
  340. package/dist/components/text/fonts/bebas-neue.strokes.d.ts +3 -0
  341. package/dist/components/text/fonts/bebas-neue.strokes.d.ts.map +1 -0
  342. package/dist/components/text/fonts/bebas-neue.strokes.js +4 -0
  343. package/dist/components/text/fonts/caveat.outline.d.ts +3 -0
  344. package/dist/components/text/fonts/caveat.outline.d.ts.map +1 -0
  345. package/dist/components/text/fonts/caveat.outline.js +4 -0
  346. package/dist/components/text/fonts/caveat.strokes.d.ts +3 -0
  347. package/dist/components/text/fonts/caveat.strokes.d.ts.map +1 -0
  348. package/dist/components/text/fonts/caveat.strokes.js +4 -0
  349. package/dist/components/text/fonts/courgette.outline.d.ts +3 -0
  350. package/dist/components/text/fonts/courgette.outline.d.ts.map +1 -0
  351. package/dist/components/text/fonts/courgette.outline.js +4 -0
  352. package/dist/components/text/fonts/courgette.strokes.d.ts +3 -0
  353. package/dist/components/text/fonts/courgette.strokes.d.ts.map +1 -0
  354. package/dist/components/text/fonts/courgette.strokes.js +4 -0
  355. package/dist/components/text/fonts/dancing-script.outline.d.ts +3 -0
  356. package/dist/components/text/fonts/dancing-script.outline.d.ts.map +1 -0
  357. package/dist/components/text/fonts/dancing-script.outline.js +4 -0
  358. package/dist/components/text/fonts/dancing-script.strokes.d.ts +3 -0
  359. package/dist/components/text/fonts/dancing-script.strokes.d.ts.map +1 -0
  360. package/dist/components/text/fonts/dancing-script.strokes.js +4 -0
  361. package/dist/components/text/fonts/gochi-hand.outline.d.ts +3 -0
  362. package/dist/components/text/fonts/gochi-hand.outline.d.ts.map +1 -0
  363. package/dist/components/text/fonts/gochi-hand.outline.js +4 -0
  364. package/dist/components/text/fonts/gochi-hand.strokes.d.ts +3 -0
  365. package/dist/components/text/fonts/gochi-hand.strokes.d.ts.map +1 -0
  366. package/dist/components/text/fonts/gochi-hand.strokes.js +4 -0
  367. package/dist/components/text/fonts/handlee.outline.d.ts +3 -0
  368. package/dist/components/text/fonts/handlee.outline.d.ts.map +1 -0
  369. package/dist/components/text/fonts/handlee.outline.js +4 -0
  370. package/dist/components/text/fonts/handlee.strokes.d.ts +3 -0
  371. package/dist/components/text/fonts/handlee.strokes.d.ts.map +1 -0
  372. package/dist/components/text/fonts/handlee.strokes.js +4 -0
  373. package/dist/components/text/fonts/index.d.ts +5 -0
  374. package/dist/components/text/fonts/index.d.ts.map +1 -0
  375. package/dist/components/text/fonts/index.js +58 -0
  376. package/dist/components/text/fonts/indie-flower.outline.d.ts +3 -0
  377. package/dist/components/text/fonts/indie-flower.outline.d.ts.map +1 -0
  378. package/dist/components/text/fonts/indie-flower.outline.js +4 -0
  379. package/dist/components/text/fonts/indie-flower.strokes.d.ts +3 -0
  380. package/dist/components/text/fonts/indie-flower.strokes.d.ts.map +1 -0
  381. package/dist/components/text/fonts/indie-flower.strokes.js +4 -0
  382. package/dist/components/text/fonts/inter.outline.d.ts +3 -0
  383. package/dist/components/text/fonts/inter.outline.d.ts.map +1 -0
  384. package/dist/components/text/fonts/inter.outline.js +4 -0
  385. package/dist/components/text/fonts/inter.strokes.d.ts +3 -0
  386. package/dist/components/text/fonts/inter.strokes.d.ts.map +1 -0
  387. package/dist/components/text/fonts/inter.strokes.js +4 -0
  388. package/dist/components/text/fonts/kalam.outline.d.ts +3 -0
  389. package/dist/components/text/fonts/kalam.outline.d.ts.map +1 -0
  390. package/dist/components/text/fonts/kalam.outline.js +4 -0
  391. package/dist/components/text/fonts/kalam.strokes.d.ts +3 -0
  392. package/dist/components/text/fonts/kalam.strokes.d.ts.map +1 -0
  393. package/dist/components/text/fonts/kalam.strokes.js +4 -0
  394. package/dist/components/text/fonts/kaushan-script.outline.d.ts +3 -0
  395. package/dist/components/text/fonts/kaushan-script.outline.d.ts.map +1 -0
  396. package/dist/components/text/fonts/kaushan-script.outline.js +4 -0
  397. package/dist/components/text/fonts/kaushan-script.strokes.d.ts +3 -0
  398. package/dist/components/text/fonts/kaushan-script.strokes.d.ts.map +1 -0
  399. package/dist/components/text/fonts/kaushan-script.strokes.js +4 -0
  400. package/dist/components/text/fonts/lora.outline.d.ts +3 -0
  401. package/dist/components/text/fonts/lora.outline.d.ts.map +1 -0
  402. package/dist/components/text/fonts/lora.outline.js +4 -0
  403. package/dist/components/text/fonts/lora.strokes.d.ts +3 -0
  404. package/dist/components/text/fonts/lora.strokes.d.ts.map +1 -0
  405. package/dist/components/text/fonts/lora.strokes.js +4 -0
  406. package/dist/components/text/fonts/montserrat.outline.d.ts +3 -0
  407. package/dist/components/text/fonts/montserrat.outline.d.ts.map +1 -0
  408. package/dist/components/text/fonts/montserrat.outline.js +4 -0
  409. package/dist/components/text/fonts/montserrat.strokes.d.ts +3 -0
  410. package/dist/components/text/fonts/montserrat.strokes.d.ts.map +1 -0
  411. package/dist/components/text/fonts/montserrat.strokes.js +4 -0
  412. package/dist/components/text/fonts/mynerve.outline.d.ts +3 -0
  413. package/dist/components/text/fonts/mynerve.outline.d.ts.map +1 -0
  414. package/dist/components/text/fonts/mynerve.outline.js +4 -0
  415. package/dist/components/text/fonts/mynerve.strokes.d.ts +3 -0
  416. package/dist/components/text/fonts/mynerve.strokes.d.ts.map +1 -0
  417. package/dist/components/text/fonts/mynerve.strokes.js +4 -0
  418. package/dist/components/text/fonts/nanum-pen-script.outline.d.ts +3 -0
  419. package/dist/components/text/fonts/nanum-pen-script.outline.d.ts.map +1 -0
  420. package/dist/components/text/fonts/nanum-pen-script.outline.js +4 -0
  421. package/dist/components/text/fonts/nanum-pen-script.strokes.d.ts +3 -0
  422. package/dist/components/text/fonts/nanum-pen-script.strokes.d.ts.map +1 -0
  423. package/dist/components/text/fonts/nanum-pen-script.strokes.js +4 -0
  424. package/dist/components/text/fonts/oswald.outline.d.ts +3 -0
  425. package/dist/components/text/fonts/oswald.outline.d.ts.map +1 -0
  426. package/dist/components/text/fonts/oswald.outline.js +4 -0
  427. package/dist/components/text/fonts/oswald.strokes.d.ts +3 -0
  428. package/dist/components/text/fonts/oswald.strokes.d.ts.map +1 -0
  429. package/dist/components/text/fonts/oswald.strokes.js +4 -0
  430. package/dist/components/text/fonts/pacifico.outline.d.ts +3 -0
  431. package/dist/components/text/fonts/pacifico.outline.d.ts.map +1 -0
  432. package/dist/components/text/fonts/pacifico.outline.js +4 -0
  433. package/dist/components/text/fonts/pacifico.strokes.d.ts +3 -0
  434. package/dist/components/text/fonts/pacifico.strokes.d.ts.map +1 -0
  435. package/dist/components/text/fonts/pacifico.strokes.js +4 -0
  436. package/dist/components/text/fonts/patrick-hand.outline.d.ts +3 -0
  437. package/dist/components/text/fonts/patrick-hand.outline.d.ts.map +1 -0
  438. package/dist/components/text/fonts/patrick-hand.outline.js +4 -0
  439. package/dist/components/text/fonts/patrick-hand.strokes.d.ts +3 -0
  440. package/dist/components/text/fonts/patrick-hand.strokes.d.ts.map +1 -0
  441. package/dist/components/text/fonts/patrick-hand.strokes.js +4 -0
  442. package/dist/components/text/fonts/playfair-display.outline.d.ts +3 -0
  443. package/dist/components/text/fonts/playfair-display.outline.d.ts.map +1 -0
  444. package/dist/components/text/fonts/playfair-display.outline.js +4 -0
  445. package/dist/components/text/fonts/playfair-display.strokes.d.ts +3 -0
  446. package/dist/components/text/fonts/playfair-display.strokes.d.ts.map +1 -0
  447. package/dist/components/text/fonts/playfair-display.strokes.js +4 -0
  448. package/dist/components/text/fonts/poppins.outline.d.ts +3 -0
  449. package/dist/components/text/fonts/poppins.outline.d.ts.map +1 -0
  450. package/dist/components/text/fonts/poppins.outline.js +4 -0
  451. package/dist/components/text/fonts/poppins.strokes.d.ts +3 -0
  452. package/dist/components/text/fonts/poppins.strokes.d.ts.map +1 -0
  453. package/dist/components/text/fonts/poppins.strokes.js +4 -0
  454. package/dist/components/text/fonts/roboto.outline.d.ts +3 -0
  455. package/dist/components/text/fonts/roboto.outline.d.ts.map +1 -0
  456. package/dist/components/text/fonts/roboto.outline.js +4 -0
  457. package/dist/components/text/fonts/roboto.strokes.d.ts +3 -0
  458. package/dist/components/text/fonts/roboto.strokes.d.ts.map +1 -0
  459. package/dist/components/text/fonts/roboto.strokes.js +4 -0
  460. package/dist/components/text/fonts/satisfy.outline.d.ts +3 -0
  461. package/dist/components/text/fonts/satisfy.outline.d.ts.map +1 -0
  462. package/dist/components/text/fonts/satisfy.outline.js +4 -0
  463. package/dist/components/text/fonts/satisfy.strokes.d.ts +3 -0
  464. package/dist/components/text/fonts/satisfy.strokes.d.ts.map +1 -0
  465. package/dist/components/text/fonts/satisfy.strokes.js +4 -0
  466. package/dist/components/text/fonts/sriracha.outline.d.ts +3 -0
  467. package/dist/components/text/fonts/sriracha.outline.d.ts.map +1 -0
  468. package/dist/components/text/fonts/sriracha.outline.js +4 -0
  469. package/dist/components/text/fonts/sriracha.strokes.d.ts +3 -0
  470. package/dist/components/text/fonts/sriracha.strokes.d.ts.map +1 -0
  471. package/dist/components/text/fonts/sriracha.strokes.js +4 -0
  472. package/dist/components/text/index.d.ts +29 -0
  473. package/dist/components/text/index.d.ts.map +1 -0
  474. package/dist/components/text/index.js +14 -0
  475. package/dist/components/text/useTextObject.d.ts +22 -0
  476. package/dist/components/text/useTextObject.d.ts.map +1 -0
  477. package/dist/components/text/useTextObject.js +130 -0
  478. package/dist/components/water/OceanSurface.d.ts.map +1 -1
  479. package/dist/components/water/OceanSurface.js +3 -1
  480. package/dist/components/water/WaterBody.d.ts.map +1 -1
  481. package/dist/components/water/WaterBody.js +3 -1
  482. package/dist/components/water/types.d.ts +5 -1
  483. package/dist/components/water/types.d.ts.map +1 -1
  484. package/dist/constants.d.ts.map +1 -1
  485. package/dist/constants.js +6 -0
  486. package/dist/hooks/index.d.ts +2 -0
  487. package/dist/hooks/index.d.ts.map +1 -1
  488. package/dist/hooks/index.js +1 -0
  489. package/dist/hooks/useCloudSun.d.ts +9 -4
  490. package/dist/hooks/useCloudSun.d.ts.map +1 -1
  491. package/dist/hooks/useCloudSun.js +17 -7
  492. package/dist/hooks/useConfigLive.d.ts +3 -2
  493. package/dist/hooks/useConfigLive.d.ts.map +1 -1
  494. package/dist/hooks/useContinuousEffects.d.ts.map +1 -1
  495. package/dist/hooks/useContinuousEffects.js +4 -10
  496. package/dist/hooks/useEnvironmentProbe.d.ts +3 -22
  497. package/dist/hooks/useEnvironmentProbe.d.ts.map +1 -1
  498. package/dist/hooks/useEnvironmentProbe.js +47 -8
  499. package/dist/hooks/useGridSurface.d.ts +3 -10
  500. package/dist/hooks/useGridSurface.d.ts.map +1 -1
  501. package/dist/hooks/useGridSurface.js +5 -31
  502. package/dist/hooks/useInteraction.d.ts.map +1 -1
  503. package/dist/hooks/useInteraction.js +19 -72
  504. package/dist/hooks/useLightConfig.d.ts +2 -1
  505. package/dist/hooks/useLightConfig.d.ts.map +1 -1
  506. package/dist/hooks/useOceanMaterial.d.ts +6 -2
  507. package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
  508. package/dist/hooks/useOceanMaterial.js +37 -2
  509. package/dist/hooks/useSkyLive.d.ts +23 -0
  510. package/dist/hooks/useSkyLive.d.ts.map +1 -0
  511. package/dist/hooks/useSkyLive.js +30 -0
  512. package/dist/hooks/useSkyUniforms.d.ts.map +1 -1
  513. package/dist/hooks/useSkyUniforms.js +2 -10
  514. package/dist/hooks/useTerrainLive.d.ts +3 -1
  515. package/dist/hooks/useTerrainLive.d.ts.map +1 -1
  516. package/dist/hooks/useTerrainTextures.d.ts +38 -0
  517. package/dist/hooks/useTerrainTextures.d.ts.map +1 -0
  518. package/dist/hooks/useTerrainTextures.js +149 -0
  519. package/dist/index.d.ts +12 -3
  520. package/dist/index.d.ts.map +1 -1
  521. package/dist/index.js +9 -2
  522. package/dist/operations/catalogue/blastOff.d.ts +3 -0
  523. package/dist/operations/catalogue/blastOff.d.ts.map +1 -0
  524. package/dist/operations/catalogue/blastOff.js +118 -0
  525. package/dist/operations/catalogue/bounce.d.ts +3 -0
  526. package/dist/operations/catalogue/bounce.d.ts.map +1 -0
  527. package/dist/operations/catalogue/bounce.js +34 -0
  528. package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -1
  529. package/dist/operations/catalogue/curlSmoke.js +3 -1
  530. package/dist/operations/catalogue/dissolve.d.ts.map +1 -1
  531. package/dist/operations/catalogue/dissolve.js +2 -1
  532. package/dist/operations/catalogue/driftUp.d.ts +3 -0
  533. package/dist/operations/catalogue/driftUp.d.ts.map +1 -0
  534. package/dist/operations/catalogue/driftUp.js +57 -0
  535. package/dist/operations/catalogue/emberAsh.d.ts.map +1 -1
  536. package/dist/operations/catalogue/emberAsh.js +2 -1
  537. package/dist/operations/catalogue/flip.d.ts.map +1 -1
  538. package/dist/operations/catalogue/flip.js +19 -9
  539. package/dist/operations/catalogue/float.d.ts +3 -0
  540. package/dist/operations/catalogue/float.d.ts.map +1 -0
  541. package/dist/operations/catalogue/float.js +39 -0
  542. package/dist/operations/catalogue/flock.d.ts.map +1 -1
  543. package/dist/operations/catalogue/flock.js +44 -9
  544. package/dist/operations/catalogue/flyBy.d.ts +3 -0
  545. package/dist/operations/catalogue/flyBy.d.ts.map +1 -0
  546. package/dist/operations/catalogue/flyBy.js +79 -0
  547. package/dist/operations/catalogue/frost.d.ts.map +1 -1
  548. package/dist/operations/catalogue/frost.js +10 -3
  549. package/dist/operations/catalogue/grow.d.ts +3 -0
  550. package/dist/operations/catalogue/grow.d.ts.map +1 -0
  551. package/dist/operations/catalogue/grow.js +19 -0
  552. package/dist/operations/catalogue/hologram.d.ts.map +1 -1
  553. package/dist/operations/catalogue/hologram.js +11 -5
  554. package/dist/operations/catalogue/inkBloom.d.ts.map +1 -1
  555. package/dist/operations/catalogue/inkBloom.js +46 -9
  556. package/dist/operations/catalogue/jelly.d.ts.map +1 -1
  557. package/dist/operations/catalogue/jelly.js +18 -8
  558. package/dist/operations/catalogue/knockAway.d.ts +3 -0
  559. package/dist/operations/catalogue/knockAway.d.ts.map +1 -0
  560. package/dist/operations/catalogue/knockAway.js +74 -0
  561. package/dist/operations/catalogue/leafFall.d.ts +3 -0
  562. package/dist/operations/catalogue/leafFall.d.ts.map +1 -0
  563. package/dist/operations/catalogue/leafFall.js +74 -0
  564. package/dist/operations/catalogue/lidarScan.d.ts.map +1 -1
  565. package/dist/operations/catalogue/lidarScan.js +4 -1
  566. package/dist/operations/catalogue/liquidMetal.d.ts.map +1 -1
  567. package/dist/operations/catalogue/liquidMetal.js +41 -12
  568. package/dist/operations/catalogue/metalize.d.ts.map +1 -1
  569. package/dist/operations/catalogue/metalize.js +8 -2
  570. package/dist/operations/catalogue/motionTrail.d.ts +6 -0
  571. package/dist/operations/catalogue/motionTrail.d.ts.map +1 -0
  572. package/dist/operations/catalogue/motionTrail.js +221 -0
  573. package/dist/operations/catalogue/particleSwarm.d.ts.map +1 -1
  574. package/dist/operations/catalogue/particleSwarm.js +29 -9
  575. package/dist/operations/catalogue/petalPeel.d.ts.map +1 -1
  576. package/dist/operations/catalogue/petalPeel.js +33 -9
  577. package/dist/operations/catalogue/petrify.d.ts.map +1 -1
  578. package/dist/operations/catalogue/petrify.js +9 -3
  579. package/dist/operations/catalogue/physicalExit.d.ts +55 -0
  580. package/dist/operations/catalogue/physicalExit.d.ts.map +1 -0
  581. package/dist/operations/catalogue/physicalExit.js +165 -0
  582. package/dist/operations/catalogue/physicalHeld.d.ts +41 -0
  583. package/dist/operations/catalogue/physicalHeld.d.ts.map +1 -0
  584. package/dist/operations/catalogue/physicalHeld.js +78 -0
  585. package/dist/operations/catalogue/physicalMix.d.ts +45 -0
  586. package/dist/operations/catalogue/physicalMix.d.ts.map +1 -0
  587. package/dist/operations/catalogue/physicalMix.js +144 -0
  588. package/dist/operations/catalogue/pop.d.ts +3 -0
  589. package/dist/operations/catalogue/pop.d.ts.map +1 -0
  590. package/dist/operations/catalogue/pop.js +44 -0
  591. package/dist/operations/catalogue/portal.d.ts.map +1 -1
  592. package/dist/operations/catalogue/portal.js +33 -11
  593. package/dist/operations/catalogue/print3d.d.ts.map +1 -1
  594. package/dist/operations/catalogue/print3d.js +5 -1
  595. package/dist/operations/catalogue/pulse.d.ts +3 -0
  596. package/dist/operations/catalogue/pulse.d.ts.map +1 -0
  597. package/dist/operations/catalogue/pulse.js +29 -0
  598. package/dist/operations/catalogue/restPose.d.ts +5 -7
  599. package/dist/operations/catalogue/restPose.d.ts.map +1 -1
  600. package/dist/operations/catalogue/restPose.js +18 -48
  601. package/dist/operations/catalogue/rotate.d.ts +3 -0
  602. package/dist/operations/catalogue/rotate.d.ts.map +1 -0
  603. package/dist/operations/catalogue/rotate.js +49 -0
  604. package/dist/operations/catalogue/sandErosion.d.ts.map +1 -1
  605. package/dist/operations/catalogue/sandErosion.js +36 -14
  606. package/dist/operations/catalogue/shake.d.ts +3 -0
  607. package/dist/operations/catalogue/shake.d.ts.map +1 -0
  608. package/dist/operations/catalogue/shake.js +31 -0
  609. package/dist/operations/catalogue/shatter.d.ts.map +1 -1
  610. package/dist/operations/catalogue/shatter.js +5 -1
  611. package/dist/operations/catalogue/slam.d.ts +3 -0
  612. package/dist/operations/catalogue/slam.d.ts.map +1 -0
  613. package/dist/operations/catalogue/slam.js +89 -0
  614. package/dist/operations/catalogue/slingshot.d.ts +3 -0
  615. package/dist/operations/catalogue/slingshot.d.ts.map +1 -0
  616. package/dist/operations/catalogue/slingshot.js +88 -0
  617. package/dist/operations/catalogue/spin.d.ts.map +1 -1
  618. package/dist/operations/catalogue/spin.js +24 -13
  619. package/dist/operations/catalogue/sway.d.ts +3 -0
  620. package/dist/operations/catalogue/sway.d.ts.map +1 -0
  621. package/dist/operations/catalogue/sway.js +23 -0
  622. package/dist/operations/catalogue/swirl.d.ts.map +1 -1
  623. package/dist/operations/catalogue/swirl.js +6 -5
  624. package/dist/operations/catalogue/teleport.d.ts.map +1 -1
  625. package/dist/operations/catalogue/teleport.js +43 -12
  626. package/dist/operations/catalogue/trailCore.d.ts +89 -0
  627. package/dist/operations/catalogue/trailCore.d.ts.map +1 -0
  628. package/dist/operations/catalogue/trailCore.js +190 -0
  629. package/dist/operations/catalogue/trailGhosts.d.ts +5 -0
  630. package/dist/operations/catalogue/trailGhosts.d.ts.map +1 -0
  631. package/dist/operations/catalogue/trailGhosts.js +179 -0
  632. package/dist/operations/catalogue/trailStampStyles.d.ts +11 -0
  633. package/dist/operations/catalogue/trailStampStyles.d.ts.map +1 -0
  634. package/dist/operations/catalogue/trailStampStyles.js +479 -0
  635. package/dist/operations/catalogue/trailStamps.d.ts +57 -0
  636. package/dist/operations/catalogue/trailStamps.d.ts.map +1 -0
  637. package/dist/operations/catalogue/trailStamps.js +349 -0
  638. package/dist/operations/catalogue/trailStreaks.d.ts +3 -0
  639. package/dist/operations/catalogue/trailStreaks.d.ts.map +1 -0
  640. package/dist/operations/catalogue/trailStreaks.js +147 -0
  641. package/dist/operations/catalogue/transitionField.d.ts +30 -0
  642. package/dist/operations/catalogue/transitionField.d.ts.map +1 -1
  643. package/dist/operations/catalogue/transitionField.js +21 -0
  644. package/dist/operations/catalogue/turnAway.d.ts +3 -0
  645. package/dist/operations/catalogue/turnAway.d.ts.map +1 -0
  646. package/dist/operations/catalogue/turnAway.js +54 -0
  647. package/dist/operations/catalogue/unweave.d.ts.map +1 -1
  648. package/dist/operations/catalogue/unweave.js +34 -15
  649. package/dist/operations/catalogue/vortexDrain.d.ts +3 -0
  650. package/dist/operations/catalogue/vortexDrain.d.ts.map +1 -0
  651. package/dist/operations/catalogue/vortexDrain.js +68 -0
  652. package/dist/operations/catalogue/voxelize.d.ts.map +1 -1
  653. package/dist/operations/catalogue/voxelize.js +37 -10
  654. package/dist/operations/catalogue/warp.d.ts +3 -0
  655. package/dist/operations/catalogue/warp.d.ts.map +1 -0
  656. package/dist/operations/catalogue/warp.js +73 -0
  657. package/dist/operations/catalogue/whoosh.d.ts +3 -0
  658. package/dist/operations/catalogue/whoosh.d.ts.map +1 -0
  659. package/dist/operations/catalogue/whoosh.js +84 -0
  660. package/dist/operations/catalogue/wobble.d.ts +3 -0
  661. package/dist/operations/catalogue/wobble.d.ts.map +1 -0
  662. package/dist/operations/catalogue/wobble.js +23 -0
  663. package/dist/operations/clipPreview.d.ts +3 -0
  664. package/dist/operations/clipPreview.d.ts.map +1 -0
  665. package/dist/operations/clipPreview.js +20 -0
  666. package/dist/operations/groupFanout.d.ts +96 -0
  667. package/dist/operations/groupFanout.d.ts.map +1 -0
  668. package/dist/operations/groupFanout.js +365 -0
  669. package/dist/operations/groups.d.ts +20 -0
  670. package/dist/operations/groups.d.ts.map +1 -0
  671. package/dist/operations/groups.js +66 -0
  672. package/dist/operations/index.d.ts +5 -2
  673. package/dist/operations/index.d.ts.map +1 -1
  674. package/dist/operations/index.js +5 -2
  675. package/dist/operations/objectEffects.d.ts +161 -6
  676. package/dist/operations/objectEffects.d.ts.map +1 -1
  677. package/dist/operations/objectEffects.js +1091 -17
  678. package/dist/operations/registry.d.ts.map +1 -1
  679. package/dist/operations/registry.js +24 -2
  680. package/dist/operations/runtime.d.ts +57 -2
  681. package/dist/operations/runtime.d.ts.map +1 -1
  682. package/dist/operations/runtime.js +161 -18
  683. package/dist/operations/types.d.ts +60 -3
  684. package/dist/operations/types.d.ts.map +1 -1
  685. package/dist/operations/types.js +5 -1
  686. package/dist/operations/useObjectEffectLayers.d.ts +2 -2
  687. package/dist/operations/useObjectEffectLayers.d.ts.map +1 -1
  688. package/dist/operations/useObjectEffectLayers.js +31 -10
  689. package/dist/operations/usePresentedVisibility.d.ts +10 -0
  690. package/dist/operations/usePresentedVisibility.d.ts.map +1 -0
  691. package/dist/operations/usePresentedVisibility.js +53 -0
  692. package/dist/presets/terrainBiomes.d.ts +67 -0
  693. package/dist/presets/terrainBiomes.d.ts.map +1 -0
  694. package/dist/presets/terrainBiomes.js +294 -0
  695. package/dist/presets/terrainPresets.d.ts +6 -0
  696. package/dist/presets/terrainPresets.d.ts.map +1 -1
  697. package/dist/presets/terrainPresets.js +26 -38
  698. package/dist/shaders/glsl/oceanCore.glsl.d.ts +2 -2
  699. package/dist/shaders/glsl/oceanCore.glsl.d.ts.map +1 -1
  700. package/dist/shaders/glsl/oceanCore.glsl.js +17 -0
  701. package/dist/shaders/glsl/surfaceCore.glsl.d.ts +21 -0
  702. package/dist/shaders/glsl/surfaceCore.glsl.d.ts.map +1 -0
  703. package/dist/shaders/glsl/surfaceCore.glsl.js +120 -0
  704. package/dist/shaders/glsl/terrainCore.glsl.d.ts +16 -3
  705. package/dist/shaders/glsl/terrainCore.glsl.d.ts.map +1 -1
  706. package/dist/shaders/glsl/terrainCore.glsl.js +266 -20
  707. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +2 -0
  708. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -1
  709. package/dist/shaders/ocean/OceanSurfaceMaterial.js +3 -0
  710. package/dist/shaders/terrain/TerrainMaterial.d.ts +17 -0
  711. package/dist/shaders/terrain/TerrainMaterial.d.ts.map +1 -1
  712. package/dist/shaders/terrain/TerrainMaterial.js +107 -8
  713. package/dist/triggers/engine.d.ts +44 -0
  714. package/dist/triggers/engine.d.ts.map +1 -0
  715. package/dist/triggers/engine.js +168 -0
  716. package/dist/triggers/hosts/actions.d.ts +8 -0
  717. package/dist/triggers/hosts/actions.d.ts.map +1 -0
  718. package/dist/triggers/hosts/actions.js +22 -0
  719. package/dist/triggers/hosts/interactions.d.ts +6 -0
  720. package/dist/triggers/hosts/interactions.d.ts.map +1 -0
  721. package/dist/triggers/hosts/interactions.js +4 -0
  722. package/dist/triggers/hosts/timelineCues.d.ts +2 -0
  723. package/dist/triggers/hosts/timelineCues.d.ts.map +1 -0
  724. package/dist/triggers/hosts/timelineCues.js +22 -0
  725. package/dist/triggers/index.d.ts +13 -0
  726. package/dist/triggers/index.d.ts.map +1 -0
  727. package/dist/triggers/index.js +9 -0
  728. package/dist/triggers/kinds/action.d.ts +2 -0
  729. package/dist/triggers/kinds/action.d.ts.map +1 -0
  730. package/dist/triggers/kinds/action.js +31 -0
  731. package/dist/triggers/kinds/animations.d.ts +2 -0
  732. package/dist/triggers/kinds/animations.d.ts.map +1 -0
  733. package/dist/triggers/kinds/animations.js +75 -0
  734. package/dist/triggers/kinds/effects.d.ts +2 -0
  735. package/dist/triggers/kinds/effects.d.ts.map +1 -0
  736. package/dist/triggers/kinds/effects.js +27 -0
  737. package/dist/triggers/kinds/index.d.ts +4 -0
  738. package/dist/triggers/kinds/index.d.ts.map +1 -0
  739. package/dist/triggers/kinds/index.js +4 -0
  740. package/dist/triggers/log.d.ts +21 -0
  741. package/dist/triggers/log.d.ts.map +1 -0
  742. package/dist/triggers/log.js +43 -0
  743. package/dist/triggers/readiness.d.ts +40 -0
  744. package/dist/triggers/readiness.d.ts.map +1 -0
  745. package/dist/triggers/readiness.js +158 -0
  746. package/dist/triggers/registry.d.ts +41 -0
  747. package/dist/triggers/registry.d.ts.map +1 -0
  748. package/dist/triggers/registry.js +7 -0
  749. package/dist/types/gridConfigs.d.ts +18 -23
  750. package/dist/types/gridConfigs.d.ts.map +1 -1
  751. package/dist/ui/UiAnchorUpdater.d.ts +10 -0
  752. package/dist/ui/UiAnchorUpdater.d.ts.map +1 -0
  753. package/dist/ui/UiAnchorUpdater.js +111 -0
  754. package/dist/ui/UiLayers.d.ts +20 -0
  755. package/dist/ui/UiLayers.d.ts.map +1 -0
  756. package/dist/ui/UiLayers.js +57 -0
  757. package/dist/ui/index.d.ts +9 -0
  758. package/dist/ui/index.d.ts.map +1 -0
  759. package/dist/ui/index.js +6 -0
  760. package/dist/ui/uiAnchors.d.ts +21 -0
  761. package/dist/ui/uiAnchors.d.ts.map +1 -0
  762. package/dist/ui/uiAnchors.js +22 -0
  763. package/dist/ui/uiBaseStyles.d.ts +2 -0
  764. package/dist/ui/uiBaseStyles.d.ts.map +1 -0
  765. package/dist/ui/uiBaseStyles.js +100 -0
  766. package/dist/ui/uiBinder.d.ts +30 -0
  767. package/dist/ui/uiBinder.d.ts.map +1 -0
  768. package/dist/ui/uiBinder.js +344 -0
  769. package/dist/utils/configAnimations.d.ts.map +1 -1
  770. package/dist/utils/configAnimations.js +5 -1
  771. package/dist/utils/gridConfig.d.ts +1 -1
  772. package/dist/utils/gridConfig.d.ts.map +1 -1
  773. package/dist/utils/gridConfig.js +1 -1
  774. package/dist/utils/landPatch.d.ts +33 -0
  775. package/dist/utils/landPatch.d.ts.map +1 -0
  776. package/dist/utils/landPatch.js +114 -0
  777. package/dist/utils/pickProxy.d.ts +11 -0
  778. package/dist/utils/pickProxy.d.ts.map +1 -0
  779. package/dist/utils/pickProxy.js +36 -0
  780. package/dist/utils/renderedSky.d.ts +32 -0
  781. package/dist/utils/renderedSky.d.ts.map +1 -0
  782. package/dist/utils/renderedSky.js +57 -0
  783. package/dist/utils/shapes.d.ts +4 -0
  784. package/dist/utils/shapes.d.ts.map +1 -1
  785. package/dist/utils/shapes.js +4 -1
  786. package/dist/utils/skyMoon.d.ts +35 -0
  787. package/dist/utils/skyMoon.d.ts.map +1 -0
  788. package/dist/utils/skyMoon.js +41 -0
  789. package/dist/utils/terrainHeight.d.ts +4 -0
  790. package/dist/utils/terrainHeight.d.ts.map +1 -0
  791. package/dist/utils/terrainHeight.js +150 -0
  792. package/dist/utils/terrainTextureResolver.d.ts +18 -0
  793. package/dist/utils/terrainTextureResolver.d.ts.map +1 -0
  794. package/dist/utils/terrainTextureResolver.js +17 -0
  795. package/dist/utils/terrainUniforms.d.ts +17 -0
  796. package/dist/utils/terrainUniforms.d.ts.map +1 -1
  797. package/dist/utils/terrainUniforms.js +84 -0
  798. package/dist/utils/textShape.d.ts +24 -0
  799. package/dist/utils/textShape.d.ts.map +1 -0
  800. package/dist/utils/textShape.js +102 -0
  801. package/dist/utils/textureArrays.d.ts +29 -0
  802. package/dist/utils/textureArrays.d.ts.map +1 -0
  803. package/dist/utils/textureArrays.js +140 -0
  804. package/package.json +2 -2
@@ -0,0 +1,479 @@
1
+ // The stamp trail styles (see trailStamps.ts): what each copy of the object turns into,
2
+ // and how it goes. All of them are the object's own geometry or derived from it.
3
+ //
4
+ // smoke billows, rises, eaten by drifting density — smoke in its shape
5
+ // ash burns from within along a glowing ember front; behind it, gone
6
+ // hologram its hologram: object-space grid, Fresnel rim, scan bands; it glitches out
7
+ // band by band (each band jitters, then drops)
8
+ // ink ink in water in its shape: swells and swirls, tears into ridged filaments
9
+ // frost ice crystals grow over it, cracks open along cell borders, it melts away
10
+ // sand its surface as grains (surface samples): released from the top down, they
11
+ // pour under gravity onto the floor and lie there in a little heap
12
+ // voxel its shape as cubes (surface samples quantised to a grid): they drop from the
13
+ // top down, tumbling, and shrink away; crisp lit edges
14
+ // shatter its own triangles cut into Voronoi shards (nearest surface seed): each shard
15
+ // turns and drifts outwards, glassy, and is gone
16
+ // wireframe its real mesh edges as fine lines; each edge retracts into its middle
17
+ import { BoxGeometry, BufferAttribute, BufferGeometry, EdgesGeometry, Matrix3, Matrix4, Vector3 } from 'three';
18
+ import { surfaceOf } from './trailCore.js';
19
+ import { defaultTiming, meshStamp, slotStamp } from './trailStamps.js';
20
+ // ---------------------------------------------------------------- object → root-space helpers
21
+ /** The object's meshes with the matrix that takes each into the object's root space. */
22
+ function meshesInRoot(ctx) {
23
+ const out = [];
24
+ ctx.target.updateWorldMatrix(true, true);
25
+ const inv = new Matrix4().copy(ctx.target.matrixWorld).invert();
26
+ ctx.target.traverse((c) => {
27
+ if (!c.isMesh || c.isInstancedMesh || c.userData?.__opFxHelper || !c.geometry?.attributes?.position)
28
+ return;
29
+ const m = new Matrix4().multiplyMatrices(inv, c.matrixWorld);
30
+ out.push({ mesh: c, m, nm: new Matrix3().getNormalMatrix(m) });
31
+ });
32
+ return out;
33
+ }
34
+ /** Bounds of root-space points (y range for "from the top down"). */
35
+ function yRange(pos) {
36
+ let lo = Infinity, hi = -Infinity;
37
+ for (let i = 1; i < pos.length; i += 3) {
38
+ lo = Math.min(lo, pos[i]);
39
+ hi = Math.max(hi, pos[i]);
40
+ }
41
+ return { lo, h: Math.max(1e-6, hi - lo) };
42
+ }
43
+ // ---------------------------------------------------------------- smoke
44
+ export const smoke = meshStamp({
45
+ ...defaultTiming(6),
46
+ opacity: 0.8,
47
+ vertex: /* glsl */ `
48
+ float b = stpN(wp.xyz * 1.6 / uStpSpan + aStpSeed * 11.0);
49
+ wp.xyz += n * uStpSpan * (0.04 + uStpSize * 0.3) * (0.25 + 0.75 * b) * aStpAge;
50
+ wp.y += uStpSpan * 0.32 * aStpAge * aStpAge;`,
51
+ fragment: /* glsl */ `
52
+ vec3 q = vStpW * 2.6 / uStpSpan + vec3(0.0, -uStpTime * 0.35, 0.0) + vStpSeed * 5.0;
53
+ float d = stpFbm(q);
54
+ float edge = 0.12 + age * 0.85;
55
+ float keep = smoothstep(edge - 0.06, edge + 0.14, d);
56
+ float body = 0.25 + 0.75 * abs(dot(n, v));
57
+ float a = keep * body * uStpOpacity * smoothstep(0.0, 0.06, age) * pow(1.0 - age, 0.9);
58
+ float lit = 0.5 + 0.5 * n.y;
59
+ stpOut = vec4(mix(uStpC2, uStpC1, lit * (0.7 + 0.3 * d)), a);`,
60
+ });
61
+ // ---------------------------------------------------------------- ash
62
+ export const ash = meshStamp({
63
+ ...defaultTiming(6),
64
+ opacity: 1,
65
+ vertex: /* glsl */ `
66
+ // what has burnt sags a touch and drifts up as it goes (the ash lifts off)
67
+ float f = stpFbm(L * 3.0 + aStpSeed * 7.0);
68
+ float burnt = smoothstep(f - 0.05, f + 0.25, aStpAge * 1.2 - 0.1);
69
+ wp.y += uStpSpan * 0.18 * burnt * burnt;
70
+ wp.xyz += n * uStpSpan * 0.02 * burnt;`,
71
+ fragment: /* glsl */ `
72
+ // the burn front: a field over the object's own space, its threshold climbing with age
73
+ float f = stpFbm(vStpL * 3.0 + vStpSeed * 7.0);
74
+ float t = age * 1.2 - 0.1;
75
+ float w = 0.04 + uStpSize * 0.09;
76
+ if (f < t - w) discard; // burnt away
77
+ float ember = 1.0 - smoothstep(t - w, t + w * 0.6, f); // 1 at the front, fading into the char
78
+ float shade = 0.5 + 0.5 * max(0.0, dot(n, normalize(vec3(0.35, 0.85, 0.3))));
79
+ vec3 ashCol = uStpC1 * shade * (0.75 + 0.25 * stpN(vStpL * 18.0));
80
+ vec3 col = mix(ashCol, uStpC2 * 2.6, ember * ember); // the ember glows (over 1: it blooms)
81
+ float a = uStpOpacity * smoothstep(0.0, 0.05, age) * (0.88 + 0.12 * ember);
82
+ stpOut = vec4(col, a);`,
83
+ });
84
+ // ---------------------------------------------------------------- hologram
85
+ export const hologram = meshStamp({
86
+ ...defaultTiming(5),
87
+ additive: true,
88
+ opacity: 0.38,
89
+ vertexPars: /* glsl */ `
90
+ float holoBand(vec3 L, float seed) { return floor(L.y * 14.0 + seed * 3.0); }`,
91
+ vertex: /* glsl */ `
92
+ // a band about to drop jitters sideways
93
+ float band = holoBand(L, aStpSeed);
94
+ float death = 0.15 + 0.8 * stpH(vec3(band, aStpSeed * 13.0, 1.7));
95
+ float near = smoothstep(death - 0.12, death, aStpAge) * step(aStpAge, death);
96
+ wp.x += uStpSpan * 0.03 * near * sin(uStpTime * 47.0 + band * 3.1);`,
97
+ fragmentPars: /* glsl */ `
98
+ float holoBand(vec3 L, float seed) { return floor(L.y * 14.0 + seed * 3.0); }
99
+ float holoLine(float x, float k) { float g = abs(fract(x * k) - 0.5); return 1.0 - smoothstep(0.0, fwidth(x * k) * 1.2, g - 0.47); }`,
100
+ fragment: /* glsl */ `
101
+ float band = holoBand(vStpL, vStpSeed);
102
+ float death = 0.15 + 0.8 * stpH(vec3(band, vStpSeed * 13.0, 1.7));
103
+ if (age > death) discard; // this band has dropped out
104
+ float flick = 1.0 - 0.7 * step(0.5, stpH(vec3(floor(uStpTime * 24.0), band, vStpSeed))) * smoothstep(death - 0.1, death, age);
105
+ float fres = pow(1.0 - abs(dot(n, v)), 2.0);
106
+ float grid = max(holoLine(vStpL.x, 9.0), max(holoLine(vStpL.y, 9.0), holoLine(vStpL.z, 9.0)));
107
+ float scan = 0.5 + 0.5 * sin((vStpL.y * 40.0 - uStpTime * 6.0));
108
+ // faint body, a clear rim, crisp grid lines — copies overlap, so each one is light
109
+ float a = uStpOpacity * flick * (0.02 + 0.22 * fres + 0.4 * grid) * (0.8 + 0.2 * scan) * smoothstep(0.0, 0.05, age) * (1.0 - 0.6 * age);
110
+ vec3 col = mix(uStpC1, uStpC2, grid * 0.7);
111
+ stpOut = vec4(col, a);`,
112
+ });
113
+ // ---------------------------------------------------------------- ink
114
+ export const ink = meshStamp({
115
+ ...defaultTiming(7),
116
+ opacity: 0.85,
117
+ vertex: /* glsl */ `
118
+ // it swells and swirls like ink let go in water
119
+ vec3 q = wp.xyz * 0.9 / uStpSpan + vec3(0.0, uStpTime * 0.15, aStpSeed * 9.0);
120
+ vec3 drift = vec3(stpN(q) - 0.5, stpN(q + 17.3) - 0.5, stpN(q + 31.7) - 0.5);
121
+ float g = pow(aStpAge, 0.7);
122
+ wp.xyz += n * uStpSpan * (0.05 + uStpSize * 0.4) * g * (0.4 + stpN(q * 2.3));
123
+ wp.xyz += drift * uStpSpan * 0.9 * g;
124
+ wp.y -= uStpSpan * 0.12 * aStpAge * aStpAge; // ink is heavier than water`,
125
+ fragment: /* glsl */ `
126
+ // ridged filaments: it tears into threads as it thins
127
+ vec3 q = vStpW * 3.4 / uStpSpan + vec3(0.0, uStpTime * 0.1, vStpSeed * 4.0);
128
+ float r = 1.0 - abs(2.0 * stpFbm(q) - 1.0);
129
+ r = r * r; // narrower ridges: threads, not clouds
130
+ float th = 0.12 + age * 0.62;
131
+ float dens = smoothstep(th, th + 0.07, r);
132
+ float body = 0.3 + 0.7 * abs(dot(n, v));
133
+ vec3 col = mix(uStpC2, uStpC1, dens * body); // thick ink deep, thin edges bleed lighter
134
+ float a = uStpOpacity * dens * body * smoothstep(0.0, 0.08, age) * pow(1.0 - age, 0.8);
135
+ stpOut = vec4(col, a);`,
136
+ });
137
+ // ---------------------------------------------------------------- frost
138
+ export const frost = meshStamp({
139
+ ...defaultTiming(7),
140
+ opacity: 0.9,
141
+ vertex: /* glsl */ `
142
+ // melting: it slumps as it goes
143
+ float melt = smoothstep(0.55, 1.0, aStpAge);
144
+ wp.y -= uStpSpan * 0.08 * melt * (0.5 + stpN(L * 4.0 + aStpSeed));`,
145
+ fragment: /* glsl */ `
146
+ vec3 cell = stpWorley(vStpL * (5.0 + uStpSize * 8.0) + vStpSeed * 3.0);
147
+ // crystals grow over it (a front through its own space), cracks open along cell borders, it melts from below
148
+ float grow = smoothstep(0.0, 0.22, age - 0.25 * stpN(vStpL * 2.0 + vStpSeed));
149
+ float crack = smoothstep(0.42, 0.7, age) * (1.0 - smoothstep(0.0, 0.035, cell.y - cell.x));
150
+ float meltT = smoothstep(0.55, 1.0, age);
151
+ if (stpFbm(vStpL * 4.0 + vec3(0.0, uStpTime * 0.05, vStpSeed)) + vStpL.y * 0.35 < meltT * 1.25 - 0.1) discard;
152
+ float fres = pow(1.0 - abs(dot(n, v)), 2.5);
153
+ float facet = 0.75 + 0.25 * cell.z; // each crystal catches the light differently
154
+ vec3 col = uStpC1 * facet * (0.6 + 0.4 * max(0.0, n.y)) + uStpC2 * (0.7 * fres + 1.4 * crack);
155
+ float a = uStpOpacity * grow * (0.35 + 0.45 * fres + 0.6 * crack) * (1.0 - meltT * 0.4);
156
+ stpOut = vec4(col, a);`,
157
+ });
158
+ // ---------------------------------------------------------------- sand (surface grains)
159
+ export const sand = slotStamp({
160
+ ...defaultTiming(6),
161
+ kind: 'points',
162
+ opacity: 1,
163
+ derive(ctx) {
164
+ const s = surfaceOf(ctx.target, 7000, 59);
165
+ const { lo, h } = yRange(s.pos);
166
+ const rnd = new Float32Array(s.n * 4);
167
+ for (let i = 0; i < s.n; i++) {
168
+ rnd[i * 4] = Math.random();
169
+ rnd[i * 4 + 1] = Math.random();
170
+ rnd[i * 4 + 2] = Math.random();
171
+ rnd[i * 4 + 3] = (s.pos[i * 3 + 1] - lo) / h; // 0 at its base, 1 at its top
172
+ }
173
+ const g = new BufferGeometry();
174
+ g.setAttribute('position', new BufferAttribute(s.pos.slice(), 3));
175
+ g.setAttribute('normal', new BufferAttribute(s.nrm.slice(), 3));
176
+ g.setAttribute('aGrain', new BufferAttribute(rnd, 4));
177
+ return { geometry: g };
178
+ },
179
+ vertexPars: /* glsl */ `
180
+ attribute vec4 aGrain;
181
+ varying float vGrainMix;
182
+ varying float vGrainFree;`,
183
+ vertexLocal: /* glsl */ `
184
+ vGrainMix = aGrain.y;`,
185
+ vertexWorld: /* glsl */ `
186
+ // released from the top down, then gravity; it lands and lies in a heap
187
+ float rel = (1.0 - aGrain.w) * 0.42 + aGrain.x * 0.14;
188
+ float tau = max(0.0, age - rel);
189
+ vGrainFree = smoothstep(0.0, 0.02, tau);
190
+ wp.y -= uStpSpan * 7.0 * tau * tau;
191
+ vec2 spread = (aGrain.zy - 0.5) * 2.0;
192
+ float landed = step(wp.y, uStpFloor + 0.004 * uStpSpan);
193
+ wp.xz += spread * uStpSpan * (0.05 * tau + 0.25 * landed * min(1.0, tau * 2.0));
194
+ wp.y = max(wp.y, uStpFloor + aGrain.x * 0.02 * uStpSpan);
195
+ stpSize = uStpPx * (0.75 + 0.5 * aGrain.z);`,
196
+ fragmentPars: /* glsl */ `
197
+ varying float vGrainMix;
198
+ varying float vGrainFree;`,
199
+ // a crisp round grain: a one-pixel anti-aliased edge, no soft sprite
200
+ fragment: /* glsl */ `
201
+ float d = length(pc);
202
+ float edge = clamp((1.0 - d) / max(fwidth(d), 1e-4), 0.0, 1.0);
203
+ float shade = 0.65 + 0.35 * max(0.0, n.y);
204
+ vec3 col = mix(uStpC1, uStpC2, vGrainMix * 0.8) * shade;
205
+ float a = edge * uStpOpacity * smoothstep(0.0, 0.03, age) * (1.0 - smoothstep(0.8, 1.0, age));
206
+ stpOut = vec4(col, a);`,
207
+ });
208
+ // ---------------------------------------------------------------- voxels
209
+ export const voxel = slotStamp({
210
+ ...defaultTiming(5.5),
211
+ kind: 'mesh',
212
+ opacity: 1,
213
+ derive(ctx) {
214
+ const s = surfaceOf(ctx.target, 30000, 37);
215
+ let min = [Infinity, Infinity, Infinity], max = [-Infinity, -Infinity, -Infinity];
216
+ for (let i = 0; i < s.n; i++)
217
+ for (let a = 0; a < 3; a++) {
218
+ min[a] = Math.min(min[a], s.pos[i * 3 + a]);
219
+ max[a] = Math.max(max[a], s.pos[i * 3 + a]);
220
+ }
221
+ const res = Math.round(10 + ctx.p.amount * 16);
222
+ const cell = Math.max(max[0] - min[0], max[1] - min[1], max[2] - min[2], 1e-3) / res;
223
+ const cells = new Map();
224
+ for (let i = 0; i < s.n; i++) {
225
+ const ix = Math.floor((s.pos[i * 3] - min[0]) / cell), iy = Math.floor((s.pos[i * 3 + 1] - min[1]) / cell), iz = Math.floor((s.pos[i * 3 + 2] - min[2]) / cell);
226
+ const k = `${ix},${iy},${iz}`;
227
+ if (!cells.has(k))
228
+ cells.set(k, [min[0] + (ix + 0.5) * cell, min[1] + (iy + 0.5) * cell, min[2] + (iz + 0.5) * cell]);
229
+ }
230
+ const n = cells.size, h = Math.max(1e-6, max[1] - min[1]);
231
+ const vox = new Float32Array(n * 4), rnd = new Float32Array(n * 4);
232
+ let i = 0;
233
+ for (const c of cells.values()) {
234
+ vox.set([c[0], c[1], c[2], cell], i * 4);
235
+ rnd.set([Math.random(), Math.random(), Math.random(), (c[1] - min[1]) / h], i * 4);
236
+ i++;
237
+ }
238
+ return { geometry: new BoxGeometry(1, 1, 1), elements: { count: n, attrs: { aVox: { itemSize: 4, array: vox }, aVoxR: { itemSize: 4, array: rnd } } } };
239
+ },
240
+ vertexPars: /* glsl */ `
241
+ attribute vec4 aVox;
242
+ attribute vec4 aVoxR;
243
+ varying vec3 vVoxBox;`,
244
+ vertexLocal: /* glsl */ `
245
+ // released from the top down; it tumbles as it drops and shrinks away
246
+ float rel = (1.0 - aVoxR.w) * 0.5 + aVoxR.x * 0.18;
247
+ float tau = max(0.0, age - rel);
248
+ float sc = 0.94 * (1.0 - smoothstep(0.22, 0.42, tau)) * smoothstep(0.0, 0.03, age);
249
+ mat3 R = stpRot(normalize(aVoxR.xyz - 0.5 + 1e-3), tau * (6.0 + 8.0 * aVoxR.y));
250
+ vVoxBox = position;
251
+ lp = aVox.xyz + R * (position * aVox.w * sc);
252
+ ln = R * normal;
253
+ L = aVox.xyz / uStpSpan;`,
254
+ vertexWorld: /* glsl */ `
255
+ float tau2 = max(0.0, age - ((1.0 - aVoxR.w) * 0.5 + aVoxR.x * 0.18));
256
+ wp.y -= uStpSpan * 4.0 * tau2 * tau2;`,
257
+ fragmentPars: /* glsl */ `
258
+ varying vec3 vVoxBox;`,
259
+ // lit faces with a crisp edge line on every cube
260
+ fragment: /* glsl */ `
261
+ vec3 b = abs(vVoxBox) * 2.0; // 0 centre … 1 face
262
+ float e2 = b.x + b.y + b.z - max(b.x, max(b.y, b.z)); // the two largest: near an edge → ~2
263
+ float w = fwidth(e2) * 1.5;
264
+ float edge = smoothstep(1.86 - w, 1.86 + w, e2);
265
+ float lit = 0.45 + 0.55 * max(0.0, dot(n, normalize(vec3(0.35, 0.85, 0.4))));
266
+ vec3 col = mix(uStpC1 * lit, uStpC2, edge * 0.85);
267
+ float a = uStpOpacity * (0.9 + 0.1 * edge) * (1.0 - smoothstep(0.85, 1.0, age));
268
+ stpOut = vec4(col, a);`,
269
+ });
270
+ // ---------------------------------------------------------------- shatter (its own triangles as Voronoi shards)
271
+ export const shatter = slotStamp({
272
+ ...defaultTiming(5),
273
+ kind: 'mesh',
274
+ opacity: 0.9,
275
+ derive(ctx) {
276
+ const seedsS = surfaceOf(ctx.target, 2000, 71);
277
+ const nSeeds = Math.round(30 + ctx.p.amount * 90);
278
+ const seeds = new Float32Array(nSeeds * 3);
279
+ for (let k = 0; k < nSeeds; k++) {
280
+ const i = (Math.random() * seedsS.n) | 0;
281
+ seeds.set(seedsS.pos.subarray(i * 3, i * 3 + 3), k * 3);
282
+ }
283
+ const cellRnd = Array.from({ length: nSeeds }, () => [Math.random(), Math.random(), Math.random(), Math.random()]);
284
+ // the object's triangles in root space, non-indexed
285
+ const P = [], N = [];
286
+ const v = new Vector3(), nn = new Vector3();
287
+ for (const { mesh, m, nm } of meshesInRoot(ctx)) {
288
+ const g = mesh.geometry.index ? mesh.geometry.toNonIndexed() : mesh.geometry;
289
+ const pos = g.attributes.position, nor = g.attributes.normal;
290
+ if (pos.count > 300000)
291
+ continue;
292
+ for (let i = 0; i < pos.count; i++) {
293
+ v.fromBufferAttribute(pos, i).applyMatrix4(m);
294
+ P.push(v.x, v.y, v.z);
295
+ if (nor) {
296
+ nn.fromBufferAttribute(nor, i).applyMatrix3(nm).normalize();
297
+ N.push(nn.x, nn.y, nn.z);
298
+ }
299
+ else
300
+ N.push(0, 1, 0);
301
+ }
302
+ if (g !== mesh.geometry)
303
+ g.dispose();
304
+ }
305
+ const n = P.length / 3;
306
+ // each triangle → its nearest seed's cell; a cell moves as one shard about its centroid
307
+ const cellOf = new Int32Array(n / 3);
308
+ const sum = new Float64Array(nSeeds * 3), cnt = new Uint32Array(nSeeds);
309
+ let cx = 0, cy = 0, cz = 0;
310
+ for (let t = 0, f = 0; t < n; t += 3, f++) {
311
+ const x = (P[t * 3] + P[t * 3 + 3] + P[t * 3 + 6]) / 3, y = (P[t * 3 + 1] + P[t * 3 + 4] + P[t * 3 + 7]) / 3, z = (P[t * 3 + 2] + P[t * 3 + 5] + P[t * 3 + 8]) / 3;
312
+ let best = 0, bd = Infinity;
313
+ for (let k = 0; k < nSeeds; k++) {
314
+ const dx = x - seeds[k * 3], dy = y - seeds[k * 3 + 1], dz = z - seeds[k * 3 + 2], d = dx * dx + dy * dy + dz * dz;
315
+ if (d < bd) {
316
+ bd = d;
317
+ best = k;
318
+ }
319
+ }
320
+ cellOf[f] = best;
321
+ sum[best * 3] += x;
322
+ sum[best * 3 + 1] += y;
323
+ sum[best * 3 + 2] += z;
324
+ cnt[best]++;
325
+ cx += x;
326
+ cy += y;
327
+ cz += z;
328
+ }
329
+ const tris = Math.max(1, n / 3);
330
+ cx /= tris;
331
+ cy /= tris;
332
+ cz /= tris;
333
+ const cen = new Float32Array(n * 3), dir = new Float32Array(n * 3), rnd = new Float32Array(n * 4);
334
+ for (let t = 0, f = 0; t < n; t += 3, f++) {
335
+ const k = cellOf[f], inv = 1 / Math.max(1, cnt[k]);
336
+ const c = [sum[k * 3] * inv, sum[k * 3 + 1] * inv, sum[k * 3 + 2] * inv];
337
+ const d = new Vector3(c[0] - cx, c[1] - cy, c[2] - cz).normalize();
338
+ for (let vtx = t; vtx < t + 3; vtx++) {
339
+ cen.set(c, vtx * 3);
340
+ dir.set([d.x, d.y, d.z], vtx * 3);
341
+ rnd.set(cellRnd[k], vtx * 4);
342
+ }
343
+ }
344
+ const g = new BufferGeometry();
345
+ g.setAttribute('position', new BufferAttribute(new Float32Array(P), 3));
346
+ g.setAttribute('normal', new BufferAttribute(new Float32Array(N), 3));
347
+ g.setAttribute('aShCen', new BufferAttribute(cen, 3));
348
+ g.setAttribute('aShDir', new BufferAttribute(dir, 3));
349
+ g.setAttribute('aShRnd', new BufferAttribute(rnd, 4));
350
+ return { geometry: g };
351
+ },
352
+ vertexPars: /* glsl */ `
353
+ attribute vec3 aShCen;
354
+ attribute vec3 aShDir;
355
+ attribute vec4 aShRnd;`,
356
+ vertexLocal: /* glsl */ `
357
+ // each shard lets go at its own moment, turns about its centre and drifts outwards
358
+ float tau = max(0.0, age - aShRnd.x * 0.3);
359
+ mat3 R = stpRot(normalize(aShRnd.yzw - 0.5 + 1e-3), tau * (3.0 + 5.0 * aShRnd.y));
360
+ float sc = 1.0 - smoothstep(0.45, 0.7, tau);
361
+ lp = aShCen + R * (position - aShCen) * sc + aShDir * uStpSpan * (0.05 + 0.35 * uStpSize) * tau;
362
+ ln = R * normal;`,
363
+ vertexWorld: /* glsl */ `
364
+ float tau2 = max(0.0, age - aShRnd.x * 0.3);
365
+ wp.y -= uStpSpan * 1.6 * tau2 * tau2;`,
366
+ // glassy: a faint body, a bright Fresnel rim
367
+ fragment: /* glsl */ `
368
+ float fres = pow(1.0 - abs(dot(n, v)), 2.2);
369
+ float lit = 0.5 + 0.5 * max(0.0, dot(n, normalize(vec3(0.35, 0.85, 0.4))));
370
+ vec3 col = uStpC1 * lit + uStpC2 * fres * 0.9;
371
+ float a = uStpOpacity * (0.32 + 0.6 * fres) * smoothstep(0.0, 0.04, age) * (1.0 - smoothstep(0.75, 1.0, age));
372
+ stpOut = vec4(col, a);`,
373
+ });
374
+ // ---------------------------------------------------------------- wireframe (its real edges)
375
+ export const wireframe = slotStamp({
376
+ ...defaultTiming(5),
377
+ kind: 'lines',
378
+ additive: true,
379
+ opacity: 1,
380
+ derive(ctx) {
381
+ const P = [], M = [], R = [];
382
+ const a = new Vector3(), b = new Vector3();
383
+ for (const { mesh, m } of meshesInRoot(ctx)) {
384
+ if (mesh.geometry.attributes.position.count > 200000)
385
+ continue;
386
+ const e = new EdgesGeometry(mesh.geometry, 18);
387
+ const pos = e.attributes.position;
388
+ for (let i = 0; i < pos.count; i += 2) {
389
+ a.fromBufferAttribute(pos, i).applyMatrix4(m);
390
+ b.fromBufferAttribute(pos, i + 1).applyMatrix4(m);
391
+ const mx = (a.x + b.x) / 2, my = (a.y + b.y) / 2, mz = (a.z + b.z) / 2, r = Math.random();
392
+ P.push(a.x, a.y, a.z, b.x, b.y, b.z);
393
+ M.push(mx, my, mz, mx, my, mz);
394
+ R.push(r, r);
395
+ }
396
+ e.dispose();
397
+ }
398
+ const g = new BufferGeometry();
399
+ g.setAttribute('position', new BufferAttribute(new Float32Array(P), 3));
400
+ g.setAttribute('aWireMid', new BufferAttribute(new Float32Array(M), 3));
401
+ g.setAttribute('aWireR', new BufferAttribute(new Float32Array(R), 1));
402
+ return { geometry: g };
403
+ },
404
+ vertexPars: /* glsl */ `
405
+ attribute vec3 aWireMid;
406
+ attribute float aWireR;
407
+ varying float vWireF;`,
408
+ vertexLocal: /* glsl */ `
409
+ // each edge retracts into its middle, at its own moment
410
+ float rel = aWireR * 0.45;
411
+ float f = smoothstep(rel, rel + 0.45, age);
412
+ vWireF = f;
413
+ lp = mix(position, aWireMid, f);`,
414
+ fragmentPars: /* glsl */ `
415
+ varying float vWireF;`,
416
+ fragment: /* glsl */ `
417
+ vec3 col = mix(uStpC1, uStpC2, smoothstep(0.0, 0.8, age));
418
+ float a = uStpOpacity * (1.0 - vWireF) * smoothstep(0.0, 0.03, age);
419
+ stpOut = vec4(col, a);`,
420
+ });
421
+ // ---------------------------------------------------------------- bubbles (from its surface)
422
+ // Soap bubbles form all over the copy's surface (surface samples), let go one by one,
423
+ // rise with a little buoyant acceleration, wobble, and pop — each a crisp sphere drawn in
424
+ // a point: an anti-aliased edge, a thin-film sheen sliding between its two colours with the
425
+ // viewing angle, a bright rim and a small window highlight. Sized in world units (they
426
+ // shrink with distance like real bubbles).
427
+ export const bubbles = slotStamp({
428
+ ...defaultTiming(6),
429
+ kind: 'points',
430
+ opacity: 1,
431
+ derive(ctx) {
432
+ const s = surfaceOf(ctx.target, 240, 83);
433
+ const rnd = new Float32Array(s.n * 4);
434
+ for (let i = 0; i < s.n; i++)
435
+ rnd.set([Math.random(), Math.random(), Math.random(), Math.random()], i * 4);
436
+ const g = new BufferGeometry();
437
+ g.setAttribute('position', new BufferAttribute(s.pos.slice(), 3));
438
+ g.setAttribute('normal', new BufferAttribute(s.nrm.slice(), 3));
439
+ g.setAttribute('aBub', new BufferAttribute(rnd, 4));
440
+ return { geometry: g };
441
+ },
442
+ vertexPars: /* glsl */ `
443
+ attribute vec4 aBub;
444
+ varying float vBubA;
445
+ varying float vBubSeed;`,
446
+ vertexLocal: /* glsl */ `
447
+ vBubSeed = aBub.w;`,
448
+ vertexWorld: /* glsl */ `
449
+ float rel = aBub.x * 0.35; // when it lets go of the surface
450
+ float tau = max(0.0, age - rel);
451
+ float popAt = 0.35 + 0.55 * aBub.y; // how long it lives once free
452
+ // forms on the surface, then rises (accelerating a little) and wobbles
453
+ wp.xyz += n * uStpSpan * 0.015 * smoothstep(0.0, 0.05, age);
454
+ wp.y += uStpSpan * (0.6 + 0.8 * aBub.z) * pow(tau, 1.35);
455
+ wp.x += uStpSpan * 0.05 * sin(tau * 13.0 + aBub.w * 6.28) * smoothstep(0.0, 0.1, tau);
456
+ wp.z += uStpSpan * 0.05 * cos(tau * 11.0 + aBub.z * 6.28) * smoothstep(0.0, 0.1, tau);
457
+ float r = uStpSpan * (0.02 + uStpSize * 0.07) * (0.3 + 0.9 * aBub.z * aBub.z) * smoothstep(0.0, 0.08, age);
458
+ // the pop: it swells a touch and is gone in a blink
459
+ float pop = smoothstep(popAt - 0.02, popAt, tau);
460
+ r *= 1.0 + 0.25 * pop;
461
+ vBubA = 1.0 - step(popAt, tau);
462
+ vec4 cp = projectionMatrix * viewMatrix * wp;
463
+ stpSize = max(1.0, 2.0 * r * projectionMatrix[1][1] * uStpRes.y * 0.5 / max(cp.w, 1e-4));`,
464
+ fragmentPars: /* glsl */ `
465
+ varying float vBubA;
466
+ varying float vBubSeed;`,
467
+ fragment: /* glsl */ `
468
+ if (vBubA < 0.5) discard; // popped
469
+ float d = length(pc);
470
+ float edge = clamp((1.0 - d) / max(fwidth(d), 1e-4), 0.0, 1.0);
471
+ float nz = sqrt(max(0.0, 1.0 - d * d)); // the sphere's normal, facing us
472
+ float fres = pow(1.0 - nz, 2.2);
473
+ // thin film: the colour slides with the viewing angle and drifts slowly
474
+ float film = 0.5 + 0.5 * cos(6.2832 * (fres * 1.4 + vBubSeed + uStpTime * 0.08));
475
+ vec3 col = mix(uStpC1, uStpC2, film);
476
+ float window = smoothstep(0.26, 0.0, length(pc - vec2(-0.34, 0.36))); // a small bright reflection
477
+ float a = edge * uStpOpacity * (0.06 + 0.9 * fres + 0.95 * window) * (1.0 - smoothstep(0.85, 1.0, age));
478
+ stpOut = vec4(col + window * 0.8, a);`,
479
+ });
@@ -0,0 +1,57 @@
1
+ import { BufferGeometry, Matrix4 } from 'three';
2
+ import type { TrailCtx, TrailStyle } from './trailCore';
3
+ export declare const MAX_STAMPS = 24;
4
+ export interface Stamp {
5
+ m: Matrix4;
6
+ t: number;
7
+ seed: number;
8
+ }
9
+ export interface StampTiming {
10
+ /** Life of a stamp in seconds, from the settings. */
11
+ life: (ctx: TrailCtx) => number;
12
+ /** Distance between stamps in object sizes, from the settings. */
13
+ spacing: (ctx: TrailCtx) => number;
14
+ }
15
+ export declare const defaultTiming: (lifeScale: number) => StampTiming;
16
+ export declare const STP_NOISE = "\nfloat stpH(vec3 p) { p = fract(p * 0.3183099 + 0.1); p *= 17.0; return fract(p.x * p.y * p.z * (p.x + p.y + p.z)); }\nfloat stpN(vec3 x) {\n vec3 i = floor(x), f = fract(x); f = f * f * (3.0 - 2.0 * f);\n return mix(mix(mix(stpH(i), stpH(i + vec3(1, 0, 0)), f.x), mix(stpH(i + vec3(0, 1, 0)), stpH(i + vec3(1, 1, 0)), f.x), f.y),\n mix(mix(stpH(i + vec3(0, 0, 1)), stpH(i + vec3(1, 0, 1)), f.x), mix(stpH(i + vec3(0, 1, 1)), stpH(i + vec3(1, 1, 1)), f.x), f.y), f.z);\n}\nfloat stpFbm(vec3 p) { return 0.55 * stpN(p) + 0.3 * stpN(p * 2.07 + 3.1) + 0.15 * stpN(p * 4.13 + 7.7); }\nvec3 stpHash3(vec3 p) {\n p = vec3(dot(p, vec3(127.1, 311.7, 74.7)), dot(p, vec3(269.5, 183.3, 246.1)), dot(p, vec3(113.5, 271.9, 124.6)));\n return fract(sin(p) * 43758.5453123);\n}\n// cellular: (F1, F2, cell id)\nvec3 stpWorley(vec3 p) {\n vec3 i = floor(p), f = fract(p);\n float f1 = 8.0, f2 = 8.0, id = 0.0;\n for (int z = -1; z <= 1; z++) for (int y = -1; y <= 1; y++) for (int x = -1; x <= 1; x++) {\n vec3 g = vec3(float(x), float(y), float(z));\n vec3 h = stpHash3(i + g);\n vec3 r = g + h - f;\n float d = dot(r, r);\n if (d < f1) { f2 = f1; f1 = d; id = h.x; } else if (d < f2) f2 = d;\n }\n return vec3(sqrt(f1), sqrt(f2), id);\n}\nmat3 stpRot(vec3 ax, float an) {\n float s = sin(an), c = cos(an), oc = 1.0 - c;\n return mat3(oc*ax.x*ax.x + c, oc*ax.x*ax.y + ax.z*s, oc*ax.z*ax.x - ax.y*s,\n oc*ax.x*ax.y - ax.z*s, oc*ax.y*ax.y + c, oc*ax.y*ax.z + ax.x*s,\n oc*ax.z*ax.x + ax.y*s, oc*ax.y*ax.z - ax.x*s, oc*ax.z*ax.z + c);\n}";
17
+ export interface MeshStampConfig extends StampTiming {
18
+ /** GLSL before main (vertex), may use STP_NOISE. */
19
+ vertexPars?: string;
20
+ /** Vertex body: change `wp` (vec4, world) / `n` (vec3, world) from `L`, `aStpAge`, `aStpSeed`. */
21
+ vertex: string;
22
+ fragmentPars?: string;
23
+ /** Fragment body: set `stpOut`. */
24
+ fragment: string;
25
+ additive?: boolean;
26
+ /** Strength multiplier on Strength. */
27
+ opacity?: number;
28
+ }
29
+ export declare function meshStamp(cfg: MeshStampConfig): TrailStyle;
30
+ /** Geometry derived from the object, in its ROOT space, plus optional per-element instance data. */
31
+ export interface Derived {
32
+ geometry: BufferGeometry;
33
+ /** Per element (repeated for every stamp slot); omit for one element (the geometry itself). */
34
+ elements?: {
35
+ count: number;
36
+ attrs: Record<string, {
37
+ itemSize: number;
38
+ array: Float32Array;
39
+ }>;
40
+ };
41
+ }
42
+ export interface SlotStampConfig extends StampTiming {
43
+ kind: 'points' | 'lines' | 'mesh';
44
+ /** Build the derived geometry (cached by the style as it likes). */
45
+ derive: (ctx: TrailCtx) => Derived;
46
+ vertexPars?: string;
47
+ /** Object-local stage: move `lp` (vec3, root-local) / `ln` (normal) from `age`, `seed`, element attributes. */
48
+ vertexLocal?: string;
49
+ /** World stage: move `wp` / `n` (after the stamp's matrix). Set `stpSize` (px) for points. */
50
+ vertexWorld?: string;
51
+ fragmentPars?: string;
52
+ fragment: string;
53
+ additive?: boolean;
54
+ opacity?: number;
55
+ }
56
+ export declare function slotStamp(cfg: SlotStampConfig): TrailStyle;
57
+ //# sourceMappingURL=trailStamps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trailStamps.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/trailStamps.ts"],"names":[],"mappings":"AAwBA,OAAO,EACgC,cAAc,EACK,OAAO,EAChE,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExD,eAAO,MAAM,UAAU,KAAK,CAAC;AAK7B,MAAM,WAAW,KAAK;IAAG,CAAC,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAE9D,MAAM,WAAW,WAAW;IACxB,qDAAqD;IACrD,IAAI,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,MAAM,CAAC;IAChC,kEAAkE;IAClE,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,MAAM,CAAC;CACtC;AAED,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,KAAG,WAGhD,CAAC;AAwBH,eAAO,MAAM,SAAS,smDA8BpB,CAAC;AA8DH,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAChD,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kGAAkG;IAClG,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,UAAU,CAyF1D;AAID,oGAAoG;AACpG,MAAM,WAAW,OAAO;IACpB,QAAQ,EAAE,cAAc,CAAC;IACzB,+FAA+F;IAC/F,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,YAAY,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CAClG;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAChD,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,oEAAoE;IACpE,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+GAA+G;IAC/G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,UAAU,CA4F1D"}