@itwin/core-frontend 4.0.0-dev.86 → 4.0.0-dev.87

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 (841) hide show
  1. package/lib/cjs/AccuDraw.js.map +1 -1
  2. package/lib/cjs/AccuSnap.js.map +1 -1
  3. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  4. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
  5. package/lib/cjs/AuxCoordSys.js.map +1 -1
  6. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  7. package/lib/cjs/BingLocation.js.map +1 -1
  8. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  9. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  10. package/lib/cjs/CategorySelectorState.js.map +1 -1
  11. package/lib/cjs/ChangeFlags.js.map +1 -1
  12. package/lib/cjs/CheckpointConnection.js.map +1 -1
  13. package/lib/cjs/CoordSystem.js.map +1 -1
  14. package/lib/cjs/DecorationsCache.js.map +1 -1
  15. package/lib/cjs/DevTools.js.map +1 -1
  16. package/lib/cjs/DisplayStyleState.js.map +1 -1
  17. package/lib/cjs/DrawingViewState.js +5 -5
  18. package/lib/cjs/DrawingViewState.js.map +1 -1
  19. package/lib/cjs/ElementLocateManager.js.map +1 -1
  20. package/lib/cjs/EmphasizeElements.js.map +1 -1
  21. package/lib/cjs/EntityState.js.map +1 -1
  22. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  23. package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
  24. package/lib/cjs/FlashSettings.js.map +1 -1
  25. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  26. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  27. package/lib/cjs/Frustum2d.js.map +1 -1
  28. package/lib/cjs/FrustumAnimator.js.map +1 -1
  29. package/lib/cjs/FuzzySearch.js.map +1 -1
  30. package/lib/cjs/GeoServices.js.map +1 -1
  31. package/lib/cjs/GlobeAnimator.js.map +1 -1
  32. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  33. package/lib/cjs/HitDetail.js.map +1 -1
  34. package/lib/cjs/IModelApp.js.map +1 -1
  35. package/lib/cjs/IModelConnection.js +23 -23
  36. package/lib/cjs/IModelConnection.js.map +1 -1
  37. package/lib/cjs/IModelRoutingContext.js.map +1 -1
  38. package/lib/cjs/IModeljs-css.js +133 -133
  39. package/lib/cjs/IModeljs-css.js.map +1 -1
  40. package/lib/cjs/ImageUtil.js.map +1 -1
  41. package/lib/cjs/IpcApp.js.map +1 -1
  42. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  43. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  44. package/lib/cjs/MarginPercent.js.map +1 -1
  45. package/lib/cjs/Marker.js.map +1 -1
  46. package/lib/cjs/ModelSelectorState.js.map +1 -1
  47. package/lib/cjs/NativeApp.js.map +1 -1
  48. package/lib/cjs/NativeAppLogger.js.map +1 -1
  49. package/lib/cjs/NoRenderApp.js.map +1 -1
  50. package/lib/cjs/NotificationManager.js.map +1 -1
  51. package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
  52. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  53. package/lib/cjs/RealityDataSource.js.map +1 -1
  54. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  55. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  56. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  57. package/lib/cjs/SelectionSet.js.map +1 -1
  58. package/lib/cjs/SheetViewState.js.map +1 -1
  59. package/lib/cjs/SpatialViewState.js.map +1 -1
  60. package/lib/cjs/Sprites.js.map +1 -1
  61. package/lib/cjs/StandardView.js.map +1 -1
  62. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  63. package/lib/cjs/TentativePoint.js.map +1 -1
  64. package/lib/cjs/Tiles.js.map +1 -1
  65. package/lib/cjs/UserPreferences.js.map +1 -1
  66. package/lib/cjs/ViewAnimation.js.map +1 -1
  67. package/lib/cjs/ViewContext.js.map +1 -1
  68. package/lib/cjs/ViewCreator2d.js.map +1 -1
  69. package/lib/cjs/ViewCreator3d.js.map +1 -1
  70. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  71. package/lib/cjs/ViewManager.js.map +1 -1
  72. package/lib/cjs/ViewPose.js.map +1 -1
  73. package/lib/cjs/ViewRect.js.map +1 -1
  74. package/lib/cjs/ViewState.js.map +1 -1
  75. package/lib/cjs/ViewStatus.js.map +1 -1
  76. package/lib/cjs/ViewingSpace.js.map +1 -1
  77. package/lib/cjs/Viewport.js.map +1 -1
  78. package/lib/cjs/ViewportSync.js.map +1 -1
  79. package/lib/cjs/WebWorkerManager.js.map +1 -1
  80. package/lib/cjs/core-frontend.js.map +1 -1
  81. package/lib/cjs/extension/Extension.js.map +1 -1
  82. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  83. package/lib/cjs/extension/ExtensionHost.js.map +1 -1
  84. package/lib/cjs/extension/ExtensionImpl.js.map +1 -1
  85. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  86. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  87. package/lib/cjs/extension/providers/LocalExtensionProvider.js.map +1 -1
  88. package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
  89. package/lib/cjs/gltf/GltfModel.js.map +1 -1
  90. package/lib/cjs/gltf/GltfParser.js.map +1 -1
  91. package/lib/cjs/gltf/GltfSchema.js.map +1 -1
  92. package/lib/cjs/properties/AngleDescription.js.map +1 -1
  93. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  94. package/lib/cjs/properties/LengthDescription.js.map +1 -1
  95. package/lib/cjs/public/scripts/checkbrowser.js +24 -24
  96. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  97. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  98. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  99. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  100. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  101. package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -1
  102. package/lib/cjs/render/CanvasDecoration.js.map +1 -1
  103. package/lib/cjs/render/Decorations.js.map +1 -1
  104. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  105. package/lib/cjs/render/FrameStats.js.map +1 -1
  106. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  107. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  108. package/lib/cjs/render/GraphicPrimitive.js.map +1 -1
  109. package/lib/cjs/render/InstancedGraphicParams.js.map +1 -1
  110. package/lib/cjs/render/MockRender.js.map +1 -1
  111. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  112. package/lib/cjs/render/Pixel.js.map +1 -1
  113. package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
  114. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  115. package/lib/cjs/render/RenderClipVolume.js.map +1 -1
  116. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  117. package/lib/cjs/render/RenderMaterial.d.ts +8 -0
  118. package/lib/cjs/render/RenderMaterial.d.ts.map +1 -1
  119. package/lib/cjs/render/RenderMaterial.js.map +1 -1
  120. package/lib/cjs/render/RenderMemory.js.map +1 -1
  121. package/lib/cjs/render/RenderPlan.js.map +1 -1
  122. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  123. package/lib/cjs/render/RenderSystem.js.map +1 -1
  124. package/lib/cjs/render/RenderTarget.js.map +1 -1
  125. package/lib/cjs/render/RenderTexture.js.map +1 -1
  126. package/lib/cjs/render/Scene.js.map +1 -1
  127. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  128. package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
  129. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  130. package/lib/cjs/render/primitives/AuxChannelTable.js.map +1 -1
  131. package/lib/cjs/render/primitives/ColorMap.js.map +1 -1
  132. package/lib/cjs/render/primitives/DisplayParams.js.map +1 -1
  133. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  134. package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +1 -1
  135. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
  136. package/lib/cjs/render/primitives/Polyface.js.map +1 -1
  137. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  138. package/lib/cjs/render/primitives/Primitives.js.map +1 -1
  139. package/lib/cjs/render/primitives/Strokes.js.map +1 -1
  140. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -1
  141. package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
  142. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  143. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
  144. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  145. package/lib/cjs/render/primitives/geometry/GeometryList.js.map +1 -1
  146. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  147. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  148. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  149. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  150. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  151. package/lib/cjs/render/webgl/AtmosphereUniforms.js.map +1 -1
  152. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  153. package/lib/cjs/render/webgl/AttributeMap.js.map +1 -1
  154. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  155. package/lib/cjs/render/webgl/BatchState.js.map +1 -1
  156. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  157. package/lib/cjs/render/webgl/BranchStack.js.map +1 -1
  158. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  159. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  160. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  161. package/lib/cjs/render/webgl/ClipStack.js.map +1 -1
  162. package/lib/cjs/render/webgl/ClipVolume.js.map +1 -1
  163. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  164. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  165. package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
  166. package/lib/cjs/render/webgl/Disposable.js.map +1 -1
  167. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  168. package/lib/cjs/render/webgl/EDL.js.map +1 -1
  169. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  170. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  171. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  172. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  173. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  174. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  175. package/lib/cjs/render/webgl/GL.js.map +1 -1
  176. package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
  177. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  178. package/lib/cjs/render/webgl/HiliteUniforms.js.map +1 -1
  179. package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
  180. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  181. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  182. package/lib/cjs/render/webgl/Layer.js.map +1 -1
  183. package/lib/cjs/render/webgl/LayerCommands.js.map +1 -1
  184. package/lib/cjs/render/webgl/LightingUniforms.js.map +1 -1
  185. package/lib/cjs/render/webgl/LineCode.js.map +1 -1
  186. package/lib/cjs/render/webgl/Material.js.map +1 -1
  187. package/lib/cjs/render/webgl/Matrix.js.map +1 -1
  188. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  189. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  190. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
  191. package/lib/cjs/render/webgl/PerformanceMetrics.js.map +1 -1
  192. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  193. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  194. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  195. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  196. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  197. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  198. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  199. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  200. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  201. package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
  202. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  203. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  204. package/lib/cjs/render/webgl/RenderState.js.map +1 -1
  205. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  206. package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
  207. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  208. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  209. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  210. package/lib/cjs/render/webgl/ShadowUniforms.js.map +1 -1
  211. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  212. package/lib/cjs/render/webgl/StyleUniforms.js.map +1 -1
  213. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  214. package/lib/cjs/render/webgl/Sync.js.map +1 -1
  215. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  216. package/lib/cjs/render/webgl/System.js +2 -0
  217. package/lib/cjs/render/webgl/System.js.map +1 -1
  218. package/lib/cjs/render/webgl/Target.js.map +1 -1
  219. package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
  220. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  221. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  222. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  223. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  224. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  225. package/lib/cjs/render/webgl/TextureDrape.js.map +1 -1
  226. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  227. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  228. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  229. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  230. package/lib/cjs/render/webgl/ViewRectUniforms.js.map +1 -1
  231. package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
  232. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +154 -154
  233. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  234. package/lib/cjs/render/webgl/glsl/Animation.js +83 -83
  235. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  236. package/lib/cjs/render/webgl/glsl/Atmosphere.js +266 -266
  237. package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
  238. package/lib/cjs/render/webgl/glsl/Blur.js +37 -37
  239. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  240. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +4 -4
  241. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  242. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +3 -3
  243. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  244. package/lib/cjs/render/webgl/glsl/Clipping.js +60 -60
  245. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  246. package/lib/cjs/render/webgl/glsl/Color.js +12 -12
  247. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  248. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +7 -7
  249. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  250. package/lib/cjs/render/webgl/glsl/CombineTextures.js +5 -5
  251. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  252. package/lib/cjs/render/webgl/glsl/Common.js +16 -16
  253. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  254. package/lib/cjs/render/webgl/glsl/Composite.js +71 -71
  255. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  256. package/lib/cjs/render/webgl/glsl/CopyColor.js +6 -6
  257. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  258. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +3 -3
  259. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  260. package/lib/cjs/render/webgl/glsl/CopyStencil.js +4 -4
  261. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  262. package/lib/cjs/render/webgl/glsl/Decode.js +65 -65
  263. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  264. package/lib/cjs/render/webgl/glsl/EDL.js +103 -103
  265. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
  266. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +25 -25
  267. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  268. package/lib/cjs/render/webgl/glsl/Edge.js +146 -146
  269. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  270. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +232 -232
  271. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  272. package/lib/cjs/render/webgl/glsl/Fragment.js +41 -41
  273. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  274. package/lib/cjs/render/webgl/glsl/Instancing.js +21 -21
  275. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  276. package/lib/cjs/render/webgl/glsl/Lighting.js +92 -92
  277. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  278. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  279. package/lib/cjs/render/webgl/glsl/LookupTable.js +19 -19
  280. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  281. package/lib/cjs/render/webgl/glsl/Monochrome.js +13 -13
  282. package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
  283. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +188 -188
  284. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  285. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +22 -22
  286. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  287. package/lib/cjs/render/webgl/glsl/PointCloud.js +28 -28
  288. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  289. package/lib/cjs/render/webgl/glsl/PointString.js +9 -9
  290. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  291. package/lib/cjs/render/webgl/glsl/Polyline.js +213 -213
  292. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  293. package/lib/cjs/render/webgl/glsl/RealityMesh.js +83 -83
  294. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  295. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  296. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  297. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  298. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  299. package/lib/cjs/render/webgl/glsl/SkySphere.js +49 -49
  300. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  301. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +51 -51
  302. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  303. package/lib/cjs/render/webgl/glsl/Surface.js +239 -239
  304. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  305. package/lib/cjs/render/webgl/glsl/Thematic.js +134 -134
  306. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  307. package/lib/cjs/render/webgl/glsl/Translucency.js +19 -19
  308. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  309. package/lib/cjs/render/webgl/glsl/Vertex.js +73 -73
  310. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  311. package/lib/cjs/render/webgl/glsl/Viewport.js +38 -38
  312. package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
  313. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  314. package/lib/cjs/render/webgl/glsl/Wiremesh.js +10 -10
  315. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  316. package/lib/cjs/render-primitives.js.map +1 -1
  317. package/lib/cjs/request/Request.js.map +1 -1
  318. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  319. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  320. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
  321. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  322. package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
  323. package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
  324. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  325. package/lib/cjs/tile/GltfReader.js.map +1 -1
  326. package/lib/cjs/tile/GraphicsCollector.js.map +1 -1
  327. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  328. package/lib/cjs/tile/IModelTile.js.map +1 -1
  329. package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
  330. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  331. package/lib/cjs/tile/ImdlReader.d.ts +14 -0
  332. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  333. package/lib/cjs/tile/ImdlReader.js +23 -1
  334. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  335. package/lib/cjs/tile/LRUTileList.js.map +1 -1
  336. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  337. package/lib/cjs/tile/PntsReader.js.map +1 -1
  338. package/lib/cjs/tile/RealityTile.js.map +1 -1
  339. package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
  340. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  341. package/lib/cjs/tile/RealityTileTree.js +1 -1
  342. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  343. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  344. package/lib/cjs/tile/Tile.js.map +1 -1
  345. package/lib/cjs/tile/TileAdmin.d.ts +1 -1
  346. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  347. package/lib/cjs/tile/TileAdmin.js +3 -1
  348. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  349. package/lib/cjs/tile/TileContent.js.map +1 -1
  350. package/lib/cjs/tile/TileDrawArgs.d.ts +4 -0
  351. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  352. package/lib/cjs/tile/TileDrawArgs.js +4 -0
  353. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  354. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -1
  355. package/lib/cjs/tile/TileParams.js.map +1 -1
  356. package/lib/cjs/tile/TileRequest.js.map +1 -1
  357. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  358. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  359. package/lib/cjs/tile/TileStorage.js.map +1 -1
  360. package/lib/cjs/tile/TileTree.js +1 -1
  361. package/lib/cjs/tile/TileTree.js.map +1 -1
  362. package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
  363. package/lib/cjs/tile/TileTreeParams.js.map +1 -1
  364. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  365. package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
  366. package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
  367. package/lib/cjs/tile/TileUser.js.map +1 -1
  368. package/lib/cjs/tile/TileUserSet.js.map +1 -1
  369. package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
  370. package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
  371. package/lib/cjs/tile/internal.js.map +1 -1
  372. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  373. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  374. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  375. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  376. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  377. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  378. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  379. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  380. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  381. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  382. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  383. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  384. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  385. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  386. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
  387. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
  388. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  389. package/lib/cjs/tile/map/MapLayerImageryProvider.js +2 -2
  390. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  391. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  392. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  393. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  394. package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
  395. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  396. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  397. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  398. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  399. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  400. package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
  401. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  402. package/lib/cjs/tile/map/WmsUtilities.js.map +1 -1
  403. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  404. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  405. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  406. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  407. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  408. package/lib/cjs/tools/EventController.js.map +1 -1
  409. package/lib/cjs/tools/IdleTool.js.map +1 -1
  410. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  411. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  412. package/lib/cjs/tools/SelectTool.js.map +1 -1
  413. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  414. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  415. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  416. package/lib/cjs/tools/ViewTool.js.map +1 -1
  417. package/lib/cjs/webgl.js.map +1 -1
  418. package/lib/esm/AccuDraw.js.map +1 -1
  419. package/lib/esm/AccuSnap.js.map +1 -1
  420. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  421. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
  422. package/lib/esm/AuxCoordSys.js.map +1 -1
  423. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  424. package/lib/esm/BingLocation.js.map +1 -1
  425. package/lib/esm/BriefcaseConnection.js.map +1 -1
  426. package/lib/esm/BriefcaseTxns.js.map +1 -1
  427. package/lib/esm/CategorySelectorState.js.map +1 -1
  428. package/lib/esm/ChangeFlags.js.map +1 -1
  429. package/lib/esm/CheckpointConnection.js.map +1 -1
  430. package/lib/esm/CoordSystem.js.map +1 -1
  431. package/lib/esm/DecorationsCache.js.map +1 -1
  432. package/lib/esm/DevTools.js.map +1 -1
  433. package/lib/esm/DisplayStyleState.js.map +1 -1
  434. package/lib/esm/DrawingViewState.js +5 -5
  435. package/lib/esm/DrawingViewState.js.map +1 -1
  436. package/lib/esm/ElementLocateManager.js.map +1 -1
  437. package/lib/esm/EmphasizeElements.js.map +1 -1
  438. package/lib/esm/EntityState.js.map +1 -1
  439. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  440. package/lib/esm/FeatureOverrideProvider.js.map +1 -1
  441. package/lib/esm/FlashSettings.js.map +1 -1
  442. package/lib/esm/FrontendHubAccess.js.map +1 -1
  443. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  444. package/lib/esm/Frustum2d.js.map +1 -1
  445. package/lib/esm/FrustumAnimator.js.map +1 -1
  446. package/lib/esm/FuzzySearch.js.map +1 -1
  447. package/lib/esm/GeoServices.js.map +1 -1
  448. package/lib/esm/GlobeAnimator.js.map +1 -1
  449. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  450. package/lib/esm/HitDetail.js.map +1 -1
  451. package/lib/esm/IModelApp.js.map +1 -1
  452. package/lib/esm/IModelConnection.js +23 -23
  453. package/lib/esm/IModelConnection.js.map +1 -1
  454. package/lib/esm/IModelRoutingContext.js.map +1 -1
  455. package/lib/esm/IModeljs-css.js +133 -133
  456. package/lib/esm/IModeljs-css.js.map +1 -1
  457. package/lib/esm/ImageUtil.js.map +1 -1
  458. package/lib/esm/IpcApp.js.map +1 -1
  459. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  460. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  461. package/lib/esm/MarginPercent.js.map +1 -1
  462. package/lib/esm/Marker.js.map +1 -1
  463. package/lib/esm/ModelSelectorState.js.map +1 -1
  464. package/lib/esm/NativeApp.js.map +1 -1
  465. package/lib/esm/NativeAppLogger.js.map +1 -1
  466. package/lib/esm/NoRenderApp.js.map +1 -1
  467. package/lib/esm/NotificationManager.js.map +1 -1
  468. package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
  469. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  470. package/lib/esm/RealityDataSource.js.map +1 -1
  471. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  472. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  473. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  474. package/lib/esm/SelectionSet.js.map +1 -1
  475. package/lib/esm/SheetViewState.js.map +1 -1
  476. package/lib/esm/SpatialViewState.js.map +1 -1
  477. package/lib/esm/Sprites.js.map +1 -1
  478. package/lib/esm/StandardView.js.map +1 -1
  479. package/lib/esm/SubCategoriesCache.js.map +1 -1
  480. package/lib/esm/TentativePoint.js.map +1 -1
  481. package/lib/esm/Tiles.js.map +1 -1
  482. package/lib/esm/UserPreferences.js.map +1 -1
  483. package/lib/esm/ViewAnimation.js.map +1 -1
  484. package/lib/esm/ViewContext.js.map +1 -1
  485. package/lib/esm/ViewCreator2d.js.map +1 -1
  486. package/lib/esm/ViewCreator3d.js.map +1 -1
  487. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  488. package/lib/esm/ViewManager.js.map +1 -1
  489. package/lib/esm/ViewPose.js.map +1 -1
  490. package/lib/esm/ViewRect.js.map +1 -1
  491. package/lib/esm/ViewState.js.map +1 -1
  492. package/lib/esm/ViewStatus.js.map +1 -1
  493. package/lib/esm/ViewingSpace.js.map +1 -1
  494. package/lib/esm/Viewport.js.map +1 -1
  495. package/lib/esm/ViewportSync.js.map +1 -1
  496. package/lib/esm/WebWorkerManager.js.map +1 -1
  497. package/lib/esm/core-frontend.js.map +1 -1
  498. package/lib/esm/extension/Extension.js.map +1 -1
  499. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  500. package/lib/esm/extension/ExtensionHost.js.map +1 -1
  501. package/lib/esm/extension/ExtensionImpl.js.map +1 -1
  502. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  503. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  504. package/lib/esm/extension/providers/LocalExtensionProvider.js.map +1 -1
  505. package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
  506. package/lib/esm/gltf/GltfModel.js.map +1 -1
  507. package/lib/esm/gltf/GltfParser.js.map +1 -1
  508. package/lib/esm/gltf/GltfSchema.js.map +1 -1
  509. package/lib/esm/properties/AngleDescription.js.map +1 -1
  510. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  511. package/lib/esm/properties/LengthDescription.js.map +1 -1
  512. package/lib/esm/public/scripts/checkbrowser.js +24 -24
  513. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  514. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  515. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  516. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  517. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  518. package/lib/esm/quantity-formatting/UnitsData.js.map +1 -1
  519. package/lib/esm/render/CanvasDecoration.js.map +1 -1
  520. package/lib/esm/render/Decorations.js.map +1 -1
  521. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  522. package/lib/esm/render/FrameStats.js.map +1 -1
  523. package/lib/esm/render/GraphicBranch.js.map +1 -1
  524. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  525. package/lib/esm/render/GraphicPrimitive.js.map +1 -1
  526. package/lib/esm/render/InstancedGraphicParams.js.map +1 -1
  527. package/lib/esm/render/MockRender.js.map +1 -1
  528. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  529. package/lib/esm/render/Pixel.js.map +1 -1
  530. package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
  531. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  532. package/lib/esm/render/RenderClipVolume.js.map +1 -1
  533. package/lib/esm/render/RenderGraphic.js.map +1 -1
  534. package/lib/esm/render/RenderMaterial.d.ts +8 -0
  535. package/lib/esm/render/RenderMaterial.d.ts.map +1 -1
  536. package/lib/esm/render/RenderMaterial.js.map +1 -1
  537. package/lib/esm/render/RenderMemory.js.map +1 -1
  538. package/lib/esm/render/RenderPlan.js.map +1 -1
  539. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  540. package/lib/esm/render/RenderSystem.js.map +1 -1
  541. package/lib/esm/render/RenderTarget.js.map +1 -1
  542. package/lib/esm/render/RenderTexture.js.map +1 -1
  543. package/lib/esm/render/Scene.js.map +1 -1
  544. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  545. package/lib/esm/render/UpsampleRealityMeshParams.js.map +1 -1
  546. package/lib/esm/render/VisibleFeature.js.map +1 -1
  547. package/lib/esm/render/primitives/AuxChannelTable.js.map +1 -1
  548. package/lib/esm/render/primitives/ColorMap.js.map +1 -1
  549. package/lib/esm/render/primitives/DisplayParams.js.map +1 -1
  550. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  551. package/lib/esm/render/primitives/PointCloudPrimitive.js.map +1 -1
  552. package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
  553. package/lib/esm/render/primitives/Polyface.js.map +1 -1
  554. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  555. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  556. package/lib/esm/render/primitives/Strokes.js.map +1 -1
  557. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -1
  558. package/lib/esm/render/primitives/VertexKey.js.map +1 -1
  559. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  560. package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
  561. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  562. package/lib/esm/render/primitives/geometry/GeometryList.js.map +1 -1
  563. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  564. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  565. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  566. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  567. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  568. package/lib/esm/render/webgl/AtmosphereUniforms.js.map +1 -1
  569. package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
  570. package/lib/esm/render/webgl/AttributeMap.js.map +1 -1
  571. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  572. package/lib/esm/render/webgl/BatchState.js.map +1 -1
  573. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  574. package/lib/esm/render/webgl/BranchStack.js.map +1 -1
  575. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  576. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  577. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  578. package/lib/esm/render/webgl/ClipStack.js.map +1 -1
  579. package/lib/esm/render/webgl/ClipVolume.js.map +1 -1
  580. package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
  581. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  582. package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
  583. package/lib/esm/render/webgl/Disposable.js.map +1 -1
  584. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  585. package/lib/esm/render/webgl/EDL.js.map +1 -1
  586. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  587. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  588. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  589. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  590. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  591. package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
  592. package/lib/esm/render/webgl/GL.js.map +1 -1
  593. package/lib/esm/render/webgl/GLTimer.js.map +1 -1
  594. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  595. package/lib/esm/render/webgl/HiliteUniforms.js.map +1 -1
  596. package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
  597. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  598. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  599. package/lib/esm/render/webgl/Layer.js.map +1 -1
  600. package/lib/esm/render/webgl/LayerCommands.js.map +1 -1
  601. package/lib/esm/render/webgl/LightingUniforms.js.map +1 -1
  602. package/lib/esm/render/webgl/LineCode.js.map +1 -1
  603. package/lib/esm/render/webgl/Material.js.map +1 -1
  604. package/lib/esm/render/webgl/Matrix.js.map +1 -1
  605. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  606. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  607. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
  608. package/lib/esm/render/webgl/PerformanceMetrics.js.map +1 -1
  609. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  610. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  611. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  612. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  613. package/lib/esm/render/webgl/PointString.js.map +1 -1
  614. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  615. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  616. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  617. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  618. package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
  619. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  620. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  621. package/lib/esm/render/webgl/RenderState.js.map +1 -1
  622. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  623. package/lib/esm/render/webgl/ScratchDrawParams.js.map +1 -1
  624. package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
  625. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  626. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  627. package/lib/esm/render/webgl/ShadowUniforms.js.map +1 -1
  628. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  629. package/lib/esm/render/webgl/StyleUniforms.js.map +1 -1
  630. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  631. package/lib/esm/render/webgl/Sync.js.map +1 -1
  632. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  633. package/lib/esm/render/webgl/System.js +2 -0
  634. package/lib/esm/render/webgl/System.js.map +1 -1
  635. package/lib/esm/render/webgl/Target.js.map +1 -1
  636. package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
  637. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  638. package/lib/esm/render/webgl/Technique.js.map +1 -1
  639. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  640. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  641. package/lib/esm/render/webgl/Texture.js.map +1 -1
  642. package/lib/esm/render/webgl/TextureDrape.js.map +1 -1
  643. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  644. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  645. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  646. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  647. package/lib/esm/render/webgl/ViewRectUniforms.js.map +1 -1
  648. package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
  649. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +154 -154
  650. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  651. package/lib/esm/render/webgl/glsl/Animation.js +83 -83
  652. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  653. package/lib/esm/render/webgl/glsl/Atmosphere.js +266 -266
  654. package/lib/esm/render/webgl/glsl/Atmosphere.js.map +1 -1
  655. package/lib/esm/render/webgl/glsl/Blur.js +37 -37
  656. package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
  657. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +4 -4
  658. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  659. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +3 -3
  660. package/lib/esm/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  661. package/lib/esm/render/webgl/glsl/Clipping.js +60 -60
  662. package/lib/esm/render/webgl/glsl/Clipping.js.map +1 -1
  663. package/lib/esm/render/webgl/glsl/Color.js +12 -12
  664. package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
  665. package/lib/esm/render/webgl/glsl/Combine3Textures.js +7 -7
  666. package/lib/esm/render/webgl/glsl/Combine3Textures.js.map +1 -1
  667. package/lib/esm/render/webgl/glsl/CombineTextures.js +5 -5
  668. package/lib/esm/render/webgl/glsl/CombineTextures.js.map +1 -1
  669. package/lib/esm/render/webgl/glsl/Common.js +16 -16
  670. package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
  671. package/lib/esm/render/webgl/glsl/Composite.js +71 -71
  672. package/lib/esm/render/webgl/glsl/Composite.js.map +1 -1
  673. package/lib/esm/render/webgl/glsl/CopyColor.js +6 -6
  674. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  675. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +3 -3
  676. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  677. package/lib/esm/render/webgl/glsl/CopyStencil.js +4 -4
  678. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  679. package/lib/esm/render/webgl/glsl/Decode.js +65 -65
  680. package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
  681. package/lib/esm/render/webgl/glsl/EDL.js +103 -103
  682. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -1
  683. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +25 -25
  684. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  685. package/lib/esm/render/webgl/glsl/Edge.js +146 -146
  686. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  687. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +232 -232
  688. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  689. package/lib/esm/render/webgl/glsl/Fragment.js +41 -41
  690. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  691. package/lib/esm/render/webgl/glsl/Instancing.js +21 -21
  692. package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
  693. package/lib/esm/render/webgl/glsl/Lighting.js +92 -92
  694. package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
  695. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  696. package/lib/esm/render/webgl/glsl/LookupTable.js +19 -19
  697. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  698. package/lib/esm/render/webgl/glsl/Monochrome.js +13 -13
  699. package/lib/esm/render/webgl/glsl/Monochrome.js.map +1 -1
  700. package/lib/esm/render/webgl/glsl/PlanarClassification.js +188 -188
  701. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  702. package/lib/esm/render/webgl/glsl/PlanarGrid.js +22 -22
  703. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  704. package/lib/esm/render/webgl/glsl/PointCloud.js +28 -28
  705. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  706. package/lib/esm/render/webgl/glsl/PointString.js +9 -9
  707. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  708. package/lib/esm/render/webgl/glsl/Polyline.js +213 -213
  709. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  710. package/lib/esm/render/webgl/glsl/RealityMesh.js +83 -83
  711. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  712. package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
  713. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  714. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  715. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  716. package/lib/esm/render/webgl/glsl/SkySphere.js +49 -49
  717. package/lib/esm/render/webgl/glsl/SkySphere.js.map +1 -1
  718. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +51 -51
  719. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  720. package/lib/esm/render/webgl/glsl/Surface.js +239 -239
  721. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  722. package/lib/esm/render/webgl/glsl/Thematic.js +134 -134
  723. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  724. package/lib/esm/render/webgl/glsl/Translucency.js +19 -19
  725. package/lib/esm/render/webgl/glsl/Translucency.js.map +1 -1
  726. package/lib/esm/render/webgl/glsl/Vertex.js +73 -73
  727. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  728. package/lib/esm/render/webgl/glsl/Viewport.js +38 -38
  729. package/lib/esm/render/webgl/glsl/Viewport.js.map +1 -1
  730. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  731. package/lib/esm/render/webgl/glsl/Wiremesh.js +10 -10
  732. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -1
  733. package/lib/esm/render-primitives.js.map +1 -1
  734. package/lib/esm/request/Request.js.map +1 -1
  735. package/lib/esm/tile/B3dmReader.js.map +1 -1
  736. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  737. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
  738. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  739. package/lib/esm/tile/ContextShareProvider.js.map +1 -1
  740. package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
  741. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  742. package/lib/esm/tile/GltfReader.js.map +1 -1
  743. package/lib/esm/tile/GraphicsCollector.js.map +1 -1
  744. package/lib/esm/tile/I3dmReader.js.map +1 -1
  745. package/lib/esm/tile/IModelTile.js.map +1 -1
  746. package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
  747. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  748. package/lib/esm/tile/ImdlReader.d.ts +14 -0
  749. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  750. package/lib/esm/tile/ImdlReader.js +24 -2
  751. package/lib/esm/tile/ImdlReader.js.map +1 -1
  752. package/lib/esm/tile/LRUTileList.js.map +1 -1
  753. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  754. package/lib/esm/tile/PntsReader.js.map +1 -1
  755. package/lib/esm/tile/RealityTile.js.map +1 -1
  756. package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
  757. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  758. package/lib/esm/tile/RealityTileTree.js +1 -1
  759. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  760. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  761. package/lib/esm/tile/Tile.js.map +1 -1
  762. package/lib/esm/tile/TileAdmin.d.ts +1 -1
  763. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  764. package/lib/esm/tile/TileAdmin.js +3 -1
  765. package/lib/esm/tile/TileAdmin.js.map +1 -1
  766. package/lib/esm/tile/TileContent.js.map +1 -1
  767. package/lib/esm/tile/TileDrawArgs.d.ts +4 -0
  768. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  769. package/lib/esm/tile/TileDrawArgs.js +4 -0
  770. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  771. package/lib/esm/tile/TileGeometryCollector.js.map +1 -1
  772. package/lib/esm/tile/TileParams.js.map +1 -1
  773. package/lib/esm/tile/TileRequest.js.map +1 -1
  774. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  775. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  776. package/lib/esm/tile/TileStorage.js.map +1 -1
  777. package/lib/esm/tile/TileTree.js +1 -1
  778. package/lib/esm/tile/TileTree.js.map +1 -1
  779. package/lib/esm/tile/TileTreeOwner.js.map +1 -1
  780. package/lib/esm/tile/TileTreeParams.js.map +1 -1
  781. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  782. package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
  783. package/lib/esm/tile/TileUsageMarker.js.map +1 -1
  784. package/lib/esm/tile/TileUser.js.map +1 -1
  785. package/lib/esm/tile/TileUserSet.js.map +1 -1
  786. package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
  787. package/lib/esm/tile/ViewFlagOverrides.js.map +1 -1
  788. package/lib/esm/tile/internal.js.map +1 -1
  789. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  790. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  791. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  792. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  793. package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  794. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  795. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  796. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  797. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  798. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  799. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  800. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  801. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  802. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  803. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
  804. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
  805. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  806. package/lib/esm/tile/map/MapLayerImageryProvider.js +2 -2
  807. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  808. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  809. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  810. package/lib/esm/tile/map/MapTile.js.map +1 -1
  811. package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
  812. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  813. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  814. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  815. package/lib/esm/tile/map/QuadId.js.map +1 -1
  816. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  817. package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
  818. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  819. package/lib/esm/tile/map/WmsUtilities.js.map +1 -1
  820. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  821. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  822. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  823. package/lib/esm/tools/EditManipulator.js.map +1 -1
  824. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  825. package/lib/esm/tools/EventController.js.map +1 -1
  826. package/lib/esm/tools/IdleTool.js.map +1 -1
  827. package/lib/esm/tools/MeasureTool.js.map +1 -1
  828. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  829. package/lib/esm/tools/SelectTool.js.map +1 -1
  830. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  831. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  832. package/lib/esm/tools/ToolSettings.js.map +1 -1
  833. package/lib/esm/tools/ViewTool.js.map +1 -1
  834. package/lib/esm/webgl.js.map +1 -1
  835. package/lib/public/assets/MapLayerSources.json +25 -25
  836. package/lib/public/images/cesium-ion.svg +92 -92
  837. package/lib/public/images/imodeljs-icon.svg +2 -2
  838. package/lib/public/locales/en/CoreTools.json +477 -477
  839. package/lib/public/locales/en/iModelJs.json +170 -170
  840. package/lib/public/scripts/checkbrowser.js +24 -24
  841. package/package.json +18 -18
