@inweb/viewer-visualize 26.7.0 → 26.7.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/dist/viewer-visualize.js +207 -40
- package/dist/viewer-visualize.js.map +1 -1
- package/dist/viewer-visualize.min.js +1 -1
- package/dist/viewer-visualize.module.js +124 -27
- package/dist/viewer-visualize.module.js.map +1 -1
- package/lib/Viewer/Draggers/index.d.ts +1 -2
- package/lib/Viewer/Loaders/FileLoader.d.ts +10 -0
- package/lib/Viewer/Loaders/VSFFileLoader.d.ts +8 -0
- package/lib/Viewer/Loaders/VSFXFileLoader.d.ts +8 -0
- package/lib/Viewer/Loaders/index.d.ts +2 -3
- package/lib/Viewer/Viewer.d.ts +63 -12
- package/lib/index.d.ts +6 -5
- package/package.json +5 -5
- package/src/Viewer/Draggers/index.ts +1 -3
- package/src/Viewer/Loaders/FileLoader.ts +108 -0
- package/src/Viewer/Loaders/{VSFBufferLoader.ts → VSFFileLoader.ts} +25 -9
- package/src/Viewer/Loaders/{VSFXBufferLoader.ts → VSFXFileLoader.ts} +25 -9
- package/src/Viewer/Loaders/index.ts +6 -7
- package/src/Viewer/Viewer.ts +83 -18
- package/src/index.ts +6 -5
- package/lib/Viewer/Loaders/VSFBufferLoader.d.ts +0 -8
- package/lib/Viewer/Loaders/VSFXBufferLoader.d.ts +0 -8
|
@@ -2425,35 +2425,121 @@ components.registerComponent("ZoomWheelComponent", (viewer => new ZoomWheelCompo
|
|
|
2425
2425
|
|
|
2426
2426
|
components.registerComponent("GestureManagerComponent", (viewer => new GestureManagerComponent(viewer)));
|
|
2427
2427
|
|
|
2428
|
-
class
|
|
2428
|
+
class FileLoader {
|
|
2429
|
+
constructor() {
|
|
2430
|
+
this.requestHeader = {};
|
|
2431
|
+
this.withCredentials = false;
|
|
2432
|
+
this.abortSignal = undefined;
|
|
2433
|
+
}
|
|
2434
|
+
setRequestHeader(requestHeader) {
|
|
2435
|
+
this.requestHeader = requestHeader;
|
|
2436
|
+
}
|
|
2437
|
+
setWithCredentials(withCredentials) {
|
|
2438
|
+
this.withCredentials = withCredentials;
|
|
2439
|
+
}
|
|
2440
|
+
setAbortSignal(abortSignal) {
|
|
2441
|
+
this.abortSignal = abortSignal;
|
|
2442
|
+
}
|
|
2443
|
+
load(file, onProgress) {
|
|
2444
|
+
if (typeof file === "string") {
|
|
2445
|
+
const request = new Request(file, {
|
|
2446
|
+
headers: new Headers(this.requestHeader),
|
|
2447
|
+
credentials: this.withCredentials ? "include" : "same-origin",
|
|
2448
|
+
signal: this.abortSignal
|
|
2449
|
+
});
|
|
2450
|
+
return fetch(request).then((response => {
|
|
2451
|
+
if (!response.ok) throw new Error(`Failed to fetch "${response.url}", status ${response.status}`);
|
|
2452
|
+
const contentLength = response.headers.get("X-File-Size") || response.headers.get("Content-Length");
|
|
2453
|
+
const total = parseInt(contentLength || "", 10) || 0;
|
|
2454
|
+
const lengthComputable = total > 0;
|
|
2455
|
+
const stream = new ReadableStream({
|
|
2456
|
+
async start(controller) {
|
|
2457
|
+
const reader = response.body.getReader();
|
|
2458
|
+
let loaded = 0;
|
|
2459
|
+
try {
|
|
2460
|
+
while (true) {
|
|
2461
|
+
const {done: done, value: value} = await reader.read();
|
|
2462
|
+
if (done) break;
|
|
2463
|
+
if (onProgress) {
|
|
2464
|
+
loaded += value.byteLength;
|
|
2465
|
+
onProgress(new ProgressEvent("progress", {
|
|
2466
|
+
lengthComputable: lengthComputable,
|
|
2467
|
+
loaded: loaded,
|
|
2468
|
+
total: total
|
|
2469
|
+
}));
|
|
2470
|
+
}
|
|
2471
|
+
controller.enqueue(value);
|
|
2472
|
+
}
|
|
2473
|
+
controller.close();
|
|
2474
|
+
} catch (e) {
|
|
2475
|
+
controller.error(e);
|
|
2476
|
+
}
|
|
2477
|
+
}
|
|
2478
|
+
});
|
|
2479
|
+
return new Response(stream);
|
|
2480
|
+
})).then((response => response.arrayBuffer()));
|
|
2481
|
+
}
|
|
2482
|
+
if (file instanceof globalThis.File) {
|
|
2483
|
+
return new Promise(((resolve, reject) => {
|
|
2484
|
+
const reader = new FileReader;
|
|
2485
|
+
reader.onload = () => resolve(reader.result);
|
|
2486
|
+
reader.onerror = () => reject(reader.error);
|
|
2487
|
+
reader.onprogress = onProgress;
|
|
2488
|
+
reader.readAsArrayBuffer(new Blob([ file ]));
|
|
2489
|
+
}));
|
|
2490
|
+
}
|
|
2491
|
+
if (onProgress) {
|
|
2492
|
+
const total = file.byteLength;
|
|
2493
|
+
const lengthComputable = total > 0;
|
|
2494
|
+
const loaded = total;
|
|
2495
|
+
onProgress(new ProgressEvent("progress", {
|
|
2496
|
+
lengthComputable: lengthComputable,
|
|
2497
|
+
loaded: loaded,
|
|
2498
|
+
total: total
|
|
2499
|
+
}));
|
|
2500
|
+
}
|
|
2501
|
+
return Promise.resolve(file);
|
|
2502
|
+
}
|
|
2503
|
+
}
|
|
2504
|
+
|
|
2505
|
+
class VSFFileLoader extends Loader {
|
|
2429
2506
|
constructor(viewer) {
|
|
2430
2507
|
super();
|
|
2431
2508
|
this.viewer = viewer;
|
|
2432
2509
|
}
|
|
2433
2510
|
isSupport(file, format) {
|
|
2434
|
-
return file instanceof ArrayBuffer && /vsf$/i.test(format);
|
|
2511
|
+
return (typeof file === "string" || file instanceof globalThis.File || file instanceof ArrayBuffer) && /vsf$/i.test(format);
|
|
2435
2512
|
}
|
|
2436
|
-
load(
|
|
2437
|
-
if (!this.viewer.visualizeJs) return
|
|
2513
|
+
async load(file, format, params) {
|
|
2514
|
+
if (!this.viewer.visualizeJs) return this;
|
|
2515
|
+
const progress = event => {
|
|
2516
|
+
const {lengthComputable: lengthComputable, loaded: loaded, total: total} = event;
|
|
2517
|
+
const progress = lengthComputable ? loaded / total : 1;
|
|
2518
|
+
this.viewer.emitEvent({
|
|
2519
|
+
type: "geometryprogress",
|
|
2520
|
+
data: progress,
|
|
2521
|
+
file: file
|
|
2522
|
+
});
|
|
2523
|
+
};
|
|
2524
|
+
const loader = new FileLoader;
|
|
2525
|
+
loader.setRequestHeader(params.requestHeader);
|
|
2526
|
+
loader.setWithCredentials(params.withCredentials);
|
|
2527
|
+
loader.setAbortSignal(this.abortController.signal);
|
|
2528
|
+
const buffer = await loader.load(file, progress);
|
|
2529
|
+
const data = new Uint8Array(buffer);
|
|
2438
2530
|
const visLib = this.viewer.visLib();
|
|
2439
2531
|
const visViewer = visLib.getViewer();
|
|
2440
|
-
const data = new Uint8Array(buffer);
|
|
2441
2532
|
visViewer.parseFile(data);
|
|
2442
2533
|
this.viewer.syncOpenCloudVisualStyle(false);
|
|
2443
2534
|
this.viewer.syncOptions();
|
|
2444
2535
|
this.viewer.syncOverlay();
|
|
2445
2536
|
this.viewer.resize();
|
|
2446
|
-
this.viewer.emitEvent({
|
|
2447
|
-
type: "geometryprogress",
|
|
2448
|
-
data: 1,
|
|
2449
|
-
file: buffer
|
|
2450
|
-
});
|
|
2451
2537
|
this.viewer.emitEvent({
|
|
2452
2538
|
type: "databasechunk",
|
|
2453
2539
|
data: data,
|
|
2454
|
-
file:
|
|
2540
|
+
file: file
|
|
2455
2541
|
});
|
|
2456
|
-
return
|
|
2542
|
+
return this;
|
|
2457
2543
|
}
|
|
2458
2544
|
}
|
|
2459
2545
|
|
|
@@ -2513,35 +2599,44 @@ class VSFCloudLoader extends Loader {
|
|
|
2513
2599
|
}
|
|
2514
2600
|
}
|
|
2515
2601
|
|
|
2516
|
-
class
|
|
2602
|
+
class VSFXFileLoader extends Loader {
|
|
2517
2603
|
constructor(viewer) {
|
|
2518
2604
|
super();
|
|
2519
2605
|
this.viewer = viewer;
|
|
2520
2606
|
}
|
|
2521
2607
|
isSupport(file, format) {
|
|
2522
|
-
return file instanceof ArrayBuffer && /vsfx$/i.test(format);
|
|
2608
|
+
return (typeof file === "string" || file instanceof globalThis.File || file instanceof ArrayBuffer) && /vsfx$/i.test(format);
|
|
2523
2609
|
}
|
|
2524
|
-
load(
|
|
2525
|
-
if (!this.viewer.visualizeJs) return
|
|
2610
|
+
async load(file, format, params) {
|
|
2611
|
+
if (!this.viewer.visualizeJs) return this;
|
|
2612
|
+
const progress = event => {
|
|
2613
|
+
const {lengthComputable: lengthComputable, loaded: loaded, total: total} = event;
|
|
2614
|
+
const progress = lengthComputable ? loaded / total : 1;
|
|
2615
|
+
this.viewer.emitEvent({
|
|
2616
|
+
type: "geometryprogress",
|
|
2617
|
+
data: progress,
|
|
2618
|
+
file: file
|
|
2619
|
+
});
|
|
2620
|
+
};
|
|
2621
|
+
const loader = new FileLoader;
|
|
2622
|
+
loader.setRequestHeader(params.requestHeader);
|
|
2623
|
+
loader.setWithCredentials(params.withCredentials);
|
|
2624
|
+
loader.setAbortSignal(this.abortController.signal);
|
|
2625
|
+
const buffer = await loader.load(file, progress);
|
|
2626
|
+
const data = new Uint8Array(buffer);
|
|
2526
2627
|
const visLib = this.viewer.visLib();
|
|
2527
2628
|
const visViewer = visLib.getViewer();
|
|
2528
|
-
const data = new Uint8Array(buffer);
|
|
2529
2629
|
visViewer.parseVsfx(data);
|
|
2530
2630
|
this.viewer.syncOpenCloudVisualStyle(false);
|
|
2531
2631
|
this.viewer.syncOptions();
|
|
2532
2632
|
this.viewer.syncOverlay();
|
|
2533
2633
|
this.viewer.resize();
|
|
2534
|
-
this.viewer.emitEvent({
|
|
2535
|
-
type: "geometryprogress",
|
|
2536
|
-
data: 1,
|
|
2537
|
-
file: buffer
|
|
2538
|
-
});
|
|
2539
2634
|
this.viewer.emitEvent({
|
|
2540
2635
|
type: "databasechunk",
|
|
2541
2636
|
data: data,
|
|
2542
|
-
file:
|
|
2637
|
+
file: file
|
|
2543
2638
|
});
|
|
2544
|
-
return
|
|
2639
|
+
return this;
|
|
2545
2640
|
}
|
|
2546
2641
|
}
|
|
2547
2642
|
|
|
@@ -2875,11 +2970,11 @@ class VSFXCloudPartialLoader extends Loader {
|
|
|
2875
2970
|
|
|
2876
2971
|
const loaders = loadersRegistry("visualizejs");
|
|
2877
2972
|
|
|
2878
|
-
loaders.registerLoader("vsf-
|
|
2973
|
+
loaders.registerLoader("vsf-file", (viewer => new VSFFileLoader(viewer)));
|
|
2879
2974
|
|
|
2880
2975
|
loaders.registerLoader("vsf-cloud", (viewer => new VSFCloudLoader(viewer)));
|
|
2881
2976
|
|
|
2882
|
-
loaders.registerLoader("vsfx-
|
|
2977
|
+
loaders.registerLoader("vsfx-file", (viewer => new VSFXFileLoader(viewer)));
|
|
2883
2978
|
|
|
2884
2979
|
loaders.registerLoader("vsfx-cloud", (viewer => new VSFXCloudLoader(viewer)));
|
|
2885
2980
|
|
|
@@ -3835,6 +3930,7 @@ class Viewer extends EventEmitter2 {
|
|
|
3835
3930
|
return this;
|
|
3836
3931
|
}
|
|
3837
3932
|
openVsfFile(buffer) {
|
|
3933
|
+
console.warn("Viewer.openVsfFile() has been deprecated since 26.4 and will be removed in a future release, use Viewer.open() instead.");
|
|
3838
3934
|
if (!this.visualizeJs) return this;
|
|
3839
3935
|
this.cancel();
|
|
3840
3936
|
this.clear();
|
|
@@ -3880,6 +3976,7 @@ class Viewer extends EventEmitter2 {
|
|
|
3880
3976
|
return this;
|
|
3881
3977
|
}
|
|
3882
3978
|
openVsfxFile(buffer) {
|
|
3979
|
+
console.warn("Viewer.openVsfxFile() has been deprecated since 26.4 and will be removed in a future release, use Viewer.open() instead.");
|
|
3883
3980
|
if (!this.visualizeJs) return this;
|
|
3884
3981
|
this.cancel();
|
|
3885
3982
|
this.clear();
|
|
@@ -4097,5 +4194,5 @@ class Viewer extends EventEmitter2 {
|
|
|
4097
4194
|
}
|
|
4098
4195
|
}
|
|
4099
4196
|
|
|
4100
|
-
export { OdBaseDragger, Viewer, commands, components, draggers, loaders };
|
|
4197
|
+
export { FileLoader, OdBaseDragger, Viewer, commands, components, draggers, loaders };
|
|
4101
4198
|
//# sourceMappingURL=viewer-visualize.module.js.map
|