@react-three/fiber 9.4.2 → 10.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 (52) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.cjs +14832 -0
  3. package/dist/index.d.cts +3350 -0
  4. package/dist/index.d.mts +3350 -0
  5. package/dist/index.d.ts +3350 -0
  6. package/dist/index.mjs +14747 -0
  7. package/dist/legacy.cjs +14820 -0
  8. package/dist/legacy.d.cts +3347 -0
  9. package/dist/legacy.d.mts +3347 -0
  10. package/dist/legacy.d.ts +3347 -0
  11. package/dist/legacy.mjs +14735 -0
  12. package/dist/webgpu/index.cjs +15274 -0
  13. package/dist/webgpu/index.d.cts +3470 -0
  14. package/dist/webgpu/index.d.mts +3470 -0
  15. package/dist/webgpu/index.d.ts +3470 -0
  16. package/dist/webgpu/index.mjs +15177 -0
  17. package/package.json +44 -44
  18. package/react-reconciler/constants.d.ts +7 -0
  19. package/react-reconciler/constants.js +9 -0
  20. package/react-reconciler/index.d.ts +1044 -0
  21. package/react-reconciler/index.js +224 -0
  22. package/readme.md +98 -33
  23. package/CHANGELOG.md +0 -1186
  24. package/dist/declarations/src/core/events.d.ts +0 -92
  25. package/dist/declarations/src/core/hooks.d.ts +0 -53
  26. package/dist/declarations/src/core/index.d.ts +0 -13
  27. package/dist/declarations/src/core/loop.d.ts +0 -31
  28. package/dist/declarations/src/core/reconciler.d.ts +0 -50
  29. package/dist/declarations/src/core/renderer.d.ts +0 -89
  30. package/dist/declarations/src/core/store.d.ts +0 -130
  31. package/dist/declarations/src/core/utils.d.ts +0 -191
  32. package/dist/declarations/src/index.d.ts +0 -6
  33. package/dist/declarations/src/native/Canvas.d.ts +0 -13
  34. package/dist/declarations/src/native/events.d.ts +0 -4
  35. package/dist/declarations/src/native.d.ts +0 -6
  36. package/dist/declarations/src/three-types.d.ts +0 -68
  37. package/dist/declarations/src/web/Canvas.d.ts +0 -23
  38. package/dist/declarations/src/web/events.d.ts +0 -4
  39. package/dist/events-1eccaf1c.esm.js +0 -2510
  40. package/dist/events-5c8d1731.cjs.prod.js +0 -2569
  41. package/dist/events-c80effae.cjs.dev.js +0 -2569
  42. package/dist/react-three-fiber.cjs.d.ts +0 -2
  43. package/dist/react-three-fiber.cjs.dev.js +0 -222
  44. package/dist/react-three-fiber.cjs.js +0 -7
  45. package/dist/react-three-fiber.cjs.prod.js +0 -222
  46. package/dist/react-three-fiber.esm.js +0 -167
  47. package/native/dist/react-three-fiber-native.cjs.d.ts +0 -2
  48. package/native/dist/react-three-fiber-native.cjs.dev.js +0 -569
  49. package/native/dist/react-three-fiber-native.cjs.js +0 -7
  50. package/native/dist/react-three-fiber-native.cjs.prod.js +0 -569
  51. package/native/dist/react-three-fiber-native.esm.js +0 -517
  52. package/native/package.json +0 -5
