@react-three/fiber 9.0.0-alpha.2 → 9.0.0-alpha.4

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 (32) hide show
  1. package/CHANGELOG.md +962 -522
  2. package/dist/declarations/src/core/events.d.ts +91 -69
  3. package/dist/declarations/src/core/hooks.d.ts +53 -27
  4. package/dist/declarations/src/core/index.d.ts +15 -60
  5. package/dist/declarations/src/core/loop.d.ts +31 -15
  6. package/dist/declarations/src/core/reconciler.d.ts +42 -0
  7. package/dist/declarations/src/core/renderer.d.ts +84 -40
  8. package/dist/declarations/src/core/stages.d.ts +64 -59
  9. package/dist/declarations/src/core/store.d.ts +134 -109
  10. package/dist/declarations/src/core/utils.d.ts +128 -80
  11. package/dist/declarations/src/index.d.ts +6 -10
  12. package/dist/declarations/src/native/Canvas.d.ts +14 -8
  13. package/dist/declarations/src/native/events.d.ts +4 -4
  14. package/dist/declarations/src/native.d.ts +6 -8
  15. package/dist/declarations/src/three-types.d.ts +56 -47
  16. package/dist/declarations/src/web/Canvas.d.ts +24 -11
  17. package/dist/declarations/src/web/events.d.ts +4 -4
  18. package/dist/{index-8128f248.cjs.prod.js → loop-7224f71f.cjs.prod.js} +1375 -1295
  19. package/dist/{index-5bd4d3cf.cjs.dev.js → loop-7f1fb121.cjs.dev.js} +1375 -1295
  20. package/dist/{index-47b7622a.esm.js → loop-bdf826ba.esm.js} +1372 -1295
  21. package/dist/react-three-fiber.cjs.d.ts +1 -0
  22. package/dist/react-three-fiber.cjs.dev.js +127 -116
  23. package/dist/react-three-fiber.cjs.prod.js +127 -116
  24. package/dist/react-three-fiber.esm.js +93 -85
  25. package/native/dist/react-three-fiber-native.cjs.d.ts +1 -0
  26. package/native/dist/react-three-fiber-native.cjs.dev.js +282 -213
  27. package/native/dist/react-three-fiber-native.cjs.prod.js +282 -213
  28. package/native/dist/react-three-fiber-native.esm.js +246 -182
  29. package/native/package.json +5 -5
  30. package/package.json +18 -12
  31. package/readme.md +253 -202
  32. package/dist/declarations/src/native/polyfills.d.ts +0 -1
@@ -2,14 +2,14 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var loop = require('./loop-7224f71f.cjs.prod.js');
5
6
  var _extends = require('@babel/runtime/helpers/extends');
6
7
  var React = require('react');
7
8
  var THREE = require('three');
8
9
  var useMeasure = require('react-use-measure');
9
10
  var itsFine = require('its-fine');
10
- var index = require('./index-8128f248.cjs.prod.js');
11
11
  require('react-reconciler/constants');
12
- require('zustand');
12
+ require('zustand/traditional');
13
13
  require('react-reconciler');
14
14
  require('scheduler');
15
15
  require('suspend-react');
@@ -50,64 +50,72 @@ const DOM_EVENTS = {
50
50
  onPointerCancel: ['pointercancel', true],
51
51
  onLostPointerCapture: ['lostpointercapture', true]
52
52
  };
53
- /** Default R3F event manager for web */
54
53
 
54
+ /** Default R3F event manager for web */
55
55
  function createPointerEvents(store) {
56
56
  const {
57
57
  handlePointer
58
- } = index.createEvents(store);
58
+ } = loop.createEvents(store);
59
59
  return {
60
60
  priority: 1,
61
61
  enabled: true,
62
-
63
62
  compute(event, state, previous) {
64
63
  // https://github.com/pmndrs/react-three-fiber/pull/782
65
64
  // Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides
66
65
  state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);
67
66
  state.raycaster.setFromCamera(state.pointer, state.camera);
68
67
  },
69
-
70
68
  connected: undefined,
