@itwin/core-frontend 4.1.0-dev.2 → 4.1.0-dev.21

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 (834) hide show
  1. package/CHANGELOG.md +44 -1
  2. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  3. package/lib/cjs/AccuSnap.js +8 -0
  4. package/lib/cjs/AccuSnap.js.map +1 -1
  5. package/lib/cjs/BriefcaseTxns.d.ts +2 -2
  6. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  7. package/lib/cjs/BriefcaseTxns.js +3 -3
  8. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  9. package/lib/cjs/CheckpointConnection.js +1 -1
  10. package/lib/cjs/CheckpointConnection.js.map +1 -1
  11. package/lib/cjs/DrawingViewState.js +1 -1
  12. package/lib/cjs/DrawingViewState.js.map +1 -1
  13. package/lib/cjs/ElementLocateManager.js +1 -1
  14. package/lib/cjs/ElementLocateManager.js.map +1 -1
  15. package/lib/cjs/EnvironmentDecorations.js +1 -1
  16. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  17. package/lib/cjs/GeoServices.js +1 -1
  18. package/lib/cjs/GeoServices.js.map +1 -1
  19. package/lib/cjs/GraphicalEditingScope.d.ts +2 -2
  20. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  21. package/lib/cjs/GraphicalEditingScope.js +1 -1
  22. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  23. package/lib/cjs/IModelApp.js +1 -1
  24. package/lib/cjs/IModelApp.js.map +1 -1
  25. package/lib/cjs/IModelConnection.d.ts +3 -3
  26. package/lib/cjs/IModelConnection.js +4 -4
  27. package/lib/cjs/IModelConnection.js.map +1 -1
  28. package/lib/cjs/IpcApp.d.ts.map +1 -1
  29. package/lib/cjs/IpcApp.js +3 -3
  30. package/lib/cjs/IpcApp.js.map +1 -1
  31. package/lib/cjs/LocalhostIpcApp.js +1 -1
  32. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  33. package/lib/cjs/Marker.d.ts +1 -1
  34. package/lib/cjs/Marker.d.ts.map +1 -1
  35. package/lib/cjs/Marker.js +3 -3
  36. package/lib/cjs/Marker.js.map +1 -1
  37. package/lib/cjs/NativeApp.d.ts.map +1 -1
  38. package/lib/cjs/NativeApp.js +4 -4
  39. package/lib/cjs/NativeApp.js.map +1 -1
  40. package/lib/cjs/NoRenderApp.d.ts +1 -1
  41. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  42. package/lib/cjs/NoRenderApp.js +1 -1
  43. package/lib/cjs/NoRenderApp.js.map +1 -1
  44. package/lib/cjs/RealityDataSource.js +1 -1
  45. package/lib/cjs/RealityDataSource.js.map +1 -1
  46. package/lib/cjs/RealityDataSourceContextShareImpl.js +1 -1
  47. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  48. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  49. package/lib/cjs/SheetViewState.js +2 -2
  50. package/lib/cjs/SheetViewState.js.map +1 -1
  51. package/lib/cjs/Sprites.js +2 -2
  52. package/lib/cjs/Sprites.js.map +1 -1
  53. package/lib/cjs/ViewingSpace.js +1 -1
  54. package/lib/cjs/ViewingSpace.js.map +1 -1
  55. package/lib/cjs/Viewport.d.ts +1 -1
  56. package/lib/cjs/Viewport.d.ts.map +1 -1
  57. package/lib/cjs/Viewport.js +1 -1
  58. package/lib/cjs/Viewport.js.map +1 -1
  59. package/lib/cjs/common/FrontendLoggerCategory.d.ts.map +1 -0
  60. package/lib/cjs/common/FrontendLoggerCategory.js.map +1 -0
  61. package/lib/cjs/common/ImageUtil.d.ts.map +1 -0
  62. package/lib/cjs/{ImageUtil.js → common/ImageUtil.js} +2 -0
  63. package/lib/cjs/common/ImageUtil.js.map +1 -0
  64. package/lib/cjs/common/ViewRect.d.ts.map +1 -0
  65. package/lib/cjs/common/ViewRect.js.map +1 -0
  66. package/lib/cjs/common/WorkerProxy.d.ts +73 -0
  67. package/lib/cjs/common/WorkerProxy.d.ts.map +1 -0
  68. package/lib/cjs/common/WorkerProxy.js +54 -0
  69. package/lib/cjs/common/WorkerProxy.js.map +1 -0
  70. package/lib/{esm → cjs/common}/gltf/GltfModel.d.ts +1 -1
  71. package/lib/cjs/common/gltf/GltfModel.d.ts.map +1 -0
  72. package/lib/cjs/common/gltf/GltfModel.js.map +1 -0
  73. package/lib/cjs/common/gltf/GltfParser.d.ts.map +1 -0
  74. package/lib/cjs/common/gltf/GltfParser.js.map +1 -0
  75. package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -0
  76. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -0
  77. package/lib/cjs/common/imdl/ImdlModel.d.ts +186 -0
  78. package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -0
  79. package/lib/cjs/common/imdl/ImdlModel.js +71 -0
  80. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -0
  81. package/lib/cjs/common/imdl/ImdlSchema.d.ts +380 -0
  82. package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -0
  83. package/lib/cjs/common/imdl/ImdlSchema.js +10 -0
  84. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -0
  85. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts +45 -0
  86. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -0
  87. package/lib/cjs/common/imdl/ParseImdlDocument.js +995 -0
  88. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -0
  89. package/lib/cjs/common/render/AnimationNodeId.d.ts +11 -0
  90. package/lib/cjs/common/render/AnimationNodeId.d.ts.map +1 -0
  91. package/lib/cjs/common/render/AnimationNodeId.js +19 -0
  92. package/lib/cjs/common/render/AnimationNodeId.js.map +1 -0
  93. package/lib/{esm/render/RenderMaterial.d.ts → cjs/common/render/MaterialParams.d.ts} +7 -20
  94. package/lib/cjs/common/render/MaterialParams.d.ts.map +1 -0
  95. package/lib/cjs/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
  96. package/lib/cjs/common/render/MaterialParams.js.map +1 -0
  97. package/lib/cjs/common/render/TextureParams.d.ts +30 -0
  98. package/lib/cjs/common/render/TextureParams.d.ts.map +1 -0
  99. package/lib/cjs/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
  100. package/lib/cjs/common/render/TextureParams.js.map +1 -0
  101. package/lib/{esm → cjs/common}/render/primitives/AuxChannelTable.d.ts +12 -8
  102. package/lib/cjs/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
  103. package/lib/cjs/{render → common/render}/primitives/AuxChannelTable.js +42 -9
  104. package/lib/cjs/common/render/primitives/AuxChannelTable.js.map +1 -0
  105. package/lib/cjs/common/render/primitives/DisplayParams.d.ts.map +1 -0
  106. package/lib/cjs/common/render/primitives/DisplayParams.js.map +1 -0
  107. package/lib/cjs/common/render/primitives/EdgeParams.d.ts +94 -0
  108. package/lib/cjs/common/render/primitives/EdgeParams.d.ts.map +1 -0
  109. package/lib/cjs/common/render/primitives/EdgeParams.js +46 -0
  110. package/lib/cjs/common/render/primitives/EdgeParams.js.map +1 -0
  111. package/lib/cjs/common/render/primitives/MeshParams.d.ts +20 -0
  112. package/lib/cjs/common/render/primitives/MeshParams.d.ts.map +1 -0
  113. package/lib/cjs/common/render/primitives/MeshParams.js +10 -0
  114. package/lib/cjs/common/render/primitives/MeshParams.js.map +1 -0
  115. package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts +29 -0
  116. package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
  117. package/lib/cjs/common/render/primitives/MeshPrimitive.js +18 -0
  118. package/lib/cjs/common/render/primitives/MeshPrimitive.js.map +1 -0
  119. package/lib/cjs/common/render/primitives/PointStringParams.d.ts +14 -0
  120. package/lib/cjs/common/render/primitives/PointStringParams.d.ts.map +1 -0
  121. package/lib/cjs/common/render/primitives/PointStringParams.js +10 -0
  122. package/lib/cjs/common/render/primitives/PointStringParams.js.map +1 -0
  123. package/lib/cjs/common/render/primitives/PolylineParams.d.ts +29 -0
  124. package/lib/cjs/common/render/primitives/PolylineParams.d.ts.map +1 -0
  125. package/lib/cjs/common/render/primitives/PolylineParams.js +10 -0
  126. package/lib/cjs/common/render/primitives/PolylineParams.js.map +1 -0
  127. package/lib/{esm → cjs/common}/render/primitives/SurfaceParams.d.ts +1 -1
  128. package/lib/cjs/common/render/primitives/SurfaceParams.d.ts.map +1 -0
  129. package/lib/cjs/common/render/primitives/SurfaceParams.js.map +1 -0
  130. package/lib/cjs/common/render/primitives/VertexIndices.d.ts +26 -0
  131. package/lib/cjs/common/render/primitives/VertexIndices.d.ts.map +1 -0
  132. package/lib/cjs/common/render/primitives/VertexIndices.js +64 -0
  133. package/lib/cjs/common/render/primitives/VertexIndices.js.map +1 -0
  134. package/lib/cjs/common/render/primitives/VertexTable.d.ts +45 -0
  135. package/lib/cjs/common/render/primitives/VertexTable.d.ts.map +1 -0
  136. package/lib/cjs/common/render/primitives/VertexTable.js +38 -0
  137. package/lib/cjs/common/render/primitives/VertexTable.js.map +1 -0
  138. package/lib/cjs/{render → common/render}/primitives/VertexTableSplitter.d.ts +23 -2
  139. package/lib/cjs/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
  140. package/lib/cjs/{render → common/render}/primitives/VertexTableSplitter.js +46 -35
  141. package/lib/cjs/common/render/primitives/VertexTableSplitter.js.map +1 -0
  142. package/lib/cjs/core-frontend.d.ts +26 -6
  143. package/lib/cjs/core-frontend.d.ts.map +1 -1
  144. package/lib/cjs/core-frontend.js +26 -6
  145. package/lib/cjs/core-frontend.js.map +1 -1
  146. package/lib/cjs/extension/ExtensionAdmin.js +1 -1
  147. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  148. package/lib/cjs/quantity-formatting/QuantityFormatter.js +1 -1
  149. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  150. package/lib/cjs/render/CreateRenderMaterialArgs.d.ts +24 -0
  151. package/lib/cjs/render/CreateRenderMaterialArgs.d.ts.map +1 -0
  152. package/lib/cjs/render/CreateRenderMaterialArgs.js +10 -0
  153. package/lib/cjs/render/CreateRenderMaterialArgs.js.map +1 -0
  154. package/lib/{esm/render/RenderTexture.d.ts → cjs/render/CreateTextureArgs.d.ts} +4 -28
  155. package/lib/cjs/render/CreateTextureArgs.d.ts.map +1 -0
  156. package/lib/cjs/render/CreateTextureArgs.js +10 -0
  157. package/lib/cjs/render/CreateTextureArgs.js.map +1 -0
  158. package/lib/cjs/render/GraphicBranch.d.ts +1 -7
  159. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  160. package/lib/cjs/render/GraphicBranch.js +1 -9
  161. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  162. package/lib/cjs/render/MockRender.d.ts +4 -4
  163. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  164. package/lib/cjs/render/MockRender.js +1 -1
  165. package/lib/cjs/render/MockRender.js.map +1 -1
  166. package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
  167. package/lib/cjs/render/ParticleCollectionBuilder.js +5 -5
  168. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  169. package/lib/cjs/render/RealityMeshParams.js +2 -2
  170. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  171. package/lib/cjs/render/RenderSystem.d.ts +7 -6
  172. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  173. package/lib/cjs/render/RenderSystem.js +6 -6
  174. package/lib/cjs/render/RenderSystem.js.map +1 -1
  175. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  176. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  177. package/lib/cjs/render/RenderTarget.js.map +1 -1
  178. package/lib/cjs/render/VisibleFeature.d.ts +1 -1
  179. package/lib/cjs/render/VisibleFeature.d.ts.map +1 -1
  180. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  181. package/lib/cjs/render/primitives/EdgeParams.d.ts +2 -89
  182. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
  183. package/lib/cjs/render/primitives/EdgeParams.js +35 -71
  184. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  185. package/lib/cjs/render/primitives/PointStringParams.d.ts +2 -11
  186. package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -1
  187. package/lib/cjs/render/primitives/PointStringParams.js +26 -30
  188. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
  189. package/lib/cjs/render/primitives/Polyface.d.ts +1 -1
  190. package/lib/cjs/render/primitives/Polyface.d.ts.map +1 -1
  191. package/lib/cjs/render/primitives/Polyface.js.map +1 -1
  192. package/lib/cjs/render/primitives/PolylineParams.d.ts +4 -36
  193. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -1
  194. package/lib/cjs/render/primitives/PolylineParams.js +29 -40
  195. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  196. package/lib/cjs/render/primitives/Strokes.d.ts +1 -1
  197. package/lib/cjs/render/primitives/Strokes.d.ts.map +1 -1
  198. package/lib/cjs/render/primitives/Strokes.js.map +1 -1
  199. package/lib/cjs/render/primitives/VertexTableBuilder.d.ts +28 -0
  200. package/lib/cjs/render/primitives/VertexTableBuilder.d.ts.map +1 -0
  201. package/lib/cjs/render/primitives/{VertexTable.js → VertexTableBuilder.js} +61 -175
  202. package/lib/cjs/render/primitives/VertexTableBuilder.js.map +1 -0
  203. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
  204. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  205. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  206. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
  207. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  208. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -1
  209. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  210. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
  211. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
  212. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js +1 -1
  213. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  214. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts +1 -1
  215. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  216. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  217. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
  218. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  219. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +3 -2
  220. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  221. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +4 -25
  222. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  223. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +9 -14
  224. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  225. package/lib/cjs/render/webgl/CachedGeometry.d.ts +1 -1
  226. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  227. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  228. package/lib/cjs/render/webgl/ColorInfo.d.ts +1 -1
  229. package/lib/cjs/render/webgl/ColorInfo.d.ts.map +1 -1
  230. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  231. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +2 -2
  232. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -1
  233. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  234. package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
  235. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  236. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
  237. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  238. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  239. package/lib/cjs/render/webgl/Material.d.ts +1 -1
  240. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  241. package/lib/cjs/render/webgl/Material.js.map +1 -1
  242. package/lib/cjs/render/webgl/Mesh.d.ts +2 -2
  243. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  244. package/lib/cjs/render/webgl/Mesh.js +1 -1
  245. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  246. package/lib/cjs/render/webgl/MeshData.d.ts +2 -2
  247. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
  248. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  249. package/lib/cjs/render/webgl/MeshGeometry.d.ts +1 -1
  250. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -1
  251. package/lib/cjs/render/webgl/PointString.d.ts +1 -1
  252. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  253. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  254. package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
  255. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  256. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  257. package/lib/cjs/render/webgl/RenderCommands.js +1 -1
  258. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  259. package/lib/cjs/render/webgl/SceneCompositor.d.ts +1 -1
  260. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  261. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  262. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +1 -1
  263. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  264. package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
  265. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  266. package/lib/cjs/render/webgl/System.d.ts +7 -6
  267. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  268. package/lib/cjs/render/webgl/System.js +1 -1
  269. package/lib/cjs/render/webgl/System.js.map +1 -1
  270. package/lib/cjs/render/webgl/Target.d.ts +1 -1
  271. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  272. package/lib/cjs/render/webgl/Target.js +4 -4
  273. package/lib/cjs/render/webgl/Target.js.map +1 -1
  274. package/lib/cjs/render/webgl/Texture.d.ts +1 -1
  275. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  276. package/lib/cjs/render/webgl/Texture.js +1 -1
  277. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  278. package/lib/cjs/render/webgl/UniformHandle.js +1 -1
  279. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  280. package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -2
  281. package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
  282. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  283. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  284. package/lib/cjs/render-primitives.d.ts +1 -4
  285. package/lib/cjs/render-primitives.d.ts.map +1 -1
  286. package/lib/cjs/render-primitives.js +1 -4
  287. package/lib/cjs/render-primitives.js.map +1 -1
  288. package/lib/cjs/tile/B3dmReader.d.ts +1 -1
  289. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  290. package/lib/cjs/tile/B3dmReader.js +1 -1
  291. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  292. package/lib/cjs/tile/GltfReader.d.ts +3 -3
  293. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  294. package/lib/cjs/tile/GltfReader.js +12 -21
  295. package/lib/cjs/tile/GltfReader.js.map +1 -1
  296. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  297. package/lib/cjs/tile/IModelTile.js +11 -17
  298. package/lib/cjs/tile/IModelTile.js.map +1 -1
  299. package/lib/cjs/tile/IModelTileTree.d.ts +3 -1
  300. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  301. package/lib/cjs/tile/IModelTileTree.js +14 -0
  302. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  303. package/lib/cjs/tile/ImdlDecoder.d.ts +52 -0
  304. package/lib/cjs/tile/ImdlDecoder.d.ts.map +1 -0
  305. package/lib/cjs/tile/ImdlDecoder.js +35 -0
  306. package/lib/cjs/tile/ImdlDecoder.js.map +1 -0
  307. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +19 -0
  308. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -0
  309. package/lib/cjs/tile/ImdlGraphicsCreator.js +328 -0
  310. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -0
  311. package/lib/cjs/tile/ImdlParser.d.ts +26 -0
  312. package/lib/cjs/tile/ImdlParser.d.ts.map +1 -0
  313. package/lib/cjs/tile/ImdlParser.js +72 -0
  314. package/lib/cjs/tile/ImdlParser.js.map +1 -0
  315. package/lib/cjs/tile/ImdlReader.d.ts +16 -420
  316. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  317. package/lib/cjs/tile/ImdlReader.js +69 -902
  318. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  319. package/lib/cjs/tile/OPCFormatInterpreter.js +1 -1
  320. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  321. package/lib/cjs/tile/PntsReader.js +1 -1
  322. package/lib/cjs/tile/PntsReader.js.map +1 -1
  323. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  324. package/lib/cjs/tile/PrimaryTileTree.js +2 -1
  325. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  326. package/lib/cjs/tile/RealityTileLoader.js +1 -1
  327. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  328. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +1 -1
  329. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  330. package/lib/cjs/tile/TileAdmin.d.ts +7 -0
  331. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  332. package/lib/cjs/tile/TileAdmin.js +1 -0
  333. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  334. package/lib/cjs/tile/internal.d.ts +3 -0
  335. package/lib/cjs/tile/internal.d.ts.map +1 -1
  336. package/lib/cjs/tile/internal.js +3 -0
  337. package/lib/cjs/tile/internal.js.map +1 -1
  338. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +8 -1
  339. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  340. package/lib/cjs/tile/map/ArcGisUtilities.js +21 -0
  341. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  342. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  343. package/lib/cjs/tile/map/MapLayerImageryFormats.js +3 -0
  344. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  345. package/lib/cjs/tile/map/MapLayerSources.d.ts +4 -1
  346. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  347. package/lib/cjs/tile/map/MapLayerSources.js +3 -0
  348. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  349. package/lib/cjs/tile/map/MapTile.d.ts +6 -1
  350. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  351. package/lib/cjs/tile/map/MapTile.js +8 -7
  352. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  353. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  354. package/lib/cjs/tile/map/MapTileTree.js +8 -2
  355. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  356. package/lib/cjs/tools/ElementSetTool.js +1 -1
  357. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  358. package/lib/cjs/tools/SelectTool.js +1 -1
  359. package/lib/cjs/tools/SelectTool.js.map +1 -1
  360. package/lib/cjs/tools/ToolAdmin.js +1 -1
  361. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  362. package/lib/cjs/tools/ViewTool.js +1 -1
  363. package/lib/cjs/tools/ViewTool.js.map +1 -1
  364. package/lib/cjs/workers/ImdlParser/Worker.d.ts +20 -0
  365. package/lib/cjs/workers/ImdlParser/Worker.d.ts.map +1 -0
  366. package/lib/cjs/workers/ImdlParser/Worker.js +32 -0
  367. package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -0
  368. package/lib/cjs/workers/ImdlParser/webpack.config.js +40 -0
  369. package/lib/cjs/workers/RegisterWorker.d.ts +9 -0
  370. package/lib/cjs/workers/RegisterWorker.d.ts.map +1 -0
  371. package/lib/cjs/workers/RegisterWorker.js +36 -0
  372. package/lib/cjs/workers/RegisterWorker.js.map +1 -0
  373. package/lib/esm/AccuSnap.d.ts.map +1 -1
  374. package/lib/esm/AccuSnap.js +8 -0
  375. package/lib/esm/AccuSnap.js.map +1 -1
  376. package/lib/esm/BriefcaseTxns.d.ts +2 -2
  377. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  378. package/lib/esm/BriefcaseTxns.js +3 -3
  379. package/lib/esm/BriefcaseTxns.js.map +1 -1
  380. package/lib/esm/CheckpointConnection.js +1 -1
  381. package/lib/esm/CheckpointConnection.js.map +1 -1
  382. package/lib/esm/DrawingViewState.js +1 -1
  383. package/lib/esm/DrawingViewState.js.map +1 -1
  384. package/lib/esm/ElementLocateManager.js +1 -1
  385. package/lib/esm/ElementLocateManager.js.map +1 -1
  386. package/lib/esm/EnvironmentDecorations.js +1 -1
  387. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  388. package/lib/esm/GeoServices.js +1 -1
  389. package/lib/esm/GeoServices.js.map +1 -1
  390. package/lib/esm/GraphicalEditingScope.d.ts +2 -2
  391. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  392. package/lib/esm/GraphicalEditingScope.js +2 -2
  393. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  394. package/lib/esm/IModelApp.js +1 -1
  395. package/lib/esm/IModelApp.js.map +1 -1
  396. package/lib/esm/IModelConnection.d.ts +3 -3
  397. package/lib/esm/IModelConnection.js +4 -4
  398. package/lib/esm/IModelConnection.js.map +1 -1
  399. package/lib/esm/IpcApp.d.ts.map +1 -1
  400. package/lib/esm/IpcApp.js +4 -4
  401. package/lib/esm/IpcApp.js.map +1 -1
  402. package/lib/esm/LocalhostIpcApp.js +2 -2
  403. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  404. package/lib/esm/Marker.d.ts +1 -1
  405. package/lib/esm/Marker.d.ts.map +1 -1
  406. package/lib/esm/Marker.js +3 -3
  407. package/lib/esm/Marker.js.map +1 -1
  408. package/lib/esm/NativeApp.d.ts.map +1 -1
  409. package/lib/esm/NativeApp.js +5 -5
  410. package/lib/esm/NativeApp.js.map +1 -1
  411. package/lib/esm/NoRenderApp.d.ts +1 -1
  412. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  413. package/lib/esm/NoRenderApp.js +1 -1
  414. package/lib/esm/NoRenderApp.js.map +1 -1
  415. package/lib/esm/RealityDataSource.js +1 -1
  416. package/lib/esm/RealityDataSource.js.map +1 -1
  417. package/lib/esm/RealityDataSourceContextShareImpl.js +1 -1
  418. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  419. package/lib/esm/SheetViewState.d.ts.map +1 -1
  420. package/lib/esm/SheetViewState.js +2 -2
  421. package/lib/esm/SheetViewState.js.map +1 -1
  422. package/lib/esm/Sprites.js +2 -2
  423. package/lib/esm/Sprites.js.map +1 -1
  424. package/lib/esm/ViewingSpace.js +1 -1
  425. package/lib/esm/ViewingSpace.js.map +1 -1
  426. package/lib/esm/Viewport.d.ts +1 -1
  427. package/lib/esm/Viewport.d.ts.map +1 -1
  428. package/lib/esm/Viewport.js +1 -1
  429. package/lib/esm/Viewport.js.map +1 -1
  430. package/lib/esm/common/FrontendLoggerCategory.d.ts.map +1 -0
  431. package/lib/esm/common/FrontendLoggerCategory.js.map +1 -0
  432. package/lib/esm/common/ImageUtil.d.ts.map +1 -0
  433. package/lib/esm/{ImageUtil.js → common/ImageUtil.js} +2 -0
  434. package/lib/esm/common/ImageUtil.js.map +1 -0
  435. package/lib/esm/common/ViewRect.d.ts.map +1 -0
  436. package/lib/esm/common/ViewRect.js.map +1 -0
  437. package/lib/esm/common/WorkerProxy.d.ts +73 -0
  438. package/lib/esm/common/WorkerProxy.d.ts.map +1 -0
  439. package/lib/esm/common/WorkerProxy.js +50 -0
  440. package/lib/esm/common/WorkerProxy.js.map +1 -0
  441. package/lib/{cjs → esm/common}/gltf/GltfModel.d.ts +1 -1
  442. package/lib/esm/common/gltf/GltfModel.d.ts.map +1 -0
  443. package/lib/esm/common/gltf/GltfModel.js.map +1 -0
  444. package/lib/esm/common/gltf/GltfParser.d.ts.map +1 -0
  445. package/lib/esm/common/gltf/GltfParser.js.map +1 -0
  446. package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -0
  447. package/lib/esm/common/gltf/GltfSchema.js.map +1 -0
  448. package/lib/esm/common/imdl/ImdlModel.d.ts +186 -0
  449. package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -0
  450. package/lib/esm/common/imdl/ImdlModel.js +67 -0
  451. package/lib/esm/common/imdl/ImdlModel.js.map +1 -0
  452. package/lib/esm/common/imdl/ImdlSchema.d.ts +380 -0
  453. package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -0
  454. package/lib/esm/common/imdl/ImdlSchema.js +9 -0
  455. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -0
  456. package/lib/esm/common/imdl/ParseImdlDocument.d.ts +45 -0
  457. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -0
  458. package/lib/esm/common/imdl/ParseImdlDocument.js +987 -0
  459. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -0
  460. package/lib/esm/common/render/AnimationNodeId.d.ts +11 -0
  461. package/lib/esm/common/render/AnimationNodeId.d.ts.map +1 -0
  462. package/lib/esm/common/render/AnimationNodeId.js +16 -0
  463. package/lib/esm/common/render/AnimationNodeId.js.map +1 -0
  464. package/lib/{cjs/render/RenderMaterial.d.ts → esm/common/render/MaterialParams.d.ts} +7 -20
  465. package/lib/esm/common/render/MaterialParams.d.ts.map +1 -0
  466. package/lib/esm/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
  467. package/lib/esm/common/render/MaterialParams.js.map +1 -0
  468. package/lib/esm/common/render/TextureParams.d.ts +30 -0
  469. package/lib/esm/common/render/TextureParams.d.ts.map +1 -0
  470. package/lib/esm/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
  471. package/lib/esm/common/render/TextureParams.js.map +1 -0
  472. package/lib/{cjs → esm/common}/render/primitives/AuxChannelTable.d.ts +12 -8
  473. package/lib/esm/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
  474. package/lib/esm/{render → common/render}/primitives/AuxChannelTable.js +42 -9
  475. package/lib/esm/common/render/primitives/AuxChannelTable.js.map +1 -0
  476. package/lib/esm/common/render/primitives/DisplayParams.d.ts.map +1 -0
  477. package/lib/esm/common/render/primitives/DisplayParams.js.map +1 -0
  478. package/lib/esm/common/render/primitives/EdgeParams.d.ts +94 -0
  479. package/lib/esm/common/render/primitives/EdgeParams.d.ts.map +1 -0
  480. package/lib/esm/common/render/primitives/EdgeParams.js +42 -0
  481. package/lib/esm/common/render/primitives/EdgeParams.js.map +1 -0
  482. package/lib/esm/common/render/primitives/MeshParams.d.ts +20 -0
  483. package/lib/esm/common/render/primitives/MeshParams.d.ts.map +1 -0
  484. package/lib/esm/common/render/primitives/MeshParams.js +9 -0
  485. package/lib/esm/common/render/primitives/MeshParams.js.map +1 -0
  486. package/lib/esm/common/render/primitives/MeshPrimitive.d.ts +29 -0
  487. package/lib/esm/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
  488. package/lib/esm/common/render/primitives/MeshPrimitive.js +15 -0
  489. package/lib/esm/common/render/primitives/MeshPrimitive.js.map +1 -0
  490. package/lib/esm/common/render/primitives/PointStringParams.d.ts +14 -0
  491. package/lib/esm/common/render/primitives/PointStringParams.d.ts.map +1 -0
  492. package/lib/esm/common/render/primitives/PointStringParams.js +9 -0
  493. package/lib/esm/common/render/primitives/PointStringParams.js.map +1 -0
  494. package/lib/esm/common/render/primitives/PolylineParams.d.ts +29 -0
  495. package/lib/esm/common/render/primitives/PolylineParams.d.ts.map +1 -0
  496. package/lib/esm/common/render/primitives/PolylineParams.js +9 -0
  497. package/lib/esm/common/render/primitives/PolylineParams.js.map +1 -0
  498. package/lib/{cjs → esm/common}/render/primitives/SurfaceParams.d.ts +1 -1
  499. package/lib/esm/common/render/primitives/SurfaceParams.d.ts.map +1 -0
  500. package/lib/esm/common/render/primitives/SurfaceParams.js.map +1 -0
  501. package/lib/esm/common/render/primitives/VertexIndices.d.ts +26 -0
  502. package/lib/esm/common/render/primitives/VertexIndices.d.ts.map +1 -0
  503. package/lib/esm/common/render/primitives/VertexIndices.js +60 -0
  504. package/lib/esm/common/render/primitives/VertexIndices.js.map +1 -0
  505. package/lib/esm/common/render/primitives/VertexTable.d.ts +45 -0
  506. package/lib/esm/common/render/primitives/VertexTable.d.ts.map +1 -0
  507. package/lib/esm/common/render/primitives/VertexTable.js +34 -0
  508. package/lib/esm/common/render/primitives/VertexTable.js.map +1 -0
  509. package/lib/esm/{render → common/render}/primitives/VertexTableSplitter.d.ts +23 -2
  510. package/lib/esm/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
  511. package/lib/esm/{render → common/render}/primitives/VertexTableSplitter.js +44 -33
  512. package/lib/esm/common/render/primitives/VertexTableSplitter.js.map +1 -0
  513. package/lib/esm/core-frontend.d.ts +26 -6
  514. package/lib/esm/core-frontend.d.ts.map +1 -1
  515. package/lib/esm/core-frontend.js +26 -6
  516. package/lib/esm/core-frontend.js.map +1 -1
  517. package/lib/esm/extension/ExtensionAdmin.js +1 -1
  518. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  519. package/lib/esm/quantity-formatting/QuantityFormatter.js +1 -1
  520. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  521. package/lib/esm/render/CreateRenderMaterialArgs.d.ts +24 -0
  522. package/lib/esm/render/CreateRenderMaterialArgs.d.ts.map +1 -0
  523. package/lib/esm/render/CreateRenderMaterialArgs.js +9 -0
  524. package/lib/esm/render/CreateRenderMaterialArgs.js.map +1 -0
  525. package/lib/{cjs/render/RenderTexture.d.ts → esm/render/CreateTextureArgs.d.ts} +4 -28
  526. package/lib/esm/render/CreateTextureArgs.d.ts.map +1 -0
  527. package/lib/esm/render/CreateTextureArgs.js +9 -0
  528. package/lib/esm/render/CreateTextureArgs.js.map +1 -0
  529. package/lib/esm/render/GraphicBranch.d.ts +1 -7
  530. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  531. package/lib/esm/render/GraphicBranch.js +0 -8
  532. package/lib/esm/render/GraphicBranch.js.map +1 -1
  533. package/lib/esm/render/MockRender.d.ts +4 -4
  534. package/lib/esm/render/MockRender.d.ts.map +1 -1
  535. package/lib/esm/render/MockRender.js +1 -1
  536. package/lib/esm/render/MockRender.js.map +1 -1
  537. package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
  538. package/lib/esm/render/ParticleCollectionBuilder.js +5 -5
  539. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  540. package/lib/esm/render/RealityMeshParams.js +2 -2
  541. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  542. package/lib/esm/render/RenderSystem.d.ts +7 -6
  543. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  544. package/lib/esm/render/RenderSystem.js +7 -7
  545. package/lib/esm/render/RenderSystem.js.map +1 -1
  546. package/lib/esm/render/RenderTarget.d.ts +1 -1
  547. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  548. package/lib/esm/render/RenderTarget.js.map +1 -1
  549. package/lib/esm/render/VisibleFeature.d.ts +1 -1
  550. package/lib/esm/render/VisibleFeature.d.ts.map +1 -1
  551. package/lib/esm/render/VisibleFeature.js.map +1 -1
  552. package/lib/esm/render/primitives/EdgeParams.d.ts +2 -89
  553. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
  554. package/lib/esm/render/primitives/EdgeParams.js +29 -65
  555. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  556. package/lib/esm/render/primitives/PointStringParams.d.ts +2 -11
  557. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -1
  558. package/lib/esm/render/primitives/PointStringParams.js +24 -28
  559. package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
  560. package/lib/esm/render/primitives/Polyface.d.ts +1 -1
  561. package/lib/esm/render/primitives/Polyface.d.ts.map +1 -1
  562. package/lib/esm/render/primitives/Polyface.js.map +1 -1
  563. package/lib/esm/render/primitives/PolylineParams.d.ts +4 -36
  564. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -1
  565. package/lib/esm/render/primitives/PolylineParams.js +24 -36
  566. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  567. package/lib/esm/render/primitives/Strokes.d.ts +1 -1
  568. package/lib/esm/render/primitives/Strokes.d.ts.map +1 -1
  569. package/lib/esm/render/primitives/Strokes.js.map +1 -1
  570. package/lib/esm/render/primitives/VertexTableBuilder.d.ts +28 -0
  571. package/lib/esm/render/primitives/VertexTableBuilder.d.ts.map +1 -0
  572. package/lib/esm/render/primitives/{VertexTable.js → VertexTableBuilder.js} +60 -171
  573. package/lib/esm/render/primitives/VertexTableBuilder.js.map +1 -0
  574. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
  575. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  576. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  577. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
  578. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  579. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -1
  580. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  581. package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
  582. package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
  583. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js +1 -1
  584. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  585. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts +1 -1
  586. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  587. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  588. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
  589. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  590. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +4 -3
  591. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  592. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +4 -25
  593. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  594. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +9 -14
  595. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  596. package/lib/esm/render/webgl/CachedGeometry.d.ts +1 -1
  597. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  598. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  599. package/lib/esm/render/webgl/ColorInfo.d.ts +1 -1
  600. package/lib/esm/render/webgl/ColorInfo.d.ts.map +1 -1
  601. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  602. package/lib/esm/render/webgl/EdgeGeometry.d.ts +2 -2
  603. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -1
  604. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  605. package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
  606. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  607. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
  608. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  609. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  610. package/lib/esm/render/webgl/Material.d.ts +1 -1
  611. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  612. package/lib/esm/render/webgl/Material.js.map +1 -1
  613. package/lib/esm/render/webgl/Mesh.d.ts +2 -2
  614. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  615. package/lib/esm/render/webgl/Mesh.js +1 -1
  616. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  617. package/lib/esm/render/webgl/MeshData.d.ts +2 -2
  618. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
  619. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  620. package/lib/esm/render/webgl/MeshGeometry.d.ts +1 -1
  621. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -1
  622. package/lib/esm/render/webgl/PointString.d.ts +1 -1
  623. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  624. package/lib/esm/render/webgl/PointString.js.map +1 -1
  625. package/lib/esm/render/webgl/Polyline.d.ts +1 -1
  626. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  627. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  628. package/lib/esm/render/webgl/RenderCommands.js +1 -1
  629. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  630. package/lib/esm/render/webgl/SceneCompositor.d.ts +1 -1
  631. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  632. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  633. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +1 -1
  634. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  635. package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
  636. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  637. package/lib/esm/render/webgl/System.d.ts +7 -6
  638. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  639. package/lib/esm/render/webgl/System.js +1 -1
  640. package/lib/esm/render/webgl/System.js.map +1 -1
  641. package/lib/esm/render/webgl/Target.d.ts +1 -1
  642. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  643. package/lib/esm/render/webgl/Target.js +3 -3
  644. package/lib/esm/render/webgl/Target.js.map +1 -1
  645. package/lib/esm/render/webgl/Texture.d.ts +1 -1
  646. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  647. package/lib/esm/render/webgl/Texture.js +1 -1
  648. package/lib/esm/render/webgl/Texture.js.map +1 -1
  649. package/lib/esm/render/webgl/UniformHandle.js +1 -1
  650. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  651. package/lib/esm/render/webgl/VertexLUT.d.ts +2 -2
  652. package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
  653. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  654. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  655. package/lib/esm/render-primitives.d.ts +1 -4
  656. package/lib/esm/render-primitives.d.ts.map +1 -1
  657. package/lib/esm/render-primitives.js +1 -4
  658. package/lib/esm/render-primitives.js.map +1 -1
  659. package/lib/esm/tile/B3dmReader.d.ts +1 -1
  660. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  661. package/lib/esm/tile/B3dmReader.js +1 -1
  662. package/lib/esm/tile/B3dmReader.js.map +1 -1
  663. package/lib/esm/tile/GltfReader.d.ts +3 -3
  664. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  665. package/lib/esm/tile/GltfReader.js +12 -21
  666. package/lib/esm/tile/GltfReader.js.map +1 -1
  667. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  668. package/lib/esm/tile/IModelTile.js +12 -18
  669. package/lib/esm/tile/IModelTile.js.map +1 -1
  670. package/lib/esm/tile/IModelTileTree.d.ts +3 -1
  671. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  672. package/lib/esm/tile/IModelTileTree.js +15 -1
  673. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  674. package/lib/esm/tile/ImdlDecoder.d.ts +52 -0
  675. package/lib/esm/tile/ImdlDecoder.d.ts.map +1 -0
  676. package/lib/esm/tile/ImdlDecoder.js +31 -0
  677. package/lib/esm/tile/ImdlDecoder.js.map +1 -0
  678. package/lib/esm/tile/ImdlGraphicsCreator.d.ts +19 -0
  679. package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -0
  680. package/lib/esm/tile/ImdlGraphicsCreator.js +324 -0
  681. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -0
  682. package/lib/esm/tile/ImdlParser.d.ts +26 -0
  683. package/lib/esm/tile/ImdlParser.d.ts.map +1 -0
  684. package/lib/esm/tile/ImdlParser.js +68 -0
  685. package/lib/esm/tile/ImdlParser.js.map +1 -0
  686. package/lib/esm/tile/ImdlReader.d.ts +16 -420
  687. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  688. package/lib/esm/tile/ImdlReader.js +71 -903
  689. package/lib/esm/tile/ImdlReader.js.map +1 -1
  690. package/lib/esm/tile/OPCFormatInterpreter.js +1 -1
  691. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  692. package/lib/esm/tile/PntsReader.js +1 -1
  693. package/lib/esm/tile/PntsReader.js.map +1 -1
  694. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  695. package/lib/esm/tile/PrimaryTileTree.js +2 -1
  696. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  697. package/lib/esm/tile/RealityTileLoader.js +1 -1
  698. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  699. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +1 -1
  700. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  701. package/lib/esm/tile/TileAdmin.d.ts +7 -0
  702. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  703. package/lib/esm/tile/TileAdmin.js +1 -0
  704. package/lib/esm/tile/TileAdmin.js.map +1 -1
  705. package/lib/esm/tile/internal.d.ts +3 -0
  706. package/lib/esm/tile/internal.d.ts.map +1 -1
  707. package/lib/esm/tile/internal.js +3 -0
  708. package/lib/esm/tile/internal.js.map +1 -1
  709. package/lib/esm/tile/map/ArcGisUtilities.d.ts +8 -1
  710. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  711. package/lib/esm/tile/map/ArcGisUtilities.js +21 -0
  712. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  713. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  714. package/lib/esm/tile/map/MapLayerImageryFormats.js +3 -0
  715. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  716. package/lib/esm/tile/map/MapLayerSources.d.ts +4 -1
  717. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  718. package/lib/esm/tile/map/MapLayerSources.js +3 -0
  719. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  720. package/lib/esm/tile/map/MapTile.d.ts +6 -1
  721. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  722. package/lib/esm/tile/map/MapTile.js +8 -7
  723. package/lib/esm/tile/map/MapTile.js.map +1 -1
  724. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  725. package/lib/esm/tile/map/MapTileTree.js +8 -2
  726. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  727. package/lib/esm/tools/ElementSetTool.js +1 -1
  728. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  729. package/lib/esm/tools/SelectTool.js +1 -1
  730. package/lib/esm/tools/SelectTool.js.map +1 -1
  731. package/lib/esm/tools/ToolAdmin.js +1 -1
  732. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  733. package/lib/esm/tools/ViewTool.js +1 -1
  734. package/lib/esm/tools/ViewTool.js.map +1 -1
  735. package/lib/esm/workers/ImdlParser/Worker.d.ts +20 -0
  736. package/lib/esm/workers/ImdlParser/Worker.d.ts.map +1 -0
  737. package/lib/esm/workers/ImdlParser/Worker.js +30 -0
  738. package/lib/esm/workers/ImdlParser/Worker.js.map +1 -0
  739. package/lib/esm/workers/ImdlParser/webpack.config.js +40 -0
  740. package/lib/esm/workers/RegisterWorker.d.ts +9 -0
  741. package/lib/esm/workers/RegisterWorker.d.ts.map +1 -0
  742. package/lib/esm/workers/RegisterWorker.js +32 -0
  743. package/lib/esm/workers/RegisterWorker.js.map +1 -0
  744. package/lib/public/scripts/parse-imdl-worker.js +1 -0
  745. package/lib/workers/webpack/parse-imdl-worker.js +1 -0
  746. package/package.json +23 -20
  747. package/lib/cjs/FrontendLoggerCategory.d.ts.map +0 -1
  748. package/lib/cjs/FrontendLoggerCategory.js.map +0 -1
  749. package/lib/cjs/ImageUtil.d.ts.map +0 -1
  750. package/lib/cjs/ImageUtil.js.map +0 -1
  751. package/lib/cjs/ViewRect.d.ts.map +0 -1
  752. package/lib/cjs/ViewRect.js.map +0 -1
  753. package/lib/cjs/WebWorkerManager.d.ts +0 -49
  754. package/lib/cjs/WebWorkerManager.d.ts.map +0 -1
  755. package/lib/cjs/WebWorkerManager.js +0 -155
  756. package/lib/cjs/WebWorkerManager.js.map +0 -1
  757. package/lib/cjs/gltf/GltfModel.d.ts.map +0 -1
  758. package/lib/cjs/gltf/GltfModel.js.map +0 -1
  759. package/lib/cjs/gltf/GltfParser.d.ts.map +0 -1
  760. package/lib/cjs/gltf/GltfParser.js.map +0 -1
  761. package/lib/cjs/gltf/GltfSchema.d.ts.map +0 -1
  762. package/lib/cjs/gltf/GltfSchema.js.map +0 -1
  763. package/lib/cjs/render/RenderMaterial.d.ts.map +0 -1
  764. package/lib/cjs/render/RenderMaterial.js.map +0 -1
  765. package/lib/cjs/render/RenderTexture.d.ts.map +0 -1
  766. package/lib/cjs/render/RenderTexture.js.map +0 -1
  767. package/lib/cjs/render/primitives/AuxChannelTable.d.ts.map +0 -1
  768. package/lib/cjs/render/primitives/AuxChannelTable.js.map +0 -1
  769. package/lib/cjs/render/primitives/DisplayParams.d.ts.map +0 -1
  770. package/lib/cjs/render/primitives/DisplayParams.js.map +0 -1
  771. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +0 -1
  772. package/lib/cjs/render/primitives/SurfaceParams.js.map +0 -1
  773. package/lib/cjs/render/primitives/VertexTable.d.ts +0 -152
  774. package/lib/cjs/render/primitives/VertexTable.d.ts.map +0 -1
  775. package/lib/cjs/render/primitives/VertexTable.js.map +0 -1
  776. package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +0 -1
  777. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +0 -1
  778. package/lib/esm/FrontendLoggerCategory.d.ts.map +0 -1
  779. package/lib/esm/FrontendLoggerCategory.js.map +0 -1
  780. package/lib/esm/ImageUtil.d.ts.map +0 -1
  781. package/lib/esm/ImageUtil.js.map +0 -1
  782. package/lib/esm/ViewRect.d.ts.map +0 -1
  783. package/lib/esm/ViewRect.js.map +0 -1
  784. package/lib/esm/WebWorkerManager.d.ts +0 -49
  785. package/lib/esm/WebWorkerManager.d.ts.map +0 -1
  786. package/lib/esm/WebWorkerManager.js +0 -150
  787. package/lib/esm/WebWorkerManager.js.map +0 -1
  788. package/lib/esm/gltf/GltfModel.d.ts.map +0 -1
  789. package/lib/esm/gltf/GltfModel.js.map +0 -1
  790. package/lib/esm/gltf/GltfParser.d.ts.map +0 -1
  791. package/lib/esm/gltf/GltfParser.js.map +0 -1
  792. package/lib/esm/gltf/GltfSchema.d.ts.map +0 -1
  793. package/lib/esm/gltf/GltfSchema.js.map +0 -1
  794. package/lib/esm/render/RenderMaterial.d.ts.map +0 -1
  795. package/lib/esm/render/RenderMaterial.js.map +0 -1
  796. package/lib/esm/render/RenderTexture.d.ts.map +0 -1
  797. package/lib/esm/render/RenderTexture.js.map +0 -1
  798. package/lib/esm/render/primitives/AuxChannelTable.d.ts.map +0 -1
  799. package/lib/esm/render/primitives/AuxChannelTable.js.map +0 -1
  800. package/lib/esm/render/primitives/DisplayParams.d.ts.map +0 -1
  801. package/lib/esm/render/primitives/DisplayParams.js.map +0 -1
  802. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +0 -1
  803. package/lib/esm/render/primitives/SurfaceParams.js.map +0 -1
  804. package/lib/esm/render/primitives/VertexTable.d.ts +0 -152
  805. package/lib/esm/render/primitives/VertexTable.d.ts.map +0 -1
  806. package/lib/esm/render/primitives/VertexTable.js.map +0 -1
  807. package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +0 -1
  808. package/lib/esm/render/primitives/VertexTableSplitter.js.map +0 -1
  809. /package/lib/cjs/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
  810. /package/lib/cjs/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
  811. /package/lib/cjs/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
  812. /package/lib/cjs/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
  813. /package/lib/cjs/{ViewRect.js → common/ViewRect.js} +0 -0
  814. /package/lib/cjs/{gltf → common/gltf}/GltfModel.js +0 -0
  815. /package/lib/cjs/{gltf → common/gltf}/GltfParser.d.ts +0 -0
  816. /package/lib/cjs/{gltf → common/gltf}/GltfParser.js +0 -0
  817. /package/lib/cjs/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
  818. /package/lib/cjs/{gltf → common/gltf}/GltfSchema.js +0 -0
  819. /package/lib/cjs/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
  820. /package/lib/cjs/{render → common/render}/primitives/DisplayParams.js +0 -0
  821. /package/lib/cjs/{render → common/render}/primitives/SurfaceParams.js +0 -0
  822. /package/lib/esm/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
  823. /package/lib/esm/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
  824. /package/lib/esm/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
  825. /package/lib/esm/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
  826. /package/lib/esm/{ViewRect.js → common/ViewRect.js} +0 -0
  827. /package/lib/esm/{gltf → common/gltf}/GltfModel.js +0 -0
  828. /package/lib/esm/{gltf → common/gltf}/GltfParser.d.ts +0 -0
  829. /package/lib/esm/{gltf → common/gltf}/GltfParser.js +0 -0
  830. /package/lib/esm/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
  831. /package/lib/esm/{gltf → common/gltf}/GltfSchema.js +0 -0
  832. /package/lib/esm/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
  833. /package/lib/esm/{render → common/render}/primitives/DisplayParams.js +0 -0
  834. /package/lib/esm/{render → common/render}/primitives/SurfaceParams.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisUtilities.js","sourceRoot":"","sources":["../../../../src/tile/map/ArcGisUtilities.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\nimport { Angle, Constant } from \"@itwin/core-geometry\";\r\nimport { MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { MapCartoRectangle, MapLayerAccessClient, MapLayerAccessToken, MapLayerAccessTokenParams, MapLayerSource, MapLayerSourceStatus, MapLayerSourceValidation} from \"../internal\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\n\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n/** @internal */\r\nexport enum ArcGisErrorCode {\r\n InvalidCredentials = 401,\r\n InvalidToken = 498,\r\n TokenRequired = 499,\r\n UnknownError = 1000,\r\n NoTokenService = 1001,\r\n}\r\n\r\n/** Class representing an ArcGIS service metadata.\r\n * @internal\r\n * */\r\nexport interface ArcGISServiceMetadata {\r\n /** JSON content from the service */\r\n content: any;\r\n\r\n /** Indicates if an access token is required to access the service */\r\n accessTokenRequired: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisUtilities {\r\n\r\n private static getBBoxString(range?: MapCartoRectangle) {\r\n if (!range)\r\n range = MapCartoRectangle.createMaximum();\r\n\r\n return `${range.low.x * Angle.degreesPerRadian},${range.low.y * Angle.degreesPerRadian},${range.high.x * Angle.degreesPerRadian},${range.high.y * Angle.degreesPerRadian}`;\r\n }\r\n\r\n public static async getNationalMapSources(): Promise<MapLayerSource[]> {\r\n const sources = new Array<MapLayerSource>();\r\n const response = await fetch(\"https://viewer.nationalmap.gov/tnmaccess/api/getMapServiceList\", { method: \"GET\" });\r\n const services = await response.json();\r\n\r\n if (!Array.isArray(services))\r\n return sources;\r\n\r\n for (const service of services) {\r\n if (service.wmsUrl.length === 0) // Exclude Wfs..\r\n continue;\r\n switch (service.serviceType) {\r\n case \"ArcGIS\":\r\n sources.push(MapLayerSource.fromJSON({ name: service.displayName, url: service.serviceLink, formatId: \"ArcGIS\" })!);\r\n break;\r\n default: {\r\n const wmsIndex = service.wmsUrl.lastIndexOf(\"/wms\");\r\n if (wmsIndex > 0) {\r\n const url = service.wmsUrl.slice(0, wmsIndex + 4);\r\n sources.push(MapLayerSource.fromJSON({ name: service.displayName, url, formatId: \"WMS\" })!);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return sources;\r\n }\r\n public static async getServiceDirectorySources(url: string, baseUrl?: string): Promise<MapLayerSource[]> {\r\n if (undefined === baseUrl)\r\n baseUrl = url;\r\n let sources = new Array<MapLayerSource>();\r\n const response = await fetch(`${url}?f=json`, { method: \"GET\" });\r\n const json = await response.json();\r\n if (json !== undefined) {\r\n if (Array.isArray(json.folders)) {\r\n for (const folder of json.folders) {\r\n sources = sources.concat(await ArcGisUtilities.getServiceDirectorySources(`${url}/${folder}`, url));\r\n }\r\n }\r\n if (Array.isArray(json.services)) {\r\n for (const service of json.services) {\r\n let source;\r\n if (service.type === \"MapServer\")\r\n source = MapLayerSource.fromJSON({ name: service.name, url: `${baseUrl}/${service.name}/MapServer`, formatId: \"ArcGIS\" });\r\n else if (service.type === \"ImageServer\")\r\n source = MapLayerSource.fromJSON({ name: service.name, url: `${baseUrl}/${service.name}/ImageServer`, formatId: \"ArcGIS\" });\r\n if (source)\r\n sources.push(source);\r\n }\r\n }\r\n }\r\n\r\n return sources;\r\n }\r\n public static async getSourcesFromQuery(range?: MapCartoRectangle, url = \"https://usgs.maps.arcgis.com/sharing/rest/search\"): Promise<MapLayerSource[]> {\r\n const sources = new Array<MapLayerSource>();\r\n for (let start = 1; start > 0;) {\r\n const response = await fetch(`${url}?f=json&q=(group:9d1199a521334e77a7d15abbc29f8144) AND (type:\"Map Service\")&bbox=${ArcGisUtilities.getBBoxString(range)}&sortOrder=desc&start=${start}&num=100`, { method: \"GET\" });\r\n const json = await response.json();\r\n if (!json)\r\n break;\r\n\r\n start = json.nextStart ? json.nextStart : -1;\r\n if (json !== undefined && Array.isArray(json.results)) {\r\n for (const result of json.results) {\r\n const source = MapLayerSource.fromJSON({ name: result.name ? result.name : result.title, url: result.url, formatId: \"ArcGIS\" });\r\n if (source)\r\n sources.push(source);\r\n }\r\n }\r\n }\r\n\r\n return sources;\r\n }\r\n\r\n /**\r\n * Attempt to access an ArcGIS service, and validate its service metadata.\r\n * @param url URL of the source to validate.\r\n * @param formatId Format Id of the source.\r\n * @param capabilitiesFilter List of capabilities 'keyword' that needs to be advertised in the service's metadata\r\n * in order to be valid. For example: 'Map', 'Query', etc\r\n * @param userName Username to use for legacy token based security.\r\n * @param password Username to use for legacy token based security.\r\n * @param ignoreCache Flag to skip cache lookup (i.e. force a new server request)\r\n * @return Validation Status. If successful, a list of available sub-layers will also be returned.\r\n */\r\n public static async validateSource(url: string, formatId: string, capabilitiesFilter: string[], userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n const metadata = await this.getServiceJson(url, formatId, userName, password, ignoreCache);\r\n const json = metadata?.content;\r\n if (json === undefined) {\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n } else if (json.error !== undefined) {\r\n\r\n // If we got a 'Token Required' error, lets check what authentification methods this ESRI service offers\r\n // and return information needed to initiate the authentification process... the end-user\r\n // will have to provide his credentials before we can fully validate this source.\r\n if (json.error.code === ArcGisErrorCode.TokenRequired) {\r\n return { status: MapLayerSourceStatus.RequireAuth};\r\n } else if (json.error.code === ArcGisErrorCode.InvalidCredentials)\r\n return { status: MapLayerSourceStatus.InvalidCredentials};\r\n }\r\n\r\n // Check this service support the expected queries\r\n let hasCapabilities = false;\r\n let capsArray: string[] = [];\r\n if (json.capabilities && typeof json.capabilities === \"string\" ) {\r\n const capabilities: string = json.capabilities;\r\n capsArray = capabilities.split(\",\").map((entry) => entry.toLowerCase());\r\n\r\n const filtered = capsArray.filter((element, _index, _array) => capabilitiesFilter.includes(element));\r\n hasCapabilities = (filtered.length === capabilitiesFilter.length);\r\n }\r\n if (!hasCapabilities) {\r\n return { status: MapLayerSourceStatus.InvalidFormat};\r\n }\r\n\r\n // Only EPSG:3857 is supported with pre-rendered tiles.\r\n if (json.tileInfo && capsArray.includes(\"tilesonly\") && !ArcGisUtilities.isEpsg3857Compatible(json.tileInfo)) {\r\n return { status: MapLayerSourceStatus.InvalidCoordinateSystem};\r\n }\r\n\r\n let subLayers;\r\n if (json.layers) {\r\n\r\n subLayers = new Array<MapSubLayerProps>();\r\n\r\n for (const layer of json.layers) {\r\n const parent = layer.parentLayerId < 0 ? undefined : layer.parentLayerId;\r\n const children = Array.isArray(layer.subLayerIds) ? layer.subLayerIds : undefined;\r\n subLayers.push({ name: layer.name, visible: layer.defaultVisibility !== false, id: layer.id, parent, children });\r\n }\r\n }\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n }\r\n\r\n /**\r\n * Validate MapService tiling metadata and checks if the tile tree is 'Google Maps' compatible.\r\n */\r\n public static isEpsg3857Compatible(tileInfo: any) {\r\n if (tileInfo.spatialReference?.latestWkid !== 3857 || !Array.isArray(tileInfo.lods))\r\n return false;\r\n\r\n const zeroLod = tileInfo.lods[0];\r\n return zeroLod.level === 0 && Math.abs(zeroLod.resolution - 156543.03392800014) < .001;\r\n }\r\n\r\n private static _serviceCache = new Map<string, ArcGISServiceMetadata|undefined>();\r\n\r\n /**\r\n * Fetch an ArcGIS service metadata, and returns its JSON representation.\r\n * If an access client has been configured for the specified formatId,\r\n * it will be used to apply required security token.\r\n * By default, response for each URL are cached.\r\n */\r\n public static async getServiceJson(url: string, formatId: string, userName?: string, password?: string, ignoreCache?: boolean, requireToken?: boolean): Promise<ArcGISServiceMetadata|undefined> {\r\n if (!ignoreCache) {\r\n const cached = ArcGisUtilities._serviceCache.get(url);\r\n if (cached !== undefined)\r\n return cached;\r\n }\r\n\r\n let accessTokenRequired = false;\r\n try {\r\n let tmpUrl = new URL(url);\r\n tmpUrl.searchParams.append(\"f\", \"json\");\r\n\r\n // In some cases, caller might already know token is required, so append it immediately\r\n if (requireToken) {\r\n const accessClient = IModelApp.mapLayerFormatRegistry.getAccessClient(formatId);\r\n if (accessClient) {\r\n accessTokenRequired = true;\r\n await ArcGisUtilities.appendSecurityToken(tmpUrl, accessClient, {mapLayerUrl: new URL(url), userName, password});\r\n }\r\n }\r\n let response = await fetch(tmpUrl.toString(), { method: \"GET\" });\r\n\r\n // Append security token when corresponding error code is returned by ArcGIS service\r\n let errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);\r\n if (!accessTokenRequired\r\n && errorCode !== undefined\r\n && errorCode === ArcGisErrorCode.TokenRequired ) {\r\n accessTokenRequired = true;\r\n // If token required\r\n const accessClient = IModelApp.mapLayerFormatRegistry.getAccessClient(formatId);\r\n if (accessClient) {\r\n tmpUrl = new URL(url);\r\n tmpUrl.searchParams.append(\"f\", \"json\");\r\n await ArcGisUtilities.appendSecurityToken(tmpUrl, accessClient, {mapLayerUrl: new URL(url), userName, password});\r\n response = await fetch(tmpUrl.toString(), { method: \"GET\" });\r\n errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);\r\n }\r\n }\r\n\r\n const json = await response.json();\r\n const info = {content: json, accessTokenRequired};\r\n // Cache the response only if it doesn't contain any error.\r\n ArcGisUtilities._serviceCache.set(url, (errorCode === undefined ? info : undefined));\r\n return info; // Always return json, even though it contains an error code.\r\n\r\n } catch (_error) {\r\n ArcGisUtilities._serviceCache.set(url, undefined);\r\n return undefined;\r\n }\r\n }\r\n\r\n /** Read a response from ArcGIS server and check for error code in the response.\r\n */\r\n public static async checkForResponseErrorCode(response: Response) {\r\n const tmpResponse = response;\r\n if (response.headers && tmpResponse.headers.get(\"content-type\")?.toLowerCase().includes(\"json\")) {\r\n\r\n try {\r\n // Note:\r\n // Since response stream can only be read once (i.e. calls to .json() method)\r\n // we have to clone the response object in order to check for potential error code,\r\n // but still keep the response stream as unread.\r\n const clonedResponse = tmpResponse.clone();\r\n const json = await clonedResponse.json();\r\n if (json?.error?.code !== undefined)\r\n return json?.error?.code as number;\r\n } catch { }\r\n\r\n }\r\n return undefined;\r\n }\r\n\r\n // return the appended access token if available.\r\n public static async appendSecurityToken(url: URL, accessClient: MapLayerAccessClient, accessTokenParams: MapLayerAccessTokenParams): Promise<MapLayerAccessToken|undefined> {\r\n\r\n // Append security token if available\r\n let accessToken: MapLayerAccessToken|undefined;\r\n try {\r\n accessToken = await accessClient.getAccessToken(accessTokenParams);\r\n } catch {}\r\n\r\n if (accessToken?.token) {\r\n url.searchParams.append(\"token\", accessToken.token);\r\n return accessToken;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Compute scale, resolution values for requested zoom levels (WSG 84)\r\n * Use a scale of 96 dpi for Google Maps scales\r\n * Based on this article: https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Resolution_and_Scale\r\n * @param startZoom Zoom level where scales begins to be computed\r\n * @param endZoom Zoom level where scales ends to be computed\r\n * @param latitude Latitude in degrees to use to compute scales (i.e 0 for Equator)\r\n * @param tileSize Size of a tile in pixels (i.e 256)\r\n * @param screenDpi Monitor resolution in dots per inch (i.e. typically 96dpi is used by Google Maps)\r\n *\r\n * @returns An array containing resolution and scale values for each requested zoom level\r\n */\r\n public static computeZoomLevelsScales(startZoom: number = 0, endZoom: number = 20, latitude: number = 0, tileSize: number = 256, screenDpi = 96): {zoom: number, resolution: number, scale: number}[] {\r\n // Note: There is probably a more direct way to compute this, but I prefer to go for a simple and well documented approach.\r\n if (startZoom <0 || endZoom < startZoom || tileSize < 0 || screenDpi < 1 || latitude < -90 || latitude > 90)\r\n return [];\r\n\r\n const inchPerMeter = 1 / 0.0254;\r\n const results: {zoom: number, resolution: number, scale: number}[] = [];\r\n const equatorLength = Constant.earthRadiusWGS84.equator * 2 * Math.PI;\r\n const zoom0Resolution = equatorLength / tileSize; // in meters per pixel\r\n\r\n const cosLatitude = Math.cos(latitude);\r\n for (let zoom = startZoom; zoom<= endZoom; zoom++) {\r\n const resolution = zoom0Resolution * cosLatitude / Math.pow(2, zoom);\r\n const scale = screenDpi * inchPerMeter * resolution;\r\n results.push({zoom, resolution, scale});\r\n }\r\n\r\n return results;\r\n }\r\n\r\n /**\r\n * Match the provided minScale,maxScale values to corresponding wgs84 zoom levels\r\n * @param defaultMaxLod Value of the last LOD (i.e 22)\r\n * @param tileSize Size of a tile in pixels (i.e 256)\r\n * @param minScale Minimum scale value that needs to be matched to a LOD level\r\n * @param maxScale Maximum scale value that needs to be matched to a LOD level\r\n * @returns minLod: LOD value matching minScale, maxLod: LOD value matching maxScale\r\n */\r\n public static getZoomLevelsScales( defaultMaxLod: number, tileSize: number, minScale?: number, maxScale?: number, tolerance: number = 0): {minLod?: number, maxLod?: number} {\r\n\r\n let minLod: number|undefined, maxLod: number|undefined;\r\n\r\n const zoomScales = ArcGisUtilities.computeZoomLevelsScales(0, defaultMaxLod, 0 /* latitude 0 = Equator*/, tileSize);\r\n\r\n if (zoomScales.length > 0) {\r\n\r\n if (minScale) {\r\n minLod = 0;\r\n // We are looking for the largest scale value with a scale value smaller than minScale\r\n for (; minLod < zoomScales.length && (zoomScales[minLod].scale > minScale && Math.abs(zoomScales[minLod].scale - minScale) > tolerance); minLod++)\r\n ;\r\n\r\n }\r\n\r\n if (maxScale) {\r\n maxLod = defaultMaxLod;\r\n // We are looking for the smallest scale value with a value greater than maxScale\r\n for (; maxLod >= 0 && zoomScales[maxLod].scale < maxScale && Math.abs(zoomScales[maxLod].scale - maxScale) > tolerance; maxLod--)\r\n ;\r\n }\r\n }\r\n return {minLod, maxLod};\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"ArcGisUtilities.js","sourceRoot":"","sources":["../../../../src/tile/map/ArcGisUtilities.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\nimport { Angle, Constant } from \"@itwin/core-geometry\";\r\nimport { MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { MapCartoRectangle, MapLayerAccessClient, MapLayerAccessToken, MapLayerAccessTokenParams, MapLayerSource, MapLayerSourceStatus, MapLayerSourceValidation} from \"../internal\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\n\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n/** @internal */\r\nexport enum ArcGisErrorCode {\r\n InvalidCredentials = 401,\r\n InvalidToken = 498,\r\n TokenRequired = 499,\r\n UnknownError = 1000,\r\n NoTokenService = 1001,\r\n}\r\n\r\n/** Class representing an ArcGIS service metadata.\r\n * @internal\r\n * */\r\nexport interface ArcGISServiceMetadata {\r\n /** JSON content from the service */\r\n content: any;\r\n\r\n /** Indicates if an access token is required to access the service */\r\n accessTokenRequired: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisUtilities {\r\n\r\n private static getBBoxString(range?: MapCartoRectangle) {\r\n if (!range)\r\n range = MapCartoRectangle.createMaximum();\r\n\r\n return `${range.low.x * Angle.degreesPerRadian},${range.low.y * Angle.degreesPerRadian},${range.high.x * Angle.degreesPerRadian},${range.high.y * Angle.degreesPerRadian}`;\r\n }\r\n\r\n public static async getNationalMapSources(): Promise<MapLayerSource[]> {\r\n const sources = new Array<MapLayerSource>();\r\n const response = await fetch(\"https://viewer.nationalmap.gov/tnmaccess/api/getMapServiceList\", { method: \"GET\" });\r\n const services = await response.json();\r\n\r\n if (!Array.isArray(services))\r\n return sources;\r\n\r\n for (const service of services) {\r\n if (service.wmsUrl.length === 0) // Exclude Wfs..\r\n continue;\r\n switch (service.serviceType) {\r\n case \"ArcGIS\":\r\n sources.push(MapLayerSource.fromJSON({ name: service.displayName, url: service.serviceLink, formatId: \"ArcGIS\" })!);\r\n break;\r\n default: {\r\n const wmsIndex = service.wmsUrl.lastIndexOf(\"/wms\");\r\n if (wmsIndex > 0) {\r\n const url = service.wmsUrl.slice(0, wmsIndex + 4);\r\n sources.push(MapLayerSource.fromJSON({ name: service.displayName, url, formatId: \"WMS\" })!);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return sources;\r\n }\r\n public static async getServiceDirectorySources(url: string, baseUrl?: string): Promise<MapLayerSource[]> {\r\n if (undefined === baseUrl)\r\n baseUrl = url;\r\n let sources = new Array<MapLayerSource>();\r\n const response = await fetch(`${url}?f=json`, { method: \"GET\" });\r\n const json = await response.json();\r\n if (json !== undefined) {\r\n if (Array.isArray(json.folders)) {\r\n for (const folder of json.folders) {\r\n sources = sources.concat(await ArcGisUtilities.getServiceDirectorySources(`${url}/${folder}`, url));\r\n }\r\n }\r\n if (Array.isArray(json.services)) {\r\n for (const service of json.services) {\r\n let source;\r\n if (service.type === \"MapServer\")\r\n source = MapLayerSource.fromJSON({ name: service.name, url: `${baseUrl}/${service.name}/MapServer`, formatId: \"ArcGIS\" });\r\n else if (service.type === \"ImageServer\")\r\n source = MapLayerSource.fromJSON({ name: service.name, url: `${baseUrl}/${service.name}/ImageServer`, formatId: \"ArcGIS\" });\r\n if (source)\r\n sources.push(source);\r\n }\r\n }\r\n }\r\n\r\n return sources;\r\n }\r\n public static async getSourcesFromQuery(range?: MapCartoRectangle, url = \"https://usgs.maps.arcgis.com/sharing/rest/search\"): Promise<MapLayerSource[]> {\r\n const sources = new Array<MapLayerSource>();\r\n for (let start = 1; start > 0;) {\r\n const response = await fetch(`${url}?f=json&q=(group:9d1199a521334e77a7d15abbc29f8144) AND (type:\"Map Service\")&bbox=${ArcGisUtilities.getBBoxString(range)}&sortOrder=desc&start=${start}&num=100`, { method: \"GET\" });\r\n const json = await response.json();\r\n if (!json)\r\n break;\r\n\r\n start = json.nextStart ? json.nextStart : -1;\r\n if (json !== undefined && Array.isArray(json.results)) {\r\n for (const result of json.results) {\r\n const source = MapLayerSource.fromJSON({ name: result.name ? result.name : result.title, url: result.url, formatId: \"ArcGIS\" });\r\n if (source)\r\n sources.push(source);\r\n }\r\n }\r\n }\r\n\r\n return sources;\r\n }\r\n\r\n /**\r\n * Parse the URL to check if it represent a valid ArcGIS service\r\n * @param url URL to validate.\r\n * @param serviceType Service type to validate (i.e FeatureServer, MapServer)\r\n * @return Validation Status.\r\n */\r\n public static validateUrl(url: string, serviceType: string): MapLayerSourceStatus {\r\n const urlObj = new URL(url.toLowerCase());\r\n if (urlObj.pathname.includes(\"/rest/services/\")) {\r\n // This seem to be an ArcGIS URL, lets check the service type\r\n if (urlObj.pathname.endsWith(`${serviceType.toLowerCase()}`)) {\r\n return MapLayerSourceStatus.Valid;\r\n } else {\r\n return MapLayerSourceStatus.IncompatibleFormat;\r\n }\r\n } else {\r\n return MapLayerSourceStatus.InvalidUrl;\r\n }\r\n }\r\n\r\n /**\r\n * Attempt to access an ArcGIS service, and validate its service metadata.\r\n * @param url URL of the source to validate.\r\n * @param formatId Format Id of the source.\r\n * @param capabilitiesFilter List of capabilities 'keyword' that needs to be advertised in the service's metadata\r\n * in order to be valid. For example: 'Map', 'Query', etc\r\n * @param userName Username to use for legacy token based security.\r\n * @param password Username to use for legacy token based security.\r\n * @param ignoreCache Flag to skip cache lookup (i.e. force a new server request)\r\n * @return Validation Status. If successful, a list of available sub-layers will also be returned.\r\n */\r\n public static async validateSource(url: string, formatId: string, capabilitiesFilter: string[], userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n const metadata = await this.getServiceJson(url, formatId, userName, password, ignoreCache);\r\n const json = metadata?.content;\r\n if (json === undefined) {\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n } else if (json.error !== undefined) {\r\n\r\n // If we got a 'Token Required' error, lets check what authentification methods this ESRI service offers\r\n // and return information needed to initiate the authentification process... the end-user\r\n // will have to provide his credentials before we can fully validate this source.\r\n if (json.error.code === ArcGisErrorCode.TokenRequired) {\r\n return { status: MapLayerSourceStatus.RequireAuth};\r\n } else if (json.error.code === ArcGisErrorCode.InvalidCredentials)\r\n return { status: MapLayerSourceStatus.InvalidCredentials};\r\n }\r\n\r\n // Check this service support the expected queries\r\n let hasCapabilities = false;\r\n let capsArray: string[] = [];\r\n if (json.capabilities && typeof json.capabilities === \"string\" ) {\r\n const capabilities: string = json.capabilities;\r\n capsArray = capabilities.split(\",\").map((entry) => entry.toLowerCase());\r\n\r\n const filtered = capsArray.filter((element, _index, _array) => capabilitiesFilter.includes(element));\r\n hasCapabilities = (filtered.length === capabilitiesFilter.length);\r\n }\r\n if (!hasCapabilities) {\r\n return { status: MapLayerSourceStatus.InvalidFormat};\r\n }\r\n\r\n // Only EPSG:3857 is supported with pre-rendered tiles.\r\n if (json.tileInfo && capsArray.includes(\"tilesonly\") && !ArcGisUtilities.isEpsg3857Compatible(json.tileInfo)) {\r\n return { status: MapLayerSourceStatus.InvalidCoordinateSystem};\r\n }\r\n\r\n let subLayers;\r\n if (json.layers) {\r\n\r\n subLayers = new Array<MapSubLayerProps>();\r\n\r\n for (const layer of json.layers) {\r\n const parent = layer.parentLayerId < 0 ? undefined : layer.parentLayerId;\r\n const children = Array.isArray(layer.subLayerIds) ? layer.subLayerIds : undefined;\r\n subLayers.push({ name: layer.name, visible: layer.defaultVisibility !== false, id: layer.id, parent, children });\r\n }\r\n }\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n }\r\n\r\n /**\r\n * Validate MapService tiling metadata and checks if the tile tree is 'Google Maps' compatible.\r\n */\r\n public static isEpsg3857Compatible(tileInfo: any) {\r\n if (tileInfo.spatialReference?.latestWkid !== 3857 || !Array.isArray(tileInfo.lods))\r\n return false;\r\n\r\n const zeroLod = tileInfo.lods[0];\r\n return zeroLod.level === 0 && Math.abs(zeroLod.resolution - 156543.03392800014) < .001;\r\n }\r\n\r\n private static _serviceCache = new Map<string, ArcGISServiceMetadata|undefined>();\r\n\r\n /**\r\n * Fetch an ArcGIS service metadata, and returns its JSON representation.\r\n * If an access client has been configured for the specified formatId,\r\n * it will be used to apply required security token.\r\n * By default, response for each URL are cached.\r\n */\r\n public static async getServiceJson(url: string, formatId: string, userName?: string, password?: string, ignoreCache?: boolean, requireToken?: boolean): Promise<ArcGISServiceMetadata|undefined> {\r\n if (!ignoreCache) {\r\n const cached = ArcGisUtilities._serviceCache.get(url);\r\n if (cached !== undefined)\r\n return cached;\r\n }\r\n\r\n let accessTokenRequired = false;\r\n try {\r\n let tmpUrl = new URL(url);\r\n tmpUrl.searchParams.append(\"f\", \"json\");\r\n\r\n // In some cases, caller might already know token is required, so append it immediately\r\n if (requireToken) {\r\n const accessClient = IModelApp.mapLayerFormatRegistry.getAccessClient(formatId);\r\n if (accessClient) {\r\n accessTokenRequired = true;\r\n await ArcGisUtilities.appendSecurityToken(tmpUrl, accessClient, {mapLayerUrl: new URL(url), userName, password});\r\n }\r\n }\r\n let response = await fetch(tmpUrl.toString(), { method: \"GET\" });\r\n\r\n // Append security token when corresponding error code is returned by ArcGIS service\r\n let errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);\r\n if (!accessTokenRequired\r\n && errorCode !== undefined\r\n && errorCode === ArcGisErrorCode.TokenRequired ) {\r\n accessTokenRequired = true;\r\n // If token required\r\n const accessClient = IModelApp.mapLayerFormatRegistry.getAccessClient(formatId);\r\n if (accessClient) {\r\n tmpUrl = new URL(url);\r\n tmpUrl.searchParams.append(\"f\", \"json\");\r\n await ArcGisUtilities.appendSecurityToken(tmpUrl, accessClient, {mapLayerUrl: new URL(url), userName, password});\r\n response = await fetch(tmpUrl.toString(), { method: \"GET\" });\r\n errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);\r\n }\r\n }\r\n\r\n const json = await response.json();\r\n const info = {content: json, accessTokenRequired};\r\n // Cache the response only if it doesn't contain any error.\r\n ArcGisUtilities._serviceCache.set(url, (errorCode === undefined ? info : undefined));\r\n return info; // Always return json, even though it contains an error code.\r\n\r\n } catch (_error) {\r\n ArcGisUtilities._serviceCache.set(url, undefined);\r\n return undefined;\r\n }\r\n }\r\n\r\n /** Read a response from ArcGIS server and check for error code in the response.\r\n */\r\n public static async checkForResponseErrorCode(response: Response) {\r\n const tmpResponse = response;\r\n if (response.headers && tmpResponse.headers.get(\"content-type\")?.toLowerCase().includes(\"json\")) {\r\n\r\n try {\r\n // Note:\r\n // Since response stream can only be read once (i.e. calls to .json() method)\r\n // we have to clone the response object in order to check for potential error code,\r\n // but still keep the response stream as unread.\r\n const clonedResponse = tmpResponse.clone();\r\n const json = await clonedResponse.json();\r\n if (json?.error?.code !== undefined)\r\n return json?.error?.code as number;\r\n } catch { }\r\n\r\n }\r\n return undefined;\r\n }\r\n\r\n // return the appended access token if available.\r\n public static async appendSecurityToken(url: URL, accessClient: MapLayerAccessClient, accessTokenParams: MapLayerAccessTokenParams): Promise<MapLayerAccessToken|undefined> {\r\n\r\n // Append security token if available\r\n let accessToken: MapLayerAccessToken|undefined;\r\n try {\r\n accessToken = await accessClient.getAccessToken(accessTokenParams);\r\n } catch {}\r\n\r\n if (accessToken?.token) {\r\n url.searchParams.append(\"token\", accessToken.token);\r\n return accessToken;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Compute scale, resolution values for requested zoom levels (WSG 84)\r\n * Use a scale of 96 dpi for Google Maps scales\r\n * Based on this article: https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Resolution_and_Scale\r\n * @param startZoom Zoom level where scales begins to be computed\r\n * @param endZoom Zoom level where scales ends to be computed\r\n * @param latitude Latitude in degrees to use to compute scales (i.e 0 for Equator)\r\n * @param tileSize Size of a tile in pixels (i.e 256)\r\n * @param screenDpi Monitor resolution in dots per inch (i.e. typically 96dpi is used by Google Maps)\r\n *\r\n * @returns An array containing resolution and scale values for each requested zoom level\r\n */\r\n public static computeZoomLevelsScales(startZoom: number = 0, endZoom: number = 20, latitude: number = 0, tileSize: number = 256, screenDpi = 96): {zoom: number, resolution: number, scale: number}[] {\r\n // Note: There is probably a more direct way to compute this, but I prefer to go for a simple and well documented approach.\r\n if (startZoom <0 || endZoom < startZoom || tileSize < 0 || screenDpi < 1 || latitude < -90 || latitude > 90)\r\n return [];\r\n\r\n const inchPerMeter = 1 / 0.0254;\r\n const results: {zoom: number, resolution: number, scale: number}[] = [];\r\n const equatorLength = Constant.earthRadiusWGS84.equator * 2 * Math.PI;\r\n const zoom0Resolution = equatorLength / tileSize; // in meters per pixel\r\n\r\n const cosLatitude = Math.cos(latitude);\r\n for (let zoom = startZoom; zoom<= endZoom; zoom++) {\r\n const resolution = zoom0Resolution * cosLatitude / Math.pow(2, zoom);\r\n const scale = screenDpi * inchPerMeter * resolution;\r\n results.push({zoom, resolution, scale});\r\n }\r\n\r\n return results;\r\n }\r\n\r\n /**\r\n * Match the provided minScale,maxScale values to corresponding wgs84 zoom levels\r\n * @param defaultMaxLod Value of the last LOD (i.e 22)\r\n * @param tileSize Size of a tile in pixels (i.e 256)\r\n * @param minScale Minimum scale value that needs to be matched to a LOD level\r\n * @param maxScale Maximum scale value that needs to be matched to a LOD level\r\n * @returns minLod: LOD value matching minScale, maxLod: LOD value matching maxScale\r\n */\r\n public static getZoomLevelsScales( defaultMaxLod: number, tileSize: number, minScale?: number, maxScale?: number, tolerance: number = 0): {minLod?: number, maxLod?: number} {\r\n\r\n let minLod: number|undefined, maxLod: number|undefined;\r\n\r\n const zoomScales = ArcGisUtilities.computeZoomLevelsScales(0, defaultMaxLod, 0 /* latitude 0 = Equator*/, tileSize);\r\n\r\n if (zoomScales.length > 0) {\r\n\r\n if (minScale) {\r\n minLod = 0;\r\n // We are looking for the largest scale value with a scale value smaller than minScale\r\n for (; minLod < zoomScales.length && (zoomScales[minLod].scale > minScale && Math.abs(zoomScales[minLod].scale - minScale) > tolerance); minLod++)\r\n ;\r\n\r\n }\r\n\r\n if (maxScale) {\r\n maxLod = defaultMaxLod;\r\n // We are looking for the smallest scale value with a value greater than maxScale\r\n for (; maxLod >= 0 && zoomScales[maxLod].scale < maxScale && Math.abs(zoomScales[maxLod].scale - maxScale) > tolerance; maxLod--)\r\n ;\r\n }\r\n }\r\n return {minLod, maxLod};\r\n }\r\n\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerImageryFormats.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryFormats.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAoB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAOL,cAAc,EACd,uBAAuB,EAEvB,wBAAwB,EACxB,yBAAyB,EAO1B,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;IACvD,gBAAgB;WACO,kBAAkB,CAAC,aAAa,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,SAAS;CAGrK;AAED,cAAM,iBAAkB,SAAQ,qBAAqB;IACnD,OAAuB,QAAQ,SAAS;WAEjB,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,uBAAuB,GAAG,SAAS;WAGrF,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CA0DzJ;AAkGD,gBAAgB;AAChB,eAAO,MAAM,8BAA8B,8BAA2K,CAAC"}
