@react-three/fiber 8.0.12 → 8.0.15

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.15
4
+
5
+ ### Patch Changes
6
+
7
+ - c4715d5f: allow invalidate to preempt more than 1 frame
8
+
9
+ ## 8.0.14
10
+
11
+ ### Patch Changes
12
+
13
+ - 5559a119: Add support for recoverable errors
14
+
15
+ ## 8.0.13
16
+
17
+ ### Patch Changes
18
+
19
+ - 9d77d8e2: fix: detach attribute removal
20
+
3
21
  ## 8.0.12
4
22
 
5
23
  ### Patch Changes
@@ -9,7 +9,7 @@ import { addEffect, addAfterEffect, addTail } from './loop';
9
9
  import { EventManager, ComputeFunction } from './events';
10
10
  import { dispose, getRootState, Camera } from './utils';
11
11
  declare const roots: Map<Element, Root>;
12
- declare const invalidate: (state?: RootState | undefined) => void, advance: (timestamp: number, runGlobalEffects?: boolean, state?: RootState | undefined, frame?: THREE.XRFrame | undefined) => void;
12
+ declare const invalidate: (state?: RootState | undefined, frames?: number) => void, advance: (timestamp: number, runGlobalEffects?: boolean, state?: RootState | undefined, frame?: THREE.XRFrame | undefined) => void;
13
13
  declare const reconciler: import("react-reconciler").Reconciler<unknown, unknown, unknown, unknown, unknown>, applyProps: typeof import("./utils").applyProps;
14
14
  declare type Properties<T> = Pick<T, {
15
15
  [K in keyof T]: T[K] extends (_: any) => any ? never : K;
@@ -7,7 +7,7 @@ export declare const addAfterEffect: (callback: GlobalRenderCallback) => () => v
7
7
  export declare const addTail: (callback: GlobalRenderCallback) => () => void;
8
8
  export declare function createLoop<TCanvas>(roots: Map<TCanvas, Root>): {
9
9
  loop: (timestamp: number) => void;
10
- invalidate: (state?: RootState | undefined) => void;
10
+ invalidate: (state?: RootState | undefined, frames?: number) => void;
11
11
  advance: (timestamp: number, runGlobalEffects?: boolean, state?: RootState | undefined, frame?: THREE.XRFrame | undefined) => void;
12
12
  };
13
13
  export {};
@@ -77,7 +77,7 @@ export declare type RootState = {
77
77
  viewport: Viewport & {
78
78
  getCurrentViewport: (camera?: Camera, target?: THREE.Vector3 | Parameters<THREE.Vector3['set']>, size?: Size) => Omit<Viewport, 'dpr' | 'initialDpr'>;
79
79
  };
80
- invalidate: () => void;
80
+ invalidate: (frames?: number) => void;
81
81
  advance: (timestamp: number, runGlobalEffects?: boolean) => void;
82
82
  setEvents: (events: Partial<EventManager<any>>) => void;
83
83
  setSize: (width: number, height: number) => void;
@@ -88,5 +88,5 @@ export declare type RootState = {
88
88
  internal: InternalState;
89
89
  };
90
90
  declare const context: React.Context<UseBoundStore<RootState, StoreApi<RootState>>>;
91
- declare const createStore: (invalidate: (state?: RootState | undefined) => void, advance: (timestamp: number, runGlobalEffects?: boolean | undefined, state?: RootState | undefined, frame?: THREE.XRFrame | undefined) => void) => UseBoundStore<RootState>;
91
+ declare const createStore: (invalidate: (state?: RootState | undefined, frames?: number | undefined) => void, advance: (timestamp: number, runGlobalEffects?: boolean | undefined, state?: RootState | undefined, frame?: THREE.XRFrame | undefined) => void) => UseBoundStore<RootState>;
92
92
  export { createStore, context };
@@ -228,7 +228,10 @@ function detach(parent, child, type) {
228
228
  target,
229
229
  key
230
230
  } = resolve(parent, type);
231
- 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;
232
235
  } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);
233
236
 
