@react-three/drei 9.56.5 → 9.56.7
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 +9 -0
- package/core/CameraControls.cjs.js +1 -1
- package/core/CameraControls.d.ts +2 -1
- 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,14 @@ 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
|
|
367
|
+
/** Events callbacks, see: https://github.com/yomotsu/camera-controls#events */
|
|
368
|
+
onStart?: (e?: { type: 'controlstart' }) => void
|
|
369
|
+
onEnd?: (e?: { type: 'controlend' }) => void
|
|
370
|
+
onChange?: (e?: { type: 'update' }) => void
|
|
371
|
+
/** While "dragging", state's `events` are disabled by default(for performance). You can explicitly disable this optimisation, by setting this prop to true */
|
|
372
|
+
events?: boolean
|
|
365
373
|
}
|
|
366
374
|
```
|
|
367
375
|
|
|
@@ -476,6 +484,7 @@ Semi-OrbitControls with spring-physics, polar zoom and snap-back, for presentati
|
|
|
476
484
|
polar={[0, Math.PI / 2]} // Vertical limits
|
|
477
485
|
azimuth={[-Infinity, Infinity]} // Horizontal limits
|
|
478
486
|
config={{ mass: 1, tension: 170, friction: 26 }} // Spring config
|
|
487
|
+
domElement={events.connected} // The DOM element events for this controller will attach to
|
|
479
488
|
>
|
|
480
489
|
<mesh />
|
|
481
490
|
</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,p=n.useThree((e=>e.camera)),h=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||p,C=s||g.connected||h.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("update",e),x.addEventListener("controlstart",t),x.addEventListener("controlend",r),()=>{x.removeEventListener("update",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;
|
|
@@ -12,7 +13,7 @@ export declare type CameraControlsProps = Omit<ReactThreeFiber.Overwrite<ReactTh
|
|
|
12
13
|
type: 'controlend';
|
|
13
14
|
}) => void;
|
|
14
15
|
onChange?: (e?: {
|
|
15
|
-
type: '
|
|
16
|
+
type: 'update';
|
|
16
17
|
}) => void;
|
|
17
18
|
events?: boolean;
|
|
18
19
|
regress?: boolean;
|
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('update', callback);
|
|
74
|
+
controls.addEventListener('controlstart', onStartCb);
|
|
75
|
+
controls.addEventListener('controlend', onEndCb);
|
|
73
76
|
return () => {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
controls.removeEventListener('update', 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>>>;
|