@3driseai/3drise-viewer 0.1.2 → 0.1.4

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 (331) hide show
  1. package/dist/components/AnimatedObject.d.ts +2 -1
  2. package/dist/components/AnimatedObject.d.ts.map +1 -1
  3. package/dist/components/AnimatedObject.js +11 -3
  4. package/dist/components/Bubbles.d.ts +2 -1
  5. package/dist/components/Bubbles.d.ts.map +1 -1
  6. package/dist/components/Bubbles.js +5 -2
  7. package/dist/components/CameraController.d.ts +9 -1
  8. package/dist/components/CameraController.d.ts.map +1 -1
  9. package/dist/components/CameraController.js +12 -1
  10. package/dist/components/Clouds.d.ts +2 -1
  11. package/dist/components/Clouds.d.ts.map +1 -1
  12. package/dist/components/Clouds.js +3 -4
  13. package/dist/components/CreatedObject.d.ts +2 -2
  14. package/dist/components/CreatedObject.d.ts.map +1 -1
  15. package/dist/components/CreatedObject.js +5 -10
  16. package/dist/components/CustomPrimitive.d.ts +2 -2
  17. package/dist/components/CustomPrimitive.d.ts.map +1 -1
  18. package/dist/components/CustomPrimitive.js +6 -2
  19. package/dist/components/Earth.d.ts +2 -4
  20. package/dist/components/Earth.d.ts.map +1 -1
  21. package/dist/components/Earth.js +6 -4
  22. package/dist/components/EffectsGenerator.d.ts +2 -1
  23. package/dist/components/EffectsGenerator.d.ts.map +1 -1
  24. package/dist/components/EffectsGenerator.js +26 -25
  25. package/dist/components/EffectsGroup.d.ts +2 -1
  26. package/dist/components/EffectsGroup.d.ts.map +1 -1
  27. package/dist/components/EffectsGroup.js +7 -2
  28. package/dist/components/EnvironmentManager.js +2 -2
  29. package/dist/components/EnvironmentObject.d.ts +2 -1
  30. package/dist/components/EnvironmentObject.d.ts.map +1 -1
  31. package/dist/components/EnvironmentObject.js +2 -2
  32. package/dist/components/Frame.d.ts +3 -2
  33. package/dist/components/Frame.d.ts.map +1 -1
  34. package/dist/components/Frame.js +3 -1
  35. package/dist/components/Galaxy.d.ts +2 -3
  36. package/dist/components/Galaxy.d.ts.map +1 -1
  37. package/dist/components/Galaxy.js +10 -10
  38. package/dist/components/GalleryLayout.d.ts +2 -1
  39. package/dist/components/GalleryLayout.d.ts.map +1 -1
  40. package/dist/components/GalleryLayout.js +3 -1
  41. package/dist/components/GeometryShape.d.ts +3 -2
  42. package/dist/components/GeometryShape.d.ts.map +1 -1
  43. package/dist/components/GeometryShape.js +17 -6
  44. package/dist/components/Glyphs.d.ts +2 -1
  45. package/dist/components/Glyphs.d.ts.map +1 -1
  46. package/dist/components/Glyphs.js +6 -2
  47. package/dist/components/GridHelper.d.ts +2 -1
  48. package/dist/components/GridHelper.d.ts.map +1 -1
  49. package/dist/components/GridHelper.js +3 -1
  50. package/dist/components/GridsGenerator.d.ts +2 -1
  51. package/dist/components/GridsGenerator.d.ts.map +1 -1
  52. package/dist/components/GridsGenerator.js +12 -4
  53. package/dist/components/HdrPlaylistRenderer.d.ts +2 -1
  54. package/dist/components/HdrPlaylistRenderer.d.ts.map +1 -1
  55. package/dist/components/HdrPlaylistRenderer.js +3 -1
  56. package/dist/components/Lensflare.d.ts +2 -1
  57. package/dist/components/Lensflare.d.ts.map +1 -1
  58. package/dist/components/Lensflare.js +3 -1
  59. package/dist/components/Letter.d.ts +3 -2
  60. package/dist/components/Letter.d.ts.map +1 -1
  61. package/dist/components/Letter.js +3 -1
  62. package/dist/components/Letters.d.ts +3 -2
  63. package/dist/components/Letters.d.ts.map +1 -1
  64. package/dist/components/Letters.js +3 -1
  65. package/dist/components/LightObject.d.ts +2 -1
  66. package/dist/components/LightObject.d.ts.map +1 -1
  67. package/dist/components/LightObject.js +11 -7
  68. package/dist/components/LightsManager.d.ts +2 -1
  69. package/dist/components/LightsManager.d.ts.map +1 -1
  70. package/dist/components/LightsManager.js +6 -3
  71. package/dist/components/Lines.d.ts +2 -1
  72. package/dist/components/Lines.d.ts.map +1 -1
  73. package/dist/components/Lines.js +2 -2
  74. package/dist/components/Moon.d.ts +2 -3
  75. package/dist/components/Moon.d.ts.map +1 -1
  76. package/dist/components/Moon.js +6 -4
  77. package/dist/components/MyGrid.d.ts +3 -2
  78. package/dist/components/MyGrid.d.ts.map +1 -1
  79. package/dist/components/MyGrid.js +5 -2
  80. package/dist/components/ObjectNode.d.ts +2 -2
  81. package/dist/components/ObjectNode.d.ts.map +1 -1
  82. package/dist/components/ObjectNode.js +30 -30
  83. package/dist/components/ObjectNodeApi.d.ts +2 -2
  84. package/dist/components/ObjectNodeApi.d.ts.map +1 -1
  85. package/dist/components/ObjectNodeApi.js +2 -2
  86. package/dist/components/ObjectsRenderer.d.ts +2 -1
  87. package/dist/components/ObjectsRenderer.d.ts.map +1 -1
  88. package/dist/components/ObjectsRenderer.js +15 -4
  89. package/dist/components/ObjectsRendererApi.d.ts +2 -1
  90. package/dist/components/ObjectsRendererApi.d.ts.map +1 -1
  91. package/dist/components/ObjectsRendererApi.js +2 -2
  92. package/dist/components/Ocean.d.ts +2 -1
  93. package/dist/components/Ocean.d.ts.map +1 -1
  94. package/dist/components/Ocean.js +3 -1
  95. package/dist/components/Outline.d.ts +3 -2
  96. package/dist/components/Outline.d.ts.map +1 -1
  97. package/dist/components/Outline.js +6 -2
  98. package/dist/components/ParticlesR3f.d.ts +2 -1
  99. package/dist/components/ParticlesR3f.d.ts.map +1 -1
  100. package/dist/components/ParticlesR3f.js +3 -1
  101. package/dist/components/Path.d.ts +2 -1
  102. package/dist/components/Path.d.ts.map +1 -1
  103. package/dist/components/Path.js +14 -3
  104. package/dist/components/PathGeometry.d.ts +2 -1
  105. package/dist/components/PathGeometry.d.ts.map +1 -1
  106. package/dist/components/PathGeometry.js +6 -2
  107. package/dist/components/PathRenderer.d.ts +2 -1
  108. package/dist/components/PathRenderer.d.ts.map +1 -1
  109. package/dist/components/PathRenderer.js +6 -2
  110. package/dist/components/Planet.d.ts +2 -3
  111. package/dist/components/Planet.d.ts.map +1 -1
  112. package/dist/components/Planet.js +6 -4
  113. package/dist/components/PointCloud.d.ts +2 -1
  114. package/dist/components/PointCloud.d.ts.map +1 -1
  115. package/dist/components/PointCloud.js +3 -1
  116. package/dist/components/ProjectLoader.d.ts +2 -1
  117. package/dist/components/ProjectLoader.d.ts.map +1 -1
  118. package/dist/components/ProjectLoader.js +6 -3
  119. package/dist/components/Rain.d.ts +2 -1
  120. package/dist/components/Rain.d.ts.map +1 -1
  121. package/dist/components/Rain.js +7 -1
  122. package/dist/components/SceneBuilder.d.ts +2 -1
  123. package/dist/components/SceneBuilder.d.ts.map +1 -1
  124. package/dist/components/SceneBuilder.js +2 -2
  125. package/dist/components/ShootingStar.d.ts +2 -1
  126. package/dist/components/ShootingStar.d.ts.map +1 -1
  127. package/dist/components/ShootingStar.js +5 -2
  128. package/dist/components/ShootingStars.d.ts +2 -1
  129. package/dist/components/ShootingStars.d.ts.map +1 -1
  130. package/dist/components/ShootingStars.js +2 -2
  131. package/dist/components/SkyController.d.ts +3 -2
  132. package/dist/components/SkyController.d.ts.map +1 -1
  133. package/dist/components/SkyController.js +9 -6
  134. package/dist/components/SkyMesh.d.ts +2 -3
  135. package/dist/components/SkyMesh.d.ts.map +1 -1
  136. package/dist/components/SkyMesh.js +3 -5
  137. package/dist/components/SkySystem.d.ts +2 -1
  138. package/dist/components/SkySystem.d.ts.map +1 -1
  139. package/dist/components/SkySystem.js +6 -2
  140. package/dist/components/Skybox.d.ts +2 -1
  141. package/dist/components/Skybox.d.ts.map +1 -1
  142. package/dist/components/Skybox.js +5 -2
  143. package/dist/components/SolarSystem.d.ts +2 -4
  144. package/dist/components/SolarSystem.d.ts.map +1 -1
  145. package/dist/components/SolarSystem.js +3 -1
  146. package/dist/components/SparklesBurst.d.ts +2 -1
  147. package/dist/components/SparklesBurst.d.ts.map +1 -1
  148. package/dist/components/SparklesBurst.js +5 -2
  149. package/dist/components/Stars.d.ts +2 -3
  150. package/dist/components/Stars.d.ts.map +1 -1
  151. package/dist/components/Stars.js +3 -2
  152. package/dist/components/Sun.d.ts +3 -2
  153. package/dist/components/Sun.d.ts.map +1 -1
  154. package/dist/components/Sun.js +7 -3
  155. package/dist/components/SunCore.d.ts +3 -2
  156. package/dist/components/SunCore.d.ts.map +1 -1
  157. package/dist/components/SunCore.js +3 -1
  158. package/dist/components/SunLight.d.ts +2 -1
  159. package/dist/components/SunLight.d.ts.map +1 -1
  160. package/dist/components/SunLight.js +3 -1
  161. package/dist/components/Text2D.d.ts +2 -1
  162. package/dist/components/Text2D.d.ts.map +1 -1
  163. package/dist/components/Text2D.js +3 -1
  164. package/dist/components/Text3D.d.ts +2 -1
  165. package/dist/components/Text3D.d.ts.map +1 -1
  166. package/dist/components/Text3D.js +2 -2
  167. package/dist/components/VolumePoints.d.ts +3 -2
  168. package/dist/components/VolumePoints.d.ts.map +1 -1
  169. package/dist/components/VolumePoints.js +6 -2
  170. package/dist/components/cursor/AuraCursor.d.ts.map +1 -1
  171. package/dist/components/cursor/AuraCursor.js +3 -1
  172. package/dist/components/cursor/AuroraCursor.d.ts.map +1 -1
  173. package/dist/components/cursor/AuroraCursor.js +5 -2
  174. package/dist/components/cursor/BubblesCursor.d.ts.map +1 -1
  175. package/dist/components/cursor/BubblesCursor.js +5 -2
  176. package/dist/components/cursor/CometCursor.d.ts.map +1 -1
  177. package/dist/components/cursor/CometCursor.js +6 -3
  178. package/dist/components/cursor/CrosshairCursor.d.ts.map +1 -1
  179. package/dist/components/cursor/CrosshairCursor.js +6 -3
  180. package/dist/components/cursor/CursorActions.d.ts +2 -1
  181. package/dist/components/cursor/CursorActions.d.ts.map +1 -1
  182. package/dist/components/cursor/CursorActions.js +12 -10
  183. package/dist/components/cursor/CursorController.d.ts +4 -1
  184. package/dist/components/cursor/CursorController.d.ts.map +1 -1
  185. package/dist/components/cursor/CursorController.js +1 -1
  186. package/dist/components/cursor/CursorEffects.d.ts +4 -2
  187. package/dist/components/cursor/CursorEffects.d.ts.map +1 -1
  188. package/dist/components/cursor/CursorEffects.js +6 -2
  189. package/dist/components/cursor/FerrofluidCursor.d.ts.map +1 -1
  190. package/dist/components/cursor/FerrofluidCursor.js +3 -1
  191. package/dist/components/cursor/GlyphRingCursor.d.ts.map +1 -1
  192. package/dist/components/cursor/GlyphRingCursor.js +3 -1
  193. package/dist/components/cursor/LightningCursor.d.ts.map +1 -1
  194. package/dist/components/cursor/LightningCursor.js +3 -1
  195. package/dist/components/cursor/LiquidMetalCursor.d.ts.map +1 -1
  196. package/dist/components/cursor/LiquidMetalCursor.js +3 -1
  197. package/dist/components/cursor/OrbCursor.d.ts.map +1 -1
  198. package/dist/components/cursor/OrbCursor.js +3 -1
  199. package/dist/components/cursor/PlasmaWhipCursor.d.ts.map +1 -1
  200. package/dist/components/cursor/PlasmaWhipCursor.js +3 -1
  201. package/dist/components/cursor/SparklesCursor.d.ts.map +1 -1
  202. package/dist/components/cursor/SparklesCursor.js +5 -2
  203. package/dist/components/cursor/TeslaCursor.d.ts.map +1 -1
  204. package/dist/components/cursor/TeslaCursor.js +6 -9
  205. package/dist/components/cursor/clickActions/BoltFlashAction.d.ts +2 -1
  206. package/dist/components/cursor/clickActions/BoltFlashAction.d.ts.map +1 -1
  207. package/dist/components/cursor/clickActions/BoltFlashAction.js +5 -2
  208. package/dist/components/cursor/clickActions/GlyphInscriptionAction.d.ts +2 -1
  209. package/dist/components/cursor/clickActions/GlyphInscriptionAction.d.ts.map +1 -1
  210. package/dist/components/cursor/clickActions/GlyphInscriptionAction.js +3 -1
  211. package/dist/components/cursor/clickActions/ImplosionAction.d.ts +2 -1
  212. package/dist/components/cursor/clickActions/ImplosionAction.d.ts.map +1 -1
  213. package/dist/components/cursor/clickActions/ImplosionAction.js +3 -1
  214. package/dist/components/cursor/clickActions/PhaseShiftAction.d.ts +2 -1
  215. package/dist/components/cursor/clickActions/PhaseShiftAction.d.ts.map +1 -1
  216. package/dist/components/cursor/clickActions/PhaseShiftAction.js +5 -2
  217. package/dist/components/cursor/clickActions/PlasmaBombAction.d.ts +2 -1
  218. package/dist/components/cursor/clickActions/PlasmaBombAction.d.ts.map +1 -1
  219. package/dist/components/cursor/clickActions/PlasmaBombAction.js +5 -2
  220. package/dist/components/cursor/clickActions/RealityTearAction.d.ts +2 -1
  221. package/dist/components/cursor/clickActions/RealityTearAction.d.ts.map +1 -1
  222. package/dist/components/cursor/clickActions/RealityTearAction.js +3 -1
  223. package/dist/components/cursor/clickActions/ShockwaveAction.d.ts +2 -1
  224. package/dist/components/cursor/clickActions/ShockwaveAction.d.ts.map +1 -1
  225. package/dist/components/cursor/clickActions/ShockwaveAction.js +5 -2
  226. package/dist/components/cursor/clickActions/SparklesBurstAction.d.ts +2 -1
  227. package/dist/components/cursor/clickActions/SparklesBurstAction.d.ts.map +1 -1
  228. package/dist/components/cursor/clickActions/SparklesBurstAction.js +3 -1
  229. package/dist/components/cursor/clickActions/VoronoiFractureAction.d.ts +2 -1
  230. package/dist/components/cursor/clickActions/VoronoiFractureAction.d.ts.map +1 -1
  231. package/dist/components/cursor/clickActions/VoronoiFractureAction.js +3 -1
  232. package/dist/components/cursor/clickActions/index.d.ts +11 -0
  233. package/dist/components/cursor/clickActions/index.d.ts.map +1 -0
  234. package/dist/components/cursor/clickActions/index.js +10 -0
  235. package/dist/components/cursor/index.d.ts +21 -0
  236. package/dist/components/cursor/index.d.ts.map +1 -0
  237. package/dist/components/cursor/index.js +19 -0
  238. package/dist/components/effects/AuraEffect.d.ts +2 -1
  239. package/dist/components/effects/AuraEffect.d.ts.map +1 -1
  240. package/dist/components/effects/AuraEffect.js +5 -2
  241. package/dist/components/effects/AuroraEffect.d.ts +2 -1
  242. package/dist/components/effects/AuroraEffect.d.ts.map +1 -1
  243. package/dist/components/effects/AuroraEffect.js +3 -1
  244. package/dist/components/effects/BlackHoleEffect.d.ts +2 -1
  245. package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -1
  246. package/dist/components/effects/BlackHoleEffect.js +3 -1
  247. package/dist/components/effects/ConstellationEffect.d.ts +2 -1
  248. package/dist/components/effects/ConstellationEffect.d.ts.map +1 -1
  249. package/dist/components/effects/ConstellationEffect.js +3 -1
  250. package/dist/components/effects/Corona.d.ts +19 -0
  251. package/dist/components/effects/Corona.d.ts.map +1 -0
  252. package/dist/components/effects/Corona.js +15 -0
  253. package/dist/components/effects/DataStreamEffect.d.ts +2 -1
  254. package/dist/components/effects/DataStreamEffect.d.ts.map +1 -1
  255. package/dist/components/effects/DataStreamEffect.js +5 -2
  256. package/dist/components/effects/DnaHelixEffect.d.ts +2 -1
  257. package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -1
  258. package/dist/components/effects/DnaHelixEffect.js +3 -1
  259. package/dist/components/effects/Fire.d.ts +3 -2
  260. package/dist/components/effects/Fire.d.ts.map +1 -1
  261. package/dist/components/effects/Fire.js +3 -1
  262. package/dist/components/effects/FireEffect.d.ts +2 -1
  263. package/dist/components/effects/FireEffect.d.ts.map +1 -1
  264. package/dist/components/effects/FireEffect.js +5 -2
  265. package/dist/components/effects/Flares.d.ts +25 -0
  266. package/dist/components/effects/Flares.d.ts.map +1 -0
  267. package/dist/components/effects/Flares.js +136 -0
  268. package/dist/components/effects/ForcefieldEffect.d.ts +2 -1
  269. package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -1
  270. package/dist/components/effects/ForcefieldEffect.js +3 -1
  271. package/dist/components/effects/HologramEffect.d.ts +2 -1
  272. package/dist/components/effects/HologramEffect.d.ts.map +1 -1
  273. package/dist/components/effects/HologramEffect.js +5 -2
  274. package/dist/components/effects/IceCrystalsEffect.d.ts +2 -1
  275. package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -1
  276. package/dist/components/effects/IceCrystalsEffect.js +3 -1
  277. package/dist/components/effects/LightningEffect.d.ts +2 -1
  278. package/dist/components/effects/LightningEffect.d.ts.map +1 -1
  279. package/dist/components/effects/LightningEffect.js +5 -2
  280. package/dist/components/effects/MoleculesEffect.d.ts +2 -1
  281. package/dist/components/effects/MoleculesEffect.d.ts.map +1 -1
  282. package/dist/components/effects/MoleculesEffect.js +5 -2
  283. package/dist/components/effects/NeuralNetworkEffect.d.ts +2 -1
  284. package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -1
  285. package/dist/components/effects/NeuralNetworkEffect.js +3 -1
  286. package/dist/components/effects/OrbEffect.d.ts +2 -1
  287. package/dist/components/effects/OrbEffect.d.ts.map +1 -1
  288. package/dist/components/effects/OrbEffect.js +5 -2
  289. package/dist/components/effects/PortalEffect.d.ts +2 -1
  290. package/dist/components/effects/PortalEffect.d.ts.map +1 -1
  291. package/dist/components/effects/PortalEffect.js +5 -2
  292. package/dist/components/effects/ShockwaveEffect.d.ts +2 -1
  293. package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -1
  294. package/dist/components/effects/ShockwaveEffect.js +5 -2
  295. package/dist/components/effects/SmokePlumeEffect.d.ts +2 -1
  296. package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -1
  297. package/dist/components/effects/SmokePlumeEffect.js +5 -2
  298. package/dist/components/effects/SmokeRibbon.d.ts +3 -2
  299. package/dist/components/effects/SmokeRibbon.d.ts.map +1 -1
  300. package/dist/components/effects/SmokeRibbon.js +5 -2
  301. package/dist/components/effects/SmokeRingEffect.d.ts +2 -1
  302. package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -1
  303. package/dist/components/effects/SmokeRingEffect.js +5 -2
  304. package/dist/components/effects/VolumetricFogEffect.d.ts +2 -1
  305. package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -1
  306. package/dist/components/effects/VolumetricFogEffect.js +5 -2
  307. package/dist/components/effects/index.d.ts +28 -0
  308. package/dist/components/effects/index.d.ts.map +1 -0
  309. package/dist/components/effects/index.js +24 -0
  310. package/dist/components/index.d.ts +112 -0
  311. package/dist/components/index.d.ts.map +1 -0
  312. package/dist/components/index.js +77 -0
  313. package/dist/constants.d.ts +1 -1
  314. package/dist/constants.d.ts.map +1 -1
  315. package/dist/constants.js +1 -1
  316. package/dist/hooks/index.d.ts +55 -0
  317. package/dist/hooks/index.d.ts.map +1 -1
  318. package/dist/hooks/index.js +46 -1
  319. package/dist/hooks/useObjectReady.d.ts +29 -0
  320. package/dist/hooks/useObjectReady.d.ts.map +1 -0
  321. package/dist/hooks/useObjectReady.js +59 -0
  322. package/dist/index.d.ts +4 -135
  323. package/dist/index.d.ts.map +1 -1
  324. package/dist/index.js +6 -108
  325. package/dist/types/index.d.ts +2 -0
  326. package/dist/types/index.d.ts.map +1 -0
  327. package/dist/types/index.js +1 -0
  328. package/dist/types/objectReady.d.ts +24 -0
  329. package/dist/types/objectReady.d.ts.map +1 -0
  330. package/dist/types/objectReady.js +1 -0
  331. package/package.json +3 -3
