@inweb/viewer-three 25.10.0 → 25.11.0

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.
@@ -140,12 +140,18 @@ export declare class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMa
140
140
  withCredentials?: boolean;
141
141
  }): Promise<this>;
142
142
  clear(): this;
143
+ getSelected(): string[];
144
+ setSelected(handles?: string[]): void;
145
+ clearSelected(): void;
146
+ hideSelected(): void;
147
+ isolateSelected(): void;
148
+ showAll(): void;
149
+ explode(index?: number): void;
150
+ collect(): void;
143
151
  activeDragger(): IDragger | null;
144
152
  setActiveDragger(name?: string): IDragger | null;
145
153
  resetActiveDragger(): void;
146
154
  is3D(): boolean;
147
- getSelected(): string[];
148
- setSelected(handles?: string[]): void;
149
155
  executeCommand(id: string, ...args: any[]): any;
150
156
  getComponent(type: any): any;
151
157
  drawViewpoint(viewpoint: IViewpoint): void;
@@ -1,5 +1,6 @@
1
1
  import "./ApplyModelTransform";
2
2
  import "./ClearMarkup";
3
+ import "./ClearSelected";
3
4
  import "./ClearSlices";
4
5
  import "./CreatePreview";
5
6
  import "./Explode";
@@ -16,7 +17,6 @@ import "./SetDefaultViewPosition";
16
17
  import "./SetMarkupColor";
17
18
  import "./SetSelected";
18
19
  import "./ShowAll";
19
- import "./Unselect";
20
20
  import "./ZoomToExtents";
21
21
  import "./ZoomToObjects";
22
22
  import "./ZoomToSelected";
@@ -1,6 +1,6 @@
1
- import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
2
1
  import type { IDisposable } from "../IDisposable";
3
2
  import type { Viewer } from "../Viewer";
3
+ import { OrbitControls } from "../controls/OrbitControls.js";
4
4
  export declare class OrbitDragger implements IDisposable {
5
5
  protected viewer: Viewer;
6
6
  protected orbit: OrbitControls;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@inweb/viewer-three",
3
- "version": "25.10.0",
4
- "description": "JavaScript library for rendering CAD and BIM files in a browser using Three.js",
3
+ "version": "25.11.0",
4
+ "description": "3D viewer powered by Three.js",
5
5
  "homepage": "https://cloud.opendesign.com/docs/index.html",
6
6
  "license": "SEE LICENSE IN LICENSE",
7
7
  "author": "Open Design Alliance",
@@ -28,9 +28,9 @@
28
28
  "docs": "typedoc"
29
29
  },
30
30
  "dependencies": {
31
- "@inweb/client": "~25.10.0",
32
- "@inweb/eventemitter2": "~25.10.0",
33
- "@inweb/viewer-core": "~25.10.0"
31
+ "@inweb/client": "~25.11.0",
32
+ "@inweb/eventemitter2": "~25.11.0",
33
+ "@inweb/viewer-core": "~25.11.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/three": "^0.152.1",
@@ -217,23 +217,21 @@ export class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMap & Opti
217
217
  if (!this.renderNeeded) return;
218
218
  if (!this.renderer) return;
219
219
 
220
- const clippingPlanes = this.renderer.clippingPlanes;
220
+ this.renderNeeded = false;
221
221
 
222
222
  this.renderer.setViewport(0, 0, this.canvas.offsetWidth, this.canvas.offsetHeight);
223
+ this.renderer.autoClear = true;
223
224
  this.renderer.render(this.scene, this.camera);
224
225
 
226
+ const clippingPlanes = this.renderer.clippingPlanes;
225
227
  this.renderer.clippingPlanes = [];
226
228
  this.renderer.autoClear = false;
227
229
  this.renderer.render(this.helpers, this.camera);
230
+ this.renderer.clippingPlanes = clippingPlanes;
228
231
 
229
232
  const deltaTime = (time - this.renderTime) / 1000;
230
233
  this.renderTime = time;
231
234
  this.emitEvent({ type: "render", time, deltaTime });
232
-
233
- this.renderer.autoClear = true;
234
- this.renderer.clippingPlanes = clippingPlanes;
235
-
236
- this.renderNeeded = false;
237
235
  }
238
236
 
239
237
  public update(force = false): void {
@@ -471,6 +469,38 @@ export class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMap & Opti
471
469
  return this;
472
470
  }
473
471
 
472
+ getSelected(): string[] {
473
+ return this.executeCommand("getSelected");
474
+ }
475
+
476
+ setSelected(handles?: string[]): void {
477
+ this.executeCommand("setSelected", handles);
478
+ }
479
+
480
+ clearSelected(): void {
481
+ this.executeCommand("clearSelected");
482
+ }
483
+
484
+ hideSelected(): void {
485
+ this.executeCommand("hideSelected");
486
+ }
487
+
488
+ isolateSelected(): void {
489
+ this.executeCommand("isolateSelected");
490
+ }
491
+
492
+ showAll(): void {
493
+ this.executeCommand("showAll");
494
+ }
495
+
496
+ explode(index = 0): void {
497
+ this.executeCommand("explode", index);
498
+ }
499
+
500
+ collect(): void {
501
+ this.executeCommand("collect");
502
+ }
503
+
474
504
  activeDragger(): IDragger | null {
475
505
  return this._activeDragger;
476
506
  }
