@react-three/fiber 8.17.8 → 8.17.10

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,17 @@
1
1
  # @react-three/fiber
2
2
 
3
+ ## 8.17.10
4
+
5
+ ### Patch Changes
6
+
7
+ - d1a072ac: fix: ThreeEvent should not include initMouseEvent
8
+
9
+ ## 8.17.9
10
+
11
+ ### Patch Changes
12
+
13
+ - f34de655: fix: add orientation handling
14
+
3
15
  ## 8.17.8
4
16
 
5
17
  ### Patch Changes
@@ -1,9 +1,9 @@
1
1
  import * as THREE from 'three';
2
2
  import { EventHandlers } from './core/events';
3
3
  import { AttachType } from './core/renderer';
4
- export declare type Properties<T> = Pick<T, {
5
- [K in keyof T]: T[K] extends (_: any) => any ? never : K;
6
- }[keyof T]>;
4
+ export declare type Properties<T> = {
5
+ [K in keyof T as T[K] extends (...args: Array<any>) => any ? never : K]: T[K];
6
+ };
7
7
  export declare type NonFunctionKeys<T> = {
8
8
  [K in keyof T]-?: T[K] extends Function ? never : K;
9
9
  }[keyof T];
@@ -245,8 +245,8 @@ function createRenderer(_roots, _getEventPriority) {
245
245
  });
246
246
  }
247
247
 
248
- // Don't handle text instances, warn on undefined behavior
249
- const handleTextInstance = () => console.warn('Text is not allowed in the R3F tree! This could be stray whitespace or characters.');
248
+ // Don't handle text instances, make it no-op
249
+ const handleTextInstance = () => {};
250
250
  const reconciler = Reconciler__default["default"]({
251
251
  createInstance,
252
252
  removeChild,
@@ -245,8 +245,8 @@ function createRenderer(_roots, _getEventPriority) {
245
245
  });
246
246
  }
247
247
 
248
- // Don't handle text instances, warn on undefined behavior
249
- const handleTextInstance = () => console.warn('Text is not allowed in the R3F tree! This could be stray whitespace or characters.');
248
+ // Don't handle text instances, make it no-op
249
+ const handleTextInstance = () => {};
250
250
  const reconciler = Reconciler__default["default"]({
251
251
  createInstance,
252
252
  removeChild,
@@ -218,8 +218,8 @@ function createRenderer(_roots, _getEventPriority) {
218
218
  });
219
219
  }
220
220
 
