@react-three/drei 9.121.3 → 10.0.0-rc.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 (212) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +852 -852
  3. package/core/AccumulativeShadows.d.ts +8 -10
  4. package/core/ArcballControls.d.ts +3 -3
  5. package/core/AsciiRenderer.d.ts +1 -2
  6. package/core/BBAnchor.d.ts +3 -3
  7. package/core/Backdrop.d.ts +2 -1
  8. package/core/Billboard.d.ts +3 -2
  9. package/core/Billboard.js +8 -8
  10. package/core/Bounds.d.ts +2 -1
  11. package/core/Bounds.js +2 -2
  12. package/core/Bvh.d.ts +3 -2
  13. package/core/Bvh.js +2 -2
  14. package/core/CameraControls.d.ts +4 -4
  15. package/core/CatmullRomLine.d.ts +2 -3
  16. package/core/Caustics.d.ts +14 -17
  17. package/core/Center.d.ts +3 -2
  18. package/core/Clone.d.ts +4 -4
  19. package/core/Cloud.cjs.js +1 -1
  20. package/core/Cloud.d.ts +50 -12
  21. package/core/Cloud.js +3 -3
  22. package/core/ComputedAttribute.cjs.js +1 -1
  23. package/core/ComputedAttribute.d.ts +3 -4
  24. package/core/ComputedAttribute.js +5 -5
  25. package/core/ContactShadows.d.ts +3 -2
  26. package/core/CubeCamera.d.ts +3 -3
  27. package/core/CubeTexture.d.ts +5 -6
  28. package/core/CubeTexture.js +2 -7
  29. package/core/CubicBezierLine.d.ts +2 -3
  30. package/core/CurveModifier.d.ts +2 -1
  31. package/core/Decal.d.ts +2 -2
  32. package/core/Detailed.d.ts +3 -3
  33. package/core/DetectGPU.d.ts +1 -2
  34. package/core/DeviceOrientationControls.d.ts +2 -2
  35. package/core/Edges.cjs.js +1 -1
  36. package/core/Edges.d.ts +2 -2
  37. package/core/Edges.js +2 -2
  38. package/core/Effects.cjs.js +1 -1
  39. package/core/Effects.d.ts +9 -13
  40. package/core/Effects.js +3 -3
  41. package/core/Environment.cjs.js +1 -1
  42. package/core/Environment.d.ts +5 -7
  43. package/core/Example.js +2 -2
  44. package/core/Fbo.d.ts +1 -4
  45. package/core/Fbo.js +0 -2
  46. package/core/Fbx.d.ts +1 -1
  47. package/core/FirstPersonControls.d.ts +2 -2
  48. package/core/Fisheye.d.ts +2 -1
  49. package/core/Float.d.ts +2 -1
  50. package/core/FlyControls.d.ts +2 -2
  51. package/core/GizmoHelper.d.ts +2 -1
  52. package/core/GizmoViewport.d.ts +2 -2
  53. package/core/Gltf.d.ts +9 -5
  54. package/core/GradientTexture.d.ts +4 -4
  55. package/core/GradientTexture.js +0 -2
  56. package/core/Grid.d.ts +6 -7
  57. package/core/Helper.cjs.js +1 -1
  58. package/core/Helper.d.ts +1 -1
  59. package/core/Helper.js +1 -1
  60. package/core/Hud.d.ts +1 -2
  61. package/core/Image.d.ts +6 -8
  62. package/core/Instances.cjs.js +1 -1
  63. package/core/Instances.d.ts +27 -35
  64. package/core/Instances.js +38 -33
  65. package/core/Ktx2.d.ts +1 -1
  66. package/core/Lightformer.d.ts +3 -3
  67. package/core/Line.d.ts +4 -4
  68. package/core/MapControls.d.ts +4 -4
  69. package/core/MarchingCubes.d.ts +6 -6
  70. package/core/Mask.d.ts +3 -3
  71. package/core/MeshDiscardMaterial.d.ts +6 -7
  72. package/core/MeshDistortMaterial.d.ts +15 -17
  73. package/core/MeshPortalMaterial.cjs.js +1 -1
  74. package/core/MeshPortalMaterial.d.ts +14 -17
  75. package/core/MeshPortalMaterial.js +2 -2
  76. package/core/MeshReflectorMaterial.cjs.js +1 -1
  77. package/core/MeshReflectorMaterial.d.ts +9 -22
  78. package/core/MeshReflectorMaterial.js +2 -4
  79. package/core/MeshRefractionMaterial.cjs.js +1 -1
  80. package/core/MeshRefractionMaterial.d.ts +5 -8
  81. package/core/MeshRefractionMaterial.js +2 -2
  82. package/core/MeshTransmissionMaterial.cjs.js +1 -1
  83. package/core/MeshTransmissionMaterial.d.ts +7 -8
  84. package/core/MeshTransmissionMaterial.js +2 -1
  85. package/core/MeshWobbleMaterial.d.ts +15 -17
  86. package/core/MotionPathControls.cjs.js +1 -1
  87. package/core/MotionPathControls.d.ts +18 -6
  88. package/core/MotionPathControls.js +2 -3
  89. package/core/MultiMaterial.cjs.js +1 -1
  90. package/core/MultiMaterial.d.ts +3 -1
  91. package/core/MultiMaterial.js +2 -3
  92. package/core/OrbitControls.d.ts +4 -4
  93. package/core/OrthographicCamera.d.ts +3 -3
  94. package/core/Outlines.cjs.js +1 -1
  95. package/core/Outlines.d.ts +2 -3
  96. package/core/Outlines.js +2 -2
  97. package/core/PerformanceMonitor.d.ts +2 -2
  98. package/core/PerspectiveCamera.d.ts +3 -3
  99. package/core/PointMaterial.d.ts +3 -11
  100. package/core/PointerLockControls.d.ts +2 -2
  101. package/core/Points.cjs.js +1 -1
  102. package/core/Points.d.ts +10 -13
  103. package/core/Points.js +10 -20
  104. package/core/PositionalAudio.d.ts +3 -3
  105. package/core/Preload.d.ts +2 -3
  106. package/core/QuadraticBezierLine.d.ts +5 -7
  107. package/core/RenderCubeTexture.d.ts +2 -2
  108. package/core/RenderTexture.cjs.js +1 -1
  109. package/core/RenderTexture.d.ts +3 -3
  110. package/core/RenderTexture.js +3 -2
  111. package/core/Resize.d.ts +9 -2
  112. package/core/RoundedBox.d.ts +4 -4
  113. package/core/Sampler.d.ts +4 -4
  114. package/core/ScreenQuad.d.ts +3 -3
  115. package/core/ScreenSizer.d.ts +3 -3
  116. package/core/ScreenSizer.js +12 -12
  117. package/core/ScreenSpace.d.ts +3 -2
  118. package/core/Segments.d.ts +6 -8
  119. package/core/Shadow.d.ts +3 -3
  120. package/core/ShadowAlpha.cjs.js +1 -1
  121. package/core/ShadowAlpha.d.ts +1 -2
  122. package/core/ShadowAlpha.js +9 -9
  123. package/core/Sky.d.ts +2 -3
  124. package/core/Sparkles.d.ts +14 -16
  125. package/core/Splat.d.ts +6 -8
  126. package/core/SpotLight.d.ts +2 -1
  127. package/core/SpriteAnimator.cjs.js +1 -1
  128. package/core/SpriteAnimator.d.ts +36 -3
  129. package/core/Stage.cjs.js +1 -1
  130. package/core/Stage.d.ts +3 -2
  131. package/core/Stars.cjs.js +1 -1
  132. package/core/Stars.d.ts +6 -8
  133. package/core/Stars.js +1 -1
  134. package/core/Stats.d.ts +2 -3
  135. package/core/StatsGl.d.ts +2 -2
  136. package/core/Svg.d.ts +6 -6
  137. package/core/Text.d.ts +3 -4
  138. package/core/Text3D.d.ts +7 -10
  139. package/core/Text3D.js +3 -3
  140. package/core/Texture.d.ts +1 -1
  141. package/core/TrackballControls.d.ts +4 -4
  142. package/core/Trail.cjs.js +1 -1
  143. package/core/Trail.d.ts +3 -3
  144. package/core/Trail.js +3 -3
  145. package/core/TrailTexture.d.ts +3 -2
  146. package/core/TransformControls.cjs.js +1 -1
  147. package/core/TransformControls.d.ts +3 -3
  148. package/core/TransformControls.js +4 -5
  149. package/core/VideoTexture.cjs.js +1 -1
  150. package/core/VideoTexture.js +1 -1
  151. package/core/Wireframe.d.ts +5 -7
  152. package/core/index.cjs.js +1 -1
  153. package/core/index.d.ts +0 -1
  154. package/core/index.js +2 -4
  155. package/core/shapes.d.ts +21 -20
  156. package/core/softShadows.d.ts +1 -2
  157. package/core/softShadows.js +13 -13
  158. package/core/useAnimations.cjs.js +1 -1
  159. package/core/useAnimations.d.ts +2 -2
  160. package/core/useAnimations.js +1 -1
  161. package/core/useBoxProjectedEnv.d.ts +1 -1
  162. package/core/useCamera.cjs.js +1 -1
  163. package/core/useCamera.d.ts +1 -1
  164. package/core/useCamera.js +1 -8
  165. package/core/useContextBridge.d.ts +1 -1
  166. package/core/useContextBridge.js +4 -4
  167. package/core/useEnvironment.cjs.js +1 -1
  168. package/core/useEnvironment.d.ts +3 -4
  169. package/core/useEnvironment.js +11 -19
  170. package/core/useIntersect.d.ts +1 -1
  171. package/core/useSpriteLoader.d.ts +1 -1
  172. package/helpers/deprecated.cjs.js +1 -1
  173. package/helpers/deprecated.d.ts +1 -4
  174. package/helpers/deprecated.js +4 -16
  175. package/helpers/ts-utils.d.ts +4 -0
  176. package/helpers/useEffectfulState.d.ts +1 -1
  177. package/index.cjs.js +1 -1
  178. package/index.js +0 -1
  179. package/materials/BlurPass.js +0 -1
  180. package/materials/MeshReflectorMaterial.d.ts +0 -16
  181. package/native/index.cjs.js +1 -1
  182. package/native/index.js +0 -2
  183. package/package.json +7 -8
  184. package/web/CycleRaycast.d.ts +1 -1
  185. package/web/FaceControls.js +8 -8
  186. package/web/FaceLandmarker.d.ts +1 -2
  187. package/web/Facemesh.d.ts +3 -2
  188. package/web/Html.cjs.js +1 -1
  189. package/web/Html.d.ts +4 -4
  190. package/web/Html.js +1 -1
  191. package/web/KeyboardControls.d.ts +1 -1
  192. package/web/PresentationControls.cjs.js +1 -1
  193. package/web/PresentationControls.d.ts +3 -4
  194. package/web/PresentationControls.js +20 -28
  195. package/web/ScreenVideoTexture.js +2 -2
  196. package/web/ScrollControls.d.ts +1 -1
  197. package/web/Select.d.ts +3 -3
  198. package/web/Select.js +6 -2
  199. package/web/View.cjs.js +1 -1
  200. package/web/View.d.ts +8 -10
  201. package/web/View.js +4 -34
  202. package/web/WebcamVideoTexture.js +2 -2
  203. package/web/index.cjs.js +1 -1
  204. package/web/index.js +1 -4
  205. package/web/pivotControls/AxisArrow.js +0 -2
  206. package/web/pivotControls/AxisRotator.js +0 -2
  207. package/web/pivotControls/PlaneSlider.js +1 -3
  208. package/web/pivotControls/ScalingSphere.js +0 -1
  209. package/web/pivotControls/index.d.ts +1 -2
  210. package/core/Reflector.cjs.js +0 -1
  211. package/core/Reflector.d.ts +0 -30
  212. package/core/Reflector.js +0 -180
