@react-three/fiber 10.0.0-canary.98da52a → 10.0.0-canary.a1c1d93

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.
Files changed (32) hide show
  1. package/dist/extension.d.cts +3 -3
  2. package/dist/extension.d.mts +3 -3
  3. package/dist/extension.d.ts +3 -3
  4. package/dist/extension.mjs +1 -1
  5. package/dist/index.cjs +1 -1
  6. package/dist/index.d.cts +5 -5
  7. package/dist/index.d.mts +5 -5
  8. package/dist/index.d.ts +5 -5
  9. package/dist/index.mjs +3 -3
  10. package/dist/legacy.cjs +1 -1
  11. package/dist/legacy.d.cts +4 -4
  12. package/dist/legacy.d.mts +4 -4
  13. package/dist/legacy.d.ts +4 -4
  14. package/dist/legacy.mjs +4 -4
  15. package/dist/shared/{fiber.DAl4H27x.d.cts → fiber.-1JhXWEC.d.cts} +1 -1
  16. package/dist/shared/{fiber.DNehrxK5.d.ts → fiber.Bkpap4yF.d.mts} +76 -1
  17. package/dist/shared/{fiber.TWXdbcWP.d.mts → fiber.BnIfHyTk.d.cts} +76 -1
  18. package/dist/shared/{fiber.I5Q4dVvl.d.cts → fiber.CLTHZhZp.d.cts} +30 -2
  19. package/dist/shared/{fiber.I5Q4dVvl.d.mts → fiber.CLTHZhZp.d.mts} +30 -2
  20. package/dist/shared/{fiber.I5Q4dVvl.d.ts → fiber.CLTHZhZp.d.ts} +30 -2
  21. package/dist/shared/{fiber.Cx-UAmMb.d.ts → fiber.CTEAJNmg.d.ts} +1 -1
  22. package/dist/shared/{fiber.B0oukOFO.mjs → fiber.CUKAa7Rv.mjs} +1 -1
  23. package/dist/shared/{fiber.BU0vBHc9.d.mts → fiber.CksZuiOV.d.mts} +1 -1
  24. package/dist/shared/{fiber.CT-cCVjA.mjs → fiber.Dl_2kSXg.mjs} +284 -88
  25. package/dist/shared/{fiber.11sXr8Eb.d.cts → fiber.NwhGYEh-.d.ts} +76 -1
  26. package/dist/shared/{fiber.Cn-vxHMl.cjs → fiber.nPYZB2AE.cjs} +284 -88
  27. package/dist/webgpu/index.cjs +1 -1
  28. package/dist/webgpu/index.d.cts +4 -4
  29. package/dist/webgpu/index.d.mts +4 -4
  30. package/dist/webgpu/index.d.ts +4 -4
  31. package/dist/webgpu/index.mjs +4 -4
  32. package/package.json +1 -1
@@ -14018,6 +14018,7 @@ function disposeOnIdle(object) {
14018
14018
  }
