@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":"TileDrawArgs.js","sourceRoot":"","sources":["../../../src/tile/TileDrawArgs.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 Tiles\n */\n\nimport { BeTimePoint } from \"@itwin/core-bentley\";\nimport { ClipVector, Geometry, Map4d, Matrix4d, Point3d, Point4d, Range1d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { FeatureAppearanceProvider, FrustumPlanes, HiddenLine, ViewFlagOverrides } from \"@itwin/core-common\";\nimport { FeatureSymbology } from \"../render/FeatureSymbology\";\nimport { GraphicBranch, GraphicBranchOptions } from \"../render/GraphicBranch\";\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\nimport { RenderGraphic } from \"../render/RenderGraphic\";\nimport { RenderPlanarClassifier } from \"../internal/render/RenderPlanarClassifier\";\nimport { SceneContext } from \"../ViewContext\";\nimport { ViewingSpace } from \"../ViewingSpace\";\nimport { CoordSystem } from \"../CoordSystem\";\nimport { Tile, TileGraphicType, TileTree } from \"./internal\";\nimport { RenderTextureDrape } from \"../internal/render/RenderTextureDrape\";\n\nconst scratchRange = new Range3d();\nconst scratchPoint = Point3d.create();\nconst scratchPoint4d = Point4d.create();\nconst scratchXRange = Range1d.createNull();\nconst scratchYRange = Range1d.createNull();\nconst scratchMatrix4d = Matrix4d.createIdentity();\n\n/** Parameters used to construct [[TileDrawArgs]].\n * @public\n * @extensions\n */\nexport interface TileDrawArgParams {\n /** Context for the scene into which the tiles are to be rendered. */\n context: SceneContext;\n /** Transform to be applied when drawing the tiles. */\n location: Transform;\n /** The tile tree from which to obtain tiles. */\n tree: TileTree;\n /** The time at which these args were created. */\n now: BeTimePoint;\n /** Overrides to apply to the view's [ViewFlags]($common) when drawing the tiles. */\n viewFlagOverrides: ViewFlagOverrides;\n /** Clip volume used to clip the tiles. */\n clipVolume?: RenderClipVolume;\n /** True if a tile and its child tiles should not be drawn simultaneously. */\n parentsAndChildrenExclusive: boolean;\n /** Symbology overrides to apply to the tiles. */\n symbologyOverrides: FeatureSymbology.Overrides | undefined;\n /** Optionally customizes the view's symbology overrides for the tiles. */\n appearanceProvider?: FeatureAppearanceProvider;\n /** Optionally overrides the view's hidden line settings. */\n hiddenLineSettings?: HiddenLine.Settings;\n /** If defined, tiles should be culled if they do not intersect this clip. */\n intersectionClip?: ClipVector;\n /** If defined, the Id of a node in the scene's [RenderSchedule.Script]($common) that applies a transform to the graphics;\n * or \"0xffffffff\" for any node that does *not* apply a transform.\n * @internal\n */\n animationTransformNodeId?: number;\n /** See [[GraphicBranch.groupNodeId]].\n * @internal\n */\n groupNodeId?: number;\n /** If defined, a bounding range in tile tree coordinates outside of which tiles should not be selected. */\n boundingRange?: Range3d;\n /** @alpha */\n maximumScreenSpaceError?: number;\n /** @alpha */\n transformFromIModel?: Transform;\n}\n\n/**\n * Provides context used when selecting and drawing [[Tile]]s.\n * @see [[TileTree.selectTiles]]\n * @see [[TileTree.draw]]\n * @public\n * @extensions\n */\nexport class TileDrawArgs {\n /** Transform to the location in iModel coordinates at which the tiles are to be drawn. */\n public readonly location: Transform;\n /** The tile tree being drawn. */\n public readonly tree: TileTree;\n /** Optional clip volume applied to the tiles. */\n public clipVolume: RenderClipVolume | undefined;\n /** The context in which the tiles will be drawn, exposing, e.g., the [[Viewport]] and accepting [[RenderGraphic]]s to be drawn. */\n public readonly context: SceneContext;\n /** Describes the viewed volume. */\n public viewingSpace: ViewingSpace;\n /** Holds the tile graphics to be drawn. */\n public readonly graphics: GraphicBranch = new GraphicBranch();\n /** @internal */\n public readonly now: BeTimePoint;\n /** The planes of the viewing frustum, used for frustum culling. */\n protected _frustumPlanes?: FrustumPlanes;\n /** @internal */\n public planarClassifier?: RenderPlanarClassifier;\n /** @internal */\n public drape?: RenderTextureDrape;\n /** Optional clip volume applied to all tiles in the view. */\n public readonly viewClip?: ClipVector;\n /** True if a tile and its child tiles should not be drawn simultaneously. */\n public parentsAndChildrenExclusive: boolean;\n /** @internal */\n private _appearanceProvider?: FeatureAppearanceProvider;\n /** Optional overrides for the view's hidden line settings. */\n public hiddenLineSettings?: HiddenLine.Settings;\n /** Tiles that we want to draw and that are ready to draw. May not actually be selected, e.g. if sibling tiles are not yet ready. */\n public readonly readyTiles = new Set<Tile>();\n /** Tiles whose contents should be kept in memory regardless of whether or not they are selected for display.\n * @internal\n */\n public readonly touchedTiles = new Set<Tile>();\n /** For perspective views, the view-Z of the near plane. */\n private readonly _nearFrontCenter?: Point3d;\n /** Overrides applied to the view's [ViewFlags]($common) when drawing the tiles. */\n public get viewFlagOverrides(): ViewFlagOverrides { return this.graphics.viewFlagOverrides; }\n /** If defined, replaces the view's own symbology overrides when drawing the tiles. */\n public get symbologyOverrides(): FeatureSymbology.Overrides | undefined { return this.graphics.symbologyOverrides; }\n /** If defined, tiles will be culled if they do not intersect this clip. */\n public intersectionClip?: ClipVector;\n /** If defined, a bounding range in tile tree coordinates outside of which tiles should not be selected. */\n public boundingRange?: Range3d;\n /** @internal */\n public readonly pixelSizeScaleFactor;\n /** @internal */\n public readonly animationTransformNodeId?: number;\n /** @internal */\n public readonly groupNodeId?: number;\n /** @alpha */\n public maximumScreenSpaceError;\n /** @alpha */\n public transformFromIModel?: Transform;\n\n /** Compute the size in pixels of the specified tile at the point on its bounding sphere closest to the camera. */\n public getPixelSize(tile: Tile): number {\n const sizeFromProjection = this.getPixelSizeFromProjection(tile);\n if (undefined !== sizeFromProjection)\n return sizeFromProjection;\n\n const radius = this.getTileRadius(tile); // use a sphere to test pixel size. We don't know the orientation of the image within the bounding box.\n const center = this.getTileCenter(tile);\n\n const pixelSizeAtPt = this.computePixelSizeInMetersAtClosestPoint(center, radius);\n return 0 !== pixelSizeAtPt ? this.context.adjustPixelSizeForLOD(radius / pixelSizeAtPt) : 1.0e-3;\n }\n\n /** If the tile provides corners (from an OBB) then this produces most accurate representation of the tile size */\n private getPixelSizeFromProjection(tile: Tile): number | undefined {\n const sizeProjectionCorners = tile.getSizeProjectionCorners();\n if (!sizeProjectionCorners)\n return undefined;\n\n /* For maps or global reality models we use the projected screen rectangle rather than sphere to calculate pixel size to avoid excessive tiles at horizon. */\n const tileToView = this.worldToViewMap.transform0.multiplyMatrixMatrix(Matrix4d.createTransform(this.location, scratchMatrix4d), scratchMatrix4d);\n scratchXRange.setNull();\n scratchYRange.setNull();\n\n let behindEye = false;\n for (const corner of sizeProjectionCorners) {\n const viewCorner = tileToView.multiplyPoint3d(corner, 1, scratchPoint4d);\n if (viewCorner.w < 0.0) {\n behindEye = true;\n break;\n }\n\n scratchXRange.extendX(viewCorner.x / viewCorner.w);\n scratchYRange.extendX(viewCorner.y / viewCorner.w);\n }\n if (behindEye)\n return undefined;\n\n return scratchXRange.isNull ? 1.0E-3 : this.context.adjustPixelSizeForLOD(Math.sqrt(scratchXRange.length() * scratchYRange.length()));\n }\n\n /** Compute the size in meters of one pixel at the point on the tile's bounding sphere closest to the camera. */\n public getPixelSizeInMetersAtClosestPoint(tile: Tile): number {\n const radius = this.getTileRadius(tile); // use a sphere to test pixel size. We don't know the orientation of the image within the bounding box.\n const center = this.getTileCenter(tile);\n\n const pixelSizeAtPt = this.computePixelSizeInMetersAtClosestPoint(center, radius);\n return 0 !== pixelSizeAtPt ? this.context.adjustPixelSizeForLOD(pixelSizeAtPt) : 1.0e-3;\n }\n\n /** Compute the size in meters of one pixel at the point on a sphere closest to the camera.\n * Device scaling is not applied.\n */\n public computePixelSizeInMetersAtClosestPoint(center: Point3d, radius: number): number {\n if (this.context.viewport.view.is3d() && this.context.viewport.isCameraOn && this._nearFrontCenter) {\n const toFront = Vector3d.createStartEnd(center, this._nearFrontCenter);\n const viewZ = this.context.viewport.rotation.rowZ();\n // If the sphere overlaps the near front plane just use near front point. This also handles behind eye conditions.\n if (viewZ.dotProduct(toFront) < radius) {\n center = this._nearFrontCenter;\n } else {\n // Find point on sphere closest to eye.\n const toEye = center.unitVectorTo(this.context.viewport.view.camera.eye);\n\n if (toEye) { // Only if tile is not already behind the eye.\n toEye.scaleInPlace(radius);\n center.addInPlace(toEye);\n }\n }\n }\n\n const viewPt = this.worldToViewMap.transform0.multiplyPoint3dQuietNormalize(center);\n const viewPt2 = new Point3d(viewPt.x + 1.0, viewPt.y, viewPt.z);\n return this.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt).distance(this.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt2));\n }\n\n /** Compute this size of a sphere on screen in pixels */\n public getRangePixelSize(range: Range3d): number {\n const transformedRange = this.location.multiplyRange(range, scratchRange);\n const center = transformedRange.localXYZToWorld(.5, .5, .5, scratchPoint)!;\n const radius = transformedRange.diagonal().magnitude();\n\n const viewPt = this.worldToViewMap.transform0.multiplyPoint3dQuietNormalize(center);\n const viewPt2 = new Point3d(viewPt.x + 1.0, viewPt.y, viewPt.z);\n const pixelSizeAtPt = this.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt).distance(this.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt2));\n return 0 !== pixelSizeAtPt ? radius / pixelSizeAtPt : 1.0e-3;\n }\n\n /** @internal */\n public getTileGraphics(tile: Tile) {\n return tile.produceGraphics();\n }\n\n /** The planes of the viewing frustum, used for frustum culling. */\n public get frustumPlanes(): FrustumPlanes {\n return this._frustumPlanes !== undefined ? this._frustumPlanes : this.context.frustumPlanes;\n }\n\n /** Provides conversions between [[CoordSystem.World]] and [[CoordSystem.View]]. */\n public get worldToViewMap(): Map4d {\n return this.viewingSpace.worldToViewMap;\n }\n\n private computePixelSizeScaleFactor(): number {\n // Check to see if a model display transform with non-uniform scaling is being used.\n const mat = this.context.viewport.view.modelDisplayTransformProvider?.getModelDisplayTransform(this.tree.modelId)?.transform.matrix;\n if (!mat)\n return 1;\n\n const scale = [0, 1, 2].map((x) => mat.getColumn(x).magnitude());\n if (Math.abs(scale[0] - scale[1]) <= Geometry.smallMetricDistance && Math.abs(scale[0] - scale[2]) <= Geometry.smallMetricDistance)\n return 1;\n\n // If the component with the largest scale is not the same as the component with the largest tile range use it to adjust the pixel size.\n const rangeDiag = this.tree.range.diagonal();\n let maxS = 0;\n let maxR = 0;\n if (scale[0] > scale[1])\n maxS = (scale[0] > scale[2] ? 0 : 2);\n else\n maxS = (scale[1] > scale[2] ? 1 : 2);\n\n if (rangeDiag.x > rangeDiag.y)\n maxR = (rangeDiag.x > rangeDiag.z ? 0 : 2);\n else\n maxR = (rangeDiag.y > rangeDiag.z ? 1 : 2);\n\n return maxS !== maxR ? scale[maxS] : 1;\n }\n\n /** Constructor */\n public constructor(params: TileDrawArgParams) {\n const { location, tree, context, now, viewFlagOverrides, clipVolume, parentsAndChildrenExclusive, symbologyOverrides } = params;\n this.location = location;\n this.tree = tree;\n this.context = context;\n this.now = now;\n this._appearanceProvider = params.appearanceProvider;\n this.hiddenLineSettings = params.hiddenLineSettings;\n this.animationTransformNodeId = params.animationTransformNodeId;\n this.groupNodeId = params.groupNodeId;\n this.boundingRange = params.boundingRange;\n this.maximumScreenSpaceError = params.maximumScreenSpaceError ?? 16; // 16 is Cesium's default.\n this.transformFromIModel = params.transformFromIModel;\n\n // Do not cull tiles based on clip volume if tiles outside clip are supposed to be drawn but in a different color.\n if (undefined !== clipVolume && !context.viewport.view.displayStyle.settings.clipStyle.outsideColor)\n this.clipVolume = clipVolume;\n\n this.graphics.setViewFlagOverrides(viewFlagOverrides);\n this.graphics.symbologyOverrides = symbologyOverrides;\n this.graphics.animationId = tree.modelId;\n\n this.viewingSpace = context.viewingSpace;\n this._frustumPlanes = FrustumPlanes.fromFrustum(this.viewingSpace.getFrustum());\n\n this.planarClassifier = context.getPlanarClassifierForModel(tree.modelId);\n this.drape = context.getTextureDrapeForModel(tree.modelId);\n\n // NB: If the tile tree has its own clip, do not also apply the view's clip.\n if (context.viewFlags.clipVolume && false !== viewFlagOverrides.clipVolume && undefined === clipVolume) {\n const outsideClipColor = context.viewport.displayStyle.settings.clipStyle.outsideColor;\n this.viewClip = undefined === outsideClipColor ? context.viewport.view.getViewClip() : undefined;\n }\n\n this.parentsAndChildrenExclusive = parentsAndChildrenExclusive;\n if (context.viewport.isCameraOn)\n this._nearFrontCenter = context.viewport.getFrustum(CoordSystem.World).frontCenter;\n\n this.pixelSizeScaleFactor = this.computePixelSizeScaleFactor();\n }\n\n /** A multiplier applied to a [[Tile]]'s `maximumSize` property to adjust level of detail.\n * @see [[Viewport.tileSizeModifier]].\n * @public\n */\n public get tileSizeModifier(): number { return this.context.viewport.tileSizeModifier; }\n\n /** @internal */\n public getTileCenter(tile: Tile): Point3d { return this.location.multiplyPoint3d(tile.center); }\n\n /** @internal */\n public getTileRadius(tile: Tile): number {\n let range: Range3d = tile.range.clone(scratchRange);\n if (tile.tree.is2d) {\n // 2d tiles have a fixed Z range of [-1, 1]. Sometimes (e.g., hypermodeling) we draw them within a 3d view. Prevent Z from artificially expanding the radius.\n range.low.z = range.high.z = 0;\n }\n\n range = this.location.multiplyRange(range, range);\n return 0.5 * range.low.distance(range.high);\n }\n\n /** @internal */\n public get clip(): ClipVector | undefined {\n return undefined !== this.clipVolume ? this.clipVolume.clipVector : undefined;\n }\n\n /** Add a provider to supplement or override the symbology overrides for the view.\n * @note If a provider already exists, the new provider will be chained such that it sees the base overrides\n * after they have potentially been modified by the existing provider.\n * @public\n */\n public addAppearanceProvider(provider: FeatureAppearanceProvider): void {\n this._appearanceProvider = this._appearanceProvider ? FeatureAppearanceProvider.chain(this._appearanceProvider, provider) : provider;\n }\n\n /** Optionally customizes aspects of the view's [[FeatureSymbology.Overrides]]. */\n public get appearanceProvider(): FeatureAppearanceProvider | undefined {\n return this._appearanceProvider;\n }\n\n /** @internal */\n public produceGraphics(): RenderGraphic | undefined {\n return this._produceGraphicBranch(this.graphics);\n }\n /** @internal */\n public get secondaryClassifiers(): Map<number, RenderPlanarClassifier>| undefined {\n return undefined;\n }\n\n /** @internal */\n private _produceGraphicBranch(graphics: GraphicBranch): RenderGraphic | undefined {\n if (graphics.isEmpty)\n return undefined;\n\n const opts: GraphicBranchOptions = {\n iModel: this.tree.iModel,\n transformFromIModel: this.transformFromIModel,\n clipVolume: this.clipVolume,\n classifierOrDrape: this.planarClassifier ?? this.drape,\n appearanceProvider: this.appearanceProvider,\n hline: this.hiddenLineSettings,\n secondaryClassifiers: this.secondaryClassifiers,\n };\n\n let graphic = this.context.createGraphicBranch(graphics, this.location, opts);\n if (undefined !== this.animationTransformNodeId)\n graphic = this.context.renderSystem.createAnimationTransformNode(graphic, this.animationTransformNodeId);\n\n if (undefined !== this.groupNodeId) {\n const branch = new GraphicBranch();\n branch.add(graphic);\n branch.groupNodeId = this.groupNodeId;\n graphic = this.context.createGraphicBranch(branch, Transform.identity);\n }\n\n return graphic;\n }\n\n /** Output graphics for all accumulated tiles. */\n public drawGraphics(): void {\n const graphics = this.produceGraphics();\n if (undefined !== graphics)\n this.context.outputGraphic(graphics);\n }\n\n /** Output graphics of the specified type for all accumulated tiles. */\n public drawGraphicsWithType(graphicType: TileGraphicType, graphics: GraphicBranch): void {\n const branch = this._produceGraphicBranch(graphics);\n if (undefined !== branch)\n this.context.withGraphicType(graphicType, () => this.context.outputGraphic(branch));\n }\n\n /** Indicate that graphics for the specified tile are desired but not yet available. Subsequently a request will be enqueued to load the tile's graphics. */\n public insertMissing(tile: Tile): void {\n this.context.insertMissingTile(tile);\n }\n\n /** Indicate that some requested child tiles are not yet loaded. */\n public markChildrenLoading(): void {\n this.context.markChildrenLoading();\n }\n\n /** Indicate that the specified tile is being used for some purpose by the [[SceneContext]]'s [[Viewport]]. Typically \"used\" means \"displayed\", but the exact meaning is up to the [[TileTree]] - for example, \"used\" might also mean that the tile's children are being used. A tile that is \"in use\" by any [[Viewport]] will not be discarded. */\n public markUsed(tile: Tile): void {\n tile.usageMarker.mark(this.context.viewport, this.now);\n }\n\n /** Indicate that the specified tile should be displayed and that its graphics are ready to be displayed. The number of \"ready\" tiles is used in conjunction with the number of \"missing\" tiles to convey to the user how complete the current view is.\n * @see [[insertMissing]]\n */\n public markReady(tile: Tile): void {\n this.readyTiles.add(tile);\n }\n\n /** Invoked by [[TileTree.selectTiles]]. This exists chiefly for [[SolarShadowMap]].\n * @internal\n */\n public processSelectedTiles(_tiles: Tile[]): void { }\n\n /* @internal */\n public get maxRealityTreeSelectionCount(): number | undefined { return undefined; }\n\n /* @internal */\n public get shouldCollectClassifierGraphics(): boolean { return true; }\n}\n"]}
1
+ {"version":3,"file":"TileDrawArgs.js","sourceRoot":"","sources":["../../../src/tile/TileDrawArgs.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 Tiles\n */\n\nimport { BeTimePoint, expectDefined } from \"@itwin/core-bentley\";\nimport { ClipVector, Geometry, Map4d, Matrix4d, Point3d, Point4d, Range1d, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\nimport { FeatureAppearanceProvider, FrustumPlanes, HiddenLine, ViewFlagOverrides } from \"@itwin/core-common\";\nimport { FeatureSymbology } from \"../render/FeatureSymbology\";\nimport { GraphicBranch, GraphicBranchOptions } from \"../render/GraphicBranch\";\nimport { RenderClipVolume } from \"../render/RenderClipVolume\";\nimport { RenderGraphic } from \"../render/RenderGraphic\";\nimport { RenderPlanarClassifier } from \"../internal/render/RenderPlanarClassifier\";\nimport { SceneContext } from \"../ViewContext\";\nimport { ViewingSpace } from \"../ViewingSpace\";\nimport { CoordSystem } from \"../CoordSystem\";\nimport { Tile, TileGraphicType, TileTree } from \"./internal\";\nimport { RenderTextureDrape } from \"../internal/render/RenderTextureDrape\";\n\nconst scratchRange = new Range3d();\nconst scratchPoint = Point3d.create();\nconst scratchPoint4d = Point4d.create();\nconst scratchXRange = Range1d.createNull();\nconst scratchYRange = Range1d.createNull();\nconst scratchMatrix4d = Matrix4d.createIdentity();\n\n/** Parameters used to construct [[TileDrawArgs]].\n * @public\n * @extensions\n */\nexport interface TileDrawArgParams {\n /** Context for the scene into which the tiles are to be rendered. */\n context: SceneContext;\n /** Transform to be applied when drawing the tiles. */\n location: Transform;\n /** The tile tree from which to obtain tiles. */\n tree: TileTree;\n /** The time at which these args were created. */\n now: BeTimePoint;\n /** Overrides to apply to the view's [ViewFlags]($common) when drawing the tiles. */\n viewFlagOverrides: ViewFlagOverrides;\n /** Clip volume used to clip the tiles. */\n clipVolume?: RenderClipVolume;\n /** True if a tile and its child tiles should not be drawn simultaneously. */\n parentsAndChildrenExclusive: boolean;\n /** Symbology overrides to apply to the tiles. */\n symbologyOverrides: FeatureSymbology.Overrides | undefined;\n /** Optionally customizes the view's symbology overrides for the tiles. */\n appearanceProvider?: FeatureAppearanceProvider;\n /** Optionally overrides the view's hidden line settings. */\n hiddenLineSettings?: HiddenLine.Settings;\n /** If defined, tiles should be culled if they do not intersect this clip. */\n intersectionClip?: ClipVector;\n /** If defined, the Id of a node in the scene's [RenderSchedule.Script]($common) that applies a transform to the graphics;\n * or \"0xffffffff\" for any node that does *not* apply a transform.\n * @internal\n */\n animationTransformNodeId?: number;\n /** See [[GraphicBranch.groupNodeId]].\n * @internal\n */\n groupNodeId?: number;\n /** If defined, a bounding range in tile tree coordinates outside of which tiles should not be selected. */\n boundingRange?: Range3d;\n /** @alpha */\n maximumScreenSpaceError?: number;\n /** @alpha */\n transformFromIModel?: Transform;\n}\n\n/**\n * Provides context used when selecting and drawing [[Tile]]s.\n * @see [[TileTree.selectTiles]]\n * @see [[TileTree.draw]]\n * @public\n * @extensions\n */\nexport class TileDrawArgs {\n /** Transform to the location in iModel coordinates at which the tiles are to be drawn. */\n public readonly location: Transform;\n /** The tile tree being drawn. */\n public readonly tree: TileTree;\n /** Optional clip volume applied to the tiles. */\n public clipVolume: RenderClipVolume | undefined;\n /** The context in which the tiles will be drawn, exposing, e.g., the [[Viewport]] and accepting [[RenderGraphic]]s to be drawn. */\n public readonly context: SceneContext;\n /** Describes the viewed volume. */\n public viewingSpace: ViewingSpace;\n /** Holds the tile graphics to be drawn. */\n public readonly graphics: GraphicBranch = new GraphicBranch();\n /** @internal */\n public readonly now: BeTimePoint;\n /** The planes of the viewing frustum, used for frustum culling. */\n protected _frustumPlanes?: FrustumPlanes;\n /** @internal */\n public planarClassifier?: RenderPlanarClassifier;\n /** @internal */\n public drape?: RenderTextureDrape;\n /** Optional clip volume applied to all tiles in the view. */\n public readonly viewClip?: ClipVector;\n /** True if a tile and its child tiles should not be drawn simultaneously. */\n public parentsAndChildrenExclusive: boolean;\n /** @internal */\n private _appearanceProvider?: FeatureAppearanceProvider;\n /** Optional overrides for the view's hidden line settings. */\n public hiddenLineSettings?: HiddenLine.Settings;\n /** Tiles that we want to draw and that are ready to draw. May not actually be selected, e.g. if sibling tiles are not yet ready. */\n public readonly readyTiles = new Set<Tile>();\n /** Tiles whose contents should be kept in memory regardless of whether or not they are selected for display.\n * @internal\n */\n public readonly touchedTiles = new Set<Tile>();\n /** For perspective views, the view-Z of the near plane. */\n private readonly _nearFrontCenter?: Point3d;\n /** Overrides applied to the view's [ViewFlags]($common) when drawing the tiles. */\n public get viewFlagOverrides(): ViewFlagOverrides { return this.graphics.viewFlagOverrides; }\n /** If defined, replaces the view's own symbology overrides when drawing the tiles. */\n public get symbologyOverrides(): FeatureSymbology.Overrides | undefined { return this.graphics.symbologyOverrides; }\n /** If defined, tiles will be culled if they do not intersect this clip. */\n public intersectionClip?: ClipVector;\n /** If defined, a bounding range in tile tree coordinates outside of which tiles should not be selected. */\n public boundingRange?: Range3d;\n /** @internal */\n public readonly pixelSizeScaleFactor;\n /** @internal */\n public readonly animationTransformNodeId?: number;\n /** @internal */\n public readonly groupNodeId?: number;\n /** @alpha */\n public maximumScreenSpaceError;\n /** @alpha */\n public transformFromIModel?: Transform;\n\n /** Compute the size in pixels of the specified tile at the point on its bounding sphere closest to the camera. */\n public getPixelSize(tile: Tile): number {\n const sizeFromProjection = this.getPixelSizeFromProjection(tile);\n if (undefined !== sizeFromProjection)\n return sizeFromProjection;\n\n const radius = this.getTileRadius(tile); // use a sphere to test pixel size. We don't know the orientation of the image within the bounding box.\n const center = this.getTileCenter(tile);\n\n const pixelSizeAtPt = this.computePixelSizeInMetersAtClosestPoint(center, radius);\n return 0 !== pixelSizeAtPt ? this.context.adjustPixelSizeForLOD(radius / pixelSizeAtPt) : 1.0e-3;\n }\n\n /** If the tile provides corners (from an OBB) then this produces most accurate representation of the tile size */\n private getPixelSizeFromProjection(tile: Tile): number | undefined {\n const sizeProjectionCorners = tile.getSizeProjectionCorners();\n if (!sizeProjectionCorners)\n return undefined;\n\n /* For maps or global reality models we use the projected screen rectangle rather than sphere to calculate pixel size to avoid excessive tiles at horizon. */\n const tileToView = this.worldToViewMap.transform0.multiplyMatrixMatrix(Matrix4d.createTransform(this.location, scratchMatrix4d), scratchMatrix4d);\n scratchXRange.setNull();\n scratchYRange.setNull();\n\n let behindEye = false;\n for (const corner of sizeProjectionCorners) {\n const viewCorner = tileToView.multiplyPoint3d(corner, 1, scratchPoint4d);\n if (viewCorner.w < 0.0) {\n behindEye = true;\n break;\n }\n\n scratchXRange.extendX(viewCorner.x / viewCorner.w);\n scratchYRange.extendX(viewCorner.y / viewCorner.w);\n }\n if (behindEye)\n return undefined;\n\n return scratchXRange.isNull ? 1.0E-3 : this.context.adjustPixelSizeForLOD(Math.sqrt(scratchXRange.length() * scratchYRange.length()));\n }\n\n /** Compute the size in meters of one pixel at the point on the tile's bounding sphere closest to the camera. */\n public getPixelSizeInMetersAtClosestPoint(tile: Tile): number {\n const radius = this.getTileRadius(tile); // use a sphere to test pixel size. We don't know the orientation of the image within the bounding box.\n const center = this.getTileCenter(tile);\n\n const pixelSizeAtPt = this.computePixelSizeInMetersAtClosestPoint(center, radius);\n return 0 !== pixelSizeAtPt ? this.context.adjustPixelSizeForLOD(pixelSizeAtPt) : 1.0e-3;\n }\n\n /** Compute the size in meters of one pixel at the point on a sphere closest to the camera.\n * Device scaling is not applied.\n */\n public computePixelSizeInMetersAtClosestPoint(center: Point3d, radius: number): number {\n if (this.context.viewport.view.is3d() && this.context.viewport.isCameraOn && this._nearFrontCenter) {\n const toFront = Vector3d.createStartEnd(center, this._nearFrontCenter);\n const viewZ = this.context.viewport.rotation.rowZ();\n // If the sphere overlaps the near front plane just use near front point. This also handles behind eye conditions.\n if (viewZ.dotProduct(toFront) < radius) {\n center = this._nearFrontCenter;\n } else {\n // Find point on sphere closest to eye.\n const toEye = center.unitVectorTo(this.context.viewport.view.camera.eye);\n\n if (toEye) { // Only if tile is not already behind the eye.\n toEye.scaleInPlace(radius);\n center.addInPlace(toEye);\n }\n }\n }\n\n const viewPt = this.worldToViewMap.transform0.multiplyPoint3dQuietNormalize(center);\n const viewPt2 = new Point3d(viewPt.x + 1.0, viewPt.y, viewPt.z);\n return this.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt).distance(this.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt2));\n }\n\n /** Compute this size of a sphere on screen in pixels */\n public getRangePixelSize(range: Range3d): number {\n const transformedRange = this.location.multiplyRange(range, scratchRange);\n const center = expectDefined(transformedRange.localXYZToWorld(.5, .5, .5, scratchPoint));\n const radius = transformedRange.diagonal().magnitude();\n\n const viewPt = this.worldToViewMap.transform0.multiplyPoint3dQuietNormalize(center);\n const viewPt2 = new Point3d(viewPt.x + 1.0, viewPt.y, viewPt.z);\n const pixelSizeAtPt = this.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt).distance(this.worldToViewMap.transform1.multiplyPoint3dQuietNormalize(viewPt2));\n return 0 !== pixelSizeAtPt ? radius / pixelSizeAtPt : 1.0e-3;\n }\n\n /** @internal */\n public getTileGraphics(tile: Tile) {\n return tile.produceGraphics();\n }\n\n /** The planes of the viewing frustum, used for frustum culling. */\n public get frustumPlanes(): FrustumPlanes {\n return this._frustumPlanes !== undefined ? this._frustumPlanes : this.context.frustumPlanes;\n }\n\n /** Provides conversions between [[CoordSystem.World]] and [[CoordSystem.View]]. */\n public get worldToViewMap(): Map4d {\n return this.viewingSpace.worldToViewMap;\n }\n\n private computePixelSizeScaleFactor(): number {\n // Check to see if a model display transform with non-uniform scaling is being used.\n const mat = this.context.viewport.view.modelDisplayTransformProvider?.getModelDisplayTransform(this.tree.modelId)?.transform.matrix;\n if (!mat)\n return 1;\n\n const scale = [0, 1, 2].map((x) => mat.getColumn(x).magnitude());\n if (Math.abs(scale[0] - scale[1]) <= Geometry.smallMetricDistance && Math.abs(scale[0] - scale[2]) <= Geometry.smallMetricDistance)\n return 1;\n\n // If the component with the largest scale is not the same as the component with the largest tile range use it to adjust the pixel size.\n const rangeDiag = this.tree.range.diagonal();\n let maxS = 0;\n let maxR = 0;\n if (scale[0] > scale[1])\n maxS = (scale[0] > scale[2] ? 0 : 2);\n else\n maxS = (scale[1] > scale[2] ? 1 : 2);\n\n if (rangeDiag.x > rangeDiag.y)\n maxR = (rangeDiag.x > rangeDiag.z ? 0 : 2);\n else\n maxR = (rangeDiag.y > rangeDiag.z ? 1 : 2);\n\n return maxS !== maxR ? scale[maxS] : 1;\n }\n\n /** Constructor */\n public constructor(params: TileDrawArgParams) {\n const { location, tree, context, now, viewFlagOverrides, clipVolume, parentsAndChildrenExclusive, symbologyOverrides } = params;\n this.location = location;\n this.tree = tree;\n this.context = context;\n this.now = now;\n this._appearanceProvider = params.appearanceProvider;\n this.hiddenLineSettings = params.hiddenLineSettings;\n this.animationTransformNodeId = params.animationTransformNodeId;\n this.groupNodeId = params.groupNodeId;\n this.boundingRange = params.boundingRange;\n this.maximumScreenSpaceError = params.maximumScreenSpaceError ?? 16; // 16 is Cesium's default.\n this.transformFromIModel = params.transformFromIModel;\n\n // Do not cull tiles based on clip volume if tiles outside clip are supposed to be drawn but in a different color.\n if (undefined !== clipVolume && !context.viewport.view.displayStyle.settings.clipStyle.outsideColor)\n this.clipVolume = clipVolume;\n\n this.graphics.setViewFlagOverrides(viewFlagOverrides);\n this.graphics.symbologyOverrides = symbologyOverrides;\n this.graphics.animationId = tree.modelId;\n\n this.viewingSpace = context.viewingSpace;\n this._frustumPlanes = FrustumPlanes.fromFrustum(this.viewingSpace.getFrustum());\n\n this.planarClassifier = context.getPlanarClassifierForModel(tree.modelId);\n this.drape = context.getTextureDrapeForModel(tree.modelId);\n\n // NB: If the tile tree has its own clip, do not also apply the view's clip.\n if (context.viewFlags.clipVolume && false !== viewFlagOverrides.clipVolume && undefined === clipVolume) {\n const outsideClipColor = context.viewport.displayStyle.settings.clipStyle.outsideColor;\n this.viewClip = undefined === outsideClipColor ? context.viewport.view.getViewClip() : undefined;\n }\n\n this.parentsAndChildrenExclusive = parentsAndChildrenExclusive;\n if (context.viewport.isCameraOn)\n this._nearFrontCenter = context.viewport.getFrustum(CoordSystem.World).frontCenter;\n\n this.pixelSizeScaleFactor = this.computePixelSizeScaleFactor();\n }\n\n /** A multiplier applied to a [[Tile]]'s `maximumSize` property to adjust level of detail.\n * @see [[Viewport.tileSizeModifier]].\n * @public\n */\n public get tileSizeModifier(): number { return this.context.viewport.tileSizeModifier; }\n\n /** @internal */\n public getTileCenter(tile: Tile): Point3d { return this.location.multiplyPoint3d(tile.center); }\n\n /** @internal */\n public getTileRadius(tile: Tile): number {\n let range: Range3d = tile.range.clone(scratchRange);\n if (tile.tree.is2d) {\n // 2d tiles have a fixed Z range of [-1, 1]. Sometimes (e.g., hypermodeling) we draw them within a 3d view. Prevent Z from artificially expanding the radius.\n range.low.z = range.high.z = 0;\n }\n\n range = this.location.multiplyRange(range, range);\n return 0.5 * range.low.distance(range.high);\n }\n\n /** @internal */\n public get clip(): ClipVector | undefined {\n return undefined !== this.clipVolume ? this.clipVolume.clipVector : undefined;\n }\n\n /** Add a provider to supplement or override the symbology overrides for the view.\n * @note If a provider already exists, the new provider will be chained such that it sees the base overrides\n * after they have potentially been modified by the existing provider.\n * @public\n */\n public addAppearanceProvider(provider: FeatureAppearanceProvider): void {\n this._appearanceProvider = this._appearanceProvider ? FeatureAppearanceProvider.chain(this._appearanceProvider, provider) : provider;\n }\n\n /** Optionally customizes aspects of the view's [[FeatureSymbology.Overrides]]. */\n public get appearanceProvider(): FeatureAppearanceProvider | undefined {\n return this._appearanceProvider;\n }\n\n /** @internal */\n public produceGraphics(): RenderGraphic | undefined {\n return this._produceGraphicBranch(this.graphics);\n }\n /** @internal */\n public get secondaryClassifiers(): Map<number, RenderPlanarClassifier>| undefined {\n return undefined;\n }\n\n /** @internal */\n private _produceGraphicBranch(graphics: GraphicBranch): RenderGraphic | undefined {\n if (graphics.isEmpty)\n return undefined;\n\n const opts: GraphicBranchOptions = {\n iModel: this.tree.iModel,\n transformFromIModel: this.transformFromIModel,\n clipVolume: this.clipVolume,\n classifierOrDrape: this.planarClassifier ?? this.drape,\n appearanceProvider: this.appearanceProvider,\n hline: this.hiddenLineSettings,\n secondaryClassifiers: this.secondaryClassifiers,\n };\n\n let graphic = this.context.createGraphicBranch(graphics, this.location, opts);\n if (undefined !== this.animationTransformNodeId)\n graphic = this.context.renderSystem.createAnimationTransformNode(graphic, this.animationTransformNodeId);\n\n if (undefined !== this.groupNodeId) {\n const branch = new GraphicBranch();\n branch.add(graphic);\n branch.groupNodeId = this.groupNodeId;\n graphic = this.context.createGraphicBranch(branch, Transform.identity);\n }\n\n return graphic;\n }\n\n /** Output graphics for all accumulated tiles. */\n public drawGraphics(): void {\n const graphics = this.produceGraphics();\n if (undefined !== graphics)\n this.context.outputGraphic(graphics);\n }\n\n /** Output graphics of the specified type for all accumulated tiles. */\n public drawGraphicsWithType(graphicType: TileGraphicType, graphics: GraphicBranch): void {\n const branch = this._produceGraphicBranch(graphics);\n if (undefined !== branch)\n this.context.withGraphicType(graphicType, () => this.context.outputGraphic(branch));\n }\n\n /** Indicate that graphics for the specified tile are desired but not yet available. Subsequently a request will be enqueued to load the tile's graphics. */\n public insertMissing(tile: Tile): void {\n this.context.insertMissingTile(tile);\n }\n\n /** Indicate that some requested child tiles are not yet loaded. */\n public markChildrenLoading(): void {\n this.context.markChildrenLoading();\n }\n\n /** Indicate that the specified tile is being used for some purpose by the [[SceneContext]]'s [[Viewport]]. Typically \"used\" means \"displayed\", but the exact meaning is up to the [[TileTree]] - for example, \"used\" might also mean that the tile's children are being used. A tile that is \"in use\" by any [[Viewport]] will not be discarded. */\n public markUsed(tile: Tile): void {\n tile.usageMarker.mark(this.context.viewport, this.now);\n }\n\n /** Indicate that the specified tile should be displayed and that its graphics are ready to be displayed. The number of \"ready\" tiles is used in conjunction with the number of \"missing\" tiles to convey to the user how complete the current view is.\n * @see [[insertMissing]]\n */\n public markReady(tile: Tile): void {\n this.readyTiles.add(tile);\n }\n\n /** Invoked by [[TileTree.selectTiles]]. This exists chiefly for [[SolarShadowMap]].\n * @internal\n */\n public processSelectedTiles(_tiles: Tile[]): void { }\n\n /* @internal */\n public get maxRealityTreeSelectionCount(): number | undefined { return undefined; }\n\n /* @internal */\n public get shouldCollectClassifierGraphics(): boolean { return true; }\n}\n"]}
@@ -36,7 +36,7 @@ class ImageryMapTile extends internal_1.RealityTile {
36
36
  setContent(content) {
37
37
  this._texture = content.imageryTexture; // No dispose - textures may be shared by terrain tiles so let garbage collector dispose them.
38
38
  if (undefined === content.imageryTexture)
39
- this.parent.setLeaf(); // Avoid traversing bing branches after no graphics is found.
39
+ (0, core_bentley_1.expectDefined)(this.parent).setLeaf(); // Avoid traversing bing branches after no graphics is found.
40
40
  this.setIsReady();
41
41
  }
42
42
  selectCartoDrapeTiles(drapeTiles, highResolutionReplacementTiles, rectangleToDrape, drapePixelSize, args) {
@@ -1 +1 @@
1
- {"version":3,"file":"ImageryTileTree.js","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.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 Tiles\r\n */\r\n\r\nimport { assert, compareBooleans, compareNumbers, compareSimpleArrays, compareSimpleTypes, compareStrings, compareStringsOrUndefined, dispose, Logger,} from \"@itwin/core-bentley\";\r\nimport { Angle, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, MapLayerProviderArrayProperty, MapLayerSettings, RenderTexture, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { RenderMemory } from \"../../render/RenderMemory\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\nimport { ScreenViewport } from \"../../Viewport\";\r\nimport {\r\n MapCartoRectangle, MapFeatureInfoOptions, MapLayerFeatureInfo, MapLayerImageryProvider, MapLayerTileTreeReference, MapTile, MapTileTreeScaleRangeVisibility, MapTilingScheme, QuadId, RealityTile, RealityTileLoader, RealityTileTree,\r\n RealityTileTreeParams, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTree, TileTreeLoadStatus, TileTreeOwner,\r\n TileTreeSupplier,\r\n} from \"../internal\";\r\nimport { HitDetail } from \"../../HitDetail\";\r\n\r\nconst loggerCategory = \"ImageryMapTileTree\";\r\n\r\n/** @internal */\r\nexport interface ImageryTileContent extends TileContent {\r\n imageryTexture?: RenderTexture;\r\n}\r\n\r\n/** @internal */\r\nexport class ImageryMapTile extends RealityTile {\r\n private _texture?: RenderTexture;\r\n private _mapTileUsageCount = 0;\r\n\r\n private readonly _outOfLodRange: boolean;\r\n\r\n constructor(params: TileParams, public imageryTree: ImageryMapTileTree, public quadId: QuadId, public rectangle: MapCartoRectangle) {\r\n super(params, imageryTree);\r\n\r\n this._outOfLodRange = this.depth < imageryTree.minDepth;\r\n }\r\n\r\n public get texture() { return this._texture; }\r\n public get tilingScheme() { return this.imageryTree.tilingScheme; }\r\n public override get isDisplayable() { return (this.depth > 1) && super.isDisplayable; }\r\n public override get isOutOfLodRange(): boolean { return this._outOfLodRange; }\r\n\r\n public override setContent(content: ImageryTileContent): void {\r\n this._texture = content.imageryTexture; // No dispose - textures may be shared by terrain tiles so let garbage collector dispose them.\r\n if (undefined === content.imageryTexture)\r\n (this.parent! as ImageryMapTile).setLeaf(); // Avoid traversing bing branches after no graphics is found.\r\n\r\n this.setIsReady();\r\n }\r\n\r\n public selectCartoDrapeTiles(drapeTiles: ImageryMapTile[], highResolutionReplacementTiles: ImageryMapTile[], rectangleToDrape: MapCartoRectangle, drapePixelSize: number, args: TileDrawArgs): TileTreeLoadStatus {\r\n // Base draping overlap on width rather than height so that tiling schemes with multiple root nodes overlay correctly.\r\n const isSmallerThanDrape = (this.rectangle.xLength() / this.maximumSize) < drapePixelSize;\r\n if ((this.isLeaf) // Include leaves so tiles get stretched past max LOD levels. (Only for base imagery layer)\r\n || isSmallerThanDrape\r\n || this._anyChildNotFound) {\r\n if (this.isOutOfLodRange) {\r\n drapeTiles.push(this);\r\n this.setIsReady();\r\n } else if (this.isLeaf && !isSmallerThanDrape && !this._anyChildNotFound) {\r\n // These tiles are selected because we are beyond the max LOD of the tile tree,\r\n // might be used to display \"stretched\" tiles instead of having blank.\r\n highResolutionReplacementTiles.push(this);\r\n } else {\r\n drapeTiles.push(this);\r\n }\r\n return TileTreeLoadStatus.Loaded;\r\n }\r\n\r\n let status = this.loadChildren();\r\n if (TileTreeLoadStatus.Loading === status) {\r\n args.markChildrenLoading();\r\n } else if (TileTreeLoadStatus.Loaded === status) {\r\n if (undefined !== this.children) {\r\n for (const child of this.children) {\r\n const mapChild = child as ImageryMapTile;\r\n if (mapChild.rectangle.intersectsRange(rectangleToDrape))\r\n status = mapChild.selectCartoDrapeTiles(drapeTiles, highResolutionReplacementTiles, rectangleToDrape, drapePixelSize, args);\r\n if (TileTreeLoadStatus.Loaded !== status)\r\n break;\r\n }\r\n }\r\n }\r\n return status;\r\n }\r\n public markMapTileUsage() {\r\n this._mapTileUsageCount++;\r\n }\r\n public releaseMapTileUsage() {\r\n assert(!this._texture || this._mapTileUsageCount > 0);\r\n if (this._mapTileUsageCount)\r\n this._mapTileUsageCount--;\r\n }\r\n\r\n /** @internal */\r\n public override setLeaf(): void {\r\n // Don't potentially re-request the children later.\r\n this.disposeChildren();\r\n this._isLeaf = true;\r\n this._childrenLoadStatus = TileTreeLoadStatus.Loaded;\r\n }\r\n\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n\r\n const imageryTree = this.imageryTree;\r\n const resolveChildren = (childIds: QuadId[]) => {\r\n const children = new Array<Tile>();\r\n const childrenAreLeaves = (this.depth + 1) === imageryTree.maxDepth;\r\n // If children depth is lower than min LOD, mark them as disabled.\r\n // This is important: if those tiles are requested and the server refuse to serve them,\r\n // they will be marked as not found and their descendant will never be displayed.\r\n\r\n childIds.forEach((quadId) => {\r\n const rectangle = imageryTree.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);\r\n const range = Range3d.createXYZXYZ(rectangle.low.x, rectangle.low.x, 0, rectangle.high.x, rectangle.high.y, 0);\r\n const maximumSize = imageryTree.imageryLoader.maximumScreenSize;\r\n const tile = new ImageryMapTile({ parent: this, isLeaf: childrenAreLeaves, contentId: quadId.contentId, range, maximumSize }, imageryTree, quadId, rectangle);\r\n children.push(tile);\r\n });\r\n\r\n resolve(children);\r\n };\r\n\r\n imageryTree.imageryLoader.generateChildIds(this, resolveChildren);\r\n }\r\n\r\n protected override _collectStatistics(stats: RenderMemory.Statistics): void {\r\n super._collectStatistics(stats);\r\n if (this._texture)\r\n stats.addTexture(this._texture.bytesUsed);\r\n }\r\n\r\n public override freeMemory(): void {\r\n // ###TODO MapTiles and ImageryMapTiles share resources and don't currently interact well with TileAdmin.freeMemory(). Opt out for now.\r\n }\r\n\r\n public override disposeContents() {\r\n if (0 === this._mapTileUsageCount) {\r\n super.disposeContents();\r\n this.disposeTexture();\r\n }\r\n }\r\n\r\n private disposeTexture(): void {\r\n this._texture = dispose(this._texture);\r\n }\r\n public override[Symbol.dispose]() {\r\n this._mapTileUsageCount = 0;\r\n super[Symbol.dispose]();\r\n }\r\n}\r\n\r\n/** Object that holds various state values for an ImageryTileTree\r\n * @internal */\r\nexport class ImageryTileTreeState {\r\n private _scaleRangeVis: MapTileTreeScaleRangeVisibility;\r\n\r\n constructor() {\r\n this._scaleRangeVis = MapTileTreeScaleRangeVisibility.Unknown;\r\n }\r\n\r\n /** Get the scale range visibility of the imagery tile tree.\r\n * @returns the scale range visibility of the imagery tile tree.\r\n */\r\n public getScaleRangeVisibility() { return this._scaleRangeVis; }\r\n\r\n /** Makes a deep copy of the current object.\r\n */\r\n public clone() {\r\n const clone = new ImageryTileTreeState();\r\n clone._scaleRangeVis = this._scaleRangeVis;\r\n return clone;\r\n }\r\n\r\n /** Reset the scale range visibility of imagery tile tree (i.e. unknown)\r\n */\r\n public reset() {\r\n this._scaleRangeVis = MapTileTreeScaleRangeVisibility.Unknown;\r\n }\r\n\r\n /** Sets the scale range visibility of the current imagery tile tree.\r\n * The state will be derived based on the previous visibility values:\r\n * Initial state: 'Unknown'\r\n * The first call will set the state to either: 'Visible' or 'Hidden'.\r\n * If subsequent visibility values are not consistent with the first visibility state, the state become 'Partial',\r\n * meaning the imagery tree currently contains a mixed of tiles being in range and out of range.\r\n */\r\n public setScaleRangeVisibility(visible: boolean) {\r\n if (this._scaleRangeVis === MapTileTreeScaleRangeVisibility.Unknown) {\r\n this._scaleRangeVis = (visible ? MapTileTreeScaleRangeVisibility.Visible : MapTileTreeScaleRangeVisibility.Hidden);\r\n } else if ((visible && this._scaleRangeVis === MapTileTreeScaleRangeVisibility.Hidden) || (!visible && this._scaleRangeVis === MapTileTreeScaleRangeVisibility.Visible)) {\r\n this._scaleRangeVis = MapTileTreeScaleRangeVisibility.Partial;\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ImageryMapTileTree extends RealityTileTree {\r\n constructor(params: RealityTileTreeParams, private _imageryLoader: ImageryTileLoader) {\r\n super(params);\r\n const rootQuadId = new QuadId(_imageryLoader.imageryProvider.tilingScheme.rootLevel, 0, 0);\r\n this._rootTile = new ImageryMapTile(params.rootTile, this, rootQuadId, this.getTileRectangle(rootQuadId));\r\n }\r\n public get tilingScheme(): MapTilingScheme { return this._imageryLoader.imageryProvider.tilingScheme; }\r\n\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [addAttributions] instead. */\r\n public addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n this._imageryLoader.addLogoCards(cards, vp);\r\n }\r\n\r\n public async addAttributions(cards: HTMLTableElement, vp: ScreenViewport): Promise<void> {\r\n return this._imageryLoader.addAttributions(cards, vp);\r\n }\r\n\r\n public getTileRectangle(quadId: QuadId): MapCartoRectangle {\r\n return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);\r\n }\r\n public get imageryLoader(): ImageryTileLoader { return this._imageryLoader; }\r\n public override get is3d(): boolean {\r\n assert(false);\r\n return false;\r\n }\r\n public override get viewFlagOverrides(): ViewFlagOverrides {\r\n assert(false);\r\n return {};\r\n }\r\n public override get isContentUnbounded(): boolean {\r\n assert(false);\r\n return true;\r\n }\r\n protected override _selectTiles(_args: TileDrawArgs): Tile[] {\r\n assert(false);\r\n return [];\r\n }\r\n public override draw(_args: TileDrawArgs): void { assert(false); }\r\n\r\n private static _scratchDrapeRectangle = MapCartoRectangle.createZero();\r\n private static _drapeIntersectionScale = 1.0 - 1.0E-5;\r\n\r\n public selectCartoDrapeTiles(drapeTiles: ImageryMapTile[], highResolutionReplacementTiles: ImageryMapTile[], tileToDrape: MapTile, args: TileDrawArgs): TileTreeLoadStatus {\r\n const drapeRectangle = tileToDrape.rectangle.clone(ImageryMapTileTree._scratchDrapeRectangle);\r\n // Base draping overlap on width rather than height so that tiling schemes with multiple root nodes overlay correctly.\r\n const drapePixelSize = 1.05 * tileToDrape.rectangle.xLength() / tileToDrape.maximumSize;\r\n drapeRectangle.scaleAboutCenterInPlace(ImageryMapTileTree._drapeIntersectionScale); // Contract slightly to avoid draping adjacent or slivers.\r\n return (this.rootTile as ImageryMapTile).selectCartoDrapeTiles(drapeTiles, highResolutionReplacementTiles, drapeRectangle, drapePixelSize, args);\r\n }\r\n public cartoRectangleFromQuadId(quadId: QuadId): MapCartoRectangle { return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level); }\r\n}\r\n\r\nclass ImageryTileLoader extends RealityTileLoader {\r\n constructor(private _imageryProvider: MapLayerImageryProvider, private _iModel: IModelConnection) {\r\n super();\r\n }\r\n public override computeTilePriority(tile: Tile): number {\r\n return 25 * (this._imageryProvider.usesCachedTiles ? 2 : 1) - tile.depth; // Always cached first then descending by depth (high resolution/front first)\r\n } // Prioritized fast, cached tiles first.\r\n\r\n public get maxDepth(): number { return this._imageryProvider.maximumZoomLevel; }\r\n public get minDepth(): number { return this._imageryProvider.minimumZoomLevel; }\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Map; }\r\n\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [addAttributions] instead. */\r\n public addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n this._imageryProvider.addLogoCards(cards, vp);\r\n }\r\n\r\n public async addAttributions(cards: HTMLTableElement, vp: ScreenViewport): Promise<void> {\r\n await this._imageryProvider.addAttributions(cards, vp);\r\n }\r\n\r\n public get maximumScreenSize(): number { return this._imageryProvider.maximumScreenSize; }\r\n public get imageryProvider(): MapLayerImageryProvider { return this._imageryProvider; }\r\n public async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> { await this._imageryProvider.getToolTip(strings, quadId, carto, tree); }\r\n\r\n public async getMapFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree, hit: HitDetail, options?: MapFeatureInfoOptions): Promise<void> {\r\n await this._imageryProvider.getFeatureInfo(featureInfos, quadId, carto, tree, hit, options);\r\n }\r\n\r\n public generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) { return this._imageryProvider.generateChildIds(tile, resolveChildren); }\r\n\r\n /** Load this tile's children, possibly asynchronously. Pass them to `resolve`, or an error to `reject`. */\r\n public async loadChildren(_tile: RealityTile): Promise<Tile[] | undefined> {\r\n assert(false);\r\n return undefined;\r\n }\r\n public async requestTileContent(tile: Tile, _isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n const quadId = QuadId.createFromContentId(tile.contentId);\r\n return this._imageryProvider.loadTile(quadId.row, quadId.column, quadId.level);\r\n }\r\n\r\n public getRequestChannel(_tile: Tile) {\r\n // ###TODO use hostname from url - but so many layers to go through to get that...\r\n return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-imagery\");\r\n }\r\n\r\n public override async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem): Promise<ImageryTileContent> {\r\n assert(data instanceof ImageSource);\r\n assert(tile instanceof ImageryMapTile);\r\n const content: ImageryTileContent = {};\r\n const texture = await this.loadTextureImage(data, system);\r\n if (undefined === texture)\r\n return content;\r\n\r\n content.imageryTexture = texture;\r\n return content;\r\n }\r\n\r\n private async loadTextureImage(source: ImageSource, system: RenderSystem): Promise<RenderTexture | undefined> {\r\n try {\r\n return await system.createTextureFromSource({\r\n type: RenderTexture.Type.FilteredTileSection,\r\n source,\r\n });\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\ninterface ImageryMapLayerTreeId {\r\n settings: ImageMapLayerSettings;\r\n}\r\n\r\n/** Supplies a TileTree that can load and draw tiles based on our imagery provider.\r\n * The TileTree is uniquely identified by its imagery type.\r\n */\r\nclass ImageryMapLayerTreeSupplier implements TileTreeSupplier {\r\n /** Return a numeric value indicating how two tree IDs are ordered relative to one another.\r\n * This allows the ID to serve as a lookup key to find the corresponding TileTree.\r\n */\r\n public compareTileTreeIds(lhs: ImageryMapLayerTreeId, rhs: ImageryMapLayerTreeId): number {\r\n let cmp = compareStrings(lhs.settings.formatId, rhs.settings.formatId);\r\n if (0 === cmp) {\r\n cmp = compareStrings(lhs.settings.url, rhs.settings.url);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.settings.userName, rhs.settings.userName);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.settings.password, rhs.settings.password);\r\n if (0 === cmp) {\r\n cmp = compareBooleans(lhs.settings.transparentBackground, rhs.settings.transparentBackground);\r\n if (0 === cmp) {\r\n if (lhs.settings.properties || rhs.settings.properties) {\r\n if (lhs.settings.properties && rhs.settings.properties) {\r\n const lhsKeysLength = Object.keys(lhs.settings.properties).length;\r\n const rhsKeysLength = Object.keys(rhs.settings.properties).length;\r\n\r\n if (lhsKeysLength !== rhsKeysLength) {\r\n cmp = lhsKeysLength - rhsKeysLength;\r\n } else {\r\n for (const key of Object.keys(lhs.settings.properties)) {\r\n const lhsProp = lhs.settings.properties[key];\r\n const rhsProp = rhs.settings.properties[key];\r\n cmp = compareStrings(typeof lhsProp, typeof rhsProp);\r\n if (0 !== cmp)\r\n break;\r\n if (Array.isArray(lhsProp) || Array.isArray(rhsProp)) {\r\n cmp = compareSimpleArrays(lhsProp as MapLayerProviderArrayProperty, rhsProp as MapLayerProviderArrayProperty);\r\n if (0 !== cmp)\r\n break;\r\n } else {\r\n cmp = compareSimpleTypes(lhsProp, rhsProp);\r\n if (0 !== cmp)\r\n break;\r\n }\r\n }\r\n }\r\n } else if (!lhs.settings.properties) {\r\n cmp = 1;\r\n } else {\r\n cmp = -1;\r\n }\r\n }\r\n if (0 === cmp) {\r\n cmp = compareNumbers(lhs.settings.subLayers.length, rhs.settings.subLayers.length);\r\n if (0 === cmp) {\r\n for (let i = 0; i < lhs.settings.subLayers.length && 0 === cmp; i++) {\r\n cmp = compareStrings(lhs.settings.subLayers[i].name, rhs.settings.subLayers[i].name);\r\n if (0 === cmp) {\r\n cmp = compareBooleans(lhs.settings.subLayers[i].visible, rhs.settings.subLayers[i].visible);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n /** The first time a tree of a particular imagery type is requested, this function creates it. */\r\n public async createTileTree(id: ImageryMapLayerTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const imageryProvider = IModelApp.mapLayerFormatRegistry.createImageryProvider(id.settings);\r\n if (undefined === imageryProvider) {\r\n Logger.logError(loggerCategory, `Failed to create imagery provider for format '${id.settings.formatId}'`);\r\n return undefined;\r\n }\r\n\r\n try {\r\n await imageryProvider.initialize();\r\n } catch (e: any) {\r\n Logger.logError(loggerCategory, `Could not initialize imagery provider for map layer '${id.settings.name}' : ${e}`);\r\n throw e;\r\n }\r\n\r\n const modelId = iModel.transientIds.getNext();\r\n const tilingScheme = imageryProvider.tilingScheme;\r\n const rootLevel = (1 === tilingScheme.numberOfLevelZeroTilesX && 1 === tilingScheme.numberOfLevelZeroTilesY) ? 0 : -1;\r\n const rootTileId = new QuadId(rootLevel, 0, 0).contentId;\r\n const rootRange = Range3d.createXYZXYZ(-Angle.piRadians, -Angle.piOver2Radians, 0, Angle.piRadians, Angle.piOver2Radians, 0);\r\n const rootTileProps = { contentId: rootTileId, range: rootRange, maximumSize: 0 };\r\n const loader = new ImageryTileLoader(imageryProvider, iModel);\r\n const treeProps = { rootTile: rootTileProps, id: modelId, modelId, iModel, location: Transform.createIdentity(), priority: TileLoadPriority.Map, loader, gcsConverterAvailable: false };\r\n return new ImageryMapTileTree(treeProps, loader);\r\n }\r\n}\r\n\r\nconst imageryTreeSupplier = new ImageryMapLayerTreeSupplier();\r\n\r\n/** A reference to one of our tile trees. The specific TileTree drawn may change when the desired imagery type or target iModel changes.\r\n * @beta\r\n */\r\nexport class ImageryMapLayerTreeReference extends MapLayerTileTreeReference {\r\n /**\r\n * Constructor for an ImageryMapLayerTreeReference.\r\n * @param layerSettings Map layer settings that are applied to the ImageryMapLayerTreeReference.\r\n * @param layerIndex The index of the associated map layer. Usually passed in through [[createMapLayerTreeReference]] in [[MapTileTree]]'s constructor.\r\n * @param iModel The iModel containing the ImageryMapLayerTreeReference.\r\n */\r\n public constructor(args: { layerSettings: MapLayerSettings, layerIndex: number, iModel: IModelConnection }) {\r\n super(args.layerSettings, args.layerIndex, args.iModel);\r\n }\r\n\r\n public override get castsShadows() { return false; }\r\n\r\n /** Return the owner of the TileTree to draw. */\r\n public get treeOwner(): TileTreeOwner {\r\n return this.iModel.tiles.getTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);\r\n }\r\n\r\n /* @internal */\r\n public override resetTreeOwner() {\r\n return this.iModel.tiles.resetTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);\r\n }\r\n\r\n public override get imageryProvider(): MapLayerImageryProvider | undefined {\r\n const tree = this.treeOwner.load();\r\n if (!tree || !(tree instanceof ImageryMapTileTree))\r\n return undefined;\r\n\r\n return tree.imageryLoader.imageryProvider;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ImageryTileTree.js","sourceRoot":"","sources":["../../../../src/tile/map/ImageryTileTree.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 Tiles\r\n */\r\n\r\nimport { assert, compareBooleans, compareNumbers, compareSimpleArrays, compareSimpleTypes, compareStrings, compareStringsOrUndefined, dispose, expectDefined, Logger,} from \"@itwin/core-bentley\";\r\nimport { Angle, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { Cartographic, ImageMapLayerSettings, ImageSource, MapLayerProviderArrayProperty, MapLayerSettings, RenderTexture, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { RenderMemory } from \"../../render/RenderMemory\";\r\nimport { RenderSystem } from \"../../render/RenderSystem\";\r\nimport { ScreenViewport } from \"../../Viewport\";\r\nimport {\r\n MapCartoRectangle, MapFeatureInfoOptions, MapLayerFeatureInfo, MapLayerImageryProvider, MapLayerTileTreeReference, MapTile, MapTileTreeScaleRangeVisibility, MapTilingScheme, QuadId, RealityTile, RealityTileLoader, RealityTileTree,\r\n RealityTileTreeParams, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileTree, TileTreeLoadStatus, TileTreeOwner,\r\n TileTreeSupplier,\r\n} from \"../internal\";\r\nimport { HitDetail } from \"../../HitDetail\";\r\n\r\nconst loggerCategory = \"ImageryMapTileTree\";\r\n\r\n/** @internal */\r\nexport interface ImageryTileContent extends TileContent {\r\n imageryTexture?: RenderTexture;\r\n}\r\n\r\n/** @internal */\r\nexport class ImageryMapTile extends RealityTile {\r\n private _texture?: RenderTexture;\r\n private _mapTileUsageCount = 0;\r\n\r\n private readonly _outOfLodRange: boolean;\r\n\r\n constructor(params: TileParams, public imageryTree: ImageryMapTileTree, public quadId: QuadId, public rectangle: MapCartoRectangle) {\r\n super(params, imageryTree);\r\n\r\n this._outOfLodRange = this.depth < imageryTree.minDepth;\r\n }\r\n\r\n public get texture() { return this._texture; }\r\n public get tilingScheme() { return this.imageryTree.tilingScheme; }\r\n public override get isDisplayable() { return (this.depth > 1) && super.isDisplayable; }\r\n public override get isOutOfLodRange(): boolean { return this._outOfLodRange; }\r\n\r\n public override setContent(content: ImageryTileContent): void {\r\n this._texture = content.imageryTexture; // No dispose - textures may be shared by terrain tiles so let garbage collector dispose them.\r\n if (undefined === content.imageryTexture)\r\n (expectDefined(this.parent) as ImageryMapTile).setLeaf(); // Avoid traversing bing branches after no graphics is found.\r\n\r\n this.setIsReady();\r\n }\r\n\r\n public selectCartoDrapeTiles(drapeTiles: ImageryMapTile[], highResolutionReplacementTiles: ImageryMapTile[], rectangleToDrape: MapCartoRectangle, drapePixelSize: number, args: TileDrawArgs): TileTreeLoadStatus {\r\n // Base draping overlap on width rather than height so that tiling schemes with multiple root nodes overlay correctly.\r\n const isSmallerThanDrape = (this.rectangle.xLength() / this.maximumSize) < drapePixelSize;\r\n if ((this.isLeaf) // Include leaves so tiles get stretched past max LOD levels. (Only for base imagery layer)\r\n || isSmallerThanDrape\r\n || this._anyChildNotFound) {\r\n if (this.isOutOfLodRange) {\r\n drapeTiles.push(this);\r\n this.setIsReady();\r\n } else if (this.isLeaf && !isSmallerThanDrape && !this._anyChildNotFound) {\r\n // These tiles are selected because we are beyond the max LOD of the tile tree,\r\n // might be used to display \"stretched\" tiles instead of having blank.\r\n highResolutionReplacementTiles.push(this);\r\n } else {\r\n drapeTiles.push(this);\r\n }\r\n return TileTreeLoadStatus.Loaded;\r\n }\r\n\r\n let status = this.loadChildren();\r\n if (TileTreeLoadStatus.Loading === status) {\r\n args.markChildrenLoading();\r\n } else if (TileTreeLoadStatus.Loaded === status) {\r\n if (undefined !== this.children) {\r\n for (const child of this.children) {\r\n const mapChild = child as ImageryMapTile;\r\n if (mapChild.rectangle.intersectsRange(rectangleToDrape))\r\n status = mapChild.selectCartoDrapeTiles(drapeTiles, highResolutionReplacementTiles, rectangleToDrape, drapePixelSize, args);\r\n if (TileTreeLoadStatus.Loaded !== status)\r\n break;\r\n }\r\n }\r\n }\r\n return status;\r\n }\r\n public markMapTileUsage() {\r\n this._mapTileUsageCount++;\r\n }\r\n public releaseMapTileUsage() {\r\n assert(!this._texture || this._mapTileUsageCount > 0);\r\n if (this._mapTileUsageCount)\r\n this._mapTileUsageCount--;\r\n }\r\n\r\n /** @internal */\r\n public override setLeaf(): void {\r\n // Don't potentially re-request the children later.\r\n this.disposeChildren();\r\n this._isLeaf = true;\r\n this._childrenLoadStatus = TileTreeLoadStatus.Loaded;\r\n }\r\n\r\n protected override _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\r\n\r\n const imageryTree = this.imageryTree;\r\n const resolveChildren = (childIds: QuadId[]) => {\r\n const children = new Array<Tile>();\r\n const childrenAreLeaves = (this.depth + 1) === imageryTree.maxDepth;\r\n // If children depth is lower than min LOD, mark them as disabled.\r\n // This is important: if those tiles are requested and the server refuse to serve them,\r\n // they will be marked as not found and their descendant will never be displayed.\r\n\r\n childIds.forEach((quadId) => {\r\n const rectangle = imageryTree.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);\r\n const range = Range3d.createXYZXYZ(rectangle.low.x, rectangle.low.x, 0, rectangle.high.x, rectangle.high.y, 0);\r\n const maximumSize = imageryTree.imageryLoader.maximumScreenSize;\r\n const tile = new ImageryMapTile({ parent: this, isLeaf: childrenAreLeaves, contentId: quadId.contentId, range, maximumSize }, imageryTree, quadId, rectangle);\r\n children.push(tile);\r\n });\r\n\r\n resolve(children);\r\n };\r\n\r\n imageryTree.imageryLoader.generateChildIds(this, resolveChildren);\r\n }\r\n\r\n protected override _collectStatistics(stats: RenderMemory.Statistics): void {\r\n super._collectStatistics(stats);\r\n if (this._texture)\r\n stats.addTexture(this._texture.bytesUsed);\r\n }\r\n\r\n public override freeMemory(): void {\r\n // ###TODO MapTiles and ImageryMapTiles share resources and don't currently interact well with TileAdmin.freeMemory(). Opt out for now.\r\n }\r\n\r\n public override disposeContents() {\r\n if (0 === this._mapTileUsageCount) {\r\n super.disposeContents();\r\n this.disposeTexture();\r\n }\r\n }\r\n\r\n private disposeTexture(): void {\r\n this._texture = dispose(this._texture);\r\n }\r\n public override[Symbol.dispose]() {\r\n this._mapTileUsageCount = 0;\r\n super[Symbol.dispose]();\r\n }\r\n}\r\n\r\n/** Object that holds various state values for an ImageryTileTree\r\n * @internal */\r\nexport class ImageryTileTreeState {\r\n private _scaleRangeVis: MapTileTreeScaleRangeVisibility;\r\n\r\n constructor() {\r\n this._scaleRangeVis = MapTileTreeScaleRangeVisibility.Unknown;\r\n }\r\n\r\n /** Get the scale range visibility of the imagery tile tree.\r\n * @returns the scale range visibility of the imagery tile tree.\r\n */\r\n public getScaleRangeVisibility() { return this._scaleRangeVis; }\r\n\r\n /** Makes a deep copy of the current object.\r\n */\r\n public clone() {\r\n const clone = new ImageryTileTreeState();\r\n clone._scaleRangeVis = this._scaleRangeVis;\r\n return clone;\r\n }\r\n\r\n /** Reset the scale range visibility of imagery tile tree (i.e. unknown)\r\n */\r\n public reset() {\r\n this._scaleRangeVis = MapTileTreeScaleRangeVisibility.Unknown;\r\n }\r\n\r\n /** Sets the scale range visibility of the current imagery tile tree.\r\n * The state will be derived based on the previous visibility values:\r\n * Initial state: 'Unknown'\r\n * The first call will set the state to either: 'Visible' or 'Hidden'.\r\n * If subsequent visibility values are not consistent with the first visibility state, the state become 'Partial',\r\n * meaning the imagery tree currently contains a mixed of tiles being in range and out of range.\r\n */\r\n public setScaleRangeVisibility(visible: boolean) {\r\n if (this._scaleRangeVis === MapTileTreeScaleRangeVisibility.Unknown) {\r\n this._scaleRangeVis = (visible ? MapTileTreeScaleRangeVisibility.Visible : MapTileTreeScaleRangeVisibility.Hidden);\r\n } else if ((visible && this._scaleRangeVis === MapTileTreeScaleRangeVisibility.Hidden) || (!visible && this._scaleRangeVis === MapTileTreeScaleRangeVisibility.Visible)) {\r\n this._scaleRangeVis = MapTileTreeScaleRangeVisibility.Partial;\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ImageryMapTileTree extends RealityTileTree {\r\n constructor(params: RealityTileTreeParams, private _imageryLoader: ImageryTileLoader) {\r\n super(params);\r\n const rootQuadId = new QuadId(_imageryLoader.imageryProvider.tilingScheme.rootLevel, 0, 0);\r\n this._rootTile = new ImageryMapTile(params.rootTile, this, rootQuadId, this.getTileRectangle(rootQuadId));\r\n }\r\n public get tilingScheme(): MapTilingScheme { return this._imageryLoader.imageryProvider.tilingScheme; }\r\n\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [addAttributions] instead. */\r\n public addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n this._imageryLoader.addLogoCards(cards, vp);\r\n }\r\n\r\n public async addAttributions(cards: HTMLTableElement, vp: ScreenViewport): Promise<void> {\r\n return this._imageryLoader.addAttributions(cards, vp);\r\n }\r\n\r\n public getTileRectangle(quadId: QuadId): MapCartoRectangle {\r\n return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level);\r\n }\r\n public get imageryLoader(): ImageryTileLoader { return this._imageryLoader; }\r\n public override get is3d(): boolean {\r\n assert(false);\r\n return false;\r\n }\r\n public override get viewFlagOverrides(): ViewFlagOverrides {\r\n assert(false);\r\n return {};\r\n }\r\n public override get isContentUnbounded(): boolean {\r\n assert(false);\r\n return true;\r\n }\r\n protected override _selectTiles(_args: TileDrawArgs): Tile[] {\r\n assert(false);\r\n return [];\r\n }\r\n public override draw(_args: TileDrawArgs): void { assert(false); }\r\n\r\n private static _scratchDrapeRectangle = MapCartoRectangle.createZero();\r\n private static _drapeIntersectionScale = 1.0 - 1.0E-5;\r\n\r\n public selectCartoDrapeTiles(drapeTiles: ImageryMapTile[], highResolutionReplacementTiles: ImageryMapTile[], tileToDrape: MapTile, args: TileDrawArgs): TileTreeLoadStatus {\r\n const drapeRectangle = tileToDrape.rectangle.clone(ImageryMapTileTree._scratchDrapeRectangle);\r\n // Base draping overlap on width rather than height so that tiling schemes with multiple root nodes overlay correctly.\r\n const drapePixelSize = 1.05 * tileToDrape.rectangle.xLength() / tileToDrape.maximumSize;\r\n drapeRectangle.scaleAboutCenterInPlace(ImageryMapTileTree._drapeIntersectionScale); // Contract slightly to avoid draping adjacent or slivers.\r\n return (this.rootTile as ImageryMapTile).selectCartoDrapeTiles(drapeTiles, highResolutionReplacementTiles, drapeRectangle, drapePixelSize, args);\r\n }\r\n public cartoRectangleFromQuadId(quadId: QuadId): MapCartoRectangle { return this.tilingScheme.tileXYToRectangle(quadId.column, quadId.row, quadId.level); }\r\n}\r\n\r\nclass ImageryTileLoader extends RealityTileLoader {\r\n constructor(private _imageryProvider: MapLayerImageryProvider, private _iModel: IModelConnection) {\r\n super();\r\n }\r\n public override computeTilePriority(tile: Tile): number {\r\n return 25 * (this._imageryProvider.usesCachedTiles ? 2 : 1) - tile.depth; // Always cached first then descending by depth (high resolution/front first)\r\n } // Prioritized fast, cached tiles first.\r\n\r\n public get maxDepth(): number { return this._imageryProvider.maximumZoomLevel; }\r\n public get minDepth(): number { return this._imageryProvider.minimumZoomLevel; }\r\n public get priority(): TileLoadPriority { return TileLoadPriority.Map; }\r\n\r\n /** @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [addAttributions] instead. */\r\n public addLogoCards(cards: HTMLTableElement, vp: ScreenViewport): void {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n this._imageryProvider.addLogoCards(cards, vp);\r\n }\r\n\r\n public async addAttributions(cards: HTMLTableElement, vp: ScreenViewport): Promise<void> {\r\n await this._imageryProvider.addAttributions(cards, vp);\r\n }\r\n\r\n public get maximumScreenSize(): number { return this._imageryProvider.maximumScreenSize; }\r\n public get imageryProvider(): MapLayerImageryProvider { return this._imageryProvider; }\r\n public async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> { await this._imageryProvider.getToolTip(strings, quadId, carto, tree); }\r\n\r\n public async getMapFeatureInfo(featureInfos: MapLayerFeatureInfo[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree, hit: HitDetail, options?: MapFeatureInfoOptions): Promise<void> {\r\n await this._imageryProvider.getFeatureInfo(featureInfos, quadId, carto, tree, hit, options);\r\n }\r\n\r\n public generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) { return this._imageryProvider.generateChildIds(tile, resolveChildren); }\r\n\r\n /** Load this tile's children, possibly asynchronously. Pass them to `resolve`, or an error to `reject`. */\r\n public async loadChildren(_tile: RealityTile): Promise<Tile[] | undefined> {\r\n assert(false);\r\n return undefined;\r\n }\r\n public async requestTileContent(tile: Tile, _isCanceled: () => boolean): Promise<TileRequest.Response> {\r\n const quadId = QuadId.createFromContentId(tile.contentId);\r\n return this._imageryProvider.loadTile(quadId.row, quadId.column, quadId.level);\r\n }\r\n\r\n public getRequestChannel(_tile: Tile) {\r\n // ###TODO use hostname from url - but so many layers to go through to get that...\r\n return IModelApp.tileAdmin.channels.getForHttp(\"itwinjs-imagery\");\r\n }\r\n\r\n public override async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem): Promise<ImageryTileContent> {\r\n assert(data instanceof ImageSource);\r\n assert(tile instanceof ImageryMapTile);\r\n const content: ImageryTileContent = {};\r\n const texture = await this.loadTextureImage(data, system);\r\n if (undefined === texture)\r\n return content;\r\n\r\n content.imageryTexture = texture;\r\n return content;\r\n }\r\n\r\n private async loadTextureImage(source: ImageSource, system: RenderSystem): Promise<RenderTexture | undefined> {\r\n try {\r\n return await system.createTextureFromSource({\r\n type: RenderTexture.Type.FilteredTileSection,\r\n source,\r\n });\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\ninterface ImageryMapLayerTreeId {\r\n settings: ImageMapLayerSettings;\r\n}\r\n\r\n/** Supplies a TileTree that can load and draw tiles based on our imagery provider.\r\n * The TileTree is uniquely identified by its imagery type.\r\n */\r\nclass ImageryMapLayerTreeSupplier implements TileTreeSupplier {\r\n /** Return a numeric value indicating how two tree IDs are ordered relative to one another.\r\n * This allows the ID to serve as a lookup key to find the corresponding TileTree.\r\n */\r\n public compareTileTreeIds(lhs: ImageryMapLayerTreeId, rhs: ImageryMapLayerTreeId): number {\r\n let cmp = compareStrings(lhs.settings.formatId, rhs.settings.formatId);\r\n if (0 === cmp) {\r\n cmp = compareStrings(lhs.settings.url, rhs.settings.url);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.settings.userName, rhs.settings.userName);\r\n if (0 === cmp) {\r\n cmp = compareStringsOrUndefined(lhs.settings.password, rhs.settings.password);\r\n if (0 === cmp) {\r\n cmp = compareBooleans(lhs.settings.transparentBackground, rhs.settings.transparentBackground);\r\n if (0 === cmp) {\r\n if (lhs.settings.properties || rhs.settings.properties) {\r\n if (lhs.settings.properties && rhs.settings.properties) {\r\n const lhsKeysLength = Object.keys(lhs.settings.properties).length;\r\n const rhsKeysLength = Object.keys(rhs.settings.properties).length;\r\n\r\n if (lhsKeysLength !== rhsKeysLength) {\r\n cmp = lhsKeysLength - rhsKeysLength;\r\n } else {\r\n for (const key of Object.keys(lhs.settings.properties)) {\r\n const lhsProp = lhs.settings.properties[key];\r\n const rhsProp = rhs.settings.properties[key];\r\n cmp = compareStrings(typeof lhsProp, typeof rhsProp);\r\n if (0 !== cmp)\r\n break;\r\n if (Array.isArray(lhsProp) || Array.isArray(rhsProp)) {\r\n cmp = compareSimpleArrays(lhsProp as MapLayerProviderArrayProperty, rhsProp as MapLayerProviderArrayProperty);\r\n if (0 !== cmp)\r\n break;\r\n } else {\r\n cmp = compareSimpleTypes(lhsProp, rhsProp);\r\n if (0 !== cmp)\r\n break;\r\n }\r\n }\r\n }\r\n } else if (!lhs.settings.properties) {\r\n cmp = 1;\r\n } else {\r\n cmp = -1;\r\n }\r\n }\r\n if (0 === cmp) {\r\n cmp = compareNumbers(lhs.settings.subLayers.length, rhs.settings.subLayers.length);\r\n if (0 === cmp) {\r\n for (let i = 0; i < lhs.settings.subLayers.length && 0 === cmp; i++) {\r\n cmp = compareStrings(lhs.settings.subLayers[i].name, rhs.settings.subLayers[i].name);\r\n if (0 === cmp) {\r\n cmp = compareBooleans(lhs.settings.subLayers[i].visible, rhs.settings.subLayers[i].visible);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n /** The first time a tree of a particular imagery type is requested, this function creates it. */\r\n public async createTileTree(id: ImageryMapLayerTreeId, iModel: IModelConnection): Promise<TileTree | undefined> {\r\n const imageryProvider = IModelApp.mapLayerFormatRegistry.createImageryProvider(id.settings);\r\n if (undefined === imageryProvider) {\r\n Logger.logError(loggerCategory, `Failed to create imagery provider for format '${id.settings.formatId}'`);\r\n return undefined;\r\n }\r\n\r\n try {\r\n await imageryProvider.initialize();\r\n } catch (e: any) {\r\n Logger.logError(loggerCategory, `Could not initialize imagery provider for map layer '${id.settings.name}' : ${e}`);\r\n throw e;\r\n }\r\n\r\n const modelId = iModel.transientIds.getNext();\r\n const tilingScheme = imageryProvider.tilingScheme;\r\n const rootLevel = (1 === tilingScheme.numberOfLevelZeroTilesX && 1 === tilingScheme.numberOfLevelZeroTilesY) ? 0 : -1;\r\n const rootTileId = new QuadId(rootLevel, 0, 0).contentId;\r\n const rootRange = Range3d.createXYZXYZ(-Angle.piRadians, -Angle.piOver2Radians, 0, Angle.piRadians, Angle.piOver2Radians, 0);\r\n const rootTileProps = { contentId: rootTileId, range: rootRange, maximumSize: 0 };\r\n const loader = new ImageryTileLoader(imageryProvider, iModel);\r\n const treeProps = { rootTile: rootTileProps, id: modelId, modelId, iModel, location: Transform.createIdentity(), priority: TileLoadPriority.Map, loader, gcsConverterAvailable: false };\r\n return new ImageryMapTileTree(treeProps, loader);\r\n }\r\n}\r\n\r\nconst imageryTreeSupplier = new ImageryMapLayerTreeSupplier();\r\n\r\n/** A reference to one of our tile trees. The specific TileTree drawn may change when the desired imagery type or target iModel changes.\r\n * @beta\r\n */\r\nexport class ImageryMapLayerTreeReference extends MapLayerTileTreeReference {\r\n /**\r\n * Constructor for an ImageryMapLayerTreeReference.\r\n * @param layerSettings Map layer settings that are applied to the ImageryMapLayerTreeReference.\r\n * @param layerIndex The index of the associated map layer. Usually passed in through [[createMapLayerTreeReference]] in [[MapTileTree]]'s constructor.\r\n * @param iModel The iModel containing the ImageryMapLayerTreeReference.\r\n */\r\n public constructor(args: { layerSettings: MapLayerSettings, layerIndex: number, iModel: IModelConnection }) {\r\n super(args.layerSettings, args.layerIndex, args.iModel);\r\n }\r\n\r\n public override get castsShadows() { return false; }\r\n\r\n /** Return the owner of the TileTree to draw. */\r\n public get treeOwner(): TileTreeOwner {\r\n return this.iModel.tiles.getTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);\r\n }\r\n\r\n /* @internal */\r\n public override resetTreeOwner() {\r\n return this.iModel.tiles.resetTileTreeOwner({ settings: this._layerSettings }, imageryTreeSupplier);\r\n }\r\n\r\n public override get imageryProvider(): MapLayerImageryProvider | undefined {\r\n const tree = this.treeOwner.load();\r\n if (!tree || !(tree instanceof ImageryMapTileTree))\r\n return undefined;\r\n\r\n return tree.imageryLoader.imageryProvider;\r\n }\r\n}\r\n"]}
@@ -114,7 +114,7 @@ class MapLayerFormatRegistry {
114
114
  const entry = this._formats.get(layerSettings.formatId);
115
115
  const format = entry?.type;
116
116
  if (this._configOptions[layerSettings.formatId] !== undefined) {
117
- const keyValuePair = this._configOptions[layerSettings.formatId];
117
+ const keyValuePair = (0, core_bentley_1.expectDefined)(this._configOptions[layerSettings.formatId]);
118
118
  const key = { key: keyValuePair.key, value: keyValuePair.value };
119
119
  layerSettings = layerSettings.clone({ accessKey: key });
120
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerFormatRegistry.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.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 MapLayers\n */\n\nimport { assert, Logger } from \"@itwin/core-bentley\";\nimport { ImageMapLayerSettings, MapLayerKey, MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { ImageryMapLayerTreeReference, internalMapLayerImageryFormats, MapLayerAccessClient, MapLayerAuthenticationInfo, MapLayerImageryProvider, MapLayerSource, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\nconst loggerCategory = \"ArcGISFeatureProvider\";\n\n/**\n * Class representing a map-layer format.\n * Each format has it's unique 'formatId' string, used to uniquely identify a format in the [[MapLayerFormatRegistry]].\n * When creating an [[ImageMapLayerSettings]] object, a format needs to be specified this 'formatId'.\n * The MapLayerFormat object can later be used to validate a source, or create a provider.\n *\n * Subclasses should override formatId, [[MapLayerFormat.createImageryProvider]], and [[MapLayerFormat.createMapLayerTree]].\n * @public\n */\nexport class MapLayerFormat {\n public static formatId: string;\n\n /** Register the current format in the [[MapLayerFormatRegistry]]. */\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\n\n /**\n * Allow a source of a specific format to be validated before being attached as a map-layer.\n * @param _url The URL of the source.\n * @param _userName The username to access the source if needed.\n * @param _password The password to access the source if needed.\n * @param _ignoreCache Flag to skip cache lookup (i.e. force a new server request).\n * @returns Validation Status. If successful, a list of available sub-layers may also be returned.\n */\n public static async validateSource(_url: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _accesKey?: MapLayerKey): Promise<MapLayerSourceValidation> { return { status: MapLayerSourceStatus.Valid }; }\n\n /** Allow a source object to be validated before being attached as a map-layer.\n * @beta\n */\n public static async validate(args: ValidateSourceArgs): Promise<MapLayerSourceValidation> {\n return this.validateSource(args.source.url, args.source.userName, args.source.password, args.ignoreCache);\n }\n\n /**\n * Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile tree.\n * @param _settings The map layer settings to be applied to the imagery provider.\n * @returns Returns the new imagery provider.\n * @beta\n */\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\n\n /**\n * Creates a MapLayerTileTreeReference for this map layer format.\n * @param _layerSettings Map layer settings that are applied to the MapLayerTileTreeReference.\n * @param _layerIndex The index of the associated map layer.\n * @param _iModel The iModel containing the MapLayerTileTreeReference.\n * @returns Returns the new tile tree reference.\n * @beta\n */\n public static createMapLayerTree(_layerSettings: MapLayerSettings, _layerIndex: number, _iModel: IModelConnection): MapLayerTileTreeReference | undefined {\n assert(false);\n return undefined;\n }\n\n}\n\n/** Options for validating sources\n * @beta\n */\nexport interface ValidateSourceArgs {\n source: MapLayerSource;\n /** Disable cache lookup during validate process */\n ignoreCache?: boolean;\n}\n\n/**\n * The type of a map layer format.\n * @public\n */\nexport type MapLayerFormatType = typeof MapLayerFormat;\n\n/** @public */\nexport interface MapLayerSourceValidation {\n status: MapLayerSourceStatus;\n subLayers?: MapSubLayerProps[];\n\n /** @beta */\n authInfo?: MapLayerAuthenticationInfo;\n}\n\n/**\n * Options supplied at startup via [[IModelAppOptions.mapLayerOptions]] to specify access keys for various map layer formats.\n * 'BingMaps' must have it's key value set to 'key'\n * 'MapboxImagery' must have it's key value set to 'access_token'\n *\n * @public\n */\nexport interface MapLayerOptions {\n /** Access key for Azure Maps in the format `{ key: \"subscription-key\", value: \"your-azure-maps-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n AzureMaps?: MapLayerKey;\n /** Access key for Mapbox in the format `{ key: \"access_token\", value: \"your-mapbox-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n MapboxImagery?: MapLayerKey;\n /** Access key for Bing Maps in the format `{ key: \"key\", value: \"your-bing-maps-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n BingMaps?: MapLayerKey;\n /** Access keys for additional map layer formats. */\n [format: string]: MapLayerKey | undefined;\n}\n\n/** @internal */\nexport interface MapLayerFormatEntry {\n type: MapLayerFormatType;\n accessClient?: MapLayerAccessClient;\n}\n\n/**\n * A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].\n * @public\n */\nexport class MapLayerFormatRegistry {\n private _configOptions: MapLayerOptions;\n constructor(opts?: MapLayerOptions) {\n this._configOptions = opts ?? {};\n internalMapLayerImageryFormats.forEach((format) => this.register(format));\n }\n private _formats = new Map<string, MapLayerFormatEntry>();\n\n public isRegistered(formatId: string) { return this._formats.get(formatId) !== undefined; }\n\n public register(formatClass: MapLayerFormatType) {\n if (formatClass.formatId.length === 0)\n return; // must be an abstract class, ignore it\n\n this._formats.set(formatClass.formatId, { type: formatClass });\n }\n\n /** @beta */\n public setAccessClient(formatId: string, accessClient: MapLayerAccessClient): boolean {\n const entry = this._formats.get(formatId);\n if (entry !== undefined) {\n entry.accessClient = accessClient;\n return true;\n }\n return false;\n }\n\n /** @beta */\n public getAccessClient(formatId: string): MapLayerAccessClient | undefined {\n if (formatId.length === 0)\n return undefined;\n\n return this._formats.get(formatId)?.accessClient;\n }\n\n public get configOptions(): MapLayerOptions {\n return this._configOptions;\n }\n\n /** @internal */\n public createImageryMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): ImageryMapLayerTreeReference | undefined {\n const entry = this._formats.get(layerSettings.formatId);\n const format = entry?.type;\n if (format === undefined) {\n Logger.logError(loggerCategory, `Could not find format '${layerSettings.formatId}' in registry`);\n return undefined;\n }\n return format.createMapLayerTree(layerSettings, layerIndex, iModel) as ImageryMapLayerTreeReference;\n }\n\n /**\n * Returns a [[MapLayerImageryProvider]] based on the provided [[ImageMapLayerSettings]] object.\n * @internal\n */\n public createImageryProvider(layerSettings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\n const entry = this._formats.get(layerSettings.formatId);\n const format = entry?.type;\n if (this._configOptions[layerSettings.formatId] !== undefined) {\n const keyValuePair = this._configOptions[layerSettings.formatId]!;\n const key: MapLayerKey = { key: keyValuePair.key, value: keyValuePair.value };\n layerSettings = layerSettings.clone({ accessKey: key });\n }\n return (format === undefined) ? undefined : format.createImageryProvider(layerSettings);\n }\n\n /** @beta*/\n public async validateSource(opts: ValidateSourceArgs): Promise<MapLayerSourceValidation>;\n\n public async validateSource(formatId: string, url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation>;\n\n /** @internal*/\n public async validateSource(formatIdOrArgs: string|ValidateSourceArgs, url?: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\n let format: typeof MapLayerFormat | undefined;\n let args: ValidateSourceArgs | undefined;\n\n if (typeof formatIdOrArgs == \"string\" && url !== undefined) {\n const formatId = formatIdOrArgs;\n const entry = this._formats.get(formatId);\n format = entry?.type;\n if (format !== undefined) {\n const source = MapLayerSource.fromJSON({name: \"\", formatId, url});\n if (source !== undefined) {\n args = {source, ignoreCache};\n source.userName = userName;\n source.password = password;\n }\n\n }\n } else if (typeof formatIdOrArgs !== \"string\") {\n const entry = this._formats.get(formatIdOrArgs.source.formatId);\n format = entry?.type;\n args = formatIdOrArgs;\n }\n\n if (!args || !format)\n return { status: MapLayerSourceStatus.InvalidFormat };\n\n return format.validate(args);\n }\n}\n\n"]}
1
+ {"version":3,"file":"MapLayerFormatRegistry.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.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 MapLayers\n */\n\nimport { assert, expectDefined, Logger } from \"@itwin/core-bentley\";\nimport { ImageMapLayerSettings, MapLayerKey, MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { ImageryMapLayerTreeReference, internalMapLayerImageryFormats, MapLayerAccessClient, MapLayerAuthenticationInfo, MapLayerImageryProvider, MapLayerSource, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\nconst loggerCategory = \"ArcGISFeatureProvider\";\n\n/**\n * Class representing a map-layer format.\n * Each format has it's unique 'formatId' string, used to uniquely identify a format in the [[MapLayerFormatRegistry]].\n * When creating an [[ImageMapLayerSettings]] object, a format needs to be specified this 'formatId'.\n * The MapLayerFormat object can later be used to validate a source, or create a provider.\n *\n * Subclasses should override formatId, [[MapLayerFormat.createImageryProvider]], and [[MapLayerFormat.createMapLayerTree]].\n * @public\n */\nexport class MapLayerFormat {\n public static formatId: string;\n\n /** Register the current format in the [[MapLayerFormatRegistry]]. */\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\n\n /**\n * Allow a source of a specific format to be validated before being attached as a map-layer.\n * @param _url The URL of the source.\n * @param _userName The username to access the source if needed.\n * @param _password The password to access the source if needed.\n * @param _ignoreCache Flag to skip cache lookup (i.e. force a new server request).\n * @returns Validation Status. If successful, a list of available sub-layers may also be returned.\n */\n public static async validateSource(_url: string, _userName?: string, _password?: string, _ignoreCache?: boolean, _accesKey?: MapLayerKey): Promise<MapLayerSourceValidation> { return { status: MapLayerSourceStatus.Valid }; }\n\n /** Allow a source object to be validated before being attached as a map-layer.\n * @beta\n */\n public static async validate(args: ValidateSourceArgs): Promise<MapLayerSourceValidation> {\n return this.validateSource(args.source.url, args.source.userName, args.source.password, args.ignoreCache);\n }\n\n /**\n * Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile tree.\n * @param _settings The map layer settings to be applied to the imagery provider.\n * @returns Returns the new imagery provider.\n * @beta\n */\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\n\n /**\n * Creates a MapLayerTileTreeReference for this map layer format.\n * @param _layerSettings Map layer settings that are applied to the MapLayerTileTreeReference.\n * @param _layerIndex The index of the associated map layer.\n * @param _iModel The iModel containing the MapLayerTileTreeReference.\n * @returns Returns the new tile tree reference.\n * @beta\n */\n public static createMapLayerTree(_layerSettings: MapLayerSettings, _layerIndex: number, _iModel: IModelConnection): MapLayerTileTreeReference | undefined {\n assert(false);\n return undefined;\n }\n\n}\n\n/** Options for validating sources\n * @beta\n */\nexport interface ValidateSourceArgs {\n source: MapLayerSource;\n /** Disable cache lookup during validate process */\n ignoreCache?: boolean;\n}\n\n/**\n * The type of a map layer format.\n * @public\n */\nexport type MapLayerFormatType = typeof MapLayerFormat;\n\n/** @public */\nexport interface MapLayerSourceValidation {\n status: MapLayerSourceStatus;\n subLayers?: MapSubLayerProps[];\n\n /** @beta */\n authInfo?: MapLayerAuthenticationInfo;\n}\n\n/**\n * Options supplied at startup via [[IModelAppOptions.mapLayerOptions]] to specify access keys for various map layer formats.\n * 'BingMaps' must have it's key value set to 'key'\n * 'MapboxImagery' must have it's key value set to 'access_token'\n *\n * @public\n */\nexport interface MapLayerOptions {\n /** Access key for Azure Maps in the format `{ key: \"subscription-key\", value: \"your-azure-maps-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n AzureMaps?: MapLayerKey;\n /** Access key for Mapbox in the format `{ key: \"access_token\", value: \"your-mapbox-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n MapboxImagery?: MapLayerKey;\n /** Access key for Bing Maps in the format `{ key: \"key\", value: \"your-bing-maps-key\" }`. */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n BingMaps?: MapLayerKey;\n /** Access keys for additional map layer formats. */\n [format: string]: MapLayerKey | undefined;\n}\n\n/** @internal */\nexport interface MapLayerFormatEntry {\n type: MapLayerFormatType;\n accessClient?: MapLayerAccessClient;\n}\n\n/**\n * A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].\n * @public\n */\nexport class MapLayerFormatRegistry {\n private _configOptions: MapLayerOptions;\n constructor(opts?: MapLayerOptions) {\n this._configOptions = opts ?? {};\n internalMapLayerImageryFormats.forEach((format) => this.register(format));\n }\n private _formats = new Map<string, MapLayerFormatEntry>();\n\n public isRegistered(formatId: string) { return this._formats.get(formatId) !== undefined; }\n\n public register(formatClass: MapLayerFormatType) {\n if (formatClass.formatId.length === 0)\n return; // must be an abstract class, ignore it\n\n this._formats.set(formatClass.formatId, { type: formatClass });\n }\n\n /** @beta */\n public setAccessClient(formatId: string, accessClient: MapLayerAccessClient): boolean {\n const entry = this._formats.get(formatId);\n if (entry !== undefined) {\n entry.accessClient = accessClient;\n return true;\n }\n return false;\n }\n\n /** @beta */\n public getAccessClient(formatId: string): MapLayerAccessClient | undefined {\n if (formatId.length === 0)\n return undefined;\n\n return this._formats.get(formatId)?.accessClient;\n }\n\n public get configOptions(): MapLayerOptions {\n return this._configOptions;\n }\n\n /** @internal */\n public createImageryMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): ImageryMapLayerTreeReference | undefined {\n const entry = this._formats.get(layerSettings.formatId);\n const format = entry?.type;\n if (format === undefined) {\n Logger.logError(loggerCategory, `Could not find format '${layerSettings.formatId}' in registry`);\n return undefined;\n }\n return format.createMapLayerTree(layerSettings, layerIndex, iModel) as ImageryMapLayerTreeReference;\n }\n\n /**\n * Returns a [[MapLayerImageryProvider]] based on the provided [[ImageMapLayerSettings]] object.\n * @internal\n */\n public createImageryProvider(layerSettings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\n const entry = this._formats.get(layerSettings.formatId);\n const format = entry?.type;\n if (this._configOptions[layerSettings.formatId] !== undefined) {\n const keyValuePair = expectDefined(this._configOptions[layerSettings.formatId]);\n const key: MapLayerKey = { key: keyValuePair.key, value: keyValuePair.value };\n layerSettings = layerSettings.clone({ accessKey: key });\n }\n return (format === undefined) ? undefined : format.createImageryProvider(layerSettings);\n }\n\n /** @beta*/\n public async validateSource(opts: ValidateSourceArgs): Promise<MapLayerSourceValidation>;\n\n public async validateSource(formatId: string, url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation>;\n\n /** @internal*/\n public async validateSource(formatIdOrArgs: string|ValidateSourceArgs, url?: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\n let format: typeof MapLayerFormat | undefined;\n let args: ValidateSourceArgs | undefined;\n\n if (typeof formatIdOrArgs == \"string\" && url !== undefined) {\n const formatId = formatIdOrArgs;\n const entry = this._formats.get(formatId);\n format = entry?.type;\n if (format !== undefined) {\n const source = MapLayerSource.fromJSON({name: \"\", formatId, url});\n if (source !== undefined) {\n args = {source, ignoreCache};\n source.userName = userName;\n source.password = password;\n }\n\n }\n } else if (typeof formatIdOrArgs !== \"string\") {\n const entry = this._formats.get(formatIdOrArgs.source.formatId);\n format = entry?.type;\n args = formatIdOrArgs;\n }\n\n if (!args || !format)\n return { status: MapLayerSourceStatus.InvalidFormat };\n\n return format.validate(args);\n }\n}\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerSources.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAC2D,4BAA4B,EAAE,qBAAqB,EAAE,gBAAgB,EACtI,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAsC,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE3F;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,4BAA4B;IAC5B,KAAK,IAAA;IACL,iEAAiE;IACjE,kBAAkB,IAAA;IAClB,6EAA6E;IAC7E,aAAa,IAAA;IACb,uDAAuD;IACvD,eAAe,IAAA;IACf,oEAAoE;IACpE,UAAU,IAAA;IACV,iEAAiE;IACjE,WAAW,IAAA;IACX,mDAAmD;IACnD,uBAAuB,IAAA;IACvB;OACG;IACH,kBAAkB,IAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;MAEE;IACF,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACzC;AAED;;GAEG;AACH,qBAAa,cAAc;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,UAAS;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAEzB;;MAEE;IACK,gBAAgB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAEpD;;MAEE;IACK,kBAAkB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAEtD,OAAO;WASO,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,cAAc,GAAG,SAAS;IAOhE,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAIrF,eAAe;WACD,sBAAsB,CAAC,KAAK,EAAE,4BAA4B;IAajE,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,GAAG;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC;IAIpE,eAAe,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,GAAG,SAAS;IAiBzF,OAAO,CAAC,cAAc;IAItB;;KAEC;IACM,kBAAkB;;;CAU1B;AAED;;GAEG;AACH,qBAAa,eAAe;IAEN,OAAO,CAAC,QAAQ;IADpC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAkB;IAC3C,OAAO;WAEO,WAAW;IAElB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,cAAc,GAAG,SAAS;IAQrF,IAAW,MAAM,IAAI,cAAc,EAAE,CAQpC;IACD,IAAW,SAAS,qBAA4B;IAChD,IAAW,KAAK,IAAI,cAAc,EAAE,CAQnC;IAED,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAQpC,OAAO,CAAC,MAAM,CAAC,oBAAoB;WAQf,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,qBAAqB,UAAQ,EAAE,gBAAgB,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;WAsDpH,0BAA0B,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;WAavG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAYvD"}
1
+ {"version":3,"file":"MapLayerSources.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.ts"],"names":[],"mappings":"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"}
@@ -154,15 +154,23 @@ class MapLayerSources {
154
154
  }
155
155
  static getBingMapLayerSource() {
156
156
  const mapLayerSources = [];
157
+ // We know these hard-coded sources are valid, so ! is okay here.
158
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
157
159
  mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: "BingProvider", providerData: { mapType: core_common_1.BackgroundMapType.Street } }));
