@react-three/fiber 8.0.6 → 8.0.7

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,11 @@
1
1
  # @react-three/fiber
2
2
 
3
+ ## 8.0.7
4
+
5
+ ### Patch Changes
6
+
7
+ - 01ceb7e: remove undefined keys on detach instead of letting them hang
8
+
3
9
  ## 8.0.6
4
10
 
5
11
  ### Patch Changes
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import * as THREE from 'three';
3
2
  import { EventHandlers } from './core/events';
4
3
  import { AttachType } from './core/renderer';
@@ -211,7 +211,10 @@ function detach(parent, child, type) {
211
211
  target,
212
212
  key
213
213
  } = resolve(parent, type);
214
- target[key] = child.__r3f.previousAttach;
214
+ const previous = child.__r3f.previousAttach; // When the previous value was undefined, it means the value was never set to begin with
215
+
216
+ if (previous === undefined) delete target[key]; // Otherwise set the previous value
217
+ else target[key] = previous;
215
218
  } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);
216
219
 
217
220
  (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;
@@ -304,9 +307,11 @@ function applyProps$1(instance, data) {
304
307
  // use the prop constructor to find the default it should be
305
308
  value = new targetProp.constructor(...memoized.args);
306
309
  } else if (currentInstance.constructor) {
310
+ var _currentInstance$__r, _currentInstance$__r2;
311
+
307
312
  // create a blank slate of the instance and copy the particular parameter.
308
313
  // @ts-ignore
309
- const defaultClassCall = new currentInstance.constructor(...currentInstance.__r3f.memoizedProps.args);
314
+ const defaultClassCall = new currentInstance.constructor(...((_currentInstance$__r = (_currentInstance$__r2 = currentInstance.__r3f) == null ? void 0 : _currentInstance$__r2.memoizedProps.args) != null ? _currentInstance$__r : []));
310
315
  value = defaultClassCall[targetProp]; // destory the instance
311
316
 
312
317
  if (defaultClassCall.dispose) defaultClassCall.dispose(); // instance does not have constructor, just set it to 0
@@ -1406,10 +1411,11 @@ function run(effects, timestamp) {
1406
1411
 
1407
1412
  let subscribers;
1408
1413
  let subscription;
1414
+ let delta;
1409
1415
 
1410
1416
  function render$1(timestamp, state, frame) {
1411
1417
  // Run local effects
1412
- let delta = state.clock.getDelta(); // In frameloop='never' mode, clock times are updated using the provided timestamp
1418
+ delta = state.clock.getDelta(); // In frameloop='never' mode, clock times are updated using the provided timestamp
1413
1419
 
1414
1420
  if (state.frameloop === 'never' && typeof timestamp === 'number') {
1415
1421
  delta = timestamp - state.clock.elapsedTime;
@@ -211,7 +211,10 @@ function detach(parent, child, type) {
211
211
  target,
212
212
  key
213
213
  } = resolve(parent, type);
214
- target[key] = child.__r3f.previousAttach;
214
+ const previous = child.__r3f.previousAttach; // When the previous value was undefined, it means the value was never set to begin with
215
+
216
+ if (previous === undefined) delete target[key]; // Otherwise set the previous value
217
+ else target[key] = previous;
215
218
  } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);
216
219
 
217
220
  (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;
@@ -304,9 +307,11 @@ function applyProps$1(instance, data) {
304
307
  // use the prop constructor to find the default it should be
305
308
  value = new targetProp.constructor(...memoized.args);
306
309
  } else if (currentInstance.constructor) {
310
+ var _currentInstance$__r, _currentInstance$__r2;
311
+
307
312
  // create a blank slate of the instance and copy the particular parameter.
308
313
  // @ts-ignore
309
- const defaultClassCall = new currentInstance.constructor(...currentInstance.__r3f.memoizedProps.args);
314
+ const defaultClassCall = new currentInstance.constructor(...((_currentInstance$__r = (_currentInstance$__r2 = currentInstance.__r3f) == null ? void 0 : _currentInstance$__r2.memoizedProps.args) != null ? _currentInstance$__r : []));
310
315
  value = defaultClassCall[targetProp]; // destory the instance
311
316
 
312
317
  if (defaultClassCall.dispose) defaultClassCall.dispose(); // instance does not have constructor, just set it to 0
@@ -1406,10 +1411,11 @@ function run(effects, timestamp) {
1406
1411
 
1407
1412
  let subscribers;
1408
1413
  let subscription;
1414
+ let delta;
1409
1415
 
1410
1416
  function render$1(timestamp, state, frame) {
1411
1417
  // Run local effects
1412
- let delta = state.clock.getDelta(); // In frameloop='never' mode, clock times are updated using the provided timestamp
1418
+ delta = state.clock.getDelta(); // In frameloop='never' mode, clock times are updated using the provided timestamp
1413
1419
 
1414
1420
  if (state.frameloop === 'never' && typeof timestamp === 'number') {
1415
1421
  delta = timestamp - state.clock.elapsedTime;
@@ -182,7 +182,10 @@ function detach(parent, child, type) {
182
182
  target,
183
183
  key
184
184
  } = resolve(parent, type);
185
- target[key] = child.__r3f.previousAttach;
185
+ const previous = child.__r3f.previousAttach; // When the previous value was undefined, it means the value was never set to begin with
186
+
187
+ if (previous === undefined) delete target[key]; // Otherwise set the previous value
188
+ else target[key] = previous;
186
189
  } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);
187
190
 
188
191
  (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;
@@ -275,9 +278,11 @@ function applyProps$1(instance, data) {
275
278
  // use the prop constructor to find the default it should be
276
279
  value = new targetProp.constructor(...memoized.args);
277
280
  } else if (currentInstance.constructor) {
281
+ var _currentInstance$__r, _currentInstance$__r2;
282
+
278
283
  // create a blank slate of the instance and copy the particular parameter.
279
284
  // @ts-ignore
280
- const defaultClassCall = new currentInstance.constructor(...currentInstance.__r3f.memoizedProps.args);
285
+ const defaultClassCall = new currentInstance.constructor(...((_currentInstance$__r = (_currentInstance$__r2 = currentInstance.__r3f) == null ? void 0 : _currentInstance$__r2.memoizedProps.args) != null ? _currentInstance$__r : []));
281
286
  value = defaultClassCall[targetProp]; // destory the instance
282
287
 
283
288
  if (defaultClassCall.dispose) defaultClassCall.dispose(); // instance does not have constructor, just set it to 0
@@ -1377,10 +1382,11 @@ function run(effects, timestamp) {
1377
1382
 
1378
1383
  let subscribers;
1379
1384
  let subscription;
1385
+ let delta;
1380
1386
 
1381
1387
  function render$1(timestamp, state, frame) {
1382
1388
  // Run local effects
1383
- let delta = state.clock.getDelta(); // In frameloop='never' mode, clock times are updated using the provided timestamp
1389
+ delta = state.clock.getDelta(); // In frameloop='never' mode, clock times are updated using the provided timestamp
1384
1390
 
1385
1391
  if (state.frameloop === 'never' && typeof timestamp === 'number') {
1386
1392
  delta = timestamp - state.clock.elapsedTime;
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./index-0076cbd6.cjs.dev.js');
5
+ var index = require('./index-75d39ab1.cjs.dev.js');
6
6
  var _extends = require('@babel/runtime/helpers/extends');
7
7
  var React = require('react');
8
8
  var THREE = require('three');
@@ -76,15 +76,13 @@ function createPointerEvents(store) {
76
76
  var _events$handlers;
77
77
 
78
78
  const {
79
- set,
79
+ setEvents,
80
80
  events
81
81
  } = store.getState();
82
82
  events.disconnect == null ? void 0 : events.disconnect();
83
- set(state => ({
84
- events: { ...state.events,
85
- connected: target
86
- }
87
- }));
83
+ setEvents({
84
+ connected: target
85
+ });
88
86
  Object.entries((_events$handlers = events == null ? void 0 : events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {
89
87
  const [eventName, passive] = DOM_EVENTS[name];
90
88
  target.addEventListener(eventName, event, {
@@ -94,7 +92,7 @@ function createPointerEvents(store) {
94
92
  },
95
93
  disconnect: () => {
96
94
  const {
97
- set,
95
+ setEvents,
98
96
  events
99
97
  } = store.getState();
100
98
 
@@ -107,11 +105,9 @@ function createPointerEvents(store) {
107
105
  events.connected.removeEventListener(eventName, event);
108
106
  }
109
107
  });
110
- set(state => ({
111
- events: { ...state.events,
112
- connected: undefined
113
- }
114
- }));
108
+ setEvents({
109
+ connected: undefined
110
+ });
115
111
  }
116
112
  }
117
113
  };
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./index-0e758026.cjs.prod.js');
5
+ var index = require('./index-4fb4daff.cjs.prod.js');
6
6
  var _extends = require('@babel/runtime/helpers/extends');
7
7
  var React = require('react');
8
8
  var THREE = require('three');
@@ -76,15 +76,13 @@ function createPointerEvents(store) {
76
76
  var _events$handlers;
77
77
 
78
78
  const {
79
- set,
79
+ setEvents,
80
80
  events
81
81
  } = store.getState();
82
82
  events.disconnect == null ? void 0 : events.disconnect();
83
- set(state => ({
84
- events: { ...state.events,
85
- connected: target
86
- }
87
- }));
83
+ setEvents({
84
+ connected: target
85
+ });
88
86
  Object.entries((_events$handlers = events == null ? void 0 : events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {
89
87
  const [eventName, passive] = DOM_EVENTS[name];
90
88
  target.addEventListener(eventName, event, {
@@ -94,7 +92,7 @@ function createPointerEvents(store) {
94
92
  },
95
93
  disconnect: () => {
96
94
  const {
97
- set,
95
+ setEvents,
98
96
  events
99
97
  } = store.getState();
100
98
 
@@ -107,11 +105,9 @@ function createPointerEvents(store) {
107
105
  events.connected.removeEventListener(eventName, event);
108
106
  }
109
107
  });
110
- set(state => ({
111
- events: { ...state.events,
112
- connected: undefined
113
- }
114
- }));
108
+ setEvents({
109
+ connected: undefined
110
+ });
115
111
  }
116
112
  }
117
113
  };
@@ -1,5 +1,5 @@
1
- import { c as createEvents, e as extend, u as useMemoizedFn, p as pick, o as omit, a as createRoot, b as unmountComponentAtNode } from './index-91900b41.esm.js';
2
- export { t as ReactThreeFiber, v as _roots, s as act, m as addAfterEffect, l as addEffect, n as addTail, k as advance, h as applyProps, d as context, f as createPortal, a as createRoot, i as dispose, e as extend, q as getRootState, j as invalidate, g as reconciler, r as render, b as unmountComponentAtNode, y as useFrame, z as useGraph, A as useLoader, u as useMemoizedFn, w as useStore, x as useThree } from './index-91900b41.esm.js';
1
+ import { c as createEvents, e as extend, u as useMemoizedFn, p as pick, o as omit, a as createRoot, b as unmountComponentAtNode } from './index-e42f8ac9.esm.js';
2
+ export { t as ReactThreeFiber, v as _roots, s as act, m as addAfterEffect, l as addEffect, n as addTail, k as advance, h as applyProps, d as context, f as createPortal, a as createRoot, i as dispose, e as extend, q as getRootState, j as invalidate, g as reconciler, r as render, b as unmountComponentAtNode, y as useFrame, z as useGraph, A as useLoader, u as useMemoizedFn, w as useStore, x as useThree } from './index-e42f8ac9.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';
@@ -46,15 +46,13 @@ function createPointerEvents(store) {
46
46
  var _events$handlers;
47
47
 
48
48
  const {
49
- set,
49
+ setEvents,
50
50
  events
51
51
  } = store.getState();
52
52
  events.disconnect == null ? void 0 : events.disconnect();
53
- set(state => ({
54
- events: { ...state.events,
55
- connected: target
56
- }
57
- }));
53
+ setEvents({
54
+ connected: target
55
+ });
58
56
  Object.entries((_events$handlers = events == null ? void 0 : events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {
59
57
  const [eventName, passive] = DOM_EVENTS[name];
60
58
  target.addEventListener(eventName, event, {
@@ -64,7 +62,7 @@ function createPointerEvents(store) {
64
62
  },
65
63
  disconnect: () => {
66
64
  const {
67
- set,
65
+ setEvents,
68
66
  events
69
67
  } = store.getState();
70
68
 
@@ -77,11 +75,9 @@ function createPointerEvents(store) {
77
75
  events.connected.removeEventListener(eventName, event);
78
76
  }
79
77
  });
80
- set(state => ({
81
- events: { ...state.events,
82
- connected: undefined
83
- }
84
- }));
78
+ setEvents({
79
+ connected: undefined
80
+ });
85
81
  }
86
82
  }
87
83
  };
@@ -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-0076cbd6.cjs.dev.js');
7
+ var index = require('../../dist/index-75d39ab1.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');
@@ -94,32 +94,28 @@ function createTouchEvents(store) {
94
94
  }), {}),
95
95
  connect: () => {
96
96
  const {
97
- set,
97
+ setEvents,
98
98
  events
99
99
  } = store.getState();
100
100
  events.disconnect == null ? void 0 : events.disconnect();
101
101
  const connected = new Pressability__default['default'](events == null ? void 0 : events.handlers);
102
- set(state => ({
103
- events: { ...state.events,
104
- connected
105
- }
106
- }));
102
+ setEvents({
103
+ connected
104
+ });
107
105
  const handlers = connected.getEventHandlers();
108
106
  return handlers;
109
107
  },
110
108
  disconnect: () => {
111
109
  const {
112
- set,
110
+ setEvents,
113
111
  events
114
112
  } = store.getState();
115
113
 
116
114
  if (events.connected) {
117
115
  events.connected.reset();
118
- set(state => ({
119
- events: { ...state.events,
120
- connected: undefined
121
- }
122
- }));
116
+ setEvents({
117
+ connected: undefined
118
+ });
123
119
  }
124
120
  }
125
121
  };
@@ -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-0e758026.cjs.prod.js');
7
+ var index = require('../../dist/index-4fb4daff.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');
@@ -94,32 +94,28 @@ function createTouchEvents(store) {
94
94
  }), {}),
95
95
  connect: () => {
96
96
  const {
97
- set,
97
+ setEvents,
98
98
  events
99
99
  } = store.getState();
100
100
  events.disconnect == null ? void 0 : events.disconnect();
101
101
  const connected = new Pressability__default['default'](events == null ? void 0 : events.handlers);
102
- set(state => ({
103
- events: { ...state.events,
104
- connected
105
- }
106
- }));
102
+ setEvents({
103
+ connected
104
+ });
107
105
  const handlers = connected.getEventHandlers();
108
106
  return handlers;
109
107
  },
110
108
  disconnect: () => {
111
109
  const {
112
- set,
110
+ setEvents,
113
111
  events
114
112
  } = store.getState();
115
113
 
116
114
  if (events.connected) {
117
115
  events.connected.reset();
118
- set(state => ({
119
- events: { ...state.events,
120
- connected: undefined
121
- }
122
- }));
116
+ setEvents({
117
+ connected: undefined
118
+ });
123
119
  }
124
120
  }
125
121
  };
@@ -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 useMemoizedFn, p as pick, o as omit, a as createRoot, b as unmountComponentAtNode } from '../../dist/index-91900b41.esm.js';
4
- export { t as ReactThreeFiber, v as _roots, s as act, m as addAfterEffect, l as addEffect, n as addTail, k as advance, h as applyProps, d as context, f as createPortal, a as createRoot, i as dispose, e as extend, q as getRootState, j as invalidate, g as reconciler, r as render, b as unmountComponentAtNode, y as useFrame, z as useGraph, A as useLoader, u as useMemoizedFn, w as useStore, x as useThree } from '../../dist/index-91900b41.esm.js';
3
+ import { c as createEvents, e as extend, u as useMemoizedFn, p as pick, o as omit, a as createRoot, b as unmountComponentAtNode } from '../../dist/index-e42f8ac9.esm.js';
4
+ export { t as ReactThreeFiber, v as _roots, s as act, m as addAfterEffect, l as addEffect, n as addTail, k as advance, h as applyProps, d as context, f as createPortal, a as createRoot, i as dispose, e as extend, q as getRootState, j as invalidate, g as reconciler, r as render, b as unmountComponentAtNode, y as useFrame, z as useGraph, A as useLoader, u as useMemoizedFn, w as useStore, x as useThree } from '../../dist/index-e42f8ac9.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';
@@ -64,32 +64,28 @@ function createTouchEvents(store) {
64
64
  }), {}),
65
65
  connect: () => {
66
66
  const {
67
- set,
67
+ setEvents,
68
68
  events
69
69
  } = store.getState();
70
70
  events.disconnect == null ? void 0 : events.disconnect();
71
71
  const connected = new Pressability(events == null ? void 0 : events.handlers);
72
- set(state => ({
73
- events: { ...state.events,
74
- connected
75
- }
76
- }));
72
+ setEvents({
73
+ connected
74
+ });
77
75
  const handlers = connected.getEventHandlers();
78
76
  return handlers;
79
77
  },
80
78
  disconnect: () => {
81
79
  const {
82
- set,
80
+ setEvents,
83
81
  events
84
82
  } = store.getState();
85
83
 
86
84
  if (events.connected) {
87
85
  events.connected.reset();
88
- set(state => ({
89
- events: { ...state.events,
90
- connected: undefined
91
- }
92
- }));
86
+ setEvents({
87
+ connected: undefined
88
+ });
93
89
  }
94
90
  }
95
91
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-three/fiber",
3
- "version": "8.0.6",
3
+ "version": "8.0.7",
4
4
  "description": "A React renderer for Threejs",
5
5
  "keywords": [
6
6
  "react",