@react-three/fiber 8.0.24 → 8.0.27

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.27
4
+
5
+ ### Patch Changes
6
+
7
+ - 7940995: fix: resume on xrsession end, export internal events
8
+
9
+ ## 8.0.26
10
+
11
+ ### Patch Changes
12
+
13
+ - 7b6df9df: fix: infinite loop updating cam viewport
14
+
15
+ ## 8.0.25
16
+
17
+ ### Patch Changes
18
+
19
+ - b7cd0f42: update viewport on camera changes
20
+
3
21
  ## 8.0.24
4
22
 
5
23
  ### Patch Changes
@@ -6,5 +6,6 @@ export type { Intersection, Subscription, Dpr, Size, Viewport, RenderCallback, P
6
6
  export type { ThreeEvent, Events, EventManager, ComputeFunction } from './core/events';
7
7
  export type { ObjectMap, Camera } from './core/utils';
8
8
  export * from './web/Canvas';
9
+ export { createEvents } from './core/events';
9
10
  export { createPointerEvents as events } from './web/events';
10
11
  export * from './core';
@@ -1362,25 +1362,37 @@ const createStore = (invalidate, advance) => {
1362
1362
  }
1363
1363
  };
1364
1364
  });
1365
- const state = rootState.getState(); // Resize camera and renderer on changes to size and pixelratio
1366
-
1365
+ const state = rootState.getState();
1367
1366
  let oldSize = state.size;
1368
1367
  let oldDpr = state.viewport.dpr;
1368
+ let oldCamera = state.camera;
1369
1369
  rootState.subscribe(() => {
1370
1370
  const {
1371
1371
  camera,
1372
1372
  size,
1373
1373
  viewport,
1374
- gl
1375
- } = rootState.getState();
1374
+ gl,
1375
+ set
1376
+ } = rootState.getState(); // Resize camera and renderer on changes to size and pixelratio
1376
1377
 
1377
1378
  if (size !== oldSize || viewport.dpr !== oldDpr) {
1378
- updateCamera(camera, size); // Update renderer
1379
+ oldSize = size;
1380
+ oldDpr = viewport.dpr; // Update camera & renderer
1379
1381
 
1382
+ updateCamera(camera, size);
1380
1383
  gl.setPixelRatio(viewport.dpr);
1381
1384
  gl.setSize(size.width, size.height, size.updateStyle);
1382
- oldSize = size;
1383
- oldDpr = viewport.dpr;
1385
+ } // Update viewport once the camera changes
1386
+
1387
+
1388
+ if (camera !== oldCamera) {
1389
+ oldCamera = camera; // Update viewport
1390
+
1391
+ set(state => ({
1392
+ viewport: { ...state.viewport,
1393
+ ...state.viewport.getCurrentViewport(camera)
1394
+ }
1395
+ }));
1384
1396
  }
1385
1397
  }); // Invalidate on any change
1386
1398
 
@@ -1726,12 +1738,10 @@ function createRoot(canvas) {
1726
1738
 
1727
1739
 
1728
1740
  const handleSessionChange = () => {
1729
- const gl = store.getState().gl;
1730
- gl.xr.enabled = gl.xr.isPresenting; // @ts-ignore
1731
- // WebXRManager's signature is incorrect.
1732
- // See: https://github.com/pmndrs/react-three-fiber/pull/2017#discussion_r790134505
1733
-
1734
- gl.xr.setAnimationLoop(gl.xr.isPresenting ? handleXRFrame : null);
1741
+ const state = store.getState();
1742
+ state.gl.xr.enabled = state.gl.xr.isPresenting;
1743
+ state.gl.xr.setAnimationLoop(state.gl.xr.isPresenting ? handleXRFrame : null);
1744
+ if (!state.gl.xr.isPresenting) invalidate(state);
1735
1745
  }; // WebXR session manager
1736
1746
 
1737
1747
 
@@ -1389,25 +1389,37 @@ const createStore = (invalidate, advance) => {
1389
1389
  }
1390
1390
  };