@@ -1,7 +1,8 @@
1
+ import type { ObjectReadyProps } from '../../../types/objectReady';
1
2
  import * as THREE from 'three';
2
3
  import React from "react";
3
4
  import type { VoronoiFractureActionConfig } from "@3driseai/3drise-core";
4
- interface VoronoiFractureActionProps {
5
+ interface VoronoiFractureActionProps extends ObjectReadyProps {
5
6
  worldPos: THREE.Vector3;
6
7
  config: VoronoiFractureActionConfig;
7
8
  onDone: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"VoronoiFractureAction.d.ts","sourceRoot":"","sources":["../../../../src/components/cursor/clickActions/VoronoiFractureAction.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,UAAU,0BAA0B;IAChC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;IACxB,MAAM,EAAE,2BAA2B,CAAC;IACpC,MAAM,EAAE,MAAM,IAAI,CAAC;CACtB;AAuED,QAAA,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA2E/D,CAAC;AACF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"VoronoiFractureAction.d.ts","sourceRoot":"","sources":["../../../../src/components/cursor/clickActions/VoronoiFractureAction.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,UAAU,0BAA2B,SAAQ,gBAAgB;IACzD,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;IACxB,MAAM,EAAE,2BAA2B,CAAC;IACpC,MAAM,EAAE,MAAM,IAAI,CAAC;CACtB;AAuED,QAAA,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA4E/D,CAAC;AACF,eAAe,qBAAqB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useObjectReady } from '../../../hooks/useObjectReady.js';
2
3
  import { useEffect, useMemo, useRef } from 'react';
3
4
  import { useFrame } from '@react-three/fiber';
4
5
  import * as THREE from 'three';
@@ -70,9 +71,10 @@ const vertexShader = /* glsl */ `
70
71
  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
71
72
  }
72
73
  `;
73
- const VoronoiFractureAction = ({ worldPos, config, onDone }) => {
74
+ const VoronoiFractureAction = ({ worldPos, config, onDone, onObjectReady, onObjectDispose }) => {
74
75
  const startRef = useRef(null);
75
76
  const groupRef = useRef(null);
77
+ useObjectReady(groupRef, config, onObjectReady, onObjectDispose);
76
78
  const COUNT = Math.max(6, Math.floor(config.shardCount ?? 24));
77
79
  const RADIUS = config.scale ?? 1.2;
78
80
  const { shards, geometry, material } = useMemo(() => {
@@ -0,0 +1,11 @@
1
+ export type { ShockwaveActionProps } from './ShockwaveAction';
2
+ export { default as BoltFlashAction } from './BoltFlashAction';
3
+ export { default as GlyphInscriptionAction } from './GlyphInscriptionAction';
4
+ export { default as ImplosionAction } from './ImplosionAction';
5
+ export { default as PhaseShiftAction } from './PhaseShiftAction';
6
+ export { default as PlasmaBombAction } from './PlasmaBombAction';
7
+ export { default as RealityTearAction } from './RealityTearAction';
8
+ export { default as ShockwaveAction } from './ShockwaveAction';
9
+ export { default as SparklesBurstAction } from './SparklesBurstAction';
10
+ export { default as VoronoiFractureAction } from './VoronoiFractureAction';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/cursor/clickActions/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,10 @@
1
+ // Cursor click actions — one-shot effects spawned on pointer down.
2
+ export { default as BoltFlashAction } from './BoltFlashAction.js';
3
+ export { default as GlyphInscriptionAction } from './GlyphInscriptionAction.js';
4
+ export { default as ImplosionAction } from './ImplosionAction.js';
5
+ export { default as PhaseShiftAction } from './PhaseShiftAction.js';
6
+ export { default as PlasmaBombAction } from './PlasmaBombAction.js';
7
+ export { default as RealityTearAction } from './RealityTearAction.js';
8
+ export { default as ShockwaveAction } from './ShockwaveAction.js';
9
+ export { default as SparklesBurstAction } from './SparklesBurstAction.js';
10
+ export { default as VoronoiFractureAction } from './VoronoiFractureAction.js';
@@ -0,0 +1,21 @@
1
+ export type { CursorActionsProps } from './CursorActions';
2
+ export type { CursorControllerProps } from './CursorController';
3
+ export type { CursorEffectsProps, CursorTypeProps } from './CursorEffects';
4
+ export { default as CursorController } from './CursorController';
5
+ export { default as CursorActions } from './CursorActions';
6
+ export { default as CursorEffects } from './CursorEffects';
7
+ export { default as AuraCursor } from './AuraCursor';
8
+ export { default as AuroraCursor } from './AuroraCursor';
9
+ export { default as BubblesCursor } from './BubblesCursor';
10
+ export { default as CometCursor } from './CometCursor';
11
+ export { default as CrosshairCursor } from './CrosshairCursor';
12
+ export { default as FerrofluidCursor } from './FerrofluidCursor';
13
+ export { default as GlyphRingCursor } from './GlyphRingCursor';
14
+ export { default as LightningCursor } from './LightningCursor';
15
+ export { default as LiquidMetalCursor } from './LiquidMetalCursor';
16
+ export { default as OrbCursor } from './OrbCursor';
17
+ export { default as PlasmaWhipCursor } from './PlasmaWhipCursor';
18
+ export { default as SparklesCursor } from './SparklesCursor';
19
+ export { default as TeslaCursor } from './TeslaCursor';
20
+ export * from './clickActions';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/cursor/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGhE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG3D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvD,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,19 @@
1
+ // Cursor module — cursor controller, effect renderers and per-cursor visuals.
2
+ export { default as CursorController } from './CursorController.js';
3
+ export { default as CursorActions } from './CursorActions.js';
4
+ export { default as CursorEffects } from './CursorEffects.js';
5
+ // Cursor variants
6
+ export { default as AuraCursor } from './AuraCursor.js';
7
+ export { default as AuroraCursor } from './AuroraCursor.js';
8
+ export { default as BubblesCursor } from './BubblesCursor.js';
9
+ export { default as CometCursor } from './CometCursor.js';
10
+ export { default as CrosshairCursor } from './CrosshairCursor.js';
11
+ export { default as FerrofluidCursor } from './FerrofluidCursor.js';
12
+ export { default as GlyphRingCursor } from './GlyphRingCursor.js';
13
+ export { default as LightningCursor } from './LightningCursor.js';
14
+ export { default as LiquidMetalCursor } from './LiquidMetalCursor.js';
15
+ export { default as OrbCursor } from './OrbCursor.js';
16
+ export { default as PlasmaWhipCursor } from './PlasmaWhipCursor.js';
17
+ export { default as SparklesCursor } from './SparklesCursor.js';
18
+ export { default as TeslaCursor } from './TeslaCursor.js';
19
+ export * from './clickActions/index.js';
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import type { AuraConfig, AnimationOptions } from "@3driseai/3drise-core";
3
- interface AuraEffectProps {
3
+ import type { ObjectReadyProps } from '../../types/objectReady';
4
+ interface AuraEffectProps extends ObjectReadyProps {
4
5
  boundingRadius: number;
5
6
  config: AuraConfig;
6
7
  animations?: AnimationOptions[];
@@ -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;AAC1E,UAAU,eAAe;IACrB,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,CA2CzC,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;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"}
@@ -3,6 +3,7 @@ import { useRef, useMemo } from 'react';
3
3
  import { useFrame } from '@react-three/fiber';
4
4
  import * as THREE from 'three';
5
5
  import { applyGenerativeAnimations } from '../../utils/handleGenerativeEffectsAnimations.js';
6
+ import { useObjectReady } from '../../hooks/useObjectReady.js';
6
7
  const vertexShader = /* glsl */ `
7
8
  varying vec3 vNormal;
8
9
  varying vec3 vViewDir;
@@ -80,9 +81,11 @@ const fragmentShader = /* glsl */ `
80
81
  gl_FragColor = vec4(col, alpha);
81
82
  }
82
83
  `;
83
- const AuraEffect = ({ boundingRadius, config, animations }) => {
84
+ const AuraEffect = ({ boundingRadius, config, animations, onObjectReady, onObjectDispose }) => {
84
85
  const { layerCount, fresnelPower, pulseSpeed, innerColor, outerColor, noiseAmount, sizeMultiplier, opacity, speed, intensity } = config;
85
86
  const startValuesCacheRef = useRef({});
87
+ const rootRef = useRef(null);
88
+ useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
86
89
  // Derive a single base hue from the innerColor
87
90
  const baseHue = useMemo(() => {
88
91
  const c = new THREE.Color(innerColor);
@@ -117,7 +120,7 @@ const AuraEffect = ({ boundingRadius, config, animations }) => {
117
120
  }
118
121
  });
119
122
  const baseR = boundingRadius * sizeMultiplier;
120
- return (_jsx("group", { children: Array.from({ length: layerCount }, (_, i) => {
123
+ return (_jsx("group", { ref: rootRef, children: Array.from({ length: layerCount }, (_, i) => {
121
124
  // Non-linear layer spacing: outer layers spread wider
122
125
  const layerT = layerCount > 1 ? i / (layerCount - 1) : 0;
123
126
  const r = baseR * (1 + layerT * layerT * 0.5);
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import type { AuroraConfig, AnimationOptions } from "@3driseai/3drise-core";
3
- interface AuroraEffectProps {
3
+ import type { ObjectReadyProps } from '../../types/objectReady';
4
+ interface AuroraEffectProps extends ObjectReadyProps {
4
5
  boundingRadius: number;
5
6
  config: AuroraConfig;
6
7
  animations?: AnimationOptions[];
@@ -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;AAC5E,UAAU,iBAAiB;IACvB,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,CAuD7C,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;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"}
@@ -3,6 +3,7 @@ import { useRef, useMemo } from 'react';
3
3
  import { useFrame } from '@react-three/fiber';
4
4
  import * as THREE from 'three';
5
5
  import { applyGenerativeAnimations } from '../../utils/handleGenerativeEffectsAnimations.js';
6
+ import { useObjectReady } from '../../hooks/useObjectReady.js';
6
7
  const ribbonVert = /* glsl */ `
7
8
  uniform float u_time;
8
9
  uniform float uPhase;
@@ -53,9 +54,10 @@ const ribbonFrag = /* glsl */ `
53
54
  gl_FragColor = vec4(col, alpha);
54
55
  }
55
56
  `;
56
- const AuroraEffect = ({ boundingRadius, config, animations }) => {
57
+ const AuroraEffect = ({ boundingRadius, config, animations, onObjectReady, onObjectDispose }) => {
57
58
  const { ribbonCount, waveAmplitude, colorShift, arcWidth, opacity, speed, intensity } = config;
58
59
  const groupRef = useRef(null);
60
+ useObjectReady(groupRef, config, onObjectReady, onObjectDispose);
59
61
  const ribbons = useMemo(() => {
60
62
  const N = Math.max(3, Math.min(ribbonCount, 10));
61
63
  const r = boundingRadius;
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import type { BlackHoleConfig, AnimationOptions } from "@3driseai/3drise-core";
3
- interface BlackHoleEffectProps {
3
+ import type { ObjectReadyProps } from '../../types/objectReady';
4
+ interface BlackHoleEffectProps extends ObjectReadyProps {
4
5
  boundingRadius: number;
5
6
  config: BlackHoleConfig;
6
7
  animations?: AnimationOptions[];
@@ -1 +1 @@
1
- {"version":3,"file":"BlackHoleEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/BlackHoleEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,UAAU,oBAAoB;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAsHD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAuEnD,CAAC;AACF,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;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,UAAU,oBAAqB,SAAQ,gBAAgB;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAsHD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAwEnD,CAAC;AACF,eAAe,eAAe,CAAC"}
@@ -3,6 +3,7 @@ import { useRef, useMemo } from 'react';
3
3
  import { useFrame } from '@react-three/fiber';
4
4
  import * as THREE from 'three';
5
5
  import { applyGenerativeAnimations } from '../../utils/handleGenerativeEffectsAnimations.js';
6
+ import { useObjectReady } from '../../hooks/useObjectReady.js';
6
7
  // ── Accretion disk shader ─────────────────────────────────────────────────────
7
8
  const diskVert = /* glsl */ `
8
9
  varying vec2 vUv;
@@ -118,10 +119,11 @@ const jetFrag = /* glsl */ `
118
119
  gl_FragColor = vec4(uJetColor, a);
119
120
  }
120
121
  `;
121
- const BlackHoleEffect = ({ boundingRadius, config, animations }) => {
122
+ const BlackHoleEffect = ({ boundingRadius, config, animations, onObjectReady, onObjectDispose }) => {
122
123
  const { diskColor, jetEnabled, jetColor, rotationSpeed, tilt, opacity, speed, intensity } = config;
123
124
  const startValuesCacheRef = useRef({});
124
125
  const groupRef = useRef(null);
126
+ useObjectReady(groupRef, config, onObjectReady, onObjectDispose);
125
127
  const r = boundingRadius;
126
128
  const { diskMat, lensMat, jetMat1, jetMat2, jetGeo } = useMemo(() => {
127
129
  const dc = new THREE.Color(diskColor);
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import type { ConstellationConfig, AnimationOptions } from "@3driseai/3drise-core";
3
- interface ConstellationEffectProps {
3
+ import type { ObjectReadyProps } from '../../types/objectReady';
4
+ interface ConstellationEffectProps extends ObjectReadyProps {
4
5
  boundingRadius: number;
5
6
  config: ConstellationConfig;
6
7
  animations?: AnimationOptions[];
@@ -1 +1 @@
1
- {"version":3,"file":"ConstellationEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/ConstellationEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACnF,UAAU,wBAAwB;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAiGD,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAwF3D,CAAC;AACF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"ConstellationEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/ConstellationEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,UAAU,wBAAyB,SAAQ,gBAAgB;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAiGD,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAyF3D,CAAC;AACF,eAAe,mBAAmB,CAAC"}
@@ -3,6 +3,7 @@ import { useRef, useMemo } from 'react';
3
3
  import { useFrame } from '@react-three/fiber';
4
4
  import * as THREE from 'three';
5
5
  import { applyGenerativeAnimations } from '../../utils/handleGenerativeEffectsAnimations.js';
6
+ import { useObjectReady } from '../../hooks/useObjectReady.js';
6
7
  // Stars: per-particle twinkle + size variation
7
8
  const starVertShader = /* glsl */ `
8
9
  attribute float aPhase;
@@ -97,10 +98,11 @@ function fibonacciSphere(count, radius) {
97
98
  }
98
99
  return positions;
99
100
  }
100
- const ConstellationEffect = ({ boundingRadius, config, animations }) => {
101
+ const ConstellationEffect = ({ boundingRadius, config, animations, onObjectReady, onObjectDispose }) => {
101
102
  const { starCount, connectRadius, orbitRadius, twinkleSpeed, lineOpacity, starSize, color, opacity, speed } = config;
102
103
  const startValuesCacheRef = useRef({});
103
104
  const groupRef = useRef(null);
105
+ useObjectReady(groupRef, config, onObjectReady, onObjectDispose);
104
106
  const r = boundingRadius * orbitRadius;
105
107
  const connR = boundingRadius * connectRadius;
106
108
  const colorVec = useMemo(() => {
@@ -0,0 +1,19 @@
1
+ import * as THREE from "three";
2
+ declare global {
3
+ namespace JSX {
4
+ interface IntrinsicElements {
5
+ sunCoronaMaterial: any;
6
+ }
7
+ }
8
+ }
9
+ import type { ObjectReadyProps } from '../../types/objectReady';
10
+ export type CoronaProps = ObjectReadyProps & {
11
+ /** Radius of the core this corona surrounds. Default 1. */
12
+ radius?: number;
13
+ /** Shell size relative to the core. Default 1.25. Synced with u_shellScale. */
14
+ shellScale?: number;
15
+ /** Uniform overrides for SunCoronaMaterial (u_intensity, u_innerColor, ...). */
16
+ uniforms?: Record<string, number | THREE.Vector3 | number[]>;
17
+ };
18
+ export default function Corona({ radius, shellScale, uniforms, onObjectReady, onObjectDispose }: CoronaProps): import("react").JSX.Element;
19
+ //# sourceMappingURL=Corona.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Corona.d.ts","sourceRoot":"","sources":["../../../src/components/effects/Corona.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,GAAG,CAAC;QACV,UAAU,iBAAiB;YACvB,iBAAiB,EAAE,GAAG,CAAC;SAC1B;KACJ;CACJ;AAGD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG;IACzC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,MAAU,EAAE,UAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,WAAW,+BAStH"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as THREE from "three";
3
+ import { useRef } from "react";
4
+ import { useFrame } from "@react-three/fiber";
5
+ import { useObjectReady } from '../../hooks/useObjectReady.js';
6
+ export default function Corona({ radius = 1, shellScale = 1.25, uniforms, onObjectReady, onObjectDispose }) {
7
+ const matRef = useRef(null);
8
+ const rootRef = useRef(null);
9
+ useObjectReady(rootRef, { radius, shellScale, uniforms }, onObjectReady, onObjectDispose);
10
+ useFrame((_, delta) => {
11
+ if (matRef.current)
12
+ matRef.current.u_time += delta;
13
+ });
14
+ return (_jsxs("mesh", { ref: rootRef, scale: radius * shellScale, children: [_jsx("sphereGeometry", { args: [1, 64, 64] }), _jsx("coronaMaterial", { ref: matRef, u_shellScale: shellScale, side: THREE.BackSide, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, ...uniforms })] }));
15
+ }
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import type { DataStreamConfig, AnimationOptions } from "@3driseai/3drise-core";
3
- interface DataStreamEffectProps {
3
+ import type { ObjectReadyProps } from '../../types/objectReady';
4
+ interface DataStreamEffectProps extends ObjectReadyProps {
4
5
  boundingRadius: number;
5
6
  config: DataStreamConfig;
6
7
  animations?: AnimationOptions[];
@@ -1 +1 @@
1
- {"version":3,"file":"DataStreamEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/DataStreamEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAChF,UAAU,qBAAqB;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAqFD,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAiDrD,CAAC;AACF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"DataStreamEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/DataStreamEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,UAAU,qBAAsB,SAAQ,gBAAgB;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAqFD,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAmDrD,CAAC;AACF,eAAe,gBAAgB,CAAC"}
@@ -3,6 +3,7 @@ import { useRef, useMemo } from 'react';
3
3
  import { useFrame } from '@react-three/fiber';
4
4
  import * as THREE from 'three';
5
5
  import { applyGenerativeAnimations } from '../../utils/handleGenerativeEffectsAnimations.js';
6
+ import { useObjectReady } from '../../hooks/useObjectReady.js';
6
7
  // Dual counter-rotating helices with cold→hot color gradient.
7
8
  // All animation is GPU-side — only u_time updates per frame.
8
9
  const vertexShader = /* glsl */ `
@@ -85,9 +86,11 @@ const fragmentShader = /* glsl */ `
85
86
  gl_FragColor = vec4(vColor, vAlpha * uOpacity * (glow + star));
86
87
  }
87
88
  `;
88
- const DataStreamEffect = ({ boundingRadius, config, animations }) => {
89
+ const DataStreamEffect = ({ boundingRadius, config, animations, onObjectReady, onObjectDispose }) => {
89
90
  const { particleCount, spiralTurns, streamRadius, inward, particleSize, opacity, speed, intensity } = config;
90
91
  const startValuesCacheRef = useRef({});
92
+ const rootRef = useRef(null);
93
+ useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
91
94
  const r = boundingRadius * streamRadius;
92
95
  const h = boundingRadius * 2.6;
93
96
  const { geometry, material } = useMemo(() => {
@@ -133,6 +136,6 @@ const DataStreamEffect = ({ boundingRadius, config, animations }) => {
133
136
  applyGenerativeAnimations([material], animations, startValuesCacheRef.current, Date.now(), false);
134
137
  }
135
138
  });
136
- return _jsx("points", { geometry: geometry, material: material });
139
+ return _jsx("points", { ref: rootRef, geometry: geometry, material: material });
137
140
  };
138
141
  export default DataStreamEffect;
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import type { DnaHelixConfig, AnimationOptions } from "@3driseai/3drise-core";
3
- interface DnaHelixEffectProps {
3
+ import type { ObjectReadyProps } from '../../types/objectReady';
4
+ interface DnaHelixEffectProps extends ObjectReadyProps {
4
5
  boundingRadius: number;
5
6
  config: DnaHelixConfig;
6
7
  animations?: AnimationOptions[];
@@ -1 +1 @@
1
- {"version":3,"file":"DnaHelixEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/DnaHelixEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,UAAU,mBAAmB;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AA0ED,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAyOjD,CAAC;AACF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"DnaHelixEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/DnaHelixEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,UAAU,mBAAoB,SAAQ,gBAAgB;IAClD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AA0ED,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA0OjD,CAAC;AACF,eAAe,cAAc,CAAC"}
@@ -3,6 +3,7 @@ import { useRef, useMemo } from 'react';
3
3
  import { useFrame } from '@react-three/fiber';
4
4
  import * as THREE from 'three';
5
5
  import { applyGenerativeAnimations } from '../../utils/handleGenerativeEffectsAnimations.js';
6
+ import { useObjectReady } from '../../hooks/useObjectReady.js';
6
7
  // ── Pulsing junction-dot shader ───────────────────────────────────────────────
7
8
  const dotVert = /* glsl */ `
8
9
  attribute float aPhase;
@@ -74,10 +75,11 @@ function helixAt(t, si, numStrands, r, h) {
74
75
  return new THREE.Vector3(Math.cos(angle) * r, t * h - h / 2, Math.sin(angle) * r);
75
76
  }
76
77
  // ── Component ─────────────────────────────────────────────────────────────────
77
- const DnaHelixEffect = ({ boundingRadius, config, animations }) => {
78
+ const DnaHelixEffect = ({ boundingRadius, config, animations, onObjectReady, onObjectDispose }) => {
78
79
  const { particleCount, strandCount, helixRadius, helixHeight, basePairColor, runningLightEnabled, opacity, speed, intensity, } = config;
79
80
  const startValuesCacheRef = useRef({});
80
81
  const groupRef = useRef(null);
82
+ useObjectReady(groupRef, config, onObjectReady, onObjectDispose);
81
83
  const washProgress = useRef(0);
82
84
  const r = boundingRadius * helixRadius;
83
85
  const h = boundingRadius * helixHeight;
@@ -1,6 +1,7 @@
1
1
  import type { Object3D } from 'three';
2
2
  import { AnimationOptions, FireConfig } from "@3driseai/3drise-core";
3
- export interface FireProps {
3
+ import type { ObjectReadyProps } from '../../types/objectReady';
4
+ export interface FireProps extends ObjectReadyProps {
4
5
  /**
5
6
  * Host object to wrap. When provided, the fire auto-fits the host's
6
7
  * bounding sphere. mode 'wrap' scatters flame tongues across the host's
@@ -15,6 +16,6 @@ export interface FireProps {
15
16
  config: FireConfig;
16
17
  animations?: AnimationOptions[];
17
18
  }
18
- declare const Fire: ({ hostRef, config, animations }: FireProps) => import("react").JSX.Element;
19
+ declare const Fire: ({ hostRef, config, animations, onObjectReady, onObjectDispose }: FireProps) => import("react").JSX.Element;
19
20
  export default Fire;
20
21
  //# sourceMappingURL=Fire.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Fire.d.ts","sourceRoot":"","sources":["../../../src/components/effects/Fire.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACrE,MAAM,WAAW,SAAS;IACtB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAqFD,QAAA,MAAM,IAAI,GAAI,iCAAiC,SAAS,gCAwHvD,CAAC;AACF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Fire.d.ts","sourceRoot":"","sources":["../../../src/components/effects/Fire.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,SAAU,SAAQ,gBAAgB;IAC/C;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAqFD,QAAA,MAAM,IAAI,GAAI,iEAAiE,SAAS,gCAyHvF,CAAC;AACF,eAAe,IAAI,CAAC"}
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box3, Sphere, Color, Vector3, Matrix4, PlaneGeometry, InstancedBufferGeometry, InstancedBufferAttribute, } from 'three';
3
3
  import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
4
4
  import { useFrame } from '@react-three/fiber';
5
+ import { useObjectReady } from '../../hooks/useObjectReady.js';
5
6
  // Add to FireConfig in 3drize-core:
6
7
  // mode?: 'crown' | 'wrap' // wrap scatters tongues over the host surface
7
8
  // coverage?: number // 0..1 — how far down the host burns (wrap)
@@ -84,8 +85,9 @@ function sampleSurface(host, count) {
84
85
  }
85
86
  return points;
86
87
  }
87
- const Fire = ({ hostRef, config, animations }) => {
88
+ const Fire = ({ hostRef, config, animations, onObjectReady, onObjectDispose }) => {
88
89
  const group = useRef(null);
90
+ useObjectReady(group, config, onObjectReady, onObjectDispose);
89
91
  const material = useRef(null);
90
92
  const lightRef = useRef(null);
91
93
  const { radius = 1, height = 2.5, radiusScale = 1, heightScale = 1, intensity = 1, speed = 1, turbulence = 1.5, sway = 1, tint = '#ffffff', light = true, mode = 'tongues', coverage = 0.85, tongues = 36, } = config;
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import type { FireConfig, AnimationOptions } from "@3driseai/3drise-core";
3
- interface FireEffectProps {
3
+ import type { ObjectReadyProps } from '../../types/objectReady';
4
+ interface FireEffectProps extends ObjectReadyProps {
4
5
  boundingRadius: number;
5
6
  config: FireConfig;
6
7
  animations?: AnimationOptions[];
@@ -1 +1 @@
1
- {"version":3,"file":"FireEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/FireEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,UAAU,eAAe;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAwGD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAsFzC,CAAC;AACF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"FireEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/FireEffect.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;AAwGD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAwFzC,CAAC;AACF,eAAe,UAAU,CAAC"}
@@ -3,6 +3,7 @@ import { useMemo, useRef } from 'react';
3
3
  import { useFrame } from '@react-three/fiber';
4
4
  import * as THREE from 'three';
5
5
  import { applyGenerativeAnimations } from '../../utils/handleGenerativeEffectsAnimations.js';
6
+ import { useObjectReady } from '../../hooks/useObjectReady.js';
6
7
  // ── Flame particle vertex shader ──────────────────────────────────────────────
7
8
  const flameVert = /* glsl */ `
8
9
  attribute float aT; // lifetime position 0..1 (base→tip)
@@ -104,9 +105,11 @@ const emberFrag = /* glsl */ `
104
105
  gl_FragColor = vec4(1.0, 0.65 + (1.0 - vT) * 0.35, 0.2 * (1.0 - vT), alpha);
105
106
  }
106
107
  `;
107
- const FireEffect = ({ boundingRadius, config, animations }) => {
108
+ const FireEffect = ({ boundingRadius, config, animations, onObjectReady, onObjectDispose }) => {
108
109
  const { particleCount, height, spread, flameColor, tipColor, opacity, speed, intensity } = config;
109
110
  const startValuesCacheRef = useRef({});
111
+ const rootRef = useRef(null);
112
+ useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
110
113
  const h = boundingRadius * height;
111
114
  const s = boundingRadius * spread;
112
115
  const { flameGeo, flameMat, emberGeo, emberMat } = useMemo(() => {
@@ -189,6 +192,6 @@ const FireEffect = ({ boundingRadius, config, animations }) => {
189
192
  applyGenerativeAnimations([flameMat, emberMat], animations, startValuesCacheRef.current, Date.now(), false);
190
193
  }
191
194
  });
192
- return (_jsxs("group", { position: [0, boundingRadius * 0.1, 0], children: [_jsx("points", { geometry: flameGeo, material: flameMat }), _jsx("points", { geometry: emberGeo, material: emberMat })] }));
195
+ return (_jsxs("group", { ref: rootRef, position: [0, boundingRadius * 0.1, 0], children: [_jsx("points", { geometry: flameGeo, material: flameMat }), _jsx("points", { geometry: emberGeo, material: emberMat })] }));
193
196
  };
194
197
  export default FireEffect;
@@ -0,0 +1,25 @@
1
+ import { Vector3, Object3D } from "three";
2
+ import { AnimationOptions, FlaresConfig } from "@3driseai/3drise-core";
3
+ declare global {
4
+ namespace JSX {
5
+ interface IntrinsicElements {
6
+ flareMaterial: any;
7
+ }
8
+ }
9
+ }
10
+ import type { ObjectReadyProps } from '../../types/objectReady';
11
+ export type FlaresProps = ObjectReadyProps & {
12
+ /**
13
+ * true -> silhouette mode: bursts root on the enclosing object's actual
14
+ * screen silhouette (mask render pass).
15
+ * false -> plane mode: circular limb billboard (default).
16
+ */
17
+ hostRef?: Object3D | null;
18
+ /** Root the bursts at the center (shooting from source) instead of the limb. */
19
+ config: FlaresConfig;
20
+ /** Uniform overrides for FlareMaterial (u_frequency, u_reach, ...). */
21
+ uniforms?: Record<string, number | Vector3 | number[]>;
22
+ animations?: AnimationOptions[];
23
+ };
24
+ export default function Flares({ hostRef, config, uniforms, animations, onObjectReady, onObjectDispose }: FlaresProps): import("react").JSX.Element;
25
+ //# sourceMappingURL=Flares.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flares.d.ts","sourceRoot":"","sources":["../../../src/components/effects/Flares.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwE,OAAO,EAA8B,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5I,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,GAAG,CAAC;QACV,UAAU,iBAAiB;YACvB,aAAa,EAAE,GAAG,CAAC;SACtB;KACJ;CACJ;AAGD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG;IACzC;;;;OAIG;IACH,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,gFAAgF;IAChF,MAAM,EAAE,YAAY,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC;IACvD,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC,CAAC;AAUF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,WAAW,+BA2HpH"}