@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,38 @@
1
+ import { DepthTexture, DepthFormat, UnsignedShortType } from 'three';
2
+ import * as React from 'react';
3
+ import { useThree, useFrame } from '@react-three/fiber';
4
+ import { useFBO } from './Fbo.js';
5
+
6
+ function useDepthBuffer({
7
+ size = 256,
8
+ frames = Infinity
9
+ } = {}) {
10
+ const dpr = useThree(state => state.viewport.dpr);
11
+ const {
12
+ width,
13
+ height
14
+ } = useThree(state => state.size);
15
+ const w = size || width * dpr;
16
+ const h = size || height * dpr;
17
+ const depthConfig = React.useMemo(() => {
18
+ const depthTexture = new DepthTexture(w, h);
19
+ depthTexture.format = DepthFormat;
20
+ depthTexture.type = UnsignedShortType;
21
+ return {
22
+ depthTexture
23
+ };
24
+ }, [w, h]);
25
+ let count = 0;
26
+ const depthFBO = useFBO(w, h, depthConfig);
27
+ useFrame(state => {
28
+ if (frames === Infinity || count < frames) {
29
+ state.gl.setRenderTarget(depthFBO);
30
+ state.gl.render(state.scene, state.camera);
31
+ state.gl.setRenderTarget(null);
32
+ count++;
33
+ }
34
+ });
35
+ return depthFBO.depthTexture;
36
+ }
37
+
38
+ export { useDepthBuffer };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@react-three/fiber"),t=require("three"),n=require("three-stdlib"),r=require("@monogrid/gainmap-js"),s=require("../helpers/environment-assets.cjs.js"),o=require("react");const i="https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/",p=e=>Array.isArray(e),a=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"];function l({files:n=a,path:r="",preset:l,colorSpace:c,extensions:u}={}){l&&(d(l),n=s.presetsObj[l],r=i);const h=p(n),{extension:f,isCubemap:j}=g(n),m=b(f);if(!m)throw new Error("useEnvironment: Unrecognized file extension: "+n);const x=e.useThree((e=>e.gl));o.useLayoutEffect((()=>{"webp"!==f&&"jpg"!==f&&"jpeg"!==f||x.domElement.addEventListener("webglcontextlost",(function(){e.useLoader.clear(m,h?[n]:n)}),{once:!0})}),[n,x.domElement]);const w=e.useLoader(m,h?[n]:n,(e=>{"webp"!==f&&"jpg"!==f&&"jpeg"!==f||e.setRenderer(x),null==e.setPath||e.setPath(r),u&&u(e)}));let E=h?w[0]:w;var v;"jpg"!==f&&"jpeg"!==f&&"webp"!==f||(E=null==(v=E.renderTarget)?void 0:v.texture);return E.mapping=j?t.CubeReflectionMapping:t.EquirectangularReflectionMapping,E.colorSpace=null!=c?c:j?"srgb":"srgb-linear",E}const c={files:a,path:"",preset:void 0,extensions:void 0};l.preload=t=>{const n={...c,...t};let{files:r,path:o=""}=n;const{preset:a,extensions:l}=n;a&&(d(a),r=s.presetsObj[a],o=i);const{extension:u}=g(r);if("webp"===u||"jpg"===u||"jpeg"===u)throw new Error("useEnvironment: Preloading gainmaps is not supported");const h=b(u);if(!h)throw new Error("useEnvironment: Unrecognized file extension: "+r);e.useLoader.preload(h,p(r)?[r]:r,(e=>{null==e.setPath||e.setPath(o),l&&l(e)}))};const u={files:a,preset:void 0};function d(e){if(!(e in s.presetsObj))throw new Error("Preset must be one of: "+Object.keys(s.presetsObj).join(", "))}function g(e){var t;const n=p(e)&&6===e.length,r=p(e)&&3===e.length&&e.some((e=>e.endsWith("json"))),s=p(e)?e[0]:e;return{extension:n?"cube":r?"webp":s.startsWith("data:application/exr")?"exr":s.startsWith("data:application/hdr")?"hdr":s.startsWith("data:image/jpeg")?"jpg":null==(t=s.split(".").pop())||null==(t=t.split("?"))||null==(t=t.shift())?void 0:t.toLowerCase(),isCubemap:n,isGainmap:r}}function b(e){return"cube"===e?t.CubeTextureLoader:"hdr"===e?n.RGBELoader:"exr"===e?n.EXRLoader:"jpg"===e||"jpeg"===e?r.HDRJPGLoader:"webp"===e?r.GainMapLoader:null}l.clear=t=>{const n={...u,...t};let{files:r}=n;const{preset:o}=n;o&&(d(o),r=s.presetsObj[o]);const{extension:i}=g(r),a=b(i);if(!a)throw new Error("useEnvironment: Unrecognized file extension: "+r);e.useLoader.clear(a,p(r)?[r]:r)},exports.useEnvironment=l;
@@ -0,0 +1,17 @@
1
+ import { Texture, Loader, CubeTexture, ColorSpace } from 'three';
2
+ import { PresetsType } from '../helpers/environment-assets';
3
+ export type EnvironmentLoaderProps = {
4
+ files?: string | string[];
5
+ path?: string;
6
+ preset?: PresetsType;
7
+ extensions?: (loader: Loader) => void;
8
+ colorSpace?: ColorSpace;
9
+ };
10
+ export declare function useEnvironment({ files, path, preset, colorSpace, extensions, }?: Partial<EnvironmentLoaderProps>): Texture | CubeTexture;
11
+ export declare namespace useEnvironment {
12
+ var preload: (preloadOptions?: EnvironmentLoaderPreloadOptions) => void;
13
+ var clear: (clearOptions?: EnvironmentLoaderClearOptions) => void;
14
+ }
15
+ type EnvironmentLoaderPreloadOptions = Omit<EnvironmentLoaderProps, 'encoding'>;
16
+ type EnvironmentLoaderClearOptions = Pick<EnvironmentLoaderProps, 'files' | 'preset'>;
17
+ export {};
@@ -0,0 +1,150 @@
1
+ import { useThree, useLoader } from '@react-three/fiber';
2
+ import { CubeReflectionMapping, EquirectangularReflectionMapping, CubeTextureLoader } from 'three';
3
+ import { RGBELoader, EXRLoader } from 'three-stdlib';
4
+ import { HDRJPGLoader, GainMapLoader } from '@monogrid/gainmap-js';
5
+ import { presetsObj } from '../helpers/environment-assets.js';
6
+ import { useLayoutEffect } from 'react';
7
+
8
+ const CUBEMAP_ROOT = 'https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/';
9
+ const isArray = arr => Array.isArray(arr);
10
+ const defaultFiles = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'];
11
+ function useEnvironment({
12
+ files = defaultFiles,
13
+ path = '',
14
+ preset = undefined,
15
+ colorSpace = undefined,
16
+ extensions
17
+ } = {}) {
18
+ if (preset) {
19
+ validatePreset(preset);
20
+ files = presetsObj[preset];
21
+ path = CUBEMAP_ROOT;
22
+ }
23
+
24
+ // Everything else
25
+ const multiFile = isArray(files);
26
+ const {
27
+ extension,
28
+ isCubemap
29
+ } = getExtension(files);
30
+ const loader = getLoader(extension);
31
+ if (!loader) throw new Error('useEnvironment: Unrecognized file extension: ' + files);
32
+ const gl = useThree(state => state.gl);
33
+ useLayoutEffect(() => {
34
+ // Only required for gainmap
35
+ if (extension !== 'webp' && extension !== 'jpg' && extension !== 'jpeg') return;
36
+ function clearGainmapTexture() {
37
+ useLoader.clear(loader, multiFile ? [files] : files);
38
+ }
39
+ gl.domElement.addEventListener('webglcontextlost', clearGainmapTexture, {
40
+ once: true
41
+ });
42
+ }, [files, gl.domElement]);
43
+ const loaderResult = useLoader(loader, multiFile ? [files] : files, loader => {
44
+ // Gainmap requires a renderer
45
+ if (extension === 'webp' || extension === 'jpg' || extension === 'jpeg') {
46
+ // @ts-expect-error
47
+ loader.setRenderer(gl);
48
+ }
49
+ loader.setPath == null || loader.setPath(path);
50
+ // @ts-expect-error
51
+ if (extensions) extensions(loader);
52
+ });
53
+ let texture = multiFile ?
54
+ // @ts-ignore
55
+ loaderResult[0] : loaderResult;
56
+ if (extension === 'jpg' || extension === 'jpeg' || extension === 'webp') {
57
+ var _renderTarget;
58
+ texture = (_renderTarget = texture.renderTarget) == null ? void 0 : _renderTarget.texture;
59
+ }
60
+ texture.mapping = isCubemap ? CubeReflectionMapping : EquirectangularReflectionMapping;
61
+ texture.colorSpace = colorSpace !== null && colorSpace !== void 0 ? colorSpace : isCubemap ? 'srgb' : 'srgb-linear';
62
+ return texture;
63
+ }
64
+ const preloadDefaultOptions = {
65
+ files: defaultFiles,
66
+ path: '',
67
+ preset: undefined,
68
+ extensions: undefined
69
+ };
70
+ useEnvironment.preload = preloadOptions => {
71
+ const options = {
72
+ ...preloadDefaultOptions,
73
+ ...preloadOptions
74
+ };
75
+ let {
76
+ files,
77
+ path = ''
78
+ } = options;
79
+ const {
80
+ preset,
81
+ extensions
82
+ } = options;
83
+ if (preset) {
84
+ validatePreset(preset);
85
+ files = presetsObj[preset];
86
+ path = CUBEMAP_ROOT;
87
+ }
88
+ const {
89
+ extension
90
+ } = getExtension(files);
91
+ if (extension === 'webp' || extension === 'jpg' || extension === 'jpeg') {
92
+ throw new Error('useEnvironment: Preloading gainmaps is not supported');
93
+ }
94
+ const loader = getLoader(extension);
95
+ if (!loader) throw new Error('useEnvironment: Unrecognized file extension: ' + files);
96
+ useLoader.preload(loader, isArray(files) ? [files] : files, loader => {
97
+ loader.setPath == null || loader.setPath(path);
98
+ // @ts-expect-error
99
+ if (extensions) extensions(loader);
100
+ });
101
+ };
102
+ const clearDefaultOptins = {
103
+ files: defaultFiles,
104
+ preset: undefined
105
+ };
106
+ useEnvironment.clear = clearOptions => {
107
+ const options = {
108
+ ...clearDefaultOptins,
109
+ ...clearOptions
110
+ };
111
+ let {
112
+ files
113
+ } = options;
114
+ const {
115
+ preset
116
+ } = options;
117
+ if (preset) {
118
+ validatePreset(preset);
119
+ files = presetsObj[preset];
120
+ }
121
+ const {
122
+ extension
123
+ } = getExtension(files);
124
+ const loader = getLoader(extension);
125
+ if (!loader) throw new Error('useEnvironment: Unrecognized file extension: ' + files);
126
+ useLoader.clear(loader, isArray(files) ? [files] : files);
127
+ };
128
+ function validatePreset(preset) {
129
+ if (!(preset in presetsObj)) throw new Error('Preset must be one of: ' + Object.keys(presetsObj).join(', '));
130
+ }
131
+ function getExtension(files) {
132
+ var _firstEntry$split$pop;
133
+ const isCubemap = isArray(files) && files.length === 6;
134
+ const isGainmap = isArray(files) && files.length === 3 && files.some(file => file.endsWith('json'));
135
+ const firstEntry = isArray(files) ? files[0] : files;
136
+
137
+ // Everything else
138
+ const extension = isCubemap ? 'cube' : isGainmap ? 'webp' : firstEntry.startsWith('data:application/exr') ? 'exr' : firstEntry.startsWith('data:application/hdr') ? 'hdr' : firstEntry.startsWith('data:image/jpeg') ? 'jpg' : (_firstEntry$split$pop = firstEntry.split('.').pop()) == null || (_firstEntry$split$pop = _firstEntry$split$pop.split('?')) == null || (_firstEntry$split$pop = _firstEntry$split$pop.shift()) == null ? void 0 : _firstEntry$split$pop.toLowerCase();
139
+ return {
140
+ extension,
141
+ isCubemap,
142
+ isGainmap
143
+ };
144
+ }
145
+ function getLoader(extension) {
146
+ const loader = extension === 'cube' ? CubeTextureLoader : extension === 'hdr' ? RGBELoader : extension === 'exr' ? EXRLoader : extension === 'jpg' || extension === 'jpeg' ? HDRJPGLoader : extension === 'webp' ? GainMapLoader : null;
147
+ return loader;
148
+ }
149
+
150
+ export { useEnvironment };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three-stdlib"),r=require("suspend-react");let t=null;async function n(r){const n=await async function(e){return"string"==typeof e?await(await fetch(e)).json():e}(r);return a=n,t||(t=new e.FontLoader),t.parse(a);var a}function a(e){return r.suspend(n,[e])}a.preload=e=>r.preload(n,[e]),a.clear=e=>r.clear([e]),exports.useFont=a;
@@ -0,0 +1,24 @@
1
+ export type Glyph = {
2
+ _cachedOutline: string[];
3
+ ha: number;
4
+ o: string;
5
+ };
6
+ export type FontData = {
7
+ boundingBox: {
8
+ yMax: number;
9
+ yMin: number;
10
+ };
11
+ familyName: string;
12
+ glyphs: {
13
+ [k: string]: Glyph;
14
+ };
15
+ resolution: number;
16
+ underlineThickness: number;
17
+ };
18
+ type FontInput = string | FontData;
19
+ export declare function useFont(font: FontInput): import("three-stdlib").Font;
20
+ export declare namespace useFont {
21
+ var preload: (font: FontInput) => undefined;
22
+ var clear: (font: FontInput) => void;
23
+ }
24
+ export {};
@@ -0,0 +1,24 @@
1
+ import { FontLoader } from 'three-stdlib';
2
+ import { suspend, preload, clear } from 'suspend-react';
3
+
4
+ let fontLoader = null;
5
+ async function loadFontData(font) {
6
+ return typeof font === 'string' ? await (await fetch(font)).json() : font;
7
+ }
8
+ function parseFontData(fontData) {
9
+ if (!fontLoader) {
10
+ fontLoader = new FontLoader();
11
+ }
12
+ return fontLoader.parse(fontData);
13
+ }
14
+ async function loader(font) {
15
+ const data = await loadFontData(font);
16
+ return parseFontData(data);
17
+ }
18
+ function useFont(font) {
19
+ return suspend(loader, [font]);
20
+ }
21
+ useFont.preload = font => preload(loader, [font]);
22
+ useFont.clear = font => clear([font]);
23
+
24
+ export { useFont };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber");function t(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 n=t(e);exports.useIntersect=function(e){const t=n.useRef(null),u=n.useRef(!1),c=n.useRef(!1),f=n.useRef(e);return n.useLayoutEffect((()=>{f.current=e}),[e]),n.useEffect((()=>{const e=t.current;if(e){const t=r.addEffect((()=>(u.current=!1,!0))),n=e.onBeforeRender;e.onBeforeRender=()=>u.current=!0;const o=r.addAfterEffect((()=>(u.current!==c.current&&(null==f.current||f.current(c.current=u.current)),!0)));return()=>{e.onBeforeRender=n,t(),o()}}}),[]),t};
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ import { Object3D } from 'three';
3
+ export declare function useIntersect<T extends Object3D>(onChange: (visible: boolean) => void): React.RefObject<T>;
@@ -0,0 +1,36 @@
1
+ import * as React from 'react';
2
+ import { addEffect, addAfterEffect } from '@react-three/fiber';
3
+
4
+ function useIntersect(onChange) {
5
+ const ref = React.useRef(null);
6
+ const check = React.useRef(false);
7
+ const temp = React.useRef(false);
8
+ const callback = React.useRef(onChange);
9
+ React.useLayoutEffect(() => void (callback.current = onChange), [onChange]);
10
+ React.useEffect(() => {
11
+ const obj = ref.current;
12
+ if (obj) {
13
+ // Stamp out frustum check pre-emptively
14
+ const unsub1 = addEffect(() => {
15
+ check.current = false;
16
+ return true;
17
+ });
18
+ // If the object is inside the frustum three will call onRender
19
+ const oldOnRender = obj.onBeforeRender;
20
+ obj.onBeforeRender = () => check.current = true;
21
+ // Compare the check value against the temp value, if it differs set state
22
+ const unsub2 = addAfterEffect(() => {
23
+ if (check.current !== temp.current) callback.current == null || callback.current(temp.current = check.current);
24
+ return true;
25
+ });
26
+ return () => {
27
+ obj.onBeforeRender = oldOnRender;
28
+ unsub1();
29
+ unsub2();
30
+ };
31
+ }
32
+ }, []);
33
+ return ref;
34
+ }
35
+
36
+ export { useIntersect };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("@react-three/fiber"),t=require("react");function a(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var n=a(e),s=a(t);const o=(e,r)=>{if(Array.isArray(e))return e[0];return e[null!=r?r:Object.keys(e)[0]][0]},u=e=>{for(let r=3;r<e.length;r+=4)if(0!==e[r])return!1;return!0};function c(a,c,i,f,l,m){const h=s.useRef(r.useThree((e=>e.viewport))),d=s.useRef(null),w=s.useRef(0),p=s.useRef(a),y=s.useRef(c),g=s.useRef(i),[b,x]=t.useState(null),[A,S]=s.useState(new n.Texture),L=s.useMemo((()=>new n.TextureLoader),[]),[C,O]=t.useState(null),j=s.useCallback(((e,r,t)=>{const a=r*(h.current.aspect>e/r?h.current.width/e:h.current.height/r),s=e*(h.current.aspect>e/r?h.current.width/e:h.current.height/r)*t,o=a*t;let u=Math.min(1,s),c=Math.min(1,o);return s>1&&(u=1,c=o/s*1),new n.Vector3(u,c,1)}),[]),k=s.useCallback(((e,r)=>{if(e.image){const t=document.createElement("canvas"),a=t.getContext("2d",m);if(!a)throw new Error("Failed to get 2d context");t.width=e.image.width,t.height=e.image.height,a.drawImage(e.image,0,0);const n=e.image.width,s=e.image.height,o=Math.round(Math.sqrt(r*(n/s))),c=Math.round(r/o),i=n/o,f=s/c,l=[];for(let e=0;e<c;e++)for(let t=0;t<o;t++){if(e*o+t>=r){l.push({row:e,col:t});continue}const n=a.getImageData(t*i,e*f,i,f).data;u(n)&&l.push({row:e,col:t})}return{rows:c,columns:o,frameWidth:i,frameHeight:f,emptyFrames:l}}return{rows:0,columns:0,frameWidth:0,frameHeight:0,emptyFrames:[]}}),[m]),v=s.useCallback((e=>{const r=e=>{let r=null;for(const t of e){const{w:e,h:a}=t.frame,n=e*a;(!r||n>r.area)&&(r={w:e,h:a,area:n})}return e.map((e=>{const{w:t,h:a}=e.frame,n=t*a,s=r?n===r.area?1:Math.sqrt(n/r.area):1;return{...e,scaleRatio:s}}))};if(Array.isArray(e))return r(e);{const t={};for(const a in e)t[a]=r(e[a]);return t}}),[]),z=s.useCallback((()=>{const e={},r=d.current,t=g.current;if(r){if(t&&Array.isArray(r.frames)){for(let a=0;a<t.length;a++){e[t[a]]=[];for(const n of r.frames){const r=n.frame,s=n.sourceSize.w,o=n.sourceSize.h;"string"==typeof n.filename&&-1!==n.filename.toLowerCase().indexOf(t[a].toLowerCase())&&e[t[a]].push({...n,frame:r,sourceSize:{w:s,h:o}})}}for(const r in e){const t=v(e[r]);Array.isArray(t)&&(e[r]=t)}return e}if(t&&"object"==typeof r.frames){for(let a=0;a<t.length;a++){e[t[a]]=[];for(const n in r.frames){const s=r.frames[n],o=s.frame,u=s.sourceSize.w,c=s.sourceSize.h;"string"==typeof n&&-1!==n.toLowerCase().indexOf(t[a].toLowerCase())&&e[t[a]].push({...s,frame:o,sourceSize:{w:u,h:c}})}}for(const r in e){const t=v(e[r]);Array.isArray(t)&&(e[r]=t)}return e}{let e=[];return null!=r&&r.frames&&(e=Array.isArray(r.frames)?r.frames.map((e=>({...e,x:e.frame.x,y:e.frame.y,w:e.frame.w,h:e.frame.h}))):Object.values(r.frames).flat().map((e=>({...e,x:e.frame.x,y:e.frame.y,w:e.frame.w,h:e.frame.h})))),v(e)}}return[]}),[v,d]),R=s.useCallback(((e,r)=>{let t=new n.Vector3(1,1,1);if(null===e){if(r&&f){const e=r.image.width,a=r.image.height;w.current=f;const{rows:n,columns:s,frameWidth:o,frameHeight:u,emptyFrames:c}=k(r,f),i={frames:[],meta:{version:"1.0",size:{w:e,h:a},rows:n,columns:s,frameWidth:o,frameHeight:u,scale:"1"}};for(let e=0;e<n;e++)for(let r=0;r<s;r++){(null!=c?c:[]).some((t=>t.row===e&&t.col===r))||Array.isArray(i.frames)&&i.frames.push({frame:{x:r*o,y:e*u,w:o,h:u},scaleRatio:1,rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:o,h:u},sourceSize:{w:o,h:u}})}t=j(o,u,.1),d.current=i}d.current&&d.current.frames&&(d.current.frames=v(d.current.frames))}else if(r){d.current=e,d.current.frames=z(),w.current=Array.isArray(e.frames)?e.frames.length:Object.keys(e.frames).length;const{w:r,h:a}=o(e.frames).sourceSize;t=j(r,a,.1)}x(d.current),"encoding"in r?r.encoding=3001:"colorSpace"in r&&(r.colorSpace=n.SRGBColorSpace),S(r),O({spriteTexture:r,spriteData:d.current,aspect:t})}),[k,f,z,j,v]),E=s.useCallback(((e,r,t)=>{const a=fetch(e).then((e=>e.json())),n=new Promise((e=>{L.load(r,e)}));Promise.all([a,n]).then((e=>{t(e[0],e[1])}))}),[L]),M=s.useCallback((e=>{if(!e&&!p.current)throw new Error("Either textureUrl or input must be provided");const r=null!=e?e:p.current;if(!r)throw new Error("A valid texture URL must be provided");L.load(r,(e=>R(null,e)))}),[L,R]),T=s.useCallback(((e,r)=>{r&&e?E(r,e,R):M(e)}),[E,M,R]);return s.useLayoutEffect((()=>{y.current&&p.current?E(y.current,p.current,R):p.current&&M();const t=p.current;return()=>{t&&r.useLoader.clear(e.TextureLoader,t)}}),[E,M,R]),s.useLayoutEffect((()=>{null==l||l(A,null!=b?b:null)}),[A,b,l]),{spriteObj:C,loadJsonAndTexture:T}}c.preload=t=>r.useLoader.preload(e.TextureLoader,t),c.clear=t=>r.useLoader.clear(e.TextureLoader,t),exports.checkIfFrameIsEmpty=u,exports.getFirstFrame=o,exports.useSpriteLoader=c;
@@ -0,0 +1,57 @@
1
+ import { Texture } from 'three';
2
+ import { Vector3 } from '@react-three/fiber';
3
+ import * as THREE from 'three';
4
+ export type Size = {
5
+ w: number;
6
+ h: number;
7
+ };
8
+ export type FrameData = {
9
+ frame: {
10
+ x: number;
11
+ y: number;
12
+ w: number;
13
+ h: number;
14
+ };
15
+ scaleRatio?: number;
16
+ rotated: boolean;
17
+ trimmed: boolean;
18
+ spriteSourceSize: {
19
+ x: number;
20
+ y: number;
21
+ w: number;
22
+ h: number;
23
+ };
24
+ sourceSize: Size;
25
+ };
26
+ export type MetaData = {
27
+ version: string;
28
+ size: {
29
+ w: number;
30
+ h: number;
31
+ };
32
+ rows: number;
33
+ columns: number;
34
+ frameWidth: number;
35
+ frameHeight: number;
36
+ scale: string;
37
+ };
38
+ type Frames = Record<string, FrameData[]> | FrameData[];
39
+ export type SpriteData = {
40
+ frames: Frames;
41
+ meta: MetaData;
42
+ };
43
+ export declare const getFirstFrame: (frames: SpriteData["frames"], frameName?: string) => FrameData;
44
+ export declare const checkIfFrameIsEmpty: (frameData: Uint8ClampedArray) => boolean;
45
+ export declare function useSpriteLoader<Url extends string>(input: Url | null, json?: string | null, animationNames?: string[] | null, numberOfFrames?: number | null, onLoad?: (texture: Texture, textureData?: SpriteData | null) => void, canvasRenderingContext2DSettings?: CanvasRenderingContext2DSettings): {
46
+ spriteObj: {
47
+ spriteTexture: THREE.Texture;
48
+ spriteData: SpriteData | null;
49
+ aspect: Vector3;
50
+ } | null;
51
+ loadJsonAndTexture: (textureUrl: string, jsonUrl?: string) => void;
52
+ };
53
+ export declare namespace useSpriteLoader {
54
+ var preload: (url: string) => void;
55
+ var clear: (input: string) => void;
56
+ }
57
+ export {};