@react-three/fiber 8.0.11 → 8.0.14

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 CHANGED
@@ -1,5 +1,23 @@
1
1
  # @react-three/fiber
2
2
 
3
+ ## 8.0.14
4
+
5
+ ### Patch Changes
6
+
7
+ - 5559a119: Add support for recoverable errors
8
+
9
+ ## 8.0.13
10
+
11
+ ### Patch Changes
12
+
13
+ - 9d77d8e2: fix: detach attribute removal
14
+
15
+ ## 8.0.12
16
+
17
+ ### Patch Changes
18
+
19
+ - 3d10413f: fix portal layers
20
+
3
21
  ## 8.0.11
4
22
 
5
23
  ### Patch Changes
@@ -62,7 +62,7 @@ export interface PointerCaptureTarget {
62
62
  intersection: Intersection;
63
63
  target: Element;
64
64
  }
65
- export declare function getEventPriority(): any;
65
+ export declare function getEventPriority(): 1 | 4 | 16;
66
66
  export declare function removeInteractivity(store: UseBoundStore<RootState>, object: THREE.Object3D): void;
67
67
  export declare function createEvents(store: UseBoundStore<RootState>): {
68
68
  handlePointer: (name: string) => (event: DomEvent) => void;
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { GetState, SetState, StoreApi, UseBoundStore } from 'zustand';
4
4
  import { DomEvent, EventManager, PointerCaptureTarget, ThreeEvent } from './events';
5
5
  import { Camera } from './utils';
6
- export declare const privateKeys: readonly ["set", "get", "setSize", "setFrameloop", "setDpr", "events", "invalidate", "advance", "performance", "internal", "size", "viewport"];
6
+ export declare const privateKeys: readonly ["set", "get", "setSize", "setFrameloop", "setDpr", "events", "invalidate", "advance", "size", "viewport"];
7
7
  export declare type PrivateKeys = typeof privateKeys[number];
8
8
  export interface Intersection extends THREE.Intersection {
9
9
  eventObject: THREE.Object3D;
@@ -14,6 +14,7 @@ export declare type UnblockProps = {
14
14
  export declare function Block({ set }: Omit<UnblockProps, 'children'>): null;
15
15
  export declare class ErrorBoundary extends React.Component<{
16
16
  set: React.Dispatch<any>;
17
+ children: React.ReactNode;
17
18
  }, {
18
19
  error: boolean;
19
20
  }> {
@@ -102,6 +102,7 @@ export declare type ConeGeometryProps = BufferGeometryNode<THREE.ConeGeometry, t
102
102
  export declare type CylinderGeometryProps = BufferGeometryNode<THREE.CylinderGeometry, typeof THREE.CylinderGeometry>;
103
103
  export declare type CircleGeometryProps = BufferGeometryNode<THREE.CircleGeometry, typeof THREE.CircleGeometry>;
104
104
  export declare type BoxGeometryProps = BufferGeometryNode<THREE.BoxGeometry, typeof THREE.BoxGeometry>;
105
+ export declare type CapsuleGeometryProps = BufferGeometryNode<THREE.CapsuleBufferGeometry, typeof THREE.CapsuleBufferGeometry>;
105
106
  export declare type MaterialProps = MaterialNode<THREE.Material, [THREE.MaterialParameters]>;
106
107
  export declare type ShadowMaterialProps = MaterialNode<THREE.ShadowMaterial, [THREE.ShaderMaterialParameters]>;
107
108
  export declare type SpriteMaterialProps = MaterialNode<THREE.SpriteMaterial, [THREE.SpriteMaterialParameters]>;
@@ -245,6 +246,7 @@ declare global {
245
246
  cylinderGeometry: CylinderGeometryProps;
246
247
  circleGeometry: CircleGeometryProps;
247
248
  boxGeometry: BoxGeometryProps;
249
+ capsuleGeometry: CapsuleGeometryProps;
248
250
  material: MaterialProps;
249
251
  shadowMaterial: ShadowMaterialProps;
250
252
  spriteMaterial: SpriteMaterialProps;
@@ -19,14 +19,12 @@ function _interopNamespace(e) {
19
19
  var d = Object.getOwnPropertyDescriptor(e, k);
20
20
  Object.defineProperty(n, k, d.get ? d : {
21
21
  enumerable: true,
22
- get: function () {
23
- return e[k];
24
- }
22
+ get: function () { return e[k]; }
25
23
  });
26
24
  }
27
25
  });
28
26
  }
29
- n['default'] = e;
27
+ n["default"] = e;
30
28
  return Object.freeze(n);
31
29
  }
32
30
 
@@ -230,7 +228,10 @@ function detach(parent, child, type) {
230
228
  target,
231
229
  key
232
230
  } = resolve(parent, type);
233
- target[key] = child.__r3f.previousAttach;
231
+ const previous = child.__r3f.previousAttach; // When the previous value was undefined, it means the value was never set to begin with
232
+
233
+ if (previous === undefined) delete target[key]; // Otherwise set the previous value
234
+ else target[key] = previous;
234
235
  } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);
235
236
 