1391
1391
  });
1392
- const state = rootState.getState(); // Resize camera and renderer on changes to size and pixelratio
1393
-
1392
+ const state = rootState.getState();
1394
1393
  let oldSize = state.size;
1395
1394
  let oldDpr = state.viewport.dpr;
1395
+ let oldCamera = state.camera;
1396
1396
  rootState.subscribe(() => {
1397
1397
  const {
1398
1398
  camera,
1399
1399
  size,
1400
1400
  viewport,
1401
- gl
1402
- } = rootState.getState();
1401
+ gl,
1402
+ set
1403
+ } = rootState.getState(); // Resize camera and renderer on changes to size and pixelratio
1403
1404
 
1404
1405
  if (size !== oldSize || viewport.dpr !== oldDpr) {
1405
- updateCamera(camera, size); // Update renderer
1406
+ oldSize = size;
1407
+ oldDpr = viewport.dpr; // Update camera & renderer
1406
1408
 
1409
+ updateCamera(camera, size);
1407
1410
  gl.setPixelRatio(viewport.dpr);
1408
1411
  gl.setSize(size.width, size.height, size.updateStyle);
1409
- oldSize = size;
1410
- oldDpr = viewport.dpr;
1412
+ } // Update viewport once the camera changes
1413
+
1414
+
1415
+ if (camera !== oldCamera) {
1416
+ oldCamera = camera; // Update viewport
1417
+
1418
+ set(state => ({
1419
+ viewport: { ...state.viewport,
1420
+ ...state.viewport.getCurrentViewport(camera)
1421
+ }
1422
+ }));
1411
1423
  }
1412
1424
  }); // Invalidate on any change
1413
1425
 
@@ -1753,12 +1765,10 @@ function createRoot(canvas) {
1753
1765
 
1754
1766
 
1755
1767
  const handleSessionChange = () => {
1756
- const gl = store.getState().gl;
1757
- gl.xr.enabled = gl.xr.isPresenting; // @ts-ignore
1758
- // WebXRManager's signature is incorrect.
1759
- // See: https://github.com/pmndrs/react-three-fiber/pull/2017#discussion_r790134505
1760
-
1761
- gl.xr.setAnimationLoop(gl.xr.isPresenting ? handleXRFrame : null);
1768
+ const state = store.getState();
1769
+ state.gl.xr.enabled = state.gl.xr.isPresenting;
1770
+ state.gl.xr.setAnimationLoop(state.gl.xr.isPresenting ? handleXRFrame : null);
1771
+ if (!state.gl.xr.isPresenting) invalidate(state);
1762
1772
  }; // WebXR session manager
1763
1773
 
1764
1774
 
@@ -1389,25 +1389,37 @@ const createStore = (invalidate, advance) => {
1389
1389
  }
1390
1390
  };
1391
1391
  });
1392
- const state = rootState.getState(); // Resize camera and renderer on changes to size and pixelratio
1393
-
1392
+ const state = rootState.getState();
1394
1393
  let oldSize = state.size;
1395
1394
  let oldDpr = state.viewport.dpr;
