@react-three/drei 7.17.2 → 7.18.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.
package/core/Stage.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("three"),r=require("@react-three/fiber"),n=require("./Environment.cjs.js"),i=require("./ContactShadows.cjs.js");function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("three-stdlib"),require("use-asset"),require("../helpers/environment-assets.cjs.js"),require("@babel/runtime/helpers/extends");var o=a(e),s=a(t);const u={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]}};exports.Stage=function({children:e,controls:t,shadows:a=!0,adjustCamera:c=!0,environment:l="city",contactShadow:h=!0,intensity:d=1,preset:f="rembrandt",shadowBias:m=0,contactShadowBlur:p=2,contactShadowOpacity:b=.5,...g}){const w=u[f],y=r.useThree((e=>e.camera)),j=r.useThree((e=>e.controls)),E=o.useRef(null),x=o.useRef(null),[{radius:v,width:S,height:q},O]=o.useState({radius:0,width:0,height:0});return o.useLayoutEffect((()=>{E.current.position.set(0,0,0),E.current.updateWorldMatrix(!0,!0);const e=(new s.Box3).setFromObject(x.current),t=new s.Vector3,r=new s.Sphere,n=e.max.y-e.min.y,i=e.max.x-e.min.x;e.getCenter(t),e.getBoundingSphere(r),O({radius:r.radius,width:i,height:n}),E.current.position.set(-t.x,-t.y+n/2,-t.z)}),[e]),o.useLayoutEffect((()=>{if(c){const e=v/(q>S?1.5:2.5);y.position.set(0,.5*v,2.5*v),y.near=.1,y.far=Math.max(5e3,4*v),y.lookAt(0,e,0);const r=j||(null==t?void 0:t.current);r&&(r.target.set(0,e,0),r.update())}}),[j,v,q,S,c]),o.createElement("group",g,o.createElement("group",{ref:E},o.createElement("group",{ref:x},e)),h&&o.createElement(i.ContactShadows,{"rotation-x":Math.PI/2,opacity:b,width:2*v,height:2*v,blur:p,far:v/2}),l&&o.createElement(n.Environment,{preset:l}),o.createElement("ambientLight",{intensity:d/3}),o.createElement("spotLight",{penumbra:1,position:[w.main[0]*v,w.main[1]*v,w.main[2]*v],intensity:2*d,castShadow:a,"shadow-bias":m}),o.createElement("pointLight",{position:[w.fill[0]*v,w.fill[1]*v,w.fill[2]*v],intensity:d}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),n=require("@react-three/fiber"),i=require("./Environment.cjs.js"),a=require("./ContactShadows.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("three-stdlib"),require("use-asset"),require("../helpers/environment-assets.cjs.js");var u=o(e),c=s(t),l=s(r);const f={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]}};exports.Stage=function({children:e,controls:t,shadows:r=!0,adjustCamera:o=!0,environment:s="city",intensity:d=1,preset:h="rembrandt",shadowBias:m=0,contactShadow:p={blur:2,opacity:.5,position:[0,0,0]},...b}){const g=f[h],y=n.useThree((e=>e.camera)),j=n.useThree((e=>e.controls)),w=c.useRef(null),E=c.useRef(null),[{radius:x,width:v,height:q},O]=c.useState({radius:0,width:0,height:0});return c.useLayoutEffect((()=>{w.current.position.set(0,0,0),w.current.updateWorldMatrix(!0,!0);const e=(new l.Box3).setFromObject(E.current),t=new l.Vector3,r=new l.Sphere,n=e.max.y-e.min.y,i=e.max.x-e.min.x;e.getCenter(t),e.getBoundingSphere(r),O({radius:r.radius,width:i,height:n}),w.current.position.set(-t.x,-t.y+n/2,-t.z)}),[e]),c.useLayoutEffect((()=>{if(o){const e=x/(q>v?1.5:2.5);y.position.set(0,.5*x,2.5*x),y.near=.1,y.far=Math.max(5e3,4*x),y.lookAt(0,e,0);const r=j||(null==t?void 0:t.current);r&&(r.target.set(0,e,0),r.update())}}),[j,x,q,v,o]),c.createElement("group",b,c.createElement("group",{ref:w},c.createElement("group",{ref:E},e)),p&&c.createElement(a.ContactShadows,u.default({"rotation-x":Math.PI/2,width:2*x,height:2*x,far:x/2},p)),s&&c.createElement(i.Environment,{preset:s}),c.createElement("ambientLight",{intensity:d/3}),c.createElement("spotLight",{penumbra:1,position:[g.main[0]*x,g.main[1]*x,g.main[2]*x],intensity:2*d,castShadow:r,"shadow-bias":m}),c.createElement("pointLight",{position:[g.fill[0]*x,g.fill[1]*x,g.fill[2]*x],intensity:d}))};
package/core/Stage.d.ts CHANGED
@@ -24,7 +24,6 @@ declare type ControlsProto = {
24
24
  target: THREE.Vector3;
25
25
  };
26
26
  declare type Props = JSX.IntrinsicElements['group'] & {
27
- contactShadow?: boolean;
28
27
  shadows?: boolean;
29
28
  adjustCamera?: boolean;
30
29
  environment?: PresetsType;
@@ -33,8 +32,11 @@ declare type Props = JSX.IntrinsicElements['group'] & {
33
32
  controls?: React.MutableRefObject<ControlsProto>;
34
33
  preset?: keyof typeof presets;
35
34
  shadowBias?: number;
36
- contactShadowBlur?: number;
37
- contactShadowOpacity?: number;
35
+ contactShadow?: {
36
+ blur: number;
37
+ opacity?: number;
38
+ position?: [x: number, y: number, z: number];
39
+ } | false;
38
40
  };
39
- export declare function Stage({ children, controls, shadows, adjustCamera, environment, contactShadow, intensity, preset, shadowBias, contactShadowBlur, contactShadowOpacity, ...props }: Props): JSX.Element;
41
+ export declare function Stage({ children, controls, shadows, adjustCamera, environment, intensity, preset, shadowBias, contactShadow, ...props }: Props): JSX.Element;
40
42
  export {};
package/core/Stage.js CHANGED
@@ -1,3 +1,4 @@
1
+ import _extends from '@babel/runtime/helpers/esm/extends';
1
2
  import * as React from 'react';
2
3
  import * as THREE from 'three';
3
4
  import { useThree } from '@react-three/fiber';
@@ -28,12 +29,14 @@ function Stage({
28
29
  shadows = true,
29
30
  adjustCamera = true,
30
31
  environment = 'city',
31
- contactShadow = true,
32
32
  intensity = 1,
33
33
  preset = 'rembrandt',
34
34
  shadowBias = 0,
35
- contactShadowBlur = 2,
36
- contactShadowOpacity = 0.5,
35
+ contactShadow = {
36
+ blur: 2,
37
+ opacity: 0.5,
38
+ position: [0, 0, 0]
39
+ },
37
40
  ...props
38
41
  }) {
39
42
  const config = presets[preset];
@@ -88,14 +91,12 @@ function Stage({
88
91
  ref: outer
89
92
  }, /*#__PURE__*/React.createElement("group", {
90
93
  ref: inner
91
- }, children)), contactShadow && /*#__PURE__*/React.createElement(ContactShadows, {
94
+ }, children)), contactShadow && /*#__PURE__*/React.createElement(ContactShadows, _extends({
92
95
  "rotation-x": Math.PI / 2,
93
- opacity: contactShadowOpacity,
94
96
  width: radius * 2,
95
97
  height: radius * 2,
96
- blur: contactShadowBlur,
97
98
  far: radius / 2
98
- }), environment && /*#__PURE__*/React.createElement(Environment, {
99
+ }, contactShadow)), environment && /*#__PURE__*/React.createElement(Environment, {
99
100
  preset: environment
100
101
  }), /*#__PURE__*/React.createElement("ambientLight", {
101
102
  intensity: intensity / 3