221
- // Don't handle text instances, warn on undefined behavior
222
- const handleTextInstance = () => console.warn('Text is not allowed in the R3F tree! This could be stray whitespace or characters.');
221
+ // Don't handle text instances, make it no-op
222
+ const handleTextInstance = () => {};
223
223
  const reconciler = Reconciler({
224
224
  createInstance,
225
225
  removeChild,
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var events = require('./events-c54ce65e.cjs.dev.js');
5
+ var events = require('./events-31675df9.cjs.dev.js');
6
6
  var React = require('react');
7
7
  var THREE = require('three');
8
8
  var createDebounce = require('debounce');
@@ -75,7 +75,8 @@ function useMeasure({
75
75
  element: null,
76
76
  scrollContainers: null,
77
77
  resizeObserver: null,
78
- lastBounds: bounds
78
+ lastBounds: bounds,
79
+ orientationHandler: null
79
80
  });
80
81
 
81
82
  // set actual debounce values early, so effects know if they should react accordingly
@@ -133,19 +134,40 @@ function useMeasure({
133
134
  state.current.resizeObserver.disconnect();
134
135
  state.current.resizeObserver = null;
135
136
  }
137
+ if (state.current.orientationHandler) {
138
+ if ('orientation' in screen && 'removeEventListener' in screen.orientation) {
139
+ screen.orientation.removeEventListener('change', state.current.orientationHandler);
140
+ } else if ('onorientationchange' in window) {
141
+ window.removeEventListener('orientationchange', state.current.orientationHandler);
142
+ }
143
+ }
136
144
  }
137
145
 
138
146
  // add scroll-listeners / observers
139
147
  function addListeners() {
148
+ var _state$current$resize;
140
149
  if (!state.current.element) return;
141
- state.current.resizeObserver = new ResizeObserver(scrollChange);
142
- state.current.resizeObserver.observe(state.current.element);
150
+ state.current.resizeObserver = new ResizeObserver(resizeChange);
151
+ (_state$current$resize = state.current.resizeObserver) == null ? void 0 : _state$current$resize.observe(state.current.element);
143
152
  if (scroll && state.current.scrollContainers) {
144
153
  state.current.scrollContainers.forEach(scrollContainer => scrollContainer.addEventListener('scroll', scrollChange, {
145
154
  capture: true,
146
155
  passive: true
147
156
  }));
148
157
  }
158
+
159
+ // Handle orientation changes
160
+ state.current.orientationHandler = () => {
161
+ scrollChange();
162
+ };
163
+
164
+ // Use screen.orientation if available
165
+ if ('orientation' in screen && 'addEventListener' in screen.orientation) {
166
+ screen.orientation.addEventListener('change', state.current.orientationHandler);
167
+ } else if ('onorientationchange' in window) {
168
+ // Fallback to orientationchange event
169
+ window.addEventListener('orientationchange', state.current.orientationHandler);
170
+ }
149
171
  }
150
172
 
151
173
  // the ref we expose to the user
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var events = require('./events-2e7e6eab.cjs.prod.js');
5
+ var events = require('./events-09858d86.cjs.prod.js');
6
6
  var React = require('react');
7
7
  var THREE = require('three');
8
8
  var createDebounce = require('debounce');
@@ -75,7 +75,8 @@ function useMeasure({
75
75
  element: null,
76
76
  scrollContainers: null,
77
77
  resizeObserver: null,
78
- lastBounds: bounds
78
+ lastBounds: bounds,
79
+ orientationHandler: null
79
80
  });
80
81
 
81
82
  // set actual debounce values early, so effects know if they should react accordingly
@@ -133,19 +134,40 @@ function useMeasure({
133
134
  state.current.resizeObserver.disconnect();
134
135
  state.current.resizeObserver = null;
135
136
  }
137
+ if (state.current.orientationHandler) {
138
+ if ('orientation' in screen && 'removeEventListener' in screen.orientation) {
139
+ screen.orientation.removeEventListener('change', state.current.orientationHandler);
140
+ } else if ('onorientationchange' in window) {
141
+ window.removeEventListener('orientationchange', state.current.orientationHandler);
142
+ }
143
+ }
136
144
  }
137
145
 
138
146
  // add scroll-listeners / observers
139
147
  function addListeners() {
148
+ var _state$current$resize;
140
149
  if (!state.current.element) return;
141
- state.current.resizeObserver = new ResizeObserver(scrollChange);
142
- state.current.resizeObserver.observe(state.current.element);
150
+ state.current.resizeObserver = new ResizeObserver(resizeChange);
151
+ (_state$current$resize = state.current.resizeObserver) == null ? void 0 : _state$current$resize.observe(state.current.element);
143
152
  if (scroll && state.current.scrollContainers) {
144
153
  state.current.scrollContainers.forEach(scrollContainer => scrollContainer.addEventListener('scroll', scrollChange, {
145
154
  capture: true,
146
155
  passive: true
147
156
  }));
148
157
  }
158
+
159
+ // Handle orientation changes
160
+ state.current.orientationHandler = () => {
161
+ scrollChange();
162
+ };
163
+
164
+ // Use screen.orientation if available
165
+ if ('orientation' in screen && 'addEventListener' in screen.orientation) {
166
+ screen.orientation.addEventListener('change', state.current.orientationHandler);
167
+ } else if ('onorientationchange' in window) {
168
+ // Fallback to orientationchange event
169
+ window.addEventListener('orientationchange', state.current.orientationHandler);
170
+ }
149
171
  }
150
172
 
151
173
  // the ref we expose to the user
@@ -1,5 +1,5 @@
1
- import { c as createPointerEvents, e as extend, u as useMutableCallback, a as useIsomorphicLayoutEffect, b as createRoot, i as isRef, E as ErrorBoundary, B as Block, d as unmountComponentAtNode } from './events-3515660a.esm.js';
2
- export { t as ReactThreeFiber, z as _roots, x as act, p as addAfterEffect, o as addEffect, q as addTail, n as advance, k as applyProps, y as buildGraph, g as context, f as createEvents, c as createPointerEvents, h as createPortal, b as createRoot, l as dispose, c as events, e as extend, s as flushGlobalEffects, v as flushSync, w as getRootState, m as invalidate, j as reconciler, r as render, d as unmountComponentAtNode, F as useFrame, G as useGraph, A as useInstanceHandle, H as useLoader, C as useStore, D as useThree } from './events-3515660a.esm.js';
1
+ import { c as createPointerEvents, e as extend, u as useMutableCallback, a as useIsomorphicLayoutEffect, b as createRoot, i as isRef, E as ErrorBoundary, B as Block, d as unmountComponentAtNode } from './events-321b05fb.esm.js';
2
+ export { t as ReactThreeFiber, z as _roots, x as act, p as addAfterEffect, o as addEffect, q as addTail, n as advance, k as applyProps, y as buildGraph, g as context, f as createEvents, c as createPointerEvents, h as createPortal, b as createRoot, l as dispose, c as events, e as extend, s as flushGlobalEffects, v as flushSync, w as getRootState, m as invalidate, j as reconciler, r as render, d as unmountComponentAtNode, F as useFrame, G as useGraph, A as useInstanceHandle, H as useLoader, C as useStore, D as useThree } from './events-321b05fb.esm.js';
3
3
  import * as React from 'react';
4
4
  import { useState, useRef, useEffect, useMemo } from 'react';
5
5
  import * as THREE from 'three';
@@ -49,7 +49,8 @@ function useMeasure({
49
49
  element: null,
50
50
  scrollContainers: null,
51
51
  resizeObserver: null,
52
- lastBounds: bounds
52
+ lastBounds: bounds,
53
+ orientationHandler: null
53
54
  });
54
55
 
55
56
  // set actual debounce values early, so effects know if they should react accordingly
@@ -107,19 +108,40 @@ function useMeasure({
107
108
  state.current.resizeObserver.disconnect();
108
109
  state.current.resizeObserver = null;
109
110
  }
111
+ if (state.current.orientationHandler) {
112
+ if ('orientation' in screen && 'removeEventListener' in screen.orientation) {
113
+ screen.orientation.removeEventListener('change', state.current.orientationHandler);
114
+ } else if ('onorientationchange' in window) {
115
+ window.removeEventListener('orientationchange', state.current.orientationHandler);
116
+ }
117
+ }
110
118
  }
111
119
 
112
120
  // add scroll-listeners / observers
113
121
  function addListeners() {
122
+ var _state$current$resize;
114
123
  if (!state.current.element) return;
115
- state.current.resizeObserver = new ResizeObserver(scrollChange);
116
- state.current.resizeObserver.observe(state.current.element);
124
+ state.current.resizeObserver = new ResizeObserver(resizeChange);
125
+ (_state$current$resize = state.current.resizeObserver) == null ? void 0 : _state$current$resize.observe(state.current.element);
117
126
  if (scroll && state.current.scrollContainers) {
118
127
  state.current.scrollContainers.forEach(scrollContainer => scrollContainer.addEventListener('scroll', scrollChange, {
119
128
  capture: true,
120
129
  passive: true
121
130
  }));
122
131
  }
132
+
133
+ // Handle orientation changes
134
+ state.current.orientationHandler = () => {
135
+ scrollChange();
136
+ };
137
+
138
+ // Use screen.orientation if available
139
+ if ('orientation' in screen && 'addEventListener' in screen.orientation) {
140
+ screen.orientation.addEventListener('change', state.current.orientationHandler);
141
+ } else if ('onorientationchange' in window) {
142
+ // Fallback to orientationchange event
143
+ window.addEventListener('orientationchange', state.current.orientationHandler);
144
+ }
123
145
  }
124
146
 
125
147
  // the ref we expose to the user
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var events = require('../../dist/events-c54ce65e.cjs.dev.js');
5
+ var events = require('../../dist/events-31675df9.cjs.dev.js');
6
6
  var React = require('react');
7
7
  var THREE = require('three');
8
8
  var reactNative = require('react-native');
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var events = require('../../dist/events-2e7e6eab.cjs.prod.js');
5
+ var events = require('../../dist/events-09858d86.cjs.prod.js');
6
6
  var React = require('react');
7
7
  var THREE = require('three');
8
8
  var reactNative = require('react-native');
@@ -1,5 +1,5 @@
1
- import { c as createPointerEvents, e as extend, u as useMutableCallback, b as createRoot, E as ErrorBoundary, B as Block, d as unmountComponentAtNode, f as createEvents } from '../../dist/events-3515660a.esm.js';
2
- export { t as ReactThreeFiber, z as _roots, x as act, p as addAfterEffect, o as addEffect, q as addTail, n as advance, k as applyProps, y as buildGraph, g as context, f as createEvents, c as createPointerEvents, h as createPortal, b as createRoot, l as dispose, e as extend, s as flushGlobalEffects, v as flushSync, w as getRootState, m as invalidate, j as reconciler, r as render, d as unmountComponentAtNode, F as useFrame, G as useGraph, A as useInstanceHandle, H as useLoader, C as useStore, D as useThree } from '../../dist/events-3515660a.esm.js';
1
+ import { c as createPointerEvents, e as extend, u as useMutableCallback, b as createRoot, E as ErrorBoundary, B as Block, d as unmountComponentAtNode, f as createEvents } from '../../dist/events-321b05fb.esm.js';
2
+ export { t as ReactThreeFiber, z as _roots, x as act, p as addAfterEffect, o as addEffect, q as addTail, n as advance, k as applyProps, y as buildGraph, g as context, f as createEvents, c as createPointerEvents, h as createPortal, b as createRoot, l as dispose, e as extend, s as flushGlobalEffects, v as flushSync, w as getRootState, m as invalidate, j as reconciler, r as render, d as unmountComponentAtNode, F as useFrame, G as useGraph, A as useInstanceHandle, H as useLoader, C as useStore, D as useThree } from '../../dist/events-321b05fb.esm.js';
3
3
  import * as React from 'react';
4
4
  import * as THREE from 'three';
5
5
  import { PanResponder, PixelRatio, View, StyleSheet, Platform, Image, NativeModules } from 'react-native';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-three/fiber",
3
- "version": "8.17.8",
3
+ "version": "8.17.10",
4
4
  "description": "A React renderer for Threejs",
5
5
  "keywords": [
6
6
  "react",