14019
14019
  function removeChild(parent, child, dispose) {
14020
14020
  if (!child) return;
14021
+ const wasLinked = !!child.parent;
14021
14022
  child.parent = null;
14022
14023
  const childIndex = parent.children.indexOf(child);
14023
14024
  if (childIndex !== -1) parent.children.splice(childIndex, 1);
@@ -14037,7 +14038,10 @@ function removeChild(parent, child, dispose) {
14037
14038
  if (shouldDispose && child.type !== "primitive" && child.object.type !== "Scene") {
14038
14039
  disposeOnIdle(child.object);
14039
14040
  }
14040
- if (dispose === void 0) invalidateInstance(child);
14041
+ if (dispose === void 0 && wasLinked) {
14042
+ const state = findInitialRoot(child).getState();
14043
+ if (state.internal.active && state.internal.frames === 0) state.invalidate();
14044
+ }
14041
14045
  }
14042
14046
  function setFiberRef(fiber, publicInstance) {
14043
14047
  for (const _fiber of [fiber, fiber.alternate]) {
@@ -14786,6 +14790,69 @@ function getPrimaryIds() {
14786
14790
  return Array.from(primaryRegistry.keys());
14787
14791
  }
14788
14792
 
14793
+ const fulfilled = (value) => Object.assign(Promise.resolve(value), { status: "fulfilled", value });
14794
+ const tracked = (promise) => {
14795
+ const result = Promise.resolve(promise);
14796
+ result.status = "pending";
14797
+ result.then(
14798
+ (value) => {
14799
+ Object.assign(result, { status: "fulfilled", value });
14800
+ },
14801
+ (reason) => {
14802
+ Object.assign(result, { status: "rejected", reason });
14803
+ }
14804
+ );
14805
+ return result;
14806
+ };
14807
+
14808
+ const records = /* @__PURE__ */ new WeakMap();
14809
+ function take(renderer, record) {
14810
+ record.leases++;
14811
+ let released = false;
14812
+ return () => {
14813
+ if (released) return;
14814
+ released = true;
14815
+ if (--record.leases > 0) return;
14816
+ records.delete(renderer);
14817
+ if (record.owned) return disposeRenderer(renderer);
14818
+ };
14819
+ }
14820
+ function leaseRenderer(renderer, owned) {
14821
+ let record = records.get(renderer);
14822
+ if (!record) records.set(renderer, record = { owned, leases: 0 });
14823
+ return take(renderer, record);
14824
+ }
14825
+ function borrowRenderer(renderer) {
14826
+ const record = records.get(renderer);
14827
+ if (!record) throw new Error("R3F: cannot share a renderer whose canvas has already unmounted");
14828
+ return take(renderer, record);
14829
+ }
14830
+ function disposeRenderer(renderer) {
14831
+ if (renderer.hasInitialized?.() === false) return;
14832
+ const warn = (error) => console.warn("[R3F] Error disposing renderer", error);
14833
+ const loseContext = () => {
14834
+ try {
14835
+ ;
14836
+ renderer.forceContextLoss?.();
14837
+ } catch (error) {
14838
+ warn(error);
14839
+ }
14840
+ };
14841
+ let disposed;
14842
+ try {
14843
+ disposed = renderer.dispose();
14844
+ } catch (error) {
14845
+ warn(error);
14846
+ }
14847
+ if (typeof disposed?.then === "function") {
14848
+ return Promise.resolve(disposed).then(loseContext, (error) => {
14849
+ warn(error);
14850
+ loseContext();
14851
+ });
14852
+ }
14853
+ loseContext();
14854
+ }
14855
+
14789
14856
  const isRenderer = (def) => !!def?.render;
14790
14857
  const _roots = /* @__PURE__ */ new Map();
14791
14858
  function ensureStoreThreeObjects(store) {
@@ -14797,9 +14864,9 @@ function ensureStoreThreeObjects(store) {
14797
14864
  }
14798
14865
  const shallowLoose = { objects: "shallow", strict: false };
14799
14866
  async function resolveRenderer(config, defaultProps, RendererClass) {
14800
- if (typeof config === "function") return await config(defaultProps);
14801
- if (isRenderer(config)) return config;
14802
- return new RendererClass({ ...defaultProps, ...config });
14867
+ if (typeof config === "function") return { renderer: await config(defaultProps), owned: true };
14868
+ if (isRenderer(config)) return { renderer: config, owned: false };
14869
+ return { renderer: new RendererClass({ ...defaultProps, ...config }), owned: true };
14803
14870
  }
14804
14871
  function computeInitialSize(canvas, size) {
14805
14872
  if (!size && typeof HTMLCanvasElement !== "undefined" && canvas instanceof HTMLCanvasElement && canvas.parentElement) {
@@ -14815,6 +14882,47 @@ function computeInitialSize(canvas, size) {
14815
14882
  }
14816
14883
  return { width: 0, height: 0, top: 0, left: 0, ...size };
14817
14884
  }
14885
+ function watchDpr(onChange) {
14886
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function" || !window.devicePixelRatio) {
14887
+ return () => {
14888
+ };
14889
+ }
14890
+ let query;
14891
+ const listen = () => {
14892
+ try {
14893
+ query = window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);
14894
+ if (typeof query?.addEventListener === "function") query.addEventListener("change", handleChange);
14895
+ else query?.addListener?.(handleChange);
14896
+ } catch {
14897
+ query = void 0;
14898
+ }
14899
+ };
14900
+ const unlisten = () => {
14901
+ if (typeof query?.removeEventListener === "function") query.removeEventListener("change", handleChange);
14902
+ else query?.removeListener?.(handleChange);
14903
+ query = void 0;
14904
+ };
14905
+ const handleChange = () => {
14906
+ unlisten();
14907
+ listen();
14908
+ onChange();
14909
+ };
14910
+ listen();
14911
+ return unlisten;
14912
+ }
14913
+ async function createOwnedWebGPURenderer(rendererConfig, defaultGPUProps, canvas, propsSize, dpr, support) {
14914
+ const resolved = await resolveRenderer(rendererConfig, defaultGPUProps, support.Renderer);
14915
+ const renderer = resolved.renderer;
14916
+ if (!renderer.hasInitialized?.()) {
14917
+ const size = computeInitialSize(canvas, propsSize);
14918
+ if (size.width > 0 && size.height > 0) {
14919
+ renderer.setPixelRatio(calculateDpr(dpr));
14920
+ renderer.setSize(size.width, size.height, false);
14921
+ }
14922
+ await renderer.init();
14923
+ }
14924
+ return { renderer, owned: resolved.owned };
14925
+ }
14818
14926
  function createRoot(canvas, provider) {
14819
14927
  const prevRoot = _roots.get(canvas);
14820
14928
  const prevFiber = prevRoot?.fiber;
@@ -14851,15 +14959,39 @@ function createRoot(canvas, provider) {
14851
14959
  null
14852
14960
  // transitionCallbacks
14853
14961
  );
14854
- if (!prevRoot) _roots.set(canvas, { fiber, store });
14962
+ const root = prevRoot || { fiber, store, unmountClaim: null, ready: fulfilled(void 0) };
14963
+ if (!prevRoot) _roots.set(canvas, root);
14855
14964
  let onCreated;
14856
14965
  let lastCamera;
14857
14966
  const lastConfiguredProps = {};
14967
+ let resolvedDpr = 0;
14968
+ let dprChangedInXR = false;
14969
+ let unwatchDpr;
14970
+ const resolveDpr = () => {
14971
+ if (_roots.get(canvas)?.store !== store) return unwatchDpr?.();
14972
+ const state = store.getState();
14973
+ const xr = state.internal.actualRenderer?.xr;
14974
+ if (xr?.isPresenting || xr?.getSession?.()) {
14975
+ dprChangedInXR = true;
14976
+ return;
14977
+ }
14978
+ dprChangedInXR = false;
14979
+ const dpr = lastConfiguredProps.dpr;
14980
+ if (dpr === void 0 || state.viewport.dpr !== resolvedDpr || calculateDpr(dpr) === resolvedDpr) return;
14981
+ state.setDpr(dpr);
14982
+ resolvedDpr = store.getState().viewport.dpr;
14983
+ };
14858
14984
  let configured = false;
14859
14985
  let pending = null;
14860
- let rendererSetup = null;
14986
+ const cancelUnmount = () => {
14987
+ if (!root.unmountClaim) return;
14988
+ root.unmountClaim = null;
14989
+ store.getState().internal.active = true;
14990
+ };
14861
14991
  return {
14862
14992
  async configure(props = {}) {
14993
+ if (_roots.get(canvas) !== root) throw new Error("R3F: cannot configure a root after it has unmounted");
14994
+ cancelUnmount();
14863
14995
  let resolve;
14864
14996
  pending = new Promise((_resolve) => resolve = _resolve);
14865
14997
  const {
@@ -14933,49 +15065,82 @@ function createRoot(canvas, provider) {
14933
15065
  );
14934
15066
  }
14935
15067
  if (!state.internal.actualRenderer) {
14936
- if (!rendererSetup) {
14937
- rendererSetup = (async () => {
15068
+ if (root.ready.status !== "pending") {
15069
+ const setup = (async () => {
14938
15070
  const support = wantsGL ? await webgl() : await webgpu();
14939
15071
  registerThree(support.three);
14940
15072
  state.internal.support = support;
14941
15073
  ensureStoreThreeObjects(store);
14942
15074
  if (support.kind === "webgl") {
14943
- renderer = await resolveRenderer(glConfig, defaultGLProps, support.Renderer);
15075
+ const resolved = await resolveRenderer(glConfig, defaultGLProps, support.Renderer);
15076
+ renderer = resolved.renderer;
14944
15077
  state.internal.actualRenderer = renderer;
15078
+ state.internal.releaseRenderer = leaseRenderer(renderer, resolved.owned);
14945
15079
  state.set({ isLegacy: true, gl: renderer, renderer, primaryStore: store });
14946
15080
  } else if (primaryCanvas) {
14947
15081
  const primary = await waitForPrimary(primaryCanvas);
14948
- renderer = primary.renderer;
14949
- state.internal.actualRenderer = renderer;
14950
- const canvasTarget = new support.CanvasTarget(canvas);
14951
- primary.store.setState((prev) => ({
14952
- internal: { ...prev.internal, isMultiCanvas: true }
14953
- }));
14954
- state.set((prev) => ({
14955
- webGPUSupported: primary.store.getState().webGPUSupported,
14956
- renderer,
14957
- primaryStore: primary.store,
14958
- internal: {
14959
- ...prev.internal,
14960
- canvasTarget,
14961
- isMultiCanvas: true,
14962
- isSecondary: true,
14963
- targetId: primaryCanvas
14964
- }
14965
- }));
14966
- } else {
14967
- renderer = await resolveRenderer(rendererConfig, defaultGPUProps, support.Renderer);
14968
- if (!renderer.hasInitialized?.()) {
14969
- const size2 = computeInitialSize(canvas, propsSize);
14970
- if (size2.width > 0 && size2.height > 0) {
14971
- renderer.setPixelRatio(calculateDpr(dpr));
14972
- renderer.setSize(size2.width, size2.height, false);
14973
- }
14974
- await renderer.init();
15082
+ if (primary.store.getState().webGPUSupported) {
15083
+ renderer = primary.renderer;
15084
+ state.internal.actualRenderer = renderer;
15085
+ state.internal.releaseRenderer = borrowRenderer(renderer);
15086
+ const canvasTarget = new support.CanvasTarget(canvas);
15087
+ primary.store.setState((prev) => ({
15088
+ internal: { ...prev.internal, isMultiCanvas: true }
15089
+ }));
15090
+ state.set((prev) => ({
15091
+ webGPUSupported: primary.store.getState().webGPUSupported,
15092
+ renderer,
15093
+ primaryStore: primary.store,
15094
+ internal: {
15095
+ ...prev.internal,
15096
+ canvasTarget,
15097
+ isMultiCanvas: true,
15098
+ isSecondary: true,
15099
+ targetId: primaryCanvas
15100
+ }
15101
+ }));
15102
+ } else {
15103
+ const isPlainConfig = is.obj(rendererConfig) && !is.fun(rendererConfig) && !isRenderer(rendererConfig);
15104
+ const { primaryCanvas: _peeled, ...rendererOptions } = isPlainConfig ? rendererConfig : {};
15105
+ const fallbackConfig = is.fun(rendererConfig) || isRenderer(rendererConfig) ? rendererConfig : { ...rendererOptions, forceWebGL: true };
15106
+ const resolved = await createOwnedWebGPURenderer(
15107
+ fallbackConfig,
15108
+ defaultGPUProps,
15109
+ canvas,
15110
+ propsSize,
15111
+ dpr,
15112
+ support
15113
+ );
15114
+ renderer = resolved.renderer;
15115
+ const backend = renderer.backend;
15116
+ const isWebGPUBackend = backend && "isWebGPUBackend" in backend;
15117
+ state.internal.actualRenderer = renderer;
15118
+ state.internal.releaseRenderer = leaseRenderer(renderer, resolved.owned);
15119
+ state.set((prev) => ({
15120
+ webGPUSupported: isWebGPUBackend,
15121
+ renderer,
15122
+ primaryStore: store,
15123
+ internal: {
15124
+ ...prev.internal,
15125
+ canvasTarget: renderer.getCanvasTarget?.(),
15126
+ sharedRendererFallback: true
15127
+ }
15128
+ }));
14975
15129
  }
15130
+ } else {
15131
+ const resolved = await createOwnedWebGPURenderer(
15132
+ rendererConfig,
15133
+ defaultGPUProps,
15134
+ canvas,
15135
+ propsSize,
15136
+ dpr,
15137
+ support
15138
+ );
15139
+ renderer = resolved.renderer;
14976
15140
  const backend = renderer.backend;
14977
15141
  const isWebGPUBackend = backend && "isWebGPUBackend" in backend;
14978
15142
  state.internal.actualRenderer = renderer;
15143
+ state.internal.releaseRenderer = leaseRenderer(renderer, resolved.owned);
14979
15144
  state.set({ webGPUSupported: isWebGPUBackend, renderer, primaryStore: store });
14980
15145
  if (canvasId && !state.internal.isSecondary) {
14981
15146
  const canvasTarget = renderer.getCanvasTarget?.();
@@ -14989,16 +15154,15 @@ function createRoot(canvas, provider) {
14989
15154
  }));
14990
15155
  }
14991
15156
  }
14992
- })().catch((err) => {
14993
- rendererSetup = null;
14994
- throw err;
14995
- });
15157
+ })();
15158
+ root.ready = tracked(setup);
14996
15159
  }
14997
- await rendererSetup;
15160
+ await root.ready;
14998
15161
  state = store.getState();
14999
15162
  renderer = state.internal.actualRenderer;
15000
15163
  }
15001
15164
  const three = getThree();
15165
+ const borrowsRenderer = state.internal.isSecondary === true;
15002
15166
  let raycaster = state.raycaster;
15003
15167
  if (!raycaster) state.set({ raycaster: raycaster = new three.Raycaster() });
15004
15168
  const { params, ...options } = raycastOptions || {};
@@ -15073,6 +15237,12 @@ function createRoot(canvas, provider) {
15073
15237
  if (dpr !== void 0 && !is.equ(dpr, lastConfiguredProps.dpr, shallowLoose)) {
15074
15238
  state.setDpr(dpr);
15075
15239
  lastConfiguredProps.dpr = dpr;
15240
+ resolvedDpr = store.getState().viewport.dpr;
15241
+ }
15242
+ const internal = store.getState().internal;
15243
+ if (Array.isArray(dpr) && (!unwatchDpr || internal.unwatchDpr !== unwatchDpr)) {
15244
+ internal.unwatchDpr?.();
15245
+ internal.unwatchDpr = unwatchDpr = watchDpr(resolveDpr);
15076
15246
  }
15077
15247
  if (frameloop !== void 0 && frameloop !== lastConfiguredProps.frameloop) {
15078
15248
  state.setFrameloop(frameloop);
@@ -15101,7 +15271,10 @@ function createRoot(canvas, provider) {
15101
15271
  const renderer2 = state2.internal.actualRenderer;
15102
15272
  actualRenderer.xr.enabled = actualRenderer.xr.isPresenting;
15103
15273
  renderer2.xr.setAnimationLoop(renderer2.xr.isPresenting ? handleXRFrame : null);
15104
- if (!renderer2.xr.isPresenting) invalidate(state2);
15274
+ if (!renderer2.xr.isPresenting) {
15275
+ if (dprChangedInXR) resolveDpr();
15276
+ invalidate(state2);
15277
+ }
15105
15278
  };
15106
15279
  const xr = {
15107
15280
  connect() {
@@ -15117,10 +15290,10 @@ function createRoot(canvas, provider) {
15117
15290
  xrManager.removeEventListener("sessionend", handleSessionChange);
15118
15291
  }
15119
15292
  };
15120
- if (typeof renderer.xr?.addEventListener === "function") xr.connect();
15293
+ if (!borrowsRenderer && typeof renderer.xr?.addEventListener === "function") xr.connect();
15121
15294
  state.set({ xr });
15122
15295
  }
15123
- if (renderer.shadowMap && !is.equ(shadows, lastConfiguredProps.shadows, shallowLoose)) {
15296
+ if (!borrowsRenderer && renderer.shadowMap && !is.equ(shadows, lastConfiguredProps.shadows, shallowLoose)) {
15124
15297
  lastConfiguredProps.shadows = shadows;
15125
15298
  const oldEnabled = renderer.shadowMap.enabled;
15126
15299
  const oldType = renderer.shadowMap.type;
@@ -15149,7 +15322,7 @@ function createRoot(canvas, provider) {
15149
15322
  renderer.shadowMap.needsUpdate = true;
15150
15323
  }
15151
15324
  }
15152
- if (!configured) {
15325
+ if (!configured && !borrowsRenderer) {
15153
15326
  renderer.outputColorSpace = three.SRGBColorSpace;
15154
15327
  renderer.toneMapping = three.ACESFilmicToneMapping;
15155
15328
  }
@@ -15158,7 +15331,7 @@ function createRoot(canvas, provider) {
15158
15331
  if (state.textureColorSpace !== textureColorSpace) state.set(() => ({ textureColorSpace }));
15159
15332
  lastConfiguredProps.textureColorSpace = textureColorSpace;
15160
15333
  }
15161
- const r3fProps = ["textureColorSpace"];
15334
+ const r3fProps = ["textureColorSpace", "primaryCanvas", "scheduler"];
15162
15335
  const constructorOnlyProps = ["samples", "antialias", "alpha", "canvas", "powerPreference"];
15163
15336
  const nonApplyProps = [...r3fProps, ...constructorOnlyProps];
15164
15337
  if (glConfig && !is.fun(glConfig) && !isRenderer(glConfig) && !is.equ(glConfig, renderer, shallowLoose)) {
@@ -15168,7 +15341,7 @@ function createRoot(canvas, provider) {
15168
15341
  }
15169
15342
  applyProps(renderer, glProps);
15170
15343
  }
15171
- if (rendererConfig && !is.fun(rendererConfig) && !isRenderer(rendererConfig) && state.renderer) {
15344
+ if (rendererConfig && !is.fun(rendererConfig) && !isRenderer(rendererConfig) && state.renderer && !borrowsRenderer) {
15172
15345
  const currentRenderer = state.renderer;
15173
15346
  if (!is.equ(rendererConfig, currentRenderer, shallowLoose)) {
15174
15347
  const rendererProps = {};
@@ -15311,8 +15484,11 @@ function createRoot(canvas, provider) {
15311
15484
  return this;
15312
15485
  },
15313
15486
  render(children) {
15487
+ if (_roots.get(canvas) !== root) return store;
15488
+ cancelUnmount();
15314
15489
  if (!configured && !pending) this.configure();
15315
15490
  pending.then(() => {
15491
+ if (_roots.get(canvas) !== root || root.unmountClaim) return;
15316
15492
  reconciler.updateContainer(
15317
15493
  /* @__PURE__ */ jsxRuntime.jsx(Provider, { store, children, onCreated, rootElement: canvas }),
15318
15494
  fiber,
@@ -15323,7 +15499,7 @@ function createRoot(canvas, provider) {
15323
15499
  return store;
15324
15500
  },
15325
15501
  unmount() {
15326
- unmountComponentAtNode(canvas);
15502
+ if (_roots.get(canvas) === root) unmountComponentAtNode(canvas);
15327
15503
  }
15328
15504
  };
15329
15505
  }
@@ -15343,46 +15519,52 @@ function Provider({
15343
15519
  }
15344
15520
  function unmountComponentAtNode(canvas, callback) {
15345
15521
  const root = _roots.get(canvas);
15346
- const fiber = root?.fiber;
15347
- if (fiber) {
15348
- const state = root?.store.getState();
15349
- if (state) {
15350
- state.internal.active = false;
15351
- const unregisterRoot = state.internal.unregisterRoot;
15352
- if (unregisterRoot) {
15353
- unregisterRoot();
15354
- state.internal.unregisterRoot = void 0;
15522
+ if (!root) return;
15523
+ const claim = root.unmountClaim = Symbol("unmount");
15524
+ root.store.getState().internal.active = false;
15525
+ reconciler.updateContainer(null, root.fiber, null, () => {
15526
+ if (root.unmountClaim !== claim) return;
15527
+ reconciler.updateContainer(null, root.fiber, null, () => {
15528
+ if (root.unmountClaim !== claim) return;
15529
+ if (root.ready.status === "pending") root.ready.then(teardown, teardown);
15530
+ else teardown();
15531
+ });
15532
+ });
15533
+ function teardown() {
15534
+ if (root.unmountClaim !== claim) return;
15535
+ root.unmountClaim = null;
15536
+ _roots.delete(canvas);
15537
+ const state = root.store.getState();
15538
+ const internal = state.internal;
15539
+ internal.active = false;
15540
+ const attempt = (step) => {
15541
+ try {
15542
+ return step();
15543
+ } catch (error) {
15544
+ console.warn("[R3F] Error while unmounting root; teardown may be incomplete:", error);
15355
15545
  }
15356
- }
15357
- reconciler.updateContainer(null, fiber, null, () => {
15358
- if (root?.store) extensions.detachRootExtensions(root.store);
15359
- if (state) {
15360
- setTimeout(() => {
15361
- try {
15362
- const renderer = state.internal.actualRenderer;
15363
- const unregisterPrimary = state.internal.unregisterPrimary;
15364
- if (unregisterPrimary) unregisterPrimary();
15365
- const canvasTarget = state.internal.canvasTarget;
15366
- if (state.internal.isSecondary && canvasTarget?.dispose) canvasTarget.dispose();
15367
- state.events.disconnect?.();
15368
- cleanupHelperGroup(root.store);
15369
- if (state.isLegacy && renderer) {
15370
- ;
15371
- renderer.renderLists?.dispose?.();
15372
- renderer.forceContextLoss?.();
15373
- }
15374
- if (!state.internal.isSecondary) {
15375
- if (renderer?.xr) state.xr.disconnect();
15376
- }
15377
- dispose(state.scene);
15378
- _roots.delete(canvas);
15379
- if (callback) callback(canvas);
15380
- } catch (error) {
15381
- console.warn("[R3F] Error while unmounting root; teardown may be incomplete:", error);
15382
- }
15383
- }, 500);
15546
+ };
15547
+ attempt(() => internal.unwatchDpr?.());
15548
+ internal.unwatchDpr = void 0;
15549
+ attempt(() => internal.unregisterRoot?.());
15550
+ internal.unregisterRoot = void 0;
15551
+ attempt(() => extensions.detachRootExtensions(root.store));
15552
+ attempt(() => internal.unregisterPrimary?.());
15553
+ attempt(() => state.events.disconnect?.());
15554
+ if (!internal.isSecondary && internal.actualRenderer?.xr && state.xr) attempt(() => state.xr.disconnect());
15555
+ attempt(() => cleanupHelperGroup(root.store));
15556
+ if (state.scene) attempt(() => dispose(state.scene));
15557
+ const canvasTarget = internal.canvasTarget;
15558
+ if (internal.isSecondary && canvasTarget?.dispose) attempt(() => canvasTarget.dispose());
15559
+ const released = attempt(() => internal.releaseRenderer?.());
15560
+ internal.releaseRenderer = void 0;
15561
+ if (callback) {
15562
+ if (released) {
15563
+ released.then(() => callback(canvas)).catch((error) => console.warn("[R3F] Error in unmount callback", error));
15564
+ } else {
15565
+ callback(canvas);
15384
15566
  }
15385
- });
15567
+ }
15386
15568
  }
15387
15569
  }
15388
15570
  function createPortal(children, container, state) {
@@ -15927,13 +16109,27 @@ function CanvasImpl({
15927
16109
  }
15928
16110
  };
15929
16111
  });
16112
+ const insertionMounted = React__namespace.useRef(false);
16113
+ React__namespace.useInsertionEffect(() => {
16114
+ insertionMounted.current = true;
16115
+ return () => {
16116
+ insertionMounted.current = false;
16117
+ queueMicrotask(() => {
16118
+ if (insertionMounted.current) return;
16119
+ const current = root.current;
16120
+ root.current = null;
16121
+ current?.unmount();
16122
+ });
16123
+ };
16124
+ }, []);
15930
16125
  React__namespace.useEffect(() => {
15931
16126
  const canvas = canvasRef.current;
15932
16127
  if (canvas) {
15933
16128
  return () => {
15934
16129
  if (canvas.isConnected) return;
15935
- unmountComponentAtNode(canvas);
16130
+ const current = root.current;
15936
16131
  root.current = null;
16132
+ current?.unmount();
15937
16133
  };
15938
16134
  }
15939
16135
  }, []);
@@ -15947,7 +16143,7 @@ function CanvasImpl({
15947
16143
  if (rootEntry?.store) extensions.notifyRootExtensionsHmr(rootEntry.store);
15948
16144
  });
15949
16145
  };
15950
- if (typeof ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/fiber.Cn-vxHMl.cjs', document.baseURI).href)) }) !== "undefined" && undefined) {
16146
+ if (typeof ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/fiber.nPYZB2AE.cjs', document.baseURI).href)) }) !== "undefined" && undefined) {
15951
16147
  const hot = undefined;
15952
16148
  hot.on("vite:afterUpdate", handleHMR);
15953
16149
  return () => hot.off?.("vite:afterUpdate", handleHMR);
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
- const Canvas$1 = require('../shared/fiber.Cn-vxHMl.cjs');
4
+ const Canvas$1 = require('../shared/fiber.nPYZB2AE.cjs');
5
5
  const webgpu = require('../chunks/webgpu.cjs');
6
6
  const extensions = require('../shared/fiber.khFlPHPf.cjs');
7
7
  const scheduler = require('@pmndrs/scheduler');
@@ -1,9 +1,9 @@
1
1
  import * as ThreeWebGPU from 'three/webgpu';
2
2
  import { WebGPURenderer, WebGPURendererParameters, RenderTarget } from 'three/webgpu';
3
- import { M as MutableOrReadonlyParameters$1, a as MathRepresentation$1, V as VectorRepresentation$1, b as MathTypes$1, c as MathType$1, d as MathProps$1, e as Vector2$1, f as Vector3$1, g as Vector4$1, C as Color$1, L as Layers$1, Q as Quaternion$1, E as Euler$1, h as Matrix3$1, i as Matrix4$1, R as RaycastableRepresentation$1, j as EventProps$1, G as GeometryTransformProps$1, k as GeometryProps$1, T as TSLNodeInput$1, N as NodeProps$1, l as ReactProps$1, m as ElementProps$1, n as ThreeElement$1, o as ThreeToJSXElements$1, O as Object3DMethod$1, p as ThreeElementsOf$1, q as ElementOf$1, z as RendererFactory, B as BaseRendererProps, t as CanvasProps, s as ReconcilerRoot, r as RenderTargetOptions } from '../shared/fiber.11sXr8Eb.cjs';
4
- export { Z as BackgroundConfig, _ as BackgroundProp, aZ as Block, S as CameraProps, J as CanvasSchedulerConfig, D as ColorManagementConfig, F as DefaultGLProps, I as DefaultRendererProps, aD as DisposeOptions, an as Environment, al as EnvironmentCube, aG as EnvironmentLoaderProps, ak as EnvironmentMap, am as EnvironmentPortal, aj as EnvironmentProps, a_ as ErrorBoundary, a5 as Extensions, bs as FROM_REF, bt as FromRefMarker, H as GLProps, a1 as GLTFLike, Y as GlobalEffectType, X as GlobalRenderCallback, a3 as InferLoadResult, W as InjectState, $ as InputLike, aw as IsObject, aa as LegacyInternalState, a9 as LegacyRenderer, ab as LegacyRootState, a2 as LoaderInstance, a0 as LoaderLike, a4 as LoaderResult, ax as MappedTextureType, bw as ONCE, y as OffscreenCanvas, by as OnceValue, aT as Portal, ap as PresetsType, ac as PrimaryCanvasEntry, a$ as REACT_INTERNAL_PROPS, b7 as RESERVED_PROPS, U as RenderProps, A as Renderer, K as RendererConfigExtended, P as RendererProps, aA as Texture, aB as TextureInput, aC as TextureResult, ay as UseTextureOptions, aE as UseTexturesReturn, a6 as WebGLDefaultProps, a7 as WebGLProps, a8 as WebGLShadowConfig, aQ as _roots, aJ as addAfterEffect, aI as addEffect, aK as addTail, aM as advance, bc as applyProps, b9 as attach, b2 as buildGraph, bd as calculateDpr, as as createEvents, u as createPointerEvents, aS as createPortal, aV as createStore, ba as detach, bb as diffProps, b3 as dispose, u as events, aN as extend, b0 as findInitialRoot, aU as flushSync, bu as fromRef, b4 as getInstanceProps, ae as getPrimary, ai as getPrimaryIds, b1 as getRootState, v as getThree, be as getUuidPrefix, br as hasConstructor, ag as hasPrimary, w as hasThree, aL as invalidate, b6 as invalidateInstance, bh as is, bk as isColorRepresentation, bq as isCopyable, bv as isFromRef, bn as isLayers, bl as isObject3D, bz as isOnce, bi as isOrthographicCamera, bj as isRef, aP as isRenderer, bm as isTexture, bo as isUniform, bp as isVectorLike, bx as once, b5 as prepare, ao as presetsObj, aO as reconciler, ad as registerPrimary, ar as removeInteractivity, b8 as resolve, aq as swapInteractivity, aR as unmountComponentAtNode, ah as unregisterPrimary, bf as updateCamera, bg as updateFrustum, aY as useBridge, aH as useEnvironment, au as useGraph, at as useInstanceHandle, aW as useIsomorphicLayoutEffect, av as useLoader, aX as useMutableCallback, az as useTexture, aF as useTextures, af as waitForPrimary, x as whenThree } from '../shared/fiber.11sXr8Eb.cjs';
5
- import { C as ConstructorRepresentation, f as RootState, I as InternalState, J as Properties } from '../shared/fiber.I5Q4dVvl.cjs';
6
- export { U as Act, y as Args, z as ArgsProp, A as AttachFnType, w as AttachType, W as Bridge, i as Camera, x as Catalogue, n as ComputeFunction, a0 as Disposable, k as DomEvent, D as Dpr, $ as EquConfig, l as EventHandlers, p as EventManager, E as Events, u as FiberRoot, m as FilterFunction, ae as ForRegisteredRenderer, a4 as FrameCallback, a3 as FrameNextCallback, a1 as FrameNextState, a2 as FrameState, F as Frameloop, H as HostConfig, G as Instance, B as InstanceProps, h as Intersection, j as IntersectionEvent, L as IsAllOptional, K as IsOptional, M as Mutable, N as NonFunctionKeys, _ as ObjectMap, a7 as OcclusionSupport, O as Overwrite, e as Performance, q as PointerCaptureTarget, P as PointerState, R as R3FRenderTarget, af as R3FRendererSupport, ac as Register, ad as RegisteredRenderer, d as RenderCallback, ab as RendererProvider, aa as RendererSupport, v as Root, a as RootExtension, g as RootStore, Y as SetBlock, c as Size, S as Subscription, Q as ThreeCamera, a6 as ThreeCore, T as ThreeEvent, a5 as ThreeNamespace, Z as UnblockProps, V as Viewport, t as VisibilityEntry, a8 as WebGLSupport, a9 as WebGPUSupport, X as XRManager, o as XRPointerConfig, ai as context, r as registerRootExtension, s as setRenderOverride, ag as useStore } from '../shared/fiber.I5Q4dVvl.cjs';
3
+ import { M as MutableOrReadonlyParameters$1, a as MathRepresentation$1, V as VectorRepresentation$1, b as MathTypes$1, c as MathType$1, d as MathProps$1, e as Vector2$1, f as Vector3$1, g as Vector4$1, C as Color$1, L as Layers$1, Q as Quaternion$1, E as Euler$1, h as Matrix3$1, i as Matrix4$1, R as RaycastableRepresentation$1, j as EventProps$1, G as GeometryTransformProps$1, k as GeometryProps$1, T as TSLNodeInput$1, N as NodeProps$1, l as ReactProps$1, m as ElementProps$1, n as ThreeElement$1, o as ThreeToJSXElements$1, O as Object3DMethod$1, p as ThreeElementsOf$1, q as ElementOf$1, z as RendererFactory, B as BaseRendererProps, t as CanvasProps, s as ReconcilerRoot, r as RenderTargetOptions } from '../shared/fiber.BnIfHyTk.cjs';
4
+ export { Z as BackgroundConfig, _ as BackgroundProp, aZ as Block, S as CameraProps, J as CanvasSchedulerConfig, D as ColorManagementConfig, F as DefaultGLProps, I as DefaultRendererProps, aD as DisposeOptions, an as Environment, al as EnvironmentCube, aG as EnvironmentLoaderProps, ak as EnvironmentMap, am as EnvironmentPortal, aj as EnvironmentProps, a_ as ErrorBoundary, a5 as Extensions, bs as FROM_REF, bt as FromRefMarker, H as GLProps, a1 as GLTFLike, Y as GlobalEffectType, X as GlobalRenderCallback, a3 as InferLoadResult, W as InjectState, $ as InputLike, aw as IsObject, aa as LegacyInternalState, a9 as LegacyRenderer, ab as LegacyRootState, a2 as LoaderInstance, a0 as LoaderLike, a4 as LoaderResult, ax as MappedTextureType, bw as ONCE, y as OffscreenCanvas, by as OnceValue, aT as Portal, ap as PresetsType, ac as PrimaryCanvasEntry, a$ as REACT_INTERNAL_PROPS, b7 as RESERVED_PROPS, U as RenderProps, A as Renderer, K as RendererConfigExtended, P as RendererProps, aA as Texture, aB as TextureInput, aC as TextureResult, ay as UseTextureOptions, aE as UseTexturesReturn, a6 as WebGLDefaultProps, a7 as WebGLProps, a8 as WebGLShadowConfig, aQ as _roots, aJ as addAfterEffect, aI as addEffect, aK as addTail, aM as advance, bc as applyProps, b9 as attach, b2 as buildGraph, bd as calculateDpr, as as createEvents, u as createPointerEvents, aS as createPortal, aV as createStore, ba as detach, bb as diffProps, b3 as dispose, u as events, aN as extend, b0 as findInitialRoot, aU as flushSync, bu as fromRef, b4 as getInstanceProps, ae as getPrimary, ai as getPrimaryIds, b1 as getRootState, v as getThree, be as getUuidPrefix, br as hasConstructor, ag as hasPrimary, w as hasThree, aL as invalidate, b6 as invalidateInstance, bh as is, bk as isColorRepresentation, bq as isCopyable, bv as isFromRef, bn as isLayers, bl as isObject3D, bz as isOnce, bi as isOrthographicCamera, bj as isRef, aP as isRenderer, bm as isTexture, bo as isUniform, bp as isVectorLike, bx as once, b5 as prepare, ao as presetsObj, aO as reconciler, ad as registerPrimary, ar as removeInteractivity, b8 as resolve, aq as swapInteractivity, aR as unmountComponentAtNode, ah as unregisterPrimary, bf as updateCamera, bg as updateFrustum, aY as useBridge, aH as useEnvironment, au as useGraph, at as useInstanceHandle, aW as useIsomorphicLayoutEffect, av as useLoader, aX as useMutableCallback, az as useTexture, aF as useTextures, af as waitForPrimary, x as whenThree } from '../shared/fiber.BnIfHyTk.cjs';
5
+ import { C as ConstructorRepresentation, f as RootState, I as InternalState, K as Properties } from '../shared/fiber.CLTHZhZp.cjs';
6
+ export { W as Act, z as Args, B as ArgsProp, A as AttachFnType, x as AttachType, Y as Bridge, i as Camera, y as Catalogue, n as ComputeFunction, a1 as Disposable, k as DomEvent, D as Dpr, a0 as EquConfig, l as EventHandlers, p as EventManager, E as Events, u as FiberRoot, m as FilterFunction, af as ForRegisteredRenderer, a5 as FrameCallback, a4 as FrameNextCallback, a2 as FrameNextState, a3 as FrameState, F as Frameloop, J as HostConfig, H as Instance, G as InstanceProps, h as Intersection, j as IntersectionEvent, Q as IsAllOptional, L as IsOptional, M as Mutable, N as NonFunctionKeys, $ as ObjectMap, a8 as OcclusionSupport, O as Overwrite, e as Performance, q as PointerCaptureTarget, P as PointerState, R as R3FRenderTarget, ag as R3FRendererSupport, ad as Register, ae as RegisteredRenderer, d as RenderCallback, ac as RendererProvider, ab as RendererSupport, w as Root, a as RootExtension, g as RootStore, Z as SetBlock, c as Size, S as Subscription, U as ThreeCamera, a7 as ThreeCore, T as ThreeEvent, a6 as ThreeNamespace, v as TrackedPromise, _ as UnblockProps, V as Viewport, t as VisibilityEntry, a9 as WebGLSupport, aa as WebGPUSupport, X as XRManager, o as XRPointerConfig, aj as context, r as registerRootExtension, s as setRenderOverride, ah as useStore } from '../shared/fiber.CLTHZhZp.cjs';
7
7
  import { Texture } from 'three';
8
8
  import { StoreApi } from 'zustand';
9
9
  import { FrameCallback, UseFrameNextOptions, FrameNextControls } from '@pmndrs/scheduler';
@@ -1,9 +1,9 @@
1
1
  import * as ThreeWebGPU from 'three/webgpu';
2
2
  import { WebGPURenderer, WebGPURendererParameters, RenderTarget } from 'three/webgpu';
3
- import { M as MutableOrReadonlyParameters$1, a as MathRepresentation$1, V as VectorRepresentation$1, b as MathTypes$1, c as MathType$1, d as MathProps$1, e as Vector2$1, f as Vector3$1, g as Vector4$1, C as Color$1, L as Layers$1, Q as Quaternion$1, E as Euler$1, h as Matrix3$1, i as Matrix4$1, R as RaycastableRepresentation$1, j as EventProps$1, G as GeometryTransformProps$1, k as GeometryProps$1, T as TSLNodeInput$1, N as NodeProps$1, l as ReactProps$1, m as ElementProps$1, n as ThreeElement$1, o as ThreeToJSXElements$1, O as Object3DMethod$1, p as ThreeElementsOf$1, q as ElementOf$1, z as RendererFactory, B as BaseRendererProps, t as CanvasProps, s as ReconcilerRoot, r as RenderTargetOptions } from '../shared/fiber.TWXdbcWP.mjs';
4
- export { Z as BackgroundConfig, _ as BackgroundProp, aZ as Block, S as CameraProps, J as CanvasSchedulerConfig, D as ColorManagementConfig, F as DefaultGLProps, I as DefaultRendererProps, aD as DisposeOptions, an as Environment, al as EnvironmentCube, aG as EnvironmentLoaderProps, ak as EnvironmentMap, am as EnvironmentPortal, aj as EnvironmentProps, a_ as ErrorBoundary, a5 as Extensions, bs as FROM_REF, bt as FromRefMarker, H as GLProps, a1 as GLTFLike, Y as GlobalEffectType, X as GlobalRenderCallback, a3 as InferLoadResult, W as InjectState, $ as InputLike, aw as IsObject, aa as LegacyInternalState, a9 as LegacyRenderer, ab as LegacyRootState, a2 as LoaderInstance, a0 as LoaderLike, a4 as LoaderResult, ax as MappedTextureType, bw as ONCE, y as OffscreenCanvas, by as OnceValue, aT as Portal, ap as PresetsType, ac as PrimaryCanvasEntry, a$ as REACT_INTERNAL_PROPS, b7 as RESERVED_PROPS, U as RenderProps, A as Renderer, K as RendererConfigExtended, P as RendererProps, aA as Texture, aB as TextureInput, aC as TextureResult, ay as UseTextureOptions, aE as UseTexturesReturn, a6 as WebGLDefaultProps, a7 as WebGLProps, a8 as WebGLShadowConfig, aQ as _roots, aJ as addAfterEffect, aI as addEffect, aK as addTail, aM as advance, bc as applyProps, b9 as attach, b2 as buildGraph, bd as calculateDpr, as as createEvents, u as createPointerEvents, aS as createPortal, aV as createStore, ba as detach, bb as diffProps, b3 as dispose, u as events, aN as extend, b0 as findInitialRoot, aU as flushSync, bu as fromRef, b4 as getInstanceProps, ae as getPrimary, ai as getPrimaryIds, b1 as getRootState, v as getThree, be as getUuidPrefix, br as hasConstructor, ag as hasPrimary, w as hasThree, aL as invalidate, b6 as invalidateInstance, bh as is, bk as isColorRepresentation, bq as isCopyable, bv as isFromRef, bn as isLayers, bl as isObject3D, bz as isOnce, bi as isOrthographicCamera, bj as isRef, aP as isRenderer, bm as isTexture, bo as isUniform, bp as isVectorLike, bx as once, b5 as prepare, ao as presetsObj, aO as reconciler, ad as registerPrimary, ar as removeInteractivity, b8 as resolve, aq as swapInteractivity, aR as unmountComponentAtNode, ah as unregisterPrimary, bf as updateCamera, bg as updateFrustum, aY as useBridge, aH as useEnvironment, au as useGraph, at as useInstanceHandle, aW as useIsomorphicLayoutEffect, av as useLoader, aX as useMutableCallback, az as useTexture, aF as useTextures, af as waitForPrimary, x as whenThree } from '../shared/fiber.TWXdbcWP.mjs';
5
- import { C as ConstructorRepresentation, f as RootState, I as InternalState, J as Properties } from '../shared/fiber.I5Q4dVvl.mjs';
6
- export { U as Act, y as Args, z as ArgsProp, A as AttachFnType, w as AttachType, W as Bridge, i as Camera, x as Catalogue, n as ComputeFunction, a0 as Disposable, k as DomEvent, D as Dpr, $ as EquConfig, l as EventHandlers, p as EventManager, E as Events, u as FiberRoot, m as FilterFunction, ae as ForRegisteredRenderer, a4 as FrameCallback, a3 as FrameNextCallback, a1 as FrameNextState, a2 as FrameState, F as Frameloop, H as HostConfig, G as Instance, B as InstanceProps, h as Intersection, j as IntersectionEvent, L as IsAllOptional, K as IsOptional, M as Mutable, N as NonFunctionKeys, _ as ObjectMap, a7 as OcclusionSupport, O as Overwrite, e as Performance, q as PointerCaptureTarget, P as PointerState, R as R3FRenderTarget, af as R3FRendererSupport, ac as Register, ad as RegisteredRenderer, d as RenderCallback, ab as RendererProvider, aa as RendererSupport, v as Root, a as RootExtension, g as RootStore, Y as SetBlock, c as Size, S as Subscription, Q as ThreeCamera, a6 as ThreeCore, T as ThreeEvent, a5 as ThreeNamespace, Z as UnblockProps, V as Viewport, t as VisibilityEntry, a8 as WebGLSupport, a9 as WebGPUSupport, X as XRManager, o as XRPointerConfig, ai as context, r as registerRootExtension, s as setRenderOverride, ag as useStore } from '../shared/fiber.I5Q4dVvl.mjs';
3
+ import { M as MutableOrReadonlyParameters$1, a as MathRepresentation$1, V as VectorRepresentation$1, b as MathTypes$1, c as MathType$1, d as MathProps$1, e as Vector2$1, f as Vector3$1, g as Vector4$1, C as Color$1, L as Layers$1, Q as Quaternion$1, E as Euler$1, h as Matrix3$1, i as Matrix4$1, R as RaycastableRepresentation$1, j as EventProps$1, G as GeometryTransformProps$1, k as GeometryProps$1, T as TSLNodeInput$1, N as NodeProps$1, l as ReactProps$1, m as ElementProps$1, n as ThreeElement$1, o as ThreeToJSXElements$1, O as Object3DMethod$1, p as ThreeElementsOf$1, q as ElementOf$1, z as RendererFactory, B as BaseRendererProps, t as CanvasProps, s as ReconcilerRoot, r as RenderTargetOptions } from '../shared/fiber.Bkpap4yF.mjs';
4
+ export { Z as BackgroundConfig, _ as BackgroundProp, aZ as Block, S as CameraProps, J as CanvasSchedulerConfig, D as ColorManagementConfig, F as DefaultGLProps, I as DefaultRendererProps, aD as DisposeOptions, an as Environment, al as EnvironmentCube, aG as EnvironmentLoaderProps, ak as EnvironmentMap, am as EnvironmentPortal, aj as EnvironmentProps, a_ as ErrorBoundary, a5 as Extensions, bs as FROM_REF, bt as FromRefMarker, H as GLProps, a1 as GLTFLike, Y as GlobalEffectType, X as GlobalRenderCallback, a3 as InferLoadResult, W as InjectState, $ as InputLike, aw as IsObject, aa as LegacyInternalState, a9 as LegacyRenderer, ab as LegacyRootState, a2 as LoaderInstance, a0 as LoaderLike, a4 as LoaderResult, ax as MappedTextureType, bw as ONCE, y as OffscreenCanvas, by as OnceValue, aT as Portal, ap as PresetsType, ac as PrimaryCanvasEntry, a$ as REACT_INTERNAL_PROPS, b7 as RESERVED_PROPS, U as RenderProps, A as Renderer, K as RendererConfigExtended, P as RendererProps, aA as Texture, aB as TextureInput, aC as TextureResult, ay as UseTextureOptions, aE as UseTexturesReturn, a6 as WebGLDefaultProps, a7 as WebGLProps, a8 as WebGLShadowConfig, aQ as _roots, aJ as addAfterEffect, aI as addEffect, aK as addTail, aM as advance, bc as applyProps, b9 as attach, b2 as buildGraph, bd as calculateDpr, as as createEvents, u as createPointerEvents, aS as createPortal, aV as createStore, ba as detach, bb as diffProps, b3 as dispose, u as events, aN as extend, b0 as findInitialRoot, aU as flushSync, bu as fromRef, b4 as getInstanceProps, ae as getPrimary, ai as getPrimaryIds, b1 as getRootState, v as getThree, be as getUuidPrefix, br as hasConstructor, ag as hasPrimary, w as hasThree, aL as invalidate, b6 as invalidateInstance, bh as is, bk as isColorRepresentation, bq as isCopyable, bv as isFromRef, bn as isLayers, bl as isObject3D, bz as isOnce, bi as isOrthographicCamera, bj as isRef, aP as isRenderer, bm as isTexture, bo as isUniform, bp as isVectorLike, bx as once, b5 as prepare, ao as presetsObj, aO as reconciler, ad as registerPrimary, ar as removeInteractivity, b8 as resolve, aq as swapInteractivity, aR as unmountComponentAtNode, ah as unregisterPrimary, bf as updateCamera, bg as updateFrustum, aY as useBridge, aH as useEnvironment, au as useGraph, at as useInstanceHandle, aW as useIsomorphicLayoutEffect, av as useLoader, aX as useMutableCallback, az as useTexture, aF as useTextures, af as waitForPrimary, x as whenThree } from '../shared/fiber.Bkpap4yF.mjs';
5
+ import { C as ConstructorRepresentation, f as RootState, I as InternalState, K as Properties } from '../shared/fiber.CLTHZhZp.mjs';
6
+ export { W as Act, z as Args, B as ArgsProp, A as AttachFnType, x as AttachType, Y as Bridge, i as Camera, y as Catalogue, n as ComputeFunction, a1 as Disposable, k as DomEvent, D as Dpr, a0 as EquConfig, l as EventHandlers, p as EventManager, E as Events, u as FiberRoot, m as FilterFunction, af as ForRegisteredRenderer, a5 as FrameCallback, a4 as FrameNextCallback, a2 as FrameNextState, a3 as FrameState, F as Frameloop, J as HostConfig, H as Instance, G as InstanceProps, h as Intersection, j as IntersectionEvent, Q as IsAllOptional, L as IsOptional, M as Mutable, N as NonFunctionKeys, $ as ObjectMap, a8 as OcclusionSupport, O as Overwrite, e as Performance, q as PointerCaptureTarget, P as PointerState, R as R3FRenderTarget, ag as R3FRendererSupport, ad as Register, ae as RegisteredRenderer, d as RenderCallback, ac as RendererProvider, ab as RendererSupport, w as Root, a as RootExtension, g as RootStore, Z as SetBlock, c as Size, S as Subscription, U as ThreeCamera, a7 as ThreeCore, T as ThreeEvent, a6 as ThreeNamespace, v as TrackedPromise, _ as UnblockProps, V as Viewport, t as VisibilityEntry, a9 as WebGLSupport, aa as WebGPUSupport, X as XRManager, o as XRPointerConfig, aj as context, r as registerRootExtension, s as setRenderOverride, ah as useStore } from '../shared/fiber.CLTHZhZp.mjs';
7
7
  import { Texture } from 'three';
8
8
  import { StoreApi } from 'zustand';
9
9
  import { FrameCallback, UseFrameNextOptions, FrameNextControls } from '@pmndrs/scheduler';
@@ -1,9 +1,9 @@
1
1
  import * as ThreeWebGPU from 'three/webgpu';
2
2
  import { WebGPURenderer, WebGPURendererParameters, RenderTarget } from 'three/webgpu';
3
- import { M as MutableOrReadonlyParameters$1, a as MathRepresentation$1, V as VectorRepresentation$1, b as MathTypes$1, c as MathType$1, d as MathProps$1, e as Vector2$1, f as Vector3$1, g as Vector4$1, C as Color$1, L as Layers$1, Q as Quaternion$1, E as Euler$1, h as Matrix3$1, i as Matrix4$1, R as RaycastableRepresentation$1, j as EventProps$1, G as GeometryTransformProps$1, k as GeometryProps$1, T as TSLNodeInput$1, N as NodeProps$1, l as ReactProps$1, m as ElementProps$1, n as ThreeElement$1, o as ThreeToJSXElements$1, O as Object3DMethod$1, p as ThreeElementsOf$1, q as ElementOf$1, z as RendererFactory, B as BaseRendererProps, t as CanvasProps, s as ReconcilerRoot, r as RenderTargetOptions } from '../shared/fiber.DNehrxK5.js';
4
- export { Z as BackgroundConfig, _ as BackgroundProp, aZ as Block, S as CameraProps, J as CanvasSchedulerConfig, D as ColorManagementConfig, F as DefaultGLProps, I as DefaultRendererProps, aD as DisposeOptions, an as Environment, al as EnvironmentCube, aG as EnvironmentLoaderProps, ak as EnvironmentMap, am as EnvironmentPortal, aj as EnvironmentProps, a_ as ErrorBoundary, a5 as Extensions, bs as FROM_REF, bt as FromRefMarker, H as GLProps, a1 as GLTFLike, Y as GlobalEffectType, X as GlobalRenderCallback, a3 as InferLoadResult, W as InjectState, $ as InputLike, aw as IsObject, aa as LegacyInternalState, a9 as LegacyRenderer, ab as LegacyRootState, a2 as LoaderInstance, a0 as LoaderLike, a4 as LoaderResult, ax as MappedTextureType, bw as ONCE, y as OffscreenCanvas, by as OnceValue, aT as Portal, ap as PresetsType, ac as PrimaryCanvasEntry, a$ as REACT_INTERNAL_PROPS, b7 as RESERVED_PROPS, U as RenderProps, A as Renderer, K as RendererConfigExtended, P as RendererProps, aA as Texture, aB as TextureInput, aC as TextureResult, ay as UseTextureOptions, aE as UseTexturesReturn, a6 as WebGLDefaultProps, a7 as WebGLProps, a8 as WebGLShadowConfig, aQ as _roots, aJ as addAfterEffect, aI as addEffect, aK as addTail, aM as advance, bc as applyProps, b9 as attach, b2 as buildGraph, bd as calculateDpr, as as createEvents, u as createPointerEvents, aS as createPortal, aV as createStore, ba as detach, bb as diffProps, b3 as dispose, u as events, aN as extend, b0 as findInitialRoot, aU as flushSync, bu as fromRef, b4 as getInstanceProps, ae as getPrimary, ai as getPrimaryIds, b1 as getRootState, v as getThree, be as getUuidPrefix, br as hasConstructor, ag as hasPrimary, w as hasThree, aL as invalidate, b6 as invalidateInstance, bh as is, bk as isColorRepresentation, bq as isCopyable, bv as isFromRef, bn as isLayers, bl as isObject3D, bz as isOnce, bi as isOrthographicCamera, bj as isRef, aP as isRenderer, bm as isTexture, bo as isUniform, bp as isVectorLike, bx as once, b5 as prepare, ao as presetsObj, aO as reconciler, ad as registerPrimary, ar as removeInteractivity, b8 as resolve, aq as swapInteractivity, aR as unmountComponentAtNode, ah as unregisterPrimary, bf as updateCamera, bg as updateFrustum, aY as useBridge, aH as useEnvironment, au as useGraph, at as useInstanceHandle, aW as useIsomorphicLayoutEffect, av as useLoader, aX as useMutableCallback, az as useTexture, aF as useTextures, af as waitForPrimary, x as whenThree } from '../shared/fiber.DNehrxK5.js';
5
- import { C as ConstructorRepresentation, f as RootState, I as InternalState, J as Properties } from '../shared/fiber.I5Q4dVvl.js';
6
- export { U as Act, y as Args, z as ArgsProp, A as AttachFnType, w as AttachType, W as Bridge, i as Camera, x as Catalogue, n as ComputeFunction, a0 as Disposable, k as DomEvent, D as Dpr, $ as EquConfig, l as EventHandlers, p as EventManager, E as Events, u as FiberRoot, m as FilterFunction, ae as ForRegisteredRenderer, a4 as FrameCallback, a3 as FrameNextCallback, a1 as FrameNextState, a2 as FrameState, F as Frameloop, H as HostConfig, G as Instance, B as InstanceProps, h as Intersection, j as IntersectionEvent, L as IsAllOptional, K as IsOptional, M as Mutable, N as NonFunctionKeys, _ as ObjectMap, a7 as OcclusionSupport, O as Overwrite, e as Performance, q as PointerCaptureTarget, P as PointerState, R as R3FRenderTarget, af as R3FRendererSupport, ac as Register, ad as RegisteredRenderer, d as RenderCallback, ab as RendererProvider, aa as RendererSupport, v as Root, a as RootExtension, g as RootStore, Y as SetBlock, c as Size, S as Subscription, Q as ThreeCamera, a6 as ThreeCore, T as ThreeEvent, a5 as ThreeNamespace, Z as UnblockProps, V as Viewport, t as VisibilityEntry, a8 as WebGLSupport, a9 as WebGPUSupport, X as XRManager, o as XRPointerConfig, ai as context, r as registerRootExtension, s as setRenderOverride, ag as useStore } from '../shared/fiber.I5Q4dVvl.js';
3
+ import { M as MutableOrReadonlyParameters$1, a as MathRepresentation$1, V as VectorRepresentation$1, b as MathTypes$1, c as MathType$1, d as MathProps$1, e as Vector2$1, f as Vector3$1, g as Vector4$1, C as Color$1, L as Layers$1, Q as Quaternion$1, E as Euler$1, h as Matrix3$1, i as Matrix4$1, R as RaycastableRepresentation$1, j as EventProps$1, G as GeometryTransformProps$1, k as GeometryProps$1, T as TSLNodeInput$1, N as NodeProps$1, l as ReactProps$1, m as ElementProps$1, n as ThreeElement$1, o as ThreeToJSXElements$1, O as Object3DMethod$1, p as ThreeElementsOf$1, q as ElementOf$1, z as RendererFactory, B as BaseRendererProps, t as CanvasProps, s as ReconcilerRoot, r as RenderTargetOptions } from '../shared/fiber.NwhGYEh-.js';
4
+ export { Z as BackgroundConfig, _ as BackgroundProp, aZ as Block, S as CameraProps, J as CanvasSchedulerConfig, D as ColorManagementConfig, F as DefaultGLProps, I as DefaultRendererProps, aD as DisposeOptions, an as Environment, al as EnvironmentCube, aG as EnvironmentLoaderProps, ak as EnvironmentMap, am as EnvironmentPortal, aj as EnvironmentProps, a_ as ErrorBoundary, a5 as Extensions, bs as FROM_REF, bt as FromRefMarker, H as GLProps, a1 as GLTFLike, Y as GlobalEffectType, X as GlobalRenderCallback, a3 as InferLoadResult, W as InjectState, $ as InputLike, aw as IsObject, aa as LegacyInternalState, a9 as LegacyRenderer, ab as LegacyRootState, a2 as LoaderInstance, a0 as LoaderLike, a4 as LoaderResult, ax as MappedTextureType, bw as ONCE, y as OffscreenCanvas, by as OnceValue, aT as Portal, ap as PresetsType, ac as PrimaryCanvasEntry, a$ as REACT_INTERNAL_PROPS, b7 as RESERVED_PROPS, U as RenderProps, A as Renderer, K as RendererConfigExtended, P as RendererProps, aA as Texture, aB as TextureInput, aC as TextureResult, ay as UseTextureOptions, aE as UseTexturesReturn, a6 as WebGLDefaultProps, a7 as WebGLProps, a8 as WebGLShadowConfig, aQ as _roots, aJ as addAfterEffect, aI as addEffect, aK as addTail, aM as advance, bc as applyProps, b9 as attach, b2 as buildGraph, bd as calculateDpr, as as createEvents, u as createPointerEvents, aS as createPortal, aV as createStore, ba as detach, bb as diffProps, b3 as dispose, u as events, aN as extend, b0 as findInitialRoot, aU as flushSync, bu as fromRef, b4 as getInstanceProps, ae as getPrimary, ai as getPrimaryIds, b1 as getRootState, v as getThree, be as getUuidPrefix, br as hasConstructor, ag as hasPrimary, w as hasThree, aL as invalidate, b6 as invalidateInstance, bh as is, bk as isColorRepresentation, bq as isCopyable, bv as isFromRef, bn as isLayers, bl as isObject3D, bz as isOnce, bi as isOrthographicCamera, bj as isRef, aP as isRenderer, bm as isTexture, bo as isUniform, bp as isVectorLike, bx as once, b5 as prepare, ao as presetsObj, aO as reconciler, ad as registerPrimary, ar as removeInteractivity, b8 as resolve, aq as swapInteractivity, aR as unmountComponentAtNode, ah as unregisterPrimary, bf as updateCamera, bg as updateFrustum, aY as useBridge, aH as useEnvironment, au as useGraph, at as useInstanceHandle, aW as useIsomorphicLayoutEffect, av as useLoader, aX as useMutableCallback, az as useTexture, aF as useTextures, af as waitForPrimary, x as whenThree } from '../shared/fiber.NwhGYEh-.js';
5
+ import { C as ConstructorRepresentation, f as RootState, I as InternalState, K as Properties } from '../shared/fiber.CLTHZhZp.js';
6
+ export { W as Act, z as Args, B as ArgsProp, A as AttachFnType, x as AttachType, Y as Bridge, i as Camera, y as Catalogue, n as ComputeFunction, a1 as Disposable, k as DomEvent, D as Dpr, a0 as EquConfig, l as EventHandlers, p as EventManager, E as Events, u as FiberRoot, m as FilterFunction, af as ForRegisteredRenderer, a5 as FrameCallback, a4 as FrameNextCallback, a2 as FrameNextState, a3 as FrameState, F as Frameloop, J as HostConfig, H as Instance, G as InstanceProps, h as Intersection, j as IntersectionEvent, Q as IsAllOptional, L as IsOptional, M as Mutable, N as NonFunctionKeys, $ as ObjectMap, a8 as OcclusionSupport, O as Overwrite, e as Performance, q as PointerCaptureTarget, P as PointerState, R as R3FRenderTarget, ag as R3FRendererSupport, ad as Register, ae as RegisteredRenderer, d as RenderCallback, ac as RendererProvider, ab as RendererSupport, w as Root, a as RootExtension, g as RootStore, Z as SetBlock, c as Size, S as Subscription, U as ThreeCamera, a7 as ThreeCore, T as ThreeEvent, a6 as ThreeNamespace, v as TrackedPromise, _ as UnblockProps, V as Viewport, t as VisibilityEntry, a9 as WebGLSupport, aa as WebGPUSupport, X as XRManager, o as XRPointerConfig, aj as context, r as registerRootExtension, s as setRenderOverride, ah as useStore } from '../shared/fiber.CLTHZhZp.js';
7
7
  import { Texture } from 'three';
8
8
  import { StoreApi } from 'zustand';
9
9
  import { FrameCallback, UseFrameNextOptions, FrameNextControls } from '@pmndrs/scheduler';