@tomorrowevening/hermes 0.1.38 → 0.1.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/{ThreeEditor-BjAFHK3t.js → ThreeEditor-CB5dBR7Q.js} +11 -11
  2. package/dist/core/Application.js +77 -0
  3. package/dist/core/remote/BaseRemote.js +33 -0
  4. package/dist/core/remote/RemoteTheatre.js +253 -0
  5. package/dist/core/remote/RemoteThree.js +442 -0
  6. package/dist/core/types.js +7 -0
  7. package/dist/editor/Editor.js +12 -0
  8. package/dist/editor/HermesApp.js +24 -0
  9. package/dist/editor/ThreeEditor.js +22 -0
  10. package/dist/editor/components/Draggable.js +40 -0
  11. package/dist/editor/components/DraggableItem.js +25 -0
  12. package/dist/editor/components/Dropdown.js +32 -0
  13. package/dist/editor/components/DropdownItem.js +50 -0
  14. package/dist/editor/components/NavButton.js +7 -0
  15. package/dist/editor/components/content.js +4 -0
  16. package/dist/editor/components/icons/CloseIcon.js +9 -0
  17. package/dist/editor/components/icons/DragIcon.js +12 -0
  18. package/dist/editor/multiView/CameraWindow.js +64 -0
  19. package/dist/editor/multiView/DepthNodeMaterial.js +12 -0
  20. package/dist/editor/multiView/InfiniteGridHelper.js +31 -0
  21. package/dist/editor/multiView/InfiniteGridHelperGPU.js +31 -0
  22. package/dist/editor/multiView/InfiniteGridMaterial.js +137 -0
  23. package/dist/editor/multiView/InfiniteGridNodeMaterial.js +63 -0
  24. package/dist/editor/multiView/MultiView.js +890 -0
  25. package/dist/editor/multiView/Toggle.js +25 -0
  26. package/dist/editor/multiView/UVMaterial.js +60 -0
  27. package/dist/editor/multiView/UVNodeMaterial.js +10 -0
  28. package/dist/editor/sidePanel/Accordion.js +56 -0
  29. package/dist/editor/sidePanel/ChildObject.js +78 -0
  30. package/dist/editor/sidePanel/ContainerObject.js +11 -0
  31. package/dist/editor/sidePanel/DebugData.js +133 -0
  32. package/dist/editor/sidePanel/SidePanel.js +91 -0
  33. package/dist/editor/sidePanel/inspector/InspectGrid3.js +82 -0
  34. package/dist/editor/sidePanel/inspector/InspectGrid4.js +58 -0
  35. package/dist/editor/sidePanel/inspector/InspectImage.js +100 -0
  36. package/dist/editor/sidePanel/inspector/InspectNumber.js +76 -0
  37. package/dist/editor/sidePanel/inspector/InspectVector2.js +154 -0
  38. package/dist/editor/sidePanel/inspector/Inspector.js +95 -0
  39. package/dist/editor/sidePanel/inspector/InspectorField.js +128 -0
  40. package/dist/editor/sidePanel/inspector/InspectorGroup.js +110 -0
  41. package/dist/editor/sidePanel/inspector/utils/DragNumber.js +27 -0
  42. package/dist/editor/sidePanel/inspector/utils/InspectAnimation.js +99 -0
  43. package/dist/editor/sidePanel/inspector/utils/InspectCamera.js +91 -0
  44. package/dist/editor/sidePanel/inspector/utils/InspectLight.js +85 -0
  45. package/dist/editor/sidePanel/inspector/utils/InspectMaterial.js +861 -0
  46. package/dist/editor/sidePanel/inspector/utils/InspectTransform.js +93 -0
  47. package/dist/editor/sidePanel/utils.js +259 -0
  48. package/dist/editor/tools/Transform.js +77 -0
  49. package/dist/editor/tools/splineEditor/Spline.js +348 -0
  50. package/dist/editor/tools/splineEditor/index.js +193 -0
  51. package/dist/editor/utils.js +27 -0
  52. package/dist/hermes.cjs.js +8 -30
  53. package/dist/{index-dfUv_VcA.js → index-DepTXu6T.js} +454 -454
  54. package/dist/index.html +1 -1
  55. package/dist/index.js +125 -0
  56. package/dist/utils/ImageSequenceCapturer.js +148 -0
  57. package/dist/utils/detectSettings.js +46 -0
  58. package/dist/utils/math.js +68 -0
  59. package/dist/utils/post.js +206 -0
  60. package/dist/utils/theatre.js +316 -0
  61. package/dist/utils/three.js +199 -0
  62. package/dist/webworkers/EventHandling.js +115 -0
  63. package/dist/webworkers/ProxyManager.js +76 -0
  64. package/package.json +13 -7
  65. package/dist/.vite/manifest.json +0 -12
  66. package/dist/hermes.es.js +0 -8266