@@ -1,569 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var events = require('../../dist/events-c80effae.cjs.dev.js');
6
- var React = require('react');
7
- var THREE = require('three');
8
- var reactNative = require('react-native');
9
- var expoGl = require('expo-gl');
10
- var itsFine = require('its-fine');
11
- var jsxRuntime = require('react/jsx-runtime');
12
- var expoAsset = require('expo-asset');
13
- var base64Js = require('base64-js');
14
- var buffer = require('buffer');
15
- require('react-reconciler/constants');
16
- require('zustand/traditional');
17
- require('suspend-react');
18
- require('react-reconciler');
19
- require('scheduler');
20
-
21
- function _interopNamespace(e) {
22
- if (e && e.__esModule) return e;
23
- var n = Object.create(null);
24
- if (e) {
25
- Object.keys(e).forEach(function (k) {
26
- if (k !== 'default') {
27
- var d = Object.getOwnPropertyDescriptor(e, k);
28
- Object.defineProperty(n, k, d.get ? d : {
29
- enumerable: true,
30
- get: function () { return e[k]; }
31
- });
32
- }
33
- });
34
- }
35
- n["default"] = e;
36
- return Object.freeze(n);
37
- }
38
-
39
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
40
- var THREE__namespace = /*#__PURE__*/_interopNamespace(THREE);
41
-
42
- // TODO: React 19 needs support from react-native
43
- const _View = reactNative.View;
44
- function CanvasImpl({
45
- children,
46
- style,
47
- gl,
48
- events: events$1 = events.createPointerEvents,
49
- shadows,
50
- linear,
51
- flat,
52
- legacy,
53
- orthographic,
54
- frameloop,
55
- performance,
56
- raycaster,
57
- camera,
58
- scene,
59
- onPointerMissed,
60
- onCreated,
61
- ref,
62
- pointerEvents,
63
- ...props
64
- }) {
65
- // Create a known catalogue of Threejs-native elements
66
- // This will include the entire THREE namespace by default, users can extend
67
- // their own elements by using the createRoot API instead
68
- React__namespace.useMemo(() => events.extend(THREE__namespace), []);
69
- const Bridge = events.useBridge();
70
- const [{
71
- width,
72
- height,
73
- top,
74
- left
75
- }, setSize] = React__namespace.useState({
76
- width: 0,
77
- height: 0,
78
- top: 0,
79
- left: 0
80
- });
81
- const [canvas, setCanvas] = React__namespace.useState(null);
82
- const [bind, setBind] = React__namespace.useState();
83
- React__namespace.useImperativeHandle(ref, () => viewRef.current);
84
- const handlePointerMissed = events.useMutableCallback(onPointerMissed);
85
- const [block, setBlock] = React__namespace.useState(false);
86
- const [error, setError] = React__namespace.useState(undefined);
87
-
88
- // Suspend this component if block is a promise (2nd run)
89
- if (block) throw block;
90
- // Throw exception outwards if anything within canvas throws
91
- if (error) throw error;
92
- const viewRef = React__namespace.useRef(null);
93
- const root = React__namespace.useRef(null);
94
- const [antialias, setAntialias] = React__namespace.useState(true);
95
- const onLayout = React__namespace.useCallback(e => {
96
- const {
97
- width,
98
- height,
99
- x,
100
- y
101
- } = e.nativeEvent.layout;
102
- setSize({
103
- width,
104
- height,
105
- top: y,
106
- left: x
107
- });
108
- }, []);
109
-
110
- // Called on context create or swap
111
- // https://github.com/pmndrs/react-three-fiber/pull/2297
112
- const onContextCreate = React__namespace.useCallback(context => {
113
- const listeners = new Map();
114
- const canvas = {
115
- style: {},
116
- width: context.drawingBufferWidth,
117
- height: context.drawingBufferHeight,
118
- clientWidth: context.drawingBufferWidth,
119
- clientHeight: context.drawingBufferHeight,
120
- getContext: (_, {
121
- antialias = false
122
- }) => {
123
- setAntialias(antialias);
124
- return context;
125
- },
126
- addEventListener(type, listener) {
127
- let callbacks = listeners.get(type);
128
- if (!callbacks) {
129
- callbacks = [];
130
- listeners.set(type, callbacks);
131
- }
132
- callbacks.push(listener);
133
- },
134
- removeEventListener(type, listener) {
135
- const callbacks = listeners.get(type);
136
- if (callbacks) {
137
- const index = callbacks.indexOf(listener);
138
- if (index !== -1) callbacks.splice(index, 1);
139
- }
140
- },
141
- dispatchEvent(event) {
142
- Object.assign(event, {
143
- target: this
144
- });
145
- const callbacks = listeners.get(event.type);
146
- if (callbacks) {
147
- for (const callback of callbacks) {
148
- callback(event);
149
- }
150
- }
151
- },
152
- setPointerCapture() {
153
- // TODO
154
- },
155
- releasePointerCapture() {
156
- // TODO
157
- }
158
- };
159
-
160
- // TODO: this is wrong but necessary to trick controls
161
- // @ts-ignore
162
- canvas.ownerDocument = canvas;
163
- canvas.getRootNode = () => canvas;
164
- root.current = events.createRoot(canvas);
165
- setCanvas(canvas);
166
- function handleTouch(gestureEvent, type) {
167
- gestureEvent.persist();
168
- canvas.dispatchEvent(Object.assign(gestureEvent.nativeEvent, {
169
- type,
170
- offsetX: gestureEvent.nativeEvent.locationX,
171
- offsetY: gestureEvent.nativeEvent.locationY,
172
- pointerType: 'touch',
173
- pointerId: gestureEvent.nativeEvent.identifier
174
- }));
175
- return true;
176
- }
177
- const responder = reactNative.PanResponder.create({
178
- onStartShouldSetPanResponder: () => true,
179
- onMoveShouldSetPanResponder: () => true,
180
- onMoveShouldSetPanResponderCapture: () => true,
181
- onPanResponderTerminationRequest: () => true,
182
- onStartShouldSetPanResponderCapture: e => handleTouch(e, 'pointercapture'),
183
- onPanResponderStart: e => handleTouch(e, 'pointerdown'),
184
- onPanResponderMove: e => handleTouch(e, 'pointermove'),
185
- onPanResponderEnd: (e, state) => {
186
- handleTouch(e, 'pointerup');
187
- if (Math.hypot(state.dx, state.dy) < 20) handleTouch(e, 'click');
188
- },
189
- onPanResponderRelease: e => handleTouch(e, 'pointerleave'),
190
- onPanResponderTerminate: e => handleTouch(e, 'lostpointercapture'),
191
- onPanResponderReject: e => handleTouch(e, 'lostpointercapture')
192
- });
193
- setBind(responder.panHandlers);
194
- }, []);
195
- events.useIsomorphicLayoutEffect(() => {
196
- if (root.current && width > 0 && height > 0) {
197
- async function run() {
198
- await root.current.configure({
199
- gl,
200
- events: events$1,
201
- shadows,
202
- linear,
203
- flat,
204
- legacy,
205
- orthographic,
206
- frameloop,
207
- performance,
208
- raycaster,
209
- camera,
210
- scene,
211
- // expo-gl can only render at native dpr/resolution
212
- // https://github.com/expo/expo-three/issues/39
213
- dpr: reactNative.PixelRatio.get(),
214
- size: {
215
- width,
216
- height,
217
- top,
218
- left
219
- },
220
- // Pass mutable reference to onPointerMissed so it's free to update
221
- onPointerMissed: (...args) => handlePointerMissed.current == null ? void 0 : handlePointerMissed.current(...args),
222
- // Overwrite onCreated to apply RN bindings
223
- onCreated: state => {
224
- // Bind render to RN bridge
225
- const context = state.gl.getContext();
226
- const renderFrame = state.gl.render.bind(state.gl);
227
- state.gl.render = (scene, camera) => {
228
- renderFrame(scene, camera);
229
- context.endFrameEXP();
230
- };
231
- return onCreated == null ? void 0 : onCreated(state);
232
- }
233
- });
234
- root.current.render( /*#__PURE__*/jsxRuntime.jsx(Bridge, {
235
- children: /*#__PURE__*/jsxRuntime.jsx(events.ErrorBoundary, {
236
- set: setError,
237
- children: /*#__PURE__*/jsxRuntime.jsx(React__namespace.Suspense, {
238
- fallback: /*#__PURE__*/jsxRuntime.jsx(events.Block, {
239
- set: setBlock
240
- }),
241
- children: children != null ? children : null
242
- })
243
- })
244
- }));
245
- }
246
- run();
247
- }
248
- });
249
- React__namespace.useEffect(() => {
250
- if (canvas) {
251
- return () => events.unmountComponentAtNode(canvas);
252
- }
253
- }, [canvas]);
254
- return /*#__PURE__*/jsxRuntime.jsxs(_View, {
255
- ...props,
256
- ref: viewRef,
257
- onLayout: onLayout,
258
- style: {
259
- flex: 1,
260
- ...style
261
- },
262
- children: [width > 0 && /*#__PURE__*/jsxRuntime.jsx(expoGl.GLView, {
263
- msaaSamples: antialias ? 4 : 0,
264
- onContextCreate: onContextCreate,
265
- style: reactNative.StyleSheet.absoluteFill
266
- }), /*#__PURE__*/jsxRuntime.jsx(_View, {
267
- style: reactNative.StyleSheet.absoluteFill,
268
- pointerEvents: pointerEvents,
269
- ...bind
270
- })]
271
- });
272
- }
273
-
274
- /**
275
- * A native canvas which accepts threejs elements as children.
276
- * @see https://docs.pmnd.rs/react-three-fiber/api/canvas
277
- */
278
- function Canvas(props) {
279
- return /*#__PURE__*/jsxRuntime.jsx(itsFine.FiberProvider, {
280
- children: /*#__PURE__*/jsxRuntime.jsx(CanvasImpl, {
281
- ...props
282
- })
283
- });
284
- }
285
-
286
- /** Default R3F event manager for react-native */
287
- function createTouchEvents(store) {
288
- const {
289
- handlePointer
290
- } = events.createEvents(store);
291
- const handleTouch = (event, name) => {
292
- event.persist()
293
-
294
- // Apply offset
295
- ;
296
- event.nativeEvent.offsetX = event.nativeEvent.locationX;
297
- event.nativeEvent.offsetY = event.nativeEvent.locationY;
298
-
299
- // Emulate DOM event
300
- const callback = handlePointer(name);
301
- callback(event.nativeEvent);
302
- return true;
303
- };
304
- const responder = reactNative.PanResponder.create({
305
- onStartShouldSetPanResponder: () => true,
306
- onMoveShouldSetPanResponder: () => true,
307
- onMoveShouldSetPanResponderCapture: () => true,
308
- onPanResponderTerminationRequest: () => true,
309
- onStartShouldSetPanResponderCapture: e => handleTouch(e, 'onPointerCapture'),
310
- onPanResponderStart: e => handleTouch(e, 'onPointerDown'),
311
- onPanResponderMove: e => handleTouch(e, 'onPointerMove'),
312
- onPanResponderEnd: (e, state) => {
313
- handleTouch(e, 'onPointerUp');
314
- if (Math.hypot(state.dx, state.dy) < 20) handleTouch(e, 'onClick');
315
- },
316
- onPanResponderRelease: e => handleTouch(e, 'onPointerLeave'),
317
- onPanResponderTerminate: e => handleTouch(e, 'onLostPointerCapture'),
318
- onPanResponderReject: e => handleTouch(e, 'onLostPointerCapture')
319
- });
320
- return {
321
- priority: 1,
322
- enabled: true,
323
- compute(event, state, previous) {
324
- // https://github.com/pmndrs/react-three-fiber/pull/782
325
- // Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides
326
- state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);
327
- state.raycaster.setFromCamera(state.pointer, state.camera);
328
- },
329
- connected: undefined,
330
- handlers: responder.panHandlers,
331
- update: () => {
332
- var _internal$lastEvent;
333
- const {
334
- events,
335
- internal
336
- } = store.getState();
337
- if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) {
338
- handlePointer('onPointerMove')(internal.lastEvent.current);
339
- }
340
- },
341
- connect: () => {
342
- const {
343
- set,
344
- events
345
- } = store.getState();
346
- events.disconnect == null ? void 0 : events.disconnect();
347
- set(state => ({
348
- events: {
349
- ...state.events,
350
- connected: true
351
- }
352
- }));
353
- },
354
- disconnect: () => {
355
- const {
356
- set
357
- } = store.getState();
358
- set(state => ({
359
- events: {
360
- ...state.events,
361
- connected: false
362
- }
363
- }));
364
- }
365
- };
366
- }
367
-
368
- // Conditionally import expo-file-system/legacy to support Expo 54
369
- const getFileSystem = () => {
370
- try {
371
- return require('expo-file-system/legacy');
372
- } catch {
373
- return require('expo-file-system');
374
- }
375
- };
376
- const fs = getFileSystem();
377
-
378
- // http://stackoverflow.com/questions/105034
379
- function uuidv4() {
380
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
381
- const r = Math.random() * 16 | 0,
382
- v = c == 'x' ? r : r & 0x3 | 0x8;
383
- return v.toString(16);
384
- });
385
- }
386
- async function getAsset(input) {
387
- if (typeof input === 'string') {
388
- var _NativeModules$BlobMo;
389
- // Don't process storage
390
- if (input.startsWith('file:')) return input;
391
-
392
- // Unpack Blobs from react-native BlobManager
393
- // https://github.com/facebook/react-native/issues/22681#issuecomment-523258955
394
- if (input.startsWith('blob:') || input.startsWith((_NativeModules$BlobMo = reactNative.NativeModules.BlobModule) == null ? void 0 : _NativeModules$BlobMo.BLOB_URI_SCHEME)) {
395
- const blob = await new Promise((res, rej) => {
396
- const xhr = new XMLHttpRequest();
397
- xhr.open('GET', input);
398
- xhr.responseType = 'blob';
399
- xhr.onload = () => res(xhr.response);
400
- xhr.onerror = rej;
401
- xhr.send();
402
- });
403
- const data = await new Promise((res, rej) => {
404
- const reader = new FileReader();
405
- reader.onload = () => res(reader.result);
406
- reader.onerror = rej;
407
- reader.readAsText(blob);
408
- });
409
- input = `data:${blob.type};base64,${data}`;
410
- }
411
-
412
- // Create safe URI for JSI serialization
413
- if (input.startsWith('data:')) {
414
- const [header, data] = input.split(';base64,');
415
- const [, type] = header.split('/');
416
- const uri = fs.cacheDirectory + uuidv4() + `.${type}`;
417
- await fs.writeAsStringAsync(uri, data, {
418
- encoding: fs.EncodingType.Base64
419
- });
420
- return uri;
421
- }
422
- }
423
-
424
- // Download bundler module or external URL
425
- const asset = await expoAsset.Asset.fromModule(input).downloadAsync();
426
- let uri = asset.localUri || asset.uri;
427
-
428
- // Unpack assets in Android Release Mode
429
- if (!uri.includes(':')) {
430
- const file = `${fs.cacheDirectory}ExponentAsset-${asset.hash}.${asset.type}`;
431
- await fs.copyAsync({
432
- from: uri,
433
- to: file
434
- });
435
- uri = file;
436
- }
437
- return uri;
438
- }
439
- function polyfills() {
440
- // Patch Blob for ArrayBuffer and URL if unsupported
441
- // https://github.com/facebook/react-native/pull/39276
442
- // https://github.com/pmndrs/react-three-fiber/issues/3058
443
- if (reactNative.Platform.OS !== 'web') {
444
- try {
445
- const blob = new Blob([new ArrayBuffer(4)]);
446
- const url = URL.createObjectURL(blob);
447
- URL.revokeObjectURL(url);
448
- } catch (_) {
449
- var _BlobManagerModule$de;
450
- const BlobManagerModule = require('react-native/Libraries/Blob/BlobManager.js');
451
- const BlobManager = (_BlobManagerModule$de = BlobManagerModule.default) != null ? _BlobManagerModule$de : BlobManagerModule;
452
- const createObjectURL = URL.createObjectURL;
453
- URL.createObjectURL = function (blob) {
454
- if (blob.data._base64) {
455
- return `data:${blob.type};base64,${blob.data._base64}`;
456
- }
457
- return createObjectURL(blob);
458
- };
459
- const createFromParts = BlobManager.createFromParts;
460
- BlobManager.createFromParts = function (parts, options) {
461
- parts = parts.map(part => {
462
- if (part instanceof ArrayBuffer || ArrayBuffer.isView(part)) {
463
- part = base64Js.fromByteArray(new Uint8Array(part));
464
- }
465
- return part;
466
- });
467
- const blob = createFromParts(parts, options);
468
-
469
- // Always enable slow but safe path for iOS (previously for Android unauth)
470
- // https://github.com/pmndrs/react-three-fiber/issues/3075
471
- // if (!NativeModules.BlobModule?.BLOB_URI_SCHEME) {
472
- blob.data._base64 = '';
473
- for (const part of parts) {
474
- var _data$_base, _data;
475
- blob.data._base64 += (_data$_base = (_data = part.data) == null ? void 0 : _data._base64) != null ? _data$_base : part;
476
- }
477
- // }
478
-
479
- return blob;
480
- };
481
- }
482
- }
483
-
484
- // Don't pre-process urls, let expo-asset generate an absolute URL
485
- const extractUrlBase = THREE__namespace.LoaderUtils.extractUrlBase.bind(THREE__namespace.LoaderUtils);
486
- THREE__namespace.LoaderUtils.extractUrlBase = url => typeof url === 'string' ? extractUrlBase(url) : './';
487
-
488
- // There's no Image in native, so create a data texture instead
489
- THREE__namespace.TextureLoader.prototype.load = function load(url, onLoad, onProgress, onError) {
490
- if (this.path && typeof url === 'string') url = this.path + url;
491
- const texture = new THREE__namespace.Texture();
492
- getAsset(url).then(async uri => {
493
- // https://github.com/expo/expo-three/pull/266
494
- const {
495
- width,
496
- height
497
- } = await new Promise((res, rej) => reactNative.Image.getSize(uri, (width, height) => res({
498
- width,
499
- height
500
- }), rej));
501
- texture.image = {
502
- // Special case for EXGLImageUtils::loadImage
503
- data: {
504
- localUri: uri
505
- },
506
- width,
507
- height
508
- };
509
- texture.flipY = true; // Since expo-gl@12.4.0
510
- texture.needsUpdate = true;
511
-
512
- // Force non-DOM upload for EXGL texImage2D
513
- // @ts-expect-error
514
- texture.isDataTexture = true;
515
- onLoad == null ? void 0 : onLoad(texture);
516
- }).catch(onError);
517
- return texture;
518
- };
519
-
520
- // Fetches assets via FS
521
- THREE__namespace.FileLoader.prototype.load = function load(url, onLoad, onProgress, onError) {
522
- if (this.path && typeof url === 'string') url = this.path + url;
523
- this.manager.itemStart(url);
524
- getAsset(url).then(async uri => {
525
- const base64 = await fs.readAsStringAsync(uri, {
526
- encoding: fs.EncodingType.Base64
527
- });
528
- const data = buffer.Buffer.from(base64, 'base64');
529
- onLoad == null ? void 0 : onLoad(data.buffer);
530
- }).catch(error => {
531
- onError == null ? void 0 : onError(error);
532
- this.manager.itemError(url);
533
- }).finally(() => {
534
- this.manager.itemEnd(url);
535
- });
536
- };
537
- }
538
-
539
- if (reactNative.Platform.OS !== 'web') polyfills();
540
-
541
- exports.ReactThreeFiber = events.threeTypes;
542
- exports._roots = events._roots;
543
- exports.act = events.act;
544
- exports.addAfterEffect = events.addAfterEffect;
545
- exports.addEffect = events.addEffect;
546
- exports.addTail = events.addTail;
547
- exports.advance = events.advance;
548
- exports.applyProps = events.applyProps;
549
- exports.buildGraph = events.buildGraph;
550
- exports.context = events.context;
551
- exports.createEvents = events.createEvents;
552
- exports.createPortal = events.createPortal;
553
- exports.createRoot = events.createRoot;
554
- exports.dispose = events.dispose;
555
- exports.extend = events.extend;
556
- exports.flushGlobalEffects = events.flushGlobalEffects;
557
- exports.flushSync = events.flushSync;
558
- exports.getRootState = events.getRootState;
559
- exports.invalidate = events.invalidate;
560
- exports.reconciler = events.reconciler;
561
- exports.unmountComponentAtNode = events.unmountComponentAtNode;
562
- exports.useFrame = events.useFrame;
563
- exports.useGraph = events.useGraph;
564
- exports.useInstanceHandle = events.useInstanceHandle;
565
- exports.useLoader = events.useLoader;
566
- exports.useStore = events.useStore;
567
- exports.useThree = events.useThree;
568
- exports.Canvas = Canvas;
569
- exports.events = createTouchEvents;
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- if (process.env.NODE_ENV === "production") {
4
- module.exports = require("./react-three-fiber-native.cjs.prod.js");
5
- } else {
6
- module.exports = require("./react-three-fiber-native.cjs.dev.js");
7
- }