@react-three/fiber 8.0.0-alpha.0 → 8.0.0-beta-04

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.
Files changed (33) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/dist/declarations/src/core/events.d.ts +64 -59
  3. package/dist/declarations/src/core/hooks.d.ts +21 -29
  4. package/dist/declarations/src/core/index.d.ts +31 -0
  5. package/dist/declarations/src/core/loop.d.ts +12 -12
  6. package/dist/declarations/src/core/renderer.d.ts +50 -52
  7. package/dist/declarations/src/core/store.d.ts +117 -106
  8. package/dist/declarations/src/core/utils.d.ts +50 -0
  9. package/dist/declarations/src/index.d.ts +10 -7
  10. package/dist/declarations/src/native/Canvas.d.ts +13 -0
  11. package/dist/declarations/src/native/events.d.ts +5 -0
  12. package/dist/declarations/src/native/hooks.d.ts +9 -0
  13. package/dist/declarations/src/native.d.ts +10 -0
  14. package/dist/declarations/src/three-types.d.ts +309 -320
  15. package/dist/declarations/src/web/Canvas.d.ts +13 -13
  16. package/dist/declarations/src/web/events.d.ts +4 -4
  17. package/dist/index-eb414398.cjs.prod.js +1805 -0
  18. package/dist/index-fccd77b0.esm.js +1750 -0
  19. package/dist/index-ff3eb68b.cjs.dev.js +1805 -0
  20. package/dist/react-three-fiber.cjs.dev.js +108 -1734
  21. package/dist/react-three-fiber.cjs.prod.js +108 -1734
  22. package/dist/react-three-fiber.esm.js +63 -1686
  23. package/native/dist/react-three-fiber-native.cjs.d.ts +1 -0
  24. package/native/dist/react-three-fiber-native.cjs.dev.js +388 -0
  25. package/native/dist/react-three-fiber-native.cjs.js +7 -0
  26. package/native/dist/react-three-fiber-native.cjs.prod.js +388 -0
  27. package/native/dist/react-three-fiber-native.esm.js +336 -0
  28. package/native/package.json +5 -0
  29. package/package.json +19 -8
  30. package/readme.md +10 -10
  31. package/__mocks__/react-use-measure/index.ts +0 -22
  32. package/dist/declarations/src/core/is.d.ts +0 -9
  33. package/dist/declarations/src/web/index.d.ts +0 -30
