@vertexvis/viewer 0.23.6-canary.9 → 0.23.6-testing.0

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.
@@ -1786,7 +1786,144 @@ const loadModule = (cmpMeta, hostRef, hmrVersionId) => {
1786
1786
  if (module) {
1787
1787
  return module[exportName];
1788
1788
  }
1789
- /*!__STENCIL_STATIC_IMPORT_SWITCH__*/
1789
+
1790
+ if (!hmrVersionId || !BUILD.hotModuleReplacement) {
1791
+ const processMod = importedModule => {
1792
+ cmpModules.set(bundleId, importedModule);
1793
+ return importedModule[exportName];
1794
+ }
1795
+ switch(bundleId) {
1796
+
1797
+ case 'vertex-scene-tree.cjs':
1798
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1799
+ /* webpackMode: "lazy" */
1800
+ './vertex-scene-tree.cjs.entry.js')); }).then(processMod, consoleError);
1801
+ case 'vertex-scene-tree-table-cell.cjs':
1802
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1803
+ /* webpackMode: "lazy" */
1804
+ './vertex-scene-tree-table-cell.cjs.entry.js')); }).then(processMod, consoleError);
1805
+ case 'vertex-scene-tree-table-column.cjs':
1806
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1807
+ /* webpackMode: "lazy" */
1808
+ './vertex-scene-tree-table-column.cjs.entry.js')); }).then(processMod, consoleError);
1809
+ case 'vertex-scene-tree-table-header.cjs':
1810
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1811
+ /* webpackMode: "lazy" */
1812
+ './vertex-scene-tree-table-header.cjs.entry.js')); }).then(processMod, consoleError);
1813
+ case 'vertex-scene-tree-table-resize-divider.cjs':
1814
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1815
+ /* webpackMode: "lazy" */
1816
+ './vertex-scene-tree-table-resize-divider.cjs.entry.js')); }).then(processMod, consoleError);
1817
+ case 'vertex-scene-tree-toolbar-group.cjs':
1818
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1819
+ /* webpackMode: "lazy" */
1820
+ './vertex-scene-tree-toolbar-group.cjs.entry.js')); }).then(processMod, consoleError);
1821
+ case 'vertex-viewer.cjs':
1822
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1823
+ /* webpackMode: "lazy" */
1824
+ './vertex-viewer.cjs.entry.js')); }).then(processMod, consoleError);
1825
+ case 'vertex-viewer-annotation-callout.cjs':
1826
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1827
+ /* webpackMode: "lazy" */
1828
+ './vertex-viewer-annotation-callout.cjs.entry.js')); }).then(processMod, consoleError);
1829
+ case 'vertex-viewer-box-query-tool.cjs':
1830
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1831
+ /* webpackMode: "lazy" */
1832
+ './vertex-viewer-box-query-tool.cjs.entry.js')); }).then(processMod, consoleError);
1833
+ case 'vertex-viewer-default-toolbar.cjs':
1834
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1835
+ /* webpackMode: "lazy" */
1836
+ './vertex-viewer-default-toolbar.cjs.entry.js')); }).then(processMod, consoleError);
1837
+ case 'vertex-viewer-hit-result-indicator.cjs':
1838
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1839
+ /* webpackMode: "lazy" */
1840
+ './vertex-viewer-hit-result-indicator.cjs.entry.js')); }).then(processMod, consoleError);
1841
+ case 'vertex-viewer-markup.cjs':
1842
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1843
+ /* webpackMode: "lazy" */
1844
+ './vertex-viewer-markup.cjs.entry.js')); }).then(processMod, consoleError);
1845
+ case 'vertex-viewer-markup-tool.cjs':
1846
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1847
+ /* webpackMode: "lazy" */
1848
+ './vertex-viewer-markup-tool.cjs.entry.js')); }).then(processMod, consoleError);
1849
+ case 'vertex-viewer-measurement-details.cjs':
1850
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1851
+ /* webpackMode: "lazy" */
1852
+ './vertex-viewer-measurement-details.cjs.entry.js')); }).then(processMod, consoleError);
1853
+ case 'vertex-viewer-measurement-distance.cjs':
1854
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1855
+ /* webpackMode: "lazy" */
1856
+ './vertex-viewer-measurement-distance.cjs.entry.js')); }).then(processMod, consoleError);
1857
+ case 'vertex-viewer-measurement-precise.cjs':
1858
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1859
+ /* webpackMode: "lazy" */
1860
+ './vertex-viewer-measurement-precise.cjs.entry.js')); }).then(processMod, consoleError);
1861
+ case 'vertex-viewer-pin-tool.cjs':
1862
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1863
+ /* webpackMode: "lazy" */
1864
+ './vertex-viewer-pin-tool.cjs.entry.js')); }).then(processMod, consoleError);
1865
+ case 'vertex-viewer-transform-widget.cjs':
1866
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1867
+ /* webpackMode: "lazy" */
1868
+ './vertex-viewer-transform-widget.cjs.entry.js')); }).then(processMod, consoleError);
1869
+ case 'vertex-viewer-view-cube.cjs':
1870
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1871
+ /* webpackMode: "lazy" */
1872
+ './vertex-viewer-view-cube.cjs.entry.js')); }).then(processMod, consoleError);
1873
+ case 'vertex-viewer-walk-mode-tool.cjs':
1874
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1875
+ /* webpackMode: "lazy" */
1876
+ './vertex-viewer-walk-mode-tool.cjs.entry.js')); }).then(processMod, consoleError);
1877
+ case 'vertex-scene-tree-notification-banner_4.cjs':
1878
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1879
+ /* webpackMode: "lazy" */
1880
+ './vertex-scene-tree-notification-banner_4.cjs.entry.js')); }).then(processMod, consoleError);
1881
+ case 'vertex-viewer-button_3.cjs':
1882
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1883
+ /* webpackMode: "lazy" */
1884
+ './vertex-viewer-button_3.cjs.entry.js')); }).then(processMod, consoleError);
1885
+ case 'vertex-viewer-dom-group.cjs':
1886
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1887
+ /* webpackMode: "lazy" */
1888
+ './vertex-viewer-dom-group.cjs.entry.js')); }).then(processMod, consoleError);
1889
+ case 'vertex-viewer-pin-group.cjs':
1890
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1891
+ /* webpackMode: "lazy" */
1892
+ './vertex-viewer-pin-group.cjs.entry.js')); }).then(processMod, consoleError);
1893
+ case 'vertex-viewer-teleport-tool.cjs':
1894
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1895
+ /* webpackMode: "lazy" */
1896
+ './vertex-viewer-teleport-tool.cjs.entry.js')); }).then(processMod, consoleError);
1897
+ case 'vertex-viewer-dom-element_2.cjs':
1898
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1899
+ /* webpackMode: "lazy" */
1900
+ './vertex-viewer-dom-element_2.cjs.entry.js')); }).then(processMod, consoleError);
1901
+ case 'vertex-viewer-markup-arrow_3.cjs':
1902
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1903
+ /* webpackMode: "lazy" */
1904
+ './vertex-viewer-markup-arrow_3.cjs.entry.js')); }).then(processMod, consoleError);
1905
+ case 'vertex-viewer-measurement-line_2.cjs':
1906
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1907
+ /* webpackMode: "lazy" */
1908
+ './vertex-viewer-measurement-line_2.cjs.entry.js')); }).then(processMod, consoleError);
1909
+ case 'vertex-viewer-pin-label_2.cjs':
1910
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1911
+ /* webpackMode: "lazy" */
1912
+ './vertex-viewer-pin-label_2.cjs.entry.js')); }).then(processMod, consoleError);
1913
+ case 'vertex-viewer-spinner.cjs':
1914
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1915
+ /* webpackMode: "lazy" */
1916
+ './vertex-viewer-spinner.cjs.entry.js')); }).then(processMod, consoleError);
1917
+ case 'vertex-viewer-layer.cjs':
1918
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1919
+ /* webpackMode: "lazy" */
1920
+ './vertex-viewer-layer.cjs.entry.js')); }).then(processMod, consoleError);
1921
+ case 'vertex-viewer-icon.cjs':
1922
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1923
+ /* webpackMode: "lazy" */
1924
+ './vertex-viewer-icon.cjs.entry.js')); }).then(processMod, consoleError);
1925
+ }
1926
+ }
1790
1927
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
1791
1928
  /* @vite-ignore */
