@react-three/drei 7.12.4 → 7.13.1
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/Instances.cjs.js +1 -1
- package/core/Instances.js +2 -2
- package/core/Points.cjs.js +1 -1
- package/core/Points.js +2 -2
- package/core/TransformControls.cjs.js +1 -1
- package/core/TransformControls.d.ts +2 -1
- package/core/TransformControls.js +16 -2
- package/index.cjs.js +1 -1
- package/package.json +1 -1
- package/web/Html.cjs.js +1 -1
- package/web/Html.js +1 -16
- package/web/index.cjs.js +1 -1
- package/web/index.js +1 -0
package/core/Instances.cjs.js
CHANGED
|
@@ -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"),a=require("react-merge-refs"),c=require("react-composer"),u=require("../helpers/Position.cjs.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}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"),a=require("react-merge-refs"),c=require("react-composer"),u=require("../helpers/Position.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 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 s=o(e),l=i(t),f=i(r),d=o(a),m=o(c);let p,y;const x=f.createContext(null),b=new l.Matrix4,g=new l.Matrix4,h=new l.Matrix4,v=new l.Color,M=new l.Vector3,w=new l.Quaternion,j=new l.Vector3,A=f.forwardRef((({context:e,children:t,...r},a)=>{f.useMemo((()=>n.extend({Position:u.Position})),[]);const c=f.useRef(),{subscribe:o}=f.useContext(e||x);return f.useLayoutEffect((()=>o(c)),[]),f.createElement("position",s.default({ref:d.default([a,c])},r),t)})),E=f.forwardRef((({children:e,range:t,limit:r=1e3,frames:a=1/0,...c},u)=>{const[{context:o,instance:i}]=f.useState((()=>{const e=f.createContext(null);return{context:e,instance:f.forwardRef(((t,r)=>f.createElement(A,s.default({context:e},t,{ref:r}))))}})),m=f.useRef(null),[E,O]=f.useState([]),[[q,P]]=f.useState((()=>{const e=new Float32Array(16*r);for(p=0;p<r;p++)h.identity().toArray(e,16*p);return[e,new Float32Array([...new Array(3*r)].map((()=>1)))]}));f.useLayoutEffect((()=>{m.current.count=m.current.instanceMatrix.updateRange.count=m.current.instanceColor.updateRange.count=Math.min(r,void 0!==t?t:r,E.length)}),[E,t]),f.useEffect((()=>{m.current.instanceMatrix.needsUpdate=!0}));let _=0;n.useFrame((e=>{if(a===1/0||_<a){for(m.current.updateMatrix(),m.current.updateMatrixWorld(),b.copy(m.current.matrixWorld).invert(),p=0;p<E.length;p++)y=E[p].current,y.matrixWorld.decompose(M,w,j),g.compose(M,w,j).premultiply(b),g.equals(h.fromArray(q,16*p))||(g.toArray(q,16*p),m.current.instanceMatrix.needsUpdate=!0),y.color.equals(v.fromArray(P,3*p))||(y.color.toArray(P,3*p),m.current.instanceColor.needsUpdate=!0);_++}}));const C=f.useMemo((()=>{const e={};for(p=0;p<E.length;p++){var t;Object.assign(e,null==(t=E[p].current)?void 0:t.__r3f.handlers)}return Object.keys(e).reduce(((e,t)=>({...e,[t]:e=>{var r,n,a;const c=null==(r=E[e.instanceId])?void 0:r.current;return null==c||null==(n=c.__r3f)||null==(a=n.handlers)?void 0:a[t]({...e,object:c})}})),{})}),[e,E]),R=f.useMemo((()=>({subscribe:e=>(O((t=>[...t,e])),()=>O((t=>t.filter((t=>t.current!==e.current)))))})),[]);return f.createElement("instancedMesh",s.default({matrixAutoUpdate:!1,ref:d.default([u,m]),args:[null,null,0]},C,c),f.createElement("instancedBufferAttribute",{attach:"instanceMatrix",count:q.length/16,array:q,itemSize:16,usage:l.DynamicDrawUsage}),f.createElement("instancedBufferAttribute",{attach:"instanceColor",count:P.length/3,array:P,itemSize:3,usage:l.DynamicDrawUsage}),"function"==typeof e?f.createElement(o.Provider,{value:R},e(i)):f.createElement(x.Provider,{value:R},e))}));exports.Instance=A,exports.Instances=E,exports.Merged=function({meshes:e,children:t,...r}){const n=Array.isArray(e);return f.createElement(m.default,{components:(n?e:Object.values(e)).map((({geometry:e,material:t})=>f.createElement(E,s.default({geometry:e,material:t},r))))},(r=>n?t(...r):t(Object.keys(e).reduce(((e,t,n)=>({...e,[t]:r[n]})),{}))))};
|
package/core/Instances.js
CHANGED
|
@@ -108,9 +108,9 @@ const Instances = /*#__PURE__*/React.forwardRef(({
|
|
|
108
108
|
|
|
109
109
|
return Object.keys(events).reduce((prev, key) => ({ ...prev,
|
|
110
110
|
[key]: event => {
|
|
111
|
-
var _r3f, _r3f$handlers;
|
|
111
|
+
var _instances$event$inst, _r3f, _r3f$handlers;
|
|
112
112
|
|
|
113
|
-
const object = instances[event.instanceId].current;
|
|
113
|
+
const object = (_instances$event$inst = instances[event.instanceId]) == null ? void 0 : _instances$event$inst.current;
|
|
114
114
|
return object == null ? void 0 : (_r3f = object.__r3f) == null ? void 0 : (_r3f$handlers = _r3f.handlers) == null ? void 0 : _r3f$handlers[key]({ ...event,
|
|
115
115
|
object
|
|
116
116
|
});
|
package/core/Points.cjs.js
CHANGED
|
@@ -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"),a=require("react-merge-refs"),u=require("../helpers/Position.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 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 c=o(e),s=i(t),l=i(r),f=o(a);let d,b;const m=l.createContext(null),p=new s.Matrix4,y=new s.Vector3,g=new s.Color,h=l.forwardRef((({children:e,range:t,limit:r=1e3,...a},u)=>{const o=l.useRef(null),[i,h]=l.useState([]),[[x,j]]=l.useState((()=>[new Float32Array(3*r),new Float32Array([...new Array(3*r)].map((()=>1)))]));l.useLayoutEffect((()=>{o.current.geometry.drawRange.count=Math.min(r,void 0!==t?t:r,i.length)}),[i,t]),l.useEffect((()=>{o.current.geometry.attributes.position.needsUpdate=!0})),n.useFrame((()=>{for(o.current.updateMatrix(),o.current.updateMatrixWorld(),p.copy(o.current.matrixWorld).invert(),d=0;d<i.length;d++)b=i[d].current,b.getWorldPosition(y).applyMatrix4(p),y.x===x[3*d]&&y.y===x[3*d+1]&&y.z===x[3*d+2]||(y.toArray(x,3*d),o.current.geometry.attributes.position.needsUpdate=!0,b.matrixWorldNeedsUpdate=!0),b.color.equals(g.fromArray(j,3*d))||(b.color.toArray(j,3*d),o.current.geometry.attributes.color.needsUpdate=!0)}));const v=l.useMemo((()=>{const e={};for(d=0;d<i.length;d++){var t;Object.assign(e,null==(t=i[d].current)?void 0:t.__r3f.handlers)}return Object.keys(e).reduce(((e,t)=>({...e,[t]:e=>{var r,n;const
|
|
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"),a=require("react-merge-refs"),u=require("../helpers/Position.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 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 c=o(e),s=i(t),l=i(r),f=o(a);let d,b;const m=l.createContext(null),p=new s.Matrix4,y=new s.Vector3,g=new s.Color,h=l.forwardRef((({children:e,range:t,limit:r=1e3,...a},u)=>{const o=l.useRef(null),[i,h]=l.useState([]),[[x,j]]=l.useState((()=>[new Float32Array(3*r),new Float32Array([...new Array(3*r)].map((()=>1)))]));l.useLayoutEffect((()=>{o.current.geometry.drawRange.count=Math.min(r,void 0!==t?t:r,i.length)}),[i,t]),l.useEffect((()=>{o.current.geometry.attributes.position.needsUpdate=!0})),n.useFrame((()=>{for(o.current.updateMatrix(),o.current.updateMatrixWorld(),p.copy(o.current.matrixWorld).invert(),d=0;d<i.length;d++)b=i[d].current,b.getWorldPosition(y).applyMatrix4(p),y.x===x[3*d]&&y.y===x[3*d+1]&&y.z===x[3*d+2]||(y.toArray(x,3*d),o.current.geometry.attributes.position.needsUpdate=!0,b.matrixWorldNeedsUpdate=!0),b.color.equals(g.fromArray(j,3*d))||(b.color.toArray(j,3*d),o.current.geometry.attributes.color.needsUpdate=!0)}));const v=l.useMemo((()=>{const e={};for(d=0;d<i.length;d++){var t;Object.assign(e,null==(t=i[d].current)?void 0:t.__r3f.handlers)}return Object.keys(e).reduce(((e,t)=>({...e,[t]:e=>{var r,n,a;const u=null==(r=i[e.index])?void 0:r.current;return null==u||null==(n=u.__r3f)||null==(a=n.handlers)?void 0:a[t]({...e,object:u})}})),{})}),[e,i]),w=l.useMemo((()=>({subscribe:e=>(h((t=>[...t,e])),()=>h((t=>t.filter((t=>t.current!==e.current)))))})),[]);return l.createElement("points",c.default({matrixAutoUpdate:!1,ref:f.default([u,o])},v,a),l.createElement("bufferGeometry",null,l.createElement("bufferAttribute",{attachObject:["attributes","position"],count:x.length/3,array:x,itemSize:3,usage:s.DynamicDrawUsage}),l.createElement("bufferAttribute",{attachObject:["attributes","color"],count:j.length/3,array:j,itemSize:3,usage:s.DynamicDrawUsage})),l.createElement(m.Provider,{value:w},e))})),x=l.forwardRef((({children:e,...t},r)=>{l.useMemo((()=>n.extend({Position:u.Position})),[]);const a=l.useRef(),{subscribe:o}=l.useContext(m);return l.useLayoutEffect((()=>o(a)),[]),l.createElement("position",c.default({ref:f.default([r,a])},t),e)}));exports.Point=x,exports.Points=h;
|
package/core/Points.js
CHANGED
|
@@ -58,9 +58,9 @@ const Points = /*#__PURE__*/React.forwardRef(({
|
|
|
58
58
|
|
|
59
59
|
return Object.keys(events).reduce((prev, key) => ({ ...prev,
|
|
60
60
|
[key]: event => {
|
|
61
|
-
var _r3f, _r3f$handlers;
|
|
61
|
+
var _refs$event$index, _r3f, _r3f$handlers;
|
|
62
62
|
|
|
63
|
-
const object = refs[event.index].current;
|
|
63
|
+
const object = (_refs$event$index = refs[event.index]) == null ? void 0 : _refs$event$index.current;
|
|
64
64
|
return object == null ? void 0 : (_r3f = object.__r3f) == null ? void 0 : (_r3f$handlers = _r3f.handlers) == null ? void 0 : _r3f$handlers[key]({ ...event,
|
|
65
65
|
object
|
|
66
66
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("@react-three/fiber"),t=require("lodash.omit"),r=require("lodash.pick"),l=require("react"),u=require("three-stdlib");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("@react-three/fiber"),t=require("lodash.omit"),r=require("lodash.pick"),l=require("react"),u=require("three"),a=require("three-stdlib");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var i=o(e),c=o(t),d=o(r),v=s(l),f=s(u);const m=v.forwardRef((({children:e,onChange:t,onMouseDown:r,onMouseUp:l,onObjectChange:u,object:o,...s},m)=>{const E=["enabled","axis","mode","translationSnap","rotationSnap","scaleSnap","space","size","showX","showY","showZ"],{camera:h,...b}=s,g=d.default(b,E),p=c.default(b,E),L=n.useThree((e=>e.controls)),j=n.useThree((({gl:e})=>e)),w=n.useThree((({camera:e})=>e)),O=n.useThree((({invalidate:e})=>e)),q=h||w,[y]=v.useState((()=>new a.TransformControls(q,j.domElement))),C=v.useRef();return v.useLayoutEffect((()=>{o?null==y||y.attach(o instanceof f.Object3D?o:o.current):null==y||y.attach(C.current)}),[o,e,y]),v.useEffect((()=>{if(L){const e=e=>L.enabled=!e.value;return y.addEventListener("dragging-changed",e),()=>y.removeEventListener("dragging-changed",e)}}),[y,L]),v.useEffect((()=>{const e=e=>{O(),t&&t(e)};return null==y||null==y.addEventListener||y.addEventListener("change",e),r&&(null==y||null==y.addEventListener||y.addEventListener("mouseDown",r)),l&&(null==y||null==y.addEventListener||y.addEventListener("mouseUp",l)),u&&(null==y||null==y.addEventListener||y.addEventListener("objectChange",u)),()=>{null==y||null==y.removeEventListener||y.removeEventListener("change",e),r&&(null==y||null==y.removeEventListener||y.removeEventListener("mouseDown",r)),l&&(null==y||null==y.removeEventListener||y.removeEventListener("mouseUp",l)),u&&(null==y||null==y.removeEventListener||y.removeEventListener("objectChange",u))}}),[t,r,l,u,y,O]),y?v.createElement(v.Fragment,null,v.createElement("primitive",i.default({ref:m,dispose:void 0,object:y},g)),v.createElement("group",i.default({ref:C},p),e)):null}));exports.TransformControls=m;
|
|
@@ -3,6 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import { TransformControls as TransformControlsImpl } from 'three-stdlib';
|
|
5
5
|
export declare type TransformControlsProps = ReactThreeFiber.Object3DNode<TransformControlsImpl, typeof TransformControlsImpl> & JSX.IntrinsicElements['group'] & {
|
|
6
|
+
object?: THREE.Object3D | React.MutableRefObject<THREE.Object3D>;
|
|
6
7
|
enabled?: boolean;
|
|
7
8
|
axis?: string | null;
|
|
8
9
|
mode?: string;
|
|
@@ -21,4 +22,4 @@ export declare type TransformControlsProps = ReactThreeFiber.Object3DNode<Transf
|
|
|
21
22
|
onMouseUp?: (e?: THREE.Event) => void;
|
|
22
23
|
onObjectChange?: (e?: THREE.Event) => void;
|
|
23
24
|
};
|
|
24
|
-
export declare const TransformControls: React.ForwardRefExoticComponent<Pick<TransformControlsProps, "visible" | "attach" | "attachArray" | "attachObject" | "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" | "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" | "enabled" | "setSize" | "update" | "isTransformControls" | "detach" | "getMode" | "setMode" | "setTranslationSnap" | "setRotationSnap" | "setScaleSnap" | "setSpace" | "onObjectChange" | "axis" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "showX" | "showY" | "showZ"> & React.RefAttributes<TransformControlsImpl<THREE.Camera>>>;
|
|
25
|
+
export declare const TransformControls: React.ForwardRefExoticComponent<Pick<TransformControlsProps, "object" | "visible" | "attach" | "attachArray" | "attachObject" | "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" | "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" | "enabled" | "setSize" | "update" | "isTransformControls" | "detach" | "getMode" | "setMode" | "setTranslationSnap" | "setRotationSnap" | "setScaleSnap" | "setSpace" | "onObjectChange" | "axis" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "showX" | "showY" | "showZ"> & React.RefAttributes<TransformControlsImpl<THREE.Camera>>>;
|
|
@@ -3,6 +3,7 @@ import { useThree } from '@react-three/fiber';
|
|
|
3
3
|
import omit from 'lodash.omit';
|
|
4
4
|
import pick from 'lodash.pick';
|
|
5
5
|
import * as React from 'react';
|
|
6
|
+
import * as THREE from 'three';
|
|
6
7
|
import { TransformControls as TransformControls$1 } from 'three-stdlib';
|
|
7
8
|
|
|
8
9
|
const TransformControls = /*#__PURE__*/React.forwardRef(({
|
|
@@ -11,6 +12,7 @@ const TransformControls = /*#__PURE__*/React.forwardRef(({
|
|
|
11
12
|
onMouseDown,
|
|
12
13
|
onMouseUp,
|
|
13
14
|
onObjectChange,
|
|
15
|
+
object,
|
|
14
16
|
...props
|
|
15
17
|
}, ref) => {
|
|
16
18
|
const transformOnlyPropNames = ['enabled', 'axis', 'mode', 'translationSnap', 'rotationSnap', 'scaleSnap', 'space', 'size', 'showX', 'showY', 'showZ'];
|
|
@@ -19,7 +21,9 @@ const TransformControls = /*#__PURE__*/React.forwardRef(({
|
|
|
19
21
|
...rest
|
|
20
22
|
} = props;
|
|
21
23
|
const transformProps = pick(rest, transformOnlyPropNames);
|
|
22
|
-
const objectProps = omit(rest, transformOnlyPropNames);
|
|
24
|
+
const objectProps = omit(rest, transformOnlyPropNames); // @ts-expect-error new in @react-three/fiber@7.0.5
|
|
25
|
+
|
|
26
|
+
const defaultControls = useThree(state => state.controls);
|
|
23
27
|
const gl = useThree(({
|
|
24
28
|
gl
|
|
25
29
|
}) => gl);
|
|
@@ -32,7 +36,17 @@ const TransformControls = /*#__PURE__*/React.forwardRef(({
|
|
|
32
36
|
const explCamera = camera || defaultCamera;
|
|
33
37
|
const [controls] = React.useState(() => new TransformControls$1(explCamera, gl.domElement));
|
|
34
38
|
const group = React.useRef();
|
|
35
|
-
React.useLayoutEffect(() =>
|
|
39
|
+
React.useLayoutEffect(() => {
|
|
40
|
+
if (object) controls == null ? void 0 : controls.attach(object instanceof THREE.Object3D ? object : object.current);else controls == null ? void 0 : controls.attach(group.current);
|
|
41
|
+
}, [object, children, controls]);
|
|
42
|
+
React.useEffect(() => {
|
|
43
|
+
if (defaultControls) {
|
|
44
|
+
const callback = event => defaultControls.enabled = !event.value;
|
|
45
|
+
|
|
46
|
+
controls.addEventListener('dragging-changed', callback);
|
|
47
|
+
return () => controls.removeEventListener('dragging-changed', callback);
|
|
48
|
+
}
|
|
49
|
+
}, [controls, defaultControls]);
|
|
36
50
|
React.useEffect(() => {
|
|
37
51
|
const callback = e => {
|
|
38
52
|
invalidate();
|