@react-three/fiber 8.2.0 → 9.0.0-alpha.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.
Files changed (27) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/declarations/src/core/events.d.ts +69 -69
  3. package/dist/declarations/src/core/hooks.d.ts +23 -21
  4. package/dist/declarations/src/core/index.d.ts +61 -57
  5. package/dist/declarations/src/core/loop.d.ts +13 -13
  6. package/dist/declarations/src/core/renderer.d.ts +51 -51
  7. package/dist/declarations/src/core/stages.d.ts +59 -0
  8. package/dist/declarations/src/core/store.d.ts +110 -95
  9. package/dist/declarations/src/core/utils.d.ts +81 -82
  10. package/dist/declarations/src/index.d.ts +12 -11
  11. package/dist/declarations/src/native/Canvas.d.ts +8 -8
  12. package/dist/declarations/src/native/events.d.ts +4 -4
  13. package/dist/declarations/src/native/polyfills.d.ts +1 -1
  14. package/dist/declarations/src/native.d.ts +10 -10
  15. package/dist/declarations/src/three-types.d.ts +331 -331
  16. package/dist/declarations/src/web/Canvas.d.ts +9 -9
  17. package/dist/declarations/src/web/events.d.ts +4 -4
  18. package/dist/{index-ca47b633.cjs.prod.js → index-b12f488b.cjs.prod.js} +290 -69
  19. package/dist/{index-0499a96a.cjs.dev.js → index-b3be5a63.cjs.dev.js} +290 -69
  20. package/dist/{index-6279214a.esm.js → index-e27d4a05.esm.js} +287 -70
  21. package/dist/react-three-fiber.cjs.dev.js +7 -1
  22. package/dist/react-three-fiber.cjs.prod.js +7 -1
  23. package/dist/react-three-fiber.esm.js +4 -2
  24. package/native/dist/react-three-fiber-native.cjs.dev.js +4 -1
  25. package/native/dist/react-three-fiber-native.cjs.prod.js +4 -1
  26. package/native/dist/react-three-fiber-native.esm.js +4 -2
  27. package/package.json +6 -6
