@ohos-ports/react-three-drei 10.7.7-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +852 -0
  3. package/core/AccumulativeShadows.cjs.js +1 -0
  4. package/core/AccumulativeShadows.d.ts +59 -0
  5. package/core/AccumulativeShadows.js +310 -0
  6. package/core/AdaptiveDpr.cjs.js +1 -0
  7. package/core/AdaptiveDpr.d.ts +3 -0
  8. package/core/AdaptiveDpr.js +28 -0
  9. package/core/AdaptiveEvents.cjs.js +1 -0
  10. package/core/AdaptiveEvents.d.ts +1 -0
  11. package/core/AdaptiveEvents.js +20 -0
  12. package/core/ArcballControls.cjs.js +1 -0
  13. package/core/ArcballControls.d.ts +15 -0
  14. package/core/ArcballControls.js +67 -0
  15. package/core/AsciiRenderer.cjs.js +1 -0
  16. package/core/AsciiRenderer.d.ts +11 -0
  17. package/core/AsciiRenderer.js +66 -0
  18. package/core/BBAnchor.cjs.js +1 -0
  19. package/core/BBAnchor.d.ts +7 -0
  20. package/core/BBAnchor.js +37 -0
  21. package/core/Backdrop.cjs.js +1 -0
  22. package/core/Backdrop.d.ts +15 -0
  23. package/core/Backdrop.js +33 -0
  24. package/core/BakeShadows.cjs.js +1 -0
  25. package/core/BakeShadows.d.ts +1 -0
  26. package/core/BakeShadows.js +16 -0
  27. package/core/Billboard.cjs.js +1 -0
  28. package/core/Billboard.d.ts +10 -0
  29. package/core/Billboard.js +53 -0
  30. package/core/Bounds.cjs.js +1 -0
  31. package/core/Bounds.d.ts +36 -0
  32. package/core/Bounds.js +254 -0
  33. package/core/Bvh.cjs.js +1 -0
  34. package/core/Bvh.d.ts +19 -0
  35. package/core/Bvh.js +92 -0
  36. package/core/CameraControls.cjs.js +1 -0
  37. package/core/CameraControls.d.ts +48 -0
  38. package/core/CameraControls.js +151 -0
  39. package/core/CameraShake.cjs.js +1 -0
  40. package/core/CameraShake.d.ts +17 -0
  41. package/core/CameraShake.js +57 -0
  42. package/core/CatmullRomLine.cjs.js +1 -0
  43. package/core/CatmullRomLine.d.ts +10 -0
  44. package/core/CatmullRomLine.js +42 -0
  45. package/core/Caustics.cjs.js +1 -0
  46. package/core/Caustics.d.ts +32 -0
  47. package/core/Caustics.js +388 -0
  48. package/core/Center.cjs.js +1 -0
  49. package/core/Center.d.ts +33 -0
  50. package/core/Center.js +67 -0
  51. package/core/Clone.cjs.js +1 -0
  52. package/core/Clone.d.ts +15 -0
  53. package/core/Clone.js +100 -0
  54. package/core/Cloud.cjs.js +1 -0
  55. package/core/Cloud.d.ts +97 -0
  56. package/core/Cloud.js +231 -0
  57. package/core/ComputedAttribute.cjs.js +1 -0
  58. package/core/ComputedAttribute.d.ts +8 -0
  59. package/core/ComputedAttribute.js +33 -0
  60. package/core/ContactShadows.cjs.js +1 -0
  61. package/core/ContactShadows.d.ts +18 -0
  62. package/core/ContactShadows.js +114 -0
  63. package/core/CubeCamera.cjs.js +1 -0
  64. package/core/CubeCamera.d.ts +21 -0
  65. package/core/CubeCamera.js +86 -0
  66. package/core/CubeTexture.cjs.js +1 -0
  67. package/core/CubeTexture.d.ts +14 -0
  68. package/core/CubeTexture.js +25 -0
  69. package/core/CubicBezierLine.cjs.js +1 -0
  70. package/core/CubicBezierLine.d.ts +12 -0
  71. package/core/CubicBezierLine.js +28 -0
  72. package/core/CurveModifier.cjs.js +1 -0
  73. package/core/CurveModifier.d.ts +11 -0
  74. package/core/CurveModifier.js +27 -0
  75. package/core/Decal.cjs.js +1 -0
  76. package/core/Decal.d.ts +16 -0
  77. package/core/Decal.js +128 -0
  78. package/core/Detailed.cjs.js +1 -0
  79. package/core/Detailed.d.ts +10 -0
  80. package/core/Detailed.js +33 -0
  81. package/core/DetectGPU.cjs.js +1 -0
  82. package/core/DetectGPU.d.ts +7 -0
  83. package/core/DetectGPU.js +14 -0
  84. package/core/DeviceOrientationControls.cjs.js +1 -0
  85. package/core/DeviceOrientationControls.d.ts +10 -0
  86. package/core/DeviceOrientationControls.js +51 -0
  87. package/core/Edges.cjs.js +1 -0
  88. package/core/Edges.d.ts +13 -0
  89. package/core/Edges.js +38 -0
  90. package/core/Effects.cjs.js +1 -0
  91. package/core/Effects.d.ts +25 -0
  92. package/core/Effects.js +91 -0
  93. package/core/Environment.cjs.js +1 -0
  94. package/core/Environment.d.ts +37 -0
  95. package/core/Environment.js +189 -0
  96. package/core/Example.cjs.js +1 -0
  97. package/core/Example.d.ts +13 -0
  98. package/core/Example.js +46 -0
  99. package/core/Fbo.cjs.js +1 -0
  100. package/core/Fbo.d.ts +22 -0
  101. package/core/Fbo.js +63 -0
  102. package/core/Fbx.cjs.js +1 -0
  103. package/core/Fbx.d.ts +11 -0
  104. package/core/Fbx.js +23 -0
  105. package/core/FirstPersonControls.cjs.js +1 -0
  106. package/core/FirstPersonControls.d.ts +8 -0
  107. package/core/FirstPersonControls.js +38 -0
  108. package/core/Fisheye.cjs.js +1 -0
  109. package/core/Fisheye.d.ts +10 -0
  110. package/core/Fisheye.js +95 -0
  111. package/core/Float.cjs.js +1 -0
  112. package/core/Float.d.ts +14 -0
  113. package/core/Float.js +37 -0
  114. package/core/FlyControls.cjs.js +1 -0
  115. package/core/FlyControls.d.ts +10 -0
  116. package/core/FlyControls.js +55 -0
  117. package/core/GizmoHelper.cjs.js +1 -0
  118. package/core/GizmoHelper.d.ts +16 -0
  119. package/core/GizmoHelper.js +116 -0
  120. package/core/GizmoViewcube.cjs.js +1 -0
  121. package/core/GizmoViewcube.d.ts +14 -0
  122. package/core/GizmoViewcube.js +133 -0
  123. package/core/GizmoViewport.cjs.js +1 -0
  124. package/core/GizmoViewport.d.ts +16 -0
  125. package/core/GizmoViewport.js +140 -0
  126. package/core/Gltf.cjs.js +1 -0
  127. package/core/Gltf.d.ts +27 -0
  128. package/core/Gltf.js +52 -0
  129. package/core/GradientTexture.cjs.js +1 -0
  130. package/core/GradientTexture.d.ts +18 -0
  131. package/core/GradientTexture.js +54 -0
  132. package/core/Grid.cjs.js +1 -0
  133. package/core/Grid.d.ts +26 -0
  134. package/core/Grid.js +142 -0
  135. package/core/Helper.cjs.js +1 -0
  136. package/core/Helper.d.ts +16 -0
  137. package/core/Helper.js +47 -0
  138. package/core/Hud.cjs.js +1 -0
  139. package/core/Hud.d.ts +6 -0
  140. package/core/Hud.js +55 -0
  141. package/core/Image.cjs.js +1 -0
  142. package/core/Image.d.ts +38 -0
  143. package/core/Image.js +160 -0
  144. package/core/Instances.cjs.js +1 -0
  145. package/core/Instances.d.ts +64 -0
  146. package/core/Instances.js +313 -0
  147. package/core/Ktx2.cjs.js +1 -0
  148. package/core/Ktx2.d.ts +14 -0
  149. package/core/Ktx2.js +48 -0
  150. package/core/Lightformer.cjs.js +1 -0
  151. package/core/Lightformer.d.ts +15 -0
  152. package/core/Lightformer.js +63 -0
  153. package/core/Line.cjs.js +1 -0
  154. package/core/Line.d.ts +13 -0
  155. package/core/Line.js +73 -0
  156. package/core/MapControls.cjs.js +1 -0
  157. package/core/MapControls.d.ts +14 -0
  158. package/core/MapControls.js +63 -0
  159. package/core/MarchingCubes.cjs.js +1 -0
  160. package/core/MarchingCubes.d.ts +24 -0
  161. package/core/MarchingCubes.js +78 -0
  162. package/core/Mask.cjs.js +1 -0
  163. package/core/Mask.d.ts +17 -0
  164. package/core/Mask.js +42 -0
  165. package/core/MatcapTexture.cjs.js +1 -0
  166. package/core/MatcapTexture.d.ts +9 -0
  167. package/core/MatcapTexture.js +51 -0
  168. package/core/MeshDiscardMaterial.cjs.js +1 -0
  169. package/core/MeshDiscardMaterial.d.ts +10 -0
  170. package/core/MeshDiscardMaterial.js +15 -0
  171. package/core/MeshDistortMaterial.cjs.js +1 -0
  172. package/core/MeshDistortMaterial.d.ts +39 -0
  173. package/core/MeshDistortMaterial.js +72 -0
  174. package/core/MeshPortalMaterial.cjs.js +1 -0
  175. package/core/MeshPortalMaterial.d.ts +25 -0
  176. package/core/MeshPortalMaterial.js +467 -0
  177. package/core/MeshReflectorMaterial.cjs.js +1 -0
  178. package/core/MeshReflectorMaterial.d.ts +14 -0
  179. package/core/MeshReflectorMaterial.js +180 -0
  180. package/core/MeshRefractionMaterial.cjs.js +1 -0
  181. package/core/MeshRefractionMaterial.d.ts +19 -0
  182. package/core/MeshRefractionMaterial.js +73 -0
  183. package/core/MeshTransmissionMaterial.cjs.js +1 -0
  184. package/core/MeshTransmissionMaterial.d.ts +34 -0
  185. package/core/MeshTransmissionMaterial.js +402 -0
  186. package/core/MeshWobbleMaterial.cjs.js +1 -0
  187. package/core/MeshWobbleMaterial.d.ts +36 -0
  188. package/core/MeshWobbleMaterial.js +60 -0
  189. package/core/MotionPathControls.cjs.js +1 -0
  190. package/core/MotionPathControls.d.ts +33 -0
  191. package/core/MotionPathControls.js +121 -0
  192. package/core/MultiMaterial.cjs.js +1 -0
  193. package/core/MultiMaterial.d.ts +4 -0
  194. package/core/MultiMaterial.js +29 -0
  195. package/core/NormalTexture.cjs.js +1 -0
  196. package/core/NormalTexture.d.ts +14 -0
  197. package/core/NormalTexture.js +42 -0
  198. package/core/OrbitControls.cjs.js +1 -0
  199. package/core/OrbitControls.d.ts +22 -0
  200. package/core/OrbitControls.js +79 -0
  201. package/core/OrthographicCamera.cjs.js +1 -0
  202. package/core/OrthographicCamera.d.ts +14 -0
  203. package/core/OrthographicCamera.js +76 -0
  204. package/core/Outlines.cjs.js +1 -0
  205. package/core/Outlines.d.ts +17 -0
  206. package/core/Outlines.js +166 -0
  207. package/core/PerformanceMonitor.cjs.js +1 -0
  208. package/core/PerformanceMonitor.d.ts +36 -0
  209. package/core/PerformanceMonitor.js +116 -0
  210. package/core/PerspectiveCamera.cjs.js +1 -0
  211. package/core/PerspectiveCamera.d.ts +14 -0
  212. package/core/PerspectiveCamera.js +72 -0
  213. package/core/PointMaterial.cjs.js +1 -0
  214. package/core/PointMaterial.d.ts +8 -0
  215. package/core/PointMaterial.js +36 -0
  216. package/core/PointerLockControls.cjs.js +1 -0
  217. package/core/PointerLockControls.d.ts +15 -0
  218. package/core/PointerLockControls.js +89 -0
  219. package/core/Points.cjs.js +1 -0
  220. package/core/Points.d.ts +31 -0
  221. package/core/Points.js +202 -0
  222. package/core/PositionalAudio.cjs.js +1 -0
  223. package/core/PositionalAudio.d.ts +9 -0
  224. package/core/PositionalAudio.js +46 -0
  225. package/core/Preload.cjs.js +1 -0
  226. package/core/Preload.d.ts +7 -0
  227. package/core/Preload.js +44 -0
  228. package/core/Progress.cjs.js +1 -0
  229. package/core/Progress.d.ts +14 -0
  230. package/core/Progress.js +55 -0
  231. package/core/QuadraticBezierLine.cjs.js +1 -0
  232. package/core/QuadraticBezierLine.d.ts +14 -0
  233. package/core/QuadraticBezierLine.js +42 -0
  234. package/core/RenderCubeTexture.cjs.js +1 -0
  235. package/core/RenderCubeTexture.d.ts +30 -0
  236. package/core/RenderCubeTexture.js +96 -0
  237. package/core/RenderTexture.cjs.js +1 -0
  238. package/core/RenderTexture.d.ts +18 -0
  239. package/core/RenderTexture.js +105 -0
  240. package/core/Resize.cjs.js +1 -0
  241. package/core/Resize.d.ts +17 -0
  242. package/core/Resize.js +39 -0
  243. package/core/RoundedBox.cjs.js +1 -0
  244. package/core/RoundedBox.d.ts +14 -0
  245. package/core/RoundedBox.js +70 -0
  246. package/core/Sampler.cjs.js +1 -0
  247. package/core/Sampler.d.ts +28 -0
  248. package/core/Sampler.js +75 -0
  249. package/core/ScreenQuad.cjs.js +1 -0
  250. package/core/ScreenQuad.d.ts +5 -0
  251. package/core/ScreenQuad.js +25 -0
  252. package/core/ScreenSizer.cjs.js +1 -0
  253. package/core/ScreenSizer.d.ts +7 -0
  254. package/core/ScreenSizer.js +39 -0
  255. package/core/ScreenSpace.cjs.js +1 -0
  256. package/core/ScreenSpace.d.ts +7 -0
  257. package/core/ScreenSpace.js +25 -0
  258. package/core/Segments.cjs.js +1 -0
  259. package/core/Segments.d.ts +29 -0
  260. package/core/Segments.js +96 -0
  261. package/core/Shadow.cjs.js +1 -0
  262. package/core/Shadow.d.ts +12 -0
  263. package/core/Shadow.js +42 -0
  264. package/core/ShadowAlpha.cjs.js +1 -0
  265. package/core/ShadowAlpha.d.ts +7 -0
  266. package/core/ShadowAlpha.js +108 -0
  267. package/core/Sky.cjs.js +1 -0
  268. package/core/Sky.d.ts +16 -0
  269. package/core/Sky.js +39 -0
  270. package/core/Sparkles.cjs.js +1 -0
  271. package/core/Sparkles.d.ts +26 -0
  272. package/core/Sparkles.js +161 -0
  273. package/core/Splat.cjs.js +1 -0
  274. package/core/Splat.d.ts +56 -0
  275. package/core/Splat.js +506 -0
  276. package/core/SpotLight.cjs.js +1 -0
  277. package/core/SpotLight.d.ts +27 -0
  278. package/core/SpotLight.js +223 -0
  279. package/core/SpriteAnimator.cjs.js +1 -0
  280. package/core/SpriteAnimator.d.ts +88 -0
  281. package/core/SpriteAnimator.js +413 -0
  282. package/core/Stage.cjs.js +1 -0
  283. package/core/Stage.d.ts +27 -0
  284. package/core/Stage.js +133 -0
  285. package/core/Stars.cjs.js +1 -0
  286. package/core/Stars.d.ts +22 -0
  287. package/core/Stars.js +100 -0
  288. package/core/Stats.cjs.js +1 -0
  289. package/core/Stats.d.ts +7 -0
  290. package/core/Stats.js +32 -0
  291. package/core/StatsGl.cjs.js +1 -0
  292. package/core/StatsGl.d.ts +14 -0
  293. package/core/StatsGl.js +44 -0
  294. package/core/Svg.cjs.js +1 -0
  295. package/core/Svg.d.ts +13 -0
  296. package/core/Svg.js +62 -0
  297. package/core/Text.cjs.js +1 -0
  298. package/core/Text.d.ts +38 -0
  299. package/core/Text.js +57 -0
  300. package/core/Text3D.cjs.js +1 -0
  301. package/core/Text3D.d.ts +20 -0
  302. package/core/Text3D.js +74 -0
  303. package/core/Texture.cjs.js +1 -0
  304. package/core/Texture.d.ts +20 -0
  305. package/core/Texture.js +60 -0
  306. package/core/TrackballControls.cjs.js +1 -0
  307. package/core/TrackballControls.d.ts +15 -0
  308. package/core/TrackballControls.js +72 -0
  309. package/core/Trail.cjs.js +1 -0
  310. package/core/Trail.d.ts +21 -0
  311. package/core/Trail.js +150 -0
  312. package/core/TrailTexture.cjs.js +1 -0
  313. package/core/TrailTexture.d.ts +19 -0
  314. package/core/TrailTexture.js +159 -0
  315. package/core/TransformControls.cjs.js +1 -0
  316. package/core/TransformControls.d.ts +28 -0
  317. package/core/TransformControls.js +114 -0
  318. package/core/VideoTexture.cjs.js +1 -0
  319. package/core/VideoTexture.d.ts +26 -0
  320. package/core/VideoTexture.js +111 -0
  321. package/core/Wireframe.cjs.js +1 -0
  322. package/core/Wireframe.d.ts +15 -0
  323. package/core/Wireframe.js +157 -0
  324. package/core/calculateScaleFactor.cjs.js +1 -0
  325. package/core/calculateScaleFactor.d.ts +3 -0
  326. package/core/calculateScaleFactor.js +31 -0
  327. package/core/index.cjs.js +1 -0
  328. package/core/index.d.ts +122 -0
  329. package/core/index.js +150 -0
  330. package/core/meshBounds.cjs.js +1 -0
  331. package/core/meshBounds.d.ts +2 -0
  332. package/core/meshBounds.js +28 -0
  333. package/core/shaderMaterial.cjs.js +1 -0
  334. package/core/shaderMaterial.d.ts +9 -0
  335. package/core/shaderMaterial.js +29 -0
  336. package/core/shapes.cjs.js +1 -0
  337. package/core/shapes.d.ts +26 -0
  338. package/core/shapes.js +65 -0
  339. package/core/softShadows.cjs.js +1 -0
  340. package/core/softShadows.d.ts +6 -0
  341. package/core/softShadows.js +158 -0
  342. package/core/useAnimations.cjs.js +1 -0
  343. package/core/useAnimations.d.ts +13 -0
  344. package/core/useAnimations.js +52 -0
  345. package/core/useAspect.cjs.js +1 -0
  346. package/core/useAspect.d.ts +1 -0
  347. package/core/useAspect.js +10 -0
  348. package/core/useBoxProjectedEnv.cjs.js +1 -0
  349. package/core/useBoxProjectedEnv.d.ts +19 -0
  350. package/core/useBoxProjectedEnv.js +95 -0
  351. package/core/useCamera.cjs.js +1 -0
  352. package/core/useCamera.d.ts +3 -0
  353. package/core/useCamera.js +19 -0
  354. package/core/useContextBridge.cjs.js +1 -0
  355. package/core/useContextBridge.d.ts +4 -0
  356. package/core/useContextBridge.js +20 -0
  357. package/core/useDepthBuffer.cjs.js +1 -0
  358. package/core/useDepthBuffer.d.ts +6 -0
  359. package/core/useDepthBuffer.js +38 -0
  360. package/core/useEnvironment.cjs.js +1 -0
  361. package/core/useEnvironment.d.ts +17 -0
  362. package/core/useEnvironment.js +150 -0
  363. package/core/useFont.cjs.js +1 -0
  364. package/core/useFont.d.ts +24 -0
  365. package/core/useFont.js +24 -0
  366. package/core/useIntersect.cjs.js +1 -0
  367. package/core/useIntersect.d.ts +3 -0
  368. package/core/useIntersect.js +36 -0
  369. package/core/useSpriteLoader.cjs.js +1 -0
  370. package/core/useSpriteLoader.d.ts +57 -0
  371. package/core/useSpriteLoader.js +402 -0
  372. package/helpers/constants.cjs.js +1 -0
  373. package/helpers/constants.d.ts +1 -0
  374. package/helpers/constants.js +6 -0
  375. package/helpers/deprecated.cjs.js +1 -0
  376. package/helpers/deprecated.d.ts +5 -0
  377. package/helpers/deprecated.js +8 -0
  378. package/helpers/environment-assets.cjs.js +1 -0
  379. package/helpers/environment-assets.d.ts +13 -0
  380. package/helpers/environment-assets.js +14 -0
  381. package/helpers/glsl/DefaultSpotlightShadowShadows.glsl.js +3 -0
  382. package/helpers/glsl/distort.vert.glsl.js +3 -0
  383. package/helpers/ts-utils.cjs.js +1 -0
  384. package/helpers/ts-utils.d.ts +7 -0
  385. package/helpers/ts-utils.js +1 -0
  386. package/helpers/useEffectfulState.cjs.js +1 -0
  387. package/helpers/useEffectfulState.d.ts +4 -0
  388. package/helpers/useEffectfulState.js +17 -0
  389. package/index.cjs.js +1 -0
  390. package/index.d.ts +1 -0
  391. package/index.js +139 -0
  392. package/materials/BlurPass.cjs.js +1 -0
  393. package/materials/BlurPass.d.ts +23 -0
  394. package/materials/BlurPass.js +72 -0
  395. package/materials/ConvolutionMaterial.cjs.js +1 -0
  396. package/materials/ConvolutionMaterial.d.ts +7 -0
  397. package/materials/ConvolutionMaterial.js +97 -0
  398. package/materials/DiscardMaterial.cjs.js +1 -0
  399. package/materials/DiscardMaterial.d.ts +3 -0
  400. package/materials/DiscardMaterial.js +5 -0
  401. package/materials/MeshReflectorMaterial.cjs.js +1 -0
  402. package/materials/MeshReflectorMaterial.d.ts +50 -0
  403. package/materials/MeshReflectorMaterial.js +256 -0
  404. package/materials/MeshRefractionMaterial.cjs.js +1 -0
  405. package/materials/MeshRefractionMaterial.d.ts +18 -0
  406. package/materials/MeshRefractionMaterial.js +163 -0
  407. package/materials/SpotLightMaterial.cjs.js +1 -0
  408. package/materials/SpotLightMaterial.d.ts +4 -0
  409. package/materials/SpotLightMaterial.js +115 -0
  410. package/materials/WireframeMaterial.cjs.js +1 -0
  411. package/materials/WireframeMaterial.d.ts +64 -0
  412. package/materials/WireframeMaterial.js +217 -0
  413. package/native/index.cjs.js +1 -0
  414. package/native/index.d.ts +1 -0
  415. package/native/index.js +150 -0
  416. package/native/package.json +5 -0
  417. package/package.json +83 -0
  418. package/web/CycleRaycast.cjs.js +1 -0
  419. package/web/CycleRaycast.d.ts +10 -0
  420. package/web/CycleRaycast.js +93 -0
  421. package/web/DragControls.cjs.js +1 -0
  422. package/web/DragControls.d.ts +17 -0
  423. package/web/DragControls.js +127 -0
  424. package/web/FaceControls.cjs.js +1 -0
  425. package/web/FaceControls.d.ts +29 -0
  426. package/web/FaceControls.js +236 -0
  427. package/web/FaceLandmarker.cjs.js +1 -0
  428. package/web/FaceLandmarker.d.ts +14 -0
  429. package/web/FaceLandmarker.js +49 -0
  430. package/web/Facemesh.cjs.js +1 -0
  431. package/web/Facemesh.d.ts +118 -0
  432. package/web/Facemesh.js +4538 -0
  433. package/web/Html.cjs.js +1 -0
  434. package/web/Html.d.ts +34 -0
  435. package/web/Html.js +375 -0
  436. package/web/KeyboardControls.cjs.js +1 -0
  437. package/web/KeyboardControls.d.ts +37 -0
  438. package/web/KeyboardControls.js +104 -0
  439. package/web/Loader.cjs.js +1 -0
  440. package/web/Loader.d.ts +12 -0
  441. package/web/Loader.js +101 -0
  442. package/web/PresentationControls.cjs.js +1 -0
  443. package/web/PresentationControls.d.ts +16 -0
  444. package/web/PresentationControls.js +79 -0
  445. package/web/ScreenVideoTexture.cjs.js +1 -0
  446. package/web/ScreenVideoTexture.d.ts +17 -0
  447. package/web/ScreenVideoTexture.js +30 -0
  448. package/web/ScrollControls.cjs.js +1 -0
  449. package/web/ScrollControls.d.ts +45 -0
  450. package/web/ScrollControls.js +237 -0
  451. package/web/Select.cjs.js +1 -0
  452. package/web/Select.d.ts +14 -0
  453. package/web/Select.js +171 -0
  454. package/web/View.cjs.js +1 -0
  455. package/web/View.d.ts +34 -0
  456. package/web/View.js +259 -0
  457. package/web/WebcamVideoTexture.cjs.js +1 -0
  458. package/web/WebcamVideoTexture.d.ts +17 -0
  459. package/web/WebcamVideoTexture.js +33 -0
  460. package/web/index.cjs.js +1 -0
  461. package/web/index.d.ts +17 -0
  462. package/web/index.js +176 -0
  463. package/web/pivotControls/AxisArrow.cjs.js +1 -0
  464. package/web/pivotControls/AxisArrow.d.ts +7 -0
  465. package/web/pivotControls/AxisArrow.js +193 -0
  466. package/web/pivotControls/AxisRotator.cjs.js +1 -0
  467. package/web/pivotControls/AxisRotator.d.ts +7 -0
  468. package/web/pivotControls/AxisRotator.js +220 -0
  469. package/web/pivotControls/PlaneSlider.cjs.js +1 -0
  470. package/web/pivotControls/PlaneSlider.d.ts +7 -0
  471. package/web/pivotControls/PlaneSlider.js +202 -0
  472. package/web/pivotControls/ScalingSphere.cjs.js +1 -0
  473. package/web/pivotControls/ScalingSphere.d.ts +7 -0
  474. package/web/pivotControls/ScalingSphere.js +192 -0
  475. package/web/pivotControls/context.cjs.js +1 -0
  476. package/web/pivotControls/context.d.ts +33 -0
  477. package/web/pivotControls/context.js +5 -0
  478. package/web/pivotControls/index.cjs.js +1 -0
  479. package/web/pivotControls/index.d.ts +39 -0
  480. package/web/pivotControls/index.js +213 -0
  481. package/web/useCursor.cjs.js +1 -0
  482. package/web/useCursor.d.ts +1 -0
  483. package/web/useCursor.js +12 -0