71
- handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => ({ ...acc,
69
+ handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => ({
70
+ ...acc,
72
71
  [key]: handlePointer(key)
73
72
  }), {}),
73
+ update: () => {
74
+ var _internal$lastEvent;
75
+ const {
76
+ events,
77
+ internal
78
+ } = store.getState();
79
+ if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) events.handlers.onPointerMove(internal.lastEvent.current);
80
+ },
74
81
  connect: target => {
75
- var _events$handlers;
76
-
77
82
  const {
78
83
  set,
79
84
  events
80
85
  } = store.getState();
81
86
  events.disconnect == null ? void 0 : events.disconnect();
82
87
  set(state => ({
83
- events: { ...state.events,
88
+ events: {
89
+ ...state.events,
84
90
  connected: target
85
91
  }
86
92
  }));
87
- Object.entries((_events$handlers = events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {
88
- const [eventName, passive] = DOM_EVENTS[name];
89
- target.addEventListener(eventName, event, {
90
- passive
91
- });
92
- });
93
+ if (events.handlers) {
94
+ for (const name in events.handlers) {
95
+ const event = events.handlers[name];
96
+ const [eventName, passive] = DOM_EVENTS[name];
97
+ target.addEventListener(eventName, event, {
98
+ passive
99
+ });
100
+ }
101
+ }
93
102
  },
94
103
  disconnect: () => {
95
104
  const {
96
105
  set,
97
106
  events
98
107
  } = store.getState();
99
-
100
108
  if (events.connected) {
101
- var _events$handlers2;
102
-
103
- Object.entries((_events$handlers2 = events.handlers) != null ? _events$handlers2 : []).forEach(([name, event]) => {
104
- if (events && events.connected instanceof HTMLElement) {
109
+ if (events.handlers) {
110
+ for (const name in events.handlers) {
111
+ const event = events.handlers[name];
105
112
  const [eventName] = DOM_EVENTS[name];
106
113
  events.connected.removeEventListener(eventName, event);
107
114
  }
108
- });
115
+ }
109
116
  set(state => ({
110
- events: { ...state.events,
117
+ events: {
118
+ ...state.events,
111
119
  connected: undefined
112
120
  }
113
121
  }));
@@ -135,6 +143,7 @@ const CanvasImpl = /*#__PURE__*/React__namespace.forwardRef(function Canvas({
135
143
  performance,
136
144
  raycaster,
137
145
  camera,
146
+ scene,
138
147
  onPointerMissed,
139
148
  onCreated,
140
149
  stages,
@@ -143,8 +152,8 @@ const CanvasImpl = /*#__PURE__*/React__namespace.forwardRef(function Canvas({
143
152
  // Create a known catalogue of Threejs-native elements
144
153
  // This will include the entire THREE namespace by default, users can extend
145
154
  // their own elements by using the createRoot API instead
146
- React__namespace.useMemo(() => index.extend(THREE__namespace), []);
147
- const Bridge = itsFine.useContextBridge();
155
+ React__namespace.useMemo(() => loop.extend(THREE__namespace), []);
156
+ const Bridge = loop.useBridge();
148
157
  const [containerRef, containerRect] = useMeasure__default["default"]({
149
158
  scroll: true,
150
159
  debounce: {
@@ -155,72 +164,71 @@ const CanvasImpl = /*#__PURE__*/React__namespace.forwardRef(function Canvas({
155
164
  });
156
165
  const canvasRef = React__namespace.useRef(null);
157
166
  const divRef = React__namespace.useRef(null);
158
- const [canvas, setCanvas] = React__namespace.useState(null);
159
167
  React__namespace.useImperativeHandle(forwardedRef, () => canvasRef.current);
160
- const handlePointerMissed = index.useMutableCallback(onPointerMissed);
168
+ const handlePointerMissed = loop.useMutableCallback(onPointerMissed);
161
169
  const [block, setBlock] = React__namespace.useState(false);
162
- const [error, setError] = React__namespace.useState(false); // Suspend this component if block is a promise (2nd run)
163
-
164
- if (block) throw block; // Throw exception outwards if anything within canvas throws
170
+ const [error, setError] = React__namespace.useState(false);
165
171
 
172
+ // Suspend this component if block is a promise (2nd run)
173
+ if (block) throw block;
174
+ // Throw exception outwards if anything within canvas throws
166
175
  if (error) throw error;
167
176
  const root = React__namespace.useRef(null);
168
-
169
- if (containerRect.width > 0 && containerRect.height > 0 && canvas) {
170
- if (!root.current) root.current = index.createRoot(canvas);
171
- root.current.configure({
172
- gl,
173
- events,
174
- shadows,
175
- linear,
176
- flat,
177
- legacy,
178
- orthographic,
179
- frameloop,
180
- dpr,
181
- performance,
182
- raycaster,
183
- camera,
184
- stages,
185
- size: containerRect,
186
- // Pass mutable reference to onPointerMissed so it's free to update
187
- onPointerMissed: (...args) => handlePointerMissed.current == null ? void 0 : handlePointerMissed.current(...args),
188
- onCreated: state => {
189
- // Connect to event source
190
- state.events.connect == null ? void 0 : state.events.connect(eventSource ? index.isRef(eventSource) ? eventSource.current : eventSource : divRef.current); // Set up compute function
191
-
192
- if (eventPrefix) {
193
- state.setEvents({
194
- compute: (event, state) => {
195
- const x = event[eventPrefix + 'X'];
196
- const y = event[eventPrefix + 'Y'];
197
- state.pointer.set(x / state.size.width * 2 - 1, -(y / state.size.height) * 2 + 1);
198
- state.raycaster.setFromCamera(state.pointer, state.camera);
199
- }
200
- });
201
- } // Call onCreated callback
202
-
203
-
204
- onCreated == null ? void 0 : onCreated(state);
205
- }
206
- });
207
- root.current.render( /*#__PURE__*/React__namespace.createElement(Bridge, null, /*#__PURE__*/React__namespace.createElement(index.ErrorBoundary, {
208
- set: setError
209
- }, /*#__PURE__*/React__namespace.createElement(React__namespace.Suspense, {
210
- fallback: /*#__PURE__*/React__namespace.createElement(index.Block, {
211
- set: setBlock
212
- })
213
- }, children))));
214
- }
215
-
216
- index.useIsomorphicLayoutEffect(() => {
217
- setCanvas(canvasRef.current);
218
- }, []);
177
+ loop.useIsomorphicLayoutEffect(() => {
178
+ const canvas = canvasRef.current;
179
+ if (containerRect.width > 0 && containerRect.height > 0 && canvas) {
180
+ if (!root.current) root.current = loop.createRoot(canvas);
181
+ root.current.configure({
182
+ gl,
183
+ scene,
184
+ events,
185
+ shadows,
186
+ linear,
187
+ flat,
188
+ legacy,
189
+ orthographic,
190
+ frameloop,
191
+ dpr,
192
+ performance,
193
+ raycaster,
194
+ camera,
195
+ size: containerRect,
196
+ // Pass mutable reference to onPointerMissed so it's free to update
197
+ onPointerMissed: (...args) => handlePointerMissed.current == null ? void 0 : handlePointerMissed.current(...args),
198
+ onCreated: state => {
199
+ // Connect to event source
200
+ state.events.connect == null ? void 0 : state.events.connect(eventSource ? loop.isRef(eventSource) ? eventSource.current : eventSource : divRef.current);
201
+ // Set up compute function
202
+ if (eventPrefix) {
203
+ state.setEvents({
204
+ compute: (event, state) => {
205
+ const x = event[eventPrefix + 'X'];
206
+ const y = event[eventPrefix + 'Y'];
207
+ state.pointer.set(x / state.size.width * 2 - 1, -(y / state.size.height) * 2 + 1);
208
+ state.raycaster.setFromCamera(state.pointer, state.camera);
209
+ }
210
+ });
211
+ }
212
+ // Call onCreated callback
213
+ onCreated == null ? void 0 : onCreated(state);
214
+ }
215
+ });
216
+ root.current.render( /*#__PURE__*/React__namespace.createElement(Bridge, null, /*#__PURE__*/React__namespace.createElement(loop.ErrorBoundary, {
217
+ set: setError
218
+ }, /*#__PURE__*/React__namespace.createElement(React__namespace.Suspense, {
219
+ fallback: /*#__PURE__*/React__namespace.createElement(loop.Block, {
220
+ set: setBlock
221
+ })
222
+ }, children))));
223
+ }
224
+ });
219
225
  React__namespace.useEffect(() => {
220
- if (canvas) return () => index.unmountComponentAtNode(canvas);
221
- }, [canvas]); // When the event source is not this div, we need to set pointer-events to none
222
- // Or else the canvas will block events from reaching the event source
226
+ const canvas = canvasRef.current;
227
+ if (canvas) return () => loop.unmountComponentAtNode(canvas);
228
+ }, []);
223
229
 
230
+ // When the event source is not this div, we need to set pointer-events to none
231
+ // Or else the canvas will block events from reaching the event source
224
232
  const pointerEvents = eventSource ? 'none' : 'auto';
225
233
  return /*#__PURE__*/React__namespace.createElement("div", _extends({
226
234
  ref: divRef,
@@ -245,44 +253,47 @@ const CanvasImpl = /*#__PURE__*/React__namespace.forwardRef(function Canvas({
245
253
  }
246
254
  }, fallback)));
247
255
  });
248
- /**
249
- * A DOM canvas which accepts threejs elements as children.
250
- * @see https://docs.pmnd.rs/react-three-fiber/api/canvas
251
- */
252
256
 
257
+ /**
258
+ * A DOM canvas which accepts threejs elements as children.
259
+ * @see https://docs.pmnd.rs/react-three-fiber/api/canvas
260
+ */
253
261
  const Canvas = /*#__PURE__*/React__namespace.forwardRef(function CanvasWrapper(props, ref) {
254
262
  return /*#__PURE__*/React__namespace.createElement(itsFine.FiberProvider, null, /*#__PURE__*/React__namespace.createElement(CanvasImpl, _extends({}, props, {
255
263
  ref: ref
256
264
  })));
257
265
  });
258
266
 
259
- exports.FixedStage = index.FixedStage;
260
- exports.Stage = index.Stage;
261
- exports.Stages = index.Stages;
262
- exports._roots = index.roots;
263
- exports.act = index.act;
264
- exports.addAfterEffect = index.addAfterEffect;
265
- exports.addEffect = index.addEffect;
266
- exports.addTail = index.addTail;
267
- exports.advance = index.advance;
268
- exports.applyProps = index.applyProps;
269
- exports.context = index.context;
270
- exports.createEvents = index.createEvents;
271
- exports.createPortal = index.createPortal;
272
- exports.createRoot = index.createRoot;
273
- exports.dispose = index.dispose;
274
- exports.extend = index.extend;
275
- exports.getRootState = index.getRootState;
276
- exports.invalidate = index.invalidate;
277
- exports.reconciler = index.reconciler;
278
- exports.render = index.render;
279
- exports.unmountComponentAtNode = index.unmountComponentAtNode;
280
- exports.useFrame = index.useFrame;
281
- exports.useGraph = index.useGraph;
282
- exports.useInstanceHandle = index.useInstanceHandle;
283
- exports.useLoader = index.useLoader;
284
- exports.useStore = index.useStore;
285
- exports.useThree = index.useThree;
286
- exports.useUpdate = index.useUpdate;
267
+ exports.FixedStage = loop.FixedStage;
268
+ exports.ReactThreeFiber = loop.threeTypes;
269
+ exports.Stage = loop.Stage;
270
+ exports.Stages = loop.Stages;
271
+ exports._roots = loop._roots;
272
+ exports.act = loop.act;
273
+ exports.addAfterEffect = loop.addAfterEffect;
274
+ exports.addEffect = loop.addEffect;
275
+ exports.addTail = loop.addTail;
276
+ exports.advance = loop.advance;
277
+ exports.applyProps = loop.applyProps;
278
+ exports.buildGraph = loop.buildGraph;
279
+ exports.context = loop.context;
280
+ exports.createEvents = loop.createEvents;
281
+ exports.createPortal = loop.createPortal;
282
+ exports.createRoot = loop.createRoot;
283
+ exports.dispose = loop.dispose;
284
+ exports.extend = loop.extend;
285
+ exports.flushGlobalEffects = loop.flushGlobalEffects;
286
+ exports.getRootState = loop.getRootState;
287
+ exports.invalidate = loop.invalidate;
288
+ exports.reconciler = loop.reconciler;
289
+ exports.render = loop.render;
290
+ exports.unmountComponentAtNode = loop.unmountComponentAtNode;
291
+ exports.useFrame = loop.useFrame;
292
+ exports.useGraph = loop.useGraph;
293
+ exports.useInstanceHandle = loop.useInstanceHandle;
294
+ exports.useLoader = loop.useLoader;
295
+ exports.useStore = loop.useStore;
296
+ exports.useThree = loop.useThree;
297
+ exports.useUpdate = loop.useUpdate;
287
298
  exports.Canvas = Canvas;
288
299
  exports.events = createPointerEvents;
@@ -1,12 +1,12 @@
1
+ import { c as createEvents, e as extend, u as useBridge, a as useMutableCallback, b as useIsomorphicLayoutEffect, d as createRoot, i as isRef, E as ErrorBoundary, B as Block, f as unmountComponentAtNode } from './loop-bdf826ba.esm.js';
2
+ export { F as FixedStage, t as ReactThreeFiber, S as Stage, p as Stages, _ as _roots, x as act, j as addAfterEffect, h as addEffect, k as addTail, m as advance, s as applyProps, y as buildGraph, q as context, c as createEvents, o as createPortal, d as createRoot, w as dispose, e as extend, g as flushGlobalEffects, v as getRootState, l as invalidate, r as reconciler, n as render, f as unmountComponentAtNode, D as useFrame, H as useGraph, z as useInstanceHandle, I as useLoader, A as useStore, C as useThree, G as useUpdate } from './loop-bdf826ba.esm.js';
1
3
  import _extends from '@babel/runtime/helpers/esm/extends';
2
4
  import * as React from 'react';
3
5
  import * as THREE from 'three';
4
6
  import useMeasure from 'react-use-measure';
5
- import { FiberProvider, useContextBridge } from 'its-fine';
6
- import { c as createEvents, e as extend, u as useMutableCallback, a as createRoot, i as isRef, E as ErrorBoundary, B as Block, b as useIsomorphicLayoutEffect, d as unmountComponentAtNode } from './index-47b7622a.esm.js';
7
- export { F as FixedStage, S as Stage, f as Stages, v as _roots, t as act, p as addAfterEffect, o as addEffect, q as addTail, n as advance, k as applyProps, g as context, c as createEvents, h as createPortal, a as createRoot, l as dispose, e as extend, s as getRootState, m as invalidate, j as reconciler, r as render, d as unmountComponentAtNode, z as useFrame, C as useGraph, w as useInstanceHandle, D as useLoader, x as useStore, y as useThree, A as useUpdate } from './index-47b7622a.esm.js';
7
+ import { FiberProvider } from 'its-fine';
8
8
  import 'react-reconciler/constants';
9
- import 'zustand';
9
+ import 'zustand/traditional';
10
10
  import 'react-reconciler';
11
11
  import 'scheduler';
12
12
  import 'suspend-react';
@@ -23,8 +23,8 @@ const DOM_EVENTS = {
23
23
  onPointerCancel: ['pointercancel', true],
24
24
  onLostPointerCapture: ['lostpointercapture', true]
25
25
  };
26
- /** Default R3F event manager for web */
27
26
 
27
+ /** Default R3F event manager for web */
28
28
  function createPointerEvents(store) {
29
29
  const {
30
30
  handlePointer
@@ -32,55 +32,63 @@ function createPointerEvents(store) {
32
32
  return {
33
33
  priority: 1,
34
34
  enabled: true,
35
-
36
35
  compute(event, state, previous) {
37
36
  // https://github.com/pmndrs/react-three-fiber/pull/782
38
37
  // Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides
39
38
  state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);
40
39
  state.raycaster.setFromCamera(state.pointer, state.camera);
41
40
  },
42
-
43
41
  connected: undefined,
44
- handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => ({ ...acc,
42
+ handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => ({
43
+ ...acc,
45
44
  [key]: handlePointer(key)
46
45
  }), {}),
46
+ update: () => {
47
+ var _internal$lastEvent;
48
+ const {
49
+ events,
50
+ internal
51
+ } = store.getState();
52
+ if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) events.handlers.onPointerMove(internal.lastEvent.current);
53
+ },
47
54
  connect: target => {
48
- var _events$handlers;
49
-
50
55
  const {
51
56
  set,
52
57
  events
53
58
  } = store.getState();
54
59
  events.disconnect == null ? void 0 : events.disconnect();
55
60
  set(state => ({
56
- events: { ...state.events,
61
+ events: {
62
+ ...state.events,
57
63
  connected: target
58
64
  }
59
65
  }));
60
- Object.entries((_events$handlers = events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {
61
- const [eventName, passive] = DOM_EVENTS[name];
62
- target.addEventListener(eventName, event, {
63
- passive
64
- });
65
- });
66
+ if (events.handlers) {
67
+ for (const name in events.handlers) {
68
+ const event = events.handlers[name];
69
+ const [eventName, passive] = DOM_EVENTS[name];
70
+ target.addEventListener(eventName, event, {
71
+ passive
72
+ });
73
+ }
74
+ }
66
75
  },
67
76
  disconnect: () => {
68
77
  const {
69
78
  set,
70
79
  events
71
80
  } = store.getState();
72
-
73
81
  if (events.connected) {
74
- var _events$handlers2;
75
-
76
- Object.entries((_events$handlers2 = events.handlers) != null ? _events$handlers2 : []).forEach(([name, event]) => {
77
- if (events && events.connected instanceof HTMLElement) {
82
+ if (events.handlers) {
83
+ for (const name in events.handlers) {
84
+ const event = events.handlers[name];
78
85
  const [eventName] = DOM_EVENTS[name];
79
86
  events.connected.removeEventListener(eventName, event);
80
87
  }
81
- });
88
+ }
82
89
  set(state => ({
83
- events: { ...state.events,
90
+ events: {
91
+ ...state.events,
84
92
  connected: undefined
85
93
  }
86
94
  }));
@@ -108,6 +116,7 @@ const CanvasImpl = /*#__PURE__*/React.forwardRef(function Canvas({
108
116
  performance,
109
117
  raycaster,
110
118
  camera,
119
+ scene,
111
120
  onPointerMissed,
112
121
  onCreated,
113
122
  stages,
@@ -117,7 +126,7 @@ const CanvasImpl = /*#__PURE__*/React.forwardRef(function Canvas({
117
126
  // This will include the entire THREE namespace by default, users can extend
118
127
  // their own elements by using the createRoot API instead
119
128
  React.useMemo(() => extend(THREE), []);
120
- const Bridge = useContextBridge();
129
+ const Bridge = useBridge();
121
130
  const [containerRef, containerRect] = useMeasure({
122
131
  scroll: true,
123
132
  debounce: {
@@ -128,72 +137,71 @@ const CanvasImpl = /*#__PURE__*/React.forwardRef(function Canvas({
128
137
  });
129
138
  const canvasRef = React.useRef(null);
130
139
  const divRef = React.useRef(null);
131
- const [canvas, setCanvas] = React.useState(null);
132
140
  React.useImperativeHandle(forwardedRef, () => canvasRef.current);
133
141
  const handlePointerMissed = useMutableCallback(onPointerMissed);
134
142
  const [block, setBlock] = React.useState(false);
135
- const [error, setError] = React.useState(false); // Suspend this component if block is a promise (2nd run)
136
-
137
- if (block) throw block; // Throw exception outwards if anything within canvas throws
143
+ const [error, setError] = React.useState(false);
138
144
 
145
+ // Suspend this component if block is a promise (2nd run)
146
+ if (block) throw block;
147
+ // Throw exception outwards if anything within canvas throws
139
148
  if (error) throw error;
140
149
  const root = React.useRef(null);
141
-
142
- if (containerRect.width > 0 && containerRect.height > 0 && canvas) {
143
- if (!root.current) root.current = createRoot(canvas);
144
- root.current.configure({
145
- gl,
146
- events,
147
- shadows,
148
- linear,
149
- flat,
150
- legacy,
151
- orthographic,
152
- frameloop,
153
- dpr,
154
- performance,
155
- raycaster,
156
- camera,
157
- stages,
158
- size: containerRect,
159
- // Pass mutable reference to onPointerMissed so it's free to update
160
- onPointerMissed: (...args) => handlePointerMissed.current == null ? void 0 : handlePointerMissed.current(...args),
161
- onCreated: state => {
162
- // Connect to event source
163
- state.events.connect == null ? void 0 : state.events.connect(eventSource ? isRef(eventSource) ? eventSource.current : eventSource : divRef.current); // Set up compute function
164
-
165
- if (eventPrefix) {
166
- state.setEvents({
167
- compute: (event, state) => {
168
- const x = event[eventPrefix + 'X'];
169
- const y = event[eventPrefix + 'Y'];
170
- state.pointer.set(x / state.size.width * 2 - 1, -(y / state.size.height) * 2 + 1);
171
- state.raycaster.setFromCamera(state.pointer, state.camera);
172
- }
173
- });
174
- } // Call onCreated callback
175
-
176
-
177
- onCreated == null ? void 0 : onCreated(state);
178
- }
179
- });
180
- root.current.render( /*#__PURE__*/React.createElement(Bridge, null, /*#__PURE__*/React.createElement(ErrorBoundary, {
181
- set: setError
182
- }, /*#__PURE__*/React.createElement(React.Suspense, {
183
- fallback: /*#__PURE__*/React.createElement(Block, {
184
- set: setBlock
185
- })
186
- }, children))));
187
- }
188
-
189
150
  useIsomorphicLayoutEffect(() => {
190
- setCanvas(canvasRef.current);
191
- }, []);
151
+ const canvas = canvasRef.current;
152
+ if (containerRect.width > 0 && containerRect.height > 0 && canvas) {
153
+ if (!root.current) root.current = createRoot(canvas);
154
+ root.current.configure({
155
+ gl,
156
+ scene,
157
+ events,
158
+ shadows,
159
+ linear,
160
+ flat,
161
+ legacy,
162
+ orthographic,
163
+ frameloop,
164
+ dpr,
165
+ performance,
166
+ raycaster,
167
+ camera,
168
+ size: containerRect,
169
+ // Pass mutable reference to onPointerMissed so it's free to update
170
+ onPointerMissed: (...args) => handlePointerMissed.current == null ? void 0 : handlePointerMissed.current(...args),
171
+ onCreated: state => {
172
+ // Connect to event source
173
+ state.events.connect == null ? void 0 : state.events.connect(eventSource ? isRef(eventSource) ? eventSource.current : eventSource : divRef.current);
174
+ // Set up compute function
175
+ if (eventPrefix) {
176
+ state.setEvents({
177
+ compute: (event, state) => {
178
+ const x = event[eventPrefix + 'X'];
179
+ const y = event[eventPrefix + 'Y'];
180
+ state.pointer.set(x / state.size.width * 2 - 1, -(y / state.size.height) * 2 + 1);
181
+ state.raycaster.setFromCamera(state.pointer, state.camera);
182
+ }
183
+ });
184
+ }
185
+ // Call onCreated callback
186
+ onCreated == null ? void 0 : onCreated(state);
187
+ }
188
+ });
189
+ root.current.render( /*#__PURE__*/React.createElement(Bridge, null, /*#__PURE__*/React.createElement(ErrorBoundary, {
190
+ set: setError
191
+ }, /*#__PURE__*/React.createElement(React.Suspense, {
192
+ fallback: /*#__PURE__*/React.createElement(Block, {
193
+ set: setBlock
194
+ })
195
+ }, children))));
196
+ }
197
+ });
192
198
  React.useEffect(() => {
199
+ const canvas = canvasRef.current;
193
200
  if (canvas) return () => unmountComponentAtNode(canvas);
194
- }, [canvas]); // When the event source is not this div, we need to set pointer-events to none
195
- // Or else the canvas will block events from reaching the event source
201
+ }, []);
196
202
 
203
+ // When the event source is not this div, we need to set pointer-events to none
204
+ // Or else the canvas will block events from reaching the event source
197
205
  const pointerEvents = eventSource ? 'none' : 'auto';
198
206
  return /*#__PURE__*/React.createElement("div", _extends({
199
207
  ref: divRef,
@@ -218,11 +226,11 @@ const CanvasImpl = /*#__PURE__*/React.forwardRef(function Canvas({
218
226
  }
219
227
  }, fallback)));
220
228
  });
221
- /**
222
- * A DOM canvas which accepts threejs elements as children.
223
- * @see https://docs.pmnd.rs/react-three-fiber/api/canvas
224
- */
225
229
 
230
+ /**
231
+ * A DOM canvas which accepts threejs elements as children.
232
+ * @see https://docs.pmnd.rs/react-three-fiber/api/canvas
233
+ */
226
234
  const Canvas = /*#__PURE__*/React.forwardRef(function CanvasWrapper(props, ref) {
227
235
  return /*#__PURE__*/React.createElement(FiberProvider, null, /*#__PURE__*/React.createElement(CanvasImpl, _extends({}, props, {
228
236
  ref: ref
@@ -1 +1,2 @@
1
1
  export * from "../../dist/declarations/src/native";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtdGhyZWUtZmliZXItbmF0aXZlLmNqcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vZGlzdC9kZWNsYXJhdGlvbnMvc3JjL25hdGl2ZS5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIn0=