@react-three/drei 7.18.0 → 7.19.3

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.
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("three"),r=require("@react-three/fiber");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 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)}var o=a(e),n=a(t);const c=e=>e&&e.isOrthographicCamera,i=o.createContext(null);exports.Bounds=function({children:e,damping:t=6,fit:a,clip:s,margin:m=1.2,eps:u=.01}){const f=o.useRef(null),x=r.useThree((e=>e.camera)),p=r.useThree((e=>e.controls)),l=r.useThree((e=>e.invalidate));function z(e,t){return Math.abs(e.x-t.x)<u&&Math.abs(e.y-t.y)<u&&Math.abs(e.z-t.z)<u}function h(e,t,r,a){e.x=n.MathUtils.damp(e.x,t.x,r,a),e.y=n.MathUtils.damp(e.y,t.y,r,a),e.z=n.MathUtils.damp(e.z,t.z,r,a)}const[y]=o.useState((()=>({animating:!1,focus:new n.Vector3,camera:new n.Vector3,zoom:1}))),[d]=o.useState((()=>({focus:new n.Vector3,camera:new n.Vector3,zoom:1}))),M=o.useMemo((()=>{const e=new n.Box3;function r(){const t=e.getSize(new n.Vector3),r=e.getCenter(new n.Vector3),a=Math.max(t.x,t.y,t.z),o=c(x)?4*a:a/(2*Math.atan(Math.PI*x.fov/360)),i=c(x)?4*a:o/x.aspect;return{size:t,center:r,distance:m*Math.max(o,i)}}return{getSize:r,refresh(t){return e.setFromObject(t||f.current),this},clip(){const{distance:e}=r();return p&&(p.maxDistance=10*e),x.near=e/100,x.far=100*e,x.updateProjectionMatrix(),p&&p.update(),this},fit(){y.camera.copy(x.position),p&&y.focus.copy(p.target);const{center:a,distance:o}=r(),i=a.clone().sub(x.position).normalize().multiplyScalar(o);if(d.camera.copy(a).sub(i),d.focus.copy(a),c(x)){y.zoom=x.zoom;let r=0,o=0;const c=[new n.Vector3(e.min.x,e.min.y,e.min.z),new n.Vector3(e.min.x,e.max.y,e.min.z),new n.Vector3(e.min.x,e.min.y,e.max.z),new n.Vector3(e.min.x,e.max.y,e.max.z),new n.Vector3(e.max.x,e.max.y,e.max.z),new n.Vector3(e.max.x,e.max.y,e.min.z),new n.Vector3(e.max.x,e.min.y,e.max.z),new n.Vector3(e.max.x,e.min.y,e.min.z)];a.applyMatrix4(x.matrixWorldInverse);for(const e of c)e.applyMatrix4(x.matrixWorldInverse),r=Math.max(r,Math.abs(e.y-a.y)),o=Math.max(o,Math.abs(e.x-a.x));r*=2,o*=2;const i=(x.top-x.bottom)/r,s=(x.right-x.left)/o;d.zoom=Math.min(i,s)/m,t||(x.zoom=d.zoom,x.updateProjectionMatrix())}return t?y.animating=!0:(x.position.copy(d.camera),x.lookAt(d.focus),p&&(p.target.copy(d.focus),p.update()),l()),this}}}),[x,p,m,t,l]);return o.useLayoutEffect((()=>{if(M.refresh(),a&&M.fit(),s&&M.clip(),p){const e=e=>y.animating=!1;return p.addEventListener("start",e),()=>p.removeEventListener("start",e)}}),[M,a,p]),r.useFrame(((e,r)=>{if(y.animating){if(h(y.focus,d.focus,t,r),h(y.camera,d.camera,t,r),y.zoom=n.MathUtils.damp(y.zoom,d.zoom,t,r),x.position.copy(y.camera),c(x)&&(x.zoom=y.zoom,x.updateProjectionMatrix()),p?(p.target.copy(y.focus),p.update()):x.lookAt(y.focus),l(),c(x)&&!(Math.abs(y.zoom-d.zoom)<u))return;if(!c(x)&&!z(y.camera,d.camera))return;if(p&&!z(y.focus,d.focus))return;y.animating=!1}})),o.createElement("group",{ref:f},o.createElement(i.Provider,{value:M},e))},exports.useBounds=function(){return o.useContext(i)};
@@ -0,0 +1,21 @@
1
+ /// <reference types="react" />
2
+ import * as THREE from 'three';
3
+ export declare type BoundsApi = {
4
+ getSize: () => {
5
+ size: THREE.Vector3;
6
+ center: THREE.Vector3;
7
+ distance: number;
8
+ };
9
+ refresh(object?: THREE.Object3D): any;
10
+ clip(): any;
11
+ fit(): any;
12
+ };
13
+ export declare type BoundsProps = JSX.IntrinsicElements['group'] & {
14
+ damping?: number;
15
+ fit?: boolean;
16
+ clip?: boolean;
17
+ margin?: number;
18
+ eps?: number;
19
+ };
20
+ export declare function Bounds({ children, damping, fit, clip, margin, eps }: BoundsProps): JSX.Element;
21
+ export declare function useBounds(): BoundsApi;
package/core/Bounds.js ADDED
@@ -0,0 +1,185 @@
1
+ import * as React from 'react';
2
+ import * as THREE from 'three';
3
+ import { useThree, useFrame } from '@react-three/fiber';
4
+
5
+ const isOrthographic = def => def && def.isOrthographicCamera;
6
+
7
+ const context = /*#__PURE__*/React.createContext(null);
8
+ function Bounds({
9
+ children,
10
+ damping = 6,
11
+ fit,
12
+ clip,
13
+ margin = 1.2,
14
+ eps = 0.01
15
+ }) {
16
+ const ref = React.useRef(null);
17
+ const camera = useThree(state => state.camera); // @ts-expect-error new in @react-three/fiber@7.0.5
18
+
19
+ const controls = useThree(state => state.controls);
20
+ const invalidate = useThree(state => state.invalidate);
21
+
22
+ function equals(a, b) {
23
+ return Math.abs(a.x - b.x) < eps && Math.abs(a.y - b.y) < eps && Math.abs(a.z - b.z) < eps;
24
+ }
25
+
26
+ function damp(v, t, lambda, delta) {
27
+ v.x = THREE.MathUtils.damp(v.x, t.x, lambda, delta);
28
+ v.y = THREE.MathUtils.damp(v.y, t.y, lambda, delta);
29
+ v.z = THREE.MathUtils.damp(v.z, t.z, lambda, delta);
30
+ }
31
+
32
+ const [current] = React.useState(() => ({
33
+ animating: false,
34
+ focus: new THREE.Vector3(),
35
+ camera: new THREE.Vector3(),
36
+ zoom: 1
37
+ }));
38
+ const [goal] = React.useState(() => ({
39
+ focus: new THREE.Vector3(),
40
+ camera: new THREE.Vector3(),
41
+ zoom: 1
42
+ }));
43
+ const api = React.useMemo(() => {
44
+ const box = new THREE.Box3();
45
+
46
+ function getSize() {
47
+ const size = box.getSize(new THREE.Vector3());
48
+ const center = box.getCenter(new THREE.Vector3());
49
+ const maxSize = Math.max(size.x, size.y, size.z);
50
+ const fitHeightDistance = isOrthographic(camera) ? maxSize * 4 : maxSize / (2 * Math.atan(Math.PI * camera.fov / 360));
51
+ const fitWidthDistance = isOrthographic(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;
52
+ const distance = margin * Math.max(fitHeightDistance, fitWidthDistance);
53
+ return {
54
+ size,
55
+ center,
56
+ distance
57
+ };
58
+ }
59
+
60
+ return {
61
+ getSize,
62
+
63
+ refresh(object) {
64
+ box.setFromObject(object || ref.current);
65
+ return this;
66
+ },
67
+
68
+ clip() {
69
+ const {
70
+ distance
71
+ } = getSize();
72
+ if (controls) controls.maxDistance = distance * 10;
73
+ camera.near = distance / 100;
74
+ camera.far = distance * 100;
75
+ camera.updateProjectionMatrix();
76
+ if (controls) controls.update();
77
+ return this;
78
+ },
79
+
80
+ fit() {
81
+ current.camera.copy(camera.position);
82
+ if (controls) current.focus.copy(controls.target);
83
+ const {
84
+ center,
85
+ distance
86
+ } = getSize();
87
+ const direction = center.clone().sub(camera.position).normalize().multiplyScalar(distance);
88
+ goal.camera.copy(center).sub(direction);
89
+ goal.focus.copy(center);
90
+
91
+ if (isOrthographic(camera)) {
92
+ current.zoom = camera.zoom;
93
+ let maxHeight = 0,
94
+ maxWidth = 0;
95
+ const vertices = [new THREE.Vector3(box.min.x, box.min.y, box.min.z), new THREE.Vector3(box.min.x, box.max.y, box.min.z), new THREE.Vector3(box.min.x, box.min.y, box.max.z), new THREE.Vector3(box.min.x, box.max.y, box.max.z), new THREE.Vector3(box.max.x, box.max.y, box.max.z), new THREE.Vector3(box.max.x, box.max.y, box.min.z), new THREE.Vector3(box.max.x, box.min.y, box.max.z), new THREE.Vector3(box.max.x, box.min.y, box.min.z)]; // Transform the center and each corner to camera space
96
+
97
+ center.applyMatrix4(camera.matrixWorldInverse);
98
+
99
+ for (const v of vertices) {
100
+ v.applyMatrix4(camera.matrixWorldInverse);
101
+ maxHeight = Math.max(maxHeight, Math.abs(v.y - center.y));
102
+ maxWidth = Math.max(maxWidth, Math.abs(v.x - center.x));
103
+ }
104
+
105
+ maxHeight *= 2;
106
+ maxWidth *= 2;
107
+ const zoomForHeight = (camera.top - camera.bottom) / maxHeight;
108
+ const zoomForWidth = (camera.right - camera.left) / maxWidth;
109
+ goal.zoom = Math.min(zoomForHeight, zoomForWidth) / margin;
110
+
111
+ if (!damping) {
112
+ camera.zoom = goal.zoom;
113
+ camera.updateProjectionMatrix();
114
+ }
115
+ }
116
+
117
+ if (damping) {
118
+ current.animating = true;
119
+ } else {
120
+ camera.position.copy(goal.camera);
121
+ camera.lookAt(goal.focus);
122
+
123
+ if (controls) {
124
+ controls.target.copy(goal.focus);
125
+ controls.update();
126
+ }
127
+
128
+ invalidate();
129
+ }
130
+
131
+ return this;
132
+ }
133
+
134
+ };
135
+ }, [camera, controls, margin, damping, invalidate]);
136
+ React.useLayoutEffect(() => {
137
+ api.refresh();
138
+ if (fit) api.fit();
139
+ if (clip) api.clip();
140
+
141
+ if (controls) {
142
+ // Try to prevent drag hijacking
143
+ const callback = event => current.animating = false;
144
+
145
+ controls.addEventListener('start', callback);
146
+ return () => controls.removeEventListener('start', callback);
147
+ }
148
+ }, [api, fit, controls]);
149
+ useFrame((state, delta) => {
150
+ if (current.animating) {
151
+ damp(current.focus, goal.focus, damping, delta);
152
+ damp(current.camera, goal.camera, damping, delta);
153
+ current.zoom = THREE.MathUtils.damp(current.zoom, goal.zoom, damping, delta);
154
+ camera.position.copy(current.camera);
155
+
156
+ if (isOrthographic(camera)) {
157
+ camera.zoom = current.zoom;
158
+ camera.updateProjectionMatrix();
159
+ }
160
+
161
+ if (!controls) {
162
+ camera.lookAt(current.focus);
163
+ } else {
164
+ controls.target.copy(current.focus);
165
+ controls.update();
166
+ }
167
+
168
+ invalidate();
169
+ if (isOrthographic(camera) && !(Math.abs(current.zoom - goal.zoom) < eps)) return;
170
+ if (!isOrthographic(camera) && !equals(current.camera, goal.camera)) return;
171
+ if (controls && !equals(current.focus, goal.focus)) return;
172
+ current.animating = false;
173
+ }
174
+ });
175
+ return /*#__PURE__*/React.createElement("group", {
176
+ ref: ref
177
+ }, /*#__PURE__*/React.createElement(context.Provider, {
178
+ value: api
179
+ }, children));
180
+ }
181
+ function useBounds() {
182
+ return React.useContext(context);
183
+ }
184
+
185
+ export { Bounds, useBounds };
@@ -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 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]})),{}))))};
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("react-composer"),c=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(u);let p,y;const x=f.createContext(null),b=new l.Matrix4,g=new l.Matrix4,h=new l.Matrix4,M=new l.Color,v=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:c.Position})),[]);const u=f.useRef(),{subscribe:o}=f.useContext(e||x);return f.useLayoutEffect((()=>o(u)),[]),f.createElement("position",s.default({ref:d.default([a,u])},r),t)})),E=f.forwardRef((({children:e,range:t,limit:r=1e3,frames:a=1/0,...u},c)=>{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(v,w,j),g.compose(v,w,j).premultiply(b),g.equals(h.fromArray(q,16*p))||(g.toArray(q,16*p),m.current.instanceMatrix.needsUpdate=!0),y.color.equals(M.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 u=null==(r=E[e.instanceId])?void 0:r.current;return null==u||null==(n=u.__r3f)||null==(a=n.handlers)?void 0:a[t]({...e,object:u})}})),{})}),[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([c,m]),args:[null,null,0]},C,u),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),a=(n?e:Object.values(e)).filter((e=>e.isMesh));return f.createElement(m.default,{components:a.map((({geometry:e,material:t})=>f.createElement(E,s.default({key:e.uuid,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
@@ -152,11 +152,13 @@ function Merged({
152
152
  ...props
153
153
  }) {
154
154
  const isArray = Array.isArray(meshes);
155
+ const array = (isArray ? meshes : Object.values(meshes)).filter(obj => obj.isMesh);
155
156
  return /*#__PURE__*/React.createElement(Composer, {
156
- components: (isArray ? meshes : Object.values(meshes)).map(({
157
+ components: array.map(({
157
158
  geometry,
158
159
  material
159
160
  }) => /*#__PURE__*/React.createElement(Instances, _extends({
161
+ key: geometry.uuid,
160
162
  geometry: geometry,
161
163
  material: material
162
164
  }, props)))
package/core/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./Cloud.cjs.js"),s=require("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./Line.cjs.js"),i=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),a=require("./Environment.cjs.js"),c=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),p=require("./Image.cjs.js"),n=require("./OrthographicCamera.cjs.js"),l=require("./PerspectiveCamera.cjs.js"),x=require("./CameraShake.cjs.js"),q=require("./CubeCamera.cjs.js"),d=require("./DeviceOrientationControls.cjs.js"),C=require("./FlyControls.cjs.js"),h=require("./MapControls.cjs.js"),m=require("./OrbitControls.cjs.js"),b=require("./TrackballControls.cjs.js"),S=require("./ArcballControls.cjs.js"),P=require("./TransformControls.cjs.js"),T=require("./PointerLockControls.cjs.js"),B=require("./FirstPersonControls.cjs.js"),M=require("./GizmoHelper.cjs.js"),f=require("./GizmoViewcube.cjs.js"),g=require("./GizmoViewport.cjs.js"),v=require("./useCubeTexture.cjs.js"),L=require("./useFBX.cjs.js"),A=require("./useGLTF.cjs.js"),G=require("./useProgress.cjs.js"),D=require("./useTexture.cjs.js"),w=require("./Reflector.cjs.js"),z=require("./Shadow.cjs.js"),k=require("./Stats.cjs.js"),F=require("./Center.cjs.js"),I=require("./DepthBuffer.cjs.js"),O=require("./useAspect.cjs.js"),E=require("./useCamera.cjs.js"),y=require("./useDetectGPU.cjs.js"),H=require("./useHelper.cjs.js"),R=require("./useBVH.cjs.js"),V=require("./useContextBridge.cjs.js"),Q=require("./useAnimations.cjs.js"),W=require("./useFBO.cjs.js"),N=require("./useIntersect.cjs.js"),U=require("./useSimplification.cjs.js"),X=require("./useTessellation.cjs.js"),K=require("./useEdgeSplit.cjs.js"),_=require("./CurveModifier.cjs.js"),J=require("./MeshDistortMaterial.cjs.js"),Y=require("./MeshWobbleMaterial.cjs.js"),Z=require("./PointMaterial.cjs.js"),$=require("./shaderMaterial.cjs.js"),ee=require("./Sky.cjs.js"),re=require("./softShadows.cjs.js"),se=require("./Stars.cjs.js"),te=require("./ContactShadows.cjs.js"),oe=require("./SpotLight.cjs.js"),ie=require("./shapes.cjs.js"),ue=require("./RoundedBox.cjs.js"),ae=require("./ScreenQuad.cjs.js"),ce=require("./useMatcapTexture.cjs.js"),je=require("./useNormalTexture.cjs.js"),pe=require("./Stage.cjs.js"),ne=require("./Points.cjs.js"),le=require("./Instances.cjs.js"),xe=require("./Detailed.cjs.js"),qe=require("./Preload.cjs.js"),de=require("./BakeShadows.cjs.js"),Ce=require("./meshBounds.cjs.js"),he=require("./AdaptiveDpr.cjs.js"),me=require("./AdaptiveEvents.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("../assets/cloud.base64.cjs.js"),require("three"),require("three-stdlib"),require("troika-three-text"),require("use-asset"),require("../helpers/environment-assets.cjs.js"),require("lodash.omit"),require("lodash.pick"),require("zustand"),require("../materials/MeshReflectorMaterial.cjs.js"),require("three/examples/js/libs/stats.min"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/SpotLightMaterial.cjs.js"),require("../helpers/matcap-assets.cjs.js"),require("../helpers/normal-assets.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.Cloud=r.Cloud,exports.QuadraticBezierLine=s.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.Line=o.Line,exports.PositionalAudio=i.PositionalAudio,exports.Text=u.Text,exports.Environment=a.Environment,exports.Effects=c.Effects,exports.isWebGL2Available=c.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.Image=p.Image,exports.OrthographicCamera=n.OrthographicCamera,exports.PerspectiveCamera=l.PerspectiveCamera,exports.CameraShake=x.CameraShake,exports.CubeCamera=q.CubeCamera,exports.DeviceOrientationControls=d.DeviceOrientationControls,exports.FlyControls=C.FlyControls,exports.MapControls=h.MapControls,exports.OrbitControls=m.OrbitControls,exports.TrackballControls=b.TrackballControls,exports.ArcballControls=S.ArcballControls,exports.TransformControls=P.TransformControls,exports.PointerLockControls=T.PointerLockControls,exports.FirstPersonControls=B.FirstPersonControls,exports.GizmoHelper=M.GizmoHelper,exports.useGizmoContext=M.useGizmoContext,exports.GizmoViewcube=f.GizmoViewcube,exports.GizmoViewport=g.GizmoViewport,exports.useCubeTexture=v.useCubeTexture,exports.useFBX=L.useFBX,exports.useGLTF=A.useGLTF,exports.useProgress=G.useProgress,exports.IsObject=D.IsObject,exports.useTexture=D.useTexture,exports.Reflector=w.Reflector,exports.Shadow=z.Shadow,exports.Stats=k.Stats,exports.Center=F.Center,exports.DepthBuffer=I.DepthBuffer,exports.useAspect=O.useAspect,exports.useCamera=E.useCamera,exports.useDetectGPU=y.useDetectGPU,exports.useHelper=H.useHelper,exports.useBVH=R.useBVH,exports.useContextBridge=V.useContextBridge,exports.useAnimations=Q.useAnimations,exports.useFBO=W.useFBO,exports.useIntersect=N.useIntersect,exports.useSimplification=U.useSimplification,exports.useTessellation=X.useTessellation,exports.useEdgeSplit=K.useEdgeSplit,exports.CurveModifier=_.CurveModifier,exports.MeshDistortMaterial=J.MeshDistortMaterial,exports.MeshWobbleMaterial=Y.MeshWobbleMaterial,exports.PointMaterial=Z.PointMaterial,exports.PointMaterialImpl=Z.PointMaterialImpl,exports.shaderMaterial=$.shaderMaterial,exports.Sky=ee.Sky,exports.calcPosFromAngles=ee.calcPosFromAngles,exports.softShadows=re.softShadows,exports.Stars=se.Stars,exports.ContactShadows=te.ContactShadows,exports.SpotLight=oe.SpotLight,exports.Box=ie.Box,exports.Circle=ie.Circle,exports.Cone=ie.Cone,exports.Cylinder=ie.Cylinder,exports.Dodecahedron=ie.Dodecahedron,exports.Extrude=ie.Extrude,exports.Icosahedron=ie.Icosahedron,exports.Lathe=ie.Lathe,exports.Octahedron=ie.Octahedron,exports.Parametric=ie.Parametric,exports.Plane=ie.Plane,exports.Polyhedron=ie.Polyhedron,exports.Ring=ie.Ring,exports.Sphere=ie.Sphere,exports.Tetrahedron=ie.Tetrahedron,exports.Torus=ie.Torus,exports.TorusKnot=ie.TorusKnot,exports.Tube=ie.Tube,exports.RoundedBox=ue.RoundedBox,exports.ScreenQuad=ae.ScreenQuad,exports.useMatcapTexture=ce.useMatcapTexture,exports.useNormalTexture=je.useNormalTexture,exports.Stage=pe.Stage,exports.Point=ne.Point,exports.Points=ne.Points,exports.Instance=le.Instance,exports.Instances=le.Instances,exports.Merged=le.Merged,exports.Detailed=xe.Detailed,exports.Preload=qe.Preload,exports.BakeShadows=de.BakeShadows,exports.meshBounds=Ce.meshBounds,exports.AdaptiveDpr=he.AdaptiveDpr,exports.AdaptiveEvents=me.AdaptiveEvents;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./Cloud.cjs.js"),s=require("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./Line.cjs.js"),i=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),a=require("./Environment.cjs.js"),c=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),p=require("./Image.cjs.js"),n=require("./OrthographicCamera.cjs.js"),l=require("./PerspectiveCamera.cjs.js"),x=require("./CameraShake.cjs.js"),q=require("./CubeCamera.cjs.js"),d=require("./DeviceOrientationControls.cjs.js"),C=require("./FlyControls.cjs.js"),h=require("./MapControls.cjs.js"),m=require("./OrbitControls.cjs.js"),b=require("./TrackballControls.cjs.js"),S=require("./ArcballControls.cjs.js"),P=require("./TransformControls.cjs.js"),B=require("./PointerLockControls.cjs.js"),T=require("./FirstPersonControls.cjs.js"),M=require("./GizmoHelper.cjs.js"),f=require("./GizmoViewcube.cjs.js"),g=require("./GizmoViewport.cjs.js"),v=require("./useCubeTexture.cjs.js"),L=require("./useFBX.cjs.js"),A=require("./useGLTF.cjs.js"),G=require("./useProgress.cjs.js"),D=require("./useTexture.cjs.js"),w=require("./Reflector.cjs.js"),z=require("./Shadow.cjs.js"),k=require("./Stats.cjs.js"),F=require("./Center.cjs.js"),I=require("./Bounds.cjs.js"),O=require("./DepthBuffer.cjs.js"),E=require("./useAspect.cjs.js"),y=require("./useCamera.cjs.js"),H=require("./useDetectGPU.cjs.js"),R=require("./useHelper.cjs.js"),V=require("./useBVH.cjs.js"),Q=require("./useContextBridge.cjs.js"),W=require("./useAnimations.cjs.js"),N=require("./useFBO.cjs.js"),U=require("./useIntersect.cjs.js"),X=require("./useSimplification.cjs.js"),K=require("./useTessellation.cjs.js"),_=require("./useEdgeSplit.cjs.js"),J=require("./CurveModifier.cjs.js"),Y=require("./MeshDistortMaterial.cjs.js"),Z=require("./MeshWobbleMaterial.cjs.js"),$=require("./PointMaterial.cjs.js"),ee=require("./shaderMaterial.cjs.js"),re=require("./Sky.cjs.js"),se=require("./softShadows.cjs.js"),te=require("./Stars.cjs.js"),oe=require("./ContactShadows.cjs.js"),ie=require("./SpotLight.cjs.js"),ue=require("./shapes.cjs.js"),ae=require("./RoundedBox.cjs.js"),ce=require("./ScreenQuad.cjs.js"),je=require("./useMatcapTexture.cjs.js"),pe=require("./useNormalTexture.cjs.js"),ne=require("./Stage.cjs.js"),le=require("./Points.cjs.js"),xe=require("./Instances.cjs.js"),qe=require("./Detailed.cjs.js"),de=require("./Preload.cjs.js"),Ce=require("./BakeShadows.cjs.js"),he=require("./meshBounds.cjs.js"),me=require("./AdaptiveDpr.cjs.js"),be=require("./AdaptiveEvents.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("../assets/cloud.base64.cjs.js"),require("three"),require("three-stdlib"),require("troika-three-text"),require("use-asset"),require("../helpers/environment-assets.cjs.js"),require("lodash.omit"),require("lodash.pick"),require("zustand"),require("../materials/MeshReflectorMaterial.cjs.js"),require("three/examples/js/libs/stats.min"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/SpotLightMaterial.cjs.js"),require("../helpers/matcap-assets.cjs.js"),require("../helpers/normal-assets.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.Cloud=r.Cloud,exports.QuadraticBezierLine=s.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.Line=o.Line,exports.PositionalAudio=i.PositionalAudio,exports.Text=u.Text,exports.Environment=a.Environment,exports.Effects=c.Effects,exports.isWebGL2Available=c.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.Image=p.Image,exports.OrthographicCamera=n.OrthographicCamera,exports.PerspectiveCamera=l.PerspectiveCamera,exports.CameraShake=x.CameraShake,exports.CubeCamera=q.CubeCamera,exports.DeviceOrientationControls=d.DeviceOrientationControls,exports.FlyControls=C.FlyControls,exports.MapControls=h.MapControls,exports.OrbitControls=m.OrbitControls,exports.TrackballControls=b.TrackballControls,exports.ArcballControls=S.ArcballControls,exports.TransformControls=P.TransformControls,exports.PointerLockControls=B.PointerLockControls,exports.FirstPersonControls=T.FirstPersonControls,exports.GizmoHelper=M.GizmoHelper,exports.useGizmoContext=M.useGizmoContext,exports.GizmoViewcube=f.GizmoViewcube,exports.GizmoViewport=g.GizmoViewport,exports.useCubeTexture=v.useCubeTexture,exports.useFBX=L.useFBX,exports.useGLTF=A.useGLTF,exports.useProgress=G.useProgress,exports.IsObject=D.IsObject,exports.useTexture=D.useTexture,exports.Reflector=w.Reflector,exports.Shadow=z.Shadow,exports.Stats=k.Stats,exports.Center=F.Center,exports.Bounds=I.Bounds,exports.useBounds=I.useBounds,exports.DepthBuffer=O.DepthBuffer,exports.useAspect=E.useAspect,exports.useCamera=y.useCamera,exports.useDetectGPU=H.useDetectGPU,exports.useHelper=R.useHelper,exports.useBVH=V.useBVH,exports.useContextBridge=Q.useContextBridge,exports.useAnimations=W.useAnimations,exports.useFBO=N.useFBO,exports.useIntersect=U.useIntersect,exports.useSimplification=X.useSimplification,exports.useTessellation=K.useTessellation,exports.useEdgeSplit=_.useEdgeSplit,exports.CurveModifier=J.CurveModifier,exports.MeshDistortMaterial=Y.MeshDistortMaterial,exports.MeshWobbleMaterial=Z.MeshWobbleMaterial,exports.PointMaterial=$.PointMaterial,exports.PointMaterialImpl=$.PointMaterialImpl,exports.shaderMaterial=ee.shaderMaterial,exports.Sky=re.Sky,exports.calcPosFromAngles=re.calcPosFromAngles,exports.softShadows=se.softShadows,exports.Stars=te.Stars,exports.ContactShadows=oe.ContactShadows,exports.SpotLight=ie.SpotLight,exports.Box=ue.Box,exports.Circle=ue.Circle,exports.Cone=ue.Cone,exports.Cylinder=ue.Cylinder,exports.Dodecahedron=ue.Dodecahedron,exports.Extrude=ue.Extrude,exports.Icosahedron=ue.Icosahedron,exports.Lathe=ue.Lathe,exports.Octahedron=ue.Octahedron,exports.Parametric=ue.Parametric,exports.Plane=ue.Plane,exports.Polyhedron=ue.Polyhedron,exports.Ring=ue.Ring,exports.Sphere=ue.Sphere,exports.Tetrahedron=ue.Tetrahedron,exports.Torus=ue.Torus,exports.TorusKnot=ue.TorusKnot,exports.Tube=ue.Tube,exports.RoundedBox=ae.RoundedBox,exports.ScreenQuad=ce.ScreenQuad,exports.useMatcapTexture=je.useMatcapTexture,exports.useNormalTexture=pe.useNormalTexture,exports.Stage=ne.Stage,exports.Point=le.Point,exports.Points=le.Points,exports.Instance=xe.Instance,exports.Instances=xe.Instances,exports.Merged=xe.Merged,exports.Detailed=qe.Detailed,exports.Preload=de.Preload,exports.BakeShadows=Ce.BakeShadows,exports.meshBounds=he.meshBounds,exports.AdaptiveDpr=me.AdaptiveDpr,exports.AdaptiveEvents=be.AdaptiveEvents;
package/core/index.d.ts CHANGED
@@ -34,6 +34,7 @@ export * from './Reflector';
34
34
  export * from './Shadow';
35
35
  export * from './Stats';
36
36
  export * from './Center';
37
+ export * from './Bounds';
37
38
  export * from './DepthBuffer';
38
39
  export * from './useAspect';
39
40
  export * from './useCamera';
package/core/index.js CHANGED
@@ -34,6 +34,7 @@ export { Reflector } from './Reflector.js';
34
34
  export { Shadow } from './Shadow.js';
35
35
  export { Stats } from './Stats.js';
36
36
  export { Center } from './Center.js';
37
+ export { Bounds, useBounds } from './Bounds.js';
37
38
  export { DepthBuffer } from './DepthBuffer.js';
38
39
  export { useAspect } from './useAspect.js';
39
40
  export { useCamera } from './useCamera.js';