1
+ {"version":3,"file":"MapLayerImageryFormats.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryFormats.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAoB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAOL,cAAc,EACd,uBAAuB,EAEvB,wBAAwB,EACxB,yBAAyB,EAO1B,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;IACvD,gBAAgB;WACO,kBAAkB,CAAC,aAAa,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,SAAS;CAGrK;AAED,cAAM,iBAAkB,SAAQ,qBAAqB;IACnD,OAAuB,QAAQ,SAAS;WAEjB,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,uBAAuB,GAAG,SAAS;WAGrF,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;CA0DzJ;AAuGD,gBAAgB;AAChB,eAAO,MAAM,8BAA8B,8BAA2K,CAAC"}
@@ -126,6 +126,9 @@ class WmtsMapLayerFormat extends ImageryMapLayerFormat {
126
126
  WmtsMapLayerFormat.formatId = "WMTS";
127
127
  class ArcGISMapLayerFormat extends ImageryMapLayerFormat {
128
128
  static async validateSource(url, userName, password, ignoreCache) {
129
+ const urlValidation = internal_1.ArcGisUtilities.validateUrl(url, "MapServer");
130
+ if (urlValidation !== internal_1.MapLayerSourceStatus.Valid)
131
+ return { status: urlValidation };
129
132
  // Some Map service supporting only tiles don't include the 'Map' capabilities, thus we can't make it mandatory.
130
133
  return internal_1.ArcGisUtilities.validateSource(url, this.formatId, [], userName, password, ignoreCache);
131
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerImageryFormats.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryFormats.ts"],"names":[],"mappings":";;;AASA,0CAkBqB;AAErB;;;;GAIG;AACH,MAAa,qBAAsB,SAAQ,yBAAc;IACvD,gBAAgB;IACT,MAAM,CAAU,kBAAkB,CAAC,aAAoC,EAAE,UAAkB,EAAE,MAAwB;QAC1H,OAAO,IAAI,uCAA4B,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;CACF;AALD,sDAKC;AAED,MAAM,iBAAkB,SAAQ,qBAAqB;IAG5C,MAAM,CAAU,qBAAqB,CAAC,QAA+B;QAC1E,OAAO,IAAI,qCAA0B,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IACM,MAAM,CAAU,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,QAAiB,EAAE,QAAiB,EAAE,WAAqB;QAClH,IAAI;YACF,IAAI,SAAyC,CAAC;YAC9C,MAAM,mBAAmB,GAAG,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG,MAAM,0BAAe,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;YACrI,IAAI,YAAY,KAAK,SAAS,EAAE;gBAC9B,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC7C,MAAM,aAAa,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;gBACnF,MAAM,gBAAgB,GAAG,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,mBAAmB,CAAC;gBAE7E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;oBAC3B,OAAO,EAAE,MAAM,EAAE,+BAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;gBAE3D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;oBAChC,oGAAoG;oBACpG,mDAAmD;oBACnD,2FAA2F;oBAC3F,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,KAAK,aAAa,EAAE,EAAE;2BAC/C,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,gBAAgB,CAAC,EAAE;wBACvE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;wBACxB,MAAM,CAAE,oEAAoE;qBAC7E;oBAED,0CAA0C;oBAC1C,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE;wBACjF,MAAM,cAAc,GAAG,CAAC,KAAuB,EAAE,EAAE;4BACjD,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;wBACjG,CAAC,CAAC;wBAEF,MAAM,mBAAmB,GAAG,CAAC,MAAsC,EAAE,KAAuB,EAAE,EAAE;4BAC9F,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gCACnC,MAAM,aAAa,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC;gCACxE,IAAI,aAAa,EAAE;oCACjB,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;oCAC7B,IAAI,cAAc,CAAC,aAAa,CAAC;wCAC/B,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;iCAC9C;4BACH,CAAC,CAAC,CAAC;wBACL,CAAC,CAAC;wBAEF,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;wBAExB,mGAAmG;wBACnG,IAAI,cAAc,CAAC,QAAQ,CAAC;4BAC1B,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;qBAC5C;iBACF;aACF;YAED,OAAO,EAAE,MAAM,EAAE,+BAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;SAC1D;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,MAAM,GAAG,+BAAoB,CAAC,UAAU,CAAC;YAC7C,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG,EAAE;gBACvB,MAAM,GAAG,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,+BAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,+BAAoB,CAAC,WAAW,CAAC,CAAC;aAChH;YACD,OAAO,EAAE,MAAM,EAAC,CAAC;SAClB;IACH,CAAC;;AA9DsB,0BAAQ,GAAG,KAAK,CAAC;AAiE1C,MAAM,kBAAmB,SAAQ,qBAAqB;IAG7C,MAAM,CAAU,qBAAqB,CAAC,QAA+B;QAC1E,OAAO,IAAI,sCAA2B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM,CAAU,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,QAAiB,EAAE,QAAiB,EAAE,WAAqB;QAClH,IAAI;YACF,MAAM,SAAS,GAAuB,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,MAAM,2BAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;YACtI,IAAI,CAAC,YAAY;gBACf,OAAO,EAAE,MAAM,EAAE,+BAAoB,CAAC,UAAU,EAAE,CAAC;YAErD,2FAA2F;YAC3F,IAAI,YAAY,GAAoC,EAAE,CAAC;YACvD,MAAM,aAAa,GAAG,YAAY,EAAE,QAAQ,EAAE,oCAAoC,EAAE,CAAC;YACrF,IAAI,aAAa,EAAE;gBACjB,YAAY,GAAG,aAAa,CAAC;aAC9B;YACD,MAAM,QAAQ,GAAG,YAAY,EAAE,QAAQ,EAAE,kCAAkC,EAAE,CAAC;YAC9E,IAAI,QAAQ,EAAE;gBACZ,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aAC9C;YAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,8DAA8D;gBAC9D,OAAO,EAAE,MAAM,EAAE,+BAAoB,CAAC,uBAAuB,EAAE,CAAC;aACjE;YAED,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC/C,MAAM,eAAe,GAAG,YAAY,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;oBACjD,OAAO,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC;gBACxF,CAAC,CAAC,CAAC;gBACH,IAAI,eAAe,EAAE;oBACnB,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,KAAK,CAAC,UAAU;wBACtB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU;wBACtC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;wBACjC,MAAM,EAAE,SAAS;wBACjB,QAAQ,EAAE,SAAS;wBACnB,EAAE,EAAE,UAAU,EAAE;qBACjB,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;YAEH,2DAA2D;YAC3D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBACxB,OAAO,EAAE,MAAM,EAAE,+BAAoB,CAAC,eAAe,EAAE,CAAC;YAE1D,OAAO,EAAE,MAAM,EAAE,+BAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;SAC1D;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAiC;YACrD,OAAO,EAAE,MAAM,EAAE,+BAAoB,CAAC,UAAU,EAAE,CAAC;SACpD;IACH,CAAC;;AAvDsB,2BAAQ,GAAG,MAAM,CAAC;AA2D3C,MAAM,oBAAqB,SAAQ,qBAAqB;IAE/C,MAAM,CAAU,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,QAAiB,EAAE,QAAiB,EAAE,WAAqB;QAClH,gHAAgH;QAChH,OAAO,0BAAe,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjG,CAAC;IACM,MAAM,CAAU,qBAAqB,CAAC,QAA+B;QAC1E,OAAO,IAAI,wCAA6B,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;;AAPsB,6BAAQ,GAAG,QAAQ,CAAC;AAU7C,6DAA6D;AAC7D,MAAM,uBAAwB,SAAQ,qBAAqB;IAElD,MAAM,CAAU,qBAAqB,CAAC,QAA+B;QAC1E,OAAO,IAAI,wCAA6B,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;;AAHsB,gCAAQ,GAAG,WAAW,CAAC;AAKhD,MAAM,sBAAuB,SAAQ,qBAAqB;IAEjD,MAAM,CAAU,qBAAqB,CAAC,QAA+B;QAC1E,OAAO,IAAI,uCAA4B,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;;AAHsB,+BAAQ,GAAG,UAAU,CAAC;AAM/C,MAAM,2BAA4B,SAAQ,qBAAqB;IAEtD,MAAM,CAAU,qBAAqB,CAAC,QAA+B;QAC1E,OAAO,IAAI,qCAA0B,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;;AAHsB,oCAAQ,GAAG,eAAe,CAAC;AAKpD,MAAM,qBAAsB,SAAQ,qBAAqB;IAEhD,MAAM,CAAU,qBAAqB,CAAC,QAA+B,IAAyC,OAAO,IAAI,iCAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;AAD5I,8BAAQ,GAAG,SAAS,CAAC;AAI9C,gBAAgB;AACH,QAAA,8BAA8B,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,8BAA8B,CAAC,sBAAsB,EAAE,2BAA2B,EAAE,qBAAqB,CAAC,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 MapLayers\r\n */\r\nimport { ImageMapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport {\r\n ArcGISMapLayerImageryProvider,\r\n ArcGisUtilities,\r\n AzureMapsLayerImageryProvider,\r\n BingMapsImageryLayerProvider,\r\n ImageryMapLayerTreeReference,\r\n MapBoxLayerImageryProvider,\r\n MapLayerFormat,\r\n MapLayerImageryProvider,\r\n MapLayerSourceStatus,\r\n MapLayerSourceValidation,\r\n MapLayerTileTreeReference,\r\n TileUrlImageryProvider,\r\n WmsCapabilities,\r\n WmsMapLayerImageryProvider,\r\n WmtsCapabilities,\r\n WmtsCapability,\r\n WmtsMapLayerImageryProvider,\r\n} from \"../internal\";\r\n\r\n/** Base class imagery map layer formats.\r\n * Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].\r\n * @see [[MapLayerFormat]]\r\n * @beta\r\n */\r\nexport class ImageryMapLayerFormat extends MapLayerFormat {\r\n /** @internal */\r\n public static override createMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): MapLayerTileTreeReference | undefined {\r\n return new ImageryMapLayerTreeReference(layerSettings, layerIndex, iModel);\r\n }\r\n}\r\n\r\nclass WmsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"WMS\";\r\n\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new WmsMapLayerImageryProvider(settings);\r\n }\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n try {\r\n let subLayers: MapSubLayerProps[] | undefined;\r\n const maxVisibleSubLayers = 50;\r\n const capabilities = await WmsCapabilities.create(url, (userName && password ? {user: userName, password} : undefined), ignoreCache);\r\n if (capabilities !== undefined) {\r\n subLayers = capabilities.getSubLayers(false);\r\n const rootsSubLayer = subLayers?.find((sublayer) => sublayer.parent === undefined);\r\n const hasTooManyLayers = subLayers && subLayers.length > maxVisibleSubLayers;\r\n\r\n if (!Array.isArray(subLayers))\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n\r\n for (const subLayer of subLayers) {\r\n // In general for WMS, we prefer to have the children of root node visible, but not the root itself.\r\n // Thats simply to give more flexibility in the UI.\r\n // Two exceptions to this rule: If there are too many layers or the root node is not named.\r\n if (subLayer.id && subLayer.id === rootsSubLayer?.id\r\n && (!(subLayer.name && subLayer.name.length > 0) || hasTooManyLayers)) {\r\n subLayer.visible = true;\r\n break; // if root node is visible, don't bother turning ON any other layers\r\n }\r\n\r\n // Make children of the root node visible.\r\n if (subLayer.parent && subLayer.parent === rootsSubLayer?.id && !hasTooManyLayers) {\r\n const isUnnamedGroup = (layer: MapSubLayerProps) => {\r\n return layer.children && layer.children.length > 0 && (!layer.name || layer.name.length === 0);\r\n };\r\n\r\n const makeChildrenVisible = (layers: MapSubLayerProps[] | undefined, layer: MapSubLayerProps) => {\r\n layer?.children?.forEach((childId) => {\r\n const childSubLayer = subLayers?.find((child) => child?.id === childId);\r\n if (childSubLayer) {\r\n childSubLayer.visible = true;\r\n if (isUnnamedGroup(childSubLayer))\r\n makeChildrenVisible(layers, childSubLayer);\r\n }\r\n });\r\n };\r\n\r\n subLayer.visible = true;\r\n\r\n // If we got a unnamed group, make children visible recursively until we have a leaf or named group\r\n if (isUnnamedGroup(subLayer))\r\n makeChildrenVisible(subLayers, subLayer);\r\n }\r\n }\r\n }\r\n\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n } catch (err: any) {\r\n let status = MapLayerSourceStatus.InvalidUrl;\r\n if (err?.status === 401) {\r\n status = ((userName && password) ? MapLayerSourceStatus.InvalidCredentials : MapLayerSourceStatus.RequireAuth);\r\n }\r\n return { status};\r\n }\r\n }\r\n}\r\n\r\nclass WmtsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"WMTS\";\r\n\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new WmtsMapLayerImageryProvider(settings);\r\n }\r\n\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n try {\r\n const subLayers: MapSubLayerProps[] = [];\r\n const capabilities = await WmtsCapabilities.create(url, (userName && password ? {user: userName, password} : undefined), ignoreCache);\r\n if (!capabilities)\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n\r\n // Only returns layer that can be published in the Google maps or WGS84 aligned tile trees.\r\n let supportedTms: WmtsCapability.TileMatrixSet[] = [];\r\n const googleMapsTms = capabilities?.contents?.getGoogleMapsCompatibleTileMatrixSet();\r\n if (googleMapsTms) {\r\n supportedTms = googleMapsTms;\r\n }\r\n const wsg84Tms = capabilities?.contents?.getEpsg4326CompatibleTileMatrixSet();\r\n if (wsg84Tms) {\r\n supportedTms = supportedTms.concat(wsg84Tms);\r\n }\r\n\r\n if (supportedTms.length === 0) {\r\n // This WMTS server doesn't support either GoogleMaps or WSG84\r\n return { status: MapLayerSourceStatus.InvalidCoordinateSystem };\r\n }\r\n\r\n let subLayerId = 0;\r\n capabilities?.contents?.layers.forEach((layer) => {\r\n const hasSupportedTms = supportedTms?.some((tms) => {\r\n return layer.tileMatrixSetLinks.some((tmls) => tmls.tileMatrixSet === tms.identifier);\r\n });\r\n if (hasSupportedTms) {\r\n subLayers.push({\r\n name: layer.identifier,\r\n title: layer.title ?? layer.identifier,\r\n visible: (subLayers.length === 0), // Make the first layer visible.\r\n parent: undefined,\r\n children: undefined,\r\n id: subLayerId++,\r\n });\r\n }\r\n });\r\n\r\n // Return error if we could find a single compatible layer.\r\n if (subLayers.length === 0)\r\n return { status: MapLayerSourceStatus.InvalidTileTree };\r\n\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n } catch (err) {\r\n console.error(err); // eslint-disable-line no-console\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n }\r\n }\r\n\r\n}\r\n\r\nclass ArcGISMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"ArcGIS\";\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n // Some Map service supporting only tiles don't include the 'Map' capabilities, thus we can't make it mandatory.\r\n return ArcGisUtilities.validateSource(url, this.formatId, [], userName, password, ignoreCache);\r\n }\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new ArcGISMapLayerImageryProvider(settings);\r\n }\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nclass AzureMapsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"AzureMaps\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new AzureMapsLayerImageryProvider(settings);\r\n }\r\n}\r\nclass BingMapsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"BingMaps\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new BingMapsImageryLayerProvider(settings);\r\n }\r\n}\r\n\r\nclass MapBoxImageryMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"MapboxImagery\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new MapBoxLayerImageryProvider(settings);\r\n }\r\n}\r\nclass TileUrlMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"TileURL\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined { return new TileUrlImageryProvider(settings); }\r\n}\r\n\r\n/** @internal */\r\nexport const internalMapLayerImageryFormats = [WmsMapLayerFormat, WmtsMapLayerFormat, ArcGISMapLayerFormat, /* AzureMapsMapLayerFormat, */ BingMapsMapLayerFormat, MapBoxImageryMapLayerFormat, TileUrlMapLayerFormat];\r\n"]}
1
+ {"version":3,"file":"MapLayerImageryFormats.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerImageryFormats.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\nimport { ImageMapLayerSettings, MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"../../IModelConnection\";\r\nimport {\r\n ArcGISMapLayerImageryProvider,\r\n ArcGisUtilities,\r\n AzureMapsLayerImageryProvider,\r\n BingMapsImageryLayerProvider,\r\n ImageryMapLayerTreeReference,\r\n MapBoxLayerImageryProvider,\r\n MapLayerFormat,\r\n MapLayerImageryProvider,\r\n MapLayerSourceStatus,\r\n MapLayerSourceValidation,\r\n MapLayerTileTreeReference,\r\n TileUrlImageryProvider,\r\n WmsCapabilities,\r\n WmsMapLayerImageryProvider,\r\n WmtsCapabilities,\r\n WmtsCapability,\r\n WmtsMapLayerImageryProvider,\r\n} from \"../internal\";\r\n\r\n/** Base class imagery map layer formats.\r\n * Subclasses should override formatId and [[MapLayerFormat.createImageryProvider]].\r\n * @see [[MapLayerFormat]]\r\n * @beta\r\n */\r\nexport class ImageryMapLayerFormat extends MapLayerFormat {\r\n /** @internal */\r\n public static override createMapLayerTree(layerSettings: ImageMapLayerSettings, layerIndex: number, iModel: IModelConnection): MapLayerTileTreeReference | undefined {\r\n return new ImageryMapLayerTreeReference(layerSettings, layerIndex, iModel);\r\n }\r\n}\r\n\r\nclass WmsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"WMS\";\r\n\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new WmsMapLayerImageryProvider(settings);\r\n }\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n try {\r\n let subLayers: MapSubLayerProps[] | undefined;\r\n const maxVisibleSubLayers = 50;\r\n const capabilities = await WmsCapabilities.create(url, (userName && password ? {user: userName, password} : undefined), ignoreCache);\r\n if (capabilities !== undefined) {\r\n subLayers = capabilities.getSubLayers(false);\r\n const rootsSubLayer = subLayers?.find((sublayer) => sublayer.parent === undefined);\r\n const hasTooManyLayers = subLayers && subLayers.length > maxVisibleSubLayers;\r\n\r\n if (!Array.isArray(subLayers))\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n\r\n for (const subLayer of subLayers) {\r\n // In general for WMS, we prefer to have the children of root node visible, but not the root itself.\r\n // Thats simply to give more flexibility in the UI.\r\n // Two exceptions to this rule: If there are too many layers or the root node is not named.\r\n if (subLayer.id && subLayer.id === rootsSubLayer?.id\r\n && (!(subLayer.name && subLayer.name.length > 0) || hasTooManyLayers)) {\r\n subLayer.visible = true;\r\n break; // if root node is visible, don't bother turning ON any other layers\r\n }\r\n\r\n // Make children of the root node visible.\r\n if (subLayer.parent && subLayer.parent === rootsSubLayer?.id && !hasTooManyLayers) {\r\n const isUnnamedGroup = (layer: MapSubLayerProps) => {\r\n return layer.children && layer.children.length > 0 && (!layer.name || layer.name.length === 0);\r\n };\r\n\r\n const makeChildrenVisible = (layers: MapSubLayerProps[] | undefined, layer: MapSubLayerProps) => {\r\n layer?.children?.forEach((childId) => {\r\n const childSubLayer = subLayers?.find((child) => child?.id === childId);\r\n if (childSubLayer) {\r\n childSubLayer.visible = true;\r\n if (isUnnamedGroup(childSubLayer))\r\n makeChildrenVisible(layers, childSubLayer);\r\n }\r\n });\r\n };\r\n\r\n subLayer.visible = true;\r\n\r\n // If we got a unnamed group, make children visible recursively until we have a leaf or named group\r\n if (isUnnamedGroup(subLayer))\r\n makeChildrenVisible(subLayers, subLayer);\r\n }\r\n }\r\n }\r\n\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n } catch (err: any) {\r\n let status = MapLayerSourceStatus.InvalidUrl;\r\n if (err?.status === 401) {\r\n status = ((userName && password) ? MapLayerSourceStatus.InvalidCredentials : MapLayerSourceStatus.RequireAuth);\r\n }\r\n return { status};\r\n }\r\n }\r\n}\r\n\r\nclass WmtsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"WMTS\";\r\n\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new WmtsMapLayerImageryProvider(settings);\r\n }\r\n\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n try {\r\n const subLayers: MapSubLayerProps[] = [];\r\n const capabilities = await WmtsCapabilities.create(url, (userName && password ? {user: userName, password} : undefined), ignoreCache);\r\n if (!capabilities)\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n\r\n // Only returns layer that can be published in the Google maps or WGS84 aligned tile trees.\r\n let supportedTms: WmtsCapability.TileMatrixSet[] = [];\r\n const googleMapsTms = capabilities?.contents?.getGoogleMapsCompatibleTileMatrixSet();\r\n if (googleMapsTms) {\r\n supportedTms = googleMapsTms;\r\n }\r\n const wsg84Tms = capabilities?.contents?.getEpsg4326CompatibleTileMatrixSet();\r\n if (wsg84Tms) {\r\n supportedTms = supportedTms.concat(wsg84Tms);\r\n }\r\n\r\n if (supportedTms.length === 0) {\r\n // This WMTS server doesn't support either GoogleMaps or WSG84\r\n return { status: MapLayerSourceStatus.InvalidCoordinateSystem };\r\n }\r\n\r\n let subLayerId = 0;\r\n capabilities?.contents?.layers.forEach((layer) => {\r\n const hasSupportedTms = supportedTms?.some((tms) => {\r\n return layer.tileMatrixSetLinks.some((tmls) => tmls.tileMatrixSet === tms.identifier);\r\n });\r\n if (hasSupportedTms) {\r\n subLayers.push({\r\n name: layer.identifier,\r\n title: layer.title ?? layer.identifier,\r\n visible: (subLayers.length === 0), // Make the first layer visible.\r\n parent: undefined,\r\n children: undefined,\r\n id: subLayerId++,\r\n });\r\n }\r\n });\r\n\r\n // Return error if we could find a single compatible layer.\r\n if (subLayers.length === 0)\r\n return { status: MapLayerSourceStatus.InvalidTileTree };\r\n\r\n return { status: MapLayerSourceStatus.Valid, subLayers };\r\n } catch (err) {\r\n console.error(err); // eslint-disable-line no-console\r\n return { status: MapLayerSourceStatus.InvalidUrl };\r\n }\r\n }\r\n\r\n}\r\n\r\nclass ArcGISMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"ArcGIS\";\r\n public static override async validateSource(url: string, userName?: string, password?: string, ignoreCache?: boolean): Promise<MapLayerSourceValidation> {\r\n\r\n const urlValidation = ArcGisUtilities.validateUrl(url, \"MapServer\");\r\n if (urlValidation !== MapLayerSourceStatus.Valid)\r\n return {status: urlValidation};\r\n\r\n // Some Map service supporting only tiles don't include the 'Map' capabilities, thus we can't make it mandatory.\r\n return ArcGisUtilities.validateSource(url, this.formatId, [], userName, password, ignoreCache);\r\n }\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new ArcGISMapLayerImageryProvider(settings);\r\n }\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nclass AzureMapsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"AzureMaps\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new AzureMapsLayerImageryProvider(settings);\r\n }\r\n}\r\nclass BingMapsMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"BingMaps\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new BingMapsImageryLayerProvider(settings);\r\n }\r\n}\r\n\r\nclass MapBoxImageryMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"MapboxImagery\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined {\r\n return new MapBoxLayerImageryProvider(settings);\r\n }\r\n}\r\nclass TileUrlMapLayerFormat extends ImageryMapLayerFormat {\r\n public static override formatId = \"TileURL\";\r\n public static override createImageryProvider(settings: ImageMapLayerSettings): MapLayerImageryProvider | undefined { return new TileUrlImageryProvider(settings); }\r\n}\r\n\r\n/** @internal */\r\nexport const internalMapLayerImageryFormats = [WmsMapLayerFormat, WmtsMapLayerFormat, ArcGISMapLayerFormat, /* AzureMapsMapLayerFormat, */ BingMapsMapLayerFormat, MapBoxImageryMapLayerFormat, TileUrlMapLayerFormat];\r\n"]}
@@ -21,7 +21,10 @@ export declare enum MapLayerSourceStatus {
21
21
  /** Authorization is required to access this map layer source. */
22
22
  RequireAuth = 5,
23
23
  /** Map-layer coordinate system is not supported */
24
- InvalidCoordinateSystem = 6
24
+ InvalidCoordinateSystem = 6,
25
+ /** Format is not compatible with the URL provided.
26
+ */
27
+ IncompatibleFormat = 7
25
28
  }
