@react-three/drei 9.120.3 → 9.120.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.
@@ -49,6 +49,7 @@ const ArcballControls = /* @__PURE__ */forwardRef(({
49
49
  useEffect(() => {
50
50
  if (makeDefault) {
51
51
  const old = get().controls;
52
+ // @ts-ignore https://github.com/three-types/three-ts-types/pull/1398
52
53
  set({
53
54
  controls
54
55
  });
@@ -33,6 +33,7 @@ const DeviceOrientationControls = /* @__PURE__ */React.forwardRef((props, ref) =
33
33
  React.useEffect(() => {
34
34
  if (makeDefault) {
35
35
  const old = get().controls;
36
+ // @ts-ignore https://github.com/three-types/three-ts-types/pull/1398
36
37
  set({
37
38
  controls
38
39
  });
@@ -35,6 +35,7 @@ const FlyControls = /* @__PURE__ */React.forwardRef(({
35
35
  React.useEffect(() => {
36
36
  if (makeDefault) {
37
37
  const old = get().controls;
38
+ // @ts-ignore https://github.com/three-types/three-ts-types/pull/1398
38
39
  set({
39
40
  controls
40
41
  });
@@ -43,6 +43,7 @@ const MapControls = /* @__PURE__ */React.forwardRef((props = {
43
43
  React.useEffect(() => {
44
44
  if (makeDefault) {
45
45
  const old = get().controls;
46
+ // @ts-ignore https://github.com/three-types/three-ts-types/pull/1398
46
47
  set({
47
48
  controls
48
49
  });
@@ -1,12 +1,11 @@
1
1
  import { ReactThreeFiber } from '@react-three/fiber';
2
- import type { Camera, Event } from 'three';
2
+ import { Camera, Event } from 'three';
3
3
  import { OrbitControls as OrbitControlsImpl } from 'three-stdlib';
4
4
  import { ForwardRefComponent } from '../helpers/ts-utils';
5
- export type OrbitControlsChangeEvent = Event & {
6
- target: EventTarget & {
7
- object: Camera;
8
- };
9
- };
5
+ type ExtractCallback<T, E extends string> = T extends {
6
+ addEventListener(event: E, callback: infer C): void;
7
+ } ? C : never;
8
+ export type OrbitControlsChangeEvent = Parameters<ExtractCallback<OrbitControlsImpl, 'change'>>[0];
10
9
  export type OrbitControlsProps = Omit<ReactThreeFiber.Overwrite<ReactThreeFiber.Object3DNode<OrbitControlsImpl, typeof OrbitControlsImpl>, {
11
10
  camera?: Camera;
12
11
  domElement?: HTMLElement;
@@ -20,3 +19,4 @@ export type OrbitControlsProps = Omit<ReactThreeFiber.Overwrite<ReactThreeFiber.
20
19
  keyEvents?: boolean | HTMLElement;
21
20
  }>, 'ref'>;
22
21
  export declare const OrbitControls: ForwardRefComponent<OrbitControlsProps, OrbitControlsImpl>;
22
+ export {};
@@ -60,6 +60,7 @@ const OrbitControls = /* @__PURE__ */React.forwardRef(({
60
60
  React.useEffect(() => {
61
61
  if (makeDefault) {
62
62
  const old = get().controls;
63
+ // @ts-ignore https://github.com/three-types/three-ts-types/pull/1398
63
64
  set({
64
65
  controls
65
66
  });
@@ -71,6 +71,7 @@ const PointerLockControls = /* @__PURE__ */React.forwardRef(({
71
71
  React.useEffect(() => {
72
72
  if (makeDefault) {
73
73
  const old = get().controls;
74
+ // @ts-ignore https://github.com/three-types/three-ts-types/pull/1398
74
75
  set({
75
76
  controls
76
77
  });
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),o=require("@react-three/fiber"),i=require("./shaderMaterial.cjs.js"),n=require("../helpers/constants.cjs.js");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(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)}var l=a(e),c=s(t),u=s(r);const f=i.shaderMaterial({time:0,pixelRatio:1}," uniform float pixelRatio;\n uniform float time;\n attribute float size; \n attribute float speed; \n attribute float opacity;\n attribute vec3 noise;\n attribute vec3 color;\n varying vec3 vColor;\n varying float vOpacity;\n void main() {\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;\n modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;\n modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;\n vec4 viewPosition = viewMatrix * modelPosition;\n vec4 projectionPostion = projectionMatrix * viewPosition;\n gl_Position = projectionPostion;\n gl_PointSize = size * 25. * pixelRatio;\n gl_PointSize *= (1.0 / - viewPosition.z);\n vColor = color;\n vOpacity = opacity;\n }",` varying vec3 vColor;\n varying float vOpacity;\n void main() {\n float distanceToCenter = distance(gl_PointCoord, vec2(0.5));\n float strength = 0.05 / distanceToCenter - 0.1;\n gl_FragColor = vec4(vColor, strength * vOpacity);\n #include <tonemapping_fragment>\n #include <${n.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }`),m=e=>e&&e.constructor===Float32Array,p=e=>e instanceof u.Vector2||e instanceof u.Vector3||e instanceof u.Vector4,d=e=>Array.isArray(e)?e:p(e)?e.toArray():[e,e,e];function v(e,t,r){return c.useMemo((()=>{if(void 0!==t){if(m(t))return t;if(t instanceof u.Color){const r=Array.from({length:3*e},(()=>{return[(e=t).r,e.g,e.b];var e})).flat();return Float32Array.from(r)}if(p(t)||Array.isArray(t)){const r=Array.from({length:3*e},(()=>d(t))).flat();return Float32Array.from(r)}return Float32Array.from({length:e},(()=>t))}return Float32Array.from({length:e},r)}),[t])}const b=c.forwardRef((({noise:e=1,count:t=100,speed:r=1,opacity:i=1,scale:n=1,size:a,color:s,children:p,...b},y)=>{c.useMemo((()=>o.extend({SparklesImplMaterial:f})),[]);const g=c.useRef(null),h=o.useThree((e=>e.viewport.dpr)),A=d(n),P=c.useMemo((()=>Float32Array.from(Array.from({length:t},(()=>A.map(u.MathUtils.randFloatSpread))).flat())),[t,...A]),x=v(t,a,Math.random),j=v(t,i),M=v(t,r),O=v(3*t,e),_=v(void 0===s?3*t:t,m(s)?s:new u.Color(s),(()=>1));return o.useFrame((e=>{g.current&&g.current.material&&(g.current.material.time=e.clock.elapsedTime)})),c.useImperativeHandle(y,(()=>g.current),[]),c.createElement("points",l.default({key:`particle-${t}-${JSON.stringify(n)}`},b,{ref:g}),c.createElement("bufferGeometry",null,c.createElement("bufferAttribute",{attach:"attributes-position",args:[P,3]}),c.createElement("bufferAttribute",{attach:"attributes-size",args:[x,1]}),c.createElement("bufferAttribute",{attach:"attributes-opacity",args:[j,1]}),c.createElement("bufferAttribute",{attach:"attributes-speed",args:[M,1]}),c.createElement("bufferAttribute",{attach:"attributes-color",args:[_,3]}),c.createElement("bufferAttribute",{attach:"attributes-noise",args:[O,3]})),p||c.createElement("sparklesImplMaterial",{transparent:!0,pixelRatio:h,depthWrite:!1}))}));exports.Sparkles=b;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),i=require("@react-three/fiber"),o=require("../helpers/constants.cjs.js");function n(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 i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var s=n(e),l=a(t),c=a(r);class u extends c.ShaderMaterial{constructor(){super({uniforms:{time:{value:0},pixelRatio:{value:1}},vertexShader:"\n uniform float pixelRatio;\n uniform float time;\n attribute float size; \n attribute float speed; \n attribute float opacity;\n attribute vec3 noise;\n attribute vec3 color;\n varying vec3 vColor;\n varying float vOpacity;\n\n void main() {\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;\n modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;\n modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;\n vec4 viewPosition = viewMatrix * modelPosition;\n vec4 projectionPostion = projectionMatrix * viewPosition;\n gl_Position = projectionPostion;\n gl_PointSize = size * 25. * pixelRatio;\n gl_PointSize *= (1.0 / - viewPosition.z);\n vColor = color;\n vOpacity = opacity;\n }\n ",fragmentShader:`\n varying vec3 vColor;\n varying float vOpacity;\n void main() {\n float distanceToCenter = distance(gl_PointCoord, vec2(0.5));\n float strength = 0.05 / distanceToCenter - 0.1;\n gl_FragColor = vec4(vColor, strength * vOpacity);\n #include <tonemapping_fragment>\n #include <${o.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }\n `})}get time(){return this.uniforms.time.value}set time(e){this.uniforms.time.value=e}get pixelRatio(){return this.uniforms.pixelRatio.value}set pixelRatio(e){this.uniforms.pixelRatio.value=e}}const f=e=>e&&e.constructor===Float32Array,m=e=>e instanceof c.Vector2||e instanceof c.Vector3||e instanceof c.Vector4,p=e=>Array.isArray(e)?e:m(e)?e.toArray():[e,e,e];function d(e,t,r){return l.useMemo((()=>{if(void 0!==t){if(f(t))return t;if(t instanceof c.Color){const r=Array.from({length:3*e},(()=>{return[(e=t).r,e.g,e.b];var e})).flat();return Float32Array.from(r)}if(m(t)||Array.isArray(t)){const r=Array.from({length:3*e},(()=>p(t))).flat();return Float32Array.from(r)}return Float32Array.from({length:e},(()=>t))}return Float32Array.from({length:e},r)}),[t])}const v=l.forwardRef((({noise:e=1,count:t=100,speed:r=1,opacity:o=1,scale:n=1,size:a,color:m,children:v,...b},g)=>{l.useMemo((()=>i.extend({SparklesImplMaterial:u})),[]);const y=l.useRef(null),h=i.useThree((e=>e.viewport.dpr)),x=p(n),A=l.useMemo((()=>Float32Array.from(Array.from({length:t},(()=>x.map(c.MathUtils.randFloatSpread))).flat())),[t,...x]),P=d(t,a,Math.random),M=d(t,o),j=d(t,r),O=d(3*t,e),_=d(void 0===m?3*t:t,f(m)?m:new c.Color(m),(()=>1));return i.useFrame((e=>{y.current&&y.current.material&&(y.current.material.time=e.clock.elapsedTime)})),l.useImperativeHandle(g,(()=>y.current),[]),l.createElement("points",s.default({key:`particle-${t}-${JSON.stringify(n)}`},b,{ref:y}),l.createElement("bufferGeometry",null,l.createElement("bufferAttribute",{attach:"attributes-position",args:[A,3]}),l.createElement("bufferAttribute",{attach:"attributes-size",args:[P,1]}),l.createElement("bufferAttribute",{attach:"attributes-opacity",args:[M,1]}),l.createElement("bufferAttribute",{attach:"attributes-speed",args:[j,1]}),l.createElement("bufferAttribute",{attach:"attributes-color",args:[_,3]}),l.createElement("bufferAttribute",{attach:"attributes-noise",args:[O,3]})),v||l.createElement("sparklesImplMaterial",{transparent:!0,pixelRatio:h,depthWrite:!1}))}));exports.Sparkles=v;
@@ -1,5 +1,5 @@
1
1
  import * as THREE from 'three';
2
- import { PointsProps, Node } from '@react-three/fiber';
2
+ import { PointsProps, MaterialNode } from '@react-three/fiber';
3
3
  import { ForwardRefComponent } from '../helpers/ts-utils';
4
4
  interface Props {
5
5
  count?: number;
@@ -10,10 +10,17 @@ interface Props {
10
10
  scale?: number | [number, number, number] | THREE.Vector3;
11
11
  noise?: number | [number, number, number] | THREE.Vector3 | Float32Array;
12
12
  }
13
+ declare class SparklesImplMaterial extends THREE.ShaderMaterial {
14
+ constructor();
15
+ get time(): number;
16
+ set time(value: number);
17
+ get pixelRatio(): number;
18
+ set pixelRatio(value: number);
19
+ }
13
20
  declare global {
14
21
  namespace JSX {
15
22
  interface IntrinsicElements {
16
- sparklesImplMaterial: Node<any, any>;
23
+ sparklesImplMaterial: MaterialNode<SparklesImplMaterial, typeof SparklesImplMaterial>;
17
24
  }
18
25
  }
19
26
  }
package/core/Sparkles.js CHANGED
@@ -2,42 +2,70 @@ import _extends from '@babel/runtime/helpers/esm/extends';
2
2
  import * as React from 'react';
3
3
  import * as THREE from 'three';
4
4
  import { extend, useThree, useFrame } from '@react-three/fiber';
5
- import { shaderMaterial } from './shaderMaterial.js';
6
5
  import { version } from '../helpers/constants.js';
7
6
 
8
- const SparklesImplMaterial = /* @__PURE__ */shaderMaterial({
9
- time: 0,
10
- pixelRatio: 1
11
- }, ` uniform float pixelRatio;
12
- uniform float time;
13
- attribute float size;
14
- attribute float speed;
15
- attribute float opacity;
16
- attribute vec3 noise;
17
- attribute vec3 color;
18
- varying vec3 vColor;
19
- varying float vOpacity;
20
- void main() {
21
- vec4 modelPosition = modelMatrix * vec4(position, 1.0);
22
- modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;
23
- modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;
24
- modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;
25
- vec4 viewPosition = viewMatrix * modelPosition;
26
- vec4 projectionPostion = projectionMatrix * viewPosition;
27
- gl_Position = projectionPostion;
28
- gl_PointSize = size * 25. * pixelRatio;
29
- gl_PointSize *= (1.0 / - viewPosition.z);
30
- vColor = color;
31
- vOpacity = opacity;
32
- }`, ` varying vec3 vColor;
33
- varying float vOpacity;
34
- void main() {
35
- float distanceToCenter = distance(gl_PointCoord, vec2(0.5));
36
- float strength = 0.05 / distanceToCenter - 0.1;
37
- gl_FragColor = vec4(vColor, strength * vOpacity);
38
- #include <tonemapping_fragment>
39
- #include <${version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
40
- }`);
7
+ class SparklesImplMaterial extends THREE.ShaderMaterial {
8
+ constructor() {
9
+ super({
10
+ uniforms: {
11
+ time: {
12
+ value: 0
13
+ },
14
+ pixelRatio: {
15
+ value: 1
16
+ }
17
+ },
18
+ vertexShader: /* glsl */`
19
+ uniform float pixelRatio;
20
+ uniform float time;
21
+ attribute float size;
22
+ attribute float speed;
23
+ attribute float opacity;
24
+ attribute vec3 noise;
25
+ attribute vec3 color;
26
+ varying vec3 vColor;
27
+ varying float vOpacity;
28
+
29
+ void main() {
30
+ vec4 modelPosition = modelMatrix * vec4(position, 1.0);
31
+ modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2;
32
+ modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2;
33
+ modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2;
34
+ vec4 viewPosition = viewMatrix * modelPosition;
35
+ vec4 projectionPostion = projectionMatrix * viewPosition;
36
+ gl_Position = projectionPostion;
37
+ gl_PointSize = size * 25. * pixelRatio;
38
+ gl_PointSize *= (1.0 / - viewPosition.z);
39
+ vColor = color;
40
+ vOpacity = opacity;
41
+ }
42
+ `,
43
+ fragmentShader: /* glsl */`
44
+ varying vec3 vColor;
45
+ varying float vOpacity;
46
+ void main() {
47
+ float distanceToCenter = distance(gl_PointCoord, vec2(0.5));
48
+ float strength = 0.05 / distanceToCenter - 0.1;
49
+ gl_FragColor = vec4(vColor, strength * vOpacity);
50
+ #include <tonemapping_fragment>
51
+ #include <${version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
52
+ }
53
+ `
54
+ });
55
+ }
56
+ get time() {
57
+ return this.uniforms.time.value;
58
+ }
59
+ set time(value) {
60
+ this.uniforms.time.value = value;
61
+ }
62
+ get pixelRatio() {
63
+ return this.uniforms.pixelRatio.value;
64
+ }
65
+ set pixelRatio(value) {
66
+ this.uniforms.pixelRatio.value = value;
67
+ }
68
+ }
41
69
  const isFloat32Array = def => def && def.constructor === Float32Array;
42
70
  const expandColor = v => [v.r, v.g, v.b];
43
71
  const isVector = v => v instanceof THREE.Vector2 || v instanceof THREE.Vector3 || v instanceof THREE.Vector4;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@react-three/fiber"),t=require("react"),r=require("stats-gl");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(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)}var n=l(t),u=o(r);const s=n.forwardRef((({className:t,parent:r,id:o,clearStatsGlStyle:l,...s},a)=>{const c=e.useThree((e=>e.gl)),d=n.useMemo((()=>{const e=new u.default({...s});return e.init(c),e}),[c]);return n.useImperativeHandle(a,(()=>d.dom)),n.useEffect((()=>{if(d){const n=r&&r.current||document.body;null==n||n.appendChild(d.dom),d.dom.querySelectorAll("canvas").forEach((e=>{e.style.removeProperty("position")})),o&&(d.dom.id=o),l&&d.dom.removeAttribute("style"),d.dom.removeAttribute("style");const u=(null!=t?t:"").split(" ").filter((e=>e));u.length&&d.dom.classList.add(...u);const s=e.addAfterEffect((()=>d.update()));return()=>{u.length&&d.dom.classList.remove(...u),null==n||n.removeChild(d.dom),s()}}}),[r,d,t,o,l]),null}));s.displayName="StatsGl",exports.StatsGl=s;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@react-three/fiber"),t=require("react"),r=require("stats-gl");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(r){if("default"!==r){var l=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,l.get?l:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var o=n(t),u=l(r);const s=o.forwardRef((({className:t,parent:r,id:l,clearStatsGlStyle:n,...s},a)=>{const c=e.useThree((e=>e.gl)),d=o.useMemo((()=>{const e=new u.default({...s});return e.init(c),e}),[c]);return o.useImperativeHandle(a,(()=>d.domElement),[d]),o.useEffect((()=>{if(d){const o=r&&r.current||document.body;null==o||o.appendChild(d.domElement),d.domElement.querySelectorAll("canvas").forEach((e=>{e.style.removeProperty("position")})),l&&(d.domElement.id=l),n&&d.domElement.removeAttribute("style"),d.domElement.removeAttribute("style");const u=(null!=t?t:"").split(" ").filter((e=>e));u.length&&d.domElement.classList.add(...u);const s=e.addAfterEffect((()=>d.update()));return()=>{u.length&&d.domElement.classList.remove(...u),null==o||o.removeChild(d.domElement),s()}}}),[r,d,t,l,n]),null}));s.displayName="StatsGl",exports.StatsGl=s;
package/core/StatsGl.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { ForwardRefComponent } from '../helpers/ts-utils';
2
2
  import * as React from 'react';
3
3
  import Stats from 'stats-gl';
4
- type Props = Partial<Stats> & {
4
+ type StatsOptions = ConstructorParameters<typeof Stats>[0];
5
+ type Props = Partial<StatsOptions> & {
5
6
  id?: string;
6
7
  clearStatsGlStyle?: boolean;
7
8
  showPanel?: number;
package/core/StatsGl.js CHANGED
@@ -17,23 +17,23 @@ const StatsGl = /* @__PURE__ */React.forwardRef(({
17
17
  stats.init(gl);
18
18
  return stats;
19
19
  }, [gl]);
20
- React.useImperativeHandle(fref, () => stats.dom);
20
+ React.useImperativeHandle(fref, () => stats.domElement, [stats]);
21
21
  React.useEffect(() => {
22
22
  if (stats) {
23
23
  const node = parent && parent.current || document.body;
24
- node == null || node.appendChild(stats.dom);
25
- stats.dom.querySelectorAll('canvas').forEach(canvas => {
24
+ node == null || node.appendChild(stats.domElement);
25
+ stats.domElement.querySelectorAll('canvas').forEach(canvas => {
26
26
  canvas.style.removeProperty('position');
27
27
  });
28
- if (id) stats.dom.id = id;
29
- if (clearStatsGlStyle) stats.dom.removeAttribute('style');
30
- stats.dom.removeAttribute('style');
28
+ if (id) stats.domElement.id = id;
29
+ if (clearStatsGlStyle) stats.domElement.removeAttribute('style');
30
+ stats.domElement.removeAttribute('style');
31
31
  const classNames = (className !== null && className !== void 0 ? className : '').split(' ').filter(cls => cls);
32
- if (classNames.length) stats.dom.classList.add(...classNames);
32
+ if (classNames.length) stats.domElement.classList.add(...classNames);
33
33
  const end = addAfterEffect(() => stats.update());
34
34
  return () => {
35
- if (classNames.length) stats.dom.classList.remove(...classNames);
36
- node == null || node.removeChild(stats.dom);
35
+ if (classNames.length) stats.domElement.classList.remove(...classNames);
36
+ node == null || node.removeChild(stats.domElement);
37
37
  end();
38
38
  };
39
39
  }
@@ -54,6 +54,7 @@ const TrackballControls = /* @__PURE__ */React.forwardRef(({
54
54
  React.useEffect(() => {
55
55
  if (makeDefault) {
56
56
  const old = get().controls;
57
+ // @ts-ignore https://github.com/three-types/three-ts-types/pull/1398
57
58
  set({
58
59
  controls
59
60
  });