@@ -514,14 +544,6 @@ export class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMap & Opti
514
544
  return true;
515
545
  }
516
546
 
517
- getSelected(): string[] {
518
- return this.executeCommand("getSelected");
519
- }
520
-
521
- setSelected(handles?: string[]): void {
522
- this.executeCommand("setSelected", handles);
523
- }
524
-
525
547
  executeCommand(id: string, ...args: any[]): any {
526
548
  return commands("ThreeJS").executeCommand(id, this, ...args);
527
549
  }
@@ -25,13 +25,14 @@ import { commands } from "@inweb/viewer-core";
25
25
  import type { Viewer } from "../Viewer";
26
26
  import { SelectionComponent } from "../components/SelectionComponent";
27
27
 
28
- function unselect(viewer: Viewer): void {
28
+ function clearSelected(viewer: Viewer): void {
29
29
  const selection = new SelectionComponent(viewer);
30
30
  selection.clearSelection();
31
31
  selection.dispose();
32
32
 
33
33
  viewer.update();
34
- viewer.emit({ type: "select", data: undefined, handles: [] });
34
+ viewer.emitEvent({ type: "select", data: undefined, handles: [] });
35
35
  }
36
36
 
37
- commands("ThreeJS").registerCommand("unselect", unselect);
37
+ commands("ThreeJS").registerCommand("clearSelected", clearSelected);
38
+ commands("ThreeJS").registerCommandAlias("clearSelected", "unselect");
@@ -76,7 +76,7 @@ function explode(viewer: Viewer, index = 0): void {
76
76
  viewer.models.forEach((gltf) => explodeScene(gltf.scene, index));
77
77
 
78
78
  viewer.update();
79
- viewer.emit({ type: "explode", data: index });
79
+ viewer.emitEvent({ type: "explode", data: index });
80
80
  }
81
81
 
82
82
  commands("ThreeJS").registerCommand("explode", explode);
@@ -33,8 +33,8 @@ function hideSelected(viewer: Viewer): void {
33
33
  selection.dispose();
34
34
 
35
35
  viewer.update();
36
- viewer.emit({ type: "hide" });
37
- viewer.emit({ type: "select", data: undefined, handles: [] });
36
+ viewer.emitEvent({ type: "hide" });
37
+ viewer.emitEvent({ type: "select", data: undefined, handles: [] });
38
38
  }
39
39
 
40
40
  commands("ThreeJS").registerCommand("hideSelected", hideSelected);
@@ -44,7 +44,7 @@ function isolateSelected(viewer: Viewer): void {
44
44
  isolateObject(viewer.scene, 0);
45
45
 
46
46
  viewer.update();
47
- viewer.emit({ type: "isolate" });
47
+ viewer.emitEvent({ type: "isolate" });
48
48
  }
49
49
 
50
50
  commands("ThreeJS").registerCommand("isolateSelected", isolateSelected);
@@ -29,7 +29,7 @@ function resetView(viewer: Viewer): void {
29
29
  viewer.executeCommand("clearSlices");
30
30
  viewer.executeCommand("clearOverlay");
31
31
  viewer.executeCommand("setMarkupColor");
32
- viewer.executeCommand("unselect");
32
+ viewer.executeCommand("clearSelected");
33
33
  viewer.executeCommand("showAll");
34
34
  viewer.executeCommand("explode", 0);
35
35
  viewer.executeCommand("zoomToExtents", true);
@@ -38,7 +38,7 @@ function setSelected(viewer: Viewer, handles: string[] = []): void {
38
38
  selection.dispose();
39
39
 
40
40
  viewer.update();
41
- viewer.emit({ type: "select", data: undefined, handles });
41
+ viewer.emitEvent({ type: "select", data: undefined, handles });
42
42
  }
43
43
 
44
44
  commands("ThreeJS").registerCommand("setSelected", setSelected);
@@ -28,7 +28,7 @@ function showAll(viewer: Viewer): void {
28
28
  viewer.scene.traverse((object) => (object.visible = true));
29
29
 
30
30
  viewer.update();
31
- viewer.emit({ type: "showall" });
31
+ viewer.emitEvent({ type: "showall" });
32
32
  }
33
33
 
34
34
  commands("ThreeJS").registerCommand("showAll", showAll);
@@ -23,6 +23,7 @@
23
23
 
24
24
  import "./ApplyModelTransform";
25
25
  import "./ClearMarkup";
26
+ import "./ClearSelected";
26
27
  import "./ClearSlices";
27
28
  import "./CreatePreview";
28
29
  import "./Explode";
@@ -39,7 +40,6 @@ import "./SetDefaultViewPosition";
39
40
  import "./SetMarkupColor";
40
41
  import "./SetSelected";
41
42
  import "./ShowAll";
42
- import "./Unselect";
43
43
  import "./ZoomToExtents";
44
44
  import "./ZoomToObjects";
45
45
  import "./ZoomToSelected";