@react-three/fiber 8.16.8 → 8.17.0
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 +6 -0
- package/dist/{index-046cf796.cjs.prod.js → events-2e7e6eab.cjs.prod.js} +99 -2
- package/dist/{index-99983b2d.esm.js → events-3515660a.esm.js} +98 -3
- package/dist/{index-ca3a789d.cjs.dev.js → events-c54ce65e.cjs.dev.js} +99 -2
- package/dist/react-three-fiber.cjs.dev.js +210 -120
- package/dist/react-three-fiber.cjs.prod.js +210 -120
- package/dist/react-three-fiber.esm.js +172 -83
- package/native/dist/react-three-fiber-native.cjs.dev.js +201 -133
- package/native/dist/react-three-fiber-native.cjs.prod.js +201 -133
- package/native/dist/react-three-fiber-native.esm.js +167 -101
- package/package.json +3 -2
- package/dist/declarations/src/core/events.d.ts +0 -93
- package/dist/declarations/src/core/hooks.d.ts +0 -57
- package/dist/declarations/src/core/index.d.ts +0 -87
- package/dist/declarations/src/core/loop.d.ts +0 -38
- package/dist/declarations/src/core/renderer.d.ts +0 -58
- package/dist/declarations/src/core/store.d.ts +0 -138
- package/dist/declarations/src/core/utils.d.ts +0 -134
- package/dist/declarations/src/index.d.ts +0 -12
- package/dist/declarations/src/native/Canvas.d.ts +0 -14
- package/dist/declarations/src/native/events.d.ts +0 -5
- package/dist/declarations/src/native/polyfills.d.ts +0 -1
- package/dist/declarations/src/native.d.ts +0 -12
- package/dist/declarations/src/three-types.d.ts +0 -393
- package/dist/declarations/src/web/Canvas.d.ts +0 -24
- package/dist/declarations/src/web/events.d.ts +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -4,10 +4,10 @@ var THREE = require('three');
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var constants = require('react-reconciler/constants');
|
|
6
6
|
var create = require('zustand');
|
|
7
|
-
var Reconciler = require('react-reconciler');
|
|
8
|
-
var scheduler = require('scheduler');
|
|
9
7
|
var suspendReact = require('suspend-react');
|
|
10
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
var Reconciler = require('react-reconciler');
|
|
10
|
+
var scheduler = require('scheduler');
|
|
11
11
|
|
|
12
12
|
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
13
13
|
|
|
@@ -2268,6 +2268,17 @@ function Portal({
|
|
|
2268
2268
|
}), usePortalStore, null)
|
|
2269
2269
|
});
|
|
2270
2270
|
}
|
|
2271
|
+
|
|
2272
|
+
/**
|
|
2273
|
+
* Force React to flush any updates inside the provided callback synchronously and immediately.
|
|
2274
|
+
* All the same caveats documented for react-dom's `flushSync` apply here (see https://react.dev/reference/react-dom/flushSync).
|
|
2275
|
+
* Nevertheless, sometimes one needs to render synchronously, for example to keep DOM and 3D changes in lock-step without
|
|
2276
|
+
* having to revert to a non-React solution.
|
|
2277
|
+
*/
|
|
2278
|
+
function flushSync(fn) {
|
|
2279
|
+
// `flushSync` implementation only takes one argument. I don't know what's up with the type declaration for it.
|
|
2280
|
+
return reconciler.flushSync(fn, undefined);
|
|
2281
|
+
}
|
|
2271
2282
|
reconciler.injectIntoDevTools({
|
|
2272
2283
|
bundleType: 0 ,
|
|
2273
2284
|
rendererPackageName: '@react-three/fiber',
|
|
@@ -2275,6 +2286,90 @@ reconciler.injectIntoDevTools({
|
|
|
2275
2286
|
});
|
|
2276
2287
|
const act = React__namespace.unstable_act;
|
|
2277
2288
|
|
|
2289
|
+
const DOM_EVENTS = {
|
|
2290
|
+
onClick: ['click', false],
|
|
2291
|
+
onContextMenu: ['contextmenu', false],
|
|
2292
|
+
onDoubleClick: ['dblclick', false],
|
|
2293
|
+
onWheel: ['wheel', true],
|
|
2294
|
+
onPointerDown: ['pointerdown', true],
|
|
2295
|
+
onPointerUp: ['pointerup', true],
|
|
2296
|
+
onPointerLeave: ['pointerleave', true],
|
|
2297
|
+
onPointerMove: ['pointermove', true],
|
|
2298
|
+
onPointerCancel: ['pointercancel', true],
|
|
2299
|
+
onLostPointerCapture: ['lostpointercapture', true]
|
|
2300
|
+
};
|
|
2301
|
+
|
|
2302
|
+
/** Default R3F event manager for web */
|
|
2303
|
+
function createPointerEvents(store) {
|
|
2304
|
+
const {
|
|
2305
|
+
handlePointer
|
|
2306
|
+
} = createEvents(store);
|
|
2307
|
+
return {
|
|
2308
|
+
priority: 1,
|
|
2309
|
+
enabled: true,
|
|
2310
|
+
compute(event, state, previous) {
|
|
2311
|
+
// https://github.com/pmndrs/react-three-fiber/pull/782
|
|
2312
|
+
// Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides
|
|
2313
|
+
state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);
|
|
2314
|
+
state.raycaster.setFromCamera(state.pointer, state.camera);
|
|
2315
|
+
},
|
|
2316
|
+
connected: undefined,
|
|
2317
|
+
handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => ({
|
|
2318
|
+
...acc,
|
|
2319
|
+
[key]: handlePointer(key)
|
|
2320
|
+
}), {}),
|
|
2321
|
+
update: () => {
|
|
2322
|
+
var _internal$lastEvent;
|
|
2323
|
+
const {
|
|
2324
|
+
events,
|
|
2325
|
+
internal
|
|
2326
|
+
} = store.getState();
|
|
2327
|
+
if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) events.handlers.onPointerMove(internal.lastEvent.current);
|
|
2328
|
+
},
|
|
2329
|
+
connect: target => {
|
|
2330
|
+
var _events$handlers;
|
|
2331
|
+
const {
|
|
2332
|
+
set,
|
|
2333
|
+
events
|
|
2334
|
+
} = store.getState();
|
|
2335
|
+
events.disconnect == null ? void 0 : events.disconnect();
|
|
2336
|
+
set(state => ({
|
|
2337
|
+
events: {
|
|
2338
|
+
...state.events,
|
|
2339
|
+
connected: target
|
|
2340
|
+
}
|
|
2341
|
+
}));
|
|
2342
|
+
Object.entries((_events$handlers = events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {
|
|
2343
|
+
const [eventName, passive] = DOM_EVENTS[name];
|
|
2344
|
+
target.addEventListener(eventName, event, {
|
|
2345
|
+
passive
|
|
2346
|
+
});
|
|
2347
|
+
});
|
|
2348
|
+
},
|
|
2349
|
+
disconnect: () => {
|
|
2350
|
+
const {
|
|
2351
|
+
set,
|
|
2352
|
+
events
|
|
2353
|
+
} = store.getState();
|
|
2354
|
+
if (events.connected) {
|
|
2355
|
+
var _events$handlers2;
|
|
2356
|
+
Object.entries((_events$handlers2 = events.handlers) != null ? _events$handlers2 : []).forEach(([name, event]) => {
|
|
2357
|
+
if (events && events.connected instanceof HTMLElement) {
|
|
2358
|
+
const [eventName] = DOM_EVENTS[name];
|
|
2359
|
+
events.connected.removeEventListener(eventName, event);
|
|
2360
|
+
}
|
|
2361
|
+
});
|
|
2362
|
+
set(state => ({
|
|
2363
|
+
events: {
|
|
2364
|
+
...state.events,
|
|
2365
|
+
connected: undefined
|
|
2366
|
+
}
|
|
2367
|
+
}));
|
|
2368
|
+
}
|
|
2369
|
+
}
|
|
2370
|
+
};
|
|
2371
|
+
}
|
|
2372
|
+
|
|
2278
2373
|
exports.Block = Block;
|
|
2279
2374
|
exports.ErrorBoundary = ErrorBoundary;
|
|
2280
2375
|
exports.act = act;
|
|
@@ -2286,11 +2381,13 @@ exports.applyProps = applyProps;
|
|
|
2286
2381
|
exports.buildGraph = buildGraph;
|
|
2287
2382
|
exports.context = context;
|
|
2288
2383
|
exports.createEvents = createEvents;
|
|
2384
|
+
exports.createPointerEvents = createPointerEvents;
|
|
2289
2385
|
exports.createPortal = createPortal;
|
|
2290
2386
|
exports.createRoot = createRoot;
|
|
2291
2387
|
exports.dispose = dispose;
|
|
2292
2388
|
exports.extend = extend;
|
|
2293
2389
|
exports.flushGlobalEffects = flushGlobalEffects;
|
|
2390
|
+
exports.flushSync = flushSync;
|
|
2294
2391
|
exports.getRootState = getRootState;
|
|
2295
2392
|
exports.invalidate = invalidate;
|
|
2296
2393
|
exports.isRef = isRef;
|
|
@@ -2,10 +2,10 @@ import * as THREE from 'three';
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { DefaultEventPriority, ContinuousEventPriority, DiscreteEventPriority, ConcurrentRoot } from 'react-reconciler/constants';
|
|
4
4
|
import create from 'zustand';
|
|
5
|
-
import Reconciler from 'react-reconciler';
|
|
6
|
-
import { unstable_scheduleCallback, unstable_IdlePriority } from 'scheduler';
|
|
7
5
|
import { suspend, preload, clear } from 'suspend-react';
|
|
8
6
|
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
7
|
+
import Reconciler from 'react-reconciler';
|
|
8
|
+
import { unstable_scheduleCallback, unstable_IdlePriority } from 'scheduler';
|
|
9
9
|
|
|
10
10
|
var threeTypes = /*#__PURE__*/Object.freeze({
|
|
11
11
|
__proto__: null
|
|
@@ -2241,6 +2241,17 @@ function Portal({
|
|
|
2241
2241
|
}), usePortalStore, null)
|
|
2242
2242
|
});
|
|
2243
2243
|
}
|
|
2244
|
+
|
|
2245
|
+
/**
|
|
2246
|
+
* Force React to flush any updates inside the provided callback synchronously and immediately.
|
|
2247
|
+
* All the same caveats documented for react-dom's `flushSync` apply here (see https://react.dev/reference/react-dom/flushSync).
|
|
2248
|
+
* Nevertheless, sometimes one needs to render synchronously, for example to keep DOM and 3D changes in lock-step without
|
|
2249
|
+
* having to revert to a non-React solution.
|
|
2250
|
+
*/
|
|
2251
|
+
function flushSync(fn) {
|
|
2252
|
+
// `flushSync` implementation only takes one argument. I don't know what's up with the type declaration for it.
|
|
2253
|
+
return reconciler.flushSync(fn, undefined);
|
|
2254
|
+
}
|
|
2244
2255
|
reconciler.injectIntoDevTools({
|
|
2245
2256
|
bundleType: process.env.NODE_ENV === 'production' ? 0 : 1,
|
|
2246
2257
|
rendererPackageName: '@react-three/fiber',
|
|
@@ -2248,4 +2259,88 @@ reconciler.injectIntoDevTools({
|
|
|
2248
2259
|
});
|
|
2249
2260
|
const act = React.unstable_act;
|
|
2250
2261
|
|
|
2251
|
-
|
|
2262
|
+
const DOM_EVENTS = {
|
|
2263
|
+
onClick: ['click', false],
|
|
2264
|
+
onContextMenu: ['contextmenu', false],
|
|
2265
|
+
onDoubleClick: ['dblclick', false],
|
|
2266
|
+
onWheel: ['wheel', true],
|
|
2267
|
+
onPointerDown: ['pointerdown', true],
|
|
2268
|
+
onPointerUp: ['pointerup', true],
|
|
2269
|
+
onPointerLeave: ['pointerleave', true],
|
|
2270
|
+
onPointerMove: ['pointermove', true],
|
|
2271
|
+
onPointerCancel: ['pointercancel', true],
|
|
2272
|
+
onLostPointerCapture: ['lostpointercapture', true]
|
|
2273
|
+
};
|
|
2274
|
+
|
|
2275
|
+
/** Default R3F event manager for web */
|
|
2276
|
+
function createPointerEvents(store) {
|
|
2277
|
+
const {
|
|
2278
|
+
handlePointer
|
|
2279
|
+
} = createEvents(store);
|
|
2280
|
+
return {
|
|
2281
|
+
priority: 1,
|
|
2282
|
+
enabled: true,
|
|
2283
|
+
compute(event, state, previous) {
|
|
2284
|
+
// https://github.com/pmndrs/react-three-fiber/pull/782
|
|
2285
|
+
// Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides
|
|
2286
|
+
state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);
|
|
2287
|
+
state.raycaster.setFromCamera(state.pointer, state.camera);
|
|
2288
|
+
},
|
|
2289
|
+
connected: undefined,
|
|
2290
|
+
handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => ({
|
|
2291
|
+
...acc,
|
|
2292
|
+
[key]: handlePointer(key)
|
|
2293
|
+
}), {}),
|
|
2294
|
+
update: () => {
|
|
2295
|
+
var _internal$lastEvent;
|
|
2296
|
+
const {
|
|
2297
|
+
events,
|
|
2298
|
+
internal
|
|
2299
|
+
} = store.getState();
|
|
2300
|
+
if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) events.handlers.onPointerMove(internal.lastEvent.current);
|
|
2301
|
+
},
|
|
2302
|
+
connect: target => {
|
|
2303
|
+
var _events$handlers;
|
|
2304
|
+
const {
|
|
2305
|
+
set,
|
|
2306
|
+
events
|
|
2307
|
+
} = store.getState();
|
|
2308
|
+
events.disconnect == null ? void 0 : events.disconnect();
|
|
2309
|
+
set(state => ({
|
|
2310
|
+
events: {
|
|
2311
|
+
...state.events,
|
|
2312
|
+
connected: target
|
|
2313
|
+
}
|
|
2314
|
+
}));
|
|
2315
|
+
Object.entries((_events$handlers = events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {
|
|
2316
|
+
const [eventName, passive] = DOM_EVENTS[name];
|
|
2317
|
+
target.addEventListener(eventName, event, {
|
|
2318
|
+
passive
|
|
2319
|
+
});
|
|
2320
|
+
});
|
|
2321
|
+
},
|
|
2322
|
+
disconnect: () => {
|
|
2323
|
+
const {
|
|
2324
|
+
set,
|
|
2325
|
+
events
|
|
2326
|
+
} = store.getState();
|
|
2327
|
+
if (events.connected) {
|
|
2328
|
+
var _events$handlers2;
|
|
2329
|
+
Object.entries((_events$handlers2 = events.handlers) != null ? _events$handlers2 : []).forEach(([name, event]) => {
|
|
2330
|
+
if (events && events.connected instanceof HTMLElement) {
|
|
2331
|
+
const [eventName] = DOM_EVENTS[name];
|
|
2332
|
+
events.connected.removeEventListener(eventName, event);
|
|
2333
|
+
}
|
|
2334
|
+
});
|
|
2335
|
+
set(state => ({
|
|
2336
|
+
events: {
|
|
2337
|
+
...state.events,
|
|
2338
|
+
connected: undefined
|
|
2339
|
+
}
|
|
2340
|
+
}));
|
|
2341
|
+
}
|
|
2342
|
+
}
|
|
2343
|
+
};
|
|
2344
|
+
}
|
|
2345
|
+
|
|
2346
|
+
export { useInstanceHandle as A, Block as B, useStore as C, useThree as D, ErrorBoundary as E, useFrame as F, useGraph as G, useLoader as H, useIsomorphicLayoutEffect as a, createRoot as b, createPointerEvents as c, unmountComponentAtNode as d, extend as e, createEvents as f, context as g, createPortal as h, isRef as i, reconciler as j, applyProps as k, dispose as l, invalidate as m, advance as n, addEffect as o, addAfterEffect as p, addTail as q, render as r, flushGlobalEffects as s, threeTypes as t, useMutableCallback as u, flushSync as v, getRootState as w, act as x, buildGraph as y, roots as z };
|
|
@@ -4,10 +4,10 @@ var THREE = require('three');
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var constants = require('react-reconciler/constants');
|
|
6
6
|
var create = require('zustand');
|
|
7
|
-
var Reconciler = require('react-reconciler');
|
|
8
|
-
var scheduler = require('scheduler');
|
|
9
7
|
var suspendReact = require('suspend-react');
|
|
10
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
var Reconciler = require('react-reconciler');
|
|
10
|
+
var scheduler = require('scheduler');
|
|
11
11
|
|
|
12
12
|
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
13
13
|
|
|
@@ -2268,6 +2268,17 @@ function Portal({
|
|
|
2268
2268
|
}), usePortalStore, null)
|
|
2269
2269
|
});
|
|
2270
2270
|
}
|
|
2271
|
+
|
|
2272
|
+
/**
|
|
2273
|
+
* Force React to flush any updates inside the provided callback synchronously and immediately.
|
|
2274
|
+
* All the same caveats documented for react-dom's `flushSync` apply here (see https://react.dev/reference/react-dom/flushSync).
|
|
2275
|
+
* Nevertheless, sometimes one needs to render synchronously, for example to keep DOM and 3D changes in lock-step without
|
|
2276
|
+
* having to revert to a non-React solution.
|
|
2277
|
+
*/
|
|
2278
|
+
function flushSync(fn) {
|
|
2279
|
+
// `flushSync` implementation only takes one argument. I don't know what's up with the type declaration for it.
|
|
2280
|
+
return reconciler.flushSync(fn, undefined);
|
|
2281
|
+
}
|
|
2271
2282
|
reconciler.injectIntoDevTools({
|
|
2272
2283
|
bundleType: process.env.NODE_ENV === 'production' ? 0 : 1,
|
|
2273
2284
|
rendererPackageName: '@react-three/fiber',
|
|
@@ -2275,6 +2286,90 @@ reconciler.injectIntoDevTools({
|
|
|
2275
2286
|
});
|
|
2276
2287
|
const act = React__namespace.unstable_act;
|
|
2277
2288
|
|
|
2289
|
+
const DOM_EVENTS = {
|
|
2290
|
+
onClick: ['click', false],
|
|
2291
|
+
onContextMenu: ['contextmenu', false],
|
|
2292
|
+
onDoubleClick: ['dblclick', false],
|
|
2293
|
+
onWheel: ['wheel', true],
|
|
2294
|
+
onPointerDown: ['pointerdown', true],
|
|
2295
|
+
onPointerUp: ['pointerup', true],
|
|
2296
|
+
onPointerLeave: ['pointerleave', true],
|
|
2297
|
+
onPointerMove: ['pointermove', true],
|
|
2298
|
+
onPointerCancel: ['pointercancel', true],
|
|
2299
|
+
onLostPointerCapture: ['lostpointercapture', true]
|
|
2300
|
+
};
|
|
2301
|
+
|
|
2302
|
+
/** Default R3F event manager for web */
|
|
2303
|
+
function createPointerEvents(store) {
|
|
2304
|
+
const {
|
|
2305
|
+
handlePointer
|
|
2306
|
+
} = createEvents(store);
|
|
2307
|
+
return {
|
|
2308
|
+
priority: 1,
|
|
2309
|
+
enabled: true,
|
|
2310
|
+
compute(event, state, previous) {
|
|
2311
|
+
// https://github.com/pmndrs/react-three-fiber/pull/782
|
|
2312
|
+
// Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides
|
|
2313
|
+
state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);
|
|
2314
|
+
state.raycaster.setFromCamera(state.pointer, state.camera);
|
|
2315
|
+
},
|
|
2316
|
+
connected: undefined,
|
|
2317
|
+
handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => ({
|
|
2318
|
+
...acc,
|
|
2319
|
+
[key]: handlePointer(key)
|
|
2320
|
+
}), {}),
|
|
2321
|
+
update: () => {
|
|
2322
|
+
var _internal$lastEvent;
|
|
2323
|
+
const {
|
|
2324
|
+
events,
|
|
2325
|
+
internal
|
|
2326
|
+
} = store.getState();
|
|
2327
|
+
if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) events.handlers.onPointerMove(internal.lastEvent.current);
|
|
2328
|
+
},
|
|
2329
|
+
connect: target => {
|
|
2330
|
+
var _events$handlers;
|
|
2331
|
+
const {
|
|
2332
|
+
set,
|
|
2333
|
+
events
|
|
2334
|
+
} = store.getState();
|
|
2335
|
+
events.disconnect == null ? void 0 : events.disconnect();
|
|
2336
|
+
set(state => ({
|
|
2337
|
+
events: {
|
|
2338
|
+
...state.events,
|
|
2339
|
+
connected: target
|
|
2340
|
+
}
|
|
2341
|
+
}));
|
|
2342
|
+
Object.entries((_events$handlers = events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {
|
|
2343
|
+
const [eventName, passive] = DOM_EVENTS[name];
|
|
2344
|
+
target.addEventListener(eventName, event, {
|
|
2345
|
+
passive
|
|
2346
|
+
});
|
|
2347
|
+
});
|
|
2348
|
+
},
|
|
2349
|
+
disconnect: () => {
|
|
2350
|
+
const {
|
|
2351
|
+
set,
|
|
2352
|
+
events
|
|
2353
|
+
} = store.getState();
|
|
2354
|
+
if (events.connected) {
|
|
2355
|
+
var _events$handlers2;
|
|
2356
|
+
Object.entries((_events$handlers2 = events.handlers) != null ? _events$handlers2 : []).forEach(([name, event]) => {
|
|
2357
|
+
if (events && events.connected instanceof HTMLElement) {
|
|
2358
|
+
const [eventName] = DOM_EVENTS[name];
|
|
2359
|
+
events.connected.removeEventListener(eventName, event);
|
|
2360
|
+
}
|
|
2361
|
+
});
|
|
2362
|
+
set(state => ({
|
|
2363
|
+
events: {
|
|
2364
|
+
...state.events,
|
|
2365
|
+
connected: undefined
|
|
2366
|
+
}
|
|
2367
|
+
}));
|
|
2368
|
+
}
|
|
2369
|
+
}
|
|
2370
|
+
};
|
|
2371
|
+
}
|
|
2372
|
+
|
|
2278
2373
|
exports.Block = Block;
|
|
2279
2374
|
exports.ErrorBoundary = ErrorBoundary;
|
|
2280
2375
|
exports.act = act;
|
|
@@ -2286,11 +2381,13 @@ exports.applyProps = applyProps;
|
|
|
2286
2381
|
exports.buildGraph = buildGraph;
|
|
2287
2382
|
exports.context = context;
|
|
2288
2383
|
exports.createEvents = createEvents;
|
|
2384
|
+
exports.createPointerEvents = createPointerEvents;
|
|
2289
2385
|
exports.createPortal = createPortal;
|
|
2290
2386
|
exports.createRoot = createRoot;
|
|
2291
2387
|
exports.dispose = dispose;
|
|
2292
2388
|
exports.extend = extend;
|
|
2293
2389
|
exports.flushGlobalEffects = flushGlobalEffects;
|
|
2390
|
+
exports.flushSync = flushSync;
|
|
2294
2391
|
exports.getRootState = getRootState;
|
|
2295
2392
|
exports.invalidate = invalidate;
|
|
2296
2393
|
exports.isRef = isRef;
|