@itwin/core-frontend 5.1.2 → 5.2.0-dev.10

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.
Files changed (612) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/lib/cjs/BackgroundMapGeometry.js +13 -13
  3. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  4. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  5. package/lib/cjs/BriefcaseConnection.js +2 -2
  6. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  7. package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
  8. package/lib/cjs/CheckpointConnection.js +3 -3
  9. package/lib/cjs/CheckpointConnection.js.map +1 -1
  10. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  11. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  12. package/lib/cjs/ElementLocateManager.js +7 -6
  13. package/lib/cjs/ElementLocateManager.js.map +1 -1
  14. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  15. package/lib/cjs/EmphasizeElements.js +3 -1
  16. package/lib/cjs/EmphasizeElements.js.map +1 -1
  17. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  18. package/lib/cjs/EnvironmentDecorations.js +4 -0
  19. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  20. package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
  21. package/lib/cjs/FrustumAnimator.js +3 -2
  22. package/lib/cjs/FrustumAnimator.js.map +1 -1
  23. package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
  24. package/lib/cjs/GlobeAnimator.js +7 -6
  25. package/lib/cjs/GlobeAnimator.js.map +1 -1
  26. package/lib/cjs/HitDetail.d.ts.map +1 -1
  27. package/lib/cjs/HitDetail.js +12 -7
  28. package/lib/cjs/HitDetail.js.map +1 -1
  29. package/lib/cjs/IModelApp.d.ts.map +1 -1
  30. package/lib/cjs/IModelApp.js +2 -1
  31. package/lib/cjs/IModelApp.js.map +1 -1
  32. package/lib/cjs/IModelConnection.d.ts +4 -0
  33. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  34. package/lib/cjs/IModelConnection.js +156 -14
  35. package/lib/cjs/IModelConnection.js.map +1 -1
  36. package/lib/cjs/IpcApp.d.ts.map +1 -1
  37. package/lib/cjs/IpcApp.js +1 -1
  38. package/lib/cjs/IpcApp.js.map +1 -1
  39. package/lib/cjs/LinePlaneIntersect.d.ts.map +1 -1
  40. package/lib/cjs/LinePlaneIntersect.js +2 -0
  41. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  42. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  43. package/lib/cjs/LocalhostIpcApp.js +2 -1
  44. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  45. package/lib/cjs/Marker.d.ts.map +1 -1
  46. package/lib/cjs/Marker.js +4 -3
  47. package/lib/cjs/Marker.js.map +1 -1
  48. package/lib/cjs/ModelState.d.ts.map +1 -1
  49. package/lib/cjs/ModelState.js +2 -2
  50. package/lib/cjs/ModelState.js.map +1 -1
  51. package/lib/cjs/NativeApp.d.ts.map +1 -1
  52. package/lib/cjs/NativeApp.js +5 -4
  53. package/lib/cjs/NativeApp.js.map +1 -1
  54. package/lib/cjs/NativeAppLogger.d.ts.map +1 -1
  55. package/lib/cjs/NativeAppLogger.js +1 -0
  56. package/lib/cjs/NativeAppLogger.js.map +1 -1
  57. package/lib/cjs/PlanarClipMaskState.js +3 -3
  58. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  59. package/lib/cjs/SelectionSet.d.ts.map +1 -1
  60. package/lib/cjs/SelectionSet.js +1 -0
  61. package/lib/cjs/SelectionSet.js.map +1 -1
  62. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  63. package/lib/cjs/SheetViewState.js +5 -5
  64. package/lib/cjs/SheetViewState.js.map +1 -1
  65. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  66. package/lib/cjs/SpatialViewState.js +1 -1
  67. package/lib/cjs/SpatialViewState.js.map +1 -1
  68. package/lib/cjs/Sprites.js +2 -2
  69. package/lib/cjs/Sprites.js.map +1 -1
  70. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  71. package/lib/cjs/TentativePoint.js +10 -9
  72. package/lib/cjs/TentativePoint.js.map +1 -1
  73. package/lib/cjs/ViewCreator2d.js +1 -1
  74. package/lib/cjs/ViewCreator2d.js.map +1 -1
  75. package/lib/cjs/ViewCreator3d.js +1 -1
  76. package/lib/cjs/ViewCreator3d.js.map +1 -1
  77. package/lib/cjs/ViewPose.d.ts.map +1 -1
  78. package/lib/cjs/ViewPose.js +4 -1
  79. package/lib/cjs/ViewPose.js.map +1 -1
  80. package/lib/cjs/ViewState.d.ts.map +1 -1
  81. package/lib/cjs/ViewState.js +17 -12
  82. package/lib/cjs/ViewState.js.map +1 -1
  83. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  84. package/lib/cjs/ViewingSpace.js +2 -0
  85. package/lib/cjs/ViewingSpace.js.map +1 -1
  86. package/lib/cjs/Viewport.d.ts.map +1 -1
  87. package/lib/cjs/Viewport.js +17 -10
  88. package/lib/cjs/Viewport.js.map +1 -1
  89. package/lib/cjs/common/ImageUtil.d.ts.map +1 -1
  90. package/lib/cjs/common/ImageUtil.js +2 -1
  91. package/lib/cjs/common/ImageUtil.js.map +1 -1
  92. package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  93. package/lib/cjs/common/internal/render/GeometryAccumulator.js +4 -3
  94. package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
  95. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  96. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  97. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  98. package/lib/cjs/common/internal/render/MeshBuilder.js +1 -1
  99. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  100. package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  101. package/lib/cjs/common/internal/render/VertexTableBuilder.js +16 -7
  102. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  103. package/lib/cjs/extension/ExtensionAdmin.js +2 -2
  104. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  105. package/lib/cjs/internal/GoogleMapsDecorator.js +1 -1
  106. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
  107. package/lib/cjs/internal/ScriptUtils.js +1 -0
  108. package/lib/cjs/internal/ScriptUtils.js.map +1 -1
  109. package/lib/cjs/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  110. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js +2 -1
  111. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  112. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  113. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +7 -2
  114. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  115. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  116. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +5 -3
  117. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  118. package/lib/cjs/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  119. package/lib/cjs/internal/render/webgl/AttributeMap.js +2 -0
  120. package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
  121. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  122. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +2 -2
  123. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  124. package/lib/cjs/internal/render/webgl/BatchUniforms.js +1 -1
  125. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  126. package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
  127. package/lib/cjs/internal/render/webgl/BranchState.js +2 -1
  128. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  129. package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
  130. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  131. package/lib/cjs/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  132. package/lib/cjs/internal/render/webgl/CachedGeometry.js +2 -2
  133. package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
  134. package/lib/cjs/internal/render/webgl/ClipStack.js +1 -1
  135. package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
  136. package/lib/cjs/internal/render/webgl/ColorInfo.js +1 -1
  137. package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
  138. package/lib/cjs/internal/render/webgl/Contours.js +3 -3
  139. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  140. package/lib/cjs/internal/render/webgl/EDL.js +18 -18
  141. package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
  142. package/lib/cjs/internal/render/webgl/FeatureOverrides.js +4 -4
  143. package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
  144. package/lib/cjs/internal/render/webgl/FrameBuffer.js +3 -3
  145. package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
  146. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  147. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +2 -1
  148. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  149. package/lib/cjs/internal/render/webgl/GLTimer.d.ts.map +1 -1
  150. package/lib/cjs/internal/render/webgl/GLTimer.js +2 -0
  151. package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
  152. package/lib/cjs/internal/render/webgl/MapLayerParams.js +2 -2
  153. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  154. package/lib/cjs/internal/render/webgl/MeshData.js +2 -2
  155. package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
  156. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js +1 -1
  157. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  158. package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  159. package/lib/cjs/internal/render/webgl/PlanarClassifier.js +7 -7
  160. package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
  161. package/lib/cjs/internal/render/webgl/PlanarGrid.js +1 -1
  162. package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
  163. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  164. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  165. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js +6 -5
  166. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  167. package/lib/cjs/internal/render/webgl/PointCloud.js +1 -1
  168. package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
  169. package/lib/cjs/internal/render/webgl/RealityMesh.js +1 -1
  170. package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
  171. package/lib/cjs/internal/render/webgl/RenderBuffer.js +2 -2
  172. package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
  173. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  174. package/lib/cjs/internal/render/webgl/SceneCompositor.js +115 -85
  175. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  176. package/lib/cjs/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  177. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js +11 -10
  178. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  179. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js +3 -3
  180. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  181. package/lib/cjs/internal/render/webgl/ShaderProgram.js +3 -3
  182. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  183. package/lib/cjs/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  184. package/lib/cjs/internal/render/webgl/ShadowUniforms.js +2 -1
  185. package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
  186. package/lib/cjs/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  187. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +6 -4
  188. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  189. package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
  190. package/lib/cjs/internal/render/webgl/System.js +1 -1
  191. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  192. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  193. package/lib/cjs/internal/render/webgl/Target.js +10 -7
  194. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  195. package/lib/cjs/internal/render/webgl/Texture.d.ts.map +1 -1
  196. package/lib/cjs/internal/render/webgl/Texture.js +10 -8
  197. package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
  198. package/lib/cjs/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  199. package/lib/cjs/internal/render/webgl/glsl/Animation.js +4 -2
  200. package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
  201. package/lib/cjs/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  202. package/lib/cjs/internal/render/webgl/glsl/Color.js +2 -1
  203. package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
  204. package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
  205. package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
  206. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  207. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +3 -2
  208. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  209. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
  210. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  211. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  212. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  213. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  214. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +8 -8
  215. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  216. package/lib/cjs/internal/render/webgl/glsl/Surface.js +10 -10
  217. package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
  218. package/lib/cjs/internal/render/webgl/glsl/Vertex.js +2 -2
  219. package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
  220. package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
  221. package/lib/cjs/internal/tile/B3dmReader.js +1 -1
  222. package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
  223. package/lib/cjs/internal/tile/FetchCloudStorage.js +1 -1
  224. package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
  225. package/lib/cjs/internal/tile/LRUTileList.d.ts.map +1 -1
  226. package/lib/cjs/internal/tile/LRUTileList.js +4 -0
  227. package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
  228. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  229. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  230. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  231. package/lib/cjs/internal/tile/OPCFormatInterpreter.js +4 -4
  232. package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
  233. package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  234. package/lib/cjs/internal/tile/OrbitGtTileTree.js +2 -2
  235. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  236. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  237. package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -3
  238. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  239. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  240. package/lib/cjs/internal/tile/RealityTileLoader.js +3 -0
  241. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  242. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js +3 -3
  243. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  244. package/lib/cjs/internal/tile/TileUserSet.d.ts.map +1 -1
  245. package/lib/cjs/internal/tile/TileUserSet.js +4 -0
  246. package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
  247. package/lib/cjs/internal/tile/map/ArcGISTileMap.js +1 -1
  248. package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
  249. package/lib/cjs/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  250. package/lib/cjs/internal/tile/map/ArcGisUtilities.js +4 -0
  251. package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
  252. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  253. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  254. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  255. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  256. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  257. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
  258. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  259. package/lib/cjs/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  260. package/lib/cjs/internal/tile/map/MapTileAvailability.js +5 -2
  261. package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
  262. package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  263. package/lib/cjs/internal/tile/map/WmtsCapabilities.js +3 -2
  264. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  265. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  266. package/lib/cjs/properties/FormattedQuantityDescription.js +2 -0
  267. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  268. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  269. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  270. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  271. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  272. package/lib/cjs/quantity-formatting/QuantityFormatter.js +5 -3
  273. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  274. package/lib/cjs/tile/GltfReader.d.ts +5 -2
  275. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  276. package/lib/cjs/tile/GltfReader.js +54 -16
  277. package/lib/cjs/tile/GltfReader.js.map +1 -1
  278. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  279. package/lib/cjs/tile/RealityTile.js +2 -2
  280. package/lib/cjs/tile/RealityTile.js.map +1 -1
  281. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  282. package/lib/cjs/tile/RealityTileTree.js +5 -5
  283. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  284. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  285. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  286. package/lib/cjs/tile/TileDrawArgs.js +2 -1
  287. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  288. package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
  289. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  290. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +1 -1
  291. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  292. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  293. package/lib/cjs/tile/map/MapLayerSources.js +9 -1
  294. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  295. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  296. package/lib/cjs/tile/map/MapTile.js +10 -8
  297. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  298. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  299. package/lib/cjs/tile/map/MapTileTree.js +8 -7
  300. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  301. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  302. package/lib/cjs/tile/map/MapTilingScheme.js +2 -1
  303. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  304. package/lib/cjs/tools/Tool.js +1 -1
  305. package/lib/cjs/tools/Tool.js.map +1 -1
  306. package/lib/esm/BackgroundMapGeometry.js +14 -14
  307. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  308. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  309. package/lib/esm/BriefcaseConnection.js +2 -2
  310. package/lib/esm/BriefcaseConnection.js.map +1 -1
  311. package/lib/esm/CheckpointConnection.d.ts.map +1 -1
  312. package/lib/esm/CheckpointConnection.js +4 -4
  313. package/lib/esm/CheckpointConnection.js.map +1 -1
  314. package/lib/esm/ContextRealityModelState.js.map +1 -1
  315. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  316. package/lib/esm/ElementLocateManager.js +8 -7
  317. package/lib/esm/ElementLocateManager.js.map +1 -1
  318. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  319. package/lib/esm/EmphasizeElements.js +3 -1
  320. package/lib/esm/EmphasizeElements.js.map +1 -1
  321. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  322. package/lib/esm/EnvironmentDecorations.js +4 -0
  323. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  324. package/lib/esm/FrustumAnimator.d.ts.map +1 -1
  325. package/lib/esm/FrustumAnimator.js +3 -2
  326. package/lib/esm/FrustumAnimator.js.map +1 -1
  327. package/lib/esm/GlobeAnimator.d.ts.map +1 -1
  328. package/lib/esm/GlobeAnimator.js +7 -6
  329. package/lib/esm/GlobeAnimator.js.map +1 -1
  330. package/lib/esm/HitDetail.d.ts.map +1 -1
  331. package/lib/esm/HitDetail.js +12 -7
  332. package/lib/esm/HitDetail.js.map +1 -1
  333. package/lib/esm/IModelApp.d.ts.map +1 -1
  334. package/lib/esm/IModelApp.js +4 -3
  335. package/lib/esm/IModelApp.js.map +1 -1
  336. package/lib/esm/IModelConnection.d.ts +4 -0
  337. package/lib/esm/IModelConnection.d.ts.map +1 -1
  338. package/lib/esm/IModelConnection.js +158 -16
  339. package/lib/esm/IModelConnection.js.map +1 -1
  340. package/lib/esm/IpcApp.d.ts.map +1 -1
  341. package/lib/esm/IpcApp.js +2 -2
  342. package/lib/esm/IpcApp.js.map +1 -1
  343. package/lib/esm/LinePlaneIntersect.d.ts.map +1 -1
  344. package/lib/esm/LinePlaneIntersect.js +2 -0
  345. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  346. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  347. package/lib/esm/LocalhostIpcApp.js +2 -1
  348. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  349. package/lib/esm/Marker.d.ts.map +1 -1
  350. package/lib/esm/Marker.js +5 -4
  351. package/lib/esm/Marker.js.map +1 -1
  352. package/lib/esm/ModelState.d.ts.map +1 -1
  353. package/lib/esm/ModelState.js +3 -3
  354. package/lib/esm/ModelState.js.map +1 -1
  355. package/lib/esm/NativeApp.d.ts.map +1 -1
  356. package/lib/esm/NativeApp.js +5 -4
  357. package/lib/esm/NativeApp.js.map +1 -1
  358. package/lib/esm/NativeAppLogger.d.ts.map +1 -1
  359. package/lib/esm/NativeAppLogger.js +1 -0
  360. package/lib/esm/NativeAppLogger.js.map +1 -1
  361. package/lib/esm/PlanarClipMaskState.js +3 -3
  362. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  363. package/lib/esm/SelectionSet.d.ts.map +1 -1
  364. package/lib/esm/SelectionSet.js +2 -1
  365. package/lib/esm/SelectionSet.js.map +1 -1
  366. package/lib/esm/SheetViewState.d.ts.map +1 -1
  367. package/lib/esm/SheetViewState.js +6 -6
  368. package/lib/esm/SheetViewState.js.map +1 -1
  369. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  370. package/lib/esm/SpatialViewState.js +2 -2
  371. package/lib/esm/SpatialViewState.js.map +1 -1
  372. package/lib/esm/Sprites.js +2 -2
  373. package/lib/esm/Sprites.js.map +1 -1
  374. package/lib/esm/TentativePoint.d.ts.map +1 -1
  375. package/lib/esm/TentativePoint.js +10 -9
  376. package/lib/esm/TentativePoint.js.map +1 -1
  377. package/lib/esm/ViewCreator2d.js +1 -1
  378. package/lib/esm/ViewCreator2d.js.map +1 -1
  379. package/lib/esm/ViewCreator3d.js +1 -1
  380. package/lib/esm/ViewCreator3d.js.map +1 -1
  381. package/lib/esm/ViewPose.d.ts.map +1 -1
  382. package/lib/esm/ViewPose.js +4 -1
  383. package/lib/esm/ViewPose.js.map +1 -1
  384. package/lib/esm/ViewState.d.ts.map +1 -1
  385. package/lib/esm/ViewState.js +18 -13
  386. package/lib/esm/ViewState.js.map +1 -1
  387. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  388. package/lib/esm/ViewingSpace.js +2 -0
  389. package/lib/esm/ViewingSpace.js.map +1 -1
  390. package/lib/esm/Viewport.d.ts.map +1 -1
  391. package/lib/esm/Viewport.js +18 -11
  392. package/lib/esm/Viewport.js.map +1 -1
  393. package/lib/esm/common/ImageUtil.d.ts.map +1 -1
  394. package/lib/esm/common/ImageUtil.js +2 -1
  395. package/lib/esm/common/ImageUtil.js.map +1 -1
  396. package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
  397. package/lib/esm/common/internal/render/GeometryAccumulator.js +4 -3
  398. package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
  399. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
  400. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
  401. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  402. package/lib/esm/common/internal/render/MeshBuilder.js +2 -2
  403. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  404. package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
  405. package/lib/esm/common/internal/render/VertexTableBuilder.js +17 -8
  406. package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
  407. package/lib/esm/extension/ExtensionAdmin.js +2 -2
  408. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  409. package/lib/esm/internal/GoogleMapsDecorator.js +1 -1
  410. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
  411. package/lib/esm/internal/ScriptUtils.js +1 -0
  412. package/lib/esm/internal/ScriptUtils.js.map +1 -1
  413. package/lib/esm/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
  414. package/lib/esm/internal/render/UpsampleRealityMeshParams.js +2 -1
  415. package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  416. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  417. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +7 -2
  418. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  419. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  420. package/lib/esm/internal/render/webgl/AttributeBuffers.js +5 -3
  421. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  422. package/lib/esm/internal/render/webgl/AttributeMap.d.ts.map +1 -1
  423. package/lib/esm/internal/render/webgl/AttributeMap.js +2 -0
  424. package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
  425. package/lib/esm/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  426. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +3 -3
  427. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  428. package/lib/esm/internal/render/webgl/BatchUniforms.js +1 -1
  429. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  430. package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
  431. package/lib/esm/internal/render/webgl/BranchState.js +2 -1
  432. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  433. package/lib/esm/internal/render/webgl/BranchUniforms.js +3 -3
  434. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  435. package/lib/esm/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
  436. package/lib/esm/internal/render/webgl/CachedGeometry.js +3 -3
  437. package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
  438. package/lib/esm/internal/render/webgl/ClipStack.js +1 -1
  439. package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
  440. package/lib/esm/internal/render/webgl/ColorInfo.js +2 -2
  441. package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
  442. package/lib/esm/internal/render/webgl/Contours.js +4 -4
  443. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  444. package/lib/esm/internal/render/webgl/EDL.js +19 -19
  445. package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
  446. package/lib/esm/internal/render/webgl/FeatureOverrides.js +5 -5
  447. package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
  448. package/lib/esm/internal/render/webgl/FrameBuffer.js +4 -4
  449. package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
  450. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  451. package/lib/esm/internal/render/webgl/FrustumUniforms.js +2 -1
  452. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  453. package/lib/esm/internal/render/webgl/GLTimer.d.ts.map +1 -1
  454. package/lib/esm/internal/render/webgl/GLTimer.js +2 -0
  455. package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
  456. package/lib/esm/internal/render/webgl/MapLayerParams.js +3 -3
  457. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  458. package/lib/esm/internal/render/webgl/MeshData.js +3 -3
  459. package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
  460. package/lib/esm/internal/render/webgl/PerformanceMetrics.js +1 -1
  461. package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  462. package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
  463. package/lib/esm/internal/render/webgl/PlanarClassifier.js +8 -8
  464. package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
  465. package/lib/esm/internal/render/webgl/PlanarGrid.js +2 -2
  466. package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
  467. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
  468. package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  469. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js +6 -5
  470. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  471. package/lib/esm/internal/render/webgl/PointCloud.js +2 -2
  472. package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
  473. package/lib/esm/internal/render/webgl/RealityMesh.js +2 -2
  474. package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
  475. package/lib/esm/internal/render/webgl/RenderBuffer.js +3 -3
  476. package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
  477. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  478. package/lib/esm/internal/render/webgl/SceneCompositor.js +116 -86
  479. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  480. package/lib/esm/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
  481. package/lib/esm/internal/render/webgl/ScratchDrawParams.js +11 -10
  482. package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  483. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js +4 -4
  484. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  485. package/lib/esm/internal/render/webgl/ShaderProgram.js +4 -4
  486. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  487. package/lib/esm/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
  488. package/lib/esm/internal/render/webgl/ShadowUniforms.js +2 -1
  489. package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
  490. package/lib/esm/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
  491. package/lib/esm/internal/render/webgl/SolarShadowMap.js +7 -5
  492. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  493. package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
  494. package/lib/esm/internal/render/webgl/System.js +2 -2
  495. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  496. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  497. package/lib/esm/internal/render/webgl/Target.js +11 -8
  498. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  499. package/lib/esm/internal/render/webgl/Texture.d.ts.map +1 -1
  500. package/lib/esm/internal/render/webgl/Texture.js +11 -9
  501. package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
  502. package/lib/esm/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
  503. package/lib/esm/internal/render/webgl/glsl/Animation.js +5 -3
  504. package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
  505. package/lib/esm/internal/render/webgl/glsl/Color.d.ts.map +1 -1
  506. package/lib/esm/internal/render/webgl/glsl/Color.js +2 -1
  507. package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
  508. package/lib/esm/internal/render/webgl/glsl/Composite.js +2 -2
  509. package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
  510. package/lib/esm/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  511. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +3 -2
  512. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  513. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +4 -4
  514. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  515. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  516. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +4 -3
  517. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  518. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +9 -9
  519. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  520. package/lib/esm/internal/render/webgl/glsl/Surface.js +11 -11
  521. package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
  522. package/lib/esm/internal/render/webgl/glsl/Vertex.js +3 -3
  523. package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
  524. package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
  525. package/lib/esm/internal/tile/B3dmReader.js +2 -2
  526. package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
  527. package/lib/esm/internal/tile/FetchCloudStorage.js +1 -1
  528. package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
  529. package/lib/esm/internal/tile/LRUTileList.d.ts.map +1 -1
  530. package/lib/esm/internal/tile/LRUTileList.js +4 -0
  531. package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
  532. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
  533. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
  534. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  535. package/lib/esm/internal/tile/OPCFormatInterpreter.js +5 -5
  536. package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
  537. package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
  538. package/lib/esm/internal/tile/OrbitGtTileTree.js +3 -3
  539. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  540. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  541. package/lib/esm/internal/tile/RealityModelTileTree.js +4 -4
  542. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  543. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  544. package/lib/esm/internal/tile/RealityTileLoader.js +3 -0
  545. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  546. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js +4 -4
  547. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  548. package/lib/esm/internal/tile/TileUserSet.d.ts.map +1 -1
  549. package/lib/esm/internal/tile/TileUserSet.js +4 -0
  550. package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
  551. package/lib/esm/internal/tile/map/ArcGISTileMap.js +1 -1
  552. package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
  553. package/lib/esm/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
  554. package/lib/esm/internal/tile/map/ArcGisUtilities.js +4 -0
  555. package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
  556. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  557. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
  558. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  559. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  560. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  561. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -2
  562. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  563. package/lib/esm/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
  564. package/lib/esm/internal/tile/map/MapTileAvailability.js +6 -3
  565. package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
  566. package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
  567. package/lib/esm/internal/tile/map/WmtsCapabilities.js +3 -2
  568. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  569. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  570. package/lib/esm/properties/FormattedQuantityDescription.js +2 -0
  571. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  572. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  573. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
  574. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  575. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  576. package/lib/esm/quantity-formatting/QuantityFormatter.js +5 -3
  577. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  578. package/lib/esm/tile/GltfReader.d.ts +5 -2
  579. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  580. package/lib/esm/tile/GltfReader.js +55 -17
  581. package/lib/esm/tile/GltfReader.js.map +1 -1
  582. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  583. package/lib/esm/tile/RealityTile.js +3 -3
  584. package/lib/esm/tile/RealityTile.js.map +1 -1
  585. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  586. package/lib/esm/tile/RealityTileTree.js +6 -6
  587. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  588. package/lib/esm/tile/TileAdmin.js.map +1 -1
  589. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  590. package/lib/esm/tile/TileDrawArgs.js +2 -1
  591. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  592. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  593. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  594. package/lib/esm/tile/map/MapLayerFormatRegistry.js +2 -2
  595. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  596. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  597. package/lib/esm/tile/map/MapLayerSources.js +10 -2
  598. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  599. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  600. package/lib/esm/tile/map/MapTile.js +11 -9
  601. package/lib/esm/tile/map/MapTile.js.map +1 -1
  602. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  603. package/lib/esm/tile/map/MapTileTree.js +9 -8
  604. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  605. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  606. package/lib/esm/tile/map/MapTilingScheme.js +2 -1
  607. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  608. package/lib/esm/tools/Tool.js +2 -2
  609. package/lib/esm/tools/Tool.js.map +1 -1
  610. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  611. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  612. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"BackgroundMapGeometry.js","sourceRoot":"","sources":["../../src/BackgroundMapGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Views\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Angle, Arc3d, ClipPlane, ClipPlaneContainment, Constant, CurvePrimitive, Ellipsoid, GrowableXYZArray, LongitudeLatitudeNumber, Matrix3d, Plane3dByOriginAndUnitNormal, Point2d, Point3d, Point4d, Range1d, Range3d, Ray3d, Transform, Vector3d, WritableXYAndZ, XYAndZ } from \"@itwin/core-geometry\";\nimport { Cartographic, ColorByName, ColorDef, Frustum, GeoCoordStatus, GlobeMode, LinePixels } from \"@itwin/core-common\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { GraphicBuilder } from \"./render/GraphicBuilder\";\nimport { WebMercatorTilingScheme } from \"./tile/internal\";\n\nconst scratchRange = Range3d.createNull();\nconst scratchZeroPoint = Point3d.createZero();\nconst scratchPoint = Point3d.create();\nconst scratchVector = Vector3d.create();\nconst scratchCenterPoint = Point3d.createZero();\nconst scratchIntersectRay = Ray3d.create(Point3d.create(), Vector3d.create());\nconst scratchEyePoint = Point3d.createZero();\nconst scratchViewRotation = Matrix3d.createIdentity();\nconst scratchSilhouetteNormal = Vector3d.create();\nconst scratchCartoRectangle = new GrowableXYZArray();\nconst scratchWorkArray = new GrowableXYZArray();\n\nfunction accumulateDepthRange(point: Point3d, viewRotation: Matrix3d, range: Range3d) {\n viewRotation.multiplyXYZtoXYZ(point, scratchPoint);\n range.extend(scratchPoint);\n}\n\nfunction accumulateFrustumPlaneDepthRange(frustum: Frustum, plane: Plane3dByOriginAndUnitNormal, viewRotation: Matrix3d, range: Range3d, eyePoint?: Point3d) {\n let includeHorizon = false;\n for (let i = 0; i < 4; i++) {\n const frustumRay = Ray3d.createStartEnd(eyePoint ? eyePoint : frustum.points[i + 4], frustum.points[i]);\n const thisFraction = frustumRay.intersectionWithPlane(plane, scratchPoint);\n if (undefined !== thisFraction && (!eyePoint || thisFraction > 0))\n accumulateDepthRange(scratchPoint, viewRotation, range);\n else\n includeHorizon = true;\n }\n if (includeHorizon) {\n if (eyePoint !== undefined) {\n const eyeHeight = plane.altitude(eyePoint);\n if (eyeHeight < 0)\n accumulateDepthRange(eyePoint, viewRotation, range);\n else {\n const viewZ = viewRotation.getRow(2);\n const horizonDistance = Math.sqrt(eyeHeight * eyeHeight + 2 * eyeHeight * Constant.earthRadiusWGS84.equator);\n accumulateDepthRange(eyePoint.plusScaled(viewZ, -horizonDistance, scratchPoint), viewRotation, range);\n }\n }\n }\n}\n\n/** @internal */\nexport function getFrustumPlaneIntersectionDepthRange(frustum: Frustum, plane: Plane3dByOriginAndUnitNormal): Range1d {\n const eyePoint = frustum.getEyePoint(scratchEyePoint);\n const viewRotation = frustum.getRotation(scratchViewRotation)!;\n const intersectRange = Range3d.createNull();\n accumulateFrustumPlaneDepthRange(frustum, plane, viewRotation, intersectRange, eyePoint);\n\n return intersectRange.isNull ? Range1d.createNull() : Range1d.createXX(intersectRange.low.z, intersectRange.high.z);\n}\n\n/** Geometry of background map - either an ellipsoid or a plane as defined by GlobeMode.\n * @internal\n */\nexport class BackgroundMapGeometry {\n public readonly globeMode: GlobeMode;\n public readonly geometry: Plane3dByOriginAndUnitNormal | Ellipsoid;\n public readonly globeOrigin: Point3d;\n public readonly globeMatrix: Matrix3d;\n public readonly cartesianRange: Range3d;\n public readonly cartesianTransitionRange: Range3d;\n public readonly cartesianPlane: Plane3dByOriginAndUnitNormal;\n public readonly cartesianDiagonal: number;\n public readonly cartesianChordHeight: number;\n public readonly maxGeometryChordHeight: number;\n private _mercatorFractionToDb: Transform;\n private _mercatorTilingScheme: WebMercatorTilingScheme;\n private _ecefToDb: Transform;\n public static maxCartesianDistance = 1E4; // If globe is 3D we still consider the map geometry flat within this distance of the project extents.\n private static _transitionDistanceMultiplier = .25; // In the transition range which extends beyond the cartesian range we interpolate between cartesian and ellipsoid.\n\n private static _scratchRayFractions = new Array<number>();\n private static _scratchRayAngles = new Array<LongitudeLatitudeNumber>();\n private static _scratchPoint = Point3d.createZero();\n\n constructor(private _bimElevationBias: number, globeMode: GlobeMode, private _iModel: IModelConnection) {\n this._ecefToDb = _iModel.getMapEcefToDb(_bimElevationBias);\n this.globeMode = globeMode;\n this.cartesianRange = BackgroundMapGeometry.getCartesianRange(_iModel);\n this.cartesianTransitionRange = this.cartesianRange.clone();\n this.cartesianTransitionRange.expandInPlace(BackgroundMapGeometry.getCartesianTransitionDistance(_iModel));\n this.cartesianDiagonal = this.cartesianRange.diagonal().magnitudeXY();\n const earthRadius = Constant.earthRadiusWGS84.equator;\n this.globeOrigin = this._ecefToDb.origin.cloneAsPoint3d();\n this.globeMatrix = this._ecefToDb.matrix.clone();\n this.cartesianChordHeight = Math.sqrt(this.cartesianDiagonal * this.cartesianDiagonal + earthRadius * earthRadius) - earthRadius; // Maximum chord height deviation of the cartesian area.\n const halfChordAngle = Angle.piOver2Radians / 10;\n this.maxGeometryChordHeight = (1 - Math.cos(halfChordAngle)) * earthRadius;\n this.cartesianPlane = this.getPlane();\n this.geometry = (globeMode === GlobeMode.Ellipsoid) ? this.getEarthEllipsoid() : this.cartesianPlane;\n this._mercatorTilingScheme = new WebMercatorTilingScheme();\n this._mercatorFractionToDb = this._mercatorTilingScheme.computeMercatorFractionToDb(this._ecefToDb, _bimElevationBias, _iModel, false);\n }\n public static getCartesianRange(iModel: IModelConnection, result?: Range3d): Range3d {\n const cartesianRange = Range3d.createFrom(iModel.projectExtents, result);\n cartesianRange.expandInPlace(BackgroundMapGeometry.maxCartesianDistance);\n return cartesianRange;\n }\n public static getCartesianTransitionDistance(iModel: IModelConnection): number {\n return BackgroundMapGeometry.getCartesianRange(iModel, scratchRange).diagonal().magnitudeXY() * BackgroundMapGeometry._transitionDistanceMultiplier;\n }\n\n public async dbToCartographicFromGcs(db: XYAndZ[]): Promise<Cartographic[]> {\n const scratch = new Point3d();\n const promises = db.map(async (p) => {\n return this.cartesianRange.containsPoint(Point3d.createFrom(p, scratch)) ? this._iModel.spatialToCartographic(p) : this.dbToCartographic(p);\n });\n\n return Promise.all(promises);\n }\n\n public async dbToWGS84CartographicFromGcs(db: XYAndZ[]): Promise<Cartographic[]> {\n if (db.length === 0)\n return [];\n\n const result: Cartographic[] = Array(db.length);\n const reproject: XYAndZ[] = [];\n const reprojectIdx: number[] = [];\n const scratch = new Point3d();\n for (let i = 0; i < db.length; i++) {\n Point3d.createFrom(db[i], scratch);\n if (this.cartesianRange.containsPoint(scratch) ) {\n reprojectIdx.push(i);\n reproject.push(db[i]);\n } else {\n result[i] = this.dbToCartographic(db[i]);\n }\n }\n\n if (reproject.length === 0)\n return result;\n\n const reprojectPromise = this._iModel.wgs84CartographicFromSpatial(reproject);\n return reprojectPromise.then((reprojected) => {\n if (reprojected.length === reprojectIdx.length) { // reprojected array size must match our index array, otherwise something is OFF\n for (let i = 0; i < reprojected.length; i++) {\n result[reprojectIdx[i]] = reprojected[i]; // Insert the reprojected values at their original index\n }\n }\n return result;\n });\n }\n\n public dbToCartographic(db: XYAndZ, result?: Cartographic): Cartographic {\n if (undefined === result)\n result = Cartographic.createZero();\n\n if (this.globeMode === GlobeMode.Plane) {\n const mercatorFraction = this._mercatorFractionToDb.multiplyInversePoint3d(db)!;\n return this._mercatorTilingScheme.fractionToCartographic(mercatorFraction.x, mercatorFraction.y, result, mercatorFraction.z);\n } else {\n const ecef = this._ecefToDb.multiplyInversePoint3d(db)!;\n return Cartographic.fromEcef(ecef, result)!;\n }\n }\n\n public async cartographicToDbFromGcs(cartographic: Cartographic[]): Promise<Point3d[]> {\n let db;\n if (this.globeMode === GlobeMode.Plane) {\n const fraction = Point2d.create(0, 0);\n db = cartographic.map((p) => {\n this._mercatorTilingScheme.cartographicToFraction(p.latitude, p.longitude, fraction);\n return this._mercatorFractionToDb.multiplyXYZ(fraction.x, fraction.y, p.height);\n });\n } else {\n db = cartographic.map((p) => this._ecefToDb.multiplyPoint3d(p.toEcef()));\n }\n\n if (this._iModel.noGcsDefined)\n return db;\n\n const promises = db.map(async (p, i) => {\n return this.cartesianRange.containsPoint(p) ? this._iModel.cartographicToSpatialFromGcs(cartographic[i]) : p;\n });\n\n return Promise.all(promises);\n }\n\n public async cartographicToDbFromWgs84Gcs(cartographic: Cartographic[]): Promise<Point3d[]> {\n let db;\n if (this.globeMode === GlobeMode.Plane) {\n const fraction = Point2d.create(0, 0);\n db = cartographic.map((p) => {\n this._mercatorTilingScheme.cartographicToFraction(p.latitude, p.longitude, fraction);\n return this._mercatorFractionToDb.multiplyXYZ(fraction.x, fraction.y, p.height);\n });\n } else {\n db = cartographic.map((p) => this._ecefToDb.multiplyPoint3d(p.toEcef()));\n }\n\n if (this._iModel.noGcsDefined)\n return db;\n\n const toReprojectCoords: WritableXYAndZ[] = [];\n const toReprojectIdx: number[] = [];\n db.forEach(async (p, i) => {\n if (this.cartesianRange.containsPoint(p)) {\n toReprojectCoords.push({x:cartographic[i].longitudeDegrees, y:cartographic[i].latitudeDegrees, z:cartographic[i].height});\n toReprojectIdx.push(i);\n }\n });\n const spatialPoints = await this._iModel.toSpatialFromGcs(toReprojectCoords, { horizontalCRS: { epsg: 4326 }, verticalCRS: { id: \"ELLIPSOID\" } });\n return db.map((p, i) => {\n const reprojectedIdx = toReprojectIdx.findIndex((value) => value === i);\n return (reprojectedIdx === -1 ? p : spatialPoints[reprojectedIdx]);\n });\n }\n\n public cartographicToDb(cartographic: Cartographic, result?: Point3d): Point3d {\n if (this.globeMode === GlobeMode.Plane) {\n const fraction = Point2d.create(0, 0);\n this._mercatorTilingScheme.cartographicToFraction(cartographic.latitude, cartographic.longitude, fraction);\n return this._mercatorFractionToDb.multiplyXYZ(fraction.x, fraction.y, cartographic.height, result);\n } else {\n return this._ecefToDb.multiplyPoint3d(cartographic.toEcef());\n }\n }\n\n public getEarthEllipsoid(radiusOffset = 0): Ellipsoid {\n const equatorRadius = Constant.earthRadiusWGS84.equator + radiusOffset, polarRadius = Constant.earthRadiusWGS84.polar + radiusOffset;\n return Ellipsoid.createCenterMatrixRadii(this.globeOrigin, this.globeMatrix, equatorRadius, equatorRadius, polarRadius);\n }\n\n public getPlane(offset = 0) {\n return Plane3dByOriginAndUnitNormal.create(Point3d.create(0, 0, this._bimElevationBias + offset), Vector3d.create(0, 0, 1))!;\n }\n\n public getRayIntersection(ray: Ray3d, positiveOnly: boolean): Ray3d | undefined {\n let intersect;\n if (this.globeMode === GlobeMode.Ellipsoid) {\n const ellipsoid = this.geometry as Ellipsoid;\n BackgroundMapGeometry._scratchRayAngles.length = 0;\n BackgroundMapGeometry._scratchRayFractions.length = 0;\n\n const count = ellipsoid.intersectRay(ray, BackgroundMapGeometry._scratchRayFractions, undefined, BackgroundMapGeometry._scratchRayAngles);\n let intersectDistance;\n for (let i = 0; i < count; i++) {\n const thisFraction = BackgroundMapGeometry._scratchRayFractions[i];\n if ((!positiveOnly || thisFraction > 0) && (undefined === intersectDistance || thisFraction < intersectDistance)) {\n intersectDistance = thisFraction;\n intersect = scratchIntersectRay;\n ellipsoid.radiansToUnitNormalRay(BackgroundMapGeometry._scratchRayAngles[i].longitudeRadians, BackgroundMapGeometry._scratchRayAngles[i].latitudeRadians, intersect);\n if (intersect.direction.dotProduct(ray.direction) < 0) {\n if (this.cartesianRange.containsPoint(intersect.origin)) { // If we're in the cartesian range, correct to planar intersection.\n const planeFraction = ray.intersectionWithPlane(this.cartesianPlane, scratchIntersectRay.origin);\n if (undefined !== planeFraction && (!positiveOnly || planeFraction > 0)) {\n intersect.direction.setFromVector3d(this.cartesianPlane.getNormalRef());\n }\n }\n }\n }\n }\n } else {\n const plane = this.geometry as Plane3dByOriginAndUnitNormal;\n const thisFraction = ray.intersectionWithPlane(plane, scratchIntersectRay.origin);\n if (undefined !== thisFraction && (!positiveOnly || thisFraction > 0)) {\n intersect = scratchIntersectRay;\n intersect.direction.setFromVector3d(plane.getNormalRef());\n }\n }\n return intersect;\n }\n public getPointHeight(point: Point3d): number | undefined {\n if (this.globeMode === GlobeMode.Ellipsoid) {\n const ellipsoid = this.geometry as Ellipsoid;\n const projected = ellipsoid.projectPointToSurface(point);\n if (undefined === projected)\n return undefined;\n\n const distance = ellipsoid.radiansToPoint(projected.longitudeRadians, projected.latitudeRadians).distance(point);\n const ellipsePoint = ellipsoid.transformRef.multiplyInversePoint3d(point, BackgroundMapGeometry._scratchPoint)!;\n return ellipsePoint.magnitude() < 1 ? -distance : distance;\n } else {\n const plane = this.geometry as Plane3dByOriginAndUnitNormal;\n return plane.altitude(point);\n }\n }\n\n /** @internal */\n public getFrustumIntersectionDepthRange(frustum: Frustum, bimRange: Range3d, heightRange?: Range1d, gridPlane?: Plane3dByOriginAndUnitNormal, doGlobalScope?: boolean): Range1d {\n const clipPlanes = frustum.getRangePlanes(false, false, 0);\n const eyePoint = frustum.getEyePoint(scratchEyePoint);\n const viewRotation = frustum.getRotation(scratchViewRotation);\n if (undefined === viewRotation)\n return Range1d.createNull(); // Degenerate frustum...\n const viewZ = viewRotation.getRow(2);\n const cartoRange = this.cartesianTransitionRange;\n const intersectRange = Range3d.createNull();\n const doAccumulate = ((point: Point3d) => accumulateDepthRange(point, viewRotation, intersectRange));\n\n if (gridPlane)\n accumulateFrustumPlaneDepthRange(frustum, gridPlane, viewRotation, intersectRange, eyePoint);\n if (this.geometry instanceof Plane3dByOriginAndUnitNormal) {\n // Intersection with a planar background projection...\n const heights = heightRange ? [heightRange.low, heightRange.high] : [0];\n for (const height of heights) {\n accumulateFrustumPlaneDepthRange(frustum, this.getPlane(height), viewRotation, intersectRange, eyePoint);\n }\n } else {\n const minOffset = heightRange ? heightRange.low : 0, maxOffset = (heightRange ? heightRange.high : 0) + this.cartesianChordHeight;\n const radiusOffsets = [minOffset, maxOffset];\n\n // If we are doing global scope then include minimum ellipsoid that represents the chordal approximation of the low level tiles.\n // this substantially expands the frustum so don't do it for non-global views, but this clipping out the low level tiles.\n if (doGlobalScope)\n radiusOffsets.push(minOffset - this.maxGeometryChordHeight);\n\n const toView = Transform.createRefs(Point3d.createZero(), viewRotation);\n const eyePoint4d = eyePoint ? Point4d.createFromPointAndWeight(eyePoint, 1) : Point4d.createFromPointAndWeight(viewZ, 0);\n\n for (const radiusOffset of radiusOffsets) {\n const ellipsoid = this.getEarthEllipsoid(radiusOffset);\n const isInside = eyePoint && ellipsoid.worldToLocal(eyePoint)!.magnitude() < 1.0;\n const center = ellipsoid.localToWorld(scratchZeroPoint, scratchCenterPoint);\n const clipPlaneCount = clipPlanes.planes.length;\n\n // Extrema...\n let angles, extremaPoint;\n if (undefined !== (angles = ellipsoid.surfaceNormalToAngles(viewZ)) &&\n undefined !== (extremaPoint = ellipsoid.radiansToPoint(angles.longitudeRadians, angles.latitudeRadians)) &&\n (eyePoint === undefined || viewZ.dotProductStartEnd(extremaPoint, eyePoint) > 0) &&\n clipPlanes.classifyPointContainment([extremaPoint], false) !== ClipPlaneContainment.StronglyOutside)\n doAccumulate(extremaPoint);\n\n if (isInside) {\n if (eyePoint)\n doAccumulate(eyePoint);\n } else {\n const silhouette = ellipsoid.silhouetteArc(eyePoint4d);\n if (silhouette !== undefined) {\n silhouette.perpendicularVector.clone(scratchSilhouetteNormal);\n // Push the silhouette plane as clip so that we do not include geometry at other side of ellipsoid.\n // First make sure that it is pointing in the right direction.\n if (eyePoint) {\n // Clip toward eye.\n if (scratchSilhouetteNormal.dotProduct(viewZ) < 0)\n scratchSilhouetteNormal.negate(scratchSilhouetteNormal);\n } else {\n /* If parallel projection - clip toward side of ellipsoid with BIM geometry */\n if (Vector3d.createStartEnd(silhouette.center, bimRange.center).dotProduct(scratchSilhouetteNormal) < 0)\n scratchSilhouetteNormal.negate(scratchSilhouetteNormal);\n }\n clipPlanes.planes.push(ClipPlane.createNormalAndDistance(scratchSilhouetteNormal, scratchSilhouetteNormal.dotProduct(silhouette.center))!);\n } else {\n clipPlanes.planes.push(ClipPlane.createNormalAndPoint(viewZ, center)!);\n }\n }\n if (!isInside || radiusOffset === radiusOffsets[0]) {\n // Intersections of ellipsoid with frustum planes...\n const viewingInside = eyePoint !== undefined && viewZ.dotProduct(Vector3d.createStartEnd(center, eyePoint)) < 0;\n if (eyePoint === undefined || !isInside || viewingInside) {\n for (const clipPlane of clipPlanes.planes) {\n const plane = clipPlane.getPlane3d();\n const arc = ellipsoid.createPlaneSection(plane);\n if (undefined !== arc) {\n arc.announceClipIntervals(clipPlanes, (a0: number, a1: number, cp: CurvePrimitive) => {\n if (Math.abs(a1 - a0) < 1.0E-8) {\n doAccumulate(cp.fractionToPoint(a0)); // Tiny sweep - avoid problem with rangeMethod (not worth doing anyway).\n } else {\n const segment = cp.clonePartialCurve(a0, a1);\n if (segment !== undefined)\n segment.extendRange(intersectRange, toView);\n\n }\n });\n }\n }\n }\n // Intersections of the cartesian region with frustum planes.\n scratchCartoRectangle.resize(0);\n scratchCartoRectangle.push({ x: cartoRange.low.x, y: cartoRange.low.y, z: radiusOffset });\n scratchCartoRectangle.push({ x: cartoRange.high.x, y: cartoRange.low.y, z: radiusOffset });\n scratchCartoRectangle.push({ x: cartoRange.high.x, y: cartoRange.high.y, z: radiusOffset });\n scratchCartoRectangle.push({ x: cartoRange.low.x, y: cartoRange.high.y, z: radiusOffset });\n scratchCartoRectangle.push({ x: cartoRange.low.x, y: cartoRange.low.y, z: radiusOffset });\n\n clipPlanes.clipConvexPolygonInPlace(scratchCartoRectangle, scratchWorkArray);\n for (let i = 0; i < scratchCartoRectangle.length; i++)\n doAccumulate(scratchCartoRectangle.getPoint3dAtUncheckedPointIndex(i));\n while (clipPlanes.planes.length > clipPlaneCount) // Remove pushed silhouette plane.\n clipPlanes.planes.pop();\n }\n }\n }\n\n if (intersectRange.zLength() < 5) {\n // For the case where the fitted depth is small (less than 5 meters) we must be viewing planar projection or the\n // planar portion of the iModel in plan view. In this case use a constant (arbitrarily 100 meters) depth so that the frustum\n // Z is doesn't change and cause nearly planar geometry to jitter in Z buffer.\n const zCenter = (intersectRange.low.z + intersectRange.high.z) / 2;\n const zExpand = 50;\n return Range1d.createXX(zCenter - zExpand, zCenter + zExpand);\n } else {\n const diagonal = intersectRange.diagonal(scratchVector).magnitudeXY();\n const expansion = diagonal * .01;\n return Range1d.createXX(intersectRange.low.z - expansion, intersectRange.high.z + expansion);\n }\n }\n\n public addFrustumDecorations(builder: GraphicBuilder, frustum: Frustum) {\n if (this.geometry instanceof Ellipsoid) {\n const ellipsoid = this.geometry;\n const clipPlanes = frustum.getRangePlanes(false, false, 0);\n const viewRotation = frustum.getRotation()!;\n const eyePoint = frustum.getEyePoint(scratchEyePoint);\n const viewZ = viewRotation.getRow(2);\n const eyePoint4d = eyePoint ? Point4d.createFromPointAndWeight(eyePoint, 1) : Point4d.createFromPointAndWeight(viewZ, 0);\n const isInside = eyePoint && ellipsoid.worldToLocal(eyePoint)!.magnitude() < 1.0;\n const center = ellipsoid.localToWorld(scratchZeroPoint, scratchCenterPoint);\n const cartoRange = this.cartesianTransitionRange;\n\n if (!isInside) {\n const silhouette = ellipsoid.silhouetteArc(eyePoint4d);\n if (silhouette !== undefined) {\n silhouette.perpendicularVector.clone(scratchSilhouetteNormal);\n if (scratchSilhouetteNormal.dotProduct(viewZ) < 0)\n scratchSilhouetteNormal.negate(scratchSilhouetteNormal);\n clipPlanes.planes.push(ClipPlane.createNormalAndDistance(scratchSilhouetteNormal, scratchSilhouetteNormal.dotProduct(silhouette.center))!);\n } else {\n clipPlanes.planes.push(ClipPlane.createNormalAndPoint(viewZ, center)!);\n }\n\n const ellipsoidColor = ColorDef.create(ColorByName.yellow);\n builder.setSymbology(ellipsoidColor, ellipsoidColor, 1, LinePixels.Code2);\n for (const clipPlane of clipPlanes.planes) {\n const plane = clipPlane.getPlane3d();\n const arc = ellipsoid.createPlaneSection(plane);\n if (undefined !== arc) {\n arc.announceClipIntervals(clipPlanes, (a0: number, a1: number, cp: CurvePrimitive) => {\n const segment = cp.clonePartialCurve(a0, a1);\n if (segment !== undefined)\n builder.addArc(segment as Arc3d, false, false);\n });\n }\n\n // Intersections of the cartesian region with frustum planes.\n scratchCartoRectangle.resize(0);\n scratchCartoRectangle.push({ x: cartoRange.low.x, y: cartoRange.low.y, z: 0 });\n scratchCartoRectangle.push({ x: cartoRange.high.x, y: cartoRange.low.y, z: 0 });\n scratchCartoRectangle.push({ x: cartoRange.high.x, y: cartoRange.high.y, z: 0 });\n scratchCartoRectangle.push({ x: cartoRange.low.x, y: cartoRange.high.y, z: 0 });\n scratchCartoRectangle.push({ x: cartoRange.low.x, y: cartoRange.low.y, z: 0 });\n\n clipPlanes.clipConvexPolygonInPlace(scratchCartoRectangle, scratchWorkArray);\n if (scratchCartoRectangle.length > 0) {\n builder.addLineString(scratchCartoRectangle.getPoint3dArray());\n }\n }\n }\n }\n }\n}\n\n/** Calculate the ECEF to database (IModel) coordinate transform at a provided location, using the GCS of the iModel.\n * The transform will exactly represent the GCS at the provided location.\n * @public\n */\nexport async function calculateEcefToDbTransformAtLocation(originIn: Point3d, iModel: IModelConnection): Promise<Transform | undefined> {\n const geoConverter = iModel.noGcsDefined ? undefined : iModel.geoServices.getConverter(\"WGS84\");\n if (geoConverter === undefined)\n return undefined;\n\n const origin = Point3d.create(originIn.x, originIn.y, 0); // Always Test at zero.\n const eastPoint = origin.plusXYZ(1, 0, 0);\n const northPoint = origin.plusXYZ(0, 1, 0);\n\n const response = await geoConverter.getGeoCoordinatesFromIModelCoordinates([origin, northPoint, eastPoint]);\n if (response.geoCoords[0].s !== GeoCoordStatus.Success || response.geoCoords[1].s !== GeoCoordStatus.Success || response.geoCoords[2].s !== GeoCoordStatus.Success)\n return undefined;\n\n const geoOrigin = Point3d.fromJSON(response.geoCoords[0].p);\n const geoNorth = Point3d.fromJSON(response.geoCoords[1].p);\n const geoEast = Point3d.fromJSON(response.geoCoords[2].p);\n const ecefOrigin = Cartographic.fromDegrees({ longitude: geoOrigin.x, latitude: geoOrigin.y, height: geoOrigin.z }).toEcef();\n const ecefNorth = Cartographic.fromDegrees({ longitude: geoNorth.x, latitude: geoNorth.y, height: geoNorth.z }).toEcef();\n const ecefEast = Cartographic.fromDegrees({ longitude: geoEast.x, latitude: geoEast.y, height: geoEast.z }).toEcef();\n\n const xVector = Vector3d.createStartEnd(ecefOrigin, ecefEast);\n const yVector = Vector3d.createStartEnd(ecefOrigin, ecefNorth);\n const zVector = xVector.unitCrossProduct(yVector);\n if (undefined === zVector) {\n assert(false); // Should never occur.\n return undefined;\n }\n const matrix = Matrix3d.createColumns(xVector, yVector, zVector);\n if (matrix === undefined)\n return undefined;\n\n const inverse = matrix.inverse();\n if (inverse === undefined) {\n assert(false); // Should never occur.\n return undefined;\n }\n\n return Transform.createMatrixPickupPutdown(matrix, origin, ecefOrigin).inverse()!;\n}\n\n"]}
