@react-three/drei 7.22.1 → 7.22.5

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/Bounds.d.ts CHANGED
@@ -6,7 +6,7 @@ export declare type BoundsApi = {
6
6
  center: THREE.Vector3;
7
7
  distance: number;
8
8
  };
9
- refresh(object?: THREE.Object3D): any;
9
+ refresh(object?: THREE.Object3D | THREE.Box3): any;
10
10
  clip(): any;
11
11
  fit(): any;
12
12
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),a=require("./GizmoHelper.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("@react-three/fiber"),require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useCamera.cjs.js");var l=o(e),i=n(t);function c({color:e,rotation:t}){return i.createElement("group",{rotation:t},i.createElement("mesh",{position:[.4,0,0]},i.createElement("boxGeometry",{args:[.8,.05,.05]}),i.createElement("meshBasicMaterial",{color:e,toneMapped:!1})))}function s({onClick:e,font:t,disabled:a,arcStyle:o,label:n,labelColor:c,...s}){const u=i.useMemo((()=>{const e=document.createElement("canvas");e.width=64,e.height=64;const a=e.getContext("2d");return a.beginPath(),a.arc(32,32,16,0,2*Math.PI),a.closePath(),a.fillStyle=o,a.fill(),n&&(a.font=t,a.textAlign="center",a.fillStyle=c,a.fillText(n,32,41)),new r.CanvasTexture(e)}),[o,n,c,t]),[f,p]=i.useState(!1),m=(n?1:.75)*(f?1.2:1);return i.createElement("sprite",l.default({scale:m,onPointerOver:a?void 0:e=>{e.stopPropagation(),p(!0)},onPointerOut:a?void 0:e||(e=>{e.stopPropagation(),p(!1)})},s),i.createElement("spriteMaterial",{map:u,alphaTest:.3,opacity:n?1:.75,toneMapped:!1}))}exports.GizmoViewport=({hideNegativeAxes:e,disabled:t,font:r="18px Inter var, Arial, sans-serif",axisColors:o=["#ff3653","#0adb50","#2c8fdf"],labelColor:n="#000",onClick:u,...f})=>{const[p,m,d]=o,{tweenCamera:b,raycast:E}=a.useGizmoContext(),h={font:r,disabled:t,labelColor:n,raycast:E,onClick:u,onPointerDown:t?void 0:e=>{b(e.object.position),e.stopPropagation()}};return i.createElement("group",l.default({scale:40},f),i.createElement(c,{color:p,rotation:[0,0,0]}),i.createElement(c,{color:m,rotation:[0,0,Math.PI/2]}),i.createElement(c,{color:d,rotation:[0,-Math.PI/2,0]}),i.createElement(s,l.default({arcStyle:p,position:[1,0,0],label:"X"},h)),i.createElement(s,l.default({arcStyle:m,position:[0,1,0],label:"Y"},h)),i.createElement(s,l.default({arcStyle:d,position:[0,0,1],label:"Z"},h)),!e&&i.createElement(i.Fragment,null,i.createElement(s,l.default({arcStyle:p,position:[-1,0,0]},h)),i.createElement(s,l.default({arcStyle:m,position:[0,-1,0]},h)),i.createElement(s,l.default({arcStyle:d,position:[0,0,-1]},h))),i.createElement("ambientLight",{intensity:.5}),i.createElement("pointLight",{position:[10,10,10],intensity:.5}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),a=require("three"),r=require("./GizmoHelper.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:function(){return e[a]}})}})),t.default=e,Object.freeze(t)}require("@react-three/fiber"),require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useCamera.cjs.js");var n=o(e),i=l(t);function c({scale:e=[.8,.05,.05],color:t,rotation:a}){return i.createElement("group",{rotation:a},i.createElement("mesh",{position:[.4,0,0]},i.createElement("boxGeometry",{args:e}),i.createElement("meshBasicMaterial",{color:t,toneMapped:!1})))}function s({onClick:e,font:t,disabled:r,arcStyle:o,label:l,labelColor:c,axisHeadScale:s=1,...u}){const p=i.useMemo((()=>{const e=document.createElement("canvas");e.width=64,e.height=64;const r=e.getContext("2d");return r.beginPath(),r.arc(32,32,16,0,2*Math.PI),r.closePath(),r.fillStyle=o,r.fill(),l&&(r.font=t,r.textAlign="center",r.fillStyle=c,r.fillText(l,32,41)),new a.CanvasTexture(e)}),[o,l,c,t]),[f,m]=i.useState(!1),d=(l?1:.75)*(f?1.2:1)*s;return i.createElement("sprite",n.default({scale:d,onPointerOver:r?void 0:e=>{e.stopPropagation(),m(!0)},onPointerOut:r?void 0:e||(e=>{e.stopPropagation(),m(!1)})},u),i.createElement("spriteMaterial",{map:p,"map-anisotropy":16,alphaTest:.3,opacity:l?1:.75,toneMapped:!1}))}exports.GizmoViewport=({hideNegativeAxes:e,hideAxisHeads:t,disabled:a,font:o="18px Inter var, Arial, sans-serif",axisColors:l=["#ff3653","#0adb50","#2c8fdf"],axisHeadScale:u=1,axisScale:p,labels:f=["X","Y","Z"],labelColor:m="#000",onClick:d,...b})=>{const[E,h,y]=l,{tweenCamera:g,raycast:x}=r.useGizmoContext(),j={font:o,disabled:a,labelColor:m,raycast:x,onClick:d,axisHeadScale:u,onPointerDown:a?void 0:e=>{g(e.object.position),e.stopPropagation()}};return i.createElement("group",n.default({scale:40},b),i.createElement(c,{color:E,rotation:[0,0,0],scale:p}),i.createElement(c,{color:h,rotation:[0,0,Math.PI/2],scale:p}),i.createElement(c,{color:y,rotation:[0,-Math.PI/2,0],scale:p}),!t&&i.createElement(i.Fragment,null,i.createElement(s,n.default({arcStyle:E,position:[1,0,0],label:f[0]},j)),i.createElement(s,n.default({arcStyle:h,position:[0,1,0],label:f[1]},j)),i.createElement(s,n.default({arcStyle:y,position:[0,0,1],label:f[2]},j)),!e&&i.createElement(i.Fragment,null,i.createElement(s,n.default({arcStyle:E,position:[-1,0,0]},j)),i.createElement(s,n.default({arcStyle:h,position:[0,-1,0]},j)),i.createElement(s,n.default({arcStyle:y,position:[0,0,-1]},j)))),i.createElement("ambientLight",{intensity:.5}),i.createElement("pointLight",{position:[10,10,10],intensity:.5}))};
@@ -2,11 +2,15 @@
2
2
  import { Event } from 'three';
3
3
  declare type GizmoViewportProps = JSX.IntrinsicElements['group'] & {
4
4
  axisColors?: [string, string, string];
5
+ axisScale?: [number, number, number];
6
+ labels?: [string, string, string];
7
+ axisHeadScale?: number;
5
8
  labelColor?: string;
6
9
  hideNegativeAxes?: boolean;
10
+ hideAxisHeads?: boolean;
7
11
  disabled?: boolean;
8
12
  font?: string;
9
13
  onClick?: (e: Event) => null;
10
14
  };
11
- export declare const GizmoViewport: ({ hideNegativeAxes, disabled, font, axisColors, labelColor, onClick, ...props }: GizmoViewportProps) => JSX.Element;
15
+ export declare const GizmoViewport: ({ hideNegativeAxes, hideAxisHeads, disabled, font, axisColors, axisHeadScale, axisScale, labels, labelColor, onClick, ...props }: GizmoViewportProps) => JSX.Element;
12
16
  export {};
@@ -4,6 +4,7 @@ import { CanvasTexture } from 'three';
4
4
  import { useGizmoContext } from './GizmoHelper.js';
5
5
 
6
6
  function Axis({
7
+ scale = [0.8, 0.05, 0.05],
7
8
  color,
8
9
  rotation
9
10
  }) {
@@ -12,7 +13,7 @@ function Axis({
12
13
  }, /*#__PURE__*/React.createElement("mesh", {
13
14
  position: [0.4, 0, 0]
14
15
  }, /*#__PURE__*/React.createElement("boxGeometry", {
15
- args: [0.8, 0.05, 0.05]
16
+ args: scale
16
17
  }), /*#__PURE__*/React.createElement("meshBasicMaterial", {
17
18
  color: color,
18
19
  toneMapped: false
@@ -26,6 +27,7 @@ function AxisHead({
26
27
  arcStyle,
27
28
  label,
28
29
  labelColor,
30
+ axisHeadScale = 1,
29
31
  ...props
30
32
  }) {
31
33
  const texture = React.useMemo(() => {
@@ -49,7 +51,7 @@ function AxisHead({
49
51
  return new CanvasTexture(canvas);
50
52
  }, [arcStyle, label, labelColor, font]);
51
53
  const [active, setActive] = React.useState(false);
52
- const scale = (label ? 1 : 0.75) * (active ? 1.2 : 1);
54
+ const scale = (label ? 1 : 0.75) * (active ? 1.2 : 1) * axisHeadScale;
53
55
 
54
56
  const handlePointerOver = e => {
55
57
  e.stopPropagation();
@@ -67,6 +69,7 @@ function AxisHead({
67
69
  onPointerOut: !disabled ? onClick || handlePointerOut : undefined
68
70
  }, props), /*#__PURE__*/React.createElement("spriteMaterial", {
69
71
  map: texture,
72
+ "map-anisotropy": 16,
70
73
  alphaTest: 0.3,
71
74
  opacity: label ? 1 : 0.75,
72
75
  toneMapped: false
@@ -75,9 +78,13 @@ function AxisHead({
75
78
 
76
79
  const GizmoViewport = ({
77
80
  hideNegativeAxes,
81
+ hideAxisHeads,
78
82
  disabled,
79
83
  font = '18px Inter var, Arial, sans-serif',
80
84
  axisColors = ['#ff3653', '#0adb50', '#2c8fdf'],
85
+ axisHeadScale = 1,
86
+ axisScale,
87
+ labels = ['X', 'Y', 'Z'],
81
88
  labelColor = '#000',
82
89
  onClick,
83
90
  ...props
@@ -93,6 +100,7 @@ const GizmoViewport = ({
93
100
  labelColor,
94
101
  raycast,
95
102
  onClick,
103
+ axisHeadScale,
96
104
  onPointerDown: !disabled ? e => {
97
105
  tweenCamera(e.object.position);
98
106
  e.stopPropagation();
@@ -102,25 +110,28 @@ const GizmoViewport = ({
102
110
  scale: 40
103
111
  }, props), /*#__PURE__*/React.createElement(Axis, {
104
112
  color: colorX,
105
- rotation: [0, 0, 0]
113
+ rotation: [0, 0, 0],
114
+ scale: axisScale
106
115
  }), /*#__PURE__*/React.createElement(Axis, {
107
116
  color: colorY,
108
- rotation: [0, 0, Math.PI / 2]
117
+ rotation: [0, 0, Math.PI / 2],
118
+ scale: axisScale
109
119
  }), /*#__PURE__*/React.createElement(Axis, {
110
120
  color: colorZ,
111
- rotation: [0, -Math.PI / 2, 0]
112
- }), /*#__PURE__*/React.createElement(AxisHead, _extends({
121
+ rotation: [0, -Math.PI / 2, 0],
122
+ scale: axisScale
123
+ }), !hideAxisHeads && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AxisHead, _extends({
113
124
  arcStyle: colorX,
114
125
  position: [1, 0, 0],
115
- label: "X"
126
+ label: labels[0]
116
127
  }, axisHeadProps)), /*#__PURE__*/React.createElement(AxisHead, _extends({
117
128
  arcStyle: colorY,
118
129
  position: [0, 1, 0],
119
- label: "Y"
130
+ label: labels[1]
120
131
  }, axisHeadProps)), /*#__PURE__*/React.createElement(AxisHead, _extends({
121
132
  arcStyle: colorZ,
122
133
  position: [0, 0, 1],
123
- label: "Z"
134
+ label: labels[2]
124
135
  }, axisHeadProps)), !hideNegativeAxes && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AxisHead, _extends({
125
136
  arcStyle: colorX,
126
137
  position: [-1, 0, 0]
@@ -130,7 +141,7 @@ const GizmoViewport = ({
130
141
  }, axisHeadProps)), /*#__PURE__*/React.createElement(AxisHead, _extends({
131
142
  arcStyle: colorZ,
132
143
  position: [0, 0, -1]
133
- }, axisHeadProps))), /*#__PURE__*/React.createElement("ambientLight", {
144
+ }, axisHeadProps)))), /*#__PURE__*/React.createElement("ambientLight", {
134
145
  intensity: 0.5
135
146
  }), /*#__PURE__*/React.createElement("pointLight", {
136
147
  position: [10, 10, 10],
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),a=require("@react-three/fiber"),n=require("../materials/SpotLightMaterial.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var u=o(e),l=i(t);const s=new r.Vector3,c=l.forwardRef((({depthBuffer:e,color:t="white",distance:o=5,angle:i=.15,attenuation:c=5,anglePower:f=5,...m},p)=>{const h=l.useRef(null),d=a.useThree((e=>e.size)),g=a.useThree((e=>e.camera)),v=a.useThree((e=>e.viewport.dpr)),[b]=l.useState((()=>new n.SpotLightMaterial));a.useFrame((()=>{b.uniforms.spotPosition.value.copy(h.current.getWorldPosition(s)),h.current.lookAt(h.current.parent.target.position)}));const w=l.useMemo((()=>{const e=new r.CylinderGeometry(.1,7*i,o,128,64,!0);return e.applyMatrix4((new r.Matrix4).makeTranslation(0,-o/2,0)),e.applyMatrix4((new r.Matrix4).makeRotationX(-Math.PI/2)),e}),[i,o]);return l.createElement("spotLight",u.default({ref:p,angle:i,color:t,distance:o},m),l.createElement("mesh",{ref:h,geometry:w},l.createElement("primitive",{object:b,attach:"material","uniforms-lightColor-value":t,"uniforms-attenuation-value":c,"uniforms-anglePower-value":f,"uniforms-depth-value":e,"uniforms-cameraNear-value":g.near,"uniforms-cameraFar-value":g.far,"uniforms-resolution-value":e?[d.width*v,d.height*v]:[0,0]})))}));exports.SpotLight=c;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),a=require("@react-three/fiber"),n=require("../materials/SpotLightMaterial.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var u=o(e),l=i(t);const s=new r.Vector3,c=l.forwardRef((({depthBuffer:e,color:t="white",distance:o=5,angle:i=.15,attenuation:c=5,anglePower:f=5,...m},p)=>{const h=l.useRef(null),d=a.useThree((e=>e.size)),g=a.useThree((e=>e.camera)),v=a.useThree((e=>e.viewport.dpr)),[b]=l.useState((()=>new n.SpotLightMaterial));a.useFrame((()=>{b.uniforms.spotPosition.value.copy(h.current.getWorldPosition(s)),h.current.lookAt(h.current.parent.target.getWorldPosition(s))}));const w=l.useMemo((()=>{const e=new r.CylinderGeometry(.1,7*i,o,128,64,!0);return e.applyMatrix4((new r.Matrix4).makeTranslation(0,-o/2,0)),e.applyMatrix4((new r.Matrix4).makeRotationX(-Math.PI/2)),e}),[i,o]);return l.createElement("spotLight",u.default({ref:p,angle:i,color:t,distance:o},m),l.createElement("mesh",{ref:h,geometry:w},l.createElement("primitive",{object:b,attach:"material","uniforms-lightColor-value":t,"uniforms-attenuation-value":c,"uniforms-anglePower-value":f,"uniforms-depth-value":e,"uniforms-cameraNear-value":g.near,"uniforms-cameraFar-value":g.far,"uniforms-resolution-value":e?[d.width*v,d.height*v]:[0,0]})))}));exports.SpotLight=c;
package/core/SpotLight.js CHANGED
@@ -21,7 +21,7 @@ const SpotLight = /*#__PURE__*/React.forwardRef(({
21
21
  const [material] = React.useState(() => new SpotLightMaterial());
22
22
  useFrame(() => {
23
23
  material.uniforms.spotPosition.value.copy(mesh.current.getWorldPosition(vec));
24
- mesh.current.lookAt(mesh.current.parent.target.position);
24
+ mesh.current.lookAt(mesh.current.parent.target.getWorldPosition(vec));
25
25
  });
26
26
  const geom = React.useMemo(() => {
27
27
  const geometry = new CylinderGeometry(0.1, angle * 7, distance, 128, 64, true);