@react-three/drei 9.99.7 → 9.101.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/index.js CHANGED
@@ -59,6 +59,7 @@ export { IsObject, useTexture } from './core/useTexture.js';
59
59
  export { useVideoTexture } from './core/useVideoTexture.js';
60
60
  export { useFont } from './core/useFont.js';
61
61
  export { calculateAspectRatio, getFirstItem, useSpriteLoader } from './core/useSpriteLoader.js';
62
+ export { Helper } from './core/Helper.js';
62
63
  export { Stats } from './core/Stats.js';
63
64
  export { StatsGl } from './core/StatsGl.js';
64
65
  export { useDepthBuffer } from './core/useDepthBuffer.js';
@@ -25,6 +25,7 @@ class BlurPass {
25
25
  this.convolutionMaterial.setTexelSize(1.0 / width, 1.0 / height);
26
26
  this.convolutionMaterial.setResolution(new Vector2(width, height));
27
27
  this.scene = new Scene();
28
+ // @ts-expect-error fixed in r154
28
29
  this.camera = new Camera();
29
30
  this.convolutionMaterial.uniforms.minDepthThreshold.value = minDepthThreshold;
30
31
  this.convolutionMaterial.uniforms.maxDepthThreshold.value = maxDepthThreshold;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../core/Billboard.cjs.js"),r=require("../core/ScreenSpace.cjs.js"),s=require("../core/ScreenSizer.cjs.js"),o=require("../core/QuadraticBezierLine.cjs.js"),t=require("../core/CubicBezierLine.cjs.js"),i=require("../core/CatmullRomLine.cjs.js"),c=require("../core/Line.cjs.js"),a=require("../core/PositionalAudio.cjs.js"),u=require("../core/Text.cjs.js"),n=require("../core/Text3D.cjs.js"),j=require("../core/Effects.cjs.js"),p=require("../core/GradientTexture.cjs.js"),l=require("../core/Image.cjs.js"),x=require("../core/Edges.cjs.js"),q=require("../core/Outlines.cjs.js"),d=require("../core/Trail.cjs.js"),m=require("../core/Sampler.cjs.js"),h=require("../core/ComputedAttribute.cjs.js"),C=require("../core/Clone.cjs.js"),S=require("../core/MarchingCubes.cjs.js"),M=require("../core/Decal.cjs.js"),T=require("../core/Svg.cjs.js"),P=require("../core/Gltf.cjs.js"),b=require("../core/AsciiRenderer.cjs.js"),f=require("../core/Splat.cjs.js"),B=require("../core/OrthographicCamera.cjs.js"),g=require("../core/PerspectiveCamera.cjs.js"),v=require("../core/CubeCamera.cjs.js"),A=require("../core/DeviceOrientationControls.cjs.js"),L=require("../core/FlyControls.cjs.js"),R=require("../core/MapControls.cjs.js"),G=require("../core/OrbitControls.cjs.js"),F=require("../core/TrackballControls.cjs.js"),D=require("../core/ArcballControls.cjs.js"),E=require("../core/TransformControls.cjs.js"),k=require("../core/PointerLockControls.cjs.js"),w=require("../core/FirstPersonControls.cjs.js"),z=require("../core/CameraControls.cjs.js"),O=require("../core/MotionPathControls.cjs.js"),I=require("../core/GizmoHelper.cjs.js"),y=require("../core/GizmoViewcube.cjs.js"),H=require("../core/GizmoViewport.cjs.js"),V=require("../core/Grid.cjs.js"),W=require("../core/useCubeTexture.cjs.js"),Q=require("../core/useFBX.cjs.js"),X=require("../core/useGLTF.cjs.js"),K=require("../core/useKTX2.cjs.js"),N=require("../core/useProgress.cjs.js"),U=require("../core/useTexture.cjs.js"),_=require("../core/useVideoTexture.cjs.js"),J=require("../core/useFont.cjs.js"),Y=require("../core/useSpriteLoader.cjs.js"),Z=require("../core/Stats.cjs.js"),$=require("../core/StatsGl.cjs.js"),ee=require("../core/useDepthBuffer.cjs.js"),re=require("../core/useAspect.cjs.js"),se=require("../core/useCamera.cjs.js"),oe=require("../core/useDetectGPU.cjs.js"),te=require("../core/useHelper.cjs.js"),ie=require("../core/useBVH.cjs.js"),ce=require("../core/useContextBridge.cjs.js"),ae=require("../core/useAnimations.cjs.js"),ue=require("../core/useFBO.cjs.js"),ne=require("../core/useIntersect.cjs.js"),je=require("../core/useBoxProjectedEnv.cjs.js"),pe=require("../core/BBAnchor.cjs.js"),le=require("../core/useTrailTexture.cjs.js"),xe=require("../core/useCubeCamera.cjs.js"),qe=require("../core/Example.cjs.js"),de=require("../core/SpriteAnimator.cjs.js"),me=require("../core/CurveModifier.cjs.js"),he=require("../core/MeshDistortMaterial.cjs.js"),Ce=require("../core/MeshWobbleMaterial.cjs.js"),Se=require("../core/MeshReflectorMaterial.cjs.js"),Me=require("../core/MeshRefractionMaterial.cjs.js"),Te=require("../core/MeshTransmissionMaterial.cjs.js"),Pe=require("../core/MeshDiscardMaterial.cjs.js"),be=require("../core/PointMaterial.cjs.js"),fe=require("../core/shaderMaterial.cjs.js"),Be=require("../core/softShadows.cjs.js"),ge=require("../core/shapes.cjs.js"),ve=require("../core/RoundedBox.cjs.js"),Ae=require("../core/ScreenQuad.cjs.js"),Le=require("../core/Center.cjs.js"),Re=require("../core/Resize.cjs.js"),Ge=require("../core/Bounds.cjs.js"),Fe=require("../core/CameraShake.cjs.js"),De=require("../core/Float.cjs.js"),Ee=require("../core/Stage.cjs.js"),ke=require("../core/Backdrop.cjs.js"),we=require("../core/Shadow.cjs.js"),ze=require("../core/Caustics.cjs.js"),Oe=require("../core/ContactShadows.cjs.js"),Ie=require("../core/AccumulativeShadows.cjs.js"),ye=require("../core/Reflector.cjs.js"),He=require("../core/SpotLight.cjs.js"),Ve=require("../core/Environment.cjs.js"),We=require("../core/Lightformer.cjs.js"),Qe=require("../core/Sky.cjs.js"),Xe=require("../core/Stars.cjs.js"),Ke=require("../core/Cloud.cjs.js"),Ne=require("../core/Sparkles.cjs.js"),Ue=require("../core/useEnvironment.cjs.js"),_e=require("../core/useMatcapTexture.cjs.js"),Je=require("../core/useNormalTexture.cjs.js"),Ye=require("../core/Wireframe.cjs.js"),Ze=require("../core/ShadowAlpha.cjs.js"),$e=require("../core/Points.cjs.js"),er=require("../core/Instances.cjs.js"),rr=require("../core/Segments.cjs.js"),sr=require("../core/Detailed.cjs.js"),or=require("../core/Preload.cjs.js"),tr=require("../core/BakeShadows.cjs.js"),ir=require("../core/meshBounds.cjs.js"),cr=require("../core/AdaptiveDpr.cjs.js"),ar=require("../core/AdaptiveEvents.cjs.js"),ur=require("../core/PerformanceMonitor.cjs.js"),nr=require("../core/RenderTexture.cjs.js"),jr=require("../core/RenderCubeTexture.cjs.js"),pr=require("../core/Mask.cjs.js"),lr=require("../core/Hud.cjs.js"),xr=require("../core/Fisheye.cjs.js"),qr=require("../core/MeshPortalMaterial.cjs.js"),dr=require("../core/calculateScaleFactor.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("three"),require("@react-three/fiber"),require("three-stdlib"),require("suspend-react"),require("../helpers/constants.cjs.js"),require("meshline"),require("camera-controls"),require("maath"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("stats-gl"),require("detect-gpu"),require("three-mesh-bvh"),require("react-composer"),require("../helpers/deprecated.cjs.js"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("uuid"),require("../materials/WireframeMaterial.cjs.js"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.ScreenSizer=s.ScreenSizer,exports.QuadraticBezierLine=o.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.CatmullRomLine=i.CatmullRomLine,exports.Line=c.Line,exports.PositionalAudio=a.PositionalAudio,exports.Text=u.Text,exports.Text3D=n.Text3D,exports.Effects=j.Effects,exports.isWebGL2Available=j.isWebGL2Available,exports.GradientTexture=p.GradientTexture,exports.GradientType=p.GradientType,exports.Image=l.Image,exports.Edges=x.Edges,exports.Outlines=q.Outlines,exports.Trail=d.Trail,exports.useTrail=d.useTrail,exports.Sampler=m.Sampler,exports.useSurfaceSampler=m.useSurfaceSampler,exports.ComputedAttribute=h.ComputedAttribute,exports.Clone=C.Clone,exports.MarchingCube=S.MarchingCube,exports.MarchingCubes=S.MarchingCubes,exports.MarchingPlane=S.MarchingPlane,exports.Decal=M.Decal,exports.Svg=T.Svg,exports.Gltf=P.Gltf,exports.AsciiRenderer=b.AsciiRenderer,exports.Splat=f.Splat,exports.OrthographicCamera=B.OrthographicCamera,exports.PerspectiveCamera=g.PerspectiveCamera,exports.CubeCamera=v.CubeCamera,exports.DeviceOrientationControls=A.DeviceOrientationControls,exports.FlyControls=L.FlyControls,exports.MapControls=R.MapControls,exports.OrbitControls=G.OrbitControls,exports.TrackballControls=F.TrackballControls,exports.ArcballControls=D.ArcballControls,exports.TransformControls=E.TransformControls,exports.PointerLockControls=k.PointerLockControls,exports.FirstPersonControls=w.FirstPersonControls,exports.CameraControls=z.CameraControls,exports.MotionPathControls=O.MotionPathControls,exports.useMotion=O.useMotion,exports.GizmoHelper=I.GizmoHelper,exports.useGizmoContext=I.useGizmoContext,exports.GizmoViewcube=y.GizmoViewcube,exports.GizmoViewport=H.GizmoViewport,exports.Grid=V.Grid,exports.useCubeTexture=W.useCubeTexture,exports.useFBX=Q.useFBX,exports.useGLTF=X.useGLTF,exports.useKTX2=K.useKTX2,exports.useProgress=N.useProgress,exports.IsObject=U.IsObject,exports.useTexture=U.useTexture,exports.useVideoTexture=_.useVideoTexture,exports.useFont=J.useFont,exports.calculateAspectRatio=Y.calculateAspectRatio,exports.getFirstItem=Y.getFirstItem,exports.useSpriteLoader=Y.useSpriteLoader,exports.Stats=Z.Stats,exports.StatsGl=$.StatsGl,exports.useDepthBuffer=ee.useDepthBuffer,exports.useAspect=re.useAspect,exports.useCamera=se.useCamera,exports.useDetectGPU=oe.useDetectGPU,exports.useHelper=te.useHelper,exports.Bvh=ie.Bvh,exports.useBVH=ie.useBVH,exports.useContextBridge=ce.useContextBridge,exports.useAnimations=ae.useAnimations,exports.useFBO=ue.useFBO,exports.useIntersect=ne.useIntersect,exports.useBoxProjectedEnv=je.useBoxProjectedEnv,exports.BBAnchor=pe.BBAnchor,exports.useTrailTexture=le.useTrailTexture,exports.useCubeCamera=xe.useCubeCamera,exports.Example=qe.Example,exports.SpriteAnimator=de.SpriteAnimator,exports.useSpriteAnimator=de.useSpriteAnimator,exports.CurveModifier=me.CurveModifier,exports.MeshDistortMaterial=he.MeshDistortMaterial,exports.MeshWobbleMaterial=Ce.MeshWobbleMaterial,exports.MeshReflectorMaterial=Se.MeshReflectorMaterial,exports.MeshRefractionMaterial=Me.MeshRefractionMaterial,exports.MeshTransmissionMaterial=Te.MeshTransmissionMaterial,exports.MeshDiscardMaterial=Pe.MeshDiscardMaterial,exports.PointMaterial=be.PointMaterial,exports.PointMaterialImpl=be.PointMaterialImpl,exports.shaderMaterial=fe.shaderMaterial,exports.SoftShadows=Be.SoftShadows,exports.Box=ge.Box,exports.Capsule=ge.Capsule,exports.Circle=ge.Circle,exports.Cone=ge.Cone,exports.Cylinder=ge.Cylinder,exports.Dodecahedron=ge.Dodecahedron,exports.Extrude=ge.Extrude,exports.Icosahedron=ge.Icosahedron,exports.Lathe=ge.Lathe,exports.Octahedron=ge.Octahedron,exports.Plane=ge.Plane,exports.Polyhedron=ge.Polyhedron,exports.Ring=ge.Ring,exports.Shape=ge.Shape,exports.Sphere=ge.Sphere,exports.Tetrahedron=ge.Tetrahedron,exports.Torus=ge.Torus,exports.TorusKnot=ge.TorusKnot,exports.Tube=ge.Tube,exports.RoundedBox=ve.RoundedBox,exports.ScreenQuad=Ae.ScreenQuad,exports.Center=Le.Center,exports.Resize=Re.Resize,exports.Bounds=Ge.Bounds,exports.useBounds=Ge.useBounds,exports.CameraShake=Fe.CameraShake,exports.Float=De.Float,exports.Stage=Ee.Stage,exports.Backdrop=ke.Backdrop,exports.Shadow=we.Shadow,exports.Caustics=ze.Caustics,exports.ContactShadows=Oe.ContactShadows,exports.AccumulativeShadows=Ie.AccumulativeShadows,exports.RandomizedLight=Ie.RandomizedLight,exports.accumulativeContext=Ie.accumulativeContext,exports.Reflector=ye.Reflector,exports.SpotLight=He.SpotLight,exports.SpotLightShadow=He.SpotLightShadow,exports.Environment=Ve.Environment,exports.EnvironmentCube=Ve.EnvironmentCube,exports.EnvironmentMap=Ve.EnvironmentMap,exports.EnvironmentPortal=Ve.EnvironmentPortal,exports.Lightformer=We.Lightformer,exports.Sky=Qe.Sky,exports.calcPosFromAngles=Qe.calcPosFromAngles,exports.Stars=Xe.Stars,exports.Cloud=Ke.Cloud,exports.CloudInstance=Ke.CloudInstance,exports.Clouds=Ke.Clouds,exports.Sparkles=Ne.Sparkles,exports.useEnvironment=Ue.useEnvironment,exports.useMatcapTexture=_e.useMatcapTexture,exports.useNormalTexture=Je.useNormalTexture,exports.Wireframe=Ye.Wireframe,exports.ShadowAlpha=Ze.ShadowAlpha,exports.Point=$e.Point,exports.Points=$e.Points,exports.PointsBuffer=$e.PointsBuffer,exports.PositionPoint=$e.PositionPoint,exports.Instance=er.Instance,exports.Instances=er.Instances,exports.Merged=er.Merged,exports.Segment=rr.Segment,exports.SegmentObject=rr.SegmentObject,exports.Segments=rr.Segments,exports.Detailed=sr.Detailed,exports.Preload=or.Preload,exports.BakeShadows=tr.BakeShadows,exports.meshBounds=ir.meshBounds,exports.AdaptiveDpr=cr.AdaptiveDpr,exports.AdaptiveEvents=ar.AdaptiveEvents,exports.PerformanceMonitor=ur.PerformanceMonitor,exports.usePerformanceMonitor=ur.usePerformanceMonitor,exports.RenderTexture=nr.RenderTexture,exports.RenderCubeTexture=jr.RenderCubeTexture,exports.Mask=pr.Mask,exports.useMask=pr.useMask,exports.Hud=lr.Hud,exports.Fisheye=xr.Fisheye,exports.MeshPortalMaterial=qr.MeshPortalMaterial,exports.calculateScaleFactor=dr.calculateScaleFactor;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../core/Billboard.cjs.js"),r=require("../core/ScreenSpace.cjs.js"),s=require("../core/ScreenSizer.cjs.js"),o=require("../core/QuadraticBezierLine.cjs.js"),t=require("../core/CubicBezierLine.cjs.js"),i=require("../core/CatmullRomLine.cjs.js"),c=require("../core/Line.cjs.js"),a=require("../core/PositionalAudio.cjs.js"),u=require("../core/Text.cjs.js"),n=require("../core/Text3D.cjs.js"),j=require("../core/Effects.cjs.js"),p=require("../core/GradientTexture.cjs.js"),l=require("../core/Image.cjs.js"),x=require("../core/Edges.cjs.js"),q=require("../core/Outlines.cjs.js"),d=require("../core/Trail.cjs.js"),m=require("../core/Sampler.cjs.js"),h=require("../core/ComputedAttribute.cjs.js"),C=require("../core/Clone.cjs.js"),S=require("../core/MarchingCubes.cjs.js"),M=require("../core/Decal.cjs.js"),T=require("../core/Svg.cjs.js"),P=require("../core/Gltf.cjs.js"),b=require("../core/AsciiRenderer.cjs.js"),f=require("../core/Splat.cjs.js"),B=require("../core/OrthographicCamera.cjs.js"),g=require("../core/PerspectiveCamera.cjs.js"),v=require("../core/CubeCamera.cjs.js"),A=require("../core/DeviceOrientationControls.cjs.js"),L=require("../core/FlyControls.cjs.js"),R=require("../core/MapControls.cjs.js"),G=require("../core/OrbitControls.cjs.js"),F=require("../core/TrackballControls.cjs.js"),D=require("../core/ArcballControls.cjs.js"),E=require("../core/TransformControls.cjs.js"),k=require("../core/PointerLockControls.cjs.js"),w=require("../core/FirstPersonControls.cjs.js"),z=require("../core/CameraControls.cjs.js"),O=require("../core/MotionPathControls.cjs.js"),I=require("../core/GizmoHelper.cjs.js"),y=require("../core/GizmoViewcube.cjs.js"),H=require("../core/GizmoViewport.cjs.js"),V=require("../core/Grid.cjs.js"),W=require("../core/useCubeTexture.cjs.js"),Q=require("../core/useFBX.cjs.js"),X=require("../core/useGLTF.cjs.js"),K=require("../core/useKTX2.cjs.js"),N=require("../core/useProgress.cjs.js"),U=require("../core/useTexture.cjs.js"),_=require("../core/useVideoTexture.cjs.js"),J=require("../core/useFont.cjs.js"),Y=require("../core/useSpriteLoader.cjs.js"),Z=require("../core/Helper.cjs.js"),$=require("../core/Stats.cjs.js"),ee=require("../core/StatsGl.cjs.js"),re=require("../core/useDepthBuffer.cjs.js"),se=require("../core/useAspect.cjs.js"),oe=require("../core/useCamera.cjs.js"),te=require("../core/useDetectGPU.cjs.js"),ie=require("../core/useHelper.cjs.js"),ce=require("../core/useBVH.cjs.js"),ae=require("../core/useContextBridge.cjs.js"),ue=require("../core/useAnimations.cjs.js"),ne=require("../core/useFBO.cjs.js"),je=require("../core/useIntersect.cjs.js"),pe=require("../core/useBoxProjectedEnv.cjs.js"),le=require("../core/BBAnchor.cjs.js"),xe=require("../core/useTrailTexture.cjs.js"),qe=require("../core/useCubeCamera.cjs.js"),de=require("../core/Example.cjs.js"),me=require("../core/SpriteAnimator.cjs.js"),he=require("../core/CurveModifier.cjs.js"),Ce=require("../core/MeshDistortMaterial.cjs.js"),Se=require("../core/MeshWobbleMaterial.cjs.js"),Me=require("../core/MeshReflectorMaterial.cjs.js"),Te=require("../core/MeshRefractionMaterial.cjs.js"),Pe=require("../core/MeshTransmissionMaterial.cjs.js"),be=require("../core/MeshDiscardMaterial.cjs.js"),fe=require("../core/PointMaterial.cjs.js"),Be=require("../core/shaderMaterial.cjs.js"),ge=require("../core/softShadows.cjs.js"),ve=require("../core/shapes.cjs.js"),Ae=require("../core/RoundedBox.cjs.js"),Le=require("../core/ScreenQuad.cjs.js"),Re=require("../core/Center.cjs.js"),Ge=require("../core/Resize.cjs.js"),Fe=require("../core/Bounds.cjs.js"),De=require("../core/CameraShake.cjs.js"),Ee=require("../core/Float.cjs.js"),ke=require("../core/Stage.cjs.js"),we=require("../core/Backdrop.cjs.js"),ze=require("../core/Shadow.cjs.js"),Oe=require("../core/Caustics.cjs.js"),Ie=require("../core/ContactShadows.cjs.js"),ye=require("../core/AccumulativeShadows.cjs.js"),He=require("../core/Reflector.cjs.js"),Ve=require("../core/SpotLight.cjs.js"),We=require("../core/Environment.cjs.js"),Qe=require("../core/Lightformer.cjs.js"),Xe=require("../core/Sky.cjs.js"),Ke=require("../core/Stars.cjs.js"),Ne=require("../core/Cloud.cjs.js"),Ue=require("../core/Sparkles.cjs.js"),_e=require("../core/useEnvironment.cjs.js"),Je=require("../core/useMatcapTexture.cjs.js"),Ye=require("../core/useNormalTexture.cjs.js"),Ze=require("../core/Wireframe.cjs.js"),$e=require("../core/ShadowAlpha.cjs.js"),er=require("../core/Points.cjs.js"),rr=require("../core/Instances.cjs.js"),sr=require("../core/Segments.cjs.js"),or=require("../core/Detailed.cjs.js"),tr=require("../core/Preload.cjs.js"),ir=require("../core/BakeShadows.cjs.js"),cr=require("../core/meshBounds.cjs.js"),ar=require("../core/AdaptiveDpr.cjs.js"),ur=require("../core/AdaptiveEvents.cjs.js"),nr=require("../core/PerformanceMonitor.cjs.js"),jr=require("../core/RenderTexture.cjs.js"),pr=require("../core/RenderCubeTexture.cjs.js"),lr=require("../core/Mask.cjs.js"),xr=require("../core/Hud.cjs.js"),qr=require("../core/Fisheye.cjs.js"),dr=require("../core/MeshPortalMaterial.cjs.js"),mr=require("../core/calculateScaleFactor.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("three"),require("@react-three/fiber"),require("three-stdlib"),require("suspend-react"),require("../helpers/constants.cjs.js"),require("meshline"),require("camera-controls"),require("maath"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("stats-gl"),require("detect-gpu"),require("three-mesh-bvh"),require("react-composer"),require("../helpers/deprecated.cjs.js"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("uuid"),require("../materials/WireframeMaterial.cjs.js"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.ScreenSizer=s.ScreenSizer,exports.QuadraticBezierLine=o.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.CatmullRomLine=i.CatmullRomLine,exports.Line=c.Line,exports.PositionalAudio=a.PositionalAudio,exports.Text=u.Text,exports.Text3D=n.Text3D,exports.Effects=j.Effects,exports.isWebGL2Available=j.isWebGL2Available,exports.GradientTexture=p.GradientTexture,exports.GradientType=p.GradientType,exports.Image=l.Image,exports.Edges=x.Edges,exports.Outlines=q.Outlines,exports.Trail=d.Trail,exports.useTrail=d.useTrail,exports.Sampler=m.Sampler,exports.useSurfaceSampler=m.useSurfaceSampler,exports.ComputedAttribute=h.ComputedAttribute,exports.Clone=C.Clone,exports.MarchingCube=S.MarchingCube,exports.MarchingCubes=S.MarchingCubes,exports.MarchingPlane=S.MarchingPlane,exports.Decal=M.Decal,exports.Svg=T.Svg,exports.Gltf=P.Gltf,exports.AsciiRenderer=b.AsciiRenderer,exports.Splat=f.Splat,exports.OrthographicCamera=B.OrthographicCamera,exports.PerspectiveCamera=g.PerspectiveCamera,exports.CubeCamera=v.CubeCamera,exports.DeviceOrientationControls=A.DeviceOrientationControls,exports.FlyControls=L.FlyControls,exports.MapControls=R.MapControls,exports.OrbitControls=G.OrbitControls,exports.TrackballControls=F.TrackballControls,exports.ArcballControls=D.ArcballControls,exports.TransformControls=E.TransformControls,exports.PointerLockControls=k.PointerLockControls,exports.FirstPersonControls=w.FirstPersonControls,exports.CameraControls=z.CameraControls,exports.MotionPathControls=O.MotionPathControls,exports.useMotion=O.useMotion,exports.GizmoHelper=I.GizmoHelper,exports.useGizmoContext=I.useGizmoContext,exports.GizmoViewcube=y.GizmoViewcube,exports.GizmoViewport=H.GizmoViewport,exports.Grid=V.Grid,exports.useCubeTexture=W.useCubeTexture,exports.useFBX=Q.useFBX,exports.useGLTF=X.useGLTF,exports.useKTX2=K.useKTX2,exports.useProgress=N.useProgress,exports.IsObject=U.IsObject,exports.useTexture=U.useTexture,exports.useVideoTexture=_.useVideoTexture,exports.useFont=J.useFont,exports.calculateAspectRatio=Y.calculateAspectRatio,exports.getFirstItem=Y.getFirstItem,exports.useSpriteLoader=Y.useSpriteLoader,exports.Helper=Z.Helper,exports.Stats=$.Stats,exports.StatsGl=ee.StatsGl,exports.useDepthBuffer=re.useDepthBuffer,exports.useAspect=se.useAspect,exports.useCamera=oe.useCamera,exports.useDetectGPU=te.useDetectGPU,exports.useHelper=ie.useHelper,exports.Bvh=ce.Bvh,exports.useBVH=ce.useBVH,exports.useContextBridge=ae.useContextBridge,exports.useAnimations=ue.useAnimations,exports.useFBO=ne.useFBO,exports.useIntersect=je.useIntersect,exports.useBoxProjectedEnv=pe.useBoxProjectedEnv,exports.BBAnchor=le.BBAnchor,exports.useTrailTexture=xe.useTrailTexture,exports.useCubeCamera=qe.useCubeCamera,exports.Example=de.Example,exports.SpriteAnimator=me.SpriteAnimator,exports.useSpriteAnimator=me.useSpriteAnimator,exports.CurveModifier=he.CurveModifier,exports.MeshDistortMaterial=Ce.MeshDistortMaterial,exports.MeshWobbleMaterial=Se.MeshWobbleMaterial,exports.MeshReflectorMaterial=Me.MeshReflectorMaterial,exports.MeshRefractionMaterial=Te.MeshRefractionMaterial,exports.MeshTransmissionMaterial=Pe.MeshTransmissionMaterial,exports.MeshDiscardMaterial=be.MeshDiscardMaterial,exports.PointMaterial=fe.PointMaterial,exports.PointMaterialImpl=fe.PointMaterialImpl,exports.shaderMaterial=Be.shaderMaterial,exports.SoftShadows=ge.SoftShadows,exports.Box=ve.Box,exports.Capsule=ve.Capsule,exports.Circle=ve.Circle,exports.Cone=ve.Cone,exports.Cylinder=ve.Cylinder,exports.Dodecahedron=ve.Dodecahedron,exports.Extrude=ve.Extrude,exports.Icosahedron=ve.Icosahedron,exports.Lathe=ve.Lathe,exports.Octahedron=ve.Octahedron,exports.Plane=ve.Plane,exports.Polyhedron=ve.Polyhedron,exports.Ring=ve.Ring,exports.Shape=ve.Shape,exports.Sphere=ve.Sphere,exports.Tetrahedron=ve.Tetrahedron,exports.Torus=ve.Torus,exports.TorusKnot=ve.TorusKnot,exports.Tube=ve.Tube,exports.RoundedBox=Ae.RoundedBox,exports.ScreenQuad=Le.ScreenQuad,exports.Center=Re.Center,exports.Resize=Ge.Resize,exports.Bounds=Fe.Bounds,exports.useBounds=Fe.useBounds,exports.CameraShake=De.CameraShake,exports.Float=Ee.Float,exports.Stage=ke.Stage,exports.Backdrop=we.Backdrop,exports.Shadow=ze.Shadow,exports.Caustics=Oe.Caustics,exports.ContactShadows=Ie.ContactShadows,exports.AccumulativeShadows=ye.AccumulativeShadows,exports.RandomizedLight=ye.RandomizedLight,exports.accumulativeContext=ye.accumulativeContext,exports.Reflector=He.Reflector,exports.SpotLight=Ve.SpotLight,exports.SpotLightShadow=Ve.SpotLightShadow,exports.Environment=We.Environment,exports.EnvironmentCube=We.EnvironmentCube,exports.EnvironmentMap=We.EnvironmentMap,exports.EnvironmentPortal=We.EnvironmentPortal,exports.Lightformer=Qe.Lightformer,exports.Sky=Xe.Sky,exports.calcPosFromAngles=Xe.calcPosFromAngles,exports.Stars=Ke.Stars,exports.Cloud=Ne.Cloud,exports.CloudInstance=Ne.CloudInstance,exports.Clouds=Ne.Clouds,exports.Sparkles=Ue.Sparkles,exports.useEnvironment=_e.useEnvironment,exports.useMatcapTexture=Je.useMatcapTexture,exports.useNormalTexture=Ye.useNormalTexture,exports.Wireframe=Ze.Wireframe,exports.ShadowAlpha=$e.ShadowAlpha,exports.Point=er.Point,exports.Points=er.Points,exports.PointsBuffer=er.PointsBuffer,exports.PositionPoint=er.PositionPoint,exports.Instance=rr.Instance,exports.Instances=rr.Instances,exports.Merged=rr.Merged,exports.Segment=sr.Segment,exports.SegmentObject=sr.SegmentObject,exports.Segments=sr.Segments,exports.Detailed=or.Detailed,exports.Preload=tr.Preload,exports.BakeShadows=ir.BakeShadows,exports.meshBounds=cr.meshBounds,exports.AdaptiveDpr=ar.AdaptiveDpr,exports.AdaptiveEvents=ur.AdaptiveEvents,exports.PerformanceMonitor=nr.PerformanceMonitor,exports.usePerformanceMonitor=nr.usePerformanceMonitor,exports.RenderTexture=jr.RenderTexture,exports.RenderCubeTexture=pr.RenderCubeTexture,exports.Mask=lr.Mask,exports.useMask=lr.useMask,exports.Hud=xr.Hud,exports.Fisheye=qr.Fisheye,exports.MeshPortalMaterial=dr.MeshPortalMaterial,exports.calculateScaleFactor=mr.calculateScaleFactor;
package/native/index.js CHANGED
@@ -50,6 +50,7 @@ export { IsObject, useTexture } from '../core/useTexture.js';
50
50
  export { useVideoTexture } from '../core/useVideoTexture.js';
51
51
  export { useFont } from '../core/useFont.js';
52
52
  export { calculateAspectRatio, getFirstItem, useSpriteLoader } from '../core/useSpriteLoader.js';
53
+ export { Helper } from '../core/Helper.js';
53
54
  export { Stats } from '../core/Stats.js';
54
55
  export { StatsGl } from '../core/StatsGl.js';
55
56
  export { useDepthBuffer } from '../core/useDepthBuffer.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-three/drei",
3
- "version": "9.99.7",
3
+ "version": "9.101.0",
4
4
  "private": false,
5
5
  "description": "useful add-ons for react-three-fiber",
6
6
  "keywords": [
@@ -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("@use-gesture/react");function o(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 c=o(e),u=i(r),s=i(t);const l=new s.Vector3,m=new s.Vector2,d=new s.Vector3,f=new s.Vector3,x=new s.Vector3,p=new s.Plane,y=u.forwardRef((({autoTransform:e=!0,matrix:r,axisLock:t,dragLimits:o,onHover:i,onDragStart:y,onDrag:h,onDragEnd:g,children:b,...v},w)=>{const D=n.useThree((e=>e.controls)),{camera:M,size:z,raycaster:P,invalidate:j}=n.useThree(),O=u.useRef(null),V=a.useGesture({onHover:({hovering:e})=>i&&i(null!=e&&e),onDragStart:({event:e})=>{D&&(D.enabled=!1);const{point:r}=e;O.current.matrix.decompose(l,new s.Quaternion,new s.Vector3),d.copy(r),f.copy(d).sub(l),y&&y(l),j()},onDrag:({xy:[r,n],intentional:a})=>{if(!a)return;const i=(r-z.left)/z.width*2-1,c=-(n-z.top)/z.height*2+1;if(m.set(i,c),P.setFromCamera(m,M),t)switch(t){case"x":x.set(1,0,0);break;case"y":x.set(0,1,0);break;case"z":x.set(0,0,1)}else M.getWorldDirection(x).negate();p.setFromNormalAndCoplanarPoint(x,d),P.ray.intersectPlane(p,d);const u=O.current.matrix.clone(),l=O.current.matrixWorld.clone(),y=new s.Vector3(d.x-f.x,d.y-f.y,d.z-f.z);if(o&&(y.x=o[0]?Math.max(Math.min(y.x,o[0][1]),o[0][0]):y.x,y.y=o[1]?Math.max(Math.min(y.y,o[1][1]),o[1][0]):y.y,y.z=o[2]?Math.max(Math.min(y.z,o[2][1]),o[2][0]):y.z),e){O.current.matrix.setPosition(y);const e=O.current.matrix.clone().multiply(u.invert()),r=O.current.matrix.clone().multiply(l.invert());h&&h(O.current.matrix,e,O.current.matrixWorld,r)}else{const e=(new s.Matrix4).copy(O.current.matrix);e.setPosition(y);const r=e.clone().multiply(u.invert()),t=e.clone().multiply(l.invert());h&&h(e,r,O.current.matrixWorld,t)}j()},onDragEnd:()=>{D&&(D.enabled=!0),g&&g(),j()}},{drag:{filterTaps:!0,threshold:1}});return u.useImperativeHandle(w,(()=>O.current),[]),u.useLayoutEffect((()=>{r&&(O.current.matrix=r)}),[r]),u.createElement("group",c.default({ref:O},V(),{matrix:r,matrixAutoUpdate:!1},v),b)}));exports.DragControls=y;
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("@use-gesture/react");function o(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 c=o(e),u=i(r),s=i(t);const l=new s.Vector3,m=new s.Vector2,f=new s.Vector3,d=new s.Vector3,x=new s.Vector3,p=new s.Plane,y=u.forwardRef((({autoTransform:e=!0,matrix:r,axisLock:t,dragLimits:o,onHover:i,onDragStart:y,onDrag:g,onDragEnd:h,children:b,dragConfig:v,...w},D)=>{const M=n.useThree((e=>e.controls)),{camera:j,size:z,raycaster:P,invalidate:O}=n.useThree(),V=u.useRef(null),q=a.useGesture({onHover:({hovering:e})=>i&&i(null!=e&&e),onDragStart:({event:e})=>{M&&(M.enabled=!1);const{point:r}=e;V.current.matrix.decompose(l,new s.Quaternion,new s.Vector3),f.copy(r),d.copy(f).sub(l),y&&y(l),O()},onDrag:({xy:[r,n],intentional:a})=>{if(!a)return;const i=(r-z.left)/z.width*2-1,c=-(n-z.top)/z.height*2+1;if(m.set(i,c),P.setFromCamera(m,j),t)switch(t){case"x":x.set(1,0,0);break;case"y":x.set(0,1,0);break;case"z":x.set(0,0,1)}else j.getWorldDirection(x).negate();p.setFromNormalAndCoplanarPoint(x,f),P.ray.intersectPlane(p,f);const u=V.current.matrix.clone(),l=V.current.matrixWorld.clone(),y=new s.Vector3(f.x-d.x,f.y-d.y,f.z-d.z);if(o&&(y.x=o[0]?Math.max(Math.min(y.x,o[0][1]),o[0][0]):y.x,y.y=o[1]?Math.max(Math.min(y.y,o[1][1]),o[1][0]):y.y,y.z=o[2]?Math.max(Math.min(y.z,o[2][1]),o[2][0]):y.z),e){V.current.matrix.setPosition(y);const e=V.current.matrix.clone().multiply(u.invert()),r=V.current.matrix.clone().multiply(l.invert());g&&g(V.current.matrix,e,V.current.matrixWorld,r)}else{const e=(new s.Matrix4).copy(V.current.matrix);e.setPosition(y);const r=e.clone().multiply(u.invert()),t=e.clone().multiply(l.invert());g&&g(e,r,V.current.matrixWorld,t)}O()},onDragEnd:()=>{M&&(M.enabled=!0),h&&h(),O()}},{drag:{filterTaps:!0,threshold:1,..."object"==typeof v?v:{}}});return u.useImperativeHandle(D,(()=>V.current),[]),u.useLayoutEffect((()=>{r&&(V.current.matrix=r)}),[r]),u.createElement("group",c.default({ref:V},q(),{matrix:r,matrixAutoUpdate:!1},w),b)}));exports.DragControls=y;
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import * as THREE from 'three';
3
+ import { DragConfig } from '@use-gesture/react';
3
4
  import { ForwardRefComponent } from '../helpers/ts-utils';
4
5
  export type DragControlsProps = {
5
6
  autoTransform?: boolean;
@@ -11,5 +12,6 @@ export type DragControlsProps = {
11
12
  onDrag?: (localMatrix: THREE.Matrix4, deltaLocalMatrix: THREE.Matrix4, worldMatrix: THREE.Matrix4, deltaWorldMatrix: THREE.Matrix4) => void;
12
13
  onDragEnd?: () => void;
13
14
  children: React.ReactNode;
15
+ dragConfig?: DragConfig;
14
16
  };
15
17
  export declare const DragControls: ForwardRefComponent<DragControlsProps, THREE.Group>;
@@ -20,6 +20,7 @@ const DragControls = /*#__PURE__*/React.forwardRef(({
20
20
  onDrag,
21
21
  onDragEnd,
22
22
  children,
23
+ dragConfig,
23
24
  ...props
24
25
  }, fRef) => {
25
26
  const defaultControls = useThree(state => state.controls);
@@ -103,7 +104,8 @@ const DragControls = /*#__PURE__*/React.forwardRef(({
103
104
  }, {
104
105
  drag: {
105
106
  filterTaps: true,
106
- threshold: 1
107
+ threshold: 1,
108
+ ...(typeof dragConfig === 'object' ? dragConfig : {})
107
109
  }
108
110
  });
109
111
  React.useImperativeHandle(fRef, () => ref.current, []);
package/web/Html.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("react-dom/client"),n=require("three"),o=require("@react-three/fiber");function i(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)}var a=i(e),c=s(t),l=s(r);const u=new n.Vector3,d=new n.Vector3,m=new n.Vector3;function f(e,t,r){const n=u.setFromMatrixPosition(e.matrixWorld);n.project(t);const o=r.width/2,i=r.height/2;return[n.x*o+o,-n.y*i+i]}const h=e=>Math.abs(e)<1e-10?0:e;function p(e,t,r=""){let n="matrix3d(";for(let r=0;16!==r;r++)n+=h(t[r]*e.elements[r])+(15!==r?",":")");return r+n}const x=(v=[1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1],e=>p(e,v));var v;const y=(e,t)=>{return p(e,[1/(r=t),1/r,1/r,1,-1/r,-1/r,-1/r,-1,1/r,1/r,1/r,1,1,1,1,1],"translate(-50%,-50%)");var r};const g=c.forwardRef((({children:e,eps:t=.001,style:r,className:i,prepend:s,center:p,fullscreen:v,portal:g,distanceFactor:M,sprite:b=!1,transform:P=!1,occlude:w,onOcclude:E,castShadow:W,receiveShadow:S,material:$,geometry:j,zIndexRange:z=[16777271,0],calculatePosition:O=f,as:R="div",wrapperClass:F,pointerEvents:C="auto",...T},I)=>{const{gl:A,camera:k,scene:H,size:N,raycaster:_,events:q,viewport:V}=o.useThree(),[L]=c.useState((()=>document.createElement(R))),D=c.useRef(),G=c.useRef(null),Z=c.useRef(0),B=c.useRef([0,0]),J=c.useRef(null),K=c.useRef(null),Q=(null==g?void 0:g.current)||q.connected||A.domElement.parentNode,U=c.useRef(null),X=c.useRef(!1),Y=c.useMemo((()=>w&&"blending"!==w||Array.isArray(w)&&w.length&&function(e){return e&&"object"==typeof e&&"current"in e}(w[0])),[w]);c.useLayoutEffect((()=>{const e=A.domElement;w&&"blending"===w?(e.style.zIndex=`${Math.floor(z[0]/2)}`,e.style.position="absolute",e.style.pointerEvents="none"):(e.style.zIndex=null,e.style.position=null,e.style.pointerEvents=null)}),[w]),c.useLayoutEffect((()=>{if(G.current){const e=D.current=l.createRoot(L);if(H.updateMatrixWorld(),P)L.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{const e=O(G.current,k,N);L.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${e[0]}px,${e[1]}px,0);transform-origin:0 0;`}return Q&&(s?Q.prepend(L):Q.appendChild(L)),()=>{Q&&Q.removeChild(L),e.unmount()}}}),[Q,P]),c.useLayoutEffect((()=>{F&&(L.className=F)}),[F]);const ee=c.useMemo((()=>P?{position:"absolute",top:0,left:0,width:N.width,height:N.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:p?"translate3d(-50%,-50%,0)":"none",...v&&{top:-N.height/2,left:-N.width/2,width:N.width,height:N.height},...r}),[r,p,v,N,P]),te=c.useMemo((()=>({position:"absolute",pointerEvents:C})),[C]);c.useLayoutEffect((()=>{var t,n;(X.current=!1,P)?null==(t=D.current)||t.render(c.createElement("div",{ref:J,style:ee},c.createElement("div",{ref:K,style:te},c.createElement("div",{ref:I,className:i,style:r,children:e})))):null==(n=D.current)||n.render(c.createElement("div",{ref:I,style:ee,className:i,children:e}))}));const re=c.useRef(!0);o.useFrame((e=>{if(G.current){k.updateMatrixWorld(),G.current.updateWorldMatrix(!0,!1);const e=P?B.current:O(G.current,k,N);if(P||Math.abs(Z.current-k.zoom)>t||Math.abs(B.current[0]-e[0])>t||Math.abs(B.current[1]-e[1])>t){const t=function(e,t){const r=u.setFromMatrixPosition(e.matrixWorld),n=d.setFromMatrixPosition(t.matrixWorld),o=r.sub(n),i=t.getWorldDirection(m);return o.angleTo(i)>Math.PI/2}(G.current,k);let r=!1;Y&&(Array.isArray(w)?r=w.map((e=>e.current)):"blending"!==w&&(r=[H]));const o=re.current;if(r){const e=function(e,t,r,n){const o=u.setFromMatrixPosition(e.matrixWorld),i=o.clone();i.project(t),r.setFromCamera(i,t);const s=r.intersectObjects(n,!0);if(s.length){const e=s[0].distance;return o.distanceTo(r.ray.origin)<e}return!0}(G.current,k,_,r);re.current=e&&!t}else re.current=!t;o!==re.current&&(E?E(!re.current):L.style.display=re.current?"block":"none");const i=Math.floor(z[0]/2),s=w?Y?[z[0],i]:[i-1,0]:z;if(L.style.zIndex=`${function(e,t,r){if(t instanceof n.PerspectiveCamera||t instanceof n.OrthographicCamera){const n=u.setFromMatrixPosition(e.matrixWorld),o=d.setFromMatrixPosition(t.matrixWorld),i=n.distanceTo(o),s=(r[1]-r[0])/(t.far-t.near),a=r[1]-s*t.far;return Math.round(s*i+a)}}(G.current,k,s)}`,P){const[e,t]=[N.width/2,N.height/2],r=k.projectionMatrix.elements[5]*t,{isOrthographicCamera:n,top:o,left:i,bottom:s,right:a}=k,c=x(k.matrixWorldInverse),l=n?`scale(${r})translate(${h(-(a+i)/2)}px,${h((o+s)/2)}px)`:`translateZ(${r}px)`;let u=G.current.matrixWorld;b&&(u=k.matrixWorldInverse.clone().transpose().copyPosition(u).scale(G.current.scale),u.elements[3]=u.elements[7]=u.elements[11]=0,u.elements[15]=1),L.style.width=N.width+"px",L.style.height=N.height+"px",L.style.perspective=n?"":`${r}px`,J.current&&K.current&&(J.current.style.transform=`${l}${c}translate(${e}px,${t}px)`,K.current.style.transform=y(u,1/((M||10)/400)))}else{const t=void 0===M?1:function(e,t){if(t instanceof n.OrthographicCamera)return t.zoom;if(t instanceof n.PerspectiveCamera){const r=u.setFromMatrixPosition(e.matrixWorld),n=d.setFromMatrixPosition(t.matrixWorld),o=t.fov*Math.PI/180,i=r.distanceTo(n);return 1/(2*Math.tan(o/2)*i)}return 1}(G.current,k)*M;L.style.transform=`translate3d(${e[0]}px,${e[1]}px,0) scale(${t})`}B.current=e,Z.current=k.zoom}}if(!Y&&U.current&&!X.current)if(P){if(J.current){const e=J.current.children[0];if(null!=e&&e.clientWidth&&null!=e&&e.clientHeight){const{isOrthographicCamera:t}=k;if(t||j)T.scale&&(Array.isArray(T.scale)?T.scale instanceof n.Vector3?U.current.scale.copy(T.scale.clone().divideScalar(1)):U.current.scale.set(1/T.scale[0],1/T.scale[1],1/T.scale[2]):U.current.scale.setScalar(1/T.scale));else{const t=(M||10)/400,r=e.clientWidth*t,n=e.clientHeight*t;U.current.scale.set(r,n,1)}X.current=!0}}}else{const t=L.children[0];if(null!=t&&t.clientWidth&&null!=t&&t.clientHeight){const e=1/V.factor,r=t.clientWidth*e,n=t.clientHeight*e;U.current.scale.set(r,n,1),X.current=!0}U.current.lookAt(e.camera.position)}}));const ne=c.useMemo((()=>({vertexShader:P?void 0:'\n /*\n This shader is from the THREE\'s SpriteMaterial.\n We need to turn the backing plane into a Sprite\n (make it always face the camera) if "transfrom" \n is false. \n */\n #include <common>\n\n void main() {\n vec2 center = vec2(0., 1.);\n float rotation = 0.0;\n \n // This is somewhat arbitrary, but it seems to work well\n // Need to figure out how to derive this dynamically if it even matters\n float size = 0.03;\n\n vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n vec2 scale;\n scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n\n gl_Position = projectionMatrix * mvPosition;\n }\n ',fragmentShader:"\n void main() {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n "})),[P]);return c.createElement("group",a.default({},T,{ref:G}),w&&!Y&&c.createElement("mesh",{castShadow:W,receiveShadow:S,ref:U},j||c.createElement("planeGeometry",null),$||c.createElement("shaderMaterial",{side:n.DoubleSide,vertexShader:ne.vertexShader,fragmentShader:ne.fragmentShader})))}));exports.Html=g;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("react-dom/client"),n=require("three"),o=require("@react-three/fiber");function i(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)}var a=i(e),c=s(t),l=s(r);const u=new n.Vector3,d=new n.Vector3,m=new n.Vector3,f=new n.Vector2;function h(e,t,r){const n=u.setFromMatrixPosition(e.matrixWorld);n.project(t);const o=r.width/2,i=r.height/2;return[n.x*o+o,-n.y*i+i]}const p=e=>Math.abs(e)<1e-10?0:e;function x(e,t,r=""){let n="matrix3d(";for(let r=0;16!==r;r++)n+=p(t[r]*e.elements[r])+(15!==r?",":")");return r+n}const v=(y=[1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1],e=>x(e,y));var y;const g=(e,t)=>{return x(e,[1/(r=t),1/r,1/r,1,-1/r,-1/r,-1/r,-1,1/r,1/r,1/r,1,1,1,1,1],"translate(-50%,-50%)");var r};const M=c.forwardRef((({children:e,eps:t=.001,style:r,className:i,prepend:s,center:x,fullscreen:y,portal:M,distanceFactor:b,sprite:P=!1,transform:w=!1,occlude:E,onOcclude:W,castShadow:S,receiveShadow:$,material:j,geometry:z,zIndexRange:O=[16777271,0],calculatePosition:R=h,as:F="div",wrapperClass:C,pointerEvents:T="auto",...I},A)=>{const{gl:k,camera:H,scene:N,size:V,raycaster:_,events:q,viewport:L}=o.useThree(),[D]=c.useState((()=>document.createElement(F))),G=c.useRef(),Z=c.useRef(null),B=c.useRef(0),J=c.useRef([0,0]),K=c.useRef(null),Q=c.useRef(null),U=(null==M?void 0:M.current)||q.connected||k.domElement.parentNode,X=c.useRef(null),Y=c.useRef(!1),ee=c.useMemo((()=>E&&"blending"!==E||Array.isArray(E)&&E.length&&function(e){return e&&"object"==typeof e&&"current"in e}(E[0])),[E]);c.useLayoutEffect((()=>{const e=k.domElement;E&&"blending"===E?(e.style.zIndex=`${Math.floor(O[0]/2)}`,e.style.position="absolute",e.style.pointerEvents="none"):(e.style.zIndex=null,e.style.position=null,e.style.pointerEvents=null)}),[E]),c.useLayoutEffect((()=>{if(Z.current){const e=G.current=l.createRoot(D);if(N.updateMatrixWorld(),w)D.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{const e=R(Z.current,H,V);D.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${e[0]}px,${e[1]}px,0);transform-origin:0 0;`}return U&&(s?U.prepend(D):U.appendChild(D)),()=>{U&&U.removeChild(D),e.unmount()}}}),[U,w]),c.useLayoutEffect((()=>{C&&(D.className=C)}),[C]);const te=c.useMemo((()=>w?{position:"absolute",top:0,left:0,width:V.width,height:V.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:x?"translate3d(-50%,-50%,0)":"none",...y&&{top:-V.height/2,left:-V.width/2,width:V.width,height:V.height},...r}),[r,x,y,V,w]),re=c.useMemo((()=>({position:"absolute",pointerEvents:T})),[T]);c.useLayoutEffect((()=>{var t,n;(Y.current=!1,w)?null==(t=G.current)||t.render(c.createElement("div",{ref:K,style:te},c.createElement("div",{ref:Q,style:re},c.createElement("div",{ref:A,className:i,style:r,children:e})))):null==(n=G.current)||n.render(c.createElement("div",{ref:A,style:te,className:i,children:e}))}));const ne=c.useRef(!0);o.useFrame((e=>{if(Z.current){H.updateMatrixWorld(),Z.current.updateWorldMatrix(!0,!1);const e=w?J.current:R(Z.current,H,V);if(w||Math.abs(B.current-H.zoom)>t||Math.abs(J.current[0]-e[0])>t||Math.abs(J.current[1]-e[1])>t){const t=function(e,t){const r=u.setFromMatrixPosition(e.matrixWorld),n=d.setFromMatrixPosition(t.matrixWorld),o=r.sub(n),i=t.getWorldDirection(m);return o.angleTo(i)>Math.PI/2}(Z.current,H);let r=!1;ee&&(Array.isArray(E)?r=E.map((e=>e.current)):"blending"!==E&&(r=[N]));const o=ne.current;if(r){const e=function(e,t,r,n){const o=u.setFromMatrixPosition(e.matrixWorld),i=o.clone();i.project(t),f.set(i.x,i.y),r.setFromCamera(f,t);const s=r.intersectObjects(n,!0);if(s.length){const e=s[0].distance;return o.distanceTo(r.ray.origin)<e}return!0}(Z.current,H,_,r);ne.current=e&&!t}else ne.current=!t;o!==ne.current&&(W?W(!ne.current):D.style.display=ne.current?"block":"none");const i=Math.floor(O[0]/2),s=E?ee?[O[0],i]:[i-1,0]:O;if(D.style.zIndex=`${function(e,t,r){if(t instanceof n.PerspectiveCamera||t instanceof n.OrthographicCamera){const n=u.setFromMatrixPosition(e.matrixWorld),o=d.setFromMatrixPosition(t.matrixWorld),i=n.distanceTo(o),s=(r[1]-r[0])/(t.far-t.near),a=r[1]-s*t.far;return Math.round(s*i+a)}}(Z.current,H,s)}`,w){const[e,t]=[V.width/2,V.height/2],r=H.projectionMatrix.elements[5]*t,{isOrthographicCamera:n,top:o,left:i,bottom:s,right:a}=H,c=v(H.matrixWorldInverse),l=n?`scale(${r})translate(${p(-(a+i)/2)}px,${p((o+s)/2)}px)`:`translateZ(${r}px)`;let u=Z.current.matrixWorld;P&&(u=H.matrixWorldInverse.clone().transpose().copyPosition(u).scale(Z.current.scale),u.elements[3]=u.elements[7]=u.elements[11]=0,u.elements[15]=1),D.style.width=V.width+"px",D.style.height=V.height+"px",D.style.perspective=n?"":`${r}px`,K.current&&Q.current&&(K.current.style.transform=`${l}${c}translate(${e}px,${t}px)`,Q.current.style.transform=g(u,1/((b||10)/400)))}else{const t=void 0===b?1:function(e,t){if(t instanceof n.OrthographicCamera)return t.zoom;if(t instanceof n.PerspectiveCamera){const r=u.setFromMatrixPosition(e.matrixWorld),n=d.setFromMatrixPosition(t.matrixWorld),o=t.fov*Math.PI/180,i=r.distanceTo(n);return 1/(2*Math.tan(o/2)*i)}return 1}(Z.current,H)*b;D.style.transform=`translate3d(${e[0]}px,${e[1]}px,0) scale(${t})`}J.current=e,B.current=H.zoom}}if(!ee&&X.current&&!Y.current)if(w){if(K.current){const e=K.current.children[0];if(null!=e&&e.clientWidth&&null!=e&&e.clientHeight){const{isOrthographicCamera:t}=H;if(t||z)I.scale&&(Array.isArray(I.scale)?I.scale instanceof n.Vector3?X.current.scale.copy(I.scale.clone().divideScalar(1)):X.current.scale.set(1/I.scale[0],1/I.scale[1],1/I.scale[2]):X.current.scale.setScalar(1/I.scale));else{const t=(b||10)/400,r=e.clientWidth*t,n=e.clientHeight*t;X.current.scale.set(r,n,1)}Y.current=!0}}}else{const t=D.children[0];if(null!=t&&t.clientWidth&&null!=t&&t.clientHeight){const e=1/L.factor,r=t.clientWidth*e,n=t.clientHeight*e;X.current.scale.set(r,n,1),Y.current=!0}X.current.lookAt(e.camera.position)}}));const oe=c.useMemo((()=>({vertexShader:w?void 0:'\n /*\n This shader is from the THREE\'s SpriteMaterial.\n We need to turn the backing plane into a Sprite\n (make it always face the camera) if "transfrom"\n is false.\n */\n #include <common>\n\n void main() {\n vec2 center = vec2(0., 1.);\n float rotation = 0.0;\n\n // This is somewhat arbitrary, but it seems to work well\n // Need to figure out how to derive this dynamically if it even matters\n float size = 0.03;\n\n vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n vec2 scale;\n scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n\n gl_Position = projectionMatrix * mvPosition;\n }\n ',fragmentShader:"\n void main() {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n "})),[w]);return c.createElement("group",a.default({},I,{ref:Z}),E&&!ee&&c.createElement("mesh",{castShadow:S,receiveShadow:$,ref:X},z||c.createElement("planeGeometry",null),j||c.createElement("shaderMaterial",{side:n.DoubleSide,vertexShader:oe.vertexShader,fragmentShader:oe.fragmentShader})))}));exports.Html=M;
package/web/Html.d.ts CHANGED
@@ -24,7 +24,7 @@ export interface HtmlProps extends Omit<Assign<React.HTMLAttributes<HTMLDivEleme
24
24
  wrapperClass?: string;
25
25
  pointerEvents?: PointerEventsProperties;
26
26
  occlude?: React.RefObject<Object3D>[] | boolean | 'raycast' | 'blending';
27
- onOcclude?: (visible: boolean) => null;
27
+ onOcclude?: (visible: boolean) => void;
28
28
  material?: React.ReactNode;
29
29
  geometry?: React.ReactNode;
30
30
  castShadow?: boolean;
package/web/Html.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import _extends from '@babel/runtime/helpers/esm/extends';
2
2
  import * as React from 'react';
3
3
  import * as ReactDOM from 'react-dom/client';
4
- import { Vector3, DoubleSide, OrthographicCamera, PerspectiveCamera } from 'three';
4
+ import { Vector3, DoubleSide, OrthographicCamera, PerspectiveCamera, Vector2 } from 'three';
5
5
  import { useThree, useFrame } from '@react-three/fiber';
6
6
 
7
7
  const v1 = /* @__PURE__ */new Vector3();
8
8
  const v2 = /* @__PURE__ */new Vector3();
9
9
  const v3 = /* @__PURE__ */new Vector3();
10
+ const v4 = /* @__PURE__ */new Vector2();
10
11
  function defaultCalculatePosition(el, camera, size) {
11
12
  const objectPos = v1.setFromMatrixPosition(el.matrixWorld);
12
13
  objectPos.project(camera);
@@ -25,7 +26,8 @@ function isObjectVisible(el, camera, raycaster, occlude) {
25
26
  const elPos = v1.setFromMatrixPosition(el.matrixWorld);
26
27
  const screenPos = elPos.clone();
27
28
  screenPos.project(camera);
28
- raycaster.setFromCamera(screenPos, camera);
29
+ v4.set(screenPos.x, screenPos.y);
30
+ raycaster.setFromCamera(v4, camera);
29
31
  const intersects = raycaster.intersectObjects(occlude, true);
30
32
  if (intersects.length) {
31
33
  const intersectionDistance = intersects[0].distance;
@@ -321,15 +323,15 @@ const Html = /* @__PURE__ */React.forwardRef(({
321
323
  /*
322
324
  This shader is from the THREE's SpriteMaterial.
323
325
  We need to turn the backing plane into a Sprite
324
- (make it always face the camera) if "transfrom"
325
- is false.
326
+ (make it always face the camera) if "transfrom"
327
+ is false.
326
328
  */
327
329
  #include <common>
328
330
 
329
331
  void main() {
330
332
  vec2 center = vec2(0., 1.);
331
333
  float rotation = 0.0;
332
-
334
+
333
335
  // This is somewhat arbitrary, but it seems to work well
334
336
  // Need to figure out how to derive this dynamically if it even matters
335
337
  float size = 0.03;
package/web/View.cjs.js CHANGED
@@ -1 +1 @@
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"),c=require("tunnel-rat");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var o=i(e),s=a(t),l=a(r),u=i(c);const f=e=>e&&e.isOrthographicCamera,d=new l.Color,m=u.default();function h(e){return"top"in e}function g(e,t){const{right:r,top:n,left:c,bottom:i,width:a,height:o}=t,s=t.bottom<0||n>e.height||r<0||t.left>e.width;if(h(e)){const t=e.top+e.height-i;return{position:{width:a,height:o,left:c-e.left,top:n,bottom:t,right:r},isOffscreen:s}}return{position:{width:a,height:o,top:n,left:c,bottom:e.height-i,right:r},isOffscreen:s}}function p(e,{left:t,bottom:r,width:n,height:c}){let i;const a=n/c;return f(e.camera)?e.camera.left===n/-2&&e.camera.right===n/2&&e.camera.top===c/2&&e.camera.bottom===c/-2||(Object.assign(e.camera,{left:n/-2,right:n/2,top:c/2,bottom:c/-2}),e.camera.updateProjectionMatrix()):e.camera.aspect!==a&&(e.camera.aspect=a,e.camera.updateProjectionMatrix()),i=e.gl.autoClear,e.gl.autoClear=!1,e.gl.setViewport(t,r,n,c),e.gl.setScissor(t,r,n,c),e.gl.setScissorTest(!0),i}function v(e,t){e.gl.setScissorTest(!1),e.gl.autoClear=t}function b(e){e.gl.getClearColor(d),e.gl.setClearColor(d,e.gl.getClearAlpha()),e.gl.clear(!0,!0)}function w({visible:e=!0,canvasSize:t,scene:r,index:c,children:i,frames:a,rect:o,track:l}){const u=n.useThree(),[f,d]=s.useState(!1);let m=0;return n.useFrame((n=>{var c;(a===1/0||m<=a)&&(o.current=null==(c=l.current)?void 0:c.getBoundingClientRect(),m++);if(o.current){const{position:c,isOffscreen:a}=g(t,o.current);if(f!==a&&d(a),e&&!f&&o.current){const e=p(n,c);n.gl.render(i?n.scene:r,n.camera),v(n,e)}}}),c),s.useLayoutEffect((()=>{const r=o.current;if(r&&(!e||!f)){const{position:e}=g(t,r),n=p(u,e);b(u),v(u,n)}}),[e,f]),s.useEffect((()=>{const e=o.current,r=u.get().events.connected;return u.setEvents({connected:l.current}),()=>{if(e){const{position:r}=g(t,e),n=p(u,r);b(u),v(u,n)}u.setEvents({connected:r})}}),[]),s.useEffect((()=>{h(t)||console.warn("Detected @react-three/fiber canvas size does not include position information. <View /> may not work as expected. Upgrade to @react-three/fiber ^8.1.0 for support.\n See https://github.com/pmndrs/drei/issues/944")}),[]),s.createElement(s.Fragment,null,i,s.createElement("group",{onPointerOver:()=>null}))}const E=s.forwardRef((({track:e,visible:t=!0,index:r=1,id:c,style:i,className:a,frames:u=1/0,children:f,...d},m)=>{var h,g,p,v;const b=s.useRef(null),{size:E,scene:C}=n.useThree(),[O]=s.useState((()=>new l.Scene)),[x,y]=s.useReducer((()=>!0),!1),j=s.useCallback(((t,r)=>{if(b.current&&e.current&&t.target===e.current){const{width:e,height:n,left:c,top:i}=b.current,a=t.clientX-c,o=t.clientY-i;r.pointer.set(a/e*2-1,-o/n*2+1),r.raycaster.setFromCamera(r.pointer,r.camera)}}),[b,e]);return s.useEffect((()=>{var t;b.current=null==(t=e.current)?void 0:t.getBoundingClientRect(),y()}),[e]),s.createElement("group",o.default({ref:m},d),x&&n.createPortal(s.createElement(w,{visible:t,canvasSize:E,frames:u,scene:C,track:e,rect:b,index:r},f),O,{events:{compute:j,priority:r},size:{width:null==(h=b.current)?void 0:h.width,height:null==(g=b.current)?void 0:g.height,top:null==(p=b.current)?void 0:p.top,left:null==(v=b.current)?void 0:v.left}}))})),C=s.forwardRef((({as:e="div",id:t,visible:r,className:n,style:c,index:i=1,track:a,frames:l=1/0,children:u,...f},d)=>{const h=s.useId(),g=s.useRef(null);return s.useImperativeHandle(d,(()=>g.current)),s.createElement(s.Fragment,null,s.createElement(e,o.default({ref:g,id:t,className:n,style:c},f)),s.createElement(m.In,null,s.createElement(E,{visible:r,key:h,track:g,frames:l,index:i},u)))})),O=s.forwardRef(((e,t)=>s.useContext(n.context)?s.createElement(E,o.default({ref:t},e)):s.createElement(C,o.default({ref:t},e))));O.Port=()=>s.createElement(m.Out,null),exports.View=O;
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"),c=require("tunnel-rat");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var o=i(e),s=a(t),l=a(r),u=i(c);const f=e=>e&&e.isOrthographicCamera,d=new l.Color,m=u.default();function h(e){return"top"in e}function g(e,t){const{right:r,top:n,left:c,bottom:i,width:a,height:o}=t,s=t.bottom<0||n>e.height||r<0||t.left>e.width;if(h(e)){const t=e.top+e.height-i;return{position:{width:a,height:o,left:c-e.left,top:n,bottom:t,right:r},isOffscreen:s}}return{position:{width:a,height:o,top:n,left:c,bottom:e.height-i,right:r},isOffscreen:s}}function p(e,{left:t,bottom:r,width:n,height:c}){let i;const a=n/c;return f(e.camera)?e.camera.left===n/-2&&e.camera.right===n/2&&e.camera.top===c/2&&e.camera.bottom===c/-2||(Object.assign(e.camera,{left:n/-2,right:n/2,top:c/2,bottom:c/-2}),e.camera.updateProjectionMatrix()):e.camera.aspect!==a&&(e.camera.aspect=a,e.camera.updateProjectionMatrix()),i=e.gl.autoClear,e.gl.autoClear=!1,e.gl.setViewport(t,r,n,c),e.gl.setScissor(t,r,n,c),e.gl.setScissorTest(!0),i}function v(e,t){e.gl.setScissorTest(!1),e.gl.autoClear=t}function b(e){e.gl.getClearColor(d),e.gl.setClearColor(d,e.gl.getClearAlpha()),e.gl.clear(!0,!0)}function w({visible:e=!0,canvasSize:t,scene:r,index:c,children:i,frames:a,rect:o,track:l}){const u=n.useThree(),[f,d]=s.useState(!1);let m=0;return n.useFrame((n=>{var c;(a===1/0||m<=a)&&(l&&(o.current=null==(c=l.current)?void 0:c.getBoundingClientRect()),m++);if(o.current){const{position:c,isOffscreen:a}=g(t,o.current);if(f!==a&&d(a),e&&!f&&o.current){const e=p(n,c);n.gl.render(i?n.scene:r,n.camera),v(n,e)}}}),c),s.useLayoutEffect((()=>{const r=o.current;if(r&&(!e||!f)){const{position:e}=g(t,r),n=p(u,e);b(u),v(u,n)}}),[e,f]),s.useEffect((()=>{if(!l)return;const e=o.current,r=u.get().events.connected;return u.setEvents({connected:l.current}),()=>{if(e){const{position:r}=g(t,e),n=p(u,r);b(u),v(u,n)}u.setEvents({connected:r})}}),[l]),s.useEffect((()=>{h(t)||console.warn("Detected @react-three/fiber canvas size does not include position information. <View /> may not work as expected. Upgrade to @react-three/fiber ^8.1.0 for support.\n See https://github.com/pmndrs/drei/issues/944")}),[]),s.createElement(s.Fragment,null,i,s.createElement("group",{onPointerOver:()=>null}))}const E=s.forwardRef((({track:e,visible:t=!0,index:r=1,id:c,style:i,className:a,frames:u=1/0,children:f,...d},m)=>{var h,g,p,v;const b=s.useRef(null),{size:E,scene:C}=n.useThree(),[O]=s.useState((()=>new l.Scene)),[x,y]=s.useReducer((()=>!0),!1),j=s.useCallback(((t,r)=>{if(b.current&&e&&e.current&&t.target===e.current){const{width:e,height:n,left:c,top:i}=b.current,a=t.clientX-c,o=t.clientY-i;r.pointer.set(a/e*2-1,-o/n*2+1),r.raycaster.setFromCamera(r.pointer,r.camera)}}),[b,e]);return s.useEffect((()=>{var t;e&&(b.current=null==(t=e.current)?void 0:t.getBoundingClientRect()),y()}),[e]),s.createElement("group",o.default({ref:m},d),x&&n.createPortal(s.createElement(w,{visible:t,canvasSize:E,frames:u,scene:C,track:e,rect:b,index:r},f),O,{events:{compute:j,priority:r},size:{width:null==(h=b.current)?void 0:h.width,height:null==(g=b.current)?void 0:g.height,top:null==(p=b.current)?void 0:p.top,left:null==(v=b.current)?void 0:v.left}}))})),C=s.forwardRef((({as:e="div",id:t,visible:r,className:n,style:c,index:i=1,track:a,frames:l=1/0,children:u,...f},d)=>{const h=s.useId(),g=s.useRef(null);return s.useImperativeHandle(d,(()=>g.current)),s.createElement(s.Fragment,null,s.createElement(e,o.default({ref:g,id:t,className:n,style:c},f)),s.createElement(m.In,null,s.createElement(E,{visible:r,key:h,track:g,frames:l,index:i},u)))})),O=s.forwardRef(((e,t)=>s.useContext(n.context)?s.createElement(E,o.default({ref:t},e)):s.createElement(C,o.default({ref:t},e))));O.Port=()=>s.createElement(m.Out,null),exports.View=O;
package/web/View.d.ts CHANGED
@@ -15,7 +15,7 @@ export type ContainerProps = {
15
15
  children?: React.ReactNode;
16
16
  frames: number;
17
17
  rect: React.MutableRefObject<DOMRect>;
18
- track: React.MutableRefObject<HTMLElement>;
18
+ track?: React.MutableRefObject<HTMLElement>;
19
19
  canvasSize: LegacyCanvasSize | CanvasSize;
20
20
  };
21
21
  export type ViewProps = {
@@ -27,7 +27,7 @@ export type ViewProps = {
27
27
  index?: number;
28
28
  frames?: number;
29
29
  children?: React.ReactNode;
30
- track: React.MutableRefObject<HTMLElement>;
30
+ track?: React.MutableRefObject<HTMLElement>;
31
31
  };
32
32
  export type ViewportProps = {
33
33
  Port: () => React.ReactNode;
package/web/View.js CHANGED
@@ -113,7 +113,7 @@ function Container({
113
113
  useFrame(state => {
114
114
  if (frames === Infinity || frameCount <= frames) {
115
115
  var _track$current;
116
- rect.current = (_track$current = track.current) == null ? void 0 : _track$current.getBoundingClientRect();
116
+ if (track) rect.current = (_track$current = track.current) == null ? void 0 : _track$current.getBoundingClientRect();
117
117
  frameCount++;
118
118
  }
119
119
  if (rect.current) {
@@ -143,6 +143,7 @@ function Container({
143
143
  }
144
144
  }, [visible, isOffscreen]);
145
145
  React.useEffect(() => {
146
+ if (!track) return;
146
147
  const curRect = rect.current;
147
148
  // Connect the event layer to the tracking element
148
149
  const old = rootState.get().events.connected;
@@ -162,7 +163,7 @@ function Container({
162
163
  connected: old
163
164
  });
164
165
  };
165
- }, []);
166
+ }, [track]);
166
167
  React.useEffect(() => {
167
168
  if (isNonLegacyCanvasSize(canvasSize)) return;
168
169
  console.warn('Detected @react-three/fiber canvas size does not include position information. <View /> may not work as expected. ' + 'Upgrade to @react-three/fiber ^8.1.0 for support.\n See https://github.com/pmndrs/drei/issues/944');
@@ -191,7 +192,7 @@ const CanvasView = /*#__PURE__*/React.forwardRef(({
191
192
  const [virtualScene] = React.useState(() => new THREE.Scene());
192
193
  const [ready, toggle] = React.useReducer(() => true, false);
193
194
  const compute = React.useCallback((event, state) => {
194
- if (rect.current && track.current && event.target === track.current) {
195
+ if (rect.current && track && track.current && event.target === track.current) {
195
196
  const {
196
197
  width,
197
198
  height,
@@ -207,7 +208,7 @@ const CanvasView = /*#__PURE__*/React.forwardRef(({
207
208
  React.useEffect(() => {
208
209
  var _track$current2;
209
210
  // We need the tracking elements bounds beforehand in order to inject it into the portal
210
- rect.current = (_track$current2 = track.current) == null ? void 0 : _track$current2.getBoundingClientRect();
211
+ if (track) rect.current = (_track$current2 = track.current) == null ? void 0 : _track$current2.getBoundingClientRect();
211
212
  // And now we can proceed
212
213
  toggle();
213
214
  }, [track]);
package/web/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Html.cjs.js"),r=require("./CycleRaycast.cjs.js"),s=require("./useCursor.cjs.js"),o=require("./Loader.cjs.js"),t=require("./ScrollControls.cjs.js"),i=require("./PresentationControls.cjs.js"),c=require("./KeyboardControls.cjs.js"),a=require("./Select.cjs.js"),u=require("./View.cjs.js"),n=require("./pivotControls/index.cjs.js"),j=require("./FaceControls.cjs.js"),p=require("./DragControls.cjs.js"),l=require("./FaceLandmarker.cjs.js"),x=require("./Facemesh.cjs.js"),q=require("../core/Billboard.cjs.js"),d=require("../core/ScreenSpace.cjs.js"),C=require("../core/ScreenSizer.cjs.js"),m=require("../core/QuadraticBezierLine.cjs.js"),h=require("../core/CubicBezierLine.cjs.js"),S=require("../core/CatmullRomLine.cjs.js"),M=require("../core/Line.cjs.js"),P=require("../core/PositionalAudio.cjs.js"),b=require("../core/Text.cjs.js"),T=require("../core/Text3D.cjs.js"),f=require("../core/Effects.cjs.js"),g=require("../core/GradientTexture.cjs.js"),v=require("../core/Image.cjs.js"),B=require("../core/Edges.cjs.js"),F=require("../core/Outlines.cjs.js"),A=require("../core/Trail.cjs.js"),L=require("../core/Sampler.cjs.js"),D=require("../core/ComputedAttribute.cjs.js"),R=require("../core/Clone.cjs.js"),E=require("../core/MarchingCubes.cjs.js"),k=require("../core/Decal.cjs.js"),G=require("../core/Svg.cjs.js"),w=require("../core/Gltf.cjs.js"),y=require("../core/AsciiRenderer.cjs.js"),z=require("../core/Splat.cjs.js"),O=require("../core/OrthographicCamera.cjs.js"),I=require("../core/PerspectiveCamera.cjs.js"),H=require("../core/CubeCamera.cjs.js"),V=require("../core/DeviceOrientationControls.cjs.js"),K=require("../core/FlyControls.cjs.js"),W=require("../core/MapControls.cjs.js"),Q=require("../core/OrbitControls.cjs.js"),X=require("../core/TrackballControls.cjs.js"),N=require("../core/ArcballControls.cjs.js"),U=require("../core/TransformControls.cjs.js"),_=require("../core/PointerLockControls.cjs.js"),J=require("../core/FirstPersonControls.cjs.js"),Y=require("../core/CameraControls.cjs.js"),Z=require("../core/MotionPathControls.cjs.js"),$=require("../core/GizmoHelper.cjs.js"),ee=require("../core/GizmoViewcube.cjs.js"),re=require("../core/GizmoViewport.cjs.js"),se=require("../core/Grid.cjs.js"),oe=require("../core/useCubeTexture.cjs.js"),te=require("../core/useFBX.cjs.js"),ie=require("../core/useGLTF.cjs.js"),ce=require("../core/useKTX2.cjs.js"),ae=require("../core/useProgress.cjs.js"),ue=require("../core/useTexture.cjs.js"),ne=require("../core/useVideoTexture.cjs.js"),je=require("../core/useFont.cjs.js"),pe=require("../core/useSpriteLoader.cjs.js"),le=require("../core/Stats.cjs.js"),xe=require("../core/StatsGl.cjs.js"),qe=require("../core/useDepthBuffer.cjs.js"),de=require("../core/useAspect.cjs.js"),Ce=require("../core/useCamera.cjs.js"),me=require("../core/useDetectGPU.cjs.js"),he=require("../core/useHelper.cjs.js"),Se=require("../core/useBVH.cjs.js"),Me=require("../core/useContextBridge.cjs.js"),Pe=require("../core/useAnimations.cjs.js"),be=require("../core/useFBO.cjs.js"),Te=require("../core/useIntersect.cjs.js"),fe=require("../core/useBoxProjectedEnv.cjs.js"),ge=require("../core/BBAnchor.cjs.js"),ve=require("../core/useTrailTexture.cjs.js"),Be=require("../core/useCubeCamera.cjs.js"),Fe=require("../core/Example.cjs.js"),Ae=require("../core/SpriteAnimator.cjs.js"),Le=require("../core/CurveModifier.cjs.js"),De=require("../core/MeshDistortMaterial.cjs.js"),Re=require("../core/MeshWobbleMaterial.cjs.js"),Ee=require("../core/MeshReflectorMaterial.cjs.js"),ke=require("../core/MeshRefractionMaterial.cjs.js"),Ge=require("../core/MeshTransmissionMaterial.cjs.js"),we=require("../core/MeshDiscardMaterial.cjs.js"),ye=require("../core/PointMaterial.cjs.js"),ze=require("../core/shaderMaterial.cjs.js"),Oe=require("../core/softShadows.cjs.js"),Ie=require("../core/shapes.cjs.js"),He=require("../core/RoundedBox.cjs.js"),Ve=require("../core/ScreenQuad.cjs.js"),Ke=require("../core/Center.cjs.js"),We=require("../core/Resize.cjs.js"),Qe=require("../core/Bounds.cjs.js"),Xe=require("../core/CameraShake.cjs.js"),Ne=require("../core/Float.cjs.js"),Ue=require("../core/Stage.cjs.js"),_e=require("../core/Backdrop.cjs.js"),Je=require("../core/Shadow.cjs.js"),Ye=require("../core/Caustics.cjs.js"),Ze=require("../core/ContactShadows.cjs.js"),$e=require("../core/AccumulativeShadows.cjs.js"),er=require("../core/Reflector.cjs.js"),rr=require("../core/SpotLight.cjs.js"),sr=require("../core/Environment.cjs.js"),or=require("../core/Lightformer.cjs.js"),tr=require("../core/Sky.cjs.js"),ir=require("../core/Stars.cjs.js"),cr=require("../core/Cloud.cjs.js"),ar=require("../core/Sparkles.cjs.js"),ur=require("../core/useEnvironment.cjs.js"),nr=require("../core/useMatcapTexture.cjs.js"),jr=require("../core/useNormalTexture.cjs.js"),pr=require("../core/Wireframe.cjs.js"),lr=require("../core/ShadowAlpha.cjs.js"),xr=require("../core/Points.cjs.js"),qr=require("../core/Instances.cjs.js"),dr=require("../core/Segments.cjs.js"),Cr=require("../core/Detailed.cjs.js"),mr=require("../core/Preload.cjs.js"),hr=require("../core/BakeShadows.cjs.js"),Sr=require("../core/meshBounds.cjs.js"),Mr=require("../core/AdaptiveDpr.cjs.js"),Pr=require("../core/AdaptiveEvents.cjs.js"),br=require("../core/PerformanceMonitor.cjs.js"),Tr=require("../core/RenderTexture.cjs.js"),fr=require("../core/RenderCubeTexture.cjs.js"),gr=require("../core/Mask.cjs.js"),vr=require("../core/Hud.cjs.js"),Br=require("../core/Fisheye.cjs.js"),Fr=require("../core/MeshPortalMaterial.cjs.js"),Ar=require("../core/calculateScaleFactor.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("react-dom/client"),require("three"),require("@react-three/fiber"),require("zustand"),require("maath"),require("@react-spring/three"),require("@use-gesture/react"),require("zustand/middleware"),require("three-stdlib"),require("zustand/shallow"),require("tunnel-rat"),require("./pivotControls/AxisArrow.cjs.js"),require("./pivotControls/context.cjs.js"),require("./pivotControls/AxisRotator.cjs.js"),require("./pivotControls/PlaneSlider.cjs.js"),require("suspend-react"),require("../helpers/constants.cjs.js"),require("meshline"),require("camera-controls"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("stats-gl"),require("detect-gpu"),require("three-mesh-bvh"),require("react-composer"),require("../helpers/deprecated.cjs.js"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("uuid"),require("../materials/WireframeMaterial.cjs.js"),exports.Html=e.Html,exports.CycleRaycast=r.CycleRaycast,exports.useCursor=s.useCursor,exports.Loader=o.Loader,exports.Scroll=t.Scroll,exports.ScrollControls=t.ScrollControls,exports.useScroll=t.useScroll,exports.PresentationControls=i.PresentationControls,exports.KeyboardControls=c.KeyboardControls,exports.useKeyboardControls=c.useKeyboardControls,exports.Select=a.Select,exports.useSelect=a.useSelect,exports.View=u.View,exports.PivotControls=n.PivotControls,exports.FaceControls=j.FaceControls,exports.useFaceControls=j.useFaceControls,exports.DragControls=p.DragControls,exports.FaceLandmarker=l.FaceLandmarker,exports.FaceLandmarkerDefaults=l.FaceLandmarkerDefaults,exports.useFaceLandmarker=l.useFaceLandmarker,exports.Facemesh=x.Facemesh,exports.FacemeshDatas=x.FacemeshDatas,exports.FacemeshEye=x.FacemeshEye,exports.FacemeshEyeDefaults=x.FacemeshEyeDefaults,exports.Billboard=q.Billboard,exports.ScreenSpace=d.ScreenSpace,exports.ScreenSizer=C.ScreenSizer,exports.QuadraticBezierLine=m.QuadraticBezierLine,exports.CubicBezierLine=h.CubicBezierLine,exports.CatmullRomLine=S.CatmullRomLine,exports.Line=M.Line,exports.PositionalAudio=P.PositionalAudio,exports.Text=b.Text,exports.Text3D=T.Text3D,exports.Effects=f.Effects,exports.isWebGL2Available=f.isWebGL2Available,exports.GradientTexture=g.GradientTexture,exports.GradientType=g.GradientType,exports.Image=v.Image,exports.Edges=B.Edges,exports.Outlines=F.Outlines,exports.Trail=A.Trail,exports.useTrail=A.useTrail,exports.Sampler=L.Sampler,exports.useSurfaceSampler=L.useSurfaceSampler,exports.ComputedAttribute=D.ComputedAttribute,exports.Clone=R.Clone,exports.MarchingCube=E.MarchingCube,exports.MarchingCubes=E.MarchingCubes,exports.MarchingPlane=E.MarchingPlane,exports.Decal=k.Decal,exports.Svg=G.Svg,exports.Gltf=w.Gltf,exports.AsciiRenderer=y.AsciiRenderer,exports.Splat=z.Splat,exports.OrthographicCamera=O.OrthographicCamera,exports.PerspectiveCamera=I.PerspectiveCamera,exports.CubeCamera=H.CubeCamera,exports.DeviceOrientationControls=V.DeviceOrientationControls,exports.FlyControls=K.FlyControls,exports.MapControls=W.MapControls,exports.OrbitControls=Q.OrbitControls,exports.TrackballControls=X.TrackballControls,exports.ArcballControls=N.ArcballControls,exports.TransformControls=U.TransformControls,exports.PointerLockControls=_.PointerLockControls,exports.FirstPersonControls=J.FirstPersonControls,exports.CameraControls=Y.CameraControls,exports.MotionPathControls=Z.MotionPathControls,exports.useMotion=Z.useMotion,exports.GizmoHelper=$.GizmoHelper,exports.useGizmoContext=$.useGizmoContext,exports.GizmoViewcube=ee.GizmoViewcube,exports.GizmoViewport=re.GizmoViewport,exports.Grid=se.Grid,exports.useCubeTexture=oe.useCubeTexture,exports.useFBX=te.useFBX,exports.useGLTF=ie.useGLTF,exports.useKTX2=ce.useKTX2,exports.useProgress=ae.useProgress,exports.IsObject=ue.IsObject,exports.useTexture=ue.useTexture,exports.useVideoTexture=ne.useVideoTexture,exports.useFont=je.useFont,exports.calculateAspectRatio=pe.calculateAspectRatio,exports.getFirstItem=pe.getFirstItem,exports.useSpriteLoader=pe.useSpriteLoader,exports.Stats=le.Stats,exports.StatsGl=xe.StatsGl,exports.useDepthBuffer=qe.useDepthBuffer,exports.useAspect=de.useAspect,exports.useCamera=Ce.useCamera,exports.useDetectGPU=me.useDetectGPU,exports.useHelper=he.useHelper,exports.Bvh=Se.Bvh,exports.useBVH=Se.useBVH,exports.useContextBridge=Me.useContextBridge,exports.useAnimations=Pe.useAnimations,exports.useFBO=be.useFBO,exports.useIntersect=Te.useIntersect,exports.useBoxProjectedEnv=fe.useBoxProjectedEnv,exports.BBAnchor=ge.BBAnchor,exports.useTrailTexture=ve.useTrailTexture,exports.useCubeCamera=Be.useCubeCamera,exports.Example=Fe.Example,exports.SpriteAnimator=Ae.SpriteAnimator,exports.useSpriteAnimator=Ae.useSpriteAnimator,exports.CurveModifier=Le.CurveModifier,exports.MeshDistortMaterial=De.MeshDistortMaterial,exports.MeshWobbleMaterial=Re.MeshWobbleMaterial,exports.MeshReflectorMaterial=Ee.MeshReflectorMaterial,exports.MeshRefractionMaterial=ke.MeshRefractionMaterial,exports.MeshTransmissionMaterial=Ge.MeshTransmissionMaterial,exports.MeshDiscardMaterial=we.MeshDiscardMaterial,exports.PointMaterial=ye.PointMaterial,exports.PointMaterialImpl=ye.PointMaterialImpl,exports.shaderMaterial=ze.shaderMaterial,exports.SoftShadows=Oe.SoftShadows,exports.Box=Ie.Box,exports.Capsule=Ie.Capsule,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.Plane=Ie.Plane,exports.Polyhedron=Ie.Polyhedron,exports.Ring=Ie.Ring,exports.Shape=Ie.Shape,exports.Sphere=Ie.Sphere,exports.Tetrahedron=Ie.Tetrahedron,exports.Torus=Ie.Torus,exports.TorusKnot=Ie.TorusKnot,exports.Tube=Ie.Tube,exports.RoundedBox=He.RoundedBox,exports.ScreenQuad=Ve.ScreenQuad,exports.Center=Ke.Center,exports.Resize=We.Resize,exports.Bounds=Qe.Bounds,exports.useBounds=Qe.useBounds,exports.CameraShake=Xe.CameraShake,exports.Float=Ne.Float,exports.Stage=Ue.Stage,exports.Backdrop=_e.Backdrop,exports.Shadow=Je.Shadow,exports.Caustics=Ye.Caustics,exports.ContactShadows=Ze.ContactShadows,exports.AccumulativeShadows=$e.AccumulativeShadows,exports.RandomizedLight=$e.RandomizedLight,exports.accumulativeContext=$e.accumulativeContext,exports.Reflector=er.Reflector,exports.SpotLight=rr.SpotLight,exports.SpotLightShadow=rr.SpotLightShadow,exports.Environment=sr.Environment,exports.EnvironmentCube=sr.EnvironmentCube,exports.EnvironmentMap=sr.EnvironmentMap,exports.EnvironmentPortal=sr.EnvironmentPortal,exports.Lightformer=or.Lightformer,exports.Sky=tr.Sky,exports.calcPosFromAngles=tr.calcPosFromAngles,exports.Stars=ir.Stars,exports.Cloud=cr.Cloud,exports.CloudInstance=cr.CloudInstance,exports.Clouds=cr.Clouds,exports.Sparkles=ar.Sparkles,exports.useEnvironment=ur.useEnvironment,exports.useMatcapTexture=nr.useMatcapTexture,exports.useNormalTexture=jr.useNormalTexture,exports.Wireframe=pr.Wireframe,exports.ShadowAlpha=lr.ShadowAlpha,exports.Point=xr.Point,exports.Points=xr.Points,exports.PointsBuffer=xr.PointsBuffer,exports.PositionPoint=xr.PositionPoint,exports.Instance=qr.Instance,exports.Instances=qr.Instances,exports.Merged=qr.Merged,exports.Segment=dr.Segment,exports.SegmentObject=dr.SegmentObject,exports.Segments=dr.Segments,exports.Detailed=Cr.Detailed,exports.Preload=mr.Preload,exports.BakeShadows=hr.BakeShadows,exports.meshBounds=Sr.meshBounds,exports.AdaptiveDpr=Mr.AdaptiveDpr,exports.AdaptiveEvents=Pr.AdaptiveEvents,exports.PerformanceMonitor=br.PerformanceMonitor,exports.usePerformanceMonitor=br.usePerformanceMonitor,exports.RenderTexture=Tr.RenderTexture,exports.RenderCubeTexture=fr.RenderCubeTexture,exports.Mask=gr.Mask,exports.useMask=gr.useMask,exports.Hud=vr.Hud,exports.Fisheye=Br.Fisheye,exports.MeshPortalMaterial=Fr.MeshPortalMaterial,exports.calculateScaleFactor=Ar.calculateScaleFactor;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Html.cjs.js"),r=require("./CycleRaycast.cjs.js"),s=require("./useCursor.cjs.js"),o=require("./Loader.cjs.js"),t=require("./ScrollControls.cjs.js"),i=require("./PresentationControls.cjs.js"),c=require("./KeyboardControls.cjs.js"),a=require("./Select.cjs.js"),u=require("./View.cjs.js"),n=require("./pivotControls/index.cjs.js"),j=require("./FaceControls.cjs.js"),p=require("./DragControls.cjs.js"),l=require("./FaceLandmarker.cjs.js"),x=require("./Facemesh.cjs.js"),q=require("../core/Billboard.cjs.js"),d=require("../core/ScreenSpace.cjs.js"),C=require("../core/ScreenSizer.cjs.js"),m=require("../core/QuadraticBezierLine.cjs.js"),h=require("../core/CubicBezierLine.cjs.js"),S=require("../core/CatmullRomLine.cjs.js"),M=require("../core/Line.cjs.js"),P=require("../core/PositionalAudio.cjs.js"),b=require("../core/Text.cjs.js"),T=require("../core/Text3D.cjs.js"),f=require("../core/Effects.cjs.js"),g=require("../core/GradientTexture.cjs.js"),v=require("../core/Image.cjs.js"),B=require("../core/Edges.cjs.js"),F=require("../core/Outlines.cjs.js"),A=require("../core/Trail.cjs.js"),L=require("../core/Sampler.cjs.js"),D=require("../core/ComputedAttribute.cjs.js"),R=require("../core/Clone.cjs.js"),E=require("../core/MarchingCubes.cjs.js"),k=require("../core/Decal.cjs.js"),G=require("../core/Svg.cjs.js"),w=require("../core/Gltf.cjs.js"),y=require("../core/AsciiRenderer.cjs.js"),z=require("../core/Splat.cjs.js"),O=require("../core/OrthographicCamera.cjs.js"),I=require("../core/PerspectiveCamera.cjs.js"),H=require("../core/CubeCamera.cjs.js"),V=require("../core/DeviceOrientationControls.cjs.js"),K=require("../core/FlyControls.cjs.js"),W=require("../core/MapControls.cjs.js"),Q=require("../core/OrbitControls.cjs.js"),X=require("../core/TrackballControls.cjs.js"),N=require("../core/ArcballControls.cjs.js"),U=require("../core/TransformControls.cjs.js"),_=require("../core/PointerLockControls.cjs.js"),J=require("../core/FirstPersonControls.cjs.js"),Y=require("../core/CameraControls.cjs.js"),Z=require("../core/MotionPathControls.cjs.js"),$=require("../core/GizmoHelper.cjs.js"),ee=require("../core/GizmoViewcube.cjs.js"),re=require("../core/GizmoViewport.cjs.js"),se=require("../core/Grid.cjs.js"),oe=require("../core/useCubeTexture.cjs.js"),te=require("../core/useFBX.cjs.js"),ie=require("../core/useGLTF.cjs.js"),ce=require("../core/useKTX2.cjs.js"),ae=require("../core/useProgress.cjs.js"),ue=require("../core/useTexture.cjs.js"),ne=require("../core/useVideoTexture.cjs.js"),je=require("../core/useFont.cjs.js"),pe=require("../core/useSpriteLoader.cjs.js"),le=require("../core/Helper.cjs.js"),xe=require("../core/Stats.cjs.js"),qe=require("../core/StatsGl.cjs.js"),de=require("../core/useDepthBuffer.cjs.js"),Ce=require("../core/useAspect.cjs.js"),me=require("../core/useCamera.cjs.js"),he=require("../core/useDetectGPU.cjs.js"),Se=require("../core/useHelper.cjs.js"),Me=require("../core/useBVH.cjs.js"),Pe=require("../core/useContextBridge.cjs.js"),be=require("../core/useAnimations.cjs.js"),Te=require("../core/useFBO.cjs.js"),fe=require("../core/useIntersect.cjs.js"),ge=require("../core/useBoxProjectedEnv.cjs.js"),ve=require("../core/BBAnchor.cjs.js"),Be=require("../core/useTrailTexture.cjs.js"),Fe=require("../core/useCubeCamera.cjs.js"),Ae=require("../core/Example.cjs.js"),Le=require("../core/SpriteAnimator.cjs.js"),De=require("../core/CurveModifier.cjs.js"),Re=require("../core/MeshDistortMaterial.cjs.js"),Ee=require("../core/MeshWobbleMaterial.cjs.js"),ke=require("../core/MeshReflectorMaterial.cjs.js"),Ge=require("../core/MeshRefractionMaterial.cjs.js"),we=require("../core/MeshTransmissionMaterial.cjs.js"),ye=require("../core/MeshDiscardMaterial.cjs.js"),ze=require("../core/PointMaterial.cjs.js"),Oe=require("../core/shaderMaterial.cjs.js"),Ie=require("../core/softShadows.cjs.js"),He=require("../core/shapes.cjs.js"),Ve=require("../core/RoundedBox.cjs.js"),Ke=require("../core/ScreenQuad.cjs.js"),We=require("../core/Center.cjs.js"),Qe=require("../core/Resize.cjs.js"),Xe=require("../core/Bounds.cjs.js"),Ne=require("../core/CameraShake.cjs.js"),Ue=require("../core/Float.cjs.js"),_e=require("../core/Stage.cjs.js"),Je=require("../core/Backdrop.cjs.js"),Ye=require("../core/Shadow.cjs.js"),Ze=require("../core/Caustics.cjs.js"),$e=require("../core/ContactShadows.cjs.js"),er=require("../core/AccumulativeShadows.cjs.js"),rr=require("../core/Reflector.cjs.js"),sr=require("../core/SpotLight.cjs.js"),or=require("../core/Environment.cjs.js"),tr=require("../core/Lightformer.cjs.js"),ir=require("../core/Sky.cjs.js"),cr=require("../core/Stars.cjs.js"),ar=require("../core/Cloud.cjs.js"),ur=require("../core/Sparkles.cjs.js"),nr=require("../core/useEnvironment.cjs.js"),jr=require("../core/useMatcapTexture.cjs.js"),pr=require("../core/useNormalTexture.cjs.js"),lr=require("../core/Wireframe.cjs.js"),xr=require("../core/ShadowAlpha.cjs.js"),qr=require("../core/Points.cjs.js"),dr=require("../core/Instances.cjs.js"),Cr=require("../core/Segments.cjs.js"),mr=require("../core/Detailed.cjs.js"),hr=require("../core/Preload.cjs.js"),Sr=require("../core/BakeShadows.cjs.js"),Mr=require("../core/meshBounds.cjs.js"),Pr=require("../core/AdaptiveDpr.cjs.js"),br=require("../core/AdaptiveEvents.cjs.js"),Tr=require("../core/PerformanceMonitor.cjs.js"),fr=require("../core/RenderTexture.cjs.js"),gr=require("../core/RenderCubeTexture.cjs.js"),vr=require("../core/Mask.cjs.js"),Br=require("../core/Hud.cjs.js"),Fr=require("../core/Fisheye.cjs.js"),Ar=require("../core/MeshPortalMaterial.cjs.js"),Lr=require("../core/calculateScaleFactor.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("react-dom/client"),require("three"),require("@react-three/fiber"),require("zustand"),require("maath"),require("@react-spring/three"),require("@use-gesture/react"),require("zustand/middleware"),require("three-stdlib"),require("zustand/shallow"),require("tunnel-rat"),require("./pivotControls/AxisArrow.cjs.js"),require("./pivotControls/context.cjs.js"),require("./pivotControls/AxisRotator.cjs.js"),require("./pivotControls/PlaneSlider.cjs.js"),require("./pivotControls/ScalingSphere.cjs.js"),require("suspend-react"),require("../helpers/constants.cjs.js"),require("meshline"),require("camera-controls"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("stats-gl"),require("detect-gpu"),require("three-mesh-bvh"),require("react-composer"),require("../helpers/deprecated.cjs.js"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("uuid"),require("../materials/WireframeMaterial.cjs.js"),exports.Html=e.Html,exports.CycleRaycast=r.CycleRaycast,exports.useCursor=s.useCursor,exports.Loader=o.Loader,exports.Scroll=t.Scroll,exports.ScrollControls=t.ScrollControls,exports.useScroll=t.useScroll,exports.PresentationControls=i.PresentationControls,exports.KeyboardControls=c.KeyboardControls,exports.useKeyboardControls=c.useKeyboardControls,exports.Select=a.Select,exports.useSelect=a.useSelect,exports.View=u.View,exports.PivotControls=n.PivotControls,exports.FaceControls=j.FaceControls,exports.useFaceControls=j.useFaceControls,exports.DragControls=p.DragControls,exports.FaceLandmarker=l.FaceLandmarker,exports.FaceLandmarkerDefaults=l.FaceLandmarkerDefaults,exports.useFaceLandmarker=l.useFaceLandmarker,exports.Facemesh=x.Facemesh,exports.FacemeshDatas=x.FacemeshDatas,exports.FacemeshEye=x.FacemeshEye,exports.FacemeshEyeDefaults=x.FacemeshEyeDefaults,exports.Billboard=q.Billboard,exports.ScreenSpace=d.ScreenSpace,exports.ScreenSizer=C.ScreenSizer,exports.QuadraticBezierLine=m.QuadraticBezierLine,exports.CubicBezierLine=h.CubicBezierLine,exports.CatmullRomLine=S.CatmullRomLine,exports.Line=M.Line,exports.PositionalAudio=P.PositionalAudio,exports.Text=b.Text,exports.Text3D=T.Text3D,exports.Effects=f.Effects,exports.isWebGL2Available=f.isWebGL2Available,exports.GradientTexture=g.GradientTexture,exports.GradientType=g.GradientType,exports.Image=v.Image,exports.Edges=B.Edges,exports.Outlines=F.Outlines,exports.Trail=A.Trail,exports.useTrail=A.useTrail,exports.Sampler=L.Sampler,exports.useSurfaceSampler=L.useSurfaceSampler,exports.ComputedAttribute=D.ComputedAttribute,exports.Clone=R.Clone,exports.MarchingCube=E.MarchingCube,exports.MarchingCubes=E.MarchingCubes,exports.MarchingPlane=E.MarchingPlane,exports.Decal=k.Decal,exports.Svg=G.Svg,exports.Gltf=w.Gltf,exports.AsciiRenderer=y.AsciiRenderer,exports.Splat=z.Splat,exports.OrthographicCamera=O.OrthographicCamera,exports.PerspectiveCamera=I.PerspectiveCamera,exports.CubeCamera=H.CubeCamera,exports.DeviceOrientationControls=V.DeviceOrientationControls,exports.FlyControls=K.FlyControls,exports.MapControls=W.MapControls,exports.OrbitControls=Q.OrbitControls,exports.TrackballControls=X.TrackballControls,exports.ArcballControls=N.ArcballControls,exports.TransformControls=U.TransformControls,exports.PointerLockControls=_.PointerLockControls,exports.FirstPersonControls=J.FirstPersonControls,exports.CameraControls=Y.CameraControls,exports.MotionPathControls=Z.MotionPathControls,exports.useMotion=Z.useMotion,exports.GizmoHelper=$.GizmoHelper,exports.useGizmoContext=$.useGizmoContext,exports.GizmoViewcube=ee.GizmoViewcube,exports.GizmoViewport=re.GizmoViewport,exports.Grid=se.Grid,exports.useCubeTexture=oe.useCubeTexture,exports.useFBX=te.useFBX,exports.useGLTF=ie.useGLTF,exports.useKTX2=ce.useKTX2,exports.useProgress=ae.useProgress,exports.IsObject=ue.IsObject,exports.useTexture=ue.useTexture,exports.useVideoTexture=ne.useVideoTexture,exports.useFont=je.useFont,exports.calculateAspectRatio=pe.calculateAspectRatio,exports.getFirstItem=pe.getFirstItem,exports.useSpriteLoader=pe.useSpriteLoader,exports.Helper=le.Helper,exports.Stats=xe.Stats,exports.StatsGl=qe.StatsGl,exports.useDepthBuffer=de.useDepthBuffer,exports.useAspect=Ce.useAspect,exports.useCamera=me.useCamera,exports.useDetectGPU=he.useDetectGPU,exports.useHelper=Se.useHelper,exports.Bvh=Me.Bvh,exports.useBVH=Me.useBVH,exports.useContextBridge=Pe.useContextBridge,exports.useAnimations=be.useAnimations,exports.useFBO=Te.useFBO,exports.useIntersect=fe.useIntersect,exports.useBoxProjectedEnv=ge.useBoxProjectedEnv,exports.BBAnchor=ve.BBAnchor,exports.useTrailTexture=Be.useTrailTexture,exports.useCubeCamera=Fe.useCubeCamera,exports.Example=Ae.Example,exports.SpriteAnimator=Le.SpriteAnimator,exports.useSpriteAnimator=Le.useSpriteAnimator,exports.CurveModifier=De.CurveModifier,exports.MeshDistortMaterial=Re.MeshDistortMaterial,exports.MeshWobbleMaterial=Ee.MeshWobbleMaterial,exports.MeshReflectorMaterial=ke.MeshReflectorMaterial,exports.MeshRefractionMaterial=Ge.MeshRefractionMaterial,exports.MeshTransmissionMaterial=we.MeshTransmissionMaterial,exports.MeshDiscardMaterial=ye.MeshDiscardMaterial,exports.PointMaterial=ze.PointMaterial,exports.PointMaterialImpl=ze.PointMaterialImpl,exports.shaderMaterial=Oe.shaderMaterial,exports.SoftShadows=Ie.SoftShadows,exports.Box=He.Box,exports.Capsule=He.Capsule,exports.Circle=He.Circle,exports.Cone=He.Cone,exports.Cylinder=He.Cylinder,exports.Dodecahedron=He.Dodecahedron,exports.Extrude=He.Extrude,exports.Icosahedron=He.Icosahedron,exports.Lathe=He.Lathe,exports.Octahedron=He.Octahedron,exports.Plane=He.Plane,exports.Polyhedron=He.Polyhedron,exports.Ring=He.Ring,exports.Shape=He.Shape,exports.Sphere=He.Sphere,exports.Tetrahedron=He.Tetrahedron,exports.Torus=He.Torus,exports.TorusKnot=He.TorusKnot,exports.Tube=He.Tube,exports.RoundedBox=Ve.RoundedBox,exports.ScreenQuad=Ke.ScreenQuad,exports.Center=We.Center,exports.Resize=Qe.Resize,exports.Bounds=Xe.Bounds,exports.useBounds=Xe.useBounds,exports.CameraShake=Ne.CameraShake,exports.Float=Ue.Float,exports.Stage=_e.Stage,exports.Backdrop=Je.Backdrop,exports.Shadow=Ye.Shadow,exports.Caustics=Ze.Caustics,exports.ContactShadows=$e.ContactShadows,exports.AccumulativeShadows=er.AccumulativeShadows,exports.RandomizedLight=er.RandomizedLight,exports.accumulativeContext=er.accumulativeContext,exports.Reflector=rr.Reflector,exports.SpotLight=sr.SpotLight,exports.SpotLightShadow=sr.SpotLightShadow,exports.Environment=or.Environment,exports.EnvironmentCube=or.EnvironmentCube,exports.EnvironmentMap=or.EnvironmentMap,exports.EnvironmentPortal=or.EnvironmentPortal,exports.Lightformer=tr.Lightformer,exports.Sky=ir.Sky,exports.calcPosFromAngles=ir.calcPosFromAngles,exports.Stars=cr.Stars,exports.Cloud=ar.Cloud,exports.CloudInstance=ar.CloudInstance,exports.Clouds=ar.Clouds,exports.Sparkles=ur.Sparkles,exports.useEnvironment=nr.useEnvironment,exports.useMatcapTexture=jr.useMatcapTexture,exports.useNormalTexture=pr.useNormalTexture,exports.Wireframe=lr.Wireframe,exports.ShadowAlpha=xr.ShadowAlpha,exports.Point=qr.Point,exports.Points=qr.Points,exports.PointsBuffer=qr.PointsBuffer,exports.PositionPoint=qr.PositionPoint,exports.Instance=dr.Instance,exports.Instances=dr.Instances,exports.Merged=dr.Merged,exports.Segment=Cr.Segment,exports.SegmentObject=Cr.SegmentObject,exports.Segments=Cr.Segments,exports.Detailed=mr.Detailed,exports.Preload=hr.Preload,exports.BakeShadows=Sr.BakeShadows,exports.meshBounds=Mr.meshBounds,exports.AdaptiveDpr=Pr.AdaptiveDpr,exports.AdaptiveEvents=br.AdaptiveEvents,exports.PerformanceMonitor=Tr.PerformanceMonitor,exports.usePerformanceMonitor=Tr.usePerformanceMonitor,exports.RenderTexture=fr.RenderTexture,exports.RenderCubeTexture=gr.RenderCubeTexture,exports.Mask=vr.Mask,exports.useMask=vr.useMask,exports.Hud=Br.Hud,exports.Fisheye=Fr.Fisheye,exports.MeshPortalMaterial=Ar.MeshPortalMaterial,exports.calculateScaleFactor=Lr.calculateScaleFactor;
package/web/index.js CHANGED
@@ -64,6 +64,7 @@ export { IsObject, useTexture } from '../core/useTexture.js';
64
64
  export { useVideoTexture } from '../core/useVideoTexture.js';
65
65
  export { useFont } from '../core/useFont.js';
66
66
  export { calculateAspectRatio, getFirstItem, useSpriteLoader } from '../core/useSpriteLoader.js';
67
+ export { Helper } from '../core/Helper.js';
67
68
  export { Stats } from '../core/Stats.js';
68
69
  export { StatsGl } from '../core/StatsGl.js';
69
70
  export { useDepthBuffer } from '../core/useDepthBuffer.js';
@@ -153,6 +154,7 @@ import './pivotControls/AxisArrow.js';
153
154
  import './pivotControls/context.js';
154
155
  import './pivotControls/AxisRotator.js';
155
156
  import './pivotControls/PlaneSlider.js';
157
+ import './pivotControls/ScalingSphere.js';
156
158
  import 'suspend-react';
157
159
  import '../helpers/constants.js';
158
160
  import 'meshline';
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("three"),r=require("@react-three/fiber"),n=require("../Html.cjs.js"),o=require("./context.cjs.js"),a=require("../../core/calculateScaleFactor.cjs.js");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)}require("@babel/runtime/helpers/extends"),require("react-dom/client");var c=i(e),l=i(t);const s=new l.Vector3,u=new l.Vector3,p=(e,t,r,n)=>{const o=t.dot(t),a=t.dot(e)-t.dot(r),i=t.dot(n);if(0===i)return-a/o;s.copy(n).multiplyScalar(o/i).sub(t),u.copy(n).multiplyScalar(a/i).add(r).sub(e);return-s.dot(u)/s.dot(s)},d=new l.Vector3(0,1,0),m=new l.Vector3,f=new l.Matrix4;exports.ScalingSphere=({direction:e,axis:t})=>{const{scaleLimits:i,annotations:u,annotationsClass:x,depthTest:y,scale:g,lineWidth:h,fixed:b,axisColors:P,hoveredColor:M,opacity:w,onDragStart:v,onDrag:j,onDragEnd:O,userData:k}=c.useContext(o.context),C=r.useThree((e=>e.size)),S=r.useThree((e=>e.controls)),E=c.useRef(null),R=c.useRef(null),q=c.useRef(null),F=c.useRef(1),D=c.useRef(1),L=c.useRef(null),[T,V]=c.useState(!1),z=b?1.2:1.2*g,G=c.useCallback((r=>{u&&(E.current.innerText=`${D.current.toFixed(2)}`,E.current.style.display="block"),r.stopPropagation();const n=(new l.Matrix4).extractRotation(R.current.matrixWorld),o=r.point.clone(),i=(new l.Vector3).setFromMatrixPosition(R.current.matrixWorld),c=e.clone().applyMatrix4(n).normalize(),p=R.current.matrixWorld.clone(),d=p.clone().invert(),m=b?1/a.calculateScaleFactor(R.current.getWorldPosition(s),g,r.camera,C):1;L.current={clickPoint:o,dir:c,mPLG:p,mPLGInv:d,offsetMultiplier:m},v({component:"Sphere",axis:t,origin:i,directions:[c]}),S&&(S.enabled=!1),r.target.setPointerCapture(r.pointerId)}),[u,S,e,v,t,b,g,C]),W=c.useCallback((e=>{if(e.stopPropagation(),T||V(!0),L.current){const{clickPoint:r,dir:n,mPLG:o,mPLGInv:a,offsetMultiplier:c}=L.current,[l,s]=(null==i?void 0:i[t])||[1e-5,void 0],d=p(r,n,e.ray.origin,e.ray.direction)*c,x=b?d:d/g;let y=Math.pow(2,.2*x);e.shiftKey&&(y=Math.round(10*y)/10),y=Math.max(y,l/F.current),void 0!==s&&(y=Math.min(y,s/F.current)),D.current=F.current*y,q.current.position.set(0,z+d,0),u&&(E.current.innerText=`${D.current.toFixed(2)}`),m.set(1,1,1),m.setComponent(t,y),f.makeScale(m.x,m.y,m.z).premultiply(o).multiply(a),j(f)}}),[u,z,j,T,i,t]),I=c.useCallback((e=>{u&&(E.current.style.display="none"),e.stopPropagation(),F.current=D.current,L.current=null,q.current.position.set(0,z,0),O(),S&&(S.enabled=!0),e.target.releasePointerCapture(e.pointerId)}),[u,S,O,z]),_=c.useCallback((e=>{e.stopPropagation(),V(!1)}),[]),{radius:U,matrixL:H}=c.useMemo((()=>{const t=b?h/g*1.8:g/22.5,r=(new l.Quaternion).setFromUnitVectors(d,e.clone().normalize());return{radius:t,matrixL:(new l.Matrix4).makeRotationFromQuaternion(r)}}),[e,g,h,b]),Q=T?M:P[t];return c.createElement("group",{ref:R},c.createElement("group",{matrix:H,matrixAutoUpdate:!1,onPointerDown:G,onPointerMove:W,onPointerUp:I,onPointerOut:_},u&&c.createElement(n.Html,{position:[0,z/2,0]},c.createElement("div",{style:{display:"none",background:"#151520",color:"white",padding:"6px 8px",borderRadius:7,whiteSpace:"nowrap"},className:x,ref:E})),c.createElement("mesh",{ref:q,position:[0,z,0],renderOrder:500,userData:k},c.createElement("sphereGeometry",{args:[U,12,12]}),c.createElement("meshBasicMaterial",{transparent:!0,depthTest:y,color:Q,opacity:w,polygonOffset:!0,polygonOffsetFactor:-10}))))},exports.calculateOffset=p;
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import * as THREE from 'three';
3
+ export declare const calculateOffset: (clickPoint: THREE.Vector3, normal: THREE.Vector3, rayStart: THREE.Vector3, rayDir: THREE.Vector3) => number;
4
+ export declare const ScalingSphere: React.FC<{
5
+ direction: THREE.Vector3;
6
+ axis: 0 | 1 | 2;
7
+ }>;