@@ -1 +1 @@
1
- {"version":3,"file":"WmsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.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\nimport { IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Cartographic, ImageMapLayerSettings, MapSubLayerSettings, ServerError } from \"@itwin/core-common\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport {\r\n ImageryMapTileTree, MapCartoRectangle, MapLayerImageryProvider, MapLayerImageryProviderStatus, QuadId, WmsCapabilities,\r\n WmsCapability, WmsUtilities,\r\n} from \"../../internal\";\r\n\r\n// eslint-disable-next-line prefer-const\r\nlet doToolTips = true;\r\n\r\nconst scratchPoint2d = Point2d.createZero();\r\n\r\n/** @internal */\r\nexport interface WmsCrsSupport {\r\n support3857: boolean;\r\n support4326: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class WmsMapLayerImageryProvider extends MapLayerImageryProvider {\r\n private _capabilities?: WmsCapabilities;\r\n private _allLayersRange?: MapCartoRectangle;\r\n private _subLayerRanges = new Map<string, MapCartoRectangle>();\r\n private _baseUrl: string;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private _crsSupport: WmsCrsSupport|undefined;\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, false);\r\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n try {\r\n const credentials = (this._settings.userName && this._settings.password ? {user: this._settings.userName, password: this._settings.password} : undefined);\r\n this._capabilities = await WmsCapabilities.create(this._baseUrl, credentials);\r\n if (undefined !== this._capabilities) {\r\n this._allLayersRange = this._capabilities.cartoRange;\r\n if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {\r\n const mapCartoRanges = ((subLayer: WmsCapability.SubLayer) => {\r\n if (Array.isArray(subLayer.children))\r\n subLayer.children.forEach((child) => mapCartoRanges(child));\r\n else if (subLayer.cartoRange)\r\n this._subLayerRanges.set(subLayer.name, subLayer.cartoRange);\r\n });\r\n this._capabilities.layer.subLayers.forEach((subLayer) => mapCartoRanges(subLayer));\r\n this._settings.subLayers.forEach((subLayer) => {\r\n if (subLayer.isNamed && this._settings.isSubLayerVisible(subLayer)) {\r\n const subLayerRange = this._subLayerRanges.get(subLayer.name);\r\n if (subLayerRange)\r\n if (this.cartoRange)\r\n this.cartoRange.extendRange(subLayerRange);\r\n else\r\n this.cartoRange = subLayerRange.clone();\r\n }\r\n });\r\n }\r\n\r\n if (!this.cartoRange)\r\n this.cartoRange = this._allLayersRange;\r\n\r\n this._crsSupport = this.getCrsSupport();\r\n }\r\n } catch (error: any) {\r\n // Don't throw error if unauthorized status:\r\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\r\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n } else {\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n }\r\n }\r\n\r\n private getVisibleLayerString() {\r\n const layerNames = this.getVisibleLayers().map((layer)=>layer.name);\r\n return layerNames.join(\"%2C\");\r\n }\r\n\r\n private getVisibleLayers(): MapSubLayerSettings[] {\r\n return this._settings.subLayers.filter((subLayer) => this._settings.isSubLayerVisible(subLayer) && subLayer.isNamed);\r\n }\r\n\r\n private getVisibleLayersSrs() {\r\n const visibleLayers = this.getVisibleLayers();\r\n const visibleLayerNames = visibleLayers.map((layer) => layer.name);\r\n return this._capabilities?.getSubLayersCrs(visibleLayerNames);\r\n }\r\n\r\n private getQueryableLayers(): string[] {\r\n const layerNames = new Array<string>();\r\n const getQueryableSubLayers = ((subLayer: WmsCapability.SubLayer) => {\r\n if (!subLayer)\r\n return;\r\n\r\n if (subLayer.queryable)\r\n layerNames.push(subLayer.name);\r\n\r\n subLayer.children?.forEach((childSubLayer) => getQueryableSubLayers(childSubLayer));\r\n });\r\n\r\n this._capabilities?.layer?.subLayers?.forEach((subLayer) => getQueryableSubLayers(subLayer));\r\n return layerNames;\r\n }\r\n\r\n private getVisibleQueryableLayersString(): string {\r\n const layers = new Array<string>();\r\n const queryable = this.getQueryableLayers();\r\n const visibleLayerNames = this.getVisibleLayers().map((layer) => layer.name);\r\n queryable.forEach((layer: string) => {\r\n if (visibleLayerNames.includes(layer))\r\n layers.push(layer);\r\n });\r\n\r\n return layers.join(\"%2C\");\r\n }\r\n\r\n public getCrsSupport(): WmsCrsSupport {\r\n const layersCrs = this.getVisibleLayersSrs();\r\n\r\n let support3857: boolean|undefined;\r\n let support4326: boolean|undefined;\r\n if (layersCrs) {\r\n for (const [_layerName, crs] of layersCrs) {\r\n if (crs.find((layerCrs) => layerCrs.includes(\"3857\")) === undefined ) {\r\n support3857 = false;\r\n } else if (support3857 === undefined) {\r\n support3857 = true;\r\n }\r\n\r\n if (crs.find((layerCrs) => layerCrs.includes(\"4326\")) === undefined ) {\r\n support4326 = false;\r\n } else if (support4326 === undefined) {\r\n support4326 = true;\r\n }\r\n }\r\n }\r\n\r\n return {support3857: support3857 ?? false, support4326: support4326 ?? false};\r\n }\r\n\r\n // WMS standard requires 'TRUE' or 'FALSE' (case sensitive) values.\r\n public override get transparentBackgroundString(): string { return this._settings.transparentBackground ? \"TRUE\" : \"FALSE\"; }\r\n\r\n // construct the Url from the desired Tile\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n\r\n let bboxString =\"\";\r\n let crsString =\"\";\r\n\r\n // We support 2 SRS: EPSG:3857 and EPSG:4326, we prefer EPSG:3857.\r\n if (this._crsSupport?.support3857) {\r\n bboxString = this.getEPSG3857ExtentString(row, column, zoomLevel);\r\n crsString= \"EPSG%3A3857\";\r\n } else if (this._crsSupport?.support4326) {\r\n // The WMS 1.3.0 specification mandates using the axis ordering as defined in the EPSG database.\r\n // For instance, for EPSG:4326 the axis ordering is latitude/longitude, or north/east.\r\n // WMS 1.1.0 always requires the axis ordering to be longitude/latitude. *sigh*\r\n if (this._capabilities !== undefined) {\r\n bboxString = this.getEPSG4326ExtentString(row, column, zoomLevel, this._capabilities?.isVersion13); // lat/long ordering\r\n crsString= \"EPSG%3A4326\";\r\n }\r\n\r\n }\r\n\r\n const layerString = this.getVisibleLayerString();\r\n\r\n if (bboxString.length === 0 || crsString.length === 0 ||layerString.length === 0)\r\n return \"\";\r\n\r\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\r\n return `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=${this.transparentBackgroundString}&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=${crsString}&STYLES=&BBOX=${bboxString}`;\r\n }\r\n\r\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n await super.getToolTip(strings, quadId, carto, tree);\r\n const infoFormats = this._capabilities?.featureInfoFormats;\r\n if (!doToolTips || undefined === infoFormats)\r\n return;\r\n let formatString = infoFormats.find((format) => format === \"text/html\");\r\n if (!formatString)\r\n formatString = infoFormats[0];\r\n\r\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\r\n const layerString = this.getVisibleQueryableLayersString();\r\n if (layerString.length === 0)\r\n return;\r\n const rectangle = tree.getTileRectangle(quadId);\r\n const fraction = rectangle.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d))!;\r\n const x = Math.floor(.5 + fraction.x * this.tileSize);\r\n const y = Math.floor(.5 + (1.0 - fraction.y) * this.tileSize);\r\n const coordinateString = this._capabilities?.isVersion13 ? `&i=${x}&j=${y}` : `&x=${x}&y=${y}`;\r\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\r\n const getFeatureUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetFeatureInfo&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=EPSG%3A3857&BBOX=${bboxString}&QUERY_LAYERS=${layerString}${coordinateString}&info_format=${formatString}`;\r\n return this.toolTipFromUrl(strings, getFeatureUrl);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"WmsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmsMapLayerImageryProvider.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 */\nimport { IModelStatus } from \"@itwin/core-bentley\";\nimport { Cartographic, ImageMapLayerSettings, MapSubLayerSettings, ServerError } from \"@itwin/core-common\";\nimport { Point2d } from \"@itwin/core-geometry\";\nimport {\n ImageryMapTileTree, MapCartoRectangle, MapLayerImageryProvider, MapLayerImageryProviderStatus, QuadId, WmsCapabilities,\n WmsCapability, WmsUtilities,\n} from \"../../internal\";\n\n// eslint-disable-next-line prefer-const\nlet doToolTips = true;\n\nconst scratchPoint2d = Point2d.createZero();\n\n/** @internal */\nexport interface WmsCrsSupport {\n support3857: boolean;\n support4326: boolean;\n}\n\n/** @internal */\nexport class WmsMapLayerImageryProvider extends MapLayerImageryProvider {\n private _capabilities?: WmsCapabilities;\n private _allLayersRange?: MapCartoRectangle;\n private _subLayerRanges = new Map<string, MapCartoRectangle>();\n private _baseUrl: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private _crsSupport: WmsCrsSupport|undefined;\n\n constructor(settings: ImageMapLayerSettings) {\n super(settings, false);\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\n }\n\n public override async initialize(): Promise<void> {\n try {\n const credentials = (this._settings.userName && this._settings.password ? {user: this._settings.userName, password: this._settings.password} : undefined);\n this._capabilities = await WmsCapabilities.create(this._baseUrl, credentials);\n if (undefined !== this._capabilities) {\n this._allLayersRange = this._capabilities.cartoRange;\n if (this._capabilities.layer && Array.isArray(this._capabilities.layer.subLayers)) {\n const mapCartoRanges = ((subLayer: WmsCapability.SubLayer) => {\n if (Array.isArray(subLayer.children))\n subLayer.children.forEach((child) => mapCartoRanges(child));\n else if (subLayer.cartoRange)\n this._subLayerRanges.set(subLayer.name, subLayer.cartoRange);\n });\n this._capabilities.layer.subLayers.forEach((subLayer) => mapCartoRanges(subLayer));\n this._settings.subLayers.forEach((subLayer) => {\n if (subLayer.isNamed && this._settings.isSubLayerVisible(subLayer)) {\n const subLayerRange = this._subLayerRanges.get(subLayer.name);\n if (subLayerRange)\n if (this.cartoRange)\n this.cartoRange.extendRange(subLayerRange);\n else\n this.cartoRange = subLayerRange.clone();\n }\n });\n }\n\n if (!this.cartoRange)\n this.cartoRange = this._allLayersRange;\n\n this._crsSupport = this.getCrsSupport();\n }\n } catch (error: any) {\n // Don't throw error if unauthorized status:\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\n if (error?.status === 401) {\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\n } else {\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n }\n }\n }\n\n private getVisibleLayerString() {\n const layerNames = this.getVisibleLayers().map((layer)=>layer.name);\n return layerNames.join(\"%2C\");\n }\n\n private getVisibleLayers(): MapSubLayerSettings[] {\n return this._settings.subLayers.filter((subLayer) => this._settings.isSubLayerVisible(subLayer) && subLayer.isNamed);\n }\n\n private getVisibleLayersSrs() {\n const visibleLayers = this.getVisibleLayers();\n const visibleLayerNames = visibleLayers.map((layer) => layer.name);\n return this._capabilities?.getSubLayersCrs(visibleLayerNames);\n }\n\n private getQueryableLayers(): string[] {\n const layerNames = new Array<string>();\n const getQueryableSubLayers = ((subLayer: WmsCapability.SubLayer) => {\n if (!subLayer)\n return;\n\n if (subLayer.queryable)\n layerNames.push(subLayer.name);\n\n subLayer.children?.forEach((childSubLayer) => getQueryableSubLayers(childSubLayer));\n });\n\n this._capabilities?.layer?.subLayers?.forEach((subLayer) => getQueryableSubLayers(subLayer));\n return layerNames;\n }\n\n private getVisibleQueryableLayersString(): string {\n const layers = new Array<string>();\n const queryable = this.getQueryableLayers();\n const visibleLayerNames = this.getVisibleLayers().map((layer) => layer.name);\n queryable.forEach((layer: string) => {\n if (visibleLayerNames.includes(layer))\n layers.push(layer);\n });\n\n return layers.join(\"%2C\");\n }\n\n public getCrsSupport(): WmsCrsSupport {\n const layersCrs = this.getVisibleLayersSrs();\n\n let support3857: boolean|undefined;\n let support4326: boolean|undefined;\n if (layersCrs) {\n for (const [_layerName, crs] of layersCrs) {\n if (crs.find((layerCrs) => layerCrs.includes(\"3857\")) === undefined ) {\n support3857 = false;\n } else if (support3857 === undefined) {\n support3857 = true;\n }\n\n if (crs.find((layerCrs) => layerCrs.includes(\"4326\")) === undefined ) {\n support4326 = false;\n } else if (support4326 === undefined) {\n support4326 = true;\n }\n }\n }\n\n return {support3857: support3857 ?? false, support4326: support4326 ?? false};\n }\n\n // WMS standard requires 'TRUE' or 'FALSE' (case sensitive) values.\n public override get transparentBackgroundString(): string { return this._settings.transparentBackground ? \"TRUE\" : \"FALSE\"; }\n\n // construct the Url from the desired Tile\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\n\n let bboxString =\"\";\n let crsString =\"\";\n\n // We support 2 SRS: EPSG:3857 and EPSG:4326, we prefer EPSG:3857.\n if (this._crsSupport?.support3857) {\n bboxString = this.getEPSG3857ExtentString(row, column, zoomLevel);\n crsString= \"EPSG%3A3857\";\n } else if (this._crsSupport?.support4326) {\n // The WMS 1.3.0 specification mandates using the axis ordering as defined in the EPSG database.\n // For instance, for EPSG:4326 the axis ordering is latitude/longitude, or north/east.\n // WMS 1.1.0 always requires the axis ordering to be longitude/latitude. *sigh*\n if (this._capabilities !== undefined) {\n bboxString = this.getEPSG4326ExtentString(row, column, zoomLevel, this._capabilities?.isVersion13); // lat/long ordering\n crsString= \"EPSG%3A4326\";\n }\n\n }\n\n const layerString = this.getVisibleLayerString();\n\n if (bboxString.length === 0 || crsString.length === 0 ||layerString.length === 0)\n return \"\";\n\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\n return `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=${this.transparentBackgroundString}&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=${crsString}&STYLES=&BBOX=${bboxString}`;\n }\n\n public override async getToolTip(strings: string[], quadId: QuadId, carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\n await super.getToolTip(strings, quadId, carto, tree);\n const infoFormats = this._capabilities?.featureInfoFormats;\n if (!doToolTips || undefined === infoFormats)\n return;\n let formatString = infoFormats.find((format) => format === \"text/html\");\n if (!formatString)\n formatString = infoFormats[0];\n\n const bboxString = this.getEPSG3857ExtentString(quadId.row, quadId.column, quadId.level);\n const layerString = this.getVisibleQueryableLayersString();\n if (layerString.length === 0)\n return;\n const rectangle = tree.getTileRectangle(quadId);\n const fraction = rectangle.worldToLocal(Point2d.create(carto.longitude, carto.latitude, scratchPoint2d))!;\n const x = Math.floor(.5 + fraction.x * this.tileSize);\n const y = Math.floor(.5 + (1.0 - fraction.y) * this.tileSize);\n const coordinateString = this._capabilities?.isVersion13 ? `&i=${x}&j=${y}` : `&x=${x}&y=${y}`;\n const crsParamName = this._capabilities?.isVersion13 ? \"CRS\" : \"SRS\";\n const getFeatureUrl = `${this._baseUrl}?SERVICE=WMS&VERSION=${this._capabilities?.version}&REQUEST=GetFeatureInfo&LAYERS=${layerString}&WIDTH=${this.tileSize}&HEIGHT=${this.tileSize}&${crsParamName}=EPSG%3A3857&BBOX=${bboxString}&QUERY_LAYERS=${layerString}${coordinateString}&info_format=${formatString}`;\n return this.toolTipFromUrl(strings, getFeatureUrl);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WmtsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.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\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ImageMapLayerSettings, IModelStatus, ServerError } from \"@itwin/core-common\";\r\nimport {\r\n ImageryMapTile,\r\n MapLayerImageryProvider,\r\n MapLayerImageryProviderStatus,\r\n QuadId,\r\n WmsUtilities, WmtsCapabilities, WmtsCapability, WmtsConstants,\r\n} from \"../../internal\";\r\n\r\ninterface TileMatrixSetAndLimits { tileMatrixSet: WmtsCapability.TileMatrixSet, limits: WmtsCapability.TileMatrixSetLimits[] | undefined }\r\n/** @internal */\r\nexport class WmtsMapLayerImageryProvider extends MapLayerImageryProvider {\r\n private _baseUrl: string;\r\n private _capabilities?: WmtsCapabilities;\r\n private _preferredLayerTileMatrixSet = new Map<string, TileMatrixSetAndLimits>();\r\n private _preferredLayerStyle = new Map<string, WmtsCapability.Style>();\r\n public displayedLayerName = \"\";\r\n\r\n public override get mutualExclusiveSubLayer(): boolean { return true; }\r\n\r\n constructor(settings: ImageMapLayerSettings) {\r\n super(settings, true);\r\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\r\n }\r\n\r\n public override async initialize(): Promise<void> {\r\n try {\r\n this._capabilities = await WmtsCapabilities.create(this._baseUrl);\r\n this.initPreferredTileMatrixSet();\r\n this.initPreferredStyle();\r\n this.initCartoRange();\r\n this.initDisplayedLayer();\r\n\r\n if (this._preferredLayerTileMatrixSet.size === 0 || this._preferredLayerStyle.size === 0)\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n } catch (error: any) {\r\n // Don't throw error if unauthorized status:\r\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\r\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n } else {\r\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\r\n }\r\n }\r\n }\r\n private initDisplayedLayer() {\r\n if (0 === this._settings.subLayers.length) {\r\n assert(false);\r\n return;\r\n }\r\n\r\n const firstDisplayedLayer = this._settings.subLayers.find((subLayer) => subLayer.visible);\r\n this.displayedLayerName = firstDisplayedLayer ? firstDisplayedLayer.name : this._settings.subLayers[0].name;\r\n }\r\n\r\n // Each layer can be served in multiple tile matrix set (i.e. TileTree).\r\n // We have to pick one for each layer: for now we look for a Google Maps compatible tile tree.\r\n private initPreferredTileMatrixSet() {\r\n const googleMapsTms = this._capabilities?.contents?.getGoogleMapsCompatibleTileMatrixSet();\r\n const wellGoogleKnownTms = googleMapsTms?.find((tms) => tms.wellKnownScaleSet?.toLowerCase().includes(WmtsConstants.GOOGLEMAPS_COMPATIBLE_WELLKNOWNNAME));\r\n\r\n this._capabilities?.contents?.layers.forEach((layer) => {\r\n let preferredTms: WmtsCapability.TileMatrixSet | undefined;\r\n\r\n if (wellGoogleKnownTms && layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === wellGoogleKnownTms.identifier)) {\r\n // Favor tile matrix set that was explicitly marked as GoogleMaps compatible\r\n preferredTms = wellGoogleKnownTms;\r\n } else {\r\n\r\n // Search all compatible tile set matrix if previous attempt didn't work.\r\n // If more than one candidate is found, pick the tile set with the most LODs.\r\n let tileMatrixSets = googleMapsTms?.filter((tms) => {\r\n return layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === tms.identifier);\r\n });\r\n\r\n if (!tileMatrixSets || tileMatrixSets.length === 0) {\r\n const eps4326CompatibleTms = this._capabilities?.contents?.getEpsg4326CompatibleTileMatrixSet();\r\n tileMatrixSets = eps4326CompatibleTms?.filter((tms) => {\r\n return layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === tms.identifier);\r\n });\r\n }\r\n\r\n if (tileMatrixSets && tileMatrixSets.length === 1)\r\n preferredTms = tileMatrixSets[0];\r\n else if (tileMatrixSets && tileMatrixSets?.length > 1)\r\n preferredTms = tileMatrixSets.reduce((prev, current) => (prev.tileMatrix.length > current.tileMatrix.length) ? prev : current);\r\n\r\n }\r\n\r\n if (preferredTms !== undefined) {\r\n const tmsLink= layer.tileMatrixSetLinks.find((tmsl) => tmsl.tileMatrixSet === preferredTms!.identifier);\r\n this._preferredLayerTileMatrixSet.set(layer.identifier, { tileMatrixSet: preferredTms, limits: tmsLink?.tileMatrixSetLimits } );\r\n }\r\n });\r\n }\r\n\r\n // Each layer can be published different style. We look for a style flagged as 'Default'.\r\n private initPreferredStyle() {\r\n this._capabilities?.contents?.layers.forEach((layer) => {\r\n let preferredStyle: WmtsCapability.Style | undefined;\r\n if (layer.styles.length === 1)\r\n preferredStyle = layer.styles[0];\r\n else if (layer.styles.length > 1) {\r\n // If more than style is available, takes the default one, otherwise the first one.\r\n const defaultStyle = layer.styles.find((style) => style.isDefault);\r\n if (defaultStyle)\r\n preferredStyle = defaultStyle;\r\n else\r\n preferredStyle = layer.styles[0];\r\n }\r\n\r\n if (preferredStyle)\r\n this._preferredLayerStyle.set(layer.identifier, preferredStyle);\r\n });\r\n }\r\n\r\n private initCartoRange() {\r\n this._capabilities?.contents?.layers.forEach((layer) => {\r\n\r\n if (layer.wsg84BoundingBox) {\r\n if (this.cartoRange)\r\n this.cartoRange.extendRange(layer.wsg84BoundingBox);\r\n else\r\n this.cartoRange = layer.wsg84BoundingBox.clone();\r\n }\r\n });\r\n }\r\n private getDisplayedTileMatrixSetAndLimits(): TileMatrixSetAndLimits | undefined {\r\n return this._preferredLayerTileMatrixSet.get(this.displayedLayerName);\r\n }\r\n\r\n protected override _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n const childIds = this.getPotentialChildIds(tile);\r\n const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();\r\n if (!matrixSetAndLimits) {\r\n assert(false); // Must always hava a matrix set.\r\n return;\r\n }\r\n const limits = matrixSetAndLimits.limits?.[tile.quadId.level + 1]?.limits;\r\n if (!limits) {\r\n resolveChildren(childIds);\r\n return;\r\n }\r\n\r\n const availableChildIds = [];\r\n for (const childId of childIds)\r\n if (limits.containsXY(childId.column, childId.row))\r\n availableChildIds.push(childId);\r\n\r\n resolveChildren(availableChildIds);\r\n }\r\n public override get useGeographicTilingScheme(): boolean {\r\n const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();\r\n return matrixSetAndLimits ? (matrixSetAndLimits?.tileMatrixSet.identifier?.includes(\"4326\") || matrixSetAndLimits?.tileMatrixSet.supportedCrs?.includes(\"4326\")) : false;\r\n }\r\n\r\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\r\n const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();\r\n const style = this._preferredLayerStyle.get(this.displayedLayerName);\r\n\r\n // Matrix identifier might be something other than standard 0..n zoom level,\r\n // so lookup the matrix identifier just in case.\r\n let tileMatrix;\r\n if (matrixSetAndLimits && matrixSetAndLimits.tileMatrixSet.tileMatrix.length > zoomLevel)\r\n tileMatrix = matrixSetAndLimits.tileMatrixSet.tileMatrix[zoomLevel].identifier;\r\n\r\n const styleParam = (style?.identifier === undefined ? \"\" : `&style=${style.identifier}`);\r\n if (tileMatrix !== undefined && matrixSetAndLimits !== undefined)\r\n return `${this._baseUrl}?Service=WMTS&Version=1.0.0&Request=GetTile&Format=image%2Fpng&layer=${this.displayedLayerName}${styleParam}&TileMatrixSet=${matrixSetAndLimits.tileMatrixSet.identifier}&TileMatrix=${tileMatrix}&TileCol=${column}&TileRow=${row} `;\r\n else\r\n return \"\";\r\n\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"WmtsMapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.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 */\nimport { assert } from \"@itwin/core-bentley\";\nimport { ImageMapLayerSettings, IModelStatus, ServerError } from \"@itwin/core-common\";\nimport {\n ImageryMapTile,\n MapLayerImageryProvider,\n MapLayerImageryProviderStatus,\n QuadId,\n WmsUtilities, WmtsCapabilities, WmtsCapability, WmtsConstants,\n} from \"../../internal\";\n\ninterface TileMatrixSetAndLimits { tileMatrixSet: WmtsCapability.TileMatrixSet, limits: WmtsCapability.TileMatrixSetLimits[] | undefined }\n/** @internal */\nexport class WmtsMapLayerImageryProvider extends MapLayerImageryProvider {\n private _baseUrl: string;\n private _capabilities?: WmtsCapabilities;\n private _preferredLayerTileMatrixSet = new Map<string, TileMatrixSetAndLimits>();\n private _preferredLayerStyle = new Map<string, WmtsCapability.Style>();\n public displayedLayerName = \"\";\n\n public override get mutualExclusiveSubLayer(): boolean { return true; }\n\n constructor(settings: ImageMapLayerSettings) {\n super(settings, true);\n this._baseUrl = WmsUtilities.getBaseUrl(this._settings.url);\n }\n\n public override async initialize(): Promise<void> {\n try {\n this._capabilities = await WmtsCapabilities.create(this._baseUrl);\n this.initPreferredTileMatrixSet();\n this.initPreferredStyle();\n this.initCartoRange();\n this.initDisplayedLayer();\n\n if (this._preferredLayerTileMatrixSet.size === 0 || this._preferredLayerStyle.size === 0)\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n } catch (error: any) {\n // Don't throw error if unauthorized status:\n // We want the tile tree to be created, so that end-user can get feedback on which layer is missing credentials.\n // When credentials will be provided, a new provider will be created, and initialization should be fine.\n if (error?.status === 401) {\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\n } else {\n throw new ServerError(IModelStatus.ValidationFailed, \"\");\n }\n }\n }\n private initDisplayedLayer() {\n if (0 === this._settings.subLayers.length) {\n assert(false);\n return;\n }\n\n const firstDisplayedLayer = this._settings.subLayers.find((subLayer) => subLayer.visible);\n this.displayedLayerName = firstDisplayedLayer ? firstDisplayedLayer.name : this._settings.subLayers[0].name;\n }\n\n // Each layer can be served in multiple tile matrix set (i.e. TileTree).\n // We have to pick one for each layer: for now we look for a Google Maps compatible tile tree.\n private initPreferredTileMatrixSet() {\n const googleMapsTms = this._capabilities?.contents?.getGoogleMapsCompatibleTileMatrixSet();\n const wellGoogleKnownTms = googleMapsTms?.find((tms) => tms.wellKnownScaleSet?.toLowerCase().includes(WmtsConstants.GOOGLEMAPS_COMPATIBLE_WELLKNOWNNAME));\n\n this._capabilities?.contents?.layers.forEach((layer) => {\n let preferredTms: WmtsCapability.TileMatrixSet | undefined;\n\n if (wellGoogleKnownTms && layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === wellGoogleKnownTms.identifier)) {\n // Favor tile matrix set that was explicitly marked as GoogleMaps compatible\n preferredTms = wellGoogleKnownTms;\n } else {\n\n // Search all compatible tile set matrix if previous attempt didn't work.\n // If more than one candidate is found, pick the tile set with the most LODs.\n let tileMatrixSets = googleMapsTms?.filter((tms) => {\n return layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === tms.identifier);\n });\n\n if (!tileMatrixSets || tileMatrixSets.length === 0) {\n const eps4326CompatibleTms = this._capabilities?.contents?.getEpsg4326CompatibleTileMatrixSet();\n tileMatrixSets = eps4326CompatibleTms?.filter((tms) => {\n return layer.tileMatrixSetLinks.some((tmsl) => tmsl.tileMatrixSet === tms.identifier);\n });\n }\n\n if (tileMatrixSets && tileMatrixSets.length === 1)\n preferredTms = tileMatrixSets[0];\n else if (tileMatrixSets && tileMatrixSets?.length > 1)\n preferredTms = tileMatrixSets.reduce((prev, current) => (prev.tileMatrix.length > current.tileMatrix.length) ? prev : current);\n\n }\n\n if (preferredTms !== undefined) {\n const tmsLink= layer.tileMatrixSetLinks.find((tmsl) => tmsl.tileMatrixSet === preferredTms!.identifier);\n this._preferredLayerTileMatrixSet.set(layer.identifier, { tileMatrixSet: preferredTms, limits: tmsLink?.tileMatrixSetLimits } );\n }\n });\n }\n\n // Each layer can be published different style. We look for a style flagged as 'Default'.\n private initPreferredStyle() {\n this._capabilities?.contents?.layers.forEach((layer) => {\n let preferredStyle: WmtsCapability.Style | undefined;\n if (layer.styles.length === 1)\n preferredStyle = layer.styles[0];\n else if (layer.styles.length > 1) {\n // If more than style is available, takes the default one, otherwise the first one.\n const defaultStyle = layer.styles.find((style) => style.isDefault);\n if (defaultStyle)\n preferredStyle = defaultStyle;\n else\n preferredStyle = layer.styles[0];\n }\n\n if (preferredStyle)\n this._preferredLayerStyle.set(layer.identifier, preferredStyle);\n });\n }\n\n private initCartoRange() {\n this._capabilities?.contents?.layers.forEach((layer) => {\n\n if (layer.wsg84BoundingBox) {\n if (this.cartoRange)\n this.cartoRange.extendRange(layer.wsg84BoundingBox);\n else\n this.cartoRange = layer.wsg84BoundingBox.clone();\n }\n });\n }\n private getDisplayedTileMatrixSetAndLimits(): TileMatrixSetAndLimits | undefined {\n return this._preferredLayerTileMatrixSet.get(this.displayedLayerName);\n }\n\n protected override _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\n const childIds = this.getPotentialChildIds(tile);\n const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();\n if (!matrixSetAndLimits) {\n assert(false); // Must always hava a matrix set.\n return;\n }\n const limits = matrixSetAndLimits.limits?.[tile.quadId.level + 1]?.limits;\n if (!limits) {\n resolveChildren(childIds);\n return;\n }\n\n const availableChildIds = [];\n for (const childId of childIds)\n if (limits.containsXY(childId.column, childId.row))\n availableChildIds.push(childId);\n\n resolveChildren(availableChildIds);\n }\n public override get useGeographicTilingScheme(): boolean {\n const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();\n return matrixSetAndLimits ? (matrixSetAndLimits?.tileMatrixSet.identifier?.includes(\"4326\") || matrixSetAndLimits?.tileMatrixSet.supportedCrs?.includes(\"4326\")) : false;\n }\n\n public async constructUrl(row: number, column: number, zoomLevel: number): Promise<string> {\n const matrixSetAndLimits = this.getDisplayedTileMatrixSetAndLimits();\n const style = this._preferredLayerStyle.get(this.displayedLayerName);\n\n // Matrix identifier might be something other than standard 0..n zoom level,\n // so lookup the matrix identifier just in case.\n let tileMatrix;\n if (matrixSetAndLimits && matrixSetAndLimits.tileMatrixSet.tileMatrix.length > zoomLevel)\n tileMatrix = matrixSetAndLimits.tileMatrixSet.tileMatrix[zoomLevel].identifier;\n\n const styleParam = (style?.identifier === undefined ? \"\" : `&style=${style.identifier}`);\n if (tileMatrix !== undefined && matrixSetAndLimits !== undefined)\n return `${this._baseUrl}?Service=WMTS&Version=1.0.0&Request=GetTile&Format=image%2Fpng&layer=${this.displayedLayerName}${styleParam}&TileMatrixSet=${matrixSetAndLimits.tileMatrixSet.identifier}&TileMatrix=${tileMatrix}&TileCol=${column}&TileRow=${row} `;\n else\n return \"\";\n\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MapCartoRectangle.js","sourceRoot":"","sources":["../../../../src/tile/map/MapCartoRectangle.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 { Angle, Point2d, Range2d } from \"@itwin/core-geometry\";\r\nimport { Cartographic } from \"@itwin/core-common\";\r\nimport { GlobalLocation, GlobalLocationArea } from \"../../ViewGlobalLocation\";\r\nimport { MapTilingScheme } from \"../internal\";\r\n\r\nconst scratchMercatorFractionRange = Range2d.createNull();\r\nconst scratchPoint2d = Point2d.createZero();\r\n\r\n/** A specialization of [Range2d]($core-geometry) representing a [Cartographic]($common) region on the surface of the Earth,\r\n * used by [[MapTile]]s.\r\n * The `x` components of the `low` and `high` points refer to the western and eastern longitudes, respectively.\r\n * The `y` components of the `low` and `high` points refer to the southern and northern latitudes, respectively.\r\n * Longitudes are stored in radians in the range [-pi, pi].\r\n * Latitudes are stored in radians in the range [-pi/2, pi/2].\r\n * @public\r\n */\r\nexport class MapCartoRectangle extends Range2d {\r\n /** Construct a new rectangle with angles specified in radians.\r\n * @param west The western longitude in radians, in [-pi, pi].\r\n * @param south The southern latitude in radians, in [-pi/2, pi/2].\r\n * @param east The eastern latitude in radians, in [-pi, pi].\r\n * @param north The northern latitude in radians, in [-pi/2, pi/2].\r\n * @note If `north` is less than `south`, they will be swapped.\r\n * @see [[fromRadians]], [[fromDegrees]], [[createZero]], and [[createMaximum]] to construct a new rectangle.\r\n */\r\n protected constructor(west: number, south: number, east: number, north: number) {\r\n super(west, Math.min(south, north), east, Math.max(south, north));\r\n }\r\n\r\n /** Create a rectangle with all angles set to zero. */\r\n public static createZero(): MapCartoRectangle {\r\n return new MapCartoRectangle(0, 0, 0, 0);\r\n }\r\n\r\n /** Create a rectangle encompassing all points on the surface of the Earth. */\r\n public static createMaximum(): MapCartoRectangle {\r\n return new MapCartoRectangle(-Angle.piRadians, -Angle.piOver2Radians, Angle.piRadians, Angle.piOver2Radians);\r\n }\r\n\r\n /** Create a new rectangle with angles specified in radians.\r\n * @param west The western longitude in radians, in [-pi, pi].\r\n * @param south The southern latitude in radians, in [-pi/2, pi/2].\r\n * @param east The eastern latitude in radians, in [-pi, pi].\r\n * @param north The northern latitude in radians, in [-pi/2, pi/2].\r\n * @param result An optional preallocated rectangle to hold the result.\r\n * @note If `north` is less than `south`, they will be swapped.\r\n */\r\n public static fromRadians(west: number, south: number, east: number, north: number, result?: MapCartoRectangle): MapCartoRectangle {\r\n result = result ?? MapCartoRectangle.createZero();\r\n result.setRadians(west, south, east, north);\r\n return result;\r\n }\r\n\r\n /** Create a new rectangle with angles specified in degrees.\r\n * @param west The western longitude in degrees, in [-180, 180].\r\n * @param south The southern latitude in degrees, in [-90, 90].\r\n * @param east The eastern latitude in degrees, in [-180, 180].\r\n * @param north The northern latitude in degrees, in [-90, 90].\r\n * @param result An optional preallocated rectangle to hold the result.\r\n * @note If `north` is less than `south`, they will be swapped.\r\n */\r\n public static fromDegrees(west: number, south: number, east: number, north: number, result?: MapCartoRectangle): MapCartoRectangle {\r\n const mult = Angle.radiansPerDegree;\r\n return MapCartoRectangle.fromRadians(west * mult, south * mult, east * mult, north * mult, result);\r\n }\r\n\r\n /** The western longitude in radians. */\r\n public get west() { return this.low.x; }\r\n public set west(x: number) { this.low.x = x; }\r\n\r\n /** The southern latitude in radians. */\r\n public get south() { return this.low.y; }\r\n public set south(y: number) { this.low.y = y; }\r\n\r\n /** The eastern longitude in radians. */\r\n public get east() { return this.high.x; }\r\n public set east(x: number) { this.high.x = x; }\r\n\r\n /** The northern latitude in radians. */\r\n public get north() { return this.high.y; }\r\n public set north(y: number) { this.high.y = y; }\r\n\r\n /** A non-localized string representation of this rectangle, for debugging purposes. */\r\n public get latLongString() {\r\n return `Latitude: ${this.low.y * Angle.degreesPerRadian} - ${this.high.y * Angle.degreesPerRadian} Longitude: ${this.low.x * Angle.degreesPerRadian} - ${this.high.x * Angle.degreesPerRadian}`;\r\n }\r\n\r\n /** A pair of [[Cartographic]]s representing the same area as this rectangle. */\r\n public get globalLocationArea(): GlobalLocationArea {\r\n return {\r\n southwest: Cartographic.fromRadians({longitude: this.west, latitude: this.south}),\r\n northeast: Cartographic.fromRadians({longitude: this.east, latitude: this.north}),\r\n };\r\n }\r\n\r\n /** The cartographic center of this rectangle. */\r\n public get cartoCenter(): Cartographic {\r\n return Cartographic.fromRadians({\r\n longitude: (this.low.x + this.high.x) / 2,\r\n latitude: (this.low.y + this.high.y) / 2,\r\n });\r\n }\r\n\r\n /** The [[globalLocationArea]] and [[cartoCenter]] of this rectangle. */\r\n public get globalLocation(): GlobalLocation {\r\n return {\r\n center: this.cartoCenter,\r\n area: this.globalLocationArea,\r\n };\r\n }\r\n\r\n /** Reinitialize this rectangle using angles specified in radians.\r\n * @param west The western longitude in radians, in [-pi, pi].\r\n * @param south The southern latitude in radians, in [-pi/2, pi/2].\r\n * @param east The eastern latitude in radians, in [-pi, pi].\r\n * @param north The northern latitude in radians, in [-pi/2, pi/2].\r\n * @note If `north` is less than `south`, they will be swapped.\r\n */\r\n public setRadians(west = 0, south = 0, east = 0, north = 0) {\r\n this.west = west;\r\n this.south = south;\r\n this.east = east;\r\n this.north = north;\r\n }\r\n\r\n /** Returns true if the specified cartographic location is contained within this rectangle's area, ignoring elevation. */\r\n public containsCartographic(carto: Cartographic) {\r\n return this.containsXY(carto.longitude, carto.latitude);\r\n }\r\n\r\n /** Returns the position at the center of this rectangle, at an elevation of zero.\r\n * @param result An optional preallocated Cartographic to store the result.\r\n * @returns the center of this rectangle.\r\n */\r\n public getCenter(result?: Cartographic): Cartographic {\r\n return Cartographic.fromRadians({\r\n longitude: (this.west + this.east) / 2,\r\n latitude: (this.north + this.south) / 2,\r\n height: 0,\r\n }, result);\r\n }\r\n\r\n /** Computes fractional coordinates of the specified position within this rectangle's area.\r\n * @see [Range2d.worldToLocal]($core-geometry)\r\n */\r\n public fractionFromCartographic(carto: Cartographic): Point2d | undefined {\r\n const pt = Point2d.create(carto.longitude, carto.latitude, scratchPoint2d);\r\n return this.worldToLocal(pt);\r\n }\r\n\r\n /** @internal */\r\n public getTileFractionRange(tilingScheme: MapTilingScheme) {\r\n scratchMercatorFractionRange.low.x = tilingScheme.longitudeToXFraction(this.low.x);\r\n scratchMercatorFractionRange.high.x = tilingScheme.longitudeToXFraction(this.high.x);\r\n scratchMercatorFractionRange.low.y = tilingScheme.latitudeToYFraction(this.low.y);\r\n scratchMercatorFractionRange.high.y = tilingScheme.latitudeToYFraction(this.high.y);\r\n\r\n return scratchMercatorFractionRange;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapCartoRectangle.js","sourceRoot":"","sources":["../../../../src/tile/map/MapCartoRectangle.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 { Angle, Point2d, Range2d } from \"@itwin/core-geometry\";\nimport { Cartographic } from \"@itwin/core-common\";\nimport { GlobalLocation, GlobalLocationArea } from \"../../ViewGlobalLocation\";\nimport { MapTilingScheme } from \"../internal\";\n\nconst scratchMercatorFractionRange = Range2d.createNull();\nconst scratchPoint2d = Point2d.createZero();\n\n/** A specialization of [Range2d]($core-geometry) representing a [Cartographic]($common) region on the surface of the Earth,\n * used by [[MapTile]]s.\n * The `x` components of the `low` and `high` points refer to the western and eastern longitudes, respectively.\n * The `y` components of the `low` and `high` points refer to the southern and northern latitudes, respectively.\n * Longitudes are stored in radians in the range [-pi, pi].\n * Latitudes are stored in radians in the range [-pi/2, pi/2].\n * @public\n */\nexport class MapCartoRectangle extends Range2d {\n /** Construct a new rectangle with angles specified in radians.\n * @param west The western longitude in radians, in [-pi, pi].\n * @param south The southern latitude in radians, in [-pi/2, pi/2].\n * @param east The eastern latitude in radians, in [-pi, pi].\n * @param north The northern latitude in radians, in [-pi/2, pi/2].\n * @note If `north` is less than `south`, they will be swapped.\n * @see [[fromRadians]], [[fromDegrees]], [[createZero]], and [[createMaximum]] to construct a new rectangle.\n */\n protected constructor(west: number, south: number, east: number, north: number) {\n super(west, Math.min(south, north), east, Math.max(south, north));\n }\n\n /** Create a rectangle with all angles set to zero. */\n public static createZero(): MapCartoRectangle {\n return new MapCartoRectangle(0, 0, 0, 0);\n }\n\n /** Create a rectangle encompassing all points on the surface of the Earth. */\n public static createMaximum(): MapCartoRectangle {\n return new MapCartoRectangle(-Angle.piRadians, -Angle.piOver2Radians, Angle.piRadians, Angle.piOver2Radians);\n }\n\n /** Create a new rectangle with angles specified in radians.\n * @param west The western longitude in radians, in [-pi, pi].\n * @param south The southern latitude in radians, in [-pi/2, pi/2].\n * @param east The eastern latitude in radians, in [-pi, pi].\n * @param north The northern latitude in radians, in [-pi/2, pi/2].\n * @param result An optional preallocated rectangle to hold the result.\n * @note If `north` is less than `south`, they will be swapped.\n */\n public static fromRadians(west: number, south: number, east: number, north: number, result?: MapCartoRectangle): MapCartoRectangle {\n result = result ?? MapCartoRectangle.createZero();\n result.setRadians(west, south, east, north);\n return result;\n }\n\n /** Create a new rectangle with angles specified in degrees.\n * @param west The western longitude in degrees, in [-180, 180].\n * @param south The southern latitude in degrees, in [-90, 90].\n * @param east The eastern latitude in degrees, in [-180, 180].\n * @param north The northern latitude in degrees, in [-90, 90].\n * @param result An optional preallocated rectangle to hold the result.\n * @note If `north` is less than `south`, they will be swapped.\n */\n public static fromDegrees(west: number, south: number, east: number, north: number, result?: MapCartoRectangle): MapCartoRectangle {\n const mult = Angle.radiansPerDegree;\n return MapCartoRectangle.fromRadians(west * mult, south * mult, east * mult, north * mult, result);\n }\n\n /** The western longitude in radians. */\n public get west() { return this.low.x; }\n public set west(x: number) { this.low.x = x; }\n\n /** The southern latitude in radians. */\n public get south() { return this.low.y; }\n public set south(y: number) { this.low.y = y; }\n\n /** The eastern longitude in radians. */\n public get east() { return this.high.x; }\n public set east(x: number) { this.high.x = x; }\n\n /** The northern latitude in radians. */\n public get north() { return this.high.y; }\n public set north(y: number) { this.high.y = y; }\n\n /** A non-localized string representation of this rectangle, for debugging purposes. */\n public get latLongString() {\n return `Latitude: ${this.low.y * Angle.degreesPerRadian} - ${this.high.y * Angle.degreesPerRadian} Longitude: ${this.low.x * Angle.degreesPerRadian} - ${this.high.x * Angle.degreesPerRadian}`;\n }\n\n /** A pair of [[Cartographic]]s representing the same area as this rectangle. */\n public get globalLocationArea(): GlobalLocationArea {\n return {\n southwest: Cartographic.fromRadians({longitude: this.west, latitude: this.south}),\n northeast: Cartographic.fromRadians({longitude: this.east, latitude: this.north}),\n };\n }\n\n /** The cartographic center of this rectangle. */\n public get cartoCenter(): Cartographic {\n return Cartographic.fromRadians({\n longitude: (this.low.x + this.high.x) / 2,\n latitude: (this.low.y + this.high.y) / 2,\n });\n }\n\n /** The [[globalLocationArea]] and [[cartoCenter]] of this rectangle. */\n public get globalLocation(): GlobalLocation {\n return {\n center: this.cartoCenter,\n area: this.globalLocationArea,\n };\n }\n\n /** Reinitialize this rectangle using angles specified in radians.\n * @param west The western longitude in radians, in [-pi, pi].\n * @param south The southern latitude in radians, in [-pi/2, pi/2].\n * @param east The eastern latitude in radians, in [-pi, pi].\n * @param north The northern latitude in radians, in [-pi/2, pi/2].\n * @note If `north` is less than `south`, they will be swapped.\n */\n public setRadians(west = 0, south = 0, east = 0, north = 0) {\n this.west = west;\n this.south = south;\n this.east = east;\n this.north = north;\n }\n\n /** Returns true if the specified cartographic location is contained within this rectangle's area, ignoring elevation. */\n public containsCartographic(carto: Cartographic) {\n return this.containsXY(carto.longitude, carto.latitude);\n }\n\n /** Returns the position at the center of this rectangle, at an elevation of zero.\n * @param result An optional preallocated Cartographic to store the result.\n * @returns the center of this rectangle.\n */\n public getCenter(result?: Cartographic): Cartographic {\n return Cartographic.fromRadians({\n longitude: (this.west + this.east) / 2,\n latitude: (this.north + this.south) / 2,\n height: 0,\n }, result);\n }\n\n /** Computes fractional coordinates of the specified position within this rectangle's area.\n * @see [Range2d.worldToLocal]($core-geometry)\n */\n public fractionFromCartographic(carto: Cartographic): Point2d | undefined {\n const pt = Point2d.create(carto.longitude, carto.latitude, scratchPoint2d);\n return this.worldToLocal(pt);\n }\n\n /** @internal */\n public getTileFractionRange(tilingScheme: MapTilingScheme) {\n scratchMercatorFractionRange.low.x = tilingScheme.longitudeToXFraction(this.low.x);\n scratchMercatorFractionRange.high.x = tilingScheme.longitudeToXFraction(this.high.x);\n scratchMercatorFractionRange.low.y = tilingScheme.latitudeToYFraction(this.low.y);\n scratchMercatorFractionRange.high.y = tilingScheme.latitudeToYFraction(this.high.y);\n\n return scratchMercatorFractionRange;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MapFeatureInfo.js","sourceRoot":"","sources":["../../../../src/tile/map/MapFeatureInfo.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAuB,cAAc,EAAiB,MAAM,uBAAuB,CAAC;AAG3F,aAAa;AACb,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IACtD,YAAmB,KAAoB,EAAE,QAA6B;QACpE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzB,CAAC;CACF","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 MapLayers\r\n */\r\n\r\nimport { PropertyDescription, PropertyRecord, PropertyValue } from \"@itwin/appui-abstract\";\r\nimport { Cartographic } from \"@itwin/core-common\";\r\n\r\n/** @alpha */\r\nexport class MapFeatureInfoRecord extends PropertyRecord {\r\n public constructor(value: PropertyValue, property: PropertyDescription) {\r\n super(value, property);\r\n }\r\n}\r\n\r\n/** @alpha */\r\nexport interface MapFeatureInfo {\r\n layerInfo?: MapLayerFeatureInfo[];\r\n hitPoint?: Cartographic;\r\n}\r\n\r\n/** @alpha */\r\nexport interface MapLayerFeatureInfo {\r\n layerName: string;\r\n info?: MapSubLayerFeatureInfo[] | HTMLElement;\r\n}\r\n\r\n/** @alpha */\r\nexport interface MapSubLayerFeatureInfo {\r\n subLayerName: string;\r\n displayFieldName?: string;\r\n records?: MapFeatureInfoRecord[];\r\n}\r\n"]}
1
+ {"version":3,"file":"MapFeatureInfo.js","sourceRoot":"","sources":["../../../../src/tile/map/MapFeatureInfo.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAuB,cAAc,EAAiB,MAAM,uBAAuB,CAAC;AAG3F,aAAa;AACb,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IACtD,YAAmB,KAAoB,EAAE,QAA6B;QACpE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzB,CAAC;CACF","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 { PropertyDescription, PropertyRecord, PropertyValue } from \"@itwin/appui-abstract\";\nimport { Cartographic } from \"@itwin/core-common\";\n\n/** @alpha */\nexport class MapFeatureInfoRecord extends PropertyRecord {\n public constructor(value: PropertyValue, property: PropertyDescription) {\n super(value, property);\n }\n}\n\n/** @alpha */\nexport interface MapFeatureInfo {\n layerInfo?: MapLayerFeatureInfo[];\n hitPoint?: Cartographic;\n}\n\n/** @alpha */\nexport interface MapLayerFeatureInfo {\n layerName: string;\n info?: MapSubLayerFeatureInfo[] | HTMLElement;\n}\n\n/** @alpha */\nexport interface MapSubLayerFeatureInfo {\n subLayerName: string;\n displayFieldName?: string;\n records?: MapFeatureInfoRecord[];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerAuthentication.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerAuthentication.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","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 MapLayers\r\n */\r\n\r\nimport { BeEvent, Listener } from \"@itwin/core-bentley\";\r\n\r\n/** @beta */\r\nexport interface MapLayerTokenEndpoint {\r\n getLoginUrl(stateData?: any): string | undefined;\r\n getUrl(): string;\r\n}\r\n\r\n/** @beta */\r\nexport interface MapLayerAuthenticationInfo {\r\n tokenEndpoint?: MapLayerTokenEndpoint;\r\n}\r\n\r\n/** @beta */\r\nexport interface MapLayerAccessToken {\r\n // The generated token.\r\n token: string;\r\n}\r\n\r\n/** @beta */\r\nexport interface MapLayerAccessTokenParams {\r\n mapLayerUrl: URL;\r\n\r\n // credentials are used to generate non-oauth tokens (i.e ArcGIS legacy tokens)\r\n userName?: string;\r\n password?: string;\r\n}\r\n\r\n/** @beta */\r\nexport interface MapLayerAccessClient {\r\n getAccessToken(params: MapLayerAccessTokenParams): Promise<MapLayerAccessToken | undefined>;\r\n getTokenServiceEndPoint?(mapLayerUrl: string): Promise<MapLayerTokenEndpoint | undefined>;\r\n invalidateToken?(token: MapLayerAccessToken): boolean;\r\n\r\n onOAuthProcessEnd?: BeEvent<Listener>;\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"MapLayerAuthentication.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerAuthentication.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","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 { BeEvent, Listener } from \"@itwin/core-bentley\";\n\n/** @beta */\nexport interface MapLayerTokenEndpoint {\n getLoginUrl(stateData?: any): string | undefined;\n getUrl(): string;\n}\n\n/** @beta */\nexport interface MapLayerAuthenticationInfo {\n tokenEndpoint?: MapLayerTokenEndpoint;\n}\n\n/** @beta */\nexport interface MapLayerAccessToken {\n // The generated token.\n token: string;\n}\n\n/** @beta */\nexport interface MapLayerAccessTokenParams {\n mapLayerUrl: URL;\n\n // credentials are used to generate non-oauth tokens (i.e ArcGIS legacy tokens)\n userName?: string;\n password?: string;\n}\n\n/** @beta */\nexport interface MapLayerAccessClient {\n getAccessToken(params: MapLayerAccessTokenParams): Promise<MapLayerAccessToken | undefined>;\n getTokenServiceEndPoint?(mapLayerUrl: string): Promise<MapLayerTokenEndpoint | undefined>;\n invalidateToken?(token: MapLayerAccessToken): boolean;\n\n onOAuthProcessEnd?: BeEvent<Listener>;\n}\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerFormatRegistry.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerFormatRegistry.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 MapLayers\r\n */\r\n\r\nimport { assert, Logger } from \"@itwin/core-bentley\";\r\nimport { ImageMapLayerSettings, MapLayerKey, MapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { ImageryMapLayerTreeReference, internalMapLayerImageryFormats, MapLayerAccessClient, MapLayerAuthenticationInfo, MapLayerImageryProvider, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\r\nconst loggerCategory = \"ArcGISFeatureProvider\";\r\n\r\n/** Class representing a map-layer format.\r\n * Each format has it's unique 'formatId' string, used to uniquely identify a format in the [[MapLayerFormatRegistry]].\r\n * When creating an [[ImageMapLayerSettings]] object, a format needs to be specified this 'formatId'.\r\n * The MapLayerFormat object can later be used to validate a source, or create a provider.\r\n *\r\n * Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].\r\n * @public\r\n */\r\nexport class MapLayerFormat {\r\n public static formatId: string;\r\n\r\n /** Register the current format in the [[MapLayerFormatRegistry]].\r\n */\r\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\r\n\r\n /** Allow a source of a specific to be validated before being attached as a map-layer.\r\n */\r\n public static async validateSource(_url: string, _userName?: string, _password?: string, _ignoreCache?: boolean): Promise<MapLayerSourceValidation> { return { status: MapLayerSourceStatus.Valid }; }\r\n\r\n /** Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile Tree.\r\n * @internal\r\n */\r\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\r\n\r\n /** @internal */\r\n public static createMapLayerTree(_layerSettings: MapLayerSettings, _layerIndex: number, _iModel: IModelConnection): MapLayerTileTreeReference | undefined {\r\n assert(false);\r\n return undefined;\r\n }\r\n\r\n}\r\n\r\n/** The type of a map layer format.\r\n * @public\r\n */\r\nexport type MapLayerFormatType = typeof MapLayerFormat;\r\n\r\n/** @public */\r\nexport interface MapLayerSourceValidation {\r\n status: MapLayerSourceStatus;\r\n subLayers?: MapSubLayerProps[];\r\n\r\n /** @beta */\r\n authInfo?: MapLayerAuthenticationInfo;\r\n}\r\n\r\n/**\r\n * Options supplied at startup via [[IModelAppOptions.mapLayerOptions]] to specify access keys for various map layer formats.\r\n * 'BingMaps' must have it's key value set to 'key'\r\n * 'MapboxImagery' must have it's key value set to 'access_token'\r\n *\r\n * @public\r\n */\r\nexport interface MapLayerOptions {\r\n /** Access key for Azure Maps in the format `{ key: \"subscription-key\", value: \"your-azure-maps-key\" }`. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n AzureMaps?: MapLayerKey;\r\n /** Access key for Mapbox in the format `{ key: \"access_token\", value: \"your-mapbox-key\" }`. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n MapboxImagery?: MapLayerKey;\r\n /** Access key for Bing Maps in the format `{ key: \"key\", value: \"your-bing-maps-key\" }`. */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n BingMaps?: MapLayerKey;\r\n /** Access keys for additional map layer formats. */\r\n [format: string]: MapLayerKey | undefined;\r\n}\r\n\r\n/** @internal */\r\nexport interface MapLayerFormatEntry {\r\n type: MapLayerFormatType;\r\n accessClient?: MapLayerAccessClient;\r\n}\r\n\r\n/** A registry of MapLayerFormats identified by their unique format IDs. The registry can be accessed via [[IModelApp.mapLayerFormatRegistry]].\r\n * @public\r\n */\r\nexport class MapLayerFormatRegistry {\r\n private _configOptions: MapLayerOptions;\r\n constructor(opts?: MapLayerOptions) {\r\n this._configOptions = opts ?? {};\r\n internalMapLayerImageryFormats.forEach((format) => this.register(format));\r\n }\r\n private _formats = new Map<string, MapLayerFormatEntry>();\r\n\r\n public isRegistered(formatId: string) { return this._formats.get(formatId) !== undefined; }\r\n\r\n public register(formatClass: MapLayerFormatType) {\r\n if (formatClass.formatId.length === 0)\r\n return; // must be an abstract class, ignore it\r\n\r\n this._formats.set(formatClass.formatId, { type: formatClass });\r\n }\r\n\r\n /** @beta */\r\n public setAccessClient(formatId: string, accessClient: MapLayerAccessClient): boolean {\r\n const entry = this._formats.get(formatId);\r\n if (entry !== undefined) {\r\n entry.accessClient = accessClient;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** @beta */\r\n public getAccessClient(formatId: string): MapLayerAccessClient | undefined {\r\n if (formatId.length === 0)\r\n return undefined;\r\n\r\n return this._formats.get(formatId)?.accessClient;\r\n }\r\n\r\n public get configOptions(): MapLayerOptions {\r\n return this._configOptions;\r\n }\r\n\r\n /** @internal */\r\n public createImageryMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): ImageryMapLayerTreeReference | undefined {\r\n const entry = this._formats.get(layerSettings.formatId);\r\n const format = entry?.type;\r\n if (format === undefined) {\r\n Logger.logError(loggerCategory, `Could not find format '${layerSettings.formatId}' in registry`);\r\n return undefined;\r\n }\r\n return format.createMapLayerTree(layerSettings, layerIndex, iModel) as ImageryMapLayerTreeReference;\r\n }\r\n\r\n /** Returns a [[MapLayerImageryProvider]] based on the provided [[ImageMapLayerSettings]] object.\r\n * @internal\r\n */\r\n public createImageryProvider(layerSettings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n const entry = this._formats.get(layerSettings.formatId);\r\n const format = entry?.type;\r\n if (this._configOptions[layerSettings.formatId] !== undefined) {\r\n const keyValuePair = this._configOptions[layerSettings.formatId]!;\r\n const key: MapLayerKey = { key: keyValuePair.key, value: keyValuePair.value };\r\n layerSettings = layerSettings.clone({ accessKey: key });\r\n }\r\n return (format === undefined) ? undefined : format.createImageryProvider(layerSettings);\r\n }\r\n\r\n public async validateSource(formatId: string, url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n const entry = this._formats.get(formatId);\r\n const format = entry?.type;\r\n return (format === undefined) ? { status: MapLayerSourceStatus.InvalidFormat } : format.validateSource(url, userName, password, ignoreCache);\r\n }\r\n}\r\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, 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, MapLayerSourceStatus, MapLayerTileTreeReference } from \"../internal\";\nconst loggerCategory = \"ArcGISFeatureProvider\";\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 and [[MapLayerFormat.createImageryProvider]].\n * @public\n */\nexport class MapLayerFormat {\n public static formatId: string;\n\n /** Register the current format in the [[MapLayerFormatRegistry]].\n */\n public static register() { IModelApp.mapLayerFormatRegistry.register(this); }\n\n /** Allow a source of a specific to be validated before being attached as a map-layer.\n */\n public static async validateSource(_url: string, _userName?: string, _password?: string, _ignoreCache?: boolean): Promise<MapLayerSourceValidation> { return { status: MapLayerSourceStatus.Valid }; }\n\n /** Create a [[MapLayerImageryProvider]] that will be used to feed data in a map-layer tile Tree.\n * @internal\n */\n public static createImageryProvider(_settings: MapLayerSettings): MapLayerImageryProvider | undefined { assert(false); }\n\n /** @internal */\n public static createMapLayerTree(_layerSettings: MapLayerSettings, _layerIndex: number, _iModel: IModelConnection): MapLayerTileTreeReference | undefined {\n assert(false);\n return undefined;\n }\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/** 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 /** 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 public async validateSource(formatId: string, url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\n const entry = this._formats.get(formatId);\n const format = entry?.type;\n return (format === undefined) ? { status: MapLayerSourceStatus.InvalidFormat } : format.validateSource(url, userName, password, ignoreCache);\n }\n}\n"]}
@@ -269,11 +269,11 @@ export class MapLayerImageryProvider {
269
269
  getEPSG4326ExtentString(row, column, zoomLevel, latLongAxisOrdering) {
270
270
  const tileExtent = this.getEPSG4326Extent(row, column, zoomLevel);
271
271
  if (latLongAxisOrdering) {
272
- return `${tileExtent.latitudeBottom.toFixed(8)},${tileExtent.longitudeLeft.toFixed(8)},
272
+ return `${tileExtent.latitudeBottom.toFixed(8)},${tileExtent.longitudeLeft.toFixed(8)},
273
273
  ${tileExtent.latitudeTop.toFixed(8)},${tileExtent.longitudeRight.toFixed(8)}`;
274
274
  }
275
275
  else {
276
- return `${tileExtent.longitudeLeft.toFixed(8)},${tileExtent.latitudeBottom.toFixed(8)},
276
+ return `${tileExtent.longitudeLeft.toFixed(8)},${tileExtent.latitudeBottom.toFixed(8)},
277
277
  ${tileExtent.longitudeRight.toFixed(8)},${tileExtent.latitudeTop.toFixed(8)}`;
278
278
  }
279
279
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.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 MapLayers\r\n */\r\n\r\nimport { assert, BeEvent } from \"@itwin/core-bentley\";\r\nimport { Base64EncodedString, Cartographic, ImageMapLayerSettings, ImageSource, ImageSourceFormat } from \"@itwin/core-common\";\r\nimport { Angle } from \"@itwin/core-geometry\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../NotificationManager\";\r\nimport { ScreenViewport } from \"../../Viewport\";\r\nimport { GeographicTilingScheme, ImageryMapTile, ImageryMapTileTree, MapCartoRectangle, MapLayerFeatureInfo, MapTilingScheme, QuadId, WebMercatorTilingScheme } from \"../internal\";\r\n\r\n/** @internal */\r\nconst tileImageSize = 256, untiledImageSize = 256;\r\nconst earthRadius = 6378137;\r\nconst doDebugToolTips = false;\r\n\r\n/** The status of the map layer imagery provider that lets you know if authentication is needed to request tiles.\r\n * @public\r\n */\r\nexport enum MapLayerImageryProviderStatus {\r\n Valid,\r\n RequireAuth,\r\n}\r\n\r\n/** Abstract class for map layer imagery providers.\r\n * Map layer imagery providers request and provide tile images and other data. Each map layer from a separate source needs its own imagery provider object.\r\n * @beta\r\n */\r\nexport abstract class MapLayerImageryProvider {\r\n protected _hasSuccessfullyFetchedTile = false;\r\n public readonly onStatusChanged = new BeEvent<(provider: MapLayerImageryProvider) => void>();\r\n\r\n /** @internal */\r\n private readonly _mercatorTilingScheme = new WebMercatorTilingScheme();\r\n\r\n /** @internal */\r\n private readonly _geographicTilingScheme = new GeographicTilingScheme();\r\n\r\n /** @internal */\r\n private _status = MapLayerImageryProviderStatus.Valid;\r\n\r\n /** @internal */\r\n public get status() { return this._status; }\r\n\r\n public resetStatus() { this.setStatus(MapLayerImageryProviderStatus.Valid); }\r\n\r\n /** @internal */\r\n public get tileSize(): number { return this._usesCachedTiles ? tileImageSize : untiledImageSize; }\r\n\r\n /** @internal */\r\n public get maximumScreenSize() { return 2 * this.tileSize; }\r\n\r\n public get minimumZoomLevel(): number { return this.defaultMinimumZoomLevel; }\r\n\r\n public get maximumZoomLevel(): number { return this.defaultMaximumZoomLevel; }\r\n\r\n /** @internal */\r\n public get usesCachedTiles() { return this._usesCachedTiles; }\r\n\r\n public get mutualExclusiveSubLayer(): boolean { return false; }\r\n\r\n /** @internal */\r\n public get useGeographicTilingScheme() { return false; }\r\n\r\n public cartoRange?: MapCartoRectangle;\r\n\r\n // Those values are used internally for various computation, this should not get overriden.\r\n /** @internal */\r\n protected readonly defaultMinimumZoomLevel = 0;\r\n\r\n /** @internal */\r\n protected readonly defaultMaximumZoomLevel = 22;\r\n\r\n /** @internal */\r\n protected get _filterByCartoRange() { return true; }\r\n\r\n constructor(protected readonly _settings: ImageMapLayerSettings, protected _usesCachedTiles: boolean) {\r\n this._mercatorTilingScheme = new WebMercatorTilingScheme();\r\n this._geographicTilingScheme = new GeographicTilingScheme(2, 1, true);\r\n }\r\n\r\n /** @internal */\r\n public async initialize(): Promise<void> {\r\n this.loadTile(0, 0, this.defaultMaximumZoomLevel).then((tileData: ImageSource | undefined) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n if (tileData !== undefined)\r\n this._missingTileData = tileData.data as Uint8Array;\r\n });\r\n }\r\n\r\n public abstract constructUrl(row: number, column: number, zoomLevel: number): Promise<string>;\r\n\r\n public get tilingScheme(): MapTilingScheme { return this.useGeographicTilingScheme ? this._geographicTilingScheme : this._mercatorTilingScheme; }\r\n\r\n /** @internal */\r\n public addLogoCards(_cards: HTMLTableElement, _viewport: ScreenViewport): void { }\r\n\r\n /** @internal */\r\n protected _missingTileData?: Uint8Array;\r\n\r\n /** @internal */\r\n public get transparentBackgroundString(): string { return this._settings.transparentBackground ? \"true\" : \"false\"; }\r\n\r\n /** @internal */\r\n protected async _areChildrenAvailable(_tile: ImageryMapTile): Promise<boolean> { return true; }\r\n\r\n /** @internal */\r\n public getPotentialChildIds(tile: ImageryMapTile): QuadId[] {\r\n const childLevel = tile.quadId.level + 1;\r\n return tile.quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));\r\n }\r\n\r\n /** @internal */\r\n protected _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n resolveChildren(this.getPotentialChildIds(tile));\r\n }\r\n\r\n /** @internal */\r\n public generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\r\n if (tile.depth >= this.maximumZoomLevel || (undefined !== this.cartoRange && this._filterByCartoRange && !this.cartoRange.intersectsRange(tile.rectangle))) {\r\n tile.setLeaf();\r\n return;\r\n }\r\n this._generateChildIds(tile, resolveChildren);\r\n }\r\n\r\n /** @internal */\r\n public async getToolTip(strings: string[], quadId: QuadId, _carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\r\n if (doDebugToolTips) {\r\n const range = quadId.getLatLongRangeDegrees(tree.tilingScheme);\r\n strings.push(`QuadId: ${quadId.debugString}, Lat: ${range.low.x} - ${range.high.x} Long: ${range.low.y} - ${range.high.y}`);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public async getFeatureInfo(featureInfos: MapLayerFeatureInfo[], _quadId: QuadId, _carto: Cartographic, _tree: ImageryMapTileTree): Promise<void> {\r\n // default implementation; simply return an empty feature info\r\n featureInfos.push({ layerName: this._settings.name });\r\n }\r\n\r\n /** @internal */\r\n protected async getImageFromTileResponse(tileResponse: Response, zoomLevel: number) {\r\n const arrayBuffer = await tileResponse.arrayBuffer();\r\n const byteArray: Uint8Array = new Uint8Array(arrayBuffer);\r\n if (!byteArray || (byteArray.length === 0))\r\n return undefined;\r\n if (this.matchesMissingTile(byteArray) && zoomLevel > 8)\r\n return undefined;\r\n\r\n const contentType = tileResponse.headers.get(\"content-type\")?.toLowerCase();\r\n let imageFormat: ImageSourceFormat | undefined;\r\n if (contentType) {\r\n // Note: 'includes' is used here instead of exact comparison because we encountered\r\n // some servers that would give content type such as 'image/png;charset=UTF-8'.\r\n if (contentType.includes(\"image/jpeg\"))\r\n imageFormat = ImageSourceFormat.Jpeg;\r\n else if (contentType.includes(\"image/png\"))\r\n imageFormat = ImageSourceFormat.Png;\r\n }\r\n\r\n if (imageFormat !== undefined)\r\n return new ImageSource(byteArray, imageFormat);\r\n\r\n assert(false, \"Invalid tile content type\");\r\n return undefined;\r\n }\r\n\r\n /** Change the status of this provider.\r\n * Sub-classes should override 'onStatusUpdated' instead of this method.\r\n * @internal\r\n */\r\n public setStatus(status: MapLayerImageryProviderStatus) {\r\n if (this._status !== status) {\r\n this.onStatusUpdated(status);\r\n this._status = status;\r\n this.onStatusChanged.raiseEvent(this);\r\n }\r\n }\r\n\r\n /** Method called whenever the status changes, giving the opportunity to sub-classes to have a custom behavior.\r\n * @internal\r\n */\r\n protected onStatusUpdated(_newStatus: MapLayerImageryProviderStatus) { }\r\n\r\n /** @internal */\r\n protected setRequestAuthorization(headers: Headers) {\r\n if (this._settings.userName && this._settings.password) {\r\n headers.set(\"Authorization\", `Basic ${Base64EncodedString.encode(`${this._settings.userName}:${this._settings.password}`)}`);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public async makeTileRequest(url: string) {\r\n let headers: Headers | undefined;\r\n if (this._settings.userName && this._settings.password) {\r\n headers = new Headers();\r\n this.setRequestAuthorization(headers);\r\n }\r\n return fetch(url, { method: \"GET\", headers });\r\n }\r\n\r\n /** Returns a map layer tile at the specified settings. */\r\n public async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\r\n\r\n try {\r\n const tileUrl: string = await this.constructUrl(row, column, zoomLevel);\r\n if (tileUrl.length === 0)\r\n return undefined;\r\n\r\n const tileResponse: Response = await this.makeTileRequest(tileUrl);\r\n\r\n if (!this._hasSuccessfullyFetchedTile) {\r\n this._hasSuccessfullyFetchedTile = true;\r\n }\r\n\r\n return await this.getImageFromTileResponse(tileResponse, zoomLevel);\r\n } catch (error: any) {\r\n if (error?.status === 401) {\r\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\r\n\r\n // Only report error to end-user if we were previously able to fetch tiles\r\n // and then encountered an error, otherwise I assume an error was already reported\r\n // through the source validation process.\r\n if (this._hasSuccessfullyFetchedTile) {\r\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.LoadTileTokenError\", { layerName: this._settings.name });\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\r\n }\r\n\r\n }\r\n return undefined;\r\n }\r\n }\r\n\r\n /** @internal */\r\n protected async toolTipFromUrl(strings: string[], url: string): Promise<void> {\r\n const headers = new Headers();\r\n this.setRequestAuthorization(headers);\r\n\r\n try {\r\n const response = await fetch(url, { method: \"GET\", headers });\r\n const text = await response.text();\r\n if (undefined !== text) {\r\n strings.push(text);\r\n }\r\n } catch {\r\n }\r\n }\r\n\r\n /** @internal */\r\n public matchesMissingTile(tileData: Uint8Array): boolean {\r\n if (!this._missingTileData)\r\n return false;\r\n if (tileData.length !== this._missingTileData.length)\r\n return false;\r\n for (let i: number = 0; i < tileData.length; i += 10) {\r\n if (this._missingTileData[i] !== tileData[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n // calculates the projected x cartesian coordinate in EPSG:3857from the longitude in EPSG:4326 (WGS84)\r\n public getEPSG3857X(longitude: number): number {\r\n return longitude * 20037508.34 / 180.0;\r\n }\r\n\r\n /** @internal */\r\n // calculates the projected y cartesian coordinate in EPSG:3857from the latitude in EPSG:4326 (WGS84)\r\n public getEPSG3857Y(latitude: number): number {\r\n const y = Math.log(Math.tan((90.0 + latitude) * Math.PI / 360.0)) / (Math.PI / 180.0);\r\n return y * 20037508.34 / 180.0;\r\n }\r\n\r\n /** @internal */\r\n // calculates the longitude in EPSG:4326 (WGS84) from the projected x cartesian coordinate in EPSG:3857\r\n public getEPSG4326Lon(x3857: number): number {\r\n return Angle.radiansToDegrees(x3857 / earthRadius);\r\n }\r\n\r\n /** @internal */\r\n // calculates the latitude in EPSG:4326 (WGS84) from the projected y cartesian coordinate in EPSG:3857\r\n public getEPSG4326Lat(y3857: number): number {\r\n const y = 2 * Math.atan(Math.exp(y3857 / earthRadius)) - (Math.PI / 2);\r\n return Angle.radiansToDegrees(y);\r\n }\r\n\r\n /** @internal */\r\n // Map tile providers like Bing and Mapbox allow the URL to be constructed directory from the zoom level and tile coordinates.\r\n // However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.\r\n public getEPSG4326Extent(row: number, column: number, zoomLevel: number): { longitudeLeft: number, longitudeRight: number, latitudeTop: number, latitudeBottom: number } {\r\n // Shift left (this.tileSize << zoomLevel) overflow when using 512 pixels tile at higher resolution,\r\n // so use Math.pow instead (I assume the performance lost to be minimal)\r\n const mapSize = this.tileSize * Math.pow(2, zoomLevel);\r\n const leftGrid = this.tileSize * column;\r\n const topGrid = this.tileSize * row;\r\n\r\n const longitudeLeft = 360 * ((leftGrid / mapSize) - 0.5);\r\n const y0 = 0.5 - ((topGrid + this.tileSize) / mapSize);\r\n const latitudeBottom = 90.0 - 360.0 * Math.atan(Math.exp(-y0 * 2 * Math.PI)) / Math.PI;\r\n\r\n const longitudeRight = 360 * (((leftGrid + this.tileSize) / mapSize) - 0.5);\r\n const y1 = 0.5 - (topGrid / mapSize);\r\n const latitudeTop = 90.0 - 360.0 * Math.atan(Math.exp(-y1 * 2 * Math.PI)) / Math.PI;\r\n\r\n return { longitudeLeft, longitudeRight, latitudeTop, latitudeBottom };\r\n }\r\n\r\n /** @internal */\r\n public getEPSG3857Extent(row: number, column: number, zoomLevel: number): { left: number, right: number, top: number, bottom: number } {\r\n const epsg4326Extent = this.getEPSG4326Extent(row, column, zoomLevel);\r\n\r\n const left = this.getEPSG3857X(epsg4326Extent.longitudeLeft);\r\n const right = this.getEPSG3857X(epsg4326Extent.longitudeRight);\r\n const bottom = this.getEPSG3857Y(epsg4326Extent.latitudeBottom);\r\n const top = this.getEPSG3857Y(epsg4326Extent.latitudeTop);\r\n\r\n return { left, right, bottom, top };\r\n }\r\n\r\n /** @internal */\r\n public getEPSG3857ExtentString(row: number, column: number, zoomLevel: number) {\r\n const tileExtent = this.getEPSG3857Extent(row, column, zoomLevel);\r\n return `${tileExtent.left.toFixed(2)},${tileExtent.bottom.toFixed(2)},${tileExtent.right.toFixed(2)},${tileExtent.top.toFixed(2)}`;\r\n }\r\n\r\n /** @internal */\r\n public getEPSG4326ExtentString(row: number, column: number, zoomLevel: number, latLongAxisOrdering: boolean) {\r\n const tileExtent = this.getEPSG4326Extent(row, column, zoomLevel);\r\n if (latLongAxisOrdering) {\r\n return `${tileExtent.latitudeBottom.toFixed(8)},${tileExtent.longitudeLeft.toFixed(8)},\r\n ${tileExtent.latitudeTop.toFixed(8)},${tileExtent.longitudeRight.toFixed(8)}`;\r\n } else {\r\n return `${tileExtent.longitudeLeft.toFixed(8)},${tileExtent.latitudeBottom.toFixed(8)},\r\n ${tileExtent.longitudeRight.toFixed(8)},${tileExtent.latitudeTop.toFixed(8)}`;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapLayerImageryProvider.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryProvider.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, BeEvent } from \"@itwin/core-bentley\";\nimport { Base64EncodedString, Cartographic, ImageMapLayerSettings, ImageSource, ImageSourceFormat } from \"@itwin/core-common\";\nimport { Angle } from \"@itwin/core-geometry\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../NotificationManager\";\nimport { ScreenViewport } from \"../../Viewport\";\nimport { GeographicTilingScheme, ImageryMapTile, ImageryMapTileTree, MapCartoRectangle, MapLayerFeatureInfo, MapTilingScheme, QuadId, WebMercatorTilingScheme } from \"../internal\";\n\n/** @internal */\nconst tileImageSize = 256, untiledImageSize = 256;\nconst earthRadius = 6378137;\nconst doDebugToolTips = false;\n\n/** The status of the map layer imagery provider that lets you know if authentication is needed to request tiles.\n * @public\n */\nexport enum MapLayerImageryProviderStatus {\n Valid,\n RequireAuth,\n}\n\n/** Abstract class for map layer imagery providers.\n * Map layer imagery providers request and provide tile images and other data. Each map layer from a separate source needs its own imagery provider object.\n * @beta\n */\nexport abstract class MapLayerImageryProvider {\n protected _hasSuccessfullyFetchedTile = false;\n public readonly onStatusChanged = new BeEvent<(provider: MapLayerImageryProvider) => void>();\n\n /** @internal */\n private readonly _mercatorTilingScheme = new WebMercatorTilingScheme();\n\n /** @internal */\n private readonly _geographicTilingScheme = new GeographicTilingScheme();\n\n /** @internal */\n private _status = MapLayerImageryProviderStatus.Valid;\n\n /** @internal */\n public get status() { return this._status; }\n\n public resetStatus() { this.setStatus(MapLayerImageryProviderStatus.Valid); }\n\n /** @internal */\n public get tileSize(): number { return this._usesCachedTiles ? tileImageSize : untiledImageSize; }\n\n /** @internal */\n public get maximumScreenSize() { return 2 * this.tileSize; }\n\n public get minimumZoomLevel(): number { return this.defaultMinimumZoomLevel; }\n\n public get maximumZoomLevel(): number { return this.defaultMaximumZoomLevel; }\n\n /** @internal */\n public get usesCachedTiles() { return this._usesCachedTiles; }\n\n public get mutualExclusiveSubLayer(): boolean { return false; }\n\n /** @internal */\n public get useGeographicTilingScheme() { return false; }\n\n public cartoRange?: MapCartoRectangle;\n\n // Those values are used internally for various computation, this should not get overriden.\n /** @internal */\n protected readonly defaultMinimumZoomLevel = 0;\n\n /** @internal */\n protected readonly defaultMaximumZoomLevel = 22;\n\n /** @internal */\n protected get _filterByCartoRange() { return true; }\n\n constructor(protected readonly _settings: ImageMapLayerSettings, protected _usesCachedTiles: boolean) {\n this._mercatorTilingScheme = new WebMercatorTilingScheme();\n this._geographicTilingScheme = new GeographicTilingScheme(2, 1, true);\n }\n\n /** @internal */\n public async initialize(): Promise<void> {\n this.loadTile(0, 0, this.defaultMaximumZoomLevel).then((tileData: ImageSource | undefined) => { // eslint-disable-line @typescript-eslint/no-floating-promises\n if (tileData !== undefined)\n this._missingTileData = tileData.data as Uint8Array;\n });\n }\n\n public abstract constructUrl(row: number, column: number, zoomLevel: number): Promise<string>;\n\n public get tilingScheme(): MapTilingScheme { return this.useGeographicTilingScheme ? this._geographicTilingScheme : this._mercatorTilingScheme; }\n\n /** @internal */\n public addLogoCards(_cards: HTMLTableElement, _viewport: ScreenViewport): void { }\n\n /** @internal */\n protected _missingTileData?: Uint8Array;\n\n /** @internal */\n public get transparentBackgroundString(): string { return this._settings.transparentBackground ? \"true\" : \"false\"; }\n\n /** @internal */\n protected async _areChildrenAvailable(_tile: ImageryMapTile): Promise<boolean> { return true; }\n\n /** @internal */\n public getPotentialChildIds(tile: ImageryMapTile): QuadId[] {\n const childLevel = tile.quadId.level + 1;\n return tile.quadId.getChildIds(this.tilingScheme.getNumberOfXChildrenAtLevel(childLevel), this.tilingScheme.getNumberOfYChildrenAtLevel(childLevel));\n }\n\n /** @internal */\n protected _generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\n resolveChildren(this.getPotentialChildIds(tile));\n }\n\n /** @internal */\n public generateChildIds(tile: ImageryMapTile, resolveChildren: (childIds: QuadId[]) => void) {\n if (tile.depth >= this.maximumZoomLevel || (undefined !== this.cartoRange && this._filterByCartoRange && !this.cartoRange.intersectsRange(tile.rectangle))) {\n tile.setLeaf();\n return;\n }\n this._generateChildIds(tile, resolveChildren);\n }\n\n /** @internal */\n public async getToolTip(strings: string[], quadId: QuadId, _carto: Cartographic, tree: ImageryMapTileTree): Promise<void> {\n if (doDebugToolTips) {\n const range = quadId.getLatLongRangeDegrees(tree.tilingScheme);\n strings.push(`QuadId: ${quadId.debugString}, Lat: ${range.low.x} - ${range.high.x} Long: ${range.low.y} - ${range.high.y}`);\n }\n }\n\n /** @internal */\n public async getFeatureInfo(featureInfos: MapLayerFeatureInfo[], _quadId: QuadId, _carto: Cartographic, _tree: ImageryMapTileTree): Promise<void> {\n // default implementation; simply return an empty feature info\n featureInfos.push({ layerName: this._settings.name });\n }\n\n /** @internal */\n protected async getImageFromTileResponse(tileResponse: Response, zoomLevel: number) {\n const arrayBuffer = await tileResponse.arrayBuffer();\n const byteArray: Uint8Array = new Uint8Array(arrayBuffer);\n if (!byteArray || (byteArray.length === 0))\n return undefined;\n if (this.matchesMissingTile(byteArray) && zoomLevel > 8)\n return undefined;\n\n const contentType = tileResponse.headers.get(\"content-type\")?.toLowerCase();\n let imageFormat: ImageSourceFormat | undefined;\n if (contentType) {\n // Note: 'includes' is used here instead of exact comparison because we encountered\n // some servers that would give content type such as 'image/png;charset=UTF-8'.\n if (contentType.includes(\"image/jpeg\"))\n imageFormat = ImageSourceFormat.Jpeg;\n else if (contentType.includes(\"image/png\"))\n imageFormat = ImageSourceFormat.Png;\n }\n\n if (imageFormat !== undefined)\n return new ImageSource(byteArray, imageFormat);\n\n assert(false, \"Invalid tile content type\");\n return undefined;\n }\n\n /** Change the status of this provider.\n * Sub-classes should override 'onStatusUpdated' instead of this method.\n * @internal\n */\n public setStatus(status: MapLayerImageryProviderStatus) {\n if (this._status !== status) {\n this.onStatusUpdated(status);\n this._status = status;\n this.onStatusChanged.raiseEvent(this);\n }\n }\n\n /** Method called whenever the status changes, giving the opportunity to sub-classes to have a custom behavior.\n * @internal\n */\n protected onStatusUpdated(_newStatus: MapLayerImageryProviderStatus) { }\n\n /** @internal */\n protected setRequestAuthorization(headers: Headers) {\n if (this._settings.userName && this._settings.password) {\n headers.set(\"Authorization\", `Basic ${Base64EncodedString.encode(`${this._settings.userName}:${this._settings.password}`)}`);\n }\n }\n\n /** @internal */\n public async makeTileRequest(url: string) {\n let headers: Headers | undefined;\n if (this._settings.userName && this._settings.password) {\n headers = new Headers();\n this.setRequestAuthorization(headers);\n }\n return fetch(url, { method: \"GET\", headers });\n }\n\n /** Returns a map layer tile at the specified settings. */\n public async loadTile(row: number, column: number, zoomLevel: number): Promise<ImageSource | undefined> {\n\n try {\n const tileUrl: string = await this.constructUrl(row, column, zoomLevel);\n if (tileUrl.length === 0)\n return undefined;\n\n const tileResponse: Response = await this.makeTileRequest(tileUrl);\n\n if (!this._hasSuccessfullyFetchedTile) {\n this._hasSuccessfullyFetchedTile = true;\n }\n\n return await this.getImageFromTileResponse(tileResponse, zoomLevel);\n } catch (error: any) {\n if (error?.status === 401) {\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\n\n // Only report error to end-user if we were previously able to fetch tiles\n // and then encountered an error, otherwise I assume an error was already reported\n // through the source validation process.\n if (this._hasSuccessfullyFetchedTile) {\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.LoadTileTokenError\", { layerName: this._settings.name });\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\n }\n\n }\n return undefined;\n }\n }\n\n /** @internal */\n protected async toolTipFromUrl(strings: string[], url: string): Promise<void> {\n const headers = new Headers();\n this.setRequestAuthorization(headers);\n\n try {\n const response = await fetch(url, { method: \"GET\", headers });\n const text = await response.text();\n if (undefined !== text) {\n strings.push(text);\n }\n } catch {\n }\n }\n\n /** @internal */\n public matchesMissingTile(tileData: Uint8Array): boolean {\n if (!this._missingTileData)\n return false;\n if (tileData.length !== this._missingTileData.length)\n return false;\n for (let i: number = 0; i < tileData.length; i += 10) {\n if (this._missingTileData[i] !== tileData[i]) {\n return false;\n }\n }\n return true;\n }\n\n /** @internal */\n // calculates the projected x cartesian coordinate in EPSG:3857from the longitude in EPSG:4326 (WGS84)\n public getEPSG3857X(longitude: number): number {\n return longitude * 20037508.34 / 180.0;\n }\n\n /** @internal */\n // calculates the projected y cartesian coordinate in EPSG:3857from the latitude in EPSG:4326 (WGS84)\n public getEPSG3857Y(latitude: number): number {\n const y = Math.log(Math.tan((90.0 + latitude) * Math.PI / 360.0)) / (Math.PI / 180.0);\n return y * 20037508.34 / 180.0;\n }\n\n /** @internal */\n // calculates the longitude in EPSG:4326 (WGS84) from the projected x cartesian coordinate in EPSG:3857\n public getEPSG4326Lon(x3857: number): number {\n return Angle.radiansToDegrees(x3857 / earthRadius);\n }\n\n /** @internal */\n // calculates the latitude in EPSG:4326 (WGS84) from the projected y cartesian coordinate in EPSG:3857\n public getEPSG4326Lat(y3857: number): number {\n const y = 2 * Math.atan(Math.exp(y3857 / earthRadius)) - (Math.PI / 2);\n return Angle.radiansToDegrees(y);\n }\n\n /** @internal */\n // Map tile providers like Bing and Mapbox allow the URL to be constructed directory from the zoom level and tile coordinates.\n // However, WMS-based servers take a bounding box instead. This method can help get that bounding box from a tile.\n public getEPSG4326Extent(row: number, column: number, zoomLevel: number): { longitudeLeft: number, longitudeRight: number, latitudeTop: number, latitudeBottom: number } {\n // Shift left (this.tileSize << zoomLevel) overflow when using 512 pixels tile at higher resolution,\n // so use Math.pow instead (I assume the performance lost to be minimal)\n const mapSize = this.tileSize * Math.pow(2, zoomLevel);\n const leftGrid = this.tileSize * column;\n const topGrid = this.tileSize * row;\n\n const longitudeLeft = 360 * ((leftGrid / mapSize) - 0.5);\n const y0 = 0.5 - ((topGrid + this.tileSize) / mapSize);\n const latitudeBottom = 90.0 - 360.0 * Math.atan(Math.exp(-y0 * 2 * Math.PI)) / Math.PI;\n\n const longitudeRight = 360 * (((leftGrid + this.tileSize) / mapSize) - 0.5);\n const y1 = 0.5 - (topGrid / mapSize);\n const latitudeTop = 90.0 - 360.0 * Math.atan(Math.exp(-y1 * 2 * Math.PI)) / Math.PI;\n\n return { longitudeLeft, longitudeRight, latitudeTop, latitudeBottom };\n }\n\n /** @internal */\n public getEPSG3857Extent(row: number, column: number, zoomLevel: number): { left: number, right: number, top: number, bottom: number } {\n const epsg4326Extent = this.getEPSG4326Extent(row, column, zoomLevel);\n\n const left = this.getEPSG3857X(epsg4326Extent.longitudeLeft);\n const right = this.getEPSG3857X(epsg4326Extent.longitudeRight);\n const bottom = this.getEPSG3857Y(epsg4326Extent.latitudeBottom);\n const top = this.getEPSG3857Y(epsg4326Extent.latitudeTop);\n\n return { left, right, bottom, top };\n }\n\n /** @internal */\n public getEPSG3857ExtentString(row: number, column: number, zoomLevel: number) {\n const tileExtent = this.getEPSG3857Extent(row, column, zoomLevel);\n return `${tileExtent.left.toFixed(2)},${tileExtent.bottom.toFixed(2)},${tileExtent.right.toFixed(2)},${tileExtent.top.toFixed(2)}`;\n }\n\n /** @internal */\n public getEPSG4326ExtentString(row: number, column: number, zoomLevel: number, latLongAxisOrdering: boolean) {\n const tileExtent = this.getEPSG4326Extent(row, column, zoomLevel);\n if (latLongAxisOrdering) {\n return `${tileExtent.latitudeBottom.toFixed(8)},${tileExtent.longitudeLeft.toFixed(8)},\n ${tileExtent.latitudeTop.toFixed(8)},${tileExtent.longitudeRight.toFixed(8)}`;\n } else {\n return `${tileExtent.longitudeLeft.toFixed(8)},${tileExtent.latitudeBottom.toFixed(8)},\n ${tileExtent.longitudeRight.toFixed(8)},${tileExtent.latitudeTop.toFixed(8)}`;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerSources.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.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 MapLayers\r\n */\r\n\r\nimport { compareStrings } from \"@itwin/core-bentley\";\r\nimport {\r\n BackgroundMapProvider, BackgroundMapType, BaseMapLayerSettings, DeprecatedBackgroundMapProps, ImageMapLayerSettings, MapSubLayerProps,\r\n} from \"@itwin/core-common\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { request, RequestBasicCredentials } from \"../../request/Request\";\r\nimport { ArcGisUtilities, MapCartoRectangle, MapLayerSourceValidation } from \"../internal\";\r\n\r\n/** Values for return codes from [[MapLayerSource.validateSource]]\r\n * @public\r\n */\r\nexport enum MapLayerSourceStatus {\r\n /** Layer source is valid */\r\n Valid,\r\n /** Authorization has failed when accessing this layer source. */\r\n InvalidCredentials,\r\n /** Provided format id could not be resolved in [[MapLayerFormatRegistry]] */\r\n InvalidFormat,\r\n /** The tiling schema of the source is not supported */\r\n InvalidTileTree,\r\n /** Could not not connect to remote server using the provided URL.*/\r\n InvalidUrl,\r\n /** Authorization is required to access this map layer source. */\r\n RequireAuth,\r\n /** Map-layer coordinate system is not supported */\r\n InvalidCoordinateSystem,\r\n}\r\n\r\n/** JSON representation of a map layer source.\r\n * @see [ImageryMapLayerFormatId]($common)\r\n * @public\r\n */\r\ninterface MapLayerSourceProps {\r\n /** Identifies the map layers source. Defaults to 'WMS'. */\r\n formatId?: string;\r\n /** Name */\r\n name: string;\r\n /** URL */\r\n url: string;\r\n /** True to indicate background is transparent. Defaults to 'true'. */\r\n transparentBackground?: boolean;\r\n /** Indicate if this source definition should be used as a base map. Defaults to false. */\r\n baseMap?: boolean;\r\n}\r\n\r\n/** A source for map layers. These may be catalogued for convenient use by users or applications.\r\n * @public\r\n */\r\nexport class MapLayerSource {\r\n public formatId: string;\r\n public name: string;\r\n public url: string;\r\n public baseMap = false;\r\n public transparentBackground?: boolean;\r\n public userName?: string;\r\n public password?: string;\r\n\r\n private constructor(formatId = \"WMS\", name: string, url: string, baseMap = false, transparentBackground = true) {\r\n this.formatId = formatId;\r\n this.name = name;\r\n this.url = url;\r\n this.baseMap = baseMap;\r\n this.transparentBackground = transparentBackground;\r\n }\r\n\r\n public static fromJSON(json: MapLayerSourceProps): MapLayerSource | undefined {\r\n if (json === undefined)\r\n return undefined;\r\n\r\n return new MapLayerSource(json.formatId, json.name, json.url, json.baseMap, json.transparentBackground);\r\n }\r\n\r\n public async validateSource(ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n return IModelApp.mapLayerFormatRegistry.validateSource(this.formatId, this.url, this.userName, this.password, ignoreCache);\r\n }\r\n\r\n /** @internal*/\r\n public static fromBackgroundMapProps(props: DeprecatedBackgroundMapProps) {\r\n const provider = BackgroundMapProvider.fromBackgroundMapProps(props);\r\n const layerSettings = BaseMapLayerSettings.fromProvider(provider);\r\n if (undefined !== layerSettings) {\r\n const source = MapLayerSource.fromJSON(layerSettings);\r\n if (source) {\r\n source.baseMap = true;\r\n return source;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n public toJSON() {\r\n return { url: this.url, name: this.name, formatId: this.formatId, transparentBackground: this.transparentBackground };\r\n }\r\n\r\n public toLayerSettings(subLayers?: MapSubLayerProps[]): ImageMapLayerSettings | undefined {\r\n // When MapLayerSetting is created from a MapLayerSource, sub-layers and credentials need to be set separately.\r\n const layerSettings = ImageMapLayerSettings.fromJSON({ ...this, subLayers });\r\n if (this.userName !== undefined || this.password !== undefined) {\r\n layerSettings?.setCredentials(this.userName, this.password);\r\n }\r\n\r\n return layerSettings;\r\n }\r\n\r\n private getCredentials(): RequestBasicCredentials | undefined {\r\n return this.userName && this.password ? { user: this.userName, password: this.password } : undefined;\r\n }\r\n}\r\n\r\n/** A collection of [[MapLayerSource]] objects.\r\n * @beta\r\n */\r\nexport class MapLayerSources {\r\n private static _instance?: MapLayerSources;\r\n private constructor(private _sources: MapLayerSource[]) { }\r\n\r\n public static getInstance() { return MapLayerSources._instance; }\r\n\r\n public findByName(name: string, baseMap: boolean = false): MapLayerSource | undefined {\r\n const nameTest = name.toLowerCase();\r\n for (const source of this._sources)\r\n if (source.baseMap === baseMap && source.name.toLowerCase().indexOf(nameTest) !== -1)\r\n return source;\r\n\r\n return undefined;\r\n }\r\n public get layers(): MapLayerSource[] {\r\n const layers = new Array<MapLayerSource>();\r\n this._sources.forEach((source) => {\r\n if (!source.baseMap)\r\n layers.push(source);\r\n });\r\n\r\n return layers;\r\n }\r\n public get allSource() { return this._sources; }\r\n public get bases(): MapLayerSource[] {\r\n const layers = new Array<MapLayerSource>();\r\n this._sources.forEach((source) => {\r\n if (source.baseMap)\r\n layers.push(source);\r\n });\r\n\r\n return layers;\r\n }\r\n\r\n private static getBingMapLayerSource(): MapLayerSource[] {\r\n const mapLayerSources: MapLayerSource[] = [];\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Street } })!);\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Aerial } })!);\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"BingProvider\", providerData: { mapType: BackgroundMapType.Hybrid } })!);\r\n return mapLayerSources;\r\n }\r\n\r\n private static getMapBoxLayerSource(): MapLayerSource[] {\r\n const mapLayerSources: MapLayerSource[] = [];\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Street } })!);\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Aerial } })!);\r\n mapLayerSources.push(MapLayerSource.fromBackgroundMapProps({ providerName: \"MapBoxProvider\", providerData: { mapType: BackgroundMapType.Hybrid } })!);\r\n return mapLayerSources;\r\n }\r\n\r\n public static async create(iModel?: IModelConnection, queryForPublicSources = false, addMapBoxSources = false): Promise<MapLayerSources> {\r\n if (!queryForPublicSources && MapLayerSources._instance)\r\n return MapLayerSources._instance;\r\n\r\n if (!iModel)\r\n iModel = IModelApp.viewManager.selectedView ? IModelApp.viewManager.selectedView.iModel : undefined;\r\n\r\n let sourceRange = MapCartoRectangle.createMaximum();\r\n if (iModel) {\r\n const projectCenter = iModel.projectExtents.localXYZToWorld(.5, .5, .5)!;\r\n const cartoCenter = iModel.spatialToCartographicFromEcef(projectCenter);\r\n const globeRange = MapCartoRectangle.createMaximum();\r\n const nearDelta = Point2d.create(globeRange.xLength() / 100, globeRange.yLength() / 100);\r\n sourceRange = MapCartoRectangle.fromRadians(cartoCenter.longitude - nearDelta.x, cartoCenter.latitude - nearDelta.y, cartoCenter.longitude + nearDelta.x, cartoCenter.latitude + nearDelta.y);\r\n }\r\n\r\n const sources = new Array<MapLayerSource>();\r\n const urlSet = new Set<string>();\r\n const addSource = ((source: MapLayerSource) => {\r\n if (!urlSet.has(source.url)) {\r\n sources.push(source);\r\n urlSet.add(source.url);\r\n }\r\n });\r\n\r\n this.getBingMapLayerSource().forEach((source) => {\r\n addSource(source);\r\n });\r\n\r\n if (addMapBoxSources) {\r\n this.getMapBoxLayerSource().forEach((source) => {\r\n addSource(source);\r\n });\r\n }\r\n\r\n if (queryForPublicSources) {\r\n const sourcesJson = await request(`${IModelApp.publicPath}assets/MapLayerSources.json`, \"json\");\r\n\r\n for (const sourceJson of sourcesJson) {\r\n const source = MapLayerSource.fromJSON(sourceJson);\r\n if (source)\r\n addSource(source);\r\n }\r\n\r\n (await ArcGisUtilities.getSourcesFromQuery(sourceRange)).forEach((queriedSource) => addSource(queriedSource));\r\n }\r\n\r\n sources.sort((a: MapLayerSource, b: MapLayerSource) => compareStrings(a.name.toLowerCase(), b.name.toLowerCase()));\r\n\r\n const mapLayerSources = new MapLayerSources(sources);\r\n MapLayerSources._instance = mapLayerSources;\r\n\r\n return mapLayerSources;\r\n }\r\n public static async addSourceToMapLayerSources(mapLayerSource?: MapLayerSource): Promise<MapLayerSources | undefined> {\r\n if (!MapLayerSources._instance || !mapLayerSource) {\r\n return undefined;\r\n }\r\n MapLayerSources._instance._sources = MapLayerSources._instance._sources.filter((source) => {\r\n return !(source.name === mapLayerSource.name || source.url === mapLayerSource.url);\r\n });\r\n\r\n MapLayerSources._instance._sources.push(mapLayerSource);\r\n MapLayerSources._instance._sources.sort((a: MapLayerSource, b: MapLayerSource) => compareStrings(a.name.toLowerCase(), b.name.toLowerCase()));\r\n return MapLayerSources._instance;\r\n }\r\n\r\n public static removeLayerByName(name: string): boolean {\r\n if (!MapLayerSources._instance) {\r\n return false;\r\n }\r\n\r\n // For now we only rely on the name\r\n const lengthBeforeRemove = MapLayerSources._instance._sources.length;\r\n MapLayerSources._instance._sources = MapLayerSources._instance._sources.filter((source) => {\r\n return (source.name !== name);\r\n });\r\n return (lengthBeforeRemove !== MapLayerSources._instance._sources.length);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapLayerSources.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.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 { 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}\n\n/** JSON representation of a map layer source.\n * @see [ImageryMapLayerFormatId]($common)\n * @public\n */\ninterface MapLayerSourceProps {\n /** Identifies the map layers source. Defaults to 'WMS'. */\n formatId?: string;\n /** Name */\n name: string;\n /** URL */\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\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 private constructor(formatId = \"WMS\", name: string, url: string, baseMap = false, transparentBackground = true) {\n this.formatId = formatId;\n this.name = name;\n this.url = url;\n this.baseMap = baseMap;\n this.transparentBackground = transparentBackground;\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);\n }\n\n public async validateSource(ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\n return IModelApp.mapLayerFormatRegistry.validateSource(this.formatId, this.url, this.userName, this.password, 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() {\n return { url: this.url, name: this.name, formatId: this.formatId, transparentBackground: this.transparentBackground };\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 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\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 +1 @@
1
- {"version":3,"file":"MapLayerTileTreeReference.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerTileTreeReference.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAoB,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEpG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,oCAAoC,EAA2B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE/G,iBAAiB;AACjB,MAAM,OAAgB,yBAA0B,SAAQ,iBAAiB;IACvE,YAAsB,cAAgC,EAAY,WAAmB,EAAS,MAAwB;QACpH,KAAK,EAAE,CAAC;QADY,mBAAc,GAAd,cAAc,CAAkB;QAAY,gBAAW,GAAX,WAAW,CAAQ;QAAS,WAAM,GAAN,MAAM,CAAkB;IAEtH,CAAC;IACD,IAAc,aAAa,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAEzH,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,qBAAqB,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;IAC7K,CAAC;IACD,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,IAAW,eAAe,KAA0C,OAAO,SAAS,CAAC,CAAC,CAAC;IACvF,IAAW,aAAa,CAAC,aAA+B,IAAI,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC;IAClG,IAAW,aAAa,KAAuB,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAC5E,IAAW,UAAU,KAAa,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,IAAW,YAAY,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACxC,KAAK,CAAC,UAAU,CAAC,GAAc;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACrC,IAAI,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,QAAQ;YACnF,OAAO,SAAS,CAAC;QAEnB,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,iBAAiB;AACjB,MAAM,UAAU,2BAA2B,CAAC,aAA+B,EAAE,UAAkB,EAAE,MAAwB;IACvH,IAAI,aAAa,YAAY,qBAAqB,EAAE;QAClD,OAAO,oCAAoC,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;KAChF;SAAM,IAAI,aAAa,YAAY,qBAAqB;QACvD,OAAO,SAAS,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;SAClG;QACH,MAAM,CAAE,KAAK,CAAC,CAAC;QACf,OAAO,SAAS,CAAC;KAClB;AACH,CAAC","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 } from \"@itwin/core-bentley\";\r\nimport { ImageMapLayerSettings, MapLayerSettings, ModelMapLayerSettings } from \"@itwin/core-common\";\r\nimport { HitDetail } from \"../../HitDetail\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport { createModelMapLayerTileTreeReference, MapLayerImageryProvider, TileTreeReference } from \"../internal\";\r\n\r\n/** @internal */\r\nexport abstract class MapLayerTileTreeReference extends TileTreeReference {\r\n constructor(protected _layerSettings: MapLayerSettings, protected _layerIndex: number, public iModel: IModelConnection) {\r\n super();\r\n }\r\n protected get _transparency() { return this._layerSettings.transparency ? this._layerSettings.transparency : undefined; }\r\n\r\n public get isOpaque() {\r\n return this._layerSettings.visible && (!this._layerSettings.allSubLayersInvisible) && !this._layerSettings.transparentBackground && 0 === this._layerSettings.transparency;\r\n }\r\n public get layerName() { return this._layerSettings.name; }\r\n public get imageryProvider(): MapLayerImageryProvider | undefined { return undefined; }\r\n public set layerSettings(layerSettings: MapLayerSettings) { this._layerSettings = layerSettings; }\r\n public get layerSettings(): MapLayerSettings { return this._layerSettings; }\r\n public get layerIndex(): number { return this._layerIndex; }\r\n public get transparency() { return this._transparency; }\r\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string | undefined> {\r\n const tree = this.treeOwner.tileTree;\r\n if (undefined === tree || hit.iModel !== tree.iModel || tree.modelId !== hit.sourceId)\r\n return undefined;\r\n\r\n const strings = [];\r\n strings.push(`Map Layer: ${this._layerSettings.name}`);\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = strings.join(\"<br>\");\r\n return div;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createMapLayerTreeReference(layerSettings: MapLayerSettings, layerIndex: number, iModel: IModelConnection): MapLayerTileTreeReference | undefined {\r\n if (layerSettings instanceof ModelMapLayerSettings) {\r\n return createModelMapLayerTileTreeReference(layerSettings, layerIndex, iModel);\r\n } else if (layerSettings instanceof ImageMapLayerSettings)\r\n return IModelApp.mapLayerFormatRegistry.createImageryMapLayerTree(layerSettings, layerIndex, iModel);\r\n else {\r\n assert (false);\r\n return undefined;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MapLayerTileTreeReference.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerTileTreeReference.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAoB,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEpG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,oCAAoC,EAA2B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE/G,iBAAiB;AACjB,MAAM,OAAgB,yBAA0B,SAAQ,iBAAiB;IACvE,YAAsB,cAAgC,EAAY,WAAmB,EAAS,MAAwB;QACpH,KAAK,EAAE,CAAC;QADY,mBAAc,GAAd,cAAc,CAAkB;QAAY,gBAAW,GAAX,WAAW,CAAQ;QAAS,WAAM,GAAN,MAAM,CAAkB;IAEtH,CAAC;IACD,IAAc,aAAa,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAEzH,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,qBAAqB,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;IAC7K,CAAC;IACD,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,IAAW,eAAe,KAA0C,OAAO,SAAS,CAAC,CAAC,CAAC;IACvF,IAAW,aAAa,CAAC,aAA+B,IAAI,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC;IAClG,IAAW,aAAa,KAAuB,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAC5E,IAAW,UAAU,KAAa,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,IAAW,YAAY,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACxC,KAAK,CAAC,UAAU,CAAC,GAAc;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACrC,IAAI,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,QAAQ;YACnF,OAAO,SAAS,CAAC;QAEnB,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,iBAAiB;AACjB,MAAM,UAAU,2BAA2B,CAAC,aAA+B,EAAE,UAAkB,EAAE,MAAwB;IACvH,IAAI,aAAa,YAAY,qBAAqB,EAAE;QAClD,OAAO,oCAAoC,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;KAChF;SAAM,IAAI,aAAa,YAAY,qBAAqB;QACvD,OAAO,SAAS,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;SAClG;QACH,MAAM,CAAE,KAAK,CAAC,CAAC;QACf,OAAO,SAAS,CAAC;KAClB;AACH,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { ImageMapLayerSettings, MapLayerSettings, ModelMapLayerSettings } from \"@itwin/core-common\";\nimport { HitDetail } from \"../../HitDetail\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { createModelMapLayerTileTreeReference, MapLayerImageryProvider, TileTreeReference } from \"../internal\";\n\n/** @internal */\nexport abstract class MapLayerTileTreeReference extends TileTreeReference {\n constructor(protected _layerSettings: MapLayerSettings, protected _layerIndex: number, public iModel: IModelConnection) {\n super();\n }\n protected get _transparency() { return this._layerSettings.transparency ? this._layerSettings.transparency : undefined; }\n\n public get isOpaque() {\n return this._layerSettings.visible && (!this._layerSettings.allSubLayersInvisible) && !this._layerSettings.transparentBackground && 0 === this._layerSettings.transparency;\n }\n public get layerName() { return this._layerSettings.name; }\n public get imageryProvider(): MapLayerImageryProvider | undefined { return undefined; }\n public set layerSettings(layerSettings: MapLayerSettings) { this._layerSettings = layerSettings; }\n public get layerSettings(): MapLayerSettings { return this._layerSettings; }\n public get layerIndex(): number { return this._layerIndex; }\n public get transparency() { return this._transparency; }\n public override async getToolTip(hit: HitDetail): Promise<HTMLElement | string | undefined> {\n const tree = this.treeOwner.tileTree;\n if (undefined === tree || hit.iModel !== tree.iModel || tree.modelId !== hit.sourceId)\n return undefined;\n\n const strings = [];\n strings.push(`Map Layer: ${this._layerSettings.name}`);\n const div = document.createElement(\"div\");\n div.innerHTML = strings.join(\"<br>\");\n return div;\n }\n}\n\n/** @internal */\nexport function createMapLayerTreeReference(layerSettings: MapLayerSettings, layerIndex: number, iModel: IModelConnection): MapLayerTileTreeReference | undefined {\n if (layerSettings instanceof ModelMapLayerSettings) {\n return createModelMapLayerTileTreeReference(layerSettings, layerIndex, iModel);\n } else if (layerSettings instanceof ImageMapLayerSettings)\n return IModelApp.mapLayerFormatRegistry.createImageryMapLayerTree(layerSettings, layerIndex, iModel);\n else {\n assert (false);\n return undefined;\n }\n}\n"]}