@@ -0,0 +1,861 @@
1
+ import { jsx as v, Fragment as z } from "react/jsx-runtime";
2
+ import { Color as G, FrontSide as W, BackSide as H, DoubleSide as K, ZeroFactor as I, OneFactor as R, SrcColorFactor as N, OneMinusSrcColorFactor as k, SrcAlphaFactor as F, OneMinusSrcAlphaFactor as E, DstAlphaFactor as T, OneMinusDstAlphaFactor as b, DstColorFactor as x, OneMinusDstColorFactor as w, SrcAlphaSaturateFactor as Z, ConstantColorFactor as P, OneMinusConstantColorFactor as U, ConstantAlphaFactor as _, OneMinusConstantAlphaFactor as L, AddEquation as J, SubtractEquation as Q, ReverseSubtractEquation as V, MinEquation as X, MaxEquation as Y, NoBlending as j, NormalBlending as ee, AdditiveBlending as te, SubtractiveBlending as ne, MultiplyBlending as ae, CustomBlending as re } from "three";
3
+ import D from "../InspectorGroup.js";
4
+ import { setItemProps as M, textureFromSrc as ie } from "../../utils.js";
5
+ import { ComputeNode as se } from "three/webgpu";
6
+ function ue(e) {
7
+ return !(e === "defaultAttributeValues" || e === "forceSinglePass" || e === "linecap" || e === "linejoin" || e === "linewidth" || e === "normalMapType" || e === "precision" || e === "shadowSide" || e === "uniformsGroups" || e === "uniformsNeedUpdate" || e === "userData" || e === "version" || e === "wireframeLinecap" || e === "wireframeLinejoin" || e === "wireframeLinewidth" || e.slice(0, 4) === "clip" || e.slice(0, 7) === "polygon" || e.slice(0, 7) === "stencil" || e.slice(0, 2) === "is");
8
+ }
9
+ function ce(e) {
10
+ switch (e) {
11
+ case "Alpha Map":
12
+ return "alphaMap";
13
+ case "Anisotropy Map":
14
+ return "anisotropyMap";
15
+ case "AO Map":
16
+ return "aoMap";
17
+ case "Bump Map":
18
+ return "bumpMap";
19
+ case "Clearcoat Map":
20
+ return "clearcoatMap";
21
+ case "Clearcoat Normal Map":
22
+ return "clearcoatNormalMap";
23
+ case "Clearcoat Roughness Map":
24
+ return "clearcoatRoughnessMap";
25
+ case "Displacement Map":
26
+ return "displacementMap";
27
+ case "Emissive Map":
28
+ return "emissiveMap";
29
+ case "Gradient Map":
30
+ return "gradientMap";
31
+ case "Iridescence Map":
32
+ return "iridescenceMap";
33
+ case "Iridescence Thickness Map":
34
+ return "iridescenceThicknessMap";
35
+ case "Map":
36
+ return "map";
37
+ case "Matcap":
38
+ return "matcap";
39
+ case "Normal Map":
40
+ return "normalMap";
41
+ case "Roughness Map":
42
+ return "roughnessMap";
43
+ case "Sheen Color Map":
44
+ return "sheenColorMap";
45
+ case "Sheen Roughness Map":
46
+ return "sheenRoughnessMap";
47
+ case "Specular Color Map":
48
+ return "specularColorMap";
49
+ case "Specular Map Intensity":
50
+ return "specularIntensityMap";
51
+ case "Thickness Map":
52
+ return "thicknessMap";
53
+ case "Transmission Map":
54
+ return "transmissionMap";
55
+ }
56
+ return e;
57
+ }
58
+ function C(e) {
59
+ switch (e) {
60
+ case "alphaHash":
61
+ return "Alpha Hash";
62
+ case "alphaMap":
63
+ return "Alpha Map";
64
+ case "alphaToCoverage":
65
+ return "Alpha To Coverage";
66
+ case "anisotropy":
67
+ return "Anisotropy";
68
+ case "anisotropyMap":
69
+ return "Anisotropy Map";
70
+ case "anisotropyRotation":
71
+ return "Anisotropy Rotation";
72
+ case "aoMap":
73
+ return "AO Map";
74
+ case "aoMapIntensity":
75
+ return "AO Map Intensity";
76
+ case "attenuationColor":
77
+ return "Attenuation Color";
78
+ case "attenuationDistance":
79
+ return "Attenuation Distance";
80
+ case "blendAlpha":
81
+ return "Blend Alpha";
82
+ case "blendColor":
83
+ return "Blend Color";
84
+ case "blendDst":
85
+ return "Blend Dst";
86
+ case "blendDstAlpha":
87
+ return "Blend Dst Alha";
88
+ case "blendEquation":
89
+ return "Blend Equation";
90
+ case "blendEquationAlpha":
91
+ return "Blend Equation Alpha";
92
+ case "blending":
93
+ return "Blending";
94
+ case "blendSrc":
95
+ return "Blend Src";
96
+ case "blendSrcAlpha":
97
+ return "Blend Src Alpha";
98
+ case "bumpMap":
99
+ return "Bump Map";
100
+ case "bumpScale":
101
+ return "Bump Scale";
102
+ case "clearcoat":
103
+ return "Clearcoat";
104
+ case "clearcoatMap":
105
+ return "Clearcoat Map";
106
+ case "clearcoatNormalMap":
107
+ return "Clearcoat Normal Map";
108
+ case "clearcoatNormalScale":
109
+ return "Clearcoat Normal Scale";
110
+ case "clearcoatRoughness":
111
+ return "Clearcoat Roughness";
112
+ case "clearcoatRoughnessMap":
113
+ return "Clearcoat Roughness Map";
114
+ case "color":
115
+ return "Color";
116
+ case "colorWrite":
117
+ return "Color Write";
118
+ case "defines":
119
+ return "Defines";
120
+ case "depthFunc":
121
+ return "Depth Func";
122
+ case "depthTest":
123
+ return "Depth Test";
124
+ case "depthWrite":
125
+ return "Depth Write";
126
+ case "dispersion":
127
+ return "Dispersion";
128
+ case "displacementBias":
129
+ return "Displacement Bias";
130
+ case "displacementMap":
131
+ return "Displacement Map";
132
+ case "displacementScale":
133
+ return "Displacement Scale";
134
+ case "dithering":
135
+ return "Dithering";
136
+ case "emissive":
137
+ return "Emissive";
138
+ case "emissiveMap":
139
+ return "Emissive Map";
140
+ case "emissiveIntensity":
141
+ return "Emissive Intensity";
142
+ case "envMap":
143
+ return "Environment Map";
144
+ case "envMapIntensity":
145
+ return "Environment Map Intensity";
146
+ case "envMapRotation":
147
+ return "Environment Map Rotation";
148
+ case "extensions":
149
+ return "Extensions";
150
+ case "flatShading":
151
+ return "Flat Shading";
152
+ case "fragmentShader":
153
+ return "Fragment Shader";
154
+ case "fog":
155
+ return "Fog";
156
+ case "glslVersion":
157
+ return "GLSL Version";
158
+ case "gradientMap":
159
+ return "Gradient Map";
160
+ case "ior":
161
+ return "IOR";
162
+ case "iridescence":
163
+ return "Iridescence";
164
+ case "iridescenceIOR":
165
+ return "Iridescence IOR";
166
+ case "iridescenceMap":
167
+ return "Iridescence Map";
168
+ case "iridescenceThicknessMap":
169
+ return "Iridescence Thickness Map";
170
+ case "iridescenceThicknessRange":
171
+ return "Iridescence Thickness Range";
172
+ case "lights":
173
+ return "Lights";
174
+ case "lightMap":
175
+ return "Light Map";
176
+ case "lightMapIntensity":
177
+ return "Light Map Intensity";
178
+ case "map":
179
+ return "Map";
180
+ case "matcap":
181
+ return "Matcap";
182
+ case "metalness":
183
+ return "Metalness";
184
+ case "metalnessMap":
185
+ return "Metalness Map";
186
+ case "name":
187
+ return "Name";
188
+ case "normalMap":
189
+ return "Normal Map";
190
+ case "normalScale":
191
+ return "Normal Scale";
192
+ case "premultipliedAlpha":
193
+ return "Premultiplied Alpha";
194
+ case "opacity":
195
+ return "Opacity";
196
+ case "reflectivity":
197
+ return "Reflectivity";
198
+ case "refractionRatio":
199
+ return "Refraction Ratio";
200
+ case "roughness":
201
+ return "Roughness";
202
+ case "roughnessMap":
203
+ return "Roughness Map";
204
+ case "sheen":
205
+ return "Sheen";
206
+ case "sheenColor":
207
+ return "Sheen Color";
208
+ case "sheenColorMap":
209
+ return "Sheen Color Map";
210
+ case "sheenRoughness":
211
+ return "Sheen Roughness";
212
+ case "sheenRoughnessMap":
213
+ return "Sheen Roughness Map";
214
+ case "shininess":
215
+ return "Shininess";
216
+ case "side":
217
+ return "Side";
218
+ case "size":
219
+ return "Size";
220
+ case "sizeAttenuation":
221
+ return "Size Attenuation";
222
+ case "specular":
223
+ return "Specular";
224
+ case "specularColor":
225
+ return "Specular Color";
226
+ case "specularColorMap":
227
+ return "Specular Color Map";
228
+ case "specularIntensity":
229
+ return "Specular Intensity";
230
+ case "specularIntensityMap":
231
+ return "Specular Map Intensity";
232
+ case "thickness":
233
+ return "Thickness";
234
+ case "thicknessMap":
235
+ return "Thickness Map";
236
+ case "toneMapped":
237
+ return "Tone Mapped";
238
+ case "transmission":
239
+ return "Transmission";
240
+ case "transmissionMap":
241
+ return "Transmission Map";
242
+ case "transparent":
243
+ return "Transparent";
244
+ case "type":
245
+ return "Type";
246
+ case "uuid":
247
+ return "UUID";
248
+ case "uniforms":
249
+ return "Uniforms";
250
+ case "vertexColors":
251
+ return "Vertex Colors";
252
+ case "vertexShader":
253
+ return "Vertex Shader";
254
+ case "visible":
255
+ return "Visible";
256
+ case "wireframe":
257
+ return "Wireframe";
258
+ }
259
+ return e;
260
+ }
261
+ function q(e) {
262
+ const t = e.toLowerCase();
263
+ return t.search("intensity") > -1 || t === "anisotropyrotation" || t === "blendalpha" || t === "bumpscale" || t === "clearcoatroughness" || t === "displacementbias" || t === "displacementscale" || t === "metalness" || t === "opacity" || t === "reflectivity" || t === "refractionratio" || t === "roughness" || t === "sheenroughness";
264
+ }
265
+ function $e() {
266
+ const e = document.createElement("input");
267
+ return e.type = "file", new Promise((t, n) => {
268
+ e.addEventListener("change", function() {
269
+ if (e.files === null)
270
+ n();
271
+ else {
272
+ const r = e.files[0], i = new FileReader();
273
+ i.onload = function(o) {
274
+ t(o.target.result);
275
+ }, i.readAsDataURL(r);
276
+ }
277
+ }), e.click();
278
+ });
279
+ }
280
+ const le = [
281
+ {
282
+ title: "Front",
283
+ value: W
284
+ },
285
+ {
286
+ title: "Back",
287
+ value: H
288
+ },
289
+ {
290
+ title: "Double",
291
+ value: K
292
+ }
293
+ ], oe = [
294
+ {
295
+ title: "No Blending",
296
+ value: j
297
+ },
298
+ {
299
+ title: "Normal",
300
+ value: ee
301
+ },
302
+ {
303
+ title: "Additive",
304
+ value: te
305
+ },
306
+ {
307
+ title: "Subtractive",
308
+ value: ne
309
+ },
310
+ {
311
+ title: "Multiply",
312
+ value: ae
313
+ },
314
+ {
315
+ title: "Custom",
316
+ value: re
317
+ }
318
+ ], pe = [
319
+ {
320
+ title: "Add",
321
+ value: J
322
+ },
323
+ {
324
+ title: "Subtract",
325
+ value: Q
326
+ },
327
+ {
328
+ title: "Reverse Subtract",
329
+ value: V
330
+ },
331
+ {
332
+ title: "Min",
333
+ value: X
334
+ },
335
+ {
336
+ title: "Max",
337
+ value: Y
338
+ }
339
+ ], de = [
340
+ {
341
+ title: "Zero",
342
+ value: I
343
+ },
344
+ {
345
+ title: "One",
346
+ value: R
347
+ },
348
+ {
349
+ title: "Src Color",
350
+ value: N
351
+ },
352
+ {
353
+ title: "One Minus Src Color",
354
+ value: k
355
+ },
356
+ {
357
+ title: "Src Alpha",
358
+ value: F
359
+ },
360
+ {
361
+ title: "One Minus Src Alpha",
362
+ value: E
363
+ },
364
+ {
365
+ title: "Dst Alpha",
366
+ value: T
367
+ },
368
+ {
369
+ title: "One Minus Dst Alpha",
370
+ value: b
371
+ },
372
+ {
373
+ title: "Dst Color",
374
+ value: x
375
+ },
376
+ {
377
+ title: "One Minus Dst Color",
378
+ value: w
379
+ },
380
+ {
381
+ title: "Src Alpha Saturate",
382
+ value: Z
383
+ },
384
+ {
385
+ title: "Constant Color",
386
+ value: P
387
+ },
388
+ {
389
+ title: "One Minus Constant Color",
390
+ value: U
391
+ },
392
+ {
393
+ title: "Constant Alpha",
394
+ value: _
395
+ },
396
+ {
397
+ title: "One Minus Constant Alpha",
398
+ value: L
399
+ }
400
+ ], me = [
401
+ {
402
+ title: "Zero",
403
+ value: I
404
+ },
405
+ {
406
+ title: "One",
407
+ value: R
408
+ },
409
+ {
410
+ title: "Src Color",
411
+ value: N
412
+ },
413
+ {
414
+ title: "One Minus Src Color",
415
+ value: k
416
+ },
417
+ {
418
+ title: "Src Alpha",
419
+ value: F
420
+ },
421
+ {
422
+ title: "One Minus Src Alpha",
423
+ value: E
424
+ },
425
+ {
426
+ title: "Dst Alpha",
427
+ value: T
428
+ },
429
+ {
430
+ title: "One Minus Dst Alpha",
431
+ value: b
432
+ },
433
+ {
434
+ title: "Dst Color",
435
+ value: x
436
+ },
437
+ {
438
+ title: "One Minus Dst Color",
439
+ value: w
440
+ },
441
+ {
442
+ title: "Constant Color",
443
+ value: P
444
+ },
445
+ {
446
+ title: "One Minus Constant Color",
447
+ value: U
448
+ },
449
+ {
450
+ title: "Constant Alpha",
451
+ value: _
452
+ },
453
+ {
454
+ title: "One Minus Constant Alpha",
455
+ value: L
456
+ }
457
+ ];
458
+ function S(e, t) {
459
+ e.needsUpdate = !0, e.type = "option", e.options = t;
460
+ }
461
+ function he(e, t, n, r) {
462
+ return {
463
+ type: "boolean",
464
+ title: C(e),
465
+ prop: e,
466
+ value: t,
467
+ needsUpdate: !0,
468
+ onChange: (i, o) => {
469
+ r.updateObject(n.uuid, `material.${e}`, o), r.updateObject(n.uuid, "material.needsUpdate", !0);
470
+ const s = r.getScene(n.uuid);
471
+ if (s !== null) {
472
+ const a = s.getObjectByProperty("uuid", n.uuid);
473
+ M(a, `material.${e}`, o);
474
+ }
475
+ }
476
+ };
477
+ }
478
+ function Me(e, t, n, r) {
479
+ const i = {
480
+ type: "number",
481
+ title: C(e),
482
+ prop: e,
483
+ value: t,
484
+ min: void 0,
485
+ max: void 0,
486
+ step: 0.01,
487
+ needsUpdate: !0,
488
+ onChange: (o, s) => {
489
+ r.updateObject(n.uuid, `material.${e}`, s), r.updateObject(n.uuid, "material.needsUpdate", !0);
490
+ const a = r.getScene(n.uuid);
491
+ if (a !== null) {
492
+ const m = a.getObjectByProperty("uuid", n.uuid);
493
+ M(m, `material.${e}`, s);
494
+ }
495
+ }
496
+ };
497
+ switch (e) {
498
+ case "blending":
499
+ S(i, oe);
500
+ break;
501
+ case "blendDst":
502
+ S(i, me);
503
+ break;
504
+ case "blendEquation":
505
+ S(i, pe);
506
+ break;
507
+ case "blendSrc":
508
+ S(i, de);
509
+ break;
510
+ case "side":
511
+ S(i, le);
512
+ break;
513
+ }
514
+ return q(e) && (i.value = Number(t), i.type = "range", i.min = Math.min(0, i.value), i.max = Math.max(1, i.value), i.step = 0.01), i;
515
+ }
516
+ function ge(e, t, n, r) {
517
+ const i = {
518
+ type: "string",
519
+ title: C(e),
520
+ prop: e,
521
+ value: t,
522
+ needsUpdate: !0,
523
+ onChange: (s, a) => {
524
+ r.updateObject(n.uuid, `material.${e}`, a), r.updateObject(n.uuid, "material.needsUpdate", !0);
525
+ const m = r.getScene(n.uuid);
526
+ if (m !== null) {
527
+ const c = m.getObjectByProperty("uuid", n.uuid);
528
+ M(c, `material.${e}`, a);
529
+ }
530
+ },
531
+ onKeyDown: (s) => {
532
+ }
533
+ };
534
+ return (e === "vertexShader" || e === "fragmentShader") && (i.type = "field", i.disabled = !1, i.latest = i.value, i.onChange = (s, a) => {
535
+ i.latest = a, r.updateObject(n.uuid, `material.${e}`, a);
536
+ const m = r.getScene(n.uuid);
537
+ if (m !== null) {
538
+ const c = m.getObjectByProperty("uuid", n.uuid);
539
+ M(c, `material.${e}`, a);
540
+ }
541
+ }, i.onKeyDown = (s) => {
542
+ if (s.key === "Enter" && (s.altKey || s.metaKey)) {
543
+ r.updateObject(n.uuid, "material.needsUpdate", !0);
544
+ const a = r.getScene(n.uuid);
545
+ if (a !== null) {
546
+ const m = a.getObjectByProperty("uuid", n.uuid);
547
+ M(m, "material.needsUpdate", !0);
548
+ }
549
+ }
550
+ }), i;
551
+ }
552
+ function fe(e) {
553
+ return e.x !== void 0 && e.y !== void 0 && e.z === void 0;
554
+ }
555
+ function ye(e) {
556
+ return e.x !== void 0 && e.y !== void 0 && e.z !== void 0 && e.w === void 0;
557
+ }
558
+ function Se(e) {
559
+ return e.x !== void 0 && e.y !== void 0 && e.z !== void 0 && e.w !== void 0;
560
+ }
561
+ function O(e) {
562
+ e.sort((t, n) => t.title < n.title ? -1 : t.title > n.title ? 1 : 0);
563
+ }
564
+ function y(e, t, n, r, i = "", o = !1) {
565
+ const s = C(e).split(".")[0].replaceAll("[", "").replaceAll("]", ""), a = i.length > 0 ? `${i}.${e}` : e, m = typeof t;
566
+ if (m === "object" && t !== null && t.__isUniform === !0)
567
+ return y(`${e}.value`, t.value, n, r, i, o);
568
+ if (m === "boolean" || m === "string")
569
+ return {
570
+ title: s,
571
+ prop: a,
572
+ type: m,
573
+ value: t,
574
+ disabled: o,
575
+ onChange: (c, l) => {
576
+ r.updateObject(n.uuid, `material.${a}`, l);
577
+ const u = r.getScene(n.uuid);
578
+ if (u !== null) {
579
+ const p = u.getObjectByProperty("uuid", n.uuid);
580
+ M(p, `material.${a}`, l);
581
+ }
582
+ }
583
+ };
584
+ if (m === "number") {
585
+ const c = {
586
+ title: s,
587
+ prop: a,
588
+ type: "number",
589
+ value: t,
590
+ step: 0.01,
591
+ disabled: o,
592
+ onChange: (l, u) => {
593
+ r.updateObject(n.uuid, `material.${a}`, u);
594
+ const p = r.getScene(n.uuid);
595
+ if (p !== null) {
596
+ const d = p.getObjectByProperty("uuid", n.uuid);
597
+ M(d, `material.${a}`, u);
598
+ }
599
+ }
600
+ };
601
+ return q(s) && (c.type = "range", c.min = 0, c.max = 1), c;
602
+ } else {
603
+ if (t.isColor)
604
+ return {
605
+ title: s,
606
+ prop: a,
607
+ type: "color",
608
+ value: t,
609
+ disabled: o,
610
+ onChange: (c, l) => {
611
+ const u = new G(l);
612
+ r.updateObject(n.uuid, `material.${a}`, u);
613
+ const p = r.getScene(n.uuid);
614
+ if (p !== null) {
615
+ const d = p.getObjectByProperty("uuid", n.uuid);
616
+ M(d, `material.${a}`, u);
617
+ }
618
+ }
619
+ };
620
+ if (Array.isArray(t)) {
621
+ const c = [];
622
+ for (const l in t) {
623
+ const u = t[l], p = `[${l.toString()}]`;
624
+ if (u.value !== void 0) {
625
+ const d = y(`${p}.value`, u.value, n, r, a, o);
626
+ d !== void 0 && c.push(d);
627
+ } else {
628
+ const d = y(p, u, n, r, a, o);
629
+ d !== void 0 && c.push(d);
630
+ }
631
+ }
632
+ if (c.length > 0)
633
+ return O(c), {
634
+ title: s,
635
+ items: c
636
+ };
637
+ } else {
638
+ if (fe(t))
639
+ return {
640
+ title: s,
641
+ prop: a,
642
+ type: "vector2",
643
+ value: t,
644
+ disabled: o,
645
+ onChange: (c, l) => {
646
+ r.updateObject(n.uuid, `material.${a}`, l);
647
+ const u = r.getScene(n.uuid);
648
+ if (u !== null) {
649
+ const p = u.getObjectByProperty("uuid", n.uuid);
650
+ M(p, `material.${a}`, l);
651
+ }
652
+ }
653
+ };
654
+ if (ye(t))
655
+ return {
656
+ title: s,
657
+ prop: a,
658
+ type: "grid3",
659
+ value: t,
660
+ disabled: o,
661
+ onChange: (c, l) => {
662
+ r.updateObject(n.uuid, `material.${a}`, l);
663
+ const u = r.getScene(n.uuid);
664
+ if (u !== null) {
665
+ const p = u.getObjectByProperty("uuid", n.uuid);
666
+ M(p, `material.${a}`, l);
667
+ }
668
+ }
669
+ };
670
+ if (Se(t))
671
+ return {
672
+ title: s,
673
+ prop: a,
674
+ type: "grid4",
675
+ value: t,
676
+ disabled: o,
677
+ onChange: (c, l) => {
678
+ r.updateObject(n.uuid, `material.${a}`, l);
679
+ const u = r.getScene(n.uuid);
680
+ if (u !== null) {
681
+ const p = u.getObjectByProperty("uuid", n.uuid);
682
+ M(p, `material.${a}`, l);
683
+ }
684
+ }
685
+ };
686
+ if (t.isEuler)
687
+ return {
688
+ title: s,
689
+ prop: a,
690
+ type: "euler",
691
+ value: t,
692
+ disabled: o,
693
+ onChange: (c, l) => {
694
+ r.updateObject(n.uuid, `material.${a}`, l);
695
+ const u = r.getScene(n.uuid);
696
+ if (u !== null) {
697
+ const p = u.getObjectByProperty("uuid", n.uuid);
698
+ M(p, `material.${a}`, l);
699
+ }
700
+ }
701
+ };
702
+ if (t.src !== void 0)
703
+ return {
704
+ title: s,
705
+ type: "image",
706
+ value: t,
707
+ disabled: o,
708
+ onChange: (c, l) => {
709
+ const u = ce(e), p = i.length > 0 ? `${i}.${u}` : u;
710
+ r.createTexture(n.uuid, `material.${p}`, l);
711
+ const d = r.getScene(n.uuid);
712
+ if (d !== null) {
713
+ const A = d.getObjectByProperty("uuid", n.uuid);
714
+ if (A !== void 0) {
715
+ const B = (g) => {
716
+ const f = A.material, h = p.split(".");
717
+ switch (h.length) {
718
+ case 1:
719
+ f[h[0]] = g;
720
+ break;
721
+ case 2:
722
+ f[h[0]][h[1]] = g;
723
+ break;
724
+ case 3:
725
+ f[h[0]][h[1]][h[2]] = g;
726
+ break;
727
+ case 4:
728
+ f[h[0]][h[1]][h[2]][h[3]] = g;
729
+ break;
730
+ case 5:
731
+ f[h[0]][h[1]][h[2]][h[3]][h[4]] = g;
732
+ break;
733
+ }
734
+ f.needsUpdate = !0;
735
+ };
736
+ l.src.length > 0 ? ie(l.src).then((g) => {
737
+ g.offset.set(l.offset[0], l.offset[1]), g.repeat.set(l.repeat[0], l.repeat[1]), B(g);
738
+ }) : B(null);
739
+ }
740
+ }
741
+ }
742
+ };
743
+ if (t.elements !== void 0)
744
+ return {
745
+ title: s,
746
+ prop: a,
747
+ type: t.elements.length > 9 ? "grid4" : "grid3",
748
+ value: t,
749
+ disabled: o,
750
+ onChange: (c, l) => {
751
+ r.updateObject(n.uuid, `material.${a}`, l);
752
+ const u = r.getScene(n.uuid);
753
+ if (u !== null) {
754
+ const p = u.getObjectByProperty("uuid", n.uuid);
755
+ M(p, `material.${a}`, l);
756
+ }
757
+ }
758
+ };
759
+ {
760
+ const c = [], l = e === "defines" || e === "extensions";
761
+ try {
762
+ for (const u in t) {
763
+ const p = t[u];
764
+ if (p !== void 0)
765
+ if (p.value !== void 0) {
766
+ const d = y(`${u}.value`, p.value, n, r, a, l);
767
+ d !== void 0 && c.push(d);
768
+ } else {
769
+ const d = y(u, p, n, r, a, l);
770
+ d !== void 0 && c.push(d);
771
+ }
772
+ }
773
+ } catch {
774
+ console.log("Hermes - Issue cycling through material object:", e, t);
775
+ }
776
+ if (c.length > 0)
777
+ return O(c), {
778
+ title: s,
779
+ items: c
780
+ };
781
+ }
782
+ }
783
+ }
784
+ }
785
+ function $(e, t, n) {
786
+ const r = [];
787
+ for (const i in e) {
788
+ if (!ue(i) || i.search("Node") > -1 || e[i] instanceof se)
789
+ continue;
790
+ const o = typeof e[i], s = e[i];
791
+ if (o === "boolean")
792
+ r.push(he(i, s, t, n));
793
+ else if (o === "number")
794
+ r.push(Me(i, s, t, n));
795
+ else if (o === "string")
796
+ r.push(ge(i, s, t, n));
797
+ else if (o === "object") {
798
+ const a = y(i, s, t, n);
799
+ a !== void 0 && r.push(a);
800
+ } else s !== void 0 && console.log("Hermes - Other Material Prop Type:", i, o, s);
801
+ }
802
+ return O(r), r.push({
803
+ title: "Update Material",
804
+ type: "button",
805
+ onChange: () => {
806
+ n.updateObject(t.uuid, "material.needsUpdate", !0);
807
+ const i = n.getScene(t.uuid);
808
+ if (i !== null) {
809
+ const o = i.getObjectByProperty("uuid", t.uuid);
810
+ M(o, "material.needsUpdate", !0);
811
+ }
812
+ }
813
+ }), r;
814
+ }
815
+ function Ie(e, t) {
816
+ function n() {
817
+ return `${t.name}_material`;
818
+ }
819
+ const r = localStorage.getItem(n()), i = r !== null ? r === "open" : !1;
820
+ function o(a) {
821
+ localStorage.setItem(n(), a ? "open" : "closed");
822
+ }
823
+ const s = e.material;
824
+ if (Array.isArray(s)) {
825
+ const a = [], m = s.length;
826
+ for (let c = 0; c < m; c++)
827
+ a.push(
828
+ /* @__PURE__ */ v(
829
+ D,
830
+ {
831
+ three: t,
832
+ title: `Material ${c}`,
833
+ items: $(s[c], e, t)
834
+ },
835
+ `Material ${c}`
836
+ )
837
+ );
838
+ return /* @__PURE__ */ v(z, { children: a });
839
+ } else
840
+ return /* @__PURE__ */ v(
841
+ D,
842
+ {
843
+ three: t,
844
+ title: "Material",
845
+ items: $(s, e, t),
846
+ expanded: i,
847
+ onToggle: (a) => {
848
+ o(a);
849
+ }
850
+ }
851
+ );
852
+ }
853
+ export {
854
+ Ie as InspectMaterial,
855
+ ue as acceptedMaterialNames,
856
+ q as clampedNames,
857
+ ce as imageNames,
858
+ $ as inspectMaterialItems,
859
+ C as prettyName,
860
+ $e as uploadLocalImage
861
+ };