234
237
  (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;
@@ -870,7 +873,7 @@ function createRenderer(roots, getEventPriority) {
870
873
  const target = catalogue[name];
871
874
 
872
875
  if (!target) {
873
- 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`;
874
877
  } // Throw if an object or literal was passed for args
875
878
 
876
879
 
@@ -1139,7 +1142,6 @@ function createRenderer(roots, getEventPriority) {
1139
1142
  shouldSetTextContent: () => false,
1140
1143
  clearContainer: () => false,
1141
1144
  detachDeletedInstance: () => {},
1142
- createTextInstance: () => {},
1143
1145
 
1144
1146
  hideInstance(instance) {
1145
1147
  var _instance$__r3f5;
@@ -1167,10 +1169,11 @@ function createRenderer(roots, getEventPriority) {
1167
1169
  invalidateInstance(instance);
1168
1170
  },
1169
1171
 
1172
+ createTextInstance: () => {},
1170
1173
  hideTextInstance: () => {
1171
1174
  throw new Error('Text is not allowed in the R3F tree.');
1172
1175
  },
1173
- // prettier-ignore
1176
+ unhideTextInstance: () => {},
1174
1177
  getCurrentEventPriority: () => getEventPriority ? getEventPriority() : constants.DefaultEventPriority,
1175
1178
  // @ts-ignore
1176
1179
  now: typeof performance !== 'undefined' && is.fun(performance.now) ? performance.now : is.fun(Date.now) ? Date.now : undefined,
@@ -1252,7 +1255,7 @@ const createStore = (invalidate, advance) => {
1252
1255
  connected: false
1253
1256
  },
1254
1257
  xr: null,
1255
- invalidate: () => invalidate(get()),
1258
+ invalidate: (frames = 1) => invalidate(get(), frames),
1256
1259
  advance: (timestamp, runGlobalEffects) => advance(timestamp, runGlobalEffects, get()),
1257
1260
  legacy: false,
1258
1261
  linear: false,
@@ -1504,13 +1507,13 @@ function createLoop(roots) {
1504
1507
  }
1505
1508
  }
1506
1509
 
1507
- function invalidate(state) {
1510
+ function invalidate(state, frames = 1) {
1508
1511
  var _state$gl$xr2;
1509
1512
 
1510
- if (!state) return roots.forEach(root => invalidate(root.store.getState()));
1513
+ if (!state) return roots.forEach(root => invalidate(root.store.getState()), frames);
1511
1514
  if ((_state$gl$xr2 = state.gl.xr) != null && _state$gl$xr2.isPresenting || !state.internal.active || state.frameloop === 'never') return; // Increase frames, do not go higher than 60
1512
1515
 
1513
- state.internal.frames = Math.min(60, state.internal.frames + 1); // If the render-loop isn't active, start it
1516
+ state.internal.frames = Math.min(60, state.internal.frames + frames); // If the render-loop isn't active, start it
1514
1517
 
1515
1518
  if (!running) {
1516
1519
  running = true;
@@ -1655,11 +1658,17 @@ function createRoot(canvas) {
1655
1658
  let prevRoot = roots.get(canvas);
1656
1659
  let prevFiber = prevRoot == null ? void 0 : prevRoot.fiber;
1657
1660
  let prevStore = prevRoot == null ? void 0 : prevRoot.store;
1658
- if (prevRoot) console.warn('R3F.createRoot should only be called once!'); // Create store
1661
+ if (prevRoot) console.warn('R3F.createRoot should only be called once!'); // Report when an error was detected in a previous render
1662
+ // https://github.com/pmndrs/react-three-fiber/pull/2261
1663
+
1664
+ const logRecoverableError = typeof reportError === 'function' ? // In modern browsers, reportError will dispatch an error event,
1665
+ // emulating an uncaught JavaScript error.
1666
+ reportError : // In older browsers and test environments, fallback to console.error.
1667
+ console.error; // Create store
1659
1668
 
1660
1669
  const store = prevStore || createStore(invalidate, advance); // Create renderer
1661
1670
 
1662
- const fiber = prevFiber || reconciler.createContainer(store, constants.ConcurrentRoot, false, null); // Map it
1671
+ const fiber = prevFiber || reconciler.createContainer(store, constants.ConcurrentRoot, null, false, null, null, logRecoverableError, null); // Map it
1663
1672
 
1664
1673
  if (!prevRoot) roots.set(canvas, {
1665
1674
  fiber,
@@ -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;
@@ -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,
@@ -1225,7 +1228,7 @@ const createStore = (invalidate, advance) => {
1225
1228
  connected: false
1226
1229
  },
1227
1230
  xr: null,
1228
- invalidate: () => invalidate(get()),
1231
+ invalidate: (frames = 1) => invalidate(get(), frames),
1229
1232
  advance: (timestamp, runGlobalEffects) => advance(timestamp, runGlobalEffects, get()),
1230
1233
  legacy: false,
1231
1234
  linear: false,
@@ -1477,13 +1480,13 @@ function createLoop(roots) {
1477
1480
  }
1478
1481
  }
1479
1482
 
1480
- function invalidate(state) {
1483
+ function invalidate(state, frames = 1) {
1481
1484
  var _state$gl$xr2;
1482
1485
 
1483
- if (!state) return roots.forEach(root => invalidate(root.store.getState()));
1486
+ if (!state) return roots.forEach(root => invalidate(root.store.getState()), frames);
1484
1487
  if ((_state$gl$xr2 = state.gl.xr) != null && _state$gl$xr2.isPresenting || !state.internal.active || state.frameloop === 'never') return; // Increase frames, do not go higher than 60
1485
1488
 
1486
- state.internal.frames = Math.min(60, state.internal.frames + 1); // If the render-loop isn't active, start it
1489
+ state.internal.frames = Math.min(60, state.internal.frames + frames); // If the render-loop isn't active, start it
1487
1490
 
1488
1491
  if (!running) {
1489
1492
  running = true;
@@ -1628,11 +1631,17 @@ function createRoot(canvas) {
1628
1631
  let prevRoot = roots.get(canvas);
1629
1632
  let prevFiber = prevRoot == null ? void 0 : prevRoot.fiber;
1630
1633
  let prevStore = prevRoot == null ? void 0 : prevRoot.store;
1631
- if (prevRoot) console.warn('R3F.createRoot should only be called once!'); // Create store
1634
+ if (prevRoot) console.warn('R3F.createRoot should only be called once!'); // Report when an error was detected in a previous render
1635
+ // https://github.com/pmndrs/react-three-fiber/pull/2261
1636
+
1637
+ const logRecoverableError = typeof reportError === 'function' ? // In modern browsers, reportError will dispatch an error event,
1638
+ // emulating an uncaught JavaScript error.
1639
+ reportError : // In older browsers and test environments, fallback to console.error.
1640
+ console.error; // Create store
1632
1641
 
1633
1642
  const store = prevStore || createStore(invalidate, advance); // Create renderer
1634
1643
 
1635
- const fiber = prevFiber || reconciler.createContainer(store, ConcurrentRoot, false, null); // Map it
1644
+ const fiber = prevFiber || reconciler.createContainer(store, ConcurrentRoot, null, false, null, null, logRecoverableError, null); // Map it
1636
1645
 
1637
1646
  if (!prevRoot) roots.set(canvas, {
1638
1647
  fiber,
@@ -228,7 +228,10 @@ function detach(parent, child, type) {
228
228
  target,
229
229
  key
230
230
  } = resolve(parent, type);
231
- 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;
232
235
  } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);
233
236
 
234
237
  (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;
@@ -870,7 +873,7 @@ function createRenderer(roots, getEventPriority) {
870
873
  const target = catalogue[name];
871
874
 
872
875
  if (!target) {
873
- 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`;
874
877
  } // Throw if an object or literal was passed for args
875
878
 
876
879
 
@@ -1139,7 +1142,6 @@ function createRenderer(roots, getEventPriority) {
1139
1142
  shouldSetTextContent: () => false,
1140
1143
  clearContainer: () => false,
1141
1144
  detachDeletedInstance: () => {},
1142
- createTextInstance: () => {},
1143
1145
 
1144
1146
  hideInstance(instance) {
1145
1147
  var _instance$__r3f5;
@@ -1167,10 +1169,11 @@ function createRenderer(roots, getEventPriority) {
1167
1169
  invalidateInstance(instance);
1168
1170
  },
1169
1171
 
1172
+ createTextInstance: () => {},
1170
1173
  hideTextInstance: () => {
1171
1174
  throw new Error('Text is not allowed in the R3F tree.');
1172
1175
  },
1173
- // prettier-ignore
1176
+ unhideTextInstance: () => {},
1174
1177
  getCurrentEventPriority: () => getEventPriority ? getEventPriority() : constants.DefaultEventPriority,
1175
1178
  // @ts-ignore
1176
1179
  now: typeof performance !== 'undefined' && is.fun(performance.now) ? performance.now : is.fun(Date.now) ? Date.now : undefined,
@@ -1252,7 +1255,7 @@ const createStore = (invalidate, advance) => {
1252
1255
  connected: false
1253
1256
  },
1254
1257
  xr: null,
1255
- invalidate: () => invalidate(get()),
1258
+ invalidate: (frames = 1) => invalidate(get(), frames),
1256
1259
  advance: (timestamp, runGlobalEffects) => advance(timestamp, runGlobalEffects, get()),
1257
1260
  legacy: false,
1258
1261
  linear: false,
@@ -1504,13 +1507,13 @@ function createLoop(roots) {
1504
1507
  }
1505
1508
  }
1506
1509
 
1507
- function invalidate(state) {
1510
+ function invalidate(state, frames = 1) {
1508
1511
  var _state$gl$xr2;
1509
1512
 
1510
- if (!state) return roots.forEach(root => invalidate(root.store.getState()));
1513
+ if (!state) return roots.forEach(root => invalidate(root.store.getState()), frames);
1511
1514
  if ((_state$gl$xr2 = state.gl.xr) != null && _state$gl$xr2.isPresenting || !state.internal.active || state.frameloop === 'never') return; // Increase frames, do not go higher than 60
1512
1515
 
1513
- state.internal.frames = Math.min(60, state.internal.frames + 1); // If the render-loop isn't active, start it
1516
+ state.internal.frames = Math.min(60, state.internal.frames + frames); // If the render-loop isn't active, start it
1514
1517
 
1515
1518
  if (!running) {
1516
1519
  running = true;
@@ -1655,11 +1658,17 @@ function createRoot(canvas) {
1655
1658
  let prevRoot = roots.get(canvas);
1656
1659
  let prevFiber = prevRoot == null ? void 0 : prevRoot.fiber;
1657
1660
  let prevStore = prevRoot == null ? void 0 : prevRoot.store;
1658
- if (prevRoot) console.warn('R3F.createRoot should only be called once!'); // Create store
1661
+ if (prevRoot) console.warn('R3F.createRoot should only be called once!'); // Report when an error was detected in a previous render
1662
+ // https://github.com/pmndrs/react-three-fiber/pull/2261
1663
+
1664
+ const logRecoverableError = typeof reportError === 'function' ? // In modern browsers, reportError will dispatch an error event,
1665
+ // emulating an uncaught JavaScript error.
1666
+ reportError : // In older browsers and test environments, fallback to console.error.
1667
+ console.error; // Create store
1659
1668
 
1660
1669
  const store = prevStore || createStore(invalidate, advance); // Create renderer
1661
1670
 
1662
- const fiber = prevFiber || reconciler.createContainer(store, constants.ConcurrentRoot, false, null); // Map it
1671
+ const fiber = prevFiber || reconciler.createContainer(store, constants.ConcurrentRoot, null, false, null, null, logRecoverableError, null); // Map it
1663
1672
 
1664
1673
  if (!prevRoot) roots.set(canvas, {
1665
1674
  fiber,
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./index-f67eaa0c.cjs.dev.js');
5
+ var index = require('./index-606d3385.cjs.dev.js');
6
6
  var _extends = require('@babel/runtime/helpers/extends');
7
7
  var React = require('react');
8
8
  var THREE = require('three');
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./index-e322e5c8.cjs.prod.js');
5
+ var index = require('./index-05d06e15.cjs.prod.js');
6
6
  var _extends = require('@babel/runtime/helpers/extends');
7
7
  var React = require('react');
8
8
  var THREE = require('three');
@@ -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-38c121a8.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-38c121a8.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-208291a3.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-208291a3.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-f67eaa0c.cjs.dev.js');
7
+ var index = require('../../dist/index-606d3385.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');
@@ -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-e322e5c8.cjs.prod.js');
7
+ var index = require('../../dist/index-05d06e15.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');
@@ -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-38c121a8.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-38c121a8.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-208291a3.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-208291a3.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.12",
3
+ "version": "8.0.15",
4
4
  "description": "A React renderer for Threejs",
5
5
  "keywords": [
6
6
  "react",