@react-three/drei 9.121.4 → 9.121.6-rc.1

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 (207) hide show
  1. package/core/AccumulativeShadows.d.ts +8 -10
  2. package/core/ArcballControls.d.ts +4 -4
  3. package/core/AsciiRenderer.d.ts +1 -2
  4. package/core/BBAnchor.d.ts +3 -3
  5. package/core/Backdrop.d.ts +2 -1
  6. package/core/Billboard.cjs.js +1 -1
  7. package/core/Billboard.d.ts +3 -2
  8. package/core/Billboard.js +1 -1
  9. package/core/Bounds.d.ts +2 -1
  10. package/core/Bvh.d.ts +3 -2
  11. package/core/CameraControls.d.ts +4 -4
  12. package/core/CatmullRomLine.d.ts +2 -3
  13. package/core/Caustics.d.ts +14 -17
  14. package/core/Center.d.ts +3 -2
  15. package/core/Clone.d.ts +4 -4
  16. package/core/Cloud.cjs.js +1 -1
  17. package/core/Cloud.d.ts +50 -12
  18. package/core/Cloud.js +4 -4
  19. package/core/ComputedAttribute.cjs.js +1 -1
  20. package/core/ComputedAttribute.d.ts +3 -4
  21. package/core/ComputedAttribute.js +1 -1
  22. package/core/ContactShadows.d.ts +3 -2
  23. package/core/CubeCamera.d.ts +3 -3
  24. package/core/CubeTexture.d.ts +5 -6
  25. package/core/CubeTexture.js +2 -7
  26. package/core/CubicBezierLine.d.ts +2 -3
  27. package/core/CurveModifier.d.ts +2 -1
  28. package/core/Decal.d.ts +2 -2
  29. package/core/Detailed.d.ts +3 -3
  30. package/core/DetectGPU.d.ts +1 -2
  31. package/core/DeviceOrientationControls.d.ts +2 -2
  32. package/core/Edges.cjs.js +1 -1
  33. package/core/Edges.d.ts +2 -2
  34. package/core/Edges.js +2 -2
  35. package/core/Effects.cjs.js +1 -1
  36. package/core/Effects.d.ts +9 -13
  37. package/core/Effects.js +3 -3
  38. package/core/Environment.cjs.js +1 -1
  39. package/core/Environment.d.ts +5 -7
  40. package/core/Fbo.d.ts +1 -4
  41. package/core/Fbo.js +0 -2
  42. package/core/Fbx.d.ts +1 -1
  43. package/core/FirstPersonControls.d.ts +2 -2
  44. package/core/Fisheye.d.ts +2 -1
  45. package/core/Float.cjs.js +1 -1
  46. package/core/Float.d.ts +2 -1
  47. package/core/Float.js +1 -1
  48. package/core/FlyControls.d.ts +2 -2
  49. package/core/GizmoHelper.d.ts +2 -1
  50. package/core/GizmoViewport.d.ts +2 -2
  51. package/core/Gltf.d.ts +9 -5
  52. package/core/GradientTexture.d.ts +4 -4
  53. package/core/GradientTexture.js +0 -2
  54. package/core/Grid.d.ts +6 -7
  55. package/core/Helper.cjs.js +1 -1
  56. package/core/Helper.d.ts +1 -1
  57. package/core/Helper.js +1 -1
  58. package/core/Hud.d.ts +1 -2
  59. package/core/Image.d.ts +6 -8
  60. package/core/Instances.cjs.js +1 -1
  61. package/core/Instances.d.ts +27 -35
  62. package/core/Instances.js +35 -30
  63. package/core/Ktx2.d.ts +1 -1
  64. package/core/Lightformer.d.ts +3 -3
  65. package/core/Line.d.ts +4 -4
  66. package/core/MapControls.d.ts +4 -4
  67. package/core/MarchingCubes.d.ts +6 -6
  68. package/core/Mask.d.ts +3 -3
  69. package/core/MeshDiscardMaterial.d.ts +6 -7
  70. package/core/MeshDistortMaterial.cjs.js +1 -1
  71. package/core/MeshDistortMaterial.d.ts +15 -17
  72. package/core/MeshDistortMaterial.js +1 -1
  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 +3 -2
  85. package/core/MeshWobbleMaterial.cjs.js +1 -1
  86. package/core/MeshWobbleMaterial.d.ts +15 -17
  87. package/core/MeshWobbleMaterial.js +1 -1
  88. package/core/MotionPathControls.cjs.js +1 -1
  89. package/core/MotionPathControls.d.ts +18 -6
  90. package/core/MotionPathControls.js +2 -3
  91. package/core/MultiMaterial.cjs.js +1 -1
  92. package/core/MultiMaterial.d.ts +3 -1
  93. package/core/MultiMaterial.js +2 -3
  94. package/core/OrbitControls.d.ts +4 -4
  95. package/core/OrthographicCamera.d.ts +3 -3
  96. package/core/Outlines.cjs.js +1 -1
  97. package/core/Outlines.d.ts +2 -3
  98. package/core/Outlines.js +2 -2
  99. package/core/PerformanceMonitor.d.ts +2 -2
  100. package/core/PerspectiveCamera.d.ts +3 -3
  101. package/core/PointMaterial.d.ts +3 -11
  102. package/core/PointerLockControls.d.ts +2 -2
  103. package/core/Points.cjs.js +1 -1
  104. package/core/Points.d.ts +10 -13
  105. package/core/Points.js +6 -16
  106. package/core/PositionalAudio.d.ts +3 -3
  107. package/core/Preload.d.ts +2 -3
  108. package/core/QuadraticBezierLine.d.ts +5 -7
  109. package/core/RenderCubeTexture.d.ts +2 -2
  110. package/core/RenderTexture.cjs.js +1 -1
  111. package/core/RenderTexture.d.ts +3 -3
  112. package/core/RenderTexture.js +3 -2
  113. package/core/Resize.d.ts +9 -2
  114. package/core/RoundedBox.d.ts +4 -4
  115. package/core/Sampler.d.ts +4 -4
  116. package/core/ScreenQuad.d.ts +3 -3
  117. package/core/ScreenSizer.d.ts +3 -3
  118. package/core/ScreenSpace.d.ts +3 -2
  119. package/core/Segments.d.ts +6 -8
  120. package/core/Shadow.d.ts +3 -3
  121. package/core/ShadowAlpha.cjs.js +1 -1
  122. package/core/ShadowAlpha.d.ts +1 -2
  123. package/core/ShadowAlpha.js +1 -1
  124. package/core/Sky.d.ts +2 -3
  125. package/core/Sparkles.d.ts +14 -16
  126. package/core/Splat.d.ts +6 -8
  127. package/core/SpotLight.d.ts +2 -1
  128. package/core/SpriteAnimator.cjs.js +1 -1
  129. package/core/SpriteAnimator.d.ts +36 -3
  130. package/core/Stage.cjs.js +1 -1
  131. package/core/Stage.d.ts +3 -2
  132. package/core/Stars.cjs.js +1 -1
  133. package/core/Stars.d.ts +6 -8
  134. package/core/Stars.js +2 -2
  135. package/core/Stats.d.ts +2 -3
  136. package/core/StatsGl.d.ts +2 -2
  137. package/core/Svg.d.ts +6 -6
  138. package/core/Text.d.ts +3 -4
  139. package/core/Text3D.d.ts +7 -10
  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 +1 -3
  155. package/core/shapes.d.ts +21 -20
  156. package/core/softShadows.d.ts +1 -2
  157. package/core/useAnimations.cjs.js +1 -1
  158. package/core/useAnimations.d.ts +2 -2
  159. package/core/useAnimations.js +1 -1
  160. package/core/useBoxProjectedEnv.d.ts +1 -1
  161. package/core/useCamera.cjs.js +1 -1
  162. package/core/useCamera.d.ts +1 -1
  163. package/core/useCamera.js +1 -8
  164. package/core/useContextBridge.d.ts +1 -1
  165. package/core/useEnvironment.cjs.js +1 -1
  166. package/core/useEnvironment.d.ts +3 -4
  167. package/core/useEnvironment.js +11 -19
  168. package/core/useIntersect.d.ts +1 -1
  169. package/core/useSpriteLoader.d.ts +1 -1
  170. package/helpers/deprecated.cjs.js +1 -1
  171. package/helpers/deprecated.d.ts +1 -4
  172. package/helpers/deprecated.js +2 -14
  173. package/helpers/ts-utils.d.ts +4 -0
  174. package/helpers/useEffectfulState.d.ts +1 -1
  175. package/index.cjs.js +1 -1
  176. package/index.js +0 -1
  177. package/materials/BlurPass.js +0 -1
  178. package/materials/MeshReflectorMaterial.d.ts +0 -16
  179. package/native/index.cjs.js +1 -1
  180. package/native/index.js +1 -3
  181. package/package.json +7 -8
  182. package/web/CycleRaycast.d.ts +1 -1
  183. package/web/FaceLandmarker.d.ts +1 -2
  184. package/web/Facemesh.d.ts +3 -2
  185. package/web/Html.cjs.js +1 -1
  186. package/web/Html.d.ts +4 -4
  187. package/web/Html.js +1 -1
  188. package/web/KeyboardControls.d.ts +1 -1
  189. package/web/PresentationControls.cjs.js +1 -1
  190. package/web/PresentationControls.d.ts +3 -4
  191. package/web/PresentationControls.js +20 -28
  192. package/web/ScrollControls.d.ts +1 -1
  193. package/web/Select.d.ts +3 -3
  194. package/web/Select.js +6 -2
  195. package/web/View.cjs.js +1 -1
  196. package/web/View.d.ts +8 -10
  197. package/web/View.js +4 -34
  198. package/web/index.cjs.js +1 -1
  199. package/web/index.js +0 -3
  200. package/web/pivotControls/AxisArrow.js +0 -2
  201. package/web/pivotControls/AxisRotator.js +0 -2
  202. package/web/pivotControls/PlaneSlider.js +0 -2
  203. package/web/pivotControls/ScalingSphere.js +0 -1
  204. package/web/pivotControls/index.d.ts +1 -2
  205. package/core/Reflector.cjs.js +0 -1
  206. package/core/Reflector.d.ts +0 -30
  207. package/core/Reflector.js +0 -180
