@react-three/drei 11.0.0-alpha.5 → 11.0.0-alpha.7
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/README.md +19 -3
- package/core/index.d.mts +195 -52
- package/core/index.d.ts +195 -52
- package/core/index.mjs +543 -240
- package/experimental/index.d.mts +20 -0
- package/experimental/index.d.ts +20 -0
- package/external/index.d.mts +38 -2
- package/external/index.d.ts +38 -2
- package/external/index.mjs +3 -4
- package/index.d.mts +212 -54
- package/index.d.ts +212 -54
- package/index.mjs +544 -241
- package/legacy/index.d.mts +211 -56
- package/legacy/index.d.ts +211 -56
- package/legacy/index.mjs +687 -260
- package/native/index.d.mts +321 -392
- package/native/index.d.ts +321 -392
- package/native/index.mjs +1843 -1815
- package/package.json +7 -7
- package/webgpu/chunks/inspector-runtime.mjs +112 -0
- package/webgpu/index.d.mts +418 -398
- package/webgpu/index.d.ts +418 -398
- package/webgpu/index.mjs +2392 -1953
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-three/drei",
|
|
3
|
-
"version": "11.0.0-alpha.
|
|
3
|
+
"version": "11.0.0-alpha.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "useful add-ons for react-three-fiber",
|
|
@@ -72,11 +72,11 @@
|
|
|
72
72
|
"glsl-noise": "^0.0.0",
|
|
73
73
|
"hls.js": "^1.5.17",
|
|
74
74
|
"maath": "^0.10.8",
|
|
75
|
-
"stats-gl": "^
|
|
75
|
+
"stats-gl": "^4.2.3",
|
|
76
76
|
"stats.js": "^0.17.0",
|
|
77
77
|
"suspend-react": "^0.1.3",
|
|
78
|
-
"three-mesh-bvh": "^0.
|
|
79
|
-
"troika-three-text": "^0.52.
|
|
78
|
+
"three-mesh-bvh": "^0.9.14",
|
|
79
|
+
"troika-three-text": "^0.52.5",
|
|
80
80
|
"tunnel-rat": "^0.1.2",
|
|
81
81
|
"use-sync-external-store": "^1.4.0",
|
|
82
82
|
"utility-types": "^3.11.0",
|
|
@@ -84,9 +84,9 @@
|
|
|
84
84
|
},
|
|
85
85
|
"peerDependencies": {
|
|
86
86
|
"@react-three/fiber": ">=10.0.0-0",
|
|
87
|
-
"react": "
|
|
88
|
-
"react-dom": "
|
|
89
|
-
"three": ">=0.
|
|
87
|
+
"react": ">=19.0 <19.3",
|
|
88
|
+
"react-dom": ">=19.0 <19.3",
|
|
89
|
+
"three": ">=0.185"
|
|
90
90
|
},
|
|
91
91
|
"peerDependenciesMeta": {
|
|
92
92
|
"react-dom": {
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Inspector } from 'three/examples/jsm/inspector/Inspector.js';
|
|
2
|
+
import { getConsoleFunction, setConsoleFunction } from 'three/webgpu';
|
|
3
|
+
|
|
4
|
+
class FiberInspector extends Inspector {
|
|
5
|
+
attachment = 0;
|
|
6
|
+
setRenderer(renderer) {
|
|
7
|
+
const attachment = ++this.attachment;
|
|
8
|
+
const readback = this._resolveTimestampPromise;
|
|
9
|
+
if (!renderer && readback) {
|
|
10
|
+
const detach = () => {
|
|
11
|
+
if (this.attachment === attachment) super.setRenderer(null);
|
|
12
|
+
};
|
|
13
|
+
void readback.then(detach, detach);
|
|
14
|
+
} else super.setRenderer(renderer);
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
// R3F frame phases drive profiling. Ignore Three's separate animation loop.
|
|
18
|
+
begin() {
|
|
19
|
+
}
|
|
20
|
+
finish() {
|
|
21
|
+
}
|
|
22
|
+
beginFrame() {
|
|
23
|
+
super.begin();
|
|
24
|
+
}
|
|
25
|
+
finishFrame() {
|
|
26
|
+
if (this.currentFrame) super.finish();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const inspectors = /* @__PURE__ */ new WeakMap();
|
|
30
|
+
const active = /* @__PURE__ */ new WeakMap();
|
|
31
|
+
const pending = /* @__PURE__ */ new WeakMap();
|
|
32
|
+
const consoleHandlers = /* @__PURE__ */ new WeakMap();
|
|
33
|
+
function previousActiveConsole(handler) {
|
|
34
|
+
let entry = consoleHandlers.get(handler);
|
|
35
|
+
while (entry && !entry.active) {
|
|
36
|
+
handler = entry.previous;
|
|
37
|
+
entry = consoleHandlers.get(handler);
|
|
38
|
+
}
|
|
39
|
+
return handler;
|
|
40
|
+
}
|
|
41
|
+
async function attachInspector(renderer, eventSource, signal) {
|
|
42
|
+
await pending.get(renderer);
|
|
43
|
+
signal?.throwIfAborted();
|
|
44
|
+
if (active.has(renderer)) throw new Error("Only one <Inspector> can be mounted per renderer.");
|
|
45
|
+
if (!(eventSource instanceof HTMLElement) || !eventSource.parentElement || eventSource === eventSource.ownerDocument.body) {
|
|
46
|
+
throw new Error(
|
|
47
|
+
"Inspector requires an element event source with a parent. Document and body event sources are not supported."
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
const owner = {};
|
|
51
|
+
const current = inspectors.get(renderer) ?? new FiberInspector();
|
|
52
|
+
inspectors.set(renderer, current);
|
|
53
|
+
const internals = current;
|
|
54
|
+
const previous = renderer.inspector;
|
|
55
|
+
const previousConsole = getConsoleFunction();
|
|
56
|
+
const backend = renderer.backend;
|
|
57
|
+
const previousTracking = backend.trackTimestamp;
|
|
58
|
+
let inspectorConsole;
|
|
59
|
+
const consoleEntry = { previous: previousConsole, active: true };
|
|
60
|
+
try {
|
|
61
|
+
renderer.inspector = current;
|
|
62
|
+
inspectorConsole = getConsoleFunction();
|
|
63
|
+
consoleHandlers.set(inspectorConsole, consoleEntry);
|
|
64
|
+
eventSource.after(current.domElement);
|
|
65
|
+
current.init();
|
|
66
|
+
} catch (error) {
|
|
67
|
+
consoleEntry.active = false;
|
|
68
|
+
current.domElement.remove();
|
|
69
|
+
if (renderer.inspector === current) renderer.inspector = previous;
|
|
70
|
+
setConsoleFunction(previousConsole);
|
|
71
|
+
await renderer.init();
|
|
72
|
+
if (renderer.inspector === previous) backend.trackTimestamp = previousTracking;
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
active.set(renderer, owner);
|
|
76
|
+
let released = false;
|
|
77
|
+
return {
|
|
78
|
+
inspector: current,
|
|
79
|
+
begin: () => {
|
|
80
|
+
if (!released && renderer.inspector === current) current.beginFrame();
|
|
81
|
+
},
|
|
82
|
+
finish: () => {
|
|
83
|
+
if (!released && renderer.inspector === current) current.finishFrame();
|
|
84
|
+
},
|
|
85
|
+
release() {
|
|
86
|
+
if (released) return;
|
|
87
|
+
released = true;
|
|
88
|
+
consoleEntry.active = false;
|
|
89
|
+
current.finishFrame();
|
|
90
|
+
current.domElement.remove();
|
|
91
|
+
if (getConsoleFunction() === inspectorConsole) setConsoleFunction(previousActiveConsole(previousConsole));
|
|
92
|
+
if (active.get(renderer) === owner) {
|
|
93
|
+
active.delete(renderer);
|
|
94
|
+
if (renderer.inspector === current) {
|
|
95
|
+
renderer.inspector = previous;
|
|
96
|
+
if (getConsoleFunction() === inspectorConsole) setConsoleFunction(previousActiveConsole(previousConsole));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const finishCleanup = () => {
|
|
100
|
+
if (renderer.inspector === previous) backend.trackTimestamp = previousTracking;
|
|
101
|
+
};
|
|
102
|
+
if (internals._resolveTimestampPromise) {
|
|
103
|
+
pending.set(
|
|
104
|
+
renderer,
|
|
105
|
+
internals._resolveTimestampPromise.then(finishCleanup, finishCleanup).finally(() => pending.delete(renderer))
|
|
106
|
+
);
|
|
107
|
+
} else finishCleanup();
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export { attachInspector };
|