@@ -1,106 +1,117 @@
1
- import * as THREE from 'three';
2
- import * as React from 'react';
3
- import * as ReactThreeFiber from '../three-types';
4
- import { GetState, SetState, UseStore } from 'zustand';
5
- import { Instance, InstanceProps } from './renderer';
6
- import { DomEvent, EventManager, ThreeEvent } from './events';
7
- export interface Intersection extends THREE.Intersection {
8
- eventObject: THREE.Object3D;
9
- }
10
- export declare type Subscription = {
11
- ref: React.MutableRefObject<RenderCallback>;
12
- priority: number;
13
- };
14
- export declare type Dpr = number | [min: number, max: number];
15
- export declare type Size = {
16
- width: number;
17
- height: number;
18
- };
19
- export declare type Viewport = Size & {
20
- initialDpr: number;
21
- dpr: number;
22
- factor: number;
23
- distance: number;
24
- aspect: number;
25
- };
26
- export declare type Camera = THREE.OrthographicCamera | THREE.PerspectiveCamera;
27
- export declare type Raycaster = THREE.Raycaster & {
28
- enabled: boolean;
29
- filter?: FilterFunction;
30
- computeOffsets?: ComputeOffsetsFunction;
31
- };
32
- export declare type RenderCallback = (state: RootState, delta: number) => void;
33
- export declare type Performance = {
34
- current: number;
35
- min: number;
36
- max: number;
37
- debounce: number;
38
- regress: () => void;
39
- };
40
- export declare const isRenderer: (def: THREE.WebGLRenderer) => def is THREE.WebGLRenderer;
41
- export declare const isOrthographicCamera: (def: THREE.Camera) => def is THREE.OrthographicCamera;
42
- export declare type InternalState = {
43
- active: boolean;
44
- priority: number;
45
- frames: number;
46
- lastProps: StoreProps;
47
- interaction: THREE.Object3D[];
48
- hovered: Map<string, DomEvent>;
49
- subscribers: Subscription[];
50
- capturedMap: Map<number, Map<THREE.Object3D, Intersection>>;
51
- initialClick: [x: number, y: number];
52
- initialHits: THREE.Object3D[];
53
- subscribe: (callback: React.MutableRefObject<RenderCallback>, priority?: number) => () => void;
54
- };
55
- export declare type RootState = {
56
- gl: THREE.WebGLRenderer;
57
- scene: THREE.Scene;
58
- camera: Camera;
59
- controls: THREE.EventDispatcher | null;
60
- raycaster: Raycaster;
61
- mouse: THREE.Vector2;
62
- clock: THREE.Clock;
63
- vr: boolean;
64
- linear: boolean;
65
- flat: boolean;
66
- frameloop: 'always' | 'demand' | 'never';
67
- performance: Performance;
68
- size: Size;
69
- viewport: Viewport & {
70
- getCurrentViewport: (camera?: Camera, target?: THREE.Vector3, size?: Size) => Omit<Viewport, 'dpr' | 'initialDpr'>;
71
- };
72
- set: SetState<RootState>;
73
- get: GetState<RootState>;
74
- invalidate: () => void;
75
- advance: (timestamp: number, runGlobalEffects?: boolean) => void;
76
- setSize: (width: number, height: number) => void;
77
- setDpr: (dpr: Dpr) => void;
78
- onPointerMissed?: (event: ThreeEvent<PointerEvent>) => void;
79
- events: EventManager<any>;
80
- internal: InternalState;
81
- };
82
- export declare type FilterFunction = (items: THREE.Intersection[], state: RootState) => THREE.Intersection[];
83
- export declare type ComputeOffsetsFunction = (event: any, state: RootState) => {
84
- offsetX: number;
85
- offsetY: number;
86
- };
87
- export declare type StoreProps = {
88
- gl: THREE.WebGLRenderer;
89
- size: Size;
90
- vr?: boolean;
91
- shadows?: boolean | Partial<THREE.WebGLShadowMap>;
92
- linear?: boolean;
93
- flat?: boolean;
94
- orthographic?: boolean;
95
- frameloop?: 'always' | 'demand' | 'never';
96
- performance?: Partial<Omit<Performance, 'regress'>>;
97
- dpr?: Dpr;
98
- clock?: THREE.Clock;
99
- raycaster?: Partial<Raycaster>;
100
- camera?: Camera | Partial<ReactThreeFiber.Object3DNode<THREE.Camera, typeof THREE.Camera> & ReactThreeFiber.Object3DNode<THREE.PerspectiveCamera, typeof THREE.PerspectiveCamera> & ReactThreeFiber.Object3DNode<THREE.OrthographicCamera, typeof THREE.OrthographicCamera>>;
101
- onPointerMissed?: (event: ThreeEvent<PointerEvent>) => void;
102
- };
103
- export declare type ApplyProps = (instance: Instance, newProps: InstanceProps, oldProps?: InstanceProps, accumulative?: boolean) => void;
104
- declare const context: React.Context<UseStore<RootState>>;
105
- declare const createStore: (applyProps: ApplyProps, invalidate: (state?: RootState | undefined) => void, advance: (timestamp: number, runGlobalEffects?: boolean | undefined, state?: RootState | undefined) => void, props: StoreProps) => UseStore<RootState>;
106
- export { createStore, context };
1
+ import * as THREE from 'three';
2
+ import * as React from 'react';
3
+ import * as ReactThreeFiber from '../three-types';
4
+ import { GetState, SetState, UseStore } from 'zustand';
5
+ import { Instance, InstanceProps } from './renderer';
6
+ import { DomEvent, EventManager, PointerCaptureTarget, ThreeEvent } from './events';
7
+ export interface Intersection extends THREE.Intersection {
8
+ eventObject: THREE.Object3D;
9
+ }
10
+ export declare type Subscription = {
11
+ ref: React.MutableRefObject<RenderCallback>;
12
+ priority: number;
13
+ };
14
+ export declare type Dpr = number | [min: number, max: number];
15
+ export declare type Size = {
16
+ width: number;
17
+ height: number;
18
+ };
19
+ export declare type Viewport = Size & {
20
+ initialDpr: number;
21
+ dpr: number;
22
+ factor: number;
23
+ distance: number;
24
+ aspect: number;
25
+ };
26
+ export declare type Camera = THREE.OrthographicCamera | THREE.PerspectiveCamera;
27
+ export declare type Raycaster = THREE.Raycaster & {
28
+ enabled: boolean;
29
+ filter?: FilterFunction;
30
+ computeOffsets?: ComputeOffsetsFunction;
31
+ };
32
+ export declare type RenderCallback = (state: RootState, delta: number) => void;
33
+ export declare type Performance = {
34
+ current: number;
35
+ min: number;
36
+ max: number;
37
+ debounce: number;
38
+ regress: () => void;
39
+ };
40
+ export declare type Renderer = {
41
+ render: (scene: THREE.Scene, camera: THREE.Camera) => any;
42
+ };
43
+ export declare const isRenderer: (def: Renderer) => boolean;
44
+ export declare const isOrthographicCamera: (def: THREE.Camera) => def is THREE.OrthographicCamera;
45
+ export declare type InternalState = {
46
+ active: boolean;
47
+ priority: number;
48
+ frames: number;
49
+ lastProps: StoreProps;
50
+ lastEvent: React.MutableRefObject<DomEvent | null>;
51
+ interaction: THREE.Object3D[];
52
+ hovered: Map<string, ThreeEvent<DomEvent>>;
53
+ subscribers: Subscription[];
54
+ capturedMap: Map<number, Map<THREE.Object3D, PointerCaptureTarget>>;
55
+ initialClick: [x: number, y: number];
56
+ initialHits: THREE.Object3D[];
57
+ xr: {
58
+ connect: () => void;
59
+ disconnect: () => void;
60
+ };
61
+ subscribe: (callback: React.MutableRefObject<RenderCallback>, priority?: number) => () => void;
62
+ };
63
+ export declare type RootState = {
64
+ gl: THREE.WebGLRenderer;
65
+ scene: THREE.Scene;
66
+ camera: Camera & {
67
+ manual?: boolean;
68
+ };
69
+ controls: THREE.EventDispatcher | null;
70
+ raycaster: Raycaster;
71
+ mouse: THREE.Vector2;
72
+ clock: THREE.Clock;
73
+ linear: boolean;
74
+ flat: boolean;
75
+ frameloop: 'always' | 'demand' | 'never';
76
+ performance: Performance;
77
+ size: Size;
78
+ viewport: Viewport & {
79
+ getCurrentViewport: (camera?: Camera, target?: THREE.Vector3, size?: Size) => Omit<Viewport, 'dpr' | 'initialDpr'>;
80
+ };
81
+ set: SetState<RootState>;
82
+ get: GetState<RootState>;
83
+ invalidate: () => void;
84
+ advance: (timestamp: number, runGlobalEffects?: boolean) => void;
85
+ setSize: (width: number, height: number) => void;
86
+ setDpr: (dpr: Dpr) => void;
87
+ setFrameloop: (frameloop?: 'always' | 'demand' | 'never') => void;
88
+ onPointerMissed?: (event: MouseEvent) => void;
89
+ events: EventManager<any>;
90
+ internal: InternalState;
91
+ };
92
+ export declare type FilterFunction = (items: THREE.Intersection[], state: RootState) => THREE.Intersection[];
93
+ export declare type ComputeOffsetsFunction = (event: any, state: RootState) => {
94
+ offsetX: number;
95
+ offsetY: number;
96
+ };
97
+ export declare type StoreProps = {
98
+ gl: THREE.WebGLRenderer;
99
+ size: Size;
100
+ shadows?: boolean | Partial<THREE.WebGLShadowMap>;
101
+ linear?: boolean;
102
+ flat?: boolean;
103
+ orthographic?: boolean;
104
+ frameloop?: 'always' | 'demand' | 'never';
105
+ performance?: Partial<Omit<Performance, 'regress'>>;
106
+ dpr?: Dpr;
107
+ clock?: THREE.Clock;
108
+ raycaster?: Partial<Raycaster>;
109
+ camera?: (Camera | Partial<ReactThreeFiber.Object3DNode<THREE.Camera, typeof THREE.Camera> & ReactThreeFiber.Object3DNode<THREE.PerspectiveCamera, typeof THREE.PerspectiveCamera> & ReactThreeFiber.Object3DNode<THREE.OrthographicCamera, typeof THREE.OrthographicCamera>>) & {
110
+ manual?: boolean;
111
+ };
112
+ onPointerMissed?: (event: MouseEvent) => void;
113
+ };
114
+ export declare type ApplyProps = (instance: Instance, newProps: InstanceProps) => void;
115
+ declare const context: React.Context<UseStore<RootState>>;
116
+ declare const createStore: (applyProps: ApplyProps, invalidate: (state?: RootState | undefined) => void, advance: (timestamp: number, runGlobalEffects?: boolean | undefined, state?: RootState | undefined) => void, props: StoreProps) => UseStore<RootState>;
117
+ export { createStore, context };
@@ -0,0 +1,50 @@
1
+ import * as THREE from 'three';
2
+ import { AttachType, Instance, InstanceProps, LocalState } from './renderer';
3
+ import { Dpr } from './store';
4
+ export declare const DEFAULT = "__default";
5
+ export declare type DiffSet = {
6
+ memoized: {
7
+ [key: string]: any;
8
+ };
9
+ changes: [key: string, value: unknown, isEvent: boolean, keys: string[]][];
10
+ };
11
+ export declare const isDiffSet: (def: any) => def is DiffSet;
12
+ export declare type ClassConstructor = {
13
+ new (): void;
14
+ };
15
+ export declare type ObjectMap = {
16
+ nodes: {
17
+ [name: string]: THREE.Object3D;
18
+ };
19
+ materials: {
20
+ [name: string]: THREE.Material;
21
+ };
22
+ };
23
+ export declare function calculateDpr(dpr: Dpr): number;
24
+ export declare function filterKeys<TObj extends {
25
+ [key: string]: any;
26
+ }, TOmit extends boolean, TKey extends keyof TObj>(obj: TObj, omit: TOmit, ...keys: TKey[]): TOmit extends true ? Omit<TObj, TKey> : Pick<TObj, TKey>;
27
+ export declare const pick: <TObj>(obj: Partial<TObj>, keys: (keyof TObj)[]) => Pick<Partial<TObj>, keyof TObj>;
28
+ export declare const omit: <TObj>(obj: Partial<TObj>, keys: (keyof TObj)[]) => Omit<Partial<TObj>, keyof TObj>;
29
+ export declare const is: {
30
+ obj: (a: any) => boolean;
31
+ fun: (a: any) => a is Function;
32
+ str: (a: any) => a is string;
33
+ num: (a: any) => a is number;
34
+ und: (a: any) => boolean;
35
+ arr: (a: any) => boolean;
36
+ equ(a: any, b: any): boolean;
37
+ };
38
+ export declare function buildGraph(object: THREE.Object3D): ObjectMap;
39
+ export declare function dispose<TObj extends {
40
+ dispose?: () => void;
41
+ type?: string;
42
+ [key: string]: any;
43
+ }>(obj: TObj): void;
44
+ export declare function prepare<T = THREE.Object3D>(object: T, state?: Partial<LocalState>): T;
45
+ export declare function attach(parent: Instance, child: Instance, type: AttachType): void;
46
+ export declare function detach(parent: Instance, child: Instance, type: AttachType): void;
47
+ export declare function diffProps(instance: Instance, { children: cN, key: kN, ref: rN, ...props }: InstanceProps, { children: cP, key: kP, ref: rP, ...previous }?: InstanceProps, remove?: boolean): DiffSet;
48
+ export declare function applyProps(instance: Instance, data: InstanceProps | DiffSet): void;
49
+ export declare function invalidateInstance(instance: Instance): void;
50
+ export declare function updateInstance(instance: Instance): void;
@@ -1,7 +1,10 @@
1
- export * from './three-types';
2
- import * as ReactThreeFiber from './three-types';
3
- export { ReactThreeFiber };
4
- export type { Intersection, Subscription, Dpr, Size, Viewport, Camera, RenderCallback, Performance, RootState, } from './core/store';
5
- export type { ThreeEvent, Events, EventManager } from './core/events';
6
- export type { Props } from './web/Canvas';
7
- export * from './web';
1
+ export * from './three-types';
2
+ import * as ReactThreeFiber from './three-types';
3
+ export { ReactThreeFiber };
4
+ export type { Intersection, Subscription, Dpr, Size, Viewport, Camera, RenderCallback, Performance, RootState, } from './core/store';
5
+ export type { ThreeEvent, Events, EventManager } from './core/events';
6
+ export type { ObjectMap } from './core/utils';
7
+ export * from './core/hooks';
8
+ export * from './web/Canvas';
9
+ export { createPointerEvents as events } from './web/events';
10
+ export * from './core';
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ import { View, ViewProps, ViewStyle } from 'react-native';
3
+ import { UseStore } from 'zustand';
4
+ import { RenderProps } from '../core';
5
+ import { RootState } from '../core/store';
6
+ import { EventManager } from '../core/events';
7
+ export interface Props extends Omit<RenderProps<HTMLCanvasElement>, 'size' | 'events'>, ViewProps {
8
+ children: React.ReactNode;
9
+ fallback?: React.ReactNode;
10
+ style?: ViewStyle;
11
+ events?: (store: UseStore<RootState>) => EventManager<any>;
12
+ }
13
+ export declare const Canvas: React.ForwardRefExoticComponent<Props & React.RefAttributes<View>>;
@@ -0,0 +1,5 @@
1
+ import { UseStore } from 'zustand';
2
+ import { RootState } from '../core/store';
3
+ import { EventManager } from '../core/events';
4
+ import { View } from 'react-native';
5
+ export declare function createTouchEvents(store: UseStore<RootState>): EventManager<View>;
@@ -0,0 +1,9 @@
1
+ import { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';
2
+ import { ObjectMap } from '../core/utils';
3
+ import { Extensions, LoaderResult, BranchingReturn, useStore, useThree, useFrame, useGraph } from '../core/hooks';
4
+ declare function useLoader<T, U extends string | string[]>(Proto: new () => LoaderResult<T>, input: U, extensions?: Extensions, onProgress?: (event: ProgressEvent<EventTarget>) => void): U extends any[] ? BranchingReturn<T, GLTF, GLTF & ObjectMap>[] : BranchingReturn<T, GLTF, GLTF & ObjectMap>;
5
+ declare namespace useLoader {
6
+ var preload: <T, U extends string | string[]>(Proto: new () => LoaderResult<T>, input: U, extensions?: Extensions | undefined) => undefined;
7
+ var clear: <T, U extends string | string[]>(Proto: new () => LoaderResult<T>, input: U) => void;
8
+ }
9
+ export { useStore, useThree, useFrame, useGraph, useLoader };
@@ -0,0 +1,10 @@
1
+ export * from './three-types';
2
+ import * as ReactThreeFiber from './three-types';
3
+ export { ReactThreeFiber };
4
+ export type { Intersection, Subscription, Dpr, Size, Viewport, Camera, RenderCallback, Performance, RootState, } from './core/store';
5
+ export type { ThreeEvent, Events, EventManager } from './core/events';
6
+ export type { ObjectMap } from './core/utils';
7
+ export * from './native/hooks';
8
+ export * from './native/Canvas';
9
+ export { createTouchEvents as events } from './native/events';
10
+ export * from './core';