@tomorrowevening/hermes 0.0.22 → 0.0.23
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/hermes.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
var _n = Object.defineProperty;
|
2
2
|
var kn = (t, n, a) => n in t ? _n(t, n, { enumerable: !0, configurable: !0, writable: !0, value: a }) : t[n] = a;
|
3
|
-
var
|
4
|
-
import { PositionalAudio as Dn, EventDispatcher as cn, Texture as ln, CubeTexture as An, RepeatWrapping as Wt, ShaderMaterial as un, GLSL3 as In, DoubleSide as Nn, Color as Bt, Mesh as Ln, PlaneGeometry as Fn, Matrix4 as Un, Vector3 as
|
3
|
+
var Y = (t, n, a) => (kn(t, typeof n != "symbol" ? n + "" : n, a), a);
|
4
|
+
import { PositionalAudio as Dn, EventDispatcher as cn, Texture as ln, CubeTexture as An, RepeatWrapping as Wt, ShaderMaterial as un, GLSL3 as In, DoubleSide as Nn, Color as Bt, Mesh as Ln, PlaneGeometry as Fn, Matrix4 as Un, Vector3 as W, Euler as Bn, Ray as $n, Plane as Gn, MathUtils as Vn, MOUSE as He, TOUCH as Ke, Quaternion as Ht, Spherical as Kt, Vector2 as de, PerspectiveCamera as Nt, MeshDepthMaterial as zn, MeshNormalMaterial as Yn, MeshBasicMaterial as Wn, OrthographicCamera as dn, Scene as fn, Group as Hn, AxesHelper as hn, WebGLRenderer as Kn, Raycaster as Xn, CameraHelper as qn } from "three";
|
5
5
|
import { getProject as Zn, createRafDriver as Jn } from "@theatre/core";
|
6
6
|
import st from "@theatre/studio";
|
7
7
|
import { Pane as Qn } from "tweakpane";
|
@@ -61,11 +61,12 @@ const oa = () => {
|
|
61
61
|
};
|
62
62
|
class hi {
|
63
63
|
constructor(n, a, e = "editor") {
|
64
|
-
|
65
|
-
|
64
|
+
Y(this, "channel");
|
65
|
+
Y(this, "components", /* @__PURE__ */ new Map());
|
66
|
+
Y(this, "debugEnabled");
|
66
67
|
// Protected
|
67
|
-
|
68
|
-
this.editor = a && document.location.hash.search(e) > -1, a && (this.channel = new BroadcastChannel(n));
|
68
|
+
Y(this, "_mode", "app");
|
69
|
+
this.editor = a && document.location.hash.search(e) > -1, this.debugEnabled = a, a && (this.channel = new BroadcastChannel(n));
|
69
70
|
}
|
70
71
|
addComponent(n, a) {
|
71
72
|
this.components.set(n, a);
|
@@ -116,7 +117,7 @@ const j = new cn(), _ = {
|
|
116
117
|
};
|
117
118
|
class Ot {
|
118
119
|
constructor(n) {
|
119
|
-
|
120
|
+
Y(this, "app");
|
120
121
|
this.app = n;
|
121
122
|
}
|
122
123
|
dispose() {
|
@@ -158,11 +159,11 @@ const bn = () => {
|
|
158
159
|
}, qe = class qe extends Ot {
|
159
160
|
constructor() {
|
160
161
|
super(...arguments);
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
162
|
+
Y(this, "project");
|
163
|
+
Y(this, "sheets", /* @__PURE__ */ new Map());
|
164
|
+
Y(this, "sheetObjects", /* @__PURE__ */ new Map());
|
165
|
+
Y(this, "sheetObjectCBs", /* @__PURE__ */ new Map());
|
166
|
+
Y(this, "sheetObjectUnsubscribe", /* @__PURE__ */ new Map());
|
166
167
|
}
|
167
168
|
init(a, e) {
|
168
169
|
return this.project = Zn(a, e), this.project.ready;
|
@@ -255,7 +256,7 @@ const bn = () => {
|
|
255
256
|
return qe.rafDriver || (qe.rafDriver = Jn()), qe.rafDriver;
|
256
257
|
}
|
257
258
|
};
|
258
|
-
|
259
|
+
Y(qe, "rafDriver", null);
|
259
260
|
let Ue = qe, Me;
|
260
261
|
function ua(t, n) {
|
261
262
|
t.components.forEach((a) => {
|
@@ -508,10 +509,10 @@ function Ft(t) {
|
|
508
509
|
class ga extends Ot {
|
509
510
|
constructor() {
|
510
511
|
super(...arguments);
|
511
|
-
|
512
|
+
Y(this, "scene");
|
512
513
|
}
|
513
514
|
getObject(a) {
|
514
|
-
this.app.send({
|
515
|
+
this.app.debugEnabled && this.app.send({
|
515
516
|
event: "getObject",
|
516
517
|
target: "app",
|
517
518
|
data: a
|
@@ -559,9 +560,9 @@ class ga extends Ot {
|
|
559
560
|
});
|
560
561
|
}
|
561
562
|
setScene(a) {
|
562
|
-
if (a === void 0)
|
563
|
+
if (a === void 0 || (this.scene = a, !this.app.debugEnabled))
|
563
564
|
return;
|
564
|
-
|
565
|
+
oa(), gn(this.scene);
|
565
566
|
const e = yn(this.scene);
|
566
567
|
this.app.send({
|
567
568
|
event: "setScene",
|
@@ -570,6 +571,8 @@ class ga extends Ot {
|
|
570
571
|
});
|
571
572
|
}
|
572
573
|
addCamera(a) {
|
574
|
+
if (!this.app.debugEnabled)
|
575
|
+
return;
|
573
576
|
const e = Dt(a);
|
574
577
|
this.app.send({
|
575
578
|
event: "addCamera",
|
@@ -578,6 +581,8 @@ class ga extends Ot {
|
|
578
581
|
});
|
579
582
|
}
|
580
583
|
removeCamera(a) {
|
584
|
+
if (!this.app.debugEnabled)
|
585
|
+
return;
|
581
586
|
const e = Dt(a);
|
582
587
|
this.app.send({
|
583
588
|
event: "removeCamera",
|
@@ -621,12 +626,12 @@ function ba(t, n) {
|
|
621
626
|
class En extends Ot {
|
622
627
|
constructor(a) {
|
623
628
|
super(a);
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
629
|
+
Y(this, "bindCBs");
|
630
|
+
Y(this, "buttonCBs");
|
631
|
+
Y(this, "pane");
|
632
|
+
Y(this, "appCallbacks", 0);
|
633
|
+
Y(this, "editorCallbacks", 0);
|
634
|
+
Y(this, "inspectorFolder");
|
630
635
|
this.bindCBs = /* @__PURE__ */ new Map(), this.buttonCBs = /* @__PURE__ */ new Map(), a.editor && this.createGUI();
|
631
636
|
}
|
632
637
|
createGUI() {
|
@@ -1004,18 +1009,18 @@ function wa() {
|
|
1004
1009
|
if (Ee && w && typeof Ee.stack == "string") {
|
1005
1010
|
for (var T = Ee.stack.split(`
|
1006
1011
|
`), ce = w.stack.split(`
|
1007
|
-
`),
|
1012
|
+
`), H = T.length - 1, Z = ce.length - 1; H >= 1 && Z >= 0 && T[H] !== ce[Z]; )
|
1008
1013
|
Z--;
|
1009
|
-
for (;
|
1010
|
-
if (T[
|
1011
|
-
if (
|
1014
|
+
for (; H >= 1 && Z >= 0; H--, Z--)
|
1015
|
+
if (T[H] !== ce[Z]) {
|
1016
|
+
if (H !== 1 || Z !== 1)
|
1012
1017
|
do
|
1013
|
-
if (
|
1018
|
+
if (H--, Z--, Z < 0 || T[H] !== ce[Z]) {
|
1014
1019
|
var ge = `
|
1015
|
-
` + T[
|
1020
|
+
` + T[H].replace(" at new ", " at ");
|
1016
1021
|
return i.displayName && ge.includes("<anonymous>") && (ge = ge.replace("<anonymous>", i.displayName)), typeof i == "function" && je.set(i, ge), ge;
|
1017
1022
|
}
|
1018
|
-
while (
|
1023
|
+
while (H >= 1 && Z >= 0);
|
1019
1024
|
break;
|
1020
1025
|
}
|
1021
1026
|
}
|
@@ -1081,8 +1086,8 @@ function wa() {
|
|
1081
1086
|
throw ce.name = "Invariant Violation", ce;
|
1082
1087
|
}
|
1083
1088
|
T = i[P](h, P, w, g, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
|
1084
|
-
} catch (
|
1085
|
-
T =
|
1089
|
+
} catch (H) {
|
1090
|
+
T = H;
|
1086
1091
|
}
|
1087
1092
|
T && !(T instanceof Error) && (Se(k), S("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", w || "React class", g, P, typeof T), Se(null)), T instanceof Error && !(T.message in pt) && (pt[T.message] = !0, Se(k), S("Failed %s type: %s", g, T.message), Se(null));
|
1088
1093
|
}
|
@@ -1199,9 +1204,9 @@ function wa() {
|
|
1199
1204
|
for (L in h)
|
1200
1205
|
Ve.call(h, L) && !_t.hasOwnProperty(L) && (P[L] = h[L]);
|
1201
1206
|
if (i && i.defaultProps) {
|
1202
|
-
var
|
1203
|
-
for (L in
|
1204
|
-
P[L] === void 0 && (P[L] =
|
1207
|
+
var H = i.defaultProps;
|
1208
|
+
for (L in H)
|
1209
|
+
P[L] === void 0 && (P[L] = H[L]);
|
1205
1210
|
}
|
1206
1211
|
if (T || ce) {
|
1207
1212
|
var Z = typeof i == "function" ? i.displayName || i.name || "Unknown" : i;
|
@@ -1336,8 +1341,8 @@ Check the top-level render call using <` + g + ">.");
|
|
1336
1341
|
(i === void 0 || typeof i == "object" && i !== null && Object.keys(i).length === 0) && (T += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");
|
1337
1342
|
var ce = De(k);
|
1338
1343
|
ce ? T += ce : T += ze();
|
1339
|
-
var
|
1340
|
-
i === null ?
|
1344
|
+
var H;
|
1345
|
+
i === null ? H = "null" : tt(i) ? H = "array" : i !== void 0 && i.$$typeof === n ? (H = "<" + (F(i.type) || "Unknown") + " />", T = " Did you accidentally export a JSX literal instead of a component?") : H = typeof i, S("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", H, T);
|
1341
1346
|
}
|
1342
1347
|
var Z = ue(i, h, g, k, L);
|
1343
1348
|
if (Z == null)
|
@@ -1617,7 +1622,7 @@ class _a extends Ln {
|
|
1617
1622
|
constructor() {
|
1618
1623
|
const a = new ja();
|
1619
1624
|
super(new Fn(2, 2), a);
|
1620
|
-
|
1625
|
+
Y(this, "gridMaterial");
|
1621
1626
|
this.gridMaterial = a, this.frustumCulled = !1, this.name = "InfiniteGridHelper", this.position.y = 0.1;
|
1622
1627
|
}
|
1623
1628
|
update() {
|
@@ -2287,7 +2292,7 @@ function At(t) {
|
|
2287
2292
|
function Wa(t, n) {
|
2288
2293
|
const a = new Un();
|
2289
2294
|
a.elements = t.matrix;
|
2290
|
-
const e = new
|
2295
|
+
const e = new W(), r = new Bn(), s = new W();
|
2291
2296
|
t.uuid.length > 0 && (e.setFromMatrixPosition(a), r.setFromRotationMatrix(a), s.setFromMatrixScale(a));
|
2292
2297
|
const u = (d, p) => {
|
2293
2298
|
var E;
|
@@ -2568,9 +2573,9 @@ function Xa(t) {
|
|
2568
2573
|
class mi extends ta {
|
2569
2574
|
constructor(a) {
|
2570
2575
|
super(a);
|
2571
|
-
|
2576
|
+
Y(this, "three");
|
2572
2577
|
// Private
|
2573
|
-
|
2578
|
+
Y(this, "setScene", (a) => {
|
2574
2579
|
this.setState(() => ({
|
2575
2580
|
scene: a.value
|
2576
2581
|
}));
|
@@ -2642,7 +2647,7 @@ function gi(t) {
|
|
2642
2647
|
const tn = { type: "change" }, It = { type: "start" }, nn = { type: "end" }, wt = new $n(), an = new Gn(), qa = Math.cos(70 * Vn.DEG2RAD);
|
2643
2648
|
class Za extends cn {
|
2644
2649
|
constructor(n, a) {
|
2645
|
-
super(), this.object = n, this.domElement = a, this.domElement.style.touchAction = "none", this.enabled = !0, this.target = new
|
2650
|
+
super(), this.object = n, this.domElement = a, this.domElement.style.touchAction = "none", this.enabled = !0, this.target = new W(), this.cursor = new W(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minTargetRadius = 0, this.maxTargetRadius = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }, this.mouseButtons = { LEFT: He.ROTATE, MIDDLE: He.DOLLY, RIGHT: He.PAN }, this.touches = { ONE: Ke.ROTATE, TWO: Ke.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this.getPolarAngle = function() {
|
2646
2651
|
return l.phi;
|
2647
2652
|
}, this.getAzimuthalAngle = function() {
|
2648
2653
|
return l.theta;
|
@@ -2657,7 +2662,7 @@ class Za extends cn {
|
|
2657
2662
|
}, this.reset = function() {
|
2658
2663
|
e.target.copy(e.target0), e.object.position.copy(e.position0), e.object.zoom = e.zoom0, e.object.updateProjectionMatrix(), e.dispatchEvent(tn), e.update(), s = r.NONE;
|
2659
2664
|
}, this.update = function() {
|
2660
|
-
const o = new
|
2665
|
+
const o = new W(), y = new Ht().setFromUnitVectors(n.up, new W(0, 1, 0)), D = y.clone().invert(), N = new W(), te = new Ht(), be = new W(), ue = 2 * Math.PI;
|
2661
2666
|
return function(Et = null) {
|
2662
2667
|
const ye = e.object.position;
|
2663
2668
|
o.copy(ye).sub(e.target), o.applyQuaternion(y), l.setFromVector3(o), e.autoRotate && s === r.NONE && B(b(Et)), e.enableDamping ? (l.theta += d.theta * e.dampingFactor, l.phi += d.phi * e.dampingFactor) : (l.theta += d.theta, l.phi += d.phi);
|
@@ -2672,9 +2677,9 @@ class Za extends cn {
|
|
2672
2677
|
const Ye = Te - De;
|
2673
2678
|
e.object.position.addScaledVector(fe, Ye), e.object.updateMatrixWorld();
|
2674
2679
|
} else if (e.object.isOrthographicCamera) {
|
2675
|
-
const Te = new
|
2680
|
+
const Te = new W(le.x, le.y, 0);
|
2676
2681
|
Te.unproject(e.object), e.object.zoom = Math.max(e.minZoom, Math.min(e.maxZoom, e.object.zoom / p)), e.object.updateProjectionMatrix(), ze = !0;
|
2677
|
-
const Ye = new
|
2682
|
+
const Ye = new W(le.x, le.y, 0);
|
2678
2683
|
Ye.unproject(e.object), e.object.position.sub(Ye).add(Te), e.object.updateMatrixWorld(), De = o.length();
|
2679
2684
|
} else
|
2680
2685
|
console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."), e.zoomToCursor = !1;
|
@@ -2699,7 +2704,7 @@ class Za extends cn {
|
|
2699
2704
|
let s = r.NONE;
|
2700
2705
|
const u = 1e-6, l = new Kt(), d = new Kt();
|
2701
2706
|
let p = 1;
|
2702
|
-
const v = new
|
2707
|
+
const v = new W(), E = new de(), x = new de(), C = new de(), M = new de(), G = new de(), se = new de(), K = new de(), S = new de(), X = new de(), fe = new W(), le = new de();
|
2703
2708
|
let ee = !1;
|
2704
2709
|
const f = [], m = {};
|
2705
2710
|
function b(o) {
|
@@ -2716,17 +2721,17 @@ class Za extends cn {
|
|
2716
2721
|
d.phi -= o;
|
2717
2722
|
}
|
2718
2723
|
const F = function() {
|
2719
|
-
const o = new
|
2724
|
+
const o = new W();
|
2720
2725
|
return function(D, N) {
|
2721
2726
|
o.setFromMatrixColumn(N, 0), o.multiplyScalar(-D), v.add(o);
|
2722
2727
|
};
|
2723
2728
|
}(), A = function() {
|
2724
|
-
const o = new
|
2729
|
+
const o = new W();
|
2725
2730
|
return function(D, N) {
|
2726
2731
|
e.screenSpacePanning === !0 ? o.setFromMatrixColumn(N, 1) : (o.setFromMatrixColumn(N, 0), o.crossVectors(e.object.up, o)), o.multiplyScalar(D), v.add(o);
|
2727
2732
|
};
|
2728
2733
|
}(), U = function() {
|
2729
|
-
const o = new
|
2734
|
+
const o = new W();
|
2730
2735
|
return function(D, N) {
|
2731
2736
|
const te = e.domElement;
|
2732
2737
|
if (e.object.isPerspectiveCamera) {
|
@@ -3065,13 +3070,13 @@ function $e(t, n) {
|
|
3065
3070
|
const a = new dn(-100, 100, 100, -100, 50, 3e3);
|
3066
3071
|
return a.name = t, a.position.copy(n), a.lookAt(0, 0, 0), ne.set(t, a), a;
|
3067
3072
|
}
|
3068
|
-
$e("Top", new
|
3069
|
-
$e("Bottom", new
|
3070
|
-
$e("Left", new
|
3071
|
-
$e("Right", new
|
3072
|
-
$e("Front", new
|
3073
|
-
$e("Back", new
|
3074
|
-
$e("Orthographic", new
|
3073
|
+
$e("Top", new W(0, 1e3, 0));
|
3074
|
+
$e("Bottom", new W(0, -1e3, 0));
|
3075
|
+
$e("Left", new W(-1e3, 0, 0));
|
3076
|
+
$e("Right", new W(1e3, 0, 0));
|
3077
|
+
$e("Front", new W(0, 0, 1e3));
|
3078
|
+
$e("Back", new W(0, 0, -1e3));
|
3079
|
+
$e("Orthographic", new W(1e3, 1e3, 1e3));
|
3075
3080
|
const Tt = new Nt(60, 1, 50, 3e3);
|
3076
3081
|
Tt.name = "Debug";
|
3077
3082
|
Tt.position.set(500, 500, 500);
|
package/dist/hermes.umd.cjs
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
(function(w,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("three"),require("@theatre/core"),require("@theatre/studio"),require("tweakpane"),require("@tweakpane/plugin-essentials"),require("react"),require("framer-motion")):typeof define=="function"&&define.amd?define(["exports","three","@theatre/core","@theatre/studio","tweakpane","@tweakpane/plugin-essentials","react","framer-motion"],u):(w=typeof globalThis<"u"?globalThis:w||self,u(w.Hermes={},w.Three,w["Theatre Core"],w["Theatre Studio"],w.tweakpane,w["tweakpane-plugin-essentials"],w.React,w["framer-motion"]))})(this,function(w,u,Se,Xe,xn,On,R,Bt){"use strict";var Ra=Object.defineProperty;var Pa=(w,u,Se)=>u in w?Ra(w,u,{enumerable:!0,configurable:!0,writable:!0,value:Se}):w[u]=Se;var Z=(w,u,Se)=>(Pa(w,typeof u!="symbol"?u+"":u,Se),Se);function Tn(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const e=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(n,a,e.get?e:{enumerable:!0,get:()=>t[a]})}}return n.default=t,Object.freeze(n)}const Mn=Tn(On);function Rn(t,n,a){return Math.min(n,Math.max(t,a))}function Pn(t,n){const a=t-n;return Math.sqrt(a*a)}function Gt(){return Math.round(Math.random()*1e6).toString()}function Ht(t){return t.r!==void 0&&t.g!==void 0&&t.b!==void 0}function zt(t){const n=Math.round(t.r*255),a=Math.round(t.g*255),e=Math.round(t.b*255),r=f=>{const m=f.toString(16);return m.length===1?"0"+m:m},s=r(n),d=r(a),l=r(e);return"#"+s+d+l}function ct(t,n=1){return Number(t.toFixed(n))}w.totalThreeObjects=0;const Yt=()=>{w.totalThreeObjects=0},Tt=t=>{if(!t)return;let n=t.name.replace(" ","");n.length===0&&(n=`obj_${w.totalThreeObjects}`,w.totalThreeObjects++),t.parent!==null&&(n=`${t.parent.uuid}.${n}`),t.uuid=n,t.children.forEach(a=>{Tt(a)})},jn=t=>{t==null||t.dispose()},Wt=t=>{t&&(Array.isArray(t)?t.forEach(n=>n.dispose()):t.dispose())},Mt=t=>{var n;if(t){for(;t.children.length>0;){const a=t.children[0];a instanceof u.PositionalAudio?(a.pause(),a.parent&&a.parent.remove(a)):Mt(a)}if(t.parent&&t.parent.remove(t),t.isMesh){const a=t;(n=a.geometry)==null||n.dispose(),Wt(a.material)}t.dispose!==void 0&&t.dispose()}};class _n{constructor(n,a,e="editor"){Z(this,"channel");Z(this,"components",new Map);Z(this,"_mode","app");this.editor=a&&document.location.hash.search(e)>-1,a&&(this.channel=new BroadcastChannel(n))}addComponent(n,a){this.components.set(n,a)}dispose(){this.components.forEach(n=>{n.dispose()}),this.components.clear()}send(n){this.channel!==void 0&&this._mode!==n.target&&this.channel.postMessage(n)}listen(n){this.channel!==void 0&&(this.channel.onmessage=a=>{n(a.data)})}get mode(){return this._mode}get isApp(){return this._mode==="app"}get editor(){return this._mode==="editor"}set editor(n){n&&(this._mode="editor",document.title+=" - Editor")}}const D=new u.EventDispatcher,A={CUSTOM:"ToolEvents::custom",SELECT_DROPDOWN:"ToolEvents::selectDropdown",DRAG_UPDATE:"ToolEvents::dragUpdate",SET_SCENE:"ToolEvents::setScene",GET_OBJECT:"ToolEvents::getObject",SET_OBJECT:"ToolEvents::setObject",UPDATE_OBJECT:"ToolEvents::updateObject",CREATE_TEXTURE:"ToolEvents::createTexture",REQUEST_METHOD:"ToolEvents::requestMethod",ADD_CAMERA:"ToolEvents::addCamera",REMOVE_CAMERA:"ToolEvents::removeCamera"};class Ze{constructor(n){Z(this,"app");this.app=n}dispose(){}}class Kt extends Ze{selectDropdown(n,a){this.app.send({event:"selectComponent",target:"app",data:{dropdown:n,value:a}})}updateDropdown(n,a){this.app.send({event:"draggableListUpdate",target:"app",data:{dropdown:n,value:a}})}}function kn(t,n){switch(n.event){case"selectComponent":D.dispatchEvent({type:A.SELECT_DROPDOWN,value:n.data});break;case"draggableListUpdate":D.dispatchEvent({type:A.DRAG_UPDATE,value:n.data});break}}const Xt=()=>{},Ge=class Ge extends Ze{constructor(){super(...arguments);Z(this,"project");Z(this,"sheets",new Map);Z(this,"sheetObjects",new Map);Z(this,"sheetObjectCBs",new Map);Z(this,"sheetObjectUnsubscribe",new Map)}init(a,e){return this.project=Se.getProject(a,e),this.project.ready}dispose(){this.project=void 0,this.sheets=new Map,this.sheetObjects=new Map,this.sheetObjectCBs=new Map,this.sheetObjectUnsubscribe=new Map}sheet(a){var r;if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}let e=this.sheets.get(a);return e!==void 0||(e=(r=this.project)==null?void 0:r.sheet(a),this.sheets.set(a,e)),e}playSheet(a,e){var r;(r=this.sheet(a))==null||r.sequence.play(e),this.app.send({event:"playSheet",target:"editor",data:{sheet:a,value:e}})}pauseSheet(a){var e;(e=this.sheet(a))==null||e.sequence.pause(),this.app.send({event:"pauseSheet",target:"editor",data:{sheet:a}})}clearSheetObjects(a){this.sheetObjects.forEach((e,r)=>{r.search(`${a}_`)>-1&&this.unsubscribe(e)})}sheetObject(a,e,r,s){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const d=this.sheet(a);if(d===void 0)return;const l=`${a}_${e}`;let f=this.sheetObjects.get(l);f!==void 0?f=d.object(e,{...r,...f.value},{reconfigure:!0}):f=d.object(e,r),this.sheetObjects.set(l,f),this.sheetObjectCBs.set(l,s!==void 0?s:Xt);const m=f.onValuesChange(b=>{if(this.app.editor){for(const x in b){const O=b[x];typeof O=="object"&&Ht(O)&&(b[x]={r:O.r,g:O.g,b:O.b,a:O.a})}this.app.send({event:"updateSheetObject",target:"app",data:{sheetObject:l,values:b}})}const C=this.sheetObjectCBs.get(l);C!==void 0&&C(b)});return this.sheetObjectUnsubscribe.set(l,m),f}unsubscribe(a){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const e=a.address.sheetId,r=a.address.objectKey,s=this.sheets.get(e);s==null||s.detachObject(r);const d=`${e}_${r}`,l=this.sheetObjectUnsubscribe.get(d);l!==void 0&&(this.sheetObjects.delete(d),this.sheetObjectCBs.delete(d),this.sheetObjectUnsubscribe.delete(d),l())}static getRafDriver(){return Ge.rafDriver||(Ge.rafDriver=Se.createRafDriver()),Ge.rafDriver}};Z(Ge,"rafDriver",null);let xe=Ge,Oe;function Dn(t,n){t.components.forEach(a=>{if(a instanceof xe){let e;const r=a;switch(n.event){case"setSheet":e=r.sheets.get(n.data.sheet),e!==void 0&&(Oe=e,Xe.setSelection([e]));break;case"setSheetObject":e=r.sheetObjects.get(`${n.data.sheet}_${n.data.key}`),e!==void 0&&Xe.setSelection([e]);break;case"updateSheetObject":e=r.sheetObjectCBs.get(n.data.sheetObject),e!==void 0&&e(n.data.values);break;case"updateTimeline":e=r.sheets.get(n.data.sheet),Oe!==void 0&&(Oe.sequence.position=n.data.position);break}}})}function An(t){if(t.editor){let n;t.components.forEach(s=>{s instanceof xe&&(n=s)}),Xe.ui.restore(),Xe.onSelectionChange(s=>{s.length<1||s.forEach(d=>{let l=d.address.sheetId,f="setSheet",m={};switch(d.type){case"Theatre_Sheet_PublicAPI":f="setSheet",m={sheet:d.address.sheetId},Oe=n.sheets.get(d.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":f="setSheetObject",l+=`_${d.address.objectKey}`,m={id:l,sheet:d.address.sheetId,key:d.address.objectKey};break}t.send({event:f,target:"app",data:m})})});let a=0;const e=()=>{if(xe.getRafDriver().tick(performance.now()),Oe!==void 0&&a!==Oe.sequence.position){a=Oe.sequence.position;const s=Oe;t.send({event:"updateTimeline",target:"app",data:{position:a,sheet:s.address.sheetId}})}},r=()=>{e(),requestAnimationFrame(r)};e(),r()}else Xe.ui.hide()}function In(t,n){t.editor&&t.components.forEach(a=>{var e,r;if(a instanceof xe){const s=a;switch(n.event){case"playSheet":(e=s.sheet(n.data.sheet))==null||e.sequence.play(n.data.value);break;case"pauseSheet":(r=s.sheet(n.data.sheet))==null||r.sequence.pause();break}return}})}function Nn(t){if(t.name==="cameras")return"camera";if(t.name==="interactive")return"interactive";if(t.name==="lights")return"light";if(t.name==="ui")return"ui";if(t.name==="utils")return"utils";const n=t.type;return n.search("Helper")>-1?"icon_utils":n.search("Camera")>-1?"camera":n.search("Light")>-1?"light":"obj3D"}function Zt(t){const n={name:t.name,type:t.type,uuid:t.uuid,children:[]};return t.children.forEach(a=>{n.children.push(Zt(a))}),n}function Ln(t){const n={};for(const a in t){const e=t[a].value;n[a]={value:e},e===null?n[a].value={src:""}:e.isTexture&&(n[a].value={src:e.image.src})}return n}function Un(t){switch(t){case"blendSrcAlpha":case"blendDstAlpha":case"blendEquationAlpha":case"clippingPlanes":case"shadowSide":case"precision":return!0}return!1}function Jt(t){const n={};for(const a in t){if(a.substring(0,1)==="_"||a.substring(0,2)==="is"||Un(a))continue;const e=typeof t[a],r=t[a];switch(e){case"boolean":case"number":case"string":n[a]=r;break;case"object":if(r!==null)if(n[a]=r,r.isTexture)if(r instanceof u.Texture){const s=r.source.toJSON();n[a]={src:s.url}}else r instanceof u.CubeTexture&&(console.log("env map"),console.log(r.source.data),console.log(r.source.toJSON()),n[a]={src:""});else a==="uniforms"&&(n[a]=Ln(n[a]));else n[a]={src:""};break}}return n}function Rt(t){t.updateMatrix();const n={name:t.name,type:t.type,uuid:t.uuid,visible:t.visible,matrix:t.matrix.elements,animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0};t.animations.forEach(e=>{n.animations.push({name:e.name,duration:e.duration,blendMode:e.blendMode})});const a=t.type.toLowerCase();if(a.search("mesh")>-1){const e=t;if(Array.isArray(e.material)){const r=[];e.material.forEach(s=>{r.push(Jt(s))}),n.material=r}else n.material=Jt(e.material)}else a.search("camera")>-1?t.type==="PerspectiveCamera"?n.perspectiveCameraInfo={fov:t.fov,zoom:t.zoom,near:t.near,far:t.far,focus:t.focus,aspect:t.aspect,filmGauge:t.filmGauge,filmOffset:t.filmOffset}:t.type==="OrthographicCamera"&&(n.orthographicCameraInfo={zoom:t.zoom,near:t.near,far:t.far,left:t.left,right:t.right,top:t.top,bottom:t.bottom}):a.search("light")>-1&&(n.lightInfo={color:t.color,intensity:t.intensity,decay:t.decay,distance:t.distance,angle:t.angle,penumbra:t.penumbra,groundColor:t.groundColor});return n}function te(t,n,a){const e=n.split(".");switch(e.length){case 1:t[e[0]]=a;break;case 2:t[e[0]][e[1]]=a;break;case 3:t[e[0]][e[1]][e[2]]=a;break;case 4:t[e[0]][e[1]][e[2]][e[3]]=a;break;case 5:t[e[0]][e[1]][e[2]][e[3]][e[4]]=a;break}}function Pt(t){return new Promise((n,a)=>{const e=new Image;e.onload=()=>{const r=new u.Texture(e);r.wrapS=u.RepeatWrapping,r.wrapT=u.RepeatWrapping,r.needsUpdate=!0,n(r)},e.onerror=a,e.src=t})}class Qt extends Ze{constructor(){super(...arguments);Z(this,"scene")}getObject(a){this.app.send({event:"getObject",target:"app",data:a})}setObject(a){const e=Rt(a);this.app.send({event:"setObject",target:"editor",data:e})}requestMethod(a,e,r){this.app.send({event:"requestMethod",target:"app",data:{uuid:a,key:e,value:r}})}updateObject(a,e,r){this.app.send({event:"updateObject",target:"app",data:{uuid:a,key:e,value:r}})}createTexture(a,e,r){this.app.send({event:"createTexture",target:"app",data:{uuid:a,key:e,value:r}})}setScene(a){if(a===void 0)return;this.scene=a,Yt(),Tt(this.scene);const e=Zt(this.scene);this.app.send({event:"setScene",target:"editor",data:e})}addCamera(a){const e=Rt(a);this.app.send({event:"addCamera",target:"editor",data:e})}removeCamera(a){const e=Rt(a);this.app.send({event:"removeCamera",target:"editor",data:e})}}function Fn(t,n){switch(n.event){case"getObject":D.dispatchEvent({type:A.GET_OBJECT,value:n.data});break;case"updateObject":D.dispatchEvent({type:A.UPDATE_OBJECT,value:n.data});break;case"createTexture":D.dispatchEvent({type:A.CREATE_TEXTURE,value:n.data});break;case"requestMethod":D.dispatchEvent({type:A.REQUEST_METHOD,value:n.data});break}}function Vn(t,n){switch(n.event){case"setObject":D.dispatchEvent({type:A.SET_OBJECT,value:n.data});break;case"setScene":D.dispatchEvent({type:A.SET_SCENE,value:n.data});break;case"addCamera":D.dispatchEvent({type:A.ADD_CAMERA,value:n.data});break;case"removeCamera":D.dispatchEvent({type:A.REMOVE_CAMERA,value:n.data});break}}class jt extends Ze{constructor(a){super(a);Z(this,"bindCBs");Z(this,"buttonCBs");Z(this,"pane");Z(this,"appCallbacks",0);Z(this,"editorCallbacks",0);Z(this,"inspectorFolder");this.bindCBs=new Map,this.buttonCBs=new Map,a.editor&&this.createGUI()}createGUI(){this.pane=new xn.Pane({title:"GUI"}),this.pane.registerPlugin(Mn)}dispose(){var a;this.bindCBs.clear(),this.buttonCBs.clear(),this.appCallbacks=0,this.editorCallbacks=0,this.app.editor&&((a=this.pane)==null||a.dispose(),this.pane=void 0)}addFolder(a,e=void 0,r=void 0){if(this.app.editor)return this.pane===void 0&&this.createGUI(),(r!==void 0?r:this.pane).addFolder({title:a,...e});this.app.send({event:"addFolder",target:"app",data:{name:a,params:e,parent:r}})}get bindID(){return`debug_${Math.max(this.appCallbacks,this.editorCallbacks)}`}bind(a,e,r,s=void 0){const d=this.bindID,l=r.onChange!==void 0?r.onChange:Xt;this.bindCBs.set(d,l),this.app.editor?(this.pane===void 0&&this.createGUI(),(s!==void 0?s:this.pane).addBinding(a,e,r).on("change",m=>{this.app.send({event:"updateBind",target:"app",data:{id:d,value:m.value}})}),this.editorCallbacks++):(this.app.send({event:"bindObject",target:"app",data:{id:d,name:e,params:r,parent:s}}),this.appCallbacks++)}triggerBind(a,e){const r=this.bindCBs.get(a);r!==void 0?r(e):console.warn(`No callback for: ${a}`,e)}button(a,e,r=void 0){const s=this.bindID;this.buttonCBs.set(s,e),this.app.editor?(this.pane===void 0&&this.createGUI(),(r!==void 0?r:this.pane).addButton({title:a}).on("click",()=>{this.app.send({event:"clickButton",target:"app",data:{id:s}})}),this.editorCallbacks++):(this.app.send({event:"addButton",target:"app",data:{id:s,name:a,callback:e,parent:r}}),this.appCallbacks++)}triggerButton(a){const e=this.buttonCBs.get(a);e!==void 0&&e()}createInspector(){this.inspectorFolder=this.addFolder("Inspector",this.pane)}clearInspector(){const a=this.inspectorFolder.children.length-1;for(let e=a;e>-1;--e)this.inspectorFolder.remove(this.inspectorFolder.children[e])}}function Bn(t,n){t.components.forEach(a=>{if(a instanceof jt){const e=a;switch(n.event){case"addFolder":e.addFolder(n.data.name,n.data.params,n.data.parent);break;case"bindObject":e.bind(n.data.name,n.data.params,n.data.parent);break;case"updateBind":e.triggerBind(n.data.id,n.data.value);break;case"addButton":e.button(n.data.name,n.data.callback,n.data.parent);break;case"clickButton":e.triggerButton(n.data.id);break}return}})}var _t={exports:{}},Je={};/**
|
1
|
+
(function(w,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("three"),require("@theatre/core"),require("@theatre/studio"),require("tweakpane"),require("@tweakpane/plugin-essentials"),require("react"),require("framer-motion")):typeof define=="function"&&define.amd?define(["exports","three","@theatre/core","@theatre/studio","tweakpane","@tweakpane/plugin-essentials","react","framer-motion"],u):(w=typeof globalThis<"u"?globalThis:w||self,u(w.Hermes={},w.Three,w["Theatre Core"],w["Theatre Studio"],w.tweakpane,w["tweakpane-plugin-essentials"],w.React,w["framer-motion"]))})(this,function(w,u,Se,Xe,xn,On,R,Bt){"use strict";var Ra=Object.defineProperty;var Pa=(w,u,Se)=>u in w?Ra(w,u,{enumerable:!0,configurable:!0,writable:!0,value:Se}):w[u]=Se;var X=(w,u,Se)=>(Pa(w,typeof u!="symbol"?u+"":u,Se),Se);function Tn(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const e=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(n,a,e.get?e:{enumerable:!0,get:()=>t[a]})}}return n.default=t,Object.freeze(n)}const Mn=Tn(On);function Rn(t,n,a){return Math.min(n,Math.max(t,a))}function Pn(t,n){const a=t-n;return Math.sqrt(a*a)}function Gt(){return Math.round(Math.random()*1e6).toString()}function Ht(t){return t.r!==void 0&&t.g!==void 0&&t.b!==void 0}function zt(t){const n=Math.round(t.r*255),a=Math.round(t.g*255),e=Math.round(t.b*255),r=f=>{const m=f.toString(16);return m.length===1?"0"+m:m},s=r(n),d=r(a),l=r(e);return"#"+s+d+l}function ct(t,n=1){return Number(t.toFixed(n))}w.totalThreeObjects=0;const Yt=()=>{w.totalThreeObjects=0},Tt=t=>{if(!t)return;let n=t.name.replace(" ","");n.length===0&&(n=`obj_${w.totalThreeObjects}`,w.totalThreeObjects++),t.parent!==null&&(n=`${t.parent.uuid}.${n}`),t.uuid=n,t.children.forEach(a=>{Tt(a)})},jn=t=>{t==null||t.dispose()},Wt=t=>{t&&(Array.isArray(t)?t.forEach(n=>n.dispose()):t.dispose())},Mt=t=>{var n;if(t){for(;t.children.length>0;){const a=t.children[0];a instanceof u.PositionalAudio?(a.pause(),a.parent&&a.parent.remove(a)):Mt(a)}if(t.parent&&t.parent.remove(t),t.isMesh){const a=t;(n=a.geometry)==null||n.dispose(),Wt(a.material)}t.dispose!==void 0&&t.dispose()}};class _n{constructor(n,a,e="editor"){X(this,"channel");X(this,"components",new Map);X(this,"debugEnabled");X(this,"_mode","app");this.editor=a&&document.location.hash.search(e)>-1,this.debugEnabled=a,a&&(this.channel=new BroadcastChannel(n))}addComponent(n,a){this.components.set(n,a)}dispose(){this.components.forEach(n=>{n.dispose()}),this.components.clear()}send(n){this.channel!==void 0&&this._mode!==n.target&&this.channel.postMessage(n)}listen(n){this.channel!==void 0&&(this.channel.onmessage=a=>{n(a.data)})}get mode(){return this._mode}get isApp(){return this._mode==="app"}get editor(){return this._mode==="editor"}set editor(n){n&&(this._mode="editor",document.title+=" - Editor")}}const D=new u.EventDispatcher,A={CUSTOM:"ToolEvents::custom",SELECT_DROPDOWN:"ToolEvents::selectDropdown",DRAG_UPDATE:"ToolEvents::dragUpdate",SET_SCENE:"ToolEvents::setScene",GET_OBJECT:"ToolEvents::getObject",SET_OBJECT:"ToolEvents::setObject",UPDATE_OBJECT:"ToolEvents::updateObject",CREATE_TEXTURE:"ToolEvents::createTexture",REQUEST_METHOD:"ToolEvents::requestMethod",ADD_CAMERA:"ToolEvents::addCamera",REMOVE_CAMERA:"ToolEvents::removeCamera"};class Ze{constructor(n){X(this,"app");this.app=n}dispose(){}}class Kt extends Ze{selectDropdown(n,a){this.app.send({event:"selectComponent",target:"app",data:{dropdown:n,value:a}})}updateDropdown(n,a){this.app.send({event:"draggableListUpdate",target:"app",data:{dropdown:n,value:a}})}}function kn(t,n){switch(n.event){case"selectComponent":D.dispatchEvent({type:A.SELECT_DROPDOWN,value:n.data});break;case"draggableListUpdate":D.dispatchEvent({type:A.DRAG_UPDATE,value:n.data});break}}const Xt=()=>{},Ge=class Ge extends Ze{constructor(){super(...arguments);X(this,"project");X(this,"sheets",new Map);X(this,"sheetObjects",new Map);X(this,"sheetObjectCBs",new Map);X(this,"sheetObjectUnsubscribe",new Map)}init(a,e){return this.project=Se.getProject(a,e),this.project.ready}dispose(){this.project=void 0,this.sheets=new Map,this.sheetObjects=new Map,this.sheetObjectCBs=new Map,this.sheetObjectUnsubscribe=new Map}sheet(a){var r;if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}let e=this.sheets.get(a);return e!==void 0||(e=(r=this.project)==null?void 0:r.sheet(a),this.sheets.set(a,e)),e}playSheet(a,e){var r;(r=this.sheet(a))==null||r.sequence.play(e),this.app.send({event:"playSheet",target:"editor",data:{sheet:a,value:e}})}pauseSheet(a){var e;(e=this.sheet(a))==null||e.sequence.pause(),this.app.send({event:"pauseSheet",target:"editor",data:{sheet:a}})}clearSheetObjects(a){this.sheetObjects.forEach((e,r)=>{r.search(`${a}_`)>-1&&this.unsubscribe(e)})}sheetObject(a,e,r,s){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const d=this.sheet(a);if(d===void 0)return;const l=`${a}_${e}`;let f=this.sheetObjects.get(l);f!==void 0?f=d.object(e,{...r,...f.value},{reconfigure:!0}):f=d.object(e,r),this.sheetObjects.set(l,f),this.sheetObjectCBs.set(l,s!==void 0?s:Xt);const m=f.onValuesChange(b=>{if(this.app.editor){for(const x in b){const O=b[x];typeof O=="object"&&Ht(O)&&(b[x]={r:O.r,g:O.g,b:O.b,a:O.a})}this.app.send({event:"updateSheetObject",target:"app",data:{sheetObject:l,values:b}})}const C=this.sheetObjectCBs.get(l);C!==void 0&&C(b)});return this.sheetObjectUnsubscribe.set(l,m),f}unsubscribe(a){if(this.project===void 0){console.error("Theatre Project hasn't been created yet.");return}const e=a.address.sheetId,r=a.address.objectKey,s=this.sheets.get(e);s==null||s.detachObject(r);const d=`${e}_${r}`,l=this.sheetObjectUnsubscribe.get(d);l!==void 0&&(this.sheetObjects.delete(d),this.sheetObjectCBs.delete(d),this.sheetObjectUnsubscribe.delete(d),l())}static getRafDriver(){return Ge.rafDriver||(Ge.rafDriver=Se.createRafDriver()),Ge.rafDriver}};X(Ge,"rafDriver",null);let xe=Ge,Oe;function Dn(t,n){t.components.forEach(a=>{if(a instanceof xe){let e;const r=a;switch(n.event){case"setSheet":e=r.sheets.get(n.data.sheet),e!==void 0&&(Oe=e,Xe.setSelection([e]));break;case"setSheetObject":e=r.sheetObjects.get(`${n.data.sheet}_${n.data.key}`),e!==void 0&&Xe.setSelection([e]);break;case"updateSheetObject":e=r.sheetObjectCBs.get(n.data.sheetObject),e!==void 0&&e(n.data.values);break;case"updateTimeline":e=r.sheets.get(n.data.sheet),Oe!==void 0&&(Oe.sequence.position=n.data.position);break}}})}function An(t){if(t.editor){let n;t.components.forEach(s=>{s instanceof xe&&(n=s)}),Xe.ui.restore(),Xe.onSelectionChange(s=>{s.length<1||s.forEach(d=>{let l=d.address.sheetId,f="setSheet",m={};switch(d.type){case"Theatre_Sheet_PublicAPI":f="setSheet",m={sheet:d.address.sheetId},Oe=n.sheets.get(d.address.sheetId);break;case"Theatre_SheetObject_PublicAPI":f="setSheetObject",l+=`_${d.address.objectKey}`,m={id:l,sheet:d.address.sheetId,key:d.address.objectKey};break}t.send({event:f,target:"app",data:m})})});let a=0;const e=()=>{if(xe.getRafDriver().tick(performance.now()),Oe!==void 0&&a!==Oe.sequence.position){a=Oe.sequence.position;const s=Oe;t.send({event:"updateTimeline",target:"app",data:{position:a,sheet:s.address.sheetId}})}},r=()=>{e(),requestAnimationFrame(r)};e(),r()}else Xe.ui.hide()}function In(t,n){t.editor&&t.components.forEach(a=>{var e,r;if(a instanceof xe){const s=a;switch(n.event){case"playSheet":(e=s.sheet(n.data.sheet))==null||e.sequence.play(n.data.value);break;case"pauseSheet":(r=s.sheet(n.data.sheet))==null||r.sequence.pause();break}return}})}function Nn(t){if(t.name==="cameras")return"camera";if(t.name==="interactive")return"interactive";if(t.name==="lights")return"light";if(t.name==="ui")return"ui";if(t.name==="utils")return"utils";const n=t.type;return n.search("Helper")>-1?"icon_utils":n.search("Camera")>-1?"camera":n.search("Light")>-1?"light":"obj3D"}function Zt(t){const n={name:t.name,type:t.type,uuid:t.uuid,children:[]};return t.children.forEach(a=>{n.children.push(Zt(a))}),n}function Ln(t){const n={};for(const a in t){const e=t[a].value;n[a]={value:e},e===null?n[a].value={src:""}:e.isTexture&&(n[a].value={src:e.image.src})}return n}function Un(t){switch(t){case"blendSrcAlpha":case"blendDstAlpha":case"blendEquationAlpha":case"clippingPlanes":case"shadowSide":case"precision":return!0}return!1}function Jt(t){const n={};for(const a in t){if(a.substring(0,1)==="_"||a.substring(0,2)==="is"||Un(a))continue;const e=typeof t[a],r=t[a];switch(e){case"boolean":case"number":case"string":n[a]=r;break;case"object":if(r!==null)if(n[a]=r,r.isTexture)if(r instanceof u.Texture){const s=r.source.toJSON();n[a]={src:s.url}}else r instanceof u.CubeTexture&&(console.log("env map"),console.log(r.source.data),console.log(r.source.toJSON()),n[a]={src:""});else a==="uniforms"&&(n[a]=Ln(n[a]));else n[a]={src:""};break}}return n}function Rt(t){t.updateMatrix();const n={name:t.name,type:t.type,uuid:t.uuid,visible:t.visible,matrix:t.matrix.elements,animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0};t.animations.forEach(e=>{n.animations.push({name:e.name,duration:e.duration,blendMode:e.blendMode})});const a=t.type.toLowerCase();if(a.search("mesh")>-1){const e=t;if(Array.isArray(e.material)){const r=[];e.material.forEach(s=>{r.push(Jt(s))}),n.material=r}else n.material=Jt(e.material)}else a.search("camera")>-1?t.type==="PerspectiveCamera"?n.perspectiveCameraInfo={fov:t.fov,zoom:t.zoom,near:t.near,far:t.far,focus:t.focus,aspect:t.aspect,filmGauge:t.filmGauge,filmOffset:t.filmOffset}:t.type==="OrthographicCamera"&&(n.orthographicCameraInfo={zoom:t.zoom,near:t.near,far:t.far,left:t.left,right:t.right,top:t.top,bottom:t.bottom}):a.search("light")>-1&&(n.lightInfo={color:t.color,intensity:t.intensity,decay:t.decay,distance:t.distance,angle:t.angle,penumbra:t.penumbra,groundColor:t.groundColor});return n}function te(t,n,a){const e=n.split(".");switch(e.length){case 1:t[e[0]]=a;break;case 2:t[e[0]][e[1]]=a;break;case 3:t[e[0]][e[1]][e[2]]=a;break;case 4:t[e[0]][e[1]][e[2]][e[3]]=a;break;case 5:t[e[0]][e[1]][e[2]][e[3]][e[4]]=a;break}}function Pt(t){return new Promise((n,a)=>{const e=new Image;e.onload=()=>{const r=new u.Texture(e);r.wrapS=u.RepeatWrapping,r.wrapT=u.RepeatWrapping,r.needsUpdate=!0,n(r)},e.onerror=a,e.src=t})}class Qt extends Ze{constructor(){super(...arguments);X(this,"scene")}getObject(a){this.app.debugEnabled&&this.app.send({event:"getObject",target:"app",data:a})}setObject(a){const e=Rt(a);this.app.send({event:"setObject",target:"editor",data:e})}requestMethod(a,e,r){this.app.send({event:"requestMethod",target:"app",data:{uuid:a,key:e,value:r}})}updateObject(a,e,r){this.app.send({event:"updateObject",target:"app",data:{uuid:a,key:e,value:r}})}createTexture(a,e,r){this.app.send({event:"createTexture",target:"app",data:{uuid:a,key:e,value:r}})}setScene(a){if(a===void 0||(this.scene=a,!this.app.debugEnabled))return;Yt(),Tt(this.scene);const e=Zt(this.scene);this.app.send({event:"setScene",target:"editor",data:e})}addCamera(a){if(!this.app.debugEnabled)return;const e=Rt(a);this.app.send({event:"addCamera",target:"editor",data:e})}removeCamera(a){if(!this.app.debugEnabled)return;const e=Rt(a);this.app.send({event:"removeCamera",target:"editor",data:e})}}function Fn(t,n){switch(n.event){case"getObject":D.dispatchEvent({type:A.GET_OBJECT,value:n.data});break;case"updateObject":D.dispatchEvent({type:A.UPDATE_OBJECT,value:n.data});break;case"createTexture":D.dispatchEvent({type:A.CREATE_TEXTURE,value:n.data});break;case"requestMethod":D.dispatchEvent({type:A.REQUEST_METHOD,value:n.data});break}}function Vn(t,n){switch(n.event){case"setObject":D.dispatchEvent({type:A.SET_OBJECT,value:n.data});break;case"setScene":D.dispatchEvent({type:A.SET_SCENE,value:n.data});break;case"addCamera":D.dispatchEvent({type:A.ADD_CAMERA,value:n.data});break;case"removeCamera":D.dispatchEvent({type:A.REMOVE_CAMERA,value:n.data});break}}class jt extends Ze{constructor(a){super(a);X(this,"bindCBs");X(this,"buttonCBs");X(this,"pane");X(this,"appCallbacks",0);X(this,"editorCallbacks",0);X(this,"inspectorFolder");this.bindCBs=new Map,this.buttonCBs=new Map,a.editor&&this.createGUI()}createGUI(){this.pane=new xn.Pane({title:"GUI"}),this.pane.registerPlugin(Mn)}dispose(){var a;this.bindCBs.clear(),this.buttonCBs.clear(),this.appCallbacks=0,this.editorCallbacks=0,this.app.editor&&((a=this.pane)==null||a.dispose(),this.pane=void 0)}addFolder(a,e=void 0,r=void 0){if(this.app.editor)return this.pane===void 0&&this.createGUI(),(r!==void 0?r:this.pane).addFolder({title:a,...e});this.app.send({event:"addFolder",target:"app",data:{name:a,params:e,parent:r}})}get bindID(){return`debug_${Math.max(this.appCallbacks,this.editorCallbacks)}`}bind(a,e,r,s=void 0){const d=this.bindID,l=r.onChange!==void 0?r.onChange:Xt;this.bindCBs.set(d,l),this.app.editor?(this.pane===void 0&&this.createGUI(),(s!==void 0?s:this.pane).addBinding(a,e,r).on("change",m=>{this.app.send({event:"updateBind",target:"app",data:{id:d,value:m.value}})}),this.editorCallbacks++):(this.app.send({event:"bindObject",target:"app",data:{id:d,name:e,params:r,parent:s}}),this.appCallbacks++)}triggerBind(a,e){const r=this.bindCBs.get(a);r!==void 0?r(e):console.warn(`No callback for: ${a}`,e)}button(a,e,r=void 0){const s=this.bindID;this.buttonCBs.set(s,e),this.app.editor?(this.pane===void 0&&this.createGUI(),(r!==void 0?r:this.pane).addButton({title:a}).on("click",()=>{this.app.send({event:"clickButton",target:"app",data:{id:s}})}),this.editorCallbacks++):(this.app.send({event:"addButton",target:"app",data:{id:s,name:a,callback:e,parent:r}}),this.appCallbacks++)}triggerButton(a){const e=this.buttonCBs.get(a);e!==void 0&&e()}createInspector(){this.inspectorFolder=this.addFolder("Inspector",this.pane)}clearInspector(){const a=this.inspectorFolder.children.length-1;for(let e=a;e>-1;--e)this.inspectorFolder.remove(this.inspectorFolder.children[e])}}function Bn(t,n){t.components.forEach(a=>{if(a instanceof jt){const e=a;switch(n.event){case"addFolder":e.addFolder(n.data.name,n.data.params,n.data.parent);break;case"bindObject":e.bind(n.data.name,n.data.params,n.data.parent);break;case"updateBind":e.triggerBind(n.data.id,n.data.value);break;case"addButton":e.button(n.data.name,n.data.callback,n.data.parent);break;case"clickButton":e.triggerButton(n.data.id);break}return}})}var _t={exports:{}},Je={};/**
|
2
2
|
* @license React
|
3
3
|
* react-jsx-runtime.production.min.js
|
4
4
|
*
|
@@ -17,14 +17,14 @@
|
|
17
17
|
*/var $t;function Hn(){return $t||($t=1,process.env.NODE_ENV!=="production"&&function(){var t=R,n=Symbol.for("react.element"),a=Symbol.for("react.portal"),e=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),l=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),b=Symbol.for("react.suspense_list"),C=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),O=Symbol.for("react.offscreen"),j=Symbol.iterator,K="@@iterator";function ce(i){if(i===null||typeof i!="object")return null;var p=j&&i[j]||i[K];return typeof p=="function"?p:null}var J=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function T(i){{for(var p=arguments.length,v=new Array(p>1?p-1:0),S=1;S<p;S++)v[S-1]=arguments[S];Q("error",i,v)}}function Q(i,p,v){{var S=J.ReactDebugCurrentFrame,I=S.getStackAddendum();I!==""&&(p+="%s",v=v.concat([I]));var V=v.map(function(k){return String(k)});V.unshift("Warning: "+p),Function.prototype.apply.call(console[i],console,V)}}var fe=!1,ue=!1,ae=!1,h=!1,g=!1,y;y=Symbol.for("react.module.reference");function M(i){return!!(typeof i=="string"||typeof i=="function"||i===e||i===s||g||i===r||i===m||i===b||h||i===O||fe||ue||ae||typeof i=="object"&&i!==null&&(i.$$typeof===x||i.$$typeof===C||i.$$typeof===d||i.$$typeof===l||i.$$typeof===f||i.$$typeof===y||i.getModuleId!==void 0))}function H(i,p,v){var S=i.displayName;if(S)return S;var I=p.displayName||p.name||"";return I!==""?v+"("+I+")":v}function z(i){return i.displayName||"Context"}function B(i){if(i==null)return null;if(typeof i.tag=="number"&&T("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof i=="function")return i.displayName||i.name||null;if(typeof i=="string")return i;switch(i){case e:return"Fragment";case a:return"Portal";case s:return"Profiler";case r:return"StrictMode";case m:return"Suspense";case b:return"SuspenseList"}if(typeof i=="object")switch(i.$$typeof){case l:var p=i;return z(p)+".Consumer";case d:var v=i;return z(v._context)+".Provider";case f:return H(i,i.render,"ForwardRef");case C:var S=i.displayName||null;return S!==null?S:B(i.type)||"Memo";case x:{var I=i,V=I._payload,k=I._init;try{return B(k(V))}catch{return null}}}return null}var L=Object.assign,G=0,ee,_,U,q,me,Ie,tt;function mt(){}mt.__reactDisabledLog=!0;function Nt(){{if(G===0){ee=console.log,_=console.info,U=console.warn,q=console.error,me=console.group,Ie=console.groupCollapsed,tt=console.groupEnd;var i={configurable:!0,enumerable:!0,value:mt,writable:!0};Object.defineProperties(console,{info:i,log:i,warn:i,error:i,group:i,groupCollapsed:i,groupEnd:i})}G++}}function Lt(){{if(G--,G===0){var i={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:L({},i,{value:ee}),info:L({},i,{value:_}),warn:L({},i,{value:U}),error:L({},i,{value:q}),group:L({},i,{value:me}),groupCollapsed:L({},i,{value:Ie}),groupEnd:L({},i,{value:tt})})}G<0&&T("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var nt=J.ReactCurrentDispatcher,at;function Ne(i,p,v){{if(at===void 0)try{throw Error()}catch(I){var S=I.stack.trim().match(/\n( *(at )?)/);at=S&&S[1]||""}return`
|
18
18
|
`+at+i}}var He=!1,Le;{var Ut=typeof WeakMap=="function"?WeakMap:Map;Le=new Ut}function gt(i,p){if(!i||He)return"";{var v=Le.get(i);if(v!==void 0)return v}var S;He=!0;var I=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var V;V=nt.current,nt.current=null,Nt();try{if(p){var k=function(){throw Error()};if(Object.defineProperty(k.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(k,[])}catch(Ce){S=Ce}Reflect.construct(i,[],k)}else{try{k.call()}catch(Ce){S=Ce}i.call(k.prototype)}}else{try{throw Error()}catch(Ce){S=Ce}i()}}catch(Ce){if(Ce&&S&&typeof Ce.stack=="string"){for(var P=Ce.stack.split(`
|
19
19
|
`),le=S.stack.split(`
|
20
|
-
`),
|
21
|
-
`+P[
|
20
|
+
`),Z=P.length-1,$=le.length-1;Z>=1&&$>=0&&P[Z]!==le[$];)$--;for(;Z>=1&&$>=0;Z--,$--)if(P[Z]!==le[$]){if(Z!==1||$!==1)do if(Z--,$--,$<0||P[Z]!==le[$]){var ge=`
|
21
|
+
`+P[Z].replace(" at new "," at ");return i.displayName&&ge.includes("<anonymous>")&&(ge=ge.replace("<anonymous>",i.displayName)),typeof i=="function"&&Le.set(i,ge),ge}while(Z>=1&&$>=0);break}}}finally{He=!1,nt.current=V,Lt(),Error.prepareStackTrace=I}var Ke=i?i.displayName||i.name:"",Sn=Ke?Ne(Ke):"";return typeof i=="function"&&Le.set(i,Sn),Sn}function vt(i,p,v){return gt(i,!1)}function bt(i){var p=i.prototype;return!!(p&&p.isReactComponent)}function Ue(i,p,v){if(i==null)return"";if(typeof i=="function")return gt(i,bt(i));if(typeof i=="string")return Ne(i);switch(i){case m:return Ne("Suspense");case b:return Ne("SuspenseList")}if(typeof i=="object")switch(i.$$typeof){case f:return vt(i.render);case C:return Ue(i.type,p,v);case x:{var S=i,I=S._payload,V=S._init;try{return Ue(V(I),p,v)}catch{}}}return""}var ze=Object.prototype.hasOwnProperty,yt={},it=J.ReactDebugCurrentFrame;function Te(i){if(i){var p=i._owner,v=Ue(i.type,i._source,p?p.type:null);it.setExtraStackFrame(v)}else it.setExtraStackFrame(null)}function Fe(i,p,v,S,I){{var V=Function.call.bind(ze);for(var k in i)if(V(i,k)){var P=void 0;try{if(typeof i[k]!="function"){var le=Error((S||"React class")+": "+v+" type `"+k+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof i[k]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw le.name="Invariant Violation",le}P=i[k](p,k,S,v,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(Z){P=Z}P&&!(P instanceof Error)&&(Te(I),T("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",S||"React class",v,k,typeof P),Te(null)),P instanceof Error&&!(P.message in yt)&&(yt[P.message]=!0,Te(I),T("Failed %s type: %s",v,P.message),Te(null))}}}var Ft=Array.isArray;function rt(i){return Ft(i)}function Et(i){{var p=typeof Symbol=="function"&&Symbol.toStringTag,v=p&&i[Symbol.toStringTag]||i.constructor.name||"Object";return v}}function ot(i){try{return wt(i),!1}catch{return!0}}function wt(i){return""+i}function Ct(i){if(ot(i))return T("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Et(i)),wt(i)}var Me=J.ReactCurrentOwner,Vt={key:!0,ref:!0,__self:!0,__source:!0},St,st,ve;ve={};function o(i){if(ze.call(i,"ref")){var p=Object.getOwnPropertyDescriptor(i,"ref").get;if(p&&p.isReactWarning)return!1}return i.ref!==void 0}function E(i){if(ze.call(i,"key")){var p=Object.getOwnPropertyDescriptor(i,"key").get;if(p&&p.isReactWarning)return!1}return i.key!==void 0}function N(i,p){if(typeof i.ref=="string"&&Me.current&&p&&Me.current.stateNode!==p){var v=B(Me.current.type);ve[v]||(T('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref',B(Me.current.type),i.ref),ve[v]=!0)}}function F(i,p){{var v=function(){St||(St=!0,T("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",p))};v.isReactWarning=!0,Object.defineProperty(i,"key",{get:v,configurable:!0})}}function ie(i,p){{var v=function(){st||(st=!0,T("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",p))};v.isReactWarning=!0,Object.defineProperty(i,"ref",{get:v,configurable:!0})}}var be=function(i,p,v,S,I,V,k){var P={$$typeof:n,type:i,key:p,ref:v,props:k,_owner:V};return P._store={},Object.defineProperty(P._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(P,"_self",{configurable:!1,enumerable:!1,writable:!1,value:S}),Object.defineProperty(P,"_source",{configurable:!1,enumerable:!1,writable:!1,value:I}),Object.freeze&&(Object.freeze(P.props),Object.freeze(P)),P};function de(i,p,v,S,I){{var V,k={},P=null,le=null;v!==void 0&&(Ct(v),P=""+v),E(p)&&(Ct(p.key),P=""+p.key),o(p)&&(le=p.ref,N(p,I));for(V in p)ze.call(p,V)&&!Vt.hasOwnProperty(V)&&(k[V]=p[V]);if(i&&i.defaultProps){var Z=i.defaultProps;for(V in Z)k[V]===void 0&&(k[V]=Z[V])}if(P||le){var $=typeof i=="function"?i.displayName||i.name||"Unknown":i;P&&F(k,$),le&&ie(k,$)}return be(i,P,le,I,S,Me.current,k)}}var xt=J.ReactCurrentOwner,Ot=J.ReactDebugCurrentFrame;function we(i){if(i){var p=i._owner,v=Ue(i.type,i._source,p?p.type:null);Ot.setExtraStackFrame(v)}else Ot.setExtraStackFrame(null)}var he;he=!1;function pe(i){return typeof i=="object"&&i!==null&&i.$$typeof===n}function Ye(){{if(xt.current){var i=B(xt.current.type);if(i)return`
|
22
22
|
|
23
23
|
Check the render method of \``+i+"`."}return""}}function Ve(i){{if(i!==void 0){var p=i.fileName.replace(/^.*[\\\/]/,""),v=i.lineNumber;return`
|
24
24
|
|
25
25
|
Check your code at `+p+":"+v+"."}return""}}var Re={};function We(i){{var p=Ye();if(!p){var v=typeof i=="string"?i:i.displayName||i.name;v&&(p=`
|
26
26
|
|
27
|
-
Check the top-level render call using <`+v+">.")}return p}}function En(i,p){{if(!i._store||i._store.validated||i.key!=null)return;i._store.validated=!0;var v=We(p);if(Re[v])return;Re[v]=!0;var S="";i&&i._owner&&i._owner!==xt.current&&(S=" It was passed a child from "+B(i._owner.type)+"."),we(i),T('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',v,S),we(null)}}function wn(i,p){{if(typeof i!="object")return;if(rt(i))for(var v=0;v<i.length;v++){var S=i[v];pe(S)&&En(S,p)}else if(pe(i))i._store&&(i._store.validated=!0);else if(i){var I=ce(i);if(typeof I=="function"&&I!==i.entries)for(var V=I.call(i),k;!(k=V.next()).done;)pe(k.value)&&En(k.value,p)}}}function Ca(i){{var p=i.type;if(p==null||typeof p=="string")return;var v;if(typeof p=="function")v=p.propTypes;else if(typeof p=="object"&&(p.$$typeof===f||p.$$typeof===C))v=p.propTypes;else return;if(v){var S=B(p);Fe(v,i.props,"prop",S,i)}else if(p.PropTypes!==void 0&&!he){he=!0;var I=B(p);T("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",I||"Unknown")}typeof p.getDefaultProps=="function"&&!p.getDefaultProps.isReactClassApproved&&T("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Sa(i){{for(var p=Object.keys(i.props),v=0;v<p.length;v++){var S=p[v];if(S!=="children"&&S!=="key"){we(i),T("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",S),we(null);break}}i.ref!==null&&(we(i),T("Invalid attribute `ref` supplied to `React.Fragment`."),we(null))}}function Cn(i,p,v,S,I,V){{var k=M(i);if(!k){var P="";(i===void 0||typeof i=="object"&&i!==null&&Object.keys(i).length===0)&&(P+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var le=Ve(I);le?P+=le:P+=Ye();var
|
27
|
+
Check the top-level render call using <`+v+">.")}return p}}function En(i,p){{if(!i._store||i._store.validated||i.key!=null)return;i._store.validated=!0;var v=We(p);if(Re[v])return;Re[v]=!0;var S="";i&&i._owner&&i._owner!==xt.current&&(S=" It was passed a child from "+B(i._owner.type)+"."),we(i),T('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',v,S),we(null)}}function wn(i,p){{if(typeof i!="object")return;if(rt(i))for(var v=0;v<i.length;v++){var S=i[v];pe(S)&&En(S,p)}else if(pe(i))i._store&&(i._store.validated=!0);else if(i){var I=ce(i);if(typeof I=="function"&&I!==i.entries)for(var V=I.call(i),k;!(k=V.next()).done;)pe(k.value)&&En(k.value,p)}}}function Ca(i){{var p=i.type;if(p==null||typeof p=="string")return;var v;if(typeof p=="function")v=p.propTypes;else if(typeof p=="object"&&(p.$$typeof===f||p.$$typeof===C))v=p.propTypes;else return;if(v){var S=B(p);Fe(v,i.props,"prop",S,i)}else if(p.PropTypes!==void 0&&!he){he=!0;var I=B(p);T("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",I||"Unknown")}typeof p.getDefaultProps=="function"&&!p.getDefaultProps.isReactClassApproved&&T("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Sa(i){{for(var p=Object.keys(i.props),v=0;v<p.length;v++){var S=p[v];if(S!=="children"&&S!=="key"){we(i),T("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",S),we(null);break}}i.ref!==null&&(we(i),T("Invalid attribute `ref` supplied to `React.Fragment`."),we(null))}}function Cn(i,p,v,S,I,V){{var k=M(i);if(!k){var P="";(i===void 0||typeof i=="object"&&i!==null&&Object.keys(i).length===0)&&(P+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var le=Ve(I);le?P+=le:P+=Ye();var Z;i===null?Z="null":rt(i)?Z="array":i!==void 0&&i.$$typeof===n?(Z="<"+(B(i.type)||"Unknown")+" />",P=" Did you accidentally export a JSX literal instead of a component?"):Z=typeof i,T("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",Z,P)}var $=de(i,p,v,I,V);if($==null)return $;if(k){var ge=p.children;if(ge!==void 0)if(S)if(rt(ge)){for(var Ke=0;Ke<ge.length;Ke++)wn(ge[Ke],i);Object.freeze&&Object.freeze(ge)}else T("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else wn(ge,i)}return i===e?Sa($):Ca($),$}}function xa(i,p,v){return Cn(i,p,v,!0)}function Oa(i,p,v){return Cn(i,p,v,!1)}var Ta=Oa,Ma=xa;Qe.Fragment=e,Qe.jsx=Ta,Qe.jsxs=Ma}()),Qe}process.env.NODE_ENV==="production"?_t.exports=Gn():_t.exports=Hn();var c=_t.exports;function kt(t){return t.title.search("<")>-1?c.jsx("button",{className:"svg",dangerouslySetInnerHTML:{__html:t.title}}):c.jsx("button",{children:t.title})}const zn=c.jsxs("svg",{className:"closeIcon",width:"14",height:"14",fill:"none",stroke:"#666666",strokeMiterlimit:"10",children:[c.jsx("circle",{cx:"7",cy:"7",r:"6"}),c.jsx("line",{x1:"4",y1:"4",x2:"10",y2:"10"}),c.jsx("line",{x1:"4",y1:"10",x2:"10",y2:"4"})]}),Yn=c.jsx("svg",{className:"dragIcon",width:"14",height:"14",fill:"#666666",stroke:"none",children:c.jsx("path",{d:`M10.43,4H3.57C3.26,4,3,4.22,3,4.5v1C3,5.78,3.26,6,3.57,6h6.86C10.74,6,11,5.78,11,5.5v-1
|
28
28
|
C11,4.22,10.74,4,10.43,4z M10.43,8H3.57C3.26,8,3,8.22,3,8.5v1C3,9.78,3.26,10,3.57,10h6.86C10.74,10,11,9.78,11,9.5v-1
|
29
29
|
C11,8.22,10.74,8,10.43,8z`})});function en(t){return c.jsx(Bt.Reorder.Item,{value:t.title,children:c.jsxs("div",{children:[Yn,c.jsx("span",{children:t.title}),c.jsx("button",{className:"closeIcon",onClick:()=>{t.onDelete(t.index)},children:zn})]})},t.title)}function tn(t){const[n,a]=R.useState(!1),[e,r]=R.useState(t.options),s=m=>{t.onDragComplete(m),r(m)},d=m=>{const b=[...e];b.splice(m,1),s(b)},l=[];e.forEach((m,b)=>{l.push(c.jsx(en,{index:b,title:m,onDelete:d},m))});let f="dropdown draggable";return t.subdropdown&&(f+=" subdropdown"),c.jsxs("div",{className:f,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[c.jsx(kt,{title:t.title}),c.jsx(Bt.Reorder.Group,{axis:"y",values:e,onReorder:s,style:{visibility:n?"visible":"hidden"},children:l})]})}function nn(t){const[n,a]=R.useState(!1),e=[];t.options.map((s,d)=>{t.onSelect!==void 0&&(s.onSelect=t.onSelect),e.push(c.jsx(an,{option:s},d))});let r="dropdown";return t.subdropdown&&(r+=" subdropdown"),c.jsxs("div",{className:r,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[c.jsx(kt,{title:t.title}),c.jsx("ul",{style:{visibility:n?"visible":"hidden"},children:e})]})}function an(t){const{option:n}=t,[a,e]=R.useState("");let r;switch(n.type){case"draggable":r=c.jsx(tn,{title:n.title,options:n.value,onDragComplete:s=>{n.onDragComplete!==void 0&&n.onDragComplete(s)},subdropdown:!0});break;case"dropdown":r=c.jsx(nn,{title:n.title,options:n.value,onSelect:n.onSelect,subdropdown:!0});break;case"option":r=c.jsx("button",{onClick:()=>{n.onSelect!==void 0&&n.onSelect(n.value),n.selectable&&(a!==n.title?e(n.title):e(""))},children:n.title});break}return c.jsx("li",{className:a===n.title?"selected":"",children:r},Gt())}function Wn(t){const n=[],a=[];t.components.forEach(s=>{s instanceof Kt?n.push(kn):s instanceof xe?(n.push(Dn),a.push(In),An(t)):s instanceof Qt?(n.push(Fn),a.push(Vn)):s instanceof jt&&n.push(Bn)});function e(s){switch(n.forEach(d=>d(t,s)),s.event){case"custom":D.dispatchEvent({type:A.CUSTOM,value:s.data});break}}function r(s){switch(a.forEach(d=>d(t,s)),s.event){case"custom":D.dispatchEvent({type:A.CUSTOM,value:s.data});break}}t.listen(s=>{t.editor?r(s):e(s)})}const Kn=`out vec3 worldPosition;
|
30
30
|
uniform float uDistance;
|
@@ -102,7 +102,7 @@ void main() {
|
|
102
102
|
fragColor.a = mix(fragColor.a, baseOpacity * uGridOpacity, nextGrid);
|
103
103
|
|
104
104
|
if (fragColor.a <= 0.0) discard;
|
105
|
-
}`;class Zn extends u.ShaderMaterial{constructor(n){super({extensions:{derivatives:!0},glslVersion:u.GLSL3,side:u.DoubleSide,transparent:!0,uniforms:{uScale:{value:(n==null?void 0:n.scale)!==void 0?n==null?void 0:n.scale:.1},uDivisions:{value:(n==null?void 0:n.divisions)!==void 0?n==null?void 0:n.divisions:10},uColor:{value:(n==null?void 0:n.color)!==void 0?n==null?void 0:n.color:new u.Color(16777215)},uDistance:{value:(n==null?void 0:n.distance)!==void 0?n==null?void 0:n.distance:1e4},uSubgridOpacity:{value:(n==null?void 0:n.subgridOpacity)!==void 0?n==null?void 0:n.subgridOpacity:.15},uGridOpacity:{value:(n==null?void 0:n.gridOpacity)!==void 0?n==null?void 0:n.gridOpacity:.25}},vertexShader:Kn,fragmentShader:Xn,name:"InfiniteGrid",depthWrite:!1})}}class rn extends u.Mesh{constructor(){const a=new Zn;super(new u.PlaneGeometry(2,2),a);
|
105
|
+
}`;class Zn extends u.ShaderMaterial{constructor(n){super({extensions:{derivatives:!0},glslVersion:u.GLSL3,side:u.DoubleSide,transparent:!0,uniforms:{uScale:{value:(n==null?void 0:n.scale)!==void 0?n==null?void 0:n.scale:.1},uDivisions:{value:(n==null?void 0:n.divisions)!==void 0?n==null?void 0:n.divisions:10},uColor:{value:(n==null?void 0:n.color)!==void 0?n==null?void 0:n.color:new u.Color(16777215)},uDistance:{value:(n==null?void 0:n.distance)!==void 0?n==null?void 0:n.distance:1e4},uSubgridOpacity:{value:(n==null?void 0:n.subgridOpacity)!==void 0?n==null?void 0:n.subgridOpacity:.15},uGridOpacity:{value:(n==null?void 0:n.gridOpacity)!==void 0?n==null?void 0:n.gridOpacity:.25}},vertexShader:Kn,fragmentShader:Xn,name:"InfiniteGrid",depthWrite:!1})}}class rn extends u.Mesh{constructor(){const a=new Zn;super(new u.PlaneGeometry(2,2),a);X(this,"gridMaterial");this.gridMaterial=a,this.frustumCulled=!1,this.name="InfiniteGridHelper",this.position.y=.1}update(){this.gridMaterial.needsUpdate=!0}}const Jn=`#include <common>
|
106
106
|
#include <batching_pars_vertex>
|
107
107
|
#include <uv_pars_vertex>
|
108
108
|
#include <color_pars_vertex>
|
@@ -141,4 +141,4 @@ void main() {
|
|
141
141
|
#include <clipping_planes_fragment>
|
142
142
|
gl_FragColor = vec4(vec3(vUv, 0.0), 1.0);
|
143
143
|
}`;class on extends u.ShaderMaterial{constructor(){super({defines:{USE_UV:""},vertexShader:Jn,fragmentShader:Qn})}}const ja="";function lt(t){const[n,a]=R.useState(t.open!==void 0?t.open:!0),e=!n||t.children===void 0;return c.jsxs("div",{className:`accordion ${e?"hide":""}`,children:[c.jsxs("button",{className:"toggle",onClick:()=>{const r=!n;t.onToggle!==void 0&&t.onToggle(r),a(r)},children:[c.jsx("p",{className:`status ${n?"open":""}`,children:"Toggle"}),c.jsx("p",{className:"label",children:t.label})]}),t.button,c.jsx("div",{className:n?"open":"",children:c.jsx("div",{children:t.children})})]})}function Dt(t){const[n,a]=R.useState(!1),e=t.child.children.length>0,r=[];return t.child.children.length>0&&t.child.children.map(s=>{r.push(c.jsx(Dt,{child:s,three:t.three},Math.random()))}),c.jsxs("div",{className:"childObject",children:[c.jsxs("div",{className:"child",children:[e?c.jsx("button",{className:"status",style:{backgroundPositionX:n?"-14px":"2px"},onClick:()=>{a(!n)}}):null,c.jsx("button",{className:"name",style:{left:e?"20px":"5px"},onClick:()=>{t.three.getObject(t.child.uuid)},children:t.child.name.length>0?`${t.child.name} (${t.child.type})`:`${t.child.type}::${t.child.uuid}`}),c.jsx("div",{className:`icon ${Nn(t.child)}`})]}),c.jsx("div",{className:n?"open":"",children:c.jsx("div",{className:"container",children:r})})]},Math.random())}function sn(t){const n=[];return t.child.children.map(a=>{n.push(c.jsx(Dt,{child:a,three:t.three},Math.random()))}),c.jsx("div",{className:`scene ${t.class!==void 0?t.class:""}`,children:n})}const _a="",qn="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA5klEQVRoge2Y0Q6EIAwE6cX//+X6cCFpSMEKVTdk501OpRNKiyelFC0b8Ps6gCwoggZF0KAIGhRBgyJoUAQNiqCxjciR9SLV//eZiAyvK3U8i/QVaQO2YyLSFVvlkdTKDjJCukh2ykR5ZEW+kHmlatl90RaBtDkK/w7CYhuRUEO0ee3l+J3m55Vm+17vtwjTnV1V3QA8qfbeUXCzRWDpiLLS+OyzvRW7IzW9R+okvclsqR09743bo0yUpc1+lSJvNsa002+Euk9GKzV7SmZDRIMiaFAEDYqgQRE0KIIGRdCgCBoUQeMEMERadX7YUz8AAAAASUVORK5CYII=";function $n(t){return"items"in t}function Pe(t){const n=[];return t.items.forEach(a=>{$n(a)?n.push(c.jsx(Pe,{title:a.title,items:a.items},Math.random())):n.push(c.jsx(qe,{title:a.title,prop:a.prop,value:a.value,type:a.type,min:a.min,max:a.max,step:a.step,disabled:a.disabled,onChange:(e,r)=>{a.onChange!==void 0&&a.onChange(e,r)}},Math.random()))}),c.jsx(lt,{label:t.title,open:t.expanded===!0,children:n})}function ea(t){return!(t==="alphaHash"||t==="alphaToCoverage"||t==="attenuationDistance"||t==="colorWrite"||t==="combine"||t==="defaultAttributeValues"||t==="depthFunc"||t==="forceSinglePass"||t==="glslVersion"||t==="linewidth"||t==="normalMapType"||t==="precision"||t==="premultipliedAlpha"||t==="shadowSide"||t==="side"||t==="toneMapped"||t==="uniformsGroups"||t==="uniformsNeedUpdate"||t==="userData"||t==="vertexColors"||t==="version"||t==="wireframeLinecap"||t==="wireframeLinejoin"||t==="wireframeLinewidth"||t.slice(0,5)==="blend"||t.slice(0,4)==="clip"||t.slice(0,7)==="polygon"||t.slice(0,7)==="stencil"||t.slice(0,2)==="is")}function je(t){switch(t){case"alphaMap":return"Alpha Map";case"anisotropyMap":return"Anisotropy Map";case"anisotropyRotation":return"Anisotropy Rotation";case"aoMap":return"AO Map";case"aoMapIntensity":return"AO Map Intensity";case"attenuationColor":return"Attenuation Color";case"bumpMap":return"Bump Map";case"bumpScale":return"Bump Scale";case"clearcoatMap":return"Clearcoat Map";case"clearcoatNormalMap":return"Clearcoat Normal Map";case"clearcoatNormalScale":return"Clearcoat Normal Scale";case"clearcoatRoughness":return"Clearcoat Roughness";case"clearcoatRoughnessMap":return"Clearcoat Roughness Map";case"color":return"Color";case"defines":return"Defines";case"depthTest":return"Depth Test";case"depthWrite":return"Depth Write";case"displacementBias":return"Displacement Bias";case"displacementMap":return"Displacement Map";case"displacementScale":return"Displacement Scale";case"dithering":return"Dithering";case"emissive":return"Emissive";case"emissiveMap":return"Emissive Map";case"emissiveIntensity":return"Emissive Intensity";case"envMap":return"Environment Map";case"envMapIntensity":return"Environment Map Intensity";case"extensions":return"Extensions";case"flatShading":return"Flat Shading";case"fragmentShader":return"Fragment Shader";case"fog":return"Fog";case"gradientMap":return"Gradient Map";case"ior":return"IOR";case"iridescenceIOR":return"Iridescence IOR";case"iridescenceMap":return"Iridescence Map";case"iridescenceThicknessMap":return"Iridescence Thickness Map";case"iridescenceThicknessRange":return"Iridescence Thickness Range";case"lights":return"Lights";case"lightMap":return"Light Map";case"lightMapIntensity":return"Light Map Intensity";case"map":return"Map";case"matcap":return"Matcap";case"metalness":return"Metalness";case"metalnessMap":return"Metalness Map";case"name":return"Name";case"normalMap":return"Normal Map";case"normalScale":return"Normal Scale";case"opacity":return"Opacity";case"reflectivity":return"Reflectivity";case"refractionRatio":return"Refraction Ratio";case"roughness":return"Roughness";case"roughnessMap":return"Roughness Map";case"sheenColor":return"Sheen Color";case"sheenColorMap":return"Sheen Color Map";case"sheenRoughness":return"Sheen Roughness";case"sheenRoughnessMap":return"Sheen Roughness Map";case"shininess":return"Shininess";case"specular":return"Specular";case"specularColor":return"Specular Color";case"specularColorMap":return"Specular Color Map";case"specularIntensity":return"Specular Intensity";case"specularIntensityMap":return"Specular Map Intensity";case"thickness":return"Thickness";case"thicknessMap":return"Thickness Map";case"transmission":return"Transmission";case"transmissionMap":return"Transmission Map";case"transparent":return"Transparent";case"type":return"Type";case"uuid":return"UUID";case"uniforms":return"Uniforms";case"vertexShader":return"Vertex Shader";case"visible":return"Visible";case"wireframe":return"Wireframe"}return t}function ta(t){return t.toLowerCase().search("intensity")>-1||t==="anisotropyRotation"||t==="bumpScale"||t==="clearcoatRoughness"||t==="displacementBias"||t==="displacementScale"||t==="metalness"||t==="opacity"||t==="reflectivity"||t==="refractionRatio"||t==="roughness"||t==="sheenRoughness"||t==="thickness"}function na(){const t=document.createElement("input");return t.type="file",new Promise((n,a)=>{t.addEventListener("change",function(){if(t.files===null)a();else{const e=t.files[0],r=new FileReader;r.onload=function(s){n(s.target.result)},r.readAsDataURL(e)}}),t.click()})}function cn(t,n,a){const e=[];for(const r in t){if(!ea(r))continue;const s=typeof t[r],d=t[r];if(s==="boolean"||s==="number"||s==="string"){const l={title:je(r),prop:r,type:s,value:d,min:void 0,max:void 0,onChange:(f,m)=>{var C;a.updateObject(n.uuid,`material.${f}`,m),s==="boolean"&&a.updateObject(n.uuid,"material.needsUpdate",!0);const b=(C=a.scene)==null?void 0:C.getObjectByProperty("uuid",n.uuid);b!==void 0&&te(b,`material.${f}`,m)}};ta(r)&&(l.value=Number(d),l.type="range",l.min=0,l.max=1,l.step=.01),e.push(l)}else if(s==="object")if(d.isColor)e.push({title:je(r),prop:r,type:"color",value:d,onChange:(l,f)=>{var C;const m=new u.Color(f);a.updateObject(n.uuid,`material.${l}`,m);const b=(C=a.scene)==null?void 0:C.getObjectByProperty("uuid",n.uuid);b!==void 0&&te(b,`material.${l}`,m)}});else if(Array.isArray(d)){const l=[];for(const f in d)l.push({title:`${f}`,type:`${typeof d[f]}`,value:d[f],onChange:(m,b)=>{var x;a.updateObject(n.uuid,`material.${r}`,b);const C=(x=a.scene)==null?void 0:x.getObjectByProperty("uuid",n.uuid);C!==void 0&&te(C,`material.${r}`,b)}});e.push({title:je(r),items:l})}else{const l=[];for(const f in d){const m=d[f];switch(typeof m){case"boolean":case"number":case"string":f==="src"?e.push({title:je(r),type:"image",value:m,onChange:(C,x)=>{var j;a.createTexture(n.uuid,`material.${r}`,x);const O=(j=a.scene)==null?void 0:j.getObjectByProperty("uuid",n.uuid);O!==void 0&&Pt(x).then(K=>{te(O,`material.${r}`,K),te(O,"material.needsUpdate",!0)})}}):l.push({title:`${je(f)}`,prop:`material.${r}.${f}`,type:`${typeof t[r][f]}`,value:d[f],onChange:(C,x)=>{var j;a.updateObject(n.uuid,`material.${r}.${f}`,x);const O=(j=a.scene)==null?void 0:j.getObjectByProperty("uuid",n.uuid);O!==void 0&&te(O,`material.${r}.${f}`,x)}});break;case"object":m.value!==void 0&&m.value.src!==void 0?l.push({title:je(f),type:"image",value:m.value.src,onChange:(C,x)=>{var j;a.createTexture(n.uuid,`material.${r}.${f}.value`,x);const O=(j=a.scene)==null?void 0:j.getObjectByProperty("uuid",n.uuid);O!==void 0&&Pt(x).then(K=>{te(O,`material.${r}.${f}.value`,K)})}}):l.push({title:f,type:`${typeof m.value}`,value:m.value,onChange:(C,x)=>{var j;a.updateObject(n.uuid,`material.${r}.${f}.value`,x);const O=(j=a.scene)==null?void 0:j.getObjectByProperty("uuid",n.uuid);O!==void 0&&te(O,`material.${r}.${f}.value`,x)}});break}}l.length>0&&e.push({title:je(r),items:l})}else d!==void 0&&console.log("other:",r,s,d)}return e.sort((r,s)=>r.title<s.title?-1:r.title>s.title?1:0),e.push({title:"Update Material",type:"button",onChange:()=>{a.updateObject(n.uuid,"material.needsUpdate",!0)}}),e}function aa(t,n){const a=t.material;if(Array.isArray(a)){const e=[],r=a.length;for(let s=0;s<r;s++)e.push(c.jsx(Pe,{title:`Material ${s}`,items:cn(a[s],t,n)},`Material ${s}`));return c.jsx(c.Fragment,{children:e})}else return c.jsx(Pe,{title:"Material",items:cn(a,t,n)})}function qe(t){let n=t.value;n!==void 0&&n.isColor!==void 0&&(n=zt(t.value));const[a,e]=R.useState(n),r=R.useRef(null),s=R.useRef(null),d=R.useRef(null);R.useEffect(()=>{var Q;let b=!1,C=-1,x=0,O=Number(a);const j=fe=>{b=!0,x=O,C=fe.clientX},K=fe=>{if(!b)return;const ue=t.step!==void 0?t.step:1,ae=(fe.clientX-C)*ue;O=Number((x+ae).toFixed(4)),s.current!==null&&(s.current.value=O.toString()),t.onChange!==void 0&&t.onChange(t.prop!==void 0?t.prop:t.title,O)},ce=()=>{b=!1},J=()=>{b=!1},T=t.type==="number";return T&&((Q=r.current)==null||Q.addEventListener("mousedown",j,!1),document.addEventListener("mouseup",ce,!1),document.addEventListener("mousemove",K,!1),document.addEventListener("contextmenu",J,!1)),()=>{var fe;T&&((fe=r.current)==null||fe.removeEventListener("mousedown",j),document.removeEventListener("mouseup",ce),document.removeEventListener("mousemove",K),document.removeEventListener("contextmenu",J))}},[a]);const l=t.type==="string"&&(a.length>100||a.search(`
|
144
|
-
`)>-1),f=l||t.type==="image",m=b=>{let C=b.target.value;t.type==="boolean"&&(C=b.target.checked),e(C),t.onChange!==void 0&&t.onChange(t.prop!==void 0?t.prop:t.title,C)};return c.jsxs("div",{className:`field ${f?"block":""}`,children:[t.type!=="button"&&c.jsx("label",{ref:r,children:t.title},"fieldLabel"),t.type==="string"&&!l&&c.jsx("input",{type:"text",disabled:t.disabled,onChange:m,value:a}),t.type==="string"&&l&&c.jsx("textarea",{cols:50,rows:10,disabled:!0,onChange:m,value:a}),t.type==="boolean"&&c.jsx("input",{type:"checkbox",disabled:t.disabled,onChange:m,checked:a}),t.type==="number"&&c.jsx("input",{ref:s,type:"number",value:a,min:t.min,max:t.max,step:t.step,onChange:m}),t.type==="range"&&c.jsxs(c.Fragment,{children:[c.jsx("input",{type:"text",value:a.toString(),onChange:m,className:"min"}),c.jsx("input",{disabled:t.disabled,type:"range",value:a,min:t.min,max:t.max,step:t.step,onChange:m})]}),t.type==="color"&&c.jsxs(c.Fragment,{children:[c.jsx("input",{type:"text",value:a.toString(),onChange:m,className:"color"}),c.jsx("input",{type:"color",value:a,onChange:m})]}),t.type==="button"&&c.jsx("button",{onClick:()=>{t.onChange!==void 0&&t.onChange(t.prop!==void 0?t.prop:t.title,!0)},children:t.title}),t.type==="image"&&c.jsx("img",{ref:d,onClick:()=>{na().then(b=>{d.current.src=b,t.onChange!==void 0&&t.onChange(t.prop!==void 0?t.prop:t.title,b)})},src:a.length>0?a:qn})]})}function ln(t){switch(t){case"fov":return"FOV";case"zoom":return"Zoom";case"near":return"Near";case"far":return"Far";case"focus":return"Focus";case"aspect":return"Aspect";case"filmGauge":return"Film Gauge";case"filmOffset":return"Film Offset";case"left":return"Left";case"right":return"Right";case"top":return"Top";case"bottom":return"Bottom"}return t}function ia(t,n){const a=[];if(t.perspectiveCameraInfo!==void 0)for(const e in t.perspectiveCameraInfo)a.push({title:ln(e),prop:e,type:"number",step:.01,value:t.perspectiveCameraInfo[e],onChange:(r,s)=>{var l;n.updateObject(t.uuid,r,s),n.requestMethod(t.uuid,"updateProjectionMatrix");const d=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);d!==void 0&&(te(d,r,s),d.updateProjectionMatrix())}});else if(t.orthographicCameraInfo!==void 0)for(const e in t.orthographicCameraInfo)a.push({title:ln(e),prop:e,type:"number",step:.01,value:t.perspectiveCameraInfo[e],onChange:(r,s)=>{var l;n.updateObject(t.uuid,r,s),n.requestMethod(t.uuid,"updateProjectionMatrix");const d=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);d!==void 0&&(te(d,r,s),d.updateProjectionMatrix())}});return c.jsx(Pe,{title:"Camera",items:a})}const ra=Math.PI/180,oa=180/Math.PI;function Be(t,n,a,e,r){return e+(t-n)*(r-e)/(a-n)}function sa(t){return t*ra}function At(t){return t*oa}function ca(t,n){const a=new u.Matrix4;a.elements=t.matrix;const e=new u.Vector3,r=new u.Euler,s=new u.Vector3;t.uuid.length>0&&(e.setFromMatrixPosition(a),r.setFromRotationMatrix(a),s.setFromMatrixScale(a));const d=(f,m)=>{var C;n.updateObject(t.uuid,f,m);const b=(C=n.scene)==null?void 0:C.getObjectByProperty("uuid",t.uuid);b!==void 0&&te(b,f,m)},l=(f,m)=>{d(f,sa(m))};return c.jsx(Pe,{title:"Transform",items:[{title:"Position X",prop:"position.x",type:"number",value:e.x,onChange:d},{title:"Position Y",prop:"position.y",type:"number",value:e.y,onChange:d},{title:"Position Z",prop:"position.z",type:"number",value:e.z,onChange:d},{title:"Rotation X",prop:"rotation.x",type:"number",value:ct(At(r.x)),min:-360,max:360,step:.1,onChange:l},{title:"Rotation Y",prop:"rotation.y",type:"number",value:ct(At(r.y)),min:-360,max:360,step:.1,onChange:l},{title:"Rotation Z",prop:"rotation.z",type:"number",value:ct(At(r.z)),min:-360,max:360,step:.1,onChange:l},{title:"Scale X",prop:"scale.x",type:"number",value:s.x,step:.01,onChange:d},{title:"Scale Y",prop:"scale.y",type:"number",value:s.y,step:.01,onChange:d},{title:"Scale Z",prop:"scale.z",type:"number",value:s.z,step:.01,onChange:d}]})}function un(t){switch(t){case"color":return"Color";case"intensity":return"Intensity";case"decay":return"Decay";case"distance":return"Distance";case"angle":return"Angle";case"penumbra":return"Penumbra";case"groundColor":return"Ground Color"}return t}function la(t,n){const a=[];if(t.lightInfo!==void 0)for(const e in t.lightInfo){const r=t.lightInfo[e];r!==void 0&&(r.isColor!==void 0?a.push({title:un(e),prop:e,type:"color",value:r,onChange:(s,d)=>{var m;const l=new u.Color(d);n.updateObject(t.uuid,s,l);const f=(m=n.scene)==null?void 0:m.getObjectByProperty("uuid",t.uuid);f!==void 0&&te(f,s,l)}}):a.push({title:un(e),prop:e,type:typeof r,value:r,step:typeof r=="number"?.01:void 0,onChange:(s,d)=>{var f;n.updateObject(t.uuid,s,d);const l=(f=n.scene)==null?void 0:f.getObjectByProperty("uuid",t.uuid);l!==void 0&&te(l,s,d)}}))}return c.jsx(Pe,{title:"Light",items:a})}function ua(t,n){const a=[];return t.animations.forEach(e=>{a.push({title:"Name",type:"string",prop:"name",value:e.name,disabled:!0,onChange:(r,s)=>{var l;n.updateObject(t.uuid,r,s);const d=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);d!==void 0&&te(d,r,s)}}),a.push({title:"Duration",type:"number",prop:"duration",value:e.duration,disabled:!0,onChange:(r,s)=>{var l;n.updateObject(t.uuid,r,s);const d=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);d!==void 0&&te(d,r,s)}}),a.push({title:"Blend Mode",type:"number",prop:"blendMode",value:e.blendMode,disabled:!0,onChange:(r,s)=>{var l;n.updateObject(t.uuid,r,s);const d=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);d!==void 0&&te(d,r,s)}})}),c.jsx(Pe,{title:"Animations",items:a})}const dn={name:"",uuid:"",type:"",visible:!1,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0};let re={...dn};function fn(t){const[n,a]=R.useState(-1);R.useEffect(()=>{function r(d){re={...d.value},a(Date.now())}function s(){re={...dn},a(Date.now())}return D.addEventListener(A.SET_SCENE,s),D.addEventListener(A.SET_OBJECT,r),()=>{D.removeEventListener(A.SET_SCENE,s),D.removeEventListener(A.SET_OBJECT,r)}},[]);const e=re.type.toLowerCase();return c.jsx(lt,{label:"Inspector",children:c.jsx("div",{id:"Inspector",className:t.class,children:re.uuid.length>0&&c.jsxs(c.Fragment,{children:[c.jsxs(c.Fragment,{children:[c.jsx(qe,{type:"string",title:"Name",prop:"name",value:re.name,disabled:!0}),c.jsx(qe,{type:"string",title:"Type",prop:"type",value:re.type,disabled:!0}),c.jsx(qe,{type:"string",title:"UUID",prop:"uuid",value:re.uuid,disabled:!0}),c.jsx(qe,{type:"boolean",title:"Visible",prop:"visible",value:re.visible,onChange:(r,s)=>{var l;t.three.updateObject(re.uuid,r,s);const d=(l=t.three.scene)==null?void 0:l.getObjectByProperty("uuid",re.uuid);d!==void 0&&te(d,r,s)}})]}),c.jsxs(c.Fragment,{children:[ca(re,t.three),re.animations.length>0?ua(re,t.three):null,e.search("camera")>-1?ia(re,t.three):null,e.search("light")>-1?la(re,t.three):null,e.search("mesh")>-1?aa(re,t.three):null]})]})},n)},"Inspector")}class da extends R.Component{constructor(a){super(a);Z(this,"three");Z(this,"setScene",a=>{this.setState(()=>({scene:a.value}))});this.state={scene:a.scene!==void 0?a.scene:null},this.three=a.three,D.addEventListener(A.SET_SCENE,this.setScene)}componentWillUnmount(){D.removeEventListener(A.SET_SCENE,this.setScene)}render(){var r;const a=this.componentState.scene!==null,e="Hierarchy - "+(a?`${(r=this.componentState.scene)==null?void 0:r.name}`:"No Scene");return c.jsx("div",{id:"SidePanel",children:c.jsxs(c.Fragment,{children:[c.jsx(lt,{label:e,open:!0,children:c.jsx(c.Fragment,{children:a&&c.jsx(sn,{child:this.componentState.scene,three:this.three})})}),c.jsx(fn,{three:this.three})]})},"SidePanel")}get componentState(){return this.state}}function fa(t){function n(){return t.three.scene===void 0?(console.log("No scene:",t.three),!1):!0}const a=l=>{var m;if(!n())return;const f=(m=t.three.scene)==null?void 0:m.getObjectByProperty("uuid",l.value);f!==void 0&&t.three.setObject(f)},e=(l,f,m)=>{var C;if(!n())return;const b=(C=t.three.scene)==null?void 0:C.getObjectByProperty("uuid",l);b!==void 0&&te(b,f,m)},r=l=>{if(!n())return;const f=l.value,{key:m,value:b,uuid:C}=f;e(C,m,b)},s=l=>{if(!n())return;const f=l.value;Pt(f.value).then(m=>{e(f.uuid,f.key,m),e(f.uuid,"material.needsUpdate",!0)})},d=l=>{var x;if(!n())return;const{key:f,uuid:m,value:b}=l.value,C=(x=t.three.scene)==null?void 0:x.getObjectByProperty("uuid",m);if(C!==void 0)try{C[f](b)}catch(O){console.log("Error requesting method:"),console.log(O),console.log(f),console.log(b)}};return R.useEffect(()=>(D.addEventListener(A.GET_OBJECT,a),D.addEventListener(A.UPDATE_OBJECT,r),D.addEventListener(A.CREATE_TEXTURE,s),D.addEventListener(A.REQUEST_METHOD,d),()=>{D.removeEventListener(A.GET_OBJECT,a),D.removeEventListener(A.UPDATE_OBJECT,r),D.removeEventListener(A.CREATE_TEXTURE,s),D.removeEventListener(A.REQUEST_METHOD,d)}),[]),null}const hn={type:"change"},It={type:"start"},pn={type:"end"},ut=new u.Ray,mn=new u.Plane,ha=Math.cos(70*u.MathUtils.DEG2RAD);class pa extends u.EventDispatcher{constructor(n,a){super(),this.object=n,this.domElement=a,this.domElement.style.touchAction="none",this.enabled=!0,this.target=new u.Vector3,this.cursor=new u.Vector3,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:u.MOUSE.ROTATE,MIDDLE:u.MOUSE.DOLLY,RIGHT:u.MOUSE.PAN},this.touches={ONE:u.TOUCH.ROTATE,TWO:u.TOUCH.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this.getPolarAngle=function(){return l.phi},this.getAzimuthalAngle=function(){return l.theta},this.getDistance=function(){return this.object.position.distanceTo(this.target)},this.listenToKeyEvents=function(o){o.addEventListener("keydown",ot),this._domElementKeyEvents=o},this.stopListenToKeyEvents=function(){this._domElementKeyEvents.removeEventListener("keydown",ot),this._domElementKeyEvents=null},this.saveState=function(){e.target0.copy(e.target),e.position0.copy(e.object.position),e.zoom0=e.object.zoom},this.reset=function(){e.target.copy(e.target0),e.object.position.copy(e.position0),e.object.zoom=e.zoom0,e.object.updateProjectionMatrix(),e.dispatchEvent(hn),e.update(),s=r.NONE},this.update=function(){const o=new u.Vector3,E=new u.Quaternion().setFromUnitVectors(n.up,new u.Vector3(0,1,0)),N=E.clone().invert(),F=new u.Vector3,ie=new u.Quaternion,be=new u.Vector3,de=2*Math.PI;return function(Ot=null){const we=e.object.position;o.copy(we).sub(e.target),o.applyQuaternion(E),l.setFromVector3(o),e.autoRotate&&s===r.NONE&&H(y(Ot)),e.enableDamping?(l.theta+=f.theta*e.dampingFactor,l.phi+=f.phi*e.dampingFactor):(l.theta+=f.theta,l.phi+=f.phi);let he=e.minAzimuthAngle,pe=e.maxAzimuthAngle;isFinite(he)&&isFinite(pe)&&(he<-Math.PI?he+=de:he>Math.PI&&(he-=de),pe<-Math.PI?pe+=de:pe>Math.PI&&(pe-=de),he<=pe?l.theta=Math.max(he,Math.min(pe,l.theta)):l.theta=l.theta>(he+pe)/2?Math.max(he,l.theta):Math.min(pe,l.theta)),l.phi=Math.max(e.minPolarAngle,Math.min(e.maxPolarAngle,l.phi)),l.makeSafe(),e.enableDamping===!0?e.target.addScaledVector(b,e.dampingFactor):e.target.add(b),e.target.sub(e.cursor),e.target.clampLength(e.minTargetRadius,e.maxTargetRadius),e.target.add(e.cursor),e.zoomToCursor&&ae||e.object.isOrthographicCamera?l.radius=q(l.radius):l.radius=q(l.radius*m),o.setFromSpherical(l),o.applyQuaternion(N),we.copy(e.target).add(o),e.object.lookAt(e.target),e.enableDamping===!0?(f.theta*=1-e.dampingFactor,f.phi*=1-e.dampingFactor,b.multiplyScalar(1-e.dampingFactor)):(f.set(0,0,0),b.set(0,0,0));let Ye=!1;if(e.zoomToCursor&&ae){let Ve=null;if(e.object.isPerspectiveCamera){const Re=o.length();Ve=q(Re*m);const We=Re-Ve;e.object.position.addScaledVector(fe,We),e.object.updateMatrixWorld()}else if(e.object.isOrthographicCamera){const Re=new u.Vector3(ue.x,ue.y,0);Re.unproject(e.object),e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/m)),e.object.updateProjectionMatrix(),Ye=!0;const We=new u.Vector3(ue.x,ue.y,0);We.unproject(e.object),e.object.position.sub(We).add(Re),e.object.updateMatrixWorld(),Ve=o.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),e.zoomToCursor=!1;Ve!==null&&(this.screenSpacePanning?e.target.set(0,0,-1).transformDirection(e.object.matrix).multiplyScalar(Ve).add(e.object.position):(ut.origin.copy(e.object.position),ut.direction.set(0,0,-1).transformDirection(e.object.matrix),Math.abs(e.object.up.dot(ut.direction))<ha?n.lookAt(e.target):(mn.setFromNormalAndCoplanarPoint(e.object.up,e.target),ut.intersectPlane(mn,e.target))))}else e.object.isOrthographicCamera&&(e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/m)),e.object.updateProjectionMatrix(),Ye=!0);return m=1,ae=!1,Ye||F.distanceToSquared(e.object.position)>d||8*(1-ie.dot(e.object.quaternion))>d||be.distanceToSquared(e.target)>0?(e.dispatchEvent(hn),F.copy(e.object.position),ie.copy(e.object.quaternion),be.copy(e.target),!0):!1}}(),this.dispose=function(){e.domElement.removeEventListener("contextmenu",Me),e.domElement.removeEventListener("pointerdown",it),e.domElement.removeEventListener("pointercancel",Fe),e.domElement.removeEventListener("wheel",Et),e.domElement.removeEventListener("pointermove",Te),e.domElement.removeEventListener("pointerup",Fe),e._domElementKeyEvents!==null&&(e._domElementKeyEvents.removeEventListener("keydown",ot),e._domElementKeyEvents=null)};const e=this,r={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let s=r.NONE;const d=1e-6,l=new u.Spherical,f=new u.Spherical;let m=1;const b=new u.Vector3,C=new u.Vector2,x=new u.Vector2,O=new u.Vector2,j=new u.Vector2,K=new u.Vector2,ce=new u.Vector2,J=new u.Vector2,T=new u.Vector2,Q=new u.Vector2,fe=new u.Vector3,ue=new u.Vector2;let ae=!1;const h=[],g={};function y(o){return o!==null?2*Math.PI/60*e.autoRotateSpeed*o:2*Math.PI/60/60*e.autoRotateSpeed}function M(o){const E=Math.abs(o)/(100*(window.devicePixelRatio|0));return Math.pow(.95,e.zoomSpeed*E)}function H(o){f.theta-=o}function z(o){f.phi-=o}const B=function(){const o=new u.Vector3;return function(N,F){o.setFromMatrixColumn(F,0),o.multiplyScalar(-N),b.add(o)}}(),L=function(){const o=new u.Vector3;return function(N,F){e.screenSpacePanning===!0?o.setFromMatrixColumn(F,1):(o.setFromMatrixColumn(F,0),o.crossVectors(e.object.up,o)),o.multiplyScalar(N),b.add(o)}}(),G=function(){const o=new u.Vector3;return function(N,F){const ie=e.domElement;if(e.object.isPerspectiveCamera){const be=e.object.position;o.copy(be).sub(e.target);let de=o.length();de*=Math.tan(e.object.fov/2*Math.PI/180),B(2*N*de/ie.clientHeight,e.object.matrix),L(2*F*de/ie.clientHeight,e.object.matrix)}else e.object.isOrthographicCamera?(B(N*(e.object.right-e.object.left)/e.object.zoom/ie.clientWidth,e.object.matrix),L(F*(e.object.top-e.object.bottom)/e.object.zoom/ie.clientHeight,e.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),e.enablePan=!1)}}();function ee(o){e.object.isPerspectiveCamera||e.object.isOrthographicCamera?m/=o:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),e.enableZoom=!1)}function _(o){e.object.isPerspectiveCamera||e.object.isOrthographicCamera?m*=o:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),e.enableZoom=!1)}function U(o,E){if(!e.zoomToCursor)return;ae=!0;const N=e.domElement.getBoundingClientRect(),F=o-N.left,ie=E-N.top,be=N.width,de=N.height;ue.x=F/be*2-1,ue.y=-(ie/de)*2+1,fe.set(ue.x,ue.y,1).unproject(e.object).sub(e.object.position).normalize()}function q(o){return Math.max(e.minDistance,Math.min(e.maxDistance,o))}function me(o){C.set(o.clientX,o.clientY)}function Ie(o){U(o.clientX,o.clientX),J.set(o.clientX,o.clientY)}function tt(o){j.set(o.clientX,o.clientY)}function mt(o){x.set(o.clientX,o.clientY),O.subVectors(x,C).multiplyScalar(e.rotateSpeed);const E=e.domElement;H(2*Math.PI*O.x/E.clientHeight),z(2*Math.PI*O.y/E.clientHeight),C.copy(x),e.update()}function Nt(o){T.set(o.clientX,o.clientY),Q.subVectors(T,J),Q.y>0?ee(M(Q.y)):Q.y<0&&_(M(Q.y)),J.copy(T),e.update()}function Lt(o){K.set(o.clientX,o.clientY),ce.subVectors(K,j).multiplyScalar(e.panSpeed),G(ce.x,ce.y),j.copy(K),e.update()}function nt(o){U(o.clientX,o.clientY),o.deltaY<0?_(M(o.deltaY)):o.deltaY>0&&ee(M(o.deltaY)),e.update()}function at(o){let E=!1;switch(o.code){case e.keys.UP:o.ctrlKey||o.metaKey||o.shiftKey?z(2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):G(0,e.keyPanSpeed),E=!0;break;case e.keys.BOTTOM:o.ctrlKey||o.metaKey||o.shiftKey?z(-2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):G(0,-e.keyPanSpeed),E=!0;break;case e.keys.LEFT:o.ctrlKey||o.metaKey||o.shiftKey?H(2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):G(e.keyPanSpeed,0),E=!0;break;case e.keys.RIGHT:o.ctrlKey||o.metaKey||o.shiftKey?H(-2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):G(-e.keyPanSpeed,0),E=!0;break}E&&(o.preventDefault(),e.update())}function Ne(o){if(h.length===1)C.set(o.pageX,o.pageY);else{const E=ve(o),N=.5*(o.pageX+E.x),F=.5*(o.pageY+E.y);C.set(N,F)}}function He(o){if(h.length===1)j.set(o.pageX,o.pageY);else{const E=ve(o),N=.5*(o.pageX+E.x),F=.5*(o.pageY+E.y);j.set(N,F)}}function Le(o){const E=ve(o),N=o.pageX-E.x,F=o.pageY-E.y,ie=Math.sqrt(N*N+F*F);J.set(0,ie)}function Ut(o){e.enableZoom&&Le(o),e.enablePan&&He(o)}function gt(o){e.enableZoom&&Le(o),e.enableRotate&&Ne(o)}function vt(o){if(h.length==1)x.set(o.pageX,o.pageY);else{const N=ve(o),F=.5*(o.pageX+N.x),ie=.5*(o.pageY+N.y);x.set(F,ie)}O.subVectors(x,C).multiplyScalar(e.rotateSpeed);const E=e.domElement;H(2*Math.PI*O.x/E.clientHeight),z(2*Math.PI*O.y/E.clientHeight),C.copy(x)}function bt(o){if(h.length===1)K.set(o.pageX,o.pageY);else{const E=ve(o),N=.5*(o.pageX+E.x),F=.5*(o.pageY+E.y);K.set(N,F)}ce.subVectors(K,j).multiplyScalar(e.panSpeed),G(ce.x,ce.y),j.copy(K)}function Ue(o){const E=ve(o),N=o.pageX-E.x,F=o.pageY-E.y,ie=Math.sqrt(N*N+F*F);T.set(0,ie),Q.set(0,Math.pow(T.y/J.y,e.zoomSpeed)),ee(Q.y),J.copy(T);const be=(o.pageX+E.x)*.5,de=(o.pageY+E.y)*.5;U(be,de)}function ze(o){e.enableZoom&&Ue(o),e.enablePan&&bt(o)}function yt(o){e.enableZoom&&Ue(o),e.enableRotate&&vt(o)}function it(o){e.enabled!==!1&&(h.length===0&&(e.domElement.setPointerCapture(o.pointerId),e.domElement.addEventListener("pointermove",Te),e.domElement.addEventListener("pointerup",Fe)),Vt(o),o.pointerType==="touch"?wt(o):Ft(o))}function Te(o){e.enabled!==!1&&(o.pointerType==="touch"?Ct(o):rt(o))}function Fe(o){St(o),h.length===0&&(e.domElement.releasePointerCapture(o.pointerId),e.domElement.removeEventListener("pointermove",Te),e.domElement.removeEventListener("pointerup",Fe)),e.dispatchEvent(pn),s=r.NONE}function Ft(o){let E;switch(o.button){case 0:E=e.mouseButtons.LEFT;break;case 1:E=e.mouseButtons.MIDDLE;break;case 2:E=e.mouseButtons.RIGHT;break;default:E=-1}switch(E){case u.MOUSE.DOLLY:if(e.enableZoom===!1)return;Ie(o),s=r.DOLLY;break;case u.MOUSE.ROTATE:if(o.ctrlKey||o.metaKey||o.shiftKey){if(e.enablePan===!1)return;tt(o),s=r.PAN}else{if(e.enableRotate===!1)return;me(o),s=r.ROTATE}break;case u.MOUSE.PAN:if(o.ctrlKey||o.metaKey||o.shiftKey){if(e.enableRotate===!1)return;me(o),s=r.ROTATE}else{if(e.enablePan===!1)return;tt(o),s=r.PAN}break;default:s=r.NONE}s!==r.NONE&&e.dispatchEvent(It)}function rt(o){switch(s){case r.ROTATE:if(e.enableRotate===!1)return;mt(o);break;case r.DOLLY:if(e.enableZoom===!1)return;Nt(o);break;case r.PAN:if(e.enablePan===!1)return;Lt(o);break}}function Et(o){e.enabled===!1||e.enableZoom===!1||s!==r.NONE||(o.preventDefault(),e.dispatchEvent(It),nt(o),e.dispatchEvent(pn))}function ot(o){e.enabled===!1||e.enablePan===!1||at(o)}function wt(o){switch(st(o),h.length){case 1:switch(e.touches.ONE){case u.TOUCH.ROTATE:if(e.enableRotate===!1)return;Ne(o),s=r.TOUCH_ROTATE;break;case u.TOUCH.PAN:if(e.enablePan===!1)return;He(o),s=r.TOUCH_PAN;break;default:s=r.NONE}break;case 2:switch(e.touches.TWO){case u.TOUCH.DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;Ut(o),s=r.TOUCH_DOLLY_PAN;break;case u.TOUCH.DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;gt(o),s=r.TOUCH_DOLLY_ROTATE;break;default:s=r.NONE}break;default:s=r.NONE}s!==r.NONE&&e.dispatchEvent(It)}function Ct(o){switch(st(o),s){case r.TOUCH_ROTATE:if(e.enableRotate===!1)return;vt(o),e.update();break;case r.TOUCH_PAN:if(e.enablePan===!1)return;bt(o),e.update();break;case r.TOUCH_DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;ze(o),e.update();break;case r.TOUCH_DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;yt(o),e.update();break;default:s=r.NONE}}function Me(o){e.enabled!==!1&&o.preventDefault()}function Vt(o){h.push(o.pointerId)}function St(o){delete g[o.pointerId];for(let E=0;E<h.length;E++)if(h[E]==o.pointerId){h.splice(E,1);return}}function st(o){let E=g[o.pointerId];E===void 0&&(E=new u.Vector2,g[o.pointerId]=E),E.set(o.pageX,o.pageY)}function ve(o){const E=o.pointerId===h[0]?h[1]:h[0];return g[E]}e.domElement.addEventListener("contextmenu",Me),e.domElement.addEventListener("pointerdown",it),e.domElement.addEventListener("pointercancel",Fe),e.domElement.addEventListener("wheel",Et,{passive:!1}),this.update()}}const dt=t=>{const[n,a]=R.useState(t.options[t.index]),e=()=>{t.onToggle(!t.open)},r=s=>{s!==n&&(t.onSelect(s),a(s)),t.onToggle(!1)};return c.jsxs("div",{className:`dropdown ${t.up===!0?"up":""}`,children:[c.jsx("div",{className:"dropdown-toggle",onClick:e,children:n}),t.open&&c.jsx("ul",{className:"dropdown-menu",children:t.options.map(s=>c.jsx("li",{onClick:()=>r(s),children:s},s))})]})},_e=R.forwardRef(function(n,a){const[e,r]=R.useState(!1),s=n.options.indexOf(n.camera.name);return c.jsxs("div",{className:"CameraWindow",children:[c.jsx("div",{ref:a,className:"clickable",onClick:()=>{e&&r(!1)}}),c.jsx(dt,{index:s,open:e,options:n.options,onSelect:n.onSelect,onToggle:d=>{r(d)},up:!0})]})}),gn=["Single","Side by Side","Stacked","Quad"],ne=new Map,oe=new Map,ye=new Map;function ke(t,n){const a=new u.OrthographicCamera(-100,100,100,-100,50,3e3);return a.name=t,a.position.copy(n),a.lookAt(0,0,0),ne.set(t,a),a}ke("Top",new u.Vector3(0,1e3,0)),ke("Bottom",new u.Vector3(0,-1e3,0)),ke("Left",new u.Vector3(-1e3,0,0)),ke("Right",new u.Vector3(1e3,0,0)),ke("Front",new u.Vector3(0,0,1e3)),ke("Back",new u.Vector3(0,0,-1e3)),ke("Orthographic",new u.Vector3(1e3,1e3,1e3));const ft=new u.PerspectiveCamera(60,1,50,3e3);ft.name="Debug",ft.position.set(500,500,500),ft.lookAt(0,0,0),ne.set("Debug",ft);const vn=["Renderer","Depth","Normals","UVs","Wireframe"],ma=new u.MeshDepthMaterial,ga=new u.MeshNormalMaterial,va=new on,ba=new u.MeshBasicMaterial({opacity:.33,transparent:!0,wireframe:!0}),ka="";let ht="Renderer";const Y=new u.Scene;Y.name="Debug Scene";let Ee=new u.Scene;Y.add(Ee);const $e=new u.Group;$e.name="helpers",Y.add($e);const ya=new rn;$e.add(ya);const bn=new u.AxesHelper(500);bn.name="axisHelper",$e.add(bn);const et=new u.AxesHelper(100);et.name="interactionHelper",$e.add(et),et.visible=!1;let pt=!1,W=ne.get("Debug"),se=ne.get("Orthographic"),De=ne.get("Front"),Ae=ne.get("Top"),yn=!1;function Ea(t){const[n,a]=R.useState(t.mode!==void 0?t.mode:"Single"),[e,r]=R.useState(null),[s,d]=R.useState(!1),[l,f]=R.useState(!1),[m,b]=R.useState(!1),[,C]=R.useState(Date.now()),x=R.useRef(null),O=R.useRef(null),j=R.useRef(null),K=R.useRef(null),ce=R.useRef(null),J=R.useRef(null),T=(h,g)=>{const y=oe.get(h.name);y!==void 0&&y.dispose(),oe.delete(h.name);const M=ye.get(h.name);M!==void 0&&(Y.remove(M),M.dispose()),ye.delete(h.name);const H=new pa(h,g);switch(H.enableDamping=!0,H.dampingFactor=.05,h.name){case"Top":case"Bottom":case"Left":case"Right":case"Front":case"Back":H.enableRotate=!1;break}if(oe.set(h.name,H),h instanceof u.PerspectiveCamera){const z=new u.CameraHelper(h);ye.set(h.name,z),Y.add(z)}},Q=h=>{const g=ye.get(h.name);g!==void 0&&(Y.remove(g),g.dispose(),ye.delete(h.name));const y=oe.get(h.name);y!==void 0&&(y.dispose(),oe.delete(h.name))},fe=()=>{oe.forEach((h,g)=>{h.dispose();const y=ye.get(g);y!==void 0&&(Y.remove(y),y.dispose()),ye.delete(g),oe.delete(g)}),oe.clear(),ye.clear()},ue=()=>{switch(n){case"Single":T(W,j.current);break;case"Side by Side":case"Stacked":T(W,j.current),T(se,K.current);break;case"Quad":T(W,j.current),T(se,K.current),T(De,ce.current),T(Ae,J.current);break}};R.useEffect(()=>{const h=new u.WebGLRenderer({canvas:x.current,stencil:!1});h.autoClear=!1,h.shadowMap.enabled=!0,h.setPixelRatio(devicePixelRatio),h.setClearColor(0),r(h)},[]),R.useEffect(()=>{const h=M=>{Mt(Ee),Y.remove(Ee);const H=t.scenes.get(M.value.name);if(H!==void 0){const z=new H;t.onSceneSet!==void 0&&t.onSceneSet(z),Ee=z,t.three.scene=Ee,Y.add(Ee),yn=!0}},g=M=>{var B;const H=M.value,z=(B=t.three.scene)==null?void 0:B.getObjectByProperty("uuid",H.uuid);z!==void 0&&ne.set(H.name,z),C(Date.now())},y=M=>{ne.delete(M.value.name),C(Date.now())};return D.addEventListener(A.SET_SCENE,h),D.addEventListener(A.ADD_CAMERA,g),D.addEventListener(A.REMOVE_CAMERA,y),()=>{D.removeEventListener(A.SET_SCENE,h),D.removeEventListener(A.ADD_CAMERA,g),D.removeEventListener(A.REMOVE_CAMERA,y)}},[]),R.useEffect(()=>{if(e===null)return;let h=window.innerWidth,g=window.innerHeight,y=Math.floor(h/2),M=Math.floor(g/2),H=-1;const z=()=>{h=window.innerWidth-300,g=window.innerHeight,y=Math.floor(h/2),M=Math.floor(g/2),e.setSize(h,g);let _=h,U=g;switch(n){case"Side by Side":_=y,U=g;break;case"Stacked":_=h,U=M;break;case"Quad":_=y,U=M;break}ne.forEach(q=>{var me;q instanceof u.OrthographicCamera?(q.left=_/-2,q.right=_/2,q.top=U/2,q.bottom=U/-2,q.updateProjectionMatrix()):q instanceof u.PerspectiveCamera&&(q.aspect=_/U,q.updateProjectionMatrix(),(me=ye.get(q.name))==null||me.update())})},B=()=>{e.setViewport(0,0,h,g),e.setScissor(0,0,h,g),e.render(Y,W)},L=()=>{if(n==="Side by Side")e.setViewport(0,0,y,g),e.setScissor(0,0,y,g),e.render(Y,W),e.setViewport(y,0,y,g),e.setScissor(y,0,y,g),e.render(Y,se);else{const _=g-M;e.setViewport(0,_,h,M),e.setScissor(0,_,h,M),e.render(Y,W),e.setViewport(0,0,h,M),e.setScissor(0,0,h,M),e.render(Y,se)}},G=()=>{let _=0,U=0;U=g-M,_=0,e.setViewport(_,U,y,M),e.setScissor(_,U,y,M),e.render(Y,W),_=y,e.setViewport(_,U,y,M),e.setScissor(_,U,y,M),e.render(Y,se),U=0,_=0,e.setViewport(_,U,y,M),e.setScissor(_,U,y,M),e.render(Y,De),_=y,e.setViewport(_,U,y,M),e.setScissor(_,U,y,M),e.render(Y,Ae)},ee=()=>{switch(oe.forEach(_=>{_.update()}),t.onSceneUpdate!==void 0&&yn&&t.onSceneUpdate(Ee),e.clear(),n){case"Single":B();break;case"Side by Side":case"Stacked":L();break;case"Quad":G();break}H=requestAnimationFrame(ee)};return ue(),window.addEventListener("resize",z),z(),ee(),()=>{window.removeEventListener("resize",z),cancelAnimationFrame(H),H=-1}},[n,e]),R.useEffect(()=>{if(e!==null){const h=new u.Raycaster,g=new u.Vector2,y=(B,L,G,ee)=>{switch(n){case"Quad":B<G?L<ee?h.setFromCamera(g,W):h.setFromCamera(g,De):L<ee?h.setFromCamera(g,se):h.setFromCamera(g,Ae);break;case"Side by Side":B<G?h.setFromCamera(g,W):h.setFromCamera(g,se);break;case"Single":h.setFromCamera(g,W);break;case"Stacked":L<ee?h.setFromCamera(g,W):h.setFromCamera(g,se);break}},M=B=>{if(!pt)return;const L=new u.Vector2;e.getSize(L);const G=Math.min(B.clientX,L.x),ee=Math.min(B.clientY,L.y);g.x=Be(G,0,L.x,-1,1),g.y=Be(ee,0,L.y,1,-1);const _=L.x/2,U=L.y/2,q=()=>{G<_?g.x=Be(G,0,_,-1,1):g.x=Be(G,_,L.x,-1,1)},me=()=>{ee<U?g.y=Be(ee,0,U,1,-1):g.y=Be(ee,U,L.y,1,-1)};switch(n){case"Quad":q(),me();break;case"Side by Side":q();break;case"Stacked":me(),me();break}y(G,ee,_,U);const Ie=h.intersectObjects(Ee.children);Ie.length>0&&et.position.copy(Ie[0].point)},H=B=>{if(!pt)return;const L=new u.Vector2;if(e.getSize(L),B.clientX>=L.x)return;M(B);const G=h.intersectObjects(Ee.children);G.length>0&&t.three.getObject(G[0].object.uuid)},z=O.current;return z.addEventListener("mousemove",M,!1),z.addEventListener("click",H,!1),()=>{z.removeEventListener("mousemove",M),z.removeEventListener("click",H)}}},[n,e]);const ae=[];return ne.forEach((h,g)=>{ae.push(g)}),c.jsxs("div",{className:"multiview",children:[c.jsx("canvas",{ref:x}),c.jsxs("div",{className:`cameras ${n==="Single"||n==="Stacked"?"single":""}`,ref:O,children:[n==="Single"&&c.jsx(c.Fragment,{children:c.jsx(_e,{camera:W,options:ae,ref:j,onSelect:h=>{var y;(y=oe.get(W.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(W),W=g,T(g,j.current))}})}),(n==="Side by Side"||n==="Stacked")&&c.jsxs(c.Fragment,{children:[c.jsx(_e,{camera:W,options:ae,ref:j,onSelect:h=>{var y;(y=oe.get(W.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(W),W=g,T(g,j.current))}}),c.jsx(_e,{camera:se,options:ae,ref:K,onSelect:h=>{var y;(y=oe.get(se.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(se),se=g,T(g,K.current))}})]}),n==="Quad"&&c.jsxs(c.Fragment,{children:[c.jsx(_e,{camera:W,options:ae,ref:j,onSelect:h=>{var y;(y=oe.get(W.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(W),W=g,T(g,j.current))}}),c.jsx(_e,{camera:se,options:ae,ref:K,onSelect:h=>{var y;(y=oe.get(se.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(se),se=g,T(g,K.current))}}),c.jsx(_e,{camera:De,options:ae,ref:ce,onSelect:h=>{var y;(y=oe.get(De.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(De),De=g,T(g,ce.current))}}),c.jsx(_e,{camera:Ae,options:ae,ref:J,onSelect:h=>{var y;(y=oe.get(Ae.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(Ae),Ae=g,T(g,J.current))}})]})]}),c.jsxs("div",{className:"settings",children:[c.jsx(dt,{index:gn.indexOf(n),options:gn,onSelect:h=>{h!==n&&(fe(),a(h))},open:s,onToggle:h=>{d(h),l&&f(!1),m&&b(!1)}}),c.jsx(dt,{index:vn.indexOf(ht),options:vn,onSelect:h=>{if(h!==ht)switch(ht=h,ht){case"Depth":Y.overrideMaterial=ma;break;case"Normals":Y.overrideMaterial=ga;break;default:case"Renderer":Y.overrideMaterial=null;break;case"Wireframe":Y.overrideMaterial=ba;break;case"UVs":Y.overrideMaterial=va;break}},open:l,onToggle:h=>{s&&d(!1),f(h),m&&b(!1)}}),c.jsx(dt,{index:0,options:["Orbit Mode","Selection Mode"],onSelect:h=>{pt=h==="Selection Mode",et.visible=pt},open:m,onToggle:h=>{s&&d(!1),l&&f(!1),b(h)}})]})]})}const Da="";function wa(t){return c.jsxs("div",{className:"editor",ref:t.ref,style:t.style,children:[c.jsx("header",{children:t.header}),t.children,c.jsx("footer",{children:t.footer})]})}w.Accordion=lt,w.Application=_n,w.BaseRemote=Ze,w.ChildObject=Dt,w.ContainerObject=sn,w.Draggable=tn,w.DraggableItem=en,w.Dropdown=nn,w.DropdownItem=an,w.Editor=wa,w.InfiniteGridHelper=rn,w.Inspector=fn,w.MultiView=Ea,w.NavButton=kt,w.RemoteComponents=Kt,w.RemoteController=Wn,w.RemoteTheatre=xe,w.RemoteThree=Qt,w.RemoteTweakpane=jt,w.SceneInspector=fa,w.SidePanel=da,w.ToolEvents=A,w.UVMaterial=on,w.clamp=Rn,w.colorToHex=zt,w.debugDispatcher=D,w.dispose=Mt,w.disposeMaterial=Wt,w.disposeTexture=jn,w.distance=Pn,w.hierarchyUUID=Tt,w.isColor=Ht,w.randomID=Gt,w.resetThreeObjects=Yt,w.round=ct,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
|
144
|
+
`)>-1),f=l||t.type==="image",m=b=>{let C=b.target.value;t.type==="boolean"&&(C=b.target.checked),e(C),t.onChange!==void 0&&t.onChange(t.prop!==void 0?t.prop:t.title,C)};return c.jsxs("div",{className:`field ${f?"block":""}`,children:[t.type!=="button"&&c.jsx("label",{ref:r,children:t.title},"fieldLabel"),t.type==="string"&&!l&&c.jsx("input",{type:"text",disabled:t.disabled,onChange:m,value:a}),t.type==="string"&&l&&c.jsx("textarea",{cols:50,rows:10,disabled:!0,onChange:m,value:a}),t.type==="boolean"&&c.jsx("input",{type:"checkbox",disabled:t.disabled,onChange:m,checked:a}),t.type==="number"&&c.jsx("input",{ref:s,type:"number",value:a,min:t.min,max:t.max,step:t.step,onChange:m}),t.type==="range"&&c.jsxs(c.Fragment,{children:[c.jsx("input",{type:"text",value:a.toString(),onChange:m,className:"min"}),c.jsx("input",{disabled:t.disabled,type:"range",value:a,min:t.min,max:t.max,step:t.step,onChange:m})]}),t.type==="color"&&c.jsxs(c.Fragment,{children:[c.jsx("input",{type:"text",value:a.toString(),onChange:m,className:"color"}),c.jsx("input",{type:"color",value:a,onChange:m})]}),t.type==="button"&&c.jsx("button",{onClick:()=>{t.onChange!==void 0&&t.onChange(t.prop!==void 0?t.prop:t.title,!0)},children:t.title}),t.type==="image"&&c.jsx("img",{ref:d,onClick:()=>{na().then(b=>{d.current.src=b,t.onChange!==void 0&&t.onChange(t.prop!==void 0?t.prop:t.title,b)})},src:a.length>0?a:qn})]})}function ln(t){switch(t){case"fov":return"FOV";case"zoom":return"Zoom";case"near":return"Near";case"far":return"Far";case"focus":return"Focus";case"aspect":return"Aspect";case"filmGauge":return"Film Gauge";case"filmOffset":return"Film Offset";case"left":return"Left";case"right":return"Right";case"top":return"Top";case"bottom":return"Bottom"}return t}function ia(t,n){const a=[];if(t.perspectiveCameraInfo!==void 0)for(const e in t.perspectiveCameraInfo)a.push({title:ln(e),prop:e,type:"number",step:.01,value:t.perspectiveCameraInfo[e],onChange:(r,s)=>{var l;n.updateObject(t.uuid,r,s),n.requestMethod(t.uuid,"updateProjectionMatrix");const d=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);d!==void 0&&(te(d,r,s),d.updateProjectionMatrix())}});else if(t.orthographicCameraInfo!==void 0)for(const e in t.orthographicCameraInfo)a.push({title:ln(e),prop:e,type:"number",step:.01,value:t.perspectiveCameraInfo[e],onChange:(r,s)=>{var l;n.updateObject(t.uuid,r,s),n.requestMethod(t.uuid,"updateProjectionMatrix");const d=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);d!==void 0&&(te(d,r,s),d.updateProjectionMatrix())}});return c.jsx(Pe,{title:"Camera",items:a})}const ra=Math.PI/180,oa=180/Math.PI;function Be(t,n,a,e,r){return e+(t-n)*(r-e)/(a-n)}function sa(t){return t*ra}function At(t){return t*oa}function ca(t,n){const a=new u.Matrix4;a.elements=t.matrix;const e=new u.Vector3,r=new u.Euler,s=new u.Vector3;t.uuid.length>0&&(e.setFromMatrixPosition(a),r.setFromRotationMatrix(a),s.setFromMatrixScale(a));const d=(f,m)=>{var C;n.updateObject(t.uuid,f,m);const b=(C=n.scene)==null?void 0:C.getObjectByProperty("uuid",t.uuid);b!==void 0&&te(b,f,m)},l=(f,m)=>{d(f,sa(m))};return c.jsx(Pe,{title:"Transform",items:[{title:"Position X",prop:"position.x",type:"number",value:e.x,onChange:d},{title:"Position Y",prop:"position.y",type:"number",value:e.y,onChange:d},{title:"Position Z",prop:"position.z",type:"number",value:e.z,onChange:d},{title:"Rotation X",prop:"rotation.x",type:"number",value:ct(At(r.x)),min:-360,max:360,step:.1,onChange:l},{title:"Rotation Y",prop:"rotation.y",type:"number",value:ct(At(r.y)),min:-360,max:360,step:.1,onChange:l},{title:"Rotation Z",prop:"rotation.z",type:"number",value:ct(At(r.z)),min:-360,max:360,step:.1,onChange:l},{title:"Scale X",prop:"scale.x",type:"number",value:s.x,step:.01,onChange:d},{title:"Scale Y",prop:"scale.y",type:"number",value:s.y,step:.01,onChange:d},{title:"Scale Z",prop:"scale.z",type:"number",value:s.z,step:.01,onChange:d}]})}function un(t){switch(t){case"color":return"Color";case"intensity":return"Intensity";case"decay":return"Decay";case"distance":return"Distance";case"angle":return"Angle";case"penumbra":return"Penumbra";case"groundColor":return"Ground Color"}return t}function la(t,n){const a=[];if(t.lightInfo!==void 0)for(const e in t.lightInfo){const r=t.lightInfo[e];r!==void 0&&(r.isColor!==void 0?a.push({title:un(e),prop:e,type:"color",value:r,onChange:(s,d)=>{var m;const l=new u.Color(d);n.updateObject(t.uuid,s,l);const f=(m=n.scene)==null?void 0:m.getObjectByProperty("uuid",t.uuid);f!==void 0&&te(f,s,l)}}):a.push({title:un(e),prop:e,type:typeof r,value:r,step:typeof r=="number"?.01:void 0,onChange:(s,d)=>{var f;n.updateObject(t.uuid,s,d);const l=(f=n.scene)==null?void 0:f.getObjectByProperty("uuid",t.uuid);l!==void 0&&te(l,s,d)}}))}return c.jsx(Pe,{title:"Light",items:a})}function ua(t,n){const a=[];return t.animations.forEach(e=>{a.push({title:"Name",type:"string",prop:"name",value:e.name,disabled:!0,onChange:(r,s)=>{var l;n.updateObject(t.uuid,r,s);const d=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);d!==void 0&&te(d,r,s)}}),a.push({title:"Duration",type:"number",prop:"duration",value:e.duration,disabled:!0,onChange:(r,s)=>{var l;n.updateObject(t.uuid,r,s);const d=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);d!==void 0&&te(d,r,s)}}),a.push({title:"Blend Mode",type:"number",prop:"blendMode",value:e.blendMode,disabled:!0,onChange:(r,s)=>{var l;n.updateObject(t.uuid,r,s);const d=(l=n.scene)==null?void 0:l.getObjectByProperty("uuid",t.uuid);d!==void 0&&te(d,r,s)}})}),c.jsx(Pe,{title:"Animations",items:a})}const dn={name:"",uuid:"",type:"",visible:!1,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],animations:[],material:void 0,perspectiveCameraInfo:void 0,orthographicCameraInfo:void 0,lightInfo:void 0};let re={...dn};function fn(t){const[n,a]=R.useState(-1);R.useEffect(()=>{function r(d){re={...d.value},a(Date.now())}function s(){re={...dn},a(Date.now())}return D.addEventListener(A.SET_SCENE,s),D.addEventListener(A.SET_OBJECT,r),()=>{D.removeEventListener(A.SET_SCENE,s),D.removeEventListener(A.SET_OBJECT,r)}},[]);const e=re.type.toLowerCase();return c.jsx(lt,{label:"Inspector",children:c.jsx("div",{id:"Inspector",className:t.class,children:re.uuid.length>0&&c.jsxs(c.Fragment,{children:[c.jsxs(c.Fragment,{children:[c.jsx(qe,{type:"string",title:"Name",prop:"name",value:re.name,disabled:!0}),c.jsx(qe,{type:"string",title:"Type",prop:"type",value:re.type,disabled:!0}),c.jsx(qe,{type:"string",title:"UUID",prop:"uuid",value:re.uuid,disabled:!0}),c.jsx(qe,{type:"boolean",title:"Visible",prop:"visible",value:re.visible,onChange:(r,s)=>{var l;t.three.updateObject(re.uuid,r,s);const d=(l=t.three.scene)==null?void 0:l.getObjectByProperty("uuid",re.uuid);d!==void 0&&te(d,r,s)}})]}),c.jsxs(c.Fragment,{children:[ca(re,t.three),re.animations.length>0?ua(re,t.three):null,e.search("camera")>-1?ia(re,t.three):null,e.search("light")>-1?la(re,t.three):null,e.search("mesh")>-1?aa(re,t.three):null]})]})},n)},"Inspector")}class da extends R.Component{constructor(a){super(a);X(this,"three");X(this,"setScene",a=>{this.setState(()=>({scene:a.value}))});this.state={scene:a.scene!==void 0?a.scene:null},this.three=a.three,D.addEventListener(A.SET_SCENE,this.setScene)}componentWillUnmount(){D.removeEventListener(A.SET_SCENE,this.setScene)}render(){var r;const a=this.componentState.scene!==null,e="Hierarchy - "+(a?`${(r=this.componentState.scene)==null?void 0:r.name}`:"No Scene");return c.jsx("div",{id:"SidePanel",children:c.jsxs(c.Fragment,{children:[c.jsx(lt,{label:e,open:!0,children:c.jsx(c.Fragment,{children:a&&c.jsx(sn,{child:this.componentState.scene,three:this.three})})}),c.jsx(fn,{three:this.three})]})},"SidePanel")}get componentState(){return this.state}}function fa(t){function n(){return t.three.scene===void 0?(console.log("No scene:",t.three),!1):!0}const a=l=>{var m;if(!n())return;const f=(m=t.three.scene)==null?void 0:m.getObjectByProperty("uuid",l.value);f!==void 0&&t.three.setObject(f)},e=(l,f,m)=>{var C;if(!n())return;const b=(C=t.three.scene)==null?void 0:C.getObjectByProperty("uuid",l);b!==void 0&&te(b,f,m)},r=l=>{if(!n())return;const f=l.value,{key:m,value:b,uuid:C}=f;e(C,m,b)},s=l=>{if(!n())return;const f=l.value;Pt(f.value).then(m=>{e(f.uuid,f.key,m),e(f.uuid,"material.needsUpdate",!0)})},d=l=>{var x;if(!n())return;const{key:f,uuid:m,value:b}=l.value,C=(x=t.three.scene)==null?void 0:x.getObjectByProperty("uuid",m);if(C!==void 0)try{C[f](b)}catch(O){console.log("Error requesting method:"),console.log(O),console.log(f),console.log(b)}};return R.useEffect(()=>(D.addEventListener(A.GET_OBJECT,a),D.addEventListener(A.UPDATE_OBJECT,r),D.addEventListener(A.CREATE_TEXTURE,s),D.addEventListener(A.REQUEST_METHOD,d),()=>{D.removeEventListener(A.GET_OBJECT,a),D.removeEventListener(A.UPDATE_OBJECT,r),D.removeEventListener(A.CREATE_TEXTURE,s),D.removeEventListener(A.REQUEST_METHOD,d)}),[]),null}const hn={type:"change"},It={type:"start"},pn={type:"end"},ut=new u.Ray,mn=new u.Plane,ha=Math.cos(70*u.MathUtils.DEG2RAD);class pa extends u.EventDispatcher{constructor(n,a){super(),this.object=n,this.domElement=a,this.domElement.style.touchAction="none",this.enabled=!0,this.target=new u.Vector3,this.cursor=new u.Vector3,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:u.MOUSE.ROTATE,MIDDLE:u.MOUSE.DOLLY,RIGHT:u.MOUSE.PAN},this.touches={ONE:u.TOUCH.ROTATE,TWO:u.TOUCH.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this.getPolarAngle=function(){return l.phi},this.getAzimuthalAngle=function(){return l.theta},this.getDistance=function(){return this.object.position.distanceTo(this.target)},this.listenToKeyEvents=function(o){o.addEventListener("keydown",ot),this._domElementKeyEvents=o},this.stopListenToKeyEvents=function(){this._domElementKeyEvents.removeEventListener("keydown",ot),this._domElementKeyEvents=null},this.saveState=function(){e.target0.copy(e.target),e.position0.copy(e.object.position),e.zoom0=e.object.zoom},this.reset=function(){e.target.copy(e.target0),e.object.position.copy(e.position0),e.object.zoom=e.zoom0,e.object.updateProjectionMatrix(),e.dispatchEvent(hn),e.update(),s=r.NONE},this.update=function(){const o=new u.Vector3,E=new u.Quaternion().setFromUnitVectors(n.up,new u.Vector3(0,1,0)),N=E.clone().invert(),F=new u.Vector3,ie=new u.Quaternion,be=new u.Vector3,de=2*Math.PI;return function(Ot=null){const we=e.object.position;o.copy(we).sub(e.target),o.applyQuaternion(E),l.setFromVector3(o),e.autoRotate&&s===r.NONE&&H(y(Ot)),e.enableDamping?(l.theta+=f.theta*e.dampingFactor,l.phi+=f.phi*e.dampingFactor):(l.theta+=f.theta,l.phi+=f.phi);let he=e.minAzimuthAngle,pe=e.maxAzimuthAngle;isFinite(he)&&isFinite(pe)&&(he<-Math.PI?he+=de:he>Math.PI&&(he-=de),pe<-Math.PI?pe+=de:pe>Math.PI&&(pe-=de),he<=pe?l.theta=Math.max(he,Math.min(pe,l.theta)):l.theta=l.theta>(he+pe)/2?Math.max(he,l.theta):Math.min(pe,l.theta)),l.phi=Math.max(e.minPolarAngle,Math.min(e.maxPolarAngle,l.phi)),l.makeSafe(),e.enableDamping===!0?e.target.addScaledVector(b,e.dampingFactor):e.target.add(b),e.target.sub(e.cursor),e.target.clampLength(e.minTargetRadius,e.maxTargetRadius),e.target.add(e.cursor),e.zoomToCursor&&ae||e.object.isOrthographicCamera?l.radius=q(l.radius):l.radius=q(l.radius*m),o.setFromSpherical(l),o.applyQuaternion(N),we.copy(e.target).add(o),e.object.lookAt(e.target),e.enableDamping===!0?(f.theta*=1-e.dampingFactor,f.phi*=1-e.dampingFactor,b.multiplyScalar(1-e.dampingFactor)):(f.set(0,0,0),b.set(0,0,0));let Ye=!1;if(e.zoomToCursor&&ae){let Ve=null;if(e.object.isPerspectiveCamera){const Re=o.length();Ve=q(Re*m);const We=Re-Ve;e.object.position.addScaledVector(fe,We),e.object.updateMatrixWorld()}else if(e.object.isOrthographicCamera){const Re=new u.Vector3(ue.x,ue.y,0);Re.unproject(e.object),e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/m)),e.object.updateProjectionMatrix(),Ye=!0;const We=new u.Vector3(ue.x,ue.y,0);We.unproject(e.object),e.object.position.sub(We).add(Re),e.object.updateMatrixWorld(),Ve=o.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),e.zoomToCursor=!1;Ve!==null&&(this.screenSpacePanning?e.target.set(0,0,-1).transformDirection(e.object.matrix).multiplyScalar(Ve).add(e.object.position):(ut.origin.copy(e.object.position),ut.direction.set(0,0,-1).transformDirection(e.object.matrix),Math.abs(e.object.up.dot(ut.direction))<ha?n.lookAt(e.target):(mn.setFromNormalAndCoplanarPoint(e.object.up,e.target),ut.intersectPlane(mn,e.target))))}else e.object.isOrthographicCamera&&(e.object.zoom=Math.max(e.minZoom,Math.min(e.maxZoom,e.object.zoom/m)),e.object.updateProjectionMatrix(),Ye=!0);return m=1,ae=!1,Ye||F.distanceToSquared(e.object.position)>d||8*(1-ie.dot(e.object.quaternion))>d||be.distanceToSquared(e.target)>0?(e.dispatchEvent(hn),F.copy(e.object.position),ie.copy(e.object.quaternion),be.copy(e.target),!0):!1}}(),this.dispose=function(){e.domElement.removeEventListener("contextmenu",Me),e.domElement.removeEventListener("pointerdown",it),e.domElement.removeEventListener("pointercancel",Fe),e.domElement.removeEventListener("wheel",Et),e.domElement.removeEventListener("pointermove",Te),e.domElement.removeEventListener("pointerup",Fe),e._domElementKeyEvents!==null&&(e._domElementKeyEvents.removeEventListener("keydown",ot),e._domElementKeyEvents=null)};const e=this,r={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let s=r.NONE;const d=1e-6,l=new u.Spherical,f=new u.Spherical;let m=1;const b=new u.Vector3,C=new u.Vector2,x=new u.Vector2,O=new u.Vector2,j=new u.Vector2,K=new u.Vector2,ce=new u.Vector2,J=new u.Vector2,T=new u.Vector2,Q=new u.Vector2,fe=new u.Vector3,ue=new u.Vector2;let ae=!1;const h=[],g={};function y(o){return o!==null?2*Math.PI/60*e.autoRotateSpeed*o:2*Math.PI/60/60*e.autoRotateSpeed}function M(o){const E=Math.abs(o)/(100*(window.devicePixelRatio|0));return Math.pow(.95,e.zoomSpeed*E)}function H(o){f.theta-=o}function z(o){f.phi-=o}const B=function(){const o=new u.Vector3;return function(N,F){o.setFromMatrixColumn(F,0),o.multiplyScalar(-N),b.add(o)}}(),L=function(){const o=new u.Vector3;return function(N,F){e.screenSpacePanning===!0?o.setFromMatrixColumn(F,1):(o.setFromMatrixColumn(F,0),o.crossVectors(e.object.up,o)),o.multiplyScalar(N),b.add(o)}}(),G=function(){const o=new u.Vector3;return function(N,F){const ie=e.domElement;if(e.object.isPerspectiveCamera){const be=e.object.position;o.copy(be).sub(e.target);let de=o.length();de*=Math.tan(e.object.fov/2*Math.PI/180),B(2*N*de/ie.clientHeight,e.object.matrix),L(2*F*de/ie.clientHeight,e.object.matrix)}else e.object.isOrthographicCamera?(B(N*(e.object.right-e.object.left)/e.object.zoom/ie.clientWidth,e.object.matrix),L(F*(e.object.top-e.object.bottom)/e.object.zoom/ie.clientHeight,e.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),e.enablePan=!1)}}();function ee(o){e.object.isPerspectiveCamera||e.object.isOrthographicCamera?m/=o:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),e.enableZoom=!1)}function _(o){e.object.isPerspectiveCamera||e.object.isOrthographicCamera?m*=o:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),e.enableZoom=!1)}function U(o,E){if(!e.zoomToCursor)return;ae=!0;const N=e.domElement.getBoundingClientRect(),F=o-N.left,ie=E-N.top,be=N.width,de=N.height;ue.x=F/be*2-1,ue.y=-(ie/de)*2+1,fe.set(ue.x,ue.y,1).unproject(e.object).sub(e.object.position).normalize()}function q(o){return Math.max(e.minDistance,Math.min(e.maxDistance,o))}function me(o){C.set(o.clientX,o.clientY)}function Ie(o){U(o.clientX,o.clientX),J.set(o.clientX,o.clientY)}function tt(o){j.set(o.clientX,o.clientY)}function mt(o){x.set(o.clientX,o.clientY),O.subVectors(x,C).multiplyScalar(e.rotateSpeed);const E=e.domElement;H(2*Math.PI*O.x/E.clientHeight),z(2*Math.PI*O.y/E.clientHeight),C.copy(x),e.update()}function Nt(o){T.set(o.clientX,o.clientY),Q.subVectors(T,J),Q.y>0?ee(M(Q.y)):Q.y<0&&_(M(Q.y)),J.copy(T),e.update()}function Lt(o){K.set(o.clientX,o.clientY),ce.subVectors(K,j).multiplyScalar(e.panSpeed),G(ce.x,ce.y),j.copy(K),e.update()}function nt(o){U(o.clientX,o.clientY),o.deltaY<0?_(M(o.deltaY)):o.deltaY>0&&ee(M(o.deltaY)),e.update()}function at(o){let E=!1;switch(o.code){case e.keys.UP:o.ctrlKey||o.metaKey||o.shiftKey?z(2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):G(0,e.keyPanSpeed),E=!0;break;case e.keys.BOTTOM:o.ctrlKey||o.metaKey||o.shiftKey?z(-2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):G(0,-e.keyPanSpeed),E=!0;break;case e.keys.LEFT:o.ctrlKey||o.metaKey||o.shiftKey?H(2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):G(e.keyPanSpeed,0),E=!0;break;case e.keys.RIGHT:o.ctrlKey||o.metaKey||o.shiftKey?H(-2*Math.PI*e.rotateSpeed/e.domElement.clientHeight):G(-e.keyPanSpeed,0),E=!0;break}E&&(o.preventDefault(),e.update())}function Ne(o){if(h.length===1)C.set(o.pageX,o.pageY);else{const E=ve(o),N=.5*(o.pageX+E.x),F=.5*(o.pageY+E.y);C.set(N,F)}}function He(o){if(h.length===1)j.set(o.pageX,o.pageY);else{const E=ve(o),N=.5*(o.pageX+E.x),F=.5*(o.pageY+E.y);j.set(N,F)}}function Le(o){const E=ve(o),N=o.pageX-E.x,F=o.pageY-E.y,ie=Math.sqrt(N*N+F*F);J.set(0,ie)}function Ut(o){e.enableZoom&&Le(o),e.enablePan&&He(o)}function gt(o){e.enableZoom&&Le(o),e.enableRotate&&Ne(o)}function vt(o){if(h.length==1)x.set(o.pageX,o.pageY);else{const N=ve(o),F=.5*(o.pageX+N.x),ie=.5*(o.pageY+N.y);x.set(F,ie)}O.subVectors(x,C).multiplyScalar(e.rotateSpeed);const E=e.domElement;H(2*Math.PI*O.x/E.clientHeight),z(2*Math.PI*O.y/E.clientHeight),C.copy(x)}function bt(o){if(h.length===1)K.set(o.pageX,o.pageY);else{const E=ve(o),N=.5*(o.pageX+E.x),F=.5*(o.pageY+E.y);K.set(N,F)}ce.subVectors(K,j).multiplyScalar(e.panSpeed),G(ce.x,ce.y),j.copy(K)}function Ue(o){const E=ve(o),N=o.pageX-E.x,F=o.pageY-E.y,ie=Math.sqrt(N*N+F*F);T.set(0,ie),Q.set(0,Math.pow(T.y/J.y,e.zoomSpeed)),ee(Q.y),J.copy(T);const be=(o.pageX+E.x)*.5,de=(o.pageY+E.y)*.5;U(be,de)}function ze(o){e.enableZoom&&Ue(o),e.enablePan&&bt(o)}function yt(o){e.enableZoom&&Ue(o),e.enableRotate&&vt(o)}function it(o){e.enabled!==!1&&(h.length===0&&(e.domElement.setPointerCapture(o.pointerId),e.domElement.addEventListener("pointermove",Te),e.domElement.addEventListener("pointerup",Fe)),Vt(o),o.pointerType==="touch"?wt(o):Ft(o))}function Te(o){e.enabled!==!1&&(o.pointerType==="touch"?Ct(o):rt(o))}function Fe(o){St(o),h.length===0&&(e.domElement.releasePointerCapture(o.pointerId),e.domElement.removeEventListener("pointermove",Te),e.domElement.removeEventListener("pointerup",Fe)),e.dispatchEvent(pn),s=r.NONE}function Ft(o){let E;switch(o.button){case 0:E=e.mouseButtons.LEFT;break;case 1:E=e.mouseButtons.MIDDLE;break;case 2:E=e.mouseButtons.RIGHT;break;default:E=-1}switch(E){case u.MOUSE.DOLLY:if(e.enableZoom===!1)return;Ie(o),s=r.DOLLY;break;case u.MOUSE.ROTATE:if(o.ctrlKey||o.metaKey||o.shiftKey){if(e.enablePan===!1)return;tt(o),s=r.PAN}else{if(e.enableRotate===!1)return;me(o),s=r.ROTATE}break;case u.MOUSE.PAN:if(o.ctrlKey||o.metaKey||o.shiftKey){if(e.enableRotate===!1)return;me(o),s=r.ROTATE}else{if(e.enablePan===!1)return;tt(o),s=r.PAN}break;default:s=r.NONE}s!==r.NONE&&e.dispatchEvent(It)}function rt(o){switch(s){case r.ROTATE:if(e.enableRotate===!1)return;mt(o);break;case r.DOLLY:if(e.enableZoom===!1)return;Nt(o);break;case r.PAN:if(e.enablePan===!1)return;Lt(o);break}}function Et(o){e.enabled===!1||e.enableZoom===!1||s!==r.NONE||(o.preventDefault(),e.dispatchEvent(It),nt(o),e.dispatchEvent(pn))}function ot(o){e.enabled===!1||e.enablePan===!1||at(o)}function wt(o){switch(st(o),h.length){case 1:switch(e.touches.ONE){case u.TOUCH.ROTATE:if(e.enableRotate===!1)return;Ne(o),s=r.TOUCH_ROTATE;break;case u.TOUCH.PAN:if(e.enablePan===!1)return;He(o),s=r.TOUCH_PAN;break;default:s=r.NONE}break;case 2:switch(e.touches.TWO){case u.TOUCH.DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;Ut(o),s=r.TOUCH_DOLLY_PAN;break;case u.TOUCH.DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;gt(o),s=r.TOUCH_DOLLY_ROTATE;break;default:s=r.NONE}break;default:s=r.NONE}s!==r.NONE&&e.dispatchEvent(It)}function Ct(o){switch(st(o),s){case r.TOUCH_ROTATE:if(e.enableRotate===!1)return;vt(o),e.update();break;case r.TOUCH_PAN:if(e.enablePan===!1)return;bt(o),e.update();break;case r.TOUCH_DOLLY_PAN:if(e.enableZoom===!1&&e.enablePan===!1)return;ze(o),e.update();break;case r.TOUCH_DOLLY_ROTATE:if(e.enableZoom===!1&&e.enableRotate===!1)return;yt(o),e.update();break;default:s=r.NONE}}function Me(o){e.enabled!==!1&&o.preventDefault()}function Vt(o){h.push(o.pointerId)}function St(o){delete g[o.pointerId];for(let E=0;E<h.length;E++)if(h[E]==o.pointerId){h.splice(E,1);return}}function st(o){let E=g[o.pointerId];E===void 0&&(E=new u.Vector2,g[o.pointerId]=E),E.set(o.pageX,o.pageY)}function ve(o){const E=o.pointerId===h[0]?h[1]:h[0];return g[E]}e.domElement.addEventListener("contextmenu",Me),e.domElement.addEventListener("pointerdown",it),e.domElement.addEventListener("pointercancel",Fe),e.domElement.addEventListener("wheel",Et,{passive:!1}),this.update()}}const dt=t=>{const[n,a]=R.useState(t.options[t.index]),e=()=>{t.onToggle(!t.open)},r=s=>{s!==n&&(t.onSelect(s),a(s)),t.onToggle(!1)};return c.jsxs("div",{className:`dropdown ${t.up===!0?"up":""}`,children:[c.jsx("div",{className:"dropdown-toggle",onClick:e,children:n}),t.open&&c.jsx("ul",{className:"dropdown-menu",children:t.options.map(s=>c.jsx("li",{onClick:()=>r(s),children:s},s))})]})},_e=R.forwardRef(function(n,a){const[e,r]=R.useState(!1),s=n.options.indexOf(n.camera.name);return c.jsxs("div",{className:"CameraWindow",children:[c.jsx("div",{ref:a,className:"clickable",onClick:()=>{e&&r(!1)}}),c.jsx(dt,{index:s,open:e,options:n.options,onSelect:n.onSelect,onToggle:d=>{r(d)},up:!0})]})}),gn=["Single","Side by Side","Stacked","Quad"],ne=new Map,oe=new Map,ye=new Map;function ke(t,n){const a=new u.OrthographicCamera(-100,100,100,-100,50,3e3);return a.name=t,a.position.copy(n),a.lookAt(0,0,0),ne.set(t,a),a}ke("Top",new u.Vector3(0,1e3,0)),ke("Bottom",new u.Vector3(0,-1e3,0)),ke("Left",new u.Vector3(-1e3,0,0)),ke("Right",new u.Vector3(1e3,0,0)),ke("Front",new u.Vector3(0,0,1e3)),ke("Back",new u.Vector3(0,0,-1e3)),ke("Orthographic",new u.Vector3(1e3,1e3,1e3));const ft=new u.PerspectiveCamera(60,1,50,3e3);ft.name="Debug",ft.position.set(500,500,500),ft.lookAt(0,0,0),ne.set("Debug",ft);const vn=["Renderer","Depth","Normals","UVs","Wireframe"],ma=new u.MeshDepthMaterial,ga=new u.MeshNormalMaterial,va=new on,ba=new u.MeshBasicMaterial({opacity:.33,transparent:!0,wireframe:!0}),ka="";let ht="Renderer";const Y=new u.Scene;Y.name="Debug Scene";let Ee=new u.Scene;Y.add(Ee);const $e=new u.Group;$e.name="helpers",Y.add($e);const ya=new rn;$e.add(ya);const bn=new u.AxesHelper(500);bn.name="axisHelper",$e.add(bn);const et=new u.AxesHelper(100);et.name="interactionHelper",$e.add(et),et.visible=!1;let pt=!1,W=ne.get("Debug"),se=ne.get("Orthographic"),De=ne.get("Front"),Ae=ne.get("Top"),yn=!1;function Ea(t){const[n,a]=R.useState(t.mode!==void 0?t.mode:"Single"),[e,r]=R.useState(null),[s,d]=R.useState(!1),[l,f]=R.useState(!1),[m,b]=R.useState(!1),[,C]=R.useState(Date.now()),x=R.useRef(null),O=R.useRef(null),j=R.useRef(null),K=R.useRef(null),ce=R.useRef(null),J=R.useRef(null),T=(h,g)=>{const y=oe.get(h.name);y!==void 0&&y.dispose(),oe.delete(h.name);const M=ye.get(h.name);M!==void 0&&(Y.remove(M),M.dispose()),ye.delete(h.name);const H=new pa(h,g);switch(H.enableDamping=!0,H.dampingFactor=.05,h.name){case"Top":case"Bottom":case"Left":case"Right":case"Front":case"Back":H.enableRotate=!1;break}if(oe.set(h.name,H),h instanceof u.PerspectiveCamera){const z=new u.CameraHelper(h);ye.set(h.name,z),Y.add(z)}},Q=h=>{const g=ye.get(h.name);g!==void 0&&(Y.remove(g),g.dispose(),ye.delete(h.name));const y=oe.get(h.name);y!==void 0&&(y.dispose(),oe.delete(h.name))},fe=()=>{oe.forEach((h,g)=>{h.dispose();const y=ye.get(g);y!==void 0&&(Y.remove(y),y.dispose()),ye.delete(g),oe.delete(g)}),oe.clear(),ye.clear()},ue=()=>{switch(n){case"Single":T(W,j.current);break;case"Side by Side":case"Stacked":T(W,j.current),T(se,K.current);break;case"Quad":T(W,j.current),T(se,K.current),T(De,ce.current),T(Ae,J.current);break}};R.useEffect(()=>{const h=new u.WebGLRenderer({canvas:x.current,stencil:!1});h.autoClear=!1,h.shadowMap.enabled=!0,h.setPixelRatio(devicePixelRatio),h.setClearColor(0),r(h)},[]),R.useEffect(()=>{const h=M=>{Mt(Ee),Y.remove(Ee);const H=t.scenes.get(M.value.name);if(H!==void 0){const z=new H;t.onSceneSet!==void 0&&t.onSceneSet(z),Ee=z,t.three.scene=Ee,Y.add(Ee),yn=!0}},g=M=>{var B;const H=M.value,z=(B=t.three.scene)==null?void 0:B.getObjectByProperty("uuid",H.uuid);z!==void 0&&ne.set(H.name,z),C(Date.now())},y=M=>{ne.delete(M.value.name),C(Date.now())};return D.addEventListener(A.SET_SCENE,h),D.addEventListener(A.ADD_CAMERA,g),D.addEventListener(A.REMOVE_CAMERA,y),()=>{D.removeEventListener(A.SET_SCENE,h),D.removeEventListener(A.ADD_CAMERA,g),D.removeEventListener(A.REMOVE_CAMERA,y)}},[]),R.useEffect(()=>{if(e===null)return;let h=window.innerWidth,g=window.innerHeight,y=Math.floor(h/2),M=Math.floor(g/2),H=-1;const z=()=>{h=window.innerWidth-300,g=window.innerHeight,y=Math.floor(h/2),M=Math.floor(g/2),e.setSize(h,g);let _=h,U=g;switch(n){case"Side by Side":_=y,U=g;break;case"Stacked":_=h,U=M;break;case"Quad":_=y,U=M;break}ne.forEach(q=>{var me;q instanceof u.OrthographicCamera?(q.left=_/-2,q.right=_/2,q.top=U/2,q.bottom=U/-2,q.updateProjectionMatrix()):q instanceof u.PerspectiveCamera&&(q.aspect=_/U,q.updateProjectionMatrix(),(me=ye.get(q.name))==null||me.update())})},B=()=>{e.setViewport(0,0,h,g),e.setScissor(0,0,h,g),e.render(Y,W)},L=()=>{if(n==="Side by Side")e.setViewport(0,0,y,g),e.setScissor(0,0,y,g),e.render(Y,W),e.setViewport(y,0,y,g),e.setScissor(y,0,y,g),e.render(Y,se);else{const _=g-M;e.setViewport(0,_,h,M),e.setScissor(0,_,h,M),e.render(Y,W),e.setViewport(0,0,h,M),e.setScissor(0,0,h,M),e.render(Y,se)}},G=()=>{let _=0,U=0;U=g-M,_=0,e.setViewport(_,U,y,M),e.setScissor(_,U,y,M),e.render(Y,W),_=y,e.setViewport(_,U,y,M),e.setScissor(_,U,y,M),e.render(Y,se),U=0,_=0,e.setViewport(_,U,y,M),e.setScissor(_,U,y,M),e.render(Y,De),_=y,e.setViewport(_,U,y,M),e.setScissor(_,U,y,M),e.render(Y,Ae)},ee=()=>{switch(oe.forEach(_=>{_.update()}),t.onSceneUpdate!==void 0&&yn&&t.onSceneUpdate(Ee),e.clear(),n){case"Single":B();break;case"Side by Side":case"Stacked":L();break;case"Quad":G();break}H=requestAnimationFrame(ee)};return ue(),window.addEventListener("resize",z),z(),ee(),()=>{window.removeEventListener("resize",z),cancelAnimationFrame(H),H=-1}},[n,e]),R.useEffect(()=>{if(e!==null){const h=new u.Raycaster,g=new u.Vector2,y=(B,L,G,ee)=>{switch(n){case"Quad":B<G?L<ee?h.setFromCamera(g,W):h.setFromCamera(g,De):L<ee?h.setFromCamera(g,se):h.setFromCamera(g,Ae);break;case"Side by Side":B<G?h.setFromCamera(g,W):h.setFromCamera(g,se);break;case"Single":h.setFromCamera(g,W);break;case"Stacked":L<ee?h.setFromCamera(g,W):h.setFromCamera(g,se);break}},M=B=>{if(!pt)return;const L=new u.Vector2;e.getSize(L);const G=Math.min(B.clientX,L.x),ee=Math.min(B.clientY,L.y);g.x=Be(G,0,L.x,-1,1),g.y=Be(ee,0,L.y,1,-1);const _=L.x/2,U=L.y/2,q=()=>{G<_?g.x=Be(G,0,_,-1,1):g.x=Be(G,_,L.x,-1,1)},me=()=>{ee<U?g.y=Be(ee,0,U,1,-1):g.y=Be(ee,U,L.y,1,-1)};switch(n){case"Quad":q(),me();break;case"Side by Side":q();break;case"Stacked":me(),me();break}y(G,ee,_,U);const Ie=h.intersectObjects(Ee.children);Ie.length>0&&et.position.copy(Ie[0].point)},H=B=>{if(!pt)return;const L=new u.Vector2;if(e.getSize(L),B.clientX>=L.x)return;M(B);const G=h.intersectObjects(Ee.children);G.length>0&&t.three.getObject(G[0].object.uuid)},z=O.current;return z.addEventListener("mousemove",M,!1),z.addEventListener("click",H,!1),()=>{z.removeEventListener("mousemove",M),z.removeEventListener("click",H)}}},[n,e]);const ae=[];return ne.forEach((h,g)=>{ae.push(g)}),c.jsxs("div",{className:"multiview",children:[c.jsx("canvas",{ref:x}),c.jsxs("div",{className:`cameras ${n==="Single"||n==="Stacked"?"single":""}`,ref:O,children:[n==="Single"&&c.jsx(c.Fragment,{children:c.jsx(_e,{camera:W,options:ae,ref:j,onSelect:h=>{var y;(y=oe.get(W.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(W),W=g,T(g,j.current))}})}),(n==="Side by Side"||n==="Stacked")&&c.jsxs(c.Fragment,{children:[c.jsx(_e,{camera:W,options:ae,ref:j,onSelect:h=>{var y;(y=oe.get(W.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(W),W=g,T(g,j.current))}}),c.jsx(_e,{camera:se,options:ae,ref:K,onSelect:h=>{var y;(y=oe.get(se.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(se),se=g,T(g,K.current))}})]}),n==="Quad"&&c.jsxs(c.Fragment,{children:[c.jsx(_e,{camera:W,options:ae,ref:j,onSelect:h=>{var y;(y=oe.get(W.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(W),W=g,T(g,j.current))}}),c.jsx(_e,{camera:se,options:ae,ref:K,onSelect:h=>{var y;(y=oe.get(se.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(se),se=g,T(g,K.current))}}),c.jsx(_e,{camera:De,options:ae,ref:ce,onSelect:h=>{var y;(y=oe.get(De.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(De),De=g,T(g,ce.current))}}),c.jsx(_e,{camera:Ae,options:ae,ref:J,onSelect:h=>{var y;(y=oe.get(Ae.name))==null||y.dispose();const g=ne.get(h);g!==void 0&&(Q(Ae),Ae=g,T(g,J.current))}})]})]}),c.jsxs("div",{className:"settings",children:[c.jsx(dt,{index:gn.indexOf(n),options:gn,onSelect:h=>{h!==n&&(fe(),a(h))},open:s,onToggle:h=>{d(h),l&&f(!1),m&&b(!1)}}),c.jsx(dt,{index:vn.indexOf(ht),options:vn,onSelect:h=>{if(h!==ht)switch(ht=h,ht){case"Depth":Y.overrideMaterial=ma;break;case"Normals":Y.overrideMaterial=ga;break;default:case"Renderer":Y.overrideMaterial=null;break;case"Wireframe":Y.overrideMaterial=ba;break;case"UVs":Y.overrideMaterial=va;break}},open:l,onToggle:h=>{s&&d(!1),f(h),m&&b(!1)}}),c.jsx(dt,{index:0,options:["Orbit Mode","Selection Mode"],onSelect:h=>{pt=h==="Selection Mode",et.visible=pt},open:m,onToggle:h=>{s&&d(!1),l&&f(!1),b(h)}})]})]})}const Da="";function wa(t){return c.jsxs("div",{className:"editor",ref:t.ref,style:t.style,children:[c.jsx("header",{children:t.header}),t.children,c.jsx("footer",{children:t.footer})]})}w.Accordion=lt,w.Application=_n,w.BaseRemote=Ze,w.ChildObject=Dt,w.ContainerObject=sn,w.Draggable=tn,w.DraggableItem=en,w.Dropdown=nn,w.DropdownItem=an,w.Editor=wa,w.InfiniteGridHelper=rn,w.Inspector=fn,w.MultiView=Ea,w.NavButton=kt,w.RemoteComponents=Kt,w.RemoteController=Wn,w.RemoteTheatre=xe,w.RemoteThree=Qt,w.RemoteTweakpane=jt,w.SceneInspector=fa,w.SidePanel=da,w.ToolEvents=A,w.UVMaterial=on,w.clamp=Rn,w.colorToHex=zt,w.debugDispatcher=D,w.dispose=Mt,w.disposeMaterial=Wt,w.disposeTexture=jn,w.distance=Pn,w.hierarchyUUID=Tt,w.isColor=Ht,w.randomID=Gt,w.resetThreeObjects=Yt,w.round=ct,Object.defineProperty(w,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
"module": "./dist/hermes.js",
|
8
8
|
"types": "./types/index.d.ts",
|
9
9
|
"type": "module",
|
10
|
-
"version": "0.0.
|
10
|
+
"version": "0.0.23",
|
11
11
|
"homepage": "https://github.com/tomorrowevening/hermes#readme",
|
12
12
|
"bugs": {
|
13
13
|
"url": "https://github.com/tomorrowevening/hermes/issues"
|
package/src/core/Application.ts
CHANGED
@@ -4,12 +4,14 @@ import type { ApplicationMode, BroadcastCallback, BroadcastData } from './types'
|
|
4
4
|
export default class Application {
|
5
5
|
channel?: BroadcastChannel | undefined = undefined;
|
6
6
|
components: Map<string, any> = new Map();
|
7
|
+
debugEnabled: boolean;
|
7
8
|
|
8
9
|
// Protected
|
9
10
|
protected _mode: ApplicationMode = 'app';
|
10
11
|
|
11
12
|
constructor(name: string, debugEnabled: boolean, editorHashtag: string = 'editor') {
|
12
13
|
this.editor = debugEnabled && document.location.hash.search(editorHashtag) > -1;
|
14
|
+
this.debugEnabled = debugEnabled;
|
13
15
|
if (debugEnabled) this.channel = new BroadcastChannel(name);
|
14
16
|
}
|
15
17
|
|
@@ -10,6 +10,7 @@ export default class RemoteThree extends BaseRemote {
|
|
10
10
|
scene?: Scene = undefined;
|
11
11
|
|
12
12
|
getObject(uuid: string) {
|
13
|
+
if (!this.app.debugEnabled) return;
|
13
14
|
this.app.send({
|
14
15
|
event: 'getObject',
|
15
16
|
target: 'app',
|
@@ -65,6 +66,8 @@ export default class RemoteThree extends BaseRemote {
|
|
65
66
|
setScene(value: Scene) {
|
66
67
|
if (value === undefined) return;
|
67
68
|
this.scene = value;
|
69
|
+
|
70
|
+
if (!this.app.debugEnabled) return;
|
68
71
|
resetThreeObjects();
|
69
72
|
hierarchyUUID(this.scene);
|
70
73
|
const stripped = stripScene(this.scene);
|
@@ -76,6 +79,7 @@ export default class RemoteThree extends BaseRemote {
|
|
76
79
|
}
|
77
80
|
|
78
81
|
addCamera(camera: Camera) {
|
82
|
+
if (!this.app.debugEnabled) return;
|
79
83
|
const stripped = stripObject(camera);
|
80
84
|
this.app.send({
|
81
85
|
event: 'addCamera',
|
@@ -85,6 +89,7 @@ export default class RemoteThree extends BaseRemote {
|
|
85
89
|
}
|
86
90
|
|
87
91
|
removeCamera(camera: Camera) {
|
92
|
+
if (!this.app.debugEnabled) return;
|
88
93
|
const stripped = stripObject(camera);
|
89
94
|
this.app.send({
|
90
95
|
event: 'removeCamera',
|
@@ -3,6 +3,7 @@ import type { ApplicationMode, BroadcastCallback, BroadcastData } from './types'
|
|
3
3
|
export default class Application {
|
4
4
|
channel?: BroadcastChannel | undefined;
|
5
5
|
components: Map<string, any>;
|
6
|
+
debugEnabled: boolean;
|
6
7
|
protected _mode: ApplicationMode;
|
7
8
|
constructor(name: string, debugEnabled: boolean, editorHashtag?: string);
|
8
9
|
addComponent(name: string, component: BaseRemote): void;
|