@@ -1,95 +1,110 @@
1
- import * as THREE from 'three';
2
- import * as React from 'react';
3
- import { GetState, SetState, StoreApi, UseBoundStore } from 'zustand';
4
- import { DomEvent, EventManager, PointerCaptureTarget, ThreeEvent } from './events';
5
- import { Camera } from './utils';
6
- export declare const privateKeys: readonly ["set", "get", "setSize", "setFrameloop", "setDpr", "events", "invalidate", "advance", "size", "viewport"];
7
- export declare type PrivateKeys = typeof privateKeys[number];
8
- export interface Intersection extends THREE.Intersection {
9
- eventObject: THREE.Object3D;
10
- }
11
- export declare type Subscription = {
12
- ref: React.MutableRefObject<RenderCallback>;
13
- priority: number;
14
- store: UseBoundStore<RootState, StoreApi<RootState>>;
15
- };
16
- export declare type Dpr = number | [min: number, max: number];
17
- export declare type Size = {
18
- width: number;
19
- height: number;
20
- top: number;
21
- left: number;
22
- updateStyle?: boolean;
23
- };
24
- export declare type Viewport = Size & {
25
- initialDpr: number;
26
- dpr: number;
27
- factor: number;
28
- distance: number;
29
- aspect: number;
30
- };
31
- export declare type RenderCallback = (state: RootState, delta: number, frame?: THREE.XRFrame) => void;
32
- export declare type Performance = {
33
- current: number;
34
- min: number;
35
- max: number;
36
- debounce: number;
37
- regress: () => void;
38
- };
39
- export declare type Renderer = {
40
- render: (scene: THREE.Scene, camera: THREE.Camera) => any;
41
- };
42
- export declare const isRenderer: (def: any) => boolean;
43
- export declare type InternalState = {
44
- active: boolean;
45
- priority: number;
46
- frames: number;
47
- lastEvent: React.MutableRefObject<DomEvent | null>;
48
- interaction: THREE.Object3D[];
49
- hovered: Map<string, ThreeEvent<DomEvent>>;
50
- subscribers: Subscription[];
51
- capturedMap: Map<number, Map<THREE.Object3D, PointerCaptureTarget>>;
52
- initialClick: [x: number, y: number];
53
- initialHits: THREE.Object3D[];
54
- subscribe: (callback: React.MutableRefObject<RenderCallback>, priority: number, store: UseBoundStore<RootState, StoreApi<RootState>>) => () => void;
55
- };
56
- export declare type RootState = {
57
- set: SetState<RootState>;
58
- get: GetState<RootState>;
59
- gl: THREE.WebGLRenderer;
60
- camera: Camera & {
61
- manual?: boolean;
62
- };
63
- scene: THREE.Scene;
64
- raycaster: THREE.Raycaster;
65
- clock: THREE.Clock;
66
- events: EventManager<any>;
67
- xr: {
68
- connect: () => void;
69
- disconnect: () => void;
70
- };
71
- controls: THREE.EventDispatcher | null;
72
- pointer: THREE.Vector2;
73
- mouse: THREE.Vector2;
74
- legacy: boolean;
75
- linear: boolean;
76
- flat: boolean;
77
- frameloop: 'always' | 'demand' | 'never';
78
- performance: Performance;
79
- size: Size;
80
- viewport: Viewport & {
81
- getCurrentViewport: (camera?: Camera, target?: THREE.Vector3 | Parameters<THREE.Vector3['set']>, size?: Size) => Omit<Viewport, 'dpr' | 'initialDpr'>;
82
- };
83
- invalidate: (frames?: number) => void;
84
- advance: (timestamp: number, runGlobalEffects?: boolean) => void;
85
- setEvents: (events: Partial<EventManager<any>>) => void;
86
- setSize: (width: number, height: number, updateStyle?: boolean, top?: number, left?: number) => void;
87
- setDpr: (dpr: Dpr) => void;
88
- setFrameloop: (frameloop?: 'always' | 'demand' | 'never') => void;
89
- onPointerMissed?: (event: MouseEvent) => void;
90
- previousRoot?: UseBoundStore<RootState, StoreApi<RootState>>;
91
- internal: InternalState;
92
- };
93
- declare const context: React.Context<UseBoundStore<RootState, StoreApi<RootState>>>;
94
- declare const createStore: (invalidate: (state?: RootState | undefined, frames?: number | undefined) => void, advance: (timestamp: number, runGlobalEffects?: boolean | undefined, state?: RootState | undefined, frame?: THREE.XRFrame | undefined) => void) => UseBoundStore<RootState>;
95
- export { createStore, context };
1
+ /// <reference types="webxr" />
2
+ import * as THREE from 'three';
3
+ import * as React from 'react';
4
+ import { GetState, SetState, StoreApi, UseBoundStore } from 'zustand';
5
+ import { DomEvent, EventManager, PointerCaptureTarget, ThreeEvent } from './events';
6
+ import { Camera } from './utils';
7
+ import { FixedStage, Stage } from './stages';
8
+ export declare const privateKeys: readonly ["set", "get", "setSize", "setFrameloop", "setDpr", "events", "invalidate", "advance", "size", "viewport"];
9
+ export declare type PrivateKeys = typeof privateKeys[number];
10
+ export interface Intersection extends THREE.Intersection {
11
+ eventObject: THREE.Object3D;
12
+ }
13
+ export declare type Subscription = {
14
+ ref: React.MutableRefObject<RenderCallback>;
15
+ priority: number;
16
+ store: UseBoundStore<RootState, StoreApi<RootState>>;
17
+ };
18
+ export declare type Dpr = number | [min: number, max: number];
19
+ export declare type Size = {
20
+ width: number;
21
+ height: number;
22
+ top: number;
23
+ left: number;
24
+ updateStyle?: boolean;
25
+ };
26
+ export declare type Viewport = Size & {
27
+ initialDpr: number;
28
+ dpr: number;
29
+ factor: number;
30
+ distance: number;
31
+ aspect: number;
32
+ };
33
+ export declare type RenderCallback = (state: RootState, delta: number, frame?: XRFrame) => void;
34
+ declare type LegacyAlways = 'always';
35
+ export declare type FrameloopMode = LegacyAlways | 'auto' | 'demand' | 'never';
36
+ declare type FrameloopRender = 'auto' | 'manual';
37
+ export declare type FrameloopLegacy = 'always' | 'demand' | 'never';
38
+ export declare type Frameloop = FrameloopLegacy | {
39
+ mode?: FrameloopMode;
40
+ render?: FrameloopRender;
41
+ maxDelta?: number;
42
+ };
43
+ export declare type Performance = {
44
+ current: number;
45
+ min: number;
46
+ max: number;
47
+ debounce: number;
48
+ regress: () => void;
49
+ };
50
+ export declare type Renderer = {
51
+ render: (scene: THREE.Scene, camera: THREE.Camera) => any;
52
+ };
53
+ export declare const isRenderer: (def: any) => boolean;
54
+ export declare type StageTypes = Stage | FixedStage;
55
+ export declare type InternalState = {
56
+ interaction: THREE.Object3D[];
57
+ hovered: Map<string, ThreeEvent<DomEvent>>;
58
+ subscribers: Subscription[];
59
+ capturedMap: Map<number, Map<THREE.Object3D, PointerCaptureTarget>>;
60
+ initialClick: [x: number, y: number];
61
+ initialHits: THREE.Object3D[];
62
+ lastEvent: React.MutableRefObject<DomEvent | null>;
63
+ active: boolean;
64
+ priority: number;
65
+ frames: number;
66
+ stages: StageTypes[];
67
+ render: 'auto' | 'manual';
68
+ maxDelta: number;
69
+ subscribe: (callback: React.MutableRefObject<RenderCallback>, priority: number, store: UseBoundStore<RootState, StoreApi<RootState>>) => () => void;
70
+ };
71
+ export declare type RootState = {
72
+ set: SetState<RootState>;
73
+ get: GetState<RootState>;
74
+ gl: THREE.WebGLRenderer;
75
+ camera: Camera & {
76
+ manual?: boolean;
77
+ };
78
+ scene: THREE.Scene;
79
+ raycaster: THREE.Raycaster;
80
+ clock: THREE.Clock;
81
+ events: EventManager<any>;
82
+ xr: {
83
+ connect: () => void;
84
+ disconnect: () => void;
85
+ };
86
+ controls: THREE.EventDispatcher | null;
87
+ pointer: THREE.Vector2;
88
+ mouse: THREE.Vector2;
89
+ legacy: boolean;
90
+ linear: boolean;
91
+ flat: boolean;
92
+ frameloop: FrameloopLegacy;
93
+ performance: Performance;
94
+ size: Size;
95
+ viewport: Viewport & {
96
+ getCurrentViewport: (camera?: Camera, target?: THREE.Vector3 | Parameters<THREE.Vector3['set']>, size?: Size) => Omit<Viewport, 'dpr' | 'initialDpr'>;
97
+ };
98
+ invalidate: (frames?: number) => void;
99
+ advance: (timestamp: number, runGlobalEffects?: boolean) => void;
100
+ setEvents: (events: Partial<EventManager<any>>) => void;
101
+ setSize: (width: number, height: number, updateStyle?: boolean, top?: number, left?: number) => void;
102
+ setDpr: (dpr: Dpr) => void;
103
+ setFrameloop: (frameloop: Frameloop) => void;
104
+ onPointerMissed?: (event: MouseEvent) => void;
105
+ previousRoot?: UseBoundStore<RootState, StoreApi<RootState>>;
106
+ internal: InternalState;
107
+ };
108
+ declare const context: React.Context<UseBoundStore<RootState, StoreApi<RootState>>>;
109
+ declare const createStore: (invalidate: (state?: RootState | undefined, frames?: number | undefined) => void, advance: (timestamp: number, runGlobalEffects?: boolean | undefined, state?: RootState | undefined, frame?: XRFrame | undefined) => void) => UseBoundStore<RootState>;
110
+ export { createStore, context };
@@ -1,82 +1,81 @@
1
- import * as THREE from 'three';
2
- import * as React from 'react';
3
- import { AttachType, Instance, InstanceProps, LocalState } from './renderer';
4
- import { Dpr, RootState, Size } from './store';
5
- export declare type Camera = THREE.OrthographicCamera | THREE.PerspectiveCamera;
6
- export declare const isOrthographicCamera: (def: Camera) => def is THREE.OrthographicCamera;
7
- export declare const useIsomorphicLayoutEffect: typeof React.useEffect;
8
- export declare function useMutableCallback<T>(fn: T): React.MutableRefObject<T>;
9
- export declare type SetBlock = false | Promise<null> | null;
10
- export declare type UnblockProps = {
11
- set: React.Dispatch<React.SetStateAction<SetBlock>>;
12
- children: React.ReactNode;
13
- };
14
- export declare function Block({ set }: Omit<UnblockProps, 'children'>): null;
15
- export declare class ErrorBoundary extends React.Component<{
16
- set: React.Dispatch<any>;
17
- children: React.ReactNode;
18
- }, {
19
- error: boolean;
20
- }> {
21
- state: {
22
- error: boolean;
23
- };
24
- static getDerivedStateFromError: () => {
25
- error: boolean;
26
- };
27
- componentDidCatch(error: any): void;
28
- render(): React.ReactNode;
29
- }
30
- export declare const DEFAULT = "__default";
31
- export declare type DiffSet = {
32
- memoized: {
33
- [key: string]: any;
34
- };
35
- changes: [key: string, value: unknown, isEvent: boolean, keys: string[]][];
36
- };
37
- export declare const isDiffSet: (def: any) => def is DiffSet;
38
- export declare type ClassConstructor = {
39
- new (): void;
40
- };
41
- export declare type ObjectMap = {
42
- nodes: {
43
- [name: string]: THREE.Object3D;
44
- };
45
- materials: {
46
- [name: string]: THREE.Material;
47
- };
48
- };
49
- export declare function calculateDpr(dpr: Dpr): number;
50
- export declare const getRootState: (obj: THREE.Object3D) => RootState | undefined;
51
- export declare type EquConfig = {
52
- arrays?: 'reference' | 'shallow';
53
- objects?: 'reference' | 'shallow';
54
- strict?: boolean;
55
- };
56
- export declare const is: {
57
- obj: (a: any) => boolean;
58
- fun: (a: any) => a is Function;
59
- str: (a: any) => a is string;
60
- num: (a: any) => a is number;
61
- boo: (a: any) => a is boolean;
62
- und: (a: any) => boolean;
63
- arr: (a: any) => boolean;
64
- equ(a: any, b: any, { arrays, objects, strict }?: EquConfig): boolean;
65
- };
66
- export declare function buildGraph(object: THREE.Object3D): ObjectMap;
67
- export declare function dispose<TObj extends {
68
- dispose?: () => void;
69
- type?: string;
70
- [key: string]: any;
71
- }>(obj: TObj): void;
72
- export declare function prepare<T = THREE.Object3D>(object: T, state?: Partial<LocalState>): T;
73
- export declare function attach(parent: Instance, child: Instance, type: AttachType): void;
74
- export declare function detach(parent: Instance, child: Instance, type: AttachType): void;
75
- 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;
76
- export declare function applyProps(instance: Instance, data: InstanceProps | DiffSet): Instance;
77
- export declare function invalidateInstance(instance: Instance): void;
78
- export declare function updateInstance(instance: Instance): void;
79
- export declare function updateCamera(camera: Camera & {
80
- manual?: boolean;
81
- }, size: Size): void;
82
- export declare function setDeep(obj: any, value: any, keys: string[]): any;
1
+ import * as THREE from 'three';
2
+ import * as React from 'react';
3
+ import { AttachType, Instance, InstanceProps, LocalState } from './renderer';
4
+ import { Dpr, RootState, Size } from './store';
5
+ export declare type Camera = THREE.OrthographicCamera | THREE.PerspectiveCamera;
6
+ export declare const isOrthographicCamera: (def: Camera) => def is THREE.OrthographicCamera;
7
+ export declare const useIsomorphicLayoutEffect: typeof React.useLayoutEffect;
8
+ export declare function useMutableCallback<T>(fn: T): React.MutableRefObject<T>;
9
+ export declare type SetBlock = false | Promise<null> | null;
10
+ export declare type UnblockProps = {
11
+ set: React.Dispatch<React.SetStateAction<SetBlock>>;
12
+ children: React.ReactNode;
13
+ };
14
+ export declare function Block({ set }: Omit<UnblockProps, 'children'>): null;
15
+ export declare class ErrorBoundary extends React.Component<{
16
+ set: React.Dispatch<any>;
17
+ children: React.ReactNode;
18
+ }, {
19
+ error: boolean;
20
+ }> {
21
+ state: {
22
+ error: boolean;
23
+ };
24
+ static getDerivedStateFromError: () => {
25
+ error: boolean;
26
+ };
27
+ componentDidCatch(error: any): void;
28
+ render(): React.ReactNode;
29
+ }
30
+ export declare const DEFAULT = "__default";
31
+ export declare type DiffSet = {
32
+ memoized: {
33
+ [key: string]: any;
34
+ };
35
+ changes: [key: string, value: unknown, isEvent: boolean, keys: string[]][];
36
+ };
37
+ export declare const isDiffSet: (def: any) => def is DiffSet;
38
+ export declare type ClassConstructor = {
39
+ new (): void;
40
+ };
41
+ export declare type ObjectMap = {
42
+ nodes: {
43
+ [name: string]: THREE.Object3D;
44
+ };
45
+ materials: {
46
+ [name: string]: THREE.Material;
47
+ };
48
+ };
49
+ export declare function calculateDpr(dpr: Dpr): number;
50
+ export declare const getRootState: (obj: THREE.Object3D) => RootState | undefined;
51
+ export declare type EquConfig = {
52
+ arrays?: 'reference' | 'shallow';
53
+ objects?: 'reference' | 'shallow';
54
+ strict?: boolean;
55
+ };
56
+ export declare const is: {
57
+ obj: (a: any) => boolean;
58
+ fun: (a: any) => a is Function;
59
+ str: (a: any) => a is string;
60
+ num: (a: any) => a is number;
61
+ boo: (a: any) => a is boolean;
62
+ und: (a: any) => boolean;
63
+ arr: (a: any) => boolean;
64
+ equ(a: any, b: any, { arrays, objects, strict }?: EquConfig): boolean;
65
+ };
66
+ export declare function buildGraph(object: THREE.Object3D): ObjectMap;
67
+ export declare function dispose<TObj extends {
68
+ dispose?: () => void;
69
+ type?: string;
70
+ [key: string]: any;
71
+ }>(obj: TObj): void;
72
+ export declare function prepare<T = THREE.Object3D>(object: T, state?: Partial<LocalState>): T;
73
+ export declare function attach(parent: Instance, child: Instance, type: AttachType): void;
74
+ export declare function detach(parent: Instance, child: Instance, type: AttachType): void;
75
+ 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;
76
+ export declare function applyProps(instance: Instance, data: InstanceProps | DiffSet): Instance;
77
+ export declare function invalidateInstance(instance: Instance): void;
78
+ export declare function updateInstance(instance: Instance): void;
79
+ export declare function updateCamera(camera: Camera & {
80
+ manual?: boolean;
81
+ }, size: Size): void;
@@ -1,11 +1,12 @@
1
- export * from './three-types';
2
- import * as ReactThreeFiber from './three-types';
3
- export { ReactThreeFiber };
4
- export type { BaseInstance, LocalState } from './core/renderer';
5
- export type { Intersection, Subscription, Dpr, Size, Viewport, RenderCallback, Performance, RootState, } from './core/store';
6
- export type { ThreeEvent, Events, EventManager, ComputeFunction } from './core/events';
7
- export type { ObjectMap, Camera } from './core/utils';
8
- export * from './web/Canvas';
9
- export { createEvents } from './core/events';
10
- export { createPointerEvents as events } from './web/events';
11
- export * from './core';
1
+ export * from './three-types';
2
+ import * as ReactThreeFiber from './three-types';
3
+ export { ReactThreeFiber };
4
+ export type { BaseInstance, LocalState } from './core/renderer';
5
+ export type { Intersection, Subscription, Dpr, Size, Viewport, RenderCallback, Performance, RootState, } from './core/store';
6
+ export type { ThreeEvent, Events, EventManager, ComputeFunction } from './core/events';
7
+ export type { ObjectMap, Camera } from './core/utils';
8
+ export * from './web/Canvas';
9
+ export { createEvents } from './core/events';
10
+ export { createPointerEvents as events } from './web/events';
11
+ export * from './core';
12
+ export { Stage, FixedStage, Stages } from './core/stages';
@@ -1,8 +1,8 @@
1
- import * as React from 'react';
2
- import { View, ViewProps, ViewStyle } from 'react-native';
3
- import { RenderProps } from '../core';
4
- export interface Props extends Omit<RenderProps<HTMLCanvasElement>, 'size' | 'dpr'>, ViewProps {
5
- children: React.ReactNode;
6
- style?: ViewStyle;
7
- }
8
- export declare const Canvas: React.ForwardRefExoticComponent<Props & React.RefAttributes<View>>;
1
+ import * as React from 'react';
2
+ import { View, ViewProps, ViewStyle } from 'react-native';
3
+ import { RenderProps } from '../core';
4
+ export interface Props extends Omit<RenderProps<HTMLCanvasElement>, 'size' | 'dpr'>, ViewProps {
5
+ children: React.ReactNode;
6
+ style?: ViewStyle;
7
+ }
8
+ export declare const Canvas: React.ForwardRefExoticComponent<Props & React.RefAttributes<View>>;
@@ -1,4 +1,4 @@
1
- import { UseBoundStore } from 'zustand';
2
- import { RootState } from '../core/store';
3
- import { EventManager } from '../core/events';
4
- export declare function createTouchEvents(store: UseBoundStore<RootState>): EventManager<HTMLElement>;
1
+ import { UseBoundStore } from 'zustand';
2
+ import { RootState } from '../core/store';
3
+ import { EventManager } from '../core/events';
4
+ export declare function createTouchEvents(store: UseBoundStore<RootState>): EventManager<HTMLElement>;
@@ -1 +1 @@
1
- export declare function polyfills(): (() => void) | undefined;
1
+ export declare function polyfills(): (() => void) | undefined;
@@ -1,10 +1,10 @@
1
- export * from './three-types';
2
- import * as ReactThreeFiber from './three-types';
3
- export { ReactThreeFiber };
4
- export type { BaseInstance, LocalState } from './core/renderer';
5
- export type { Intersection, Subscription, Dpr, Size, Viewport, RenderCallback, Performance, RootState, } from './core/store';
6
- export type { ThreeEvent, Events, EventManager, ComputeFunction } from './core/events';
7
- export type { ObjectMap, Camera } from './core/utils';
8
- export * from './native/Canvas';
9
- export { createTouchEvents as events } from './native/events';
10
- export * from './core';
1
+ export * from './three-types';
2
+ import * as ReactThreeFiber from './three-types';
3
+ export { ReactThreeFiber };
4
+ export type { BaseInstance, LocalState } from './core/renderer';
5
+ export type { Intersection, Subscription, Dpr, Size, Viewport, RenderCallback, Performance, RootState, } from './core/store';
6
+ export type { ThreeEvent, Events, EventManager, ComputeFunction } from './core/events';
7
+ export type { ObjectMap, Camera } from './core/utils';
8
+ export * from './native/Canvas';
9
+ export { createTouchEvents as events } from './native/events';
10
+ export * from './core';