@react-three/drei 7.22.2 → 7.22.6

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("./GizmoHelper.cjs.js"),o=require("three");function a(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 o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{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 i=a(e),c=n(t);const l="#f0f0f0",s="#999",m="black",u="black",p=["Right","Left","Top","Bottom","Front","Back"],f=e=>new o.Vector3(...e).multiplyScalar(.38),h=[[1,1,1],[1,1,-1],[1,-1,1],[1,-1,-1],[-1,1,1],[-1,1,-1],[-1,-1,1],[-1,-1,-1]].map(f),y=[.25,.25,.25],d=[[1,1,0],[1,0,1],[1,0,-1],[1,-1,0],[0,1,1],[0,1,-1],[0,-1,1],[0,-1,-1],[-1,1,0],[-1,0,1],[-1,0,-1],[-1,-1,0]].map(f),g=d.map((e=>e.toArray().map((e=>0==e?.5:.25)))),b=({hover:e,index:t,font:r="20px Inter var, Arial, sans-serif",faces:a=p,color:n=l,hoverColor:i=s,textColor:f=m,strokeColor:h=u,opacity:y=1})=>{const d=c.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const i=e.getContext("2d");return i.fillStyle=n,i.fillRect(0,0,e.width,e.height),i.strokeStyle=h,i.strokeRect(0,0,e.width,e.height),i.font=r,i.textAlign="center",i.fillStyle=f,i.fillText(a[t].toUpperCase(),64,76),new o.CanvasTexture(e)}),[t,r,n,f,h]);return c.createElement("meshLambertMaterial",{map:d,attachArray:"material",color:e?i:"white",transparent:!0,opacity:y})},C=e=>{const{tweenCamera:t,raycast:o}=r.useGizmoContext(),[a,n]=c.useState(null);return c.createElement("mesh",{raycast:o,onPointerOut:e=>{e.stopPropagation(),n(null)},onPointerMove:e=>{e.stopPropagation(),n(Math.floor(e.faceIndex/2))},onClick:e.onClick||(e=>{e.stopPropagation(),t(e.face.normal)})},[...Array(6)].map(((t,r)=>c.createElement(b,i.default({key:r,index:r,hover:a===r},e)))),c.createElement("boxGeometry",null))},x=({onClick:e,dimensions:t,position:o,hoverColor:a=s})=>{const{tweenCamera:n,raycast:i}=r.useGizmoContext(),[l,m]=c.useState(!1);return c.createElement("mesh",{scale:1.01,position:o,raycast:i,onPointerOver:e=>{e.stopPropagation(),m(!0)},onPointerOut:e=>{e.stopPropagation(),m(!1)},onClick:e||(e=>{e.stopPropagation(),n(o)})},c.createElement("meshBasicMaterial",{color:l?a:"white",transparent:!0,opacity:.6,visible:l}),c.createElement("boxGeometry",{args:t}))};exports.GizmoViewcube=e=>c.createElement("group",{scale:[60,60,60]},c.createElement(C,e),d.map(((t,r)=>c.createElement(x,i.default({key:r,position:t,dimensions:g[r]},e)))),h.map(((t,r)=>c.createElement(x,i.default({key:r,position:t,dimensions:y},e)))),c.createElement("ambientLight",{intensity:.5}),c.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"),r=require("@react-three/fiber"),o=require("./GizmoHelper.cjs.js"),a=require("three");function n(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 o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useCamera.cjs.js");var s=n(e),c=i(t);const l="#f0f0f0",m="#999",p="black",u="black",f=["Right","Left","Top","Bottom","Front","Back"],h=e=>new a.Vector3(...e).multiplyScalar(.38),y=[[1,1,1],[1,1,-1],[1,-1,1],[1,-1,-1],[-1,1,1],[-1,1,-1],[-1,-1,1],[-1,-1,-1]].map(h),d=[.25,.25,.25],g=[[1,1,0],[1,0,1],[1,0,-1],[1,-1,0],[0,1,1],[0,1,-1],[0,-1,1],[0,-1,-1],[-1,1,0],[-1,0,1],[-1,0,-1],[-1,-1,0]].map(h),b=g.map((e=>e.toArray().map((e=>0==e?.5:.25)))),x=({hover:e,index:t,font:o="20px Inter var, Arial, sans-serif",faces:n=f,color:i=l,hoverColor:s=m,textColor:h=p,strokeColor:y=u,opacity:d=1})=>{const g=r.useThree((e=>e.gl)),b=c.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const r=e.getContext("2d");return r.fillStyle=i,r.fillRect(0,0,e.width,e.height),r.strokeStyle=y,r.strokeRect(0,0,e.width,e.height),r.font=o,r.textAlign="center",r.fillStyle=h,r.fillText(n[t].toUpperCase(),64,76),new a.CanvasTexture(e)}),[t,o,i,h,y]);return c.createElement("meshLambertMaterial",{map:b,"map-anisotropy":g.capabilities.getMaxAnisotropy()||1,attachArray:"material",color:e?s:"white",transparent:!0,opacity:d})},C=e=>{const{tweenCamera:t,raycast:r}=o.useGizmoContext(),[a,n]=c.useState(null);return c.createElement("mesh",{raycast:r,onPointerOut:e=>{e.stopPropagation(),n(null)},onPointerMove:e=>{e.stopPropagation(),n(Math.floor(e.faceIndex/2))},onClick:e.onClick||(e=>{e.stopPropagation(),t(e.face.normal)})},[...Array(6)].map(((t,r)=>c.createElement(x,s.default({key:r,index:r,hover:a===r},e)))),c.createElement("boxGeometry",null))},v=({onClick:e,dimensions:t,position:r,hoverColor:a=m})=>{const{tweenCamera:n,raycast:i}=o.useGizmoContext(),[s,l]=c.useState(!1);return c.createElement("mesh",{scale:1.01,position:r,raycast:i,onPointerOver:e=>{e.stopPropagation(),l(!0)},onPointerOut:e=>{e.stopPropagation(),l(!1)},onClick:e||(e=>{e.stopPropagation(),n(r)})},c.createElement("meshBasicMaterial",{color:s?a:"white",transparent:!0,opacity:.6,visible:s}),c.createElement("boxGeometry",{args:t}))};exports.GizmoViewcube=e=>c.createElement("group",{scale:[60,60,60]},c.createElement(C,e),g.map(((t,r)=>c.createElement(v,s.default({key:r,position:t,dimensions:b[r]},e)))),y.map(((t,r)=>c.createElement(v,s.default({key:r,position:t,dimensions:d},e)))),c.createElement("ambientLight",{intensity:.5}),c.createElement("pointLight",{position:[10,10,10],intensity:.5}));
@@ -1,5 +1,6 @@
1
1
  import _extends from '@babel/runtime/helpers/esm/extends';
