UNPKG

react-three-fiber

Version:
202 lines (201 loc) 17 kB
/// <reference types="react" /> import * as THREE from 'three'; import { MouseEvent, PointerEvent, WheelEvent } from './canvas'; export declare type NonFunctionKeys<T> = { [K in keyof T]: T[K] extends Function ? never : K; }[keyof T]; export declare type Overwrite<T, O> = Omit<T, NonFunctionKeys<O>> & O; declare type Args<T> = T extends new (...args: any) => any ? ConstructorParameters<T> : T; export declare namespace ReactThreeFiber { type Euler = THREE.Euler | Parameters<THREE.Euler['set']>; type Matrix4 = THREE.Matrix4 | Parameters<THREE.Matrix4['set']>; type Vector2 = THREE.Vector2 | Parameters<THREE.Vector2['set']>; type Vector3 = THREE.Vector3 | Parameters<THREE.Vector3['set']>; type Color = THREE.Color | number | string; type Layers = THREE.Layers | Parameters<THREE.Layers['set']>; type Quaternion = THREE.Quaternion | Parameters<THREE.Quaternion['set']>; type EventHandlers = { onClick?: (event: MouseEvent) => void; onContextMenu?: (event: MouseEvent) => void; onDoubleClick?: (event: MouseEvent) => void; onPointerUp?: (event: PointerEvent) => void; onPointerDown?: (event: PointerEvent) => void; onPointerOver?: (event: PointerEvent) => void; onPointerOut?: (event: PointerEvent) => void; onPointerMove?: (event: PointerEvent) => void; onWheel?: (event: WheelEvent) => void; }; interface NodeProps<T, P> { attach?: string; attachArray?: string; attachObject?: [string, string]; args?: Args<P>; children?: React.ReactNode; ref?: React.Ref<React.ReactNode>; key?: React.Key; onUpdate?: (self: T) => void; } type Node<T, P> = Overwrite<Partial<T>, NodeProps<T, P>>; type Object3DNode<T, P> = Overwrite<Node<T, P>, { position?: Vector3; up?: Vector3; scale?: Vector3; rotation?: Euler; matrix?: Matrix4; quaternion?: Quaternion; layers?: Layers; dispose?: (() => void) | null; }> & EventHandlers; type GeometryNode<T extends THREE.Geometry, P> = Overwrite<Node<T, P>, { vertices?: Vector3[]; }>; type BufferGeometryNode<T extends THREE.BufferGeometry, P> = Overwrite<Node<T, P>, {}>; type MaterialNode<T extends THREE.Material, P> = Overwrite<Node<T, P>, { color?: Color; }>; type LightNode<T extends THREE.Light, P> = Overwrite<Object3DNode<T, P>, { color?: Color; }>; } declare global { namespace JSX { interface IntrinsicElements { audioListener: ReactThreeFiber.Object3DNode<THREE.AudioListener, typeof THREE.AudioListener>; positionalAudio: ReactThreeFiber.Object3DNode<THREE.PositionalAudio, typeof THREE.PositionalAudio>; mesh: ReactThreeFiber.Object3DNode<THREE.Mesh, typeof THREE.Mesh>; instancedMesh: ReactThreeFiber.Object3DNode<THREE.InstancedMesh, typeof THREE.InstancedMesh>; scene: ReactThreeFiber.Object3DNode<THREE.Scene, typeof THREE.Scene>; sprite: ReactThreeFiber.Object3DNode<THREE.Sprite, typeof THREE.Sprite>; lOD: ReactThreeFiber.Object3DNode<THREE.LOD, typeof THREE.LOD>; skinnedMesh: ReactThreeFiber.Object3DNode<THREE.SkinnedMesh, typeof THREE.SkinnedMesh>; skeleton: ReactThreeFiber.Object3DNode<THREE.Skeleton, typeof THREE.Skeleton>; bone: ReactThreeFiber.Object3DNode<THREE.Bone, typeof THREE.Bone>; lineSegments: ReactThreeFiber.Object3DNode<THREE.LineSegments, typeof THREE.LineSegments>; lineLoop: ReactThreeFiber.Object3DNode<THREE.LineLoop, typeof THREE.LineLoop>; points: ReactThreeFiber.Object3DNode<THREE.Points, typeof THREE.Points>; group: ReactThreeFiber.Object3DNode<THREE.Group, typeof THREE.Group>; immediateRenderObject: ReactThreeFiber.Object3DNode<THREE.ImmediateRenderObject, typeof THREE.ImmediateRenderObject>; camera: ReactThreeFiber.Object3DNode<THREE.Camera, typeof THREE.Camera>; perspectiveCamera: ReactThreeFiber.Object3DNode<THREE.PerspectiveCamera, typeof THREE.PerspectiveCamera>; orthographicCamera: ReactThreeFiber.Object3DNode<THREE.OrthographicCamera, typeof THREE.OrthographicCamera>; cubeCamera: ReactThreeFiber.Object3DNode<THREE.CubeCamera, typeof THREE.CubeCamera>; arrayCamera: ReactThreeFiber.Object3DNode<THREE.ArrayCamera, typeof THREE.ArrayCamera>; geometry: ReactThreeFiber.GeometryNode<THREE.Geometry, typeof THREE.Geometry>; instancedBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.InstancedBufferGeometry, typeof THREE.InstancedBufferGeometry>; bufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.BufferGeometry, typeof THREE.BufferGeometry>; boxBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.BoxBufferGeometry, typeof THREE.BoxBufferGeometry>; circleBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.CircleBufferGeometry, typeof THREE.CircleBufferGeometry>; coneBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.ConeBufferGeometry, typeof THREE.ConeBufferGeometry>; cylinderBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.CylinderBufferGeometry, typeof THREE.CylinderBufferGeometry>; dodecahedronBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.DodecahedronBufferGeometry, typeof THREE.DodecahedronBufferGeometry>; extrudeBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.ExtrudeBufferGeometry, typeof THREE.ExtrudeBufferGeometry>; icosahedronBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.IcosahedronBufferGeometry, typeof THREE.IcosahedronBufferGeometry>; latheBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.LatheBufferGeometry, typeof THREE.LatheBufferGeometry>; octahedronBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.OctahedronBufferGeometry, typeof THREE.OctahedronBufferGeometry>; parametricBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.ParametricBufferGeometry, typeof THREE.ParametricBufferGeometry>; planeBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.PlaneBufferGeometry, typeof THREE.PlaneBufferGeometry>; polyhedronBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.PolyhedronBufferGeometry, typeof THREE.PolyhedronBufferGeometry>; ringBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.RingBufferGeometry, typeof THREE.RingBufferGeometry>; shapeBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.ShapeBufferGeometry, typeof THREE.ShapeBufferGeometry>; sphereBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.SphereBufferGeometry, typeof THREE.SphereBufferGeometry>; tetrahedronBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.TetrahedronBufferGeometry, typeof THREE.TetrahedronBufferGeometry>; textBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.TextBufferGeometry, typeof THREE.TextBufferGeometry>; torusBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.TorusBufferGeometry, typeof THREE.TorusBufferGeometry>; torusKnotBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.TorusKnotBufferGeometry, typeof THREE.TorusKnotBufferGeometry>; tubeBufferGeometry: ReactThreeFiber.BufferGeometryNode<THREE.TubeBufferGeometry, typeof THREE.TubeBufferGeometry>; wireframeGeometry: ReactThreeFiber.BufferGeometryNode<THREE.WireframeGeometry, typeof THREE.WireframeGeometry>; parametricGeometry: ReactThreeFiber.GeometryNode<THREE.ParametricGeometry, typeof THREE.ParametricGeometry>; tetrahedronGeometry: ReactThreeFiber.GeometryNode<THREE.TetrahedronGeometry, typeof THREE.TetrahedronGeometry>; octahedronGeometry: ReactThreeFiber.GeometryNode<THREE.OctahedronGeometry, typeof THREE.OctahedronGeometry>; icosahedronGeometry: ReactThreeFiber.GeometryNode<THREE.IcosahedronGeometry, typeof THREE.IcosahedronGeometry>; dodecahedronGeometry: ReactThreeFiber.GeometryNode<THREE.DodecahedronGeometry, typeof THREE.DodecahedronGeometry>; polyhedronGeometry: ReactThreeFiber.GeometryNode<THREE.PolyhedronGeometry, typeof THREE.PolyhedronGeometry>; tubeGeometry: ReactThreeFiber.GeometryNode<THREE.TubeGeometry, typeof THREE.TubeGeometry>; torusKnotGeometry: ReactThreeFiber.GeometryNode<THREE.TorusKnotGeometry, typeof THREE.TorusKnotGeometry>; torusGeometry: ReactThreeFiber.GeometryNode<THREE.TorusGeometry, typeof THREE.TorusGeometry>; textGeometry: ReactThreeFiber.GeometryNode<THREE.TextGeometry, typeof THREE.TextGeometry>; sphereGeometry: ReactThreeFiber.GeometryNode<THREE.SphereGeometry, typeof THREE.SphereGeometry>; ringGeometry: ReactThreeFiber.GeometryNode<THREE.RingGeometry, typeof THREE.RingGeometry>; planeGeometry: ReactThreeFiber.GeometryNode<THREE.PlaneGeometry, typeof THREE.PlaneGeometry>; latheGeometry: ReactThreeFiber.GeometryNode<THREE.LatheGeometry, typeof THREE.LatheGeometry>; shapeGeometry: ReactThreeFiber.GeometryNode<THREE.ShapeGeometry, typeof THREE.ShapeGeometry>; extrudeGeometry: ReactThreeFiber.GeometryNode<THREE.ExtrudeGeometry, typeof THREE.ExtrudeGeometry>; edgesGeometry: ReactThreeFiber.BufferGeometryNode<THREE.EdgesGeometry, typeof THREE.EdgesGeometry>; coneGeometry: ReactThreeFiber.GeometryNode<THREE.ConeGeometry, typeof THREE.ConeGeometry>; cylinderGeometry: ReactThreeFiber.GeometryNode<THREE.CylinderGeometry, typeof THREE.CylinderGeometry>; circleGeometry: ReactThreeFiber.GeometryNode<THREE.CircleGeometry, typeof THREE.CircleGeometry>; boxGeometry: ReactThreeFiber.GeometryNode<THREE.BoxGeometry, typeof THREE.BoxGeometry>; material: ReactThreeFiber.MaterialNode<THREE.Material, [THREE.MaterialParameters]>; shadowMaterial: ReactThreeFiber.MaterialNode<THREE.ShadowMaterial, [THREE.ShaderMaterialParameters]>; spriteMaterial: ReactThreeFiber.MaterialNode<THREE.SpriteMaterial, [THREE.SpriteMaterialParameters]>; rawShaderMaterial: ReactThreeFiber.MaterialNode<THREE.RawShaderMaterial, [THREE.ShaderMaterialParameters]>; shaderMaterial: ReactThreeFiber.MaterialNode<THREE.ShaderMaterial, [THREE.ShaderMaterialParameters]>; pointsMaterial: ReactThreeFiber.MaterialNode<THREE.PointsMaterial, [THREE.PointsMaterialParameters]>; meshPhysicalMaterial: ReactThreeFiber.MaterialNode<THREE.MeshPhysicalMaterial, [THREE.MeshPhysicalMaterialParameters]>; meshStandardMaterial: ReactThreeFiber.MaterialNode<THREE.MeshStandardMaterial, [THREE.MeshStandardMaterialParameters]>; meshPhongMaterial: ReactThreeFiber.MaterialNode<THREE.MeshPhongMaterial, [THREE.MeshPhongMaterialParameters]>; meshToonMaterial: ReactThreeFiber.MaterialNode<THREE.MeshToonMaterial, [THREE.MeshToonMaterialParameters]>; meshNormalMaterial: ReactThreeFiber.MaterialNode<THREE.MeshNormalMaterial, [THREE.MeshNormalMaterialParameters]>; meshLambertMaterial: ReactThreeFiber.MaterialNode<THREE.MeshLambertMaterial, [THREE.MeshLambertMaterialParameters]>; meshDepthMaterial: ReactThreeFiber.MaterialNode<THREE.MeshDepthMaterial, [THREE.MeshDepthMaterialParameters]>; meshDistanceMaterial: ReactThreeFiber.MaterialNode<THREE.MeshDistanceMaterial, [THREE.MeshDistanceMaterialParameters]>; meshBasicMaterial: ReactThreeFiber.MaterialNode<THREE.MeshBasicMaterial, [THREE.MeshBasicMaterialParameters]>; meshMatcapMaterial: ReactThreeFiber.MaterialNode<THREE.MeshMatcapMaterial, [THREE.MeshMatcapMaterialParameters]>; lineDashedMaterial: ReactThreeFiber.MaterialNode<THREE.LineDashedMaterial, [THREE.LineDashedMaterialParameters]>; lineBasicMaterial: ReactThreeFiber.MaterialNode<THREE.LineBasicMaterial, [THREE.LineBasicMaterialParameters]>; primitive: { object: any; } & { [properties: string]: any; }; light: ReactThreeFiber.LightNode<THREE.Light, typeof THREE.Light>; spotLightShadow: ReactThreeFiber.Node<THREE.SpotLightShadow, typeof THREE.SpotLightShadow>; spotLight: ReactThreeFiber.LightNode<THREE.SpotLight, typeof THREE.SpotLight>; pointLight: ReactThreeFiber.LightNode<THREE.PointLight, typeof THREE.PointLight>; rectAreaLight: ReactThreeFiber.LightNode<THREE.RectAreaLight, typeof THREE.RectAreaLight>; hemisphereLight: ReactThreeFiber.LightNode<THREE.HemisphereLight, typeof THREE.HemisphereLight>; directionalLightShadow: ReactThreeFiber.Node<THREE.DirectionalLightShadow, typeof THREE.DirectionalLightShadow>; directionalLight: ReactThreeFiber.LightNode<THREE.DirectionalLight, typeof THREE.DirectionalLight>; ambientLight: ReactThreeFiber.LightNode<THREE.AmbientLight, typeof THREE.AmbientLight>; lightShadow: ReactThreeFiber.Node<THREE.LightShadow, typeof THREE.LightShadow>; ambientLightProbe: ReactThreeFiber.LightNode<THREE.AmbientLightProbe, typeof THREE.AmbientLightProbe>; hemisphereLightProbe: ReactThreeFiber.LightNode<THREE.HemisphereLightProbe, typeof THREE.HemisphereLightProbe>; lightProbe: ReactThreeFiber.LightNode<THREE.LightProbe, typeof THREE.LightProbe>; spotLightHelper: ReactThreeFiber.Object3DNode<THREE.SpotLightHelper, typeof THREE.SpotLightHelper>; skeletonHelper: ReactThreeFiber.Object3DNode<THREE.SkeletonHelper, typeof THREE.SkeletonHelper>; pointLightHelper: ReactThreeFiber.Object3DNode<THREE.PointLightHelper, typeof THREE.PointLightHelper>; hemisphereLightHelper: ReactThreeFiber.Object3DNode<THREE.HemisphereLightHelper, typeof THREE.HemisphereLightHelper>; gridHelper: ReactThreeFiber.Object3DNode<THREE.GridHelper, typeof THREE.GridHelper>; polarGridHelper: ReactThreeFiber.Object3DNode<THREE.PolarGridHelper, typeof THREE.PolarGridHelper>; directionalLightHelper: ReactThreeFiber.Object3DNode<THREE.DirectionalLightHelper, typeof THREE.DirectionalLightHelper>; cameraHelper: ReactThreeFiber.Object3DNode<THREE.CameraHelper, typeof THREE.CameraHelper>; boxHelper: ReactThreeFiber.Object3DNode<THREE.BoxHelper, typeof THREE.BoxHelper>; box3Helper: ReactThreeFiber.Object3DNode<THREE.Box3Helper, typeof THREE.Box3Helper>; planeHelper: ReactThreeFiber.Object3DNode<THREE.PlaneHelper, typeof THREE.PlaneHelper>; arrowHelper: ReactThreeFiber.Object3DNode<THREE.ArrowHelper, typeof THREE.ArrowHelper>; axesHelper: ReactThreeFiber.Object3DNode<THREE.AxesHelper, typeof THREE.AxesHelper>; texture: ReactThreeFiber.Node<THREE.Texture, typeof THREE.Texture>; videoTexture: ReactThreeFiber.Node<THREE.VideoTexture, typeof THREE.VideoTexture>; dataTexture: ReactThreeFiber.Node<THREE.DataTexture, typeof THREE.DataTexture>; dataTexture3D: ReactThreeFiber.Node<THREE.DataTexture3D, typeof THREE.DataTexture3D>; compressedTexture: ReactThreeFiber.Node<THREE.CompressedTexture, typeof THREE.CompressedTexture>; cubeTexture: ReactThreeFiber.Node<THREE.CubeTexture, typeof THREE.CubeTexture>; canvasTexture: ReactThreeFiber.Node<THREE.CanvasTexture, typeof THREE.CanvasTexture>; depthTexture: ReactThreeFiber.Node<THREE.DepthTexture, typeof THREE.DepthTexture>; raycaster: ReactThreeFiber.Node<THREE.Raycaster, typeof THREE.Raycaster>; vector2: ReactThreeFiber.Node<THREE.Vector2, typeof THREE.Vector2>; vector3: ReactThreeFiber.Node<THREE.Vector3, typeof THREE.Vector3>; vector4: ReactThreeFiber.Node<THREE.Vector4, typeof THREE.Vector4>; euler: ReactThreeFiber.Node<THREE.Euler, typeof THREE.Euler>; matrix3: ReactThreeFiber.Node<THREE.Matrix3, typeof THREE.Matrix3>; matrix4: ReactThreeFiber.Node<THREE.Matrix4, typeof THREE.Matrix4>; quaternion: ReactThreeFiber.Node<THREE.Quaternion, typeof THREE.Quaternion>; bufferAttribute: ReactThreeFiber.Node<THREE.BufferAttribute, typeof THREE.BufferAttribute>; instancedBufferAttribute: ReactThreeFiber.Node<THREE.InstancedBufferAttribute, typeof THREE.InstancedBufferAttribute>; face3: ReactThreeFiber.Node<THREE.Face3, typeof THREE.Face3>; color: ReactThreeFiber.Node<THREE.Color, typeof THREE.Color>; fog: ReactThreeFiber.Node<THREE.Fog, typeof THREE.Fog>; } } } export {};