@react-three/drei 9.25.3 → 9.26.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.
@@ -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("./Line.cjs.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("three-stdlib");var i=c(e),u=o(t);const s=u.forwardRef((function({start:e,end:t,midA:c,midB:o,segments:s=20,...f},a){const d=u.useMemo((()=>{const n=e instanceof r.Vector3?e:new r.Vector3(...e),i=t instanceof r.Vector3?t:new r.Vector3(...t),u=c instanceof r.Vector3?c:new r.Vector3(...c),f=o instanceof r.Vector3?o:new r.Vector3(...o);return new r.CubicBezierCurve3(n,u,f,i).getPoints(s)}),[e,t,c,o,s]);return u.createElement(n.Line,i.default({ref:a,points:d},f))}));exports.CubicBezierLine=s;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),n=require("./Line.cjs.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("@react-three/fiber"),require("three-stdlib");var o=c(e),u=i(r);const s=u.forwardRef((function({start:e,end:r,midA:c,midB:i,segments:s=20,...f},a){const d=u.useMemo((()=>{const n=e instanceof t.Vector3?e:new t.Vector3(...e),o=r instanceof t.Vector3?r:new t.Vector3(...r),u=c instanceof t.Vector3?c:new t.Vector3(...c),f=i instanceof t.Vector3?i:new t.Vector3(...i);return new t.CubicBezierCurve3(n,u,f,o).getPoints(s)}),[e,r,c,i,s]);return u.createElement(n.Line,o.default({ref:a,points:d},f))}));exports.CubicBezierLine=s;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),a=require("@react-three/fiber"),r=require("three"),o=require("./GizmoHelper.cjs.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:function(){return e[a]}})}})),t.default=e,Object.freeze(t)}require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useCamera.cjs.js");var i=n(e),c=l(t);function s({scale:e=[.8,.05,.05],color:t,rotation:a}){return c.createElement("group",{rotation:a},c.createElement("mesh",{position:[.4,0,0]},c.createElement("boxGeometry",{args:e}),c.createElement("meshBasicMaterial",{color:t,toneMapped:!1})))}function u({onClick:e,font:t,disabled:o,arcStyle:n,label:l,labelColor:s,axisHeadScale:u=1,...p}){const d=a.useThree((e=>e.gl)),m=c.useMemo((()=>{const e=document.createElement("canvas");e.width=64,e.height=64;const a=e.getContext("2d");return a.beginPath(),a.arc(32,32,16,0,2*Math.PI),a.closePath(),a.fillStyle=n,a.fill(),l&&(a.font=t,a.textAlign="center",a.fillStyle=s,a.fillText(l,32,41)),new r.CanvasTexture(e)}),[n,l,s,t]),[f,b]=c.useState(!1),g=(l?1:.75)*(f?1.2:1)*u;return c.createElement("sprite",i.default({scale:g,onPointerOver:o?void 0:e=>{e.stopPropagation(),b(!0)},onPointerOut:o?void 0:e||(e=>{e.stopPropagation(),b(!1)})},p),c.createElement("spriteMaterial",{map:m,"map-encoding":d.outputEncoding,"map-anisotropy":d.capabilities.getMaxAnisotropy()||1,alphaTest:.3,opacity:l?1:.75,toneMapped:!1}))}exports.GizmoViewport=({hideNegativeAxes:e,hideAxisHeads:t,disabled:a,font:r="18px Inter var, Arial, sans-serif",axisColors:n=["#ff3653","#0adb50","#2c8fdf"],axisHeadScale:l=1,axisScale:p,labels:d=["X","Y","Z"],labelColor:m="#000",onClick:f,...b})=>{const[g,E,h]=n,{tweenCamera:y,raycast:x}=o.useGizmoContext(),j={font:r,disabled:a,labelColor:m,raycast:x,onClick:f,axisHeadScale:l,onPointerDown:a?void 0:e=>{y(e.object.position),e.stopPropagation()}};return c.createElement("group",i.default({scale:40},b),c.createElement(s,{color:g,rotation:[0,0,0],scale:p}),c.createElement(s,{color:E,rotation:[0,0,Math.PI/2],scale:p}),c.createElement(s,{color:h,rotation:[0,-Math.PI/2,0],scale:p}),!t&&c.createElement(c.Fragment,null,c.createElement(u,i.default({arcStyle:g,position:[1,0,0],label:d[0]},j)),c.createElement(u,i.default({arcStyle:E,position:[0,1,0],label:d[1]},j)),c.createElement(u,i.default({arcStyle:h,position:[0,0,1],label:d[2]},j)),!e&&c.createElement(c.Fragment,null,c.createElement(u,i.default({arcStyle:g,position:[-1,0,0]},j)),c.createElement(u,i.default({arcStyle:E,position:[0,-1,0]},j)),c.createElement(u,i.default({arcStyle:h,position:[0,0,-1]},j)))),c.createElement("ambientLight",{intensity:.5}),c.createElement("pointLight",{position:[10,10,10],intensity:.5}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),a=require("@react-three/fiber"),r=require("three"),o=require("./GizmoHelper.cjs.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:function(){return e[a]}})}})),t.default=e,Object.freeze(t)}require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useCamera.cjs.js");var i=n(e),c=l(t);function s({scale:e=[.8,.05,.05],color:t,rotation:a}){return c.createElement("group",{rotation:a},c.createElement("mesh",{position:[.4,0,0]},c.createElement("boxGeometry",{args:e}),c.createElement("meshBasicMaterial",{color:t,toneMapped:!1})))}function u({onClick:e,font:t,disabled:o,arcStyle:n,label:l,labelColor:s,axisHeadScale:u=1,...p}){const f=a.useThree((e=>e.gl)),m=c.useMemo((()=>{const e=document.createElement("canvas");e.width=64,e.height=64;const a=e.getContext("2d");return a.beginPath(),a.arc(32,32,16,0,2*Math.PI),a.closePath(),a.fillStyle=n,a.fill(),l&&(a.font=t,a.textAlign="center",a.fillStyle=s,a.fillText(l,32,41)),new r.CanvasTexture(e)}),[n,l,s,t]),[d,b]=c.useState(!1),g=(l?1:.75)*(d?1.2:1)*u;return c.createElement("sprite",i.default({scale:g,onPointerOver:o?void 0:e=>{e.stopPropagation(),b(!0)},onPointerOut:o?void 0:e||(e=>{e.stopPropagation(),b(!1)})},p),c.createElement("spriteMaterial",{map:m,"map-encoding":f.outputEncoding,"map-anisotropy":f.capabilities.getMaxAnisotropy()||1,alphaTest:.3,opacity:l?1:.75,toneMapped:!1}))}exports.GizmoViewport=({hideNegativeAxes:e,hideAxisHeads:t,disabled:a,font:r="18px Inter var, Arial, sans-serif",axisColors:n=["#ff2060","#20df80","#2080ff"],axisHeadScale:l=1,axisScale:p,labels:f=["X","Y","Z"],labelColor:m="#000",onClick:d,...b})=>{const[g,E,h]=n,{tweenCamera:y,raycast:x}=o.useGizmoContext(),j={font:r,disabled:a,labelColor:m,raycast:x,onClick:d,axisHeadScale:l,onPointerDown:a?void 0:e=>{y(e.object.position),e.stopPropagation()}};return c.createElement("group",i.default({scale:40},b),c.createElement(s,{color:g,rotation:[0,0,0],scale:p}),c.createElement(s,{color:E,rotation:[0,0,Math.PI/2],scale:p}),c.createElement(s,{color:h,rotation:[0,-Math.PI/2,0],scale:p}),!t&&c.createElement(c.Fragment,null,c.createElement(u,i.default({arcStyle:g,position:[1,0,0],label:f[0]},j)),c.createElement(u,i.default({arcStyle:E,position:[0,1,0],label:f[1]},j)),c.createElement(u,i.default({arcStyle:h,position:[0,0,1],label:f[2]},j)),!e&&c.createElement(c.Fragment,null,c.createElement(u,i.default({arcStyle:g,position:[-1,0,0]},j)),c.createElement(u,i.default({arcStyle:E,position:[0,-1,0]},j)),c.createElement(u,i.default({arcStyle:h,position:[0,0,-1]},j)))),c.createElement("ambientLight",{intensity:.5}),c.createElement("pointLight",{position:[10,10,10],intensity:.5}))};
@@ -84,7 +84,7 @@ const GizmoViewport = ({
84
84
  hideAxisHeads,
85
85
  disabled,
86
86
  font = '18px Inter var, Arial, sans-serif',
87
- axisColors = ['#ff3653', '#0adb50', '#2c8fdf'],
87
+ axisColors = ['#ff2060', '#20df80', '#2080ff'],
88
88
  axisHeadScale = 1,
89
89
  axisScale,
90
90
  labels = ['X', 'Y', 'Z'],
package/core/Line.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("three-stdlib");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var a=o(e),s=i(t);const c=s.forwardRef((function({points:e,color:t="black",vertexColors:o,linewidth:i,lineWidth:c,dashed:u,...l},f){const[d]=s.useState((()=>new n.Line2)),[p]=s.useState((()=>new n.LineMaterial)),[b]=s.useState((()=>new r.Vector2(512,512))),m=s.useMemo((()=>{const t=new n.LineGeometry,i=e.map((e=>e instanceof r.Vector3?e.toArray():e));if(t.setPositions(i.flat()),o){const e=o.map((e=>e instanceof r.Color?e.toArray():e));t.setColors(e.flat())}return t}),[e,o]);return s.useLayoutEffect((()=>{d.computeLineDistances()}),[e,d]),s.useLayoutEffect((()=>{u?p.defines.USE_DASH="":delete p.defines.USE_DASH,p.needsUpdate=!0}),[u,p]),s.useEffect((()=>()=>m.dispose()),[m]),s.createElement("primitive",a.default({object:d,ref:f},l),s.createElement("primitive",{object:m,attach:"geometry"}),s.createElement("primitive",a.default({object:p,attach:"material",color:t,vertexColors:Boolean(o),resolution:b,linewidth:null!=i?i:c,dashed:u},l)))}));exports.Line=c;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),i=require("@react-three/fiber"),n=require("three-stdlib");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var s=o(e),c=a(t);const u=c.forwardRef((function({points:e,color:t="black",vertexColors:o,linewidth:a,lineWidth:u,dashed:l,...f},d){const p=i.useThree((e=>e.size)),[b]=c.useState((()=>new n.Line2)),[h]=c.useState((()=>new n.LineMaterial)),m=c.useMemo((()=>{const t=new n.LineGeometry,i=e.map((e=>e instanceof r.Vector3?e.toArray():e));if(t.setPositions(i.flat()),o){const e=o.map((e=>e instanceof r.Color?e.toArray():e));t.setColors(e.flat())}return t}),[e,o]);return c.useLayoutEffect((()=>{b.computeLineDistances()}),[e,b]),c.useLayoutEffect((()=>{l?h.defines.USE_DASH="":delete h.defines.USE_DASH,h.needsUpdate=!0}),[l,h]),c.useEffect((()=>()=>m.dispose()),[m]),c.createElement("primitive",s.default({object:b,ref:d},f),c.createElement("primitive",{object:m,attach:"geometry"}),c.createElement("primitive",s.default({object:h,attach:"material",color:t,vertexColors:Boolean(o),resolution:[p.width,p.height],linewidth:null!=a?a:u,dashed:l},f)))}));exports.Line=u;
package/core/Line.d.ts CHANGED
@@ -6,5 +6,5 @@ export declare type LineProps = {
6
6
  points: Array<Vector3 | [number, number, number]>;
7
7
  vertexColors?: Array<Color | [number, number, number]>;
8
8
  lineWidth?: number;
9
- } & Omit<LineMaterialParameters, 'vertexColors'> & Omit<ReactThreeFiber.Object3DNode<Line2, typeof Line2>, 'args'> & Omit<ReactThreeFiber.Object3DNode<LineMaterial, [LineMaterialParameters]>, 'color' | 'vertexColors' | 'resolution' | 'args'>;
9
+ } & Omit<LineMaterialParameters, 'vertexColors'> & Omit<ReactThreeFiber.Object3DNode<Line2, typeof Line2>, 'args'> & Omit<ReactThreeFiber.Object3DNode<LineMaterial, [LineMaterialParameters]>, 'color' | 'vertexColors' | 'args'>;
10
10
  export declare const Line: React.ForwardRefExoticComponent<Pick<LineProps, "visible" | "attach" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "transparent" | "dashed" | "points" | "material" | "fog" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "computeLineDistances" | "alphaTest" | "alphaToCoverage" | "blendDst" | "blendDstAlpha" | "blendEquation" | "blendEquationAlpha" | "blending" | "blendSrc" | "blendSrcAlpha" | "clipIntersection" | "clippingPlanes" | "clipShadows" | "colorWrite" | "defines" | "depthFunc" | "depthTest" | "depthWrite" | "stencilWrite" | "stencilFunc" | "stencilRef" | "stencilWriteMask" | "stencilFuncMask" | "stencilFail" | "stencilZFail" | "stencilZPass" | "isMaterial" | "needsUpdate" | "opacity" | "polygonOffset" | "polygonOffsetFactor" | "polygonOffsetUnits" | "precision" | "premultipliedAlpha" | "dithering" | "side" | "shadowSide" | "toneMapped" | "vertexColors" | "version" | "onBeforeCompile" | "customProgramCacheKey" | "setValues" | "uniforms" | "vertexShader" | "fragmentShader" | "linewidth" | "wireframe" | "wireframeLinewidth" | "lights" | "clipping" | "derivatives" | "extensions" | "defaultAttributeValues" | "index0AttributeName" | "uniformsNeedUpdate" | "glslVersion" | "isShaderMaterial" | "dashSize" | "gapSize" | "format" | "dashScale" | "dashOffset" | "resolution" | "worldUnits" | "isLine2" | "isLineSegments2" | "isLineMaterial" | "lineWidth"> & React.RefAttributes<Line2>>;
package/core/Line.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import _extends from '@babel/runtime/helpers/esm/extends';
2
2
  import * as React from 'react';
3
- import { Vector2, Vector3, Color } from 'three';
3
+ import { Vector3, Color } from 'three';
4
+ import { useThree } from '@react-three/fiber';
4
5
  import { Line2, LineMaterial, LineGeometry } from 'three-stdlib';
5
6
 
6
7
  const Line = /*#__PURE__*/React.forwardRef(function Line({
@@ -12,9 +13,9 @@ const Line = /*#__PURE__*/React.forwardRef(function Line({
12
13
  dashed,
13
14
  ...rest
14
15
  }, ref) {
16
+ const size = useThree(state => state.size);
15
17
  const [line2] = React.useState(() => new Line2());
16
18
  const [lineMaterial] = React.useState(() => new LineMaterial());
17
- const [resolution] = React.useState(() => new Vector2(512, 512));
18
19
  const lineGeom = React.useMemo(() => {
19
20
  const geom = new LineGeometry();
20
21
  const pValues = points.map(p => p instanceof Vector3 ? p.toArray() : p);
@@ -54,7 +55,7 @@ const Line = /*#__PURE__*/React.forwardRef(function Line({
54
55
  attach: "material",
55
56
  color: color,
56
57
  vertexColors: Boolean(vertexColors),
57
- resolution: resolution,
58
+ resolution: [size.width, size.height],
58
59
  linewidth: linewidth !== null && linewidth !== void 0 ? linewidth : lineWidth,
59
60
  dashed: dashed
60
61
  }, rest)));
@@ -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-merge-refs"),o=require("./Line.cjs.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("three-stdlib");var s=c(e),i=u(t),a=c(n);const f=new r.Vector3,d=i.forwardRef((function({start:e=[0,0,0],end:t=[0,0,0],mid:n,segments:c=20,...u},d){const l=i.useRef(null),[v]=i.useState((()=>new r.QuadraticBezierCurve3(void 0,void 0,void 0))),y=i.useCallback(((e,t,n,o=20)=>(e instanceof r.Vector3?v.v0.copy(e):v.v0.set(...e),t instanceof r.Vector3?v.v2.copy(t):v.v2.set(...t),n instanceof r.Vector3?v.v1.copy(n):v.v1.copy(v.v0.clone().add(v.v2.clone().sub(v.v0)).add(f.set(0,v.v0.y-v.v2.y,0))),v.getPoints(o))),[]);i.useLayoutEffect((()=>{l.current.setPoints=(e,t,r)=>{const n=y(e,t,r);l.current.geometry&&l.current.geometry.setPositions(n.map((e=>e.toArray())).flat())}}),[]);const p=i.useMemo((()=>y(e,t,n,c)),[e,t,n,c]);return i.createElement(o.Line,s.default({ref:a.default([l,d]),points:p},u))}));exports.QuadraticBezierLine=d;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),n=require("react-merge-refs"),o=require("./Line.cjs.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(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("@react-three/fiber"),require("three-stdlib");var i=c(e),s=u(t),a=c(n);const f=new r.Vector3,d=s.forwardRef((function({start:e=[0,0,0],end:t=[0,0,0],mid:n,segments:c=20,...u},d){const l=s.useRef(null),[v]=s.useState((()=>new r.QuadraticBezierCurve3(void 0,void 0,void 0))),y=s.useCallback(((e,t,n,o=20)=>(e instanceof r.Vector3?v.v0.copy(e):v.v0.set(...e),t instanceof r.Vector3?v.v2.copy(t):v.v2.set(...t),n instanceof r.Vector3?v.v1.copy(n):v.v1.copy(v.v0.clone().add(v.v2.clone().sub(v.v0)).add(f.set(0,v.v0.y-v.v2.y,0))),v.getPoints(o))),[]);s.useLayoutEffect((()=>{l.current.setPoints=(e,t,r)=>{const n=y(e,t,r);l.current.geometry&&l.current.geometry.setPositions(n.map((e=>e.toArray())).flat())}}),[]);const b=s.useMemo((()=>y(e,t,n,c)),[e,t,n,c]);return s.createElement(o.Line,i.default({ref:a.default([l,d]),points:b},u))}));exports.QuadraticBezierLine=d;
package/core/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./QuadraticBezierLine.cjs.js"),s=require("./CubicBezierLine.cjs.js"),t=require("./CatmullRomLine.cjs.js"),o=require("./Line.cjs.js"),i=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),a=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),c=require("./GradientTexture.cjs.js"),j=require("./Image.cjs.js"),p=require("./Edges.cjs.js"),x=require("./Trail.cjs.js"),l=require("./Sampler.cjs.js"),q=require("./ComputedAttribute.cjs.js"),d=require("./Clone.cjs.js"),m=require("./MarchingCubes.cjs.js"),C=require("./Decal.cjs.js"),h=require("./OrthographicCamera.cjs.js"),M=require("./PerspectiveCamera.cjs.js"),S=require("./CubeCamera.cjs.js"),b=require("./DeviceOrientationControls.cjs.js"),B=require("./FlyControls.cjs.js"),P=require("./MapControls.cjs.js"),g=require("./OrbitControls.cjs.js"),T=require("./TrackballControls.cjs.js"),f=require("./ArcballControls.cjs.js"),v=require("./TransformControls.cjs.js"),A=require("./PointerLockControls.cjs.js"),L=require("./FirstPersonControls.cjs.js"),k=require("./GizmoHelper.cjs.js"),D=require("./GizmoViewcube.cjs.js"),E=require("./GizmoViewport.cjs.js"),G=require("./useCubeTexture.cjs.js"),w=require("./useFBX.cjs.js"),z=require("./useGLTF.cjs.js"),F=require("./useProgress.cjs.js"),R=require("./useTexture.cjs.js"),O=require("./useKTX2.cjs.js"),I=require("./Stats.cjs.js"),y=require("./useDepthBuffer.cjs.js"),H=require("./useAspect.cjs.js"),V=require("./useCamera.cjs.js"),Q=require("./useDetectGPU.cjs.js"),X=require("./useHelper.cjs.js"),K=require("./useBVH.cjs.js"),W=require("./useContextBridge.cjs.js"),N=require("./useAnimations.cjs.js"),U=require("./useFBO.cjs.js"),_=require("./useIntersect.cjs.js"),J=require("./useBoxProjectedEnv.cjs.js"),Y=require("./BBAnchor.cjs.js"),Z=require("./CurveModifier.cjs.js"),$=require("./MeshDistortMaterial.cjs.js"),ee=require("./MeshWobbleMaterial.cjs.js"),re=require("./MeshReflectorMaterial.cjs.js"),se=require("./PointMaterial.cjs.js"),te=require("./shaderMaterial.cjs.js"),oe=require("./softShadows.cjs.js"),ie=require("./shapes.cjs.js"),ue=require("./RoundedBox.cjs.js"),ae=require("./ScreenQuad.cjs.js"),ne=require("./Center.cjs.js"),ce=require("./Bounds.cjs.js"),je=require("./CameraShake.cjs.js"),pe=require("./Float.cjs.js"),xe=require("./Stage.cjs.js"),le=require("./Backdrop.cjs.js"),qe=require("./Shadow.cjs.js"),de=require("./ContactShadows.cjs.js"),me=require("./AccumulativeShadows.cjs.js"),Ce=require("./Reflector.cjs.js"),he=require("./SpotLight.cjs.js"),Me=require("./Environment.cjs.js"),Se=require("./Lightformer.cjs.js"),be=require("./Sky.cjs.js"),Be=require("./Stars.cjs.js"),Pe=require("./Cloud.cjs.js"),ge=require("./Sparkles.cjs.js"),Te=require("./useMatcapTexture.cjs.js"),fe=require("./useNormalTexture.cjs.js"),ve=require("./Points.cjs.js"),Ae=require("./Instances.cjs.js"),Le=require("./Segments.cjs.js"),ke=require("./Detailed.cjs.js"),De=require("./Preload.cjs.js"),Ee=require("./BakeShadows.cjs.js"),Ge=require("./meshBounds.cjs.js"),we=require("./AdaptiveDpr.cjs.js"),ze=require("./AdaptiveEvents.cjs.js"),Fe=require("./PerformanceMonitor.cjs.js"),Re=require("./RenderTexture.cjs.js"),Oe=require("./Mask.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("meshline"),require("lodash.pick"),require("lodash.omit"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.QuadraticBezierLine=r.QuadraticBezierLine,exports.CubicBezierLine=s.CubicBezierLine,exports.CatmullRomLine=t.CatmullRomLine,exports.Line=o.Line,exports.PositionalAudio=i.PositionalAudio,exports.Text=u.Text,exports.Text3D=a.Text3D,exports.Effects=n.Effects,exports.isWebGL2Available=n.isWebGL2Available,exports.GradientTexture=c.GradientTexture,exports.Image=j.Image,exports.Edges=p.Edges,exports.Trail=x.Trail,exports.useTrail=x.useTrail,exports.Sampler=l.Sampler,exports.useSurfaceSampler=l.useSurfaceSampler,exports.ComputedAttribute=q.ComputedAttribute,exports.Clone=d.Clone,exports.MarchingCube=m.MarchingCube,exports.MarchingCubes=m.MarchingCubes,exports.MarchingPlane=m.MarchingPlane,exports.Decal=C.Decal,exports.OrthographicCamera=h.OrthographicCamera,exports.PerspectiveCamera=M.PerspectiveCamera,exports.CubeCamera=S.CubeCamera,exports.DeviceOrientationControls=b.DeviceOrientationControls,exports.FlyControls=B.FlyControls,exports.MapControls=P.MapControls,exports.OrbitControls=g.OrbitControls,exports.TrackballControls=T.TrackballControls,exports.ArcballControls=f.ArcballControls,exports.TransformControls=v.TransformControls,exports.PointerLockControls=A.PointerLockControls,exports.FirstPersonControls=L.FirstPersonControls,exports.GizmoHelper=k.GizmoHelper,exports.useGizmoContext=k.useGizmoContext,exports.GizmoViewcube=D.GizmoViewcube,exports.GizmoViewport=E.GizmoViewport,exports.useCubeTexture=G.useCubeTexture,exports.useFBX=w.useFBX,exports.useGLTF=z.useGLTF,exports.useProgress=F.useProgress,exports.IsObject=R.IsObject,exports.useTexture=R.useTexture,exports.useKTX2=O.useKTX2,exports.Stats=I.Stats,exports.useDepthBuffer=y.useDepthBuffer,exports.useAspect=H.useAspect,exports.useCamera=V.useCamera,exports.useDetectGPU=Q.useDetectGPU,exports.useHelper=X.useHelper,exports.useBVH=K.useBVH,exports.useContextBridge=W.useContextBridge,exports.useAnimations=N.useAnimations,exports.useFBO=U.useFBO,exports.useIntersect=_.useIntersect,exports.useBoxProjectedEnv=J.useBoxProjectedEnv,exports.BBAnchor=Y.BBAnchor,exports.CurveModifier=Z.CurveModifier,exports.MeshDistortMaterial=$.MeshDistortMaterial,exports.MeshWobbleMaterial=ee.MeshWobbleMaterial,exports.MeshReflectorMaterial=re.MeshReflectorMaterial,exports.PointMaterial=se.PointMaterial,exports.PointMaterialImpl=se.PointMaterialImpl,exports.shaderMaterial=te.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.Sphere=ie.Sphere,exports.Tetrahedron=ie.Tetrahedron,exports.Torus=ie.Torus,exports.TorusKnot=ie.TorusKnot,exports.Tube=ie.Tube,exports.RoundedBox=ue.RoundedBox,exports.ScreenQuad=ae.ScreenQuad,exports.Center=ne.Center,exports.Bounds=ce.Bounds,exports.useBounds=ce.useBounds,exports.CameraShake=je.CameraShake,exports.Float=pe.Float,exports.Stage=xe.Stage,exports.Backdrop=le.Backdrop,exports.Shadow=qe.Shadow,exports.ContactShadows=de.ContactShadows,exports.AccumulativeShadows=me.AccumulativeShadows,exports.RandomizedLight=me.RandomizedLight,exports.accumulativeContext=me.accumulativeContext,exports.Reflector=Ce.Reflector,exports.SpotLight=he.SpotLight,exports.Environment=Me.Environment,exports.EnvironmentCube=Me.EnvironmentCube,exports.EnvironmentMap=Me.EnvironmentMap,exports.EnvironmentPortal=Me.EnvironmentPortal,exports.useEnvironment=Me.useEnvironment,exports.Lightformer=Se.Lightformer,exports.Sky=be.Sky,exports.calcPosFromAngles=be.calcPosFromAngles,exports.Stars=Be.Stars,exports.Cloud=Pe.Cloud,exports.Sparkles=ge.Sparkles,exports.useMatcapTexture=Te.useMatcapTexture,exports.useNormalTexture=fe.useNormalTexture,exports.Point=ve.Point,exports.Points=ve.Points,exports.PointsBuffer=ve.PointsBuffer,exports.Instance=Ae.Instance,exports.Instances=Ae.Instances,exports.Merged=Ae.Merged,exports.Segment=Le.Segment,exports.SegmentObject=Le.SegmentObject,exports.Segments=Le.Segments,exports.Detailed=ke.Detailed,exports.Preload=De.Preload,exports.BakeShadows=Ee.BakeShadows,exports.meshBounds=Ge.meshBounds,exports.AdaptiveDpr=we.AdaptiveDpr,exports.AdaptiveEvents=ze.AdaptiveEvents,exports.PerformanceMonitor=Fe.PerformanceMonitor,exports.usePerformanceMonitor=Fe.usePerformanceMonitor,exports.RenderTexture=Re.RenderTexture,exports.Mask=Oe.Mask,exports.useMask=Oe.useMask;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./QuadraticBezierLine.cjs.js"),s=require("./CubicBezierLine.cjs.js"),t=require("./CatmullRomLine.cjs.js"),o=require("./Line.cjs.js"),i=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),a=require("./Text3D.cjs.js"),c=require("./Effects.cjs.js"),n=require("./GradientTexture.cjs.js"),j=require("./Image.cjs.js"),p=require("./Edges.cjs.js"),l=require("./Trail.cjs.js"),x=require("./Sampler.cjs.js"),q=require("./ComputedAttribute.cjs.js"),d=require("./Clone.cjs.js"),m=require("./MarchingCubes.cjs.js"),C=require("./Decal.cjs.js"),h=require("./OrthographicCamera.cjs.js"),M=require("./PerspectiveCamera.cjs.js"),S=require("./CubeCamera.cjs.js"),b=require("./DeviceOrientationControls.cjs.js"),P=require("./FlyControls.cjs.js"),B=require("./MapControls.cjs.js"),v=require("./OrbitControls.cjs.js"),g=require("./TrackballControls.cjs.js"),T=require("./ArcballControls.cjs.js"),f=require("./TransformControls.cjs.js"),A=require("./PointerLockControls.cjs.js"),L=require("./FirstPersonControls.cjs.js"),k=require("./pivotControls/index.cjs.js"),D=require("./GizmoHelper.cjs.js"),E=require("./GizmoViewcube.cjs.js"),w=require("./GizmoViewport.cjs.js"),F=require("./useCubeTexture.cjs.js"),G=require("./useFBX.cjs.js"),R=require("./useGLTF.cjs.js"),z=require("./useProgress.cjs.js"),O=require("./useTexture.cjs.js"),I=require("./useKTX2.cjs.js"),y=require("./Stats.cjs.js"),H=require("./useDepthBuffer.cjs.js"),V=require("./useAspect.cjs.js"),Q=require("./useCamera.cjs.js"),X=require("./useDetectGPU.cjs.js"),K=require("./useHelper.cjs.js"),W=require("./useBVH.cjs.js"),N=require("./useContextBridge.cjs.js"),U=require("./useAnimations.cjs.js"),_=require("./useFBO.cjs.js"),J=require("./useIntersect.cjs.js"),Y=require("./useBoxProjectedEnv.cjs.js"),Z=require("./BBAnchor.cjs.js"),$=require("./CurveModifier.cjs.js"),ee=require("./MeshDistortMaterial.cjs.js"),re=require("./MeshWobbleMaterial.cjs.js"),se=require("./MeshReflectorMaterial.cjs.js"),te=require("./PointMaterial.cjs.js"),oe=require("./shaderMaterial.cjs.js"),ie=require("./softShadows.cjs.js"),ue=require("./shapes.cjs.js"),ae=require("./RoundedBox.cjs.js"),ce=require("./ScreenQuad.cjs.js"),ne=require("./Center.cjs.js"),je=require("./Bounds.cjs.js"),pe=require("./CameraShake.cjs.js"),le=require("./Float.cjs.js"),xe=require("./Stage.cjs.js"),qe=require("./Backdrop.cjs.js"),de=require("./Shadow.cjs.js"),me=require("./ContactShadows.cjs.js"),Ce=require("./AccumulativeShadows.cjs.js"),he=require("./Reflector.cjs.js"),Me=require("./SpotLight.cjs.js"),Se=require("./Environment.cjs.js"),be=require("./Lightformer.cjs.js"),Pe=require("./Sky.cjs.js"),Be=require("./Stars.cjs.js"),ve=require("./Cloud.cjs.js"),ge=require("./Sparkles.cjs.js"),Te=require("./useMatcapTexture.cjs.js"),fe=require("./useNormalTexture.cjs.js"),Ae=require("./Points.cjs.js"),Le=require("./Instances.cjs.js"),ke=require("./Segments.cjs.js"),De=require("./Detailed.cjs.js"),Ee=require("./Preload.cjs.js"),we=require("./BakeShadows.cjs.js"),Fe=require("./meshBounds.cjs.js"),Ge=require("./AdaptiveDpr.cjs.js"),Re=require("./AdaptiveEvents.cjs.js"),ze=require("./PerformanceMonitor.cjs.js"),Oe=require("./RenderTexture.cjs.js"),Ie=require("./Mask.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("meshline"),require("lodash.pick"),require("lodash.omit"),require("./pivotControls/AxisArrow.cjs.js"),require("./pivotControls/context.cjs.js"),require("./pivotControls/PlaneSlider.cjs.js"),require("./pivotControls/AxisRotator.cjs.js"),require("../web/Html.cjs.js"),require("react-dom/client"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.QuadraticBezierLine=r.QuadraticBezierLine,exports.CubicBezierLine=s.CubicBezierLine,exports.CatmullRomLine=t.CatmullRomLine,exports.Line=o.Line,exports.PositionalAudio=i.PositionalAudio,exports.Text=u.Text,exports.Text3D=a.Text3D,exports.Effects=c.Effects,exports.isWebGL2Available=c.isWebGL2Available,exports.GradientTexture=n.GradientTexture,exports.Image=j.Image,exports.Edges=p.Edges,exports.Trail=l.Trail,exports.useTrail=l.useTrail,exports.Sampler=x.Sampler,exports.useSurfaceSampler=x.useSurfaceSampler,exports.ComputedAttribute=q.ComputedAttribute,exports.Clone=d.Clone,exports.MarchingCube=m.MarchingCube,exports.MarchingCubes=m.MarchingCubes,exports.MarchingPlane=m.MarchingPlane,exports.Decal=C.Decal,exports.OrthographicCamera=h.OrthographicCamera,exports.PerspectiveCamera=M.PerspectiveCamera,exports.CubeCamera=S.CubeCamera,exports.DeviceOrientationControls=b.DeviceOrientationControls,exports.FlyControls=P.FlyControls,exports.MapControls=B.MapControls,exports.OrbitControls=v.OrbitControls,exports.TrackballControls=g.TrackballControls,exports.ArcballControls=T.ArcballControls,exports.TransformControls=f.TransformControls,exports.PointerLockControls=A.PointerLockControls,exports.FirstPersonControls=L.FirstPersonControls,exports.PivotControls=k.PivotControls,exports.calculateScaleFactor=k.calculateScaleFactor,exports.GizmoHelper=D.GizmoHelper,exports.useGizmoContext=D.useGizmoContext,exports.GizmoViewcube=E.GizmoViewcube,exports.GizmoViewport=w.GizmoViewport,exports.useCubeTexture=F.useCubeTexture,exports.useFBX=G.useFBX,exports.useGLTF=R.useGLTF,exports.useProgress=z.useProgress,exports.IsObject=O.IsObject,exports.useTexture=O.useTexture,exports.useKTX2=I.useKTX2,exports.Stats=y.Stats,exports.useDepthBuffer=H.useDepthBuffer,exports.useAspect=V.useAspect,exports.useCamera=Q.useCamera,exports.useDetectGPU=X.useDetectGPU,exports.useHelper=K.useHelper,exports.useBVH=W.useBVH,exports.useContextBridge=N.useContextBridge,exports.useAnimations=U.useAnimations,exports.useFBO=_.useFBO,exports.useIntersect=J.useIntersect,exports.useBoxProjectedEnv=Y.useBoxProjectedEnv,exports.BBAnchor=Z.BBAnchor,exports.CurveModifier=$.CurveModifier,exports.MeshDistortMaterial=ee.MeshDistortMaterial,exports.MeshWobbleMaterial=re.MeshWobbleMaterial,exports.MeshReflectorMaterial=se.MeshReflectorMaterial,exports.PointMaterial=te.PointMaterial,exports.PointMaterialImpl=te.PointMaterialImpl,exports.shaderMaterial=oe.shaderMaterial,exports.softShadows=ie.softShadows,exports.Box=ue.Box,exports.Capsule=ue.Capsule,exports.Circle=ue.Circle,exports.Cone=ue.Cone,exports.Cylinder=ue.Cylinder,exports.Dodecahedron=ue.Dodecahedron,exports.Extrude=ue.Extrude,exports.Icosahedron=ue.Icosahedron,exports.Lathe=ue.Lathe,exports.Octahedron=ue.Octahedron,exports.Plane=ue.Plane,exports.Polyhedron=ue.Polyhedron,exports.Ring=ue.Ring,exports.Sphere=ue.Sphere,exports.Tetrahedron=ue.Tetrahedron,exports.Torus=ue.Torus,exports.TorusKnot=ue.TorusKnot,exports.Tube=ue.Tube,exports.RoundedBox=ae.RoundedBox,exports.ScreenQuad=ce.ScreenQuad,exports.Center=ne.Center,exports.Bounds=je.Bounds,exports.useBounds=je.useBounds,exports.CameraShake=pe.CameraShake,exports.Float=le.Float,exports.Stage=xe.Stage,exports.Backdrop=qe.Backdrop,exports.Shadow=de.Shadow,exports.ContactShadows=me.ContactShadows,exports.AccumulativeShadows=Ce.AccumulativeShadows,exports.RandomizedLight=Ce.RandomizedLight,exports.accumulativeContext=Ce.accumulativeContext,exports.Reflector=he.Reflector,exports.SpotLight=Me.SpotLight,exports.Environment=Se.Environment,exports.EnvironmentCube=Se.EnvironmentCube,exports.EnvironmentMap=Se.EnvironmentMap,exports.EnvironmentPortal=Se.EnvironmentPortal,exports.useEnvironment=Se.useEnvironment,exports.Lightformer=be.Lightformer,exports.Sky=Pe.Sky,exports.calcPosFromAngles=Pe.calcPosFromAngles,exports.Stars=Be.Stars,exports.Cloud=ve.Cloud,exports.Sparkles=ge.Sparkles,exports.useMatcapTexture=Te.useMatcapTexture,exports.useNormalTexture=fe.useNormalTexture,exports.Point=Ae.Point,exports.Points=Ae.Points,exports.PointsBuffer=Ae.PointsBuffer,exports.Instance=Le.Instance,exports.Instances=Le.Instances,exports.Merged=Le.Merged,exports.Segment=ke.Segment,exports.SegmentObject=ke.SegmentObject,exports.Segments=ke.Segments,exports.Detailed=De.Detailed,exports.Preload=Ee.Preload,exports.BakeShadows=we.BakeShadows,exports.meshBounds=Fe.meshBounds,exports.AdaptiveDpr=Ge.AdaptiveDpr,exports.AdaptiveEvents=Re.AdaptiveEvents,exports.PerformanceMonitor=ze.PerformanceMonitor,exports.usePerformanceMonitor=ze.usePerformanceMonitor,exports.RenderTexture=Oe.RenderTexture,exports.Mask=Ie.Mask,exports.useMask=Ie.useMask;
package/core/index.d.ts CHANGED
@@ -28,6 +28,7 @@ export * from './ArcballControls';
28
28
  export * from './TransformControls';
29
29
  export * from './PointerLockControls';
30
30
  export * from './FirstPersonControls';
31
+ export * from './pivotControls';
31
32
  export * from './GizmoHelper';
32
33
  export * from './GizmoViewcube';
33
34
  export * from './GizmoViewport';
package/core/index.js CHANGED
@@ -28,6 +28,7 @@ export { ArcballControls } from './ArcballControls.js';
28
28
  export { TransformControls } from './TransformControls.js';
29
29
  export { PointerLockControls } from './PointerLockControls.js';
30
30
  export { FirstPersonControls } from './FirstPersonControls.js';
31
+ export { PivotControls, calculateScaleFactor } from './pivotControls/index.js';
31
32
  export { GizmoHelper, useGizmoContext } from './GizmoHelper.js';
32
33
  export { GizmoViewcube } from './GizmoViewcube.js';
33
34
  export { GizmoViewport } from './GizmoViewport.js';
@@ -102,6 +103,12 @@ import 'suspend-react';
102
103
  import 'meshline';
103
104
  import 'lodash.pick';
104
105
  import 'lodash.omit';
106
+ import './pivotControls/AxisArrow.js';
107
+ import './pivotControls/context.js';
108
+ import './pivotControls/PlaneSlider.js';
109
+ import './pivotControls/AxisRotator.js';
110
+ import '../web/Html.js';
111
+ import 'react-dom/client';
105
112
  import 'zustand';
106
113
  import 'stats.js';
107
114
  import '../helpers/useEffectfulState.js';
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("three"),r=require("@react-three/fiber"),o=require("../Line.cjs.js"),n=require("./context.cjs.js");function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("@babel/runtime/helpers/extends"),require("three-stdlib");var i=a(e),c=a(t);const s=new c.Vector3,l=new c.Vector3,u=(e,t,r,o)=>{const n=t.dot(t),a=t.dot(e)-t.dot(r),i=t.dot(o);s.copy(o).multiplyScalar(n/i).sub(t),l.copy(o).multiplyScalar(a/i).add(r).sub(e);return-s.dot(l)/s.dot(s)},p=new c.Vector3(0,1,0),d=new c.Matrix4;exports.AxisArrow=({direction:e,axis:t})=>{const{depthTest:a,scale:s,lineWidth:l,fixed:f,axisColors:m,hoveredColor:g,opacity:x,onDragStart:y,onDrag:h,onDragEnd:b,userData:O}=i.useContext(n.context),P=r.useThree((e=>e.controls)),j=i.useRef(null),w=i.useRef(null),[k,C]=i.useState(!1),M=i.useCallback((t=>{t.stopPropagation();const r=(new c.Matrix4).extractRotation(j.current.matrixWorld),o=t.point.clone(),n=e.clone().applyMatrix4(r).normalize();w.current={clickPoint:o,dir:n},y(),P&&(P.enabled=!1),t.target.setPointerCapture(t.pointerId)}),[e,P,y]),D=i.useCallback((e=>{if(e.stopPropagation(),k||C(!0),w.current){const{clickPoint:t,dir:r}=w.current,o=u(t,r,e.ray.origin,e.ray.direction);d.makeTranslation(r.x*o,r.y*o,r.z*o),h(d)}}),[h,k]),E=i.useCallback((e=>{e.stopPropagation(),w.current=null,b(),P&&(P.enabled=!0),e.target.releasePointerCapture(e.pointerId)}),[P,b]),L=i.useCallback((e=>{e.stopPropagation(),C(!1)}),[]),{cylinderLength:q,coneWidth:v,coneLength:T,matrixL:W}=i.useMemo((()=>{const t=f?l/s*1.6:s/20,r=f?.2:s/5,o=f?1-r:s-r,n=(new c.Quaternion).setFromUnitVectors(p,e.clone().normalize());return{cylinderLength:o,coneWidth:t,coneLength:r,matrixL:(new c.Matrix4).makeRotationFromQuaternion(n)}}),[e,s,l,f]),z=k?g:m[t];return i.createElement("group",{ref:j},i.createElement("group",{matrix:W,matrixAutoUpdate:!1,onPointerDown:M,onPointerMove:D,onPointerUp:E,onPointerOut:L},i.createElement(o.Line,{transparent:!0,depthTest:a,points:[0,0,0,0,q,0],lineWidth:l,color:z,opacity:x,polygonOffset:!0,renderOrder:1,polygonOffsetFactor:-10,userData:O}),i.createElement("mesh",{position:[0,q+T/2,0],renderOrder:500,userData:O},i.createElement("coneGeometry",{args:[v,T,24,1]}),i.createElement("meshBasicMaterial",{transparent:!0,depthTest:a,color:z,opacity:x,polygonOffset:!0,polygonOffsetFactor:-10}))))},exports.calculateOffset=u;
@@ -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 AxisArrow: React.FC<{
5
+ direction: THREE.Vector3;
6
+ axis: 0 | 1 | 2;
7
+ }>;
@@ -0,0 +1,137 @@
1
+ import * as React from 'react';
2
+ import * as THREE from 'three';
3
+ import { useThree } from '@react-three/fiber';
4
+ import { Line } from '../Line.js';
5
+ import { context } from './context.js';
6
+
7
+ const vec1 = new THREE.Vector3();
8
+ const vec2 = new THREE.Vector3();
9
+ const calculateOffset = (clickPoint, normal, rayStart, rayDir) => {
10
+ const e1 = normal.dot(normal);
11
+ const e2 = normal.dot(clickPoint) - normal.dot(rayStart);
12
+ const e3 = normal.dot(rayDir);
13
+ vec1.copy(rayDir).multiplyScalar(e1 / e3).sub(normal);
14
+ vec2.copy(rayDir).multiplyScalar(e2 / e3).add(rayStart).sub(clickPoint);
15
+ const offset = -vec1.dot(vec2) / vec1.dot(vec1);
16
+ return offset;
17
+ };
18
+ const upV = new THREE.Vector3(0, 1, 0);
19
+ const offsetMatrix = new THREE.Matrix4();
20
+ const AxisArrow = ({
21
+ direction,
22
+ axis
23
+ }) => {
24
+ const {
25
+ depthTest,
26
+ scale,
27
+ lineWidth,
28
+ fixed,
29
+ axisColors,
30
+ hoveredColor,
31
+ opacity,
32
+ onDragStart,
33
+ onDrag,
34
+ onDragEnd,
35
+ userData
36
+ } = React.useContext(context); // @ts-expect-error new in @react-three/fiber@7.0.5
37
+
38
+ const camControls = useThree(state => state.controls);
39
+ const objRef = React.useRef(null);
40
+ const clickInfo = React.useRef(null);
41
+ const [isHovered, setIsHovered] = React.useState(false);
42
+ const onPointerDown = React.useCallback(e => {
43
+ e.stopPropagation();
44
+ const rotation = new THREE.Matrix4().extractRotation(objRef.current.matrixWorld);
45
+ const clickPoint = e.point.clone();
46
+ const dir = direction.clone().applyMatrix4(rotation).normalize();
47
+ clickInfo.current = {
48
+ clickPoint,
49
+ dir
50
+ };
51
+ onDragStart();
52
+ camControls && (camControls.enabled = false); // @ts-ignore - setPointerCapture is not in the type definition
53
+
54
+ e.target.setPointerCapture(e.pointerId);
55
+ }, [direction, camControls, onDragStart]);
56
+ const onPointerMove = React.useCallback(e => {
57
+ e.stopPropagation();
58
+ if (!isHovered) setIsHovered(true);
59
+
60
+ if (clickInfo.current) {
61
+ const {
62
+ clickPoint,
63
+ dir
64
+ } = clickInfo.current;
65
+ const offset = calculateOffset(clickPoint, dir, e.ray.origin, e.ray.direction);
66
+ offsetMatrix.makeTranslation(dir.x * offset, dir.y * offset, dir.z * offset);
67
+ onDrag(offsetMatrix);
68
+ }
69
+ }, [onDrag, isHovered]);
70
+ const onPointerUp = React.useCallback(e => {
71
+ e.stopPropagation();
72
+ clickInfo.current = null;
73
+ onDragEnd();
74
+ camControls && (camControls.enabled = true); // @ts-ignore - releasePointerCapture & PointerEvent#pointerId is not in the type definition
75
+
76
+ e.target.releasePointerCapture(e.pointerId);
77
+ }, [camControls, onDragEnd]);
78
+ const onPointerOut = React.useCallback(e => {
79
+ e.stopPropagation();
80
+ setIsHovered(false);
81
+ }, []);
82
+ const {
83
+ cylinderLength,
84
+ coneWidth,
85
+ coneLength,
86
+ matrixL
87
+ } = React.useMemo(() => {
88
+ const coneWidth = fixed ? lineWidth / scale * 1.6 : scale / 20;
89
+ const coneLength = fixed ? 0.2 : scale / 5;
90
+ const cylinderLength = fixed ? 1 - coneLength : scale - coneLength;
91
+ const quaternion = new THREE.Quaternion().setFromUnitVectors(upV, direction.clone().normalize());
92
+ const matrixL = new THREE.Matrix4().makeRotationFromQuaternion(quaternion);
93
+ return {
94
+ cylinderLength,
95
+ coneWidth,
96
+ coneLength,
97
+ matrixL
98
+ };
99
+ }, [direction, scale, lineWidth, fixed]);
100
+ const color_ = isHovered ? hoveredColor : axisColors[axis];
101
+ return /*#__PURE__*/React.createElement("group", {
102
+ ref: objRef
103
+ }, /*#__PURE__*/React.createElement("group", {
104
+ matrix: matrixL,
105
+ matrixAutoUpdate: false,
106
+ onPointerDown: onPointerDown,
107
+ onPointerMove: onPointerMove,
108
+ onPointerUp: onPointerUp,
109
+ onPointerOut: onPointerOut
110
+ }, /*#__PURE__*/React.createElement(Line, {
111
+ transparent: true,
112
+ depthTest: depthTest,
113
+ points: [0, 0, 0, 0, cylinderLength, 0],
114
+ lineWidth: lineWidth,
115
+ color: color_,
116
+ opacity: opacity,
117
+ polygonOffset: true,
118
+ renderOrder: 1,
119
+ polygonOffsetFactor: -10,
120
+ userData: userData
121
+ }), /*#__PURE__*/React.createElement("mesh", {
122
+ position: [0, cylinderLength + coneLength / 2.0, 0],
123
+ renderOrder: 500,
124
+ userData: userData
125
+ }, /*#__PURE__*/React.createElement("coneGeometry", {
126
+ args: [coneWidth, coneLength, 24, 1]
127
+ }), /*#__PURE__*/React.createElement("meshBasicMaterial", {
128
+ transparent: true,
129
+ depthTest: depthTest,
130
+ color: color_,
131
+ opacity: opacity,
132
+ polygonOffset: true,
133
+ polygonOffsetFactor: -10
134
+ }))));
135
+ };
136
+
137
+ export { AxisArrow, calculateOffset };
@@ -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("../Line.cjs.js"),o=require("../../web/Html.cjs.js"),a=require("./context.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("three-stdlib"),require("react-dom/client");var s=i(e),c=i(t);const l=new c.Vector3,u=new c.Vector3,p=new c.Matrix4,d=new c.Vector3,m=new c.Ray,x=new c.Vector3;exports.AxisRotator=({dir1:e,dir2:t,axis:i})=>{const{annotationsClass:f,depthTest:b,scale:P,lineWidth:h,fixed:y,axisColors:g,hoveredColor:M,opacity:w,onDragStart:C,onDrag:j,onDragEnd:k,userData:O}=s.useContext(a.context),q=r.useThree((e=>e.controls)),V=s.useRef(null),v=s.useRef(null),D=s.useRef(null),[F,R]=s.useState(!1),z=s.useCallback((e=>{V.current.innerText="0º",V.current.style.display="block",e.stopPropagation();const t=e.point.clone(),r=(new c.Vector3).setFromMatrixPosition(v.current.matrixWorld),n=(new c.Vector3).setFromMatrixColumn(v.current.matrixWorld,0).normalize(),o=(new c.Vector3).setFromMatrixColumn(v.current.matrixWorld,1).normalize(),a=(new c.Vector3).setFromMatrixColumn(v.current.matrixWorld,2).normalize(),i=(new c.Plane).setFromNormalAndCoplanarPoint(a,r);D.current={clickPoint:t,origin:r,e1:n,e2:o,normal:a,plane:i},C(),q&&(q.enabled=!1),e.target.setPointerCapture(e.pointerId)}),[q,C]),E=s.useCallback((e=>{if(e.stopPropagation(),F||R(!0),D.current){const{clickPoint:t,origin:r,e1:n,e2:o,normal:a,plane:i}=D.current;m.copy(e.ray),m.intersectPlane(i,x),m.direction.negate(),m.intersectPlane(i,x);let s=((e,t,r,n,o)=>{l.copy(e).sub(r),u.copy(t).sub(r);const a=n.dot(n),i=o.dot(o),s=l.dot(n)/a,c=l.dot(o)/i,p=u.dot(n)/a,d=u.dot(o)/i,m=Math.atan2(c,s);return Math.atan2(d,p)-m})(t,x,r,n,o),c=180*s/Math.PI;e.shiftKey&&(c=10*Math.round(c/10),s=(e=>e*Math.PI/180)(c)),V.current.innerText=`${c.toFixed(0)} º`,p.makeRotationAxis(a,s),d.copy(r).applyMatrix4(p).sub(r).negate(),p.setPosition(d),j(p)}}),[j,F]),W=s.useCallback((e=>{V.current.style.display="none",e.stopPropagation(),D.current=null,k(),q&&(q.enabled=!0),e.target.releasePointerCapture(e.pointerId)}),[q,k]),I=s.useCallback((e=>{e.stopPropagation(),R(!1)}),[]),T=s.useMemo((()=>{const r=e.clone().normalize(),n=t.clone().normalize();return(new c.Matrix4).makeBasis(r,n,r.clone().cross(n))}),[e,t]),A=y?.65:.65*P,_=s.useMemo((()=>{const e=[];for(let t=0;t<=32;t++){const r=t*Math.PI/64;e.push(new c.Vector3(Math.cos(r)*A,Math.sin(r)*A,0))}return e}),[A]);return s.createElement("group",{ref:v,onPointerDown:z,onPointerMove:E,onPointerUp:W,onPointerOut:I,matrix:T,matrixAutoUpdate:!1},s.createElement(o.Html,{position:[A,A,0]},s.createElement("div",{style:{display:"none",background:"#151520",color:"white",padding:"6px 8px",borderRadius:7,whiteSpace:"nowrap"},className:f,ref:V})),s.createElement(n.Line,{transparent:!0,depthTest:b,points:_,lineWidth:h,color:F?M:g[i],opacity:w,polygonOffset:!0,polygonOffsetFactor:-10,userData:O}))};
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import * as THREE from 'three';
3
+ export declare const AxisRotator: React.FC<{
4
+ dir1: THREE.Vector3;
5
+ dir2: THREE.Vector3;
6
+ axis: 0 | 1 | 2;
7
+ }>;
@@ -0,0 +1,177 @@
1
+ import * as React from 'react';
2
+ import * as THREE from 'three';
3
+ import { useThree } from '@react-three/fiber';
4
+ import { Line } from '../Line.js';
5
+ import { Html } from '../../web/Html.js';
6
+ import { context } from './context.js';
7
+
8
+ const clickDir = new THREE.Vector3();
9
+ const intersectionDir = new THREE.Vector3();
10
+
11
+ const toDegrees = radians => radians * 180 / Math.PI;
12
+
13
+ const toRadians = degrees => degrees * Math.PI / 180;
14
+
15
+ const calculateAngle = (clickPoint, intersectionPoint, origin, e1, e2) => {
16
+ clickDir.copy(clickPoint).sub(origin);
17
+ intersectionDir.copy(intersectionPoint).sub(origin);
18
+ const dote1e1 = e1.dot(e1);
19
+ const dote2e2 = e2.dot(e2);
20
+ const uClick = clickDir.dot(e1) / dote1e1;
21
+ const vClick = clickDir.dot(e2) / dote2e2;
22
+ const uIntersection = intersectionDir.dot(e1) / dote1e1;
23
+ const vIntersection = intersectionDir.dot(e2) / dote2e2;
24
+ const angleClick = Math.atan2(vClick, uClick);
25
+ const angleIntersection = Math.atan2(vIntersection, uIntersection);
26
+ return angleIntersection - angleClick;
27
+ };
28
+
29
+ const rotMatrix = new THREE.Matrix4();
30
+ const posNew = new THREE.Vector3();
31
+ const ray = new THREE.Ray();
32
+ const intersection = new THREE.Vector3();
33
+ const AxisRotator = ({
34
+ dir1,
35
+ dir2,
36
+ axis
37
+ }) => {
38
+ const {
39
+ annotationsClass,
40
+ depthTest,
41
+ scale,
42
+ lineWidth,
43
+ fixed,
44
+ axisColors,
45
+ hoveredColor,
46
+ opacity,
47
+ onDragStart,
48
+ onDrag,
49
+ onDragEnd,
50
+ userData
51
+ } = React.useContext(context); // @ts-expect-error new in @react-three/fiber@7.0.5
52
+
53
+ const camControls = useThree(state => state.controls);
54
+ const divRef = React.useRef(null);
55
+ const objRef = React.useRef(null);
56
+ const clickInfo = React.useRef(null);
57
+ const [isHovered, setIsHovered] = React.useState(false);
58
+ const onPointerDown = React.useCallback(e => {
59
+ divRef.current.innerText = '0º';
60
+ divRef.current.style.display = 'block';
61
+ e.stopPropagation();
62
+ const clickPoint = e.point.clone();
63
+ const origin = new THREE.Vector3().setFromMatrixPosition(objRef.current.matrixWorld);
64
+ const e1 = new THREE.Vector3().setFromMatrixColumn(objRef.current.matrixWorld, 0).normalize();
65
+ const e2 = new THREE.Vector3().setFromMatrixColumn(objRef.current.matrixWorld, 1).normalize();
66
+ const normal = new THREE.Vector3().setFromMatrixColumn(objRef.current.matrixWorld, 2).normalize();
67
+ const plane = new THREE.Plane().setFromNormalAndCoplanarPoint(normal, origin);
68
+ clickInfo.current = {
69
+ clickPoint,
70
+ origin,
71
+ e1,
72
+ e2,
73
+ normal,
74
+ plane
75
+ };
76
+ onDragStart();
77
+ camControls && (camControls.enabled = false); // @ts-ignore
78
+
79
+ e.target.setPointerCapture(e.pointerId);
80
+ }, [camControls, onDragStart]);
81
+ const onPointerMove = React.useCallback(e => {
82
+ e.stopPropagation();
83
+ if (!isHovered) setIsHovered(true);
84
+
85
+ if (clickInfo.current) {
86
+ const {
87
+ clickPoint,
88
+ origin,
89
+ e1,
90
+ e2,
91
+ normal,
92
+ plane
93
+ } = clickInfo.current;
94
+ ray.copy(e.ray);
95
+ ray.intersectPlane(plane, intersection);
96
+ ray.direction.negate();
97
+ ray.intersectPlane(plane, intersection);
98
+ let angle = calculateAngle(clickPoint, intersection, origin, e1, e2);
99
+ let degrees = toDegrees(angle); // @ts-ignore
100
+
101
+ if (e.shiftKey) {
102
+ degrees = Math.round(degrees / 10) * 10;
103
+ angle = toRadians(degrees);
104
+ }
105
+
106
+ divRef.current.innerText = `${degrees.toFixed(0)} º`;
107
+ rotMatrix.makeRotationAxis(normal, angle);
108
+ posNew.copy(origin).applyMatrix4(rotMatrix).sub(origin).negate();
109
+ rotMatrix.setPosition(posNew);
110
+ onDrag(rotMatrix);
111
+ }
112
+ }, [onDrag, isHovered]);
113
+ const onPointerUp = React.useCallback(e => {
114
+ divRef.current.style.display = 'none';
115
+ e.stopPropagation();
116
+ clickInfo.current = null;
117
+ onDragEnd();
118
+ camControls && (camControls.enabled = true); // @ts-ignore
119
+
120
+ e.target.releasePointerCapture(e.pointerId);
121
+ }, [camControls, onDragEnd]);
122
+ const onPointerOut = React.useCallback(e => {
123
+ e.stopPropagation();
124
+ setIsHovered(false);
125
+ }, []);
126
+ const matrixL = React.useMemo(() => {
127
+ const dir1N = dir1.clone().normalize();
128
+ const dir2N = dir2.clone().normalize();
129
+ return new THREE.Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));
130
+ }, [dir1, dir2]);
131
+ const r = fixed ? 0.65 : scale * 0.65;
132
+ const arc = React.useMemo(() => {
133
+ const segments = 32;
134
+ const points = [];
135
+
136
+ for (let j = 0; j <= segments; j++) {
137
+ const angle = j * Math.PI / (2 * segments);
138
+ points.push(new THREE.Vector3(Math.cos(angle) * r, Math.sin(angle) * r, 0));
139
+ }
140
+
141
+ return points;
142
+ }, [r]);
143
+ return /*#__PURE__*/React.createElement("group", {
144
+ ref: objRef,
145
+ onPointerDown: onPointerDown,
146
+ onPointerMove: onPointerMove,
147
+ onPointerUp: onPointerUp,
148
+ onPointerOut: onPointerOut,
149
+ matrix: matrixL,
150
+ matrixAutoUpdate: false
151
+ }, /*#__PURE__*/React.createElement(Html, {
152
+ position: [r, r, 0]
153
+ }, /*#__PURE__*/React.createElement("div", {
154
+ style: {
155
+ display: 'none',
156
+ background: '#151520',
157
+ color: 'white',
158
+ padding: '6px 8px',
159
+ borderRadius: 7,
160
+ whiteSpace: 'nowrap'
161
+ },
162
+ className: annotationsClass,
163
+ ref: divRef
164
+ })), /*#__PURE__*/React.createElement(Line, {
165
+ transparent: true,
166
+ depthTest: depthTest,
167
+ points: arc,
168
+ lineWidth: lineWidth,
169
+ color: isHovered ? hoveredColor : axisColors[axis],
170
+ opacity: opacity,
171
+ polygonOffset: true,
172
+ polygonOffsetFactor: -10,
173
+ userData: userData
174
+ }));
175
+ };
176
+
177
+ export { AxisRotator };
@@ -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("../Line.cjs.js"),o=require("./context.cjs.js");function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("@babel/runtime/helpers/extends"),require("three-stdlib");var i=a(e),l=a(t);const s=new l.Ray,c=new l.Vector3,u=new l.Matrix4;exports.PlaneSlider=({dir1:e,dir2:t,axis:a})=>{const{depthTest:p,scale:d,lineWidth:m,fixed:f,axisColors:P,hoveredColor:b,opacity:g,onDragStart:x,onDrag:y,onDragEnd:h,userData:w}=i.useContext(o.context),O=r.useThree((e=>e.controls)),C=i.useRef(null),j=i.useRef(null),[M,k]=i.useState(!1),D=i.useCallback((e=>{e.stopPropagation();const t=e.point.clone(),r=(new l.Vector3).setFromMatrixPosition(C.current.matrixWorld),n=(new l.Vector3).setFromMatrixColumn(C.current.matrixWorld,2).normalize(),o=(new l.Plane).setFromNormalAndCoplanarPoint(n,r);j.current={clickPoint:t,plane:o},x(),O&&(O.enabled=!1),e.target.setPointerCapture(e.pointerId)}),[O,x]),v=i.useCallback((e=>{if(e.stopPropagation(),M||k(!0),j.current){const{clickPoint:t,plane:r}=j.current;s.copy(e.ray),s.intersectPlane(r,c),s.direction.negate(),s.intersectPlane(r,c),c.sub(t),u.makeTranslation(c.x,c.y,c.z),y(u)}}),[y,M]),E=i.useCallback((e=>{e.stopPropagation(),j.current=null,h(),O&&(O.enabled=!0),e.target.releasePointerCapture(e.pointerId)}),[O,h]),V=i.useCallback((e=>{e.stopPropagation(),k(!1)}),[]),q=i.useMemo((()=>{const r=e.clone().normalize(),n=t.clone().normalize();return(new l.Matrix4).makeBasis(r,n,r.clone().cross(n))}),[e,t]),z=f?1/7:d/7,F=f?.225:.225*d,T=M?b:P[a],S=i.useMemo((()=>[new l.Vector3(0,0,0),new l.Vector3(0,F,0),new l.Vector3(F,F,0),new l.Vector3(F,0,0),new l.Vector3(0,0,0)]),[F]);return i.createElement("group",{ref:C,matrix:q,matrixAutoUpdate:!1},i.createElement("group",{position:[1.7*z,1.7*z,0]},i.createElement("mesh",{visible:!0,onPointerDown:D,onPointerMove:v,onPointerUp:E,onPointerOut:V,scale:F,userData:w},i.createElement("planeGeometry",null),i.createElement("meshBasicMaterial",{transparent:!0,depthTest:p,color:T,polygonOffset:!0,polygonOffsetFactor:-10,side:l.DoubleSide})),i.createElement(n.Line,{position:[-F/2,-F/2,0],transparent:!0,depthTest:p,points:S,lineWidth:m,color:T,opacity:g,polygonOffset:!0,polygonOffsetFactor:-10,userData:w})))};
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import * as THREE from 'three';
3
+ export declare const PlaneSlider: React.FC<{
4
+ dir1: THREE.Vector3;
5
+ dir2: THREE.Vector3;
6
+ axis: 0 | 1 | 2;
7
+ }>;