@inweb/viewer-visualize 27.1.3 → 27.1.5

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.
@@ -251,6 +251,8 @@
251
251
  rulerUnit: "Default",
252
252
  rulerPrecision: 2,
253
253
  cameraMode: "perspective",
254
+ snapshotMimeType: "image/jpeg",
255
+ snapshotQuality: 0.25,
254
256
  };
255
257
  }
256
258
  class Options {
@@ -2956,11 +2958,16 @@
2956
2958
  viewer.clearSlices();
2957
2959
  }
2958
2960
 
2959
- function createPreview(viewer, type = "image/jpeg", encoderOptions = 0.25) {
2960
- var _a;
2961
+ function getSnapshot(viewer, type, quality) {
2962
+ var _a, _b, _c;
2961
2963
  if (!viewer.visualizeJs)
2962
2964
  return "";
2963
- return ((_a = viewer.canvas) === null || _a === void 0 ? void 0 : _a.toDataURL(type, encoderOptions)) || "";
2965
+ const mimeType = (_a = type !== null && type !== void 0 ? type : viewer.options.snapshotMimeType) !== null && _a !== void 0 ? _a : "image/jpeg";
2966
+ const imageQuality = (_b = quality !== null && quality !== void 0 ? quality : viewer.options.snapshotQuality) !== null && _b !== void 0 ? _b : 0.25;
2967
+ if (viewer.markup) {
2968
+ return viewer.markup.getSnapshot(mimeType, imageQuality);
2969
+ }
2970
+ return ((_c = viewer.canvas) === null || _c === void 0 ? void 0 : _c.toDataURL(mimeType, imageQuality)) || "";
2964
2971
  }
2965
2972
 
2966
2973
  function explode(viewer, index = 0) {
@@ -3265,7 +3272,7 @@
3265
3272
  commands.registerCommand("clearMarkup", clearMarkup);
3266
3273
  commands.registerCommand("clearSelected", clearSelected);
3267
3274
  commands.registerCommand("clearSlices", clearSlices);
3268
- commands.registerCommand("createPreview", createPreview);
3275
+ commands.registerCommand("getSnapshot", getSnapshot);
3269
3276
  commands.registerCommand("explode", explode);
3270
3277
  commands.registerCommand("collect", collect);
3271
3278
  commands.registerCommand("getDefaultViewPositions", getDefaultViewPositions);
@@ -3299,6 +3306,7 @@
3299
3306
  commands.registerCommand("k3DViewNW", (viewer) => setDefaultViewPosition(viewer, "k3DViewNW"));
3300
3307
  commands.registerCommandAlias("clearMarkup", "clearOverlay");
3301
3308
  commands.registerCommandAlias("clearSelected", "unselect");
3309
+ commands.registerCommandAlias("getSnapshot", "createPreview");
3302
3310
  commands.registerCommandAlias("zoomToExtents", "zoomExtents");
3303
3311
 
3304
3312
  class CameraComponent {
@@ -3434,22 +3442,7 @@
3434
3442
  }
3435
3443
  }
3436
3444
 
3437
- class RenderLoopComponent {
3438
- constructor(viewer) {
3439
- this.animate = (time) => {
3440
- this.requestId = requestAnimationFrame(this.animate);
3441
- this.viewer.render(time);
3442
- this.viewer.emitEvent({ type: "animate", time });
3443
- };
3444
- this.viewer = viewer;
3445
- this.requestId = requestAnimationFrame(this.animate);
3446
- }
3447
- dispose() {
3448
- cancelAnimationFrame(this.requestId);
3449
- }
3450
- }
3451
-
3452
- class ResizeCanvasComponent {
3445
+ class CanvasResizeComponent {
3453
3446
  constructor(viewer) {
3454
3447
  this.resizeViewer = (entries) => {
3455
3448
  const { width, height } = entries[0].contentRect;
@@ -3466,6 +3459,46 @@
3466
3459
  }
3467
3460
  }
3468
3461
 
3462
+ class CanvasRemoveComponent {
3463
+ constructor(viewer) {
3464
+ this.cleanupViewer = (mutations) => {
3465
+ for (const mutation of mutations) {
3466
+ if (mutation.type === "childList" && mutation.removedNodes.length > 0) {
3467
+ for (const node of mutation.removedNodes) {
3468
+ if (node === this.viewer.canvas || node.contains(this.viewer.canvas)) {
3469
+ this.viewer.emitEvent({ type: "canvasremoved" });
3470
+ this.viewer.dispose();
3471
+ return;
3472
+ }
3473
+ }
3474
+ }
3475
+ }
3476
+ };
3477
+ this.viewer = viewer;
3478
+ this.mutationObserver = new MutationObserver(this.cleanupViewer);
3479
+ this.mutationObserver.observe(document, { childList: true, subtree: true });
3480
+ }
3481
+ dispose() {
3482
+ this.mutationObserver.disconnect();
3483
+ this.mutationObserver = undefined;
3484
+ }
3485
+ }
3486
+
3487
+ class RenderLoopComponent {
3488
+ constructor(viewer) {
3489
+ this.animate = (time) => {
3490
+ this.requestId = requestAnimationFrame(this.animate);
3491
+ this.viewer.render(time);
3492
+ this.viewer.emitEvent({ type: "animate", time });
3493
+ };
3494
+ this.viewer = viewer;
3495
+ this.requestId = requestAnimationFrame(this.animate);
3496
+ }
3497
+ dispose() {
3498
+ cancelAnimationFrame(this.requestId);
3499
+ }
3500
+ }
3501
+
3469
3502
  class ZoomWheelComponent {
3470
3503
  constructor(viewer) {
3471
3504
  this.viewer = viewer;
@@ -3720,7 +3753,8 @@
3720
3753
  const components = componentsRegistry("visualizejs");
3721
3754
  components.registerComponent("CameraComponent", (viewer) => new CameraComponent(viewer));
3722
3755
  components.registerComponent("InfoComponent", (viewer) => new InfoComponent(viewer));
3723
- components.registerComponent("ResizeCanvasComponent", (viewer) => new ResizeCanvasComponent(viewer));
3756
+ components.registerComponent("CanvasResizeComponent", (viewer) => new CanvasResizeComponent(viewer));
3757
+ components.registerComponent("CanvasRemoveComponent", (viewer) => new CanvasRemoveComponent(viewer));
3724
3758
  components.registerComponent("RenderLoopComponent", (viewer) => new RenderLoopComponent(viewer));
3725
3759
  components.registerComponent("ZoomWheelComponent", (viewer) => new ZoomWheelComponent(viewer));
3726
3760
  components.registerComponent("GestureManagerComponent", (viewer) => new GestureManagerComponent(viewer));
@@ -17128,10 +17162,22 @@ js: import "konva/skia-backend";
17128
17162
  viewpoint.ellipses = this.getMarkupEllipses();
17129
17163
  viewpoint.images = this.getMarkupImages();
17130
17164
  viewpoint.rectangles = this.getMarkupRectangles();
17131
- viewpoint.snapshot = { data: this.combineMarkupWithDrawing() };
17132
17165
  viewpoint.custom_fields.markup_color = this.getMarkupColor();
17133
17166
  return viewpoint;
17134
17167
  }
17168
+ getSnapshot(type = "image/jpeg", quality = 0.25) {
17169
+ this.clearSelected();
17170
+ const tempCanvas = document.createElement("canvas");
17171
+ if (this._konvaStage) {
17172
+ tempCanvas.width = this._konvaStage.width();
17173
+ tempCanvas.height = this._konvaStage.height();
17174
+ const ctx = tempCanvas.getContext("2d");
17175
+ if (this._container instanceof HTMLCanvasElement)
17176
+ ctx.drawImage(this._container, 0, 0);
17177
+ ctx.drawImage(this._konvaStage.toCanvas({ pixelRatio: window.devicePixelRatio }), 0, 0);
17178
+ }
17179
+ return tempCanvas.toDataURL(type, quality);
17180
+ }
17135
17181
  enableEditMode(mode) {
17136
17182
  if (!mode || !MarkupMode2Konva[mode]) {
17137
17183
  this.clearSelected();
@@ -17568,19 +17614,6 @@ js: import "konva/skia-backend";
17568
17614
  });
17569
17615
  return clouds;
17570
17616
  }
17571
- combineMarkupWithDrawing() {
17572
- this.clearSelected();
17573
- const tempCanvas = document.createElement("canvas");
17574
- if (this._konvaStage) {
17575
- tempCanvas.width = this._konvaStage.width();
17576
- tempCanvas.height = this._konvaStage.height();
17577
- const ctx = tempCanvas.getContext("2d");
17578
- if (this._container instanceof HTMLCanvasElement)
17579
- ctx.drawImage(this._container, 0, 0);
17580
- ctx.drawImage(this._konvaStage.toCanvas({ pixelRatio: window.devicePixelRatio }), 0, 0);
17581
- }
17582
- return tempCanvas.toDataURL("image/jpeg", 0.25);
17583
- }
17584
17617
  addLine(linePoints, color, type, width, id) {
17585
17618
  if (!linePoints || linePoints.length === 0)
17586
17619
  return;
@@ -18008,7 +18041,6 @@ js: import "konva/skia-backend";
18008
18041
  function getLogicalPoint3dFromArray(array) {
18009
18042
  return { x: array[0], y: array[1], z: array[2] };
18010
18043
  }
18011
- const visLib = this._viewer.visLib();
18012
18044
  const visViewer = this._viewer.visViewer();
18013
18045
  if (!viewpoint)
18014
18046
  viewpoint = { custom_fields: {} };
@@ -18053,10 +18085,16 @@ js: import "konva/skia-backend";
18053
18085
  entityPtr.delete();
18054
18086
  }
18055
18087
  itr.delete();
18056
- viewpoint.snapshot = { data: visLib.canvas.toDataURL("image/jpeg", 0.25) };
18057
18088
  viewpoint.custom_fields.markup_color = this.getMarkupColor();
18058
18089
  return viewpoint;
18059
18090
  }
18091
+ getSnapshot(type = "image/jpeg", quality = 0.25) {
18092
+ var _a;
18093
+ if (!this._viewer.visualizeJs)
18094
+ return "";
18095
+ const visLib = this._viewer.visLib();
18096
+ return ((_a = visLib.canvas) === null || _a === void 0 ? void 0 : _a.toDataURL(type, quality)) || "";
18097
+ }
18060
18098
  enableEditMode(mode) {
18061
18099
  return this;
18062
18100
  }
@@ -18773,11 +18811,15 @@ js: import "konva/skia-backend";
18773
18811
  viewpoint.clipping_planes = getClippingPlanes();
18774
18812
  viewpoint.selection = getSelection();
18775
18813
  viewpoint.description = new Date().toDateString();
18814
+ viewpoint.snapshot = { data: this.getSnapshot() };
18776
18815
  this._markup.getViewpoint(viewpoint);
18777
18816
  viewpoint.custom_fields.selection2 = getSelection2();
18778
18817
  this.emitEvent({ type: "createviewpoint", data: viewpoint });
18779
18818
  return viewpoint;
18780
18819
  }
18820
+ getSnapshot(type, quality) {
18821
+ return this.executeCommand("getSnapshot", type, quality);
18822
+ }
18781
18823
  screenToWorld(position) {
18782
18824
  if (!this.visualizeJs)
18783
18825
  return { x: position.x, y: position.y, z: 0 };