@react-three/drei 9.64.0 → 9.65.1
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 +17 -1
- package/core/Center.cjs.js +1 -1
- package/core/Center.js +4 -2
- package/core/Text3D.cjs.js +1 -1
- package/core/Text3D.d.ts +1 -18
- package/core/Text3D.js +3 -7
- package/core/index.cjs.js +1 -1
- package/core/index.d.ts +1 -0
- package/core/index.js +1 -0
- package/core/useFont.cjs.js +1 -0
- package/core/useFont.d.ts +22 -0
- package/core/useFont.js +20 -0
- package/index.cjs.js +1 -1
- package/index.js +1 -0
- package/native/index.cjs.js +1 -1
- package/native/index.js +1 -0
- package/package.json +1 -1
- package/web/index.cjs.js +1 -1
- package/web/index.js +1 -0
package/README.md
CHANGED
|
@@ -129,7 +129,8 @@ The `native` route of the library **does not** export `Html` or `Loader`. The de
|
|
|
129
129
|
<li><a href="#usektx2">useKTX2</a></li>
|
|
130
130
|
<li><a href="#usecubetexture">useCubeTexture</a></li>
|
|
131
131
|
<li><a href="#usevideotexture">useVideoTexture</a></li>
|
|
132
|
-
<li><a href="#usetrailtexture">useTrailTexture</a></li>
|
|
132
|
+
<li><a href="#usetrailtexture">useTrailTexture</a></li>
|
|
133
|
+
<li><a href="#usefont">useFont</a></li>
|
|
133
134
|
</ul>
|
|
134
135
|
<li><a href="#performance">Performance</a></li>
|
|
135
136
|
<ul>
|
|
@@ -2500,6 +2501,21 @@ return (
|
|
|
2500
2501
|
<meshStandardMaterial displacementMap={texture} />
|
|
2501
2502
|
```
|
|
2502
2503
|
|
|
2504
|
+
#### useFont
|
|
2505
|
+
|
|
2506
|
+
Uses THREE.FontLoader to load a font and returns a `THREE.Font` object. It also accepts a JSON object as a parameter. You can use this to preload or share a font across multiple components.
|
|
2507
|
+
|
|
2508
|
+
```jsx
|
|
2509
|
+
const font = useFont('/fonts/helvetiker_regular.typeface.json')
|
|
2510
|
+
return <Text3D font={font} />
|
|
2511
|
+
```
|
|
2512
|
+
|
|
2513
|
+
In order to preload you do this:
|
|
2514
|
+
|
|
2515
|
+
```jsx
|
|
2516
|
+
useFont.preload('/fonts/helvetiker_regular.typeface.json')
|
|
2517
|
+
```
|
|
2518
|
+
|
|
2503
2519
|
# Performance
|
|
2504
2520
|
|
|
2505
2521
|
#### Instances
|
package/core/Center.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react");function n(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)}var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react");function n(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)}var o=n(e),i=u(r);const c=i.forwardRef((function({children:e,disable:r,disableX:n,disableY:u,disableZ:c,left:a,right:l,top:f,bottom:s,front:d,back:p,onCentered:b,precise:m=!0,...g},h){const x=i.useRef(null),y=i.useRef(null),j=i.useRef(null),v=i.useRef(new t.Box3);return i.useLayoutEffect((()=>{y.current.matrixWorld.identity();const e=(new t.Box3).setFromObject(j.current,m),o=new t.Vector3,i=new t.Sphere,g=e.max.x-e.min.x,h=e.max.y-e.min.y,O=e.max.z-e.min.z;e.getCenter(o),e.getBoundingSphere(i);const w=f?h/2:s?-h/2:0,z=a?-g/2:l?g/2:0,E=d?O/2:p?-O/2:0;y.current.position.set(r||n?0:-o.x+z,r||u?0:-o.y+w,r||c?0:-o.z+E),void 0===b||v.current.equals(e)||(v.current.copy(e),b({parent:x.current.parent,container:x.current,width:g,height:h,depth:O,boundingBox:e,boundingSphere:i,center:o,verticalAlignment:w,horizontalAlignment:z,depthAlignment:E}))})),i.useImperativeHandle(h,(()=>x.current),[]),i.createElement("group",o.default({ref:x},g),i.createElement("group",{ref:y},i.createElement("group",{ref:j},e)))}));exports.Center=c;
|
package/core/Center.js
CHANGED
|
@@ -21,6 +21,7 @@ const Center = /*#__PURE__*/React.forwardRef(function Center({
|
|
|
21
21
|
const ref = React.useRef(null);
|
|
22
22
|
const outer = React.useRef(null);
|
|
23
23
|
const inner = React.useRef(null);
|
|
24
|
+
const oldBox = React.useRef(new Box3());
|
|
24
25
|
React.useLayoutEffect(() => {
|
|
25
26
|
outer.current.matrixWorld.identity();
|
|
26
27
|
const box3 = new Box3().setFromObject(inner.current, precise);
|
|
@@ -34,9 +35,10 @@ const Center = /*#__PURE__*/React.forwardRef(function Center({
|
|
|
34
35
|
const vAlign = top ? height / 2 : bottom ? -height / 2 : 0;
|
|
35
36
|
const hAlign = left ? -width / 2 : right ? width / 2 : 0;
|
|
36
37
|
const dAlign = front ? depth / 2 : back ? -depth / 2 : 0;
|
|
37
|
-
outer.current.position.set(disable || disableX ? 0 : -center.x + hAlign, disable || disableY ? 0 : -center.y + vAlign, disable || disableZ ? 0 : -center.z + dAlign);
|
|
38
|
+
outer.current.position.set(disable || disableX ? 0 : -center.x + hAlign, disable || disableY ? 0 : -center.y + vAlign, disable || disableZ ? 0 : -center.z + dAlign); // Only fire onCentered if the bounding box has changed
|
|
38
39
|
|
|
39
|
-
if (typeof onCentered !== 'undefined') {
|
|
40
|
+
if (typeof onCentered !== 'undefined' && !oldBox.current.equals(box3)) {
|
|
41
|
+
oldBox.current.copy(box3);
|
|
40
42
|
onCentered({
|
|
41
43
|
parent: ref.current.parent,
|
|
42
44
|
container: ref.current,
|
package/core/Text3D.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-three/fiber"),n=require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),n=require("three-stdlib"),u=require("./useFont.cjs.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(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("suspend-react");var i=s(e),l=c(t);const o=["string","number"],a=l.forwardRef((({font:e,letterSpacing:s=0,lineHeight:c=1,size:a=1,height:f=.2,bevelThickness:m=.1,bevelSize:b=.01,bevelEnabled:d=!1,bevelOffset:g=0,bevelSegments:h=4,curveSegments:v=8,smooth:p,children:y,...j},x)=>{l.useMemo((()=>r.extend({RenamedTextGeometry:n.TextGeometry})),[]);const O=l.useRef(null),S=u.useFont(e),E=t.useMemo((()=>({font:S,size:a,height:f,bevelThickness:m,bevelSize:b,bevelEnabled:d,bevelSegments:h,bevelOffset:g,curveSegments:v,letterSpacing:s,lineHeight:c})),[S,a,f,m,b,d,h,g,v,s,c]),[q,...M]=t.useMemo((()=>(e=>{let t="";const r=[];return l.Children.forEach(e,(e=>{o.includes(typeof e)?t+=e+"":r.push(e)})),[t,...r]})(y)),[y]),T=l.useMemo((()=>[q,E]),[q,E]);return l.useLayoutEffect((()=>{p&&(O.current.geometry=n.mergeVertices(O.current.geometry,p),O.current.geometry.computeVertexNormals())}),[T,p]),l.useImperativeHandle(x,(()=>O.current),[]),l.createElement("mesh",i.default({},j,{ref:O}),l.createElement("renamedTextGeometry",{args:T}),M)}));exports.Text3D=a;
|
package/core/Text3D.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
import { Node } from '@react-three/fiber';
|
|
4
4
|
import { TextGeometryParameters } from 'three-stdlib';
|
|
5
|
+
import { FontData } from './useFont';
|
|
5
6
|
declare global {
|
|
6
7
|
namespace JSX {
|
|
7
8
|
interface IntrinsicElements {
|
|
@@ -9,23 +10,6 @@ declare global {
|
|
|
9
10
|
}
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
|
-
declare type Glyph = {
|
|
13
|
-
_cachedOutline: string[];
|
|
14
|
-
ha: number;
|
|
15
|
-
o: string;
|
|
16
|
-
};
|
|
17
|
-
declare type FontData = {
|
|
18
|
-
boundingBox: {
|
|
19
|
-
yMax: number;
|
|
20
|
-
yMin: number;
|
|
21
|
-
};
|
|
22
|
-
familyName: string;
|
|
23
|
-
glyphs: {
|
|
24
|
-
[k: string]: Glyph;
|
|
25
|
-
};
|
|
26
|
-
resolution: number;
|
|
27
|
-
underlineThickness: number;
|
|
28
|
-
};
|
|
29
13
|
export declare const Text3D: React.ForwardRefExoticComponent<Pick<React.PropsWithChildren<{
|
|
30
14
|
font: FontData | string;
|
|
31
15
|
bevelSegments?: number | undefined;
|
|
@@ -52,4 +36,3 @@ export declare const Text3D: React.ForwardRefExoticComponent<Pick<React.PropsWit
|
|
|
52
36
|
letterSpacing?: number | undefined;
|
|
53
37
|
lineHeight?: number | undefined;
|
|
54
38
|
}>, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldAutoUpdate" | "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" | "getObjectsByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "material" | "geometry" | "size" | "font" | "smooth" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "getVertexPosition" | "height" | "letterSpacing" | "lineHeight" | "bevelEnabled" | "bevelOffset" | "bevelSize" | "bevelThickness" | "curveSegments" | "bevelSegments"> & React.RefAttributes<THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>>>;
|
|
55
|
-
export {};
|
package/core/Text3D.js
CHANGED
|
@@ -2,8 +2,8 @@ import _extends from '@babel/runtime/helpers/esm/extends';
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useMemo } from 'react';
|
|
4
4
|
import { extend } from '@react-three/fiber';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { TextGeometry, mergeVertices } from 'three-stdlib';
|
|
6
|
+
import { useFont } from './useFont.js';
|
|
7
7
|
|
|
8
8
|
const types = ['string', 'number'];
|
|
9
9
|
|
|
@@ -36,11 +36,7 @@ const Text3D = /*#__PURE__*/React.forwardRef(({
|
|
|
36
36
|
RenamedTextGeometry: TextGeometry
|
|
37
37
|
}), []);
|
|
38
38
|
const ref = React.useRef(null);
|
|
39
|
-
const font =
|
|
40
|
-
let data = typeof _font === 'string' ? await (await fetch(_font)).json() : _font;
|
|
41
|
-
let loader = new FontLoader();
|
|
42
|
-
return loader.parse(data);
|
|
43
|
-
}, [_font]);
|
|
39
|
+
const font = useFont(_font);
|
|
44
40
|
const opts = useMemo(() => {
|
|
45
41
|
return {
|
|
46
42
|
font,
|
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("./ScreenSpace.cjs.js"),s=require("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./CatmullRomLine.cjs.js"),i=require("./Line.cjs.js"),a=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),c=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),p=require("./Image.cjs.js"),x=require("./Edges.cjs.js"),l=require("./Trail.cjs.js"),q=require("./Sampler.cjs.js"),d=require("./ComputedAttribute.cjs.js"),m=require("./Clone.cjs.js"),C=require("./MarchingCubes.cjs.js"),h=require("./Decal.cjs.js"),M=require("./Svg.cjs.js"),S=require("./Gltf.cjs.js"),T=require("./AsciiRenderer.cjs.js"),b=require("./OrthographicCamera.cjs.js"),f=require("./PerspectiveCamera.cjs.js"),B=require("./CubeCamera.cjs.js"),P=require("./DeviceOrientationControls.cjs.js"),g=require("./FlyControls.cjs.js"),v=require("./MapControls.cjs.js"),A=require("./OrbitControls.cjs.js"),L=require("./TrackballControls.cjs.js"),D=require("./ArcballControls.cjs.js"),k=require("./TransformControls.cjs.js"),G=require("./PointerLockControls.cjs.js"),E=require("./FirstPersonControls.cjs.js"),R=require("./CameraControls.cjs.js"),w=require("./GizmoHelper.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./ScreenSpace.cjs.js"),s=require("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./CatmullRomLine.cjs.js"),i=require("./Line.cjs.js"),a=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),c=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),p=require("./Image.cjs.js"),x=require("./Edges.cjs.js"),l=require("./Trail.cjs.js"),q=require("./Sampler.cjs.js"),d=require("./ComputedAttribute.cjs.js"),m=require("./Clone.cjs.js"),C=require("./MarchingCubes.cjs.js"),h=require("./Decal.cjs.js"),M=require("./Svg.cjs.js"),S=require("./Gltf.cjs.js"),T=require("./AsciiRenderer.cjs.js"),b=require("./OrthographicCamera.cjs.js"),f=require("./PerspectiveCamera.cjs.js"),B=require("./CubeCamera.cjs.js"),P=require("./DeviceOrientationControls.cjs.js"),g=require("./FlyControls.cjs.js"),v=require("./MapControls.cjs.js"),A=require("./OrbitControls.cjs.js"),L=require("./TrackballControls.cjs.js"),D=require("./ArcballControls.cjs.js"),k=require("./TransformControls.cjs.js"),G=require("./PointerLockControls.cjs.js"),E=require("./FirstPersonControls.cjs.js"),R=require("./CameraControls.cjs.js"),w=require("./GizmoHelper.cjs.js"),F=require("./GizmoViewcube.cjs.js"),z=require("./GizmoViewport.cjs.js"),O=require("./Grid.cjs.js"),I=require("./useCubeTexture.cjs.js"),H=require("./useFBX.cjs.js"),V=require("./useGLTF.cjs.js"),y=require("./useKTX2.cjs.js"),W=require("./useProgress.cjs.js"),Q=require("./useTexture.cjs.js"),X=require("./useVideoTexture.cjs.js"),K=require("./useFont.cjs.js"),N=require("./Stats.cjs.js"),U=require("./useDepthBuffer.cjs.js"),_=require("./useAspect.cjs.js"),J=require("./useCamera.cjs.js"),Y=require("./useDetectGPU.cjs.js"),Z=require("./useHelper.cjs.js"),$=require("./useBVH.cjs.js"),ee=require("./useContextBridge.cjs.js"),re=require("./useAnimations.cjs.js"),se=require("./useFBO.cjs.js"),te=require("./useIntersect.cjs.js"),oe=require("./useBoxProjectedEnv.cjs.js"),ie=require("./BBAnchor.cjs.js"),ae=require("./useTrailTexture.cjs.js"),ue=require("./useCubeCamera.cjs.js"),ce=require("./CurveModifier.cjs.js"),ne=require("./MeshDistortMaterial.cjs.js"),je=require("./MeshWobbleMaterial.cjs.js"),pe=require("./MeshReflectorMaterial.cjs.js"),xe=require("./MeshRefractionMaterial.cjs.js"),le=require("./MeshTransmissionMaterial.cjs.js"),qe=require("./MeshDiscardMaterial.cjs.js"),de=require("./PointMaterial.cjs.js"),me=require("./shaderMaterial.cjs.js"),Ce=require("./softShadows.cjs.js"),he=require("./shapes.cjs.js"),Me=require("./RoundedBox.cjs.js"),Se=require("./ScreenQuad.cjs.js"),Te=require("./Center.cjs.js"),be=require("./Bounds.cjs.js"),fe=require("./CameraShake.cjs.js"),Be=require("./Float.cjs.js"),Pe=require("./Stage.cjs.js"),ge=require("./Backdrop.cjs.js"),ve=require("./Shadow.cjs.js"),Ae=require("./Caustics.cjs.js"),Le=require("./ContactShadows.cjs.js"),De=require("./AccumulativeShadows.cjs.js"),ke=require("./Reflector.cjs.js"),Ge=require("./SpotLight.cjs.js"),Ee=require("./Environment.cjs.js"),Re=require("./Lightformer.cjs.js"),we=require("./Sky.cjs.js"),Fe=require("./Stars.cjs.js"),ze=require("./Cloud.cjs.js"),Oe=require("./Sparkles.cjs.js"),Ie=require("./useEnvironment.cjs.js"),He=require("./useMatcapTexture.cjs.js"),Ve=require("./useNormalTexture.cjs.js"),ye=require("./Wireframe.cjs.js"),We=require("./Points.cjs.js"),Qe=require("./Instances.cjs.js"),Xe=require("./Segments.cjs.js"),Ke=require("./Detailed.cjs.js"),Ne=require("./Preload.cjs.js"),Ue=require("./BakeShadows.cjs.js"),_e=require("./meshBounds.cjs.js"),Je=require("./AdaptiveDpr.cjs.js"),Ye=require("./AdaptiveEvents.cjs.js"),Ze=require("./PerformanceMonitor.cjs.js"),$e=require("./RenderTexture.cjs.js"),er=require("./Mask.cjs.js"),rr=require("./Hud.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("camera-controls"),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("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../materials/WireframeMaterial.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.QuadraticBezierLine=s.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.CatmullRomLine=o.CatmullRomLine,exports.Line=i.Line,exports.PositionalAudio=a.PositionalAudio,exports.Text=u.Text,exports.Text3D=c.Text3D,exports.Effects=n.Effects,exports.isWebGL2Available=n.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.Image=p.Image,exports.Edges=x.Edges,exports.Trail=l.Trail,exports.useTrail=l.useTrail,exports.Sampler=q.Sampler,exports.useSurfaceSampler=q.useSurfaceSampler,exports.ComputedAttribute=d.ComputedAttribute,exports.Clone=m.Clone,exports.MarchingCube=C.MarchingCube,exports.MarchingCubes=C.MarchingCubes,exports.MarchingPlane=C.MarchingPlane,exports.Decal=h.Decal,exports.Svg=M.Svg,exports.Gltf=S.Gltf,exports.AsciiRenderer=T.AsciiRenderer,exports.OrthographicCamera=b.OrthographicCamera,exports.PerspectiveCamera=f.PerspectiveCamera,exports.CubeCamera=B.CubeCamera,exports.DeviceOrientationControls=P.DeviceOrientationControls,exports.FlyControls=g.FlyControls,exports.MapControls=v.MapControls,exports.OrbitControls=A.OrbitControls,exports.TrackballControls=L.TrackballControls,exports.ArcballControls=D.ArcballControls,exports.TransformControls=k.TransformControls,exports.PointerLockControls=G.PointerLockControls,exports.FirstPersonControls=E.FirstPersonControls,exports.CameraControls=R.CameraControls,exports.GizmoHelper=w.GizmoHelper,exports.useGizmoContext=w.useGizmoContext,exports.GizmoViewcube=F.GizmoViewcube,exports.GizmoViewport=z.GizmoViewport,exports.Grid=O.Grid,exports.useCubeTexture=I.useCubeTexture,exports.useFBX=H.useFBX,exports.useGLTF=V.useGLTF,exports.useKTX2=y.useKTX2,exports.useProgress=W.useProgress,exports.IsObject=Q.IsObject,exports.useTexture=Q.useTexture,exports.useVideoTexture=X.useVideoTexture,exports.useFont=K.useFont,exports.Stats=N.Stats,exports.useDepthBuffer=U.useDepthBuffer,exports.useAspect=_.useAspect,exports.useCamera=J.useCamera,exports.useDetectGPU=Y.useDetectGPU,exports.useHelper=Z.useHelper,exports.Bvh=$.Bvh,exports.useBVH=$.useBVH,exports.useContextBridge=ee.useContextBridge,exports.useAnimations=re.useAnimations,exports.useFBO=se.useFBO,exports.useIntersect=te.useIntersect,exports.useBoxProjectedEnv=oe.useBoxProjectedEnv,exports.BBAnchor=ie.BBAnchor,exports.useTrailTexture=ae.useTrailTexture,exports.useCubeCamera=ue.useCubeCamera,exports.CurveModifier=ce.CurveModifier,exports.MeshDistortMaterial=ne.MeshDistortMaterial,exports.MeshWobbleMaterial=je.MeshWobbleMaterial,exports.MeshReflectorMaterial=pe.MeshReflectorMaterial,exports.MeshRefractionMaterial=xe.MeshRefractionMaterial,exports.MeshTransmissionMaterial=le.MeshTransmissionMaterial,exports.MeshDiscardMaterial=qe.MeshDiscardMaterial,exports.PointMaterial=de.PointMaterial,exports.PointMaterialImpl=de.PointMaterialImpl,exports.shaderMaterial=me.shaderMaterial,exports.SoftShadows=Ce.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=Me.RoundedBox,exports.ScreenQuad=Se.ScreenQuad,exports.Center=Te.Center,exports.Bounds=be.Bounds,exports.useBounds=be.useBounds,exports.CameraShake=fe.CameraShake,exports.Float=Be.Float,exports.Stage=Pe.Stage,exports.Backdrop=ge.Backdrop,exports.Shadow=ve.Shadow,exports.Caustics=Ae.Caustics,exports.ContactShadows=Le.ContactShadows,exports.AccumulativeShadows=De.AccumulativeShadows,exports.RandomizedLight=De.RandomizedLight,exports.accumulativeContext=De.accumulativeContext,exports.Reflector=ke.Reflector,exports.SpotLight=Ge.SpotLight,exports.SpotLightShadow=Ge.SpotLightShadow,exports.Environment=Ee.Environment,exports.EnvironmentCube=Ee.EnvironmentCube,exports.EnvironmentMap=Ee.EnvironmentMap,exports.EnvironmentPortal=Ee.EnvironmentPortal,exports.Lightformer=Re.Lightformer,exports.Sky=we.Sky,exports.calcPosFromAngles=we.calcPosFromAngles,exports.Stars=Fe.Stars,exports.Cloud=ze.Cloud,exports.Sparkles=Oe.Sparkles,exports.useEnvironment=Ie.useEnvironment,exports.useMatcapTexture=He.useMatcapTexture,exports.useNormalTexture=Ve.useNormalTexture,exports.Wireframe=ye.Wireframe,exports.Point=We.Point,exports.Points=We.Points,exports.PointsBuffer=We.PointsBuffer,exports.PositionPoint=We.PositionPoint,exports.Instance=Qe.Instance,exports.Instances=Qe.Instances,exports.Merged=Qe.Merged,exports.Segment=Xe.Segment,exports.SegmentObject=Xe.SegmentObject,exports.Segments=Xe.Segments,exports.Detailed=Ke.Detailed,exports.Preload=Ne.Preload,exports.BakeShadows=Ue.BakeShadows,exports.meshBounds=_e.meshBounds,exports.AdaptiveDpr=Je.AdaptiveDpr,exports.AdaptiveEvents=Ye.AdaptiveEvents,exports.PerformanceMonitor=Ze.PerformanceMonitor,exports.usePerformanceMonitor=Ze.usePerformanceMonitor,exports.RenderTexture=$e.RenderTexture,exports.Mask=er.Mask,exports.useMask=er.useMask,exports.Hud=rr.Hud;
|
package/core/index.d.ts
CHANGED
package/core/index.js
CHANGED
|
@@ -44,6 +44,7 @@ export { useKTX2 } from './useKTX2.js';
|
|
|
44
44
|
export { useProgress } from './useProgress.js';
|
|
45
45
|
export { IsObject, useTexture } from './useTexture.js';
|
|
46
46
|
export { useVideoTexture } from './useVideoTexture.js';
|
|
47
|
+
export { useFont } from './useFont.js';
|
|
47
48
|
export { Stats } from './Stats.js';
|
|
48
49
|
export { useDepthBuffer } from './useDepthBuffer.js';
|
|
49
50
|
export { useAspect } from './useAspect.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three-stdlib"),r=require("suspend-react");let t=null;async function n(r){t||(t=new e.FontLoader);let n="string"==typeof r?await(await fetch(r)).json():r;return t.parse(n)}function s(e){return r.suspend(n,[e])}s.preload=e=>r.preload(n,[e]),s.clear=e=>r.clear([e]),exports.useFont=s;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare type Glyph = {
|
|
2
|
+
_cachedOutline: string[];
|
|
3
|
+
ha: number;
|
|
4
|
+
o: string;
|
|
5
|
+
};
|
|
6
|
+
export declare type FontData = {
|
|
7
|
+
boundingBox: {
|
|
8
|
+
yMax: number;
|
|
9
|
+
yMin: number;
|
|
10
|
+
};
|
|
11
|
+
familyName: string;
|
|
12
|
+
glyphs: {
|
|
13
|
+
[k: string]: Glyph;
|
|
14
|
+
};
|
|
15
|
+
resolution: number;
|
|
16
|
+
underlineThickness: number;
|
|
17
|
+
};
|
|
18
|
+
export declare function useFont(font: string | FontData): import("three-stdlib").Font;
|
|
19
|
+
export declare namespace useFont {
|
|
20
|
+
var preload: (font: string | FontData) => undefined;
|
|
21
|
+
var clear: (font: string | FontData) => void;
|
|
22
|
+
}
|
package/core/useFont.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FontLoader } from 'three-stdlib';
|
|
2
|
+
import { suspend, preload, clear } from 'suspend-react';
|
|
3
|
+
|
|
4
|
+
let fontLoader = null;
|
|
5
|
+
|
|
6
|
+
async function loader(font) {
|
|
7
|
+
if (!fontLoader) fontLoader = new FontLoader();
|
|
8
|
+
let data = typeof font === 'string' ? await (await fetch(font)).json() : font;
|
|
9
|
+
return fontLoader.parse(data);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function useFont(font) {
|
|
13
|
+
return suspend(loader, [font]);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
useFont.preload = font => preload(loader, [font]);
|
|
17
|
+
|
|
18
|
+
useFont.clear = font => clear([font]);
|
|
19
|
+
|
|
20
|
+
export { useFont };
|