1792
1929
  /* webpackInclude: /\.entry\.js$/ */
@@ -758,14 +758,72 @@ class InteractionApi {
758
758
  * values zoom out.
759
759
  */
760
760
  async zoomCamera(delta) {
761
- return this.transformCamera(({ camera, viewport }) => {
762
- const vv = camera.viewVector;
763
- const v = bundle_esm.vector3.normalize(vv);
764
- const distance = bundle_esm.vector3.magnitude(vv);
765
- const epsilon = (3 * distance * delta) / viewport.height;
766
- const position = bundle_esm.vector3.add(camera.position, bundle_esm.vector3.scale(epsilon, v));
767
- const newCamera = camera.update({ position });
768
- return newCamera;
761
+ return this.transformCamera(({ camera, viewport, frame, boundingBox }) => {
762
+ if (viewport != null && frame != null) {
763
+ const isPerspective = camera === null || camera === void 0 ? void 0 : camera.toFrameCamera().isPerspective();
764
+ if (isPerspective) {
765
+ const vv = camera.viewVector;
766
+ // Calculate the unit-less scalar determining the amount to zoom. The delta parameter
767
+ // is scaled by the viewport height because if the viewport is larger, then the
768
+ // user should have to perform a bigger action to zoom the model the same amount.
769
+ // Note that delta and viewport.height both have units of pixels. Further, the
770
+ // 3 multiplier was chosen to match the desired zoom speed.
771
+ const distance = bundle_esm.vector3.magnitude(vv);
772
+ const relativeDeltaToViewportHeight = 3 * distance * (delta / viewport.height);
773
+ // Scale the current viewVector by the scalar calculated above to determine how to adjust the camera position
774
+ const v = bundle_esm.vector3.normalize(vv);
775
+ const positionChange = bundle_esm.vector3.scale(relativeDeltaToViewportHeight, v);
776
+ // Calculate the new camera position
777
+ const position = bundle_esm.vector3.add(camera.position, positionChange);
778
+ // Update the camera with the new position
779
+ const newCamera = camera.update({ position });
780
+ return newCamera;
781
+ }
782
+ else {
783
+ // Retrieve properties of the current camera
784
+ const orthographicCamera = camera;
785
+ const frameCam = camera.toFrameCamera();
786
+ const dir = frameCam.direction;
787
+ const ray = viewport.transformPointToRay(viewport.center, frame.image, frameCam);
788
+ // Calculate the unit-less scalar determining the amount to zoom. The delta parameter
789
+ // is scaled by the viewport height because if the viewport is larger, then the
790
+ // user should have to perform a bigger action to zoom the model the same amount.
791
+ // Note that delta and viewport.height both have units of pixels. Further, the
792
+ // 4 multiplier was chosen to match the desired zoom speed.
793
+ const relativeDeltaToViewportHeight = 4 * (delta / viewport.height);
794
+ // Calculate the fovHeight after performing the zoom. zoomedFovHeight has the
795
+ // same units of camera.fovHeight (the world units). The new fovHeight
796
+ // has a minimum value, which is a function of the size of the bounding box,
797
+ // which ensures the new fovHeight is a positive, non-zero number.
798
+ const minimumFovHeight = bundle_esm.vector3.magnitude(bundle_esm.boundingBox.diagonal(boundingBox)) * 1e-5;
799
+ const zoomedFovHeight = Math.max(minimumFovHeight, orthographicCamera.fovHeight * (1 - relativeDeltaToViewportHeight));
800
+ // Calculate the plane and point to zoom relative to
801
+ const planeToZoomRelativeTo = bundle_esm.plane.fromNormalAndCoplanarPoint(dir, frameCam.lookAt);
802
+ const pointToZoomRelativeTo = bundle_esm.ray.intersectPlane(ray, planeToZoomRelativeTo);
803
+ if (pointToZoomRelativeTo != null) {
804
+ // Project the current look at point onto the zoom plane
805
+ const projectedLookAt = bundle_esm.plane.projectPoint(planeToZoomRelativeTo, orthographicCamera.lookAt);
806
+ // Calculate the vector to determine how to adjust the camera's look at point.
807
+ // Ensure that the viewVector is scaled to the expected length in order to
808
+ // ensure other camera calculations are correct, for example, the occlusion
809
+ // calculations for pins.
810
+ const fovHeightRelativeChange = (orthographicCamera.fovHeight - zoomedFovHeight) /
811
+ orthographicCamera.fovHeight;
812
+ const lookAtChangeVector = bundle_esm.vector3.scale(fovHeightRelativeChange, bundle_esm.vector3.subtract(pointToZoomRelativeTo, projectedLookAt));
813
+ // Calculate the camera's new look at point
814
+ const updatedLookAt = bundle_esm.vector3.add(orthographicCamera.lookAt, lookAtChangeVector);
815
+ // Update the orthographic camera
816
+ // Note rotationPoint should match lookAt after a zoom interaction
817
+ const newCamera = camera.update({
818
+ lookAt: updatedLookAt,
819
+ rotationPoint: updatedLookAt,
820
+ fovHeight: zoomedFovHeight,
821
+ });
822
+ return newCamera;
823
+ }
824
+ }
825
+ }
826
+ return camera;
769
827
  });
770
828
  }
771
829
  /**
@@ -979,17 +1037,33 @@ class InteractionApiOrthographic extends InteractionApi {
979
1037
  }
980
1038
  if (this.orthographicZoomData != null) {
981
1039
  const { hitPt, hitPlane } = this.orthographicZoomData;
982
- // The 4 multiplier was chosen to match the desired zoom speed
983
- const relativeDelta = 4 * (camera.fovHeight / viewport.height) * delta;
984
- const fovHeight = Math.max(1, camera.fovHeight - relativeDelta);
1040
+ // Calculate the unit-less scalar determining the amount to zoom. The delta parameter
1041
+ // is scaled by the viewport height because if the viewport is larger, then the
1042
+ // user should have to perform a bigger action to zoom the model the same amount.
1043
+ // Note that delta and viewport.height both have units of pixels. Further, the
1044
+ // 4 multiplier was chosen to match the desired zoom speed.
1045
+ const relativeDeltaToViewportHeight = 4 * (delta / viewport.height);
1046
+ // Calculate the fovHeight after performing the zoom. zoomedFovHeight has the
1047
+ // same units of camera.fovHeight (the world units). The new fovHeight
1048
+ // has a minimum value, which is a function of the size of the bounding box,
1049
+ // which ensures the new fovHeight is a positive, non-zero number.
1050
+ const minimumFovHeight = bundle_esm.vector3.magnitude(bundle_esm.boundingBox.diagonal(boundingBox)) * 1e-5;
1051
+ const zoomedFovHeight = Math.max(minimumFovHeight, camera.fovHeight * (1 - relativeDeltaToViewportHeight));
1052
+ // Calculate the vector to determine how to adjust the camera's look at point.
1053
+ // Ensure that the viewVector is scaled to the expected length in order to
1054
+ // ensure other camera calculations are correct, for example, the occlusion
1055
+ // calculations for pins.
985
1056
  const projectedLookAt = bundle_esm.plane.projectPoint(hitPlane, camera.lookAt);
986
- const diff = bundle_esm.vector3.scale((camera.fovHeight - fovHeight) / camera.fovHeight, bundle_esm.vector3.subtract(hitPt, projectedLookAt));
987
- // rotationPoint should match lookAt after a zoom interaction
988
- const updatedLookAt = bundle_esm.vector3.add(camera.lookAt, diff);
1057
+ const fovHeightRelativeChange = (camera.fovHeight - zoomedFovHeight) / camera.fovHeight;
1058
+ const lookAtChangeVector = bundle_esm.vector3.scale(fovHeightRelativeChange, bundle_esm.vector3.subtract(hitPt, projectedLookAt));
1059
+ // Calculate the camera's new look at point
1060
+ const updatedLookAt = bundle_esm.vector3.add(camera.lookAt, lookAtChangeVector);
1061
+ // Return the updated camera
1062
+ // Note rotationPoint should match lookAt after a zoom interaction
989
1063
  return camera.update({
990
1064
  lookAt: updatedLookAt,
991
1065
  rotationPoint: updatedLookAt,
992
- fovHeight: Math.max(1, camera.fovHeight - relativeDelta),
1066
+ fovHeight: zoomedFovHeight,
993
1067
  });
994
1068
  }
995
1069
  return camera;