@react-three/drei 9.56.5 → 9.56.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/README.md +3 -0
- package/core/CameraControls.cjs.js +1 -1
- package/core/CameraControls.d.ts +1 -0
- package/core/CameraControls.js +27 -13
- package/core/MapControls.d.ts +1 -1
- package/core/TrackballControls.d.ts +1 -1
- package/core/TransformControls.d.ts +1 -1
- package/index.cjs.js +1 -1
- package/package.json +2 -2
- package/web/PresentationControls.cjs.js +1 -1
- package/web/PresentationControls.d.ts +2 -1
- package/web/PresentationControls.js +18 -8
package/README.md
CHANGED
|
@@ -362,6 +362,8 @@ type CameraControlsProps = {
|
|
|
362
362
|
camera?: PerspectiveCamera | OrthographicCamera
|
|
363
363
|
/** DOM element to connect to, default to the state's `gl` renderer */
|
|
364
364
|
domElement?: HTMLElement
|
|
365
|
+
/** Reference this CameraControls instance as state's `controls` */
|
|
366
|
+
makeDefault?: boolean
|
|
365
367
|
}
|
|
366
368
|
```
|
|
367
369
|
|
|
@@ -476,6 +478,7 @@ Semi-OrbitControls with spring-physics, polar zoom and snap-back, for presentati
|
|
|
476
478
|
polar={[0, Math.PI / 2]} // Vertical limits
|
|
477
479
|
azimuth={[-Infinity, Infinity]} // Horizontal limits
|
|
478
480
|
config={{ mass: 1, tension: 170, friction: 26 }} // Spring config
|
|
481
|
+
domElement={events.connected} // The DOM element events for this controller will attach to
|
|
479
482
|
>
|
|
480
483
|
<mesh />
|
|
481
484
|
</PresentationControls>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),n=require("@react-three/fiber"),o=require("camera-controls");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),n=require("@react-three/fiber"),o=require("camera-controls");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}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)}var u=s(e),c=a(t),l=a(r),d=s(o);const f=r.forwardRef(((e,t)=>{r.useMemo((()=>{d.default.install({THREE:c}),n.extend({CameraControlsImpl:d.default})}),[]);const{camera:o,domElement:s,makeDefault:a,onStart:f,onEnd:i,onChange:m,events:v,regress:E,...b}=e,h=n.useThree((e=>e.camera)),p=n.useThree((e=>e.gl)),T=n.useThree((e=>e.invalidate)),g=n.useThree((e=>e.events)),j=n.useThree((e=>e.setEvents)),O=n.useThree((e=>e.set)),L=n.useThree((e=>e.get)),q=n.useThree((e=>e.performance)),y=o||h,C=s||g.connected||p.domElement,x=r.useMemo((()=>new d.default(y)),[y]);return n.useFrame(((e,t)=>{x.enabled&&x.update(t)}),-1),r.useEffect((()=>(x.connect(C),()=>{x.disconnect()})),[C,x]),l.useEffect((()=>{v&&j({enabled:!0});const e=e=>{T(),E&&q.regress(),m&&m(e)},t=e=>{f&&f(e),v||j({enabled:!1})},r=e=>{i&&i(e),v||j({enabled:!0})};return x.addEventListener("control",e),x.addEventListener("controlstart",t),x.addEventListener("controlend",r),()=>{x.removeEventListener("control",e),x.removeEventListener("controlstart",t),x.removeEventListener("controlend",r)}}),[x,v,f,i,T,j,E,m]),r.useEffect((()=>{if(a){const e=L().controls;return O({controls:x}),()=>O({controls:e})}}),[a,x]),l.createElement("primitive",u.default({ref:t,object:x},b))}));exports.CameraControls=f;
|
package/core/CameraControls.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import CameraControlsImpl from 'camera-controls';
|
|
|
5
5
|
export declare type CameraControlsProps = Omit<ReactThreeFiber.Overwrite<ReactThreeFiber.Node<CameraControlsImpl, typeof CameraControlsImpl>, {
|
|
6
6
|
camera?: PerspectiveCamera | OrthographicCamera;
|
|
7
7
|
domElement?: HTMLElement;
|
|
8
|
+
makeDefault?: boolean;
|
|
8
9
|
onStart?: (e?: {
|
|
9
10
|
type: 'controlstart';
|
|
10
11
|
}) => void;
|
package/core/CameraControls.js
CHANGED
|
@@ -17,6 +17,7 @@ const CameraControls = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
17
17
|
const {
|
|
18
18
|
camera,
|
|
19
19
|
domElement,
|
|
20
|
+
makeDefault,
|
|
20
21
|
onStart,
|
|
21
22
|
onEnd,
|
|
22
23
|
onChange,
|
|
@@ -29,17 +30,19 @@ const CameraControls = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
29
30
|
const invalidate = useThree(state => state.invalidate);
|
|
30
31
|
const events = useThree(state => state.events);
|
|
31
32
|
const setEvents = useThree(state => state.setEvents);
|
|
33
|
+
const set = useThree(state => state.set);
|
|
34
|
+
const get = useThree(state => state.get);
|
|
32
35
|
const performance = useThree(state => state.performance);
|
|
33
36
|
const explCamera = camera || defaultCamera;
|
|
34
37
|
const explDomElement = domElement || events.connected || gl.domElement;
|
|
35
|
-
const
|
|
38
|
+
const controls = useMemo(() => new CameraControlsImpl(explCamera), [explCamera]);
|
|
36
39
|
useFrame((state, delta) => {
|
|
37
|
-
if (
|
|
40
|
+
if (controls.enabled) controls.update(delta);
|
|
38
41
|
}, -1);
|
|
39
42
|
useEffect(() => {
|
|
40
|
-
|
|
41
|
-
return () => void
|
|
42
|
-
}, [explDomElement,
|
|
43
|
+
controls.connect(explDomElement);
|
|
44
|
+
return () => void controls.disconnect();
|
|
45
|
+
}, [explDomElement, controls]);
|
|
43
46
|
React.useEffect(() => {
|
|
44
47
|
if (enableEvents) {
|
|
45
48
|
setEvents({
|
|
@@ -67,18 +70,29 @@ const CameraControls = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
67
70
|
});
|
|
68
71
|
};
|
|
69
72
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
controls.addEventListener('control', callback);
|
|
74
|
+
controls.addEventListener('controlstart', onStartCb);
|
|
75
|
+
controls.addEventListener('controlend', onEndCb);
|
|
73
76
|
return () => {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
controls.removeEventListener('control', callback);
|
|
78
|
+
controls.removeEventListener('controlstart', onStartCb);
|
|
79
|
+
controls.removeEventListener('controlend', onEndCb);
|
|
77
80
|
};
|
|
78
|
-
}, [
|
|
81
|
+
}, [controls, enableEvents, onStart, onEnd, invalidate, setEvents, regress, onChange]);
|
|
82
|
+
useEffect(() => {
|
|
83
|
+
if (makeDefault) {
|
|
84
|
+
const old = get().controls;
|
|
85
|
+
set({
|
|
86
|
+
controls: controls
|
|
87
|
+
});
|
|
88
|
+
return () => set({
|
|
89
|
+
controls: old
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}, [makeDefault, controls]);
|
|
79
93
|
return /*#__PURE__*/React.createElement("primitive", _extends({
|
|
80
94
|
ref: ref,
|
|
81
|
-
object:
|
|
95
|
+
object: controls
|
|
82
96
|
}, restProps));
|
|
83
97
|
});
|
|
84
98
|
|
package/core/MapControls.d.ts
CHANGED
|
@@ -11,4 +11,4 @@ export declare type MapControlsProps = ReactThreeFiber.Overwrite<ReactThreeFiber
|
|
|
11
11
|
onEnd?: (e?: THREE.Event) => void;
|
|
12
12
|
domElement?: HTMLElement;
|
|
13
13
|
}>;
|
|
14
|
-
export declare const MapControls: React.ForwardRefExoticComponent<Pick<MapControlsProps, "object" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "reset" | "enabled" | "connect" | "update" | "target" | "
|
|
14
|
+
export declare const MapControls: React.ForwardRefExoticComponent<Pick<MapControlsProps, "object" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "reset" | "enabled" | "connect" | "update" | "target" | "domElement" | "onStart" | "keys" | "touches" | "makeDefault" | "minDistance" | "maxDistance" | "minZoom" | "maxZoom" | "minPolarAngle" | "maxPolarAngle" | "minAzimuthAngle" | "maxAzimuthAngle" | "enableDamping" | "dampingFactor" | "enableZoom" | "zoomSpeed" | "enableRotate" | "rotateSpeed" | "enablePan" | "panSpeed" | "screenSpacePanning" | "keyPanSpeed" | "autoRotate" | "autoRotateSpeed" | "reverseOrbit" | "mouseButtons" | "target0" | "position0" | "zoom0" | "_domElementKeyEvents" | "getPolarAngle" | "getAzimuthalAngle" | "setPolarAngle" | "setAzimuthalAngle" | "getDistance" | "listenToKeyEvents" | "saveState" | "onEnd"> & React.RefAttributes<MapControlsImpl>>;
|
|
@@ -12,4 +12,4 @@ export declare type TrackballControlsProps = ReactThreeFiber.Overwrite<ReactThre
|
|
|
12
12
|
onStart?: (e?: THREE.Event) => void;
|
|
13
13
|
onEnd?: (e?: THREE.Event) => void;
|
|
14
14
|
}>;
|
|
15
|
-
export declare const TrackballControls: React.ForwardRefExoticComponent<Pick<TrackballControlsProps, "object" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "screen" | "reset" | "enabled" | "connect" | "update" | "target" | "
|
|
15
|
+
export declare const TrackballControls: React.ForwardRefExoticComponent<Pick<TrackballControlsProps, "object" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "screen" | "reset" | "enabled" | "connect" | "update" | "target" | "domElement" | "onStart" | "keys" | "makeDefault" | "minDistance" | "maxDistance" | "zoomSpeed" | "rotateSpeed" | "panSpeed" | "mouseButtons" | "onEnd" | "regress" | "noRotate" | "noZoom" | "noPan" | "staticMoving" | "dynamicDampingFactor" | "cursorZoom" | "handleResize"> & React.RefAttributes<TrackballControlsImpl>>;
|
|
@@ -24,4 +24,4 @@ export declare type TransformControlsProps = ReactThreeFiber.Object3DNode<Transf
|
|
|
24
24
|
onObjectChange?: (e?: THREE.Event) => void;
|
|
25
25
|
makeDefault?: boolean;
|
|
26
26
|
};
|
|
27
|
-
export declare const TransformControls: React.ForwardRefExoticComponent<Pick<TransformControlsProps, "object" | "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "isGroup" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | "onMouseDown" | "onMouseUp" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "size" | "space" | "reset" | "enabled" | "connect" | "update" | "setSize" | "
|
|
27
|
+
export declare const TransformControls: React.ForwardRefExoticComponent<Pick<TransformControlsProps, "object" | "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "isGroup" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | "onMouseDown" | "onMouseUp" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "size" | "space" | "reset" | "enabled" | "connect" | "update" | "setSize" | "domElement" | "axis" | "makeDefault" | "isTransformControls" | "detach" | "getMode" | "setMode" | "setTranslationSnap" | "setRotationSnap" | "setScaleSnap" | "setSpace" | "onObjectChange" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "showX" | "showY" | "showZ"> & React.RefAttributes<TransformControlsImpl<THREE.Camera>>>;
|