package/core/Points.js CHANGED
@@ -62,8 +62,8 @@ const context = /* @__PURE__ */React.createContext(null);
62
62
  const parentMatrix = /* @__PURE__ */new THREE.Matrix4();
63
63
  const position = /* @__PURE__ */new THREE.Vector3();
64
64
 
65
- /**
66
- * Instance implementation, relies on react + context to update the attributes based on the children of this component
65
+ /**
66
+ * Instance implementation, relies on react + context to update the attributes based on the children of this component
67
67
  */
68
68
  const PointsInstances = /* @__PURE__ */React.forwardRef(({
69
69
  children,
@@ -116,21 +116,15 @@ const PointsInstances = /* @__PURE__ */React.forwardRef(({
116
116
  raycast: () => null
117
117
  }, props), /*#__PURE__*/React.createElement("bufferGeometry", null, /*#__PURE__*/React.createElement("bufferAttribute", {
118
118
  attach: "attributes-position",
119
- count: positions.length / 3,
120
- array: positions,
121
- itemSize: 3,
119
+ args: [positions, 3],
122
120
  usage: THREE.DynamicDrawUsage
123
121
  }), /*#__PURE__*/React.createElement("bufferAttribute", {
124
122
  attach: "attributes-color",
125
- count: colors.length / 3,
126
- array: colors,
127
- itemSize: 3,
123
+ args: [colors, 3],
128
124
  usage: THREE.DynamicDrawUsage
129
125
  }), /*#__PURE__*/React.createElement("bufferAttribute", {
130
126
  attach: "attributes-size",
131
- count: sizes.length,
132
- array: sizes,
133
- itemSize: 1,
127
+ args: [sizes, 1],
134
128
  usage: THREE.DynamicDrawUsage
135
129
  })), /*#__PURE__*/React.createElement(context.Provider, {
136
130
  value: api
@@ -157,8 +151,8 @@ const Point = /* @__PURE__ */React.forwardRef(({
157
151
  }, props), children);
158
152
  });
159
153
 
160
- /**
161
- * Buffer implementation, relies on complete buffers of the correct number, leaves it to the user to update them
154
+ /**
155
+ * Buffer implementation, relies on complete buffers of the correct number, leaves it to the user to update them
162
156
  */
163
157
 
164
158
  const PointsBuffer = /* @__PURE__ */React.forwardRef(({
@@ -181,21 +175,17 @@ const PointsBuffer = /* @__PURE__ */React.forwardRef(({
181
175
  ref: pointsRef
182
176
  }, props), /*#__PURE__*/React.createElement("bufferGeometry", null, /*#__PURE__*/React.createElement("bufferAttribute", {
183
177
  attach: "attributes-position",
184
- count: positions.length / stride,
185
- array: positions,
186
- itemSize: stride,
178
+ args: [positions, stride],
187
179
  usage: THREE.DynamicDrawUsage
188
180
  }), colors && /*#__PURE__*/React.createElement("bufferAttribute", {
189
181
  attach: "attributes-color",
182
+ args: [colors, stride],
190
183
  count: colors.length / stride,
191
- array: colors,
192
- itemSize: 3,
193
184
  usage: THREE.DynamicDrawUsage
194
185
  }), sizes && /*#__PURE__*/React.createElement("bufferAttribute", {
195
186
  attach: "attributes-size",
187
+ args: [sizes, 1],
196
188
  count: sizes.length / stride,
197
- array: sizes,
198
- itemSize: 1,
199
189
  usage: THREE.DynamicDrawUsage
200
190
  })), children);
201
191
  });
@@ -1,9 +1,9 @@
1
1
  import { PositionalAudio as PositionalAudioImpl } from 'three';
2
+ import { ThreeElements } from '@react-three/fiber';
2
3
  import { ForwardRefComponent } from '../helpers/ts-utils';
3
- type Props = JSX.IntrinsicElements['positionalAudio'] & {
4
+ export type PositionalAudioProps = Omit<ThreeElements['positionalAudio'], 'ref' | 'args'> & {
4
5
  url: string;
5
6
  distance?: number;
6
7
  loop?: boolean;
7
8
  };
8
- export declare const PositionalAudio: ForwardRefComponent<Props, PositionalAudioImpl>;
9
- export {};
9
+ export declare const PositionalAudio: ForwardRefComponent<PositionalAudioProps, PositionalAudioImpl>;
package/core/Preload.d.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import { Object3D, Camera } from 'three';
2
- type Props = {
2
+ export type PreloadProps = {
3
3
  all?: boolean;
4
4
  scene?: Object3D;
5
5
  camera?: Camera;
6
6
  };
7
- export declare function Preload({ all, scene, camera }: Props): null;
8
- export {};
7
+ export declare function Preload({ all, scene, camera }: PreloadProps): null;
@@ -1,16 +1,14 @@
1
1
  import { Vector3 } from 'three';
2
2
  import { Line2 } from 'three-stdlib';
3
3
  import { LineProps } from './Line';
4
- import { Object3DNode } from '@react-three/fiber';
5
4
  import { ForwardRefComponent } from '../helpers/ts-utils';
6
- type Props = Omit<LineProps, 'points' | 'ref'> & {
5
+ export type QuadraticBezierLineRef = Line2 & {
6
+ setPoints(start: Vector3 | [number, number, number], end: Vector3 | [number, number, number], mid: Vector3 | [number, number, number]): void;
7
+ };
8
+ export type QuadraticBezierLineProps = Omit<LineProps, 'points' | 'ref'> & {
7
9
  start: Vector3 | [number, number, number];
8
10
  end: Vector3 | [number, number, number];
9
11
  mid?: Vector3 | [number, number, number];
10
12
  segments?: number;
11
13
  };
12
- export type Line2Props = Object3DNode<Line2, typeof Line2> & {
13
- setPoints: (start: Vector3 | [number, number, number], end: Vector3 | [number, number, number], mid: Vector3 | [number, number, number]) => void;
14
- };
15
- export declare const QuadraticBezierLine: ForwardRefComponent<Props, Line2Props>;
16
- export {};
14
+ export declare const QuadraticBezierLine: ForwardRefComponent<QuadraticBezierLineProps, QuadraticBezierLineRef>;
@@ -1,8 +1,8 @@
1
1
  import * as THREE from 'three';
2
2
  import * as React from 'react';
3
- import { ComputeFunction, ReactThreeFiber } from '@react-three/fiber';
3
+ import { ComputeFunction, ReactThreeFiber, ThreeElements } from '@react-three/fiber';
4
4
  import { ForwardRefComponent } from '../helpers/ts-utils';
5
- export type RenderCubeTextureProps = Omit<JSX.IntrinsicElements['texture'], 'rotation'> & {
5
+ export type RenderCubeTextureProps = Omit<ThreeElements['texture'], 'ref' | 'args' | 'rotation'> & {
6
6
  stencilBuffer?: boolean;
7
7
  depthBuffer?: boolean;
8
8
  generateMipmaps?: boolean;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react"),n=require("@react-three/fiber"),a=require("./Fbo.cjs.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(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 u=i(e),s=l(r),c=l(t);const o=c.forwardRef((({children:e,compute:r,width:t,height:i,samples:l=8,renderPriority:o=0,eventPriority:d=0,frames:g=1/0,stencilBuffer:p=!1,depthBuffer:m=!0,generateMipmaps:b=!1,...v},h)=>{const{size:x,viewport:y}=n.useThree(),j=a.useFBO((t||x.width)*y.dpr,(i||x.height)*y.dpr,{samples:l,stencilBuffer:p,depthBuffer:m,generateMipmaps:b}),[P]=c.useState((()=>new s.Scene)),O=c.useCallback(((e,r,t)=>{var n,a;let i=null==(n=j.texture)?void 0:n.__r3f.parent;for(;i&&!(i instanceof s.Object3D);)i=i.__r3f.parent;if(!i)return!1;t.raycaster.camera||t.events.compute(e,t,null==(a=t.previousRoot)?void 0:a.getState());const[l]=t.raycaster.intersectObject(i);if(!l)return!1;const u=l.uv;if(!u)return!1;r.raycaster.setFromCamera(r.pointer.set(2*u.x-1,2*u.y-1),r.camera)}),[]);return c.useImperativeHandle(h,(()=>j.texture),[j]),c.createElement(c.Fragment,null,n.createPortal(c.createElement(f,{renderPriority:o,frames:g,fbo:j},e,c.createElement("group",{onPointerOver:()=>null})),P,{events:{compute:r||O,priority:d}}),c.createElement("primitive",u.default({object:j.texture},v)))}));function f({frames:e,renderPriority:r,children:t,fbo:a}){let i,l,u,s,o=0;return n.useFrame((r=>{(e===1/0||o<e)&&(i=r.gl.autoClear,l=r.gl.xr.enabled,u=r.gl.getRenderTarget(),s=r.gl.xr.isPresenting,r.gl.autoClear=!0,r.gl.xr.enabled=!1,r.gl.xr.isPresenting=!1,r.gl.setRenderTarget(a),r.gl.render(r.scene,r.camera),r.gl.setRenderTarget(u),r.gl.autoClear=i,r.gl.xr.enabled=l,r.gl.xr.isPresenting=s,o++)}),r),c.createElement(c.Fragment,null,t)}exports.RenderTexture=o;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react"),n=require("@react-three/fiber"),a=require("./Fbo.cjs.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(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 u=l(e),o=i(r),s=i(t);const c=s.forwardRef((({children:e,compute:r,width:t,height:l,samples:i=8,renderPriority:c=0,eventPriority:d=0,frames:g=1/0,stencilBuffer:p=!1,depthBuffer:m=!0,generateMipmaps:b=!1,...v},h)=>{const{size:j,viewport:x}=n.useThree(),y=a.useFBO((t||j.width)*x.dpr,(l||j.height)*x.dpr,{samples:i,stencilBuffer:p,depthBuffer:m,generateMipmaps:b}),[P]=s.useState((()=>new o.Scene)),O=s.useCallback(((e,r,t)=>{var n,a;let l=null==(n=y.texture)||null==(n=n.__r3f.parent)?void 0:n.object;for(;l&&!(l instanceof o.Object3D);){var i;l=null==(i=l.__r3f.parent)?void 0:i.object}if(!l)return!1;t.raycaster.camera||t.events.compute(e,t,null==(a=t.previousRoot)?void 0:a.getState());const[u]=t.raycaster.intersectObject(l);if(!u)return!1;const s=u.uv;if(!s)return!1;r.raycaster.setFromCamera(r.pointer.set(2*s.x-1,2*s.y-1),r.camera)}),[]);return s.useImperativeHandle(h,(()=>y.texture),[y]),s.createElement(s.Fragment,null,n.createPortal(s.createElement(f,{renderPriority:c,frames:g,fbo:y},e,s.createElement("group",{onPointerOver:()=>null})),P,{events:{compute:r||O,priority:d}}),s.createElement("primitive",u.default({object:y.texture},v)))}));function f({frames:e,renderPriority:r,children:t,fbo:a}){let l,i,u,o,c=0;return n.useFrame((r=>{(e===1/0||c<e)&&(l=r.gl.autoClear,i=r.gl.xr.enabled,u=r.gl.getRenderTarget(),o=r.gl.xr.isPresenting,r.gl.autoClear=!0,r.gl.xr.enabled=!1,r.gl.xr.isPresenting=!1,r.gl.setRenderTarget(a),r.gl.render(r.scene,r.camera),r.gl.setRenderTarget(u),r.gl.autoClear=l,r.gl.xr.enabled=i,r.gl.xr.isPresenting=o,c++)}),r),s.createElement(s.Fragment,null,t)}exports.RenderTexture=c;
@@ -1,7 +1,8 @@
1
1
  import * as THREE from 'three';
2
2
  import * as React from 'react';
3
+ import { ThreeElements } from '@react-three/fiber';
3
4
  import { ForwardRefComponent } from '../helpers/ts-utils';
4
- type Props = JSX.IntrinsicElements['texture'] & {
5
+ export type RenderTextureProps = Omit<ThreeElements['texture'], 'ref' | 'args'> & {
5
6
  width?: number;
6
7
  height?: number;
7
8
  samples?: number;
@@ -14,5 +15,4 @@ type Props = JSX.IntrinsicElements['texture'] & {
14
15
  compute?: (event: any, state: any, previous: any) => false | undefined;
15
16
  children: React.ReactNode;
16
17
  };
17
- export declare const RenderTexture: ForwardRefComponent<Props, THREE.Texture>;
18
- export {};
18
+ export declare const RenderTexture: ForwardRefComponent<RenderTextureProps, THREE.Texture>;
@@ -34,9 +34,10 @@ const RenderTexture = /* @__PURE__ */React.forwardRef(({
34
34
  // Since this is only a texture it does not have an easy way to obtain the parent, which we
35
35
  // need to transform event coordinates to local coordinates. We use r3f internals to find the
36
36
  // next Object3D.
37
- let parent = (_fbo$texture = fbo.texture) == null ? void 0 : _fbo$texture.__r3f.parent;
37
+ let parent = (_fbo$texture = fbo.texture) == null || (_fbo$texture = _fbo$texture.__r3f.parent) == null ? void 0 : _fbo$texture.object;
38
38
  while (parent && !(parent instanceof THREE.Object3D)) {
39
- parent = parent.__r3f.parent;
39
+ var _parent$__r3f$parent;
40
+ parent = (_parent$__r3f$parent = parent.__r3f.parent) == null ? void 0 : _parent$__r3f$parent.object;
40
41
  }
41
42
  if (!parent) return false;
42
43
  // First we call the previous state-onion-layers compute, this is what makes it possible to nest portals
package/core/Resize.d.ts CHANGED
@@ -1,10 +1,17 @@
1
1
  import * as THREE from 'three';
2
2
  import * as React from 'react';
3
- export type ResizeProps = JSX.IntrinsicElements['group'] & {
3
+ import { ThreeElements } from '@react-three/fiber';
4
+ export type ResizeProps = Omit<ThreeElements['group'], 'ref'> & {
4
5
  width?: boolean;
5
6
  height?: boolean;
6
7
  depth?: boolean;
7
8
  box3?: THREE.Box3;
8
9
  precise?: boolean;
9
10
  };
10
- export declare const Resize: React.ForwardRefExoticComponent<Omit<ResizeProps, "ref"> & React.RefAttributes<THREE.Group>>;
11
+ export declare const Resize: React.ForwardRefExoticComponent<Omit<import("@react-three/fiber/dist/declarations/src/core/utils").Mutable<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<Partial<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<THREE.Group<THREE.Object3DEventMap>, import("@react-three/fiber").MathProps<THREE.Group<THREE.Object3DEventMap>> & import("@react-three/fiber").ReactProps<THREE.Group<THREE.Object3DEventMap>> & Partial<import("@react-three/fiber").EventHandlers>>>, Omit<import("@react-three/fiber").InstanceProps<THREE.Group<THREE.Object3DEventMap>, typeof THREE.Group>, "object">>>, "ref"> & {
12
+ width?: boolean;
13
+ height?: boolean;
14
+ depth?: boolean;
15
+ box3?: THREE.Box3;
16
+ precise?: boolean;
17
+ } & React.RefAttributes<THREE.Group<THREE.Object3DEventMap>>>;
@@ -1,12 +1,12 @@
1
1
  import { Mesh } from 'three';
2
2
  import { ForwardRefComponent, NamedArrayTuple } from '../helpers/ts-utils';
3
- type Props = {
3
+ import { ThreeElements } from '@react-three/fiber';
4
+ export type RoundedBoxProps = {
4
5
  args?: NamedArrayTuple<(width?: number, height?: number, depth?: number) => void>;
5
6
  radius?: number;
6
7
  smoothness?: number;
7
8
  bevelSegments?: number;
8
9
  steps?: number;
9
10
  creaseAngle?: number;
10
- } & Omit<JSX.IntrinsicElements['mesh'], 'args'>;
11
- export declare const RoundedBox: ForwardRefComponent<Props, Mesh>;
12
- export {};
11
+ } & Omit<ThreeElements['mesh'], 'ref' | 'args'>;
12
+ export declare const RoundedBox: ForwardRefComponent<RoundedBoxProps, Mesh>;
package/core/Sampler.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { Color, InstancedBufferAttribute, InstancedMesh, Mesh, Object3D, Vector3 } from 'three';
3
- import { GroupProps } from '@react-three/fiber';
3
+ import { ThreeElements } from '@react-three/fiber';
4
4
  type SamplePayload = {
5
5
  position: Vector3;
6
6
  normal: Vector3;
@@ -11,7 +11,7 @@ type TransformPayload = SamplePayload & {
11
11
  dummy: Object3D;
12
12
  sampledMesh: Mesh;
13
13
  };
14
- type Props = {
14
+ export type SamplerProps = Omit<ThreeElements['group'], 'ref'> & {
15
15
  mesh?: React.RefObject<Mesh>;
16
16
  instances?: React.RefObject<InstancedMesh>;
17
17
  weight?: string;
@@ -23,6 +23,6 @@ export interface useSurfaceSamplerProps {
23
23
  weight?: string;
24
24
  count?: number;
25
25
  }
26
- export declare function useSurfaceSampler(mesh: React.MutableRefObject<Mesh>, count?: number, transform?: TransformFn, weight?: string, instanceMesh?: React.MutableRefObject<InstancedMesh> | null): InstancedBufferAttribute;
27
- export declare function Sampler({ children, weight, transform, instances, mesh, count, ...props }: React.PropsWithChildren<Props & GroupProps>): React.JSX.Element;
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
28
  export {};
@@ -1,5 +1,5 @@
1
1
  import * as THREE from 'three';
2
2
  import { ForwardRefComponent } from '../helpers/ts-utils';
3
- type Props = Omit<JSX.IntrinsicElements['mesh'], 'args'>;
4
- export declare const ScreenQuad: ForwardRefComponent<Props, THREE.Mesh>;
5
- export {};
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>;
@@ -1,7 +1,7 @@
1
- import { Object3DProps } from '@react-three/fiber';
1
+ import { ThreeElements } from '@react-three/fiber';
2
2
  import { Object3D } from 'three';
3
3
  import { ForwardRefComponent } from '../helpers/ts-utils';
4
- export interface ScreenSizerProps extends Object3DProps {
4
+ export type ScreenSizerProps = Omit<ThreeElements['object3D'], 'ref'> & {
5
5
  scale?: number;
6
- }
6
+ };
7
7
  export declare const ScreenSizer: ForwardRefComponent<ScreenSizerProps, Object3D>;
@@ -6,18 +6,18 @@ import { Vector3 } from 'three';
6
6
  import { calculateScaleFactor } from './calculateScaleFactor.js';
7
7
 
8
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
- * ```
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
21
  */
22
22
  const ScreenSizer = /* @__PURE__ */forwardRef(({
23
23
  scale = 1,
@@ -1,6 +1,7 @@
1
1
  import { Group } from 'three';
2
+ import { ThreeElements } from '@react-three/fiber';
2
3
  import { ForwardRefComponent } from '../helpers/ts-utils';
3
- export type ScreenSpaceProps = {
4
+ export type ScreenSpaceProps = Omit<ThreeElements['group'], 'ref'> & {
4
5
  depth?: number;
5
- } & JSX.IntrinsicElements['group'];
6
+ };
6
7
  export declare const ScreenSpace: ForwardRefComponent<ScreenSpaceProps, Group>;
@@ -1,24 +1,22 @@
1
1
  import * as THREE from 'three';
2
2
  import * as React from 'react';
3
- import { ReactThreeFiber } from '@react-three/fiber';
3
+ import { ReactThreeFiber, ThreeElements, ThreeElement } from '@react-three/fiber';
4
4
  import { Line2, LineMaterialParameters } from 'three-stdlib';
5
5
  import { ForwardRefComponent } from '../helpers/ts-utils';
6
- type SegmentsProps = LineMaterialParameters & {
6
+ export type SegmentsProps = LineMaterialParameters & {
7
7
  limit?: number;
8
8
  lineWidth?: number;
9
9
  children: React.ReactNode;
10
10
  };
11
- type SegmentProps = Omit<JSX.IntrinsicElements['segmentObject'], 'start' | 'end' | 'color'> & {
11
+ export type SegmentProps = Omit<ThreeElements['segmentObject'], 'ref' | 'start' | 'end' | 'color'> & {
12
12
  start: ReactThreeFiber.Vector3;
13
13
  end: ReactThreeFiber.Vector3;
14
14
  color?: ReactThreeFiber.Color;
15
15
  };
16
16
  declare const Segments: ForwardRefComponent<SegmentsProps, Line2>;
17
- declare global {
18
- namespace JSX {
19
- interface IntrinsicElements {
20
- segmentObject: ReactThreeFiber.Object3DNode<SegmentObject, typeof SegmentObject>;
21
- }
17
+ declare module '@react-three/fiber' {
18
+ interface ThreeElements {
19
+ segmentObject: ThreeElement<typeof SegmentObject>;
22
20
  }
23
21
  }
24
22
  export declare class SegmentObject {
package/core/Shadow.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Mesh, Color, type PlaneGeometry, type MeshBasicMaterial } from 'three';
2
2
  import { ForwardRefComponent } from '../helpers/ts-utils';
3
- type Props = JSX.IntrinsicElements['mesh'] & {
3
+ import { ThreeElements } from '@react-three/fiber';
4
+ export type ShadowProps = Omit<ThreeElements['mesh'], 'ref'> & {
4
5
  colorStop?: number;
5
6
  fog?: boolean;
6
7
  color?: Color | number | string;
@@ -8,5 +9,4 @@ type Props = JSX.IntrinsicElements['mesh'] & {
8
9
  depthWrite?: boolean;
9
10
  };
10
11
  export type ShadowType = Mesh<PlaneGeometry, MeshBasicMaterial>;
11
- export declare const Shadow: ForwardRefComponent<Props, ShadowType>;
12
- export {};
12
+ export declare const Shadow: ForwardRefComponent<ShadowProps, ShadowType>;
@@ -1 +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),o=n.useRef(null),c=n.useRef({value:1}),l=n.useRef({value:null}),i=n.useRef({value:!1});return n.useLayoutEffect((()=>{t.current.onBeforeCompile=o.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=c.current,e.uniforms.uAlphaMap=l.current,e.uniforms.uHasAlphaMap=i.current}}),[]),e.useFrame((()=>{var e;const n=null==(e=t.current.__r3f)?void 0:e.parent;if(n){const e=n.material;e&&(c.current.value=null!=r?r:e.opacity,!1===a?(l.current.value=null,i.current.value=!1):(l.current.value=a||e.alphaMap,i.current.value=!!l.current.value))}})),n.createElement(n.Fragment,null,n.createElement("meshDepthMaterial",{ref:t,attach:"customDepthMaterial",depthPacking:u.RGBADepthPacking}),n.createElement("meshDistanceMaterial",{ref:o,attach:"customDistanceMaterial"}))};
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"}))};
@@ -1,8 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import * as THREE from 'three';
3
- interface ShadowAlphaProps {
3
+ export interface ShadowAlphaProps {
4
4
  opacity?: number;
5
5
  alphaMap?: THREE.Texture | boolean;
6
6
  }
7
7
  export declare function ShadowAlpha({ opacity, alphaMap }: ShadowAlphaProps): React.JSX.Element;
8
- export {};
@@ -2,14 +2,14 @@ import { useFrame } from '@react-three/fiber';
2
2
  import * as React from 'react';
3
3
  import * as THREE from 'three';
4
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.
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
13
  */
14
14
  function ShadowAlpha({
15
15
  opacity,
@@ -80,7 +80,7 @@ function ShadowAlpha({
80
80
  }, []);
81
81
  useFrame(() => {
82
82
  var _r3f;
83
- const parent = (_r3f = depthMaterialRef.current.__r3f) == null ? void 0 : _r3f.parent;
83
+ const parent = (_r3f = depthMaterialRef.current.__r3f) == null || (_r3f = _r3f.parent) == null ? void 0 : _r3f.object;
84
84
  if (parent) {
85
85
  const parentMainMaterial = parent.material;
86
86
  if (parentMainMaterial) {
package/core/Sky.d.ts CHANGED
@@ -2,7 +2,7 @@ import { ReactThreeFiber } from '@react-three/fiber';
2
2
  import { Sky as SkyImpl } from 'three-stdlib';
3
3
  import { Vector3 } from 'three';
4
4
  import { ForwardRefComponent } from '../helpers/ts-utils';
5
- type Props = {
5
+ export type SkyProps = {
6
6
  distance?: number;
7
7
  sunPosition?: ReactThreeFiber.Vector3;
8
8
  inclination?: number;
@@ -13,5 +13,4 @@ type Props = {
13
13
  turbidity?: number;
14
14
  };
15
15
  export declare function calcPosFromAngles(inclination: number, azimuth: number, vector?: Vector3): Vector3;
16
- export declare const Sky: ForwardRefComponent<Props, SkyImpl>;
17
- export {};
16
+ export declare const Sky: ForwardRefComponent<SkyProps, SkyImpl>;
@@ -1,15 +1,6 @@
1
1
  import * as THREE from 'three';
2
- import { PointsProps, MaterialNode } from '@react-three/fiber';
2
+ import { ThreeElement, ThreeElements } from '@react-three/fiber';
3
3
  import { ForwardRefComponent } from '../helpers/ts-utils';
4
- interface Props {
5
- count?: number;
6
- speed?: number | Float32Array;
7
- opacity?: number | Float32Array;
8
- color?: THREE.ColorRepresentation | Float32Array;
9
- size?: number | Float32Array;
10
- scale?: number | [number, number, number] | THREE.Vector3;
11
- noise?: number | [number, number, number] | THREE.Vector3 | Float32Array;
12
- }
13
4
  declare class SparklesImplMaterial extends THREE.ShaderMaterial {
14
5
  constructor();
15
6
  get time(): number;
@@ -17,12 +8,19 @@ declare class SparklesImplMaterial extends THREE.ShaderMaterial {
17
8
  get pixelRatio(): number;
18
9
  set pixelRatio(value: number);
19
10
  }
20
- declare global {
21
- namespace JSX {
22
- interface IntrinsicElements {
23
- sparklesImplMaterial: MaterialNode<SparklesImplMaterial, typeof SparklesImplMaterial>;
24
- }
11
+ declare module '@react-three/fiber' {
12
+ interface ThreeElements {
13
+ sparklesImplMaterial: ThreeElement<typeof SparklesImplMaterial>;
25
14
  }
26
15
  }
27
- export declare const Sparkles: ForwardRefComponent<Props & PointsProps, THREE.Points>;
16
+ export type SparklesProps = Omit<ThreeElements['points'], 'ref'> & {
17
+ count?: number;
18
+ speed?: number | Float32Array;
19
+ opacity?: number | Float32Array;
20
+ color?: THREE.ColorRepresentation | Float32Array;
21
+ size?: number | Float32Array;
22
+ scale?: number | [number, number, number] | THREE.Vector3;
23
+ noise?: number | [number, number, number] | THREE.Vector3 | Float32Array;
24
+ };
25
+ export declare const Sparkles: ForwardRefComponent<SparklesProps, THREE.Points>;
28
26
  export {};
package/core/Splat.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as THREE from 'three';
2
2
  import * as React from 'react';
3
+ import { ThreeElements } from '@react-three/fiber';
3
4
  export type SplatMaterialType = {
4
5
  alphaTest?: number;
5
6
  alphaHash?: boolean;
@@ -40,19 +41,16 @@ export type SharedState = {
40
41
  update(target: TargetMesh, camera: THREE.Camera, hashed: boolean): void;
41
42
  onProgress?: (event: ProgressEvent) => void;
42
43
  };
43
- declare global {
44
- namespace JSX {
45
- interface IntrinsicElements {
46
- splatMaterial: SplatMaterialType & JSX.IntrinsicElements['shaderMaterial'];
47
- }
44
+ declare module '@react-three/fiber' {
45
+ interface ThreeElements {
46
+ splatMaterial: SplatMaterialType & ThreeElements['shaderMaterial'];
48
47
  }
49
48
  }
50
- type SplatProps = {
49
+ export type SplatProps = {
51
50
  src: string;
52
51
  toneMapped?: boolean;
53
52
  alphaTest?: number;
54
53
  alphaHash?: boolean;
55
54
  chunkSize?: number;
56
- } & JSX.IntrinsicElements['mesh'];
55
+ } & Omit<ThreeElements['mesh'], 'ref'>;
57
56
  export declare function Splat({ src, toneMapped, alphaTest, alphaHash, chunkSize, ...props }: SplatProps): React.JSX.Element;
58
- export {};
@@ -1,7 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { DepthTexture, SpotLight as SpotLightImpl, Texture } from 'three';
3
+ import { ThreeElements } from '@react-three/fiber';
3
4
  import { ForwardRefComponent } from '../helpers/ts-utils';
4
- type SpotLightProps = JSX.IntrinsicElements['spotLight'] & {
5
+ export type SpotLightProps = Omit<ThreeElements['spotLight'], 'ref'> & {
5
6
  depthBuffer?: DepthTexture;
6
7
  attenuation?: number;
7
8
  anglePower?: number;
@@ -1 +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"),n=require("three"),u=require("./Instances.cjs.js"),a=require("./Billboard.cjs.js"),c=require("./useSpriteLoader.cjs.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(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)}require("react-composer"),require("../helpers/deprecated.cjs.js");var o=l(e),i=s(r),m=s(n);const f=i.createContext(null);const p=new m.PlaneGeometry(1,1),d=i.forwardRef((({startFrame:e=0,endFrame:r,fps:n=30,frameName:l="",textureDataURL:s,textureImageURL:d,loop:h=!1,numberOfFrames:v=1,autoPlay:y=!0,animationNames:w,onStart:E,onEnd:F,onLoopEnd:b,onFrame:g,play:x,pause:S=!1,flipX:j=!1,alphaTest:R=0,children:A,asSprite:M=!1,offset:N,playBackwards:O=!1,resetOnEnd:q=!1,maxItems:z=1,instanceItems:D=[[0,0,0]],spriteDataset:L,canvasRenderingContext2DSettings:P,roundFramePosition:T=!1,meshProps:I={},...k},B)=>{const C=i.useRef(new m.Group),V=i.useRef(null),_=i.useRef(null),U=i.useRef(null),G=i.useRef(window.performance.now()),H=i.useRef(e),J=i.useRef(l),W=n>0?1e3/n:0,[X,K]=i.useState(new m.Texture),Q=i.useRef(0),[Y,Z]=i.useState(new m.Vector3(1,1,1)),$=j?-1:1,ee=i.useRef(S),re=i.useRef(N),te=i.useRef(!1),{spriteObj:ne,loadJsonAndTexture:ue}=c.useSpriteLoader(null,null,w,v,void 0,P),ae=i.useRef(l),ce=i.useCallback(((e,r)=>{if(null===r)v&&(Q.current=v,O&&(H.current=v-1),V.current=r);else{var t,n;V.current=r,V.current&&Array.isArray(V.current.frames)?Q.current=V.current.frames.length:V.current&&"object"==typeof V.current&&ae.current?Q.current=V.current.frames[ae.current].length:Q.current=0,O&&(H.current=Q.current-1);const{w:u,h:a}=c.getFirstFrame(null!==(t=null==(n=V.current)?void 0:n.frames)&&void 0!==t?t:[],ae.current).sourceSize,l=oe(u,a);Z(l),_.current&&(_.current.map=e)}K(e)}),[v,O]),le=i.useCallback((()=>{if(!V.current)return;const{meta:{size:e},frames:r}=V.current,{w:t,h:n}=Array.isArray(r)?r[0].sourceSize:l&&r[l]?r[l][0].sourceSize:{w:0,h:0};_.current&&_.current.map&&(_.current.map.wrapS=_.current.map.wrapT=m.RepeatWrapping,_.current.map.center.set(0,0),_.current.map.repeat.set(1*$/(e.w/t),1/(e.h/n)));const u=1/((e.h-1)/n);_.current&&_.current.map&&(_.current.map.offset.x=0,_.current.map.offset.y=1-u),E&&E({currentFrameName:null!=l?l:"",currentFrame:H.current})}),[$,l,E]),se=i.useMemo((()=>({current:re.current,offset:re.current,imageUrl:d,hasEnded:!1,ref:B})),[d,B]);i.useImperativeHandle(B,(()=>C.current),[]),i.useLayoutEffect((()=>{re.current=N}),[N]);const oe=(e,r)=>{var t;const n=new m.Vector3,u=r/e;return n.set(1,u,1),null==(t=U.current)||t.scale.copy(n),n};i.useEffect((()=>{var e;L?ce(null==L||null==(e=L.spriteTexture)?void 0:e.clone(),L.spriteData):d&&s&&ue(d,s)}),[ue,L,s,d,ce]),i.useEffect((()=>{var e;ne&&ce(null==ne||null==(e=ne.spriteTexture)?void 0:e.clone(),null==ne?void 0:ne.spriteData)}),[ne,ce]),i.useEffect((()=>{var e;(se.hasEnded=!1,V.current&&!0===O)?H.current=(null!==(e=V.current.frames.length)&&void 0!==e?e:0)-1:H.current=0}),[O,se]),i.useLayoutEffect((()=>{le()}),[X,j,le]),i.useEffect((()=>{y&&(ee.current=!1)}),[y]),i.useLayoutEffect((()=>{if(J.current!==l&&l&&(H.current=0,J.current=l,se.hasEnded=!1,W<=0&&(H.current=r||e||0),V.current)){const{w:e,h:r}=c.getFirstFrame(V.current.frames,l).sourceSize,t=oe(e,r);Z(t)}}),[l,W,se,r,e]);const ie=(e,r,t,n)=>{var u=void 0===N?se.current:N;const a=H.current;let c=0,l=0;oe(e,r);const s=T?Math.round((t.w-1)/e):(t.w-1)/e,o=T?Math.round((t.h-1)/r):(t.h-1)/r;if(!n[a])return;const{frame:{x:i,y:m},sourceSize:{w:f,h:p}}=n[a],d=1/s,h=1/o;if(_.current&&_.current.map&&(c=$>0?d*(i/f):d*(i/f)-_.current.map.repeat.x,l=Math.abs(1-h)-h*(m/p),_.current.map.offset.x=c,_.current.map.offset.y=l),null!=u){let e=Math.floor(u*n.length);e=Math.max(0,Math.min(e,n.length-1)),isNaN(e)&&(e=0),H.current=e}else O?H.current-=1:H.current+=1};return t.useFrame(((t,n)=>{var u,a;null!=(u=V.current)&&u.frames&&null!=(a=_.current)&&a.map&&(ee.current||se.hasEnded||!y&&!x||((()=>{if(null===(t=V.current)||!("meta"in t)||!("frames"in t))return;var t;const{meta:{size:n},frames:u}=V.current,{w:a,h:s}=c.getFirstFrame(u,l).sourceSize,o=Array.isArray(u)?u:l?u[l]:[],i=r||o.length-1;var m=void 0===N?se.current:N;if(W<=0)return H.current=r||e||0,void ie(a,s,n,o);const f=window.performance.now(),p=f-G.current;if(!(p<=W)){var d=O?H.current<0:H.current>i,v=O?H.current===i:0===H.current,y=O?H.current<0:H.current>=i;if(d){if(H.current=h&&null!=e?e:0,O&&(H.current=i),h?null==b||b({currentFrameName:null!=l?l:"",currentFrame:H.current}):(null==F||F({currentFrameName:null!=l?l:"",currentFrame:H.current}),se.hasEnded=!q,q&&(ee.current=!0)),!h)return}else v&&(null==E||E({currentFrameName:null!=l?l:"",currentFrame:H.current}));void 0!==m&&y?!1===te.current&&(null==F||F({currentFrameName:null!=l?l:"",currentFrame:H.current}),te.current=!0):te.current=!1,p<=W||(G.current=f-p%W,ie(a,s,n,o))}})(),null==g||g({currentFrameName:J.current,currentFrame:H.current})))})),i.createElement("group",o.default({},k,{ref:C,scale:function(e=new m.Vector3(1,1,1),r=1){return"number"==typeof r?e.multiplyScalar(r):Array.isArray(r)?e.multiply(new m.Vector3(...r)):r instanceof m.Vector3?e.multiply(r):void 0}(Y,k.scale)}),i.createElement(f.Provider,{value:se},M&&i.createElement(a.Billboard,null,i.createElement("mesh",o.default({ref:U,scale:1,geometry:p},I),i.createElement("meshBasicMaterial",{premultipliedAlpha:!1,toneMapped:!1,side:m.DoubleSide,ref:_,map:X,transparent:!0,alphaTest:null!=R?R:0}))),!M&&i.createElement(u.Instances,o.default({geometry:p,limit:null!=z?z:1},I),i.createElement("meshBasicMaterial",{premultipliedAlpha:!1,toneMapped:!1,side:m.DoubleSide,ref:_,map:X,transparent:!0,alphaTest:null!=R?R:0}),(null!=D?D:[0]).map(((e,r)=>i.createElement(u.Instance,o.default({key:r,ref:1===(null==D?void 0:D.length)?U:null,position:e,scale:1},I))))),A))}));exports.SpriteAnimator=d,exports.useSpriteAnimator=function(){return i.useContext(f)};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("@react-three/fiber"),n=require("three"),u=require("./Instances.cjs.js"),a=require("./Billboard.cjs.js"),c=require("./useSpriteLoader.cjs.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(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)}require("../helpers/deprecated.cjs.js");var o=l(e),i=s(r),m=s(n);const f=i.createContext(null);const p=new m.PlaneGeometry(1,1),d=i.forwardRef((({startFrame:e=0,endFrame:r,fps:n=30,frameName:l="",textureDataURL:s,textureImageURL:d,loop:h=!1,numberOfFrames:v=1,autoPlay:y=!0,animationNames:w,onStart:E,onEnd:F,onLoopEnd:b,onFrame:g,play:x,pause:S=!1,flipX:j=!1,alphaTest:R=0,children:A,asSprite:M=!1,offset:N,playBackwards:O=!1,resetOnEnd:z=!1,maxItems:q=1,instanceItems:D=[[0,0,0]],spriteDataset:L,canvasRenderingContext2DSettings:P,roundFramePosition:T=!1,meshProps:I={},...k},B)=>{const C=i.useRef(new m.Group),V=i.useRef(null),_=i.useRef(null),U=i.useRef(null),G=i.useRef(window.performance.now()),H=i.useRef(e),J=i.useRef(l),W=n>0?1e3/n:0,[X,K]=i.useState(new m.Texture),Q=i.useRef(0),[Y,Z]=i.useState(new m.Vector3(1,1,1)),$=j?-1:1,ee=i.useRef(S),re=i.useRef(N),te=i.useRef(!1),{spriteObj:ne,loadJsonAndTexture:ue}=c.useSpriteLoader(null,null,w,v,void 0,P),ae=i.useRef(l),ce=i.useCallback(((e,r)=>{if(null===r)v&&(Q.current=v,O&&(H.current=v-1),V.current=r);else{var t,n;V.current=r,V.current&&Array.isArray(V.current.frames)?Q.current=V.current.frames.length:V.current&&"object"==typeof V.current&&ae.current?Q.current=V.current.frames[ae.current].length:Q.current=0,O&&(H.current=Q.current-1);const{w:u,h:a}=c.getFirstFrame(null!==(t=null==(n=V.current)?void 0:n.frames)&&void 0!==t?t:[],ae.current).sourceSize,l=oe(u,a);Z(l),_.current&&(_.current.map=e)}K(e)}),[v,O]),le=i.useCallback((()=>{if(!V.current)return;const{meta:{size:e},frames:r}=V.current,{w:t,h:n}=Array.isArray(r)?r[0].sourceSize:l&&r[l]?r[l][0].sourceSize:{w:0,h:0};_.current&&_.current.map&&(_.current.map.wrapS=_.current.map.wrapT=m.RepeatWrapping,_.current.map.center.set(0,0),_.current.map.repeat.set(1*$/(e.w/t),1/(e.h/n)));const u=1/((e.h-1)/n);_.current&&_.current.map&&(_.current.map.offset.x=0,_.current.map.offset.y=1-u),E&&E({currentFrameName:null!=l?l:"",currentFrame:H.current})}),[$,l,E]),se=i.useMemo((()=>({current:re.current,offset:re.current,imageUrl:d,hasEnded:!1,ref:B})),[d,B]);i.useImperativeHandle(B,(()=>C.current),[]),i.useLayoutEffect((()=>{re.current=N}),[N]);const oe=(e,r)=>{var t;const n=new m.Vector3,u=r/e;return n.set(1,u,1),null==(t=U.current)||t.scale.copy(n),n};i.useEffect((()=>{var e;L?ce(null==L||null==(e=L.spriteTexture)?void 0:e.clone(),L.spriteData):d&&s&&ue(d,s)}),[ue,L,s,d,ce]),i.useEffect((()=>{var e;ne&&ce(null==ne||null==(e=ne.spriteTexture)?void 0:e.clone(),null==ne?void 0:ne.spriteData)}),[ne,ce]),i.useEffect((()=>{var e;(se.hasEnded=!1,V.current&&!0===O)?H.current=(null!==(e=V.current.frames.length)&&void 0!==e?e:0)-1:H.current=0}),[O,se]),i.useLayoutEffect((()=>{le()}),[X,j,le]),i.useEffect((()=>{y&&(ee.current=!1)}),[y]),i.useLayoutEffect((()=>{if(J.current!==l&&l&&(H.current=0,J.current=l,se.hasEnded=!1,W<=0&&(H.current=r||e||0),V.current)){const{w:e,h:r}=c.getFirstFrame(V.current.frames,l).sourceSize,t=oe(e,r);Z(t)}}),[l,W,se,r,e]);const ie=(e,r,t,n)=>{var u=void 0===N?se.current:N;const a=H.current;let c=0,l=0;oe(e,r);const s=T?Math.round((t.w-1)/e):(t.w-1)/e,o=T?Math.round((t.h-1)/r):(t.h-1)/r;if(!n[a])return;const{frame:{x:i,y:m},sourceSize:{w:f,h:p}}=n[a],d=1/s,h=1/o;if(_.current&&_.current.map&&(c=$>0?d*(i/f):d*(i/f)-_.current.map.repeat.x,l=Math.abs(1-h)-h*(m/p),_.current.map.offset.x=c,_.current.map.offset.y=l),null!=u){let e=Math.floor(u*n.length);e=Math.max(0,Math.min(e,n.length-1)),isNaN(e)&&(e=0),H.current=e}else O?H.current-=1:H.current+=1};return t.useFrame(((t,n)=>{var u,a;null!=(u=V.current)&&u.frames&&null!=(a=_.current)&&a.map&&(ee.current||se.hasEnded||!y&&!x||((()=>{if(null===(t=V.current)||!("meta"in t)||!("frames"in t))return;var t;const{meta:{size:n},frames:u}=V.current,{w:a,h:s}=c.getFirstFrame(u,l).sourceSize,o=Array.isArray(u)?u:l?u[l]:[],i=r||o.length-1;var m=void 0===N?se.current:N;if(W<=0)return H.current=r||e||0,void ie(a,s,n,o);const f=window.performance.now(),p=f-G.current;if(!(p<=W)){var d=O?H.current<0:H.current>i,v=O?H.current===i:0===H.current,y=O?H.current<0:H.current>=i;if(d){if(H.current=h&&null!=e?e:0,O&&(H.current=i),h?null==b||b({currentFrameName:null!=l?l:"",currentFrame:H.current}):(null==F||F({currentFrameName:null!=l?l:"",currentFrame:H.current}),se.hasEnded=!z,z&&(ee.current=!0)),!h)return}else v&&(null==E||E({currentFrameName:null!=l?l:"",currentFrame:H.current}));void 0!==m&&y?!1===te.current&&(null==F||F({currentFrameName:null!=l?l:"",currentFrame:H.current}),te.current=!0):te.current=!1,p<=W||(G.current=f-p%W,ie(a,s,n,o))}})(),null==g||g({currentFrameName:J.current,currentFrame:H.current})))})),i.createElement("group",o.default({},k,{ref:C,scale:function(e=new m.Vector3(1,1,1),r=1){return"number"==typeof r?e.multiplyScalar(r):Array.isArray(r)?e.multiply(new m.Vector3(...r)):r instanceof m.Vector3?e.multiply(r):void 0}(Y,k.scale)}),i.createElement(f.Provider,{value:se},M&&i.createElement(a.Billboard,null,i.createElement("mesh",o.default({ref:U,scale:1,geometry:p},I),i.createElement("meshBasicMaterial",{premultipliedAlpha:!1,toneMapped:!1,side:m.DoubleSide,ref:_,map:X,transparent:!0,alphaTest:null!=R?R:0}))),!M&&i.createElement(u.Instances,o.default({geometry:p,limit:null!=q?q:1},I),i.createElement("meshBasicMaterial",{premultipliedAlpha:!1,toneMapped:!1,side:m.DoubleSide,ref:_,map:X,transparent:!0,alphaTest:null!=R?R:0}),(null!=D?D:[0]).map(((e,r)=>i.createElement(u.Instance,o.default({key:r,ref:1===(null==D?void 0:D.length)?U:null,position:e,scale:1},I))))),A))}));exports.SpriteAnimator=d,exports.useSpriteAnimator=function(){return i.useContext(f)};
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { Vector3 } from '@react-three/fiber';
2
+ import { ThreeElements, Vector3 } from '@react-three/fiber';
3
3
  import * as THREE from 'three';
4
4
  import { Instances, Instance } from './Instances';
5
5
  import { SpriteData } from './useSpriteLoader';
@@ -42,7 +42,7 @@ export type SpriteAnimatorProps = {
42
42
  canvasRenderingContext2DSettings?: CanvasRenderingContext2DSettings;
43
43
  roundFramePosition?: boolean;
44
44
  meshProps?: CommonMeshProps;
45
- } & JSX.IntrinsicElements['group'];
45
+ } & Omit<ThreeElements['group'], 'ref'>;
46
46
  type SpriteAnimatorState = {
47
47
  current?: number;
48
48
  offset?: number;
@@ -51,5 +51,38 @@ type SpriteAnimatorState = {
51
51
  ref: React.Ref<THREE.Group>;
52
52
  };
53
53
  export declare function useSpriteAnimator(): SpriteAnimatorState | null;
54
- export declare const SpriteAnimator: React.ForwardRefExoticComponent<Omit<SpriteAnimatorProps, "ref"> & React.RefAttributes<THREE.Group>>;
54
+ export declare const SpriteAnimator: React.ForwardRefExoticComponent<{
55
+ startFrame?: number;
56
+ endFrame?: number;
57
+ fps?: number;
58
+ frameName?: string;
59
+ textureDataURL?: string;
60
+ textureImageURL?: string;
61
+ loop?: boolean;
62
+ numberOfFrames?: number;
63
+ autoPlay?: boolean;
64
+ animationNames?: Array<string>;
65
+ onStart?: (data: AnimationEventData) => void;
66
+ onEnd?: (data: AnimationEventData) => void;
67
+ onLoopEnd?: (data: AnimationEventData) => void;
68
+ onFrame?: (data: AnimationEventData) => void;
69
+ play?: boolean;
70
+ pause?: boolean;
71
+ flipX?: boolean;
72
+ alphaTest?: number;
73
+ asSprite?: boolean;
74
+ offset?: number;
75
+ playBackwards?: boolean;
76
+ resetOnEnd?: boolean;
77
+ instanceItems?: Vector3[];
78
+ maxItems?: number;
79
+ spriteDataset?: {
80
+ spriteTexture: THREE.Texture;
81
+ spriteData: SpriteData | null;
82
+ aspect: Vector3;
83
+ } | null;
84
+ canvasRenderingContext2DSettings?: CanvasRenderingContext2DSettings;
85
+ roundFramePosition?: boolean;
86
+ meshProps?: CommonMeshProps;
87
+ } & Omit<import("@react-three/fiber/dist/declarations/src/core/utils").Mutable<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<Partial<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<THREE.Group<THREE.Object3DEventMap>, import("@react-three/fiber").MathProps<THREE.Group<THREE.Object3DEventMap>> & import("@react-three/fiber").ReactProps<THREE.Group<THREE.Object3DEventMap>> & Partial<import("@react-three/fiber").EventHandlers>>>, Omit<import("@react-three/fiber").InstanceProps<THREE.Group<THREE.Object3DEventMap>, typeof THREE.Group>, "object">>>, "ref"> & React.RefAttributes<THREE.Group<THREE.Object3DEventMap>>>;
55
88
  export {};