@react-three/drei 7.16.8 → 7.18.0

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/Image.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),n=require("@react-three/fiber"),a=require("./shaderMaterial.cjs.js"),o=require("./useTexture.cjs.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var s=c(e),l=i(r),u=i(t);const v=a.shaderMaterial({color:new u.Color("white"),scale:[1,1],imageBounds:[1,1],map:null,zoom:1,grayscale:0},"\n varying vec2 vUv;\n void main() {\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);\n vUv = uv;\n }\n","\n // mostly from https://gist.github.com/statico/df64c5d167362ecf7b34fca0b1459a44\n varying vec2 vUv;\n uniform vec2 scale;\n uniform vec2 imageBounds;\n uniform vec3 color;\n uniform sampler2D map;\n uniform float zoom;\n uniform float grayscale;\n const vec3 luma = vec3(.299, 0.587, 0.114);\n vec4 toGrayscale(vec4 color, float intensity) {\n return vec4(mix(color.rgb, vec3(dot(color.rgb, luma)), intensity), color.a);\n }\n vec2 aspect(vec2 size) {\n return size / min(size.x, size.y);\n }\n void main() {\n vec2 s = aspect(scale);\n vec2 i = aspect(imageBounds);\n float rs = s.x / s.y;\n float ri = i.x / i.y;\n vec2 new = rs < ri ? vec2(i.x * s.y / i.y, s.y) : vec2(s.x, i.y * s.x / i.x);\n vec2 offset = (rs < ri ? vec2((new.x - s.x) / 2.0, 0.0) : vec2(0.0, (new.y - s.y) / 2.0)) / new;\n vec2 uv = vUv * s / new + offset;\n vec2 zUv = (uv - vec2(0.5, 0.5)) / zoom + vec2(0.5, 0.5);\n gl_FragColor = toGrayscale(texture2D(map, zUv) * vec4(color, 1.0), grayscale);\n }\n"),m=l.forwardRef((({color:e,segments:r=1,scale:t=1,zoom:a=1,grayscale:c=0,url:i,...u},m)=>{n.extend({ImageMaterial:v});const f=o.useTexture(i),g=Array.isArray(t)?[t[0],t[1]]:[t,t],y=[f.image.width,f.image.height];return l.createElement("mesh",s.default({ref:m,scale:t},u),l.createElement("planeGeometry",{args:[1,1,r,r]}),l.createElement("imageMaterial",{color:e,map:f,zoom:a,grayscale:c,scale:g,imageBounds:y}))}));exports.Image=m;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),n=require("three"),t=require("@react-three/fiber"),a=require("./shaderMaterial.cjs.js"),o=require("./useTexture.cjs.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,t.get?t:{enumerable:!0,get:function(){return e[n]}})}})),r.default=e,Object.freeze(r)}var s=c(e),l=i(r),u=i(n);const v=a.shaderMaterial({color:new u.Color("white"),scale:[1,1],imageBounds:[1,1],map:null,zoom:1,grayscale:0},"\n varying vec2 vUv;\n void main() {\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);\n vUv = uv;\n }\n","\n // mostly from https://gist.github.com/statico/df64c5d167362ecf7b34fca0b1459a44\n varying vec2 vUv;\n uniform vec2 scale;\n uniform vec2 imageBounds;\n uniform vec3 color;\n uniform sampler2D map;\n uniform float zoom;\n uniform float grayscale;\n const vec3 luma = vec3(.299, 0.587, 0.114);\n vec4 toGrayscale(vec4 color, float intensity) {\n return vec4(mix(color.rgb, vec3(dot(color.rgb, luma)), intensity), color.a);\n }\n vec2 aspect(vec2 size) {\n return size / min(size.x, size.y);\n }\n void main() {\n vec2 s = aspect(scale);\n vec2 i = aspect(imageBounds);\n float rs = s.x / s.y;\n float ri = i.x / i.y;\n vec2 new = rs < ri ? vec2(i.x * s.y / i.y, s.y) : vec2(s.x, i.y * s.x / i.x);\n vec2 offset = (rs < ri ? vec2((new.x - s.x) / 2.0, 0.0) : vec2(0.0, (new.y - s.y) / 2.0)) / new;\n vec2 uv = vUv * s / new + offset;\n vec2 zUv = (uv - vec2(0.5, 0.5)) / zoom + vec2(0.5, 0.5);\n gl_FragColor = toGrayscale(texture2D(map, zUv) * vec4(color, 1.0), grayscale);\n }\n"),m=l.forwardRef((({children:e,color:r,segments:n=1,scale:a=1,zoom:c=1,grayscale:i=0,url:u,...m},f)=>{t.extend({ImageMaterial:v});const g=o.useTexture(u),y=Array.isArray(a)?[a[0],a[1]]:[a,a],d=[g.image.width,g.image.height];return l.createElement("mesh",s.default({ref:f,scale:a},m),l.createElement("planeGeometry",{args:[1,1,n,n]}),l.createElement("imageMaterial",{color:r,map:g,zoom:c,grayscale:i,scale:y,imageBounds:d}),e)}));exports.Image=m;
package/core/Image.js CHANGED
@@ -51,6 +51,7 @@ const ImageMaterialImpl = shaderMaterial({
51
51
  }
52
52
  `);
53
53
  const Image = /*#__PURE__*/React.forwardRef(({
54
+ children,
54
55
  color,
55
56
  segments = 1,
56
57
  scale = 1,
@@ -77,7 +78,7 @@ const Image = /*#__PURE__*/React.forwardRef(({
77
78
  grayscale: grayscale,
78
79
  scale: planeBounds,
79
80
  imageBounds: imageBounds
80
- }));
81
+ }), children);
81
82
  });
82
83
 
83
84
  export { Image };
package/core/Stage.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("three"),r=require("@react-three/fiber"),n=require("./Environment.cjs.js"),i=require("./ContactShadows.cjs.js");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)}require("three-stdlib"),require("use-asset"),require("../helpers/environment-assets.cjs.js"),require("@babel/runtime/helpers/extends");var o=a(e),s=a(t);const u={rembrandt:{main:[1,2,1],fill:[-2,-.5,-2]},portrait:{main:[-1,2,.5],fill:[-1,.5,-1.5]},upfront:{main:[0,2,1],fill:[-1,.5,-1.5]},soft:{main:[-2,4,4],fill:[-1,.5,-1.5]}};exports.Stage=function({children:e,controls:t,shadows:a=!0,adjustCamera:c=!0,environment:l="city",contactShadow:h=!0,intensity:d=1,preset:f="rembrandt",shadowBias:m=0,contactShadowBlur:p=2,contactShadowOpacity:b=.5,...g}){const w=u[f],y=r.useThree((e=>e.camera)),j=r.useThree((e=>e.controls)),E=o.useRef(null),x=o.useRef(null),[{radius:v,width:S,height:q},O]=o.useState({radius:0,width:0,height:0});return o.useLayoutEffect((()=>{E.current.position.set(0,0,0),E.current.updateWorldMatrix(!0,!0);const e=(new s.Box3).setFromObject(x.current),t=new s.Vector3,r=new s.Sphere,n=e.max.y-e.min.y,i=e.max.x-e.min.x;e.getCenter(t),e.getBoundingSphere(r),O({radius:r.radius,width:i,height:n}),E.current.position.set(-t.x,-t.y+n/2,-t.z)}),[e]),o.useLayoutEffect((()=>{if(c){const e=v/(q>S?1.5:2.5);y.position.set(0,.5*v,2.5*v),y.near=.1,y.far=Math.max(5e3,4*v),y.lookAt(0,e,0);const r=j||(null==t?void 0:t.current);r&&(r.target.set(0,e,0),r.update())}}),[j,v,q,S,c]),o.createElement("group",g,o.createElement("group",{ref:E},o.createElement("group",{ref:x},e)),h&&o.createElement(i.ContactShadows,{"rotation-x":Math.PI/2,opacity:b,width:2*v,height:2*v,blur:p,far:v/2}),l&&o.createElement(n.Environment,{preset:l}),o.createElement("ambientLight",{intensity:d/3}),o.createElement("spotLight",{penumbra:1,position:[w.main[0]*v,w.main[1]*v,w.main[2]*v],intensity:2*d,castShadow:a,"shadow-bias":m}),o.createElement("pointLight",{position:[w.fill[0]*v,w.fill[1]*v,w.fill[2]*v],intensity:d}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),n=require("@react-three/fiber"),i=require("./Environment.cjs.js"),a=require("./ContactShadows.cjs.js");function o(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 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)}require("three-stdlib"),require("use-asset"),require("../helpers/environment-assets.cjs.js");var u=o(e),c=s(t),l=s(r);const f={rembrandt:{main:[1,2,1],fill:[-2,-.5,-2]},portrait:{main:[-1,2,.5],fill:[-1,.5,-1.5]},upfront:{main:[0,2,1],fill:[-1,.5,-1.5]},soft:{main:[-2,4,4],fill:[-1,.5,-1.5]}};exports.Stage=function({children:e,controls:t,shadows:r=!0,adjustCamera:o=!0,environment:s="city",intensity:d=1,preset:h="rembrandt",shadowBias:m=0,contactShadow:p={blur:2,opacity:.5,position:[0,0,0]},...b}){const g=f[h],y=n.useThree((e=>e.camera)),j=n.useThree((e=>e.controls)),w=c.useRef(null),E=c.useRef(null),[{radius:x,width:v,height:q},O]=c.useState({radius:0,width:0,height:0});return c.useLayoutEffect((()=>{w.current.position.set(0,0,0),w.current.updateWorldMatrix(!0,!0);const e=(new l.Box3).setFromObject(E.current),t=new l.Vector3,r=new l.Sphere,n=e.max.y-e.min.y,i=e.max.x-e.min.x;e.getCenter(t),e.getBoundingSphere(r),O({radius:r.radius,width:i,height:n}),w.current.position.set(-t.x,-t.y+n/2,-t.z)}),[e]),c.useLayoutEffect((()=>{if(o){const e=x/(q>v?1.5:2.5);y.position.set(0,.5*x,2.5*x),y.near=.1,y.far=Math.max(5e3,4*x),y.lookAt(0,e,0);const r=j||(null==t?void 0:t.current);r&&(r.target.set(0,e,0),r.update())}}),[j,x,q,v,o]),c.createElement("group",b,c.createElement("group",{ref:w},c.createElement("group",{ref:E},e)),p&&c.createElement(a.ContactShadows,u.default({"rotation-x":Math.PI/2,width:2*x,height:2*x,far:x/2},p)),s&&c.createElement(i.Environment,{preset:s}),c.createElement("ambientLight",{intensity:d/3}),c.createElement("spotLight",{penumbra:1,position:[g.main[0]*x,g.main[1]*x,g.main[2]*x],intensity:2*d,castShadow:r,"shadow-bias":m}),c.createElement("pointLight",{position:[g.fill[0]*x,g.fill[1]*x,g.fill[2]*x],intensity:d}))};
package/core/Stage.d.ts CHANGED
@@ -24,7 +24,6 @@ declare type ControlsProto = {
24
24
  target: THREE.Vector3;
25
25
  };
26
26
  declare type Props = JSX.IntrinsicElements['group'] & {
27
- contactShadow?: boolean;
28
27
  shadows?: boolean;
29
28
  adjustCamera?: boolean;
30
29
  environment?: PresetsType;
@@ -33,8 +32,11 @@ declare type Props = JSX.IntrinsicElements['group'] & {
33
32
  controls?: React.MutableRefObject<ControlsProto>;
34
33
  preset?: keyof typeof presets;
35
34
  shadowBias?: number;
36
- contactShadowBlur?: number;
37
- contactShadowOpacity?: number;
35
+ contactShadow?: {
36
+ blur: number;
37
+ opacity?: number;
38
+ position?: [x: number, y: number, z: number];
39
+ } | false;
38
40
  };
39
- export declare function Stage({ children, controls, shadows, adjustCamera, environment, contactShadow, intensity, preset, shadowBias, contactShadowBlur, contactShadowOpacity, ...props }: Props): JSX.Element;
41
+ export declare function Stage({ children, controls, shadows, adjustCamera, environment, intensity, preset, shadowBias, contactShadow, ...props }: Props): JSX.Element;
40
42
  export {};
package/core/Stage.js CHANGED
@@ -1,3 +1,4 @@
1
+ import _extends from '@babel/runtime/helpers/esm/extends';
1
2
  import * as React from 'react';
2
3
  import * as THREE from 'three';
3
4
  import { useThree } from '@react-three/fiber';
@@ -28,12 +29,14 @@ function Stage({
28
29
  shadows = true,
29
30
  adjustCamera = true,
30
31
  environment = 'city',
31
- contactShadow = true,
32
32
  intensity = 1,
33
33
  preset = 'rembrandt',
34
34
  shadowBias = 0,
35
- contactShadowBlur = 2,
36
- contactShadowOpacity = 0.5,
35
+ contactShadow = {
36
+ blur: 2,
37
+ opacity: 0.5,
38
+ position: [0, 0, 0]
39
+ },
37
40
  ...props
38
41
  }) {
39
42
  const config = presets[preset];
@@ -88,14 +91,12 @@ function Stage({
88
91
  ref: outer
89
92
  }, /*#__PURE__*/React.createElement("group", {
90
93
  ref: inner
91
- }, children)), contactShadow && /*#__PURE__*/React.createElement(ContactShadows, {
94
+ }, children)), contactShadow && /*#__PURE__*/React.createElement(ContactShadows, _extends({
92
95
  "rotation-x": Math.PI / 2,
93
- opacity: contactShadowOpacity,
94
96
  width: radius * 2,
95
97
  height: radius * 2,
96
- blur: contactShadowBlur,
97
98
  far: radius / 2
98
- }), environment && /*#__PURE__*/React.createElement(Environment, {
99
+ }, contactShadow)), environment && /*#__PURE__*/React.createElement(Environment, {
99
100
  preset: environment
100
101
  }), /*#__PURE__*/React.createElement("ambientLight", {
101
102
  intensity: intensity / 3
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"),a=require("./Text.cjs.js"),u=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"),O=require("./DepthBuffer.cjs.js"),E=require("./useAspect.cjs.js"),I=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("./useSimplification.cjs.js"),U=require("./useTessellation.cjs.js"),X=require("./useEdgeSplit.cjs.js"),K=require("./CurveModifier.cjs.js"),_=require("./MeshDistortMaterial.cjs.js"),J=require("./MeshWobbleMaterial.cjs.js"),Y=require("./PointMaterial.cjs.js"),Z=require("./shaderMaterial.cjs.js"),$=require("./Sky.cjs.js"),ee=require("./softShadows.cjs.js"),re=require("./Stars.cjs.js"),se=require("./ContactShadows.cjs.js"),te=require("./SpotLight.cjs.js"),oe=require("./shapes.cjs.js"),ie=require("./RoundedBox.cjs.js"),ae=require("./ScreenQuad.cjs.js"),ue=require("./useMatcapTexture.cjs.js"),ce=require("./useNormalTexture.cjs.js"),je=require("./Stage.cjs.js"),pe=require("./Points.cjs.js"),ne=require("./Instances.cjs.js"),le=require("./Detailed.cjs.js"),xe=require("./Preload.cjs.js"),qe=require("./BakeShadows.cjs.js"),de=require("./meshBounds.cjs.js"),Ce=require("./AdaptiveDpr.cjs.js"),he=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=a.Text,exports.Environment=u.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=O.DepthBuffer,exports.useAspect=E.useAspect,exports.useCamera=I.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.useSimplification=N.useSimplification,exports.useTessellation=U.useTessellation,exports.useEdgeSplit=X.useEdgeSplit,exports.CurveModifier=K.CurveModifier,exports.MeshDistortMaterial=_.MeshDistortMaterial,exports.MeshWobbleMaterial=J.MeshWobbleMaterial,exports.PointMaterial=Y.PointMaterial,exports.PointMaterialImpl=Y.PointMaterialImpl,exports.shaderMaterial=Z.shaderMaterial,exports.Sky=$.Sky,exports.calcPosFromAngles=$.calcPosFromAngles,exports.softShadows=ee.softShadows,exports.Stars=re.Stars,exports.ContactShadows=se.ContactShadows,exports.SpotLight=te.SpotLight,exports.Box=oe.Box,exports.Circle=oe.Circle,exports.Cone=oe.Cone,exports.Cylinder=oe.Cylinder,exports.Dodecahedron=oe.Dodecahedron,exports.Extrude=oe.Extrude,exports.Icosahedron=oe.Icosahedron,exports.Lathe=oe.Lathe,exports.Octahedron=oe.Octahedron,exports.Parametric=oe.Parametric,exports.Plane=oe.Plane,exports.Polyhedron=oe.Polyhedron,exports.Ring=oe.Ring,exports.Sphere=oe.Sphere,exports.Tetrahedron=oe.Tetrahedron,exports.Torus=oe.Torus,exports.TorusKnot=oe.TorusKnot,exports.Tube=oe.Tube,exports.RoundedBox=ie.RoundedBox,exports.ScreenQuad=ae.ScreenQuad,exports.useMatcapTexture=ue.useMatcapTexture,exports.useNormalTexture=ce.useNormalTexture,exports.Stage=je.Stage,exports.Point=pe.Point,exports.Points=pe.Points,exports.Instance=ne.Instance,exports.Instances=ne.Instances,exports.Merged=ne.Merged,exports.Detailed=le.Detailed,exports.Preload=xe.Preload,exports.BakeShadows=qe.BakeShadows,exports.meshBounds=de.meshBounds,exports.AdaptiveDpr=Ce.AdaptiveDpr,exports.AdaptiveEvents=he.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"),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;
package/core/index.d.ts CHANGED
@@ -43,6 +43,7 @@ export * from './useBVH';
43
43
  export * from './useContextBridge';
44
44
  export * from './useAnimations';
45
45
  export * from './useFBO';
46
+ export * from './useIntersect';
46
47
  export * from './useSimplification';
47
48
  export * from './useTessellation';
48
49
  export * from './useEdgeSplit';
package/core/index.js CHANGED
@@ -43,6 +43,7 @@ export { useBVH } from './useBVH.js';
43
43
  export { useContextBridge } from './useContextBridge.js';
44
44
  export { useAnimations } from './useAnimations.js';
45
45
  export { useFBO } from './useFBO.js';
46
+ export { useIntersect } from './useIntersect.js';
46
47
  export { useSimplification } from './useSimplification.js';
47
48
  export { useTessellation } from './useTessellation.js';
48
49
  export { useEdgeSplit } from './useEdgeSplit.js';
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber");function t(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var n=t(e);exports.useIntersect=function(e){const t=n.useRef(null),u=n.useRef(!1),c=n.useRef(!1);return n.useEffect((()=>{const n=t.current;if(n){const t=r.addEffect((()=>(u.current=!1,!0))),f=n.onBeforeRender;n.onBeforeRender=()=>u.current=!0;const o=r.addAfterEffect((()=>(u.current!==c.current&&e(c.current=u.current),!0)));return()=>{n.onBeforeRender=f,t(),o()}}}),[]),t};
@@ -0,0 +1,2 @@
1
+ import * as React from 'react';
2
+ export declare function useIntersect<T extends THREE.Object3D>(onChange: (visible: boolean) => void): React.MutableRefObject<T>;
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ import { addEffect, addAfterEffect } from '@react-three/fiber';
3
+
4
+ function useIntersect(onChange) {
5
+ const ref = React.useRef(null);
6
+ const check = React.useRef(false);
7
+ const temp = React.useRef(false);
8
+ React.useEffect(() => {
9
+ const obj = ref.current;
10
+
11
+ if (obj) {
12
+ // Stamp out frustum check pre-emptively
13
+ const unsub1 = addEffect(() => {
14
+ check.current = false;
15
+ return true;
16
+ }); // If the object is inside the frustum three will call onRender
17
+
18
+ const oldOnRender = obj.onBeforeRender;
19
+
20
+ obj.onBeforeRender = () => check.current = true; // Compare the check value against the temp value, if it differs set state
21
+
22
+
23
+ const unsub2 = addAfterEffect(() => {
24
+ if (check.current !== temp.current) onChange(temp.current = check.current);
25
+ return true;
26
+ });
27
+ return () => {
28
+ obj.onBeforeRender = oldOnRender;
29
+ unsub1();
30
+ unsub2();
31
+ };
32
+ }
33
+ }, []);
34
+ return ref;
35
+ }
36
+
37
+ export { useIntersect };