160
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
158
161
  mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: "BingProvider", providerData: { mapType: core_common_1.BackgroundMapType.Aerial } }));
162
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
159
163
  mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: "BingProvider", providerData: { mapType: core_common_1.BackgroundMapType.Hybrid } }));
160
164
  return mapLayerSources;
161
165
  }
162
166
  static getMapBoxLayerSource() {
163
167
  const mapLayerSources = [];
168
+ // We know these hard-coded sources are valid, so ! is okay here.
169
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
164
170
  mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: "MapBoxProvider", providerData: { mapType: core_common_1.BackgroundMapType.Street } }));
171
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
165
172
  mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: "MapBoxProvider", providerData: { mapType: core_common_1.BackgroundMapType.Aerial } }));
173
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
166
174
  mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: "MapBoxProvider", providerData: { mapType: core_common_1.BackgroundMapType.Hybrid } }));
167
175
  return mapLayerSources;
168
176
  }
@@ -173,7 +181,7 @@ class MapLayerSources {
173
181
  iModel = IModelApp_1.IModelApp.viewManager.selectedView ? IModelApp_1.IModelApp.viewManager.selectedView.iModel : undefined;
174
182
  let sourceRange = internal_1.MapCartoRectangle.createMaximum();
175
183
  if (iModel) {
176
- const projectCenter = iModel.projectExtents.localXYZToWorld(.5, .5, .5);
184
+ const projectCenter = (0, core_bentley_1.expectDefined)(iModel.projectExtents.localXYZToWorld(.5, .5, .5));
177
185
  const cartoCenter = iModel.spatialToCartographicFromEcef(projectCenter);
178
186
  const globeRange = internal_1.MapCartoRectangle.createMaximum();
179
187
  const nearDelta = core_geometry_1.Point2d.create(globeRange.xLength() / 100, globeRange.yLength() / 100);
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerSources.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAqD;AACrD,oDAE4B;AAC5B,wDAA+C;AAC/C,+CAA4C;AAE5C,mDAAyE;AACzE,0CAA2F;AAE3F;;GAEG;AACH,IAAY,oBAkBX;AAlBD,WAAY,oBAAoB;IAC9B,4BAA4B;IAC5B,iEAAK,CAAA;IACL,iEAAiE;IACjE,2FAAkB,CAAA;IAClB,6EAA6E;IAC7E,iFAAa,CAAA;IACb,uDAAuD;IACvD,qFAAe,CAAA;IACf,oEAAoE;IACpE,2EAAU,CAAA;IACV,iEAAiE;IACjE,6EAAW,CAAA;IACX,mDAAmD;IACnD,qGAAuB,CAAA;IACvB;OACG;IACH,2FAAkB,CAAA;AACpB,CAAC,EAlBW,oBAAoB,oCAApB,oBAAoB,QAkB/B;AAwBD;;GAEG;AACH,MAAa,cAAc;IAClB,QAAQ,CAAS;IACjB,IAAI,CAAS;IACb,GAAG,CAAS;IACZ,OAAO,GAAG,KAAK,CAAC;IAChB,qBAAqB,CAAW;IAChC,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAEzB;;MAEE;IACK,gBAAgB,CAA6B;IAEpD;;MAEE;IACK,kBAAkB,CAA6B;IAEtD,YAAoB,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAE,GAAW,EAAE,OAAO,GAAG,KAAK,EAAE,qBAAqB,GAAG,IAAI,EAAE,gBAA2C;QACzJ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,IAAyB;QAC9C,IAAI,IAAI,KAAK,SAAS;YACpB,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5H,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAqB;QAC/C,OAAO,qBAAS,CAAC,sBAAsB,CAAC,cAAc,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;IACtF,CAAC;IAED,eAAe;IACR,MAAM,CAAC,sBAAsB,CAAC,KAAmC;QACtE,MAAM,QAAQ,GAAG,mCAAqB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,kCAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACtD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IACM,MAAM;QACX,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5J,CAAC;IAEM,eAAe,CAAC,SAA8B;QACnD,+GAA+G;QAC/G,MAAM,aAAa,GAAG,mCAAqB,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC/D,aAAa,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,aAAa,CAAC,gBAAgB,GAAG,EAAC,GAAG,IAAI,CAAC,gBAAgB,EAAC,CAAC;QAC9D,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,aAAa,CAAC,kBAAkB,GAAG,EAAC,GAAG,IAAI,CAAC,kBAAkB,EAAC,CAAC;QAClE,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,cAAc;QACpB,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,CAAC;IAED;;KAEC;IACM,kBAAkB;QACvB,IAAI,WAAW,GAA4B,EAAE,CAAC;QAE9C,IAAI,IAAI,CAAC,gBAAgB;YACvB,WAAW,GAAG,EAAC,GAAG,IAAI,CAAC,gBAAgB,EAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,kBAAkB;YACzB,WAAW,GAAG,EAAC,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAC,CAAC;QAC7D,OAAO,WAAW,CAAC;IACrB,CAAC;CAEF;AA3FD,wCA2FC;AAED;;GAEG;AACH,MAAa,eAAe;IAEE;IADpB,MAAM,CAAC,SAAS,CAAmB;IAC3C,YAA4B,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;IAAI,CAAC;IAEpD,MAAM,CAAC,WAAW,KAAK,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;IAE1D,UAAU,CAAC,IAAY,EAAE,UAAmB,KAAK;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ;YAChC,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClF,OAAO,MAAM,CAAC;QAElB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAW,MAAM;QACf,MAAM,MAAM,GAAG,IAAI,KAAK,EAAkB,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,OAAO;gBACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,IAAW,KAAK;QACd,MAAM,MAAM,GAAG,IAAI,KAAK,EAAkB,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,IAAI,MAAM,CAAC,OAAO;gBAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,qBAAqB;QAClC,MAAM,eAAe,GAAqB,EAAE,CAAC;QAC7C,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACpJ,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACpJ,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACpJ,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,oBAAoB;QACjC,MAAM,eAAe,GAAqB,EAAE,CAAC;QAC7C,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACtJ,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACtJ,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACtJ,OAAO,eAAe,CAAC;IACzB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAyB,EAAE,qBAAqB,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK;QAC3G,IAAI,CAAC,qBAAqB,IAAI,eAAe,CAAC,SAAS;YACrD,OAAO,eAAe,CAAC,SAAS,CAAC;QAEnC,IAAI,CAAC,MAAM;YACT,MAAM,GAAG,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtG,IAAI,WAAW,GAAG,4BAAiB,CAAC,aAAa,EAAE,CAAC;QACpD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAC;YACzE,MAAM,WAAW,GAAG,MAAM,CAAC,6BAA6B,CAAC,aAAa,CAAC,CAAC;YACxE,MAAM,UAAU,GAAG,4BAAiB,CAAC,aAAa,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,uBAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC;YACzF,WAAW,GAAG,4BAAiB,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAChM,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,KAAK,EAAkB,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QACjC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAsB,EAAE,EAAE;YAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9C,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC7C,SAAS,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,qBAAqB,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,MAAM,IAAA,iBAAO,EAAC,GAAG,qBAAS,CAAC,UAAU,6BAA6B,EAAE,MAAM,CAAC,CAAC;YAEhG,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACnD,IAAI,MAAM;oBACR,SAAS,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;YAED,CAAC,MAAM,0BAAe,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QAChH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,CAAiB,EAAE,EAAE,CAAC,IAAA,6BAAc,EAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAEnH,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;QACrD,eAAe,CAAC,SAAS,GAAG,eAAe,CAAC;QAE5C,OAAO,eAAe,CAAC;IACzB,CAAC;IACM,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,cAA+B;QAC5E,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;YAClD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YACxF,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,CAAiB,EAAE,EAAE,CAAC,IAAA,6BAAc,EAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC9I,OAAO,eAAe,CAAC,SAAS,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,IAAY;QAC1C,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mCAAmC;QACnC,MAAM,kBAAkB,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrE,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YACxF,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,kBAAkB,KAAK,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5E,CAAC;CACF;AAjID,0CAiIC","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 MapLayers\n */\n\nimport { compareStrings } from \"@itwin/core-bentley\";\nimport {\n BackgroundMapProvider, BackgroundMapType, BaseMapLayerSettings, DeprecatedBackgroundMapProps, ImageMapLayerSettings, MapSubLayerProps,\n} from \"@itwin/core-common\";\nimport { Point2d } from \"@itwin/core-geometry\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { request, RequestBasicCredentials } from \"../../request/Request\";\nimport { ArcGisUtilities, MapCartoRectangle, MapLayerSourceValidation } from \"../internal\";\n\n/** Values for return codes from [[MapLayerSource.validateSource]]\n * @public\n */\nexport enum MapLayerSourceStatus {\n /** Layer source is valid */\n Valid,\n /** Authorization has failed when accessing this layer source. */\n InvalidCredentials,\n /** Provided format id could not be resolved in [[MapLayerFormatRegistry]] */\n InvalidFormat,\n /** The tiling schema of the source is not supported */\n InvalidTileTree,\n /** Could not not connect to remote server using the provided URL.*/\n InvalidUrl,\n /** Authorization is required to access this map layer source. */\n RequireAuth,\n /** Map-layer coordinate system is not supported */\n InvalidCoordinateSystem,\n /** Format is not compatible with the URL provided.\n */\n IncompatibleFormat,\n}\n\n/** JSON representation of a map layer source.\n * @see [ImageryMapLayerFormatId]($common)\n * @public\n */\nexport interface MapLayerSourceProps {\n /** Identifies the map layers source. Defaults to 'WMS'. */\n formatId?: string;\n /** Name */\n name: string;\n /** URL of the source's endpoint. */\n url: string;\n /** True to indicate background is transparent. Defaults to 'true'. */\n transparentBackground?: boolean;\n /** Indicate if this source definition should be used as a base map. Defaults to false. */\n baseMap?: boolean;\n\n /** List of query parameters that will get appended to the source.\n * @beta\n */\n queryParams?: { [key: string]: string };\n}\n\n/** A source for map layers. These may be catalogued for convenient use by users or applications.\n * @public\n */\nexport class MapLayerSource {\n public formatId: string;\n public name: string;\n public url: string;\n public baseMap = false;\n public transparentBackground?: boolean;\n public userName?: string;\n public password?: string;\n\n /** List of query parameters that will get appended to the source URL that should be be persisted part of the JSON representation.\n * @beta\n */\n public savedQueryParams?: { [key: string]: string };\n\n /** List of query parameters that will get appended to the source URL that should *not* be be persisted part of the JSON representation.\n * @beta\n */\n public unsavedQueryParams?: { [key: string]: string };\n\n private constructor(formatId = \"WMS\", name: string, url: string, baseMap = false, transparentBackground = true, savedQueryParams?: { [key: string]: string}) {\n this.formatId = formatId;\n this.name = name;\n this.url = url;\n this.baseMap = baseMap;\n this.transparentBackground = transparentBackground;\n this.savedQueryParams = savedQueryParams;\n }\n\n public static fromJSON(json: MapLayerSourceProps): MapLayerSource | undefined {\n if (json === undefined)\n return undefined;\n\n return new MapLayerSource(json.formatId, json.name, json.url, json.baseMap, json.transparentBackground, json.queryParams);\n }\n\n public async validateSource(ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\n return IModelApp.mapLayerFormatRegistry.validateSource({source: this, ignoreCache});\n }\n\n /** @internal*/\n public static fromBackgroundMapProps(props: DeprecatedBackgroundMapProps) {\n const provider = BackgroundMapProvider.fromBackgroundMapProps(props);\n const layerSettings = BaseMapLayerSettings.fromProvider(provider);\n if (undefined !== layerSettings) {\n const source = MapLayerSource.fromJSON(layerSettings);\n if (source) {\n source.baseMap = true;\n return source;\n }\n }\n\n return undefined;\n }\n public toJSON(): Omit<MapLayerSourceProps, \"formatId\"> & {formatId: string} {\n return { url: this.url, name: this.name, formatId: this.formatId, transparentBackground: this.transparentBackground, queryParams: this.savedQueryParams };\n }\n\n public toLayerSettings(subLayers?: MapSubLayerProps[]): ImageMapLayerSettings | undefined {\n // When MapLayerSetting is created from a MapLayerSource, sub-layers and credentials need to be set separately.\n const layerSettings = ImageMapLayerSettings.fromJSON({ ...this, subLayers });\n if (this.userName !== undefined || this.password !== undefined) {\n layerSettings?.setCredentials(this.userName, this.password);\n }\n\n if (this.savedQueryParams) {\n layerSettings.savedQueryParams = {...this.savedQueryParams};\n }\n\n if (this.unsavedQueryParams) {\n layerSettings.unsavedQueryParams = {...this.unsavedQueryParams};\n }\n return layerSettings;\n }\n\n private getCredentials(): RequestBasicCredentials | undefined {\n return this.userName && this.password ? { user: this.userName, password: this.password } : undefined;\n }\n\n /** Collect all query parameters\n * @beta\n */\n public collectQueryParams() {\n let queryParams: {[key: string]: string} = {};\n\n if (this.savedQueryParams)\n queryParams = {...this.savedQueryParams};\n if (this.unsavedQueryParams)\n queryParams = {...queryParams, ...this.unsavedQueryParams};\n return queryParams;\n }\n\n}\n\n/** A collection of [[MapLayerSource]] objects.\n * @beta\n */\nexport class MapLayerSources {\n private static _instance?: MapLayerSources;\n private constructor(private _sources: MapLayerSource[]) { }\n\n public static getInstance() { return MapLayerSources._instance; }\n\n public findByName(name: string, baseMap: boolean = false): MapLayerSource | undefined {\n const nameTest = name.toLowerCase();\n for (const source of this._sources)\n if (source.baseMap === baseMap && source.name.toLowerCase().indexOf(nameTest) !== -1)\n return source;\n\n return undefined;\n }\n public get layers(): MapLayerSource[] {\n const layers = new Array<MapLayerSource>();\n this._sources.forEach((source) => {\n if (!source.baseMap)\n layers.push(source);\n });\n\n return layers;\n }\n public get allSource() { return this._sources; }\n public get bases(): MapLayerSource[] {\n const layers = new Array<MapLayerSource>();\n this._sources.forEach((source) => {\n if (source.baseMap)\n layers.push(source);\n });\n\n return layers;\n }\n\n private static getBingMapLayerSource(): MapLayerSource[] {\n const mapLayerSources: MapLayerSource[] = [];\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Street } })!);\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Aerial } })!);\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Hybrid } })!);\n return mapLayerSources;\n }\n\n private static getMapBoxLayerSource(): MapLayerSource[] {\n const mapLayerSources: MapLayerSource[] = [];\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Street } })!);\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Aerial } })!);\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Hybrid } })!);\n return mapLayerSources;\n }\n\n public static async create(iModel?: IModelConnection, queryForPublicSources = false, addMapBoxSources = false): Promise<MapLayerSources> {\n if (!queryForPublicSources && MapLayerSources._instance)\n return MapLayerSources._instance;\n\n if (!iModel)\n iModel = IModelApp.viewManager.selectedView ? IModelApp.viewManager.selectedView.iModel : undefined;\n\n let sourceRange = MapCartoRectangle.createMaximum();\n if (iModel) {\n const projectCenter = iModel.projectExtents.localXYZToWorld(.5, .5, .5)!;\n const cartoCenter = iModel.spatialToCartographicFromEcef(projectCenter);\n const globeRange = MapCartoRectangle.createMaximum();\n const nearDelta = Point2d.create(globeRange.xLength() / 100, globeRange.yLength() / 100);\n sourceRange = MapCartoRectangle.fromRadians(cartoCenter.longitude - nearDelta.x, cartoCenter.latitude - nearDelta.y, cartoCenter.longitude + nearDelta.x, cartoCenter.latitude + nearDelta.y);\n }\n\n const sources = new Array<MapLayerSource>();\n const urlSet = new Set<string>();\n const addSource = ((source: MapLayerSource) => {\n if (!urlSet.has(source.url)) {\n sources.push(source);\n urlSet.add(source.url);\n }\n });\n\n this.getBingMapLayerSource().forEach((source) => {\n addSource(source);\n });\n\n if (addMapBoxSources) {\n this.getMapBoxLayerSource().forEach((source) => {\n addSource(source);\n });\n }\n\n if (queryForPublicSources) {\n const sourcesJson = await request(`${IModelApp.publicPath}assets/MapLayerSources.json`, \"json\");\n\n for (const sourceJson of sourcesJson) {\n const source = MapLayerSource.fromJSON(sourceJson);\n if (source)\n addSource(source);\n }\n\n (await ArcGisUtilities.getSourcesFromQuery(sourceRange)).forEach((queriedSource) => addSource(queriedSource));\n }\n\n sources.sort((a: MapLayerSource, b: MapLayerSource) => compareStrings(a.name.toLowerCase(), b.name.toLowerCase()));\n\n const mapLayerSources = new MapLayerSources(sources);\n MapLayerSources._instance = mapLayerSources;\n\n return mapLayerSources;\n }\n public static async addSourceToMapLayerSources(mapLayerSource?: MapLayerSource): Promise<MapLayerSources | undefined> {\n if (!MapLayerSources._instance || !mapLayerSource) {\n return undefined;\n }\n MapLayerSources._instance._sources = MapLayerSources._instance._sources.filter((source) => {\n return !(source.name === mapLayerSource.name || source.url === mapLayerSource.url);\n });\n\n MapLayerSources._instance._sources.push(mapLayerSource);\n MapLayerSources._instance._sources.sort((a: MapLayerSource, b: MapLayerSource) => compareStrings(a.name.toLowerCase(), b.name.toLowerCase()));\n return MapLayerSources._instance;\n }\n\n public static removeLayerByName(name: string): boolean {\n if (!MapLayerSources._instance) {\n return false;\n }\n\n // For now we only rely on the name\n const lengthBeforeRemove = MapLayerSources._instance._sources.length;\n MapLayerSources._instance._sources = MapLayerSources._instance._sources.filter((source) => {\n return (source.name !== name);\n });\n return (lengthBeforeRemove !== MapLayerSources._instance._sources.length);\n }\n}\n"]}
1
+ {"version":3,"file":"MapLayerSources.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAoE;AACpE,oDAE4B;AAC5B,wDAA+C;AAC/C,+CAA4C;AAE5C,mDAAyE;AACzE,0CAA2F;AAE3F;;GAEG;AACH,IAAY,oBAkBX;AAlBD,WAAY,oBAAoB;IAC9B,4BAA4B;IAC5B,iEAAK,CAAA;IACL,iEAAiE;IACjE,2FAAkB,CAAA;IAClB,6EAA6E;IAC7E,iFAAa,CAAA;IACb,uDAAuD;IACvD,qFAAe,CAAA;IACf,oEAAoE;IACpE,2EAAU,CAAA;IACV,iEAAiE;IACjE,6EAAW,CAAA;IACX,mDAAmD;IACnD,qGAAuB,CAAA;IACvB;OACG;IACH,2FAAkB,CAAA;AACpB,CAAC,EAlBW,oBAAoB,oCAApB,oBAAoB,QAkB/B;AAwBD;;GAEG;AACH,MAAa,cAAc;IAClB,QAAQ,CAAS;IACjB,IAAI,CAAS;IACb,GAAG,CAAS;IACZ,OAAO,GAAG,KAAK,CAAC;IAChB,qBAAqB,CAAW;IAChC,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAEzB;;MAEE;IACK,gBAAgB,CAA6B;IAEpD;;MAEE;IACK,kBAAkB,CAA6B;IAEtD,YAAoB,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAE,GAAW,EAAE,OAAO,GAAG,KAAK,EAAE,qBAAqB,GAAG,IAAI,EAAE,gBAA2C;QACzJ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,IAAyB;QAC9C,IAAI,IAAI,KAAK,SAAS;YACpB,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5H,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAqB;QAC/C,OAAO,qBAAS,CAAC,sBAAsB,CAAC,cAAc,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;IACtF,CAAC;IAED,eAAe;IACR,MAAM,CAAC,sBAAsB,CAAC,KAAmC;QACtE,MAAM,QAAQ,GAAG,mCAAqB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,kCAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACtD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IACM,MAAM;QACX,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5J,CAAC;IAEM,eAAe,CAAC,SAA8B;QACnD,+GAA+G;QAC/G,MAAM,aAAa,GAAG,mCAAqB,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC/D,aAAa,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,aAAa,CAAC,gBAAgB,GAAG,EAAC,GAAG,IAAI,CAAC,gBAAgB,EAAC,CAAC;QAC9D,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,aAAa,CAAC,kBAAkB,GAAG,EAAC,GAAG,IAAI,CAAC,kBAAkB,EAAC,CAAC;QAClE,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,cAAc;QACpB,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,CAAC;IAED;;KAEC;IACM,kBAAkB;QACvB,IAAI,WAAW,GAA4B,EAAE,CAAC;QAE9C,IAAI,IAAI,CAAC,gBAAgB;YACvB,WAAW,GAAG,EAAC,GAAG,IAAI,CAAC,gBAAgB,EAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,kBAAkB;YACzB,WAAW,GAAG,EAAC,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAC,CAAC;QAC7D,OAAO,WAAW,CAAC;IACrB,CAAC;CAEF;AA3FD,wCA2FC;AAED;;GAEG;AACH,MAAa,eAAe;IAEE;IADpB,MAAM,CAAC,SAAS,CAAmB;IAC3C,YAA4B,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;IAAI,CAAC;IAEpD,MAAM,CAAC,WAAW,KAAK,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;IAE1D,UAAU,CAAC,IAAY,EAAE,UAAmB,KAAK;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ;YAChC,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClF,OAAO,MAAM,CAAC;QAElB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAW,MAAM;QACf,MAAM,MAAM,GAAG,IAAI,KAAK,EAAkB,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,OAAO;gBACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,IAAW,KAAK;QACd,MAAM,MAAM,GAAG,IAAI,KAAK,EAAkB,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,IAAI,MAAM,CAAC,OAAO;gBAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,qBAAqB;QAClC,MAAM,eAAe,GAAqB,EAAE,CAAC;QAC7C,iEAAiE;QACjE,oEAAoE;QACpE,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACpJ,oEAAoE;QACpE,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACpJ,oEAAoE;QACpE,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACpJ,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,oBAAoB;QACjC,MAAM,eAAe,GAAqB,EAAE,CAAC;QAC7C,iEAAiE;QACjE,oEAAoE;QACpE,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACtJ,oEAAoE;QACpE,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACtJ,oEAAoE;QACpE,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACtJ,OAAO,eAAe,CAAC;IACzB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAyB,EAAE,qBAAqB,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK;QAC3G,IAAI,CAAC,qBAAqB,IAAI,eAAe,CAAC,SAAS;YACrD,OAAO,eAAe,CAAC,SAAS,CAAC;QAEnC,IAAI,CAAC,MAAM;YACT,MAAM,GAAG,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtG,IAAI,WAAW,GAAG,4BAAiB,CAAC,aAAa,EAAE,CAAC;QACpD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,aAAa,GAAG,IAAA,4BAAa,EAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACvF,MAAM,WAAW,GAAG,MAAM,CAAC,6BAA6B,CAAC,aAAa,CAAC,CAAC;YACxE,MAAM,UAAU,GAAG,4BAAiB,CAAC,aAAa,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,uBAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC;YACzF,WAAW,GAAG,4BAAiB,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAChM,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,KAAK,EAAkB,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QACjC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAsB,EAAE,EAAE;YAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9C,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC7C,SAAS,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,qBAAqB,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,MAAM,IAAA,iBAAO,EAAC,GAAG,qBAAS,CAAC,UAAU,6BAA6B,EAAE,MAAM,CAAC,CAAC;YAEhG,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACnD,IAAI,MAAM;oBACR,SAAS,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;YAED,CAAC,MAAM,0BAAe,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QAChH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,CAAiB,EAAE,EAAE,CAAC,IAAA,6BAAc,EAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAEnH,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;QACrD,eAAe,CAAC,SAAS,GAAG,eAAe,CAAC;QAE5C,OAAO,eAAe,CAAC;IACzB,CAAC;IACM,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,cAA+B;QAC5E,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;YAClD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YACxF,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,CAAiB,EAAE,EAAE,CAAC,IAAA,6BAAc,EAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC9I,OAAO,eAAe,CAAC,SAAS,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,IAAY;QAC1C,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mCAAmC;QACnC,MAAM,kBAAkB,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrE,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YACxF,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,kBAAkB,KAAK,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5E,CAAC;CACF;AAzID,0CAyIC","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 MapLayers\n */\n\nimport { compareStrings, expectDefined } from \"@itwin/core-bentley\";\nimport {\n BackgroundMapProvider, BackgroundMapType, BaseMapLayerSettings, DeprecatedBackgroundMapProps, ImageMapLayerSettings, MapSubLayerProps,\n} from \"@itwin/core-common\";\nimport { Point2d } from \"@itwin/core-geometry\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { request, RequestBasicCredentials } from \"../../request/Request\";\nimport { ArcGisUtilities, MapCartoRectangle, MapLayerSourceValidation } from \"../internal\";\n\n/** Values for return codes from [[MapLayerSource.validateSource]]\n * @public\n */\nexport enum MapLayerSourceStatus {\n /** Layer source is valid */\n Valid,\n /** Authorization has failed when accessing this layer source. */\n InvalidCredentials,\n /** Provided format id could not be resolved in [[MapLayerFormatRegistry]] */\n InvalidFormat,\n /** The tiling schema of the source is not supported */\n InvalidTileTree,\n /** Could not not connect to remote server using the provided URL.*/\n InvalidUrl,\n /** Authorization is required to access this map layer source. */\n RequireAuth,\n /** Map-layer coordinate system is not supported */\n InvalidCoordinateSystem,\n /** Format is not compatible with the URL provided.\n */\n IncompatibleFormat,\n}\n\n/** JSON representation of a map layer source.\n * @see [ImageryMapLayerFormatId]($common)\n * @public\n */\nexport interface MapLayerSourceProps {\n /** Identifies the map layers source. Defaults to 'WMS'. */\n formatId?: string;\n /** Name */\n name: string;\n /** URL of the source's endpoint. */\n url: string;\n /** True to indicate background is transparent. Defaults to 'true'. */\n transparentBackground?: boolean;\n /** Indicate if this source definition should be used as a base map. Defaults to false. */\n baseMap?: boolean;\n\n /** List of query parameters that will get appended to the source.\n * @beta\n */\n queryParams?: { [key: string]: string };\n}\n\n/** A source for map layers. These may be catalogued for convenient use by users or applications.\n * @public\n */\nexport class MapLayerSource {\n public formatId: string;\n public name: string;\n public url: string;\n public baseMap = false;\n public transparentBackground?: boolean;\n public userName?: string;\n public password?: string;\n\n /** List of query parameters that will get appended to the source URL that should be be persisted part of the JSON representation.\n * @beta\n */\n public savedQueryParams?: { [key: string]: string };\n\n /** List of query parameters that will get appended to the source URL that should *not* be be persisted part of the JSON representation.\n * @beta\n */\n public unsavedQueryParams?: { [key: string]: string };\n\n private constructor(formatId = \"WMS\", name: string, url: string, baseMap = false, transparentBackground = true, savedQueryParams?: { [key: string]: string}) {\n this.formatId = formatId;\n this.name = name;\n this.url = url;\n this.baseMap = baseMap;\n this.transparentBackground = transparentBackground;\n this.savedQueryParams = savedQueryParams;\n }\n\n public static fromJSON(json: MapLayerSourceProps): MapLayerSource | undefined {\n if (json === undefined)\n return undefined;\n\n return new MapLayerSource(json.formatId, json.name, json.url, json.baseMap, json.transparentBackground, json.queryParams);\n }\n\n public async validateSource(ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\n return IModelApp.mapLayerFormatRegistry.validateSource({source: this, ignoreCache});\n }\n\n /** @internal*/\n public static fromBackgroundMapProps(props: DeprecatedBackgroundMapProps) {\n const provider = BackgroundMapProvider.fromBackgroundMapProps(props);\n const layerSettings = BaseMapLayerSettings.fromProvider(provider);\n if (undefined !== layerSettings) {\n const source = MapLayerSource.fromJSON(layerSettings);\n if (source) {\n source.baseMap = true;\n return source;\n }\n }\n\n return undefined;\n }\n public toJSON(): Omit<MapLayerSourceProps, \"formatId\"> & {formatId: string} {\n return { url: this.url, name: this.name, formatId: this.formatId, transparentBackground: this.transparentBackground, queryParams: this.savedQueryParams };\n }\n\n public toLayerSettings(subLayers?: MapSubLayerProps[]): ImageMapLayerSettings | undefined {\n // When MapLayerSetting is created from a MapLayerSource, sub-layers and credentials need to be set separately.\n const layerSettings = ImageMapLayerSettings.fromJSON({ ...this, subLayers });\n if (this.userName !== undefined || this.password !== undefined) {\n layerSettings?.setCredentials(this.userName, this.password);\n }\n\n if (this.savedQueryParams) {\n layerSettings.savedQueryParams = {...this.savedQueryParams};\n }\n\n if (this.unsavedQueryParams) {\n layerSettings.unsavedQueryParams = {...this.unsavedQueryParams};\n }\n return layerSettings;\n }\n\n private getCredentials(): RequestBasicCredentials | undefined {\n return this.userName && this.password ? { user: this.userName, password: this.password } : undefined;\n }\n\n /** Collect all query parameters\n * @beta\n */\n public collectQueryParams() {\n let queryParams: {[key: string]: string} = {};\n\n if (this.savedQueryParams)\n queryParams = {...this.savedQueryParams};\n if (this.unsavedQueryParams)\n queryParams = {...queryParams, ...this.unsavedQueryParams};\n return queryParams;\n }\n\n}\n\n/** A collection of [[MapLayerSource]] objects.\n * @beta\n */\nexport class MapLayerSources {\n private static _instance?: MapLayerSources;\n private constructor(private _sources: MapLayerSource[]) { }\n\n public static getInstance() { return MapLayerSources._instance; }\n\n public findByName(name: string, baseMap: boolean = false): MapLayerSource | undefined {\n const nameTest = name.toLowerCase();\n for (const source of this._sources)\n if (source.baseMap === baseMap && source.name.toLowerCase().indexOf(nameTest) !== -1)\n return source;\n\n return undefined;\n }\n public get layers(): MapLayerSource[] {\n const layers = new Array<MapLayerSource>();\n this._sources.forEach((source) => {\n if (!source.baseMap)\n layers.push(source);\n });\n\n return layers;\n }\n public get allSource() { return this._sources; }\n public get bases(): MapLayerSource[] {\n const layers = new Array<MapLayerSource>();\n this._sources.forEach((source) => {\n if (source.baseMap)\n layers.push(source);\n });\n\n return layers;\n }\n\n private static getBingMapLayerSource(): MapLayerSource[] {\n const mapLayerSources: MapLayerSource[] = [];\n // We know these hard-coded sources are valid, so ! is okay here.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Street } })!);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Aerial } })!);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Hybrid } })!);\n return mapLayerSources;\n }\n\n private static getMapBoxLayerSource(): MapLayerSource[] {\n const mapLayerSources: MapLayerSource[] = [];\n // We know these hard-coded sources are valid, so ! is okay here.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Street } })!);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Aerial } })!);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Hybrid } })!);\n return mapLayerSources;\n }\n\n public static async create(iModel?: IModelConnection, queryForPublicSources = false, addMapBoxSources = false): Promise<MapLayerSources> {\n if (!queryForPublicSources && MapLayerSources._instance)\n return MapLayerSources._instance;\n\n if (!iModel)\n iModel = IModelApp.viewManager.selectedView ? IModelApp.viewManager.selectedView.iModel : undefined;\n\n let sourceRange = MapCartoRectangle.createMaximum();\n if (iModel) {\n const projectCenter = expectDefined(iModel.projectExtents.localXYZToWorld(.5, .5, .5));\n const cartoCenter = iModel.spatialToCartographicFromEcef(projectCenter);\n const globeRange = MapCartoRectangle.createMaximum();\n const nearDelta = Point2d.create(globeRange.xLength() / 100, globeRange.yLength() / 100);\n sourceRange = MapCartoRectangle.fromRadians(cartoCenter.longitude - nearDelta.x, cartoCenter.latitude - nearDelta.y, cartoCenter.longitude + nearDelta.x, cartoCenter.latitude + nearDelta.y);\n }\n\n const sources = new Array<MapLayerSource>();\n const urlSet = new Set<string>();\n const addSource = ((source: MapLayerSource) => {\n if (!urlSet.has(source.url)) {\n sources.push(source);\n urlSet.add(source.url);\n }\n });\n\n this.getBingMapLayerSource().forEach((source) => {\n addSource(source);\n });\n\n if (addMapBoxSources) {\n this.getMapBoxLayerSource().forEach((source) => {\n addSource(source);\n });\n }\n\n if (queryForPublicSources) {\n const sourcesJson = await request(`${IModelApp.publicPath}assets/MapLayerSources.json`, \"json\");\n\n for (const sourceJson of sourcesJson) {\n const source = MapLayerSource.fromJSON(sourceJson);\n if (source)\n addSource(source);\n }\n\n (await ArcGisUtilities.getSourcesFromQuery(sourceRange)).forEach((queriedSource) => addSource(queriedSource));\n }\n\n sources.sort((a: MapLayerSource, b: MapLayerSource) => compareStrings(a.name.toLowerCase(), b.name.toLowerCase()));\n\n const mapLayerSources = new MapLayerSources(sources);\n MapLayerSources._instance = mapLayerSources;\n\n return mapLayerSources;\n }\n public static async addSourceToMapLayerSources(mapLayerSource?: MapLayerSource): Promise<MapLayerSources | undefined> {\n if (!MapLayerSources._instance || !mapLayerSource) {\n return undefined;\n }\n MapLayerSources._instance._sources = MapLayerSources._instance._sources.filter((source) => {\n return !(source.name === mapLayerSource.name || source.url === mapLayerSource.url);\n });\n\n MapLayerSources._instance._sources.push(mapLayerSource);\n MapLayerSources._instance._sources.sort((a: MapLayerSource, b: MapLayerSource) => compareStrings(a.name.toLowerCase(), b.name.toLowerCase()));\n return MapLayerSources._instance;\n }\n\n public static removeLayerByName(name: string): boolean {\n if (!MapLayerSources._instance) {\n return false;\n }\n\n // For now we only rely on the name\n const lengthBeforeRemove = MapLayerSources._instance._sources.length;\n MapLayerSources._instance._sources = MapLayerSources._instance._sources.filter((source) => {\n return (source.name !== name);\n });\n return (lengthBeforeRemove !== MapLayerSources._instance._sources.length);\n }\n}\n"]}