1395
+ let oldCamera = state.camera;
1396
1396
  rootState.subscribe(() => {
1397
1397
  const {
1398
1398
  camera,
1399
1399
  size,
1400
1400
  viewport,
1401
- gl
1402
- } = rootState.getState();
1401
+ gl,
1402
+ set
1403
+ } = rootState.getState(); // Resize camera and renderer on changes to size and pixelratio
1403
1404
 
1404
1405
  if (size !== oldSize || viewport.dpr !== oldDpr) {
1405
- updateCamera(camera, size); // Update renderer
1406
+ oldSize = size;
1407
+ oldDpr = viewport.dpr; // Update camera & renderer
1406
1408
 
1409
+ updateCamera(camera, size);
1407
1410
  gl.setPixelRatio(viewport.dpr);
1408
1411
  gl.setSize(size.width, size.height, size.updateStyle);
1409
- oldSize = size;
1410
- oldDpr = viewport.dpr;
1412
+ } // Update viewport once the camera changes
1413
+
1414
+
1415
+ if (camera !== oldCamera) {
1416
+ oldCamera = camera; // Update viewport
1417
+
1418
+ set(state => ({
1419
+ viewport: { ...state.viewport,
1420
+ ...state.viewport.getCurrentViewport(camera)
1421
+ }
1422
+ }));
1411
1423
  }
1412
1424
  }); // Invalidate on any change
1413
1425
 
@@ -1753,12 +1765,10 @@ function createRoot(canvas) {
1753
1765
 
1754
1766
 
1755
1767
  const handleSessionChange = () => {
1756
- const gl = store.getState().gl;
1757
- gl.xr.enabled = gl.xr.isPresenting; // @ts-ignore
1758
- // WebXRManager's signature is incorrect.
1759
- // See: https://github.com/pmndrs/react-three-fiber/pull/2017#discussion_r790134505
1760
-
1761
- gl.xr.setAnimationLoop(gl.xr.isPresenting ? handleXRFrame : null);
1768
+ const state = store.getState();
1769
+ state.gl.xr.enabled = state.gl.xr.isPresenting;
1770
+ state.gl.xr.setAnimationLoop(state.gl.xr.isPresenting ? handleXRFrame : null);
1771
+ if (!state.gl.xr.isPresenting) invalidate(state);
1762
1772
  }; // WebXR session manager
1763
1773
 
1764
1774
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./index-cc1b2b8b.cjs.dev.js');
5
+ var index = require('./index-acc8c265.cjs.dev.js');
6
6
  var _extends = require('@babel/runtime/helpers/extends');
7
7
  var React = require('react');
8
8
  var THREE = require('three');
@@ -241,6 +241,7 @@ exports.addTail = index.addTail;
241
241
  exports.advance = index.advance;
242
242
  exports.applyProps = index.applyProps;
243
243
  exports.context = index.context;
244
+ exports.createEvents = index.createEvents;
244
245
  exports.createPortal = index.createPortal;
245
246
  exports.createRoot = index.createRoot;
246
247
  exports.dispose = index.dispose;
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./index-fbc2ae01.cjs.prod.js');
5
+ var index = require('./index-c30de6b8.cjs.prod.js');
6
6
  var _extends = require('@babel/runtime/helpers/extends');
7
7
  var React = require('react');
8
8
  var THREE = require('three');
@@ -241,6 +241,7 @@ exports.addTail = index.addTail;
241
241
  exports.advance = index.advance;
242
242
  exports.applyProps = index.applyProps;
243
243
  exports.context = index.context;
244
+ exports.createEvents = index.createEvents;
244
245
  exports.createPortal = index.createPortal;
245
246
  exports.createRoot = index.createRoot;
246
247
  exports.dispose = index.dispose;
@@ -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-d1db558e.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-d1db558e.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-4f1a8e2f.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, c as createEvents, 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-4f1a8e2f.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';
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('../../dist/index-cc1b2b8b.cjs.dev.js');
5
+ var index = require('../../dist/index-acc8c265.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('../../dist/index-fbc2ae01.cjs.prod.js');
5
+ var index = require('../../dist/index-c30de6b8.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, d as unmountComponentAtNode } from '../../dist/index-d1db558e.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 '../../dist/index-d1db558e.esm.js';
1
+ 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-4f1a8e2f.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 '../../dist/index-4f1a8e2f.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';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-three/fiber",
3
- "version": "8.0.24",
3
+ "version": "8.0.27",
4
4
  "description": "A React renderer for Threejs",
5
5
  "keywords": [
6
6
  "react",