2
2
  import * as React from 'react';
3
+ import { useThree } from '@react-three/fiber';
3
4
  import { useGizmoContext } from './GizmoHelper.js';
4
5
  import { Vector3, CanvasTexture } from 'three';
5
6
 
@@ -29,6 +30,7 @@ const FaceMaterial = ({
29
30
  strokeColor = colors.stroke,
30
31
  opacity = 1
31
32
  }) => {
33
+ const gl = useThree(state => state.gl);
32
34
  const texture = React.useMemo(() => {
33
35
  const canvas = document.createElement('canvas');
34
36
  canvas.width = 128;
@@ -46,6 +48,7 @@ const FaceMaterial = ({
46
48
  }, [index, font, color, textColor, strokeColor]);
47
49
  return /*#__PURE__*/React.createElement("meshLambertMaterial", {
48
50
  map: texture,
51
+ "map-anisotropy": gl.capabilities.getMaxAnisotropy() || 1,
49
52
  attachArray: "material",
50
53
  color: hover ? hoverColor : 'white',
51
54
  transparent: true,
@@ -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,axisHeadScale:s=1,...u}){const f=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]),[d,m]=i.useState(!1),p=(n?1:.75)*(d?1.2:1)*s;return i.createElement("sprite",l.default({scale:p,onPointerOver:a?void 0:e=>{e.stopPropagation(),m(!0)},onPointerOut:a?void 0:e||(e=>{e.stopPropagation(),m(!1)})},u),i.createElement("spriteMaterial",{map:f,alphaTest:.3,opacity:n?1:.75,toneMapped:!1}))}exports.GizmoViewport=({hideNegativeAxes:e,hideAxisHeads:t,disabled:r,font:o="18px Inter var, Arial, sans-serif",axisColors:n=["#ff3653","#0adb50","#2c8fdf"],axisHeadScale:u=1,labels:f=["X","Y","Z"],labelColor:d="#000",onClick:m,...p})=>{const[b,E,h]=n,{tweenCamera:g,raycast:y}=a.useGizmoContext(),x={font:o,disabled:r,labelColor:d,raycast:y,onClick:m,axisHeadScale:u,onPointerDown:r?void 0:e=>{g(e.object.position),e.stopPropagation()}};return i.createElement("group",l.default({scale:40},p),i.createElement(c,{color:b,rotation:[0,0,0]}),i.createElement(c,{color:E,rotation:[0,0,Math.PI/2]}),i.createElement(c,{color:h,rotation:[0,-Math.PI/2,0]}),!t&&i.createElement(i.Fragment,null,i.createElement(s,l.default({arcStyle:b,position:[1,0,0],label:f[0]},x)),i.createElement(s,l.default({arcStyle:E,position:[0,1,0],label:f[1]},x)),i.createElement(s,l.default({arcStyle:h,position:[0,0,1],label:f[2]},x)),!e&&i.createElement(i.Fragment,null,i.createElement(s,l.default({arcStyle:b,position:[-1,0,0]},x)),i.createElement(s,l.default({arcStyle:E,position:[0,-1,0]},x)),i.createElement(s,l.default({arcStyle:h,position:[0,0,-1]},x)))),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("@react-three/fiber"),r=require("three"),o=require("./GizmoHelper.cjs.js");function l(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(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("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useCamera.cjs.js");var i=l(e),c=n(t);function s({scale:e=[.8,.05,.05],color:t,rotation:a}){return c.createElement("group",{rotation:a},c.createElement("mesh",{position:[.4,0,0]},c.createElement("boxGeometry",{args:e}),c.createElement("meshBasicMaterial",{color:t,toneMapped:!1})))}function u({onClick:e,font:t,disabled:o,arcStyle:l,label:n,labelColor:s,axisHeadScale:u=1,...p}){const f=a.useThree((e=>e.gl)),m=c.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=l,a.fill(),n&&(a.font=t,a.textAlign="center",a.fillStyle=s,a.fillText(n,32,41)),new r.CanvasTexture(e)}),[l,n,s,t]),[d,b]=c.useState(!1),g=(n?1:.75)*(d?1.2:1)*u;return c.createElement("sprite",i.default({scale:g,onPointerOver:o?void 0:e=>{e.stopPropagation(),b(!0)},onPointerOut:o?void 0:e||(e=>{e.stopPropagation(),b(!1)})},p),c.createElement("spriteMaterial",{map:m,"map-anisotropy":f.capabilities.getMaxAnisotropy()||1,alphaTest:.3,opacity:n?1:.75,toneMapped:!1}))}exports.GizmoViewport=({hideNegativeAxes:e,hideAxisHeads:t,disabled:a,font:r="18px Inter var, Arial, sans-serif",axisColors:l=["#ff3653","#0adb50","#2c8fdf"],axisHeadScale:n=1,axisScale:p,labels:f=["X","Y","Z"],labelColor:m="#000",onClick:d,...b})=>{const[g,h,y]=l,{tweenCamera:E,raycast:x}=o.useGizmoContext(),j={font:r,disabled:a,labelColor:m,raycast:x,onClick:d,axisHeadScale:n,onPointerDown:a?void 0:e=>{E(e.object.position),e.stopPropagation()}};return c.createElement("group",i.default({scale:40},b),c.createElement(s,{color:g,rotation:[0,0,0],scale:p}),c.createElement(s,{color:h,rotation:[0,0,Math.PI/2],scale:p}),c.createElement(s,{color:y,rotation:[0,-Math.PI/2,0],scale:p}),!t&&c.createElement(c.Fragment,null,c.createElement(u,i.default({arcStyle:g,position:[1,0,0],label:f[0]},j)),c.createElement(u,i.default({arcStyle:h,position:[0,1,0],label:f[1]},j)),c.createElement(u,i.default({arcStyle:y,position:[0,0,1],label:f[2]},j)),!e&&c.createElement(c.Fragment,null,c.createElement(u,i.default({arcStyle:g,position:[-1,0,0]},j)),c.createElement(u,i.default({arcStyle:h,position:[0,-1,0]},j)),c.createElement(u,i.default({arcStyle:y,position:[0,0,-1]},j)))),c.createElement("ambientLight",{intensity:.5}),c.createElement("pointLight",{position:[10,10,10],intensity:.5}))};
@@ -2,6 +2,7 @@
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];
5
6
  labels?: [string, string, string];
6
7
  axisHeadScale?: number;
7
8
  labelColor?: string;
@@ -11,5 +12,5 @@ declare type GizmoViewportProps = JSX.IntrinsicElements['group'] & {
11
12
  font?: string;
12
13
  onClick?: (e: Event) => null;
13
14
  };
14
- export declare const GizmoViewport: ({ hideNegativeAxes, hideAxisHeads, disabled, font, axisColors, axisHeadScale, labels, 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;
15
16
  export {};
@@ -1,9 +1,11 @@
1
1
  import _extends from '@babel/runtime/helpers/esm/extends';
2
2
  import * as React from 'react';
3
+ import { useThree } from '@react-three/fiber';
3
4
  import { CanvasTexture } from 'three';
4
5
  import { useGizmoContext } from './GizmoHelper.js';
5
6
 
6
7
  function Axis({
8
+ scale = [0.8, 0.05, 0.05],
7
9
  color,
8
10
  rotation
9
11
  }) {
@@ -12,7 +14,7 @@ function Axis({
12
14
  }, /*#__PURE__*/React.createElement("mesh", {
13
15
  position: [0.4, 0, 0]
14
16
  }, /*#__PURE__*/React.createElement("boxGeometry", {
15
- args: [0.8, 0.05, 0.05]
17
+ args: scale
16
18
  }), /*#__PURE__*/React.createElement("meshBasicMaterial", {
17
19
  color: color,
18
20
  toneMapped: false
@@ -29,6 +31,7 @@ function AxisHead({
29
31
  axisHeadScale = 1,
30
32
  ...props
31
33
  }) {
34
+ const gl = useThree(state => state.gl);
32
35
  const texture = React.useMemo(() => {
33
36
  const canvas = document.createElement('canvas');
34
37
  canvas.width = 64;
@@ -68,6 +71,7 @@ function AxisHead({
68
71
  onPointerOut: !disabled ? onClick || handlePointerOut : undefined
69
72
  }, props), /*#__PURE__*/React.createElement("spriteMaterial", {
70
73
  map: texture,
74
+ "map-anisotropy": gl.capabilities.getMaxAnisotropy() || 1,
71
75
  alphaTest: 0.3,
72
76
  opacity: label ? 1 : 0.75,
73
77
  toneMapped: false
@@ -81,6 +85,7 @@ const GizmoViewport = ({
81
85
  font = '18px Inter var, Arial, sans-serif',
82
86
  axisColors = ['#ff3653', '#0adb50', '#2c8fdf'],
83
87
  axisHeadScale = 1,
88
+ axisScale,
84
89
  labels = ['X', 'Y', 'Z'],
85
90
  labelColor = '#000',
86
91
  onClick,
@@ -107,13 +112,16 @@ const GizmoViewport = ({
107
112
  scale: 40
108
113
  }, props), /*#__PURE__*/React.createElement(Axis, {
109
114
  color: colorX,
110
- rotation: [0, 0, 0]
115
+ rotation: [0, 0, 0],
116
+ scale: axisScale
111
117
  }), /*#__PURE__*/React.createElement(Axis, {
112
118
  color: colorY,
113
- rotation: [0, 0, Math.PI / 2]
119
+ rotation: [0, 0, Math.PI / 2],
120
+ scale: axisScale
114
121
  }), /*#__PURE__*/React.createElement(Axis, {
115
122
  color: colorZ,
116
- rotation: [0, -Math.PI / 2, 0]
123
+ rotation: [0, -Math.PI / 2, 0],
124
+ scale: axisScale
117
125
  }), !hideAxisHeads && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AxisHead, _extends({
118
126
  arcStyle: colorX,
119
127
  position: [1, 0, 0],