@react-three/fiber 10.0.0-canary.6d6e5ab → 10.0.0-canary.76d2134
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/dist/index.cjs +43 -1
- package/dist/index.d.cts +19 -1
- package/dist/index.d.mts +19 -1
- package/dist/index.d.ts +19 -1
- package/dist/index.mjs +43 -2
- package/dist/legacy.cjs +43 -1
- package/dist/legacy.d.cts +19 -1
- package/dist/legacy.d.mts +19 -1
- package/dist/legacy.d.ts +19 -1
- package/dist/legacy.mjs +43 -2
- package/dist/webgpu/index.cjs +43 -1
- package/dist/webgpu/index.d.cts +19 -1
- package/dist/webgpu/index.d.mts +19 -1
- package/dist/webgpu/index.d.ts +19 -1
- package/dist/webgpu/index.mjs +43 -2
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1106,6 +1106,41 @@ function releaseInternalPointerCapture(internal, obj, pointerId) {
|
|
|
1106
1106
|
captureData.target.releasePointerCapture(pointerId);
|
|
1107
1107
|
}
|
|
1108
1108
|
}
|
|
1109
|
+
function swapInteractivity(store, object, newObject) {
|
|
1110
|
+
const { internal } = store.getState();
|
|
1111
|
+
for (let i = 0; i < internal.interaction.length; i++) {
|
|
1112
|
+
if (internal.interaction[i] === object) internal.interaction[i] = newObject;
|
|
1113
|
+
}
|
|
1114
|
+
for (const pointerState of internal.pointerMap.values()) {
|
|
1115
|
+
for (let i = 0; i < pointerState.initialHits.length; i++) {
|
|
1116
|
+
if (pointerState.initialHits[i] === object) pointerState.initialHits[i] = newObject;
|
|
1117
|
+
}
|
|
1118
|
+
pointerState.hovered.forEach((value, key) => {
|
|
1119
|
+
if (value.eventObject === object || value.object === object) {
|
|
1120
|
+
pointerState.hovered.delete(key);
|
|
1121
|
+
const next = {
|
|
1122
|
+
...value,
|
|
1123
|
+
eventObject: value.eventObject === object ? newObject : value.eventObject,
|
|
1124
|
+
object: value.object === object ? newObject : value.object
|
|
1125
|
+
};
|
|
1126
|
+
pointerState.hovered.set(makeId(next), next);
|
|
1127
|
+
}
|
|
1128
|
+
});
|
|
1129
|
+
const captureData = pointerState.captured.get(object);
|
|
1130
|
+
if (captureData) {
|
|
1131
|
+
pointerState.captured.delete(object);
|
|
1132
|
+
pointerState.captured.set(newObject, {
|
|
1133
|
+
...captureData,
|
|
1134
|
+
intersection: {
|
|
1135
|
+
...captureData.intersection,
|
|
1136
|
+
object: captureData.intersection.object === object ? newObject : captureData.intersection.object,
|
|
1137
|
+
eventObject: captureData.intersection.eventObject === object ? newObject : captureData.intersection.eventObject
|
|
1138
|
+
}
|
|
1139
|
+
});
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
unregisterVisibility(store, object);
|
|
1143
|
+
}
|
|
1109
1144
|
function removeInteractivity(store, object) {
|
|
1110
1145
|
const { internal } = store.getState();
|
|
1111
1146
|
internal.interaction = internal.interaction.filter((o) => o !== object);
|
|
@@ -13885,7 +13920,9 @@ function swapReconstructedInstances() {
|
|
|
13885
13920
|
}
|
|
13886
13921
|
}
|
|
13887
13922
|
if (instance.isHidden) unhideInstance(instance);
|
|
13888
|
-
if (isObject3D(instance.object)
|
|
13923
|
+
if (isObject3D(instance.object) && !instance.parent) {
|
|
13924
|
+
removeInteractivity(findInitialRoot(instance), instance.object);
|
|
13925
|
+
}
|
|
13889
13926
|
if (instance.object.__r3f) delete instance.object.__r3f;
|
|
13890
13927
|
if (instance.type !== "primitive") disposeOnIdle(instance.object);
|
|
13891
13928
|
}
|
|
@@ -13894,9 +13931,13 @@ function swapReconstructedInstances() {
|
|
|
13894
13931
|
const parent = instance.parent;
|
|
13895
13932
|
if (parent) {
|
|
13896
13933
|
const target = catalogue[toPascalCase(instance.type)];
|
|
13934
|
+
const prevObject = instance.object;
|
|
13897
13935
|
instance.object = instance.props.object ?? new target(...instance.props.args ?? []);
|
|
13898
13936
|
instance.object.__r3f = instance;
|
|
13899
13937
|
setFiberRef(fiber, instance.object);
|
|
13938
|
+
if (isObject3D(prevObject) && isObject3D(instance.object)) {
|
|
13939
|
+
swapInteractivity(findInitialRoot(instance), prevObject, instance.object);
|
|
13940
|
+
}
|
|
13900
13941
|
delete instance.appliedOnce;
|
|
13901
13942
|
instance.eventCount = 0;
|
|
13902
13943
|
instance.handlers = {};
|
|
@@ -15264,6 +15305,7 @@ exports.reconciler = reconciler;
|
|
|
15264
15305
|
exports.registerPrimary = registerPrimary;
|
|
15265
15306
|
exports.removeInteractivity = removeInteractivity;
|
|
15266
15307
|
exports.resolve = resolve;
|
|
15308
|
+
exports.swapInteractivity = swapInteractivity;
|
|
15267
15309
|
exports.unmountComponentAtNode = unmountComponentAtNode;
|
|
15268
15310
|
exports.unregisterPrimary = unregisterPrimary;
|
|
15269
15311
|
exports.updateCamera = updateCamera;
|
package/dist/index.d.cts
CHANGED
|
@@ -1821,6 +1821,24 @@ declare module '@react-three/fiber' {
|
|
|
1821
1821
|
*/
|
|
1822
1822
|
declare function Environment(props: EnvironmentProps): react_jsx_runtime.JSX.Element;
|
|
1823
1823
|
|
|
1824
|
+
/**
|
|
1825
|
+
* Moves every trace of interactivity from one object to its replacement, for reconstruction.
|
|
1826
|
+
*
|
|
1827
|
+
* When `args` or a `primitive`'s `object` changes, R3F builds a new three object and keeps the same
|
|
1828
|
+
* instance. Removing the old object from the interaction state and registering the new one from
|
|
1829
|
+
* scratch makes events *work* again (#3778), but it forgets what was in flight: a pointer resting on
|
|
1830
|
+
* the object fires a second `onPointerEnter` without ever having left, and an active pointer capture
|
|
1831
|
+
* is dropped mid-drag. Rewriting the references instead keeps the interaction continuous across a
|
|
1832
|
+
* swap the user never asked to see (#3744).
|
|
1833
|
+
*
|
|
1834
|
+
* Captures are re-keyed rather than released, so the DOM-level capture on `captureData.target` is
|
|
1835
|
+
* left alone — releasing and re-acquiring it is precisely the glitch being avoided.
|
|
1836
|
+
*
|
|
1837
|
+
* Visibility handlers are deliberately not transferred: that registry is keyed by `object.uuid`, so
|
|
1838
|
+
* the replacement re-registers itself through `applyProps`. The old entry is dropped here so it
|
|
1839
|
+
* cannot outlive the object it described.
|
|
1840
|
+
*/
|
|
1841
|
+
declare function swapInteractivity(store: RootStore, object: Object3D, newObject: Object3D): void;
|
|
1824
1842
|
declare function removeInteractivity(store: RootStore, object: Object3D): void;
|
|
1825
1843
|
declare function createEvents(store: RootStore): {
|
|
1826
1844
|
handlePointer: (name: string) => (event: DomEvent) => void;
|
|
@@ -3729,5 +3747,5 @@ declare function isOnce(value: unknown): value is {
|
|
|
3729
3747
|
*/
|
|
3730
3748
|
declare function Canvas(props: CanvasProps): react_jsx_runtime.JSX.Element;
|
|
3731
3749
|
|
|
3732
|
-
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
3750
|
+
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
3733
3751
|
export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferLike, BufferRecord, BufferStore, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, DefaultGLProps, DefaultRendererProps, Disposable, DisposeOptions, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeProps, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, R3FRenderer, RaycastableRepresentation, ReactProps, ReconcilerRoot, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, RootState, RootStore, SetBlock, Size, StorageLike, StorageRecord, StorageStore, Subscription, TSLNodeInput, TextureInput, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, XRManager, XRPointerConfig };
|
package/dist/index.d.mts
CHANGED
|
@@ -1821,6 +1821,24 @@ declare module '@react-three/fiber' {
|
|
|
1821
1821
|
*/
|
|
1822
1822
|
declare function Environment(props: EnvironmentProps): react_jsx_runtime.JSX.Element;
|
|
1823
1823
|
|
|
1824
|
+
/**
|
|
1825
|
+
* Moves every trace of interactivity from one object to its replacement, for reconstruction.
|
|
1826
|
+
*
|
|
1827
|
+
* When `args` or a `primitive`'s `object` changes, R3F builds a new three object and keeps the same
|
|
1828
|
+
* instance. Removing the old object from the interaction state and registering the new one from
|
|
1829
|
+
* scratch makes events *work* again (#3778), but it forgets what was in flight: a pointer resting on
|
|
1830
|
+
* the object fires a second `onPointerEnter` without ever having left, and an active pointer capture
|
|
1831
|
+
* is dropped mid-drag. Rewriting the references instead keeps the interaction continuous across a
|
|
1832
|
+
* swap the user never asked to see (#3744).
|
|
1833
|
+
*
|
|
1834
|
+
* Captures are re-keyed rather than released, so the DOM-level capture on `captureData.target` is
|
|
1835
|
+
* left alone — releasing and re-acquiring it is precisely the glitch being avoided.
|
|
1836
|
+
*
|
|
1837
|
+
* Visibility handlers are deliberately not transferred: that registry is keyed by `object.uuid`, so
|
|
1838
|
+
* the replacement re-registers itself through `applyProps`. The old entry is dropped here so it
|
|
1839
|
+
* cannot outlive the object it described.
|
|
1840
|
+
*/
|
|
1841
|
+
declare function swapInteractivity(store: RootStore, object: Object3D, newObject: Object3D): void;
|
|
1824
1842
|
declare function removeInteractivity(store: RootStore, object: Object3D): void;
|
|
1825
1843
|
declare function createEvents(store: RootStore): {
|
|
1826
1844
|
handlePointer: (name: string) => (event: DomEvent) => void;
|
|
@@ -3729,5 +3747,5 @@ declare function isOnce(value: unknown): value is {
|
|
|
3729
3747
|
*/
|
|
3730
3748
|
declare function Canvas(props: CanvasProps): react_jsx_runtime.JSX.Element;
|
|
3731
3749
|
|
|
3732
|
-
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
3750
|
+
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
3733
3751
|
export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferLike, BufferRecord, BufferStore, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, DefaultGLProps, DefaultRendererProps, Disposable, DisposeOptions, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeProps, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, R3FRenderer, RaycastableRepresentation, ReactProps, ReconcilerRoot, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, RootState, RootStore, SetBlock, Size, StorageLike, StorageRecord, StorageStore, Subscription, TSLNodeInput, TextureInput, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, XRManager, XRPointerConfig };
|
package/dist/index.d.ts
CHANGED
|
@@ -1821,6 +1821,24 @@ declare module '@react-three/fiber' {
|
|
|
1821
1821
|
*/
|
|
1822
1822
|
declare function Environment(props: EnvironmentProps): react_jsx_runtime.JSX.Element;
|
|
1823
1823
|
|
|
1824
|
+
/**
|
|
1825
|
+
* Moves every trace of interactivity from one object to its replacement, for reconstruction.
|
|
1826
|
+
*
|
|
1827
|
+
* When `args` or a `primitive`'s `object` changes, R3F builds a new three object and keeps the same
|
|
1828
|
+
* instance. Removing the old object from the interaction state and registering the new one from
|
|
1829
|
+
* scratch makes events *work* again (#3778), but it forgets what was in flight: a pointer resting on
|
|
1830
|
+
* the object fires a second `onPointerEnter` without ever having left, and an active pointer capture
|
|
1831
|
+
* is dropped mid-drag. Rewriting the references instead keeps the interaction continuous across a
|
|
1832
|
+
* swap the user never asked to see (#3744).
|
|
1833
|
+
*
|
|
1834
|
+
* Captures are re-keyed rather than released, so the DOM-level capture on `captureData.target` is
|
|
1835
|
+
* left alone — releasing and re-acquiring it is precisely the glitch being avoided.
|
|
1836
|
+
*
|
|
1837
|
+
* Visibility handlers are deliberately not transferred: that registry is keyed by `object.uuid`, so
|
|
1838
|
+
* the replacement re-registers itself through `applyProps`. The old entry is dropped here so it
|
|
1839
|
+
* cannot outlive the object it described.
|
|
1840
|
+
*/
|
|
1841
|
+
declare function swapInteractivity(store: RootStore, object: Object3D, newObject: Object3D): void;
|
|
1824
1842
|
declare function removeInteractivity(store: RootStore, object: Object3D): void;
|
|
1825
1843
|
declare function createEvents(store: RootStore): {
|
|
1826
1844
|
handlePointer: (name: string) => (event: DomEvent) => void;
|
|
@@ -3729,5 +3747,5 @@ declare function isOnce(value: unknown): value is {
|
|
|
3729
3747
|
*/
|
|
3730
3748
|
declare function Canvas(props: CanvasProps): react_jsx_runtime.JSX.Element;
|
|
3731
3749
|
|
|
3732
|
-
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
3750
|
+
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
3733
3751
|
export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferLike, BufferRecord, BufferStore, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, DefaultGLProps, DefaultRendererProps, Disposable, DisposeOptions, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeProps, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, R3FRenderer, RaycastableRepresentation, ReactProps, ReconcilerRoot, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, RootState, RootStore, SetBlock, Size, StorageLike, StorageRecord, StorageStore, Subscription, TSLNodeInput, TextureInput, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, XRManager, XRPointerConfig };
|
package/dist/index.mjs
CHANGED
|
@@ -1086,6 +1086,41 @@ function releaseInternalPointerCapture(internal, obj, pointerId) {
|
|
|
1086
1086
|
captureData.target.releasePointerCapture(pointerId);
|
|
1087
1087
|
}
|
|
1088
1088
|
}
|
|
1089
|
+
function swapInteractivity(store, object, newObject) {
|
|
1090
|
+
const { internal } = store.getState();
|
|
1091
|
+
for (let i = 0; i < internal.interaction.length; i++) {
|
|
1092
|
+
if (internal.interaction[i] === object) internal.interaction[i] = newObject;
|
|
1093
|
+
}
|
|
1094
|
+
for (const pointerState of internal.pointerMap.values()) {
|
|
1095
|
+
for (let i = 0; i < pointerState.initialHits.length; i++) {
|
|
1096
|
+
if (pointerState.initialHits[i] === object) pointerState.initialHits[i] = newObject;
|
|
1097
|
+
}
|
|
1098
|
+
pointerState.hovered.forEach((value, key) => {
|
|
1099
|
+
if (value.eventObject === object || value.object === object) {
|
|
1100
|
+
pointerState.hovered.delete(key);
|
|
1101
|
+
const next = {
|
|
1102
|
+
...value,
|
|
1103
|
+
eventObject: value.eventObject === object ? newObject : value.eventObject,
|
|
1104
|
+
object: value.object === object ? newObject : value.object
|
|
1105
|
+
};
|
|
1106
|
+
pointerState.hovered.set(makeId(next), next);
|
|
1107
|
+
}
|
|
1108
|
+
});
|
|
1109
|
+
const captureData = pointerState.captured.get(object);
|
|
1110
|
+
if (captureData) {
|
|
1111
|
+
pointerState.captured.delete(object);
|
|
1112
|
+
pointerState.captured.set(newObject, {
|
|
1113
|
+
...captureData,
|
|
1114
|
+
intersection: {
|
|
1115
|
+
...captureData.intersection,
|
|
1116
|
+
object: captureData.intersection.object === object ? newObject : captureData.intersection.object,
|
|
1117
|
+
eventObject: captureData.intersection.eventObject === object ? newObject : captureData.intersection.eventObject
|
|
1118
|
+
}
|
|
1119
|
+
});
|
|
1120
|
+
}
|
|
1121
|
+
}
|
|
1122
|
+
unregisterVisibility(store, object);
|
|
1123
|
+
}
|
|
1089
1124
|
function removeInteractivity(store, object) {
|
|
1090
1125
|
const { internal } = store.getState();
|
|
1091
1126
|
internal.interaction = internal.interaction.filter((o) => o !== object);
|
|
@@ -13865,7 +13900,9 @@ function swapReconstructedInstances() {
|
|
|
13865
13900
|
}
|
|
13866
13901
|
}
|
|
13867
13902
|
if (instance.isHidden) unhideInstance(instance);
|
|
13868
|
-
if (isObject3D(instance.object)
|
|
13903
|
+
if (isObject3D(instance.object) && !instance.parent) {
|
|
13904
|
+
removeInteractivity(findInitialRoot(instance), instance.object);
|
|
13905
|
+
}
|
|
13869
13906
|
if (instance.object.__r3f) delete instance.object.__r3f;
|
|
13870
13907
|
if (instance.type !== "primitive") disposeOnIdle(instance.object);
|
|
13871
13908
|
}
|
|
@@ -13874,9 +13911,13 @@ function swapReconstructedInstances() {
|
|
|
13874
13911
|
const parent = instance.parent;
|
|
13875
13912
|
if (parent) {
|
|
13876
13913
|
const target = catalogue[toPascalCase(instance.type)];
|
|
13914
|
+
const prevObject = instance.object;
|
|
13877
13915
|
instance.object = instance.props.object ?? new target(...instance.props.args ?? []);
|
|
13878
13916
|
instance.object.__r3f = instance;
|
|
13879
13917
|
setFiberRef(fiber, instance.object);
|
|
13918
|
+
if (isObject3D(prevObject) && isObject3D(instance.object)) {
|
|
13919
|
+
swapInteractivity(findInitialRoot(instance), prevObject, instance.object);
|
|
13920
|
+
}
|
|
13880
13921
|
delete instance.appliedOnce;
|
|
13881
13922
|
instance.eventCount = 0;
|
|
13882
13923
|
instance.handlers = {};
|
|
@@ -15176,4 +15217,4 @@ function Canvas(props) {
|
|
|
15176
15217
|
|
|
15177
15218
|
extend(THREE);
|
|
15178
15219
|
|
|
15179
|
-
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
15220
|
+
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
package/dist/legacy.cjs
CHANGED
|
@@ -1115,6 +1115,41 @@ function releaseInternalPointerCapture(internal, obj, pointerId) {
|
|
|
1115
1115
|
captureData.target.releasePointerCapture(pointerId);
|
|
1116
1116
|
}
|
|
1117
1117
|
}
|
|
1118
|
+
function swapInteractivity(store, object, newObject) {
|
|
1119
|
+
const { internal } = store.getState();
|
|
1120
|
+
for (let i = 0; i < internal.interaction.length; i++) {
|
|
1121
|
+
if (internal.interaction[i] === object) internal.interaction[i] = newObject;
|
|
1122
|
+
}
|
|
1123
|
+
for (const pointerState of internal.pointerMap.values()) {
|
|
1124
|
+
for (let i = 0; i < pointerState.initialHits.length; i++) {
|
|
1125
|
+
if (pointerState.initialHits[i] === object) pointerState.initialHits[i] = newObject;
|
|
1126
|
+
}
|
|
1127
|
+
pointerState.hovered.forEach((value, key) => {
|
|
1128
|
+
if (value.eventObject === object || value.object === object) {
|
|
1129
|
+
pointerState.hovered.delete(key);
|
|
1130
|
+
const next = {
|
|
1131
|
+
...value,
|
|
1132
|
+
eventObject: value.eventObject === object ? newObject : value.eventObject,
|
|
1133
|
+
object: value.object === object ? newObject : value.object
|
|
1134
|
+
};
|
|
1135
|
+
pointerState.hovered.set(makeId(next), next);
|
|
1136
|
+
}
|
|
1137
|
+
});
|
|
1138
|
+
const captureData = pointerState.captured.get(object);
|
|
1139
|
+
if (captureData) {
|
|
1140
|
+
pointerState.captured.delete(object);
|
|
1141
|
+
pointerState.captured.set(newObject, {
|
|
1142
|
+
...captureData,
|
|
1143
|
+
intersection: {
|
|
1144
|
+
...captureData.intersection,
|
|
1145
|
+
object: captureData.intersection.object === object ? newObject : captureData.intersection.object,
|
|
1146
|
+
eventObject: captureData.intersection.eventObject === object ? newObject : captureData.intersection.eventObject
|
|
1147
|
+
}
|
|
1148
|
+
});
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
unregisterVisibility(store, object);
|
|
1152
|
+
}
|
|
1118
1153
|
function removeInteractivity(store, object) {
|
|
1119
1154
|
const { internal } = store.getState();
|
|
1120
1155
|
internal.interaction = internal.interaction.filter((o) => o !== object);
|
|
@@ -13892,7 +13927,9 @@ function swapReconstructedInstances() {
|
|
|
13892
13927
|
}
|
|
13893
13928
|
}
|
|
13894
13929
|
if (instance.isHidden) unhideInstance(instance);
|
|
13895
|
-
if (isObject3D(instance.object)
|
|
13930
|
+
if (isObject3D(instance.object) && !instance.parent) {
|
|
13931
|
+
removeInteractivity(findInitialRoot(instance), instance.object);
|
|
13932
|
+
}
|
|
13896
13933
|
if (instance.object.__r3f) delete instance.object.__r3f;
|
|
13897
13934
|
if (instance.type !== "primitive") disposeOnIdle(instance.object);
|
|
13898
13935
|
}
|
|
@@ -13901,9 +13938,13 @@ function swapReconstructedInstances() {
|
|
|
13901
13938
|
const parent = instance.parent;
|
|
13902
13939
|
if (parent) {
|
|
13903
13940
|
const target = catalogue[toPascalCase(instance.type)];
|
|
13941
|
+
const prevObject = instance.object;
|
|
13904
13942
|
instance.object = instance.props.object ?? new target(...instance.props.args ?? []);
|
|
13905
13943
|
instance.object.__r3f = instance;
|
|
13906
13944
|
setFiberRef(fiber, instance.object);
|
|
13945
|
+
if (isObject3D(prevObject) && isObject3D(instance.object)) {
|
|
13946
|
+
swapInteractivity(findInitialRoot(instance), prevObject, instance.object);
|
|
13947
|
+
}
|
|
13907
13948
|
delete instance.appliedOnce;
|
|
13908
13949
|
instance.eventCount = 0;
|
|
13909
13950
|
instance.handlers = {};
|
|
@@ -15224,6 +15265,7 @@ exports.reconciler = reconciler;
|
|
|
15224
15265
|
exports.registerPrimary = registerPrimary;
|
|
15225
15266
|
exports.removeInteractivity = removeInteractivity;
|
|
15226
15267
|
exports.resolve = resolve;
|
|
15268
|
+
exports.swapInteractivity = swapInteractivity;
|
|
15227
15269
|
exports.unmountComponentAtNode = unmountComponentAtNode;
|
|
15228
15270
|
exports.unregisterPrimary = unregisterPrimary;
|
|
15229
15271
|
exports.updateCamera = updateCamera;
|
package/dist/legacy.d.cts
CHANGED
|
@@ -1821,6 +1821,24 @@ declare module '@react-three/fiber' {
|
|
|
1821
1821
|
*/
|
|
1822
1822
|
declare function Environment(props: EnvironmentProps): react_jsx_runtime.JSX.Element;
|
|
1823
1823
|
|
|
1824
|
+
/**
|
|
1825
|
+
* Moves every trace of interactivity from one object to its replacement, for reconstruction.
|
|
1826
|
+
*
|
|
1827
|
+
* When `args` or a `primitive`'s `object` changes, R3F builds a new three object and keeps the same
|
|
1828
|
+
* instance. Removing the old object from the interaction state and registering the new one from
|
|
1829
|
+
* scratch makes events *work* again (#3778), but it forgets what was in flight: a pointer resting on
|
|
1830
|
+
* the object fires a second `onPointerEnter` without ever having left, and an active pointer capture
|
|
1831
|
+
* is dropped mid-drag. Rewriting the references instead keeps the interaction continuous across a
|
|
1832
|
+
* swap the user never asked to see (#3744).
|
|
1833
|
+
*
|
|
1834
|
+
* Captures are re-keyed rather than released, so the DOM-level capture on `captureData.target` is
|
|
1835
|
+
* left alone — releasing and re-acquiring it is precisely the glitch being avoided.
|
|
1836
|
+
*
|
|
1837
|
+
* Visibility handlers are deliberately not transferred: that registry is keyed by `object.uuid`, so
|
|
1838
|
+
* the replacement re-registers itself through `applyProps`. The old entry is dropped here so it
|
|
1839
|
+
* cannot outlive the object it described.
|
|
1840
|
+
*/
|
|
1841
|
+
declare function swapInteractivity(store: RootStore, object: Object3D, newObject: Object3D): void;
|
|
1824
1842
|
declare function removeInteractivity(store: RootStore, object: Object3D): void;
|
|
1825
1843
|
declare function createEvents(store: RootStore): {
|
|
1826
1844
|
handlePointer: (name: string) => (event: DomEvent) => void;
|
|
@@ -3729,5 +3747,5 @@ declare function isOnce(value: unknown): value is {
|
|
|
3729
3747
|
*/
|
|
3730
3748
|
declare function Canvas(props: CanvasProps): react_jsx_runtime.JSX.Element;
|
|
3731
3749
|
|
|
3732
|
-
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
3750
|
+
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
3733
3751
|
export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferLike, BufferRecord, BufferStore, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, DefaultGLProps, DefaultRendererProps, Disposable, DisposeOptions, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, LegacyInternalState as InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeProps, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, LegacyRenderer as R3FRenderer, RaycastableRepresentation, ReactProps, ReconcilerRoot, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, LegacyRootState as RootState, RootStore, SetBlock, Size, StorageLike, StorageRecord, StorageStore, Subscription, TSLNodeInput, TextureInput, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, XRManager, XRPointerConfig };
|
package/dist/legacy.d.mts
CHANGED
|
@@ -1821,6 +1821,24 @@ declare module '@react-three/fiber' {
|
|
|
1821
1821
|
*/
|
|
1822
1822
|
declare function Environment(props: EnvironmentProps): react_jsx_runtime.JSX.Element;
|
|
1823
1823
|
|
|
1824
|
+
/**
|
|
1825
|
+
* Moves every trace of interactivity from one object to its replacement, for reconstruction.
|
|
1826
|
+
*
|
|
1827
|
+
* When `args` or a `primitive`'s `object` changes, R3F builds a new three object and keeps the same
|
|
1828
|
+
* instance. Removing the old object from the interaction state and registering the new one from
|
|
1829
|
+
* scratch makes events *work* again (#3778), but it forgets what was in flight: a pointer resting on
|
|
1830
|
+
* the object fires a second `onPointerEnter` without ever having left, and an active pointer capture
|
|
1831
|
+
* is dropped mid-drag. Rewriting the references instead keeps the interaction continuous across a
|
|
1832
|
+
* swap the user never asked to see (#3744).
|
|
1833
|
+
*
|
|
1834
|
+
* Captures are re-keyed rather than released, so the DOM-level capture on `captureData.target` is
|
|
1835
|
+
* left alone — releasing and re-acquiring it is precisely the glitch being avoided.
|
|
1836
|
+
*
|
|
1837
|
+
* Visibility handlers are deliberately not transferred: that registry is keyed by `object.uuid`, so
|
|
1838
|
+
* the replacement re-registers itself through `applyProps`. The old entry is dropped here so it
|
|
1839
|
+
* cannot outlive the object it described.
|
|
1840
|
+
*/
|
|
1841
|
+
declare function swapInteractivity(store: RootStore, object: Object3D, newObject: Object3D): void;
|
|
1824
1842
|
declare function removeInteractivity(store: RootStore, object: Object3D): void;
|
|
1825
1843
|
declare function createEvents(store: RootStore): {
|
|
1826
1844
|
handlePointer: (name: string) => (event: DomEvent) => void;
|
|
@@ -3729,5 +3747,5 @@ declare function isOnce(value: unknown): value is {
|
|
|
3729
3747
|
*/
|
|
3730
3748
|
declare function Canvas(props: CanvasProps): react_jsx_runtime.JSX.Element;
|
|
3731
3749
|
|
|
3732
|
-
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
3750
|
+
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
3733
3751
|
export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferLike, BufferRecord, BufferStore, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, DefaultGLProps, DefaultRendererProps, Disposable, DisposeOptions, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, LegacyInternalState as InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeProps, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, LegacyRenderer as R3FRenderer, RaycastableRepresentation, ReactProps, ReconcilerRoot, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, LegacyRootState as RootState, RootStore, SetBlock, Size, StorageLike, StorageRecord, StorageStore, Subscription, TSLNodeInput, TextureInput, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, XRManager, XRPointerConfig };
|
package/dist/legacy.d.ts
CHANGED
|
@@ -1821,6 +1821,24 @@ declare module '@react-three/fiber' {
|
|
|
1821
1821
|
*/
|
|
1822
1822
|
declare function Environment(props: EnvironmentProps): react_jsx_runtime.JSX.Element;
|
|
1823
1823
|
|
|
1824
|
+
/**
|
|
1825
|
+
* Moves every trace of interactivity from one object to its replacement, for reconstruction.
|
|
1826
|
+
*
|
|
1827
|
+
* When `args` or a `primitive`'s `object` changes, R3F builds a new three object and keeps the same
|
|
1828
|
+
* instance. Removing the old object from the interaction state and registering the new one from
|
|
1829
|
+
* scratch makes events *work* again (#3778), but it forgets what was in flight: a pointer resting on
|
|
1830
|
+
* the object fires a second `onPointerEnter` without ever having left, and an active pointer capture
|
|
1831
|
+
* is dropped mid-drag. Rewriting the references instead keeps the interaction continuous across a
|
|
1832
|
+
* swap the user never asked to see (#3744).
|
|
1833
|
+
*
|
|
1834
|
+
* Captures are re-keyed rather than released, so the DOM-level capture on `captureData.target` is
|
|
1835
|
+
* left alone — releasing and re-acquiring it is precisely the glitch being avoided.
|
|
1836
|
+
*
|
|
1837
|
+
* Visibility handlers are deliberately not transferred: that registry is keyed by `object.uuid`, so
|
|
1838
|
+
* the replacement re-registers itself through `applyProps`. The old entry is dropped here so it
|
|
1839
|
+
* cannot outlive the object it described.
|
|
1840
|
+
*/
|
|
1841
|
+
declare function swapInteractivity(store: RootStore, object: Object3D, newObject: Object3D): void;
|
|
1824
1842
|
declare function removeInteractivity(store: RootStore, object: Object3D): void;
|
|
1825
1843
|
declare function createEvents(store: RootStore): {
|
|
1826
1844
|
handlePointer: (name: string) => (event: DomEvent) => void;
|
|
@@ -3729,5 +3747,5 @@ declare function isOnce(value: unknown): value is {
|
|
|
3729
3747
|
*/
|
|
3730
3748
|
declare function Canvas(props: CanvasProps): react_jsx_runtime.JSX.Element;
|
|
3731
3749
|
|
|
3732
|
-
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
3750
|
+
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
3733
3751
|
export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferLike, BufferRecord, BufferStore, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, DefaultGLProps, DefaultRendererProps, Disposable, DisposeOptions, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, LegacyInternalState as InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeProps, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, LegacyRenderer as R3FRenderer, RaycastableRepresentation, ReactProps, ReconcilerRoot, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, LegacyRootState as RootState, RootStore, SetBlock, Size, StorageLike, StorageRecord, StorageStore, Subscription, TSLNodeInput, TextureInput, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, XRManager, XRPointerConfig };
|
package/dist/legacy.mjs
CHANGED
|
@@ -1095,6 +1095,41 @@ function releaseInternalPointerCapture(internal, obj, pointerId) {
|
|
|
1095
1095
|
captureData.target.releasePointerCapture(pointerId);
|
|
1096
1096
|
}
|
|
1097
1097
|
}
|
|
1098
|
+
function swapInteractivity(store, object, newObject) {
|
|
1099
|
+
const { internal } = store.getState();
|
|
1100
|
+
for (let i = 0; i < internal.interaction.length; i++) {
|
|
1101
|
+
if (internal.interaction[i] === object) internal.interaction[i] = newObject;
|
|
1102
|
+
}
|
|
1103
|
+
for (const pointerState of internal.pointerMap.values()) {
|
|
1104
|
+
for (let i = 0; i < pointerState.initialHits.length; i++) {
|
|
1105
|
+
if (pointerState.initialHits[i] === object) pointerState.initialHits[i] = newObject;
|
|
1106
|
+
}
|
|
1107
|
+
pointerState.hovered.forEach((value, key) => {
|
|
1108
|
+
if (value.eventObject === object || value.object === object) {
|
|
1109
|
+
pointerState.hovered.delete(key);
|
|
1110
|
+
const next = {
|
|
1111
|
+
...value,
|
|
1112
|
+
eventObject: value.eventObject === object ? newObject : value.eventObject,
|
|
1113
|
+
object: value.object === object ? newObject : value.object
|
|
1114
|
+
};
|
|
1115
|
+
pointerState.hovered.set(makeId(next), next);
|
|
1116
|
+
}
|
|
1117
|
+
});
|
|
1118
|
+
const captureData = pointerState.captured.get(object);
|
|
1119
|
+
if (captureData) {
|
|
1120
|
+
pointerState.captured.delete(object);
|
|
1121
|
+
pointerState.captured.set(newObject, {
|
|
1122
|
+
...captureData,
|
|
1123
|
+
intersection: {
|
|
1124
|
+
...captureData.intersection,
|
|
1125
|
+
object: captureData.intersection.object === object ? newObject : captureData.intersection.object,
|
|
1126
|
+
eventObject: captureData.intersection.eventObject === object ? newObject : captureData.intersection.eventObject
|
|
1127
|
+
}
|
|
1128
|
+
});
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1131
|
+
unregisterVisibility(store, object);
|
|
1132
|
+
}
|
|
1098
1133
|
function removeInteractivity(store, object) {
|
|
1099
1134
|
const { internal } = store.getState();
|
|
1100
1135
|
internal.interaction = internal.interaction.filter((o) => o !== object);
|
|
@@ -13872,7 +13907,9 @@ function swapReconstructedInstances() {
|
|
|
13872
13907
|
}
|
|
13873
13908
|
}
|
|
13874
13909
|
if (instance.isHidden) unhideInstance(instance);
|
|
13875
|
-
if (isObject3D(instance.object)
|
|
13910
|
+
if (isObject3D(instance.object) && !instance.parent) {
|
|
13911
|
+
removeInteractivity(findInitialRoot(instance), instance.object);
|
|
13912
|
+
}
|
|
13876
13913
|
if (instance.object.__r3f) delete instance.object.__r3f;
|
|
13877
13914
|
if (instance.type !== "primitive") disposeOnIdle(instance.object);
|
|
13878
13915
|
}
|
|
@@ -13881,9 +13918,13 @@ function swapReconstructedInstances() {
|
|
|
13881
13918
|
const parent = instance.parent;
|
|
13882
13919
|
if (parent) {
|
|
13883
13920
|
const target = catalogue[toPascalCase(instance.type)];
|
|
13921
|
+
const prevObject = instance.object;
|
|
13884
13922
|
instance.object = instance.props.object ?? new target(...instance.props.args ?? []);
|
|
13885
13923
|
instance.object.__r3f = instance;
|
|
13886
13924
|
setFiberRef(fiber, instance.object);
|
|
13925
|
+
if (isObject3D(prevObject) && isObject3D(instance.object)) {
|
|
13926
|
+
swapInteractivity(findInitialRoot(instance), prevObject, instance.object);
|
|
13927
|
+
}
|
|
13887
13928
|
delete instance.appliedOnce;
|
|
13888
13929
|
instance.eventCount = 0;
|
|
13889
13930
|
instance.handlers = {};
|
|
@@ -15136,4 +15177,4 @@ function Canvas(props) {
|
|
|
15136
15177
|
|
|
15137
15178
|
extend(THREE);
|
|
15138
15179
|
|
|
15139
|
-
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
|
15180
|
+
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, context, createEvents, createPointerEvents, createPortal, createRoot, createStore, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, reconciler, registerPrimary, removeInteractivity, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useEnvironment, useFrame, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useMutableCallback, useRenderTarget, useStore, useTexture, useTextures, useThree, waitForPrimary };
|
package/dist/webgpu/index.cjs
CHANGED
|
@@ -1116,6 +1116,41 @@ function releaseInternalPointerCapture(internal, obj, pointerId) {
|
|
|
1116
1116
|
captureData.target.releasePointerCapture(pointerId);
|
|
1117
1117
|
}
|
|
1118
1118
|
}
|
|
1119
|
+
function swapInteractivity(store, object, newObject) {
|
|
1120
|
+
const { internal } = store.getState();
|
|
1121
|
+
for (let i = 0; i < internal.interaction.length; i++) {
|
|
1122
|
+
if (internal.interaction[i] === object) internal.interaction[i] = newObject;
|
|
1123
|
+
}
|
|
1124
|
+
for (const pointerState of internal.pointerMap.values()) {
|
|
1125
|
+
for (let i = 0; i < pointerState.initialHits.length; i++) {
|
|
1126
|
+
if (pointerState.initialHits[i] === object) pointerState.initialHits[i] = newObject;
|
|
1127
|
+
}
|
|
1128
|
+
pointerState.hovered.forEach((value, key) => {
|
|
1129
|
+
if (value.eventObject === object || value.object === object) {
|
|
1130
|
+
pointerState.hovered.delete(key);
|
|
1131
|
+
const next = {
|
|
1132
|
+
...value,
|
|
1133
|
+
eventObject: value.eventObject === object ? newObject : value.eventObject,
|
|
1134
|
+
object: value.object === object ? newObject : value.object
|
|
1135
|
+
};
|
|
1136
|
+
pointerState.hovered.set(makeId(next), next);
|
|
1137
|
+
}
|
|
1138
|
+
});
|
|
1139
|
+
const captureData = pointerState.captured.get(object);
|
|
1140
|
+
if (captureData) {
|
|
1141
|
+
pointerState.captured.delete(object);
|
|
1142
|
+
pointerState.captured.set(newObject, {
|
|
1143
|
+
...captureData,
|
|
1144
|
+
intersection: {
|
|
1145
|
+
...captureData.intersection,
|
|
1146
|
+
object: captureData.intersection.object === object ? newObject : captureData.intersection.object,
|
|
1147
|
+
eventObject: captureData.intersection.eventObject === object ? newObject : captureData.intersection.eventObject
|
|
1148
|
+
}
|
|
1149
|
+
});
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
unregisterVisibility(store, object);
|
|
1153
|
+
}
|
|
1119
1154
|
function removeInteractivity(store, object) {
|
|
1120
1155
|
const { internal } = store.getState();
|
|
1121
1156
|
internal.interaction = internal.interaction.filter((o) => o !== object);
|
|
@@ -13893,7 +13928,9 @@ function swapReconstructedInstances() {
|
|
|
13893
13928
|
}
|
|
13894
13929
|
}
|
|
13895
13930
|
if (instance.isHidden) unhideInstance(instance);
|
|
13896
|
-
if (isObject3D(instance.object)
|
|
13931
|
+
if (isObject3D(instance.object) && !instance.parent) {
|
|
13932
|
+
removeInteractivity(findInitialRoot(instance), instance.object);
|
|
13933
|
+
}
|
|
13897
13934
|
if (instance.object.__r3f) delete instance.object.__r3f;
|
|
13898
13935
|
if (instance.type !== "primitive") disposeOnIdle(instance.object);
|
|
13899
13936
|
}
|
|
@@ -13902,9 +13939,13 @@ function swapReconstructedInstances() {
|
|
|
13902
13939
|
const parent = instance.parent;
|
|
13903
13940
|
if (parent) {
|
|
13904
13941
|
const target = catalogue[toPascalCase(instance.type)];
|
|
13942
|
+
const prevObject = instance.object;
|
|
13905
13943
|
instance.object = instance.props.object ?? new target(...instance.props.args ?? []);
|
|
13906
13944
|
instance.object.__r3f = instance;
|
|
13907
13945
|
setFiberRef(fiber, instance.object);
|
|
13946
|
+
if (isObject3D(prevObject) && isObject3D(instance.object)) {
|
|
13947
|
+
swapInteractivity(findInitialRoot(instance), prevObject, instance.object);
|
|
13948
|
+
}
|
|
13908
13949
|
delete instance.appliedOnce;
|
|
13909
13950
|
instance.eventCount = 0;
|
|
13910
13951
|
instance.handlers = {};
|
|
@@ -16111,6 +16152,7 @@ exports.removeInteractivity = removeInteractivity;
|
|
|
16111
16152
|
exports.removeNodes = removeNodes;
|
|
16112
16153
|
exports.removeUniforms = removeUniforms;
|
|
16113
16154
|
exports.resolve = resolve;
|
|
16155
|
+
exports.swapInteractivity = swapInteractivity;
|
|
16114
16156
|
exports.unmountComponentAtNode = unmountComponentAtNode;
|
|
16115
16157
|
exports.unregisterPrimary = unregisterPrimary;
|
|
16116
16158
|
exports.updateCamera = updateCamera;
|
package/dist/webgpu/index.d.cts
CHANGED
|
@@ -1824,6 +1824,24 @@ declare module '@react-three/fiber' {
|
|
|
1824
1824
|
*/
|
|
1825
1825
|
declare function Environment(props: EnvironmentProps): react_jsx_runtime.JSX.Element;
|
|
1826
1826
|
|
|
1827
|
+
/**
|
|
1828
|
+
* Moves every trace of interactivity from one object to its replacement, for reconstruction.
|
|
1829
|
+
*
|
|
1830
|
+
* When `args` or a `primitive`'s `object` changes, R3F builds a new three object and keeps the same
|
|
1831
|
+
* instance. Removing the old object from the interaction state and registering the new one from
|
|
1832
|
+
* scratch makes events *work* again (#3778), but it forgets what was in flight: a pointer resting on
|
|
1833
|
+
* the object fires a second `onPointerEnter` without ever having left, and an active pointer capture
|
|
1834
|
+
* is dropped mid-drag. Rewriting the references instead keeps the interaction continuous across a
|
|
1835
|
+
* swap the user never asked to see (#3744).
|
|
1836
|
+
*
|
|
1837
|
+
* Captures are re-keyed rather than released, so the DOM-level capture on `captureData.target` is
|
|
1838
|
+
* left alone — releasing and re-acquiring it is precisely the glitch being avoided.
|
|
1839
|
+
*
|
|
1840
|
+
* Visibility handlers are deliberately not transferred: that registry is keyed by `object.uuid`, so
|
|
1841
|
+
* the replacement re-registers itself through `applyProps`. The old entry is dropped here so it
|
|
1842
|
+
* cannot outlive the object it described.
|
|
1843
|
+
*/
|
|
1844
|
+
declare function swapInteractivity(store: RootStore, object: Object3D, newObject: Object3D): void;
|
|
1827
1845
|
declare function removeInteractivity(store: RootStore, object: Object3D): void;
|
|
1828
1846
|
declare function createEvents(store: RootStore): {
|
|
1829
1847
|
handlePointer: (name: string) => (event: DomEvent) => void;
|
|
@@ -4146,5 +4164,5 @@ interface WebGPURootState extends Omit<RootState, 'renderer' | 'gl' | 'internal'
|
|
|
4146
4164
|
internal: WebGPUInternalState
|
|
4147
4165
|
}
|
|
4148
4166
|
|
|
4149
|
-
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, clearNodeScope, clearRootNodes, clearRootUniforms, clearScope, context, createEvents, createPointerEvents, createPortal, createRoot, createScopedStore, createStore, createTextureOperations, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, rebuildAllBuffers, rebuildAllNodes, rebuildAllStorage, rebuildAllUniforms, reconciler, registerPrimary, removeInteractivity, removeNodes, removeUniforms, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useBuffers, useEnvironment, useFrame, useGPUStorage, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useLocalNodes, useMutableCallback, useNodes, useRenderPipeline, useRenderTarget, useStore, useTexture, useTextures, useThree, useUniform, useUniforms, waitForPrimary };
|
|
4167
|
+
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, clearNodeScope, clearRootNodes, clearRootUniforms, clearScope, context, createEvents, createPointerEvents, createPortal, createRoot, createScopedStore, createStore, createTextureOperations, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, rebuildAllBuffers, rebuildAllNodes, rebuildAllStorage, rebuildAllUniforms, reconciler, registerPrimary, removeInteractivity, removeNodes, removeUniforms, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useBuffers, useEnvironment, useFrame, useGPUStorage, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useLocalNodes, useMutableCallback, useNodes, useRenderPipeline, useRenderTarget, useStore, useTexture, useTextures, useThree, useUniform, useUniforms, waitForPrimary };
|
|
4150
4168
|
export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferCreator, BufferLike, BufferRecord, BufferStore, BuffersWithUtils, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, ClearBuffersFn, ClearNodesFn, ClearStorageFn, ClearUniformsFn, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, CreatorState, DefaultGLProps, DefaultRendererProps, Disposable, DisposeBuffersFn, DisposeOptions, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, WebGPUInternalState as InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, LocalNodeCreator, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeCreator, NodeProps, NodeRecord, NodesWithUtils, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, WebGPUR3FRenderer as R3FRenderer, RaycastableRepresentation, ReactProps, RebuildBuffersFn, RebuildNodesFn, RebuildStorageFn, RebuildUniformsFn, ReconcilerRoot, RemoveBuffersFn, RemoveNodesFn, RemoveStorageFn, RemoveUniformsFn, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, WebGPURootState as RootState, RootStore, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureInput, TextureNode, TextureOperations, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
|
package/dist/webgpu/index.d.mts
CHANGED
|
@@ -1824,6 +1824,24 @@ declare module '@react-three/fiber' {
|
|
|
1824
1824
|
*/
|
|
1825
1825
|
declare function Environment(props: EnvironmentProps): react_jsx_runtime.JSX.Element;
|
|
1826
1826
|
|
|
1827
|
+
/**
|
|
1828
|
+
* Moves every trace of interactivity from one object to its replacement, for reconstruction.
|
|
1829
|
+
*
|
|
1830
|
+
* When `args` or a `primitive`'s `object` changes, R3F builds a new three object and keeps the same
|
|
1831
|
+
* instance. Removing the old object from the interaction state and registering the new one from
|
|
1832
|
+
* scratch makes events *work* again (#3778), but it forgets what was in flight: a pointer resting on
|
|
1833
|
+
* the object fires a second `onPointerEnter` without ever having left, and an active pointer capture
|
|
1834
|
+
* is dropped mid-drag. Rewriting the references instead keeps the interaction continuous across a
|
|
1835
|
+
* swap the user never asked to see (#3744).
|
|
1836
|
+
*
|
|
1837
|
+
* Captures are re-keyed rather than released, so the DOM-level capture on `captureData.target` is
|
|
1838
|
+
* left alone — releasing and re-acquiring it is precisely the glitch being avoided.
|
|
1839
|
+
*
|
|
1840
|
+
* Visibility handlers are deliberately not transferred: that registry is keyed by `object.uuid`, so
|
|
1841
|
+
* the replacement re-registers itself through `applyProps`. The old entry is dropped here so it
|
|
1842
|
+
* cannot outlive the object it described.
|
|
1843
|
+
*/
|
|
1844
|
+
declare function swapInteractivity(store: RootStore, object: Object3D, newObject: Object3D): void;
|
|
1827
1845
|
declare function removeInteractivity(store: RootStore, object: Object3D): void;
|
|
1828
1846
|
declare function createEvents(store: RootStore): {
|
|
1829
1847
|
handlePointer: (name: string) => (event: DomEvent) => void;
|
|
@@ -4146,5 +4164,5 @@ interface WebGPURootState extends Omit<RootState, 'renderer' | 'gl' | 'internal'
|
|
|
4146
4164
|
internal: WebGPUInternalState
|
|
4147
4165
|
}
|
|
4148
4166
|
|
|
4149
|
-
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, clearNodeScope, clearRootNodes, clearRootUniforms, clearScope, context, createEvents, createPointerEvents, createPortal, createRoot, createScopedStore, createStore, createTextureOperations, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, rebuildAllBuffers, rebuildAllNodes, rebuildAllStorage, rebuildAllUniforms, reconciler, registerPrimary, removeInteractivity, removeNodes, removeUniforms, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useBuffers, useEnvironment, useFrame, useGPUStorage, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useLocalNodes, useMutableCallback, useNodes, useRenderPipeline, useRenderTarget, useStore, useTexture, useTextures, useThree, useUniform, useUniforms, waitForPrimary };
|
|
4167
|
+
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, clearNodeScope, clearRootNodes, clearRootUniforms, clearScope, context, createEvents, createPointerEvents, createPortal, createRoot, createScopedStore, createStore, createTextureOperations, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, rebuildAllBuffers, rebuildAllNodes, rebuildAllStorage, rebuildAllUniforms, reconciler, registerPrimary, removeInteractivity, removeNodes, removeUniforms, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useBuffers, useEnvironment, useFrame, useGPUStorage, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useLocalNodes, useMutableCallback, useNodes, useRenderPipeline, useRenderTarget, useStore, useTexture, useTextures, useThree, useUniform, useUniforms, waitForPrimary };
|
|
4150
4168
|
export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferCreator, BufferLike, BufferRecord, BufferStore, BuffersWithUtils, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, ClearBuffersFn, ClearNodesFn, ClearStorageFn, ClearUniformsFn, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, CreatorState, DefaultGLProps, DefaultRendererProps, Disposable, DisposeBuffersFn, DisposeOptions, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, WebGPUInternalState as InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, LocalNodeCreator, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeCreator, NodeProps, NodeRecord, NodesWithUtils, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, WebGPUR3FRenderer as R3FRenderer, RaycastableRepresentation, ReactProps, RebuildBuffersFn, RebuildNodesFn, RebuildStorageFn, RebuildUniformsFn, ReconcilerRoot, RemoveBuffersFn, RemoveNodesFn, RemoveStorageFn, RemoveUniformsFn, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, WebGPURootState as RootState, RootStore, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureInput, TextureNode, TextureOperations, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
|
package/dist/webgpu/index.d.ts
CHANGED
|
@@ -1824,6 +1824,24 @@ declare module '@react-three/fiber' {
|
|
|
1824
1824
|
*/
|
|
1825
1825
|
declare function Environment(props: EnvironmentProps): react_jsx_runtime.JSX.Element;
|
|
1826
1826
|
|
|
1827
|
+
/**
|
|
1828
|
+
* Moves every trace of interactivity from one object to its replacement, for reconstruction.
|
|
1829
|
+
*
|
|
1830
|
+
* When `args` or a `primitive`'s `object` changes, R3F builds a new three object and keeps the same
|
|
1831
|
+
* instance. Removing the old object from the interaction state and registering the new one from
|
|
1832
|
+
* scratch makes events *work* again (#3778), but it forgets what was in flight: a pointer resting on
|
|
1833
|
+
* the object fires a second `onPointerEnter` without ever having left, and an active pointer capture
|
|
1834
|
+
* is dropped mid-drag. Rewriting the references instead keeps the interaction continuous across a
|
|
1835
|
+
* swap the user never asked to see (#3744).
|
|
1836
|
+
*
|
|
1837
|
+
* Captures are re-keyed rather than released, so the DOM-level capture on `captureData.target` is
|
|
1838
|
+
* left alone — releasing and re-acquiring it is precisely the glitch being avoided.
|
|
1839
|
+
*
|
|
1840
|
+
* Visibility handlers are deliberately not transferred: that registry is keyed by `object.uuid`, so
|
|
1841
|
+
* the replacement re-registers itself through `applyProps`. The old entry is dropped here so it
|
|
1842
|
+
* cannot outlive the object it described.
|
|
1843
|
+
*/
|
|
1844
|
+
declare function swapInteractivity(store: RootStore, object: Object3D, newObject: Object3D): void;
|
|
1827
1845
|
declare function removeInteractivity(store: RootStore, object: Object3D): void;
|
|
1828
1846
|
declare function createEvents(store: RootStore): {
|
|
1829
1847
|
handlePointer: (name: string) => (event: DomEvent) => void;
|
|
@@ -4146,5 +4164,5 @@ interface WebGPURootState extends Omit<RootState, 'renderer' | 'gl' | 'internal'
|
|
|
4146
4164
|
internal: WebGPUInternalState
|
|
4147
4165
|
}
|
|
4148
4166
|
|
|
4149
|
-
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, clearNodeScope, clearRootNodes, clearRootUniforms, clearScope, context, createEvents, createPointerEvents, createPortal, createRoot, createScopedStore, createStore, createTextureOperations, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, rebuildAllBuffers, rebuildAllNodes, rebuildAllStorage, rebuildAllUniforms, reconciler, registerPrimary, removeInteractivity, removeNodes, removeUniforms, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useBuffers, useEnvironment, useFrame, useGPUStorage, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useLocalNodes, useMutableCallback, useNodes, useRenderPipeline, useRenderTarget, useStore, useTexture, useTextures, useThree, useUniform, useUniforms, waitForPrimary };
|
|
4167
|
+
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, three_d as ReactThreeFiber, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, clearNodeScope, clearRootNodes, clearRootUniforms, clearScope, context, createEvents, createPointerEvents, createPortal, createRoot, createScopedStore, createStore, createTextureOperations, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, rebuildAllBuffers, rebuildAllNodes, rebuildAllStorage, rebuildAllUniforms, reconciler, registerPrimary, removeInteractivity, removeNodes, removeUniforms, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useBuffers, useEnvironment, useFrame, useGPUStorage, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useLocalNodes, useMutableCallback, useNodes, useRenderPipeline, useRenderTarget, useStore, useTexture, useTextures, useThree, useUniform, useUniforms, waitForPrimary };
|
|
4150
4168
|
export type { Act, Args, ArgsProp, AttachFnType, AttachType, BackgroundConfig, BackgroundProp, BaseRendererProps, Bridge, BufferCreator, BufferLike, BufferRecord, BufferStore, BuffersWithUtils, Camera, CameraProps, CanvasProps, CanvasSchedulerConfig, Catalogue, ClearBuffersFn, ClearNodesFn, ClearStorageFn, ClearUniformsFn, Color, ColorManagementConfig, ComputeFunction, ConstructorRepresentation, CreatorState, DefaultGLProps, DefaultRendererProps, Disposable, DisposeBuffersFn, DisposeOptions, DisposeStorageFn, DomEvent, Dpr, ElementProps, EnvironmentLoaderProps, EnvironmentProps, EquConfig, Euler, EventHandlers, EventManager, EventProps, Events, Extensions, FiberRoot, FilterFunction, FrameCallback, FrameNextCallback, FrameNextState, FrameState, Frameloop, GLProps, GLTFLike, GeometryProps, GeometryTransformProps, GlobalEffectType, GlobalRenderCallback, HostConfig, InferLoadResult, InjectState, InputLike, Instance, InstanceProps, WebGPUInternalState as InternalState, Intersection, IntersectionEvent, IsAllOptional, IsOptional, Layers, LegacyInternalState, LegacyRenderer, LegacyRootState, LoaderInstance, LoaderLike, LoaderResult, LocalNodeCreator, MappedTextureType, MathProps, MathRepresentation, MathType, MathTypes, Matrix3, Matrix4, Mutable, MutableOrReadonlyParameters, NodeCreator, NodeProps, NodeRecord, NodesWithUtils, NonFunctionKeys, ObjectMap, OffscreenCanvas$1 as OffscreenCanvas, Overwrite, Performance, PointerCaptureTarget, PointerState, PresetsType, PrimaryCanvasEntry, Properties, Quaternion, WebGPUR3FRenderer as R3FRenderer, RaycastableRepresentation, ReactProps, RebuildBuffersFn, RebuildNodesFn, RebuildStorageFn, RebuildUniformsFn, ReconcilerRoot, RemoveBuffersFn, RemoveNodesFn, RemoveStorageFn, RemoveUniformsFn, RenderCallback, RenderProps, RenderTargetOptions, Renderer, RendererConfigExtended, RendererFactory, RendererProps, Root, WebGPURootState as RootState, RootStore, ScopedStoreType, SetBlock, Size, StorageCreator, StorageLike, StorageRecord, StorageStore, StorageWithUtils, Subscription, TSLNode, TSLNodeInput, TextureEntry, TextureInput, TextureNode, TextureOperations, TextureResult, ThreeCamera, ThreeElement, ThreeElements, ThreeElementsImpl, ThreeEvent, ThreeExports, ThreeToJSXElements, UnblockProps, UniformCreator, UniformValue, UniformsWithUtils, UseTextureOptions, UseTexturesReturn, Vector2, Vector3, Vector4, VectorRepresentation, Viewport, VisibilityEntry, WebGLDefaultProps, WebGLProps, WebGLShadowConfig, WebGPUDefaultProps, WebGPUProps, WebGPUShadowConfig, XRManager, XRPointerConfig };
|
package/dist/webgpu/index.mjs
CHANGED
|
@@ -1096,6 +1096,41 @@ function releaseInternalPointerCapture(internal, obj, pointerId) {
|
|
|
1096
1096
|
captureData.target.releasePointerCapture(pointerId);
|
|
1097
1097
|
}
|
|
1098
1098
|
}
|
|
1099
|
+
function swapInteractivity(store, object, newObject) {
|
|
1100
|
+
const { internal } = store.getState();
|
|
1101
|
+
for (let i = 0; i < internal.interaction.length; i++) {
|
|
1102
|
+
if (internal.interaction[i] === object) internal.interaction[i] = newObject;
|
|
1103
|
+
}
|
|
1104
|
+
for (const pointerState of internal.pointerMap.values()) {
|
|
1105
|
+
for (let i = 0; i < pointerState.initialHits.length; i++) {
|
|
1106
|
+
if (pointerState.initialHits[i] === object) pointerState.initialHits[i] = newObject;
|
|
1107
|
+
}
|
|
1108
|
+
pointerState.hovered.forEach((value, key) => {
|
|
1109
|
+
if (value.eventObject === object || value.object === object) {
|
|
1110
|
+
pointerState.hovered.delete(key);
|
|
1111
|
+
const next = {
|
|
1112
|
+
...value,
|
|
1113
|
+
eventObject: value.eventObject === object ? newObject : value.eventObject,
|
|
1114
|
+
object: value.object === object ? newObject : value.object
|
|
1115
|
+
};
|
|
1116
|
+
pointerState.hovered.set(makeId(next), next);
|
|
1117
|
+
}
|
|
1118
|
+
});
|
|
1119
|
+
const captureData = pointerState.captured.get(object);
|
|
1120
|
+
if (captureData) {
|
|
1121
|
+
pointerState.captured.delete(object);
|
|
1122
|
+
pointerState.captured.set(newObject, {
|
|
1123
|
+
...captureData,
|
|
1124
|
+
intersection: {
|
|
1125
|
+
...captureData.intersection,
|
|
1126
|
+
object: captureData.intersection.object === object ? newObject : captureData.intersection.object,
|
|
1127
|
+
eventObject: captureData.intersection.eventObject === object ? newObject : captureData.intersection.eventObject
|
|
1128
|
+
}
|
|
1129
|
+
});
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
unregisterVisibility(store, object);
|
|
1133
|
+
}
|
|
1099
1134
|
function removeInteractivity(store, object) {
|
|
1100
1135
|
const { internal } = store.getState();
|
|
1101
1136
|
internal.interaction = internal.interaction.filter((o) => o !== object);
|
|
@@ -13873,7 +13908,9 @@ function swapReconstructedInstances() {
|
|
|
13873
13908
|
}
|
|
13874
13909
|
}
|
|
13875
13910
|
if (instance.isHidden) unhideInstance(instance);
|
|
13876
|
-
if (isObject3D(instance.object)
|
|
13911
|
+
if (isObject3D(instance.object) && !instance.parent) {
|
|
13912
|
+
removeInteractivity(findInitialRoot(instance), instance.object);
|
|
13913
|
+
}
|
|
13877
13914
|
if (instance.object.__r3f) delete instance.object.__r3f;
|
|
13878
13915
|
if (instance.type !== "primitive") disposeOnIdle(instance.object);
|
|
13879
13916
|
}
|
|
@@ -13882,9 +13919,13 @@ function swapReconstructedInstances() {
|
|
|
13882
13919
|
const parent = instance.parent;
|
|
13883
13920
|
if (parent) {
|
|
13884
13921
|
const target = catalogue[toPascalCase(instance.type)];
|
|
13922
|
+
const prevObject = instance.object;
|
|
13885
13923
|
instance.object = instance.props.object ?? new target(...instance.props.args ?? []);
|
|
13886
13924
|
instance.object.__r3f = instance;
|
|
13887
13925
|
setFiberRef(fiber, instance.object);
|
|
13926
|
+
if (isObject3D(prevObject) && isObject3D(instance.object)) {
|
|
13927
|
+
swapInteractivity(findInitialRoot(instance), prevObject, instance.object);
|
|
13928
|
+
}
|
|
13888
13929
|
delete instance.appliedOnce;
|
|
13889
13930
|
instance.eventCount = 0;
|
|
13890
13931
|
instance.handlers = {};
|
|
@@ -16011,4 +16052,4 @@ function useRenderPipeline(mainCB, setupCB) {
|
|
|
16011
16052
|
|
|
16012
16053
|
extend(THREE);
|
|
16013
16054
|
|
|
16014
|
-
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, clearNodeScope, clearRootNodes, clearRootUniforms, clearScope, context, createEvents, createPointerEvents, createPortal, createRoot, createScopedStore, createStore, createTextureOperations, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, rebuildAllBuffers, rebuildAllNodes, rebuildAllStorage, rebuildAllUniforms, reconciler, registerPrimary, removeInteractivity, removeNodes, removeUniforms, resolve, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useBuffers, useEnvironment, useFrame, useGPUStorage, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useLocalNodes, useMutableCallback, useNodes, useRenderPipeline, useRenderTarget, useStore, useTexture, useTextures, useThree, useUniform, useUniforms, waitForPrimary };
|
|
16055
|
+
export { Block, Canvas, Environment, EnvironmentCube, EnvironmentMap, EnvironmentPortal, ErrorBoundary, FROM_REF, IsObject, ONCE, Portal, R3F_BUILD_LEGACY, R3F_BUILD_WEBGPU, REACT_INTERNAL_PROPS, RESERVED_PROPS, Texture, _roots, addAfterEffect, addEffect, addTail, advance, applyProps, attach, buildGraph, calculateDpr, clearNodeScope, clearRootNodes, clearRootUniforms, clearScope, context, createEvents, createPointerEvents, createPortal, createRoot, createScopedStore, createStore, createTextureOperations, detach, diffProps, dispose, createPointerEvents as events, extend, findInitialRoot, flushSync, fromRef, getInstanceProps, getPrimary, getPrimaryIds, getRootState, getUuidPrefix, hasConstructor, hasPrimary, invalidate, invalidateInstance, is, isColorRepresentation, isCopyable, isFromRef, isObject3D, isOnce, isOrthographicCamera, isRef, isRenderer, isTexture, isVectorLike, once, prepare, presetsObj, rebuildAllBuffers, rebuildAllNodes, rebuildAllStorage, rebuildAllUniforms, reconciler, registerPrimary, removeInteractivity, removeNodes, removeUniforms, resolve, swapInteractivity, unmountComponentAtNode, unregisterPrimary, updateCamera, updateFrustum, useBridge, useBuffers, useEnvironment, useFrame, useGPUStorage, useGraph, useInstanceHandle, useIsomorphicLayoutEffect, useLoader, useLocalNodes, useMutableCallback, useNodes, useRenderPipeline, useRenderTarget, useStore, useTexture, useTextures, useThree, useUniform, useUniforms, waitForPrimary };
|