1
+ {"version":3,"file":"BackgroundMapGeometry.js","sourceRoot":"","sources":["../../src/BackgroundMapGeometry.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAS,SAAS,EAAE,oBAAoB,EAAE,QAAQ,EAAkB,SAAS,EAAE,gBAAgB,EAA2B,QAAQ,EAAE,4BAA4B,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAA0B,MAAM,sBAAsB,CAAC;AAC9S,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAW,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGzH,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;AAC1C,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;AAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AACtC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;AACxC,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;AAChD,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9E,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;AAC7C,MAAM,mBAAmB,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;AACtD,MAAM,uBAAuB,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;AAClD,MAAM,qBAAqB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AACrD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAEhD,SAAS,oBAAoB,CAAC,KAAc,EAAE,YAAsB,EAAE,KAAc;IAClF,YAAY,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACnD,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,gCAAgC,CAAC,OAAgB,EAAE,KAAmC,EAAE,YAAsB,EAAE,KAAc,EAAE,QAAkB;IACzJ,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxG,MAAM,YAAY,GAAG,UAAU,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC3E,IAAI,SAAS,KAAK,YAAY,IAAI,CAAC,CAAC,QAAQ,IAAI,YAAY,GAAG,CAAC,CAAC;YAC/D,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;;YAExD,cAAc,GAAG,IAAI,CAAC;IAC1B,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,SAAS,GAAG,CAAC;gBACf,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;iBACjD,CAAC;gBACJ,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACrC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAC7G,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACxG,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,qCAAqC,CAAC,OAAgB,EAAE,KAAmC;IACzG,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC7E,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAC5C,gCAAgC,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IAEzF,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAqBZ;IAAyD;IApB7D,SAAS,CAAY;IACrB,QAAQ,CAA2C;IACnD,WAAW,CAAU;IACrB,WAAW,CAAW;IACtB,cAAc,CAAU;IACxB,wBAAwB,CAAU;IAClC,cAAc,CAA+B;IAC7C,iBAAiB,CAAS;IAC1B,oBAAoB,CAAS;IAC7B,sBAAsB,CAAS;IACvC,qBAAqB,CAAY;IACjC,qBAAqB,CAA0B;IAC/C,SAAS,CAAY;IACtB,MAAM,CAAC,oBAAoB,GAAG,GAAG,CAAC,CAAW,sGAAsG;IAClJ,MAAM,CAAC,6BAA6B,GAAG,GAAG,CAAC,CAAE,mHAAmH;IAEhK,MAAM,CAAC,oBAAoB,GAAG,IAAI,KAAK,EAAU,CAAC;IAClD,MAAM,CAAC,iBAAiB,GAAG,IAAI,KAAK,EAA2B,CAAC;IAChE,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAEpD,YAAoB,iBAAyB,EAAE,SAAoB,EAAU,OAAyB;QAAlF,sBAAiB,GAAjB,iBAAiB,CAAQ;QAAgC,YAAO,GAAP,OAAO,CAAkB;QACpG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5D,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,qBAAqB,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3G,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;QACtE,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACjD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,wDAAwD;QAC1L,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,WAAW,CAAC;QAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;QACrG,IAAI,CAAC,qBAAqB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC3D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACzI,CAAC;IACM,MAAM,CAAC,iBAAiB,CAAC,MAAwB,EAAE,MAAgB;QACxE,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACzE,cAAc,CAAC,aAAa,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;QACzE,OAAO,cAAc,CAAC;IACxB,CAAC;IACM,MAAM,CAAC,8BAA8B,CAAC,MAAwB;QACnE,OAAO,qBAAqB,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,GAAG,qBAAqB,CAAC,6BAA6B,CAAC;IACtJ,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,EAAY;QAC/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAClC,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC9I,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,4BAA4B,CAAC,EAAY;QACpD,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YACjB,OAAO,EAAE,CAAC;QAEZ,MAAM,MAAM,GAAmB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,EAAG,CAAC;gBAChD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YACxB,OAAO,MAAM,CAAC;QAEhB,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC;QAC9E,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;YAC3C,IAAI,WAAW,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC,CAAG,gFAAgF;gBAClI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5C,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,wDAAwD;gBACpG,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,gBAAgB,CAAC,EAAU,EAAE,MAAqB;QACvD,IAAI,SAAS,KAAK,MAAM;YACtB,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,gBAAgB,GAAG,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9F,OAAO,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC/H,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;YACtE,OAAO,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,YAA4B;QAC/D,IAAI,EAAE,CAAC;QACP,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1B,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACrF,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY;YAC3B,OAAO,EAAE,CAAC;QAEZ,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,4BAA4B,CAAC,YAA4B;QACpE,IAAI,EAAE,CAAC;QACP,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1B,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACrF,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY;YAC3B,OAAO,EAAE,CAAC;QAEZ,MAAM,iBAAiB,GAAqB,EAAE,CAAC;QAC/C,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzC,iBAAiB,CAAC,IAAI,CAAC,EAAC,CAAC,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAC,CAAC,CAAC;gBAC1H,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAClJ,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,gBAAgB,CAAC,YAA0B,EAAE,MAAgB;QAClE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC3G,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrG,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAEM,iBAAiB,CAAC,YAAY,GAAG,CAAC;QACvC,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,GAAG,YAAY,EAAE,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,GAAG,YAAY,CAAC;QACrI,OAAO,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IAC1H,CAAC;IAEM,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxB,OAAO,aAAa,CAAC,4BAA4B,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7I,CAAC;IAEM,kBAAkB,CAAC,GAAU,EAAE,YAAqB;QACzD,IAAI,SAAS,CAAC;QACd,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAqB,CAAC;YAC7C,qBAAqB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;YACnD,qBAAqB,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;YAEtD,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,qBAAqB,CAAC,oBAAoB,EAAE,SAAS,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;YAC1I,IAAI,iBAAiB,CAAC;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,MAAM,YAAY,GAAG,qBAAqB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBACnE,IAAI,CAAC,CAAC,YAAY,IAAI,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,iBAAiB,IAAI,YAAY,GAAG,iBAAiB,CAAC,EAAE,CAAC;oBACjH,iBAAiB,GAAG,YAAY,CAAC;oBACjC,SAAS,GAAG,mBAAmB,CAAC;oBAChC,SAAS,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;oBACrK,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtD,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAI,mEAAmE;4BAC/H,MAAM,aAAa,GAAG,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;4BACjG,IAAI,SAAS,KAAK,aAAa,IAAI,CAAC,CAAC,YAAY,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC;gCACxE,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;4BAC1E,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,QAAwC,CAAC;YAC5D,MAAM,YAAY,GAAG,GAAG,CAAC,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAClF,IAAI,SAAS,KAAK,YAAY,IAAI,CAAC,CAAC,YAAY,IAAI,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;gBACtE,SAAS,GAAG,mBAAmB,CAAC;gBAChC,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACM,cAAc,CAAC,KAAc;QAClC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAqB,CAAC;YAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,SAAS,KAAK,SAAS;gBACzB,OAAO,SAAS,CAAC;YAEnB,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACjH,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC;YAC9H,OAAO,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,QAAwC,CAAC;YAC5D,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,gBAAgB;IACT,gCAAgC,CAAC,OAAgB,EAAE,QAAiB,EAAE,WAAqB,EAAE,SAAwC,EAAE,aAAuB;QACnK,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAC9D,IAAI,SAAS,KAAK,YAAY;YAC5B,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC,CAAM,wBAAwB;QAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC;QACjD,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;QAErG,IAAI,SAAS;YACX,gCAAgC,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC/F,IAAI,IAAI,CAAC,QAAQ,YAAY,4BAA4B,EAAE,CAAC;YAC1D,sDAAsD;YACtD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,gCAAgC,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC3G,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;YAClI,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAE7C,gIAAgI;YAChI,yHAAyH;YACzH,IAAI,aAAa;gBACf,aAAa,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAE9D,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;YACxE,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAEzH,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;gBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;gBACvD,MAAM,QAAQ,GAAG,QAAQ,IAAI,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC;gBAC/F,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;gBAC5E,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;gBAEhD,aAAa;gBACb,IAAI,MAAM,EAAE,YAAY,CAAC;gBACzB,IAAI,SAAS,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;oBACjE,SAAS,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;oBACxG,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAChF,UAAU,CAAC,wBAAwB,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,KAAK,oBAAoB,CAAC,eAAe;oBACnG,YAAY,CAAC,YAAY,CAAC,CAAC;gBAE7B,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,QAAQ;wBACV,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBACvD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC7B,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;wBAC9D,mGAAmG;wBACnG,8DAA8D;wBAC9D,IAAI,QAAQ,EAAE,CAAC;4BACb,mBAAmB;4BACnB,IAAI,uBAAuB,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;gCAC/C,uBAAuB,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;wBAC5D,CAAC;6BAAM,CAAC;4BACN,8EAA8E;4BAC9E,IAAI,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,uBAAuB,CAAC,GAAG,CAAC;gCACrG,uBAAuB,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;wBAC5D,CAAC;wBACD,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uBAAuB,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3J,CAAC;yBAAM,CAAC;wBACN,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;oBACvF,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,QAAQ,IAAI,YAAY,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnD,oDAAoD;oBACpD,MAAM,aAAa,GAAG,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;oBAChH,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,IAAI,aAAa,EAAE,CAAC;wBACzD,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;4BAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;4BACrC,MAAM,GAAG,GAAG,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;4BAChD,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;gCACtB,GAAG,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC,EAAU,EAAE,EAAU,EAAE,EAAkB,EAAE,EAAE;oCACnF,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;wCAC/B,YAAY,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAG,wEAAwE;oCAClH,CAAC;yCAAM,CAAC;wCACN,MAAM,OAAO,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wCAC7C,IAAI,OAAO,KAAK,SAAS;4CACvB,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;oCAEhD,CAAC;gCACH,CAAC,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,6DAA6D;oBAC7D,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAChC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC1F,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC3F,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC5F,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC3F,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;oBAE1F,UAAU,CAAC,wBAAwB,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;oBAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE;wBACnD,YAAY,CAAC,qBAAqB,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzE,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,cAAc,EAAI,kCAAkC;wBACpF,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;YACjC,gHAAgH;YAChH,4HAA4H;YAC5H,8EAA8E;YAC9E,MAAM,OAAO,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;YACtE,MAAM,SAAS,GAAG,QAAQ,GAAG,GAAG,CAAC;YACjC,OAAO,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAEM,qBAAqB,CAAC,OAAuB,EAAE,OAAgB;QACpE,IAAI,IAAI,CAAC,QAAQ,YAAY,SAAS,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;YAChC,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzH,MAAM,QAAQ,GAAG,QAAQ,IAAI,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC;YAC/F,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;YAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC;YAEjD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACvD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBAC9D,IAAI,uBAAuB,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;wBAC/C,uBAAuB,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;oBAC1D,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uBAAuB,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3J,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvF,CAAC;gBAED,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC3D,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC1E,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;oBACrC,MAAM,GAAG,GAAG,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBAChD,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;wBACtB,GAAG,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC,EAAU,EAAE,EAAU,EAAE,EAAkB,EAAE,EAAE;4BACnF,MAAM,OAAO,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;4BAC7C,IAAI,OAAO,KAAK,SAAS;gCACvB,OAAO,CAAC,MAAM,CAAC,OAAgB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;wBACnD,CAAC,CAAC,CAAC;oBACL,CAAC;oBAED,6DAA6D;oBAC7D,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAChC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC/E,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAChF,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBACjF,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAChF,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAE/E,UAAU,CAAC,wBAAwB,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;oBAC7E,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrC,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;;AAGH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oCAAoC,CAAC,QAAiB,EAAE,MAAwB;IACpG,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAChG,IAAI,YAAY,KAAK,SAAS;QAC5B,OAAO,SAAS,CAAC;IAEnB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAG,uBAAuB;IACnF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,sCAAsC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5G,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,OAAO;QAChK,OAAO,SAAS,CAAC;IAEnB,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7H,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACzH,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAErH,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAY,sBAAsB;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACjE,IAAI,MAAM,KAAK,SAAS;QACtB,OAAO,SAAS,CAAC;IAEnB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAe,sBAAsB;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;AACnF,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Views\n */\n\nimport { assert, expectDefined } from \"@itwin/core-bentley\";\nimport { Angle, Arc3d, ClipPlane, ClipPlaneContainment, Constant, CurvePrimitive, Ellipsoid, GrowableXYZArray, LongitudeLatitudeNumber, Matrix3d, Plane3dByOriginAndUnitNormal, Point2d, Point3d, Point4d, Range1d, Range3d, Ray3d, Transform, Vector3d, WritableXYAndZ, XYAndZ } from \"@itwin/core-geometry\";\nimport { Cartographic, ColorByName, ColorDef, Frustum, GeoCoordStatus, GlobeMode, LinePixels } from \"@itwin/core-common\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { GraphicBuilder } from \"./render/GraphicBuilder\";\nimport { WebMercatorTilingScheme } from \"./tile/internal\";\n\nconst scratchRange = Range3d.createNull();\nconst scratchZeroPoint = Point3d.createZero();\nconst scratchPoint = Point3d.create();\nconst scratchVector = Vector3d.create();\nconst scratchCenterPoint = Point3d.createZero();\nconst scratchIntersectRay = Ray3d.create(Point3d.create(), Vector3d.create());\nconst scratchEyePoint = Point3d.createZero();\nconst scratchViewRotation = Matrix3d.createIdentity();\nconst scratchSilhouetteNormal = Vector3d.create();\nconst scratchCartoRectangle = new GrowableXYZArray();\nconst scratchWorkArray = new GrowableXYZArray();\n\nfunction accumulateDepthRange(point: Point3d, viewRotation: Matrix3d, range: Range3d) {\n viewRotation.multiplyXYZtoXYZ(point, scratchPoint);\n range.extend(scratchPoint);\n}\n\nfunction accumulateFrustumPlaneDepthRange(frustum: Frustum, plane: Plane3dByOriginAndUnitNormal, viewRotation: Matrix3d, range: Range3d, eyePoint?: Point3d) {\n let includeHorizon = false;\n for (let i = 0; i < 4; i++) {\n const frustumRay = Ray3d.createStartEnd(eyePoint ? eyePoint : frustum.points[i + 4], frustum.points[i]);\n const thisFraction = frustumRay.intersectionWithPlane(plane, scratchPoint);\n if (undefined !== thisFraction && (!eyePoint || thisFraction > 0))\n accumulateDepthRange(scratchPoint, viewRotation, range);\n else\n includeHorizon = true;\n }\n if (includeHorizon) {\n if (eyePoint !== undefined) {\n const eyeHeight = plane.altitude(eyePoint);\n if (eyeHeight < 0)\n accumulateDepthRange(eyePoint, viewRotation, range);\n else {\n const viewZ = viewRotation.getRow(2);\n const horizonDistance = Math.sqrt(eyeHeight * eyeHeight + 2 * eyeHeight * Constant.earthRadiusWGS84.equator);\n accumulateDepthRange(eyePoint.plusScaled(viewZ, -horizonDistance, scratchPoint), viewRotation, range);\n }\n }\n }\n}\n\n/** @internal */\nexport function getFrustumPlaneIntersectionDepthRange(frustum: Frustum, plane: Plane3dByOriginAndUnitNormal): Range1d {\n const eyePoint = frustum.getEyePoint(scratchEyePoint);\n const viewRotation = expectDefined(frustum.getRotation(scratchViewRotation));\n const intersectRange = Range3d.createNull();\n accumulateFrustumPlaneDepthRange(frustum, plane, viewRotation, intersectRange, eyePoint);\n\n return intersectRange.isNull ? Range1d.createNull() : Range1d.createXX(intersectRange.low.z, intersectRange.high.z);\n}\n\n/** Geometry of background map - either an ellipsoid or a plane as defined by GlobeMode.\n * @internal\n */\nexport class BackgroundMapGeometry {\n public readonly globeMode: GlobeMode;\n public readonly geometry: Plane3dByOriginAndUnitNormal | Ellipsoid;\n public readonly globeOrigin: Point3d;\n public readonly globeMatrix: Matrix3d;\n public readonly cartesianRange: Range3d;\n public readonly cartesianTransitionRange: Range3d;\n public readonly cartesianPlane: Plane3dByOriginAndUnitNormal;\n public readonly cartesianDiagonal: number;\n public readonly cartesianChordHeight: number;\n public readonly maxGeometryChordHeight: number;\n private _mercatorFractionToDb: Transform;\n private _mercatorTilingScheme: WebMercatorTilingScheme;\n private _ecefToDb: Transform;\n public static maxCartesianDistance = 1E4; // If globe is 3D we still consider the map geometry flat within this distance of the project extents.\n private static _transitionDistanceMultiplier = .25; // In the transition range which extends beyond the cartesian range we interpolate between cartesian and ellipsoid.\n\n private static _scratchRayFractions = new Array<number>();\n private static _scratchRayAngles = new Array<LongitudeLatitudeNumber>();\n private static _scratchPoint = Point3d.createZero();\n\n constructor(private _bimElevationBias: number, globeMode: GlobeMode, private _iModel: IModelConnection) {\n this._ecefToDb = _iModel.getMapEcefToDb(_bimElevationBias);\n this.globeMode = globeMode;\n this.cartesianRange = BackgroundMapGeometry.getCartesianRange(_iModel);\n this.cartesianTransitionRange = this.cartesianRange.clone();\n this.cartesianTransitionRange.expandInPlace(BackgroundMapGeometry.getCartesianTransitionDistance(_iModel));\n this.cartesianDiagonal = this.cartesianRange.diagonal().magnitudeXY();\n const earthRadius = Constant.earthRadiusWGS84.equator;\n this.globeOrigin = this._ecefToDb.origin.cloneAsPoint3d();\n this.globeMatrix = this._ecefToDb.matrix.clone();\n this.cartesianChordHeight = Math.sqrt(this.cartesianDiagonal * this.cartesianDiagonal + earthRadius * earthRadius) - earthRadius; // Maximum chord height deviation of the cartesian area.\n const halfChordAngle = Angle.piOver2Radians / 10;\n this.maxGeometryChordHeight = (1 - Math.cos(halfChordAngle)) * earthRadius;\n this.cartesianPlane = this.getPlane();\n this.geometry = (globeMode === GlobeMode.Ellipsoid) ? this.getEarthEllipsoid() : this.cartesianPlane;\n this._mercatorTilingScheme = new WebMercatorTilingScheme();\n this._mercatorFractionToDb = this._mercatorTilingScheme.computeMercatorFractionToDb(this._ecefToDb, _bimElevationBias, _iModel, false);\n }\n public static getCartesianRange(iModel: IModelConnection, result?: Range3d): Range3d {\n const cartesianRange = Range3d.createFrom(iModel.projectExtents, result);\n cartesianRange.expandInPlace(BackgroundMapGeometry.maxCartesianDistance);\n return cartesianRange;\n }\n public static getCartesianTransitionDistance(iModel: IModelConnection): number {\n return BackgroundMapGeometry.getCartesianRange(iModel, scratchRange).diagonal().magnitudeXY() * BackgroundMapGeometry._transitionDistanceMultiplier;\n }\n\n public async dbToCartographicFromGcs(db: XYAndZ[]): Promise<Cartographic[]> {\n const scratch = new Point3d();\n const promises = db.map(async (p) => {\n return this.cartesianRange.containsPoint(Point3d.createFrom(p, scratch)) ? this._iModel.spatialToCartographic(p) : this.dbToCartographic(p);\n });\n\n return Promise.all(promises);\n }\n\n public async dbToWGS84CartographicFromGcs(db: XYAndZ[]): Promise<Cartographic[]> {\n if (db.length === 0)\n return [];\n\n const result: Cartographic[] = Array(db.length);\n const reproject: XYAndZ[] = [];\n const reprojectIdx: number[] = [];\n const scratch = new Point3d();\n for (let i = 0; i < db.length; i++) {\n Point3d.createFrom(db[i], scratch);\n if (this.cartesianRange.containsPoint(scratch) ) {\n reprojectIdx.push(i);\n reproject.push(db[i]);\n } else {\n result[i] = this.dbToCartographic(db[i]);\n }\n }\n\n if (reproject.length === 0)\n return result;\n\n const reprojectPromise = this._iModel.wgs84CartographicFromSpatial(reproject);\n return reprojectPromise.then((reprojected) => {\n if (reprojected.length === reprojectIdx.length) { // reprojected array size must match our index array, otherwise something is OFF\n for (let i = 0; i < reprojected.length; i++) {\n result[reprojectIdx[i]] = reprojected[i]; // Insert the reprojected values at their original index\n }\n }\n return result;\n });\n }\n\n public dbToCartographic(db: XYAndZ, result?: Cartographic): Cartographic {\n if (undefined === result)\n result = Cartographic.createZero();\n\n if (this.globeMode === GlobeMode.Plane) {\n const mercatorFraction = expectDefined(this._mercatorFractionToDb.multiplyInversePoint3d(db));\n return this._mercatorTilingScheme.fractionToCartographic(mercatorFraction.x, mercatorFraction.y, result, mercatorFraction.z);\n } else {\n const ecef = expectDefined(this._ecefToDb.multiplyInversePoint3d(db));\n return expectDefined(Cartographic.fromEcef(ecef, result));\n }\n }\n\n public async cartographicToDbFromGcs(cartographic: Cartographic[]): Promise<Point3d[]> {\n let db;\n if (this.globeMode === GlobeMode.Plane) {\n const fraction = Point2d.create(0, 0);\n db = cartographic.map((p) => {\n this._mercatorTilingScheme.cartographicToFraction(p.latitude, p.longitude, fraction);\n return this._mercatorFractionToDb.multiplyXYZ(fraction.x, fraction.y, p.height);\n });\n } else {\n db = cartographic.map((p) => this._ecefToDb.multiplyPoint3d(p.toEcef()));\n }\n\n if (this._iModel.noGcsDefined)\n return db;\n\n const promises = db.map(async (p, i) => {\n return this.cartesianRange.containsPoint(p) ? this._iModel.cartographicToSpatialFromGcs(cartographic[i]) : p;\n });\n\n return Promise.all(promises);\n }\n\n public async cartographicToDbFromWgs84Gcs(cartographic: Cartographic[]): Promise<Point3d[]> {\n let db;\n if (this.globeMode === GlobeMode.Plane) {\n const fraction = Point2d.create(0, 0);\n db = cartographic.map((p) => {\n this._mercatorTilingScheme.cartographicToFraction(p.latitude, p.longitude, fraction);\n return this._mercatorFractionToDb.multiplyXYZ(fraction.x, fraction.y, p.height);\n });\n } else {\n db = cartographic.map((p) => this._ecefToDb.multiplyPoint3d(p.toEcef()));\n }\n\n if (this._iModel.noGcsDefined)\n return db;\n\n const toReprojectCoords: WritableXYAndZ[] = [];\n const toReprojectIdx: number[] = [];\n db.forEach(async (p, i) => {\n if (this.cartesianRange.containsPoint(p)) {\n toReprojectCoords.push({x:cartographic[i].longitudeDegrees, y:cartographic[i].latitudeDegrees, z:cartographic[i].height});\n toReprojectIdx.push(i);\n }\n });\n const spatialPoints = await this._iModel.toSpatialFromGcs(toReprojectCoords, { horizontalCRS: { epsg: 4326 }, verticalCRS: { id: \"ELLIPSOID\" } });\n return db.map((p, i) => {\n const reprojectedIdx = toReprojectIdx.findIndex((value) => value === i);\n return (reprojectedIdx === -1 ? p : spatialPoints[reprojectedIdx]);\n });\n }\n\n public cartographicToDb(cartographic: Cartographic, result?: Point3d): Point3d {\n if (this.globeMode === GlobeMode.Plane) {\n const fraction = Point2d.create(0, 0);\n this._mercatorTilingScheme.cartographicToFraction(cartographic.latitude, cartographic.longitude, fraction);\n return this._mercatorFractionToDb.multiplyXYZ(fraction.x, fraction.y, cartographic.height, result);\n } else {\n return this._ecefToDb.multiplyPoint3d(cartographic.toEcef());\n }\n }\n\n public getEarthEllipsoid(radiusOffset = 0): Ellipsoid {\n const equatorRadius = Constant.earthRadiusWGS84.equator + radiusOffset, polarRadius = Constant.earthRadiusWGS84.polar + radiusOffset;\n return Ellipsoid.createCenterMatrixRadii(this.globeOrigin, this.globeMatrix, equatorRadius, equatorRadius, polarRadius);\n }\n\n public getPlane(offset = 0) {\n return expectDefined(Plane3dByOriginAndUnitNormal.create(Point3d.create(0, 0, this._bimElevationBias + offset), Vector3d.create(0, 0, 1)));\n }\n\n public getRayIntersection(ray: Ray3d, positiveOnly: boolean): Ray3d | undefined {\n let intersect;\n if (this.globeMode === GlobeMode.Ellipsoid) {\n const ellipsoid = this.geometry as Ellipsoid;\n BackgroundMapGeometry._scratchRayAngles.length = 0;\n BackgroundMapGeometry._scratchRayFractions.length = 0;\n\n const count = ellipsoid.intersectRay(ray, BackgroundMapGeometry._scratchRayFractions, undefined, BackgroundMapGeometry._scratchRayAngles);\n let intersectDistance;\n for (let i = 0; i < count; i++) {\n const thisFraction = BackgroundMapGeometry._scratchRayFractions[i];\n if ((!positiveOnly || thisFraction > 0) && (undefined === intersectDistance || thisFraction < intersectDistance)) {\n intersectDistance = thisFraction;\n intersect = scratchIntersectRay;\n ellipsoid.radiansToUnitNormalRay(BackgroundMapGeometry._scratchRayAngles[i].longitudeRadians, BackgroundMapGeometry._scratchRayAngles[i].latitudeRadians, intersect);\n if (intersect.direction.dotProduct(ray.direction) < 0) {\n if (this.cartesianRange.containsPoint(intersect.origin)) { // If we're in the cartesian range, correct to planar intersection.\n const planeFraction = ray.intersectionWithPlane(this.cartesianPlane, scratchIntersectRay.origin);\n if (undefined !== planeFraction && (!positiveOnly || planeFraction > 0)) {\n intersect.direction.setFromVector3d(this.cartesianPlane.getNormalRef());\n }\n }\n }\n }\n }\n } else {\n const plane = this.geometry as Plane3dByOriginAndUnitNormal;\n const thisFraction = ray.intersectionWithPlane(plane, scratchIntersectRay.origin);\n if (undefined !== thisFraction && (!positiveOnly || thisFraction > 0)) {\n intersect = scratchIntersectRay;\n intersect.direction.setFromVector3d(plane.getNormalRef());\n }\n }\n return intersect;\n }\n public getPointHeight(point: Point3d): number | undefined {\n if (this.globeMode === GlobeMode.Ellipsoid) {\n const ellipsoid = this.geometry as Ellipsoid;\n const projected = ellipsoid.projectPointToSurface(point);\n if (undefined === projected)\n return undefined;\n\n const distance = ellipsoid.radiansToPoint(projected.longitudeRadians, projected.latitudeRadians).distance(point);\n const ellipsePoint = expectDefined(ellipsoid.transformRef.multiplyInversePoint3d(point, BackgroundMapGeometry._scratchPoint));\n return ellipsePoint.magnitude() < 1 ? -distance : distance;\n } else {\n const plane = this.geometry as Plane3dByOriginAndUnitNormal;\n return plane.altitude(point);\n }\n }\n\n /** @internal */\n public getFrustumIntersectionDepthRange(frustum: Frustum, bimRange: Range3d, heightRange?: Range1d, gridPlane?: Plane3dByOriginAndUnitNormal, doGlobalScope?: boolean): Range1d {\n const clipPlanes = frustum.getRangePlanes(false, false, 0);\n const eyePoint = frustum.getEyePoint(scratchEyePoint);\n const viewRotation = frustum.getRotation(scratchViewRotation);\n if (undefined === viewRotation)\n return Range1d.createNull(); // Degenerate frustum...\n const viewZ = viewRotation.getRow(2);\n const cartoRange = this.cartesianTransitionRange;\n const intersectRange = Range3d.createNull();\n const doAccumulate = ((point: Point3d) => accumulateDepthRange(point, viewRotation, intersectRange));\n\n if (gridPlane)\n accumulateFrustumPlaneDepthRange(frustum, gridPlane, viewRotation, intersectRange, eyePoint);\n if (this.geometry instanceof Plane3dByOriginAndUnitNormal) {\n // Intersection with a planar background projection...\n const heights = heightRange ? [heightRange.low, heightRange.high] : [0];\n for (const height of heights) {\n accumulateFrustumPlaneDepthRange(frustum, this.getPlane(height), viewRotation, intersectRange, eyePoint);\n }\n } else {\n const minOffset = heightRange ? heightRange.low : 0, maxOffset = (heightRange ? heightRange.high : 0) + this.cartesianChordHeight;\n const radiusOffsets = [minOffset, maxOffset];\n\n // If we are doing global scope then include minimum ellipsoid that represents the chordal approximation of the low level tiles.\n // this substantially expands the frustum so don't do it for non-global views, but this clipping out the low level tiles.\n if (doGlobalScope)\n radiusOffsets.push(minOffset - this.maxGeometryChordHeight);\n\n const toView = Transform.createRefs(Point3d.createZero(), viewRotation);\n const eyePoint4d = eyePoint ? Point4d.createFromPointAndWeight(eyePoint, 1) : Point4d.createFromPointAndWeight(viewZ, 0);\n\n for (const radiusOffset of radiusOffsets) {\n const ellipsoid = this.getEarthEllipsoid(radiusOffset);\n const isInside = eyePoint && expectDefined(ellipsoid.worldToLocal(eyePoint)).magnitude() < 1.0;\n const center = ellipsoid.localToWorld(scratchZeroPoint, scratchCenterPoint);\n const clipPlaneCount = clipPlanes.planes.length;\n\n // Extrema...\n let angles, extremaPoint;\n if (undefined !== (angles = ellipsoid.surfaceNormalToAngles(viewZ)) &&\n undefined !== (extremaPoint = ellipsoid.radiansToPoint(angles.longitudeRadians, angles.latitudeRadians)) &&\n (eyePoint === undefined || viewZ.dotProductStartEnd(extremaPoint, eyePoint) > 0) &&\n clipPlanes.classifyPointContainment([extremaPoint], false) !== ClipPlaneContainment.StronglyOutside)\n doAccumulate(extremaPoint);\n\n if (isInside) {\n if (eyePoint)\n doAccumulate(eyePoint);\n } else {\n const silhouette = ellipsoid.silhouetteArc(eyePoint4d);\n if (silhouette !== undefined) {\n silhouette.perpendicularVector.clone(scratchSilhouetteNormal);\n // Push the silhouette plane as clip so that we do not include geometry at other side of ellipsoid.\n // First make sure that it is pointing in the right direction.\n if (eyePoint) {\n // Clip toward eye.\n if (scratchSilhouetteNormal.dotProduct(viewZ) < 0)\n scratchSilhouetteNormal.negate(scratchSilhouetteNormal);\n } else {\n /* If parallel projection - clip toward side of ellipsoid with BIM geometry */\n if (Vector3d.createStartEnd(silhouette.center, bimRange.center).dotProduct(scratchSilhouetteNormal) < 0)\n scratchSilhouetteNormal.negate(scratchSilhouetteNormal);\n }\n clipPlanes.planes.push(expectDefined(ClipPlane.createNormalAndDistance(scratchSilhouetteNormal, scratchSilhouetteNormal.dotProduct(silhouette.center))));\n } else {\n clipPlanes.planes.push(expectDefined(ClipPlane.createNormalAndPoint(viewZ, center)));\n }\n }\n if (!isInside || radiusOffset === radiusOffsets[0]) {\n // Intersections of ellipsoid with frustum planes...\n const viewingInside = eyePoint !== undefined && viewZ.dotProduct(Vector3d.createStartEnd(center, eyePoint)) < 0;\n if (eyePoint === undefined || !isInside || viewingInside) {\n for (const clipPlane of clipPlanes.planes) {\n const plane = clipPlane.getPlane3d();\n const arc = ellipsoid.createPlaneSection(plane);\n if (undefined !== arc) {\n arc.announceClipIntervals(clipPlanes, (a0: number, a1: number, cp: CurvePrimitive) => {\n if (Math.abs(a1 - a0) < 1.0E-8) {\n doAccumulate(cp.fractionToPoint(a0)); // Tiny sweep - avoid problem with rangeMethod (not worth doing anyway).\n } else {\n const segment = cp.clonePartialCurve(a0, a1);\n if (segment !== undefined)\n segment.extendRange(intersectRange, toView);\n\n }\n });\n }\n }\n }\n // Intersections of the cartesian region with frustum planes.\n scratchCartoRectangle.resize(0);\n scratchCartoRectangle.push({ x: cartoRange.low.x, y: cartoRange.low.y, z: radiusOffset });\n scratchCartoRectangle.push({ x: cartoRange.high.x, y: cartoRange.low.y, z: radiusOffset });\n scratchCartoRectangle.push({ x: cartoRange.high.x, y: cartoRange.high.y, z: radiusOffset });\n scratchCartoRectangle.push({ x: cartoRange.low.x, y: cartoRange.high.y, z: radiusOffset });\n scratchCartoRectangle.push({ x: cartoRange.low.x, y: cartoRange.low.y, z: radiusOffset });\n\n clipPlanes.clipConvexPolygonInPlace(scratchCartoRectangle, scratchWorkArray);\n for (let i = 0; i < scratchCartoRectangle.length; i++)\n doAccumulate(scratchCartoRectangle.getPoint3dAtUncheckedPointIndex(i));\n while (clipPlanes.planes.length > clipPlaneCount) // Remove pushed silhouette plane.\n clipPlanes.planes.pop();\n }\n }\n }\n\n if (intersectRange.zLength() < 5) {\n // For the case where the fitted depth is small (less than 5 meters) we must be viewing planar projection or the\n // planar portion of the iModel in plan view. In this case use a constant (arbitrarily 100 meters) depth so that the frustum\n // Z is doesn't change and cause nearly planar geometry to jitter in Z buffer.\n const zCenter = (intersectRange.low.z + intersectRange.high.z) / 2;\n const zExpand = 50;\n return Range1d.createXX(zCenter - zExpand, zCenter + zExpand);\n } else {\n const diagonal = intersectRange.diagonal(scratchVector).magnitudeXY();\n const expansion = diagonal * .01;\n return Range1d.createXX(intersectRange.low.z - expansion, intersectRange.high.z + expansion);\n }\n }\n\n public addFrustumDecorations(builder: GraphicBuilder, frustum: Frustum) {\n if (this.geometry instanceof Ellipsoid) {\n const ellipsoid = this.geometry;\n const clipPlanes = frustum.getRangePlanes(false, false, 0);\n const viewRotation = expectDefined(frustum.getRotation());\n const eyePoint = frustum.getEyePoint(scratchEyePoint);\n const viewZ = viewRotation.getRow(2);\n const eyePoint4d = eyePoint ? Point4d.createFromPointAndWeight(eyePoint, 1) : Point4d.createFromPointAndWeight(viewZ, 0);\n const isInside = eyePoint && expectDefined(ellipsoid.worldToLocal(eyePoint)).magnitude() < 1.0;\n const center = ellipsoid.localToWorld(scratchZeroPoint, scratchCenterPoint);\n const cartoRange = this.cartesianTransitionRange;\n\n if (!isInside) {\n const silhouette = ellipsoid.silhouetteArc(eyePoint4d);\n if (silhouette !== undefined) {\n silhouette.perpendicularVector.clone(scratchSilhouetteNormal);\n if (scratchSilhouetteNormal.dotProduct(viewZ) < 0)\n scratchSilhouetteNormal.negate(scratchSilhouetteNormal);\n clipPlanes.planes.push(expectDefined(ClipPlane.createNormalAndDistance(scratchSilhouetteNormal, scratchSilhouetteNormal.dotProduct(silhouette.center))));\n } else {\n clipPlanes.planes.push(expectDefined(ClipPlane.createNormalAndPoint(viewZ, center)));\n }\n\n const ellipsoidColor = ColorDef.create(ColorByName.yellow);\n builder.setSymbology(ellipsoidColor, ellipsoidColor, 1, LinePixels.Code2);\n for (const clipPlane of clipPlanes.planes) {\n const plane = clipPlane.getPlane3d();\n const arc = ellipsoid.createPlaneSection(plane);\n if (undefined !== arc) {\n arc.announceClipIntervals(clipPlanes, (a0: number, a1: number, cp: CurvePrimitive) => {\n const segment = cp.clonePartialCurve(a0, a1);\n if (segment !== undefined)\n builder.addArc(segment as Arc3d, false, false);\n });\n }\n\n // Intersections of the cartesian region with frustum planes.\n scratchCartoRectangle.resize(0);\n scratchCartoRectangle.push({ x: cartoRange.low.x, y: cartoRange.low.y, z: 0 });\n scratchCartoRectangle.push({ x: cartoRange.high.x, y: cartoRange.low.y, z: 0 });\n scratchCartoRectangle.push({ x: cartoRange.high.x, y: cartoRange.high.y, z: 0 });\n scratchCartoRectangle.push({ x: cartoRange.low.x, y: cartoRange.high.y, z: 0 });\n scratchCartoRectangle.push({ x: cartoRange.low.x, y: cartoRange.low.y, z: 0 });\n\n clipPlanes.clipConvexPolygonInPlace(scratchCartoRectangle, scratchWorkArray);\n if (scratchCartoRectangle.length > 0) {\n builder.addLineString(scratchCartoRectangle.getPoint3dArray());\n }\n }\n }\n }\n }\n}\n\n/** Calculate the ECEF to database (IModel) coordinate transform at a provided location, using the GCS of the iModel.\n * The transform will exactly represent the GCS at the provided location.\n * @public\n */\nexport async function calculateEcefToDbTransformAtLocation(originIn: Point3d, iModel: IModelConnection): Promise<Transform | undefined> {\n const geoConverter = iModel.noGcsDefined ? undefined : iModel.geoServices.getConverter(\"WGS84\");\n if (geoConverter === undefined)\n return undefined;\n\n const origin = Point3d.create(originIn.x, originIn.y, 0); // Always Test at zero.\n const eastPoint = origin.plusXYZ(1, 0, 0);\n const northPoint = origin.plusXYZ(0, 1, 0);\n\n const response = await geoConverter.getGeoCoordinatesFromIModelCoordinates([origin, northPoint, eastPoint]);\n if (response.geoCoords[0].s !== GeoCoordStatus.Success || response.geoCoords[1].s !== GeoCoordStatus.Success || response.geoCoords[2].s !== GeoCoordStatus.Success)\n return undefined;\n\n const geoOrigin = Point3d.fromJSON(response.geoCoords[0].p);\n const geoNorth = Point3d.fromJSON(response.geoCoords[1].p);\n const geoEast = Point3d.fromJSON(response.geoCoords[2].p);\n const ecefOrigin = Cartographic.fromDegrees({ longitude: geoOrigin.x, latitude: geoOrigin.y, height: geoOrigin.z }).toEcef();\n const ecefNorth = Cartographic.fromDegrees({ longitude: geoNorth.x, latitude: geoNorth.y, height: geoNorth.z }).toEcef();\n const ecefEast = Cartographic.fromDegrees({ longitude: geoEast.x, latitude: geoEast.y, height: geoEast.z }).toEcef();\n\n const xVector = Vector3d.createStartEnd(ecefOrigin, ecefEast);\n const yVector = Vector3d.createStartEnd(ecefOrigin, ecefNorth);\n const zVector = xVector.unitCrossProduct(yVector);\n if (undefined === zVector) {\n assert(false); // Should never occur.\n return undefined;\n }\n const matrix = Matrix3d.createColumns(xVector, yVector, zVector);\n if (matrix === undefined)\n return undefined;\n\n const inverse = matrix.inverse();\n if (inverse === undefined) {\n assert(false); // Should never occur.\n return undefined;\n }\n\n return Transform.createMatrixPickupPutdown(matrix, origin, ecefOrigin).inverse();\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BriefcaseConnection.d.ts","sourceRoot":"","sources":["../../src/BriefcaseConnection.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,OAAO,EAA2B,UAAU,EAAE,UAAU,EAAgB,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/H,OAAO,EACL,cAAc,EAAE,mBAAmB,EAA4B,qBAAqB,EACpC,kBAAkB,EAAE,qBAAqB,EAC1F,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAKtD;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAE1E;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC;IAChG,wCAAwC;IACxC,mBAAmB,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC;CACpG;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,wBAAwB,CAAC,EAAE,kBAAkB,CAAC;IAC9C,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAkID;;;;;;;GAOG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,SAAS,CAAC,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAC,CAAa;IAE5B,sEAAsE;IACtE,SAAgB,iBAAiB,6BAAkC,UAAU,GAAG,SAAS,KAAK,IAAI,EAAI;IAEtG,mEAAmE;IACnE,SAAgB,cAAc,0BAA+B,UAAU,GAAG,SAAS,KAAK,IAAI,EAAI;IAEhG;;;;OAIG;IACH,IAAW,QAAQ,IAAI,UAAU,GAAG,SAAS,CAE5C;IACD,IAAW,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,EAMnD;IAED;;;;OAIG;IACH,IAAW,KAAK,IAAI,UAAU,GAAG,SAAS,CAEzC;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAM7C;CACF;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,gBAAgB;IACvD,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD;;OAEG;IACH,SAAgB,kBAAkB,8BAAqC;IAEvE,+FAA+F;IAC/F,SAAgB,IAAI,EAAE,aAAa,CAAC;IAEpB,qBAAqB,IAAI,IAAI,IAAI,mBAAmB;IAEpE,gEAAgE;IAChE,IAAoB,OAAO,IAAI,UAAU,CAA2B;IAEpE,4CAA4C;IAC5C,IAAoB,QAAQ,IAAI,UAAU,CAA4B;IAEtE,SAAS,aAAa,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ;IAStE,+DAA+D;WAC3C,QAAQ,CAAC,cAAc,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAO9F;;OAEG;WACiB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,QAA6B,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAOzJ,2DAA2D;IAC3D,IAAW,QAAQ,IAAI,OAAO,CAAoC;IAElE;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAanC,SAAS,CAAC,eAAe;IAKzB,2FAA2F;IAC9E,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/C;;OAEG;IACU,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,iDAAiD;IACpC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C;;;;OAIG;IACU,WAAW,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC/F;;;;OAIG;IACU,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAK3E;;OAEG;IACH,IAAW,YAAY,IAAI,qBAAqB,GAAG,SAAS,CAE3D;IAED;;;OAGG;IACU,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzD;;;;;OAKG;IACU,iBAAiB,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAIhE;;OAEG;IACH,SAAgB,sBAAsB,4BAAiC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAI;CAChG"}
1
+ {"version":3,"file":"BriefcaseConnection.d.ts","sourceRoot":"","sources":["../../src/BriefcaseConnection.ts"],"names":[],"mappings":"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"}
@@ -179,9 +179,9 @@ export class BriefcaseConnection extends IModelConnection {
179
179
  txns;
180
180
  isBriefcaseConnection() { return true; }
181
181
  /** The Guid that identifies the iTwin that owns this iModel. */
182
- get iTwinId() { return super.iTwinId; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection
182
+ get iTwinId() { return super.iTwinId ?? Guid.empty; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection
183
183
  /** The Guid that identifies this iModel. */
184
- get iModelId() { return super.iModelId; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection
184
+ get iModelId() { return super.iModelId ?? Guid.empty; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection
185
185
  constructor(props, openMode) {
186
186
  super(props);
187
187
  this._openMode = openMode;
@@ -1 +1 @@
1
- {"version":3,"file":"BriefcaseConnection.js","sourceRoot":"","sources":["../../src/BriefcaseConnection.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module IModelConnection\n */\n\nimport { assert, BeEvent, CompressedId64Set, Guid, GuidString, Id64String, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\nimport {\n ChangesetIndex, ChangesetIndexAndId, getPullChangesIpcChannel, IModelConnectionProps, IModelError,\n PullChangesOptions as IpcAppPullChangesOptions, OpenBriefcaseProps, StandaloneOpenOptions,\n} from \"@itwin/core-common\";\nimport { BriefcaseTxns } from \"./BriefcaseTxns\";\nimport { GraphicalEditingScope } from \"./GraphicalEditingScope\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { IpcApp } from \"./IpcApp\";\nimport { disposeTileTreesForGeometricModels } from \"./tile/internal\";\nimport { Viewport } from \"./Viewport\";\n\n/**\n * Download progress information.\n * @public\n */\nexport interface DownloadProgressInfo {\n /** Bytes downloaded. */\n loaded: number;\n /** Total size of the download in bytes. */\n total: number;\n}\n\n/**\n * Called to show progress during a download.\n * @public\n */\nexport type OnDownloadProgress = (progress: DownloadProgressInfo) => void;\n\n/**\n * Partial interface of AbortSignal.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal\n * @beta\n */\nexport interface GenericAbortSignal {\n /** Add Listener for abort signal. */\n addEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n /** Remove Listener for abort signal. */\n removeEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n}\n\n/**\n * Options for pulling iModel changes.\n * @public\n */\nexport interface PullChangesOptions {\n /** Function called regularly to report progress of changes download. */\n downloadProgressCallback?: OnDownloadProgress;\n /** Interval for calling progress callback (in milliseconds). */\n progressInterval?: number;\n /** Signal for cancelling the download.\n * @beta\n */\n abortSignal?: GenericAbortSignal;\n}\n\n/** Keeps track of changes to models, buffering them until synchronization points.\n * While a GraphicalEditingScope is open, the changes are buffered until the scope exits, at which point they are processed.\n * Otherwise, the buffered changes are processed after undo/redo, commit, or pull+merge changes.\n */\nclass ModelChangeMonitor {\n private _editingScope?: GraphicalEditingScope;\n private readonly _briefcase: BriefcaseConnection;\n private readonly _deletedModels = new Set<string>();\n private readonly _modelIdToGuid = new Map<string, string>();\n private readonly _removals: VoidFunction[] = [];\n\n public constructor(briefcase: BriefcaseConnection) {\n this._briefcase = briefcase;\n\n // Buffer updated geometry guids.\n this._removals.push(briefcase.txns.onModelGeometryChanged.addListener((changes) => {\n for (const change of changes) {\n this._deletedModels.delete(change.id);\n this._modelIdToGuid.set(change.id, change.guid);\n }\n }));\n\n // Buffer deletions of models.\n this._removals.push(briefcase.txns.onModelsChanged.addListener((changes) => {\n if (changes.deleted) {\n for (const id of CompressedId64Set.iterable(changes.deleted)) {\n this._modelIdToGuid.delete(id);\n this._deletedModels.add(id);\n }\n }\n }));\n\n // Outside of an editing scope, we want to update viewport contents after commit, undo/redo, or merging changes.\n const maybeProcess = async () => {\n if (this.editingScope)\n return;\n\n const modelIds = Array.from(this._modelIdToGuid.keys());\n if (modelIds.length > 0)\n await IModelApp.tileAdmin.purgeTileTrees(this._briefcase, modelIds);\n\n this.processBuffered();\n };\n\n this._removals.push(briefcase.txns.onCommitted.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onReplayedExternalTxns.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onAfterUndoRedo.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onChangesPulled.addListener(maybeProcess));\n }\n\n public async close(): Promise<void> {\n for (const removal of this._removals)\n removal();\n\n this._removals.length = 0;\n\n if (this._editingScope) {\n await this._editingScope.exit();\n this._editingScope = undefined;\n }\n }\n\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._editingScope;\n }\n\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n if (this._editingScope)\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\n\n this._editingScope = await GraphicalEditingScope.enter(this._briefcase);\n\n const removeGeomListener = this._editingScope.onGeometryChanges.addListener((changes) => {\n const modelIds = [];\n for (const change of changes)\n modelIds.push(change.id);\n\n this.invalidateScenes(modelIds);\n });\n\n this._editingScope.onExited.addOnce((scope) => {\n assert(scope === this._editingScope);\n this._editingScope = undefined;\n removeGeomListener();\n this.processBuffered();\n });\n\n return this._editingScope;\n }\n\n private processBuffered(): void {\n const models = this._briefcase.models;\n for (const [id, guid] of this._modelIdToGuid) {\n const model = models.getLoaded(id)?.asGeometricModel;\n if (model)\n model.geometryGuid = guid;\n }\n\n const modelIds = new Set<string>(this._modelIdToGuid.keys());\n for (const deleted of this._deletedModels) {\n modelIds.add(deleted);\n models.unload(deleted);\n }\n\n this.invalidateScenes(modelIds);\n disposeTileTreesForGeometricModels(modelIds, this._briefcase);\n\n this._briefcase.onBufferedModelChanges.raiseEvent(modelIds);\n\n this._modelIdToGuid.clear();\n this._deletedModels.clear();\n }\n\n private invalidateScenes(changedModels: Iterable<Id64String>): void {\n for (const user of IModelApp.tileAdmin.tileUsers) {\n if (user instanceof Viewport && user.iModel === this._briefcase) {\n for (const modelId of changedModels) {\n if (user.view.viewsModel(modelId)) {\n user.invalidateScene();\n user.setFeatureOverrideProviderChanged();\n break;\n }\n }\n }\n }\n }\n}\n\n/** Settings that can be used to control the behavior of [[Tool]]s that modify a [[BriefcaseConnection]].\n * For example, tools that want to create new elements can consult the briefcase's editor tool settings to\n * determine into which model and category to insert the elements.\n * Specialized tools are free to ignore these settings.\n * @see [[BriefcaseConnection.editorToolSettings]] to query or modify the current settings for a briefcase.\n * @see [CreateElementTool]($editor-frontend) for an example of a tool that uses these settings.\n * @beta\n */\nexport class BriefcaseEditorToolSettings {\n private _category?: Id64String;\n private _model?: Id64String;\n\n /** An event raised just after the default [[category]] is changed. */\n public readonly onCategoryChanged = new BeEvent<(previousCategory: Id64String | undefined) => void>();\n\n /** An event raised just after the default [[model]] is changed. */\n public readonly onModelChanged = new BeEvent<(previousModel: Id64String | undefined) => void>();\n\n /** The [Category]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate category.\n * @see [[onCategoryChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetCategory]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get category(): Id64String | undefined {\n return this._category;\n }\n public set category(category: Id64String | undefined) {\n const previousCategory = this.category;\n if (category !== this.category) {\n this._category = category;\n this.onCategoryChanged.raiseEvent(previousCategory);\n }\n }\n\n /** The [Model]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate model.\n * @see [[onModelChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetModelId]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get model(): Id64String | undefined {\n return this._model;\n }\n public set model(model: Id64String | undefined) {\n const previousModel = this.model;\n if (model !== this.model) {\n this._model = model;\n this.onModelChanged.raiseEvent(previousModel);\n }\n }\n}\n\n/** A connection to an editable briefcase on the backend. This class uses [Ipc]($docs/learning/IpcInterface.md) to communicate\n * to the backend and may only be used by [[IpcApp]]s.\n * @public\n */\nexport class BriefcaseConnection extends IModelConnection {\n protected _isClosed?: boolean;\n private readonly _modelsMonitor: ModelChangeMonitor;\n /** Default settings that can be used to control the behavior of [[Tool]]s that modify this briefcase.\n * @beta\n */\n public readonly editorToolSettings = new BriefcaseEditorToolSettings();\n\n /** Manages local changes to the briefcase via [Txns]($docs/learning/InteractiveEditing.md). */\n public readonly txns: BriefcaseTxns;\n\n public override isBriefcaseConnection(): this is BriefcaseConnection { return true; }\n\n /** The Guid that identifies the iTwin that owns this iModel. */\n public override get iTwinId(): GuidString { return super.iTwinId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n /** The Guid that identifies this iModel. */\n public override get iModelId(): GuidString { return super.iModelId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n protected constructor(props: IModelConnectionProps, openMode: OpenMode) {\n super(props);\n this._openMode = openMode;\n this.txns = new BriefcaseTxns(this);\n this._modelsMonitor = new ModelChangeMonitor(this);\n if (OpenMode.ReadWrite === this._openMode)\n this.txns.onAfterUndoRedo.addListener(async () => { await IModelApp.toolAdmin.restartPrimitiveTool(); });\n }\n\n /** Open a BriefcaseConnection to a [BriefcaseDb]($backend). */\n public static async openFile(briefcaseProps: OpenBriefcaseProps): Promise<BriefcaseConnection> {\n const iModelProps = await IpcApp.appFunctionIpc.openBriefcase(briefcaseProps);\n const connection = new this({ ...briefcaseProps, ...iModelProps }, briefcaseProps.readonly ? OpenMode.Readonly : OpenMode.ReadWrite);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Open a BriefcaseConnection to a [StandaloneDb]($backend)\n * @note StandaloneDbs, by definition, may not push or pull changes. Attempting to do so will throw exceptions.\n */\n public static async openStandalone(filePath: string, openMode: OpenMode = OpenMode.ReadWrite, opts?: StandaloneOpenOptions): Promise<BriefcaseConnection> {\n const openResponse = await IpcApp.appFunctionIpc.openStandalone(filePath, openMode, opts);\n const connection = new this(openResponse, openMode);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Returns `true` if [[close]] has already been called. */\n public get isClosed(): boolean { return this._isClosed === true; }\n\n /**\n * Close this BriefcaseConnection.\n * @note make sure to call [[saveChanges]] before calling this method. Unsaved local changes are abandoned.\n */\n public async close(): Promise<void> {\n if (this.isClosed)\n return;\n\n await this._modelsMonitor.close();\n\n this.beforeClose();\n this.txns[Symbol.dispose]();\n\n this._isClosed = true;\n await IpcApp.appFunctionIpc.closeIModel(this._fileKey);\n }\n\n protected requireTimeline() {\n if (this.iTwinId === Guid.empty)\n throw new IModelError(IModelStatus.WrongIModel, \"iModel has no timeline\");\n }\n\n /** Query if there are any pending Txns in this briefcase that are waiting to be pushed. */\n public async hasPendingTxns(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return this.txns.hasPendingTxns();\n }\n\n /** Commit pending changes to this briefcase.\n * @param description Optional description of the changes.\n */\n public async saveChanges(description?: string): Promise<void> {\n await IpcApp.appFunctionIpc.saveChanges(this.key, description);\n }\n\n /** Abandon pending changes to this briefcase. */\n public async abandonChanges(): Promise<void> {\n await IpcApp.appFunctionIpc.abandonChanges(this.key);\n }\n\n /** Pull (and potentially merge if there are local changes) up to a specified changeset from iModelHub into this briefcase\n * @param toIndex The changeset index to pull changes to. If `undefined`, pull all changes.\n * @param options Options for pulling changes.\n * @see [[BriefcaseTxns.onChangesPulled]] for the event dispatched after changes are pulled.\n */\n public async pullChanges(toIndex?: ChangesetIndex, options?: PullChangesOptions): Promise<void> {\n const removeListeners: VoidFunction[] = [];\n const shouldReportProgress = !!options?.downloadProgressCallback;\n\n if (shouldReportProgress) {\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\n options?.downloadProgressCallback?.(data);\n };\n\n const removeProgressListener = IpcApp.addListener(\n getPullChangesIpcChannel(this.iModelId),\n handleProgress,\n );\n removeListeners.push(removeProgressListener);\n }\n\n if (options?.abortSignal) {\n const abort = () => void IpcApp.appFunctionIpc.cancelPullChangesRequest(this.key);\n options?.abortSignal.addEventListener(\"abort\", abort);\n removeListeners.push(() => options?.abortSignal?.removeEventListener(\"abort\", abort));\n }\n\n this.requireTimeline();\n const ipcAppOptions: IpcAppPullChangesOptions = {\n reportProgress: shouldReportProgress,\n progressInterval: options?.progressInterval,\n enableCancellation: !!options?.abortSignal,\n };\n try {\n this.changeset = await IpcApp.appFunctionIpc.pullChanges(this.key, toIndex, ipcAppOptions);\n } finally {\n removeListeners.forEach((remove) => remove());\n }\n }\n\n /** Create a changeset from local Txns and push to iModelHub. On success, clear Txn table.\n * @param description The description for the changeset\n * @returns the changesetId of the pushed changes\n * @see [[BriefcaseTxns.onChangesPushed]] for the event dispatched after changes are pushed.\n */\n public async pushChanges(description: string): Promise<ChangesetIndexAndId> {\n this.requireTimeline();\n return IpcApp.appFunctionIpc.pushChanges(this.key, description);\n }\n\n /** The current graphical editing scope, if one is in progress.\n * @see [[enterEditingScope]] to begin graphical editing.\n */\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._modelsMonitor.editingScope;\n }\n\n /** Return whether graphical editing is supported for this briefcase. It is not supported if the briefcase is read-only, or the briefcase contains a version of\n * the BisCore ECSchema older than v0.1.11.\n * @see [[enterEditingScope]] to enable graphical editing.\n */\n public async supportsGraphicalEditing(): Promise<boolean> {\n return IpcApp.appFunctionIpc.isGraphicalEditingSupported(this.key);\n }\n\n /** Begin a new graphical editing scope.\n * @throws Error if an editing scope already exists or one could not be created.\n * @see [[GraphicalEditingScope.exit]] to exit the scope.\n * @see [[supportsGraphicalEditing]] to determine whether this method should be expected to succeed.\n * @see [[editingScope]] to obtain the current editing scope, if one is in progress.\n */\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n return this._modelsMonitor.enterEditingScope();\n }\n\n /** Strictly for tests - dispatched from ModelChangeMonitor.processBuffered.\n * @internal\n */\n public readonly onBufferedModelChanges = new BeEvent<(changedModelIds: Set<string>) => void>();\n}\n"]}
1
+ {"version":3,"file":"BriefcaseConnection.js","sourceRoot":"","sources":["../../src/BriefcaseConnection.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module IModelConnection\n */\n\nimport { assert, BeEvent, CompressedId64Set, Guid, GuidString, Id64String, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\nimport {\n ChangesetIndex, ChangesetIndexAndId, getPullChangesIpcChannel, IModelConnectionProps, IModelError,\n PullChangesOptions as IpcAppPullChangesOptions, OpenBriefcaseProps, StandaloneOpenOptions,\n} from \"@itwin/core-common\";\nimport { BriefcaseTxns } from \"./BriefcaseTxns\";\nimport { GraphicalEditingScope } from \"./GraphicalEditingScope\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { IpcApp } from \"./IpcApp\";\nimport { disposeTileTreesForGeometricModels } from \"./tile/internal\";\nimport { Viewport } from \"./Viewport\";\n\n/**\n * Download progress information.\n * @public\n */\nexport interface DownloadProgressInfo {\n /** Bytes downloaded. */\n loaded: number;\n /** Total size of the download in bytes. */\n total: number;\n}\n\n/**\n * Called to show progress during a download.\n * @public\n */\nexport type OnDownloadProgress = (progress: DownloadProgressInfo) => void;\n\n/**\n * Partial interface of AbortSignal.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal\n * @beta\n */\nexport interface GenericAbortSignal {\n /** Add Listener for abort signal. */\n addEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n /** Remove Listener for abort signal. */\n removeEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n}\n\n/**\n * Options for pulling iModel changes.\n * @public\n */\nexport interface PullChangesOptions {\n /** Function called regularly to report progress of changes download. */\n downloadProgressCallback?: OnDownloadProgress;\n /** Interval for calling progress callback (in milliseconds). */\n progressInterval?: number;\n /** Signal for cancelling the download.\n * @beta\n */\n abortSignal?: GenericAbortSignal;\n}\n\n/** Keeps track of changes to models, buffering them until synchronization points.\n * While a GraphicalEditingScope is open, the changes are buffered until the scope exits, at which point they are processed.\n * Otherwise, the buffered changes are processed after undo/redo, commit, or pull+merge changes.\n */\nclass ModelChangeMonitor {\n private _editingScope?: GraphicalEditingScope;\n private readonly _briefcase: BriefcaseConnection;\n private readonly _deletedModels = new Set<string>();\n private readonly _modelIdToGuid = new Map<string, string>();\n private readonly _removals: VoidFunction[] = [];\n\n public constructor(briefcase: BriefcaseConnection) {\n this._briefcase = briefcase;\n\n // Buffer updated geometry guids.\n this._removals.push(briefcase.txns.onModelGeometryChanged.addListener((changes) => {\n for (const change of changes) {\n this._deletedModels.delete(change.id);\n this._modelIdToGuid.set(change.id, change.guid);\n }\n }));\n\n // Buffer deletions of models.\n this._removals.push(briefcase.txns.onModelsChanged.addListener((changes) => {\n if (changes.deleted) {\n for (const id of CompressedId64Set.iterable(changes.deleted)) {\n this._modelIdToGuid.delete(id);\n this._deletedModels.add(id);\n }\n }\n }));\n\n // Outside of an editing scope, we want to update viewport contents after commit, undo/redo, or merging changes.\n const maybeProcess = async () => {\n if (this.editingScope)\n return;\n\n const modelIds = Array.from(this._modelIdToGuid.keys());\n if (modelIds.length > 0)\n await IModelApp.tileAdmin.purgeTileTrees(this._briefcase, modelIds);\n\n this.processBuffered();\n };\n\n this._removals.push(briefcase.txns.onCommitted.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onReplayedExternalTxns.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onAfterUndoRedo.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onChangesPulled.addListener(maybeProcess));\n }\n\n public async close(): Promise<void> {\n for (const removal of this._removals)\n removal();\n\n this._removals.length = 0;\n\n if (this._editingScope) {\n await this._editingScope.exit();\n this._editingScope = undefined;\n }\n }\n\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._editingScope;\n }\n\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n if (this._editingScope)\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\n\n this._editingScope = await GraphicalEditingScope.enter(this._briefcase);\n\n const removeGeomListener = this._editingScope.onGeometryChanges.addListener((changes) => {\n const modelIds = [];\n for (const change of changes)\n modelIds.push(change.id);\n\n this.invalidateScenes(modelIds);\n });\n\n this._editingScope.onExited.addOnce((scope) => {\n assert(scope === this._editingScope);\n this._editingScope = undefined;\n removeGeomListener();\n this.processBuffered();\n });\n\n return this._editingScope;\n }\n\n private processBuffered(): void {\n const models = this._briefcase.models;\n for (const [id, guid] of this._modelIdToGuid) {\n const model = models.getLoaded(id)?.asGeometricModel;\n if (model)\n model.geometryGuid = guid;\n }\n\n const modelIds = new Set<string>(this._modelIdToGuid.keys());\n for (const deleted of this._deletedModels) {\n modelIds.add(deleted);\n models.unload(deleted);\n }\n\n this.invalidateScenes(modelIds);\n disposeTileTreesForGeometricModels(modelIds, this._briefcase);\n\n this._briefcase.onBufferedModelChanges.raiseEvent(modelIds);\n\n this._modelIdToGuid.clear();\n this._deletedModels.clear();\n }\n\n private invalidateScenes(changedModels: Iterable<Id64String>): void {\n for (const user of IModelApp.tileAdmin.tileUsers) {\n if (user instanceof Viewport && user.iModel === this._briefcase) {\n for (const modelId of changedModels) {\n if (user.view.viewsModel(modelId)) {\n user.invalidateScene();\n user.setFeatureOverrideProviderChanged();\n break;\n }\n }\n }\n }\n }\n}\n\n/** Settings that can be used to control the behavior of [[Tool]]s that modify a [[BriefcaseConnection]].\n * For example, tools that want to create new elements can consult the briefcase's editor tool settings to\n * determine into which model and category to insert the elements.\n * Specialized tools are free to ignore these settings.\n * @see [[BriefcaseConnection.editorToolSettings]] to query or modify the current settings for a briefcase.\n * @see [CreateElementTool]($editor-frontend) for an example of a tool that uses these settings.\n * @beta\n */\nexport class BriefcaseEditorToolSettings {\n private _category?: Id64String;\n private _model?: Id64String;\n\n /** An event raised just after the default [[category]] is changed. */\n public readonly onCategoryChanged = new BeEvent<(previousCategory: Id64String | undefined) => void>();\n\n /** An event raised just after the default [[model]] is changed. */\n public readonly onModelChanged = new BeEvent<(previousModel: Id64String | undefined) => void>();\n\n /** The [Category]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate category.\n * @see [[onCategoryChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetCategory]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get category(): Id64String | undefined {\n return this._category;\n }\n public set category(category: Id64String | undefined) {\n const previousCategory = this.category;\n if (category !== this.category) {\n this._category = category;\n this.onCategoryChanged.raiseEvent(previousCategory);\n }\n }\n\n /** The [Model]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate model.\n * @see [[onModelChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetModelId]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get model(): Id64String | undefined {\n return this._model;\n }\n public set model(model: Id64String | undefined) {\n const previousModel = this.model;\n if (model !== this.model) {\n this._model = model;\n this.onModelChanged.raiseEvent(previousModel);\n }\n }\n}\n\n/** A connection to an editable briefcase on the backend. This class uses [Ipc]($docs/learning/IpcInterface.md) to communicate\n * to the backend and may only be used by [[IpcApp]]s.\n * @public\n */\nexport class BriefcaseConnection extends IModelConnection {\n protected _isClosed?: boolean;\n private readonly _modelsMonitor: ModelChangeMonitor;\n /** Default settings that can be used to control the behavior of [[Tool]]s that modify this briefcase.\n * @beta\n */\n public readonly editorToolSettings = new BriefcaseEditorToolSettings();\n\n /** Manages local changes to the briefcase via [Txns]($docs/learning/InteractiveEditing.md). */\n public readonly txns: BriefcaseTxns;\n\n public override isBriefcaseConnection(): this is BriefcaseConnection { return true; }\n\n /** The Guid that identifies the iTwin that owns this iModel. */\n public override get iTwinId(): GuidString { return super.iTwinId ?? Guid.empty; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n /** The Guid that identifies this iModel. */\n public override get iModelId(): GuidString { return super.iModelId ?? Guid.empty; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n protected constructor(props: IModelConnectionProps, openMode: OpenMode) {\n super(props);\n this._openMode = openMode;\n this.txns = new BriefcaseTxns(this);\n this._modelsMonitor = new ModelChangeMonitor(this);\n if (OpenMode.ReadWrite === this._openMode)\n this.txns.onAfterUndoRedo.addListener(async () => { await IModelApp.toolAdmin.restartPrimitiveTool(); });\n }\n\n /** Open a BriefcaseConnection to a [BriefcaseDb]($backend). */\n public static async openFile(briefcaseProps: OpenBriefcaseProps): Promise<BriefcaseConnection> {\n const iModelProps = await IpcApp.appFunctionIpc.openBriefcase(briefcaseProps);\n const connection = new this({ ...briefcaseProps, ...iModelProps }, briefcaseProps.readonly ? OpenMode.Readonly : OpenMode.ReadWrite);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Open a BriefcaseConnection to a [StandaloneDb]($backend)\n * @note StandaloneDbs, by definition, may not push or pull changes. Attempting to do so will throw exceptions.\n */\n public static async openStandalone(filePath: string, openMode: OpenMode = OpenMode.ReadWrite, opts?: StandaloneOpenOptions): Promise<BriefcaseConnection> {\n const openResponse = await IpcApp.appFunctionIpc.openStandalone(filePath, openMode, opts);\n const connection = new this(openResponse, openMode);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Returns `true` if [[close]] has already been called. */\n public get isClosed(): boolean { return this._isClosed === true; }\n\n /**\n * Close this BriefcaseConnection.\n * @note make sure to call [[saveChanges]] before calling this method. Unsaved local changes are abandoned.\n */\n public async close(): Promise<void> {\n if (this.isClosed)\n return;\n\n await this._modelsMonitor.close();\n\n this.beforeClose();\n this.txns[Symbol.dispose]();\n\n this._isClosed = true;\n await IpcApp.appFunctionIpc.closeIModel(this._fileKey);\n }\n\n protected requireTimeline() {\n if (this.iTwinId === Guid.empty)\n throw new IModelError(IModelStatus.WrongIModel, \"iModel has no timeline\");\n }\n\n /** Query if there are any pending Txns in this briefcase that are waiting to be pushed. */\n public async hasPendingTxns(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return this.txns.hasPendingTxns();\n }\n\n /** Commit pending changes to this briefcase.\n * @param description Optional description of the changes.\n */\n public async saveChanges(description?: string): Promise<void> {\n await IpcApp.appFunctionIpc.saveChanges(this.key, description);\n }\n\n /** Abandon pending changes to this briefcase. */\n public async abandonChanges(): Promise<void> {\n await IpcApp.appFunctionIpc.abandonChanges(this.key);\n }\n\n /** Pull (and potentially merge if there are local changes) up to a specified changeset from iModelHub into this briefcase\n * @param toIndex The changeset index to pull changes to. If `undefined`, pull all changes.\n * @param options Options for pulling changes.\n * @see [[BriefcaseTxns.onChangesPulled]] for the event dispatched after changes are pulled.\n */\n public async pullChanges(toIndex?: ChangesetIndex, options?: PullChangesOptions): Promise<void> {\n const removeListeners: VoidFunction[] = [];\n const shouldReportProgress = !!options?.downloadProgressCallback;\n\n if (shouldReportProgress) {\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\n options?.downloadProgressCallback?.(data);\n };\n\n const removeProgressListener = IpcApp.addListener(\n getPullChangesIpcChannel(this.iModelId),\n handleProgress,\n );\n removeListeners.push(removeProgressListener);\n }\n\n if (options?.abortSignal) {\n const abort = () => void IpcApp.appFunctionIpc.cancelPullChangesRequest(this.key);\n options?.abortSignal.addEventListener(\"abort\", abort);\n removeListeners.push(() => options?.abortSignal?.removeEventListener(\"abort\", abort));\n }\n\n this.requireTimeline();\n const ipcAppOptions: IpcAppPullChangesOptions = {\n reportProgress: shouldReportProgress,\n progressInterval: options?.progressInterval,\n enableCancellation: !!options?.abortSignal,\n };\n try {\n this.changeset = await IpcApp.appFunctionIpc.pullChanges(this.key, toIndex, ipcAppOptions);\n } finally {\n removeListeners.forEach((remove) => remove());\n }\n }\n\n /** Create a changeset from local Txns and push to iModelHub. On success, clear Txn table.\n * @param description The description for the changeset\n * @returns the changesetId of the pushed changes\n * @see [[BriefcaseTxns.onChangesPushed]] for the event dispatched after changes are pushed.\n */\n public async pushChanges(description: string): Promise<ChangesetIndexAndId> {\n this.requireTimeline();\n return IpcApp.appFunctionIpc.pushChanges(this.key, description);\n }\n\n /** The current graphical editing scope, if one is in progress.\n * @see [[enterEditingScope]] to begin graphical editing.\n */\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._modelsMonitor.editingScope;\n }\n\n /** Return whether graphical editing is supported for this briefcase. It is not supported if the briefcase is read-only, or the briefcase contains a version of\n * the BisCore ECSchema older than v0.1.11.\n * @see [[enterEditingScope]] to enable graphical editing.\n */\n public async supportsGraphicalEditing(): Promise<boolean> {\n return IpcApp.appFunctionIpc.isGraphicalEditingSupported(this.key);\n }\n\n /** Begin a new graphical editing scope.\n * @throws Error if an editing scope already exists or one could not be created.\n * @see [[GraphicalEditingScope.exit]] to exit the scope.\n * @see [[supportsGraphicalEditing]] to determine whether this method should be expected to succeed.\n * @see [[editingScope]] to obtain the current editing scope, if one is in progress.\n */\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n return this._modelsMonitor.enterEditingScope();\n }\n\n /** Strictly for tests - dispatched from ModelChangeMonitor.processBuffered.\n * @internal\n */\n public readonly onBufferedModelChanges = new BeEvent<(changedModelIds: Set<string>) => void>();\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CheckpointConnection.d.ts","sourceRoot":"","sources":["../../src/CheckpointConnection.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAA+B,UAAU,EAAU,MAAM,qBAAqB,CAAC;AACtF,OAAO,EACL,qBAAqB,EAA2D,aAAa,EAE9F,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAMtD;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IAEnC,gEAAgE;IAChE,IAAoB,OAAO,IAAI,UAAU,CAA2B;IACpE,4CAA4C;IAC5C,IAAoB,QAAQ,IAAI,UAAU,CAA4B;IAEtE,2DAA2D;IAC3D,IAAW,QAAQ,IAAI,OAAO,CAA0C;IACxE,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE9B,SAAS,aAAa,KAAK,EAAE,qBAAqB,EAAE,OAAO,EAAE,OAAO;IAKpE,yDAAyD;IACzC,sBAAsB,IAAI,IAAI,IAAI,oBAAoB;IAEtE;;OAEG;WACiB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,gBAAyB,GAAG,OAAO,CAAC,oBAAoB,CAAC;mBAuBrH,QAAQ;IA+C7B,OAAO,CAAC,wBAAwB,CAwB9B;IAEF,sCAAsC;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAYpC"}
1
+ {"version":3,"file":"CheckpointConnection.d.ts","sourceRoot":"","sources":["../../src/CheckpointConnection.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAoD,UAAU,EAAU,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EACL,qBAAqB,EAA2D,aAAa,EAE9F,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAMtD;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IAEnC,gEAAgE;IAChE,IAAoB,OAAO,IAAI,UAAU,CAAwC;IACjF,4CAA4C;IAC5C,IAAoB,QAAQ,IAAI,UAAU,CAAyC;IAEnF,2DAA2D;IAC3D,IAAW,QAAQ,IAAI,OAAO,CAA0C;IACxE,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE9B,SAAS,aAAa,KAAK,EAAE,qBAAqB,EAAE,OAAO,EAAE,OAAO;IAKpE,yDAAyD;IACzC,sBAAsB,IAAI,IAAI,IAAI,oBAAoB;IAEtE;;OAEG;WACiB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,gBAAyB,GAAG,OAAO,CAAC,oBAAoB,CAAC;mBAuBrH,QAAQ;IA+C7B,OAAO,CAAC,wBAAwB,CAwB9B;IAEF,sCAAsC;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAYpC"}
@@ -5,7 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module IModelConnection
7
7
  */
8
- import { BentleyError, BentleyStatus, Logger } from "@itwin/core-bentley";
8
+ import { BentleyError, BentleyStatus, expectDefined, Guid, Logger } from "@itwin/core-bentley";
9
9
  import { IModelError, IModelReadRpcInterface, IModelVersion, RpcManager, RpcOperation, RpcRequest, RpcRequestEvent, } from "@itwin/core-common";
10
10
  import { FrontendLoggerCategory } from "./common/FrontendLoggerCategory";
11
11
  import { IModelApp } from "./IModelApp";
@@ -21,9 +21,9 @@ const loggerCategory = FrontendLoggerCategory.IModelConnection;
21
21
  export class CheckpointConnection extends IModelConnection {
22
22
  _fromIpc;
23
23
  /** The Guid that identifies the iTwin that owns this iModel. */
24
- get iTwinId() { return super.iTwinId; }
24
+ get iTwinId() { return super.iTwinId ?? Guid.empty; }
25
25
  /** The Guid that identifies this iModel. */
26
- get iModelId() { return super.iModelId; }
26
+ get iModelId() { return super.iModelId ?? Guid.empty; }
27
27
  /** Returns `true` if [[close]] has already been called. */
28
28
  get isClosed() { return this._isClosed ? true : false; }
29
29
  _isClosed;
@@ -106,7 +106,7 @@ export class CheckpointConnection extends IModelConnection {
106
106
  const openResponse = await CheckpointConnection.callOpen(iModelRpcProps, this.routingContext);
107
107
  // The new/reopened connection may have a new rpcKey and/or changesetId, but the other IModelRpcTokenProps should be the same
108
108
  this._fileKey = openResponse.key;
109
- this.changeset = openResponse.changeset;
109
+ this.changeset = expectDefined(openResponse.changeset);
110
110
  }
111
111
  catch (error) {
112
112
  reject(BentleyError.getErrorMessage(error));
@@ -1 +1 @@
1
- {"version":3,"file":"CheckpointConnection.js","sourceRoot":"","sources":["../../src/CheckpointConnection.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module IModelConnection\n */\n\nimport { BentleyError, BentleyStatus, GuidString, Logger } from \"@itwin/core-bentley\";\nimport {\n IModelConnectionProps, IModelError, IModelReadRpcInterface, IModelRpcOpenProps, IModelVersion, RpcManager, RpcNotFoundResponse, RpcOperation,\n RpcRequest, RpcRequestEvent,\n} from \"@itwin/core-common\";\nimport { FrontendLoggerCategory } from \"./common/FrontendLoggerCategory\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { IModelRoutingContext } from \"./IModelRoutingContext\";\nimport { IpcApp } from \"./IpcApp\";\n\nconst loggerCategory = FrontendLoggerCategory.IModelConnection;\n\n/**\n * An IModelConnection to a Checkpoint of an iModel.\n * @see [CheckpointConnection]($docs/learning/frontend/IModelConnection)\n * @public\n */\nexport class CheckpointConnection extends IModelConnection {\n private readonly _fromIpc: boolean;\n\n /** The Guid that identifies the iTwin that owns this iModel. */\n public override get iTwinId(): GuidString { return super.iTwinId!; }\n /** The Guid that identifies this iModel. */\n public override get iModelId(): GuidString { return super.iModelId!; }\n\n /** Returns `true` if [[close]] has already been called. */\n public get isClosed(): boolean { return this._isClosed ? true : false; }\n protected _isClosed?: boolean;\n\n protected constructor(props: IModelConnectionProps, fromIpc: boolean) {\n super(props);\n this._fromIpc = fromIpc;\n }\n\n /** Type guard for instanceof [[CheckpointConnection]] */\n public override isCheckpointConnection(): this is CheckpointConnection { return true; }\n\n /**\n * Open a readonly IModelConnection to a Checkpoint of an iModel.\n */\n public static async openRemote(iTwinId: GuidString, iModelId: GuidString, version = IModelVersion.latest()): Promise<CheckpointConnection> {\n if (undefined === IModelApp.hubAccess)\n throw new Error(\"Missing an implementation of IModelApp.hubAccess\");\n\n const accessToken = await IModelApp.getAccessToken();\n const changeset = await IModelApp.hubAccess.getChangesetFromVersion({ accessToken, iModelId, version });\n\n let connection: CheckpointConnection;\n const iModelProps = { iTwinId, iModelId, changeset };\n if (IpcApp.isValid) {\n connection = new this(await IpcApp.appFunctionIpc.openCheckpoint(iModelProps), true);\n } else {\n const routingContext = IModelRoutingContext.current || IModelRoutingContext.default;\n connection = new this(await this.callOpen(iModelProps, routingContext), false);\n RpcManager.setIModel(connection);\n connection.routingContext = routingContext;\n RpcRequest.notFoundHandlers.addListener(connection._reopenConnectionHandler);\n }\n\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n private static async callOpen(iModelToken: IModelRpcOpenProps, routingContext: IModelRoutingContext): Promise<IModelConnectionProps> {\n // Try opening the iModel repeatedly accommodating any pending responses from the backend.\n // Waits for an increasing amount of time (but within a range) before checking on the pending request again.\n const connectionRetryIntervalRange = { min: 100, max: 5000 }; // in milliseconds\n let connectionRetryInterval = Math.min(connectionRetryIntervalRange.min, IModelConnection.connectionTimeout);\n\n const openForReadOperation = RpcOperation.lookup(IModelReadRpcInterface, \"getConnectionProps\");\n if (!openForReadOperation)\n throw new IModelError(BentleyStatus.ERROR, \"IModelReadRpcInterface.getConnectionProps() is not available\");\n openForReadOperation.policy.retryInterval = () => connectionRetryInterval;\n\n Logger.logTrace(loggerCategory, `IModelConnection.open`, iModelToken);\n const startTime = Date.now();\n\n const removeListener = RpcRequest.events.addListener((type: RpcRequestEvent, request: RpcRequest) => { // eslint-disable-line @typescript-eslint/no-deprecated\n if (type !== RpcRequestEvent.PendingUpdateReceived) // eslint-disable-line @typescript-eslint/no-deprecated\n return;\n if (!(openForReadOperation && request.operation === openForReadOperation))\n return;\n\n Logger.logTrace(loggerCategory, \"Received pending open notification in IModelConnection.open\", iModelToken);\n\n const connectionTimeElapsed = Date.now() - startTime;\n if (connectionTimeElapsed > IModelConnection.connectionTimeout) {\n Logger.logError(loggerCategory, `Timed out opening connection in IModelConnection.open (took longer than ${IModelConnection.connectionTimeout} milliseconds)`, iModelToken);\n throw new IModelError(BentleyStatus.ERROR, \"Opening a connection was timed out\"); // NEEDS_WORK: More specific error status\n }\n\n connectionRetryInterval = Math.min(connectionRetryIntervalRange.max, connectionRetryInterval * 2, IModelConnection.connectionTimeout - connectionTimeElapsed);\n if (request.retryInterval !== connectionRetryInterval) {\n request.retryInterval = connectionRetryInterval;\n Logger.logTrace(loggerCategory, `Adjusted open connection retry interval to ${request.retryInterval} milliseconds in IModelConnection.open`, iModelToken);\n }\n });\n\n const openPromise = IModelReadRpcInterface.getClientForRouting(routingContext.token).getConnectionProps(iModelToken);\n let openResponse: IModelConnectionProps;\n try {\n openResponse = await openPromise;\n } finally {\n Logger.logTrace(loggerCategory, \"Completed open request in IModelConnection.open\", iModelToken);\n removeListener();\n }\n\n return openResponse;\n }\n\n private _reopenConnectionHandler = async (request: RpcRequest<RpcNotFoundResponse>, response: any, resubmit: () => void, reject: (reason?: any) => void) => {\n if (!response.hasOwnProperty(\"isIModelNotFoundResponse\"))\n reject();\n\n const iModelRpcProps = request.parameters[0];\n if (this._fileKey !== iModelRpcProps.key)\n reject(); // The handler is called for a different connection than this\n\n Logger.logTrace(loggerCategory, \"Attempting to reopen connection\", () => iModelRpcProps);\n\n try {\n const openResponse = await CheckpointConnection.callOpen(iModelRpcProps, this.routingContext);\n // The new/reopened connection may have a new rpcKey and/or changesetId, but the other IModelRpcTokenProps should be the same\n this._fileKey = openResponse.key;\n this.changeset = openResponse.changeset!;\n\n } catch (error) {\n reject(BentleyError.getErrorMessage(error));\n } finally {\n }\n\n Logger.logTrace(loggerCategory, \"Resubmitting original request after reopening connection\", iModelRpcProps);\n request.parameters[0] = this.getRpcProps(); // Modify the token of the original request before resubmitting it.\n resubmit();\n };\n\n /** Close this CheckpointConnection */\n public async close(): Promise<void> {\n if (this.isClosed)\n return;\n\n this.beforeClose();\n if (this._fromIpc)\n await IpcApp.appFunctionIpc.closeIModel(this._fileKey);\n else\n RpcRequest.notFoundHandlers.removeListener(this._reopenConnectionHandler);\n\n this._isClosed = true;\n }\n}\n"]}
1
+ {"version":3,"file":"CheckpointConnection.js","sourceRoot":"","sources":["../../src/CheckpointConnection.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module IModelConnection\n */\n\nimport { BentleyError, BentleyStatus, expectDefined, Guid, GuidString, Logger } from \"@itwin/core-bentley\";\nimport {\n IModelConnectionProps, IModelError, IModelReadRpcInterface, IModelRpcOpenProps, IModelVersion, RpcManager, RpcNotFoundResponse, RpcOperation,\n RpcRequest, RpcRequestEvent,\n} from \"@itwin/core-common\";\nimport { FrontendLoggerCategory } from \"./common/FrontendLoggerCategory\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { IModelRoutingContext } from \"./IModelRoutingContext\";\nimport { IpcApp } from \"./IpcApp\";\n\nconst loggerCategory = FrontendLoggerCategory.IModelConnection;\n\n/**\n * An IModelConnection to a Checkpoint of an iModel.\n * @see [CheckpointConnection]($docs/learning/frontend/IModelConnection)\n * @public\n */\nexport class CheckpointConnection extends IModelConnection {\n private readonly _fromIpc: boolean;\n\n /** The Guid that identifies the iTwin that owns this iModel. */\n public override get iTwinId(): GuidString { return super.iTwinId ?? Guid.empty; }\n /** The Guid that identifies this iModel. */\n public override get iModelId(): GuidString { return super.iModelId ?? Guid.empty; }\n\n /** Returns `true` if [[close]] has already been called. */\n public get isClosed(): boolean { return this._isClosed ? true : false; }\n protected _isClosed?: boolean;\n\n protected constructor(props: IModelConnectionProps, fromIpc: boolean) {\n super(props);\n this._fromIpc = fromIpc;\n }\n\n /** Type guard for instanceof [[CheckpointConnection]] */\n public override isCheckpointConnection(): this is CheckpointConnection { return true; }\n\n /**\n * Open a readonly IModelConnection to a Checkpoint of an iModel.\n */\n public static async openRemote(iTwinId: GuidString, iModelId: GuidString, version = IModelVersion.latest()): Promise<CheckpointConnection> {\n if (undefined === IModelApp.hubAccess)\n throw new Error(\"Missing an implementation of IModelApp.hubAccess\");\n\n const accessToken = await IModelApp.getAccessToken();\n const changeset = await IModelApp.hubAccess.getChangesetFromVersion({ accessToken, iModelId, version });\n\n let connection: CheckpointConnection;\n const iModelProps = { iTwinId, iModelId, changeset };\n if (IpcApp.isValid) {\n connection = new this(await IpcApp.appFunctionIpc.openCheckpoint(iModelProps), true);\n } else {\n const routingContext = IModelRoutingContext.current || IModelRoutingContext.default;\n connection = new this(await this.callOpen(iModelProps, routingContext), false);\n RpcManager.setIModel(connection);\n connection.routingContext = routingContext;\n RpcRequest.notFoundHandlers.addListener(connection._reopenConnectionHandler);\n }\n\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n private static async callOpen(iModelToken: IModelRpcOpenProps, routingContext: IModelRoutingContext): Promise<IModelConnectionProps> {\n // Try opening the iModel repeatedly accommodating any pending responses from the backend.\n // Waits for an increasing amount of time (but within a range) before checking on the pending request again.\n const connectionRetryIntervalRange = { min: 100, max: 5000 }; // in milliseconds\n let connectionRetryInterval = Math.min(connectionRetryIntervalRange.min, IModelConnection.connectionTimeout);\n\n const openForReadOperation = RpcOperation.lookup(IModelReadRpcInterface, \"getConnectionProps\");\n if (!openForReadOperation)\n throw new IModelError(BentleyStatus.ERROR, \"IModelReadRpcInterface.getConnectionProps() is not available\");\n openForReadOperation.policy.retryInterval = () => connectionRetryInterval;\n\n Logger.logTrace(loggerCategory, `IModelConnection.open`, iModelToken);\n const startTime = Date.now();\n\n const removeListener = RpcRequest.events.addListener((type: RpcRequestEvent, request: RpcRequest) => { // eslint-disable-line @typescript-eslint/no-deprecated\n if (type !== RpcRequestEvent.PendingUpdateReceived) // eslint-disable-line @typescript-eslint/no-deprecated\n return;\n if (!(openForReadOperation && request.operation === openForReadOperation))\n return;\n\n Logger.logTrace(loggerCategory, \"Received pending open notification in IModelConnection.open\", iModelToken);\n\n const connectionTimeElapsed = Date.now() - startTime;\n if (connectionTimeElapsed > IModelConnection.connectionTimeout) {\n Logger.logError(loggerCategory, `Timed out opening connection in IModelConnection.open (took longer than ${IModelConnection.connectionTimeout} milliseconds)`, iModelToken);\n throw new IModelError(BentleyStatus.ERROR, \"Opening a connection was timed out\"); // NEEDS_WORK: More specific error status\n }\n\n connectionRetryInterval = Math.min(connectionRetryIntervalRange.max, connectionRetryInterval * 2, IModelConnection.connectionTimeout - connectionTimeElapsed);\n if (request.retryInterval !== connectionRetryInterval) {\n request.retryInterval = connectionRetryInterval;\n Logger.logTrace(loggerCategory, `Adjusted open connection retry interval to ${request.retryInterval} milliseconds in IModelConnection.open`, iModelToken);\n }\n });\n\n const openPromise = IModelReadRpcInterface.getClientForRouting(routingContext.token).getConnectionProps(iModelToken);\n let openResponse: IModelConnectionProps;\n try {\n openResponse = await openPromise;\n } finally {\n Logger.logTrace(loggerCategory, \"Completed open request in IModelConnection.open\", iModelToken);\n removeListener();\n }\n\n return openResponse;\n }\n\n private _reopenConnectionHandler = async (request: RpcRequest<RpcNotFoundResponse>, response: any, resubmit: () => void, reject: (reason?: any) => void) => {\n if (!response.hasOwnProperty(\"isIModelNotFoundResponse\"))\n reject();\n\n const iModelRpcProps = request.parameters[0];\n if (this._fileKey !== iModelRpcProps.key)\n reject(); // The handler is called for a different connection than this\n\n Logger.logTrace(loggerCategory, \"Attempting to reopen connection\", () => iModelRpcProps);\n\n try {\n const openResponse = await CheckpointConnection.callOpen(iModelRpcProps, this.routingContext);\n // The new/reopened connection may have a new rpcKey and/or changesetId, but the other IModelRpcTokenProps should be the same\n this._fileKey = openResponse.key;\n this.changeset = expectDefined(openResponse.changeset);\n\n } catch (error) {\n reject(BentleyError.getErrorMessage(error));\n } finally {\n }\n\n Logger.logTrace(loggerCategory, \"Resubmitting original request after reopening connection\", iModelRpcProps);\n request.parameters[0] = this.getRpcProps(); // Modify the token of the original request before resubmitting it.\n resubmit();\n };\n\n /** Close this CheckpointConnection */\n public async close(): Promise<void> {\n if (this.isClosed)\n return;\n\n this.beforeClose();\n if (this._fromIpc)\n await IpcApp.appFunctionIpc.closeIModel(this._fileKey);\n else\n RpcRequest.notFoundHandlers.removeListener(this._reopenConnectionHandler);\n\n this._isClosed = true;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ContextRealityModelState.js","sourceRoot":"","sources":["../../src/ContextRealityModelState.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 Views\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { ContextRealityModel, ContextRealityModelProps, FeatureAppearance, RealityDataFormat, RealityDataSourceKey } from \"@itwin/core-common\";\r\nimport { DisplayStyleState } from \"./DisplayStyleState\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { PlanarClipMaskState } from \"./PlanarClipMaskState\";\r\nimport { RealityDataSource } from \"./RealityDataSource\";\r\nimport { SpatialClassifiersState } from \"./SpatialClassifiersState\";\r\nimport { createOrbitGtTileTreeReference, createRealityTileTreeReference, RealityModelTileTree, TileTreeReference } from \"./tile/internal\";\r\n\r\n/** A [ContextRealityModel]($common) attached to a [[DisplayStyleState]] supplying a [[TileTreeReference]] used to draw the\r\n * reality model in a [[Viewport]].\r\n * @see [DisplayStyleSettings.contextRealityModels]($common).\r\n * @see [[DisplayStyleState.contextRealityModelStates]].\r\n * @see [[DisplayStyleState.attachRealityModel]].\r\n * @public\r\n * @extensions\r\n */\r\nexport class ContextRealityModelState extends ContextRealityModel {\r\n private readonly _treeRef: RealityModelTileTree.Reference;\r\n /** The iModel with which the reality model is associated. */\r\n public readonly iModel: IModelConnection;\r\n /** The reality data source key with which the reality model is associated. */\r\n public override readonly rdSourceKey: RealityDataSourceKey;\r\n\r\n /** @internal */\r\n public constructor(props: ContextRealityModelProps, iModel: IModelConnection, displayStyle: DisplayStyleState) {\r\n super(props, { createClassifiers: (container) => SpatialClassifiersState.create(container) });\r\n this.iModel = iModel;\r\n this._appearanceOverrides = props.appearanceOverrides ? FeatureAppearance.fromJSON(props.appearanceOverrides) : undefined;\r\n if (undefined === props.orbitGtBlob) {\r\n this.rdSourceKey = props.rdSourceKey ? props.rdSourceKey : RealityDataSource.createKeyFromUrl(props.tilesetUrl);\r\n } else {\r\n this.rdSourceKey = props.rdSourceKey ? props.rdSourceKey : RealityDataSource.createKeyFromOrbitGtBlobProps(props.orbitGtBlob);\r\n }\r\n const useOrbitGtTileTreeReference = this.rdSourceKey.format === RealityDataFormat.OPC;\r\n this._treeRef = (!useOrbitGtTileTreeReference) ?\r\n createRealityTileTreeReference({\r\n iModel,\r\n source: displayStyle,\r\n rdSourceKey: this.rdSourceKey,\r\n url: props.tilesetUrl,\r\n name: props.name,\r\n classifiers: this.classifiers,\r\n planarClipMask: this.planarClipMaskSettings,\r\n getDisplaySettings: () => this.displaySettings,\r\n getBackgroundBase: () => displayStyle.settings.mapImagery.backgroundBase,\r\n getBackgroundLayers: () => displayStyle.settings.mapImagery.backgroundLayers,\r\n }) :\r\n createOrbitGtTileTreeReference({\r\n iModel,\r\n orbitGtBlob: props.orbitGtBlob!,\r\n rdSourceKey: this.rdSourceKey,\r\n name: props.name,\r\n classifiers: this.classifiers,\r\n source: displayStyle,\r\n getDisplaySettings: () => this.displaySettings,\r\n });\r\n\r\n this.onPlanarClipMaskChanged.addListener((newSettings) => {\r\n this._treeRef.planarClipMask = newSettings ? PlanarClipMaskState.create(newSettings) : undefined;\r\n });\r\n }\r\n\r\n /** The tile tree reference responsible for drawing the reality model into a [[Viewport]]. */\r\n public get treeRef(): TileTreeReference { return this._treeRef; }\r\n\r\n /** The set of available [[ActiveSpatialClassifier]]s that can be used to classify the reality model. */\r\n public override get classifiers(): SpatialClassifiersState {\r\n assert(super.classifiers instanceof SpatialClassifiersState);\r\n return super.classifiers;\r\n }\r\n\r\n /** The transient Id assigned to this reality model at run-time. */\r\n public get modelId(): Id64String | undefined {\r\n return (this._treeRef instanceof RealityModelTileTree.Reference) ? this._treeRef.modelId : undefined;\r\n }\r\n\r\n /** Whether the reality model spans the entire globe ellipsoid. */\r\n public get isGlobal(): boolean {\r\n return this.treeRef.isGlobal;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ContextRealityModelState.js","sourceRoot":"","sources":["../../src/ContextRealityModelState.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 Views\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { ContextRealityModel, ContextRealityModelProps, FeatureAppearance, RealityDataFormat, RealityDataSourceKey } from \"@itwin/core-common\";\r\nimport { DisplayStyleState } from \"./DisplayStyleState\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { PlanarClipMaskState } from \"./PlanarClipMaskState\";\r\nimport { RealityDataSource } from \"./RealityDataSource\";\r\nimport { SpatialClassifiersState } from \"./SpatialClassifiersState\";\r\nimport { createOrbitGtTileTreeReference, createRealityTileTreeReference, RealityModelTileTree, TileTreeReference } from \"./tile/internal\";\r\n\r\n/** A [ContextRealityModel]($common) attached to a [[DisplayStyleState]] supplying a [[TileTreeReference]] used to draw the\r\n * reality model in a [[Viewport]].\r\n * @see [DisplayStyleSettings.contextRealityModels]($common).\r\n * @see [[DisplayStyleState.contextRealityModelStates]].\r\n * @see [[DisplayStyleState.attachRealityModel]].\r\n * @public\r\n * @extensions\r\n */\r\nexport class ContextRealityModelState extends ContextRealityModel {\r\n private readonly _treeRef: RealityModelTileTree.Reference;\r\n /** The iModel with which the reality model is associated. */\r\n public readonly iModel: IModelConnection;\r\n /** The reality data source key with which the reality model is associated. */\r\n public override readonly rdSourceKey: RealityDataSourceKey;\r\n\r\n /** @internal */\r\n public constructor(props: ContextRealityModelProps, iModel: IModelConnection, displayStyle: DisplayStyleState) {\r\n super(props, { createClassifiers: (container) => SpatialClassifiersState.create(container) });\r\n this.iModel = iModel;\r\n this._appearanceOverrides = props.appearanceOverrides ? FeatureAppearance.fromJSON(props.appearanceOverrides) : undefined;\r\n if (undefined === props.orbitGtBlob) {\r\n this.rdSourceKey = props.rdSourceKey ? props.rdSourceKey : RealityDataSource.createKeyFromUrl(props.tilesetUrl);\r\n } else {\r\n this.rdSourceKey = props.rdSourceKey ? props.rdSourceKey : RealityDataSource.createKeyFromOrbitGtBlobProps(props.orbitGtBlob);\r\n }\r\n const useOrbitGtTileTreeReference = this.rdSourceKey.format === RealityDataFormat.OPC;\r\n this._treeRef = (!useOrbitGtTileTreeReference) ?\r\n createRealityTileTreeReference({\r\n iModel,\r\n source: displayStyle,\r\n rdSourceKey: this.rdSourceKey,\r\n url: props.tilesetUrl,\r\n name: props.name,\r\n classifiers: this.classifiers,\r\n planarClipMask: this.planarClipMaskSettings,\r\n getDisplaySettings: () => this.displaySettings,\r\n getBackgroundBase: () => displayStyle.settings.mapImagery.backgroundBase,\r\n getBackgroundLayers: () => displayStyle.settings.mapImagery.backgroundLayers,\r\n }) :\r\n createOrbitGtTileTreeReference({\r\n iModel,\r\n orbitGtBlob: props.orbitGtBlob,\r\n rdSourceKey: this.rdSourceKey,\r\n name: props.name,\r\n classifiers: this.classifiers,\r\n source: displayStyle,\r\n getDisplaySettings: () => this.displaySettings,\r\n });\r\n\r\n this.onPlanarClipMaskChanged.addListener((newSettings) => {\r\n this._treeRef.planarClipMask = newSettings ? PlanarClipMaskState.create(newSettings) : undefined;\r\n });\r\n }\r\n\r\n /** The tile tree reference responsible for drawing the reality model into a [[Viewport]]. */\r\n public get treeRef(): TileTreeReference { return this._treeRef; }\r\n\r\n /** The set of available [[ActiveSpatialClassifier]]s that can be used to classify the reality model. */\r\n public override get classifiers(): SpatialClassifiersState {\r\n assert(super.classifiers instanceof SpatialClassifiersState);\r\n return super.classifiers;\r\n }\r\n\r\n /** The transient Id assigned to this reality model at run-time. */\r\n public get modelId(): Id64String | undefined {\r\n return (this._treeRef instanceof RealityModelTileTree.Reference) ? this._treeRef.modelId : undefined;\r\n }\r\n\r\n /** Whether the reality model spans the entire globe ellipsoid. */\r\n public get isGlobal(): boolean {\r\n return this.treeRef.isGlobal;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ElementLocateManager.d.ts","sourceRoot":"","sources":["../../src/ElementLocateManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ElementLocateManager.d.ts","sourceRoot":"","sources":["../../src/ElementLocateManager.ts"],"names":[],"mappings":"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"}