26
29
  /** JSON representation of a map layer source.
27
30
  * @see [ImageryMapLayerFormatId]($common)
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerSources.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAC2D,4BAA4B,EAAE,qBAAqB,EAAE,gBAAgB,EACtI,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAsC,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE3F;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,4BAA4B;IAC5B,KAAK,IAAA;IACL,iEAAiE;IACjE,kBAAkB,IAAA;IAClB,6EAA6E;IAC7E,aAAa,IAAA;IACb,uDAAuD;IACvD,eAAe,IAAA;IACf,oEAAoE;IACpE,UAAU,IAAA;IACV,iEAAiE;IACjE,WAAW,IAAA;IACX,mDAAmD;IACnD,uBAAuB,IAAA;CACxB;AAED;;;GAGG;AACH,UAAU,mBAAmB;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,cAAc;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,UAAS;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAEzB,OAAO;WAQO,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,cAAc,GAAG,SAAS;IAOhE,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAIrF,eAAe;WACD,sBAAsB,CAAC,KAAK,EAAE,4BAA4B;IAajE,MAAM;;;;;;IAIN,eAAe,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,GAAG,SAAS;IAUzF,OAAO,CAAC,cAAc;CAGvB;AAED;;GAEG;AACH,qBAAa,eAAe;IAEN,OAAO,CAAC,QAAQ;IADpC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAkB;IAC3C,OAAO;WAEO,WAAW;IAElB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,cAAc,GAAG,SAAS;IAQrF,IAAW,MAAM,IAAI,cAAc,EAAE,CAQpC;IACD,IAAW,SAAS,qBAA4B;IAChD,IAAW,KAAK,IAAI,cAAc,EAAE,CAQnC;IAED,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAQpC,OAAO,CAAC,MAAM,CAAC,oBAAoB;WAQf,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,qBAAqB,UAAQ,EAAE,gBAAgB,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;WAsDpH,0BAA0B,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;WAavG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAYvD"}
1
+ {"version":3,"file":"MapLayerSources.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAC2D,4BAA4B,EAAE,qBAAqB,EAAE,gBAAgB,EACtI,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAsC,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE3F;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,4BAA4B;IAC5B,KAAK,IAAA;IACL,iEAAiE;IACjE,kBAAkB,IAAA;IAClB,6EAA6E;IAC7E,aAAa,IAAA;IACb,uDAAuD;IACvD,eAAe,IAAA;IACf,oEAAoE;IACpE,UAAU,IAAA;IACV,iEAAiE;IACjE,WAAW,IAAA;IACX,mDAAmD;IACnD,uBAAuB,IAAA;IACvB;OACG;IACH,kBAAkB,IAAA;CACnB;AAED;;;GAGG;AACH,UAAU,mBAAmB;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,cAAc;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,UAAS;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAEzB,OAAO;WAQO,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,cAAc,GAAG,SAAS;IAOhE,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAIrF,eAAe;WACD,sBAAsB,CAAC,KAAK,EAAE,4BAA4B;IAajE,MAAM;;;;;;IAIN,eAAe,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,GAAG,SAAS;IAUzF,OAAO,CAAC,cAAc;CAGvB;AAED;;GAEG;AACH,qBAAa,eAAe;IAEN,OAAO,CAAC,QAAQ;IADpC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAkB;IAC3C,OAAO;WAEO,WAAW;IAElB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,cAAc,GAAG,SAAS;IAQrF,IAAW,MAAM,IAAI,cAAc,EAAE,CAQpC;IACD,IAAW,SAAS,qBAA4B;IAChD,IAAW,KAAK,IAAI,cAAc,EAAE,CAQnC;IAED,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAQpC,OAAO,CAAC,MAAM,CAAC,oBAAoB;WAQf,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,qBAAqB,UAAQ,EAAE,gBAAgB,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;WAsDpH,0BAA0B,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;WAavG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAYvD"}
@@ -33,6 +33,9 @@ var MapLayerSourceStatus;
33
33
  MapLayerSourceStatus[MapLayerSourceStatus["RequireAuth"] = 5] = "RequireAuth";
34
34
  /** Map-layer coordinate system is not supported */