236
237
  (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;
@@ -344,35 +345,35 @@ function applyProps$1(instance, data) {
344
345
  localState.eventCount = Object.keys(localState.handlers).length;
345
346
  } // Special treatment for objects with support for set/copy, and layers
346
347
  else if (targetProp && targetProp.set && (targetProp.copy || targetProp instanceof THREE__namespace.Layers)) {
347
- // If value is an array
348
- if (Array.isArray(value)) {
349
- if (targetProp.fromArray) targetProp.fromArray(value);else targetProp.set(...value);
350
- } // Test again target.copy(class) next ...
351
- else if (targetProp.copy && value && value.constructor && targetProp.constructor.name === value.constructor.name) {
352
- targetProp.copy(value);
353
- } // If nothing else fits, just set the single value, ignore undefined
354
- // https://github.com/pmndrs/react-three-fiber/issues/274
355
- else if (value !== undefined) {
356
- const isColor = targetProp instanceof THREE__namespace.Color; // Allow setting array scalars
357
-
358
- if (!isColor && targetProp.setScalar) targetProp.setScalar(value); // Layers have no copy function, we must therefore copy the mask property
359
- else if (targetProp instanceof THREE__namespace.Layers && value instanceof THREE__namespace.Layers) targetProp.mask = value.mask; // Otherwise just set ...
360
- else targetProp.set(value); // For versions of three which don't support THREE.ColorManagement,
361
- // Auto-convert sRGB colors
362
- // https://github.com/pmndrs/react-three-fiber/issues/344
363
-
364
- const supportsColorManagement = THREE__namespace.ColorManagement;
365
- if (!supportsColorManagement && !rootState.linear && isColor) targetProp.convertSRGBToLinear();
366
- } // Else, just overwrite the value
367
-
368
- } else {
369
- currentInstance[key] = value; // Auto-convert sRGB textures, for now ...
348
+ // If value is an array
349
+ if (Array.isArray(value)) {
350
+ if (targetProp.fromArray) targetProp.fromArray(value);else targetProp.set(...value);
351
+ } // Test again target.copy(class) next ...
352
+ else if (targetProp.copy && value && value.constructor && targetProp.constructor.name === value.constructor.name) {
353
+ targetProp.copy(value);
354
+ } // If nothing else fits, just set the single value, ignore undefined
355
+ // https://github.com/pmndrs/react-three-fiber/issues/274
356
+ else if (value !== undefined) {
357
+ const isColor = targetProp instanceof THREE__namespace.Color; // Allow setting array scalars
358
+
359
+ if (!isColor && targetProp.setScalar) targetProp.setScalar(value); // Layers have no copy function, we must therefore copy the mask property
360
+ else if (targetProp instanceof THREE__namespace.Layers && value instanceof THREE__namespace.Layers) targetProp.mask = value.mask; // Otherwise just set ...
361
+ else targetProp.set(value); // For versions of three which don't support THREE.ColorManagement,
362
+ // Auto-convert sRGB colors
370
363
  // https://github.com/pmndrs/react-three-fiber/issues/344
371
364
 
372
- if (!rootState.linear && currentInstance[key] instanceof THREE__namespace.Texture) {
373
- currentInstance[key].encoding = THREE__namespace.sRGBEncoding;
374
- }
365
+ const supportsColorManagement = THREE__namespace.ColorManagement;
366
+ if (!supportsColorManagement && !rootState.linear && isColor) targetProp.convertSRGBToLinear();
367
+ } // Else, just overwrite the value
368
+
369
+ } else {
370
+ currentInstance[key] = value; // Auto-convert sRGB textures, for now ...
371
+ // https://github.com/pmndrs/react-three-fiber/issues/344
372
+
373
+ if (!rootState.linear && currentInstance[key] instanceof THREE__namespace.Texture) {
374
+ currentInstance[key].encoding = THREE__namespace.sRGBEncoding;
375
375
  }
376
+ }
376
377
 
377
378
  invalidateInstance(instance);
378
379
  });
@@ -872,7 +873,7 @@ function createRenderer(roots, getEventPriority) {
872
873
  const target = catalogue[name];
873
874
 
874
875
  if (!target) {
875
- throw `${name} is not part of the THREE namespace! Did you forget to extend? See: https://github.com/pmndrs/react-three-fiber/blob/master/markdown/api.md#using-3rd-party-objects-declaratively`;
876
+ throw `${name} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`;
876
877
  } // Throw if an object or literal was passed for args
877
878
 
878
879
 
@@ -1056,7 +1057,7 @@ function createRenderer(roots, getEventPriority) {
1056
1057
  });
1057
1058
  }
1058
1059
 
