@ntalmagor/3drize-viewer 0.1.2

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 (337) hide show
  1. package/dist/components/AnimatedObject.d.ts +22 -0
  2. package/dist/components/AnimatedObject.d.ts.map +1 -0
  3. package/dist/components/AnimatedObject.js +121 -0
  4. package/dist/components/CameraController.d.ts +16 -0
  5. package/dist/components/CameraController.d.ts.map +1 -0
  6. package/dist/components/CameraController.js +132 -0
  7. package/dist/components/Clouds.d.ts +14 -0
  8. package/dist/components/Clouds.d.ts.map +1 -0
  9. package/dist/components/Clouds.js +97 -0
  10. package/dist/components/CreatedObject.d.ts +12 -0
  11. package/dist/components/CreatedObject.d.ts.map +1 -0
  12. package/dist/components/CreatedObject.js +139 -0
  13. package/dist/components/CustomPrimitive.d.ts +12 -0
  14. package/dist/components/CustomPrimitive.d.ts.map +1 -0
  15. package/dist/components/CustomPrimitive.js +80 -0
  16. package/dist/components/EffectsGenerator.d.ts +10 -0
  17. package/dist/components/EffectsGenerator.d.ts.map +1 -0
  18. package/dist/components/EffectsGenerator.js +59 -0
  19. package/dist/components/EffectsGroup.d.ts +8 -0
  20. package/dist/components/EffectsGroup.d.ts.map +1 -0
  21. package/dist/components/EffectsGroup.js +8 -0
  22. package/dist/components/EnvironmentManager.d.ts +9 -0
  23. package/dist/components/EnvironmentManager.d.ts.map +1 -0
  24. package/dist/components/EnvironmentManager.js +47 -0
  25. package/dist/components/Frame.d.ts +26 -0
  26. package/dist/components/Frame.d.ts.map +1 -0
  27. package/dist/components/Frame.js +50 -0
  28. package/dist/components/FrameGeometry.d.ts +10 -0
  29. package/dist/components/FrameGeometry.d.ts.map +1 -0
  30. package/dist/components/FrameGeometry.js +17 -0
  31. package/dist/components/FrameImage.d.ts +14 -0
  32. package/dist/components/FrameImage.d.ts.map +1 -0
  33. package/dist/components/FrameImage.js +15 -0
  34. package/dist/components/Galaxy.d.ts +8 -0
  35. package/dist/components/Galaxy.d.ts.map +1 -0
  36. package/dist/components/Galaxy.js +9 -0
  37. package/dist/components/GalleryLayout.d.ts +10 -0
  38. package/dist/components/GalleryLayout.d.ts.map +1 -0
  39. package/dist/components/GalleryLayout.js +18 -0
  40. package/dist/components/GridHelper.d.ts +23 -0
  41. package/dist/components/GridHelper.d.ts.map +1 -0
  42. package/dist/components/GridHelper.js +38 -0
  43. package/dist/components/ImageGeometry.d.ts +14 -0
  44. package/dist/components/ImageGeometry.d.ts.map +1 -0
  45. package/dist/components/ImageGeometry.js +62 -0
  46. package/dist/components/Lensflare.d.ts +12 -0
  47. package/dist/components/Lensflare.d.ts.map +1 -0
  48. package/dist/components/Lensflare.js +66 -0
  49. package/dist/components/Letter.d.ts +20 -0
  50. package/dist/components/Letter.d.ts.map +1 -0
  51. package/dist/components/Letter.js +83 -0
  52. package/dist/components/Letters.d.ts +16 -0
  53. package/dist/components/Letters.d.ts.map +1 -0
  54. package/dist/components/Letters.js +18 -0
  55. package/dist/components/LightsManager.d.ts +9 -0
  56. package/dist/components/LightsManager.d.ts.map +1 -0
  57. package/dist/components/LightsManager.js +121 -0
  58. package/dist/components/Lines.d.ts +9 -0
  59. package/dist/components/Lines.d.ts.map +1 -0
  60. package/dist/components/Lines.js +19 -0
  61. package/dist/components/LoadingIndicator.d.ts +10 -0
  62. package/dist/components/LoadingIndicator.d.ts.map +1 -0
  63. package/dist/components/LoadingIndicator.js +143 -0
  64. package/dist/components/MaterialLibrary.d.ts +9 -0
  65. package/dist/components/MaterialLibrary.d.ts.map +1 -0
  66. package/dist/components/MaterialLibrary.js +57 -0
  67. package/dist/components/Moon.d.ts +13 -0
  68. package/dist/components/Moon.d.ts.map +1 -0
  69. package/dist/components/Moon.js +52 -0
  70. package/dist/components/ObjectNode.d.ts +11 -0
  71. package/dist/components/ObjectNode.d.ts.map +1 -0
  72. package/dist/components/ObjectNode.js +61 -0
  73. package/dist/components/ObjectsRenderer.d.ts +11 -0
  74. package/dist/components/ObjectsRenderer.d.ts.map +1 -0
  75. package/dist/components/ObjectsRenderer.js +19 -0
  76. package/dist/components/Ocean.d.ts +8 -0
  77. package/dist/components/Ocean.d.ts.map +1 -0
  78. package/dist/components/Ocean.js +111 -0
  79. package/dist/components/ParticlesR3f.d.ts +16 -0
  80. package/dist/components/ParticlesR3f.d.ts.map +1 -0
  81. package/dist/components/ParticlesR3f.js +66 -0
  82. package/dist/components/Path.d.ts +13 -0
  83. package/dist/components/Path.d.ts.map +1 -0
  84. package/dist/components/Path.js +41 -0
  85. package/dist/components/PathGeometry.d.ts +11 -0
  86. package/dist/components/PathGeometry.d.ts.map +1 -0
  87. package/dist/components/PathGeometry.js +109 -0
  88. package/dist/components/PathRenderer.d.ts +14 -0
  89. package/dist/components/PathRenderer.d.ts.map +1 -0
  90. package/dist/components/PathRenderer.js +33 -0
  91. package/dist/components/ProductionScene.d.ts +29 -0
  92. package/dist/components/ProductionScene.d.ts.map +1 -0
  93. package/dist/components/ProductionScene.js +18 -0
  94. package/dist/components/ProjectLoader.d.ts +14 -0
  95. package/dist/components/ProjectLoader.d.ts.map +1 -0
  96. package/dist/components/ProjectLoader.js +76 -0
  97. package/dist/components/Rain.d.ts +8 -0
  98. package/dist/components/Rain.d.ts.map +1 -0
  99. package/dist/components/Rain.js +133 -0
  100. package/dist/components/SceneBuilder.d.ts +5 -0
  101. package/dist/components/SceneBuilder.d.ts.map +1 -0
  102. package/dist/components/SceneBuilder.js +104 -0
  103. package/dist/components/SceneFog.d.ts +8 -0
  104. package/dist/components/SceneFog.d.ts.map +1 -0
  105. package/dist/components/SceneFog.js +19 -0
  106. package/dist/components/ShootingStar.d.ts +16 -0
  107. package/dist/components/ShootingStar.d.ts.map +1 -0
  108. package/dist/components/ShootingStar.js +92 -0
  109. package/dist/components/ShootingStars.d.ts +8 -0
  110. package/dist/components/ShootingStars.d.ts.map +1 -0
  111. package/dist/components/ShootingStars.js +40 -0
  112. package/dist/components/SkyController.d.ts +10 -0
  113. package/dist/components/SkyController.d.ts.map +1 -0
  114. package/dist/components/SkyController.js +159 -0
  115. package/dist/components/SkyMesh.d.ts +11 -0
  116. package/dist/components/SkyMesh.d.ts.map +1 -0
  117. package/dist/components/SkyMesh.js +36 -0
  118. package/dist/components/SkySystem.d.ts +34 -0
  119. package/dist/components/SkySystem.d.ts.map +1 -0
  120. package/dist/components/SkySystem.js +47 -0
  121. package/dist/components/Skybox.d.ts +12 -0
  122. package/dist/components/Skybox.d.ts.map +1 -0
  123. package/dist/components/Skybox.js +79 -0
  124. package/dist/components/Stars.d.ts +14 -0
  125. package/dist/components/Stars.d.ts.map +1 -0
  126. package/dist/components/Stars.js +165 -0
  127. package/dist/components/SunLight.d.ts +15 -0
  128. package/dist/components/SunLight.d.ts.map +1 -0
  129. package/dist/components/SunLight.js +57 -0
  130. package/dist/components/Text2D.d.ts +9 -0
  131. package/dist/components/Text2D.d.ts.map +1 -0
  132. package/dist/components/Text2D.js +56 -0
  133. package/dist/components/Text3D.d.ts +10 -0
  134. package/dist/components/Text3D.d.ts.map +1 -0
  135. package/dist/components/Text3D.js +8 -0
  136. package/dist/components/effects/AuraEffect.d.ts +10 -0
  137. package/dist/components/effects/AuraEffect.d.ts.map +1 -0
  138. package/dist/components/effects/AuraEffect.js +127 -0
  139. package/dist/components/effects/AuroraEffect.d.ts +10 -0
  140. package/dist/components/effects/AuroraEffect.d.ts.map +1 -0
  141. package/dist/components/effects/AuroraEffect.js +112 -0
  142. package/dist/components/effects/BlackHoleEffect.d.ts +10 -0
  143. package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -0
  144. package/dist/components/effects/BlackHoleEffect.js +193 -0
  145. package/dist/components/effects/ConstellationEffect.d.ts +10 -0
  146. package/dist/components/effects/ConstellationEffect.d.ts.map +1 -0
  147. package/dist/components/effects/ConstellationEffect.js +189 -0
  148. package/dist/components/effects/DataStreamEffect.d.ts +10 -0
  149. package/dist/components/effects/DataStreamEffect.d.ts.map +1 -0
  150. package/dist/components/effects/DataStreamEffect.js +138 -0
  151. package/dist/components/effects/DnaHelixEffect.d.ts +10 -0
  152. package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -0
  153. package/dist/components/effects/DnaHelixEffect.js +311 -0
  154. package/dist/components/effects/FireEffect.d.ts +10 -0
  155. package/dist/components/effects/FireEffect.d.ts.map +1 -0
  156. package/dist/components/effects/FireEffect.js +194 -0
  157. package/dist/components/effects/ForcefieldEffect.d.ts +10 -0
  158. package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -0
  159. package/dist/components/effects/ForcefieldEffect.js +132 -0
  160. package/dist/components/effects/HologramEffect.d.ts +10 -0
  161. package/dist/components/effects/HologramEffect.d.ts.map +1 -0
  162. package/dist/components/effects/HologramEffect.js +143 -0
  163. package/dist/components/effects/IceCrystalsEffect.d.ts +10 -0
  164. package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -0
  165. package/dist/components/effects/IceCrystalsEffect.js +190 -0
  166. package/dist/components/effects/LightningEffect.d.ts +10 -0
  167. package/dist/components/effects/LightningEffect.d.ts.map +1 -0
  168. package/dist/components/effects/LightningEffect.js +240 -0
  169. package/dist/components/effects/MoleculesEffect.d.ts +10 -0
  170. package/dist/components/effects/MoleculesEffect.d.ts.map +1 -0
  171. package/dist/components/effects/MoleculesEffect.js +179 -0
  172. package/dist/components/effects/NeuralNetworkEffect.d.ts +10 -0
  173. package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -0
  174. package/dist/components/effects/NeuralNetworkEffect.js +188 -0
  175. package/dist/components/effects/OrbEffect.d.ts +10 -0
  176. package/dist/components/effects/OrbEffect.d.ts.map +1 -0
  177. package/dist/components/effects/OrbEffect.js +291 -0
  178. package/dist/components/effects/PortalEffect.d.ts +10 -0
  179. package/dist/components/effects/PortalEffect.d.ts.map +1 -0
  180. package/dist/components/effects/PortalEffect.js +191 -0
  181. package/dist/components/effects/ShockwaveEffect.d.ts +10 -0
  182. package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -0
  183. package/dist/components/effects/ShockwaveEffect.js +159 -0
  184. package/dist/components/effects/SmokePlumeEffect.d.ts +10 -0
  185. package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -0
  186. package/dist/components/effects/SmokePlumeEffect.js +141 -0
  187. package/dist/components/effects/SmokeRingEffect.d.ts +10 -0
  188. package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -0
  189. package/dist/components/effects/SmokeRingEffect.js +158 -0
  190. package/dist/components/effects/VolumetricFogEffect.d.ts +10 -0
  191. package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -0
  192. package/dist/components/effects/VolumetricFogEffect.js +111 -0
  193. package/dist/constants.d.ts +2 -0
  194. package/dist/constants.d.ts.map +1 -0
  195. package/dist/constants.js +1 -0
  196. package/dist/hooks/index.d.ts +1 -0
  197. package/dist/hooks/index.d.ts.map +1 -0
  198. package/dist/hooks/index.js +1 -0
  199. package/dist/hooks/useAnimationEvents.d.ts +10 -0
  200. package/dist/hooks/useAnimationEvents.d.ts.map +1 -0
  201. package/dist/hooks/useAnimationEvents.js +28 -0
  202. package/dist/hooks/useCameraAnimation.d.ts +35 -0
  203. package/dist/hooks/useCameraAnimation.d.ts.map +1 -0
  204. package/dist/hooks/useCameraAnimation.js +268 -0
  205. package/dist/hooks/useContinuousEffects.d.ts +15 -0
  206. package/dist/hooks/useContinuousEffects.d.ts.map +1 -0
  207. package/dist/hooks/useContinuousEffects.js +173 -0
  208. package/dist/hooks/useCubeCamera.d.ts +19 -0
  209. package/dist/hooks/useCubeCamera.d.ts.map +1 -0
  210. package/dist/hooks/useCubeCamera.js +73 -0
  211. package/dist/hooks/useEnvironmentEffects.d.ts +12 -0
  212. package/dist/hooks/useEnvironmentEffects.d.ts.map +1 -0
  213. package/dist/hooks/useEnvironmentEffects.js +22 -0
  214. package/dist/hooks/useFrameEffects.d.ts +6 -0
  215. package/dist/hooks/useFrameEffects.d.ts.map +1 -0
  216. package/dist/hooks/useFrameEffects.js +19 -0
  217. package/dist/hooks/useInteractionEffects.d.ts +11 -0
  218. package/dist/hooks/useInteractionEffects.d.ts.map +1 -0
  219. package/dist/hooks/useInteractionEffects.js +35 -0
  220. package/dist/hooks/useKey.d.ts +26 -0
  221. package/dist/hooks/useKey.d.ts.map +1 -0
  222. package/dist/hooks/useKey.js +73 -0
  223. package/dist/hooks/useLightHandlers.d.ts +14 -0
  224. package/dist/hooks/useLightHandlers.d.ts.map +1 -0
  225. package/dist/hooks/useLightHandlers.js +116 -0
  226. package/dist/hooks/useMaterialApplication.d.ts +9 -0
  227. package/dist/hooks/useMaterialApplication.d.ts.map +1 -0
  228. package/dist/hooks/useMaterialApplication.js +113 -0
  229. package/dist/hooks/useMaterialOptions.d.ts +13 -0
  230. package/dist/hooks/useMaterialOptions.d.ts.map +1 -0
  231. package/dist/hooks/useMaterialOptions.js +110 -0
  232. package/dist/hooks/useMaterialUniforms.d.ts +18 -0
  233. package/dist/hooks/useMaterialUniforms.d.ts.map +1 -0
  234. package/dist/hooks/useMaterialUniforms.js +96 -0
  235. package/dist/hooks/useMeshController.d.ts +3 -0
  236. package/dist/hooks/useMeshController.d.ts.map +1 -0
  237. package/dist/hooks/useMeshController.js +152 -0
  238. package/dist/hooks/useMouseHandlers.d.ts +8 -0
  239. package/dist/hooks/useMouseHandlers.d.ts.map +1 -0
  240. package/dist/hooks/useMouseHandlers.js +47 -0
  241. package/dist/hooks/useObjectAnimation.d.ts +13 -0
  242. package/dist/hooks/useObjectAnimation.d.ts.map +1 -0
  243. package/dist/hooks/useObjectAnimation.js +11 -0
  244. package/dist/hooks/useObjectEdges.d.ts +4 -0
  245. package/dist/hooks/useObjectEdges.d.ts.map +1 -0
  246. package/dist/hooks/useObjectEdges.js +199 -0
  247. package/dist/hooks/useOrbitControls.d.ts +7 -0
  248. package/dist/hooks/useOrbitControls.d.ts.map +1 -0
  249. package/dist/hooks/useOrbitControls.js +9 -0
  250. package/dist/hooks/useParticlePositions.d.ts +19 -0
  251. package/dist/hooks/useParticlePositions.d.ts.map +1 -0
  252. package/dist/hooks/useParticlePositions.js +56 -0
  253. package/dist/hooks/useParticlesColors.d.ts +14 -0
  254. package/dist/hooks/useParticlesColors.d.ts.map +1 -0
  255. package/dist/hooks/useParticlesColors.js +27 -0
  256. package/dist/hooks/useParticlesTextures.d.ts +10 -0
  257. package/dist/hooks/useParticlesTextures.d.ts.map +1 -0
  258. package/dist/hooks/useParticlesTextures.js +23 -0
  259. package/dist/hooks/usePathAnimation.d.ts +26 -0
  260. package/dist/hooks/usePathAnimation.d.ts.map +1 -0
  261. package/dist/hooks/usePathAnimation.js +120 -0
  262. package/dist/hooks/useSkyAnimation.d.ts +14 -0
  263. package/dist/hooks/useSkyAnimation.d.ts.map +1 -0
  264. package/dist/hooks/useSkyAnimation.js +46 -0
  265. package/dist/hooks/useSkySystem.d.ts +26 -0
  266. package/dist/hooks/useSkySystem.d.ts.map +1 -0
  267. package/dist/hooks/useSkySystem.js +57 -0
  268. package/dist/hooks/useSkyUniforms.d.ts +18 -0
  269. package/dist/hooks/useSkyUniforms.d.ts.map +1 -0
  270. package/dist/hooks/useSkyUniforms.js +59 -0
  271. package/dist/hooks/useTransformControls.d.ts +6 -0
  272. package/dist/hooks/useTransformControls.d.ts.map +1 -0
  273. package/dist/hooks/useTransformControls.js +111 -0
  274. package/dist/hooks/useWaterEnvironment.d.ts +5 -0
  275. package/dist/hooks/useWaterEnvironment.d.ts.map +1 -0
  276. package/dist/hooks/useWaterEnvironment.js +27 -0
  277. package/dist/hooks/useWaterReflections.d.ts +17 -0
  278. package/dist/hooks/useWaterReflections.d.ts.map +1 -0
  279. package/dist/hooks/useWaterReflections.js +77 -0
  280. package/dist/index.d.ts +140 -0
  281. package/dist/index.d.ts.map +1 -0
  282. package/dist/index.js +109 -0
  283. package/dist/services/AnimationsManager.d.ts +33 -0
  284. package/dist/services/AnimationsManager.d.ts.map +1 -0
  285. package/dist/services/AnimationsManager.js +58 -0
  286. package/dist/services/FontManager.d.ts +32 -0
  287. package/dist/services/FontManager.d.ts.map +1 -0
  288. package/dist/services/FontManager.js +76 -0
  289. package/dist/services/TexturesManager.d.ts +17 -0
  290. package/dist/services/TexturesManager.d.ts.map +1 -0
  291. package/dist/services/TexturesManager.js +48 -0
  292. package/dist/shaders/RainMaterial.d.ts +34 -0
  293. package/dist/shaders/RainMaterial.d.ts.map +1 -0
  294. package/dist/shaders/RainMaterial.js +56 -0
  295. package/dist/shaders/ShaderEffectsMaterial.d.ts +279 -0
  296. package/dist/shaders/ShaderEffectsMaterial.d.ts.map +1 -0
  297. package/dist/shaders/ShaderEffectsMaterial.js +257 -0
  298. package/dist/shaders/ShootingStarMaterial.d.ts +14 -0
  299. package/dist/shaders/ShootingStarMaterial.d.ts.map +1 -0
  300. package/dist/shaders/ShootingStarMaterial.js +33 -0
  301. package/dist/shaders/SkyboxMaterial.d.ts +38 -0
  302. package/dist/shaders/SkyboxMaterial.d.ts.map +1 -0
  303. package/dist/shaders/SkyboxMaterial.js +57 -0
  304. package/dist/shaders/effects/EffectsVertexFunctions.glsl.d.ts +2 -0
  305. package/dist/shaders/effects/EffectsVertexFunctions.glsl.d.ts.map +1 -0
  306. package/dist/shaders/effects/EffectsVertexFunctions.glsl.js +167 -0
  307. package/dist/utils/CameraSingleton.d.ts +35 -0
  308. package/dist/utils/CameraSingleton.d.ts.map +1 -0
  309. package/dist/utils/CameraSingleton.js +178 -0
  310. package/dist/utils/anchorUtils.d.ts +10 -0
  311. package/dist/utils/anchorUtils.d.ts.map +1 -0
  312. package/dist/utils/anchorUtils.js +13 -0
  313. package/dist/utils/frameAnimations.d.ts +49 -0
  314. package/dist/utils/frameAnimations.d.ts.map +1 -0
  315. package/dist/utils/frameAnimations.js +213 -0
  316. package/dist/utils/handleGenerativeEffectsAnimations.d.ts +5 -0
  317. package/dist/utils/handleGenerativeEffectsAnimations.d.ts.map +1 -0
  318. package/dist/utils/handleGenerativeEffectsAnimations.js +268 -0
  319. package/dist/utils/hasHoverAnimation.d.ts +3 -0
  320. package/dist/utils/hasHoverAnimation.d.ts.map +1 -0
  321. package/dist/utils/hasHoverAnimation.js +15 -0
  322. package/dist/utils/particleAnimations.d.ts +3 -0
  323. package/dist/utils/particleAnimations.d.ts.map +1 -0
  324. package/dist/utils/particleAnimations.js +17 -0
  325. package/dist/utils/sceneQuery.d.ts +9 -0
  326. package/dist/utils/sceneQuery.d.ts.map +1 -0
  327. package/dist/utils/sceneQuery.js +22 -0
  328. package/dist/utils/shaderUtils.d.ts +6 -0
  329. package/dist/utils/shaderUtils.d.ts.map +1 -0
  330. package/dist/utils/shaderUtils.js +145 -0
  331. package/dist/utils/textEffects.d.ts +31 -0
  332. package/dist/utils/textEffects.d.ts.map +1 -0
  333. package/dist/utils/textEffects.js +61 -0
  334. package/dist/utils/utils3d.d.ts +7 -0
  335. package/dist/utils/utils3d.d.ts.map +1 -0
  336. package/dist/utils/utils3d.js +34 -0
  337. package/package.json +43 -0
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useRef, useMemo, useCallback } from 'react';
3
+ import * as THREE from 'three';
4
+ import { useThree } from '@react-three/fiber';
5
+ import { useSkySystem } from '../hooks/useSkySystem';
6
+ export function createFlareTexture(type) {
7
+ const canvas = document.createElement('canvas');
8
+ canvas.width = 256;
9
+ canvas.height = 256;
10
+ const ctx = canvas.getContext('2d');
11
+ if (type === 0) {
12
+ const gradient = ctx.createRadialGradient(128, 128, 0, 128, 128, 128);
13
+ gradient.addColorStop(0, 'rgba(255, 255, 255, 1)');
14
+ gradient.addColorStop(0.1, 'rgba(255, 250, 240, 0.9)');
15
+ gradient.addColorStop(0.25, 'rgba(255, 229, 176, 0.6)');
16
+ gradient.addColorStop(0.5, 'rgba(255, 229, 176, 0.2)');
17
+ gradient.addColorStop(1, 'rgba(255, 229, 176, 0)');
18
+ ctx.fillStyle = gradient;
19
+ ctx.fillRect(0, 0, 256, 256);
20
+ }
21
+ else {
22
+ const gradient = ctx.createRadialGradient(128, 128, 0, 128, 128, 128);
23
+ gradient.addColorStop(0, 'rgba(255, 229, 176, 0.6)');
24
+ gradient.addColorStop(0.3, 'rgba(255, 229, 176, 0.3)');
25
+ gradient.addColorStop(0.6, 'rgba(255, 229, 176, 0.1)');
26
+ gradient.addColorStop(1, 'rgba(255, 229, 176, 0)');
27
+ ctx.fillStyle = gradient;
28
+ ctx.fillRect(0, 0, 256, 256);
29
+ }
30
+ const texture = new THREE.CanvasTexture(canvas);
31
+ texture.minFilter = THREE.LinearFilter;
32
+ texture.magFilter = THREE.LinearFilter;
33
+ return texture;
34
+ }
35
+ const Lensflare = ({ visible = true, intensity = 1, timeSettings, }) => {
36
+ const spriteRef = useRef(null);
37
+ const { camera } = useThree();
38
+ const texture = useMemo(() => createFlareTexture(0), []);
39
+ const material = useMemo(() => new THREE.SpriteMaterial({
40
+ map: texture,
41
+ transparent: true,
42
+ blending: THREE.AdditiveBlending,
43
+ depthWrite: false,
44
+ depthTest: false,
45
+ }), [texture]);
46
+ const handleTimeUpdate = useCallback((state) => {
47
+ const { sunDirection } = state;
48
+ if (spriteRef.current) {
49
+ const distance = Math.min(camera.far * 0.5, 200);
50
+ spriteRef.current.position.copy(camera.position);
51
+ spriteRef.current.position.addScaledVector(sunDirection, distance);
52
+ const flareScale = 5 * intensity;
53
+ spriteRef.current.scale.setScalar(flareScale);
54
+ material.opacity = sunDirection.y > 0 ? Math.min(sunDirection.y * 2, 1) : 0;
55
+ }
56
+ }, [camera, intensity, material]);
57
+ useSkySystem({
58
+ timeSettings,
59
+ onTimeUpdate: handleTimeUpdate,
60
+ enabled: visible,
61
+ });
62
+ if (!visible)
63
+ return null;
64
+ return (_jsx("sprite", { ref: spriteRef, material: material, renderOrder: Infinity }));
65
+ };
66
+ export default Lensflare;
@@ -0,0 +1,20 @@
1
+ import { Object3D } from 'three';
2
+ import type { HoverSettings, Vector3Array } from '@ntalmagor/3drize-core';
3
+ import type { TransformEffect, MaterialSettings, ColorEffect, TextConfig } from '@ntalmagor/3drize-core';
4
+ export interface LetterData {
5
+ char: string;
6
+ position: Vector3Array;
7
+ index: number;
8
+ }
9
+ export interface LetterProps {
10
+ letterData: LetterData;
11
+ config: TextConfig;
12
+ materialSettings: MaterialSettings;
13
+ hoverSettings: HoverSettings;
14
+ transformEffects?: TransformEffect[];
15
+ colorEffects?: ColorEffect[];
16
+ isActive: boolean;
17
+ onClick?: (object: Object3D) => void;
18
+ }
19
+ export default function Letter({ letterData, config, materialSettings, hoverSettings, transformEffects, colorEffects, isActive, onClick, }: LetterProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=Letter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Letter.d.ts","sourceRoot":"","sources":["../../src/components/Letter.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAe,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAC,gBAAgB,EAAe,WAAW,EAAE,UAAU,EAA8B,MAAM,wBAAwB,CAAC;AAMjJ,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC;CACtC;AA8BD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,gBAAqB,EACrB,YAAiB,EACjB,QAAQ,EACR,OAAO,GACR,EAAE,WAAW,2CA6Gb"}
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useRef, useState, useEffect } from 'react';
3
+ import { useFrame } from '@react-three/fiber';
4
+ import { useCursor, Text, Text3D, Center } from '@react-three/drei';
5
+ import MaterialLibrary from './MaterialLibrary';
6
+ import { createDefaultEffectState, applyTransformEffects } from '@ntalmagor/3drize-core';
7
+ import { useFrameEffects } from '../hooks/useFrameEffects';
8
+ import { fontManager } from '../../../core/src/services/FontManager';
9
+ const getText3DConfig = (config) => {
10
+ const c = config;
11
+ return {
12
+ size: c.size ?? 1,
13
+ height: c.height ?? 0.2,
14
+ curveSegments: c.curveSegments ?? 12,
15
+ bevelEnabled: c.bevelEnabled ?? true,
16
+ bevelThickness: c.bevelThickness ?? 0.03,
17
+ bevelSize: c.bevelSize ?? 0.02,
18
+ bevelOffset: c.bevelOffset ?? 0,
19
+ bevelSegments: c.bevelSegments ?? 5,
20
+ letterSpacing: c.letterSpacing ?? 0,
21
+ };
22
+ };
23
+ const getText2DConfig = (config) => {
24
+ const c = config;
25
+ return {
26
+ fontSize: c.fontSize ?? 1,
27
+ maxWidth: c.maxWidth ?? Infinity,
28
+ lineHeight: c.lineHeight ?? 1,
29
+ letterSpacing: c.letterSpacing ?? 0,
30
+ textAlign: c.textAlign ?? 'center',
31
+ anchorX: c.anchorX ?? 'center',
32
+ anchorY: c.anchorY ?? 'middle',
33
+ };
34
+ };
35
+ export default function Letter({ letterData, config, materialSettings, hoverSettings, transformEffects = [], colorEffects = [], isActive, onClick, }) {
36
+ const groupRef = useRef(null);
37
+ const letterRef = useRef(null);
38
+ const hitboxRef = useRef(null);
39
+ const effectStateRef = useRef(null);
40
+ const [rnd] = useState(() => Math.random());
41
+ const [clicked, setClicked] = useState(false);
42
+ const { handlePointerEnter, handlePointerLeave, hovered } = useFrameEffects(isActive);
43
+ const { renderMode = 'bitmap', font } = config;
44
+ const text3DConfig = getText3DConfig(config);
45
+ const text2DConfig = getText2DConfig(config);
46
+ const { sensitivity = 0.5, applyToChildren = false } = hoverSettings;
47
+ const color = 'color' in materialSettings ? materialSettings.color : '#ffffff';
48
+ const opacity = 'opacity' in materialSettings ? materialSettings.opacity : 1;
49
+ const useDreiMaterials = materialSettings.materialType === 'advanced';
50
+ useEffect(() => {
51
+ if (useDreiMaterials && renderMode === 'bitmap') {
52
+ console.warn('[Letter] Advanced materials not supported with bitmap text. Switch to text3d render mode.');
53
+ }
54
+ }, [useDreiMaterials, renderMode]);
55
+ useCursor(hovered);
56
+ const fontInfo = font ? fontManager.getFont(font) : null;
57
+ const bitmapFontUrl = fontInfo?.googleFont;
58
+ const text3dFontUrl = fontInfo?.threejsFont;
59
+ const enabledEffects = transformEffects.filter(e => e.enabled !== false);
60
+ useFrame((state, dt) => {
61
+ if (!groupRef.current || !letterRef.current || !applyToChildren)
62
+ return;
63
+ const time = state.clock.elapsedTime;
64
+ if (!effectStateRef.current) {
65
+ effectStateRef.current = createDefaultEffectState(letterRef.current);
66
+ }
67
+ if (enabledEffects.length > 0) {
68
+ applyTransformEffects(letterRef.current, enabledEffects, time, dt, effectStateRef.current, hovered, clicked, sensitivity);
69
+ }
70
+ });
71
+ const handleClick = (e) => {
72
+ e.stopPropagation();
73
+ setClicked(!clicked);
74
+ if (groupRef.current)
75
+ onClick?.(groupRef.current);
76
+ };
77
+ const actualRenderMode = renderMode === 'text3d' && !font ? 'bitmap' : renderMode;
78
+ const fontSize = actualRenderMode === 'text3d' ? text3DConfig.size : text2DConfig.fontSize;
79
+ const boxWidth = fontSize * 0.8;
80
+ const boxHeight = fontSize * 1.2;
81
+ const boxDepth = actualRenderMode === 'text3d' ? text3DConfig.height + text3DConfig.bevelThickness * 2 : text3DConfig.height + 1;
82
+ return (_jsxs("group", { position: letterData.position, rotation: [0, 0, 0], ref: groupRef, name: `letter-${letterData.char}-${letterData.index}`, userData: { char: letterData.char, index: letterData.index, position: letterData.position }, children: [_jsx("mesh", { ref: hitboxRef, visible: false, onPointerEnter: handlePointerEnter, onPointerLeave: handlePointerLeave, onClick: handleClick, children: _jsx("boxGeometry", { args: [boxWidth, boxHeight, boxDepth] }) }), _jsx("group", { ref: letterRef, raycast: () => null, children: actualRenderMode === 'text3d' ? (_jsx(Center, { disableX: text2DConfig.anchorX === 'left', disableY: text2DConfig.anchorY === 'top', disableZ: false, children: _jsxs(Text3D, { font: text3dFontUrl || 'https://threejs.org/examples/fonts/helvetiker_regular.typeface.json', size: text3DConfig.size, height: text3DConfig.height, curveSegments: text3DConfig.curveSegments, bevelEnabled: text3DConfig.bevelEnabled, bevelThickness: text3DConfig.bevelThickness, bevelSize: text3DConfig.bevelSize, bevelOffset: text3DConfig.bevelOffset, bevelSegments: text3DConfig.bevelSegments, children: [letterData.char, useDreiMaterials && actualRenderMode === 'text3d' ? (_jsx(MaterialLibrary, { materialSettings: materialSettings })) : (_jsx("meshStandardMaterial", { color: color, transparent: opacity < 1, opacity: opacity }))] }) })) : (_jsx(Text, { fontSize: text2DConfig.fontSize, color: color, maxWidth: text2DConfig.maxWidth, lineHeight: text2DConfig.lineHeight, letterSpacing: text2DConfig.letterSpacing, textAlign: text2DConfig.textAlign, anchorX: text2DConfig.anchorX, anchorY: text2DConfig.anchorY, font: bitmapFontUrl || undefined, fillOpacity: opacity, children: letterData.char })) })] }));
83
+ }
@@ -0,0 +1,16 @@
1
+ import type { LetterData } from './Letter';
2
+ import type { HoverSettings } from '@ntalmagor/3drize-core';
3
+ import type { TextConfig } from '@ntalmagor/3drize-core';
4
+ import type { MaterialSettings } from '@ntalmagor/3drize-core';
5
+ import type { ColorEffect, TransformEffect } from '@ntalmagor/3drize-core';
6
+ export interface LettersProps {
7
+ text: string;
8
+ config: TextConfig;
9
+ materialSettings: MaterialSettings;
10
+ hoverSettings: HoverSettings;
11
+ transformEffects?: TransformEffect[];
12
+ colorEffects?: ColorEffect[];
13
+ onLetterClick?: (letterData: LetterData) => void;
14
+ }
15
+ export default function Letters({ text, config, materialSettings, hoverSettings, transformEffects, colorEffects, onLetterClick, }: LettersProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=Letters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Letters.d.ts","sourceRoot":"","sources":["../../src/components/Letters.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,gBAAqB,EACrB,YAAiB,EACjB,aAAa,GACd,EAAE,YAAY,2CAkCd"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useRef } from 'react';
3
+ import Letter from './Letter';
4
+ export default function Letters({ text, config, materialSettings, hoverSettings, transformEffects = [], colorEffects = [], onLetterClick, }) {
5
+ const ref = useRef(null);
6
+ const characters = text.split('');
7
+ const letterSpacing = config.letterSpacing || 0;
8
+ const spacing = 0.6 + letterSpacing;
9
+ const letters = characters.map((char, index) => {
10
+ const totalWidth = (characters.length - 1) * spacing;
11
+ const xOffset = index * spacing - totalWidth / 2;
12
+ return { char, index, position: [xOffset, 0, 0] };
13
+ });
14
+ const handleLetterClick = (object, letterData) => {
15
+ onLetterClick?.(letterData);
16
+ };
17
+ return (_jsx("group", { ref: ref, scale: [1, 1, 1], position: [0, 0, 0], rotation: [0, 0, 0], children: letters.map((letterData) => (_jsx(Letter, { letterData: letterData, config: config, materialSettings: materialSettings, hoverSettings: hoverSettings, transformEffects: transformEffects, colorEffects: colorEffects, isActive: false, onClick: (object) => handleLetterClick(object, letterData) }, `${letterData.char}-${letterData.index}`))) }));
18
+ }
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { LightConfig } from '@ntalmagor/3drize-core';
3
+ export interface LightsManagerProps {
4
+ lights: LightConfig[];
5
+ selectedLight?: string | null;
6
+ }
7
+ declare const LightsManager: React.FC<LightsManagerProps>;
8
+ export default LightsManager;
9
+ //# sourceMappingURL=LightsManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LightsManager.d.ts","sourceRoot":"","sources":["../../src/components/LightsManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAI1D,OAAO,KAAK,EAAmB,WAAW,EAAqC,MAAM,wBAAwB,CAAC;AAc9G,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AA6BD,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAkM/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,121 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useRef, useEffect, useMemo } from 'react';
3
+ import { useFrame, useThree } from '@react-three/fiber';
4
+ import { useHelper } from '@react-three/drei';
5
+ import { createSunPosition } from '../utils/utils3d';
6
+ import { useLightHandlers } from '../hooks/useLightHandlers';
7
+ import { Color, DirectionalLightHelper, SpotLightHelper, PointLightHelper, } from 'three';
8
+ const LightHelperMesh = ({ position, lightName, lightColor, hasHandlers, onEnter, onLeave, size = 0.5, }) => {
9
+ if (!hasHandlers)
10
+ return null;
11
+ return (_jsxs("mesh", { visible: false, position: position, onPointerEnter: (e) => { e.stopPropagation(); onEnter(lightName); }, onPointerLeave: (e) => { e.stopPropagation(); onLeave(lightName); }, children: [_jsx("sphereGeometry", { args: [size, 16, 16] }), _jsx("meshBasicMaterial", { color: lightColor, transparent: true, opacity: 0.3, depthWrite: false })] }));
12
+ };
13
+ const LightsManager = ({ lights, selectedLight = null }) => {
14
+ const { scene } = useThree();
15
+ const config = lights[0];
16
+ const debug = config.showHelpers || false;
17
+ const ambientLightRef = useRef(null);
18
+ const directionalLightRefs = useRef(new Map());
19
+ const spotLightRefs = useRef(new Map());
20
+ const spotLightTargets = useRef(new Map());
21
+ const pointLightRefs = useRef(new Map());
22
+ const sunLightRef = useRef(null);
23
+ const allLightConfigs = useMemo(() => {
24
+ const configs = [];
25
+ if (config.directionalLights)
26
+ configs.push(...config.directionalLights);
27
+ if (config.spotLights)
28
+ configs.push(...config.spotLights);
29
+ if (config.pointLights)
30
+ configs.push(...config.pointLights);
31
+ return configs;
32
+ }, [config.directionalLights, config.spotLights, config.pointLights]);
33
+ const { handleLightEnter, handleLightLeave } = useLightHandlers({ directionalLightRefs, spotLightRefs, pointLightRefs }, allLightConfigs);
34
+ useEffect(() => {
35
+ if (!config.directionalLights)
36
+ return;
37
+ config.directionalLights.forEach((dc) => {
38
+ const light = directionalLightRefs.current.get(dc.name);
39
+ if (!light)
40
+ return;
41
+ light.color = new Color(dc.color || '#ffffff');
42
+ light.intensity = dc.intensity || 1;
43
+ light.position.set(dc.position?.[0] ?? 0, dc.position?.[1] ?? 10, dc.position?.[2] ?? 0);
44
+ });
45
+ }, [config.directionalLights]);
46
+ useEffect(() => {
47
+ if (ambientLightRef.current && config.ambient?.color) {
48
+ ambientLightRef.current.color = new Color(config.ambient.color);
49
+ ambientLightRef.current.intensity = config.ambient.intensity || 1;
50
+ }
51
+ }, [config.ambient]);
52
+ useEffect(() => {
53
+ if (!config.spotLights)
54
+ return;
55
+ config.spotLights.forEach((sc) => {
56
+ const light = spotLightRefs.current.get(sc.name);
57
+ if (!light)
58
+ return;
59
+ light.color = new Color(sc.color || '#ffffff');
60
+ light.intensity = sc.intensity || 1;
61
+ light.position.set(sc.position?.[0] ?? 0, sc.position?.[1] ?? 10, sc.position?.[2] ?? 0);
62
+ light.angle = sc.angle || Math.PI / 3;
63
+ light.penumbra = sc.penumbra || 0;
64
+ light.decay = sc.decay || 1;
65
+ light.distance = sc.distance || 0;
66
+ if (sc.targetPosition) {
67
+ light.target.position.set(sc.targetPosition[0], sc.targetPosition[1], sc.targetPosition[2]);
68
+ light.target.updateMatrixWorld();
69
+ }
70
+ });
71
+ }, [config.spotLights, config.enableShadows]);
72
+ useEffect(() => {
73
+ if (!config.pointLights)
74
+ return;
75
+ config.pointLights.forEach((pc) => {
76
+ const light = pointLightRefs.current.get(pc.name);
77
+ if (!light)
78
+ return;
79
+ light.color = new Color(pc.color || '#ffffff');
80
+ light.intensity = pc.intensity || 1;
81
+ light.position.set(pc.position?.[0] ?? 0, pc.position?.[1] ?? 10, pc.position?.[2] ?? 0);
82
+ light.decay = pc.decay || 1;
83
+ light.distance = pc.distance || 0;
84
+ });
85
+ }, [config.pointLights, config.enableShadows]);
86
+ useFrame((state) => {
87
+ if (config.followSun && sunLightRef.current) {
88
+ const time = state.clock.getElapsedTime();
89
+ const sunPosition = createSunPosition(config.sun?.elevation ?? 45, (config.sun?.azimuth ?? -90) + time * 0.01);
90
+ sunLightRef.current.position.set(sunPosition.x * 100, sunPosition.y * 100, sunPosition.z * 100);
91
+ }
92
+ });
93
+ useHelper(debug && selectedLight === 'sun' ? sunLightRef : null, DirectionalLightHelper, 5, 'orange');
94
+ const hasHandlers = (lightConfig) => !!lightConfig.handlers && (!!lightConfig.handlers.onMouseMove?.enabled ||
95
+ !!lightConfig.handlers.onMouseEnter?.enabled ||
96
+ !!lightConfig.handlers.onMouseLeave?.enabled);
97
+ return (_jsxs(_Fragment, { children: [_jsx("ambientLight", { ref: ambientLightRef, color: config.ambient?.color, intensity: config.ambient?.intensity }), config.enabled && (_jsxs(_Fragment, { children: [config.directionalLights?.map((dc) => dc.enabled !== false ? (_jsxs("group", { children: [_jsx("directionalLight", { color: dc.color || '#ffffff', intensity: dc.intensity || 1, position: dc.position || [0, 10, 0], castShadow: true, ref: (ref) => { if (ref)
98
+ directionalLightRefs.current.set(dc.name, ref); } }), _jsx(LightHelperMesh, { position: dc.position || [0, 10, 0], lightName: dc.name, lightColor: dc.color || '#ffffff', hasHandlers: hasHandlers(dc), onEnter: handleLightEnter, onLeave: handleLightLeave, size: 1 })] }, dc.name)) : null), config.spotLights?.map((sc) => sc.enabled !== false ? (_jsxs("group", { children: [_jsx("spotLight", { ref: (ref) => {
99
+ if (ref) {
100
+ spotLightRefs.current.set(sc.name, ref);
101
+ if (!spotLightTargets.current.has(sc.name)) {
102
+ scene.add(ref.target);
103
+ spotLightTargets.current.set(sc.name, ref.target);
104
+ }
105
+ if (sc.targetPosition) {
106
+ ref.target.position.set(sc.targetPosition[0], sc.targetPosition[1], sc.targetPosition[2]);
107
+ ref.target.updateMatrixWorld();
108
+ }
109
+ }
110
+ else {
111
+ const target = spotLightTargets.current.get(sc.name);
112
+ if (target) {
113
+ scene.remove(target);
114
+ spotLightTargets.current.delete(sc.name);
115
+ }
116
+ spotLightRefs.current.delete(sc.name);
117
+ }
118
+ }, color: sc.color || '#ffffff', intensity: sc.intensity || 1, position: sc.position || [0, 10, 0], angle: sc.angle || Math.PI / 3, penumbra: sc.penumbra || 0, decay: sc.decay || 1, distance: sc.distance || 0, castShadow: config.enableShadows }), _jsx(LightHelperMesh, { position: sc.position || [0, 10, 0], lightName: sc.name, lightColor: sc.color || '#ffffff', hasHandlers: hasHandlers(sc), onEnter: handleLightEnter, onLeave: handleLightLeave, size: 0.8 })] }, sc.name)) : null), config.pointLights?.map((pc) => pc.enabled !== false ? (_jsxs("group", { children: [_jsx("pointLight", { ref: (ref) => { if (ref)
119
+ pointLightRefs.current.set(pc.name, ref); }, color: pc.color || '#ffffff', intensity: pc.intensity || 1, position: pc.position || [0, 10, 0], decay: pc.decay || 1, distance: pc.distance || 0, castShadow: config.enableShadows }), _jsx(LightHelperMesh, { position: pc.position || [0, 10, 0], lightName: pc.name, lightColor: pc.color || '#ffffff', hasHandlers: hasHandlers(pc), onEnter: handleLightEnter, onLeave: handleLightLeave, size: 0.6 })] }, pc.name)) : null)] })), debug && selectedLight && (_jsxs(_Fragment, { children: [config.directionalLights?.map((lc) => lc.enabled !== false && selectedLight === lc.name && directionalLightRefs.current.get(lc.name) ? (_jsx("primitive", { object: new DirectionalLightHelper(directionalLightRefs.current.get(lc.name), 3, 'red') }, `helper-${lc.name}`)) : null), config.spotLights?.map((lc) => lc.enabled !== false && selectedLight === lc.name && spotLightRefs.current.get(lc.name) ? (_jsx("primitive", { object: new SpotLightHelper(spotLightRefs.current.get(lc.name), 'yellow') }, `helper-${lc.name}`)) : null), config.pointLights?.map((lc) => lc.enabled !== false && selectedLight === lc.name && pointLightRefs.current.get(lc.name) ? (_jsx("primitive", { object: new PointLightHelper(pointLightRefs.current.get(lc.name), 1, 'blue') }, `helper-${lc.name}`)) : null)] }))] }));
120
+ };
121
+ export default LightsManager;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { ParticlesSettings } from '@ntalmagor/3drize-core';
3
+ interface LinesProps {
4
+ createdObject: ParticlesSettings;
5
+ transitionSettings?: Record<string, any>;
6
+ }
7
+ declare const Lines: React.FC<LinesProps>;
8
+ export default Lines;
9
+ //# sourceMappingURL=Lines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lines.d.ts","sourceRoot":"","sources":["../../src/components/Lines.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,wBAAwB,CAAC;AAE/E,UAAU,UAAU;IAClB,aAAa,EAAE,iBAAiB,CAAC;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1C;AAED,QAAA,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CA4B/B,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import { PositionsCreator } from '@ntalmagor/3drize-core';
4
+ import Path from './Path';
5
+ const Lines = ({ createdObject, transitionSettings }) => {
6
+ if (!createdObject)
7
+ return null;
8
+ const { config } = createdObject;
9
+ const color = createdObject.materialSettings && 'color' in createdObject.materialSettings
10
+ ? createdObject.materialSettings.color
11
+ : '#ffffff';
12
+ const targetShape = (transitionSettings?.shapeType && typeof transitionSettings.shapeType === 'string')
13
+ ? transitionSettings.shapeType
14
+ : config.shapeType;
15
+ const curves = useMemo(() => PositionsCreator.generatePaths(config.shapeType), [config.shapeType]);
16
+ const targetCurves = useMemo(() => PositionsCreator.generatePaths(targetShape), [targetShape]);
17
+ return (_jsx(_Fragment, { children: curves.map((currentCurve, index) => (_jsx(Path, { curve: currentCurve, targetCurve: targetCurves[index % targetCurves.length], duration: 1, color: color }, `path-${index}`))) }));
18
+ };
19
+ export default Lines;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export interface LoadingIndicatorProps {
3
+ text?: string;
4
+ fullScreen?: boolean;
5
+ animate?: boolean;
6
+ size?: number;
7
+ }
8
+ export declare const LoadingIndicator: React.FC<LoadingIndicatorProps>;
9
+ export default LoadingIndicator;
10
+ //# sourceMappingURL=LoadingIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingIndicator.d.ts","sourceRoot":"","sources":["../../src/components/LoadingIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4ID,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAuB5D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,143 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect } from 'react';
3
+ const STYLE_ID = '3drise-loading-indicator-styles';
4
+ const CSS = `
5
+ .loading-indicator {
6
+ display: flex;
7
+ flex-direction: column;
8
+ align-items: center;
9
+ justify-content: center;
10
+ position: relative;
11
+ }
12
+ .loading-indicator-fullscreen {
13
+ position: fixed;
14
+ top: 0;
15
+ left: 0;
16
+ width: 100vw;
17
+ height: 100vh;
18
+ background-color: rgba(0, 0, 0, 0.75);
19
+ backdrop-filter: blur(4px);
20
+ z-index: 9999;
21
+ margin: 0;
22
+ padding: 0;
23
+ }
24
+ .loading-indicator.animate .loading-spinner {
25
+ animation: _3drise-spin 2s linear infinite;
26
+ }
27
+ .loading-indicator.animate .spinner-ring {
28
+ animation: _3drise-spinY 2s cubic-bezier(0.68, -0.55, 0.265, 1.55) infinite;
29
+ }
30
+ .loading-indicator.animate .spinner-ring:nth-child(1) {
31
+ animation-duration: 2s;
32
+ }
33
+ .loading-indicator.animate .spinner-ring:nth-child(2) {
34
+ animation-duration: 2.5s;
35
+ animation-direction: reverse;
36
+ }
37
+ .loading-indicator.animate .spinner-ring:nth-child(3) {
38
+ animation-duration: 3s;
39
+ }
40
+ .loading-indicator.animate .loading-text {
41
+ animation: _3drise-shimmer 3s linear infinite;
42
+ }
43
+ .loading-spinner {
44
+ position: relative;
45
+ display: flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ perspective: 1000px;
49
+ transform-style: preserve-3d;
50
+ }
51
+ .spinner-ring {
52
+ position: absolute;
53
+ width: 100%;
54
+ height: 100%;
55
+ border: 3px solid transparent;
56
+ transform-style: preserve-3d;
57
+ }
58
+ .spinner-ring:nth-child(1) {
59
+ border-top-color: #007bff;
60
+ border-right-color: #007bff;
61
+ width: 100%;
62
+ height: 100%;
63
+ }
64
+ .spinner-ring:nth-child(2) {
65
+ border-bottom-color: #17a2b8;
66
+ border-left-color: #17a2b8;
67
+ width: 70%;
68
+ height: 70%;
69
+ }
70
+ .spinner-ring:nth-child(3) {
71
+ border-top-color: #6f42c1;
72
+ border-right-color: #6f42c1;
73
+ width: 40%;
74
+ height: 40%;
75
+ }
76
+ @keyframes _3drise-spinY {
77
+ 0% { transform: rotateY(0deg); }
78
+ 100% { transform: rotateY(360deg); }
79
+ }
80
+ @keyframes _3drise-spin {
81
+ 0% { transform: rotate(0deg); }
82
+ 100% { transform: rotate(360deg); }
83
+ }
84
+ .loading-text {
85
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
86
+ font-size: 1rem;
87
+ font-weight: 500;
88
+ letter-spacing: 0.5px;
89
+ text-transform: uppercase;
90
+ background: linear-gradient(90deg, #007bff, #17a2b8, #6f42c1, #007bff);
91
+ background-size: 200% auto;
92
+ -webkit-background-clip: text;
93
+ -webkit-text-fill-color: transparent;
94
+ background-clip: text;
95
+ }
96
+ @keyframes _3drise-shimmer {
97
+ 0% { background-position: 0% center; }
98
+ 100% { background-position: 200% center; }
99
+ }
100
+ @media (prefers-color-scheme: dark) {
101
+ .loading-text {
102
+ background: linear-gradient(90deg, #4dabf7, #22b8cf, #9775fa, #4dabf7);
103
+ background-size: 200% auto;
104
+ -webkit-background-clip: text;
105
+ -webkit-text-fill-color: transparent;
106
+ background-clip: text;
107
+ }
108
+ .spinner-ring:nth-child(1) {
109
+ border-top-color: #4dabf7;
110
+ border-right-color: #4dabf7;
111
+ }
112
+ .spinner-ring:nth-child(2) {
113
+ border-bottom-color: #22b8cf;
114
+ border-left-color: #22b8cf;
115
+ }
116
+ .spinner-ring:nth-child(3) {
117
+ border-top-color: #9775fa;
118
+ border-right-color: #9775fa;
119
+ }
120
+ }
121
+ @media (max-width: 576px) {
122
+ .loading-spinner {
123
+ width: 60px;
124
+ height: 60px;
125
+ }
126
+ .loading-text {
127
+ font-size: 0.875rem;
128
+ }
129
+ }
130
+ `;
131
+ function injectStyles() {
132
+ if (typeof document === 'undefined' || document.getElementById(STYLE_ID))
133
+ return;
134
+ const style = document.createElement('style');
135
+ style.id = STYLE_ID;
136
+ style.textContent = CSS;
137
+ document.head.appendChild(style);
138
+ }
139
+ export const LoadingIndicator = ({ text, fullScreen = false, animate = true, size = 80, }) => {
140
+ useEffect(() => { injectStyles(); }, []);
141
+ return (_jsxs("div", { className: `loading-indicator${animate ? ' animate' : ''}${fullScreen ? ' loading-indicator-fullscreen' : ''}`, children: [_jsxs("div", { className: "loading-spinner", style: { width: `${size}px`, height: `${size}px` }, children: [_jsx("div", { className: "spinner-ring" }), _jsx("div", { className: "spinner-ring" }), _jsx("div", { className: "spinner-ring" })] }), text && _jsx("div", { className: "loading-text", children: text })] }));
142
+ };
143
+ export default LoadingIndicator;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { MaterialSettings } from '@ntalmagor/3drize-core';
3
+ export interface MaterialLibraryProps {
4
+ materialSettings: MaterialSettings;
5
+ children?: React.ReactNode;
6
+ }
7
+ declare const MaterialLibrary: React.FC<MaterialLibraryProps>;
8
+ export default MaterialLibrary;
9
+ //# sourceMappingURL=MaterialLibrary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaterialLibrary.d.ts","sourceRoot":"","sources":["../../src/components/MaterialLibrary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAUtC,OAAO,KAAK,EACV,gBAAgB,EAOjB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA6DnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useRef } from 'react';
3
+ import { MeshReflectorMaterial, MeshRefractionMaterial, MeshTransmissionMaterial, MeshDistortMaterial, MeshWobbleMaterial, MeshDiscardMaterial, MeshPortalMaterial, } from '@react-three/drei';
4
+ const MaterialLibrary = ({ materialSettings }) => {
5
+ const variant = materialSettings.materialVariant;
6
+ const cubeCameraTexture = useRef(null);
7
+ const getSettings = (defaultSettings) => {
8
+ const settings = { ...defaultSettings };
9
+ Object.keys(materialSettings).forEach(key => {
10
+ if (key in settings && key !== 'materialType' && key !== 'materialVariant' && key !== 'handlers') {
11
+ settings[key] = materialSettings[key];
12
+ }
13
+ });
14
+ return settings;
15
+ };
16
+ switch (variant) {
17
+ case 'Reflector':
18
+ return _jsx(MeshReflectorMaterial, { ...getSettings({
19
+ color: "#777777", roughness: 0.1, metalness: 1.0,
20
+ blur: [300, 100], resolution: 512, mixBlur: 1, mixStrength: 40,
21
+ depthScale: 1, minDepthThreshold: 0.1, maxDepthThreshold: 1,
22
+ depthToBlurRatioBias: 0.25, mirror: 1, distortion: 1, mixContrast: 1,
23
+ ...materialSettings,
24
+ }) });
25
+ case 'Refraction':
26
+ if (cubeCameraTexture.current)
27
+ return _jsx(MeshRefractionMaterial, { envMap: cubeCameraTexture.current, ...getSettings({
28
+ color: "#ffffff", ior: 2.4, fresnel: 0, aberrationStrength: 0.01, fastChroma: true, ...materialSettings,
29
+ }) });
30
+ return _jsx("meshStandardMaterial", { color: "#ffffff" });
31
+ case 'Transmission':
32
+ return _jsx(MeshTransmissionMaterial, { ...getSettings({
33
+ transmission: 1, thickness: 0.2, roughness: 0.0, chromaticAberration: 0.03,
34
+ anisotropy: 0.1, anisotropicBlur: 0.1, distortion: 0.0, distortionScale: 0.3,
35
+ temporalDistortion: 0.5, transmissionSampler: true, backside: false,
36
+ backsideThickness: 0.2, backsideEnvMapIntensity: 1, resolution: 256,
37
+ backsideResolution: 256, samples: 10, ...materialSettings,
38
+ }) });
39
+ case 'Distort':
40
+ return _jsx(MeshDistortMaterial, { ...getSettings({
41
+ color: "#ffffff", distort: 0.5, speed: 2, radius: 1, ...materialSettings,
42
+ }) });
43
+ case 'Wobble':
44
+ return _jsx(MeshWobbleMaterial, { ...getSettings({
45
+ color: "#ffffff", factor: 1, speed: 2, ...materialSettings,
46
+ }) });
47
+ case 'Discard':
48
+ return _jsx(MeshDiscardMaterial, {});
49
+ case 'Portal':
50
+ return _jsx(MeshPortalMaterial, { blur: 0, resolution: 512, ...getSettings({
51
+ blend: 1, resolution: 512, ...materialSettings,
52
+ }) });
53
+ default:
54
+ return _jsx("meshStandardMaterial", { color: "#ffffff" });
55
+ }
56
+ };
57
+ export default MaterialLibrary;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import * as THREE from 'three';
3
+ import type { MoonSettings } from '@ntalmagor/3drize-core';
4
+ export { defaultMoonSettings } from '@ntalmagor/3drize-core';
5
+ export interface MoonProps {
6
+ settings?: MoonSettings;
7
+ sunPosition?: [number, number, number];
8
+ onMeshReady?: (mesh: THREE.Mesh) => void;
9
+ }
10
+ declare const Moon: React.FC<MoonProps>;
11
+ export default Moon;
12
+ export type { MoonSettings };
13
+ //# sourceMappingURL=Moon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Moon.d.ts","sourceRoot":"","sources":["../../src/components/Moon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAK7D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;CAC1C;AAED,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAmE7B,CAAC;AAGF,eAAe,IAAI,CAAC;AACpB,YAAY,EAAE,YAAY,EAAE,CAAC"}