35
35
  MapLayerSourceStatus[MapLayerSourceStatus["InvalidCoordinateSystem"] = 6] = "InvalidCoordinateSystem";
36
+ /** Format is not compatible with the URL provided.
37
+ */
38
+ MapLayerSourceStatus[MapLayerSourceStatus["IncompatibleFormat"] = 7] = "IncompatibleFormat";
36
39
  })(MapLayerSourceStatus = exports.MapLayerSourceStatus || (exports.MapLayerSourceStatus = {}));
37
40
  /** A source for map layers. These may be catalogued for convenient use by users or applications.
38
41
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"MapLayerSources.js","sourceRoot":"","sources":["../../../../src/tile/map/MapLayerSources.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAqD;AACrD,oDAE4B;AAC5B,wDAA+C;AAC/C,+CAA4C;AAE5C,mDAAyE;AACzE,0CAA2F;AAE3F;;GAEG;AACH,IAAY,oBAeX;AAfD,WAAY,oBAAoB;IAC9B,4BAA4B;IAC5B,iEAAK,CAAA;IACL,iEAAiE;IACjE,2FAAkB,CAAA;IAClB,6EAA6E;IAC7E,iFAAa,CAAA;IACb,uDAAuD;IACvD,qFAAe,CAAA;IACf,oEAAoE;IACpE,2EAAU,CAAA;IACV,iEAAiE;IACjE,6EAAW,CAAA;IACX,mDAAmD;IACnD,qGAAuB,CAAA;AACzB,CAAC,EAfW,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAe/B;AAmBD;;GAEG;AACH,MAAa,cAAc;IASzB,YAAoB,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAE,GAAW,EAAE,OAAO,GAAG,KAAK,EAAE,qBAAqB,GAAG,IAAI;QALvG,YAAO,GAAG,KAAK,CAAC;QAMrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACrD,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,IAAyB;QAC9C,IAAI,IAAI,KAAK,SAAS;YACpB,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC1G,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAqB;QAC/C,OAAO,qBAAS,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC7H,CAAC;IAED,eAAe;IACR,MAAM,CAAC,sBAAsB,CAAC,KAAmC;QACtE,MAAM,QAAQ,GAAG,mCAAqB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,kCAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAI,SAAS,KAAK,aAAa,EAAE;YAC/B,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACtD,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,OAAO,MAAM,CAAC;aACf;SACF;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IACM,MAAM;QACX,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACxH,CAAC;IAEM,eAAe,CAAC,SAA8B;QACnD,+GAA+G;QAC/G,MAAM,aAAa,GAAG,mCAAqB,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC9D,aAAa,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC7D;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,cAAc;QACpB,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,CAAC;CACF;AA3DD,wCA2DC;AAED;;GAEG;AACH,MAAa,eAAe;IAE1B,YAA4B,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;IAAI,CAAC;IAEpD,MAAM,CAAC,WAAW,KAAK,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;IAE1D,UAAU,CAAC,IAAY,EAAE,UAAmB,KAAK;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ;YAChC,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClF,OAAO,MAAM,CAAC;QAElB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAW,MAAM;QACf,MAAM,MAAM,GAAG,IAAI,KAAK,EAAkB,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,OAAO;gBACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,IAAW,KAAK;QACd,MAAM,MAAM,GAAG,IAAI,KAAK,EAAkB,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/B,IAAI,MAAM,CAAC,OAAO;gBAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,qBAAqB;QAClC,MAAM,eAAe,GAAqB,EAAE,CAAC;QAC7C,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACpJ,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACpJ,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACpJ,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,oBAAoB;QACjC,MAAM,eAAe,GAAqB,EAAE,CAAC;QAC7C,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACtJ,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACtJ,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,+BAAiB,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,CAAC;QACtJ,OAAO,eAAe,CAAC;IACzB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAyB,EAAE,qBAAqB,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK;QAC3G,IAAI,CAAC,qBAAqB,IAAI,eAAe,CAAC,SAAS;YACrD,OAAO,eAAe,CAAC,SAAS,CAAC;QAEnC,IAAI,CAAC,MAAM;YACT,MAAM,GAAG,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtG,IAAI,WAAW,GAAG,4BAAiB,CAAC,aAAa,EAAE,CAAC;QACpD,IAAI,MAAM,EAAE;YACV,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAC;YACzE,MAAM,WAAW,GAAG,MAAM,CAAC,6BAA6B,CAAC,aAAa,CAAC,CAAC;YACxE,MAAM,UAAU,GAAG,4BAAiB,CAAC,aAAa,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,uBAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC;YACzF,WAAW,GAAG,4BAAiB,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;SAC/L;QAED,MAAM,OAAO,GAAG,IAAI,KAAK,EAAkB,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QACjC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAsB,EAAE,EAAE;YAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;gBAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACxB;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9C,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,IAAI,gBAAgB,EAAE;YACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC7C,SAAS,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,qBAAqB,EAAE;YACzB,MAAM,WAAW,GAAG,MAAM,IAAA,iBAAO,EAAC,GAAG,qBAAS,CAAC,UAAU,6BAA6B,EAAE,MAAM,CAAC,CAAC;YAEhG,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;gBACpC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACnD,IAAI,MAAM;oBACR,SAAS,CAAC,MAAM,CAAC,CAAC;aACrB;YAED,CAAC,MAAM,0BAAe,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;SAC/G;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,CAAiB,EAAE,EAAE,CAAC,IAAA,6BAAc,EAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAEnH,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;QACrD,eAAe,CAAC,SAAS,GAAG,eAAe,CAAC;QAE5C,OAAO,eAAe,CAAC;IACzB,CAAC;IACM,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,cAA+B;QAC5E,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE;YACjD,OAAO,SAAS,CAAC;SAClB;QACD,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YACxF,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,CAAiB,EAAE,EAAE,CAAC,IAAA,6BAAc,EAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC9I,OAAO,eAAe,CAAC,SAAS,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,IAAY;QAC1C,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;YAC9B,OAAO,KAAK,CAAC;SACd;QAED,mCAAmC;QACnC,MAAM,kBAAkB,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrE,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YACxF,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,kBAAkB,KAAK,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5E,CAAC;CACF;AAjID,0CAiIC","sourcesContent":["/*---------------------------------------------------------------------------------------------\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":["/*---------------------------------------------------------------------------------------------\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 /** Format is not compatible with the URL provided.\r\n */\r\n IncompatibleFormat,\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"]}
@@ -189,8 +189,13 @@ export declare class MapTile extends RealityTile {
189
189
  /** @internal */
190
190
  disposeContents(): void;
191
191
  }
