@inweb/viewer-visualize 25.3.19 → 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.
- package/dist/viewer-visualize.js +61 -60
- package/dist/viewer-visualize.js.map +1 -1
- package/dist/viewer-visualize.min.js +1 -1
- package/dist/viewer-visualize.module.js +79 -79
- package/dist/viewer-visualize.module.js.map +1 -1
- package/lib/Viewer/Loaders/LoaderFactory.d.ts +2 -2
- package/lib/Viewer/Viewer.d.ts +1 -1
- package/lib/Viewer/utils.d.ts +2 -3
- package/package.json +4 -4
- package/src/ConvetMath.ts +2 -1
- package/src/Viewer/Loaders/LoaderFactory.ts +1 -1
- package/src/Viewer/Loaders/TCSLoader.ts +12 -12
- package/src/Viewer/Loaders/UpdaterController.ts +1 -0
- package/src/Viewer/Loaders/VsfXLoader.ts +1 -1
- package/src/Viewer/Loaders/VsfXPartialLoader.ts +3 -3
- package/src/Viewer/Loaders/VsfXStreamingLoader.ts +1 -1
- package/src/Viewer/Viewer.ts +12 -12
- package/src/Viewer/utils.ts +3 -12
|
@@ -693,27 +693,24 @@ commands("VisualizeJS").registerCommand("zoomToSelected", zoomToSelected);
|
|
|
693
693
|
|
|
694
694
|
class EventEmitter2 {
|
|
695
695
|
constructor() {
|
|
696
|
-
this._listeners =
|
|
696
|
+
this._listeners = {};
|
|
697
697
|
}
|
|
698
698
|
addEventListener(type, listener) {
|
|
699
|
-
if (this._listeners === undefined) this._listeners = {};
|
|
700
699
|
if (this._listeners[type] === undefined) this._listeners[type] = [];
|
|
701
700
|
this._listeners[type].push(listener);
|
|
702
701
|
return this;
|
|
703
702
|
}
|
|
704
703
|
removeEventListener(type, listener) {
|
|
705
|
-
if (this._listeners === undefined) return this;
|
|
706
704
|
if (this._listeners[type] === undefined) return this;
|
|
707
705
|
const listeners = this._listeners[type].filter((x => x !== listener));
|
|
708
|
-
this._listeners[type] = listeners
|
|
706
|
+
if (listeners.length !== 0) this._listeners[type] = listeners; else delete this._listeners[type];
|
|
709
707
|
return this;
|
|
710
708
|
}
|
|
711
709
|
removeAllListeners(type) {
|
|
712
|
-
if (type) this._listeners[type]
|
|
710
|
+
if (type) delete this._listeners[type]; else this._listeners = {};
|
|
713
711
|
return this;
|
|
714
712
|
}
|
|
715
713
|
emitEvent(event) {
|
|
716
|
-
if (this._listeners === undefined) return false;
|
|
717
714
|
if (this._listeners[event.type] === undefined) return false;
|
|
718
715
|
const invoke = this._listeners[event.type].slice();
|
|
719
716
|
invoke.forEach((listener => listener.call(this, event)));
|
|
@@ -2583,27 +2580,25 @@ class TCSLoader extends BaseLoader {
|
|
|
2583
2580
|
const visLib = this.viewer.visLib();
|
|
2584
2581
|
const visViewer = visLib.getViewer();
|
|
2585
2582
|
const abortController = new AbortController;
|
|
2586
|
-
const
|
|
2587
|
-
const chunksProgress = listFileForDownload.map((() => 0));
|
|
2588
|
-
const calcProgress = (index, progress) => {
|
|
2589
|
-
chunksProgress[index] = progress;
|
|
2590
|
-
const fileProgress = chunksProgress.reduce(((acc, progress) => acc += progress)) / (chunksProgress.length || 1);
|
|
2591
|
-
this.viewer.emitEvent({
|
|
2592
|
-
type: "geometryprogress",
|
|
2593
|
-
data: fileProgress,
|
|
2594
|
-
model: this.model
|
|
2595
|
-
});
|
|
2596
|
-
};
|
|
2583
|
+
const filesToDownload = [ this.model.database, ...this.model.geometry ];
|
|
2597
2584
|
this.viewer._abortController = abortController;
|
|
2585
|
+
console.time("File load time");
|
|
2598
2586
|
try {
|
|
2599
2587
|
this.viewer.emitEvent({
|
|
2600
2588
|
type: "geometrystart",
|
|
2601
2589
|
model: this.model
|
|
2602
2590
|
});
|
|
2603
|
-
for (let i = 0; i <
|
|
2604
|
-
const
|
|
2605
|
-
const
|
|
2606
|
-
|
|
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);
|
|
2607
2602
|
if (abortController.signal.aborted) {
|
|
2608
2603
|
await Promise.reject(new Error(`Open model aborted ${this.model.name}`));
|
|
2609
2604
|
}
|
|
@@ -2628,6 +2623,59 @@ class TCSLoader extends BaseLoader {
|
|
|
2628
2623
|
});
|
|
2629
2624
|
}
|
|
2630
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
|
+
});
|
|
2631
2679
|
this.viewer.emitEvent({
|
|
2632
2680
|
type: "geometryend",
|
|
2633
2681
|
model: this.model
|
|
@@ -2657,6 +2705,7 @@ var UpdateType;
|
|
|
2657
2705
|
|
|
2658
2706
|
class UpdaterController {
|
|
2659
2707
|
constructor() {
|
|
2708
|
+
this.lastUpdate = 0;
|
|
2660
2709
|
this.delayUpdateTime = START_UPDATE_TIME;
|
|
2661
2710
|
}
|
|
2662
2711
|
initialize(viewer) {
|
|
@@ -2793,7 +2842,7 @@ class VsfXPartialLoader extends BaseLoader {
|
|
|
2793
2842
|
const abortCtrl = new AbortController;
|
|
2794
2843
|
abortControllerForRequestMap.set(requestId, abortCtrl);
|
|
2795
2844
|
try {
|
|
2796
|
-
await this.model.downloadResourceRange(dataId,
|
|
2845
|
+
await this.model.downloadResourceRange(dataId, requestId, ranges, chunkLoadHandler, abortCtrl.signal);
|
|
2797
2846
|
} catch (error) {
|
|
2798
2847
|
this.viewer.emitEvent({
|
|
2799
2848
|
type: "geometryerror",
|
|
@@ -2924,58 +2973,6 @@ class VsfXPartialLoader extends BaseLoader {
|
|
|
2924
2973
|
}
|
|
2925
2974
|
}
|
|
2926
2975
|
|
|
2927
|
-
class VsfXLoader extends BaseLoader {
|
|
2928
|
-
async load() {
|
|
2929
|
-
if (!this.viewer.visualizeJs) return;
|
|
2930
|
-
const visLib = this.viewer.visLib();
|
|
2931
|
-
const visViewer = visLib.getViewer();
|
|
2932
|
-
const abortController = new AbortController;
|
|
2933
|
-
this.viewer._abortController = abortController;
|
|
2934
|
-
const chunkLoadHandler = progress => {
|
|
2935
|
-
this.viewer.emitEvent({
|
|
2936
|
-
type: "geometryprogress",
|
|
2937
|
-
data: progress,
|
|
2938
|
-
model: this.model
|
|
2939
|
-
});
|
|
2940
|
-
};
|
|
2941
|
-
console.time("File load time");
|
|
2942
|
-
try {
|
|
2943
|
-
this.viewer.emitEvent({
|
|
2944
|
-
type: "geometrystart",
|
|
2945
|
-
model: this.model
|
|
2946
|
-
});
|
|
2947
|
-
const arrayBuffer = await this.model.downloadResource(this.model.database, chunkLoadHandler, abortController.signal);
|
|
2948
|
-
if (abortController.signal.aborted) {
|
|
2949
|
-
await Promise.reject(new Error(`Open model aborted ${this.model.name}`));
|
|
2950
|
-
}
|
|
2951
|
-
const data = new Uint8Array(arrayBuffer);
|
|
2952
|
-
if (this.viewer.visualizeJs) {
|
|
2953
|
-
visViewer.parseVsfx(data);
|
|
2954
|
-
this.viewer.syncOpenCloudVisualStyle(false);
|
|
2955
|
-
this.viewer.syncOptions();
|
|
2956
|
-
this.viewer.resize();
|
|
2957
|
-
}
|
|
2958
|
-
console.timeEnd("File load time");
|
|
2959
|
-
this.viewer.emitEvent({
|
|
2960
|
-
type: "databasechunk",
|
|
2961
|
-
data: data,
|
|
2962
|
-
model: this.model
|
|
2963
|
-
});
|
|
2964
|
-
this.viewer.emitEvent({
|
|
2965
|
-
type: "geometryend",
|
|
2966
|
-
model: this.model
|
|
2967
|
-
});
|
|
2968
|
-
} catch (error) {
|
|
2969
|
-
this.viewer.emitEvent({
|
|
2970
|
-
type: "geometryerror",
|
|
2971
|
-
data: error,
|
|
2972
|
-
model: this.model
|
|
2973
|
-
});
|
|
2974
|
-
throw error;
|
|
2975
|
-
}
|
|
2976
|
-
}
|
|
2977
|
-
}
|
|
2978
|
-
|
|
2979
2976
|
class LoaderFactory {
|
|
2980
2977
|
create(viewer, model, options) {
|
|
2981
2978
|
const geometryType = model.database.split(".").pop();
|
|
@@ -4918,15 +4915,17 @@ const OVERLAY_VIEW_NAME = "$OVERLAY_VIEW_NAME";
|
|
|
4918
4915
|
const isExist = value => value !== undefined && value !== null;
|
|
4919
4916
|
|
|
4920
4917
|
class Viewer extends EventEmitter2 {
|
|
4921
|
-
constructor(client, params = {
|
|
4922
|
-
markupType: MarkupType.Konva
|
|
4923
|
-
}) {
|
|
4918
|
+
constructor(client, params = {}) {
|
|
4924
4919
|
var _a, _b;
|
|
4925
4920
|
super();
|
|
4921
|
+
this._visualizeJsUrl = "";
|
|
4922
|
+
this.frameId = 0;
|
|
4926
4923
|
this.configure(params);
|
|
4927
4924
|
this._options = new Options(this);
|
|
4928
4925
|
this.client = client;
|
|
4929
4926
|
this._activeDragger = null;
|
|
4927
|
+
this._zoomWheelDragger = null;
|
|
4928
|
+
this._gestureManager = null;
|
|
4930
4929
|
this._renderTime = 0;
|
|
4931
4930
|
this.markup = MarkupFactory.createMarkup((_a = params.markupType) !== null && _a !== void 0 ? _a : MarkupType.Konva);
|
|
4932
4931
|
this.draggerFactory = new Map;
|
|
@@ -5064,7 +5063,7 @@ class Viewer extends EventEmitter2 {
|
|
|
5064
5063
|
});
|
|
5065
5064
|
return this;
|
|
5066
5065
|
}
|
|
5067
|
-
update(force) {
|
|
5066
|
+
update(force = false) {
|
|
5068
5067
|
var _a, _b;
|
|
5069
5068
|
if (this._enableAutoUpdate) {
|
|
5070
5069
|
if (force) {
|
|
@@ -5328,6 +5327,7 @@ class Viewer extends EventEmitter2 {
|
|
|
5328
5327
|
async loadReferences(model) {
|
|
5329
5328
|
var _a;
|
|
5330
5329
|
if (!this.visualizeJs) return this;
|
|
5330
|
+
if (!this.client) return this;
|
|
5331
5331
|
const abortController = new AbortController;
|
|
5332
5332
|
(_a = this._abortControllerForReferences) === null || _a === void 0 ? void 0 : _a.abort();
|
|
5333
5333
|
this._abortControllerForReferences = abortController;
|
|
@@ -5364,7 +5364,7 @@ class Viewer extends EventEmitter2 {
|
|
|
5364
5364
|
file: file,
|
|
5365
5365
|
model: file
|
|
5366
5366
|
});
|
|
5367
|
-
let model;
|
|
5367
|
+
let model = undefined;
|
|
5368
5368
|
if (file) {
|
|
5369
5369
|
const models = await file.getModels() || [];
|
|
5370
5370
|
model = models.find((model => model.default)) || models[0];
|