@itwin/core-frontend 5.12.0-dev.1 → 5.12.0-dev.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.
- package/CHANGELOG.md +20 -1
- package/lib/cjs/BingLocation.d.ts +1 -1
- package/lib/cjs/BingLocation.js +1 -1
- package/lib/cjs/BingLocation.js.map +1 -1
- package/lib/cjs/GraphicalEditingScope.d.ts +1 -1
- package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
- package/lib/cjs/GraphicalEditingScope.js +1 -1
- package/lib/cjs/GraphicalEditingScope.js.map +1 -1
- package/lib/cjs/HitDetail.d.ts +1 -1
- package/lib/cjs/HitDetail.d.ts.map +1 -1
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +6 -6
- package/lib/cjs/IModelConnection.js +6 -6
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IpcApp.d.ts +1 -1
- package/lib/cjs/IpcApp.js +1 -1
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/SelectionSet.d.ts +7 -7
- package/lib/cjs/SelectionSet.js +3 -3
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/ViewState.d.ts +1 -1
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js +4 -5
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +4 -4
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +20 -20
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts +2 -2
- package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeBuffers.js +2 -2
- package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ClippingProgram.d.ts +1 -1
- package/lib/cjs/internal/render/webgl/ClippingProgram.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/ClippingProgram.js +1 -1
- package/lib/cjs/internal/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ShaderProgram.d.ts +2 -2
- package/lib/cjs/internal/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/ShaderProgram.js +2 -2
- package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Technique.d.ts +3 -3
- package/lib/cjs/internal/render/webgl/Technique.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/Technique.js +3 -3
- package/lib/cjs/internal/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.d.ts +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.js +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts +2 -2
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/cjs/properties/AngleDescription.d.ts +2 -2
- package/lib/cjs/properties/AngleDescription.js +2 -2
- package/lib/cjs/properties/AngleDescription.js.map +1 -1
- package/lib/cjs/properties/FormattedQuantityDescription.d.ts +2 -2
- package/lib/cjs/properties/FormattedQuantityDescription.js +1 -1
- package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
- package/lib/cjs/properties/LengthDescription.d.ts +6 -6
- package/lib/cjs/properties/LengthDescription.js +6 -6
- package/lib/cjs/properties/LengthDescription.js.map +1 -1
- package/lib/cjs/render/Decorations.d.ts +1 -1
- package/lib/cjs/render/Decorations.d.ts.map +1 -1
- package/lib/cjs/render/Decorations.js +1 -1
- package/lib/cjs/render/Decorations.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js +1 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +1 -1
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/cjs/request/Request.d.ts +2 -2
- package/lib/cjs/request/Request.js.map +1 -1
- package/lib/cjs/tile/Tile.d.ts +1 -1
- package/lib/cjs/tile/Tile.d.ts.map +1 -1
- package/lib/cjs/tile/Tile.js +1 -1
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileTree.d.ts +1 -1
- package/lib/cjs/tile/TileTree.d.ts.map +1 -1
- package/lib/cjs/tile/TileTree.js +1 -1
- package/lib/cjs/tile/TileTree.js.map +1 -1
- package/lib/cjs/tile/TileTreeReference.d.ts +1 -1
- package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/cjs/tile/TileTreeReference.js +1 -1
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/cjs/tile/map/BingElevation.d.ts +5 -5
- package/lib/cjs/tile/map/BingElevation.js +4 -4
- package/lib/cjs/tile/map/BingElevation.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +1 -1
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/esm/BingLocation.d.ts +1 -1
- package/lib/esm/BingLocation.js +1 -1
- package/lib/esm/BingLocation.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.d.ts +1 -1
- package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
- package/lib/esm/GraphicalEditingScope.js +1 -1
- package/lib/esm/GraphicalEditingScope.js.map +1 -1
- package/lib/esm/HitDetail.d.ts +1 -1
- package/lib/esm/HitDetail.d.ts.map +1 -1
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +6 -6
- package/lib/esm/IModelConnection.js +6 -6
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IpcApp.d.ts +1 -1
- package/lib/esm/IpcApp.js +1 -1
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/SelectionSet.d.ts +7 -7
- package/lib/esm/SelectionSet.js +3 -3
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/ViewState.d.ts +1 -1
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js +5 -6
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/Viewport.d.ts +4 -4
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +20 -20
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts +2 -2
- package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeBuffers.js +2 -2
- package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/esm/internal/render/webgl/ClippingProgram.d.ts +1 -1
- package/lib/esm/internal/render/webgl/ClippingProgram.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/ClippingProgram.js +1 -1
- package/lib/esm/internal/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/esm/internal/render/webgl/ShaderProgram.d.ts +2 -2
- package/lib/esm/internal/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/ShaderProgram.js +2 -2
- package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/internal/render/webgl/Technique.d.ts +3 -3
- package/lib/esm/internal/render/webgl/Technique.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/Technique.js +3 -3
- package/lib/esm/internal/render/webgl/Technique.js.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.d.ts +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.js +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts +2 -2
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/esm/properties/AngleDescription.d.ts +2 -2
- package/lib/esm/properties/AngleDescription.js +2 -2
- package/lib/esm/properties/AngleDescription.js.map +1 -1
- package/lib/esm/properties/FormattedQuantityDescription.d.ts +2 -2
- package/lib/esm/properties/FormattedQuantityDescription.js +1 -1
- package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
- package/lib/esm/properties/LengthDescription.d.ts +6 -6
- package/lib/esm/properties/LengthDescription.js +6 -6
- package/lib/esm/properties/LengthDescription.js.map +1 -1
- package/lib/esm/render/Decorations.d.ts +1 -1
- package/lib/esm/render/Decorations.d.ts.map +1 -1
- package/lib/esm/render/Decorations.js +1 -1
- package/lib/esm/render/Decorations.js.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +1 -1
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +1 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/esm/request/Request.d.ts +2 -2
- package/lib/esm/request/Request.js.map +1 -1
- package/lib/esm/tile/Tile.d.ts +1 -1
- package/lib/esm/tile/Tile.d.ts.map +1 -1
- package/lib/esm/tile/Tile.js +1 -1
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileTree.d.ts +1 -1
- package/lib/esm/tile/TileTree.d.ts.map +1 -1
- package/lib/esm/tile/TileTree.js +1 -1
- package/lib/esm/tile/TileTree.js.map +1 -1
- package/lib/esm/tile/TileTreeReference.d.ts +1 -1
- package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/esm/tile/TileTreeReference.js +1 -1
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/tile/map/BingElevation.d.ts +5 -5
- package/lib/esm/tile/map/BingElevation.js +4 -4
- package/lib/esm/tile/map/BingElevation.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
- package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +2 -2
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +1 -1
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
- package/package.json +20 -20
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
# Change Log - @itwin/core-frontend
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Fri, 03 Jul 2026 13:06:57 GMT and should not be manually modified.
|
|
4
|
+
|
|
5
|
+
## 5.11.0
|
|
6
|
+
Fri, 03 Jul 2026 13:05:21 GMT
|
|
7
|
+
|
|
8
|
+
### Updates
|
|
9
|
+
|
|
10
|
+
- Add CesiumAccessClient interface to allow applications to plug in custom Cesium Ion authentication, with CesiumIonClient as the built-in fallback.
|
|
11
|
+
- Stop clearing SubCategoriesCache on subcategory insert; reload instead
|
|
12
|
+
- QuantityTypeFormatsProvider.getFormat now honors the requested UnitSystemKey instead of always using the active system, and QuantityFormatter.getSpecsByName accepts an optional options argument to query a non-active unit system.
|
|
13
|
+
- ECSqlReader now returns no rows instead of throwing when an IModelConnection is closed before query iteration.
|
|
14
|
+
- Deprecate legacy quantity description classes and add createQuantityDescription as the migration path for tool settings and other appui-based property flows, with guidance for the SurveyLengthDescription exception.
|
|
15
|
+
- Move focus Home after installing LookAndMoveTool so keyboard navigation works through the existing focus handling.
|
|
16
|
+
- NativeApp.startup now always reports the initial connectivity to the backend. Previously, if if `window.navigator.onLine` was false at startup, setConnectivity was never called, leaving the backend incorrectly assuming it was online.
|
|
17
|
+
- Added `GraphicalEditingScope.dynamicGraphicsAbsolutePositionThreshold` to configure the world-space coordinate magnitude (default 10km) beyond which graphics for elements modified during the scope use `rtcCenter` centering instead of absolute float32 positions, preventing precision artifacts like jagged curves for projects far from the coordinate system origin.
|
|
18
|
+
- Fixed non-planar globe map tiles disappearing in narrow top-down views by using tile surface corners & max projected tile size to determine LOD.
|
|
19
|
+
- Reality model tiles whose content is plain-text JSON glTF (a `.gltf` file) are now rendered, with their externally-referenced textures (e.g. `.webp` images) resolved against the tile's content URL. Previously such tiles were silently discarded, or rendered untextured/white.
|
|
20
|
+
- Remove dormant internal Azure Maps imagery provider code from core frontend.
|
|
21
|
+
- Deprecate Bing Maps imagery format and provider. `MapLayerOptions.BingMaps` is retained (non-deprecated) for elevation and location services.
|
|
22
|
+
- Deprecate BingElevationProvider and BingLocationProvider; add ElevationProvider, GeoidProvider, and LocationProvider interfaces
|
|
4
23
|
|
|
5
24
|
## 5.10.3
|
|
6
25
|
Tue, 16 Jun 2026 12:58:32 GMT
|
|
@@ -6,7 +6,7 @@ import { GlobalLocation } from "./ViewGlobalLocation";
|
|
|
6
6
|
* Use of this service requires an API key to be supplied via [[MapLayerOptions.BingMaps]] in the [[IModelAppOptions.mapLayerOptions]] passed to [[IModelApp.startup]].
|
|
7
7
|
* @public
|
|
8
8
|
* @extensions
|
|
9
|
-
* @deprecated in 5.11.0. Provide a [[LocationProvider]] implementation via [[IModelAppOptions.geospatialProviders]].
|
|
9
|
+
* @deprecated in 5.11.0 - will not be removed until after 2027-07-03. Provide a [[LocationProvider]] implementation via [[IModelAppOptions.geospatialProviders]].
|
|
10
10
|
* @note This class structurally satisfies [[LocationProvider]] but does not use an explicit `implements` clause
|
|
11
11
|
* because api-extractor forbids `@public` classes from referencing `@beta` interfaces (ae-incompatible-release-tags).
|
|
12
12
|
*/
|
package/lib/cjs/BingLocation.js
CHANGED
|
@@ -15,7 +15,7 @@ const IModelApp_1 = require("./IModelApp");
|
|
|
15
15
|
* Use of this service requires an API key to be supplied via [[MapLayerOptions.BingMaps]] in the [[IModelAppOptions.mapLayerOptions]] passed to [[IModelApp.startup]].
|
|
16
16
|
* @public
|
|
17
17
|
* @extensions
|
|
18
|
-
* @deprecated in 5.11.0. Provide a [[LocationProvider]] implementation via [[IModelAppOptions.geospatialProviders]].
|
|
18
|
+
* @deprecated in 5.11.0 - will not be removed until after 2027-07-03. Provide a [[LocationProvider]] implementation via [[IModelAppOptions.geospatialProviders]].
|
|
19
19
|
* @note This class structurally satisfies [[LocationProvider]] but does not use an explicit `implements` clause
|
|
20
20
|
* because api-extractor forbids `@public` classes from referencing `@beta` interfaces (ae-incompatible-release-tags).
|
|
21
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BingLocation.js","sourceRoot":"","sources":["../../src/BingLocation.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,oDAAkD;AAClD,+CAA4C;AAC5C,2CAAwC;AAGxC;;;;;;;GAOG;AACH,MAAa,oBAAoB;IACvB,wBAAwB,CAAS;IAEzC;QACE,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,sIAAsI;QACtI,IAAI,qBAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5D,OAAO,GAAG,qBAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,uDAAuD;QAClI,CAAC;QACD,IAAI,CAAC,wBAAwB,GAAG,oEAAoE,OAAO,EAAE,CAAC;IAChH,CAAC;IACD;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,KAAa;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC3E,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,MAAM,IAAA,iBAAO,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,MAAM,IAAI,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAChE,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO;gBACL,MAAM,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrG,IAAI,EAAE;oBACJ,SAAS,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;oBAC1F,SAAS,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;iBAC3F;aACF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AArCD,oDAqCC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { Cartographic } from \"@itwin/core-common\";\r\nimport { request } from \"./request/Request\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { GlobalLocation } from \"./ViewGlobalLocation\";\r\n\r\n/** Provides an interface to the [Bing Maps location services](https://docs.microsoft.com/en-us/bingmaps/rest-services/locations/).\r\n * Use of this service requires an API key to be supplied via [[MapLayerOptions.BingMaps]] in the [[IModelAppOptions.mapLayerOptions]] passed to [[IModelApp.startup]].\r\n * @public\r\n * @extensions\r\n * @deprecated in 5.11.0. Provide a [[LocationProvider]] implementation via [[IModelAppOptions.geospatialProviders]].\r\n * @note This class structurally satisfies [[LocationProvider]] but does not use an explicit `implements` clause\r\n * because api-extractor forbids `@public` classes from referencing `@beta` interfaces (ae-incompatible-release-tags).\r\n */\r\nexport class BingLocationProvider {\r\n private _locationRequestTemplate: string;\r\n\r\n constructor() {\r\n let bingKey = \"\";\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- this deprecated class reads from the deprecated BingMaps key by design\r\n if (IModelApp.mapLayerFormatRegistry.configOptions.BingMaps) {\r\n bingKey = IModelApp.mapLayerFormatRegistry.configOptions.BingMaps.value; // eslint-disable-line @typescript-eslint/no-deprecated\r\n }\r\n this._locationRequestTemplate = `https://dev.virtualearth.net/REST/v1/Locations?query={query}&key=${bingKey}`;\r\n }\r\n /** Return the location of a query (or undefined if not found). The strings \"Space Needle\" (a landmark) and \"1 Microsoft Way Redmond WA\" (an address) are examples of query strings with location information.\r\n * These strings can be specified as a structured URL parameter or as a query parameter value. See [Bing Location Services documentation](https://docs.microsoft.com/en-us/bingmaps/rest-services/locations/find-a-location-by-query) for additional\r\n * information on queries.\r\n * @public\r\n */\r\n public async getLocation(query: string): Promise<GlobalLocation | undefined> {\r\n const requestUrl = this._locationRequestTemplate.replace(\"{query}\", query);\r\n try {\r\n const locationResponse = await request(requestUrl, \"json\");\r\n const point = locationResponse.resourceSets[0].resources[0].point;\r\n const bbox = locationResponse.resourceSets[0].resources[0].bbox;\r\n const southLatitude = bbox[0];\r\n const westLongitude = bbox[1];\r\n const northLatitude = bbox[2];\r\n const eastLongitude = bbox[3];\r\n return {\r\n center: Cartographic.fromDegrees({ longitude: point.coordinates[1], latitude: point.coordinates[0] }),\r\n area: {\r\n southwest: Cartographic.fromDegrees({ longitude: westLongitude, latitude: southLatitude }),\r\n northeast: Cartographic.fromDegrees({ longitude: eastLongitude, latitude: northLatitude }),\r\n },\r\n };\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"BingLocation.js","sourceRoot":"","sources":["../../src/BingLocation.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,oDAAkD;AAClD,+CAA4C;AAC5C,2CAAwC;AAGxC;;;;;;;GAOG;AACH,MAAa,oBAAoB;IACvB,wBAAwB,CAAS;IAEzC;QACE,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,sIAAsI;QACtI,IAAI,qBAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5D,OAAO,GAAG,qBAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,uDAAuD;QAClI,CAAC;QACD,IAAI,CAAC,wBAAwB,GAAG,oEAAoE,OAAO,EAAE,CAAC;IAChH,CAAC;IACD;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,KAAa;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC3E,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,MAAM,IAAA,iBAAO,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,MAAM,IAAI,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAChE,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO;gBACL,MAAM,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrG,IAAI,EAAE;oBACJ,SAAS,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;oBAC1F,SAAS,EAAE,0BAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;iBAC3F;aACF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AArCD,oDAqCC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { Cartographic } from \"@itwin/core-common\";\r\nimport { request } from \"./request/Request\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { GlobalLocation } from \"./ViewGlobalLocation\";\r\n\r\n/** Provides an interface to the [Bing Maps location services](https://docs.microsoft.com/en-us/bingmaps/rest-services/locations/).\r\n * Use of this service requires an API key to be supplied via [[MapLayerOptions.BingMaps]] in the [[IModelAppOptions.mapLayerOptions]] passed to [[IModelApp.startup]].\r\n * @public\r\n * @extensions\r\n * @deprecated in 5.11.0 - will not be removed until after 2027-07-03. Provide a [[LocationProvider]] implementation via [[IModelAppOptions.geospatialProviders]].\r\n * @note This class structurally satisfies [[LocationProvider]] but does not use an explicit `implements` clause\r\n * because api-extractor forbids `@public` classes from referencing `@beta` interfaces (ae-incompatible-release-tags).\r\n */\r\nexport class BingLocationProvider {\r\n private _locationRequestTemplate: string;\r\n\r\n constructor() {\r\n let bingKey = \"\";\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- this deprecated class reads from the deprecated BingMaps key by design\r\n if (IModelApp.mapLayerFormatRegistry.configOptions.BingMaps) {\r\n bingKey = IModelApp.mapLayerFormatRegistry.configOptions.BingMaps.value; // eslint-disable-line @typescript-eslint/no-deprecated\r\n }\r\n this._locationRequestTemplate = `https://dev.virtualearth.net/REST/v1/Locations?query={query}&key=${bingKey}`;\r\n }\r\n /** Return the location of a query (or undefined if not found). The strings \"Space Needle\" (a landmark) and \"1 Microsoft Way Redmond WA\" (an address) are examples of query strings with location information.\r\n * These strings can be specified as a structured URL parameter or as a query parameter value. See [Bing Location Services documentation](https://docs.microsoft.com/en-us/bingmaps/rest-services/locations/find-a-location-by-query) for additional\r\n * information on queries.\r\n * @public\r\n */\r\n public async getLocation(query: string): Promise<GlobalLocation | undefined> {\r\n const requestUrl = this._locationRequestTemplate.replace(\"{query}\", query);\r\n try {\r\n const locationResponse = await request(requestUrl, \"json\");\r\n const point = locationResponse.resourceSets[0].resources[0].point;\r\n const bbox = locationResponse.resourceSets[0].resources[0].bbox;\r\n const southLatitude = bbox[0];\r\n const westLongitude = bbox[1];\r\n const northLatitude = bbox[2];\r\n const eastLongitude = bbox[3];\r\n return {\r\n center: Cartographic.fromDegrees({ longitude: point.coordinates[1], latitude: point.coordinates[0] }),\r\n area: {\r\n southwest: Cartographic.fromDegrees({ longitude: westLongitude, latitude: southLatitude }),\r\n northeast: Cartographic.fromDegrees({ longitude: eastLongitude, latitude: northLatitude }),\r\n },\r\n };\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -94,7 +94,7 @@ export declare class GraphicalEditingScope extends BriefcaseNotificationHandler
|
|
|
94
94
|
private geometryChangeIterator;
|
|
95
95
|
private constructor();
|
|
96
96
|
private [Symbol.dispose];
|
|
97
|
-
/** @deprecated in 5.0 -
|
|
97
|
+
/** @deprecated in 5.0 - might be removed in next major version. Use [Symbol.dispose] instead. */
|
|
98
98
|
dispose(): void;
|
|
99
99
|
/** @internal */
|
|
100
100
|
notifyGeometryChanged(props: ModelGeometryChangesProps[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphicalEditingScope.d.ts","sourceRoot":"","sources":["../../src/GraphicalEditingScope.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,OAAO,EAAkE,UAAU,EAAe,MAAM,qBAAqB,CAAC;AAE/I,OAAO,EACL,yBAAyB,EAAE,qBAAqB,EAAkB,oBAAoB,EAAE,yBAAyB,EAClH,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAc5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,qBAAsB,SAAQ,4BAA6B,YAAW,yBAAyB;IAC1G,IAAW,oBAAoB,iCAA0C;IAEzE,8FAA8F;IAC9F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IACxE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAClC,OAAO,CAAC,yCAAyC,CAAU;IAE3D,iDAAiD;IACjD,SAAgB,MAAM,EAAE,mBAAmB,CAAC;IAE5C;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAW,wCAAwC,IAAI,MAAM,CAE5D;IACD,IAAW,wCAAwC,CAAC,KAAK,EAAE,MAAM,EAGhE;IAED;;OAEG;IACH,gBAAuB,OAAO,kBAAuB,qBAAqB,KAAK,IAAI,EAAI;IAEvF;;;OAGG;IACH,SAAgB,SAAS,kBAAuB,qBAAqB,KAAK,IAAI,EAAI;IAElF;;;OAGG;IACH,SAAgB,QAAQ,kBAAuB,qBAAqB,KAAK,IAAI,EAAI;IAEjF,sEAAsE;IACtE,SAAgB,iBAAiB,oBAAyB,QAAQ,CAAC,oBAAoB,CAAC,SAAS,qBAAqB,KAAK,IAAI,EAAI;IAEnI;;OAEG;WACiB,KAAK,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAmBtF;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBlC,yGAAyG;IAClG,0BAA0B,CAAC,OAAO,EAAE,UAAU,GAAG,QAAQ,CAAC,qBAAqB,CAAC,GAAG,SAAS;IAInG,4EAA4E;IACrE,kBAAkB,IAAI,QAAQ,CAAC,oBAAoB,CAAC;IAI3D,gBAAgB;IAChB,IAAW,UAAU,YAEpB;IAED,OAAO,CAAG,sBAAsB;IAWhC,OAAO;IAMP,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAexB,
|
|
1
|
+
{"version":3,"file":"GraphicalEditingScope.d.ts","sourceRoot":"","sources":["../../src/GraphicalEditingScope.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,OAAO,EAAkE,UAAU,EAAe,MAAM,qBAAqB,CAAC;AAE/I,OAAO,EACL,yBAAyB,EAAE,qBAAqB,EAAkB,oBAAoB,EAAE,yBAAyB,EAClH,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAc5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,qBAAsB,SAAQ,4BAA6B,YAAW,yBAAyB;IAC1G,IAAW,oBAAoB,iCAA0C;IAEzE,8FAA8F;IAC9F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IACxE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAClC,OAAO,CAAC,yCAAyC,CAAU;IAE3D,iDAAiD;IACjD,SAAgB,MAAM,EAAE,mBAAmB,CAAC;IAE5C;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAW,wCAAwC,IAAI,MAAM,CAE5D;IACD,IAAW,wCAAwC,CAAC,KAAK,EAAE,MAAM,EAGhE;IAED;;OAEG;IACH,gBAAuB,OAAO,kBAAuB,qBAAqB,KAAK,IAAI,EAAI;IAEvF;;;OAGG;IACH,SAAgB,SAAS,kBAAuB,qBAAqB,KAAK,IAAI,EAAI;IAElF;;;OAGG;IACH,SAAgB,QAAQ,kBAAuB,qBAAqB,KAAK,IAAI,EAAI;IAEjF,sEAAsE;IACtE,SAAgB,iBAAiB,oBAAyB,QAAQ,CAAC,oBAAoB,CAAC,SAAS,qBAAqB,KAAK,IAAI,EAAI;IAEnI;;OAEG;WACiB,KAAK,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAmBtF;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBlC,yGAAyG;IAClG,0BAA0B,CAAC,OAAO,EAAE,UAAU,GAAG,QAAQ,CAAC,qBAAqB,CAAC,GAAG,SAAS;IAInG,4EAA4E;IACrE,kBAAkB,IAAI,QAAQ,CAAC,oBAAoB,CAAC;IAI3D,gBAAgB;IAChB,IAAW,UAAU,YAEpB;IAED,OAAO,CAAG,sBAAsB;IAWhC,OAAO;IAMP,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAexB,iGAAiG;IAC1F,OAAO;IAId,gBAAgB;IACT,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,EAAE;CAiChE"}
|
|
@@ -176,7 +176,7 @@ class GraphicalEditingScope extends BriefcaseTxns_1.BriefcaseNotificationHandler
|
|
|
176
176
|
this._cleanup = undefined;
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
|
-
/** @deprecated in 5.0 -
|
|
179
|
+
/** @deprecated in 5.0 - might be removed in next major version. Use [Symbol.dispose] instead. */
|
|
180
180
|
dispose() {
|
|
181
181
|
this[Symbol.dispose]();
|
|
182
182
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphicalEditingScope.js","sourceRoot":"","sources":["../../src/GraphicalEditingScope.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelConnection\r\n */\r\n\r\nimport { assert, BeEvent, compareStrings, DbOpcode, DuplicatePolicy, GuidString, Id64Set, Id64String, SortedArray } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n EditingScopeNotifications, ElementGeometryChange, ipcAppChannels, ModelGeometryChanges, ModelGeometryChangesProps, RemoveFunction,\r\n} from \"@itwin/core-common\";\r\nimport { BriefcaseNotificationHandler } from \"./BriefcaseTxns\";\r\nimport { BriefcaseConnection } from \"./BriefcaseConnection\";\r\nimport { IpcApp } from \"./IpcApp\";\r\n\r\nclass ModelChanges extends SortedArray<ElementGeometryChange> {\r\n public geometryGuid: GuidString;\r\n public readonly range: Range3d;\r\n\r\n public constructor(geometryGuid: GuidString, range: Range3d) {\r\n super((lhs, rhs) => compareStrings(lhs.id, rhs.id), DuplicatePolicy.Replace);\r\n this.geometryGuid = geometryGuid;\r\n this.range = range;\r\n }\r\n}\r\n\r\n/** Represents a period of time within an [interactive editing]($docs/learning/InteractiveEditing.md) session during which the\r\n * geometry of elements being displayed in one or more [[Viewport]]s is being modified. Outside of such a scope, whenever the\r\n * geometry within a [GeometricModel]($backend) changes new [[Tile]]s must be generated to reflect those changes in a viewport.\r\n * Regenerating entire tiles each time individual elements change can be time-consuming, which may introduce an unacceptable delay\r\n * between making a modification and seeing its result on the screen.\r\n *\r\n * Within the context of a graphical editing scope, no new tiles are generated. Instead, the geometry for any deleted or modified elements\r\n * is hidden in the tile graphics, and additional temporary graphics are displayed for any newly-inserted or modified elements. Only when the\r\n * scope exits are new tiles produced.\r\n *\r\n * The application decides when to enter and exit a graphical editing scope. A single interactive editing session may involve any number of\r\n * editing scopes. Typically, applications will enter a new editing scope (after first exiting a previous scope, if one exists):\r\n * - When switching from a non-graphical workflow to one that involves editing geometry; or\r\n * - When changing which geometric model is being edited; or\r\n * - After performing an operation that creates or modifies a \"large\" number (perhaps hundreds?) of elements.\r\n *\r\n * An application should typically exit any graphical editing scope before:\r\n * - Pulling changesets; or\r\n * - Switching from a graphical editing workflow to some non-graphical workflow.\r\n *\r\n * Graphical editing scopes are only supported for [[BriefcaseConnection]]s opened in read-write mode that contain version 1.0.11 or newer of the BisCore schema.\r\n * @see [[BriefcaseConnection.enterEditingScope]] to create a scope for a briefcase.\r\n * @see [[BriefcaseConnection.editingScope]] to obtain a briefcase's current scope.\r\n * @see [[exit]] to terminate a scope.\r\n * @public\r\n */\r\nexport class GraphicalEditingScope extends BriefcaseNotificationHandler implements EditingScopeNotifications {\r\n public get briefcaseChannelName() { return ipcAppChannels.editingScope; }\r\n\r\n /** Maps model Id to accumulated changes to geometric elements within the associated model. */\r\n private readonly _geometryChanges = new Map<Id64String, ModelChanges>();\r\n private _disposed = false;\r\n private _cleanup?: RemoveFunction;\r\n private _dynamicGraphicsAbsolutePositionThreshold = 10_000;\r\n\r\n /** The connection to the iModel being edited. */\r\n public readonly iModel: BriefcaseConnection;\r\n\r\n /** The world-space coordinate magnitude, in meters, below which graphics produced for elements modified during this\r\n * scope encode their vertex positions as absolute float32 coordinates.\r\n *\r\n * Encoding absolute positions is more performant, but loses precision for coordinates of large magnitude. When an element's\r\n * graphics are centered at or beyond this threshold from the coordinate system origin (for example, when a project is\r\n * georeferenced far from the origin) the graphics instead use per-element `rtcCenter` centering, which preserves precision\r\n * (avoiding artifacts like jagged curves) at a small performance cost.\r\n *\r\n * Increase this value to favor performance (`Number.POSITIVE_INFINITY` always uses absolute positions). Decrease it (down to\r\n * zero, which always uses `rtcCenter` centering) to favor precision. Negative values are clamped to zero; non-finite values\r\n * other than `Number.POSITIVE_INFINITY` are ignored.\r\n *\r\n * This value is read once per model, when the first element in that model is modified during the scope. Set it before making\r\n * edits to ensure it takes effect; changes made afterward do not apply to a model until the scope is exited and re-entered.\r\n *\r\n * Defaults to 10000 (10 kilometers).\r\n * @beta\r\n */\r\n public get dynamicGraphicsAbsolutePositionThreshold(): number {\r\n return this._dynamicGraphicsAbsolutePositionThreshold;\r\n }\r\n public set dynamicGraphicsAbsolutePositionThreshold(value: number) {\r\n if (Number.isFinite(value) || value === Number.POSITIVE_INFINITY)\r\n this._dynamicGraphicsAbsolutePositionThreshold = Math.max(value, 0);\r\n }\r\n\r\n /** Event raised when a new scope is created for any [[BriefcaseConnection]].\r\n * @see [[onExiting]] and [[onExited]] for complementary events.\r\n */\r\n public static readonly onEnter = new BeEvent<(scope: GraphicalEditingScope) => void>();\r\n\r\n /** Event raised when this scope is about to exit.\r\n * @see [[onEnter]] for the complementary event.\r\n * @see [[onExited]] for an event raised after the scope exits.\r\n */\r\n public readonly onExiting = new BeEvent<(scope: GraphicalEditingScope) => void>();\r\n\r\n /** Event raised when this scope has exited.\r\n * @see [[onEnter]] for the complementary event.\r\n * @see [[onExiting]] for an event raised just before the scope is exited.\r\n */\r\n public readonly onExited = new BeEvent<(scope: GraphicalEditingScope) => void>();\r\n\r\n /** Event raised after geometric changes are written to the iModel. */\r\n public readonly onGeometryChanges = new BeEvent<(changes: Iterable<ModelGeometryChanges>, scope: GraphicalEditingScope) => void>();\r\n\r\n /** Don't call this directly - use BriefcaseConnection.enterEditingScope.\r\n * @internal\r\n */\r\n public static async enter(imodel: BriefcaseConnection): Promise<GraphicalEditingScope> {\r\n if (imodel.editingScope)\r\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\r\n\r\n // Register the scope synchronously, in case enter() is called again for same iModel while awaiting asynchronous initialization.\r\n const scope = new GraphicalEditingScope(imodel);\r\n try {\r\n const scopeStarted = await IpcApp.appFunctionIpc.toggleGraphicalEditingScope(imodel.key, true);\r\n assert(scopeStarted); // If it didn't, the backend threw an error.\r\n } catch (e) {\r\n scope[Symbol.dispose]();\r\n throw e;\r\n }\r\n\r\n this.onEnter.raiseEvent(scope);\r\n\r\n return scope;\r\n }\r\n\r\n /** Exits this editing scope. The associated [[BriefcaseConnection]]'s `editingScope` will be reset to `undefined`.\r\n * @throws Error if the scope could not be exited, e.g., if it has already been exited.\r\n * @see [[BriefcaseConnection.enterEditingScope]] to enter an editing scope.\r\n */\r\n public async exit(): Promise<void> {\r\n if (this._disposed || this.iModel.editingScope !== this)\r\n throw new Error(\"Cannot exit editing scope after it is disconnected from the iModel\");\r\n\r\n this._disposed = true;\r\n try {\r\n this.onExiting.raiseEvent(this);\r\n } finally {\r\n const scopeExited = await IpcApp.appFunctionIpc.toggleGraphicalEditingScope(this.iModel.key, false);\r\n assert(!scopeExited);\r\n try {\r\n this.onExited.raiseEvent(this);\r\n } finally {\r\n this[Symbol.dispose]();\r\n }\r\n }\r\n }\r\n\r\n /** Obtain all geometric changes to elements within the specified model accumulated within this scope. */\r\n public getGeometryChangesForModel(modelId: Id64String): Iterable<ElementGeometryChange> | undefined {\r\n return this._geometryChanges.get(modelId);\r\n }\r\n\r\n /** Obtain all geometric changes to models accumulated within this scope. */\r\n public getGeometryChanges(): Iterable<ModelGeometryChanges> {\r\n return { [Symbol.iterator]: () => this.geometryChangeIterator() };\r\n }\r\n\r\n /** @internal */\r\n public get isDisposed() {\r\n return this._disposed;\r\n }\r\n\r\n private * geometryChangeIterator(): Iterator<ModelGeometryChanges> {\r\n for (const [key, value] of this._geometryChanges) {\r\n yield {\r\n id: key,\r\n geometryGuid: value.geometryGuid,\r\n range: value.range,\r\n elements: value,\r\n };\r\n }\r\n }\r\n\r\n private constructor(iModel: BriefcaseConnection) {\r\n super(iModel.key);\r\n this.iModel = iModel;\r\n this._cleanup = this.registerImpl();\r\n }\r\n\r\n private [Symbol.dispose](): void {\r\n this._disposed = true;\r\n\r\n this.onExiting.clear();\r\n this.onGeometryChanges.clear();\r\n this.onExited.clear();\r\n\r\n this._geometryChanges.clear();\r\n\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [Symbol.dispose] instead. */\r\n public dispose() {\r\n this[Symbol.dispose]();\r\n }\r\n\r\n /** @internal */\r\n public notifyGeometryChanged(props: ModelGeometryChangesProps[]) {\r\n const changes = ModelGeometryChanges.iterable(props);\r\n const modelIds: Id64String[] = [];\r\n let deletedIds: Id64Set | undefined;\r\n\r\n for (const modelChanges of changes) {\r\n // ###TODO do we care about the model range?\r\n let list = this._geometryChanges.get(modelChanges.id);\r\n modelIds.push(modelChanges.id);\r\n for (const elementChange of modelChanges.elements) {\r\n if (!list) {\r\n this._geometryChanges.set(modelChanges.id, list = new ModelChanges(modelChanges.geometryGuid, modelChanges.range));\r\n } else {\r\n list.geometryGuid = modelChanges.geometryGuid;\r\n modelChanges.range.clone(list.range);\r\n }\r\n\r\n list.insert(elementChange);\r\n if (DbOpcode.Delete === elementChange.type) {\r\n if (undefined === deletedIds)\r\n deletedIds = new Set<Id64String>();\r\n deletedIds.add(elementChange.id);\r\n }\r\n }\r\n }\r\n\r\n if (deletedIds) {\r\n this.iModel.selectionSet.remove(deletedIds);\r\n this.iModel.hilited.remove({ elements: deletedIds });\r\n }\r\n\r\n this.onGeometryChanges.raiseEvent(changes, this);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"GraphicalEditingScope.js","sourceRoot":"","sources":["../../src/GraphicalEditingScope.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelConnection\r\n */\r\n\r\nimport { assert, BeEvent, compareStrings, DbOpcode, DuplicatePolicy, GuidString, Id64Set, Id64String, SortedArray } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n EditingScopeNotifications, ElementGeometryChange, ipcAppChannels, ModelGeometryChanges, ModelGeometryChangesProps, RemoveFunction,\r\n} from \"@itwin/core-common\";\r\nimport { BriefcaseNotificationHandler } from \"./BriefcaseTxns\";\r\nimport { BriefcaseConnection } from \"./BriefcaseConnection\";\r\nimport { IpcApp } from \"./IpcApp\";\r\n\r\nclass ModelChanges extends SortedArray<ElementGeometryChange> {\r\n public geometryGuid: GuidString;\r\n public readonly range: Range3d;\r\n\r\n public constructor(geometryGuid: GuidString, range: Range3d) {\r\n super((lhs, rhs) => compareStrings(lhs.id, rhs.id), DuplicatePolicy.Replace);\r\n this.geometryGuid = geometryGuid;\r\n this.range = range;\r\n }\r\n}\r\n\r\n/** Represents a period of time within an [interactive editing]($docs/learning/InteractiveEditing.md) session during which the\r\n * geometry of elements being displayed in one or more [[Viewport]]s is being modified. Outside of such a scope, whenever the\r\n * geometry within a [GeometricModel]($backend) changes new [[Tile]]s must be generated to reflect those changes in a viewport.\r\n * Regenerating entire tiles each time individual elements change can be time-consuming, which may introduce an unacceptable delay\r\n * between making a modification and seeing its result on the screen.\r\n *\r\n * Within the context of a graphical editing scope, no new tiles are generated. Instead, the geometry for any deleted or modified elements\r\n * is hidden in the tile graphics, and additional temporary graphics are displayed for any newly-inserted or modified elements. Only when the\r\n * scope exits are new tiles produced.\r\n *\r\n * The application decides when to enter and exit a graphical editing scope. A single interactive editing session may involve any number of\r\n * editing scopes. Typically, applications will enter a new editing scope (after first exiting a previous scope, if one exists):\r\n * - When switching from a non-graphical workflow to one that involves editing geometry; or\r\n * - When changing which geometric model is being edited; or\r\n * - After performing an operation that creates or modifies a \"large\" number (perhaps hundreds?) of elements.\r\n *\r\n * An application should typically exit any graphical editing scope before:\r\n * - Pulling changesets; or\r\n * - Switching from a graphical editing workflow to some non-graphical workflow.\r\n *\r\n * Graphical editing scopes are only supported for [[BriefcaseConnection]]s opened in read-write mode that contain version 1.0.11 or newer of the BisCore schema.\r\n * @see [[BriefcaseConnection.enterEditingScope]] to create a scope for a briefcase.\r\n * @see [[BriefcaseConnection.editingScope]] to obtain a briefcase's current scope.\r\n * @see [[exit]] to terminate a scope.\r\n * @public\r\n */\r\nexport class GraphicalEditingScope extends BriefcaseNotificationHandler implements EditingScopeNotifications {\r\n public get briefcaseChannelName() { return ipcAppChannels.editingScope; }\r\n\r\n /** Maps model Id to accumulated changes to geometric elements within the associated model. */\r\n private readonly _geometryChanges = new Map<Id64String, ModelChanges>();\r\n private _disposed = false;\r\n private _cleanup?: RemoveFunction;\r\n private _dynamicGraphicsAbsolutePositionThreshold = 10_000;\r\n\r\n /** The connection to the iModel being edited. */\r\n public readonly iModel: BriefcaseConnection;\r\n\r\n /** The world-space coordinate magnitude, in meters, below which graphics produced for elements modified during this\r\n * scope encode their vertex positions as absolute float32 coordinates.\r\n *\r\n * Encoding absolute positions is more performant, but loses precision for coordinates of large magnitude. When an element's\r\n * graphics are centered at or beyond this threshold from the coordinate system origin (for example, when a project is\r\n * georeferenced far from the origin) the graphics instead use per-element `rtcCenter` centering, which preserves precision\r\n * (avoiding artifacts like jagged curves) at a small performance cost.\r\n *\r\n * Increase this value to favor performance (`Number.POSITIVE_INFINITY` always uses absolute positions). Decrease it (down to\r\n * zero, which always uses `rtcCenter` centering) to favor precision. Negative values are clamped to zero; non-finite values\r\n * other than `Number.POSITIVE_INFINITY` are ignored.\r\n *\r\n * This value is read once per model, when the first element in that model is modified during the scope. Set it before making\r\n * edits to ensure it takes effect; changes made afterward do not apply to a model until the scope is exited and re-entered.\r\n *\r\n * Defaults to 10000 (10 kilometers).\r\n * @beta\r\n */\r\n public get dynamicGraphicsAbsolutePositionThreshold(): number {\r\n return this._dynamicGraphicsAbsolutePositionThreshold;\r\n }\r\n public set dynamicGraphicsAbsolutePositionThreshold(value: number) {\r\n if (Number.isFinite(value) || value === Number.POSITIVE_INFINITY)\r\n this._dynamicGraphicsAbsolutePositionThreshold = Math.max(value, 0);\r\n }\r\n\r\n /** Event raised when a new scope is created for any [[BriefcaseConnection]].\r\n * @see [[onExiting]] and [[onExited]] for complementary events.\r\n */\r\n public static readonly onEnter = new BeEvent<(scope: GraphicalEditingScope) => void>();\r\n\r\n /** Event raised when this scope is about to exit.\r\n * @see [[onEnter]] for the complementary event.\r\n * @see [[onExited]] for an event raised after the scope exits.\r\n */\r\n public readonly onExiting = new BeEvent<(scope: GraphicalEditingScope) => void>();\r\n\r\n /** Event raised when this scope has exited.\r\n * @see [[onEnter]] for the complementary event.\r\n * @see [[onExiting]] for an event raised just before the scope is exited.\r\n */\r\n public readonly onExited = new BeEvent<(scope: GraphicalEditingScope) => void>();\r\n\r\n /** Event raised after geometric changes are written to the iModel. */\r\n public readonly onGeometryChanges = new BeEvent<(changes: Iterable<ModelGeometryChanges>, scope: GraphicalEditingScope) => void>();\r\n\r\n /** Don't call this directly - use BriefcaseConnection.enterEditingScope.\r\n * @internal\r\n */\r\n public static async enter(imodel: BriefcaseConnection): Promise<GraphicalEditingScope> {\r\n if (imodel.editingScope)\r\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\r\n\r\n // Register the scope synchronously, in case enter() is called again for same iModel while awaiting asynchronous initialization.\r\n const scope = new GraphicalEditingScope(imodel);\r\n try {\r\n const scopeStarted = await IpcApp.appFunctionIpc.toggleGraphicalEditingScope(imodel.key, true);\r\n assert(scopeStarted); // If it didn't, the backend threw an error.\r\n } catch (e) {\r\n scope[Symbol.dispose]();\r\n throw e;\r\n }\r\n\r\n this.onEnter.raiseEvent(scope);\r\n\r\n return scope;\r\n }\r\n\r\n /** Exits this editing scope. The associated [[BriefcaseConnection]]'s `editingScope` will be reset to `undefined`.\r\n * @throws Error if the scope could not be exited, e.g., if it has already been exited.\r\n * @see [[BriefcaseConnection.enterEditingScope]] to enter an editing scope.\r\n */\r\n public async exit(): Promise<void> {\r\n if (this._disposed || this.iModel.editingScope !== this)\r\n throw new Error(\"Cannot exit editing scope after it is disconnected from the iModel\");\r\n\r\n this._disposed = true;\r\n try {\r\n this.onExiting.raiseEvent(this);\r\n } finally {\r\n const scopeExited = await IpcApp.appFunctionIpc.toggleGraphicalEditingScope(this.iModel.key, false);\r\n assert(!scopeExited);\r\n try {\r\n this.onExited.raiseEvent(this);\r\n } finally {\r\n this[Symbol.dispose]();\r\n }\r\n }\r\n }\r\n\r\n /** Obtain all geometric changes to elements within the specified model accumulated within this scope. */\r\n public getGeometryChangesForModel(modelId: Id64String): Iterable<ElementGeometryChange> | undefined {\r\n return this._geometryChanges.get(modelId);\r\n }\r\n\r\n /** Obtain all geometric changes to models accumulated within this scope. */\r\n public getGeometryChanges(): Iterable<ModelGeometryChanges> {\r\n return { [Symbol.iterator]: () => this.geometryChangeIterator() };\r\n }\r\n\r\n /** @internal */\r\n public get isDisposed() {\r\n return this._disposed;\r\n }\r\n\r\n private * geometryChangeIterator(): Iterator<ModelGeometryChanges> {\r\n for (const [key, value] of this._geometryChanges) {\r\n yield {\r\n id: key,\r\n geometryGuid: value.geometryGuid,\r\n range: value.range,\r\n elements: value,\r\n };\r\n }\r\n }\r\n\r\n private constructor(iModel: BriefcaseConnection) {\r\n super(iModel.key);\r\n this.iModel = iModel;\r\n this._cleanup = this.registerImpl();\r\n }\r\n\r\n private [Symbol.dispose](): void {\r\n this._disposed = true;\r\n\r\n this.onExiting.clear();\r\n this.onGeometryChanges.clear();\r\n this.onExited.clear();\r\n\r\n this._geometryChanges.clear();\r\n\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n /** @deprecated in 5.0 - might be removed in next major version. Use [Symbol.dispose] instead. */\r\n public dispose() {\r\n this[Symbol.dispose]();\r\n }\r\n\r\n /** @internal */\r\n public notifyGeometryChanged(props: ModelGeometryChangesProps[]) {\r\n const changes = ModelGeometryChanges.iterable(props);\r\n const modelIds: Id64String[] = [];\r\n let deletedIds: Id64Set | undefined;\r\n\r\n for (const modelChanges of changes) {\r\n // ###TODO do we care about the model range?\r\n let list = this._geometryChanges.get(modelChanges.id);\r\n modelIds.push(modelChanges.id);\r\n for (const elementChange of modelChanges.elements) {\r\n if (!list) {\r\n this._geometryChanges.set(modelChanges.id, list = new ModelChanges(modelChanges.geometryGuid, modelChanges.range));\r\n } else {\r\n list.geometryGuid = modelChanges.geometryGuid;\r\n modelChanges.range.clone(list.range);\r\n }\r\n\r\n list.insert(elementChange);\r\n if (DbOpcode.Delete === elementChange.type) {\r\n if (undefined === deletedIds)\r\n deletedIds = new Set<Id64String>();\r\n deletedIds.add(elementChange.id);\r\n }\r\n }\r\n }\r\n\r\n if (deletedIds) {\r\n this.iModel.selectionSet.remove(deletedIds);\r\n this.iModel.hilited.remove({ elements: deletedIds });\r\n }\r\n\r\n this.onGeometryChanges.raiseEvent(changes, this);\r\n }\r\n}\r\n"]}
|
package/lib/cjs/HitDetail.d.ts
CHANGED
|
@@ -230,7 +230,7 @@ export declare class HitDetail {
|
|
|
230
230
|
get path(): HitPath | undefined;
|
|
231
231
|
/** Create a new HitDetail from the inputs to and results of a locate operation. */
|
|
232
232
|
constructor(props: HitDetailProps);
|
|
233
|
-
/** @deprecated in 4.1 -
|
|
233
|
+
/** @deprecated in 4.1 - might be removed in next major version. Use the overload that takes a [[HitDetailProps]]. */
|
|
234
234
|
constructor(testPoint: Point3d, viewport: ScreenViewport, hitSource: HitSource, hitPoint: Point3d, sourceId: string, priority: HitPriority, distXY: number, distFraction: number, subCategoryId?: string, geometryClass?: GeometryClass, modelId?: string, sourceIModel?: IModelConnection, tileId?: string, isClassifier?: boolean);
|
|
235
235
|
/** Get the type of HitDetail.
|
|
236
236
|
* @returns HitDetailType.Hit if this is a HitDetail, HitDetailType.Snap if it is a SnapDetail
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HitDetail.d.ts","sourceRoot":"","sources":["../../src/HitDetail.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"HitDetail.d.ts","sourceRoot":"","sources":["../../src/HitDetail.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/HitDetail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HitDetail.js","sourceRoot":"","sources":["../../src/HitDetail.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module LocatingElements\r\n */\r\nimport { assert, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { Arc3d, CurvePrimitive, Geometry, LineSegment3d, LineString3d, Path, Point3d, Transform, Vector3d, XYZProps } from \"@itwin/core-geometry\";\r\nimport { GeometryClass, LinePixels } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { IconSprites, Sprite } from \"./Sprites\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { ScreenViewport, Viewport } from \"./Viewport\";\r\nimport { GraphicType } from \"./common/render/GraphicType\";\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport enum SnapMode {\r\n Nearest = 1,\r\n NearestKeypoint = 1 << 1,\r\n MidPoint = 1 << 2,\r\n Center = 1 << 3,\r\n Origin = 1 << 4,\r\n Bisector = 1 << 5,\r\n Intersection = 1 << 6,\r\n PerpendicularPoint = 1 << 7,\r\n TangentPoint = 1 << 8,\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport enum SnapHeat {\r\n None = 0,\r\n NotInRange = 1, // \"of interest\", but out of range\r\n InRange = 2,\r\n}\r\n\r\n/** The procedure that generated this Hit.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum HitSource {\r\n None = 0,\r\n FromUser = 1,\r\n MotionLocate = 2,\r\n AccuSnap = 3,\r\n TentativeSnap = 4,\r\n DataPoint = 5,\r\n Application = 6,\r\n EditAction = 7,\r\n EditActionSS = 8,\r\n}\r\n\r\n/** What was being tested to generate this hit. This is not the element or\r\n * GeometricPrimitive that generated the Hit, it is an indication of whether it is an edge or interior hit.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum HitGeomType {\r\n None = 0,\r\n Point = 1,\r\n Segment = 2,\r\n Curve = 3,\r\n Arc = 4,\r\n Surface = 5,\r\n}\r\n\r\n/** Classification of GeometricPrimitive that generated the Hit.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum HitParentGeomType {\r\n None = 0,\r\n Wire = 1,\r\n Sheet = 2,\r\n Solid = 3,\r\n Mesh = 4,\r\n Text = 5,\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport enum HitPriority {\r\n WireEdge = 0,\r\n PlanarEdge = 1,\r\n NonPlanarEdge = 2,\r\n SilhouetteEdge = 3,\r\n PlanarSurface = 4,\r\n NonPlanarSurface = 5,\r\n Unknown = 6,\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport enum HitDetailType {\r\n Hit = 1,\r\n Snap = 2,\r\n Intersection = 3,\r\n}\r\n\r\n/** As part of a [[HitPath]], describes the [ViewAttachment]($backend), if any, from which the hit represented by a [[HitDetail]] originated.\r\n * @beta\r\n */\r\nexport interface ViewAttachmentHitInfo {\r\n /** The element Id of the [ViewAttachment]($backend) from which the hit originated. */\r\n readonly id: Id64String;\r\n /** The viewport that renders the contents of the attached view into the [[ScreenViewport]].\r\n * @note Do not alter the state of this viewport.\r\n * @alpha\r\n */\r\n readonly viewport: Viewport;\r\n}\r\n\r\n/** As part of a [[HitPath]], describes the [SectionDrawing]($backend), if any, from which the hit represented by a [[HitDetail]] originated.\r\n * @beta\r\n */\r\nexport interface SectionDrawingAttachmentHitInfo {\r\n /** The viewport that renders the contents of the attached view into the [[ScreenViewport]].\r\n * @note Do not alter the state of this viewport.\r\n * @alpha\r\n */\r\n readonly viewport: Viewport;\r\n}\r\n\r\n/** As part of a [[HitDetail]], describes a series of \"attached\" views through which the hit was located.\r\n * Typically, the contents of a view are rendered directly to the screen via [[HitDetail.viewport]].\r\n * However, in some contexts one view might be \"attached\" to the viewport's view via a [ViewAttachment]($backend), [SectionDrawing]($backend), or both.\r\n * HitPath captures this information in one of the following possible ways:\r\n * 1. A [[SheetViewState]] renders another view through a [ViewAttachment]($backend), in which case [[viewAttachment]] will be defined.\r\n * 2. A [[DrawingViewState]] renders a [[SpatialViewState]] through a [SectionDrawing]($backend) attachment, in which case [[sectionDrawingAttachment]] will be defined; or\r\n * 3. A combination of 1 and 2 where a [ViewAttachment]($backend) on a sheet renders a [SectionDrawing]($backend) with an attached [[SpatialViewState]], in which both [viewAttachment]] and [[sectionDrawingAttachment]] will be defined.\r\n * @beta\r\n */\r\nexport interface HitPath {\r\n /** Details about the [ViewAttachment]($backend) through which the hit was obtained. */\r\n viewAttachment?: ViewAttachmentHitInfo;\r\n /** Details about the [SectionDrawing]($backend) attachment through which the hit was obtained. */\r\n sectionDrawingAttachment?: SectionDrawingAttachmentHitInfo;\r\n};\r\n\r\n/** Arguments supplied to the [[HitDetail]] constructor.\r\n * @public\r\n */\r\nexport interface HitDetailProps {\r\n /** The point in world coordinates that was used as the initial locate point. */\r\n readonly testPoint: Point3d;\r\n /** The viewport in which the locate operation was performed. */\r\n readonly viewport: ScreenViewport;\r\n /** The procedure that requested the locate operation. */\r\n readonly hitSource: HitSource;\r\n /** The approximate location in world coordinates on the geometry identified by this HitDetail. */\r\n readonly hitPoint: Point3d;\r\n /** The source of the geometry. This may be a persistent element Id, or a transient Id used for, e.g., pickable decorations. */\r\n readonly sourceId: Id64String;\r\n /** The hit geometry priority/classification. */\r\n readonly priority: HitPriority;\r\n /** The xy distance to the hit in view coordinates. */\r\n readonly distXY: number;\r\n /** The distance in view coordinates between the hit and the near plane. */\r\n readonly distFraction: number;\r\n /** The [SubCategory]($backend) to which the hit geometry belongs. */\r\n readonly subCategoryId?: Id64String;\r\n /** The class of the hit geometry. */\r\n readonly geometryClass?: GeometryClass;\r\n /** The Id of the [[ModelState]] from which the hit originated. */\r\n readonly modelId?: string;\r\n /** The IModelConnection from which the hit originated.\r\n * This should almost always be left undefined, unless the hit is known to have originated from an iModel\r\n * other than the one associated with the viewport.\r\n * @internal\r\n */\r\n readonly sourceIModel?: IModelConnection;\r\n /** @internal */\r\n readonly transformFromSourceIModel?: Transform;\r\n /** @internal chiefly for debugging */\r\n readonly tileId?: string;\r\n /** True if the hit originated from a reality model classifier.\r\n * @alpha\r\n */\r\n readonly isClassifier?: boolean;\r\n /** Describes the path by which the hit was located through a series of attached views.\r\n * @beta\r\n */\r\n readonly path?: HitPath;\r\n}\r\n\r\n/** A HitDetail stores the result when locating geometry displayed in a view.\r\n * It holds an approximate location on an element (or decoration) from a *pick*.\r\n * @public\r\n * @extensions\r\n */\r\nexport class HitDetail {\r\n private readonly _props: HitDetailProps;\r\n\r\n /** The point in world coordinates that was used as the initial locate point. */\r\n public get testPoint(): Point3d { return this._props.testPoint; }\r\n /** The viewport in which the locate operation was performed. */\r\n public get viewport(): ScreenViewport { return this._props.viewport; }\r\n /** The procedure that requested the locate operation. */\r\n public get hitSource(): HitSource { return this._props.hitSource; }\r\n /** The approximate location in world coordinates on the geometry identified by this HitDetail. */\r\n public get hitPoint(): Point3d { return this._props.hitPoint; }\r\n /** The source of the geometry. This may be a persistent element Id, or a transient Id used for, e.g., pickable decorations. */\r\n public get sourceId(): Id64String { return this._props.sourceId; }\r\n /** The hit geometry priority/classification. */\r\n public get priority(): HitPriority { return this._props.priority; }\r\n /** The xy distance to the hit in view coordinates. */\r\n public get distXY(): number { return this._props.distXY; }\r\n /** The distance in view coordinates between the hit and the near plane. */\r\n public get distFraction(): number { return this._props.distFraction; }\r\n /** The [SubCategory]($backend) to which the hit geometry belongs. */\r\n public get subCategoryId(): Id64String | undefined { return this._props.subCategoryId; }\r\n /** The class of the hit geometry. */\r\n public get geometryClass(): GeometryClass | undefined { return this._props.geometryClass; }\r\n /** The Id of the [[ModelState]] from which the hit originated. */\r\n public get modelId(): string | undefined { return this._props.modelId; }\r\n /** The IModelConnection from which the hit originated.\r\n * This should almost always be left undefined, unless the hit is known to have originated from an iModel\r\n * other than the one associated with the viewport.\r\n * @internal\r\n */\r\n public get sourceIModel(): IModelConnection | undefined { return this._props.sourceIModel; }\r\n /** @internal */\r\n public get transformFromSourceIModel(): Transform | undefined { return this._props.transformFromSourceIModel; }\r\n /** @internal chiefly for debugging */\r\n public get tileId(): string | undefined { return this._props.tileId; }\r\n /** True if the hit originated from a reality model classifier.\r\n * @alpha\r\n */\r\n public get isClassifier(): boolean | undefined { return this._props.isClassifier; }\r\n /** Information about the [ViewAttachment]($backend) within which the hit geometry resides, if any.\r\n * @note Only [[SheetViewState]]s can have view attachments.\r\n * @beta\r\n */\r\n public get viewAttachment(): ViewAttachmentHitInfo | undefined { return this._props.path?.viewAttachment; }\r\n /** Describes the path by which the hit was located through a series of attached views.\r\n * @beta\r\n */\r\n public get path(): HitPath | undefined { return this._props.path; }\r\n\r\n /** Create a new HitDetail from the inputs to and results of a locate operation. */\r\n public constructor(props: HitDetailProps);\r\n\r\n /** @deprecated in 4.1 - will not be removed until after 2026-06-13. Use the overload that takes a [[HitDetailProps]]. */\r\n public constructor(testPoint: Point3d, viewport: ScreenViewport, hitSource: HitSource, hitPoint: Point3d, sourceId: string, priority: HitPriority, distXY: number, distFraction: number, subCategoryId?: string, geometryClass?: GeometryClass, modelId?: string, sourceIModel?: IModelConnection, tileId?: string, isClassifier?: boolean);\r\n\r\n /** @internal */\r\n public constructor(arg0: Point3d | HitDetailProps, viewport?: ScreenViewport, hitSource?: HitSource, hitPoint?: Point3d, sourceId?: string, priority?: HitPriority, distXY?: number, distFraction?: number, subCategoryId?: string, geometryClass?: GeometryClass, modelId?: string, sourceIModel?: IModelConnection, tileId?: string, isClassifier?: boolean) {\r\n if (arg0 instanceof Point3d) {\r\n assert(undefined !== viewport && undefined !== hitSource && undefined !== hitPoint && undefined !== sourceId);\r\n assert(undefined !== priority && undefined !== distXY && undefined !== distFraction);\r\n\r\n this._props = {\r\n testPoint: arg0,\r\n viewport,\r\n hitSource,\r\n hitPoint,\r\n sourceId,\r\n priority,\r\n distXY,\r\n distFraction,\r\n subCategoryId,\r\n geometryClass,\r\n modelId,\r\n sourceIModel,\r\n tileId,\r\n isClassifier,\r\n };\r\n } else {\r\n // Ignore an empty path.\r\n const path = arg0.path?.sectionDrawingAttachment || arg0.path?.viewAttachment ? arg0.path : undefined;\r\n\r\n // Tempting to use { ...arg0 } but spread operator omits getters so, e.g., if input is a HitDetail we would lose all the properties.\r\n this._props = {\r\n testPoint: arg0.testPoint,\r\n viewport: arg0.viewport,\r\n hitSource: arg0.hitSource,\r\n hitPoint: arg0.hitPoint,\r\n sourceId: arg0.sourceId,\r\n priority: arg0.priority,\r\n distXY: arg0.distXY,\r\n distFraction: arg0.distFraction,\r\n subCategoryId: arg0.subCategoryId,\r\n geometryClass: arg0.geometryClass,\r\n modelId: arg0.modelId,\r\n sourceIModel: arg0.sourceIModel,\r\n transformFromSourceIModel: arg0.transformFromSourceIModel,\r\n tileId: arg0.tileId,\r\n isClassifier: arg0.isClassifier,\r\n path,\r\n };\r\n }\r\n }\r\n\r\n /** Get the type of HitDetail.\r\n * @returns HitDetailType.Hit if this is a HitDetail, HitDetailType.Snap if it is a SnapDetail\r\n */\r\n public getHitType(): HitDetailType { return HitDetailType.Hit; }\r\n\r\n /** Get the *hit point* for this HitDetail. Returns the approximate point on the element that caused the hit when not a SnapDetail or IntersectDetail.\r\n * For a snap that is *hot*, the *exact* point on the Element for the snap mode is returned, otherwise the close point on the hit geometry is returned.\r\n */\r\n public getPoint(): Point3d { return this.hitPoint; }\r\n\r\n /** Determine if this HitPoint is from the same source as another HitDetail. */\r\n public isSameHit(otherHit?: HitDetail): boolean { return (undefined !== otherHit && this.sourceId === otherHit.sourceId && this.iModel === otherHit.iModel); }\r\n /** Return whether sourceId is for a persistent element and not a pickable decoration. */\r\n public get isElementHit(): boolean { return !Id64.isInvalid(this.sourceId) && !Id64.isTransient(this.sourceId); }\r\n // return whether the sourceId is for a model (reality models etc.)\r\n public get isModelHit(): boolean {\r\n return this.modelId === this.sourceId;\r\n }\r\n // return whether the hit point is from map.\r\n public get isMapHit(): boolean { return 0 !== this.viewport.mapLayerFromHit(this).length; }\r\n\r\n /** Create a deep copy of this HitDetail */\r\n public clone(): HitDetail {\r\n return new HitDetail(this);\r\n }\r\n\r\n /** Draw this HitDetail as a Decoration. Causes the picked element to *flash* */\r\n public draw(_context: DecorateContext) {\r\n this.viewport.flashedId = this.sourceId;\r\n }\r\n\r\n /** Get the tooltip content for this HitDetail. */\r\n public async getToolTip(): Promise<HTMLElement | string> {\r\n let toolTipPromise = this.isElementHit ? IModelApp.viewManager.overrideElementToolTip(this) : IModelApp.viewManager.getDecorationToolTip(this);\r\n for (const toolTipProvider of IModelApp.viewManager.toolTipProviders)\r\n toolTipPromise = toolTipProvider.augmentToolTip(this, toolTipPromise);\r\n return toolTipPromise;\r\n }\r\n\r\n /** The IModelConnection from which the hit originated. In some cases this may not be the same as the iModel associated with the Viewport -\r\n * for example, if a [[TiledGraphicsProvider]] is used to display graphics from a different iModel in the viewport.\r\n * This HitDetail's element, subcategory, and model Ids are defined in the context of this IModelConnection.\r\n */\r\n public get iModel(): IModelConnection {\r\n return this.sourceIModel ?? this.viewport.iModel;\r\n }\r\n\r\n /** Returns true if this hit originated from an [[IModelConnection]] other than the one associated with the [[Viewport]].\r\n * @see [[iModel]].\r\n */\r\n public get isExternalIModelHit(): boolean {\r\n return this.iModel !== this.viewport.iModel;\r\n }\r\n}\r\n\r\n/** A SnapDetail is generated from the result of a snap request. In addition to the HitDetail about the reason the element was *picked*,\r\n * it holds the *exact* point on the element from the snapping logic, plus additional information that varies with the type of element and snap mode.\r\n * @public\r\n * @extensions\r\n */\r\nexport class SnapDetail extends HitDetail {\r\n /** A sprite to show the user the type of snap performed */\r\n public sprite?: Sprite;\r\n /** HitPoint adjusted by snap */\r\n public readonly snapPoint: Point3d;\r\n /** AccuSnap/AccuDraw can adjust the point after the snap. */\r\n public readonly adjustedPoint: Point3d;\r\n /** Curve primitive for snap. */\r\n public primitive?: CurvePrimitive;\r\n /** Surface normal at snapPoint */\r\n public normal?: Vector3d;\r\n /** The HitGeomType of this SnapDetail */\r\n public geomType?: HitGeomType;\r\n /** The HitGeomType of this SnapDetail */\r\n public parentGeomType?: HitParentGeomType;\r\n\r\n /** Constructor for SnapDetail.\r\n * @param from The HitDetail that created this snap\r\n * @param snapMode The SnapMode used to create this SnapDetail\r\n * @param heat The SnapHeat of this SnapDetail\r\n * @param snapPoint The snapped point in the element\r\n */\r\n public constructor(from: HitDetail, public snapMode: SnapMode = SnapMode.Nearest, public heat: SnapHeat = SnapHeat.None, snapPoint?: XYZProps) {\r\n super(from);\r\n this.snapPoint = Point3d.fromJSON(snapPoint ? snapPoint : from.hitPoint);\r\n this.adjustedPoint = this.snapPoint.clone();\r\n this.sprite = IconSprites.getSpriteFromUrl(SnapDetail.getSnapSpriteUrl(snapMode));\r\n }\r\n\r\n /** Returns `HitDetailType.Snap` */\r\n public override getHitType(): HitDetailType { return HitDetailType.Snap; }\r\n /** Get the snap point if this SnapDetail is *hot*, the pick point otherwise. */\r\n public override getPoint(): Point3d { return this.isHot ? this.snapPoint : super.getPoint(); }\r\n /** Return true if the pick point was closer than the snap aperture from the generated snap point. */\r\n public get isHot(): boolean { return this.heat !== SnapHeat.None; }\r\n /** Determine whether the [[adjustedPoint]] is different than the [[snapPoint]]. This happens, for example, when points are adjusted for grids, acs plane snap, and AccuDraw. */\r\n public get isPointAdjusted(): boolean { return !this.adjustedPoint.isExactEqual(this.snapPoint); }\r\n\r\n /** Change the snap point. */\r\n public setSnapPoint(point: Point3d, heat: SnapHeat) {\r\n this.snapPoint.setFrom(point);\r\n this.adjustedPoint.setFrom(point);\r\n this.heat = heat;\r\n }\r\n\r\n /** Change the snap mode. */\r\n public setSnapMode(snapMode: SnapMode) {\r\n this.snapMode = snapMode;\r\n this.sprite = IconSprites.getSpriteFromUrl(SnapDetail.getSnapSpriteUrl(snapMode));\r\n }\r\n\r\n /** Set curve primitive and HitGeometryType for this SnapDetail. */\r\n public setCurvePrimitive(primitive?: CurvePrimitive, localToWorld?: Transform, geomType?: HitGeomType): void {\r\n this.primitive = primitive;\r\n this.geomType = undefined;\r\n\r\n // Only HitGeomType.Point and HitGeomType.Surface are valid without a curve primitive.\r\n if (undefined === this.primitive) {\r\n if (HitGeomType.Point === geomType || HitGeomType.Surface === geomType)\r\n this.geomType = geomType;\r\n return;\r\n }\r\n\r\n if (undefined !== localToWorld)\r\n this.primitive.tryTransformInPlace(localToWorld);\r\n\r\n if (this.primitive instanceof Arc3d)\r\n this.geomType = HitGeomType.Arc;\r\n else if (this.primitive instanceof LineSegment3d)\r\n this.geomType = HitGeomType.Segment;\r\n else if (this.primitive instanceof LineString3d)\r\n this.geomType = HitGeomType.Segment;\r\n else\r\n this.geomType = HitGeomType.Curve;\r\n\r\n // Set curve primitive geometry type override...\r\n // - HitGeomType.Point with arc/ellipse denotes center.\r\n // - HitGeomType.Surface with any curve primitive denotes an interior hit.\r\n if (undefined !== geomType && HitGeomType.None !== geomType)\r\n this.geomType = geomType;\r\n }\r\n\r\n /** Make a copy of this SnapDetail. */\r\n public override clone(): SnapDetail {\r\n const val = new SnapDetail(this, this.snapMode, this.heat, this.snapPoint);\r\n val.sprite = this.sprite;\r\n val.geomType = this.geomType;\r\n val.parentGeomType = this.parentGeomType;\r\n val.adjustedPoint.setFrom(this.adjustedPoint);\r\n if (undefined !== this.primitive)\r\n val.primitive = this.primitive.clone();\r\n if (undefined !== this.normal)\r\n val.normal = this.normal.clone();\r\n return val;\r\n }\r\n\r\n public getCurvePrimitive(singleSegment: boolean = true): CurvePrimitive | undefined {\r\n if (!singleSegment || undefined === this.primitive)\r\n return this.primitive;\r\n\r\n if (this.primitive instanceof LineString3d) {\r\n const ls = this.primitive;\r\n if (ls.points.length > 2) {\r\n const snapDetail = ls.closestPoint(this.snapPoint, false);\r\n const segmentInfo = ls.globalFractionToSegmentIndexAndLocalFraction(snapDetail.fraction);\r\n\r\n // Choose best segment when snapped to an interior vertex...\r\n if (!(Geometry.isSameFraction(snapDetail.fraction, 0) || Geometry.isSameFraction(snapDetail.fraction, 1)) && (Geometry.isSameFraction(segmentInfo.fraction, 0) || Geometry.isSameFraction(segmentInfo.fraction, 1))) {\r\n const hitDetail = ls.closestPoint(this.hitPoint, false);\r\n\r\n // Bias location towards hit fraction, doesn't use hit fraction directly as its relevance to snap point depends on snap mode...\r\n if (!Geometry.isSameFraction(snapDetail.fraction, hitDetail.fraction))\r\n segmentInfo.index = ls.globalFractionToSegmentIndexAndLocalFraction(Geometry.clamp(snapDetail.fraction + (hitDetail.fraction > snapDetail.fraction ? Geometry.smallFraction : -Geometry.smallFraction), 0, 1)).index;\r\n }\r\n\r\n return ls.getIndexedSegment(segmentInfo.index);\r\n }\r\n }\r\n\r\n return this.primitive;\r\n }\r\n\r\n public override draw(context: DecorateContext) {\r\n if (undefined !== this.primitive) {\r\n let singleSegment = false;\r\n switch (this.snapMode) {\r\n case SnapMode.Center:\r\n case SnapMode.Origin:\r\n case SnapMode.Bisector:\r\n break; // Snap point for these is computed using entire linestring, not just the hit segment...\r\n\r\n default: {\r\n singleSegment = true;\r\n break;\r\n }\r\n }\r\n\r\n const builder = context.createGraphicBuilder(GraphicType.WorldOverlay);\r\n const outline = context.viewport.hilite.color.adjustedForContrast(context.viewport.view.backgroundColor, 50);\r\n const centerLine = context.viewport.hilite.color.adjustedForContrast(outline, 175);\r\n const curvePrimitive = this.getCurvePrimitive(singleSegment);\r\n if (curvePrimitive !== undefined) {\r\n const path = Path.create(curvePrimitive);\r\n\r\n builder.setSymbology(outline, outline, 6);\r\n builder.addPath(path);\r\n\r\n builder.setSymbology(centerLine, centerLine, 2);\r\n builder.addPath(path);\r\n\r\n context.addDecorationFromBuilder(builder);\r\n return;\r\n }\r\n }\r\n super.draw(context);\r\n }\r\n\r\n private static getSnapSpriteUrl(snapType: SnapMode): string {\r\n switch (snapType) {\r\n case SnapMode.Nearest: return `${IModelApp.publicPath}sprites/SnapPointOn.png`;\r\n case SnapMode.NearestKeypoint: return `${IModelApp.publicPath}sprites/SnapKeypoint.png`;\r\n case SnapMode.MidPoint: return `${IModelApp.publicPath}sprites/SnapMidpoint.png`;\r\n case SnapMode.Center: return `${IModelApp.publicPath}sprites/SnapCenter.png`;\r\n case SnapMode.Origin: return `${IModelApp.publicPath}sprites/SnapOrigin.png`;\r\n case SnapMode.Bisector: return `${IModelApp.publicPath}sprites/SnapBisector.png`;\r\n case SnapMode.Intersection: return `${IModelApp.publicPath}sprites/SnapIntersection.png`;\r\n case SnapMode.PerpendicularPoint: return `${IModelApp.publicPath}sprites/SnapPerpendicularPoint.png`;\r\n case SnapMode.TangentPoint: return `${IModelApp.publicPath}sprites/SnapTangentPoint.png`;\r\n }\r\n return \"\";\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport class IntersectDetail extends SnapDetail {\r\n public constructor(from: SnapDetail, heat: SnapHeat = SnapHeat.None, snapPoint: XYZProps, public readonly otherPrimitive: CurvePrimitive, public readonly otherId: string) {\r\n super(from, SnapMode.Intersection, heat, snapPoint);\r\n this.primitive = from.primitive;\r\n this.normal = from.normal; // Preserve normal from primary snap location for AccuDraw smart rotation...\r\n }\r\n\r\n public override draw(context: DecorateContext) {\r\n if (undefined !== this.primitive && undefined !== this.otherPrimitive) {\r\n const builder = context.createGraphicBuilder(GraphicType.WorldOverlay);\r\n const outline = context.viewport.hilite.color.adjustedForContrast(context.viewport.view.backgroundColor, 50);\r\n const centerLine = context.viewport.hilite.color.adjustedForContrast(outline, 175);\r\n const path1 = Path.create(this.primitive);\r\n const path2 = Path.create(this.otherPrimitive);\r\n\r\n builder.setSymbology(outline, outline, 6);\r\n builder.addPath(path1);\r\n builder.addPath(path2);\r\n\r\n builder.setSymbology(centerLine, centerLine, 2);\r\n builder.addPath(path1);\r\n builder.setSymbology(centerLine, centerLine, 2, LinePixels.Code2);\r\n builder.addPath(path2);\r\n\r\n context.addDecorationFromBuilder(builder);\r\n return;\r\n }\r\n super.draw(context);\r\n }\r\n}\r\n\r\n/** The result of a \"locate\" is a sorted list of objects that satisfied the search criteria (a HitList). Earlier hits in the list\r\n * are somehow *better* than those later on.\r\n * @public\r\n * @extensions\r\n */\r\nexport class HitList<T extends HitDetail> {\r\n public hits: T[] = [];\r\n public currHit = -1;\r\n public get length(): number { return this.hits.length; }\r\n public empty(): void {\r\n this.hits.length = 0;\r\n this.currHit = -1;\r\n }\r\n\r\n public resetCurrentHit(): void { this.currHit = -1; }\r\n\r\n /** Get a hit from a particular index into a HitList\r\n * return the requested hit from the HitList or undefined\r\n */\r\n public getHit(hitNum: number): T | undefined {\r\n if (hitNum < 0)\r\n hitNum = this.length - 1;\r\n\r\n return (hitNum >= this.length) ? undefined : this.hits[hitNum];\r\n }\r\n\r\n /** When setting one or more indices to undefined you must call dropNulls afterwards */\r\n public setHit(i: number, p: T | undefined): void {\r\n if (i < 0 || i >= this.length)\r\n return;\r\n // While messy, the following is obviously intentional based on the function comment.\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n this.hits[i] = p!;\r\n }\r\n\r\n public dropNulls(): void {\r\n const hits = this.hits;\r\n this.hits = [];\r\n for (const hit of hits)\r\n this.hits.push(hit);\r\n }\r\n\r\n public getNextHit(): T | undefined {\r\n this.currHit++;\r\n return this.getCurrentHit();\r\n }\r\n\r\n public getCurrentHit(): T | undefined { return -1 === this.currHit ? undefined : this.getHit(this.currHit); }\r\n\r\n public setCurrentHit(hit: T): void {\r\n this.resetCurrentHit();\r\n for (let thisHit; undefined !== (thisHit = this.getNextHit());) {\r\n if (thisHit === hit)\r\n return;\r\n }\r\n }\r\n\r\n /** remove the current hit from the list. */\r\n public removeCurrentHit() { this.removeHit(this.currHit); }\r\n\r\n /** remove a hit in the list. */\r\n public removeHit(hitNum: number) {\r\n if (hitNum < 0) // Support -1 == END\r\n hitNum = this.length - 1;\r\n\r\n if (hitNum <= this.currHit)\r\n this.currHit = -1;\r\n\r\n if (hitNum >= this.length) // Locate calls GetNextHit, which increments currHit, until it goes beyond the end of size of the array.\r\n return; // Then Reset call RemoteCurrentHit, which passes in currHit. When it is out of range, we do nothing.\r\n\r\n this.hits.splice(hitNum, 1);\r\n }\r\n\r\n /** search through list and remove any hits that contain a specified element id. */\r\n public removeHitsFrom(sourceId: string): boolean {\r\n let removedOne = false;\r\n\r\n // walk backwards through list so we don't have to worry about what happens on remove\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n const thisHit = this.hits[i];\r\n if (thisHit && sourceId === thisHit.sourceId) {\r\n removedOne = true;\r\n this.removeHit(i);\r\n }\r\n }\r\n return removedOne;\r\n }\r\n\r\n private getPriorityZOverride(priority: HitPriority): number {\r\n switch (priority) {\r\n case HitPriority.WireEdge:\r\n case HitPriority.PlanarEdge:\r\n case HitPriority.NonPlanarEdge:\r\n return 0;\r\n case HitPriority.SilhouetteEdge:\r\n return 1;\r\n case HitPriority.PlanarSurface:\r\n case HitPriority.NonPlanarSurface:\r\n return 2;\r\n default:\r\n return 3;\r\n }\r\n }\r\n\r\n /** compare two hits for insertion into list. */\r\n public compare(hit1: HitDetail | undefined, hit2: HitDetail | undefined): -1 | 1 | 0 {\r\n if (!hit1 || !hit2)\r\n return 0;\r\n\r\n const zOverride1 = this.getPriorityZOverride(hit1.priority);\r\n const zOverride2 = this.getPriorityZOverride(hit2.priority);\r\n\r\n // Prefer edges over surfaces, this is more important than z because we know the edge isn't obscured...\r\n if (zOverride1 < zOverride2)\r\n return -1;\r\n if (zOverride1 > zOverride2)\r\n return 1;\r\n\r\n // Compare xy distance from pick point, prefer hits closer to center...\r\n if (hit1.distXY < hit2.distXY)\r\n return -1;\r\n if (hit1.distXY > hit2.distXY)\r\n return 1;\r\n\r\n // Compare distance fraction, prefer hits closer to eye...\r\n if (hit1.distFraction > hit2.distFraction)\r\n return -1;\r\n if (hit1.distFraction < hit2.distFraction)\r\n return 1;\r\n\r\n // Compare geometry class, prefer path/region hits over surface hits when all else is equal...\r\n if (hit1.priority < hit2.priority)\r\n return -1;\r\n if (hit1.priority > hit2.priority)\r\n return 1;\r\n\r\n return 0;\r\n }\r\n\r\n /** Add a new hit to the list. Hits are sorted according to their priority and distance. */\r\n public addHit(newHit: T): number {\r\n if (0 === this.hits.length) {\r\n this.hits.push(newHit);\r\n return 0;\r\n }\r\n let index = 0;\r\n for (; index < this.hits.length; ++index) {\r\n const oldHit = this.hits[index];\r\n const comparison = this.compare(newHit, oldHit);\r\n if (comparison < 0)\r\n break;\r\n }\r\n\r\n this.hits.splice(index, 0, newHit);\r\n return index;\r\n }\r\n\r\n /** Insert a new hit into the list at the supplied index. */\r\n public insertHit(i: number, hit: T): void {\r\n if (i < 0 || i >= this.length)\r\n this.hits.push(hit);\r\n else\r\n this.hits.splice(i, 0, hit);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"HitDetail.js","sourceRoot":"","sources":["../../src/HitDetail.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module LocatingElements\r\n */\r\nimport { assert, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { Arc3d, CurvePrimitive, Geometry, LineSegment3d, LineString3d, Path, Point3d, Transform, Vector3d, XYZProps } from \"@itwin/core-geometry\";\r\nimport { GeometryClass, LinePixels } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { IconSprites, Sprite } from \"./Sprites\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { ScreenViewport, Viewport } from \"./Viewport\";\r\nimport { GraphicType } from \"./common/render/GraphicType\";\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport enum SnapMode {\r\n Nearest = 1,\r\n NearestKeypoint = 1 << 1,\r\n MidPoint = 1 << 2,\r\n Center = 1 << 3,\r\n Origin = 1 << 4,\r\n Bisector = 1 << 5,\r\n Intersection = 1 << 6,\r\n PerpendicularPoint = 1 << 7,\r\n TangentPoint = 1 << 8,\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport enum SnapHeat {\r\n None = 0,\r\n NotInRange = 1, // \"of interest\", but out of range\r\n InRange = 2,\r\n}\r\n\r\n/** The procedure that generated this Hit.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum HitSource {\r\n None = 0,\r\n FromUser = 1,\r\n MotionLocate = 2,\r\n AccuSnap = 3,\r\n TentativeSnap = 4,\r\n DataPoint = 5,\r\n Application = 6,\r\n EditAction = 7,\r\n EditActionSS = 8,\r\n}\r\n\r\n/** What was being tested to generate this hit. This is not the element or\r\n * GeometricPrimitive that generated the Hit, it is an indication of whether it is an edge or interior hit.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum HitGeomType {\r\n None = 0,\r\n Point = 1,\r\n Segment = 2,\r\n Curve = 3,\r\n Arc = 4,\r\n Surface = 5,\r\n}\r\n\r\n/** Classification of GeometricPrimitive that generated the Hit.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum HitParentGeomType {\r\n None = 0,\r\n Wire = 1,\r\n Sheet = 2,\r\n Solid = 3,\r\n Mesh = 4,\r\n Text = 5,\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport enum HitPriority {\r\n WireEdge = 0,\r\n PlanarEdge = 1,\r\n NonPlanarEdge = 2,\r\n SilhouetteEdge = 3,\r\n PlanarSurface = 4,\r\n NonPlanarSurface = 5,\r\n Unknown = 6,\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport enum HitDetailType {\r\n Hit = 1,\r\n Snap = 2,\r\n Intersection = 3,\r\n}\r\n\r\n/** As part of a [[HitPath]], describes the [ViewAttachment]($backend), if any, from which the hit represented by a [[HitDetail]] originated.\r\n * @beta\r\n */\r\nexport interface ViewAttachmentHitInfo {\r\n /** The element Id of the [ViewAttachment]($backend) from which the hit originated. */\r\n readonly id: Id64String;\r\n /** The viewport that renders the contents of the attached view into the [[ScreenViewport]].\r\n * @note Do not alter the state of this viewport.\r\n * @alpha\r\n */\r\n readonly viewport: Viewport;\r\n}\r\n\r\n/** As part of a [[HitPath]], describes the [SectionDrawing]($backend), if any, from which the hit represented by a [[HitDetail]] originated.\r\n * @beta\r\n */\r\nexport interface SectionDrawingAttachmentHitInfo {\r\n /** The viewport that renders the contents of the attached view into the [[ScreenViewport]].\r\n * @note Do not alter the state of this viewport.\r\n * @alpha\r\n */\r\n readonly viewport: Viewport;\r\n}\r\n\r\n/** As part of a [[HitDetail]], describes a series of \"attached\" views through which the hit was located.\r\n * Typically, the contents of a view are rendered directly to the screen via [[HitDetail.viewport]].\r\n * However, in some contexts one view might be \"attached\" to the viewport's view via a [ViewAttachment]($backend), [SectionDrawing]($backend), or both.\r\n * HitPath captures this information in one of the following possible ways:\r\n * 1. A [[SheetViewState]] renders another view through a [ViewAttachment]($backend), in which case [[viewAttachment]] will be defined.\r\n * 2. A [[DrawingViewState]] renders a [[SpatialViewState]] through a [SectionDrawing]($backend) attachment, in which case [[sectionDrawingAttachment]] will be defined; or\r\n * 3. A combination of 1 and 2 where a [ViewAttachment]($backend) on a sheet renders a [SectionDrawing]($backend) with an attached [[SpatialViewState]], in which both [viewAttachment]] and [[sectionDrawingAttachment]] will be defined.\r\n * @beta\r\n */\r\nexport interface HitPath {\r\n /** Details about the [ViewAttachment]($backend) through which the hit was obtained. */\r\n viewAttachment?: ViewAttachmentHitInfo;\r\n /** Details about the [SectionDrawing]($backend) attachment through which the hit was obtained. */\r\n sectionDrawingAttachment?: SectionDrawingAttachmentHitInfo;\r\n};\r\n\r\n/** Arguments supplied to the [[HitDetail]] constructor.\r\n * @public\r\n */\r\nexport interface HitDetailProps {\r\n /** The point in world coordinates that was used as the initial locate point. */\r\n readonly testPoint: Point3d;\r\n /** The viewport in which the locate operation was performed. */\r\n readonly viewport: ScreenViewport;\r\n /** The procedure that requested the locate operation. */\r\n readonly hitSource: HitSource;\r\n /** The approximate location in world coordinates on the geometry identified by this HitDetail. */\r\n readonly hitPoint: Point3d;\r\n /** The source of the geometry. This may be a persistent element Id, or a transient Id used for, e.g., pickable decorations. */\r\n readonly sourceId: Id64String;\r\n /** The hit geometry priority/classification. */\r\n readonly priority: HitPriority;\r\n /** The xy distance to the hit in view coordinates. */\r\n readonly distXY: number;\r\n /** The distance in view coordinates between the hit and the near plane. */\r\n readonly distFraction: number;\r\n /** The [SubCategory]($backend) to which the hit geometry belongs. */\r\n readonly subCategoryId?: Id64String;\r\n /** The class of the hit geometry. */\r\n readonly geometryClass?: GeometryClass;\r\n /** The Id of the [[ModelState]] from which the hit originated. */\r\n readonly modelId?: string;\r\n /** The IModelConnection from which the hit originated.\r\n * This should almost always be left undefined, unless the hit is known to have originated from an iModel\r\n * other than the one associated with the viewport.\r\n * @internal\r\n */\r\n readonly sourceIModel?: IModelConnection;\r\n /** @internal */\r\n readonly transformFromSourceIModel?: Transform;\r\n /** @internal chiefly for debugging */\r\n readonly tileId?: string;\r\n /** True if the hit originated from a reality model classifier.\r\n * @alpha\r\n */\r\n readonly isClassifier?: boolean;\r\n /** Describes the path by which the hit was located through a series of attached views.\r\n * @beta\r\n */\r\n readonly path?: HitPath;\r\n}\r\n\r\n/** A HitDetail stores the result when locating geometry displayed in a view.\r\n * It holds an approximate location on an element (or decoration) from a *pick*.\r\n * @public\r\n * @extensions\r\n */\r\nexport class HitDetail {\r\n private readonly _props: HitDetailProps;\r\n\r\n /** The point in world coordinates that was used as the initial locate point. */\r\n public get testPoint(): Point3d { return this._props.testPoint; }\r\n /** The viewport in which the locate operation was performed. */\r\n public get viewport(): ScreenViewport { return this._props.viewport; }\r\n /** The procedure that requested the locate operation. */\r\n public get hitSource(): HitSource { return this._props.hitSource; }\r\n /** The approximate location in world coordinates on the geometry identified by this HitDetail. */\r\n public get hitPoint(): Point3d { return this._props.hitPoint; }\r\n /** The source of the geometry. This may be a persistent element Id, or a transient Id used for, e.g., pickable decorations. */\r\n public get sourceId(): Id64String { return this._props.sourceId; }\r\n /** The hit geometry priority/classification. */\r\n public get priority(): HitPriority { return this._props.priority; }\r\n /** The xy distance to the hit in view coordinates. */\r\n public get distXY(): number { return this._props.distXY; }\r\n /** The distance in view coordinates between the hit and the near plane. */\r\n public get distFraction(): number { return this._props.distFraction; }\r\n /** The [SubCategory]($backend) to which the hit geometry belongs. */\r\n public get subCategoryId(): Id64String | undefined { return this._props.subCategoryId; }\r\n /** The class of the hit geometry. */\r\n public get geometryClass(): GeometryClass | undefined { return this._props.geometryClass; }\r\n /** The Id of the [[ModelState]] from which the hit originated. */\r\n public get modelId(): string | undefined { return this._props.modelId; }\r\n /** The IModelConnection from which the hit originated.\r\n * This should almost always be left undefined, unless the hit is known to have originated from an iModel\r\n * other than the one associated with the viewport.\r\n * @internal\r\n */\r\n public get sourceIModel(): IModelConnection | undefined { return this._props.sourceIModel; }\r\n /** @internal */\r\n public get transformFromSourceIModel(): Transform | undefined { return this._props.transformFromSourceIModel; }\r\n /** @internal chiefly for debugging */\r\n public get tileId(): string | undefined { return this._props.tileId; }\r\n /** True if the hit originated from a reality model classifier.\r\n * @alpha\r\n */\r\n public get isClassifier(): boolean | undefined { return this._props.isClassifier; }\r\n /** Information about the [ViewAttachment]($backend) within which the hit geometry resides, if any.\r\n * @note Only [[SheetViewState]]s can have view attachments.\r\n * @beta\r\n */\r\n public get viewAttachment(): ViewAttachmentHitInfo | undefined { return this._props.path?.viewAttachment; }\r\n /** Describes the path by which the hit was located through a series of attached views.\r\n * @beta\r\n */\r\n public get path(): HitPath | undefined { return this._props.path; }\r\n\r\n /** Create a new HitDetail from the inputs to and results of a locate operation. */\r\n public constructor(props: HitDetailProps);\r\n\r\n /** @deprecated in 4.1 - might be removed in next major version. Use the overload that takes a [[HitDetailProps]]. */\r\n public constructor(testPoint: Point3d, viewport: ScreenViewport, hitSource: HitSource, hitPoint: Point3d, sourceId: string, priority: HitPriority, distXY: number, distFraction: number, subCategoryId?: string, geometryClass?: GeometryClass, modelId?: string, sourceIModel?: IModelConnection, tileId?: string, isClassifier?: boolean);\r\n\r\n /** @internal */\r\n public constructor(arg0: Point3d | HitDetailProps, viewport?: ScreenViewport, hitSource?: HitSource, hitPoint?: Point3d, sourceId?: string, priority?: HitPriority, distXY?: number, distFraction?: number, subCategoryId?: string, geometryClass?: GeometryClass, modelId?: string, sourceIModel?: IModelConnection, tileId?: string, isClassifier?: boolean) {\r\n if (arg0 instanceof Point3d) {\r\n assert(undefined !== viewport && undefined !== hitSource && undefined !== hitPoint && undefined !== sourceId);\r\n assert(undefined !== priority && undefined !== distXY && undefined !== distFraction);\r\n\r\n this._props = {\r\n testPoint: arg0,\r\n viewport,\r\n hitSource,\r\n hitPoint,\r\n sourceId,\r\n priority,\r\n distXY,\r\n distFraction,\r\n subCategoryId,\r\n geometryClass,\r\n modelId,\r\n sourceIModel,\r\n tileId,\r\n isClassifier,\r\n };\r\n } else {\r\n // Ignore an empty path.\r\n const path = arg0.path?.sectionDrawingAttachment || arg0.path?.viewAttachment ? arg0.path : undefined;\r\n\r\n // Tempting to use { ...arg0 } but spread operator omits getters so, e.g., if input is a HitDetail we would lose all the properties.\r\n this._props = {\r\n testPoint: arg0.testPoint,\r\n viewport: arg0.viewport,\r\n hitSource: arg0.hitSource,\r\n hitPoint: arg0.hitPoint,\r\n sourceId: arg0.sourceId,\r\n priority: arg0.priority,\r\n distXY: arg0.distXY,\r\n distFraction: arg0.distFraction,\r\n subCategoryId: arg0.subCategoryId,\r\n geometryClass: arg0.geometryClass,\r\n modelId: arg0.modelId,\r\n sourceIModel: arg0.sourceIModel,\r\n transformFromSourceIModel: arg0.transformFromSourceIModel,\r\n tileId: arg0.tileId,\r\n isClassifier: arg0.isClassifier,\r\n path,\r\n };\r\n }\r\n }\r\n\r\n /** Get the type of HitDetail.\r\n * @returns HitDetailType.Hit if this is a HitDetail, HitDetailType.Snap if it is a SnapDetail\r\n */\r\n public getHitType(): HitDetailType { return HitDetailType.Hit; }\r\n\r\n /** Get the *hit point* for this HitDetail. Returns the approximate point on the element that caused the hit when not a SnapDetail or IntersectDetail.\r\n * For a snap that is *hot*, the *exact* point on the Element for the snap mode is returned, otherwise the close point on the hit geometry is returned.\r\n */\r\n public getPoint(): Point3d { return this.hitPoint; }\r\n\r\n /** Determine if this HitPoint is from the same source as another HitDetail. */\r\n public isSameHit(otherHit?: HitDetail): boolean { return (undefined !== otherHit && this.sourceId === otherHit.sourceId && this.iModel === otherHit.iModel); }\r\n /** Return whether sourceId is for a persistent element and not a pickable decoration. */\r\n public get isElementHit(): boolean { return !Id64.isInvalid(this.sourceId) && !Id64.isTransient(this.sourceId); }\r\n // return whether the sourceId is for a model (reality models etc.)\r\n public get isModelHit(): boolean {\r\n return this.modelId === this.sourceId;\r\n }\r\n // return whether the hit point is from map.\r\n public get isMapHit(): boolean { return 0 !== this.viewport.mapLayerFromHit(this).length; }\r\n\r\n /** Create a deep copy of this HitDetail */\r\n public clone(): HitDetail {\r\n return new HitDetail(this);\r\n }\r\n\r\n /** Draw this HitDetail as a Decoration. Causes the picked element to *flash* */\r\n public draw(_context: DecorateContext) {\r\n this.viewport.flashedId = this.sourceId;\r\n }\r\n\r\n /** Get the tooltip content for this HitDetail. */\r\n public async getToolTip(): Promise<HTMLElement | string> {\r\n let toolTipPromise = this.isElementHit ? IModelApp.viewManager.overrideElementToolTip(this) : IModelApp.viewManager.getDecorationToolTip(this);\r\n for (const toolTipProvider of IModelApp.viewManager.toolTipProviders)\r\n toolTipPromise = toolTipProvider.augmentToolTip(this, toolTipPromise);\r\n return toolTipPromise;\r\n }\r\n\r\n /** The IModelConnection from which the hit originated. In some cases this may not be the same as the iModel associated with the Viewport -\r\n * for example, if a [[TiledGraphicsProvider]] is used to display graphics from a different iModel in the viewport.\r\n * This HitDetail's element, subcategory, and model Ids are defined in the context of this IModelConnection.\r\n */\r\n public get iModel(): IModelConnection {\r\n return this.sourceIModel ?? this.viewport.iModel;\r\n }\r\n\r\n /** Returns true if this hit originated from an [[IModelConnection]] other than the one associated with the [[Viewport]].\r\n * @see [[iModel]].\r\n */\r\n public get isExternalIModelHit(): boolean {\r\n return this.iModel !== this.viewport.iModel;\r\n }\r\n}\r\n\r\n/** A SnapDetail is generated from the result of a snap request. In addition to the HitDetail about the reason the element was *picked*,\r\n * it holds the *exact* point on the element from the snapping logic, plus additional information that varies with the type of element and snap mode.\r\n * @public\r\n * @extensions\r\n */\r\nexport class SnapDetail extends HitDetail {\r\n /** A sprite to show the user the type of snap performed */\r\n public sprite?: Sprite;\r\n /** HitPoint adjusted by snap */\r\n public readonly snapPoint: Point3d;\r\n /** AccuSnap/AccuDraw can adjust the point after the snap. */\r\n public readonly adjustedPoint: Point3d;\r\n /** Curve primitive for snap. */\r\n public primitive?: CurvePrimitive;\r\n /** Surface normal at snapPoint */\r\n public normal?: Vector3d;\r\n /** The HitGeomType of this SnapDetail */\r\n public geomType?: HitGeomType;\r\n /** The HitGeomType of this SnapDetail */\r\n public parentGeomType?: HitParentGeomType;\r\n\r\n /** Constructor for SnapDetail.\r\n * @param from The HitDetail that created this snap\r\n * @param snapMode The SnapMode used to create this SnapDetail\r\n * @param heat The SnapHeat of this SnapDetail\r\n * @param snapPoint The snapped point in the element\r\n */\r\n public constructor(from: HitDetail, public snapMode: SnapMode = SnapMode.Nearest, public heat: SnapHeat = SnapHeat.None, snapPoint?: XYZProps) {\r\n super(from);\r\n this.snapPoint = Point3d.fromJSON(snapPoint ? snapPoint : from.hitPoint);\r\n this.adjustedPoint = this.snapPoint.clone();\r\n this.sprite = IconSprites.getSpriteFromUrl(SnapDetail.getSnapSpriteUrl(snapMode));\r\n }\r\n\r\n /** Returns `HitDetailType.Snap` */\r\n public override getHitType(): HitDetailType { return HitDetailType.Snap; }\r\n /** Get the snap point if this SnapDetail is *hot*, the pick point otherwise. */\r\n public override getPoint(): Point3d { return this.isHot ? this.snapPoint : super.getPoint(); }\r\n /** Return true if the pick point was closer than the snap aperture from the generated snap point. */\r\n public get isHot(): boolean { return this.heat !== SnapHeat.None; }\r\n /** Determine whether the [[adjustedPoint]] is different than the [[snapPoint]]. This happens, for example, when points are adjusted for grids, acs plane snap, and AccuDraw. */\r\n public get isPointAdjusted(): boolean { return !this.adjustedPoint.isExactEqual(this.snapPoint); }\r\n\r\n /** Change the snap point. */\r\n public setSnapPoint(point: Point3d, heat: SnapHeat) {\r\n this.snapPoint.setFrom(point);\r\n this.adjustedPoint.setFrom(point);\r\n this.heat = heat;\r\n }\r\n\r\n /** Change the snap mode. */\r\n public setSnapMode(snapMode: SnapMode) {\r\n this.snapMode = snapMode;\r\n this.sprite = IconSprites.getSpriteFromUrl(SnapDetail.getSnapSpriteUrl(snapMode));\r\n }\r\n\r\n /** Set curve primitive and HitGeometryType for this SnapDetail. */\r\n public setCurvePrimitive(primitive?: CurvePrimitive, localToWorld?: Transform, geomType?: HitGeomType): void {\r\n this.primitive = primitive;\r\n this.geomType = undefined;\r\n\r\n // Only HitGeomType.Point and HitGeomType.Surface are valid without a curve primitive.\r\n if (undefined === this.primitive) {\r\n if (HitGeomType.Point === geomType || HitGeomType.Surface === geomType)\r\n this.geomType = geomType;\r\n return;\r\n }\r\n\r\n if (undefined !== localToWorld)\r\n this.primitive.tryTransformInPlace(localToWorld);\r\n\r\n if (this.primitive instanceof Arc3d)\r\n this.geomType = HitGeomType.Arc;\r\n else if (this.primitive instanceof LineSegment3d)\r\n this.geomType = HitGeomType.Segment;\r\n else if (this.primitive instanceof LineString3d)\r\n this.geomType = HitGeomType.Segment;\r\n else\r\n this.geomType = HitGeomType.Curve;\r\n\r\n // Set curve primitive geometry type override...\r\n // - HitGeomType.Point with arc/ellipse denotes center.\r\n // - HitGeomType.Surface with any curve primitive denotes an interior hit.\r\n if (undefined !== geomType && HitGeomType.None !== geomType)\r\n this.geomType = geomType;\r\n }\r\n\r\n /** Make a copy of this SnapDetail. */\r\n public override clone(): SnapDetail {\r\n const val = new SnapDetail(this, this.snapMode, this.heat, this.snapPoint);\r\n val.sprite = this.sprite;\r\n val.geomType = this.geomType;\r\n val.parentGeomType = this.parentGeomType;\r\n val.adjustedPoint.setFrom(this.adjustedPoint);\r\n if (undefined !== this.primitive)\r\n val.primitive = this.primitive.clone();\r\n if (undefined !== this.normal)\r\n val.normal = this.normal.clone();\r\n return val;\r\n }\r\n\r\n public getCurvePrimitive(singleSegment: boolean = true): CurvePrimitive | undefined {\r\n if (!singleSegment || undefined === this.primitive)\r\n return this.primitive;\r\n\r\n if (this.primitive instanceof LineString3d) {\r\n const ls = this.primitive;\r\n if (ls.points.length > 2) {\r\n const snapDetail = ls.closestPoint(this.snapPoint, false);\r\n const segmentInfo = ls.globalFractionToSegmentIndexAndLocalFraction(snapDetail.fraction);\r\n\r\n // Choose best segment when snapped to an interior vertex...\r\n if (!(Geometry.isSameFraction(snapDetail.fraction, 0) || Geometry.isSameFraction(snapDetail.fraction, 1)) && (Geometry.isSameFraction(segmentInfo.fraction, 0) || Geometry.isSameFraction(segmentInfo.fraction, 1))) {\r\n const hitDetail = ls.closestPoint(this.hitPoint, false);\r\n\r\n // Bias location towards hit fraction, doesn't use hit fraction directly as its relevance to snap point depends on snap mode...\r\n if (!Geometry.isSameFraction(snapDetail.fraction, hitDetail.fraction))\r\n segmentInfo.index = ls.globalFractionToSegmentIndexAndLocalFraction(Geometry.clamp(snapDetail.fraction + (hitDetail.fraction > snapDetail.fraction ? Geometry.smallFraction : -Geometry.smallFraction), 0, 1)).index;\r\n }\r\n\r\n return ls.getIndexedSegment(segmentInfo.index);\r\n }\r\n }\r\n\r\n return this.primitive;\r\n }\r\n\r\n public override draw(context: DecorateContext) {\r\n if (undefined !== this.primitive) {\r\n let singleSegment = false;\r\n switch (this.snapMode) {\r\n case SnapMode.Center:\r\n case SnapMode.Origin:\r\n case SnapMode.Bisector:\r\n break; // Snap point for these is computed using entire linestring, not just the hit segment...\r\n\r\n default: {\r\n singleSegment = true;\r\n break;\r\n }\r\n }\r\n\r\n const builder = context.createGraphicBuilder(GraphicType.WorldOverlay);\r\n const outline = context.viewport.hilite.color.adjustedForContrast(context.viewport.view.backgroundColor, 50);\r\n const centerLine = context.viewport.hilite.color.adjustedForContrast(outline, 175);\r\n const curvePrimitive = this.getCurvePrimitive(singleSegment);\r\n if (curvePrimitive !== undefined) {\r\n const path = Path.create(curvePrimitive);\r\n\r\n builder.setSymbology(outline, outline, 6);\r\n builder.addPath(path);\r\n\r\n builder.setSymbology(centerLine, centerLine, 2);\r\n builder.addPath(path);\r\n\r\n context.addDecorationFromBuilder(builder);\r\n return;\r\n }\r\n }\r\n super.draw(context);\r\n }\r\n\r\n private static getSnapSpriteUrl(snapType: SnapMode): string {\r\n switch (snapType) {\r\n case SnapMode.Nearest: return `${IModelApp.publicPath}sprites/SnapPointOn.png`;\r\n case SnapMode.NearestKeypoint: return `${IModelApp.publicPath}sprites/SnapKeypoint.png`;\r\n case SnapMode.MidPoint: return `${IModelApp.publicPath}sprites/SnapMidpoint.png`;\r\n case SnapMode.Center: return `${IModelApp.publicPath}sprites/SnapCenter.png`;\r\n case SnapMode.Origin: return `${IModelApp.publicPath}sprites/SnapOrigin.png`;\r\n case SnapMode.Bisector: return `${IModelApp.publicPath}sprites/SnapBisector.png`;\r\n case SnapMode.Intersection: return `${IModelApp.publicPath}sprites/SnapIntersection.png`;\r\n case SnapMode.PerpendicularPoint: return `${IModelApp.publicPath}sprites/SnapPerpendicularPoint.png`;\r\n case SnapMode.TangentPoint: return `${IModelApp.publicPath}sprites/SnapTangentPoint.png`;\r\n }\r\n return \"\";\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport class IntersectDetail extends SnapDetail {\r\n public constructor(from: SnapDetail, heat: SnapHeat = SnapHeat.None, snapPoint: XYZProps, public readonly otherPrimitive: CurvePrimitive, public readonly otherId: string) {\r\n super(from, SnapMode.Intersection, heat, snapPoint);\r\n this.primitive = from.primitive;\r\n this.normal = from.normal; // Preserve normal from primary snap location for AccuDraw smart rotation...\r\n }\r\n\r\n public override draw(context: DecorateContext) {\r\n if (undefined !== this.primitive && undefined !== this.otherPrimitive) {\r\n const builder = context.createGraphicBuilder(GraphicType.WorldOverlay);\r\n const outline = context.viewport.hilite.color.adjustedForContrast(context.viewport.view.backgroundColor, 50);\r\n const centerLine = context.viewport.hilite.color.adjustedForContrast(outline, 175);\r\n const path1 = Path.create(this.primitive);\r\n const path2 = Path.create(this.otherPrimitive);\r\n\r\n builder.setSymbology(outline, outline, 6);\r\n builder.addPath(path1);\r\n builder.addPath(path2);\r\n\r\n builder.setSymbology(centerLine, centerLine, 2);\r\n builder.addPath(path1);\r\n builder.setSymbology(centerLine, centerLine, 2, LinePixels.Code2);\r\n builder.addPath(path2);\r\n\r\n context.addDecorationFromBuilder(builder);\r\n return;\r\n }\r\n super.draw(context);\r\n }\r\n}\r\n\r\n/** The result of a \"locate\" is a sorted list of objects that satisfied the search criteria (a HitList). Earlier hits in the list\r\n * are somehow *better* than those later on.\r\n * @public\r\n * @extensions\r\n */\r\nexport class HitList<T extends HitDetail> {\r\n public hits: T[] = [];\r\n public currHit = -1;\r\n public get length(): number { return this.hits.length; }\r\n public empty(): void {\r\n this.hits.length = 0;\r\n this.currHit = -1;\r\n }\r\n\r\n public resetCurrentHit(): void { this.currHit = -1; }\r\n\r\n /** Get a hit from a particular index into a HitList\r\n * return the requested hit from the HitList or undefined\r\n */\r\n public getHit(hitNum: number): T | undefined {\r\n if (hitNum < 0)\r\n hitNum = this.length - 1;\r\n\r\n return (hitNum >= this.length) ? undefined : this.hits[hitNum];\r\n }\r\n\r\n /** When setting one or more indices to undefined you must call dropNulls afterwards */\r\n public setHit(i: number, p: T | undefined): void {\r\n if (i < 0 || i >= this.length)\r\n return;\r\n // While messy, the following is obviously intentional based on the function comment.\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n this.hits[i] = p!;\r\n }\r\n\r\n public dropNulls(): void {\r\n const hits = this.hits;\r\n this.hits = [];\r\n for (const hit of hits)\r\n this.hits.push(hit);\r\n }\r\n\r\n public getNextHit(): T | undefined {\r\n this.currHit++;\r\n return this.getCurrentHit();\r\n }\r\n\r\n public getCurrentHit(): T | undefined { return -1 === this.currHit ? undefined : this.getHit(this.currHit); }\r\n\r\n public setCurrentHit(hit: T): void {\r\n this.resetCurrentHit();\r\n for (let thisHit; undefined !== (thisHit = this.getNextHit());) {\r\n if (thisHit === hit)\r\n return;\r\n }\r\n }\r\n\r\n /** remove the current hit from the list. */\r\n public removeCurrentHit() { this.removeHit(this.currHit); }\r\n\r\n /** remove a hit in the list. */\r\n public removeHit(hitNum: number) {\r\n if (hitNum < 0) // Support -1 == END\r\n hitNum = this.length - 1;\r\n\r\n if (hitNum <= this.currHit)\r\n this.currHit = -1;\r\n\r\n if (hitNum >= this.length) // Locate calls GetNextHit, which increments currHit, until it goes beyond the end of size of the array.\r\n return; // Then Reset call RemoteCurrentHit, which passes in currHit. When it is out of range, we do nothing.\r\n\r\n this.hits.splice(hitNum, 1);\r\n }\r\n\r\n /** search through list and remove any hits that contain a specified element id. */\r\n public removeHitsFrom(sourceId: string): boolean {\r\n let removedOne = false;\r\n\r\n // walk backwards through list so we don't have to worry about what happens on remove\r\n for (let i = this.length - 1; i >= 0; i--) {\r\n const thisHit = this.hits[i];\r\n if (thisHit && sourceId === thisHit.sourceId) {\r\n removedOne = true;\r\n this.removeHit(i);\r\n }\r\n }\r\n return removedOne;\r\n }\r\n\r\n private getPriorityZOverride(priority: HitPriority): number {\r\n switch (priority) {\r\n case HitPriority.WireEdge:\r\n case HitPriority.PlanarEdge:\r\n case HitPriority.NonPlanarEdge:\r\n return 0;\r\n case HitPriority.SilhouetteEdge:\r\n return 1;\r\n case HitPriority.PlanarSurface:\r\n case HitPriority.NonPlanarSurface:\r\n return 2;\r\n default:\r\n return 3;\r\n }\r\n }\r\n\r\n /** compare two hits for insertion into list. */\r\n public compare(hit1: HitDetail | undefined, hit2: HitDetail | undefined): -1 | 1 | 0 {\r\n if (!hit1 || !hit2)\r\n return 0;\r\n\r\n const zOverride1 = this.getPriorityZOverride(hit1.priority);\r\n const zOverride2 = this.getPriorityZOverride(hit2.priority);\r\n\r\n // Prefer edges over surfaces, this is more important than z because we know the edge isn't obscured...\r\n if (zOverride1 < zOverride2)\r\n return -1;\r\n if (zOverride1 > zOverride2)\r\n return 1;\r\n\r\n // Compare xy distance from pick point, prefer hits closer to center...\r\n if (hit1.distXY < hit2.distXY)\r\n return -1;\r\n if (hit1.distXY > hit2.distXY)\r\n return 1;\r\n\r\n // Compare distance fraction, prefer hits closer to eye...\r\n if (hit1.distFraction > hit2.distFraction)\r\n return -1;\r\n if (hit1.distFraction < hit2.distFraction)\r\n return 1;\r\n\r\n // Compare geometry class, prefer path/region hits over surface hits when all else is equal...\r\n if (hit1.priority < hit2.priority)\r\n return -1;\r\n if (hit1.priority > hit2.priority)\r\n return 1;\r\n\r\n return 0;\r\n }\r\n\r\n /** Add a new hit to the list. Hits are sorted according to their priority and distance. */\r\n public addHit(newHit: T): number {\r\n if (0 === this.hits.length) {\r\n this.hits.push(newHit);\r\n return 0;\r\n }\r\n let index = 0;\r\n for (; index < this.hits.length; ++index) {\r\n const oldHit = this.hits[index];\r\n const comparison = this.compare(newHit, oldHit);\r\n if (comparison < 0)\r\n break;\r\n }\r\n\r\n this.hits.splice(index, 0, newHit);\r\n return index;\r\n }\r\n\r\n /** Insert a new hit into the list at the supplied index. */\r\n public insertHit(i: number, hit: T): void {\r\n if (i < 0 || i >= this.length)\r\n this.hits.push(hit);\r\n else\r\n this.hits.splice(i, 0, hit);\r\n }\r\n}\r\n"]}
|
|
@@ -114,14 +114,14 @@ export declare abstract class IModelConnection extends IModel {
|
|
|
114
114
|
*/
|
|
115
115
|
readonly onClose: BeEvent<(_imodel: IModelConnection) => void>;
|
|
116
116
|
/** The font map for this IModelConnection. Only valid after calling #loadFontMap and waiting for the returned promise to be fulfilled.
|
|
117
|
-
* @deprecated in 5.0.0 -
|
|
117
|
+
* @deprecated in 5.0.0 - might be removed in next major version. If you need font Ids on the front-end for some reason, write an Ipc method that queries [IModelDb.fonts]($backend).
|
|
118
118
|
*/
|
|
119
119
|
fontMap?: FontMap;
|
|
120
120
|
private _schemaContext?;
|
|
121
121
|
private _schemasPromise?;
|
|
122
122
|
/** Load the FontMap for this IModelConnection.
|
|
123
123
|
* @returns Returns a Promise<FontMap> that is fulfilled when the FontMap member of this IModelConnection is valid.
|
|
124
|
-
* @deprecated in 5.0.0 -
|
|
124
|
+
* @deprecated in 5.0.0 - might be removed in next major version. If you need font Ids on the front-end for some reason, write an Ipc method that queries [IModelDb.fonts]($backend).
|
|
125
125
|
*/
|
|
126
126
|
loadFontMap(): Promise<FontMap>;
|
|
127
127
|
/** Find the first registered base class of the given EntityState className. This class will "handle" the State for the supplied className.
|
|
@@ -176,7 +176,7 @@ export declare abstract class IModelConnection extends IModel {
|
|
|
176
176
|
*/
|
|
177
177
|
[_requestSnap](props: SnapRequestProps): Promise<SnapResponseProps>;
|
|
178
178
|
/** @internal
|
|
179
|
-
* @deprecated in 4.8 -
|
|
179
|
+
* @deprecated in 4.8 - might be removed in next major version. Use AccuSnap.doSnapRequest.
|
|
180
180
|
*/
|
|
181
181
|
requestSnap(props: SnapRequestProps): Promise<SnapResponseProps>;
|
|
182
182
|
private _toolTipRpc;
|
|
@@ -202,7 +202,7 @@ export declare abstract class IModelConnection extends IModel {
|
|
|
202
202
|
/** Request element mass properties from the backend. */
|
|
203
203
|
getMassProperties(requestProps: MassPropertiesRequestProps): Promise<MassPropertiesResponseProps>;
|
|
204
204
|
/** Request mass properties for multiple elements from the backend.
|
|
205
|
-
* @deprecated in 4.11 -
|
|
205
|
+
* @deprecated in 4.11 - might be removed in next major version. Use [[IModelConnection.getMassProperties]].
|
|
206
206
|
*/
|
|
207
207
|
getMassPropertiesPerCandidate(requestProps: MassPropertiesPerCandidateRequestProps): Promise<MassPropertiesPerCandidateResponseProps[]>;
|
|
208
208
|
/** Produce encoded [Polyface]($core-geometry)s from the geometry stream of a [GeometricElement]($backend).
|
|
@@ -404,7 +404,7 @@ export declare class SnapshotConnection extends IModelConnection {
|
|
|
404
404
|
static openFile(filePath: string): Promise<SnapshotConnection>;
|
|
405
405
|
/** Open an IModelConnection to a remote read-only snapshot iModel from a key that will be resolved by the backend.
|
|
406
406
|
* @note This method is intended for web applications.
|
|
407
|
-
* @deprecated in 4.10 -
|
|
407
|
+
* @deprecated in 4.10 - might be removed in next major version. Use [[CheckpointConnection.openRemote]].
|
|
408
408
|
*/
|
|
409
409
|
static openRemote(fileKey: string): Promise<SnapshotConnection>;
|
|
410
410
|
/** Close this SnapshotConnection.
|
|
@@ -584,7 +584,7 @@ export declare namespace IModelConnection {
|
|
|
584
584
|
* There is no guarantee that this view will be suitable for the purposes of any other applications.
|
|
585
585
|
* Most applications should ignore the default view and instead create a [[ViewState]] that fits their own requirements using APIs like [[ViewCreator3d]].
|
|
586
586
|
* @returns the Id of the default view as defined in the iModel's property table, or an invalid ID if no default view is defined.
|
|
587
|
-
* @deprecated in 4.2 -
|
|
587
|
+
* @deprecated in 4.2 - might be removed in next major version. Create a ViewState to your own specifications.
|
|
588
588
|
*/
|
|
589
589
|
queryDefaultViewId(): Promise<Id64String>;
|
|
590
590
|
/** Load a [[ViewState]] object from the specified [[ViewDefinition]] id. */
|
|
@@ -103,14 +103,14 @@ class IModelConnection extends core_common_1.IModel {
|
|
|
103
103
|
*/
|
|
104
104
|
onClose = new core_bentley_1.BeEvent();
|
|
105
105
|
/** The font map for this IModelConnection. Only valid after calling #loadFontMap and waiting for the returned promise to be fulfilled.
|
|
106
|
-
* @deprecated in 5.0.0 -
|
|
106
|
+
* @deprecated in 5.0.0 - might be removed in next major version. If you need font Ids on the front-end for some reason, write an Ipc method that queries [IModelDb.fonts]($backend).
|
|
107
107
|
*/
|
|
108
108
|
fontMap; // eslint-disable-line @typescript-eslint/no-deprecated
|
|
109
109
|
_schemaContext;
|
|
110
110
|
_schemasPromise;
|
|
111
111
|
/** Load the FontMap for this IModelConnection.
|
|
112
112
|
* @returns Returns a Promise<FontMap> that is fulfilled when the FontMap member of this IModelConnection is valid.
|
|
113
|
-
* @deprecated in 5.0.0 -
|
|
113
|
+
* @deprecated in 5.0.0 - might be removed in next major version. If you need font Ids on the front-end for some reason, write an Ipc method that queries [IModelDb.fonts]($backend).
|
|
114
114
|
*/
|
|
115
115
|
async loadFontMap() {
|
|
116
116
|
if (undefined === this.fontMap) { // eslint-disable-line @typescript-eslint/no-deprecated
|
|
@@ -234,7 +234,7 @@ class IModelConnection extends core_common_1.IModel {
|
|
|
234
234
|
return this.isOpen ? this._snapRpc.request(props) : { status: 2 };
|
|
235
235
|
}
|
|
236
236
|
/** @internal
|
|
237
|
-
* @deprecated in 4.8 -
|
|
237
|
+
* @deprecated in 4.8 - might be removed in next major version. Use AccuSnap.doSnapRequest.
|
|
238
238
|
*/
|
|
239
239
|
async requestSnap(props) {
|
|
240
240
|
return this[Symbols_1._requestSnap](props);
|
|
@@ -275,7 +275,7 @@ class IModelConnection extends core_common_1.IModel {
|
|
|
275
275
|
return core_common_1.IModelReadRpcInterface.getClientForRouting(this.routingContext.token).getMassProperties(this.getRpcProps(), requestProps);
|
|
276
276
|
}
|
|
277
277
|
/** Request mass properties for multiple elements from the backend.
|
|
278
|
-
* @deprecated in 4.11 -
|
|
278
|
+
* @deprecated in 4.11 - might be removed in next major version. Use [[IModelConnection.getMassProperties]].
|
|
279
279
|
*/
|
|
280
280
|
async getMassPropertiesPerCandidate(requestProps) {
|
|
281
281
|
return core_common_1.IModelReadRpcInterface.getClientForRouting(this.routingContext.token).getMassPropertiesPerCandidate(this.getRpcProps(), requestProps);
|
|
@@ -717,7 +717,7 @@ class SnapshotConnection extends IModelConnection {
|
|
|
717
717
|
}
|
|
718
718
|
/** Open an IModelConnection to a remote read-only snapshot iModel from a key that will be resolved by the backend.
|
|
719
719
|
* @note This method is intended for web applications.
|
|
720
|
-
* @deprecated in 4.10 -
|
|
720
|
+
* @deprecated in 4.10 - might be removed in next major version. Use [[CheckpointConnection.openRemote]].
|
|
721
721
|
*/
|
|
722
722
|
static async openRemote(fileKey) {
|
|
723
723
|
const routingContext = IModelRoutingContext_1.IModelRoutingContext.current || IModelRoutingContext_1.IModelRoutingContext.default;
|
|
@@ -1303,7 +1303,7 @@ exports.SnapshotConnection = SnapshotConnection;
|
|
|
1303
1303
|
* There is no guarantee that this view will be suitable for the purposes of any other applications.
|
|
1304
1304
|
* Most applications should ignore the default view and instead create a [[ViewState]] that fits their own requirements using APIs like [[ViewCreator3d]].
|
|
1305
1305
|
* @returns the Id of the default view as defined in the iModel's property table, or an invalid ID if no default view is defined.
|
|
1306
|
-
* @deprecated in 4.2 -
|
|
1306
|
+
* @deprecated in 4.2 - might be removed in next major version. Create a ViewState to your own specifications.
|
|
1307
1307
|
*/
|
|
1308
1308
|
async queryDefaultViewId() {
|
|
1309
1309
|
const iModel = this._iModel;
|