@react-three/fiber 9.0.0-beta.1 → 9.0.0-rc.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/CHANGELOG.md +66 -0
- package/dist/declarations/src/core/events.d.ts +91 -0
- package/dist/declarations/src/core/hooks.d.ts +52 -0
- package/dist/declarations/src/core/index.d.ts +13 -0
- package/dist/declarations/src/core/loop.d.ts +31 -0
- package/dist/declarations/src/core/reconciler.d.ts +55 -0
- package/dist/declarations/src/core/renderer.d.ts +87 -0
- package/dist/declarations/src/core/store.d.ts +130 -0
- package/dist/declarations/src/core/utils.d.ts +138 -0
- package/dist/declarations/src/index.d.ts +6 -0
- package/dist/declarations/src/native/Canvas.d.ts +14 -0
- package/dist/declarations/src/native/events.d.ts +4 -0
- package/dist/declarations/src/native.d.ts +6 -0
- package/dist/declarations/src/three-types.d.ts +62 -0
- package/dist/declarations/src/web/Canvas.d.ts +24 -0
- package/dist/declarations/src/web/events.d.ts +4 -0
- package/dist/declarations/src/web/use-measure.d.ts +34 -0
- package/dist/{loop-b00a3b86.esm.js → events-26d2636c.esm.js} +99 -17
- package/dist/{loop-dfcc9ca9.cjs.prod.js → events-cb1a9ea0.cjs.prod.js} +99 -16
- package/dist/{loop-eb3c7218.cjs.dev.js → events-df578889.cjs.dev.js} +99 -16
- package/dist/react-three-fiber.cjs.dev.js +230 -122
- package/dist/react-three-fiber.cjs.prod.js +230 -122
- package/dist/react-three-fiber.esm.js +193 -84
- package/native/dist/react-three-fiber-native.cjs.dev.js +190 -128
- package/native/dist/react-three-fiber-native.cjs.prod.js +190 -128
- package/native/dist/react-three-fiber-native.esm.js +157 -95
- package/package.json +88 -86
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var events = require('../../dist/events-cb1a9ea0.cjs.prod.js');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var THREE = require('three');
|
|
8
8
|
var reactNative = require('react-native');
|
|
@@ -15,9 +15,9 @@ var base64Js = require('base64-js');
|
|
|
15
15
|
var buffer = require('buffer');
|
|
16
16
|
require('react-reconciler/constants');
|
|
17
17
|
require('zustand/traditional');
|
|
18
|
+
require('suspend-react');
|
|
18
19
|
require('react-reconciler');
|
|
19
20
|
require('scheduler');
|
|
20
|
-
require('suspend-react');
|
|
21
21
|
|
|
22
22
|
function _interopNamespace(e) {
|
|
23
23
|
if (e && e.__esModule) return e;
|
|
@@ -41,88 +41,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
41
41
|
var THREE__namespace = /*#__PURE__*/_interopNamespace(THREE);
|
|
42
42
|
var fs__namespace = /*#__PURE__*/_interopNamespace(fs);
|
|
43
43
|
|
|
44
|
-
/** Default R3F event manager for react-native */
|
|
45
|
-
function createTouchEvents(store) {
|
|
46
|
-
const {
|
|
47
|
-
handlePointer
|
|
48
|
-
} = loop.createEvents(store);
|
|
49
|
-
const handleTouch = (event, name) => {
|
|
50
|
-
event.persist()
|
|
51
|
-
|
|
52
|
-
// Apply offset
|
|
53
|
-
;
|
|
54
|
-
event.nativeEvent.offsetX = event.nativeEvent.locationX;
|
|
55
|
-
event.nativeEvent.offsetY = event.nativeEvent.locationY;
|
|
56
|
-
|
|
57
|
-
// Emulate DOM event
|
|
58
|
-
const callback = handlePointer(name);
|
|
59
|
-
callback(event.nativeEvent);
|
|
60
|
-
return true;
|
|
61
|
-
};
|
|
62
|
-
const responder = reactNative.PanResponder.create({
|
|
63
|
-
onStartShouldSetPanResponder: () => true,
|
|
64
|
-
onMoveShouldSetPanResponder: () => true,
|
|
65
|
-
onMoveShouldSetPanResponderCapture: () => true,
|
|
66
|
-
onPanResponderTerminationRequest: () => true,
|
|
67
|
-
onStartShouldSetPanResponderCapture: e => handleTouch(e, 'onPointerCapture'),
|
|
68
|
-
onPanResponderStart: e => handleTouch(e, 'onPointerDown'),
|
|
69
|
-
onPanResponderMove: e => handleTouch(e, 'onPointerMove'),
|
|
70
|
-
onPanResponderEnd: (e, state) => {
|
|
71
|
-
handleTouch(e, 'onPointerUp');
|
|
72
|
-
if (Math.hypot(state.dx, state.dy) < 20) handleTouch(e, 'onClick');
|
|
73
|
-
},
|
|
74
|
-
onPanResponderRelease: e => handleTouch(e, 'onPointerLeave'),
|
|
75
|
-
onPanResponderTerminate: e => handleTouch(e, 'onLostPointerCapture'),
|
|
76
|
-
onPanResponderReject: e => handleTouch(e, 'onLostPointerCapture')
|
|
77
|
-
});
|
|
78
|
-
return {
|
|
79
|
-
priority: 1,
|
|
80
|
-
enabled: true,
|
|
81
|
-
compute(event, state, previous) {
|
|
82
|
-
// https://github.com/pmndrs/react-three-fiber/pull/782
|
|
83
|
-
// Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides
|
|
84
|
-
state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);
|
|
85
|
-
state.raycaster.setFromCamera(state.pointer, state.camera);
|
|
86
|
-
},
|
|
87
|
-
connected: undefined,
|
|
88
|
-
handlers: responder.panHandlers,
|
|
89
|
-
update: () => {
|
|
90
|
-
var _internal$lastEvent;
|
|
91
|
-
const {
|
|
92
|
-
events,
|
|
93
|
-
internal
|
|
94
|
-
} = store.getState();
|
|
95
|
-
if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) {
|
|
96
|
-
handlePointer('onPointerMove')(internal.lastEvent.current);
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
connect: () => {
|
|
100
|
-
const {
|
|
101
|
-
set,
|
|
102
|
-
events
|
|
103
|
-
} = store.getState();
|
|
104
|
-
events.disconnect == null ? void 0 : events.disconnect();
|
|
105
|
-
set(state => ({
|
|
106
|
-
events: {
|
|
107
|
-
...state.events,
|
|
108
|
-
connected: true
|
|
109
|
-
}
|
|
110
|
-
}));
|
|
111
|
-
},
|
|
112
|
-
disconnect: () => {
|
|
113
|
-
const {
|
|
114
|
-
set
|
|
115
|
-
} = store.getState();
|
|
116
|
-
set(state => ({
|
|
117
|
-
events: {
|
|
118
|
-
...state.events,
|
|
119
|
-
connected: false
|
|
120
|
-
}
|
|
121
|
-
}));
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
|
|
126
44
|
// TODO: React 19 needs support from react-native
|
|
127
45
|
const _View = reactNative.View;
|
|
128
46
|
/**
|
|
@@ -133,7 +51,7 @@ const CanvasImpl = /*#__PURE__*/React__namespace.forwardRef(({
|
|
|
133
51
|
children,
|
|
134
52
|
style,
|
|
135
53
|
gl,
|
|
136
|
-
events =
|
|
54
|
+
events: events$1 = events.createPointerEvents,
|
|
137
55
|
shadows,
|
|
138
56
|
linear,
|
|
139
57
|
flat,
|
|
@@ -151,8 +69,8 @@ const CanvasImpl = /*#__PURE__*/React__namespace.forwardRef(({
|
|
|
151
69
|
// Create a known catalogue of Threejs-native elements
|
|
152
70
|
// This will include the entire THREE namespace by default, users can extend
|
|
153
71
|
// their own elements by using the createRoot API instead
|
|
154
|
-
React__namespace.useMemo(() =>
|
|
155
|
-
const Bridge =
|
|
72
|
+
React__namespace.useMemo(() => events.extend(THREE__namespace), []);
|
|
73
|
+
const Bridge = events.useBridge();
|
|
156
74
|
const [{
|
|
157
75
|
width,
|
|
158
76
|
height,
|
|
@@ -167,7 +85,7 @@ const CanvasImpl = /*#__PURE__*/React__namespace.forwardRef(({
|
|
|
167
85
|
const [canvas, setCanvas] = React__namespace.useState(null);
|
|
168
86
|
const [bind, setBind] = React__namespace.useState();
|
|
169
87
|
React__namespace.useImperativeHandle(forwardedRef, () => viewRef.current);
|
|
170
|
-
const handlePointerMissed =
|
|
88
|
+
const handlePointerMissed = events.useMutableCallback(onPointerMissed);
|
|
171
89
|
const [block, setBlock] = React__namespace.useState(false);
|
|
172
90
|
const [error, setError] = React__namespace.useState(undefined);
|
|
173
91
|
|
|
@@ -196,27 +114,92 @@ const CanvasImpl = /*#__PURE__*/React__namespace.forwardRef(({
|
|
|
196
114
|
// Called on context create or swap
|
|
197
115
|
// https://github.com/pmndrs/react-three-fiber/pull/2297
|
|
198
116
|
const onContextCreate = React__namespace.useCallback(context => {
|
|
199
|
-
const
|
|
117
|
+
const listeners = new Map();
|
|
118
|
+
const canvas = {
|
|
119
|
+
style: {},
|
|
200
120
|
width: context.drawingBufferWidth,
|
|
201
121
|
height: context.drawingBufferHeight,
|
|
202
|
-
|
|
203
|
-
addEventListener: () => {},
|
|
204
|
-
removeEventListener: () => {},
|
|
122
|
+
clientWidth: context.drawingBufferWidth,
|
|
205
123
|
clientHeight: context.drawingBufferHeight,
|
|
206
124
|
getContext: (_, {
|
|
207
125
|
antialias = false
|
|
208
126
|
}) => {
|
|
209
127
|
setAntialias(antialias);
|
|
210
128
|
return context;
|
|
129
|
+
},
|
|
130
|
+
addEventListener(type, listener) {
|
|
131
|
+
let callbacks = listeners.get(type);
|
|
132
|
+
if (!callbacks) {
|
|
133
|
+
callbacks = [];
|
|
134
|
+
listeners.set(type, callbacks);
|
|
135
|
+
}
|
|
136
|
+
callbacks.push(listener);
|
|
137
|
+
},
|
|
138
|
+
removeEventListener(type, listener) {
|
|
139
|
+
const callbacks = listeners.get(type);
|
|
140
|
+
if (callbacks) {
|
|
141
|
+
const index = callbacks.indexOf(listener);
|
|
142
|
+
if (index !== -1) callbacks.splice(index, 1);
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
dispatchEvent(event) {
|
|
146
|
+
Object.assign(event, {
|
|
147
|
+
target: this
|
|
148
|
+
});
|
|
149
|
+
const callbacks = listeners.get(event.type);
|
|
150
|
+
if (callbacks) {
|
|
151
|
+
for (const callback of callbacks) {
|
|
152
|
+
callback(event);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
setPointerCapture() {
|
|
157
|
+
// TODO
|
|
158
|
+
},
|
|
159
|
+
releasePointerCapture() {
|
|
160
|
+
// TODO
|
|
211
161
|
}
|
|
212
162
|
};
|
|
213
|
-
|
|
214
|
-
|
|
163
|
+
|
|
164
|
+
// TODO: this is wrong but necessary to trick controls
|
|
165
|
+
// @ts-ignore
|
|
166
|
+
canvas.ownerDocument = canvas;
|
|
167
|
+
canvas.getRootNode = () => canvas;
|
|
168
|
+
root.current = events.createRoot(canvas);
|
|
169
|
+
setCanvas(canvas);
|
|
170
|
+
function handleTouch(gestureEvent, type) {
|
|
171
|
+
gestureEvent.persist();
|
|
172
|
+
canvas.dispatchEvent(Object.assign(gestureEvent.nativeEvent, {
|
|
173
|
+
type,
|
|
174
|
+
offsetX: gestureEvent.nativeEvent.locationX,
|
|
175
|
+
offsetY: gestureEvent.nativeEvent.locationY,
|
|
176
|
+
pointerType: 'touch',
|
|
177
|
+
pointerId: gestureEvent.nativeEvent.identifier
|
|
178
|
+
}));
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
const responder = reactNative.PanResponder.create({
|
|
182
|
+
onStartShouldSetPanResponder: () => true,
|
|
183
|
+
onMoveShouldSetPanResponder: () => true,
|
|
184
|
+
onMoveShouldSetPanResponderCapture: () => true,
|
|
185
|
+
onPanResponderTerminationRequest: () => true,
|
|
186
|
+
onStartShouldSetPanResponderCapture: e => handleTouch(e, 'pointercapture'),
|
|
187
|
+
onPanResponderStart: e => handleTouch(e, 'pointerdown'),
|
|
188
|
+
onPanResponderMove: e => handleTouch(e, 'pointermove'),
|
|
189
|
+
onPanResponderEnd: (e, state) => {
|
|
190
|
+
handleTouch(e, 'pointerup');
|
|
191
|
+
if (Math.hypot(state.dx, state.dy) < 20) handleTouch(e, 'click');
|
|
192
|
+
},
|
|
193
|
+
onPanResponderRelease: e => handleTouch(e, 'pointerleave'),
|
|
194
|
+
onPanResponderTerminate: e => handleTouch(e, 'lostpointercapture'),
|
|
195
|
+
onPanResponderReject: e => handleTouch(e, 'lostpointercapture')
|
|
196
|
+
});
|
|
197
|
+
setBind(responder.panHandlers);
|
|
215
198
|
}, []);
|
|
216
199
|
if (root.current && width > 0 && height > 0) {
|
|
217
200
|
root.current.configure({
|
|
218
201
|
gl,
|
|
219
|
-
events,
|
|
202
|
+
events: events$1,
|
|
220
203
|
shadows,
|
|
221
204
|
linear,
|
|
222
205
|
flat,
|
|
@@ -240,9 +223,6 @@ const CanvasImpl = /*#__PURE__*/React__namespace.forwardRef(({
|
|
|
240
223
|
onPointerMissed: (...args) => handlePointerMissed.current == null ? void 0 : handlePointerMissed.current(...args),
|
|
241
224
|
// Overwrite onCreated to apply RN bindings
|
|
242
225
|
onCreated: state => {
|
|
243
|
-
// Bind events after creation
|
|
244
|
-
setBind(state.events.handlers);
|
|
245
|
-
|
|
246
226
|
// Bind render to RN bridge
|
|
247
227
|
const context = state.gl.getContext();
|
|
248
228
|
const renderFrame = state.gl.render.bind(state.gl);
|
|
@@ -254,10 +234,10 @@ const CanvasImpl = /*#__PURE__*/React__namespace.forwardRef(({
|
|
|
254
234
|
}
|
|
255
235
|
});
|
|
256
236
|
root.current.render( /*#__PURE__*/jsxRuntime.jsx(Bridge, {
|
|
257
|
-
children: /*#__PURE__*/jsxRuntime.jsx(
|
|
237
|
+
children: /*#__PURE__*/jsxRuntime.jsx(events.ErrorBoundary, {
|
|
258
238
|
set: setError,
|
|
259
239
|
children: /*#__PURE__*/jsxRuntime.jsx(React__namespace.Suspense, {
|
|
260
|
-
fallback: /*#__PURE__*/jsxRuntime.jsx(
|
|
240
|
+
fallback: /*#__PURE__*/jsxRuntime.jsx(events.Block, {
|
|
261
241
|
set: setBlock
|
|
262
242
|
}),
|
|
263
243
|
children: children
|
|
@@ -267,7 +247,7 @@ const CanvasImpl = /*#__PURE__*/React__namespace.forwardRef(({
|
|
|
267
247
|
}
|
|
268
248
|
React__namespace.useEffect(() => {
|
|
269
249
|
if (canvas) {
|
|
270
|
-
return () =>
|
|
250
|
+
return () => events.unmountComponentAtNode(canvas);
|
|
271
251
|
}
|
|
272
252
|
}, [canvas]);
|
|
273
253
|
return /*#__PURE__*/jsxRuntime.jsx(_View, {
|
|
@@ -300,6 +280,88 @@ const Canvas = /*#__PURE__*/React__namespace.forwardRef(function CanvasWrapper(p
|
|
|
300
280
|
});
|
|
301
281
|
});
|
|
302
282
|
|
|
283
|
+
/** Default R3F event manager for react-native */
|
|
284
|
+
function createTouchEvents(store) {
|
|
285
|
+
const {
|
|
286
|
+
handlePointer
|
|
287
|
+
} = events.createEvents(store);
|
|
288
|
+
const handleTouch = (event, name) => {
|
|
289
|
+
event.persist()
|
|
290
|
+
|
|
291
|
+
// Apply offset
|
|
292
|
+
;
|
|
293
|
+
event.nativeEvent.offsetX = event.nativeEvent.locationX;
|
|
294
|
+
event.nativeEvent.offsetY = event.nativeEvent.locationY;
|
|
295
|
+
|
|
296
|
+
// Emulate DOM event
|
|
297
|
+
const callback = handlePointer(name);
|
|
298
|
+
callback(event.nativeEvent);
|
|
299
|
+
return true;
|
|
300
|
+
};
|
|
301
|
+
const responder = reactNative.PanResponder.create({
|
|
302
|
+
onStartShouldSetPanResponder: () => true,
|
|
303
|
+
onMoveShouldSetPanResponder: () => true,
|
|
304
|
+
onMoveShouldSetPanResponderCapture: () => true,
|
|
305
|
+
onPanResponderTerminationRequest: () => true,
|
|
306
|
+
onStartShouldSetPanResponderCapture: e => handleTouch(e, 'onPointerCapture'),
|
|
307
|
+
onPanResponderStart: e => handleTouch(e, 'onPointerDown'),
|
|
308
|
+
onPanResponderMove: e => handleTouch(e, 'onPointerMove'),
|
|
309
|
+
onPanResponderEnd: (e, state) => {
|
|
310
|
+
handleTouch(e, 'onPointerUp');
|
|
311
|
+
if (Math.hypot(state.dx, state.dy) < 20) handleTouch(e, 'onClick');
|
|
312
|
+
},
|
|
313
|
+
onPanResponderRelease: e => handleTouch(e, 'onPointerLeave'),
|
|
314
|
+
onPanResponderTerminate: e => handleTouch(e, 'onLostPointerCapture'),
|
|
315
|
+
onPanResponderReject: e => handleTouch(e, 'onLostPointerCapture')
|
|
316
|
+
});
|
|
317
|
+
return {
|
|
318
|
+
priority: 1,
|
|
319
|
+
enabled: true,
|
|
320
|
+
compute(event, state, previous) {
|
|
321
|
+
// https://github.com/pmndrs/react-three-fiber/pull/782
|
|
322
|
+
// Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides
|
|
323
|
+
state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);
|
|
324
|
+
state.raycaster.setFromCamera(state.pointer, state.camera);
|
|
325
|
+
},
|
|
326
|
+
connected: undefined,
|
|
327
|
+
handlers: responder.panHandlers,
|
|
328
|
+
update: () => {
|
|
329
|
+
var _internal$lastEvent;
|
|
330
|
+
const {
|
|
331
|
+
events,
|
|
332
|
+
internal
|
|
333
|
+
} = store.getState();
|
|
334
|
+
if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) {
|
|
335
|
+
handlePointer('onPointerMove')(internal.lastEvent.current);
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
connect: () => {
|
|
339
|
+
const {
|
|
340
|
+
set,
|
|
341
|
+
events
|
|
342
|
+
} = store.getState();
|
|
343
|
+
events.disconnect == null ? void 0 : events.disconnect();
|
|
344
|
+
set(state => ({
|
|
345
|
+
events: {
|
|
346
|
+
...state.events,
|
|
347
|
+
connected: true
|
|
348
|
+
}
|
|
349
|
+
}));
|
|
350
|
+
},
|
|
351
|
+
disconnect: () => {
|
|
352
|
+
const {
|
|
353
|
+
set
|
|
354
|
+
} = store.getState();
|
|
355
|
+
set(state => ({
|
|
356
|
+
events: {
|
|
357
|
+
...state.events,
|
|
358
|
+
connected: false
|
|
359
|
+
}
|
|
360
|
+
}));
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
|
|
303
365
|
// http://stackoverflow.com/questions/105034
|
|
304
366
|
function uuidv4() {
|
|
305
367
|
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
|
|
@@ -461,32 +523,32 @@ function polyfills() {
|
|
|
461
523
|
|
|
462
524
|
if (reactNative.Platform.OS !== 'web') polyfills();
|
|
463
525
|
|
|
464
|
-
exports.ReactThreeFiber =
|
|
465
|
-
exports._roots =
|
|
466
|
-
exports.act =
|
|
467
|
-
exports.addAfterEffect =
|
|
468
|
-
exports.addEffect =
|
|
469
|
-
exports.addTail =
|
|
470
|
-
exports.advance =
|
|
471
|
-
exports.applyProps =
|
|
472
|
-
exports.buildGraph =
|
|
473
|
-
exports.context =
|
|
474
|
-
exports.createEvents =
|
|
475
|
-
exports.createPortal =
|
|
476
|
-
exports.createRoot =
|
|
477
|
-
exports.dispose =
|
|
478
|
-
exports.extend =
|
|
479
|
-
exports.flushGlobalEffects =
|
|
480
|
-
exports.getRootState =
|
|
481
|
-
exports.invalidate =
|
|
482
|
-
exports.reconciler =
|
|
483
|
-
exports.render =
|
|
484
|
-
exports.unmountComponentAtNode =
|
|
485
|
-
exports.useFrame =
|
|
486
|
-
exports.useGraph =
|
|
487
|
-
exports.useInstanceHandle =
|
|
488
|
-
exports.useLoader =
|
|
489
|
-
exports.useStore =
|
|
490
|
-
exports.useThree =
|
|
526
|
+
exports.ReactThreeFiber = events.threeTypes;
|
|
527
|
+
exports._roots = events._roots;
|
|
528
|
+
exports.act = events.act;
|
|
529
|
+
exports.addAfterEffect = events.addAfterEffect;
|
|
530
|
+
exports.addEffect = events.addEffect;
|
|
531
|
+
exports.addTail = events.addTail;
|
|
532
|
+
exports.advance = events.advance;
|
|
533
|
+
exports.applyProps = events.applyProps;
|
|
534
|
+
exports.buildGraph = events.buildGraph;
|
|
535
|
+
exports.context = events.context;
|
|
536
|
+
exports.createEvents = events.createEvents;
|
|
537
|
+
exports.createPortal = events.createPortal;
|
|
538
|
+
exports.createRoot = events.createRoot;
|
|
539
|
+
exports.dispose = events.dispose;
|
|
540
|
+
exports.extend = events.extend;
|
|
541
|
+
exports.flushGlobalEffects = events.flushGlobalEffects;
|
|
542
|
+
exports.getRootState = events.getRootState;
|
|
543
|
+
exports.invalidate = events.invalidate;
|
|
544
|
+
exports.reconciler = events.reconciler;
|
|
545
|
+
exports.render = events.render;
|
|
546
|
+
exports.unmountComponentAtNode = events.unmountComponentAtNode;
|
|
547
|
+
exports.useFrame = events.useFrame;
|
|
548
|
+
exports.useGraph = events.useGraph;
|
|
549
|
+
exports.useInstanceHandle = events.useInstanceHandle;
|
|
550
|
+
exports.useLoader = events.useLoader;
|
|
551
|
+
exports.useStore = events.useStore;
|
|
552
|
+
exports.useThree = events.useThree;
|
|
491
553
|
exports.Canvas = Canvas;
|
|
492
554
|
exports.events = createTouchEvents;
|