@inweb/viewer-visualize 25.3.18 → 25.3.20

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.
@@ -61,54 +61,62 @@ commands("VisualizeJS").registerCommand("noop", (() => {}));
61
61
 
62
62
  commands("ThreeJS").registerCommand("noop", (() => {}));
63
63
 
64
+ function defaultOptions() {
65
+ return {
66
+ showWCS: true,
67
+ cameraAnimation: true,
68
+ antialiasing: true,
69
+ groundShadow: false,
70
+ shadows: false,
71
+ cameraAxisXSpeed: 4,
72
+ cameraAxisYSpeed: 1,
73
+ ambientOcclusion: false,
74
+ enableStreamingMode: true,
75
+ enablePartialMode: false,
76
+ memoryLimit: 3294967296,
77
+ cuttingPlaneFillColor: {
78
+ red: 255,
79
+ green: 152,
80
+ blue: 0
81
+ },
82
+ edgesColor: {
83
+ r: 255,
84
+ g: 152,
85
+ b: 0
86
+ },
87
+ facesColor: {
88
+ r: 255,
89
+ g: 152,
90
+ b: 0
91
+ },
92
+ edgesVisibility: true,
93
+ edgesOverlap: true,
94
+ facesOverlap: false,
95
+ facesTransparancy: 200,
96
+ enableCustomHighlight: true,
97
+ sceneGraph: false,
98
+ edgeModel: true,
99
+ reverseZoomWheel: false,
100
+ enableZoomWheel: true,
101
+ enableGestures: true,
102
+ geometryType: "vsfx"
103
+ };
104
+ }
105
+
64
106
  class Options {
65
107
  constructor(emitter) {
66
108
  this._emitter = emitter;
67
- this._data = Options.defaults();
109
+ this._data = defaultOptions();
68
110
  this.loadFromStorage();
69
111
  }
70
112
  static defaults() {
71
- return {
72
- showWCS: true,
73
- cameraAnimation: true,
74
- antialiasing: true,
75
- groundShadow: false,
76
- shadows: false,
77
- cameraAxisXSpeed: 4,
78
- cameraAxisYSpeed: 1,
79
- ambientOcclusion: false,
80
- enableStreamingMode: true,
81
- enablePartialMode: false,
82
- memoryLimit: 3294967296,
83
- cuttingPlaneFillColor: {
84
- red: 255,
85
- green: 152,
86
- blue: 0
87
- },
88
- edgesColor: {
89
- r: 255,
90
- g: 152,
91
- b: 0
92
- },
93
- facesColor: {
94
- r: 255,
95
- g: 152,
96
- b: 0
97
- },
98
- edgesVisibility: true,
99
- edgesOverlap: true,
100
- facesOverlap: false,
101
- facesTransparancy: 200,
102
- enableCustomHighlight: true,
103
- sceneGraph: false,
104
- edgeModel: true,
105
- reverseZoomWheel: false,
106
- enableZoomWheel: true,
107
- enableGestures: true,
108
- geometryType: "vsfx"
109
- };
113
+ return defaultOptions();
110
114
  }
111
115
  notifierChangeEvent() {
116
+ console.warn("Options.notifierChangeEvent() has been deprecated since 25.3 and will be removed in a future release, use Options.change() instead.");
117
+ this.change();
118
+ }
119
+ change() {
112
120
  if (this._emitter !== undefined) {
113
121
  this.saveToStorage();
114
122
  this._emitter.emit({
@@ -159,151 +167,154 @@ class Options {
159
167
  return this._data;
160
168
  }
161
169
  set data(value) {
162
- const sceneGraph = value.enablePartialMode ? false : value.sceneGraph;
170
+ const enablePartialMode = value.enableStreamingMode ? value.enablePartialMode : false;
171
+ const sceneGraph = enablePartialMode ? false : value.sceneGraph;
163
172
  this._data = {
164
173
  ...Options.defaults(),
165
174
  ...this._data,
166
175
  ...value,
176
+ enablePartialMode: enablePartialMode,
167
177
  sceneGraph: sceneGraph
168
178
  };
169
- this.notifierChangeEvent();
179
+ this.change();
170
180
  }
171
181
  get showWCS() {
172
182
  return this._data.showWCS;
173
183
  }
174
184
  set showWCS(value) {
175
185
  this._data.showWCS = value;
176
- this.notifierChangeEvent();
186
+ this.change();
177
187
  }
178
188
  get cameraAnimation() {
179
189
  return this._data.cameraAnimation;
180
190
  }
181
191
  set cameraAnimation(value) {
182
192
  this._data.cameraAnimation = value;
183
- this.notifierChangeEvent();
193
+ this.change();
184
194
  }
185
195
  get antialiasing() {
186
196
  return this._data.antialiasing;
187
197
  }
188
198
  set antialiasing(value) {
189
199
  this._data.antialiasing = value;
190
- this.notifierChangeEvent();
200
+ this.change();
191
201
  }
192
202
  get groundShadow() {
193
203
  return this._data.groundShadow;
194
204
  }
195
205
  set groundShadow(value) {
196
206
  this._data.groundShadow = value;
197
- this.notifierChangeEvent();
207
+ this.change();
198
208
  }
199
209
  get shadows() {
200
210
  return this._data.shadows;
201
211
  }
202
212
  set shadows(value) {
203
213
  this._data.shadows = value;
204
- this.notifierChangeEvent();
214
+ this.change();
205
215
  }
206
216
  get cameraAxisXSpeed() {
207
217
  return this._data.cameraAxisXSpeed;
208
218
  }
209
219
  set cameraAxisXSpeed(value) {
210
220
  this._data.cameraAxisXSpeed = value;
211
- this.notifierChangeEvent();
221
+ this.change();
212
222
  }
213
223
  get cameraAxisYSpeed() {
214
224
  return this._data.cameraAxisYSpeed;
215
225
  }
216
226
  set cameraAxisYSpeed(value) {
217
227
  this.cameraAxisYSpeed = value;
218
- this.notifierChangeEvent();
228
+ this.change();
219
229
  }
220
230
  get ambientOcclusion() {
221
231
  return this._data.ambientOcclusion;
222
232
  }
223
233
  set ambientOcclusion(value) {
224
234
  this._data.ambientOcclusion = value;
225
- this.notifierChangeEvent();
235
+ this.change();
226
236
  }
227
237
  get enableStreamingMode() {
228
238
  return this._data.enableStreamingMode;
229
239
  }
230
240
  set enableStreamingMode(value) {
231
241
  this._data.enableStreamingMode = value;
232
- if (this._data.enableStreamingMode) {
233
- this._data.enablePartialMode = false;
234
- }
235
- this.notifierChangeEvent();
242
+ if (!value) this._data.enablePartialMode = false;
243
+ this.change();
236
244
  }
237
245
  get enablePartialMode() {
238
246
  return this._data.enablePartialMode;
239
247
  }
240
248
  set enablePartialMode(value) {
241
249
  this._data.enablePartialMode = value;
242
- if (value) this._data.sceneGraph = false;
243
- this.notifierChangeEvent();
250
+ if (value) {
251
+ this._data.enableStreamingMode = true;
252
+ this._data.sceneGraph = false;
253
+ }
254
+ this.change();
244
255
  }
245
256
  get memoryLimit() {
246
257
  return this._data.memoryLimit;
247
258
  }
248
259
  set memoryLimit(value) {
249
260
  this._data.memoryLimit = value;
250
- this.notifierChangeEvent();
261
+ this.change();
251
262
  }
252
263
  get cuttingPlaneFillColor() {
253
264
  return this._data.cuttingPlaneFillColor;
254
265
  }
255
266
  set cuttingPlaneFillColor(value) {
256
267
  this._data.cuttingPlaneFillColor = value;
257
- this.notifierChangeEvent();
268
+ this.change();
258
269
  }
259
270
  get edgesColor() {
260
271
  return this._data.edgesColor;
261
272
  }
262
273
  set edgesColor(value) {
263
274
  this._data.edgesColor = value;
264
- this.notifierChangeEvent();
275
+ this.change();
265
276
  }
266
277
  get facesColor() {
267
278
  return this._data.facesColor;
268
279
  }
269
280
  set facesColor(value) {
270
281
  this._data.facesColor = value;
271
- this.notifierChangeEvent();
282
+ this.change();
272
283
  }
273
284
  get edgesVisibility() {
274
285
  return this._data.edgesVisibility;
275
286
  }
276
287
  set edgesVisibility(value) {
277
288
  this._data.edgesVisibility = value;
278
- this.notifierChangeEvent();
289
+ this.change();
279
290
  }
280
291
  get edgesOverlap() {
281
292
  return this._data.edgesOverlap;
282
293
  }
283
294
  set edgesOverlap(value) {
284
295
  this._data.edgesOverlap = value;
285
- this.notifierChangeEvent();
296
+ this.change();
286
297
  }
287
298
  get facesOverlap() {
288
299
  return this._data.facesOverlap;
289
300
  }
290
301
  set facesOverlap(value) {
291
302
  this._data.facesOverlap = value;
292
- this.notifierChangeEvent();
303
+ this.change();
293
304
  }
294
305
  get facesTransparancy() {
295
306
  return this._data.facesTransparancy;
296
307
  }
297
308
  set facesTransparancy(value) {
298
309
  this._data.facesTransparancy = value;
299
- this.notifierChangeEvent();
310
+ this.change();
300
311
  }
301
312
  get enableCustomHighlight() {
302
313
  return this._data.enableCustomHighlight;
303
314
  }
304
315
  set enableCustomHighlight(value) {
305
316
  this._data.enableCustomHighlight = value;
306
- this.notifierChangeEvent();
317
+ this.change();
307
318
  }
308
319
  get sceneGraph() {
309
320
  return this._data.sceneGraph;
@@ -311,42 +322,42 @@ class Options {
311
322
  set sceneGraph(value) {
312
323
  this._data.sceneGraph = value;
313
324
  if (value) this._data.enablePartialMode = false;
314
- this.notifierChangeEvent();
325
+ this.change();
315
326
  }
316
327
  get edgeModel() {
317
328
  return Boolean(this._data.edgeModel);
318
329
  }
319
330
  set edgeModel(value) {
320
331
  this._data.edgeModel = Boolean(value);
321
- this.notifierChangeEvent();
332
+ this.change();
322
333
  }
323
334
  get reverseZoomWheel() {
324
335
  return this._data.reverseZoomWheel;
325
336
  }
326
337
  set reverseZoomWheel(value) {
327
338
  this._data.reverseZoomWheel = !!value;
328
- this.notifierChangeEvent();
339
+ this.change();
329
340
  }
330
341
  get enableZoomWheel() {
331
342
  return this._data.enableZoomWheel;
332
343
  }
333
344
  set enableZoomWheel(value) {
334
345
  this._data.enableZoomWheel = !!value;
335
- this.notifierChangeEvent();
346
+ this.change();
336
347
  }
337
348
  get enableGestures() {
338
349
  return this._data.enableGestures;
339
350
  }
340
351
  set enableGestures(value) {
341
352
  this._data.enableGestures = !!value;
342
- this.notifierChangeEvent();
353
+ this.change();
343
354
  }
344
355
  get geometryType() {
345
356
  return this._data.geometryType;
346
357
  }
347
358
  set geometryType(value) {
348
359
  this._data.geometryType = value;
349
- this.notifierChangeEvent();
360
+ this.change();
350
361
  }
351
362
  }
352
363
 
@@ -682,27 +693,24 @@ commands("VisualizeJS").registerCommand("zoomToSelected", zoomToSelected);
682
693
 
683
694
  class EventEmitter2 {
684
695
  constructor() {
685
- this._listeners = undefined;
696
+ this._listeners = {};
686
697
  }
687
698
  addEventListener(type, listener) {
688
- if (this._listeners === undefined) this._listeners = {};
689
699
  if (this._listeners[type] === undefined) this._listeners[type] = [];
690
700
  this._listeners[type].push(listener);
691
701
  return this;
692
702
  }
693
703
  removeEventListener(type, listener) {
694
- if (this._listeners === undefined) return this;
695
704
  if (this._listeners[type] === undefined) return this;
696
705
  const listeners = this._listeners[type].filter((x => x !== listener));
697
- this._listeners[type] = listeners.length === 0 ? undefined : listeners;
706
+ if (listeners.length !== 0) this._listeners[type] = listeners; else delete this._listeners[type];
698
707
  return this;
699
708
  }
700
709
  removeAllListeners(type) {
701
- if (type) this._listeners[type] = undefined; else this._listeners = undefined;
710
+ if (type) delete this._listeners[type]; else this._listeners = {};
702
711
  return this;
703
712
  }
704
713
  emitEvent(event) {
705
- if (this._listeners === undefined) return false;
706
714
  if (this._listeners[event.type] === undefined) return false;
707
715
  const invoke = this._listeners[event.type].slice();
708
716
  invoke.forEach((listener => listener.call(this, event)));
@@ -2572,27 +2580,25 @@ class TCSLoader extends BaseLoader {
2572
2580
  const visLib = this.viewer.visLib();
2573
2581
  const visViewer = visLib.getViewer();
2574
2582
  const abortController = new AbortController;
2575
- const listFileForDownload = [ this.model.database, ...this.model.geometry ];
2576
- const chunksProgress = listFileForDownload.map((() => 0));
2577
- const calcProgress = (index, progress) => {
2578
- chunksProgress[index] = progress;
2579
- const fileProgress = chunksProgress.reduce(((acc, progress) => acc += progress)) / (chunksProgress.length || 1);
2580
- this.viewer.emitEvent({
2581
- type: "geometryprogress",
2582
- data: fileProgress,
2583
- model: this.model
2584
- });
2585
- };
2583
+ const filesToDownload = [ this.model.database, ...this.model.geometry ];
2586
2584
  this.viewer._abortController = abortController;
2585
+ console.time("File load time");
2587
2586
  try {
2588
2587
  this.viewer.emitEvent({
2589
2588
  type: "geometrystart",
2590
2589
  model: this.model
2591
2590
  });
2592
- for (let i = 0; i < listFileForDownload.length; i++) {
2593
- const chunk = listFileForDownload[i];
2594
- const progressCb = progress => calcProgress(i, progress);
2595
- const arrayBuffer = await this.model.downloadResource(chunk, progressCb, abortController.signal);
2591
+ for (let i = 0; i < filesToDownload.length; i++) {
2592
+ const dataId = filesToDownload[i];
2593
+ const chunkLoadHandler = progress => {
2594
+ const data = (i + progress) / filesToDownload.length;
2595
+ this.viewer.emitEvent({
2596
+ type: "geometryprogress",
2597
+ data: data,
2598
+ model: this.model
2599
+ });
2600
+ };
2601
+ const arrayBuffer = await this.model.downloadResource(dataId, chunkLoadHandler, abortController.signal);
2596
2602
  if (abortController.signal.aborted) {
2597
2603
  await Promise.reject(new Error(`Open model aborted ${this.model.name}`));
2598
2604
  }
@@ -2617,6 +2623,59 @@ class TCSLoader extends BaseLoader {
2617
2623
  });
2618
2624
  }
2619
2625
  }
2626
+ console.timeEnd("File load time");
2627
+ this.viewer.emitEvent({
2628
+ type: "geometryend",
2629
+ model: this.model
2630
+ });
2631
+ } catch (error) {
2632
+ this.viewer.emitEvent({
2633
+ type: "geometryerror",
2634
+ data: error,
2635
+ model: this.model
2636
+ });
2637
+ throw error;
2638
+ }
2639
+ }
2640
+ }
2641
+
2642
+ class VsfXLoader extends BaseLoader {
2643
+ async load() {
2644
+ if (!this.viewer.visualizeJs) return;
2645
+ const visLib = this.viewer.visLib();
2646
+ const visViewer = visLib.getViewer();
2647
+ const abortController = new AbortController;
2648
+ this.viewer._abortController = abortController;
2649
+ const chunkLoadHandler = progress => {
2650
+ this.viewer.emitEvent({
2651
+ type: "geometryprogress",
2652
+ data: progress,
2653
+ model: this.model
2654
+ });
2655
+ };
2656
+ console.time("File load time");
2657
+ try {
2658
+ this.viewer.emitEvent({
2659
+ type: "geometrystart",
2660
+ model: this.model
2661
+ });
2662
+ const arrayBuffer = await this.model.downloadResource(this.model.database, chunkLoadHandler, abortController.signal);
2663
+ if (abortController.signal.aborted) {
2664
+ await Promise.reject(new Error(`Open model aborted ${this.model.name}`));
2665
+ }
2666
+ const data = new Uint8Array(arrayBuffer);
2667
+ if (this.viewer.visualizeJs) {
2668
+ visViewer.parseVsfx(data);
2669
+ this.viewer.syncOpenCloudVisualStyle(false);
2670
+ this.viewer.syncOptions();
2671
+ this.viewer.resize();
2672
+ }
2673
+ console.timeEnd("File load time");
2674
+ this.viewer.emitEvent({
2675
+ type: "databasechunk",
2676
+ data: data,
2677
+ model: this.model
2678
+ });
2620
2679
  this.viewer.emitEvent({
2621
2680
  type: "geometryend",
2622
2681
  model: this.model
@@ -2646,6 +2705,7 @@ var UpdateType;
2646
2705
 
2647
2706
  class UpdaterController {
2648
2707
  constructor() {
2708
+ this.lastUpdate = 0;
2649
2709
  this.delayUpdateTime = START_UPDATE_TIME;
2650
2710
  }
2651
2711
  initialize(viewer) {
@@ -2779,13 +2839,11 @@ class VsfXPartialLoader extends BaseLoader {
2779
2839
  }
2780
2840
  };
2781
2841
  const downloadResourceRange = async (dataId, requestId, ranges) => {
2782
- console.log("--- VsfXPartialLoader.downloadResourceRange", dataId, requestId, ranges);
2783
2842
  const abortCtrl = new AbortController;
2784
2843
  abortControllerForRequestMap.set(requestId, abortCtrl);
2785
2844
  try {
2786
- await this.model.downloadResourceRange(dataId, ranges, requestId, chunkLoadHandler, abortCtrl.signal);
2845
+ await this.model.downloadResourceRange(dataId, requestId, ranges, chunkLoadHandler, abortCtrl.signal);
2787
2846
  } catch (error) {
2788
- console.log("--- VsfXPartialLoader.downloadResourceRange error", dataId, requestId, error);
2789
2847
  this.viewer.emitEvent({
2790
2848
  type: "geometryerror",
2791
2849
  data: error,
@@ -2812,7 +2870,6 @@ class VsfXPartialLoader extends BaseLoader {
2812
2870
  };
2813
2871
  const objectHandler = {
2814
2872
  onServicePartReceived: bHasIndex => {
2815
- console.log("--- VsfXPartialLoader.onServicePartReceived", bHasIndex);
2816
2873
  if (bHasIndex) {
2817
2874
  servicePartAborted = true;
2818
2875
  abortController.abort();
@@ -2820,26 +2877,22 @@ class VsfXPartialLoader extends BaseLoader {
2820
2877
  },
2821
2878
  onRequest: (requestId, records) => {
2822
2879
  const ranges = requestRecordsToRanges(requestId, records);
2823
- console.log("--- VsfXPartialLoader.onRequest", this.model.database, requestId, ranges);
2824
2880
  downloadResourceRange(this.model.database, requestId, ranges);
2825
2881
  },
2826
2882
  onFullLoaded: () => {
2827
- console.log("--- VsfXPartialLoader.onFullLoaded");
2828
2883
  updaterController.update(UpdateType.kNormal);
2829
2884
  },
2830
2885
  onRequestResponseParsed: requestId => {
2831
- console.log("--- VsfXPartialLoader.onRequestResponseParsed", requestId);
2832
2886
  abortControllerForRequestMap.delete(requestId);
2833
2887
  updaterController.update(UpdateType.kNormal);
2834
2888
  },
2835
2889
  onRequestAborted: requestId => {
2836
- console.log("--- VsfXPartialLoader.onRequestAborted", requestId);
2837
2890
  const abortCtrl = abortControllerForRequestMap.get(requestId);
2838
2891
  if (abortCtrl) abortCtrl.abort();
2839
2892
  },
2840
- onRequestResourceFile: (requestId, dataId, records) => {
2893
+ onRequestResourceFile: (requestId, _, records) => {
2894
+ const dataId = `${this.model.fileId}${this.model.file.type}`;
2841
2895
  const ranges = requestRecordsToRanges(requestId, records);
2842
- console.log("--- VsfXPartialLoader.onRequestResourceFile", dataId, requestId, ranges);
2843
2896
  let pendingRanges = [];
2844
2897
  let requestNumber = 0;
2845
2898
  const pendingRequest = pendingRequestsMap.get(dataId);
@@ -2848,7 +2901,6 @@ class VsfXPartialLoader extends BaseLoader {
2848
2901
  requestNumber = pendingRequest.number;
2849
2902
  }
2850
2903
  if (requestNumber <= 5) {
2851
- console.log("--- VsfXPartialLoader.onRequestResourceFile: requestNumber <= 5");
2852
2904
  pendingRequestsMap.set(dataId, {
2853
2905
  ranges: [],
2854
2906
  number: requestNumber + 1
@@ -2858,7 +2910,6 @@ class VsfXPartialLoader extends BaseLoader {
2858
2910
  }
2859
2911
  pendingRanges = pendingRanges.concat(ranges);
2860
2912
  if (pendingRanges.length >= PENDING_REQUESTS_SIZE) {
2861
- console.log("--- VsfXPartialLoader.onRequestResourceFile: pendingRanges.length >", PENDING_REQUESTS_SIZE);
2862
2913
  if (pendingRequestsTimerId) {
2863
2914
  window.clearTimeout(pendingRequestsTimerId);
2864
2915
  pendingRequestsTimerId = 0;
@@ -2876,7 +2927,6 @@ class VsfXPartialLoader extends BaseLoader {
2876
2927
  });
2877
2928
  if (pendingRequestsTimerId === 0) {
2878
2929
  pendingRequestsTimerId = window.setTimeout((() => {
2879
- console.log("--- VsfXPartialLoader.onRequestResourceFile: timer", PENDING_REQUESTS_SIZE);
2880
2930
  pendingRequestsAbortController.signal.removeEventListener("abort", pendingRequestsAbortHandler);
2881
2931
  pendingRequestsTimerId = 0;
2882
2932
  pendingRequestsMap.forEach(((request, dataId) => {
@@ -2923,58 +2973,6 @@ class VsfXPartialLoader extends BaseLoader {
2923
2973
  }
2924
2974
  }
2925
2975
 
2926
- class VsfXLoader extends BaseLoader {
2927
- async load() {
2928
- if (!this.viewer.visualizeJs) return;
2929
- const visLib = this.viewer.visLib();
2930
- const visViewer = visLib.getViewer();
2931
- const abortController = new AbortController;
2932
- this.viewer._abortController = abortController;
2933
- const chunkLoadHandler = progress => {
2934
- this.viewer.emitEvent({
2935
- type: "geometryprogress",
2936
- data: progress,
2937
- model: this.model
2938
- });
2939
- };
2940
- console.time("File load time");
2941
- try {
2942
- this.viewer.emitEvent({
2943
- type: "geometrystart",
2944
- model: this.model
2945
- });
2946
- const arrayBuffer = await this.model.downloadResource(this.model.database, chunkLoadHandler, abortController.signal);
2947
- if (abortController.signal.aborted) {
2948
- await Promise.reject(new Error(`Open model aborted ${this.model.name}`));
2949
- }
2950
- const data = new Uint8Array(arrayBuffer);
2951
- if (this.viewer.visualizeJs) {
2952
- visViewer.parseVsfx(data);
2953
- this.viewer.syncOpenCloudVisualStyle(false);
2954
- this.viewer.syncOptions();
2955
- this.viewer.resize();
2956
- }
2957
- console.timeEnd("File load time");
2958
- this.viewer.emitEvent({
2959
- type: "databasechunk",
2960
- data: data,
2961
- model: this.model
2962
- });
2963
- this.viewer.emitEvent({
2964
- type: "geometryend",
2965
- model: this.model
2966
- });
2967
- } catch (error) {
2968
- this.viewer.emitEvent({
2969
- type: "geometryerror",
2970
- data: error,
2971
- model: this.model
2972
- });
2973
- throw error;
2974
- }
2975
- }
2976
- }
2977
-
2978
2976
  class LoaderFactory {
2979
2977
  create(viewer, model, options) {
2980
2978
  const geometryType = model.database.split(".").pop();
@@ -4917,15 +4915,17 @@ const OVERLAY_VIEW_NAME = "$OVERLAY_VIEW_NAME";
4917
4915
  const isExist = value => value !== undefined && value !== null;
4918
4916
 
4919
4917
  class Viewer extends EventEmitter2 {
4920
- constructor(client, params = {
4921
- markupType: MarkupType.Konva
4922
- }) {
4918
+ constructor(client, params = {}) {
4923
4919
  var _a, _b;
4924
4920
  super();
4921
+ this._visualizeJsUrl = "";
4922
+ this.frameId = 0;
4925
4923
  this.configure(params);
4926
4924
  this._options = new Options(this);
4927
4925
  this.client = client;
4928
4926
  this._activeDragger = null;
4927
+ this._zoomWheelDragger = null;
4928
+ this._gestureManager = null;
4929
4929
  this._renderTime = 0;
4930
4930
  this.markup = MarkupFactory.createMarkup((_a = params.markupType) !== null && _a !== void 0 ? _a : MarkupType.Konva);
4931
4931
  this.draggerFactory = new Map;
@@ -5063,7 +5063,7 @@ class Viewer extends EventEmitter2 {
5063
5063
  });
5064
5064
  return this;
5065
5065
  }
5066
- update(force) {
5066
+ update(force = false) {
5067
5067
  var _a, _b;
5068
5068
  if (this._enableAutoUpdate) {
5069
5069
  if (force) {
@@ -5145,7 +5145,7 @@ class Viewer extends EventEmitter2 {
5145
5145
  device.delete();
5146
5146
  return this;
5147
5147
  }
5148
- syncOptions(options = this.options.data) {
5148
+ syncOptions(options = this.options) {
5149
5149
  if (!this.visualizeJs) return this;
5150
5150
  const visLib = this.visLib();
5151
5151
  const visViewer = visLib.getViewer();
@@ -5195,7 +5195,7 @@ class Viewer extends EventEmitter2 {
5195
5195
  this.update();
5196
5196
  return this;
5197
5197
  }
5198
- syncHighlightingOptions(options = this.options.data) {
5198
+ syncHighlightingOptions(options = this.options) {
5199
5199
  if (!this.visualizeJs) return this;
5200
5200
  const params = options.enableCustomHighlight ? options : Options.defaults();
5201
5201
  const visLib = this.visLib();
@@ -5327,6 +5327,7 @@ class Viewer extends EventEmitter2 {
5327
5327
  async loadReferences(model) {
5328
5328
  var _a;
5329
5329
  if (!this.visualizeJs) return this;
5330
+ if (!this.client) return this;
5330
5331
  const abortController = new AbortController;
5331
5332
  (_a = this._abortControllerForReferences) === null || _a === void 0 ? void 0 : _a.abort();
5332
5333
  this._abortControllerForReferences = abortController;
@@ -5363,7 +5364,7 @@ class Viewer extends EventEmitter2 {
5363
5364
  file: file,
5364
5365
  model: file
5365
5366
  });
5366
- let model;
5367
+ let model = undefined;
5367
5368
  if (file) {
5368
5369
  const models = await file.getModels() || [];
5369
5370
  model = models.find((model => model.default)) || models[0];
@@ -5376,7 +5377,7 @@ class Viewer extends EventEmitter2 {
5376
5377
  overrideOptions.enablePartialMode = true;
5377
5378
  }
5378
5379
  const loaderFactory = new LoaderFactory;
5379
- const loader = loaderFactory.create(this, model, overrideOptions.data);
5380
+ const loader = loaderFactory.create(this, model, overrideOptions);
5380
5381
  await this.loadReferences(model);
5381
5382
  await loader.load();
5382
5383
  if (this.visualizeJs) {
@@ -5607,5 +5608,5 @@ class Viewer extends EventEmitter2 {
5607
5608
  }
5608
5609
  }
5609
5610
 
5610
- export { OdBaseDragger, Options, Viewer, commands };
5611
+ export { CANVAS_EVENTS, OdBaseDragger, Options, Viewer, commands, defaultOptions };
5611
5612
  //# sourceMappingURL=viewer-visualize.module.js.map