@react-three/drei 8.0.0 → 8.1.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/README.md +1 -0
- package/assets/cloud.base64.d.ts +1 -1
- package/core/Bounds.cjs.js +1 -1
- package/core/Bounds.js +10 -0
- package/index.cjs.js +1 -1
- package/package.json +1 -1
- package/web/Html.cjs.js +1 -1
- package/web/Html.d.ts +1 -0
- package/web/Html.js +4 -0
package/package.json
CHANGED
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"),n=require("three"),o=require("@react-three/fiber");function s(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 i=s(e),c=a(t),l=a(r);const u=new n.Vector3,d=new n.Vector3,f=new n.Vector3;function m(e,t,r){const n=u.setFromMatrixPosition(e.matrixWorld);n.project(t);const o=r.width/2,s=r.height/2;return[n.x*o+o,-n.y*s+s]}const p=e=>Math.abs(e)<1e-10?0:e;function h(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 x=(y=[1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1],e=>h(e,y));var y;const v=(e,t)=>{return h(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},b=c.forwardRef((({children:e,eps:t=.001,style:r,className:s,prepend:a,center:h,fullscreen:y,portal:b,distanceFactor:g,sprite:M=!1,transform:P=!1,occlude:w,onOcclude:W,zIndexRange:$=[16777271,0],calculatePosition:E=m,as:O="div",pointerEvents:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("react-dom"),n=require("three"),o=require("@react-three/fiber");function s(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 i=s(e),c=a(t),l=a(r);const u=new n.Vector3,d=new n.Vector3,f=new n.Vector3;function m(e,t,r){const n=u.setFromMatrixPosition(e.matrixWorld);n.project(t);const o=r.width/2,s=r.height/2;return[n.x*o+o,-n.y*s+s]}const p=e=>Math.abs(e)<1e-10?0:e;function h(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 x=(y=[1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1],e=>h(e,y));var y;const v=(e,t)=>{return h(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},b=c.forwardRef((({children:e,eps:t=.001,style:r,className:s,prepend:a,center:h,fullscreen:y,portal:b,distanceFactor:g,sprite:M=!1,transform:P=!1,occlude:w,onOcclude:W,zIndexRange:$=[16777271,0],calculatePosition:E=m,as:O="div",wrapperClass:j,pointerEvents:F="auto",...T},C)=>{var R;const z=o.useThree((({gl:e})=>e)),I=o.useThree((({camera:e})=>e)),N=o.useThree((({scene:e})=>e)),q=o.useThree((({size:e})=>e)),_=o.useThree((({raycaster:e})=>e)),[A]=c.useState((()=>document.createElement(O))),V=c.useRef(null),k=c.useRef(0),D=c.useRef([0,0]),L=c.useRef(null),S=c.useRef(null),H=null!==(R=null==b?void 0:b.current)&&void 0!==R?R:z.domElement.parentNode;c.useEffect((()=>{if(V.current){if(N.updateMatrixWorld(),P)A.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{const e=E(V.current,I,q);A.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${e[0]}px,${e[1]}px,0);transform-origin:0 0;`}return H&&(a?H.prepend(A):H.appendChild(A)),()=>{H&&H.removeChild(A),l.unmountComponentAtNode(A)}}}),[H,P]),c.useLayoutEffect((()=>{j&&(A.className=j)}),[j]);const Z=c.useMemo((()=>P?{position:"absolute",top:0,left:0,width:q.width,height:q.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:h?"translate3d(-50%,-50%,0)":"none",...y&&{top:-q.height/2,left:-q.width/2,width:q.width,height:q.height},...r}),[r,h,y,q,P]),B=c.useMemo((()=>({position:"absolute",pointerEvents:F})),[F]);c.useLayoutEffect((()=>{P?l.render(c.createElement("div",{ref:L,style:Z},c.createElement("div",{ref:S,style:B},c.createElement("div",{ref:C,className:s,style:r,children:e}))),A):l.render(c.createElement("div",{ref:C,style:Z,className:s,children:e}),A)}));const G=c.useRef(!0);return o.useFrame((()=>{if(V.current){I.updateMatrixWorld(),V.current.updateWorldMatrix(!0,!1);const e=P?D.current:E(V.current,I,q);if(P||Math.abs(k.current-I.zoom)>t||Math.abs(D.current[0]-e[0])>t||Math.abs(D.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),s=t.getWorldDirection(f);return o.angleTo(s)>Math.PI/2}(V.current,I);let r=!1;"boolean"==typeof w?!0===w&&(r=[N]):Array.isArray(w)&&(r=w.map((e=>e.current)));const o=G.current;if(r){const e=function(e,t,r,n){const o=u.setFromMatrixPosition(e.matrixWorld),s=o.clone();s.project(t),r.setFromCamera(s,t);const a=r.intersectObjects(n,!0);if(a.length){const e=a[0].distance;return o.distanceTo(r.ray.origin)<e}return!0}(V.current,I,_,r);G.current=e&&!t}else G.current=!t;if(o!==G.current&&(W?W(!G.current):A.style.display=G.current?"block":"none"),A.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),s=n.distanceTo(o),a=(r[1]-r[0])/(t.far-t.near),i=r[1]-a*t.far;return Math.round(a*s+i)}}(V.current,I,$)}`,P){const[e,t]=[q.width/2,q.height/2],r=I.projectionMatrix.elements[5]*t,{isOrthographicCamera:n,top:o,left:s,bottom:a,right:i}=I,c=x(I.matrixWorldInverse),l=n?`scale(${r})translate(${p(-(i+s)/2)}px,${p((o+a)/2)}px)`:`translateZ(${r}px)`;let u=V.current.matrixWorld;M&&(u=I.matrixWorldInverse.clone().transpose().copyPosition(u).scale(V.current.scale),u.elements[3]=u.elements[7]=u.elements[11]=0,u.elements[15]=1),A.style.width=q.width+"px",A.style.height=q.height+"px",A.style.perspective=n?"":`${r}px`,L.current&&S.current&&(L.current.style.transform=`${l}${c}translate(${e}px,${t}px)`,S.current.style.transform=v(u,1/((g||10)/400)))}else{const t=void 0===g?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,s=r.distanceTo(n);return 1/(2*Math.tan(o/2)*s)}return 1}(V.current,I)*g;A.style.transform=`translate3d(${e[0]}px,${e[1]}px,0) scale(${t})`}D.current=e,k.current=I.zoom}}})),c.createElement("group",i.default({},T,{ref:V}))}));exports.Html=b;
|
package/web/Html.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export interface HtmlProps extends Omit<Assign<React.HTMLAttributes<HTMLDivEleme
|
|
|
22
22
|
onOcclude?: (visible: boolean) => null;
|
|
23
23
|
calculatePosition?: CalculatePosition;
|
|
24
24
|
as?: string;
|
|
25
|
+
wrapperClass?: string;
|
|
25
26
|
pointerEvents?: PointerEventsProperties;
|
|
26
27
|
}
|
|
27
28
|
export declare const Html: React.ForwardRefExoticComponent<HtmlProps & React.RefAttributes<HTMLDivElement>>;
|
package/web/Html.js
CHANGED
|
@@ -105,6 +105,7 @@ const Html = /*#__PURE__*/React.forwardRef(({
|
|
|
105
105
|
zIndexRange = [16777271, 0],
|
|
106
106
|
calculatePosition = defaultCalculatePosition,
|
|
107
107
|
as = 'div',
|
|
108
|
+
wrapperClass,
|
|
108
109
|
pointerEvents = 'auto',
|
|
109
110
|
...props
|
|
110
111
|
}, ref) => {
|
|
@@ -153,6 +154,9 @@ const Html = /*#__PURE__*/React.forwardRef(({
|
|
|
153
154
|
};
|
|
154
155
|
}
|
|
155
156
|
}, [target, transform]);
|
|
157
|
+
React.useLayoutEffect(() => {
|
|
158
|
+
if (wrapperClass) el.className = wrapperClass;
|
|
159
|
+
}, [wrapperClass]);
|
|
156
160
|
const styles = React.useMemo(() => {
|
|
157
161
|
if (transform) {
|
|
158
162
|
return {
|