package/core/Points.d.ts CHANGED
@@ -1,29 +1,27 @@
1
1
  import * as THREE from 'three';
2
2
  import * as React from 'react';
3
- import { ReactThreeFiber } from '@react-three/fiber';
3
+ import { ThreeElement, ThreeElements } from '@react-three/fiber';
4
4
  import { ForwardRefComponent } from '../helpers/ts-utils';
5
- declare global {
6
- namespace JSX {
7
- interface IntrinsicElements {
8
- positionPoint: ReactThreeFiber.Object3DNode<PositionPoint, typeof PositionPoint>;
9
- }
5
+ declare module '@react-three/fiber' {
6
+ interface ThreeElements {
7
+ positionPoint: ThreeElement<typeof PositionPoint>;
10
8
  }
11
9
  }
12
- type PointsInstancesProps = JSX.IntrinsicElements['points'] & {
10
+ export type PointsInstancesProps = Omit<ThreeElements['points'], 'ref'> & {
13
11
  range?: number;
14
12
  limit?: number;
15
13
  };
16
14
  export declare class PositionPoint extends THREE.Group {
17
15
  size: number;
18
16
  color: THREE.Color;
19
- instance: React.MutableRefObject<THREE.Points | undefined>;
20
- instanceKey: React.MutableRefObject<JSX.IntrinsicElements['positionPoint'] | undefined>;
17
+ instance: React.RefObject<THREE.Points | undefined>;
18
+ instanceKey: React.RefObject<PositionPoint | undefined>;
21
19
  constructor();
22
- get geometry(): THREE.BufferGeometry | undefined;
20
+ get geometry(): THREE.BufferGeometry<THREE.NormalBufferAttributes> | undefined;
23
21
  raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]): void;
24
22
  }
25
- export declare const Point: ForwardRefComponent<JSX.IntrinsicElements['positionPoint'], PositionPoint>;
26
- type PointsBuffersProps = JSX.IntrinsicElements['points'] & {
23
+ export declare const Point: ForwardRefComponent<ThreeElements['positionPoint'], PositionPoint>;
24
+ export type PointsBuffersProps = ThreeElements['points'] & {
27
25
  positions: Float32Array;
28
26
  colors?: Float32Array;
29
27
  sizes?: Float32Array;
@@ -31,4 +29,3 @@ type PointsBuffersProps = JSX.IntrinsicElements['points'] & {
31
29
  };
32
30
  export declare const PointsBuffer: ForwardRefComponent<PointsBuffersProps, THREE.Points>;
33
31
  export declare const Points: ForwardRefComponent<PointsBuffersProps | PointsInstancesProps, THREE.Points>;
34
- export {};
package/core/Points.js CHANGED
@@ -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
@@ -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>;
@@ -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 {};
@@ -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 {};
package/core/Stage.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),i=require("./Environment.cjs.js"),r=require("./ContactShadows.cjs.js"),n=require("./Center.cjs.js"),a=require("./AccumulativeShadows.cjs.js"),s=require("./Bounds.cjs.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(i){if("default"!==i){var r=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,r.get?r:{enumerable:!0,get:function(){return e[i]}})}})),t.default=e,Object.freeze(t)}require("@react-three/fiber"),require("three"),require("three-stdlib"),require("./useEnvironment.cjs.js"),require("@monogrid/gainmap-js"),require("../helpers/environment-assets.cjs.js"),require("../helpers/deprecated.cjs.js"),require("./shaderMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/constants.cjs.js");var o=l(e),c=u(t);const d={rembrandt:{main:[1,2,1],fill:[-2,-.5,-2]},portrait:{main:[-1,2,.5],fill:[-1,.5,-1.5]},upfront:{main:[0,2,1],fill:[-1,.5,-1.5]},soft:{main:[-2,4,4],fill:[-1,.5,-1.5]}};function m({radius:e,adjustCamera:t}){const i=s.useBounds();return c.useEffect((()=>{t&&i.refresh().clip().fit()}),[e,t]),null}exports.Stage=function({children:e,center:t,adjustCamera:l=!0,intensity:u=.5,shadows:f="contact",environment:p="city",preset:h="rembrandt",...j}){var v,b,g,q,y,E,w,C;const S="string"==typeof h?d[h]:h,[{radius:O,height:z},B]=c.useState({radius:0,width:0,height:0,depth:0}),M=null!==(v=null==f?void 0:f.bias)&&void 0!==v?v:-1e-4,L=null!==(b=null==f?void 0:f.normalBias)&&void 0!==b?b:0,_=null!==(g=null==f?void 0:f.size)&&void 0!==g?g:1024,x=null!==(q=null==f?void 0:f.offset)&&void 0!==q?q:0,P="contact"===f||"contact"===(null==f?void 0:f.type),k="accumulative"===f||"accumulative"===(null==f?void 0:f.type),A={..."object"==typeof f?f:{}},D=p?"string"==typeof p?{preset:p}:p:null,F=c.useCallback((e=>{const{width:i,height:r,depth:n,boundingSphere:a}=e;B({radius:a.radius,width:i,height:r,depth:n}),null!=t&&t.onCentered&&t.onCentered(e)}),[]);return c.createElement(c.Fragment,null,c.createElement("ambientLight",{intensity:u/3}),c.createElement("spotLight",{penumbra:1,position:[S.main[0]*O,S.main[1]*O,S.main[2]*O],intensity:2*u,castShadow:!!f,"shadow-bias":M,"shadow-normalBias":L,"shadow-mapSize":_}),c.createElement("pointLight",{position:[S.fill[0]*O,S.fill[1]*O,S.fill[2]*O],intensity:u}),c.createElement(s.Bounds,o.default({fit:!!l,clip:!!l,margin:Number(l),observe:!0},j),c.createElement(m,{radius:O,adjustCamera:l}),c.createElement(n.Center,o.default({},t,{position:[0,x/2,0],onCentered:F}),e)),c.createElement("group",{position:[0,-z/2-x/2,0]},P&&c.createElement(r.ContactShadows,o.default({scale:4*O,far:O,blur:2},A)),k&&c.createElement(a.AccumulativeShadows,o.default({temporal:!0,frames:100,alphaTest:.9,toneMapped:!0,scale:4*O},A),c.createElement(a.RandomizedLight,{amount:null!==(y=A.amount)&&void 0!==y?y:8,radius:null!==(E=A.radius)&&void 0!==E?E:O,ambient:null!==(w=A.ambient)&&void 0!==w?w:.5,intensity:null!==(C=A.intensity)&&void 0!==C?C:1,position:[S.main[0]*O,S.main[1]*O,S.main[2]*O],size:4*O,bias:-M,mapSize:_}))),p&&c.createElement(i.Environment,D))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),i=require("./Environment.cjs.js"),n=require("./ContactShadows.cjs.js"),r=require("./Center.cjs.js"),a=require("./AccumulativeShadows.cjs.js"),s=require("./Bounds.cjs.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(i){if("default"!==i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}})),t.default=e,Object.freeze(t)}require("@react-three/fiber"),require("three"),require("three-stdlib"),require("./useEnvironment.cjs.js"),require("@monogrid/gainmap-js"),require("../helpers/environment-assets.cjs.js"),require("./shaderMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/constants.cjs.js");var o=l(e),c=u(t);const d={rembrandt:{main:[1,2,1],fill:[-2,-.5,-2]},portrait:{main:[-1,2,.5],fill:[-1,.5,-1.5]},upfront:{main:[0,2,1],fill:[-1,.5,-1.5]},soft:{main:[-2,4,4],fill:[-1,.5,-1.5]}};function m({radius:e,adjustCamera:t}){const i=s.useBounds();return c.useEffect((()=>{t&&i.refresh().clip().fit()}),[e,t]),null}exports.Stage=function({children:e,center:t,adjustCamera:l=!0,intensity:u=.5,shadows:f="contact",environment:p="city",preset:h="rembrandt",...j}){var v,b,g,y,E,q,w,C;const S="string"==typeof h?d[h]:h,[{radius:O,height:z},B]=c.useState({radius:0,width:0,height:0,depth:0}),M=null!==(v=null==f?void 0:f.bias)&&void 0!==v?v:-1e-4,L=null!==(b=null==f?void 0:f.normalBias)&&void 0!==b?b:0,_=null!==(g=null==f?void 0:f.size)&&void 0!==g?g:1024,x=null!==(y=null==f?void 0:f.offset)&&void 0!==y?y:0,P="contact"===f||"contact"===(null==f?void 0:f.type),k="accumulative"===f||"accumulative"===(null==f?void 0:f.type),A={..."object"==typeof f?f:{}},D=p?"string"==typeof p?{preset:p}:p:null,F=c.useCallback((e=>{const{width:i,height:n,depth:r,boundingSphere:a}=e;B({radius:a.radius,width:i,height:n,depth:r}),null!=t&&t.onCentered&&t.onCentered(e)}),[]);return c.createElement(c.Fragment,null,c.createElement("ambientLight",{intensity:u/3}),c.createElement("spotLight",{penumbra:1,position:[S.main[0]*O,S.main[1]*O,S.main[2]*O],intensity:2*u,castShadow:!!f,"shadow-bias":M,"shadow-normalBias":L,"shadow-mapSize":_}),c.createElement("pointLight",{position:[S.fill[0]*O,S.fill[1]*O,S.fill[2]*O],intensity:u}),c.createElement(s.Bounds,o.default({fit:!!l,clip:!!l,margin:Number(l),observe:!0},j),c.createElement(m,{radius:O,adjustCamera:l}),c.createElement(r.Center,o.default({},t,{position:[0,x/2,0],onCentered:F}),e)),c.createElement("group",{position:[0,-z/2-x/2,0]},P&&c.createElement(n.ContactShadows,o.default({scale:4*O,far:O,blur:2},A)),k&&c.createElement(a.AccumulativeShadows,o.default({temporal:!0,frames:100,alphaTest:.9,toneMapped:!0,scale:4*O},A),c.createElement(a.RandomizedLight,{amount:null!==(E=A.amount)&&void 0!==E?E:8,radius:null!==(q=A.radius)&&void 0!==q?q:O,ambient:null!==(w=A.ambient)&&void 0!==w?w:.5,intensity:null!==(C=A.intensity)&&void 0!==C?C:1,position:[S.main[0]*O,S.main[1]*O,S.main[2]*O],size:4*O,bias:-M,mapSize:_}))),p&&c.createElement(i.Environment,D))};