192
- /** @internal */
192
+ /** A child tile that has no content of its own available. It instead produces content by up-sampling the content of an ancestor tile.
193
+ * @internal
194
+ */
193
195
  export declare class UpsampledMapTile extends MapTile {
196
+ /** The ancestor tile whose content will be up-sampled. */
197
+ private readonly _loadableTile;
198
+ constructor(params: RealityTileParams, mapTree: MapTileTree, quadId: QuadId, patch: TilePatch, rectangle: MapCartoRectangle, heightRange: Range1d | undefined, cornerRays: Ray3d[] | undefined, loadableTile: MapTile);
194
199
  get isUpsampled(): boolean;
195
200
  get isEmpty(): boolean;
196
201
  get loadableTile(): RealityTile;
@@ -1 +1 @@
1
- {"version":3,"file":"MapTile.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapTile.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAe,QAAQ,EAAgD,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxH,OAAO,EAAiE,UAAU,EAAgC,cAAc,EAAqC,OAAO,EAAc,OAAO,EAAW,OAAO,EAAE,KAAK,EAAE,SAAS,EAAY,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAExR,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EACnH,yBAAyB,EAC9D,MAAM,aAAa,CAAC;AAErB,gBAAgB;AAChB,qBAAa,eAAe;IACP,OAAO,EAAE,OAAO,EAAE;IAAS,MAAM,EAAE,QAAQ;IAAE,OAAO,CAAC,YAAY;gBAAjE,OAAO,EAAE,OAAO,EAAE,EAAS,MAAM,EAAE,QAAQ,EAAU,YAAY,EAAE,MAAM;IAGrF,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAUnE,YAAY,IAAI,OAAO,EAAE;CAGjC;AAED,gBAAgB;AAChB,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,cAAc,CAAC;AAEzD;;;GAGG;AACH,8BAAsB,iBAAiB;IACrC,oFAAoF;IACpF,aAAoB,UAAU,IAAI,OAAO,CAAC;IAC1C,aAAa;IACb,aAAoB,kBAAkB,IAAI,SAAS,CAAC;IAEpD;;OAEG;aACa,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;IAEzF,aAAa;IACb,IAAW,cAAc,IAAI,cAAc,GAAG,SAAS,CAAsB;IAE7E,aAAa;IACN,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;CAIlF;AA0CD,gBAAgB;AAChB,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,OAAO,CAAC,EAAE;QACR,cAAc,CAAC,EAAE,qBAAqB,CAAC;QACvC,6CAA6C;QAC7C,IAAI,CAAC,EAAE,iBAAiB,CAAC;KAC1B,CAAC;CACH;AAQD;;GAEG;AACH,qBAAa,OAAQ,SAAQ,WAAW;IACtC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAK;IACzC,OAAO,CAAC,aAAa,CAAC,CAAmB;IACzC,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,+BAA+B,CAAC,CAAmB;IAC3D,gBAAgB;IACT,UAAU,UAAS;IAC1B,gBAAgB;IAChB,SAAS,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,gBAAgB;IAChB,SAAS,CAAC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IAClD,gBAAgB;IAChB,SAAS,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACpC,gBAAgB;IAChB,IAAoB,OAAO,IAAI,OAAO,CAErC;IAED,gBAAgB;IAChB,IAAoB,WAAW,IAAI,OAAO,CAEzC;IAED,gBAAgB;IAChB,IAAW,cAAc,sCAAmC;IAC5D,gBAAgB;IAChB,IAAW,IAAI,kCAAyB;IACxC,gBAAgB;IAChB,IAAW,mBAAmB,YAA2C;IACzE,gBAAgB;IAChB,IAAW,QAAQ,IAAI,OAAO,CAAmD;IACjF,gBAAgB;IAChB,IAAW,YAAY,IAAI,cAAc,EAAE,GAAG,SAAS,CAA+B;IACtF;;OAEG;IACH,IAAW,kBAAkB,IAAI,cAAc,EAAE,GAAG,SAAS,CAA8B;IAE3F;;;;;OAKG;IACH,IAAW,8BAA8B,IAAI,cAAc,EAAE,GAAG,SAAS,CAAiD;IAE1H,sDAAsD;IACtD,SAAgB,OAAO,EAAE,WAAW,CAAC;IACrC,4DAA4D;IAC5D,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,MAAM,CAAY;IAC1B,sEAAsE;IACtE,SAAgB,SAAS,EAAE,iBAAiB,CAAC;IAC7C,gBAAgB;IAChB,SAAS,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;IAEhC,gBAAgB;gBACJ,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,GAAG,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,SAAS;IAU9L,gBAAgB;IACT,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAIpD,gBAAgB;IACA,wBAAwB,IAAI,OAAO,EAAE,GAAG,SAAS;IAMjE,gBAAgB;IACA,QAAQ,CAAC,IAAI,EAAE,YAAY;IAO3C,gBAAgB;IAChB,IAAoB,WAAW,oBAK9B;IAED,gBAAgB;IAChB,IAAW,SAAS,kBAAuD;IAC3E,gBAAgB;IAChB,IAAW,WAAW,YAAoB;IAE1C,gBAAgB;IACT,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAuB1D,OAAO,KAAK,iBAAiB,GAG5B;IAED,gBAAgB;IACA,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ;IAkD3E,gBAAgB;IACA,cAAc,IAAI,UAAU,GAAG,SAAS;IA8BxD,gBAAgB;IACA,WAAW,IAAI,IAAI;IAQnC,gBAAgB;IACT,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS;IAI5F;;OAEG;IACH,IAAoB,aAAa,YAEhC;IAED,gBAAgB;IACA,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO;IAwB/D,gBAAgB;cACG,aAAa,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAsDxH,OAAO,CAAC,mBAAmB;IA0B3B,gBAAgB;WACF,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,OAAO;IAqBtI,gBAAgB;IACA,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAI3D,gBAAgB;IACA,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAI5D,gBAAgB;IACT,WAAW;IAQlB,OAAO,CAAC,iBAAiB;IAazB,gBAAgB;IACA,eAAe,IAAI,aAAa,GAAG,SAAS;IAmB5D,gBAAgB;IACT,YAAY,IAAI,OAAO,EAAE;IAIhC,gBAAgB;cACG,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAa3E;;;;OAIG;IACH,IAAW,WAAW,IAAI,OAAO,GAAG,SAAS,CAY5C;IAED,gBAAgB;IAChB,IAAW,eAAe,gDAEzB;IAED,iFAAiF;IAC1E,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAYzD,iGAAiG;IAC1F,aAAa,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,iBAAiB;IAI9D,gBAAgB;IAChB,IAAW,kBAAkB,IAAI,OAAO,CASvC;IAED,gBAAgB;IAChB,IAAW,cAAc,IAAI,OAAO,CAKnC;IAED;;OAEG;IACa,oBAAoB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,yBAAyB;IAgD3F,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAkC;IACnE,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAkC;IAEnE;;;;OAIG;cACgB,sBAAsB,IAAI,OAAO;IAUpD,gBAAgB;cACG,oBAAoB,IAAI,MAAM;IAKjD,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAqB;IACxD,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAqB;IAEzD,gBAAgB;IACT,gBAAgB,IAAI,cAAc,EAAE,GAAG,SAAS;IA8CvD,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAwB;IAE7D,OAAO,CAAC,mBAAmB;IAmB3B,gBAAgB;IACA,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAsB7D,gBAAgB;IACA,UAAU,IAAI,IAAI;IAIlC,gBAAgB;IACA,eAAe;CAMhC;AAED,gBAAgB;AAChB,qBAAa,gBAAiB,SAAQ,OAAO;IAC3C,IAAoB,WAAW,YAAmB;IAClD,IAAoB,OAAO,YAAoB;IAC/C,IAAoB,YAAY,IAAI,WAAW,CAK9C;IAED,OAAO,CAAC,kBAAkB;IAiB1B,IAAoB,cAAc,sCAQjC;IAED,IAAoB,SAAS,IAAI,OAAO,CAAwC;IAChF,IAAoB,QAAQ,IAAI,OAAO,CAAuC;IAC9E,IAAoB,UAAU,IAAI,OAAO,CAAyC;IAClF,IAAoB,OAAO,IAAI,OAAO,CAAqI;IAE3J,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;CAInD"}
1
+ {"version":3,"file":"MapTile.d.ts","sourceRoot":"","sources":["../../../../src/tile/map/MapTile.ts"],"names":[],"mappings":"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"}
@@ -654,16 +654,17 @@ MapTile._scratchThisDiagonal = core_geometry_1.Vector2d.create();
654
654
  MapTile._scratchDrapeDiagonal = core_geometry_1.Vector2d.create();
655
655
  MapTile._scratchIntersectRange = core_geometry_1.Range2d.createNull();
656
656
  exports.MapTile = MapTile;
657
- /** @internal */
657
+ /** A child tile that has no content of its own available. It instead produces content by up-sampling the content of an ancestor tile.
658
+ * @internal
659
+ */
658
660
  class UpsampledMapTile extends MapTile {
661
+ constructor(params, mapTree, quadId, patch, rectangle, heightRange, cornerRays, loadableTile) {
662
+ super(params, mapTree, quadId, patch, rectangle, heightRange, cornerRays);
663
+ this._loadableTile = loadableTile;
664
+ }
659
665
  get isUpsampled() { return true; }
660
666
  get isEmpty() { return false; }
661
- get loadableTile() {
662
- let parent = this.parent;
663
- for (; parent && parent.isUpsampled; parent = parent.parent)
664
- ;
665
- return parent;
666
- }
667
+ get loadableTile() { return this._loadableTile; }
667
668
  upsampleFromParent() {
668
669
  const parent = this.loadableTerrainTile;
669
670
  const parentMesh = parent.mesh;