@inweb/viewer-visualize 25.12.1 → 26.1.1
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/viewer-visualize.js +4699 -4322
- package/dist/viewer-visualize.js.map +1 -1
- package/dist/viewer-visualize.min.js +1 -1
- package/dist/viewer-visualize.module.js +2914 -2735
- package/dist/viewer-visualize.module.js.map +1 -1
- package/lib/Viewer/Commands/ApplyModelTransform.d.ts +3 -0
- package/lib/Viewer/Commands/AutoTransformAllModelsToCentralPoint.d.ts +3 -1
- package/lib/Viewer/Commands/ClearMarkup.d.ts +2 -1
- package/lib/Viewer/Commands/ClearSelected.d.ts +2 -1
- package/lib/Viewer/Commands/ClearSlices.d.ts +2 -1
- package/lib/Viewer/Commands/CreatePreview.d.ts +2 -1
- package/lib/Viewer/Commands/Explode.d.ts +3 -1
- package/lib/Viewer/Commands/GetDefaultViewPositions.d.ts +2 -1
- package/lib/Viewer/Commands/GetModels.d.ts +2 -1
- package/lib/Viewer/Commands/GetSelected.d.ts +2 -1
- package/lib/Viewer/Commands/HideSelected.d.ts +2 -1
- package/lib/Viewer/Commands/IsolateSelected.d.ts +2 -1
- package/lib/Viewer/Commands/RegenerateAll.d.ts +2 -1
- package/lib/Viewer/Commands/ResetView.d.ts +2 -1
- package/lib/Viewer/Commands/SelectModel.d.ts +2 -1
- package/lib/Viewer/Commands/SetActiveDragger.d.ts +2 -1
- package/lib/Viewer/Commands/SetDefaultViewPosition.d.ts +2 -1
- package/lib/Viewer/Commands/SetMarkupColor.d.ts +2 -1
- package/lib/Viewer/Commands/SetSelected.d.ts +2 -1
- package/lib/Viewer/Commands/ShowAll.d.ts +2 -1
- package/lib/Viewer/Commands/ZoomToExtents.d.ts +2 -1
- package/lib/Viewer/Commands/ZoomToObjects.d.ts +2 -1
- package/lib/Viewer/Commands/ZoomToSelected.d.ts +2 -1
- package/lib/Viewer/Commands/index.d.ts +22 -23
- package/lib/Viewer/Components/GestureManagerComponent.d.ts +8 -0
- package/lib/Viewer/Components/RenderLoopComponent.d.ts +9 -0
- package/lib/Viewer/Components/ResizeCanvasComponent.d.ts +9 -0
- package/lib/Viewer/Components/ZoomWheelComponent.d.ts +8 -0
- package/lib/Viewer/Components/index.d.ts +40 -0
- package/lib/Viewer/Draggers/OdaWalkDragger.d.ts +3 -1
- package/lib/Viewer/Draggers/index.d.ts +40 -0
- package/lib/Viewer/Viewer.d.ts +7 -36
- package/lib/index.d.ts +3 -1
- package/package.json +5 -5
- package/src/Viewer/Commands/ApplyModelTransform.ts +1 -4
- package/src/Viewer/Commands/AutoTransformAllModelsToCentralPoint.ts +4 -5
- package/src/Viewer/Commands/ClearMarkup.ts +3 -3
- package/src/Viewer/Commands/ClearSelected.ts +1 -5
- package/src/Viewer/Commands/ClearSlices.ts +3 -2
- package/src/Viewer/Commands/CreatePreview.ts +1 -4
- package/src/Viewer/Commands/Explode.ts +4 -4
- package/src/Viewer/Commands/GetDefaultViewPositions.ts +1 -4
- package/src/Viewer/Commands/GetModels.ts +1 -4
- package/src/Viewer/Commands/GetSelected.ts +1 -4
- package/src/Viewer/Commands/HideSelected.ts +1 -4
- package/src/Viewer/Commands/IsolateSelected.ts +1 -4
- package/src/Viewer/Commands/RegenerateAll.ts +1 -4
- package/src/Viewer/Commands/ResetView.ts +1 -4
- package/src/Viewer/Commands/SelectModel.ts +1 -4
- package/src/Viewer/Commands/SetActiveDragger.ts +2 -3
- package/src/Viewer/Commands/SetDefaultViewPosition.ts +1 -14
- package/src/Viewer/Commands/SetMarkupColor.ts +3 -4
- package/src/Viewer/Commands/SetSelected.ts +1 -4
- package/src/Viewer/Commands/ShowAll.ts +1 -4
- package/src/Viewer/Commands/ZoomToExtents.ts +1 -5
- package/src/Viewer/Commands/ZoomToObjects.ts +1 -4
- package/src/Viewer/Commands/ZoomToSelected.ts +1 -4
- package/src/Viewer/Commands/index.ts +89 -23
- package/src/Viewer/Components/GestureManagerComponent.ts +42 -0
- package/src/Viewer/Components/RenderLoopComponent.ts +44 -0
- package/src/Viewer/Components/ResizeCanvasComponent.ts +44 -0
- package/src/Viewer/Components/ZoomWheelComponent.ts +43 -0
- package/src/Viewer/Components/index.ts +76 -0
- package/src/Viewer/Draggers/Actions/OrbitAction.ts +1 -1
- package/src/Viewer/Draggers/Actions/PanAction.ts +1 -1
- package/src/Viewer/Draggers/Actions/ZoomAction.ts +1 -1
- package/src/Viewer/Draggers/OdaWalkDragger.ts +10 -1
- package/src/Viewer/Draggers/index.ts +91 -0
- package/src/Viewer/Viewer.ts +47 -106
- package/src/index.ts +5 -2
|
@@ -37,7 +37,7 @@ export class ZoomAction {
|
|
|
37
37
|
viewer.zoomAt(zoomFactor, x, y);
|
|
38
38
|
|
|
39
39
|
this._subject.deviceAutoRegeneration();
|
|
40
|
-
this._subject.activeDragger()?.updatePreview();
|
|
40
|
+
this._subject.activeDragger()?.updatePreview?.();
|
|
41
41
|
this._subject.emitEvent({
|
|
42
42
|
type: "zoomat",
|
|
43
43
|
data: zoomFactor,
|
|
@@ -45,6 +45,7 @@ export class OdaWalkDragger extends OdBaseDragger {
|
|
|
45
45
|
protected animationId: any;
|
|
46
46
|
protected deltaAngle: number;
|
|
47
47
|
protected enableZoomWheelPreviousValue: boolean;
|
|
48
|
+
protected dragPosition: Point2d;
|
|
48
49
|
|
|
49
50
|
constructor(subject: Viewer) {
|
|
50
51
|
super(subject);
|
|
@@ -210,8 +211,16 @@ export class OdaWalkDragger extends OdBaseDragger {
|
|
|
210
211
|
this.lastFrameTS = timestamp;
|
|
211
212
|
}
|
|
212
213
|
|
|
213
|
-
override
|
|
214
|
+
override start(x: number, y: number): void {
|
|
215
|
+
this.dragPosition = { x, y };
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
override drag(x: number, y: number) {
|
|
214
219
|
if (this.cameraId && this.isDragging) {
|
|
220
|
+
const dltX = x - this.dragPosition.x;
|
|
221
|
+
const dltY = y - this.dragPosition.y;
|
|
222
|
+
this.dragPosition = { x, y };
|
|
223
|
+
|
|
215
224
|
if (dltX !== 0.0) this.turnLeft(-dltX * this.deltaAngle);
|
|
216
225
|
if (dltY !== 0.0) this.cameraWalker.turnDown(dltY * this.deltaAngle);
|
|
217
226
|
this.subject.update();
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
|
|
3
|
+
// All rights reserved.
|
|
4
|
+
//
|
|
5
|
+
// This software and its documentation and related materials are owned by
|
|
6
|
+
// the Alliance. The software may only be incorporated into application
|
|
7
|
+
// programs owned by members of the Alliance, subject to a signed
|
|
8
|
+
// Membership Agreement and Supplemental Software License Agreement with the
|
|
9
|
+
// Alliance. The structure and organization of this software are the valuable
|
|
10
|
+
// trade secrets of the Alliance and its suppliers. The software is also
|
|
11
|
+
// protected by copyright law and international treaty provisions. Application
|
|
12
|
+
// programs incorporating this software must include the following statement
|
|
13
|
+
// with their copyright notices:
|
|
14
|
+
//
|
|
15
|
+
// This application incorporates Open Design Alliance software pursuant to a
|
|
16
|
+
// license agreement with Open Design Alliance.
|
|
17
|
+
// Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
|
|
18
|
+
// All rights reserved.
|
|
19
|
+
//
|
|
20
|
+
// By use of this software, its documentation or related materials, you
|
|
21
|
+
// acknowledge and accept the above terms.
|
|
22
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
23
|
+
|
|
24
|
+
import { IDraggersRegistry, draggersRegistry } from "@inweb/viewer-core";
|
|
25
|
+
|
|
26
|
+
import { MeasureLineDragger } from "./MeasureLineDragger";
|
|
27
|
+
import { OdaWalkDragger } from "./OdaWalkDragger";
|
|
28
|
+
import { OdCuttingPlaneXAxisDragger } from "./OdCuttingPlaneXAxisDragger";
|
|
29
|
+
import { OdCuttingPlaneYAxisDragger } from "./OdCuttingPlaneYAxisDragger";
|
|
30
|
+
import { OdCuttingPlaneZAxisDragger } from "./OdCuttingPlaneZAxisDragger";
|
|
31
|
+
import { OdOrbitDragger } from "./OdOrbitDragger";
|
|
32
|
+
import { OdPanDragger } from "./OdPanDragger";
|
|
33
|
+
import { OdZoomDragger } from "./OdZoomDragger";
|
|
34
|
+
import { OdZoomWheelDragger } from "./OdZoomWheelDragger";
|
|
35
|
+
import { OdZoomWindowDragger } from "./OdZoomWindowDragger";
|
|
36
|
+
import { OrbitAroundBuildingDragger } from "./OrbitAroundBuildingDragger";
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* A draggers registry. Use this registry to register custom draggers.
|
|
40
|
+
*
|
|
41
|
+
* To implement custom dragger:
|
|
42
|
+
*
|
|
43
|
+
* 1. Define a dragger class implements {@link IDragger}.
|
|
44
|
+
* 2. Define a constructor with a `viewer` parameter and add mouse event listeners for the specified viewer.
|
|
45
|
+
* 3. Define the dragger logic in the event listeners. For example, listen for the `mousemove`
|
|
46
|
+
* event and zoom in/out when the left mouse button is pressed.
|
|
47
|
+
* 4. Override {@link IDragger.dispose} and remove mouse event listeners from the viewer.
|
|
48
|
+
* 5. Register dragger provider in the draggers registry by calling the {@link draggers.registerDragger}.
|
|
49
|
+
*
|
|
50
|
+
* @example <caption>Implementing a custom dragger.</caption>
|
|
51
|
+
* import { IDragger, draggers, Viewer } from "@inweb/viewer-visualize";
|
|
52
|
+
*
|
|
53
|
+
* class MyDragger implements IDragger {
|
|
54
|
+
* protected viewer: Viewer;
|
|
55
|
+
*
|
|
56
|
+
* constructor(viewer: Viewer) {
|
|
57
|
+
* this.viewer = viewer;
|
|
58
|
+
* this.viewer.addEventListener("pointermove", this.onPointerMove);
|
|
59
|
+
* }
|
|
60
|
+
*
|
|
61
|
+
* override dispose() {
|
|
62
|
+
* this.viewer.removeEventListener("pointermove", this.onPointerMove);
|
|
63
|
+
* }
|
|
64
|
+
*
|
|
65
|
+
* onPointerMove = (event: PointerEvent) => {
|
|
66
|
+
* // place custom logic here
|
|
67
|
+
* };
|
|
68
|
+
* }
|
|
69
|
+
*
|
|
70
|
+
* draggers.registerDragger("MyDragger", (viewer): IDragger => new MyDragger(viewer));
|
|
71
|
+
*
|
|
72
|
+
* @example <caption>Activating a custom dragger.</caption>
|
|
73
|
+
* viewer.setActiveDragger("MyDragger");
|
|
74
|
+
*/
|
|
75
|
+
const draggers: IDraggersRegistry = draggersRegistry("visualizejs");
|
|
76
|
+
|
|
77
|
+
// build-in draggers
|
|
78
|
+
|
|
79
|
+
draggers.registerDragger("Pan", (viewer) => new OdPanDragger(viewer));
|
|
80
|
+
draggers.registerDragger("Orbit", (viewer) => new OdOrbitDragger(viewer));
|
|
81
|
+
draggers.registerDragger("Zoom", (viewer) => new OdZoomDragger(viewer));
|
|
82
|
+
draggers.registerDragger("ZoomWindow", (viewer) => new OdZoomWindowDragger(viewer));
|
|
83
|
+
draggers.registerDragger("ZoomWheel", (viewer) => new OdZoomWheelDragger(viewer));
|
|
84
|
+
draggers.registerDragger("OrbitAroundBuilding", (viewer) => new OrbitAroundBuildingDragger(viewer));
|
|
85
|
+
draggers.registerDragger("MeasureLine", (viewer) => new MeasureLineDragger(viewer));
|
|
86
|
+
draggers.registerDragger("CuttingPlaneXAxis", (viewer) => new OdCuttingPlaneXAxisDragger(viewer));
|
|
87
|
+
draggers.registerDragger("CuttingPlaneYAxis", (viewer) => new OdCuttingPlaneYAxisDragger(viewer));
|
|
88
|
+
draggers.registerDragger("CuttingPlaneZAxis", (viewer) => new OdCuttingPlaneZAxisDragger(viewer));
|
|
89
|
+
draggers.registerDragger("Walk", (viewer) => new OdaWalkDragger(viewer));
|
|
90
|
+
|
|
91
|
+
export { draggers };
|
package/src/Viewer/Viewer.ts
CHANGED
|
@@ -26,10 +26,10 @@ import { Assembly, Client, File, Model } from "@inweb/client";
|
|
|
26
26
|
import {
|
|
27
27
|
CANVAS_EVENTS,
|
|
28
28
|
CanvasEventMap,
|
|
29
|
-
commands,
|
|
30
29
|
Dragger,
|
|
31
30
|
IClippingPlane,
|
|
32
31
|
IComponent,
|
|
32
|
+
IEntity,
|
|
33
33
|
IDragger,
|
|
34
34
|
IOrthogonalCamera,
|
|
35
35
|
IOptions,
|
|
@@ -42,18 +42,9 @@ import {
|
|
|
42
42
|
} from "@inweb/viewer-core";
|
|
43
43
|
import { IMarkup, IWorldTransform } from "@inweb/markup";
|
|
44
44
|
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
47
|
-
import {
|
|
48
|
-
import { OdCuttingPlaneYAxisDragger } from "./Draggers/OdCuttingPlaneYAxisDragger";
|
|
49
|
-
import { OdCuttingPlaneZAxisDragger } from "./Draggers/OdCuttingPlaneZAxisDragger";
|
|
50
|
-
import { OdOrbitDragger } from "./Draggers/OdOrbitDragger";
|
|
51
|
-
import { OdPanDragger } from "./Draggers/OdPanDragger";
|
|
52
|
-
import { OdZoomDragger } from "./Draggers/OdZoomDragger";
|
|
53
|
-
import { OdZoomWheelDragger } from "./Draggers/OdZoomWheelDragger";
|
|
54
|
-
import { OdZoomWindowDragger } from "./Draggers/OdZoomWindowDragger/index";
|
|
55
|
-
import { OrbitAroundBuildingDragger } from "./Draggers/OrbitAroundBuildingDragger";
|
|
56
|
-
import { GestureManager } from "./Draggers/Common/GestureManager";
|
|
45
|
+
import { draggers } from "./Draggers";
|
|
46
|
+
import { commands } from "./Commands";
|
|
47
|
+
import { components } from "./Components";
|
|
57
48
|
|
|
58
49
|
import { loadVisualizeJs } from "./utils";
|
|
59
50
|
import { LoaderFactory } from "./Loaders/LoaderFactory";
|
|
@@ -72,8 +63,7 @@ export class Viewer
|
|
|
72
63
|
implements IViewer, IWorldTransform
|
|
73
64
|
{
|
|
74
65
|
private _activeDragger: IDragger | null;
|
|
75
|
-
private
|
|
76
|
-
private _gestureManager: GestureManager | null;
|
|
66
|
+
private _components: Array<IComponent>;
|
|
77
67
|
private _enableAutoUpdate: boolean;
|
|
78
68
|
private _isNeedRender: boolean;
|
|
79
69
|
private _isRunAsyncUpdate: boolean;
|
|
@@ -86,10 +76,7 @@ export class Viewer
|
|
|
86
76
|
|
|
87
77
|
private canvaseventlistener: (event: Event) => void;
|
|
88
78
|
|
|
89
|
-
public draggerFactory: Map<string, typeof Dragger>;
|
|
90
79
|
public canvasEvents: string[];
|
|
91
|
-
private frameId = 0;
|
|
92
|
-
private _resizeObserver: ResizeObserver | undefined;
|
|
93
80
|
private _markup: IMarkup;
|
|
94
81
|
public canvas: HTMLCanvasElement | undefined;
|
|
95
82
|
|
|
@@ -124,21 +111,9 @@ export class Viewer
|
|
|
124
111
|
this.client = client;
|
|
125
112
|
|
|
126
113
|
this._activeDragger = null;
|
|
127
|
-
this.
|
|
128
|
-
this._gestureManager = null;
|
|
129
|
-
this._renderTime = 0;
|
|
114
|
+
this._components = [];
|
|
130
115
|
|
|
131
|
-
this.
|
|
132
|
-
this.registerDragger("Pan", OdPanDragger);
|
|
133
|
-
this.registerDragger("Orbit", OdOrbitDragger);
|
|
134
|
-
this.registerDragger("Zoom", OdZoomDragger);
|
|
135
|
-
this.registerDragger("ZoomWindow", OdZoomWindowDragger);
|
|
136
|
-
this.registerDragger("OrbitAroundBuilding", OrbitAroundBuildingDragger);
|
|
137
|
-
this.registerDragger("MeasureLine", MeasureLineDragger);
|
|
138
|
-
this.registerDragger("CuttingPlaneXAxis", OdCuttingPlaneXAxisDragger);
|
|
139
|
-
this.registerDragger("CuttingPlaneYAxis", OdCuttingPlaneYAxisDragger);
|
|
140
|
-
this.registerDragger("CuttingPlaneZAxis", OdCuttingPlaneZAxisDragger);
|
|
141
|
-
this.registerDragger("Walk", OdaWalkDragger);
|
|
116
|
+
this._renderTime = 0;
|
|
142
117
|
|
|
143
118
|
this.canvasEvents = CANVAS_EVENTS.slice();
|
|
144
119
|
this.canvaseventlistener = (event: Event) => this.emit(event);
|
|
@@ -148,7 +123,7 @@ export class Viewer
|
|
|
148
123
|
this._isRunAsyncUpdate = false;
|
|
149
124
|
|
|
150
125
|
this.render = this.render.bind(this);
|
|
151
|
-
this.
|
|
126
|
+
this.update = this.update.bind(this);
|
|
152
127
|
|
|
153
128
|
this._markup = MarkupFactory.createMarkup(params.markupType);
|
|
154
129
|
}
|
|
@@ -236,22 +211,16 @@ export class Viewer
|
|
|
236
211
|
this._visualizeJs = visualizeJs;
|
|
237
212
|
this.visualizeJs.canvas = canvas;
|
|
238
213
|
this.visualizeJs.Viewer.create();
|
|
214
|
+
this.visualizeJs.getViewer().resize(0, canvas.width, canvas.height, 0);
|
|
239
215
|
|
|
240
216
|
this.canvas = canvas;
|
|
241
217
|
this.canvasEvents.forEach((x) => canvas.addEventListener(x, this.canvaseventlistener));
|
|
242
218
|
|
|
243
219
|
this._markup.initialize(this.canvas, this.canvasEvents, this, this);
|
|
244
220
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
this._zoomWheelDragger = new OdZoomWheelDragger(this);
|
|
250
|
-
this._zoomWheelDragger.name = "ZoomWheel";
|
|
251
|
-
this._zoomWheelDragger.initialize();
|
|
252
|
-
|
|
253
|
-
this._gestureManager = new GestureManager(this);
|
|
254
|
-
this._gestureManager.initialize();
|
|
221
|
+
for (let name of components.getComponents().keys()) {
|
|
222
|
+
this._components.push(components.createComponent(name, this));
|
|
223
|
+
}
|
|
255
224
|
|
|
256
225
|
this.syncOpenCloudVisualStyle(true);
|
|
257
226
|
this.syncOptions();
|
|
@@ -269,21 +238,12 @@ export class Viewer
|
|
|
269
238
|
this.cancel();
|
|
270
239
|
this.emitEvent({ type: "dispose" });
|
|
271
240
|
|
|
272
|
-
|
|
273
|
-
this.
|
|
241
|
+
this._components.forEach((component: IComponent) => component.dispose());
|
|
242
|
+
this._components = [];
|
|
274
243
|
|
|
275
244
|
this.setActiveDragger();
|
|
276
245
|
this.removeAllListeners();
|
|
277
246
|
|
|
278
|
-
if (this._gestureManager) this._gestureManager.dispose();
|
|
279
|
-
this._gestureManager = undefined;
|
|
280
|
-
|
|
281
|
-
if (this._zoomWheelDragger) this._zoomWheelDragger.dispose();
|
|
282
|
-
this._zoomWheelDragger = undefined;
|
|
283
|
-
|
|
284
|
-
if (this._resizeObserver) this._resizeObserver.disconnect();
|
|
285
|
-
this._resizeObserver = undefined;
|
|
286
|
-
|
|
287
247
|
this._markup.dispose();
|
|
288
248
|
|
|
289
249
|
if (this.canvas) {
|
|
@@ -307,9 +267,7 @@ export class Viewer
|
|
|
307
267
|
|
|
308
268
|
// internal render/resize routines
|
|
309
269
|
|
|
310
|
-
|
|
311
|
-
this.frameId = requestAnimationFrame(this.render);
|
|
312
|
-
|
|
270
|
+
public render(time: DOMHighResTimeStamp) {
|
|
313
271
|
if (!this.visualizeJs) return;
|
|
314
272
|
|
|
315
273
|
if (this._isRunAsyncUpdate) return;
|
|
@@ -317,7 +275,7 @@ export class Viewer
|
|
|
317
275
|
const visViewer = this.visualizeJs.getViewer();
|
|
318
276
|
if (visViewer.isRunningAnimation() || this._isNeedRender) {
|
|
319
277
|
visViewer.update();
|
|
320
|
-
this._activeDragger?.updatePreview();
|
|
278
|
+
this._activeDragger?.updatePreview?.();
|
|
321
279
|
this._isNeedRender = !visViewer.getActiveDevice().isValid();
|
|
322
280
|
|
|
323
281
|
const deltaTime = (time - this._renderTime) / 1000;
|
|
@@ -362,7 +320,7 @@ export class Viewer
|
|
|
362
320
|
if (this._enableAutoUpdate) {
|
|
363
321
|
if (force) {
|
|
364
322
|
this.visViewer()?.update();
|
|
365
|
-
this.
|
|
323
|
+
this._activeDragger?.updatePreview?.();
|
|
366
324
|
} else {
|
|
367
325
|
this._isNeedRender = true;
|
|
368
326
|
}
|
|
@@ -376,7 +334,7 @@ export class Viewer
|
|
|
376
334
|
try {
|
|
377
335
|
if (this._enableAutoUpdate) {
|
|
378
336
|
this.visViewer()?.update(maxScheduleUpdateTimeInMs);
|
|
379
|
-
this.
|
|
337
|
+
this._activeDragger?.updatePreview?.();
|
|
380
338
|
}
|
|
381
339
|
this.emitEvent({ type: "update", data: false });
|
|
382
340
|
resolve();
|
|
@@ -621,41 +579,22 @@ export class Viewer
|
|
|
621
579
|
return this;
|
|
622
580
|
}
|
|
623
581
|
|
|
624
|
-
/**
|
|
625
|
-
* List of names of available draggers.
|
|
626
|
-
*
|
|
627
|
-
* The following draggers are available by default:
|
|
628
|
-
*
|
|
629
|
-
* - `Line`
|
|
630
|
-
* - `Text`
|
|
631
|
-
* - `Pan`
|
|
632
|
-
* - `Orbit`
|
|
633
|
-
* - `Zoom`
|
|
634
|
-
* - `ZoomWindow`
|
|
635
|
-
* - `OrbitAroundBuilding`
|
|
636
|
-
* - `MeasureLine`
|
|
637
|
-
* - `CuttingPlaneXAxis`
|
|
638
|
-
* - `CuttingPlaneYAxis`
|
|
639
|
-
* - `CuttingPlaneZAxis`
|
|
640
|
-
* - `Walk`
|
|
641
|
-
*
|
|
642
|
-
* To register your own command use the {@link registerDragger | registerDragger()}.
|
|
643
|
-
*/
|
|
644
582
|
get draggers(): string[] {
|
|
645
|
-
return [...
|
|
583
|
+
return [...draggers.getDraggers().keys()];
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
get components(): string[] {
|
|
587
|
+
return [...components.getComponents().keys()];
|
|
646
588
|
}
|
|
647
589
|
|
|
648
590
|
/**
|
|
649
|
-
*
|
|
650
|
-
*
|
|
651
|
-
* Dragger is an object that received mouse/keyboard events and does something to the viewer.
|
|
652
|
-
* For a quick tutorial on how to create your own dragger, see {@link Dragger}.
|
|
653
|
-
*
|
|
654
|
-
* @param name - Dragger name.
|
|
655
|
-
* @param dragger - Dragger class.
|
|
591
|
+
* Deprecated since `25.12`. Use {@link draggers.registerDragger} instead.
|
|
656
592
|
*/
|
|
657
593
|
public registerDragger(name: string, dragger: typeof Dragger): void {
|
|
658
|
-
|
|
594
|
+
console.warn(
|
|
595
|
+
"Viewer.registerDragger() has been deprecated since 25.12 and will be removed in a future release, use draggers('visualizejs').registerDragger() instead."
|
|
596
|
+
);
|
|
597
|
+
draggers.registerDragger(name, (viewer: IViewer) => new dragger(viewer));
|
|
659
598
|
}
|
|
660
599
|
|
|
661
600
|
activeDragger(): IDragger | null {
|
|
@@ -663,28 +602,27 @@ export class Viewer
|
|
|
663
602
|
}
|
|
664
603
|
|
|
665
604
|
setActiveDragger(name = ""): IDragger | null {
|
|
666
|
-
if (this._activeDragger
|
|
605
|
+
if (!this._activeDragger || this._activeDragger.name !== name) {
|
|
606
|
+
const oldDragger = this._activeDragger;
|
|
607
|
+
let newDragger = null;
|
|
608
|
+
|
|
667
609
|
if (this._activeDragger) {
|
|
668
610
|
this._activeDragger.dispose();
|
|
669
611
|
this._activeDragger = null;
|
|
670
612
|
}
|
|
671
613
|
if (this.visualizeJs) {
|
|
672
|
-
|
|
673
|
-
if (
|
|
674
|
-
this._activeDragger =
|
|
675
|
-
this._activeDragger.
|
|
676
|
-
this._activeDragger.initialize();
|
|
614
|
+
newDragger = draggers.createDragger(name, this);
|
|
615
|
+
if (newDragger) {
|
|
616
|
+
this._activeDragger = newDragger;
|
|
617
|
+
this._activeDragger.initialize?.();
|
|
677
618
|
}
|
|
678
619
|
}
|
|
679
620
|
const canvas = this.canvas;
|
|
680
621
|
if (canvas) {
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
.filter((x) => !x.startsWith("oda-cursor-"))
|
|
684
|
-
.filter((x) => x)
|
|
685
|
-
.concat(`oda-cursor-${name.toLowerCase()}`)
|
|
686
|
-
.join(" ");
|
|
622
|
+
if (oldDragger) canvas.classList.remove(`oda-cursor-${oldDragger.name.toLowerCase()}`);
|
|
623
|
+
if (newDragger) canvas.classList.add(`oda-cursor-${newDragger.name.toLowerCase()}`);
|
|
687
624
|
}
|
|
625
|
+
|
|
688
626
|
this.emitEvent({ type: "changeactivedragger", data: name });
|
|
689
627
|
this.update();
|
|
690
628
|
}
|
|
@@ -699,6 +637,10 @@ export class Viewer
|
|
|
699
637
|
}
|
|
700
638
|
}
|
|
701
639
|
|
|
640
|
+
getComponent(name: string): IComponent {
|
|
641
|
+
return this._components.find((component) => component.name === name);
|
|
642
|
+
}
|
|
643
|
+
|
|
702
644
|
clearSlices(): void {
|
|
703
645
|
if (!this.visualizeJs) return;
|
|
704
646
|
|
|
@@ -1280,11 +1222,11 @@ export class Viewer
|
|
|
1280
1222
|
}
|
|
1281
1223
|
}
|
|
1282
1224
|
|
|
1283
|
-
private getSelection():
|
|
1225
|
+
private getSelection(): IEntity[] {
|
|
1284
1226
|
return this.getSelected().map((handle) => ({ handle }));
|
|
1285
1227
|
}
|
|
1286
1228
|
|
|
1287
|
-
private setSelection(selection:
|
|
1229
|
+
private setSelection(selection: IEntity[]) {
|
|
1288
1230
|
this.setSelected(selection?.map((component) => component.handle));
|
|
1289
1231
|
}
|
|
1290
1232
|
|
|
@@ -1318,8 +1260,7 @@ export class Viewer
|
|
|
1318
1260
|
* - `zoomToObjects`
|
|
1319
1261
|
* - `zoomToSelected`
|
|
1320
1262
|
*
|
|
1321
|
-
* To register
|
|
1322
|
-
* method of the {@link commands} manager.
|
|
1263
|
+
* To register custom command use the {@link commands.registerCommand}.
|
|
1323
1264
|
*
|
|
1324
1265
|
* @param id - Command ID or dragger name.
|
|
1325
1266
|
* @param args - Parameters passed to the command handler function.
|
|
@@ -1327,7 +1268,7 @@ export class Viewer
|
|
|
1327
1268
|
* instance. Returns `undefined` if neither the command nor the dragger exists.
|
|
1328
1269
|
*/
|
|
1329
1270
|
executeCommand(id: string, ...args: any[]): any {
|
|
1330
|
-
return commands
|
|
1271
|
+
return commands.executeCommand(id, this, ...args);
|
|
1331
1272
|
}
|
|
1332
1273
|
|
|
1333
1274
|
public deviceAutoRegeneration() {
|
package/src/index.ts
CHANGED
|
@@ -21,10 +21,13 @@
|
|
|
21
21
|
// acknowledge and accept the above terms.
|
|
22
22
|
///////////////////////////////////////////////////////////////////////////////
|
|
23
23
|
|
|
24
|
-
import "./Viewer/Commands";
|
|
25
|
-
|
|
26
24
|
export * from "@inweb/viewer-core";
|
|
27
25
|
export * from "@inweb/markup";
|
|
26
|
+
|
|
27
|
+
export { draggers } from "./Viewer/Draggers";
|
|
28
|
+
export { commands } from "./Viewer/Commands";
|
|
29
|
+
export { components } from "./Viewer/Components";
|
|
28
30
|
export { Viewer } from "./Viewer/Viewer";
|
|
31
|
+
|
|
29
32
|
export { OdBaseDragger } from "./Viewer/Draggers/Common/OdBaseDragger";
|
|
30
33
|
export { MarkupType } from "./Viewer/Markup/MarkupFactory";
|