1059
- const reconciler = Reconciler__default['default']({
1060
+ const reconciler = Reconciler__default["default"]({
1060
1061
  createInstance,
1061
1062
  removeChild,
1062
1063
  appendChild,
@@ -1141,7 +1142,6 @@ function createRenderer(roots, getEventPriority) {
1141
1142
  shouldSetTextContent: () => false,
1142
1143
  clearContainer: () => false,
1143
1144
  detachDeletedInstance: () => {},
1144
- createTextInstance: () => {},
1145
1145
 
1146
1146
  hideInstance(instance) {
1147
1147
  var _instance$__r3f5;
@@ -1169,10 +1169,11 @@ function createRenderer(roots, getEventPriority) {
1169
1169
  invalidateInstance(instance);
1170
1170
  },
1171
1171
 
1172
+ createTextInstance: () => {},
1172
1173
  hideTextInstance: () => {
1173
1174
  throw new Error('Text is not allowed in the R3F tree.');
1174
1175
  },
1175
- // prettier-ignore
1176
+ unhideTextInstance: () => {},
1176
1177
  getCurrentEventPriority: () => getEventPriority ? getEventPriority() : constants.DefaultEventPriority,
1177
1178
  // @ts-ignore
1178
1179
  now: typeof performance !== 'undefined' && is.fun(performance.now) ? performance.now : is.fun(Date.now) ? Date.now : undefined,
@@ -1189,12 +1190,12 @@ function createRenderer(roots, getEventPriority) {
1189
1190
  };
1190
1191
  }
1191
1192
 
1192
- const privateKeys = ['set', 'get', 'setSize', 'setFrameloop', 'setDpr', 'events', 'invalidate', 'advance', 'performance', 'internal', 'size', 'viewport'];
1193
+ const privateKeys = ['set', 'get', 'setSize', 'setFrameloop', 'setDpr', 'events', 'invalidate', 'advance', 'size', 'viewport'];
1193
1194
  const isRenderer = def => !!(def != null && def.render);
1194
1195
  const context = /*#__PURE__*/React__namespace.createContext(null);
1195
1196
 
1196
1197
  const createStore = (invalidate, advance) => {
1197
- const rootState = create__default['default']((set, get) => {
1198
+ const rootState = create__default["default"]((set, get) => {
1198
1199
  const position = new THREE__namespace.Vector3();
1199
1200
  const defaultTarget = new THREE__namespace.Vector3();
1200
1201
  const tempTarget = new THREE__namespace.Vector3();
@@ -1652,6 +1653,13 @@ const createRendererInstance = (gl, canvas) => {
1652
1653
  });
1653
1654
  };
1654
1655
 
1656
+ const logRecoverableError = typeof reportError === 'function' ? // In modern browsers, reportError will dispatch an error event,
1657
+ // emulating an uncaught JavaScript error.
1658
+ reportError : error => {
1659
+ // In older browsers and test environments, fallback to console.error.
1660
+ console.error(error);
1661
+ };
1662
+
1655
1663
  function createRoot(canvas) {
1656
1664
  // Check against mistaken use of createRoot
1657
1665
  let prevRoot = roots.get(canvas);
@@ -1661,7 +1669,7 @@ function createRoot(canvas) {
1661
1669
 
1662
1670
  const store = prevStore || createStore(invalidate, advance); // Create renderer
1663
1671
 
1664
- const fiber = prevFiber || reconciler.createContainer(store, constants.ConcurrentRoot, false, null); // Map it
1672
+ const fiber = prevFiber || reconciler.createContainer(store, constants.ConcurrentRoot, null, false, null, null, logRecoverableError, null); // Map it
1665
1673
 
1666
1674
  if (!prevRoot) roots.set(canvas, {
1667
1675
  fiber,
@@ -1942,29 +1950,28 @@ function Portal({
1942
1950
  const previousRoot = useStore();
1943
1951
  const [raycaster] = React__namespace.useState(() => new THREE__namespace.Raycaster());
1944
1952
  const [pointer] = React__namespace.useState(() => new THREE__namespace.Vector2());
1945
- const inject = React__namespace.useCallback((state, injectState) => {
1946
- const intersect = { ...state
1947
- };
1948
-
1949
- if (injectState) {
1950
- // Only the fields of "state" that do not differ from injectState
1951
- // Some props should be off-limits
1952
- // Otherwise filter out the props that are different and let the inject layer take precedence
1953
- Object.keys(state).forEach(key => {
1954
- if ( // Some props should be off-limits
1955
- !privateKeys.includes(key) && // Otherwise filter out the props that are different and let the inject layer take precedence
1956
- state[key] !== injectState[key]) delete intersect[key];
1957
- });
1958
- }
1959
-
1953
+ const inject = React__namespace.useCallback((rootState, injectState) => {
1954
+ const intersect = { ...rootState
1955
+ }; // all prev state props
1956
+ // Only the fields of "rootState" that do not differ from injectState
1957
+ // Some props should be off-limits
1958
+ // Otherwise filter out the props that are different and let the inject layer take precedence
1959
+
1960
+ Object.keys(rootState).forEach(key => {
1961
+ if ( // Some props should be off-limits
1962
+ privateKeys.includes(key) || // Otherwise filter out the props that are different and let the inject layer take precedence
1963
+ rootState[key] !== injectState[key]) {
1964
+ delete intersect[key];
1965
+ }
1966
+ });
1960
1967
  let viewport = undefined;
1961
1968
 
1962
1969
  if (injectState && size) {
1963
1970
  const camera = injectState.camera; // Calculate the override viewport, if present
1964
1971
 
1965
- viewport = state.viewport.getCurrentViewport(camera, new THREE__namespace.Vector3(), size); // Update the portal camera, if it differs from the previous layer
1972
+ viewport = rootState.viewport.getCurrentViewport(camera, new THREE__namespace.Vector3(), size); // Update the portal camera, if it differs from the previous layer
1966
1973
 
1967
- if (camera !== state.camera) updateCamera(camera, size);
1974
+ if (camera !== rootState.camera) updateCamera(camera, size);
1968
1975
  }
1969
1976
 
1970
1977
  return { // The intersect consists of the previous root state
@@ -1977,14 +1984,14 @@ function Portal({
1977
1984
  // Their previous root is the layer before it
1978
1985
  previousRoot,
1979
1986
  // Events, size and viewport can be overridden by the inject layer
1980
- events: { ...state.events,
1987
+ events: { ...rootState.events,
1981
1988
  ...(injectState == null ? void 0 : injectState.events),
1982
1989
  ...events
1983
1990
  },
1984
- size: { ...state.size,
1991
+ size: { ...rootState.size,
1985
1992
  ...size
1986
1993
  },
1987
- viewport: { ...state.viewport,
1994
+ viewport: { ...rootState.viewport,
1988
1995
  ...viewport
1989
1996
  },
1990
1997
  ...rest
@@ -1992,9 +1999,20 @@ function Portal({
1992
1999
  }, [state]);
1993
2000
  const [usePortalStore] = React__namespace.useState(() => {
1994
2001
  // Create a mirrored store, based on the previous root with a few overrides ...
1995
- new THREE__namespace.Vector3();
1996
2002
  const previousState = previousRoot.getState();
1997
- const store = create__default['default']((set, get) => ({ ...inject(previousState),
2003
+ const store = create__default["default"]((set, get) => ({ ...previousState,
2004
+ scene: container,
2005
+ raycaster,
2006
+ pointer,
2007
+ mouse: pointer,
2008
+ previousRoot,
2009
+ events: { ...previousState.events,
2010
+ ...events
2011
+ },
2012
+ size: { ...previousState.size,
2013
+ ...size
2014
+ },
2015
+ ...rest,
1998
2016
  // Set and get refer to this root-state
1999
2017
  set,
2000
2018
  get,
@@ -201,7 +201,10 @@ function detach(parent, child, type) {
201
201
  target,
202
202
  key
203
203
  } = resolve(parent, type);
204
- target[key] = child.__r3f.previousAttach;
204
+ const previous = child.__r3f.previousAttach; // When the previous value was undefined, it means the value was never set to begin with
205
+
206
+ if (previous === undefined) delete target[key]; // Otherwise set the previous value
207
+ else target[key] = previous;
205
208
  } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);
206
209
 
207
210
  (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;
@@ -315,35 +318,35 @@ function applyProps$1(instance, data) {
315
318
  localState.eventCount = Object.keys(localState.handlers).length;
316
319
  } // Special treatment for objects with support for set/copy, and layers
317
320
  else if (targetProp && targetProp.set && (targetProp.copy || targetProp instanceof THREE.Layers)) {
318
- // If value is an array
319
- if (Array.isArray(value)) {
320
- if (targetProp.fromArray) targetProp.fromArray(value);else targetProp.set(...value);
321
- } // Test again target.copy(class) next ...
322
- else if (targetProp.copy && value && value.constructor && targetProp.constructor.name === value.constructor.name) {
323
- targetProp.copy(value);
324
- } // If nothing else fits, just set the single value, ignore undefined
325
- // https://github.com/pmndrs/react-three-fiber/issues/274
326
- else if (value !== undefined) {
327
- const isColor = targetProp instanceof THREE.Color; // Allow setting array scalars
328
-
329
- if (!isColor && targetProp.setScalar) targetProp.setScalar(value); // Layers have no copy function, we must therefore copy the mask property
330
- else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers) targetProp.mask = value.mask; // Otherwise just set ...
331
- else targetProp.set(value); // For versions of three which don't support THREE.ColorManagement,
332
- // Auto-convert sRGB colors
333
- // https://github.com/pmndrs/react-three-fiber/issues/344
334
-
335
- const supportsColorManagement = THREE.ColorManagement;
336
- if (!supportsColorManagement && !rootState.linear && isColor) targetProp.convertSRGBToLinear();
337
- } // Else, just overwrite the value
338
-
339
- } else {
340
- currentInstance[key] = value; // Auto-convert sRGB textures, for now ...
321
+ // If value is an array
322
+ if (Array.isArray(value)) {
323
+ if (targetProp.fromArray) targetProp.fromArray(value);else targetProp.set(...value);
324
+ } // Test again target.copy(class) next ...
325
+ else if (targetProp.copy && value && value.constructor && targetProp.constructor.name === value.constructor.name) {
326
+ targetProp.copy(value);
327
+ } // If nothing else fits, just set the single value, ignore undefined
328
+ // https://github.com/pmndrs/react-three-fiber/issues/274
329
+ else if (value !== undefined) {
330
+ const isColor = targetProp instanceof THREE.Color; // Allow setting array scalars
331
+
332
+ if (!isColor && targetProp.setScalar) targetProp.setScalar(value); // Layers have no copy function, we must therefore copy the mask property
333
+ else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers) targetProp.mask = value.mask; // Otherwise just set ...
334
+ else targetProp.set(value); // For versions of three which don't support THREE.ColorManagement,
335
+ // Auto-convert sRGB colors
341
336
  // https://github.com/pmndrs/react-three-fiber/issues/344
342
337
 
343
- if (!rootState.linear && currentInstance[key] instanceof THREE.Texture) {
344
- currentInstance[key].encoding = THREE.sRGBEncoding;
345
- }
338
+ const supportsColorManagement = THREE.ColorManagement;
339
+ if (!supportsColorManagement && !rootState.linear && isColor) targetProp.convertSRGBToLinear();
340
+ } // Else, just overwrite the value
341
+
342
+ } else {
343
+ currentInstance[key] = value; // Auto-convert sRGB textures, for now ...
344
+ // https://github.com/pmndrs/react-three-fiber/issues/344
345
+
346
+ if (!rootState.linear && currentInstance[key] instanceof THREE.Texture) {
347
+ currentInstance[key].encoding = THREE.sRGBEncoding;
346
348
  }
349
+ }
347
350
 
348
351
  invalidateInstance(instance);
349
352
  });
@@ -843,7 +846,7 @@ function createRenderer(roots, getEventPriority) {
843
846
  const target = catalogue[name];
844
847
 
845
848
  if (!target) {
846
- throw `${name} is not part of the THREE namespace! Did you forget to extend? See: https://github.com/pmndrs/react-three-fiber/blob/master/markdown/api.md#using-3rd-party-objects-declaratively`;
849
+ throw `${name} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`;
847
850
  } // Throw if an object or literal was passed for args
848
851
 
849
852
 
@@ -1112,7 +1115,6 @@ function createRenderer(roots, getEventPriority) {
1112
1115
  shouldSetTextContent: () => false,
1113
1116
  clearContainer: () => false,
1114
1117
  detachDeletedInstance: () => {},
1115
- createTextInstance: () => {},
1116
1118
 
1117
1119
  hideInstance(instance) {
1118
1120
  var _instance$__r3f5;
@@ -1140,10 +1142,11 @@ function createRenderer(roots, getEventPriority) {
1140
1142
  invalidateInstance(instance);
1141
1143
  },
1142
1144
 
1145
+ createTextInstance: () => {},
1143
1146
  hideTextInstance: () => {
1144
1147
  throw new Error('Text is not allowed in the R3F tree.');
1145
1148
  },
1146
- // prettier-ignore
1149
+ unhideTextInstance: () => {},
1147
1150
  getCurrentEventPriority: () => getEventPriority ? getEventPriority() : DefaultEventPriority,
1148
1151
  // @ts-ignore
1149
1152
  now: typeof performance !== 'undefined' && is.fun(performance.now) ? performance.now : is.fun(Date.now) ? Date.now : undefined,
@@ -1160,7 +1163,7 @@ function createRenderer(roots, getEventPriority) {
1160
1163
  };
1161
1164
  }
1162
1165
 
1163
- const privateKeys = ['set', 'get', 'setSize', 'setFrameloop', 'setDpr', 'events', 'invalidate', 'advance', 'performance', 'internal', 'size', 'viewport'];
1166
+ const privateKeys = ['set', 'get', 'setSize', 'setFrameloop', 'setDpr', 'events', 'invalidate', 'advance', 'size', 'viewport'];
1164
1167
  const isRenderer = def => !!(def != null && def.render);
1165
1168
  const context = /*#__PURE__*/React.createContext(null);
1166
1169
 
@@ -1623,6 +1626,13 @@ const createRendererInstance = (gl, canvas) => {
1623
1626
  });
1624
1627
  };
1625
1628
 
1629
+ const logRecoverableError = typeof reportError === 'function' ? // In modern browsers, reportError will dispatch an error event,
1630
+ // emulating an uncaught JavaScript error.
1631
+ reportError : error => {
1632
+ // In older browsers and test environments, fallback to console.error.
1633
+ console.error(error);
1634
+ };
1635
+
1626
1636
  function createRoot(canvas) {
1627
1637
  // Check against mistaken use of createRoot
1628
1638
  let prevRoot = roots.get(canvas);
@@ -1632,7 +1642,7 @@ function createRoot(canvas) {
1632
1642
 
1633
1643
  const store = prevStore || createStore(invalidate, advance); // Create renderer
1634
1644
 
1635
- const fiber = prevFiber || reconciler.createContainer(store, ConcurrentRoot, false, null); // Map it
1645
+ const fiber = prevFiber || reconciler.createContainer(store, ConcurrentRoot, null, false, null, null, logRecoverableError, null); // Map it
1636
1646
 
1637
1647
  if (!prevRoot) roots.set(canvas, {
1638
1648
  fiber,
@@ -1913,29 +1923,28 @@ function Portal({
1913
1923
  const previousRoot = useStore();
1914
1924
  const [raycaster] = React.useState(() => new THREE.Raycaster());
1915
1925
  const [pointer] = React.useState(() => new THREE.Vector2());
1916
- const inject = React.useCallback((state, injectState) => {
1917
- const intersect = { ...state
1918
- };
1919
-
1920
- if (injectState) {
1921
- // Only the fields of "state" that do not differ from injectState
1922
- // Some props should be off-limits
1923
- // Otherwise filter out the props that are different and let the inject layer take precedence
1924
- Object.keys(state).forEach(key => {
1925
- if ( // Some props should be off-limits
1926
- !privateKeys.includes(key) && // Otherwise filter out the props that are different and let the inject layer take precedence
1927
- state[key] !== injectState[key]) delete intersect[key];
1928
- });
1929
- }
1930
-
1926
+ const inject = React.useCallback((rootState, injectState) => {
1927
+ const intersect = { ...rootState
1928
+ }; // all prev state props
1929
+ // Only the fields of "rootState" that do not differ from injectState
1930
+ // Some props should be off-limits
1931
+ // Otherwise filter out the props that are different and let the inject layer take precedence
1932
+
1933
+ Object.keys(rootState).forEach(key => {
1934
+ if ( // Some props should be off-limits
1935
+ privateKeys.includes(key) || // Otherwise filter out the props that are different and let the inject layer take precedence
1936
+ rootState[key] !== injectState[key]) {
1937
+ delete intersect[key];
1938
+ }
1939
+ });
1931
1940
  let viewport = undefined;
1932
1941
 
1933
1942
  if (injectState && size) {
1934
1943
  const camera = injectState.camera; // Calculate the override viewport, if present
1935
1944
 
1936
- viewport = state.viewport.getCurrentViewport(camera, new THREE.Vector3(), size); // Update the portal camera, if it differs from the previous layer
1945
+ viewport = rootState.viewport.getCurrentViewport(camera, new THREE.Vector3(), size); // Update the portal camera, if it differs from the previous layer
1937
1946
 
1938
- if (camera !== state.camera) updateCamera(camera, size);
1947
+ if (camera !== rootState.camera) updateCamera(camera, size);
1939
1948
  }
1940
1949
 
1941
1950
  return { // The intersect consists of the previous root state
@@ -1948,14 +1957,14 @@ function Portal({
1948
1957
  // Their previous root is the layer before it
1949
1958
  previousRoot,
1950
1959
  // Events, size and viewport can be overridden by the inject layer
1951
- events: { ...state.events,
1960
+ events: { ...rootState.events,
1952
1961
  ...(injectState == null ? void 0 : injectState.events),
1953
1962
  ...events
1954
1963
  },
1955
- size: { ...state.size,
1964
+ size: { ...rootState.size,
1956
1965
  ...size
1957
1966
  },
1958
- viewport: { ...state.viewport,
1967
+ viewport: { ...rootState.viewport,
1959
1968
  ...viewport
1960
1969
  },
1961
1970
  ...rest
@@ -1963,9 +1972,20 @@ function Portal({
1963
1972
  }, [state]);
1964
1973
  const [usePortalStore] = React.useState(() => {
1965
1974
  // Create a mirrored store, based on the previous root with a few overrides ...
1966
- new THREE.Vector3();
1967
1975
  const previousState = previousRoot.getState();
1968
- const store = create((set, get) => ({ ...inject(previousState),
1976
+ const store = create((set, get) => ({ ...previousState,
1977
+ scene: container,
1978
+ raycaster,
1979
+ pointer,
1980
+ mouse: pointer,
1981
+ previousRoot,
1982
+ events: { ...previousState.events,
1983
+ ...events
1984
+ },
1985
+ size: { ...previousState.size,
1986
+ ...size
1987
+ },
1988
+ ...rest,
1969
1989
  // Set and get refer to this root-state
1970
1990
  set,
1971
1991
  get,
@@ -19,14 +19,12 @@ function _interopNamespace(e) {
19
19
  var d = Object.getOwnPropertyDescriptor(e, k);
20
20
  Object.defineProperty(n, k, d.get ? d : {
21
21
  enumerable: true,
22
- get: function () {
23
- return e[k];
24
- }
22
+ get: function () { return e[k]; }
25
23
  });
26
24
  }
27
25
  });
28
26
  }
29
- n['default'] = e;
27
+ n["default"] = e;
30
28
  return Object.freeze(n);
31
29
  }
32
30
 
@@ -230,7 +228,10 @@ function detach(parent, child, type) {
230
228
  target,
231
229
  key
232
230
  } = resolve(parent, type);
233
- target[key] = child.__r3f.previousAttach;
231
+ const previous = child.__r3f.previousAttach; // When the previous value was undefined, it means the value was never set to begin with
232
+
233
+ if (previous === undefined) delete target[key]; // Otherwise set the previous value
234
+ else target[key] = previous;
234
235
  } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);
235
236
 
236
237
  (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;
@@ -344,35 +345,35 @@ function applyProps$1(instance, data) {
344
345
  localState.eventCount = Object.keys(localState.handlers).length;
345
346
  } // Special treatment for objects with support for set/copy, and layers
346
347
  else if (targetProp && targetProp.set && (targetProp.copy || targetProp instanceof THREE__namespace.Layers)) {
347
- // If value is an array
348
- if (Array.isArray(value)) {
349
- if (targetProp.fromArray) targetProp.fromArray(value);else targetProp.set(...value);
350
- } // Test again target.copy(class) next ...
351
- else if (targetProp.copy && value && value.constructor && targetProp.constructor.name === value.constructor.name) {
352
- targetProp.copy(value);
353
- } // If nothing else fits, just set the single value, ignore undefined
354
- // https://github.com/pmndrs/react-three-fiber/issues/274
355
- else if (value !== undefined) {
356
- const isColor = targetProp instanceof THREE__namespace.Color; // Allow setting array scalars
357
-
358
- if (!isColor && targetProp.setScalar) targetProp.setScalar(value); // Layers have no copy function, we must therefore copy the mask property
359
- else if (targetProp instanceof THREE__namespace.Layers && value instanceof THREE__namespace.Layers) targetProp.mask = value.mask; // Otherwise just set ...
360
- else targetProp.set(value); // For versions of three which don't support THREE.ColorManagement,
361
- // Auto-convert sRGB colors
362
- // https://github.com/pmndrs/react-three-fiber/issues/344
363
-
364
- const supportsColorManagement = THREE__namespace.ColorManagement;
365
- if (!supportsColorManagement && !rootState.linear && isColor) targetProp.convertSRGBToLinear();
366
- } // Else, just overwrite the value
367
-
368
- } else {
369
- currentInstance[key] = value; // Auto-convert sRGB textures, for now ...
348
+ // If value is an array
349
+ if (Array.isArray(value)) {
350
+ if (targetProp.fromArray) targetProp.fromArray(value);else targetProp.set(...value);
351
+ } // Test again target.copy(class) next ...
352
+ else if (targetProp.copy && value && value.constructor && targetProp.constructor.name === value.constructor.name) {
353
+ targetProp.copy(value);
354
+ } // If nothing else fits, just set the single value, ignore undefined
355
+ // https://github.com/pmndrs/react-three-fiber/issues/274
356
+ else if (value !== undefined) {
357
+ const isColor = targetProp instanceof THREE__namespace.Color; // Allow setting array scalars
358
+
359
+ if (!isColor && targetProp.setScalar) targetProp.setScalar(value); // Layers have no copy function, we must therefore copy the mask property
360
+ else if (targetProp instanceof THREE__namespace.Layers && value instanceof THREE__namespace.Layers) targetProp.mask = value.mask; // Otherwise just set ...
361
+ else targetProp.set(value); // For versions of three which don't support THREE.ColorManagement,
362
+ // Auto-convert sRGB colors
370
363
  // https://github.com/pmndrs/react-three-fiber/issues/344
371
364
 
372
- if (!rootState.linear && currentInstance[key] instanceof THREE__namespace.Texture) {
373
- currentInstance[key].encoding = THREE__namespace.sRGBEncoding;
374
- }
365
+ const supportsColorManagement = THREE__namespace.ColorManagement;
366
+ if (!supportsColorManagement && !rootState.linear && isColor) targetProp.convertSRGBToLinear();
367
+ } // Else, just overwrite the value
368
+
369
+ } else {
370
+ currentInstance[key] = value; // Auto-convert sRGB textures, for now ...
371
+ // https://github.com/pmndrs/react-three-fiber/issues/344
372
+
373
+ if (!rootState.linear && currentInstance[key] instanceof THREE__namespace.Texture) {
374
+ currentInstance[key].encoding = THREE__namespace.sRGBEncoding;
375
375
  }
376
+ }
376
377
 
377
378
  invalidateInstance(instance);
378
379
  });
@@ -872,7 +873,7 @@ function createRenderer(roots, getEventPriority) {
872
873
  const target = catalogue[name];
873
874
 
874
875
  if (!target) {
875
- throw `${name} is not part of the THREE namespace! Did you forget to extend? See: https://github.com/pmndrs/react-three-fiber/blob/master/markdown/api.md#using-3rd-party-objects-declaratively`;
876
+ throw `${name} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`;
876
877
  } // Throw if an object or literal was passed for args
877
878
 
878
879
 
@@ -1056,7 +1057,7 @@ function createRenderer(roots, getEventPriority) {
1056
1057
  });
1057
1058
  }
1058
1059
 
1059
- const reconciler = Reconciler__default['default']({
1060
+ const reconciler = Reconciler__default["default"]({
1060
1061
  createInstance,
1061
1062
  removeChild,
1062
1063
  appendChild,
@@ -1141,7 +1142,6 @@ function createRenderer(roots, getEventPriority) {
1141
1142
  shouldSetTextContent: () => false,
1142
1143
  clearContainer: () => false,
1143
1144
  detachDeletedInstance: () => {},
1144
- createTextInstance: () => {},
1145
1145
 
1146
1146
  hideInstance(instance) {
1147
1147
  var _instance$__r3f5;
@@ -1169,10 +1169,11 @@ function createRenderer(roots, getEventPriority) {
1169
1169
  invalidateInstance(instance);
1170
1170
  },
1171
1171
 
1172
+ createTextInstance: () => {},
1172
1173
  hideTextInstance: () => {
1173
1174
  throw new Error('Text is not allowed in the R3F tree.');
1174
1175
  },
1175
- // prettier-ignore
1176
+ unhideTextInstance: () => {},
1176
1177
  getCurrentEventPriority: () => getEventPriority ? getEventPriority() : constants.DefaultEventPriority,
1177
1178
  // @ts-ignore
1178
1179
  now: typeof performance !== 'undefined' && is.fun(performance.now) ? performance.now : is.fun(Date.now) ? Date.now : undefined,
@@ -1189,12 +1190,12 @@ function createRenderer(roots, getEventPriority) {
1189
1190
  };
1190
1191
  }
1191
1192
 
1192
- const privateKeys = ['set', 'get', 'setSize', 'setFrameloop', 'setDpr', 'events', 'invalidate', 'advance', 'performance', 'internal', 'size', 'viewport'];
1193
+ const privateKeys = ['set', 'get', 'setSize', 'setFrameloop', 'setDpr', 'events', 'invalidate', 'advance', 'size', 'viewport'];
1193
1194
  const isRenderer = def => !!(def != null && def.render);
1194
1195
  const context = /*#__PURE__*/React__namespace.createContext(null);
1195
1196
 
1196
1197
  const createStore = (invalidate, advance) => {
1197
- const rootState = create__default['default']((set, get) => {
1198
+ const rootState = create__default["default"]((set, get) => {
1198
1199
  const position = new THREE__namespace.Vector3();
1199
1200
  const defaultTarget = new THREE__namespace.Vector3();
1200
1201
  const tempTarget = new THREE__namespace.Vector3();
@@ -1652,6 +1653,13 @@ const createRendererInstance = (gl, canvas) => {
1652
1653
  });
1653
1654
  };
1654
1655
 
1656
+ const logRecoverableError = typeof reportError === 'function' ? // In modern browsers, reportError will dispatch an error event,
1657
+ // emulating an uncaught JavaScript error.
1658
+ reportError : error => {
1659
+ // In older browsers and test environments, fallback to console.error.
1660
+ console.error(error);
1661
+ };
1662
+
1655
1663
  function createRoot(canvas) {
1656
1664
  // Check against mistaken use of createRoot
1657
1665
  let prevRoot = roots.get(canvas);
@@ -1661,7 +1669,7 @@ function createRoot(canvas) {
1661
1669
 
1662
1670
  const store = prevStore || createStore(invalidate, advance); // Create renderer
1663
1671
 
1664
- const fiber = prevFiber || reconciler.createContainer(store, constants.ConcurrentRoot, false, null); // Map it
1672
+ const fiber = prevFiber || reconciler.createContainer(store, constants.ConcurrentRoot, null, false, null, null, logRecoverableError, null); // Map it
1665
1673
 
1666
1674
  if (!prevRoot) roots.set(canvas, {
1667
1675
  fiber,
@@ -1942,29 +1950,28 @@ function Portal({
1942
1950
  const previousRoot = useStore();
1943
1951
  const [raycaster] = React__namespace.useState(() => new THREE__namespace.Raycaster());
1944
1952
  const [pointer] = React__namespace.useState(() => new THREE__namespace.Vector2());
1945
- const inject = React__namespace.useCallback((state, injectState) => {
1946
- const intersect = { ...state
1947
- };
1948
-
1949
- if (injectState) {
1950
- // Only the fields of "state" that do not differ from injectState
1951
- // Some props should be off-limits
1952
- // Otherwise filter out the props that are different and let the inject layer take precedence
1953
- Object.keys(state).forEach(key => {
1954
- if ( // Some props should be off-limits
1955
- !privateKeys.includes(key) && // Otherwise filter out the props that are different and let the inject layer take precedence
1956
- state[key] !== injectState[key]) delete intersect[key];
1957
- });
1958
- }
1959
-
1953
+ const inject = React__namespace.useCallback((rootState, injectState) => {
1954
+ const intersect = { ...rootState
1955
+ }; // all prev state props
1956
+ // Only the fields of "rootState" that do not differ from injectState
1957
+ // Some props should be off-limits
1958
+ // Otherwise filter out the props that are different and let the inject layer take precedence
1959
+
1960
+ Object.keys(rootState).forEach(key => {
1961
+ if ( // Some props should be off-limits
1962
+ privateKeys.includes(key) || // Otherwise filter out the props that are different and let the inject layer take precedence
1963
+ rootState[key] !== injectState[key]) {
1964
+ delete intersect[key];
1965
+ }
1966
+ });
1960
1967
  let viewport = undefined;
1961
1968
 
1962
1969
  if (injectState && size) {
1963
1970
  const camera = injectState.camera; // Calculate the override viewport, if present
1964
1971
 
1965
- viewport = state.viewport.getCurrentViewport(camera, new THREE__namespace.Vector3(), size); // Update the portal camera, if it differs from the previous layer
1972
+ viewport = rootState.viewport.getCurrentViewport(camera, new THREE__namespace.Vector3(), size); // Update the portal camera, if it differs from the previous layer
1966
1973
 
1967
- if (camera !== state.camera) updateCamera(camera, size);
1974
+ if (camera !== rootState.camera) updateCamera(camera, size);
1968
1975
  }
1969
1976
 
1970
1977
  return { // The intersect consists of the previous root state
@@ -1977,14 +1984,14 @@ function Portal({
1977
1984
  // Their previous root is the layer before it
1978
1985
  previousRoot,
1979
1986
  // Events, size and viewport can be overridden by the inject layer
1980
- events: { ...state.events,
1987
+ events: { ...rootState.events,
1981
1988
  ...(injectState == null ? void 0 : injectState.events),
1982
1989
  ...events
1983
1990
  },
1984
- size: { ...state.size,
1991
+ size: { ...rootState.size,
1985
1992
  ...size
1986
1993
  },
1987
- viewport: { ...state.viewport,
1994
+ viewport: { ...rootState.viewport,
1988
1995
  ...viewport
1989
1996
  },
1990
1997
  ...rest
@@ -1992,9 +1999,20 @@ function Portal({
1992
1999
  }, [state]);
1993
2000
  const [usePortalStore] = React__namespace.useState(() => {
1994
2001
  // Create a mirrored store, based on the previous root with a few overrides ...
1995
- new THREE__namespace.Vector3();
1996
2002
  const previousState = previousRoot.getState();
1997
- const store = create__default['default']((set, get) => ({ ...inject(previousState),
2003
+ const store = create__default["default"]((set, get) => ({ ...previousState,
2004
+ scene: container,
2005
+ raycaster,
2006
+ pointer,
2007
+ mouse: pointer,
2008
+ previousRoot,
2009
+ events: { ...previousState.events,
2010
+ ...events
2011
+ },
2012
+ size: { ...previousState.size,
2013
+ ...size
2014
+ },
2015
+ ...rest,
1998
2016
  // Set and get refer to this root-state
1999
2017
  set,
2000
2018
  get,
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./index-f7939a95.cjs.dev.js');
5
+ var index = require('./index-cf0e5bff.cjs.dev.js');
6
6
  var _extends = require('@babel/runtime/helpers/extends');
7
7
  var React = require('react');
8
8
  var THREE = require('three');
@@ -25,14 +25,12 @@ function _interopNamespace(e) {
25
25
  var d = Object.getOwnPropertyDescriptor(e, k);
26
26
  Object.defineProperty(n, k, d.get ? d : {
27
27
  enumerable: true,
28
- get: function () {
29
- return e[k];
30
- }
28
+ get: function () { return e[k]; }
31
29
  });
32
30
  }
33
31
  });
34
32
  }
35
- n['default'] = e;
33
+ n["default"] = e;
36
34
  return Object.freeze(n);
37
35
  }
38
36
 
@@ -151,7 +149,7 @@ const Canvas = /*#__PURE__*/React__namespace.forwardRef(function Canvas({
151
149
  const [containerRef, {
152
150
  width,
153
151
  height
154
- }] = useMeasure__default['default']({
152
+ }] = useMeasure__default["default"]({
155
153
  scroll: true,
156
154
  debounce: {
157
155
  scroll: 50,
@@ -213,7 +211,7 @@ const Canvas = /*#__PURE__*/React__namespace.forwardRef(function Canvas({
213
211
  if (canvas) return () => index.unmountComponentAtNode(canvas);
214
212
  }, [canvas]);
215
213
  return /*#__PURE__*/React__namespace.createElement("div", _extends({
216
- ref: mergeRefs__default['default']([meshRef, containerRef]),
214
+ ref: mergeRefs__default["default"]([meshRef, containerRef]),
217
215
  style: {
218
216
  position: 'relative',
219
217
  width: '100%',
@@ -222,7 +220,7 @@ const Canvas = /*#__PURE__*/React__namespace.forwardRef(function Canvas({
222
220
  ...style
223
221
  }
224
222
  }, props), /*#__PURE__*/React__namespace.createElement("canvas", {
225
- ref: mergeRefs__default['default']([canvasRef, forwardedRef]),
223
+ ref: mergeRefs__default["default"]([canvasRef, forwardedRef]),
226
224
  style: {
227
225
  display: 'block'
228
226
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./index-e936c560.cjs.prod.js');
5
+ var index = require('./index-5844e9ba.cjs.prod.js');
6
6
  var _extends = require('@babel/runtime/helpers/extends');
7
7
  var React = require('react');
8
8
  var THREE = require('three');
@@ -25,14 +25,12 @@ function _interopNamespace(e) {
25
25
  var d = Object.getOwnPropertyDescriptor(e, k);
26
26
  Object.defineProperty(n, k, d.get ? d : {
27
27
  enumerable: true,
28
- get: function () {
29
- return e[k];
30
- }
28
+ get: function () { return e[k]; }
31
29
  });
32
30
  }
33
31
  });
34
32
  }
35
- n['default'] = e;
33
+ n["default"] = e;
36
34
  return Object.freeze(n);
37
35
  }
38
36
 
@@ -151,7 +149,7 @@ const Canvas = /*#__PURE__*/React__namespace.forwardRef(function Canvas({
151
149
  const [containerRef, {
152
150
  width,
153
151
  height
154
- }] = useMeasure__default['default']({
152
+ }] = useMeasure__default["default"]({
155
153
  scroll: true,
156
154
  debounce: {
157
155
  scroll: 50,
@@ -213,7 +211,7 @@ const Canvas = /*#__PURE__*/React__namespace.forwardRef(function Canvas({
213
211
  if (canvas) return () => index.unmountComponentAtNode(canvas);
214
212
  }, [canvas]);
215
213
  return /*#__PURE__*/React__namespace.createElement("div", _extends({
216
- ref: mergeRefs__default['default']([meshRef, containerRef]),
214
+ ref: mergeRefs__default["default"]([meshRef, containerRef]),
217
215
  style: {
218
216
  position: 'relative',
219
217
  width: '100%',
@@ -222,7 +220,7 @@ const Canvas = /*#__PURE__*/React__namespace.forwardRef(function Canvas({
222
220
  ...style
223
221
  }
224
222
  }, props), /*#__PURE__*/React__namespace.createElement("canvas", {
225
- ref: mergeRefs__default['default']([canvasRef, forwardedRef]),
223
+ ref: mergeRefs__default["default"]([canvasRef, forwardedRef]),
226
224
  style: {
227
225
  display: 'block'
228
226
  }
@@ -1,5 +1,5 @@
1
- import { c as createEvents, e as extend, u as useMutableCallback, a as createRoot, E as ErrorBoundary, B as Block, b as useIsomorphicLayoutEffect, d as unmountComponentAtNode } from './index-3c7aae97.esm.js';
2
- export { t as ReactThreeFiber, s as _roots, q as act, n as addAfterEffect, m as addEffect, o as addTail, l as advance, i as applyProps, f as context, g as createPortal, a as createRoot, j as dispose, e as extend, p as getRootState, k as invalidate, h as reconciler, r as render, d as unmountComponentAtNode, x as useFrame, y as useGraph, z as useLoader, v as useStore, w as useThree } from './index-3c7aae97.esm.js';
1
+ import { c as createEvents, e as extend, u as useMutableCallback, a as createRoot, E as ErrorBoundary, B as Block, b as useIsomorphicLayoutEffect, d as unmountComponentAtNode } from './index-c0771a1d.esm.js';
2
+ export { t as ReactThreeFiber, s as _roots, q as act, n as addAfterEffect, m as addEffect, o as addTail, l as advance, i as applyProps, f as context, g as createPortal, a as createRoot, j as dispose, e as extend, p as getRootState, k as invalidate, h as reconciler, r as render, d as unmountComponentAtNode, x as useFrame, y as useGraph, z as useLoader, v as useStore, w as useThree } from './index-c0771a1d.esm.js';
3
3
  import _extends from '@babel/runtime/helpers/esm/extends';
4
4
  import * as React from 'react';
5
5
  import * as THREE from 'three';
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var THREE = require('three');
6
6
  var expoAsset = require('expo-asset');
7
- var index = require('../../dist/index-f7939a95.cjs.dev.js');
7
+ var index = require('../../dist/index-cf0e5bff.cjs.dev.js');
8
8
  var _extends = require('@babel/runtime/helpers/extends');
9
9
  var React = require('react');
10
10
  var mergeRefs = require('react-merge-refs');
@@ -28,14 +28,12 @@ function _interopNamespace(e) {
28
28
  var d = Object.getOwnPropertyDescriptor(e, k);
29
29
  Object.defineProperty(n, k, d.get ? d : {
30
30
  enumerable: true,
31
- get: function () {
32
- return e[k];
33
- }
31
+ get: function () { return e[k]; }
34
32
  });
35
33
  }
36
34
  });
37
35
  }
38
- n['default'] = e;
36
+ n["default"] = e;
39
37
  return Object.freeze(n);
40
38
  }
41
39
 
@@ -100,7 +98,7 @@ function createTouchEvents(store) {
100
98
  events
101
99
  } = store.getState();
102
100
  events.disconnect == null ? void 0 : events.disconnect();
103
- const connected = new Pressability__default['default'](events == null ? void 0 : events.handlers);
101
+ const connected = new Pressability__default["default"](events == null ? void 0 : events.handlers);
104
102
  set(state => ({
105
103
  events: { ...state.events,
106
104
  connected
@@ -249,7 +247,7 @@ const Canvas = /*#__PURE__*/React__namespace.forwardRef(({
249
247
  }
250
248
  }, [canvas]);
251
249
  return /*#__PURE__*/React__namespace.createElement(reactNative.View, _extends({}, props, {
252
- ref: mergeRefs__default['default']([viewRef, forwardedRef]),
250
+ ref: mergeRefs__default["default"]([viewRef, forwardedRef]),
253
251
  onLayout: onLayout,
254
252
  style: {
255
253
  flex: 1,
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var THREE = require('three');
6
6
  var expoAsset = require('expo-asset');
7
- var index = require('../../dist/index-e936c560.cjs.prod.js');
7
+ var index = require('../../dist/index-5844e9ba.cjs.prod.js');
8
8
  var _extends = require('@babel/runtime/helpers/extends');
9
9
  var React = require('react');
10
10
  var mergeRefs = require('react-merge-refs');
@@ -28,14 +28,12 @@ function _interopNamespace(e) {
28
28
  var d = Object.getOwnPropertyDescriptor(e, k);
29
29
  Object.defineProperty(n, k, d.get ? d : {
30
30
  enumerable: true,
31
- get: function () {
32
- return e[k];
33
- }
31
+ get: function () { return e[k]; }
34
32
  });
35
33
  }
36
34
  });
37
35
  }
38
- n['default'] = e;
36
+ n["default"] = e;
39
37
  return Object.freeze(n);
40
38
  }
41
39
 
@@ -100,7 +98,7 @@ function createTouchEvents(store) {
100
98
  events
101
99
  } = store.getState();
102
100
  events.disconnect == null ? void 0 : events.disconnect();
103
- const connected = new Pressability__default['default'](events == null ? void 0 : events.handlers);
101
+ const connected = new Pressability__default["default"](events == null ? void 0 : events.handlers);
104
102
  set(state => ({
105
103
  events: { ...state.events,
106
104
  connected
@@ -249,7 +247,7 @@ const Canvas = /*#__PURE__*/React__namespace.forwardRef(({
249
247
  }
250
248
  }, [canvas]);
251
249
  return /*#__PURE__*/React__namespace.createElement(reactNative.View, _extends({}, props, {
252
- ref: mergeRefs__default['default']([viewRef, forwardedRef]),
250
+ ref: mergeRefs__default["default"]([viewRef, forwardedRef]),
253
251
  onLayout: onLayout,
254
252
  style: {
255
253
  flex: 1,
@@ -1,7 +1,7 @@
1
1
  import * as THREE from 'three';
2
2
  import { Asset } from 'expo-asset';
3
- import { c as createEvents, e as extend, u as useMutableCallback, a as createRoot, E as ErrorBoundary, B as Block, d as unmountComponentAtNode } from '../../dist/index-3c7aae97.esm.js';
4
- export { t as ReactThreeFiber, s as _roots, q as act, n as addAfterEffect, m as addEffect, o as addTail, l as advance, i as applyProps, f as context, g as createPortal, a as createRoot, j as dispose, e as extend, p as getRootState, k as invalidate, h as reconciler, r as render, d as unmountComponentAtNode, x as useFrame, y as useGraph, z as useLoader, v as useStore, w as useThree } from '../../dist/index-3c7aae97.esm.js';
3
+ import { c as createEvents, e as extend, u as useMutableCallback, a as createRoot, E as ErrorBoundary, B as Block, d as unmountComponentAtNode } from '../../dist/index-c0771a1d.esm.js';
4
+ export { t as ReactThreeFiber, s as _roots, q as act, n as addAfterEffect, m as addEffect, o as addTail, l as advance, i as applyProps, f as context, g as createPortal, a as createRoot, j as dispose, e as extend, p as getRootState, k as invalidate, h as reconciler, r as render, d as unmountComponentAtNode, x as useFrame, y as useGraph, z as useLoader, v as useStore, w as useThree } from '../../dist/index-c0771a1d.esm.js';
5
5
  import _extends from '@babel/runtime/helpers/esm/extends';
6
6
  import * as React from 'react';
7
7
  import mergeRefs from 'react-merge-refs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-three/fiber",
3
- "version": "8.0.11",
3
+ "version": "8.0.14",
4
4
  "description": "A React renderer for Threejs",
5
5
  "keywords": [
6
6
  "react",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@babel/runtime": "^7.17.8",
46
- "@types/react-reconciler": "^0.26.4",
46
+ "@types/react-reconciler": "^0.26.6",
47
47
  "react-merge-refs": "^1.1.0",
48
48
  "react-reconciler": "^0.27.0",
49
49
  "react-use-measure": "^2.1.1",