abstract-3d 4.0.0-beta.0 → 4.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/renderers/react/react.d.ts.map +1 -1
- package/lib/renderers/react/react.js +4 -3
- package/lib/renderers/react/react.js.map +1 -1
- package/lib/renderers/three/appearance/appearance.d.ts.map +1 -1
- package/lib/renderers/three/appearance/appearance.js +4 -1
- package/lib/renderers/three/appearance/appearance.js.map +1 -1
- package/lib/renderers/three/build/build.js +7 -3
- package/lib/renderers/three/build/build.js.map +1 -1
- package/lib/renderers/three/build/materials.d.ts +7 -3
- package/lib/renderers/three/build/materials.d.ts.map +1 -1
- package/lib/renderers/three/build/materials.js +10 -5
- package/lib/renderers/three/build/materials.js.map +1 -1
- package/lib/renderers/three/quality/quality.d.ts +4 -24
- package/lib/renderers/three/quality/quality.d.ts.map +1 -1
- package/lib/renderers/three/quality/quality.js +6 -43
- package/lib/renderers/three/quality/quality.js.map +1 -1
- package/lib/renderers/three/shadow/shadow.d.ts +15 -0
- package/lib/renderers/three/shadow/shadow.d.ts.map +1 -0
- package/lib/renderers/three/shadow/shadow.js +81 -0
- package/lib/renderers/three/shadow/shadow.js.map +1 -0
- package/lib/renderers/three/viewer/options.d.ts +6 -2
- package/lib/renderers/three/viewer/options.d.ts.map +1 -1
- package/lib/renderers/three/viewer/options.js +2 -0
- package/lib/renderers/three/viewer/options.js.map +1 -1
- package/lib/renderers/three/viewer/viewer.d.ts +3 -2
- package/lib/renderers/three/viewer/viewer.d.ts.map +1 -1
- package/lib/renderers/three/viewer/viewer.js +24 -20
- package/lib/renderers/three/viewer/viewer.js.map +1 -1
- package/package.json +1 -3
- package/src/renderers/react/react.tsx +5 -4
- package/src/renderers/three/appearance/appearance.test.ts +5 -0
- package/src/renderers/three/appearance/appearance.ts +4 -1
- package/src/renderers/three/build/build.ts +6 -3
- package/src/renderers/three/build/materials.ts +14 -8
- package/src/renderers/three/quality/quality.test.ts +11 -4
- package/src/renderers/three/quality/quality.ts +5 -65
- package/src/renderers/three/shadow/shadow.ts +116 -0
- package/src/renderers/three/viewer/options.ts +8 -2
- package/src/renderers/three/viewer/viewer.ts +26 -23
- package/src/custom_typings/n8ao.d.ts +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../../../src/renderers/three/viewer/viewer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAInB,KAAK,EAGL,kBAAkB,EAClB,iBAAiB,EAGjB,KAAK,IAAI,UAAU,EAEnB,KAAK,OAAO,EAEZ,OAAO,EACP,aAAa,EACd,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../../../src/renderers/three/viewer/viewer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAInB,KAAK,EAGL,kBAAkB,EAClB,iBAAiB,EAGjB,KAAK,IAAI,UAAU,EAEnB,KAAK,OAAO,EAEZ,OAAO,EACP,aAAa,EACd,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,KAAK,EAAW,YAAY,EAAE,MAAM,eAAe,CAAC;AAG3D;;;;GAIG;AAEH,KAAK,GAAG,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvF,MAAM,MAAM,MAAM,CAAC,OAAO,IAAI;IAC5B,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,wDAAwD;IACxD,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACzG,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,YAAY,CAAC;QAAC,IAAI,CAAC,EAAE;YAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,OAAO,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3H,QAAQ,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACpF,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,qHAAqH;IACrH,QAAQ,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACxG,SAAS,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnE,kDAAkD;IAClD,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAKF,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAmD9G;AAED,8HAA8H;AAC9H,wBAAgB,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAIxG;AAED,gGAAgG;AAChG,wBAAgB,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAI5D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAsB/D"}
|
|
@@ -6,7 +6,8 @@ import { fitCamera } from "../camera/camera.js";
|
|
|
6
6
|
import { configureControls, createControls, setPose } from "../camera/controls.js";
|
|
7
7
|
import { createGizmo } from "../camera/gizmo.js";
|
|
8
8
|
import { compileScene } from "../compile/compile.js";
|
|
9
|
-
import {
|
|
9
|
+
import { getPixelRatio, recordFrame } from "../quality/quality.js";
|
|
10
|
+
import { createGroundShadow, disposeGroundShadow } from "../shadow/shadow.js";
|
|
10
11
|
import { createGlyphAtlas } from "../text/text.js";
|
|
11
12
|
import { effects } from "./options.js";
|
|
12
13
|
import { createOverlayLayer, setOverlays } from "./overlays.js";
|
|
@@ -84,12 +85,12 @@ export function disposeViewer(v) {
|
|
|
84
85
|
v.resizeObserver.disconnect();
|
|
85
86
|
v.controls.orbit.dispose();
|
|
86
87
|
v.gizmo?.dispose();
|
|
87
|
-
if (v.path) {
|
|
88
|
-
disposeRenderPath(v.path);
|
|
89
|
-
}
|
|
90
88
|
if (v.built) {
|
|
91
89
|
disposeScene(v.built);
|
|
92
90
|
}
|
|
91
|
+
if (v.shadow) {
|
|
92
|
+
disposeGroundShadow(v.shadow);
|
|
93
|
+
}
|
|
93
94
|
Object.values(v.environments).forEach((e) => e.dispose());
|
|
94
95
|
v.geometries.forEach((g) => g.dispose());
|
|
95
96
|
v.atlas.texture.dispose();
|
|
@@ -110,6 +111,12 @@ function apply(v, changes) {
|
|
|
110
111
|
v.structure = { activeComponents: options.activeComponents, relationsActive: options.activeRelations !== undefined };
|
|
111
112
|
rebuild(v);
|
|
112
113
|
}
|
|
114
|
+
if (changes.has("shadow") || changes.has("build")) {
|
|
115
|
+
if (v.shadow) {
|
|
116
|
+
disposeGroundShadow(v.shadow);
|
|
117
|
+
}
|
|
118
|
+
v.shadow = v.built && options.groundShadow !== false ? createGroundShadow(v.renderer, v.scene, v.built) : undefined;
|
|
119
|
+
}
|
|
113
120
|
if (changes.has("camera")) {
|
|
114
121
|
const { near = 0.1, far = 2000, ...rest } = options.camera ?? { type: "Perspective" };
|
|
115
122
|
v.camera = v.cameras[rest.type];
|
|
@@ -130,11 +137,9 @@ function apply(v, changes) {
|
|
|
130
137
|
updateLights(v);
|
|
131
138
|
}
|
|
132
139
|
if (changes.has("quality")) {
|
|
133
|
-
const quality = options.quality ?? "
|
|
134
|
-
v.governor = { quality, tier: quality === "auto" ? "
|
|
135
|
-
|
|
136
|
-
if (changes.has("quality") || changes.has("camera")) {
|
|
137
|
-
updateRenderPath(v);
|
|
140
|
+
const quality = options.quality ?? "auto";
|
|
141
|
+
v.governor = { quality, tier: quality === "auto" ? "high" : quality, sum: 0, count: 0 };
|
|
142
|
+
v.renderer.setPixelRatio(getPixelRatio(v.governor.tier, window.devicePixelRatio));
|
|
138
143
|
}
|
|
139
144
|
if ((changes.has("paint") || changes.has("build")) && v.built) {
|
|
140
145
|
const start = performance.now();
|
|
@@ -200,7 +205,7 @@ function renderFrame(v, now) {
|
|
|
200
205
|
renderer.info.reset();
|
|
201
206
|
const moving = v.controls.orbit.update(Math.min(interval / 1000, 0.1)) || !!gizmo?.animating;
|
|
202
207
|
if (moving && loop.wasMoving && v.governor && recordFrame(v.governor, interval)) {
|
|
203
|
-
|
|
208
|
+
renderer.setPixelRatio(getPixelRatio(v.governor.tier, window.devicePixelRatio));
|
|
204
209
|
}
|
|
205
210
|
loop.wasMoving = moving;
|
|
206
211
|
const animated = !!built && built.animatedItems.length > 0;
|
|
@@ -212,11 +217,13 @@ function renderFrame(v, now) {
|
|
|
212
217
|
if (built) {
|
|
213
218
|
cullScene(built, camera.position);
|
|
214
219
|
}
|
|
215
|
-
|
|
220
|
+
if (v.loaded) {
|
|
221
|
+
renderer.render(v.scene, camera);
|
|
222
|
+
}
|
|
216
223
|
gizmo?.render();
|
|
217
224
|
v.overlays.renderer.render(v.overlays.scene, camera);
|
|
218
225
|
Object.assign(v.stats, { frames: v.stats.frames + 1, frameMs: performance.now() - start, drawCalls: renderer.info.render.calls });
|
|
219
|
-
if (moving || animated
|
|
226
|
+
if (moving || animated) {
|
|
220
227
|
invalidate(v);
|
|
221
228
|
}
|
|
222
229
|
else {
|
|
@@ -226,7 +233,6 @@ function renderFrame(v, now) {
|
|
|
226
233
|
function onResize(v, rect) {
|
|
227
234
|
Object.assign(v.size, { width: rect.width, height: rect.height });
|
|
228
235
|
v.renderer.setSize(rect.width, rect.height, false);
|
|
229
|
-
v.path?.composer?.setSize(rect.width, rect.height);
|
|
230
236
|
v.overlays.renderer.setSize(rect.width, rect.height);
|
|
231
237
|
v.gizmo?.update();
|
|
232
238
|
fitPose(v);
|
|
@@ -278,7 +284,8 @@ function hoverAtPointer(v) {
|
|
|
278
284
|
}
|
|
279
285
|
function onClick(v, event) {
|
|
280
286
|
const { down } = v.pointer;
|
|
281
|
-
const
|
|
287
|
+
const clicked = !!down && Math.hypot(event.clientX - down.x, event.clientY - down.y) <= clickTolerance;
|
|
288
|
+
const hit = clicked ? pick(v, event) : undefined;
|
|
282
289
|
const target = hit && v.compiled.targets[hit.target];
|
|
283
290
|
const args = hit && getGroupArgs(v, hit);
|
|
284
291
|
if (hit && target?.kind === "relation") {
|
|
@@ -287,6 +294,9 @@ function onClick(v, event) {
|
|
|
287
294
|
else if (hit && args) {
|
|
288
295
|
v.options.onClickGroup?.(...args, { nativeEvent: event, point: hit.point });
|
|
289
296
|
}
|
|
297
|
+
else if (clicked) {
|
|
298
|
+
v.options.onPointerMissed?.(event);
|
|
299
|
+
}
|
|
290
300
|
}
|
|
291
301
|
function onContextMenu(v, event) {
|
|
292
302
|
const hit = pick(v, event);
|
|
@@ -421,12 +431,6 @@ function updateOverlays(v) {
|
|
|
421
431
|
}
|
|
422
432
|
setOverlays(v.overlays, overlays, options.onOverlays);
|
|
423
433
|
}
|
|
424
|
-
function updateRenderPath(v) {
|
|
425
|
-
if (v.path) {
|
|
426
|
-
disposeRenderPath(v.path);
|
|
427
|
-
}
|
|
428
|
-
v.path = createRenderPath(v.renderer, v.scene, v.camera, v.governor?.tier ?? "low");
|
|
429
|
-
}
|
|
430
434
|
const raycaster = new Raycaster();
|
|
431
435
|
const ndc = new Vector2();
|
|
432
436
|
//# sourceMappingURL=viewer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../../src/renderers/three/viewer/viewer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAEZ,aAAa,EACb,gBAAgB,EAChB,gCAAgC,EAChC,KAAK,EACL,kBAAkB,EAElB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,KAAK,IAAI,UAAU,EACnB,cAAc,EAEd,OAAO,EACP,OAAO,EACP,aAAa,GACd,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAG/E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/H,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAErG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA+ChE,0FAA0F;AAC1F,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,UAAU,YAAY,CAAU,SAAsB,EAAE,OAA+B;IAC3F,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IACxC,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,uFAAuF;IACvF,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,kFAAkF,CAAC;IAC1G,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,kGAAkG;IAClG,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC7D,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAChC,MAAM,OAAO,GAAG,EAAE,WAAW,EAAE,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,kBAAkB,EAAE,EAAE,CAAC;IACnG,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,aAAa,CAAC,CAAC;IAC9D,MAAM,CAAC,GAAoB;QACzB,OAAO;QACP,SAAS;QACT,MAAM;QACN,QAAQ;QACR,KAAK,EAAE,IAAI,UAAU,EAAE;QACvB,MAAM,EAAE,IAAI,KAAK,EAAE;QACnB,OAAO;QACP,MAAM;QACN,QAAQ,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrF,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,KAAK,EAAE,gBAAgB,EAAE;QACzB,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,QAAQ,EAAE,kBAAkB,CAAC,SAAS,CAAC;QACvC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAC7B,SAAS,EAAE,IAAI,eAAe,EAAE;QAChC,cAAc,EAAE,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACxF,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;QACzD,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAC/G,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACrE,SAAS,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE;QACjH,YAAY,EAAE,EAAE;QAChB,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;KAChB,CAAC;IACF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IAC9C,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3E,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACpF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACzG,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8HAA8H;AAC9H,MAAM,UAAU,YAAY,CAAU,CAAkB,EAAE,OAAwC;IAChG,CAAC,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAmC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/H,UAAU,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,UAAU,CAAU,CAAkB;IACpD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1E,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAU,CAAkB;IACvD,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;IAClB,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IACnB,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC5B,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AACpB,CAAC;AAED,wDAAwD;AACxD,SAAS,KAAK,CAAU,CAAkB,EAAE,OAA4B;IACtE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACjF,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAChC,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,CAAC,CAAC,SAAS,GAAG,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACrH,OAAO,CAAC,CAAC,CAAC,CAAC;IACb,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QACtF,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9G,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,yFAAyF;IACzF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,CAAC,CAAC,CAAC;IACb,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,YAAY,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;QACzC,CAAC,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC5F,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE;YAClB,GAAG,CAAC,CAAC,SAAS;YACd,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;YACvC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM;YACxC,mBAAmB,EAAE,OAAO,CAAC,YAAY,KAAK,SAAS;SACxD,CAAC,CAAC;QACH,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACzC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;IAC9D,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,cAAc,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAU,CAAkB;IAC1C,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,KAAK;QACL,QAAQ;YACR,UAAU,CAAC,QAAQ,EAAE;gBACnB,GAAG,OAAO;gBACV,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,eAAe,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;aACrC,CAAC,CAAC;IACL,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;QAC5D,gFAAgF;QAChF,CAAC,CAAC,QAAQ;aACP,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;aAC/B,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACvB,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAU,CAAkB;IAC3C,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChB,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACrB,UAAU,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAU,CAAkB,EAAE,GAAW;IAC3D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACf,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAChB,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC;IAC7F,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QAChF,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;IACxB,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3D,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/C,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC3B,IAAI,KAAK,EAAE,CAAC;QACV,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9G,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAClI,IAAI,MAAM,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;QACjC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAU,CAAkB,EAAE,IAAqB;IAClE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,CAAC,CAAC,CAAC;IACX,UAAU,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC;AAED,yFAAyF;AACzF,SAAS,OAAO,CAAU,CAAkB;IAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC;QACxC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;QAC5F,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAU,CAAkB;IAC3C,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO,EAAE,WAAW,GAAG,EAAE,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;IAC9E,OAAO,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;AACtH,CAAC;AAED,SAAS,WAAW,CAAU,CAAkB;IAC9C,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;IAC5B,CAAC,CAAC,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1G,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAU,CAAkB;IAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,KAAK,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,sBAAsB,CAAC;IACtI,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,IAAI,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAM,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAU,CAAkB,EAAE,KAAmB;IACrE,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,qBAAqB,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,kIAAkI;AAClI,SAAS,cAAc,CAAU,CAAkB;IACjD,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;IACpB,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7C,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAU,CAAkB,EAAE,KAAiB;IAC7D,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9H,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,QAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,IAAI,GAAG,IAAI,MAAM,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QACvC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACzF,CAAC;SAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAU,CAAkB,EAAE,KAAiB;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAU,CAAkB,EAAE,GAAoB,EAAE,KAAmB;IACxF,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACnC,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;IACxB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,IAAI,GAAG,EAAE,MAAM,KAAK,QAAQ,EAAE,MAAM,EAAE,CAAC;QACrC,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,IAAI,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1C,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,UAAU,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC;AAED,sIAAsI;AACtI,SAAS,IAAI,CAAU,CAAkB,EAAE,KAAiB;IAC1D,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACpB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC9C,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACpJ,MAAM,IAAI,GAAG,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC;QACnF,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAE,CAAC;QAChF,MAAM,WAAW,GACf,IAAI,EAAE,IAAI,KAAK,OAAO;YACpB,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAO,CAAE,CAAC,QAAQ;YAC1D,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW;gBAC1B,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS;gBAC1G,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;QAC3B,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,EAAE,IAAI,EAAE,IAAK,EAAE,MAAM,EAAE,MAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QACpE,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iGAAiG;AACjG,SAAS,YAAY,CACnB,CAAkB,EAClB,GAAQ;IAER,MAAM,MAAM,GAAG,CAAC,CAAC,QAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;IAChD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,CAAC;QACzE,KAAK,WAAW;YACd,OAAO,CAAC,MAAM,CAAC,EAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5C;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAU,CAAkB;IAC/C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,QAAQ,EAAE,oBAAoB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;IACtF,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,MAAM,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC;IACzG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAC7I,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY;IACnB,MAAM,WAAW,GAAG;QAClB,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACf,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC;QACjB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;KACR,CAAC;IACX,OAAO;QACL,IAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC;QAC/B,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAChD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAuB,EAAE,QAAuB;IACzE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC;QACrE,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7F,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACxD,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1B;QACE,CAAC,EAAE,EAAE,GAAG,CAAC;QACT,CAAC,GAAG,EAAE,EAAE,CAAC;QACT,CAAC,GAAG,EAAE,GAAG,CAAC;KACX,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAE,EAAE,GAAG,EAAE,KAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,gCAAgC,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;AAC7H,CAAC;AAED,SAAS,cAAc,CAAU,CAAkB;IACjD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChF,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,OAAO,CAAC,QAAQ,EAAE,OAAO,CACvB,CAAC,CAAC,EAAE,EAAE,CACJ,QAAQ;QACR,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAChJ,CAAC;IACF,IAAI,MAAM,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7C,QAAQ,CAAC,IAAI,CAAC;YACZ,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE;YACtB,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC;YAC5F,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CACH,CAAC;IACJ,CAAC;IACD,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,gBAAgB,CAAU,CAAkB;IACnD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,CAAC,CAAC,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;AAClC,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../../src/renderers/three/viewer/viewer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "abstract-3d",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.2",
|
|
4
4
|
"gitHead": "17921b59da5eee6cc446fd37a2134165af4d1901",
|
|
5
5
|
"description": "Abstract 3D",
|
|
6
6
|
"license": "MIT",
|
|
@@ -64,8 +64,6 @@
|
|
|
64
64
|
"dependencies": {
|
|
65
65
|
"@mapbox/tiny-sdf": "^2.3.0",
|
|
66
66
|
"abstract-image": "^13.3.2",
|
|
67
|
-
"n8ao": "^2.0.1",
|
|
68
|
-
"postprocessing": "^6.39.5",
|
|
69
67
|
"three-viewport-gizmo": "^2.2.0",
|
|
70
68
|
"ts-exhaustive-check": "^1.0.0"
|
|
71
69
|
},
|
|
@@ -25,8 +25,8 @@ export type ViewerProps = Omit<ViewerOptions<React.ReactNode>, "hoveredIds" | "o
|
|
|
25
25
|
|
|
26
26
|
export function Viewer(props: ViewerProps): React.JSX.Element {
|
|
27
27
|
const { scene, createGroupId, useAlphaTest, selectedIds, hoveredIdsExternal, onClickGroup, view, bufferZones, fitPadding, controls } = props;
|
|
28
|
-
const { lights, environment, environmentIntensity, quality, showDimensions, popovers, getTooltips } = props;
|
|
29
|
-
const { onHoverGroup, onContextMenuGroup, onClickRelation, sceneFallback, className, style } = props;
|
|
28
|
+
const { lights, environment, environmentIntensity, groundShadow, quality, showDimensions, popovers, getTooltips } = props;
|
|
29
|
+
const { onHoverGroup, onContextMenuGroup, onClickRelation, onPointerMissed, sceneFallback, className, style } = props;
|
|
30
30
|
// Equal by value, so inline objects don't refit the camera, recreate the gizmo or rebuild the scene
|
|
31
31
|
const camera = useStableValue(props.camera);
|
|
32
32
|
const gizmo = useStableValue(props.controlsHelper);
|
|
@@ -58,6 +58,7 @@ export function Viewer(props: ViewerProps): React.JSX.Element {
|
|
|
58
58
|
useEffect(() => updateViewer(viewer.current!, { lights, environment, environmentIntensity }), [lights, environment, environmentIntensity]);
|
|
59
59
|
useEffect(() => updateViewer(viewer.current!, { quality }), [quality]);
|
|
60
60
|
useEffect(() => updateViewer(viewer.current!, { showDimensions }), [showDimensions]);
|
|
61
|
+
useEffect(() => updateViewer(viewer.current!, { groundShadow }), [groundShadow]);
|
|
61
62
|
useEffect(
|
|
62
63
|
() =>
|
|
63
64
|
updateViewer(viewer.current!, {
|
|
@@ -67,8 +68,8 @@ export function Viewer(props: ViewerProps): React.JSX.Element {
|
|
|
67
68
|
[popovers, getTooltips]
|
|
68
69
|
);
|
|
69
70
|
useEffect(
|
|
70
|
-
() => updateViewer(viewer.current!, { onHoverGroup, onContextMenuGroup, onClickRelation }),
|
|
71
|
-
[onHoverGroup, onContextMenuGroup, onClickRelation]
|
|
71
|
+
() => updateViewer(viewer.current!, { onHoverGroup, onContextMenuGroup, onClickRelation, onPointerMissed }),
|
|
72
|
+
[onHoverGroup, onContextMenuGroup, onClickRelation, onPointerMissed]
|
|
72
73
|
);
|
|
73
74
|
|
|
74
75
|
return (
|
|
@@ -97,6 +97,11 @@ describe("getItemColor", () => {
|
|
|
97
97
|
);
|
|
98
98
|
});
|
|
99
99
|
|
|
100
|
+
it("outlines relations in black, also while hovered", () => {
|
|
101
|
+
expect(paint(solid({ normal: "rgb(0,148,91)" }, "outline"), relation)).toEqual(rgba("rgb(0, 0, 0)"));
|
|
102
|
+
expect(paint(solid({ normal: "rgb(0,148,91)" }, "outline"), relation, { hoveredTarget: 0 })).toEqual(rgba("rgb(0, 0, 0)"));
|
|
103
|
+
});
|
|
104
|
+
|
|
100
105
|
it("keeps lines in their material's color", () => {
|
|
101
106
|
expect(paint(item(line(vec3Zero, vec3(1, 0, 0), 1, { normal: red }), "group", "line"), group, { selectedIds: { fan: true } })).toEqual(rgba(red));
|
|
102
107
|
});
|
|
@@ -43,6 +43,8 @@ export const SELECTED = 2;
|
|
|
43
43
|
const disabledOpacity = 0.125;
|
|
44
44
|
const selectColor = "rgb(14,82,184)";
|
|
45
45
|
const textSelectColor = "rgb(0, 26, 65)";
|
|
46
|
+
/** Of the inverted hull around a relation's boxes */
|
|
47
|
+
const outlineColor = "rgb(0, 0, 0)";
|
|
46
48
|
const stateMaterials: Record<MaterialState, Material> = {
|
|
47
49
|
Accept: { normal: "rgb(0,148,91)", metalness: 0.5, roughness: 0.5 },
|
|
48
50
|
Error: { normal: "#b82f3a", metalness: 0.5, roughness: 0.5 },
|
|
@@ -103,8 +105,9 @@ export function getItemColor(item: Item, { materialState, disabled }: TargetStat
|
|
|
103
105
|
const opacity = material.opacity ?? 1;
|
|
104
106
|
switch (item.style) {
|
|
105
107
|
case "relation":
|
|
106
|
-
case "outline":
|
|
107
108
|
return setColor(out, material.normal, hovered, 1);
|
|
109
|
+
case "outline":
|
|
110
|
+
return setColor(out, outlineColor, false, 1);
|
|
108
111
|
case "dimension":
|
|
109
112
|
return setColor(out, selected ? selectColor : material.normal, false, opacity);
|
|
110
113
|
default: {
|
|
@@ -243,9 +243,12 @@ function createPart(
|
|
|
243
243
|
const g = first.mesh.geometry;
|
|
244
244
|
if (g.type === "Image" && options.textures) {
|
|
245
245
|
const url = getImageUrl(g.image, targetStates[first.target]!.materialState, options.materialStateImages);
|
|
246
|
-
loadTexture(options.textures, url)
|
|
247
|
-
|
|
248
|
-
.
|
|
246
|
+
const entry = loadTexture(options.textures, url);
|
|
247
|
+
if (entry.texture) {
|
|
248
|
+
showImage(part.object, entry.texture, state, undefined);
|
|
249
|
+
} else {
|
|
250
|
+
entry.loading.then((texture) => showImage(part.object, texture, state, options.onTextureLoaded)).catch(() => undefined);
|
|
251
|
+
}
|
|
249
252
|
}
|
|
250
253
|
return part;
|
|
251
254
|
}
|
|
@@ -34,19 +34,25 @@ export function getImageUrl(image: Image, materialState: MaterialState | undefin
|
|
|
34
34
|
return errorUrl ?? (image.type === "AbstractImage" ? `data:image/svg+xml,${createSVG(image.image)}` : image.url);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
/**
|
|
38
|
-
export type
|
|
37
|
+
/** A url's texture, loaded once; `texture` is set once it's loaded, so a rebuild shows it right away instead of a frame later */
|
|
38
|
+
export type TextureEntry = { loading: Promise<Texture | undefined>; texture?: Texture };
|
|
39
|
+
export type TextureCache = Map<string, TextureEntry>;
|
|
39
40
|
|
|
40
|
-
export function loadTexture(cache: TextureCache, url: string):
|
|
41
|
+
export function loadTexture(cache: TextureCache, url: string): TextureEntry {
|
|
42
|
+
const cached = cache.get(url);
|
|
43
|
+
if (cached) {
|
|
44
|
+
return cached;
|
|
45
|
+
}
|
|
41
46
|
const svg = url.startsWith("data:image/svg+xml") || url.endsWith(".svg") || url.includes(".svg?");
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
47
|
+
const entry: TextureEntry = { loading: svg ? loadSvg(url) : loader.loadAsync(url).catch(() => undefined) };
|
|
48
|
+
entry.loading = entry.loading.then((t) => (entry.texture = t && applyFilters(t)));
|
|
49
|
+
cache.set(url, entry);
|
|
50
|
+
return entry;
|
|
45
51
|
}
|
|
46
52
|
|
|
47
53
|
export function disposeTextures(cache: TextureCache): void {
|
|
48
|
-
cache.forEach((
|
|
49
|
-
loading.then((texture) => texture?.dispose()).catch(() => undefined);
|
|
54
|
+
cache.forEach((entry) => {
|
|
55
|
+
entry.loading.then((texture) => texture?.dispose()).catch(() => undefined);
|
|
50
56
|
});
|
|
51
57
|
cache.clear();
|
|
52
58
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
2
|
import type { Quality, TierGovernor } from "./quality.js";
|
|
3
|
-
import { recordFrame } from "./quality.js";
|
|
3
|
+
import { getPixelRatio, recordFrame } from "./quality.js";
|
|
4
4
|
|
|
5
|
-
const governor = (quality: Quality): TierGovernor => ({ quality, tier: quality === "auto" ? "
|
|
5
|
+
const governor = (quality: Quality): TierGovernor => ({ quality, tier: quality === "auto" ? "high" : quality, sum: 0, count: 0 });
|
|
6
6
|
const record = (g: TierGovernor, intervals: ReadonlyArray<number>): ReadonlyArray<boolean> => intervals.map((ms) => recordFrame(g, ms));
|
|
7
7
|
|
|
8
8
|
describe("recordFrame", () => {
|
|
@@ -19,12 +19,19 @@ describe("recordFrame", () => {
|
|
|
19
19
|
expect(g.tier).toBe("low");
|
|
20
20
|
});
|
|
21
21
|
|
|
22
|
-
it("keeps auto at
|
|
22
|
+
it("keeps auto at high at 60 frames per second, ignoring the pauses between moves", () => {
|
|
23
23
|
const g = governor("auto");
|
|
24
24
|
record(
|
|
25
25
|
g,
|
|
26
26
|
Array.from({ length: 100 }, (_, i) => (i % 10 === 0 ? 2000 : 16.7))
|
|
27
27
|
);
|
|
28
|
-
expect(g.tier).toBe("
|
|
28
|
+
expect(g.tier).toBe("high");
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
describe("getPixelRatio", () => {
|
|
33
|
+
it("caps the screen's pixel ratio by the tier", () => {
|
|
34
|
+
expect([getPixelRatio("low", 3), getPixelRatio("medium", 3), getPixelRatio("high", 3)]).toEqual([1, 1.5, 2]);
|
|
35
|
+
expect(getPixelRatio("high", 1)).toBe(1);
|
|
29
36
|
});
|
|
30
37
|
});
|
|
@@ -1,35 +1,19 @@
|
|
|
1
|
-
import { N8AOPass } from "n8ao";
|
|
2
|
-
import type { OrthographicCamera, PerspectiveCamera, Scene, WebGLRenderer } from "three";
|
|
3
|
-
import { EffectComposer } from "three/addons/postprocessing/EffectComposer.js";
|
|
4
|
-
import { OutputPass } from "three/addons/postprocessing/OutputPass.js";
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
|
-
* Quality tiers
|
|
8
|
-
*
|
|
9
|
-
* is how progressive model viewers such as Sketchfab's stay fast; the AO is N8AO, configured as the r3f renderer's
|
|
2
|
+
* Quality tiers by resolution, the cheapest lever on a weak GPU: low renders a pixel per CSS pixel, medium up to 1.5 and high up to 2 on high-density
|
|
3
|
+
* screens. `auto` starts high and drops to low for good once moving frames are slow, as model viewers lower their resolution under load
|
|
10
4
|
*/
|
|
11
5
|
|
|
12
6
|
export type Tier = "low" | "medium" | "high";
|
|
13
7
|
export type Quality = Tier | "auto";
|
|
14
8
|
|
|
15
|
-
/** `auto` starts at
|
|
9
|
+
/** `auto` starts at high, and drops to low for good once moving frames average slower than 40 per second */
|
|
16
10
|
export type TierGovernor = { readonly quality: Quality; tier: Tier; sum: number; count: number };
|
|
17
11
|
|
|
18
|
-
export type RenderPath = {
|
|
19
|
-
readonly tier: Tier;
|
|
20
|
-
/** With ambient occlusion, faded in by its intensity over the first frames at rest */
|
|
21
|
-
readonly composer: EffectComposer | undefined;
|
|
22
|
-
readonly ao: { readonly configuration: { intensity: number } } | undefined;
|
|
23
|
-
readonly fade: { frame: number };
|
|
24
|
-
};
|
|
25
|
-
|
|
26
12
|
const pixelRatioCaps: Record<Tier, number> = { low: 1, medium: 1.5, high: 2 };
|
|
27
13
|
const windowSize = 30;
|
|
28
14
|
const slowFrameMs = 25;
|
|
29
15
|
/** Longer intervals are pauses between moves, not slow frames */
|
|
30
16
|
const pauseMs = 250;
|
|
31
|
-
const fadeFrames = 6;
|
|
32
|
-
const intensity = 2;
|
|
33
17
|
|
|
34
18
|
/** Records the time between two frames while the camera moves; true when that dropped the tier */
|
|
35
19
|
export function recordFrame(governor: TierGovernor, intervalMs: number): boolean {
|
|
@@ -46,50 +30,6 @@ export function recordFrame(governor: TierGovernor, intervalMs: number): boolean
|
|
|
46
30
|
return slow;
|
|
47
31
|
}
|
|
48
32
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
renderer.setPixelRatio(Math.min(window.devicePixelRatio, pixelRatioCaps[tier]));
|
|
52
|
-
if (tier === "low") {
|
|
53
|
-
return { tier, composer: undefined, ao: undefined, fade: { frame: 0 } };
|
|
54
|
-
}
|
|
55
|
-
const composer = new EffectComposer(renderer);
|
|
56
|
-
const ao = new N8AOPass(scene, camera);
|
|
57
|
-
Object.assign(ao.configuration, {
|
|
58
|
-
aoRadius: 40,
|
|
59
|
-
distanceFalloff: 0.2,
|
|
60
|
-
screenSpaceRadius: true,
|
|
61
|
-
halfRes: true,
|
|
62
|
-
denoiseSamples: 4,
|
|
63
|
-
gammaCorrection: false,
|
|
64
|
-
});
|
|
65
|
-
// Multisampled, as SMAA, which N8AO suggests, would lose the antialiased alpha at edges over the transparent background
|
|
66
|
-
ao.beautyRenderTarget.samples = 4;
|
|
67
|
-
composer.addPass(ao);
|
|
68
|
-
// Tone mapping and sRGB, which rendering to the screen otherwise does
|
|
69
|
-
composer.addPass(new OutputPass());
|
|
70
|
-
return { tier, composer, ao, fade: { frame: 0 } };
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/** Renders a frame; true while the frame at rest needs more frames to fade its ambient occlusion in */
|
|
74
|
-
export function renderPath(
|
|
75
|
-
path: RenderPath,
|
|
76
|
-
renderer: WebGLRenderer,
|
|
77
|
-
scene: Scene,
|
|
78
|
-
camera: PerspectiveCamera | OrthographicCamera,
|
|
79
|
-
moving: boolean
|
|
80
|
-
): boolean {
|
|
81
|
-
if (!path.composer || !path.ao || (moving && path.tier === "medium")) {
|
|
82
|
-
path.fade.frame = 0;
|
|
83
|
-
renderer.render(scene, camera);
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
path.fade.frame = path.tier === "high" ? fadeFrames : Math.min(fadeFrames, path.fade.frame + 1);
|
|
87
|
-
path.ao.configuration.intensity = (intensity * path.fade.frame) / fadeFrames;
|
|
88
|
-
path.composer.render();
|
|
89
|
-
return path.fade.frame < fadeFrames;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export function disposeRenderPath(path: RenderPath): void {
|
|
93
|
-
path.composer?.passes.forEach((p) => p.dispose());
|
|
94
|
-
path.composer?.dispose();
|
|
33
|
+
export function getPixelRatio(tier: Tier, devicePixelRatio: number): number {
|
|
34
|
+
return Math.min(devicePixelRatio, pixelRatioCaps[tier]);
|
|
95
35
|
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Box3,
|
|
3
|
+
type Scene,
|
|
4
|
+
Matrix4,
|
|
5
|
+
Mesh,
|
|
6
|
+
MeshBasicMaterial,
|
|
7
|
+
MeshDepthMaterial,
|
|
8
|
+
OrthographicCamera,
|
|
9
|
+
PlaneGeometry,
|
|
10
|
+
ShaderMaterial,
|
|
11
|
+
UniformsUtils,
|
|
12
|
+
Vector3,
|
|
13
|
+
type WebGLRenderer,
|
|
14
|
+
WebGLRenderTarget,
|
|
15
|
+
} from "three";
|
|
16
|
+
import { FullScreenQuad } from "three/addons/postprocessing/Pass.js";
|
|
17
|
+
import { HorizontalBlurShader } from "three/addons/shaders/HorizontalBlurShader.js";
|
|
18
|
+
import { VerticalBlurShader } from "three/addons/shaders/VerticalBlurShader.js";
|
|
19
|
+
import type { BuiltScene } from "../build/build.js";
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* A soft shadow on the ground the scene stands on, rendered once per build: the solids seen from below by their depth, darker the closer to the
|
|
23
|
+
* ground, blurred into a texture on a plane, so a frame costs one textured quad. three.js's webgl_shadow_contact example, rendered once as drei's
|
|
24
|
+
* ContactShadows with `frames={1}`
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
export type GroundShadow = { readonly mesh: Mesh<PlaneGeometry, MeshBasicMaterial>; readonly target: WebGLRenderTarget };
|
|
28
|
+
|
|
29
|
+
/** The layer the solids are drawn on for the shadow, so text, lines, images and dimensions don't cast one */
|
|
30
|
+
const shadowLayer = 1;
|
|
31
|
+
/** Of the texture's longer side */
|
|
32
|
+
const resolution = 512;
|
|
33
|
+
/** How far behind (-z) a part's shadow falls per unit of its height, as from a light in front and above */
|
|
34
|
+
const lean = 0.5;
|
|
35
|
+
/** The blur's reach, of the solids' height */
|
|
36
|
+
const softness = 0.15;
|
|
37
|
+
const opacity = 0.8;
|
|
38
|
+
|
|
39
|
+
/** Undefined for a scene without solids; renders with `renderer`, and leaves its render target as it was */
|
|
40
|
+
export function createGroundShadow(renderer: WebGLRenderer, scene: Scene, built: BuiltScene): GroundShadow | undefined {
|
|
41
|
+
const bounds = new Box3();
|
|
42
|
+
built.parts.forEach((part) => {
|
|
43
|
+
if (part.kind === "solid" && part.object.parent !== built.dimensions && part.object.boundingBox) {
|
|
44
|
+
part.object.layers.enable(shadowLayer);
|
|
45
|
+
bounds.union(part.object.boundingBox);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
if (bounds.isEmpty()) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
const size = bounds.getSize(new Vector3());
|
|
52
|
+
// The plane reaches past the solids by twice the blur's reach, and behind them as far as their tops' shadows fall
|
|
53
|
+
const [reach, behind] = [softness * size.y, lean * size.y];
|
|
54
|
+
const [width, depth] = [size.x + reach * 4, size.z + reach * 4 + behind];
|
|
55
|
+
const center = new Vector3((bounds.min.x + bounds.max.x) / 2, bounds.min.y, (bounds.min.z + bounds.max.z - behind) / 2);
|
|
56
|
+
const [texelsX, texelsZ] =
|
|
57
|
+
width > depth ? [resolution, Math.ceil((resolution * depth) / width)] : [Math.ceil((resolution * width) / depth), resolution];
|
|
58
|
+
const [target, blurred] = [new WebGLRenderTarget(texelsX, texelsZ), new WebGLRenderTarget(texelsX, texelsZ)];
|
|
59
|
+
|
|
60
|
+
// Looks up from the ground, seeing as far as the solids are high; the shear moves what's at height h back by lean·h. Up is +z on its screen, and
|
|
61
|
+
// a height h is -h in its view space
|
|
62
|
+
const camera = new OrthographicCamera(-width / 2, width / 2, depth / 2, -depth / 2, 0, size.y);
|
|
63
|
+
camera.position.copy(center);
|
|
64
|
+
camera.rotation.x = Math.PI / 2;
|
|
65
|
+
camera.layers.set(shadowLayer);
|
|
66
|
+
camera.updateMatrixWorld();
|
|
67
|
+
camera.projectionMatrix.multiply(new Matrix4().set(1, 0, 0, 0, 0, 1, lean, 0, 0, 0, 1, 0, 0, 0, 0, 1));
|
|
68
|
+
// Depth tested, so at each point the surface closest to the ground darkens it, not the last one drawn
|
|
69
|
+
const darkness = new MeshDepthMaterial();
|
|
70
|
+
darkness.onBeforeCompile = (shader) => {
|
|
71
|
+
shader.fragmentShader = shader.fragmentShader.replace(
|
|
72
|
+
"gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );",
|
|
73
|
+
"gl_FragColor = vec4( vec3( 0.0 ), 1.0 - fragCoordZ );"
|
|
74
|
+
);
|
|
75
|
+
};
|
|
76
|
+
const previous = renderer.getRenderTarget();
|
|
77
|
+
Object.assign(scene, { overrideMaterial: darkness });
|
|
78
|
+
renderer.setRenderTarget(target);
|
|
79
|
+
renderer.render(scene, camera);
|
|
80
|
+
Object.assign(scene, { overrideMaterial: null });
|
|
81
|
+
|
|
82
|
+
const horizontal = new ShaderMaterial({ ...HorizontalBlurShader, uniforms: UniformsUtils.clone(HorizontalBlurShader.uniforms) });
|
|
83
|
+
const vertical = new ShaderMaterial({ ...VerticalBlurShader, uniforms: UniformsUtils.clone(VerticalBlurShader.uniforms) });
|
|
84
|
+
const quad = new FullScreenQuad(horizontal);
|
|
85
|
+
// The blur shaders reach 4 steps; three passes of shrinking steps blend into one smooth falloff
|
|
86
|
+
const step = (reach * texelsX) / width / 4;
|
|
87
|
+
[step, step / 2, step / 4].forEach((amount) => {
|
|
88
|
+
Object.assign(horizontal.uniforms, { tDiffuse: { value: target.texture }, h: { value: amount / texelsX } });
|
|
89
|
+
quad.material = horizontal;
|
|
90
|
+
renderer.setRenderTarget(blurred);
|
|
91
|
+
quad.render(renderer);
|
|
92
|
+
Object.assign(vertical.uniforms, { tDiffuse: { value: blurred.texture }, v: { value: amount / texelsZ } });
|
|
93
|
+
quad.material = vertical;
|
|
94
|
+
renderer.setRenderTarget(target);
|
|
95
|
+
quad.render(renderer);
|
|
96
|
+
});
|
|
97
|
+
renderer.setRenderTarget(previous);
|
|
98
|
+
[blurred, darkness, horizontal, vertical, quad].forEach((d) => d.dispose());
|
|
99
|
+
|
|
100
|
+
// The plane faces down as the camera looked up, so its texture lines up, and is mirrored to face up
|
|
101
|
+
const mesh = new Mesh(
|
|
102
|
+
new PlaneGeometry(width, depth).rotateX(Math.PI / 2),
|
|
103
|
+
new MeshBasicMaterial({ map: target.texture, transparent: true, depthWrite: false, opacity })
|
|
104
|
+
);
|
|
105
|
+
mesh.position.copy(center);
|
|
106
|
+
mesh.scale.y = -1;
|
|
107
|
+
scene.add(mesh);
|
|
108
|
+
return { mesh, target };
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function disposeGroundShadow(shadow: GroundShadow): void {
|
|
112
|
+
shadow.mesh.removeFromParent();
|
|
113
|
+
shadow.mesh.geometry.dispose();
|
|
114
|
+
shadow.mesh.material.dispose();
|
|
115
|
+
shadow.target.dispose();
|
|
116
|
+
}
|