@@ -0,0 +1,70 @@
1
+ import _extends from '@babel/runtime/helpers/esm/extends';
2
+ import * as React from 'react';
3
+ import { Shape } from 'three';
4
+ import { toCreasedNormals } from 'three-stdlib';
5
+
6
+ const eps = 0.00001;
7
+ function createShape(width, height, radius0) {
8
+ const shape = new Shape();
9
+ const radius = radius0 - eps;
10
+ shape.absarc(eps, eps, eps, -Math.PI / 2, -Math.PI, true);
11
+ shape.absarc(eps, height - radius * 2, eps, Math.PI, Math.PI / 2, true);
12
+ shape.absarc(width - radius * 2, height - radius * 2, eps, Math.PI / 2, 0, true);
13
+ shape.absarc(width - radius * 2, eps, eps, 0, -Math.PI / 2, true);
14
+ return shape;
15
+ }
16
+ const RoundedBox = /* @__PURE__ */React.forwardRef(function RoundedBox({
17
+ args: [width = 1, height = 1, depth = 1] = [],
18
+ radius = 0.05,
19
+ steps = 1,
20
+ smoothness = 4,
21
+ bevelSegments = 4,
22
+ creaseAngle = 0.4,
23
+ children,
24
+ ...rest
25
+ }, ref) {
26
+ return /*#__PURE__*/React.createElement("mesh", _extends({
27
+ ref: ref
28
+ }, rest), /*#__PURE__*/React.createElement(RoundedBoxGeometry, {
29
+ args: [width, height, depth],
30
+ radius: radius,
31
+ steps: steps,
32
+ smoothness: smoothness,
33
+ bevelSegments: bevelSegments,
34
+ creaseAngle: creaseAngle
35
+ }), children);
36
+ });
37
+ const RoundedBoxGeometry = /* @__PURE__ */React.forwardRef(function RoundedBoxGeometry({
38
+ args: [width = 1, height = 1, depth = 1] = [],
39
+ radius = 0.05,
40
+ steps = 1,
41
+ smoothness = 4,
42
+ bevelSegments = 4,
43
+ creaseAngle = 0.4,
44
+ ...rest
45
+ }, ref) {
46
+ const shape = React.useMemo(() => createShape(width, height, radius), [width, height, radius]);
47
+ const params = React.useMemo(() => ({
48
+ depth: depth - radius * 2,
49
+ bevelEnabled: true,
50
+ bevelSegments: bevelSegments * 2,
51
+ steps,
52
+ bevelSize: radius - eps,
53
+ bevelThickness: radius,
54
+ curveSegments: smoothness
55
+ }), [depth, radius, smoothness, bevelSegments, steps]);
56
+ const geomRef = React.useRef(null);
57
+ React.useLayoutEffect(() => {
58
+ if (geomRef.current) {
59
+ geomRef.current.center();
60
+ toCreasedNormals(geomRef.current, creaseAngle);
61
+ }
62
+ }, [shape, params, creaseAngle]);
63
+ React.useImperativeHandle(ref, () => geomRef.current);
64
+ return /*#__PURE__*/React.createElement("extrudeGeometry", _extends({
65
+ ref: geomRef,
66
+ args: [shape, params]
67
+ }, rest));
68
+ });
69
+
70
+ export { RoundedBox, RoundedBoxGeometry };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three-stdlib"),n=require("three");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var o=u(e),a=c(r);function i(e,r=16,u,c,o){const[i,l]=a.useState((()=>{const e=Array.from({length:r},(()=>[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])).flat();return new n.InstancedBufferAttribute(Float32Array.from(e),16)}));return a.useLayoutEffect((()=>{if(void 0===e.current)return;const a=new t.MeshSurfaceSampler(e.current);c&&a.setWeightAttribute(c),a.build();const s=new n.Vector3,f=new n.Vector3,d=new n.Color,p=new n.Object3D;e.current.updateMatrixWorld(!0);for(let t=0;t<r;t++)a.sample(s,f,d),"function"==typeof u?u({dummy:p,sampledMesh:e.current,position:s,normal:f,color:d},t):p.position.copy(s),p.updateMatrix(),null!=o&&o.current&&o.current.setMatrixAt(t,p.matrix),p.matrix.toArray(i.array,16*t);null!=o&&o.current&&(o.current.instanceMatrix.needsUpdate=!0),i.needsUpdate=!0,l(new n.InstancedBufferAttribute(i.array,i.itemSize).copy(i))}),[e,o,c,r,u]),i}exports.Sampler=function({children:e,weight:r,transform:t,instances:n,mesh:u,count:c=16,...l}){const s=a.useRef(null),f=a.useRef(null),d=a.useRef(null);return a.useLayoutEffect((()=>{var e,r;f.current=null!==(e=null==n?void 0:n.current)&&void 0!==e?e:s.current.children.find((e=>e.hasOwnProperty("instanceMatrix"))),d.current=null!==(r=null==u?void 0:u.current)&&void 0!==r?r:s.current.children.find((e=>"Mesh"===e.type))}),[e,null==u?void 0:u.current,null==n?void 0:n.current]),i(d,c,t,r,f),a.createElement("group",o.default({ref:s},l),e)},exports.useSurfaceSampler=i;
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ import { Color, InstancedBufferAttribute, InstancedMesh, Mesh, Object3D, Vector3 } from 'three';
3
+ import { ThreeElements } from '@react-three/fiber';
4
+ type SamplePayload = {
5
+ position: Vector3;
6
+ normal: Vector3;
7
+ color: Color;
8
+ };
9
+ export type TransformFn = (payload: TransformPayload, i: number) => void;
10
+ type TransformPayload = SamplePayload & {
11
+ dummy: Object3D;
12
+ sampledMesh: Mesh;
13
+ };
14
+ export type SamplerProps = Omit<ThreeElements['group'], 'ref'> & {
15
+ mesh?: React.RefObject<Mesh>;
16
+ instances?: React.RefObject<InstancedMesh>;
17
+ weight?: string;
18
+ transform?: TransformFn;
19
+ count?: number;
20
+ };
21
+ export interface useSurfaceSamplerProps {
22
+ transform?: TransformFn;
23
+ weight?: string;
24
+ count?: number;
25
+ }
26
+ export declare function useSurfaceSampler(mesh: React.RefObject<Mesh>, count?: number, transform?: TransformFn, weight?: string, instanceMesh?: React.RefObject<InstancedMesh> | null): InstancedBufferAttribute;
27
+ export declare function Sampler({ children, weight, transform, instances, mesh, count, ...props }: SamplerProps): React.JSX.Element;
28
+ export {};
@@ -0,0 +1,75 @@
1
+ import _extends from '@babel/runtime/helpers/esm/extends';
2
+ import * as React from 'react';
3
+ import { MeshSurfaceSampler } from 'three-stdlib';
4
+ import { InstancedBufferAttribute, Vector3, Color, Object3D } from 'three';
5
+
6
+ function useSurfaceSampler(mesh, count = 16, transform, weight, instanceMesh) {
7
+ const [buffer, setBuffer] = React.useState(() => {
8
+ const arr = Array.from({
9
+ length: count
10
+ }, () => [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]).flat();
11
+ return new InstancedBufferAttribute(Float32Array.from(arr), 16);
12
+ });
13
+ React.useLayoutEffect(() => {
14
+ if (typeof mesh.current === 'undefined') return;
15
+ const sampler = new MeshSurfaceSampler(mesh.current);
16
+ if (weight) {
17
+ sampler.setWeightAttribute(weight);
18
+ }
19
+ sampler.build();
20
+ const position = new Vector3();
21
+ const normal = new Vector3();
22
+ const color = new Color();
23
+ const dummy = new Object3D();
24
+ mesh.current.updateMatrixWorld(true);
25
+ for (let i = 0; i < count; i++) {
26
+ sampler.sample(position, normal, color);
27
+ if (typeof transform === 'function') {
28
+ transform({
29
+ dummy,
30
+ sampledMesh: mesh.current,
31
+ position,
32
+ normal,
33
+ color
34
+ }, i);
35
+ } else {
36
+ dummy.position.copy(position);
37
+ }
38
+ dummy.updateMatrix();
39
+ if (instanceMesh != null && instanceMesh.current) {
40
+ instanceMesh.current.setMatrixAt(i, dummy.matrix);
41
+ }
42
+ dummy.matrix.toArray(buffer.array, i * 16);
43
+ }
44
+ if (instanceMesh != null && instanceMesh.current) {
45
+ instanceMesh.current.instanceMatrix.needsUpdate = true;
46
+ }
47
+ buffer.needsUpdate = true;
48
+ setBuffer(new InstancedBufferAttribute(buffer.array, buffer.itemSize).copy(buffer));
49
+ }, [mesh, instanceMesh, weight, count, transform]);
50
+ return buffer;
51
+ }
52
+ function Sampler({
53
+ children,
54
+ weight,
55
+ transform,
56
+ instances,
57
+ mesh,
58
+ count = 16,
59
+ ...props
60
+ }) {
61
+ const group = React.useRef(null);
62
+ const instancedRef = React.useRef(null);
63
+ const meshToSampleRef = React.useRef(null);
64
+ React.useLayoutEffect(() => {
65
+ var _instances$current, _mesh$current;
66
+ instancedRef.current = (_instances$current = instances == null ? void 0 : instances.current) !== null && _instances$current !== void 0 ? _instances$current : group.current.children.find(c => c.hasOwnProperty('instanceMatrix'));
67
+ meshToSampleRef.current = (_mesh$current = mesh == null ? void 0 : mesh.current) !== null && _mesh$current !== void 0 ? _mesh$current : group.current.children.find(c => c.type === 'Mesh');
68
+ }, [children, mesh == null ? void 0 : mesh.current, instances == null ? void 0 : instances.current]);
69
+ useSurfaceSampler(meshToSampleRef, count, transform, weight, instancedRef);
70
+ return /*#__PURE__*/React.createElement("group", _extends({
71
+ ref: group
72
+ }, props), children);
73
+ }
74
+
75
+ export { Sampler, useSurfaceSampler };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var o=n(e),f=u(r),c=u(t);function i(){const e=new f.BufferGeometry,r=new Float32Array([-1,-1,3,-1,-1,3]);return e.boundingSphere=new f.Sphere,e.boundingSphere.set(new f.Vector3,1/0),e.setAttribute("position",new f.BufferAttribute(r,2)),e}const a=c.forwardRef((function({children:e,...r},t){const n=c.useMemo(i,[]);return c.createElement("mesh",o.default({ref:t,geometry:n,frustumCulled:!1},r),e)}));exports.ScreenQuad=a;
@@ -0,0 +1,5 @@
1
+ import * as THREE from 'three';
2
+ import { ForwardRefComponent } from '../helpers/ts-utils';
3
+ import { ThreeElements } from '@react-three/fiber';
4
+ export type ScreenQuadProps = Omit<ThreeElements['mesh'], 'ref' | 'args'>;
5
+ export declare const ScreenQuad: ForwardRefComponent<ScreenQuadProps, THREE.Mesh>;
@@ -0,0 +1,25 @@
1
+ import _extends from '@babel/runtime/helpers/esm/extends';
2
+ import * as THREE from 'three';
3
+ import * as React from 'react';
4
+
5
+ function createScreenQuadGeometry() {
6
+ const geometry = new THREE.BufferGeometry();
7
+ const vertices = new Float32Array([-1, -1, 3, -1, -1, 3]);
8
+ geometry.boundingSphere = new THREE.Sphere();
9
+ geometry.boundingSphere.set(new THREE.Vector3(), Infinity);
10
+ geometry.setAttribute('position', new THREE.BufferAttribute(vertices, 2));
11
+ return geometry;
12
+ }
13
+ const ScreenQuad = /* @__PURE__ */React.forwardRef(function ScreenQuad({
14
+ children,
15
+ ...restProps
16
+ }, ref) {
17
+ const geometry = React.useMemo(createScreenQuadGeometry, []);
18
+ return /*#__PURE__*/React.createElement("mesh", _extends({
19
+ ref: ref,
20
+ geometry: geometry,
21
+ frustumCulled: false
22
+ }, restProps), children);
23
+ });
24
+
25
+ export { ScreenQuad };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("@react-three/fiber"),t=require("react"),c=require("three"),a=require("./calculateScaleFactor.cjs.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function n(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var c=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,c.get?c:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var l=u(e),o=n(t);const i=new c.Vector3,s=t.forwardRef((({scale:e=1,...c},u)=>{const n=t.useRef(null);return o.useImperativeHandle(u,(()=>n.current),[]),r.useFrame((r=>{const t=n.current;if(!t)return;const c=a.calculateScaleFactor(t.getWorldPosition(i),e,r.camera,r.size);t.scale.setScalar(c*e)})),o.createElement("object3D",l.default({ref:n},c))}));exports.ScreenSizer=s;
@@ -0,0 +1,7 @@
1
+ import { ThreeElements } from '@react-three/fiber';
2
+ import { Object3D } from 'three';
3
+ import { ForwardRefComponent } from '../helpers/ts-utils';
4
+ export type ScreenSizerProps = Omit<ThreeElements['object3D'], 'ref'> & {
5
+ scale?: number;
6
+ };
7
+ export declare const ScreenSizer: ForwardRefComponent<ScreenSizerProps, Object3D>;
@@ -0,0 +1,39 @@
1
+ import _extends from '@babel/runtime/helpers/esm/extends';
2
+ import { useFrame } from '@react-three/fiber';
3
+ import * as React from 'react';
4
+ import { forwardRef, useRef } from 'react';
5
+ import { Vector3 } from 'three';
6
+ import { calculateScaleFactor } from './calculateScaleFactor.js';
7
+
8
+ const worldPos = /* @__PURE__ */new Vector3();
9
+ /**
10
+ * Wraps children in an `Object3D` and attempts to scale from
11
+ * world units to screen units * scale factor.
12
+ *
13
+ * For example, this will render a box of roughly 1x1 pixel size,
14
+ * independently of how far the camera is.
15
+ *
16
+ * ```jsx
17
+ * <ScreenSizer>
18
+ * <Box />
19
+ * </ScreenSizer>
20
+ * ```
21
+ */
22
+ const ScreenSizer = /* @__PURE__ */forwardRef(({
23
+ scale = 1,
24
+ ...props
25
+ }, ref) => {
26
+ const container = useRef(null);
27
+ React.useImperativeHandle(ref, () => container.current, []);
28
+ useFrame(state => {
29
+ const obj = container.current;
30
+ if (!obj) return;
31
+ const sf = calculateScaleFactor(obj.getWorldPosition(worldPos), scale, state.camera, state.size);
32
+ obj.scale.setScalar(sf * scale);
33
+ });
34
+ return /*#__PURE__*/React.createElement("object3D", _extends({
35
+ ref: container
36
+ }, props));
37
+ });
38
+
39
+ export { ScreenSizer };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("@react-three/fiber");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var c=n(e),o=u(r);const a=o.forwardRef((({children:e,depth:r=-1,...n},u)=>{const a=o.useRef(null);return o.useImperativeHandle(u,(()=>a.current),[]),t.useFrame((({camera:e})=>{a.current.quaternion.copy(e.quaternion),a.current.position.copy(e.position)})),o.createElement("group",c.default({ref:a},n),o.createElement("group",{"position-z":-r},e))}));exports.ScreenSpace=a;
@@ -0,0 +1,7 @@
1
+ import { Group } from 'three';
2
+ import { ThreeElements } from '@react-three/fiber';
3
+ import { ForwardRefComponent } from '../helpers/ts-utils';
4
+ export type ScreenSpaceProps = Omit<ThreeElements['group'], 'ref'> & {
5
+ depth?: number;
6
+ };
7
+ export declare const ScreenSpace: ForwardRefComponent<ScreenSpaceProps, Group>;
@@ -0,0 +1,25 @@
1
+ import _extends from '@babel/runtime/helpers/esm/extends';
2
+ import * as React from 'react';
3
+ import { useFrame } from '@react-three/fiber';
4
+
5
+ const ScreenSpace = /* @__PURE__ */React.forwardRef(({
6
+ children,
7
+ depth = -1,
8
+ ...rest
9
+ }, ref) => {
10
+ const localRef = React.useRef(null);
11
+ React.useImperativeHandle(ref, () => localRef.current, []);
12
+ useFrame(({
13
+ camera
14
+ }) => {
15
+ localRef.current.quaternion.copy(camera.quaternion);
16
+ localRef.current.position.copy(camera.position);
17
+ });
18
+ return /*#__PURE__*/React.createElement("group", _extends({
19
+ ref: localRef
20
+ }, rest), /*#__PURE__*/React.createElement("group", {
21
+ "position-z": -depth
22
+ }, children));
23
+ });
24
+
25
+ export { ScreenSpace };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),n=require("@react-three/fiber"),o=require("three-stdlib");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var i=c(e),u=s(t),a=s(r);const l=a.createContext(null),f=a.forwardRef(((e,t)=>{a.useMemo((()=>n.extend({SegmentObject:m})),[]);const{limit:r=1e3,lineWidth:c=1,children:s,...f}=e,[d,b]=a.useState([]),[p]=a.useState((()=>new o.Line2)),[h]=a.useState((()=>new o.LineMaterial)),[g]=a.useState((()=>new o.LineSegmentsGeometry)),[v]=a.useState((()=>new u.Vector2(512,512))),[w]=a.useState((()=>Array(6*r).fill(0))),[S]=a.useState((()=>Array(6*r).fill(0))),j=a.useMemo((()=>({subscribe:e=>(b((t=>[...t,e])),()=>b((t=>t.filter((t=>t.current!==e.current)))))})),[]);return n.useFrame((()=>{for(let t=0;t<r;t++){var e;const r=null==(e=d[t])?void 0:e.current;r&&(w[6*t+0]=r.start.x,w[6*t+1]=r.start.y,w[6*t+2]=r.start.z,w[6*t+3]=r.end.x,w[6*t+4]=r.end.y,w[6*t+5]=r.end.z,S[6*t+0]=r.color.r,S[6*t+1]=r.color.g,S[6*t+2]=r.color.b,S[6*t+3]=r.color.r,S[6*t+4]=r.color.g,S[6*t+5]=r.color.b)}g.setColors(S),g.setPositions(w),p.computeLineDistances()})),a.createElement("primitive",{object:p,ref:t},a.createElement("primitive",{object:g,attach:"geometry"}),a.createElement("primitive",i.default({object:h,attach:"material",vertexColors:!0,resolution:v,linewidth:c},f)),a.createElement(l.Provider,{value:j},s))}));class m{constructor(){this.color=new u.Color("white"),this.start=new u.Vector3(0,0,0),this.end=new u.Vector3(0,0,0)}}const d=e=>e instanceof u.Vector3?e:new u.Vector3(..."number"==typeof e?[e,e,e]:e),b=a.forwardRef((({color:e,start:t,end:r},n)=>{const o=a.useContext(l);if(!o)throw"Segment must used inside Segments component.";const c=a.useRef(null);return a.useImperativeHandle(n,(()=>c.current),[]),a.useLayoutEffect((()=>o.subscribe(c)),[]),a.createElement("segmentObject",{ref:c,color:e,start:d(t),end:d(r)})}));exports.Segment=b,exports.SegmentObject=m,exports.Segments=f;
@@ -0,0 +1,29 @@
1
+ import * as THREE from 'three';
2
+ import * as React from 'react';
3
+ import { ReactThreeFiber, ThreeElements, ThreeElement } from '@react-three/fiber';
4
+ import { Line2, LineMaterialParameters } from 'three-stdlib';
5
+ import { ForwardRefComponent } from '../helpers/ts-utils';
6
+ export type SegmentsProps = LineMaterialParameters & {
7
+ limit?: number;
8
+ lineWidth?: number;
9
+ children: React.ReactNode;
10
+ };
11
+ export type SegmentProps = Omit<ThreeElements['segmentObject'], 'ref' | 'start' | 'end' | 'color'> & {
12
+ start: ReactThreeFiber.Vector3;
13
+ end: ReactThreeFiber.Vector3;
14
+ color?: ReactThreeFiber.Color;
15
+ };
16
+ declare const Segments: ForwardRefComponent<SegmentsProps, Line2>;
17
+ declare module '@react-three/fiber' {
18
+ interface ThreeElements {
19
+ segmentObject: ThreeElement<typeof SegmentObject>;
20
+ }
21
+ }
22
+ export declare class SegmentObject {
23
+ color: THREE.Color;
24
+ start: THREE.Vector3;
25
+ end: THREE.Vector3;
26
+ constructor();
27
+ }
28
+ declare const Segment: ForwardRefComponent<SegmentProps, SegmentObject>;
29
+ export { Segments, Segment };
@@ -0,0 +1,96 @@
1
+ import _extends from '@babel/runtime/helpers/esm/extends';
2
+ import * as THREE from 'three';
3
+ import * as React from 'react';
4
+ import { extend, useFrame } from '@react-three/fiber';
5
+ import { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';
6
+
7
+ const context = /* @__PURE__ */React.createContext(null);
8
+ const Segments = /* @__PURE__ */React.forwardRef((props, forwardedRef) => {
9
+ React.useMemo(() => extend({
10
+ SegmentObject
11
+ }), []);
12
+ const {
13
+ limit = 1000,
14
+ lineWidth = 1.0,
15
+ children,
16
+ ...rest
17
+ } = props;
18
+ const [segments, setSegments] = React.useState([]);
19
+ const [line] = React.useState(() => new Line2());
20
+ const [material] = React.useState(() => new LineMaterial());
21
+ const [geometry] = React.useState(() => new LineSegmentsGeometry());
22
+ const [resolution] = React.useState(() => new THREE.Vector2(512, 512));
23
+ const [positions] = React.useState(() => Array(limit * 6).fill(0));
24
+ const [colors] = React.useState(() => Array(limit * 6).fill(0));
25
+ const api = React.useMemo(() => ({
26
+ subscribe: ref => {
27
+ setSegments(segments => [...segments, ref]);
28
+ return () => setSegments(segments => segments.filter(item => item.current !== ref.current));
29
+ }
30
+ }), []);
31
+ useFrame(() => {
32
+ for (let i = 0; i < limit; i++) {
33
+ var _segments$i;
34
+ const segment = (_segments$i = segments[i]) == null ? void 0 : _segments$i.current;
35
+ if (segment) {
36
+ positions[i * 6 + 0] = segment.start.x;
37
+ positions[i * 6 + 1] = segment.start.y;
38
+ positions[i * 6 + 2] = segment.start.z;
39
+ positions[i * 6 + 3] = segment.end.x;
40
+ positions[i * 6 + 4] = segment.end.y;
41
+ positions[i * 6 + 5] = segment.end.z;
42
+ colors[i * 6 + 0] = segment.color.r;
43
+ colors[i * 6 + 1] = segment.color.g;
44
+ colors[i * 6 + 2] = segment.color.b;
45
+ colors[i * 6 + 3] = segment.color.r;
46
+ colors[i * 6 + 4] = segment.color.g;
47
+ colors[i * 6 + 5] = segment.color.b;
48
+ }
49
+ }
50
+ geometry.setColors(colors);
51
+ geometry.setPositions(positions);
52
+ line.computeLineDistances();
53
+ });
54
+ return /*#__PURE__*/React.createElement("primitive", {
55
+ object: line,
56
+ ref: forwardedRef
57
+ }, /*#__PURE__*/React.createElement("primitive", {
58
+ object: geometry,
59
+ attach: "geometry"
60
+ }), /*#__PURE__*/React.createElement("primitive", _extends({
61
+ object: material,
62
+ attach: "material",
63
+ vertexColors: true,
64
+ resolution: resolution,
65
+ linewidth: lineWidth
66
+ }, rest)), /*#__PURE__*/React.createElement(context.Provider, {
67
+ value: api
68
+ }, children));
69
+ });
70
+ class SegmentObject {
71
+ constructor() {
72
+ this.color = new THREE.Color('white');
73
+ this.start = new THREE.Vector3(0, 0, 0);
74
+ this.end = new THREE.Vector3(0, 0, 0);
75
+ }
76
+ }
77
+ const normPos = pos => pos instanceof THREE.Vector3 ? pos : new THREE.Vector3(...(typeof pos === 'number' ? [pos, pos, pos] : pos));
78
+ const Segment = /* @__PURE__ */React.forwardRef(({
79
+ color,
80
+ start,
81
+ end
82
+ }, forwardedRef) => {
83
+ const api = React.useContext(context);
84
+ if (!api) throw 'Segment must used inside Segments component.';
85
+ const ref = React.useRef(null);
86
+ React.useImperativeHandle(forwardedRef, () => ref.current, []);
87
+ React.useLayoutEffect(() => api.subscribe(ref), []);
88
+ return /*#__PURE__*/React.createElement("segmentObject", {
89
+ ref: ref,
90
+ color: color,
91
+ start: normPos(start),
92
+ end: normPos(end)
93
+ });
94
+ });
95
+
96
+ export { Segment, SegmentObject, Segments };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var n=a(e),c=o(t);const i=c.forwardRef((({fog:e=!1,renderOrder:t,depthWrite:a=!1,colorStop:o=0,color:i="black",opacity:l=.5,...d},u)=>{const f=c.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const t=e.getContext("2d"),a=t.createRadialGradient(e.width/2,e.height/2,0,e.width/2,e.height/2,e.width/2);return a.addColorStop(o,new r.Color(i).getStyle()),a.addColorStop(1,"rgba(0,0,0,0)"),t.fillStyle=a,t.fillRect(0,0,e.width,e.height),e}),[i,o]);return c.createElement("mesh",n.default({renderOrder:t,ref:u,"rotation-x":-Math.PI/2},d),c.createElement("planeGeometry",null),c.createElement("meshBasicMaterial",{transparent:!0,opacity:l,fog:e,depthWrite:a,side:r.DoubleSide},c.createElement("canvasTexture",{attach:"map",args:[f]})))}));exports.Shadow=i;
@@ -0,0 +1,12 @@
1
+ import { Mesh, Color, type PlaneGeometry, type MeshBasicMaterial } from 'three';
2
+ import { ForwardRefComponent } from '../helpers/ts-utils';
3
+ import { ThreeElements } from '@react-three/fiber';
4
+ export type ShadowProps = Omit<ThreeElements['mesh'], 'ref'> & {
5
+ colorStop?: number;
6
+ fog?: boolean;
7
+ color?: Color | number | string;
8
+ opacity?: number;
9
+ depthWrite?: boolean;
10
+ };
11
+ export type ShadowType = Mesh<PlaneGeometry, MeshBasicMaterial>;
12
+ export declare const Shadow: ForwardRefComponent<ShadowProps, ShadowType>;
package/core/Shadow.js ADDED
@@ -0,0 +1,42 @@
1
+ import _extends from '@babel/runtime/helpers/esm/extends';
2
+ import * as React from 'react';
3
+ import { Color, DoubleSide } from 'three';
4
+
5
+ const Shadow = /* @__PURE__ */React.forwardRef(({
6
+ fog = false,
7
+ renderOrder,
8
+ depthWrite = false,
9
+ colorStop = 0.0,
10
+ color = 'black',
11
+ opacity = 0.5,
12
+ ...props
13
+ }, ref) => {
14
+ const canvas = React.useMemo(() => {
15
+ const canvas = document.createElement('canvas');
16
+ canvas.width = 128;
17
+ canvas.height = 128;
18
+ const context = canvas.getContext('2d');
19
+ const gradient = context.createRadialGradient(canvas.width / 2, canvas.height / 2, 0, canvas.width / 2, canvas.height / 2, canvas.width / 2);
20
+ gradient.addColorStop(colorStop, new Color(color).getStyle());
21
+ gradient.addColorStop(1, 'rgba(0,0,0,0)');
22
+ context.fillStyle = gradient;
23
+ context.fillRect(0, 0, canvas.width, canvas.height);
24
+ return canvas;
25
+ }, [color, colorStop]);
26
+ return /*#__PURE__*/React.createElement("mesh", _extends({
27
+ renderOrder: renderOrder,
28
+ ref: ref,
29
+ "rotation-x": -Math.PI / 2
30
+ }, props), /*#__PURE__*/React.createElement("planeGeometry", null), /*#__PURE__*/React.createElement("meshBasicMaterial", {
31
+ transparent: true,
32
+ opacity: opacity,
33
+ fog: fog,
34
+ depthWrite: depthWrite,
35
+ side: DoubleSide
36
+ }, /*#__PURE__*/React.createElement("canvasTexture", {
37
+ attach: "map",
38
+ args: [canvas]
39
+ })));
40
+ });
41
+
42
+ export { Shadow };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@react-three/fiber"),r=require("react"),a=require("three");function t(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var t=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(r,a,t.get?t:{enumerable:!0,get:function(){return e[a]}})}})),r.default=e,Object.freeze(r)}var n=t(r),u=t(a);exports.ShadowAlpha=function({opacity:r,alphaMap:a}){const t=n.useRef(null),l=n.useRef(null),o=n.useRef({value:1}),c=n.useRef({value:null}),i=n.useRef({value:!1});return n.useLayoutEffect((()=>{t.current.onBeforeCompile=l.current.onBeforeCompile=e=>{const r=e.fragmentShader.indexOf("void main");let a,t="",n=r;for(;"\n"!==a&&n<r+100;)a=e.fragmentShader.charAt(n),t+=a,n++;t=t.trim(),e.vertexShader=e.vertexShader.replace("void main() {","\n varying vec2 custom_vUv;\n\n void main() {\n custom_vUv = uv;\n \n "),e.fragmentShader=e.fragmentShader.replace(t,"\n uniform float uShadowOpacity;\n uniform sampler2D uAlphaMap;\n uniform bool uHasAlphaMap;\n\n varying vec2 custom_vUv;\n \n float bayerDither2x2( vec2 v ) {\n return mod( 3.0 * v.y + 2.0 * v.x, 4.0 );\n }\n \n float bayerDither4x4( vec2 v ) {\n vec2 P1 = mod( v, 2.0 );\n vec2 P2 = mod( floor( 0.5 * v ), 2.0 );\n return 4.0 * bayerDither2x2( P1 ) + bayerDither2x2( P2 );\n }\n \n void main() {\n float alpha = \n uHasAlphaMap ? \n uShadowOpacity * texture2D(uAlphaMap, custom_vUv).x\n : uShadowOpacity;\n\n if( ( bayerDither4x4( floor( mod( gl_FragCoord.xy, 4.0 ) ) ) ) / 16.0 >= alpha ) discard;\n \n "),e.uniforms.uShadowOpacity=o.current,e.uniforms.uAlphaMap=c.current,e.uniforms.uHasAlphaMap=i.current}}),[]),e.useFrame((()=>{var e;const n=null==(e=t.current.__r3f)||null==(e=e.parent)?void 0:e.object;if(n){const e=n.material;e&&(o.current.value=null!=r?r:e.opacity,!1===a?(c.current.value=null,i.current.value=!1):(c.current.value=a||e.alphaMap,i.current.value=!!c.current.value))}})),n.createElement(n.Fragment,null,n.createElement("meshDepthMaterial",{ref:t,attach:"customDepthMaterial",depthPacking:u.RGBADepthPacking}),n.createElement("meshDistanceMaterial",{ref:l,attach:"customDistanceMaterial"}))};
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import * as THREE from 'three';
3
+ export interface ShadowAlphaProps {
4
+ opacity?: number;
5
+ alphaMap?: THREE.Texture | boolean;
6
+ }
7
+ export declare function ShadowAlpha({ opacity, alphaMap }: ShadowAlphaProps): React.JSX.Element;
@@ -0,0 +1,108 @@
1
+ import { useFrame } from '@react-three/fiber';
2
+ import * as React from 'react';
3
+ import * as THREE from 'three';
4
+
5
+ /**
6
+ * Integration and compilation: Faraz Shaikh (https://twitter.com/CantBeFaraz)
7
+ *
8
+ * Based on:
9
+ * - https://gkjohnson.github.io/threejs-sandbox/screendoor-transparency/ by Garrett Johnson (https://github.com/gkjohnson)
10
+ *
11
+ * Note:
12
+ * - Must depreciate in favor of https://github.com/mrdoob/three.js/issues/10600 when it's ready.
13
+ */
14
+ function ShadowAlpha({
15
+ opacity,
16
+ alphaMap
17
+ }) {
18
+ const depthMaterialRef = React.useRef(null);
19
+ const distanceMaterialRef = React.useRef(null);
20
+ const uShadowOpacity = React.useRef({
21
+ value: 1
22
+ });
23
+ const uAlphaMap = React.useRef({
24
+ value: null
25
+ });
26
+ const uHasAlphaMap = React.useRef({
27
+ value: false
28
+ });
29
+ React.useLayoutEffect(() => {
30
+ depthMaterialRef.current.onBeforeCompile = distanceMaterialRef.current.onBeforeCompile = shader => {
31
+ // Need to get the "void main" line dynamically because the lines for
32
+ // MeshDistanceMaterial and MeshDepthMaterial are different 🤦‍♂️
33
+ const mainLineStart = shader.fragmentShader.indexOf('void main');
34
+ let mainLine = '';
35
+ let ch;
36
+ let i = mainLineStart;
37
+ while (ch !== '\n' && i < mainLineStart + 100) {
38
+ ch = shader.fragmentShader.charAt(i);
39
+ mainLine += ch;
40
+ i++;
41
+ }
42
+ mainLine = mainLine.trim();
43
+ shader.vertexShader = shader.vertexShader.replace('void main() {', `
44
+ varying vec2 custom_vUv;
45
+
46
+ void main() {
47
+ custom_vUv = uv;
48
+
49
+ `);
50
+ shader.fragmentShader = shader.fragmentShader.replace(mainLine, `
51
+ uniform float uShadowOpacity;
52
+ uniform sampler2D uAlphaMap;
53
+ uniform bool uHasAlphaMap;
54
+
55
+ varying vec2 custom_vUv;
56
+
57
+ float bayerDither2x2( vec2 v ) {
58
+ return mod( 3.0 * v.y + 2.0 * v.x, 4.0 );
59
+ }
60
+
61
+ float bayerDither4x4( vec2 v ) {
62
+ vec2 P1 = mod( v, 2.0 );
63
+ vec2 P2 = mod( floor( 0.5 * v ), 2.0 );
64
+ return 4.0 * bayerDither2x2( P1 ) + bayerDither2x2( P2 );
65
+ }
66
+
67
+ void main() {
68
+ float alpha =
69
+ uHasAlphaMap ?
70
+ uShadowOpacity * texture2D(uAlphaMap, custom_vUv).x
71
+ : uShadowOpacity;
72
+
73
+ if( ( bayerDither4x4( floor( mod( gl_FragCoord.xy, 4.0 ) ) ) ) / 16.0 >= alpha ) discard;
74
+
75
+ `);
76
+ shader.uniforms['uShadowOpacity'] = uShadowOpacity.current;
77
+ shader.uniforms['uAlphaMap'] = uAlphaMap.current;
78
+ shader.uniforms['uHasAlphaMap'] = uHasAlphaMap.current;
79
+ };
80
+ }, []);
81
+ useFrame(() => {
82
+ var _r3f;
83
+ const parent = (_r3f = depthMaterialRef.current.__r3f) == null || (_r3f = _r3f.parent) == null ? void 0 : _r3f.object;
84
+ if (parent) {
85
+ const parentMainMaterial = parent.material;
86
+ if (parentMainMaterial) {
87
+ uShadowOpacity.current.value = opacity !== null && opacity !== void 0 ? opacity : parentMainMaterial.opacity;
88
+ if (alphaMap === false) {
89
+ uAlphaMap.current.value = null;
90
+ uHasAlphaMap.current.value = false;
91
+ } else {
92
+ uAlphaMap.current.value = alphaMap || parentMainMaterial.alphaMap;
93
+ uHasAlphaMap.current.value = !!uAlphaMap.current.value;
94
+ }
95
+ }
96
+ }
97
+ });
98
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("meshDepthMaterial", {
99
+ ref: depthMaterialRef,
100
+ attach: "customDepthMaterial",
101
+ depthPacking: THREE.RGBADepthPacking
102
+ }), /*#__PURE__*/React.createElement("meshDistanceMaterial", {
103
+ ref: distanceMaterialRef,
104
+ attach: "customDistanceMaterial"
105
+ }));
106
+ }
107
+
108
+ export { ShadowAlpha };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three-stdlib"),i=require("three");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var u=n(e),o=a(t);function c(e,t,r=new i.Vector3){const n=Math.PI*(e-.5),a=2*Math.PI*(t-.5);return r.x=Math.cos(a),r.y=Math.sin(n),r.z=Math.sin(a),r}const l=o.forwardRef((({inclination:e=.6,azimuth:t=.1,distance:n=1e3,mieCoefficient:a=.005,mieDirectionalG:l=.8,rayleigh:s=.5,turbidity:f=10,sunPosition:m=c(e,t),...d},b)=>{const h=o.useMemo((()=>(new i.Vector3).setScalar(n)),[n]),[y]=o.useState((()=>new r.Sky));return o.createElement("primitive",u.default({object:y,ref:b,"material-uniforms-mieCoefficient-value":a,"material-uniforms-mieDirectionalG-value":l,"material-uniforms-rayleigh-value":s,"material-uniforms-sunPosition-value":m,"material-uniforms-turbidity-value":f,scale:h},d))}));exports.Sky=l,exports.calcPosFromAngles=c;
package/core/Sky.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { ReactThreeFiber } from '@react-three/fiber';
2
+ import { Sky as SkyImpl } from 'three-stdlib';
3
+ import { Vector3 } from 'three';
4
+ import { ForwardRefComponent } from '../helpers/ts-utils';
5
+ export type SkyProps = {
6
+ distance?: number;
7
+ sunPosition?: ReactThreeFiber.Vector3;
8
+ inclination?: number;
9
+ azimuth?: number;
10
+ mieCoefficient?: number;
11
+ mieDirectionalG?: number;
12
+ rayleigh?: number;
13
+ turbidity?: number;
14
+ };
15
+ export declare function calcPosFromAngles(inclination: number, azimuth: number, vector?: Vector3): Vector3;
16
+ export declare const Sky: ForwardRefComponent<SkyProps, SkyImpl>;