@itwin/core-frontend 3.6.0-dev.5 → 3.6.0-dev.51

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 (385) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/AccuDraw.js +1 -1
  4. package/lib/cjs/AccuDraw.js.map +1 -1
  5. package/lib/cjs/BriefcaseConnection.d.ts +23 -3
  6. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  7. package/lib/cjs/BriefcaseConnection.js +11 -3
  8. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  9. package/lib/cjs/IModelApp.d.ts +3 -3
  10. package/lib/cjs/IModelApp.d.ts.map +1 -1
  11. package/lib/cjs/IModelApp.js +2 -2
  12. package/lib/cjs/IModelApp.js.map +1 -1
  13. package/lib/cjs/NativeApp.d.ts +7 -0
  14. package/lib/cjs/NativeApp.d.ts.map +1 -1
  15. package/lib/cjs/NativeApp.js +9 -5
  16. package/lib/cjs/NativeApp.js.map +1 -1
  17. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  18. package/lib/cjs/NoRenderApp.js +3 -0
  19. package/lib/cjs/NoRenderApp.js.map +1 -1
  20. package/lib/cjs/Tiles.d.ts +4 -0
  21. package/lib/cjs/Tiles.d.ts.map +1 -1
  22. package/lib/cjs/Tiles.js +11 -0
  23. package/lib/cjs/Tiles.js.map +1 -1
  24. package/lib/cjs/ViewContext.js +1 -1
  25. package/lib/cjs/ViewContext.js.map +1 -1
  26. package/lib/cjs/ViewManager.d.ts.map +1 -1
  27. package/lib/cjs/ViewManager.js +2 -3
  28. package/lib/cjs/ViewManager.js.map +1 -1
  29. package/lib/cjs/ViewState.d.ts +4 -5
  30. package/lib/cjs/ViewState.d.ts.map +1 -1
  31. package/lib/cjs/ViewState.js +0 -1
  32. package/lib/cjs/ViewState.js.map +1 -1
  33. package/lib/cjs/Viewport.d.ts +52 -3
  34. package/lib/cjs/Viewport.d.ts.map +1 -1
  35. package/lib/cjs/Viewport.js +81 -30
  36. package/lib/cjs/Viewport.js.map +1 -1
  37. package/lib/cjs/extension/ExtensionRuntime.js +3 -0
  38. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  39. package/lib/cjs/render/GraphicBranch.d.ts +3 -0
  40. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  41. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  42. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  43. package/lib/cjs/render/MockRender.js +3 -0
  44. package/lib/cjs/render/MockRender.js.map +1 -1
  45. package/lib/cjs/render/RealityMeshParams.d.ts +3 -4
  46. package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -1
  47. package/lib/cjs/render/RealityMeshParams.js +9 -5
  48. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  49. package/lib/cjs/render/VisibleFeature.d.ts +5 -5
  50. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  51. package/lib/cjs/render/webgl/BackgroundMapDrape.js +3 -3
  52. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  53. package/lib/cjs/render/webgl/BranchState.d.ts +3 -0
  54. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  55. package/lib/cjs/render/webgl/BranchState.js +5 -0
  56. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  57. package/lib/cjs/render/webgl/CachedGeometry.d.ts +32 -0
  58. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  59. package/lib/cjs/render/webgl/CachedGeometry.js +74 -1
  60. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  61. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  62. package/lib/cjs/render/webgl/DrawCommand.js +6 -4
  63. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  64. package/lib/cjs/render/webgl/EDL.d.ts +40 -0
  65. package/lib/cjs/render/webgl/EDL.d.ts.map +1 -0
  66. package/lib/cjs/render/webgl/EDL.js +264 -0
  67. package/lib/cjs/render/webgl/EDL.js.map +1 -0
  68. package/lib/cjs/render/webgl/EdgeSettings.js +2 -2
  69. package/lib/cjs/render/webgl/FrameBuffer.d.ts +4 -0
  70. package/lib/cjs/render/webgl/FrameBuffer.d.ts.map +1 -1
  71. package/lib/cjs/render/webgl/FrameBuffer.js +9 -0
  72. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  73. package/lib/cjs/render/webgl/FrustumUniforms.d.ts +7 -0
  74. package/lib/cjs/render/webgl/FrustumUniforms.d.ts.map +1 -1
  75. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  76. package/lib/cjs/render/webgl/Layer.js +2 -2
  77. package/lib/cjs/render/webgl/LayerCommands.js +2 -2
  78. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  79. package/lib/cjs/render/webgl/PlanarClassifier.js +9 -8
  80. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  81. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -1
  82. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  83. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  84. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  85. package/lib/cjs/render/webgl/PointCloud.js +2 -0
  86. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  87. package/lib/cjs/render/webgl/RealityMesh.d.ts +3 -1
  88. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  89. package/lib/cjs/render/webgl/RealityMesh.js +8 -3
  90. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  91. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts +9 -0
  92. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts.map +1 -1
  93. package/lib/cjs/render/webgl/RealityModelUniforms.js +50 -0
  94. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  95. package/lib/cjs/render/webgl/RenderCommands.d.ts +2 -1
  96. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  97. package/lib/cjs/render/webgl/RenderCommands.js +46 -38
  98. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  99. package/lib/cjs/render/webgl/RenderFlags.d.ts +19 -17
  100. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  101. package/lib/cjs/render/webgl/RenderFlags.js +8 -6
  102. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  103. package/lib/cjs/render/webgl/SceneCompositor.d.ts +6 -1
  104. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  105. package/lib/cjs/render/webgl/SceneCompositor.js +195 -76
  106. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  107. package/lib/cjs/render/webgl/SolarShadowMap.js +3 -3
  108. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  109. package/lib/cjs/render/webgl/SurfaceGeometry.js +5 -5
  110. package/lib/cjs/render/webgl/Target.js +7 -7
  111. package/lib/cjs/render/webgl/Target.js.map +1 -1
  112. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  113. package/lib/cjs/render/webgl/Technique.js +18 -3
  114. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  115. package/lib/cjs/render/webgl/TechniqueFlags.js +4 -4
  116. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  117. package/lib/cjs/render/webgl/TechniqueId.d.ts +6 -2
  118. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  119. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  120. package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
  121. package/lib/cjs/render/webgl/UniformHandle.js +1 -2
  122. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  123. package/lib/cjs/render/webgl/VisibleTileFeatures.js +5 -5
  124. package/lib/cjs/render/webgl/glsl/EDL.d.ts +14 -0
  125. package/lib/cjs/render/webgl/glsl/EDL.d.ts.map +1 -0
  126. package/lib/cjs/render/webgl/glsl/EDL.js +260 -0
  127. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -0
  128. package/lib/cjs/render/webgl/glsl/RenderPass.js +12 -12
  129. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  130. package/lib/cjs/tile/BatchedTileIdMap.js +1 -1
  131. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  132. package/lib/cjs/tile/DynamicIModelTile.js +1 -1
  133. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  134. package/lib/cjs/tile/GltfReader.js +1 -1
  135. package/lib/cjs/tile/GltfReader.js.map +1 -1
  136. package/lib/cjs/tile/IModelTile.js +1 -1
  137. package/lib/cjs/tile/IModelTile.js.map +1 -1
  138. package/lib/cjs/tile/ImdlReader.js +5 -5
  139. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  140. package/lib/cjs/tile/OrbitGtTileTree.js +1 -1
  141. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  142. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  143. package/lib/cjs/tile/RealityModelTileTree.js +2 -1
  144. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  145. package/lib/cjs/tile/RealityTileLoader.js +2 -2
  146. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  147. package/lib/cjs/tile/RealityTileTree.d.ts +5 -0
  148. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  149. package/lib/cjs/tile/RealityTileTree.js +9 -4
  150. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  151. package/lib/cjs/tile/TileDrawArgs.js +1 -1
  152. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  153. package/lib/cjs/tile/TileTreeReference.d.ts +3 -0
  154. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  155. package/lib/cjs/tile/TileTreeReference.js +3 -0
  156. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  157. package/lib/cjs/tile/map/CesiumTerrainProvider.js +9 -9
  158. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  159. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  160. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -2
  161. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  162. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  163. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  164. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +1 -1
  165. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  166. package/lib/cjs/tile/map/ImageryTileTree.d.ts +26 -1
  167. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  168. package/lib/cjs/tile/map/ImageryTileTree.js +54 -4
  169. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  170. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +7 -3
  171. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  172. package/lib/cjs/tile/map/MapLayerImageryProvider.js +12 -8
  173. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  174. package/lib/cjs/tile/map/MapTile.d.ts +5 -0
  175. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  176. package/lib/cjs/tile/map/MapTile.js +33 -13
  177. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  178. package/lib/cjs/tile/map/MapTileTree.d.ts +42 -3
  179. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  180. package/lib/cjs/tile/map/MapTileTree.js +126 -9
  181. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  182. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +17 -0
  183. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  184. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +26 -0
  185. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  186. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +23 -68
  187. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  188. package/lib/cjs/tile/map/WmtsCapabilities.js +269 -260
  189. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  190. package/lib/cjs/tools/ClipViewTool.js +2 -2
  191. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  192. package/lib/cjs/tools/MeasureTool.js +2 -2
  193. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  194. package/lib/esm/AccuDraw.js +1 -1
  195. package/lib/esm/AccuDraw.js.map +1 -1
  196. package/lib/esm/BriefcaseConnection.d.ts +23 -3
  197. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  198. package/lib/esm/BriefcaseConnection.js +11 -3
  199. package/lib/esm/BriefcaseConnection.js.map +1 -1
  200. package/lib/esm/IModelApp.d.ts +3 -3
  201. package/lib/esm/IModelApp.d.ts.map +1 -1
  202. package/lib/esm/IModelApp.js +2 -2
  203. package/lib/esm/IModelApp.js.map +1 -1
  204. package/lib/esm/NativeApp.d.ts +7 -0
  205. package/lib/esm/NativeApp.d.ts.map +1 -1
  206. package/lib/esm/NativeApp.js +9 -5
  207. package/lib/esm/NativeApp.js.map +1 -1
  208. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  209. package/lib/esm/NoRenderApp.js +3 -0
  210. package/lib/esm/NoRenderApp.js.map +1 -1
  211. package/lib/esm/Tiles.d.ts +4 -0
  212. package/lib/esm/Tiles.d.ts.map +1 -1
  213. package/lib/esm/Tiles.js +11 -0
  214. package/lib/esm/Tiles.js.map +1 -1
  215. package/lib/esm/ViewContext.js +1 -1
  216. package/lib/esm/ViewContext.js.map +1 -1
  217. package/lib/esm/ViewManager.d.ts.map +1 -1
  218. package/lib/esm/ViewManager.js +2 -3
  219. package/lib/esm/ViewManager.js.map +1 -1
  220. package/lib/esm/ViewState.d.ts +4 -5
  221. package/lib/esm/ViewState.d.ts.map +1 -1
  222. package/lib/esm/ViewState.js +0 -1
  223. package/lib/esm/ViewState.js.map +1 -1
  224. package/lib/esm/Viewport.d.ts +52 -3
  225. package/lib/esm/Viewport.d.ts.map +1 -1
  226. package/lib/esm/Viewport.js +82 -31
  227. package/lib/esm/Viewport.js.map +1 -1
  228. package/lib/esm/extension/ExtensionRuntime.js +5 -2
  229. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  230. package/lib/esm/render/GraphicBranch.d.ts +3 -0
  231. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  232. package/lib/esm/render/GraphicBranch.js.map +1 -1
  233. package/lib/esm/render/MockRender.d.ts.map +1 -1
  234. package/lib/esm/render/MockRender.js +3 -0
  235. package/lib/esm/render/MockRender.js.map +1 -1
  236. package/lib/esm/render/RealityMeshParams.d.ts +3 -4
  237. package/lib/esm/render/RealityMeshParams.d.ts.map +1 -1
  238. package/lib/esm/render/RealityMeshParams.js +10 -6
  239. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  240. package/lib/esm/render/VisibleFeature.d.ts +5 -5
  241. package/lib/esm/render/VisibleFeature.js.map +1 -1
  242. package/lib/esm/render/webgl/BackgroundMapDrape.js +3 -3
  243. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  244. package/lib/esm/render/webgl/BranchState.d.ts +3 -0
  245. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  246. package/lib/esm/render/webgl/BranchState.js +5 -0
  247. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  248. package/lib/esm/render/webgl/CachedGeometry.d.ts +32 -0
  249. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  250. package/lib/esm/render/webgl/CachedGeometry.js +69 -0
  251. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  252. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  253. package/lib/esm/render/webgl/DrawCommand.js +6 -4
  254. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  255. package/lib/esm/render/webgl/EDL.d.ts +40 -0
  256. package/lib/esm/render/webgl/EDL.d.ts.map +1 -0
  257. package/lib/esm/render/webgl/EDL.js +260 -0
  258. package/lib/esm/render/webgl/EDL.js.map +1 -0
  259. package/lib/esm/render/webgl/EdgeSettings.js +2 -2
  260. package/lib/esm/render/webgl/FrameBuffer.d.ts +4 -0
  261. package/lib/esm/render/webgl/FrameBuffer.d.ts.map +1 -1
  262. package/lib/esm/render/webgl/FrameBuffer.js +9 -0
  263. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  264. package/lib/esm/render/webgl/FrustumUniforms.d.ts +7 -0
  265. package/lib/esm/render/webgl/FrustumUniforms.d.ts.map +1 -1
  266. package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
  267. package/lib/esm/render/webgl/Layer.js +2 -2
  268. package/lib/esm/render/webgl/LayerCommands.js +2 -2
  269. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  270. package/lib/esm/render/webgl/PlanarClassifier.js +9 -8
  271. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  272. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -1
  273. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  274. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  275. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  276. package/lib/esm/render/webgl/PointCloud.js +2 -0
  277. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  278. package/lib/esm/render/webgl/RealityMesh.d.ts +3 -1
  279. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  280. package/lib/esm/render/webgl/RealityMesh.js +8 -3
  281. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  282. package/lib/esm/render/webgl/RealityModelUniforms.d.ts +9 -0
  283. package/lib/esm/render/webgl/RealityModelUniforms.d.ts.map +1 -1
  284. package/lib/esm/render/webgl/RealityModelUniforms.js +50 -0
  285. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  286. package/lib/esm/render/webgl/RenderCommands.d.ts +2 -1
  287. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  288. package/lib/esm/render/webgl/RenderCommands.js +46 -38
  289. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  290. package/lib/esm/render/webgl/RenderFlags.d.ts +19 -17
  291. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  292. package/lib/esm/render/webgl/RenderFlags.js +8 -6
  293. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  294. package/lib/esm/render/webgl/SceneCompositor.d.ts +6 -1
  295. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  296. package/lib/esm/render/webgl/SceneCompositor.js +194 -77
  297. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  298. package/lib/esm/render/webgl/SolarShadowMap.js +3 -3
  299. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  300. package/lib/esm/render/webgl/SurfaceGeometry.js +5 -5
  301. package/lib/esm/render/webgl/Target.js +7 -7
  302. package/lib/esm/render/webgl/Target.js.map +1 -1
  303. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  304. package/lib/esm/render/webgl/Technique.js +18 -3
  305. package/lib/esm/render/webgl/Technique.js.map +1 -1
  306. package/lib/esm/render/webgl/TechniqueFlags.js +4 -4
  307. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  308. package/lib/esm/render/webgl/TechniqueId.d.ts +6 -2
  309. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  310. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  311. package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
  312. package/lib/esm/render/webgl/UniformHandle.js +1 -2
  313. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  314. package/lib/esm/render/webgl/VisibleTileFeatures.js +5 -5
  315. package/lib/esm/render/webgl/glsl/EDL.d.ts +14 -0
  316. package/lib/esm/render/webgl/glsl/EDL.d.ts.map +1 -0
  317. package/lib/esm/render/webgl/glsl/EDL.js +253 -0
  318. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -0
  319. package/lib/esm/render/webgl/glsl/RenderPass.js +12 -12
  320. package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
  321. package/lib/esm/tile/BatchedTileIdMap.js +1 -1
  322. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  323. package/lib/esm/tile/DynamicIModelTile.js +1 -1
  324. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  325. package/lib/esm/tile/GltfReader.js +1 -1
  326. package/lib/esm/tile/GltfReader.js.map +1 -1
  327. package/lib/esm/tile/IModelTile.js +1 -1
  328. package/lib/esm/tile/IModelTile.js.map +1 -1
  329. package/lib/esm/tile/ImdlReader.js +5 -5
  330. package/lib/esm/tile/ImdlReader.js.map +1 -1
  331. package/lib/esm/tile/OrbitGtTileTree.js +1 -1
  332. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  333. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  334. package/lib/esm/tile/RealityModelTileTree.js +2 -1
  335. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  336. package/lib/esm/tile/RealityTileLoader.js +2 -2
  337. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  338. package/lib/esm/tile/RealityTileTree.d.ts +5 -0
  339. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  340. package/lib/esm/tile/RealityTileTree.js +9 -4
  341. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  342. package/lib/esm/tile/TileDrawArgs.js +1 -1
  343. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  344. package/lib/esm/tile/TileTreeReference.d.ts +3 -0
  345. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  346. package/lib/esm/tile/TileTreeReference.js +3 -0
  347. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  348. package/lib/esm/tile/map/CesiumTerrainProvider.js +9 -9
  349. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  350. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  351. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -2
  352. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  353. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +2 -2
  354. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  355. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +2 -2
  356. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  357. package/lib/esm/tile/map/ImageryTileTree.d.ts +26 -1
  358. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  359. package/lib/esm/tile/map/ImageryTileTree.js +53 -4
  360. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  361. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +7 -3
  362. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  363. package/lib/esm/tile/map/MapLayerImageryProvider.js +12 -8
  364. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  365. package/lib/esm/tile/map/MapTile.d.ts +5 -0
  366. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  367. package/lib/esm/tile/map/MapTile.js +33 -13
  368. package/lib/esm/tile/map/MapTile.js.map +1 -1
  369. package/lib/esm/tile/map/MapTileTree.d.ts +42 -3
  370. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  371. package/lib/esm/tile/map/MapTileTree.js +126 -9
  372. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  373. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +17 -0
  374. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  375. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +26 -0
  376. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  377. package/lib/esm/tile/map/WmtsCapabilities.d.ts +23 -68
  378. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  379. package/lib/esm/tile/map/WmtsCapabilities.js +268 -259
  380. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  381. package/lib/esm/tools/ClipViewTool.js +2 -2
  382. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  383. package/lib/esm/tools/MeasureTool.js +2 -2
  384. package/lib/esm/tools/MeasureTool.js.map +1 -1
  385. package/package.json +22 -23
@@ -7,10 +7,25 @@ import { BriefcaseTxns } from "./BriefcaseTxns";
7
7
  import { GraphicalEditingScope } from "./GraphicalEditingScope";
8
8
  import { IModelConnection } from "./IModelConnection";
9
9
  import { ProgressCallback } from "./request/Request";
10
+ /**
11
+ * Download progress information.
12
+ * @public
13
+ */
14
+ export interface DownloadProgressInfo {
15
+ /** Bytes downloaded. */
16
+ loaded: number;
17
+ /** Total size of the download in bytes. */
18
+ total: number;
19
+ }
20
+ /**
21
+ * Called to show progress during a download.
22
+ * @public
23
+ */
24
+ export declare type OnDownloadProgress = (progress: DownloadProgressInfo) => void;
10
25
  /**
11
26
  * Partial interface of AbortSignal.
12
27
  * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
13
- * @alpha
28
+ * @beta
14
29
  */
15
30
  export interface GenericAbortSignal {
16
31
  /** Add Listener for abort signal. */
@@ -23,12 +38,17 @@ export interface GenericAbortSignal {
23
38
  * @public
24
39
  */
25
40
  export interface PullChangesOptions {
26
- /** Function called regularly to report progress of changes download. */
41
+ /**
42
+ * Function called regularly to report progress of changes download.
43
+ * @deprecated in 3.6. Use [[downloadProgressCallback]] instead.
44
+ */
27
45
  progressCallback?: ProgressCallback;
46
+ /** Function called regularly to report progress of changes download. */
47
+ downloadProgressCallback?: OnDownloadProgress;
28
48
  /** Interval for calling progress callback (in milliseconds). */
29
49
  progressInterval?: number;
30
50
  /** Signal for cancelling the download.
31
- * @alpha
51
+ * @beta
32
52
  */
33
53
  abortSignal?: GenericAbortSignal;
34
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BriefcaseConnection.d.ts","sourceRoot":"","sources":["../../src/BriefcaseConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BriefcaseConnection.d.ts","sourceRoot":"","sources":["../../src/BriefcaseConnection.ts"],"names":[],"mappings":"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"}
@@ -239,8 +239,16 @@ export class BriefcaseConnection extends IModelConnection {
239
239
  */
240
240
  async pullChanges(toIndex, options) {
241
241
  const removeListeners = [];
242
- if (options === null || options === void 0 ? void 0 : options.progressCallback) {
243
- const removeProgressListener = IpcApp.addListener(getPullChangesIpcChannel(this.iModelId), (_evt, data) => { var _a; return (_a = options === null || options === void 0 ? void 0 : options.progressCallback) === null || _a === void 0 ? void 0 : _a.call(options, data); });
242
+ // eslint-disable-next-line deprecation/deprecation
243
+ const shouldReportProgress = !!(options === null || options === void 0 ? void 0 : options.progressCallback) || !!(options === null || options === void 0 ? void 0 : options.downloadProgressCallback);
244
+ if (shouldReportProgress) {
245
+ const handleProgress = (_evt, data) => {
246
+ var _a, _b;
247
+ // eslint-disable-next-line deprecation/deprecation
248
+ (_a = options === null || options === void 0 ? void 0 : options.progressCallback) === null || _a === void 0 ? void 0 : _a.call(options, data);
249
+ (_b = options === null || options === void 0 ? void 0 : options.downloadProgressCallback) === null || _b === void 0 ? void 0 : _b.call(options, data);
250
+ };
251
+ const removeProgressListener = IpcApp.addListener(getPullChangesIpcChannel(this.iModelId), handleProgress);
244
252
  removeListeners.push(removeProgressListener);
245
253
  }
246
254
  if (options === null || options === void 0 ? void 0 : options.abortSignal) {
@@ -250,7 +258,7 @@ export class BriefcaseConnection extends IModelConnection {
250
258
  }
251
259
  this.requireTimeline();
252
260
  const ipcAppOptions = {
253
- reportProgress: !!(options === null || options === void 0 ? void 0 : options.progressCallback),
261
+ reportProgress: shouldReportProgress,
254
262
  progressInterval: options === null || options === void 0 ? void 0 : options.progressInterval,
255
263
  enableCancellation: !!(options === null || options === void 0 ? void 0 : options.abortSignal),
256
264
  };
@@ -1 +1 @@
1
- {"version":3,"file":"BriefcaseConnection.js","sourceRoot":"","sources":["../../src/BriefcaseConnection.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelConnection\r\n */\r\n\r\nimport { assert, BeEvent, CompressedId64Set, Guid, GuidString, Id64String, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\r\nimport {\r\n ChangesetIndex, ChangesetIndexAndId, getPullChangesIpcChannel, IModelConnectionProps, IModelError,\r\n PullChangesOptions as IpcAppPullChangesOptions, OpenBriefcaseProps, StandaloneOpenOptions,\r\n} from \"@itwin/core-common\";\r\nimport { BriefcaseTxns } from \"./BriefcaseTxns\";\r\nimport { GraphicalEditingScope } from \"./GraphicalEditingScope\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { IpcApp } from \"./IpcApp\";\r\nimport { ProgressCallback } from \"./request/Request\";\r\nimport { disposeTileTreesForGeometricModels } from \"./tile/internal\";\r\nimport { Viewport } from \"./Viewport\";\r\n\r\n/**\r\n * Partial interface of AbortSignal.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal\r\n * @alpha\r\n */\r\nexport interface GenericAbortSignal {\r\n /** Add Listener for abort signal. */\r\n addEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\r\n /** Remove Listener for abort signal. */\r\n removeEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\r\n}\r\n\r\n/**\r\n * Options for pulling iModel changes.\r\n * @public\r\n */\r\nexport interface PullChangesOptions {\r\n /** Function called regularly to report progress of changes download. */\r\n progressCallback?: ProgressCallback;\r\n /** Interval for calling progress callback (in milliseconds). */\r\n progressInterval?: number;\r\n /** Signal for cancelling the download.\r\n * @alpha\r\n */\r\n abortSignal?: GenericAbortSignal;\r\n}\r\n\r\n/** Keeps track of changes to models, buffering them until synchronization points.\r\n * While a GraphicalEditingScope is open, the changes are buffered until the scope exits, at which point they are processed.\r\n * Otherwise, the buffered changes are processed after undo/redo, commit, or pull+merge changes.\r\n */\r\nclass ModelChangeMonitor {\r\n private _editingScope?: GraphicalEditingScope;\r\n private readonly _briefcase: BriefcaseConnection;\r\n private readonly _deletedModels = new Set<string>();\r\n private readonly _modelIdToGuid = new Map<string, string>();\r\n private readonly _removals: VoidFunction[] = [];\r\n\r\n public constructor(briefcase: BriefcaseConnection) {\r\n this._briefcase = briefcase;\r\n\r\n // Buffer updated geometry guids.\r\n this._removals.push(briefcase.txns.onModelGeometryChanged.addListener((changes) => {\r\n for (const change of changes) {\r\n this._deletedModels.delete(change.id);\r\n this._modelIdToGuid.set(change.id, change.guid);\r\n }\r\n }));\r\n\r\n // Buffer deletions of models.\r\n this._removals.push(briefcase.txns.onModelsChanged.addListener((changes) => {\r\n if (changes.deleted) {\r\n for (const id of CompressedId64Set.iterable(changes.deleted)) {\r\n this._modelIdToGuid.delete(id);\r\n this._deletedModels.add(id);\r\n }\r\n }\r\n }));\r\n\r\n // Outside of an editing scope, we want to update viewport contents after commit, undo/redo, or merging changes.\r\n const maybeProcess = async () => {\r\n if (this.editingScope)\r\n return;\r\n\r\n const modelIds = Array.from(this._modelIdToGuid.keys());\r\n if (modelIds.length > 0)\r\n await IModelApp.tileAdmin.purgeTileTrees(this._briefcase, modelIds);\r\n\r\n this.processBuffered();\r\n };\r\n\r\n this._removals.push(briefcase.txns.onCommitted.addListener(maybeProcess));\r\n this._removals.push(briefcase.txns.onAfterUndoRedo.addListener(maybeProcess));\r\n this._removals.push(briefcase.txns.onChangesPulled.addListener(maybeProcess));\r\n }\r\n\r\n public async close(): Promise<void> {\r\n for (const removal of this._removals)\r\n removal();\r\n\r\n this._removals.length = 0;\r\n\r\n if (this._editingScope) {\r\n await this._editingScope.exit();\r\n this._editingScope = undefined;\r\n }\r\n }\r\n\r\n public get editingScope(): GraphicalEditingScope | undefined {\r\n return this._editingScope;\r\n }\r\n\r\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\r\n if (this._editingScope)\r\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\r\n\r\n this._editingScope = await GraphicalEditingScope.enter(this._briefcase);\r\n\r\n const removeGeomListener = this._editingScope.onGeometryChanges.addListener((changes) => {\r\n const modelIds = [];\r\n for (const change of changes)\r\n modelIds.push(change.id);\r\n\r\n this.invalidateScenes(modelIds);\r\n });\r\n\r\n this._editingScope.onExited.addOnce((scope) => {\r\n assert(scope === this._editingScope);\r\n this._editingScope = undefined;\r\n removeGeomListener();\r\n this.processBuffered();\r\n });\r\n\r\n return this._editingScope;\r\n }\r\n\r\n private processBuffered(): void {\r\n const models = this._briefcase.models;\r\n for (const [id, guid] of this._modelIdToGuid) {\r\n const model = models.getLoaded(id)?.asGeometricModel;\r\n if (model)\r\n model.geometryGuid = guid;\r\n }\r\n\r\n const modelIds = new Set<string>(this._modelIdToGuid.keys());\r\n for (const deleted of this._deletedModels) {\r\n modelIds.add(deleted);\r\n models.unload(deleted);\r\n }\r\n\r\n this.invalidateScenes(modelIds);\r\n disposeTileTreesForGeometricModels(modelIds, this._briefcase);\r\n\r\n this._briefcase.onBufferedModelChanges.raiseEvent(modelIds);\r\n\r\n this._modelIdToGuid.clear();\r\n this._deletedModels.clear();\r\n }\r\n\r\n private invalidateScenes(changedModels: Iterable<Id64String>): void {\r\n for (const user of IModelApp.tileAdmin.tileUsers) {\r\n if (user instanceof Viewport && user.iModel === this._briefcase) {\r\n for (const modelId of changedModels) {\r\n if (user.view.viewsModel(modelId)) {\r\n user.invalidateScene();\r\n user.setFeatureOverrideProviderChanged();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** Settings that can be used to control the behavior of [[Tool]]s that modify a [[BriefcaseConnection]].\r\n * For example, tools that want to create new elements can consult the briefcase's editor tool settings to\r\n * determine into which model and category to insert the elements.\r\n * Specialized tools are free to ignore these settings.\r\n * @see [[BriefcaseConnection.editorToolSettings]] to query or modify the current settings for a briefcase.\r\n * @see [CreateElementTool]($editor-frontend) for an example of a tool that uses these settings.\r\n * @alpha\r\n */\r\nexport class BriefcaseEditorToolSettings {\r\n private _category?: Id64String;\r\n private _model?: Id64String;\r\n\r\n /** An event raised just after the default [[category]] is changed. */\r\n public readonly onCategoryChanged = new BeEvent<(previousCategory: Id64String | undefined) => void>();\r\n\r\n /** An event raised just after the default [[model]] is changed. */\r\n public readonly onModelChanged = new BeEvent<(previousModel: Id64String | undefined) => void>();\r\n\r\n /** The [Category]($backend) into which new elements should be inserted by default.\r\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate category.\r\n * @see [[onCategoryChanged]] to be notified when this property is modified.\r\n * @see [CreateElementTool.targetCategory]($editor-frontend) for an example of a tool that uses this setting.\r\n */\r\n public get category(): Id64String | undefined {\r\n return this._category;\r\n }\r\n public set category(category: Id64String | undefined) {\r\n const previousCategory = this.category;\r\n if (category !== this.category) {\r\n this._category = category;\r\n this.onCategoryChanged.raiseEvent(previousCategory);\r\n }\r\n }\r\n\r\n /** The [Model]($backend) into which new elements should be inserted by default.\r\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate model.\r\n * @see [[onModelChanged]] to be notified when this property is modified.\r\n * @see [CreateElementTool.targetModel]($editor-frontend) for an example of a tool that uses this setting.\r\n */\r\n public get model(): Id64String | undefined {\r\n return this._model;\r\n }\r\n public set model(model: Id64String | undefined) {\r\n const previousModel = this.model;\r\n if (model !== this.model) {\r\n this._model = model;\r\n this.onModelChanged.raiseEvent(previousModel);\r\n }\r\n }\r\n}\r\n\r\n/** A connection to an editable briefcase on the backend. This class uses [Ipc]($docs/learning/IpcInterface.md) to communicate\r\n * to the backend and may only be used by [[IpcApp]]s.\r\n * @public\r\n */\r\nexport class BriefcaseConnection extends IModelConnection {\r\n protected _isClosed?: boolean;\r\n private readonly _modelsMonitor: ModelChangeMonitor;\r\n /** Default settings that can be used to control the behavior of [[Tool]]s that modify this briefcase.\r\n * @alpha\r\n */\r\n public readonly editorToolSettings = new BriefcaseEditorToolSettings();\r\n\r\n /** Manages local changes to the briefcase via [Txns]($docs/learning/InteractiveEditing.md). */\r\n public readonly txns: BriefcaseTxns;\r\n\r\n /** @internal */\r\n public override isBriefcaseConnection(): this is BriefcaseConnection { return true; }\r\n\r\n /** The Guid that identifies the iTwin that owns this iModel. */\r\n public override get iTwinId(): GuidString { return super.iTwinId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\r\n\r\n /** The Guid that identifies this iModel. */\r\n public override get iModelId(): GuidString { return super.iModelId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\r\n\r\n protected constructor(props: IModelConnectionProps, openMode: OpenMode) {\r\n super(props);\r\n this._openMode = openMode;\r\n this.txns = new BriefcaseTxns(this);\r\n this._modelsMonitor = new ModelChangeMonitor(this);\r\n }\r\n\r\n /** Open a BriefcaseConnection to a [BriefcaseDb]($backend). */\r\n public static async openFile(briefcaseProps: OpenBriefcaseProps): Promise<BriefcaseConnection> {\r\n const iModelProps = await IpcApp.appFunctionIpc.openBriefcase(briefcaseProps);\r\n const connection = new this({ ...briefcaseProps, ...iModelProps }, briefcaseProps.readonly ? OpenMode.Readonly : OpenMode.ReadWrite);\r\n IModelConnection.onOpen.raiseEvent(connection);\r\n return connection;\r\n }\r\n\r\n /** Open a BriefcaseConnection to a [StandaloneDb]($backend)\r\n * @note StandaloneDbs, by definition, may not push or pull changes. Attempting to do so will throw exceptions.\r\n */\r\n public static async openStandalone(filePath: string, openMode: OpenMode = OpenMode.ReadWrite, opts?: StandaloneOpenOptions): Promise<BriefcaseConnection> {\r\n const openResponse = await IpcApp.appFunctionIpc.openStandalone(filePath, openMode, opts);\r\n const connection = new this(openResponse, openMode);\r\n IModelConnection.onOpen.raiseEvent(connection);\r\n return connection;\r\n }\r\n\r\n /** Returns `true` if [[close]] has already been called. */\r\n public get isClosed(): boolean { return this._isClosed === true; }\r\n\r\n /**\r\n * Close this BriefcaseConnection.\r\n * @note make sure to call [[saveChanges]] before calling this method. Unsaved local changes are abandoned.\r\n */\r\n public async close(): Promise<void> {\r\n if (this.isClosed)\r\n return;\r\n\r\n await this._modelsMonitor.close();\r\n\r\n this.beforeClose();\r\n this.txns.dispose();\r\n\r\n this._isClosed = true;\r\n await IpcApp.appFunctionIpc.closeIModel(this._fileKey);\r\n }\r\n\r\n private requireTimeline() {\r\n if (this.iTwinId === Guid.empty)\r\n throw new IModelError(IModelStatus.WrongIModel, \"iModel has no timeline\");\r\n }\r\n\r\n /** Query if there are any pending Txns in this briefcase that are waiting to be pushed. */\r\n public async hasPendingTxns(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\r\n return this.txns.hasPendingTxns();\r\n }\r\n\r\n /** Commit pending changes to this briefcase.\r\n * @param description Optional description of the changes.\r\n */\r\n public async saveChanges(description?: string): Promise<void> {\r\n await IpcApp.appFunctionIpc.saveChanges(this.key, description);\r\n }\r\n\r\n /** Pull (and potentially merge if there are local changes) up to a specified changeset from iModelHub into this briefcase\r\n * @param toIndex The changeset index to pull changes to. If `undefined`, pull all changes.\r\n * @param options Options for pulling changes.\r\n * @see [[BriefcaseTxns.onChangesPulled]] for the event dispatched after changes are pulled.\r\n */\r\n public async pullChanges(toIndex?: ChangesetIndex, options?: PullChangesOptions): Promise<void> {\r\n const removeListeners: VoidFunction[] = [];\r\n if (options?.progressCallback) {\r\n const removeProgressListener = IpcApp.addListener(\r\n getPullChangesIpcChannel(this.iModelId),\r\n (_evt: Event, data: { loaded: number, total: number }) => options?.progressCallback?.(data),\r\n );\r\n removeListeners.push(removeProgressListener);\r\n }\r\n if (options?.abortSignal) {\r\n const abort = () => void IpcApp.appFunctionIpc.cancelPullChangesRequest(this.key);\r\n options?.abortSignal.addEventListener(\"abort\", abort);\r\n removeListeners.push(() => options?.abortSignal?.removeEventListener(\"abort\", abort));\r\n }\r\n\r\n this.requireTimeline();\r\n const ipcAppOptions: IpcAppPullChangesOptions = {\r\n reportProgress: !!options?.progressCallback,\r\n progressInterval: options?.progressInterval,\r\n enableCancellation: !!options?.abortSignal,\r\n };\r\n try {\r\n this.changeset = await IpcApp.appFunctionIpc.pullChanges(this.key, toIndex, ipcAppOptions);\r\n } finally {\r\n removeListeners.forEach((remove) => remove());\r\n }\r\n }\r\n\r\n /** Create a changeset from local Txns and push to iModelHub. On success, clear Txn table.\r\n * @param description The description for the changeset\r\n * @returns the changesetId of the pushed changes\r\n * @see [[BriefcaseTxns.onChangesPushed]] for the event dispatched after changes are pushed.\r\n */\r\n public async pushChanges(description: string): Promise<ChangesetIndexAndId> {\r\n this.requireTimeline();\r\n return IpcApp.appFunctionIpc.pushChanges(this.key, description);\r\n }\r\n\r\n /** The current graphical editing scope, if one is in progress.\r\n * @see [[enterEditingScope]] to begin graphical editing.\r\n */\r\n public get editingScope(): GraphicalEditingScope | undefined {\r\n return this._modelsMonitor.editingScope;\r\n }\r\n\r\n /** Return whether graphical editing is supported for this briefcase. It is not supported if the briefcase is read-only, or the briefcase contains a version of\r\n * the BisCore ECSchema older than v0.1.11.\r\n * @see [[enterEditingScope]] to enable graphical editing.\r\n */\r\n public async supportsGraphicalEditing(): Promise<boolean> {\r\n return IpcApp.appFunctionIpc.isGraphicalEditingSupported(this.key);\r\n }\r\n\r\n /** Begin a new graphical editing scope.\r\n * @throws Error if an editing scope already exists or one could not be created.\r\n * @see [[GraphicalEditingScope.exit]] to exit the scope.\r\n * @see [[supportsGraphicalEditing]] to determine whether this method should be expected to succeed.\r\n * @see [[editingScope]] to obtain the current editing scope, if one is in progress.\r\n */\r\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\r\n return this._modelsMonitor.enterEditingScope();\r\n }\r\n\r\n /** Strictly for tests - dispatched from ModelChangeMonitor.processBuffered.\r\n * @internal\r\n */\r\n public readonly onBufferedModelChanges = new BeEvent<(changedModelIds: Set<string>) => void>();\r\n}\r\n"]}
1
+ {"version":3,"file":"BriefcaseConnection.js","sourceRoot":"","sources":["../../src/BriefcaseConnection.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelConnection\r\n */\r\n\r\nimport { assert, BeEvent, CompressedId64Set, Guid, GuidString, Id64String, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\r\nimport {\r\n ChangesetIndex, ChangesetIndexAndId, getPullChangesIpcChannel, IModelConnectionProps, IModelError,\r\n PullChangesOptions as IpcAppPullChangesOptions, OpenBriefcaseProps, StandaloneOpenOptions,\r\n} from \"@itwin/core-common\";\r\nimport { BriefcaseTxns } from \"./BriefcaseTxns\";\r\nimport { GraphicalEditingScope } from \"./GraphicalEditingScope\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { IpcApp } from \"./IpcApp\";\r\nimport { ProgressCallback } from \"./request/Request\";\r\nimport { disposeTileTreesForGeometricModels } from \"./tile/internal\";\r\nimport { Viewport } from \"./Viewport\";\r\n\r\n/**\r\n * Download progress information.\r\n * @public\r\n */\r\nexport interface DownloadProgressInfo {\r\n /** Bytes downloaded. */\r\n loaded: number;\r\n /** Total size of the download in bytes. */\r\n total: number;\r\n}\r\n\r\n/**\r\n * Called to show progress during a download.\r\n * @public\r\n */\r\nexport type OnDownloadProgress = (progress: DownloadProgressInfo) => void;\r\n\r\n/**\r\n * Partial interface of AbortSignal.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal\r\n * @beta\r\n */\r\nexport interface GenericAbortSignal {\r\n /** Add Listener for abort signal. */\r\n addEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\r\n /** Remove Listener for abort signal. */\r\n removeEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\r\n}\r\n\r\n/**\r\n * Options for pulling iModel changes.\r\n * @public\r\n */\r\nexport interface PullChangesOptions {\r\n /**\r\n * Function called regularly to report progress of changes download.\r\n * @deprecated in 3.6. Use [[downloadProgressCallback]] instead.\r\n */\r\n progressCallback?: ProgressCallback;\r\n /** Function called regularly to report progress of changes download. */\r\n downloadProgressCallback?: OnDownloadProgress;\r\n /** Interval for calling progress callback (in milliseconds). */\r\n progressInterval?: number;\r\n /** Signal for cancelling the download.\r\n * @beta\r\n */\r\n abortSignal?: GenericAbortSignal;\r\n}\r\n\r\n/** Keeps track of changes to models, buffering them until synchronization points.\r\n * While a GraphicalEditingScope is open, the changes are buffered until the scope exits, at which point they are processed.\r\n * Otherwise, the buffered changes are processed after undo/redo, commit, or pull+merge changes.\r\n */\r\nclass ModelChangeMonitor {\r\n private _editingScope?: GraphicalEditingScope;\r\n private readonly _briefcase: BriefcaseConnection;\r\n private readonly _deletedModels = new Set<string>();\r\n private readonly _modelIdToGuid = new Map<string, string>();\r\n private readonly _removals: VoidFunction[] = [];\r\n\r\n public constructor(briefcase: BriefcaseConnection) {\r\n this._briefcase = briefcase;\r\n\r\n // Buffer updated geometry guids.\r\n this._removals.push(briefcase.txns.onModelGeometryChanged.addListener((changes) => {\r\n for (const change of changes) {\r\n this._deletedModels.delete(change.id);\r\n this._modelIdToGuid.set(change.id, change.guid);\r\n }\r\n }));\r\n\r\n // Buffer deletions of models.\r\n this._removals.push(briefcase.txns.onModelsChanged.addListener((changes) => {\r\n if (changes.deleted) {\r\n for (const id of CompressedId64Set.iterable(changes.deleted)) {\r\n this._modelIdToGuid.delete(id);\r\n this._deletedModels.add(id);\r\n }\r\n }\r\n }));\r\n\r\n // Outside of an editing scope, we want to update viewport contents after commit, undo/redo, or merging changes.\r\n const maybeProcess = async () => {\r\n if (this.editingScope)\r\n return;\r\n\r\n const modelIds = Array.from(this._modelIdToGuid.keys());\r\n if (modelIds.length > 0)\r\n await IModelApp.tileAdmin.purgeTileTrees(this._briefcase, modelIds);\r\n\r\n this.processBuffered();\r\n };\r\n\r\n this._removals.push(briefcase.txns.onCommitted.addListener(maybeProcess));\r\n this._removals.push(briefcase.txns.onAfterUndoRedo.addListener(maybeProcess));\r\n this._removals.push(briefcase.txns.onChangesPulled.addListener(maybeProcess));\r\n }\r\n\r\n public async close(): Promise<void> {\r\n for (const removal of this._removals)\r\n removal();\r\n\r\n this._removals.length = 0;\r\n\r\n if (this._editingScope) {\r\n await this._editingScope.exit();\r\n this._editingScope = undefined;\r\n }\r\n }\r\n\r\n public get editingScope(): GraphicalEditingScope | undefined {\r\n return this._editingScope;\r\n }\r\n\r\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\r\n if (this._editingScope)\r\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\r\n\r\n this._editingScope = await GraphicalEditingScope.enter(this._briefcase);\r\n\r\n const removeGeomListener = this._editingScope.onGeometryChanges.addListener((changes) => {\r\n const modelIds = [];\r\n for (const change of changes)\r\n modelIds.push(change.id);\r\n\r\n this.invalidateScenes(modelIds);\r\n });\r\n\r\n this._editingScope.onExited.addOnce((scope) => {\r\n assert(scope === this._editingScope);\r\n this._editingScope = undefined;\r\n removeGeomListener();\r\n this.processBuffered();\r\n });\r\n\r\n return this._editingScope;\r\n }\r\n\r\n private processBuffered(): void {\r\n const models = this._briefcase.models;\r\n for (const [id, guid] of this._modelIdToGuid) {\r\n const model = models.getLoaded(id)?.asGeometricModel;\r\n if (model)\r\n model.geometryGuid = guid;\r\n }\r\n\r\n const modelIds = new Set<string>(this._modelIdToGuid.keys());\r\n for (const deleted of this._deletedModels) {\r\n modelIds.add(deleted);\r\n models.unload(deleted);\r\n }\r\n\r\n this.invalidateScenes(modelIds);\r\n disposeTileTreesForGeometricModels(modelIds, this._briefcase);\r\n\r\n this._briefcase.onBufferedModelChanges.raiseEvent(modelIds);\r\n\r\n this._modelIdToGuid.clear();\r\n this._deletedModels.clear();\r\n }\r\n\r\n private invalidateScenes(changedModels: Iterable<Id64String>): void {\r\n for (const user of IModelApp.tileAdmin.tileUsers) {\r\n if (user instanceof Viewport && user.iModel === this._briefcase) {\r\n for (const modelId of changedModels) {\r\n if (user.view.viewsModel(modelId)) {\r\n user.invalidateScene();\r\n user.setFeatureOverrideProviderChanged();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** Settings that can be used to control the behavior of [[Tool]]s that modify a [[BriefcaseConnection]].\r\n * For example, tools that want to create new elements can consult the briefcase's editor tool settings to\r\n * determine into which model and category to insert the elements.\r\n * Specialized tools are free to ignore these settings.\r\n * @see [[BriefcaseConnection.editorToolSettings]] to query or modify the current settings for a briefcase.\r\n * @see [CreateElementTool]($editor-frontend) for an example of a tool that uses these settings.\r\n * @alpha\r\n */\r\nexport class BriefcaseEditorToolSettings {\r\n private _category?: Id64String;\r\n private _model?: Id64String;\r\n\r\n /** An event raised just after the default [[category]] is changed. */\r\n public readonly onCategoryChanged = new BeEvent<(previousCategory: Id64String | undefined) => void>();\r\n\r\n /** An event raised just after the default [[model]] is changed. */\r\n public readonly onModelChanged = new BeEvent<(previousModel: Id64String | undefined) => void>();\r\n\r\n /** The [Category]($backend) into which new elements should be inserted by default.\r\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate category.\r\n * @see [[onCategoryChanged]] to be notified when this property is modified.\r\n * @see [CreateElementTool.targetCategory]($editor-frontend) for an example of a tool that uses this setting.\r\n */\r\n public get category(): Id64String | undefined {\r\n return this._category;\r\n }\r\n public set category(category: Id64String | undefined) {\r\n const previousCategory = this.category;\r\n if (category !== this.category) {\r\n this._category = category;\r\n this.onCategoryChanged.raiseEvent(previousCategory);\r\n }\r\n }\r\n\r\n /** The [Model]($backend) into which new elements should be inserted by default.\r\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate model.\r\n * @see [[onModelChanged]] to be notified when this property is modified.\r\n * @see [CreateElementTool.targetModel]($editor-frontend) for an example of a tool that uses this setting.\r\n */\r\n public get model(): Id64String | undefined {\r\n return this._model;\r\n }\r\n public set model(model: Id64String | undefined) {\r\n const previousModel = this.model;\r\n if (model !== this.model) {\r\n this._model = model;\r\n this.onModelChanged.raiseEvent(previousModel);\r\n }\r\n }\r\n}\r\n\r\n/** A connection to an editable briefcase on the backend. This class uses [Ipc]($docs/learning/IpcInterface.md) to communicate\r\n * to the backend and may only be used by [[IpcApp]]s.\r\n * @public\r\n */\r\nexport class BriefcaseConnection extends IModelConnection {\r\n protected _isClosed?: boolean;\r\n private readonly _modelsMonitor: ModelChangeMonitor;\r\n /** Default settings that can be used to control the behavior of [[Tool]]s that modify this briefcase.\r\n * @alpha\r\n */\r\n public readonly editorToolSettings = new BriefcaseEditorToolSettings();\r\n\r\n /** Manages local changes to the briefcase via [Txns]($docs/learning/InteractiveEditing.md). */\r\n public readonly txns: BriefcaseTxns;\r\n\r\n /** @internal */\r\n public override isBriefcaseConnection(): this is BriefcaseConnection { return true; }\r\n\r\n /** The Guid that identifies the iTwin that owns this iModel. */\r\n public override get iTwinId(): GuidString { return super.iTwinId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\r\n\r\n /** The Guid that identifies this iModel. */\r\n public override get iModelId(): GuidString { return super.iModelId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\r\n\r\n protected constructor(props: IModelConnectionProps, openMode: OpenMode) {\r\n super(props);\r\n this._openMode = openMode;\r\n this.txns = new BriefcaseTxns(this);\r\n this._modelsMonitor = new ModelChangeMonitor(this);\r\n }\r\n\r\n /** Open a BriefcaseConnection to a [BriefcaseDb]($backend). */\r\n public static async openFile(briefcaseProps: OpenBriefcaseProps): Promise<BriefcaseConnection> {\r\n const iModelProps = await IpcApp.appFunctionIpc.openBriefcase(briefcaseProps);\r\n const connection = new this({ ...briefcaseProps, ...iModelProps }, briefcaseProps.readonly ? OpenMode.Readonly : OpenMode.ReadWrite);\r\n IModelConnection.onOpen.raiseEvent(connection);\r\n return connection;\r\n }\r\n\r\n /** Open a BriefcaseConnection to a [StandaloneDb]($backend)\r\n * @note StandaloneDbs, by definition, may not push or pull changes. Attempting to do so will throw exceptions.\r\n */\r\n public static async openStandalone(filePath: string, openMode: OpenMode = OpenMode.ReadWrite, opts?: StandaloneOpenOptions): Promise<BriefcaseConnection> {\r\n const openResponse = await IpcApp.appFunctionIpc.openStandalone(filePath, openMode, opts);\r\n const connection = new this(openResponse, openMode);\r\n IModelConnection.onOpen.raiseEvent(connection);\r\n return connection;\r\n }\r\n\r\n /** Returns `true` if [[close]] has already been called. */\r\n public get isClosed(): boolean { return this._isClosed === true; }\r\n\r\n /**\r\n * Close this BriefcaseConnection.\r\n * @note make sure to call [[saveChanges]] before calling this method. Unsaved local changes are abandoned.\r\n */\r\n public async close(): Promise<void> {\r\n if (this.isClosed)\r\n return;\r\n\r\n await this._modelsMonitor.close();\r\n\r\n this.beforeClose();\r\n this.txns.dispose();\r\n\r\n this._isClosed = true;\r\n await IpcApp.appFunctionIpc.closeIModel(this._fileKey);\r\n }\r\n\r\n private requireTimeline() {\r\n if (this.iTwinId === Guid.empty)\r\n throw new IModelError(IModelStatus.WrongIModel, \"iModel has no timeline\");\r\n }\r\n\r\n /** Query if there are any pending Txns in this briefcase that are waiting to be pushed. */\r\n public async hasPendingTxns(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\r\n return this.txns.hasPendingTxns();\r\n }\r\n\r\n /** Commit pending changes to this briefcase.\r\n * @param description Optional description of the changes.\r\n */\r\n public async saveChanges(description?: string): Promise<void> {\r\n await IpcApp.appFunctionIpc.saveChanges(this.key, description);\r\n }\r\n\r\n /** Pull (and potentially merge if there are local changes) up to a specified changeset from iModelHub into this briefcase\r\n * @param toIndex The changeset index to pull changes to. If `undefined`, pull all changes.\r\n * @param options Options for pulling changes.\r\n * @see [[BriefcaseTxns.onChangesPulled]] for the event dispatched after changes are pulled.\r\n */\r\n public async pullChanges(toIndex?: ChangesetIndex, options?: PullChangesOptions): Promise<void> {\r\n const removeListeners: VoidFunction[] = [];\r\n // eslint-disable-next-line deprecation/deprecation\r\n const shouldReportProgress = !!options?.progressCallback || !!options?.downloadProgressCallback;\r\n\r\n if (shouldReportProgress) {\r\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\r\n // eslint-disable-next-line deprecation/deprecation\r\n options?.progressCallback?.(data);\r\n options?.downloadProgressCallback?.(data);\r\n };\r\n\r\n const removeProgressListener = IpcApp.addListener(\r\n getPullChangesIpcChannel(this.iModelId),\r\n handleProgress,\r\n );\r\n removeListeners.push(removeProgressListener);\r\n }\r\n\r\n if (options?.abortSignal) {\r\n const abort = () => void IpcApp.appFunctionIpc.cancelPullChangesRequest(this.key);\r\n options?.abortSignal.addEventListener(\"abort\", abort);\r\n removeListeners.push(() => options?.abortSignal?.removeEventListener(\"abort\", abort));\r\n }\r\n\r\n this.requireTimeline();\r\n const ipcAppOptions: IpcAppPullChangesOptions = {\r\n reportProgress: shouldReportProgress,\r\n progressInterval: options?.progressInterval,\r\n enableCancellation: !!options?.abortSignal,\r\n };\r\n try {\r\n this.changeset = await IpcApp.appFunctionIpc.pullChanges(this.key, toIndex, ipcAppOptions);\r\n } finally {\r\n removeListeners.forEach((remove) => remove());\r\n }\r\n }\r\n\r\n /** Create a changeset from local Txns and push to iModelHub. On success, clear Txn table.\r\n * @param description The description for the changeset\r\n * @returns the changesetId of the pushed changes\r\n * @see [[BriefcaseTxns.onChangesPushed]] for the event dispatched after changes are pushed.\r\n */\r\n public async pushChanges(description: string): Promise<ChangesetIndexAndId> {\r\n this.requireTimeline();\r\n return IpcApp.appFunctionIpc.pushChanges(this.key, description);\r\n }\r\n\r\n /** The current graphical editing scope, if one is in progress.\r\n * @see [[enterEditingScope]] to begin graphical editing.\r\n */\r\n public get editingScope(): GraphicalEditingScope | undefined {\r\n return this._modelsMonitor.editingScope;\r\n }\r\n\r\n /** Return whether graphical editing is supported for this briefcase. It is not supported if the briefcase is read-only, or the briefcase contains a version of\r\n * the BisCore ECSchema older than v0.1.11.\r\n * @see [[enterEditingScope]] to enable graphical editing.\r\n */\r\n public async supportsGraphicalEditing(): Promise<boolean> {\r\n return IpcApp.appFunctionIpc.isGraphicalEditingSupported(this.key);\r\n }\r\n\r\n /** Begin a new graphical editing scope.\r\n * @throws Error if an editing scope already exists or one could not be created.\r\n * @see [[GraphicalEditingScope.exit]] to exit the scope.\r\n * @see [[supportsGraphicalEditing]] to determine whether this method should be expected to succeed.\r\n * @see [[editingScope]] to obtain the current editing scope, if one is in progress.\r\n */\r\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\r\n return this._modelsMonitor.enterEditingScope();\r\n }\r\n\r\n /** Strictly for tests - dispatched from ModelChangeMonitor.processBuffered.\r\n * @internal\r\n */\r\n public readonly onBufferedModelChanges = new BeEvent<(changedModelIds: Set<string>) => void>();\r\n}\r\n"]}
@@ -73,7 +73,7 @@ export interface IModelAppOptions {
73
73
  accuSnap?: AccuSnap;
74
74
  /** If present, supplies the [[Localization]] for this session. Defaults to [ITwinLocalization]($i18n). */
75
75
  localization?: Localization;
76
- /** If present, supplies the authorization information for various frontend APIs */
76
+ /** The AuthorizationClient used to obtain [AccessToken]($bentley)s. */
77
77
  authorizationClient?: AuthorizationClient;
78
78
  /** If present, supplies security options for the frontend. */
79
79
  security?: FrontendSecurityOptions;
@@ -169,7 +169,7 @@ export declare class IModelApp {
169
169
  * @internal
170
170
  */
171
171
  static readonly onAfterStartup: BeEvent<() => void>;
172
- /** Provides authorization information for various frontend APIs */
172
+ /** The AuthorizationClient used to obtain [AccessToken]($bentley)s. */
173
173
  static authorizationClient?: AuthorizationClient;
174
174
  /** The [[ToolRegistry]] for this session. */
175
175
  static readonly tools: ToolRegistry;
@@ -296,7 +296,7 @@ export declare class IModelApp {
296
296
  /** The main event processing loop for Tools and rendering. */
297
297
  private static eventLoop;
298
298
  /** Get the user's access token for this IModelApp, or a blank string if none is available.
299
- * @note accessTokens expire periodically and are automatically refreshed, if possible. Therefore tokens should not be saved, and the value
299
+ * @note Access tokens expire periodically and are automatically refreshed, if possible. Therefore tokens should not be saved, and the value
300
300
  * returned by this method may change over time throughout the course of a session.
301
301
  */
302
302
  static getAccessToken(): Promise<AccessToken>;
@@ -1 +1 @@
1
- {"version":3,"file":"IModelApp.d.ts","sourceRoot":"","sources":["../../src/IModelApp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IModelApp.d.ts","sourceRoot":"","sources":["../../src/IModelApp.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ var _a;
9
9
  /** @public */
10
10
  // eslint-disable-next-line @typescript-eslint/no-var-requires
11
11
  export const ITWINJS_CORE_VERSION = require("../../package.json").version; // require resolves from the lib/{cjs,esm} dir
12
- const COPYRIGHT_NOTICE = 'Copyright © 2017-2022 <a href="https://www.bentley.com" target="_blank" rel="noopener noreferrer">Bentley Systems, Inc.</a>';
12
+ const COPYRIGHT_NOTICE = 'Copyright © 2017-2023 <a href="https://www.bentley.com" target="_blank" rel="noopener noreferrer">Bentley Systems, Inc.</a>';
13
13
  import { UiAdmin } from "@itwin/appui-abstract";
14
14
  import { BeDuration, BeEvent, BentleyStatus, DbResult, dispose, Guid, Logger, ProcessDetector } from "@itwin/core-bentley";
15
15
  import { IModelStatus, RpcConfiguration, } from "@itwin/core-common";
@@ -335,7 +335,7 @@ export class IModelApp {
335
335
  }
336
336
  }
337
337
  /** Get the user's access token for this IModelApp, or a blank string if none is available.
338
- * @note accessTokens expire periodically and are automatically refreshed, if possible. Therefore tokens should not be saved, and the value
338
+ * @note Access tokens expire periodically and are automatically refreshed, if possible. Therefore tokens should not be saved, and the value
339
339
  * returned by this method may change over time throughout the course of a session.
340
340
  */
341
341
  static async getAccessToken() {
@@ -1 +1 @@
1
- {"version":3,"file":"IModelApp.js","sourceRoot":"","sources":["../../src/IModelApp.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 IModelApp\r\n */\r\n\r\n/** @public */\r\n// eslint-disable-next-line @typescript-eslint/no-var-requires\r\nexport const ITWINJS_CORE_VERSION = require(\"../../package.json\").version as string; // require resolves from the lib/{cjs,esm} dir\r\nconst COPYRIGHT_NOTICE = 'Copyright © 2017-2022 <a href=\"https://www.bentley.com\" target=\"_blank\" rel=\"noopener noreferrer\">Bentley Systems, Inc.</a>';\r\n\r\nimport { UiAdmin } from \"@itwin/appui-abstract\";\r\nimport { AccessToken, BeDuration, BeEvent, BentleyStatus, DbResult, dispose, Guid, GuidString, Logger, ProcessDetector } from \"@itwin/core-bentley\";\r\nimport {\r\n AuthorizationClient, IModelStatus, Localization, RealityDataAccess, RpcConfiguration, RpcInterfaceDefinition, RpcRequest, SerializedRpcActivity,\r\n} from \"@itwin/core-common\";\r\nimport { ITwinLocalization } from \"@itwin/core-i18n\";\r\nimport { TelemetryManager } from \"@itwin/core-telemetry\";\r\nimport { queryRenderCompatibility, WebGLRenderCompatibilityInfo } from \"@itwin/webgl-compatibility\";\r\nimport { AccuDraw } from \"./AccuDraw\";\r\nimport { AccuSnap } from \"./AccuSnap\";\r\nimport * as auxCoordState from \"./AuxCoordSys\";\r\nimport * as categorySelectorState from \"./CategorySelectorState\";\r\nimport { ExtensionAdmin } from \"./extension/ExtensionAdmin\";\r\nimport * as displayStyleState from \"./DisplayStyleState\";\r\nimport * as drawingViewState from \"./DrawingViewState\";\r\nimport { ElementLocateManager } from \"./ElementLocateManager\";\r\nimport { EntityState } from \"./EntityState\";\r\nimport { FrontendHubAccess } from \"./FrontendHubAccess\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport * as modelselector from \"./ModelSelectorState\";\r\nimport * as modelState from \"./ModelState\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { QuantityFormatter } from \"./quantity-formatting/QuantityFormatter\";\r\nimport { RenderSystem } from \"./render/RenderSystem\";\r\nimport { System } from \"./render/webgl/System\";\r\nimport * as sheetState from \"./SheetViewState\";\r\nimport * as spatialViewState from \"./SpatialViewState\";\r\nimport { TentativePoint } from \"./TentativePoint\";\r\nimport { RealityDataSourceProviderRegistry } from \"./RealityDataSource\";\r\nimport { MapLayerFormatRegistry, MapLayerOptions, TerrainProviderRegistry, TileAdmin } from \"./tile/internal\";\r\nimport * as accudrawTool from \"./tools/AccuDrawTool\";\r\nimport * as clipViewTool from \"./tools/ClipViewTool\";\r\nimport * as idleTool from \"./tools/IdleTool\";\r\nimport * as measureTool from \"./tools/MeasureTool\";\r\nimport * as selectTool from \"./tools/SelectTool\";\r\nimport { ToolRegistry } from \"./tools/Tool\";\r\nimport { ToolAdmin } from \"./tools/ToolAdmin\";\r\nimport * as viewTool from \"./tools/ViewTool\";\r\nimport { UserPreferencesAccess } from \"./UserPreferences\";\r\nimport { ViewManager } from \"./ViewManager\";\r\nimport * as viewState from \"./ViewState\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-var-requires\r\nrequire(\"./IModeljs-css\");\r\n\r\n// cSpell:ignore noopener noreferrer gprid forin nbsp csrf xsrf\r\n\r\n/** Options that can be supplied with [[IModelAppOptions]] to customize frontend security.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface FrontendSecurityOptions {\r\n /** Configures protection from Cross Site Request Forgery attacks. */\r\n readonly csrfProtection?: {\r\n /** If enabled, IModelApp will extract the CSRF token for the current session from the document's cookies and send it with each request as a header value. */\r\n readonly enabled: boolean;\r\n /** Defaults to XSRF-TOKEN. */\r\n readonly cookieName?: string;\r\n /** Defaults to X-XSRF-TOKEN. */\r\n readonly headerName?: string;\r\n };\r\n}\r\n\r\n/** Options that can be supplied to [[IModelApp.startup]] to customize frontend behavior.\r\n * @public\r\n */\r\nexport interface IModelAppOptions {\r\n /** If present, supplies the [[FrontendHubAccess]] for this session. */\r\n hubAccess?: FrontendHubAccess;\r\n /** If present, supplies the Id of this application. Applications must set this to the Bentley Global Product Registry Id (GPRID) for usage logging. */\r\n applicationId?: string;\r\n /** If present, supplies the version of this application. Must be set for usage logging. */\r\n applicationVersion?: string;\r\n /** If present, supplies the [[UserPreferencesAccess]] for this session.\r\n * @beta\r\n */\r\n userPreferences?: UserPreferencesAccess;\r\n /** If present, supplies the [[ViewManager]] for this session. */\r\n viewManager?: ViewManager;\r\n /** If present, supplies Map Layer Options for this session such as Azure Access Keys\r\n * @beta\r\n */\r\n mapLayerOptions?: MapLayerOptions;\r\n /** If present, supplies the properties with which to initialize the [[TileAdmin]] for this session. */\r\n tileAdmin?: TileAdmin.Props;\r\n /** If present, supplies the [[NotificationManager]] for this session. */\r\n notifications?: NotificationManager;\r\n /** If present, supplies the [[ToolAdmin]] for this session. */\r\n toolAdmin?: ToolAdmin;\r\n /** If present, supplies the [[AccuDraw]] for this session.\r\n * @internal\r\n */\r\n accuDraw?: AccuDraw;\r\n /** If present, supplies the [[AccuSnap]] for this session. */\r\n accuSnap?: AccuSnap;\r\n /** If present, supplies the [[Localization]] for this session. Defaults to [ITwinLocalization]($i18n). */\r\n localization?: Localization;\r\n /** If present, supplies the authorization information for various frontend APIs */\r\n authorizationClient?: AuthorizationClient;\r\n /** If present, supplies security options for the frontend. */\r\n security?: FrontendSecurityOptions;\r\n /** @internal */\r\n sessionId?: GuidString;\r\n /** @internal */\r\n locateManager?: ElementLocateManager;\r\n /** @internal */\r\n tentativePoint?: TentativePoint;\r\n /** @internal */\r\n quantityFormatter?: QuantityFormatter;\r\n /** If present, supplies an implementation of the render system, or options for initializing the default render system. */\r\n renderSys?: RenderSystem | RenderSystem.Options;\r\n /** If present, supplies the [[UiAdmin]] for this session. */\r\n uiAdmin?: UiAdmin;\r\n /** If present, determines whether iModelApp is a NoRenderApp\r\n * @internal\r\n */\r\n noRender?: boolean;\r\n rpcInterfaces?: RpcInterfaceDefinition[];\r\n /** @beta */\r\n realityDataAccess?: RealityDataAccess;\r\n /** If present, overrides where public assets are fetched. The default is to fetch assets relative to the current URL.\r\n * The path should always end with a trailing `/`.\r\n * @beta\r\n */\r\n publicPath?: string;\r\n}\r\n\r\n/** Options for [[IModelApp.makeModalDiv]]\r\n * @internal\r\n */\r\nexport interface ModalOptions {\r\n /** Width for the Modal dialog box. */\r\n width?: number;\r\n /** The dialog should be dismissed if the user clicks anywhere or hits Enter or Escape on the keyboard. */\r\n autoClose?: boolean;\r\n /** Show an 'x' in the upper right corner to close the dialog */\r\n closeBox?: boolean;\r\n /** The parent for the semi transparent *darkening* div. If not present, use `document.body` */\r\n rootDiv?: HTMLElement;\r\n}\r\n\r\n/** Return type for [[IModelApp.makeModalDiv]]\r\n * @internal\r\n */\r\nexport interface ModalReturn {\r\n /** The modal HTMLDivElement created. */\r\n modal: HTMLDivElement;\r\n /** A function that can be set as an event handler to stop the modal dialog. This can be used if `autoClose` or `closeBox` are not enabled. */\r\n stop: (_ev: Event) => void;\r\n}\r\n\r\n/** We hang the IModelApp object off the global `window` object in IModelApp.startup for debugging purposes.\r\n * It's removed in IModelApp.shutdown.\r\n */\r\ninterface IModelAppForDebugger {\r\n iModelAppForDebugger?: typeof IModelApp;\r\n}\r\n\r\n/**\r\n * Global singleton that connects the user interface with the iTwin.js services. There can be only one IModelApp active in a session. All\r\n * members of IModelApp are static, and it serves as a singleton object for gaining access to session information.\r\n *\r\n * Before any interactive operations may be performed by the `@itwin/core-frontend package`, [[IModelApp.startup]] must be called and awaited.\r\n * Applications may customize the frontend behavior of iTwin.js by supplying options to [[IModelApp.startup]].\r\n *\r\n * @public\r\n */\r\nexport class IModelApp {\r\n private static _initialized = false;\r\n private static _accuDraw: AccuDraw;\r\n private static _accuSnap: AccuSnap;\r\n private static _applicationId: string;\r\n private static _applicationVersion: string;\r\n private static _localization: Localization;\r\n private static _locateManager: ElementLocateManager;\r\n private static _notifications: NotificationManager;\r\n private static _quantityFormatter: QuantityFormatter;\r\n private static _renderSystem?: RenderSystem;\r\n private static _userPreferences?: UserPreferencesAccess;\r\n private static _tentativePoint: TentativePoint;\r\n private static _tileAdmin: TileAdmin;\r\n private static _toolAdmin: ToolAdmin;\r\n private static _viewManager: ViewManager;\r\n private static _uiAdmin: UiAdmin;\r\n private static _noRender: boolean;\r\n private static _wantEventLoop = false;\r\n private static _animationRequested = false;\r\n private static _animationInterval: BeDuration | undefined = BeDuration.fromSeconds(1);\r\n private static _animationIntervalId?: number;\r\n private static _securityOptions: FrontendSecurityOptions;\r\n private static _mapLayerFormatRegistry: MapLayerFormatRegistry;\r\n private static _terrainProviderRegistry: TerrainProviderRegistry;\r\n private static _realityDataSourceProviders: RealityDataSourceProviderRegistry;\r\n private static _hubAccess?: FrontendHubAccess;\r\n private static _realityDataAccess?: RealityDataAccess;\r\n private static _publicPath: string;\r\n\r\n // No instances of IModelApp may be created. All members are static and must be on the singleton object IModelApp.\r\n protected constructor() { }\r\n\r\n /** Event raised just before the frontend IModelApp is to be shut down */\r\n public static readonly onBeforeShutdown = new BeEvent<() => void>();\r\n\r\n /** Event raised after IModelApp is finished starting up.\r\n * @internal\r\n */\r\n public static readonly onAfterStartup = new BeEvent<() => void>();\r\n\r\n /** Provides authorization information for various frontend APIs */\r\n public static authorizationClient?: AuthorizationClient;\r\n /** The [[ToolRegistry]] for this session. */\r\n public static readonly tools = new ToolRegistry();\r\n /** A uniqueId for this session */\r\n public static sessionId: GuidString;\r\n /** The [[MapLayerProviderRegistry]] for this session.\r\n * @internal\r\n */\r\n public static get mapLayerFormatRegistry(): MapLayerFormatRegistry { return this._mapLayerFormatRegistry; }\r\n /** The [[TerrainProviderRegistry]] for this session.\r\n * @beta\r\n */\r\n public static get terrainProviderRegistry(): TerrainProviderRegistry { return this._terrainProviderRegistry; }\r\n /** The [[RealityDataSourceProviderRegistry]] for this session.\r\n * @alpha\r\n */\r\n public static get realityDataSourceProviders(): RealityDataSourceProviderRegistry { return this._realityDataSourceProviders; }\r\n /** The [[RenderSystem]] for this session. */\r\n public static get renderSystem(): RenderSystem { return this._renderSystem!; }\r\n /** The [[ViewManager]] for this session. */\r\n public static get viewManager(): ViewManager { return this._viewManager; }\r\n /** The [[NotificationManager]] for this session. */\r\n public static get notifications(): NotificationManager { return this._notifications; }\r\n /** The [[TileAdmin]] for this session. */\r\n public static get tileAdmin(): TileAdmin { return this._tileAdmin; }\r\n /** The [[QuantityFormatter]] for this session. */\r\n public static get quantityFormatter(): QuantityFormatter { return this._quantityFormatter; }\r\n /** The [[ToolAdmin]] for this session. */\r\n public static get toolAdmin(): ToolAdmin { return this._toolAdmin; }\r\n /** The [[AccuDraw]] for this session.\r\n * @internal\r\n */\r\n public static get accuDraw(): AccuDraw { return this._accuDraw; }\r\n /** The [[AccuSnap]] for this session. */\r\n public static get accuSnap(): AccuSnap { return this._accuSnap; }\r\n public static get locateManager(): ElementLocateManager { return this._locateManager; }\r\n /** @internal */\r\n public static get tentativePoint(): TentativePoint { return this._tentativePoint; }\r\n /** The [[Localization]] for this session. */\r\n public static get localization(): Localization { return this._localization; }\r\n /** The [[UserPreferencesAccess]] for this session.\r\n * @beta\r\n */\r\n public static get userPreferences(): UserPreferencesAccess | undefined { return this._userPreferences; }\r\n /** The Id of this application. Applications must set this to the Global Product Registry ID (GPRID) for usage logging. */\r\n public static get applicationId(): string { return this._applicationId; }\r\n /** The version of this application. Must be set for usage logging. */\r\n public static get applicationVersion(): string { return this._applicationVersion; }\r\n /** @internal */\r\n public static get initialized() { return this._initialized; }\r\n\r\n /** Provides access to the IModelHub implementation for this IModelApp.\r\n * @internal\r\n */\r\n public static get hubAccess(): FrontendHubAccess | undefined { return this._hubAccess; }\r\n /** Provides access to the RealityData service implementation for this IModelApp\r\n * @beta\r\n */\r\n public static get realityDataAccess(): RealityDataAccess | undefined { return this._realityDataAccess; }\r\n\r\n /** @internal */\r\n public static get hasRenderSystem() { return this._renderSystem !== undefined && this._renderSystem.isValid; }\r\n /** The [[UiAdmin]] for this session. */\r\n public static get uiAdmin() { return this._uiAdmin; }\r\n /** The requested security options for the frontend. */\r\n public static get securityOptions() { return this._securityOptions; }\r\n /** The root URL for the assets 'public' folder.\r\n * @beta\r\n */\r\n public static get publicPath() { return this._publicPath; }\r\n /** The [[TelemetryManager]] for this session\r\n * @internal\r\n */\r\n public static readonly telemetry: TelemetryManager = new TelemetryManager();\r\n\r\n /** @alpha */\r\n public static readonly extensionAdmin = this._createExtensionAdmin();\r\n\r\n /** Map of classFullName to EntityState class */\r\n private static _entityClasses = new Map<string, typeof EntityState>();\r\n\r\n /** Register all of the subclasses of EntityState from a module.\r\n * @internal\r\n */\r\n public static registerModuleEntities(moduleObj: any) {\r\n for (const thisMember in moduleObj) { // eslint-disable-line guard-for-in\r\n const thisEntityState = moduleObj[thisMember];\r\n if (thisEntityState.prototype instanceof EntityState) {\r\n this.registerEntityState(thisEntityState.classFullName, thisEntityState);\r\n }\r\n }\r\n }\r\n\r\n /** Register an EntityState class by its classFullName\r\n * @internal\r\n */\r\n public static registerEntityState(classFullName: string, classType: typeof EntityState) {\r\n const lowerName = classFullName.toLowerCase();\r\n if (this._entityClasses.has(lowerName)) {\r\n const errMsg = `Class ${classFullName} is already registered. Make sure static schemaName and className members are correct on class ${classType.name}`;\r\n Logger.logError(FrontendLoggerCategory.IModelConnection, errMsg);\r\n throw new Error(errMsg);\r\n }\r\n\r\n this._entityClasses.set(lowerName, classType);\r\n }\r\n\r\n /** @internal */\r\n public static lookupEntityClass(classFullName: string) { return this._entityClasses.get(classFullName.toLowerCase()); }\r\n\r\n /**\r\n * Obtain WebGL rendering compatibility information for the client system. This information describes whether the client meets the\r\n * minimum rendering capabilities. It also describes whether the system lacks any optional capabilities that could improve quality\r\n * and/or performance.\r\n */\r\n public static queryRenderCompatibility(): WebGLRenderCompatibilityInfo {\r\n if (undefined === System.instance || undefined === System.instance.options.useWebGL2)\r\n return queryRenderCompatibility(true, System.createContext);\r\n else\r\n return queryRenderCompatibility(System.instance.options.useWebGL2, System.createContext);\r\n }\r\n\r\n /**\r\n * This method must be called before any other `@itwin/core-frontend` methods are used.\r\n * Somewhere in your startup code, call [[IModelApp.startup]]. E.g.:\r\n * ``` ts\r\n * await IModelApp.startup( {applicationId: myAppId} );\r\n * ```\r\n * @param opts The options for configuring IModelApp\r\n */\r\n public static async startup(opts?: IModelAppOptions): Promise<void> {\r\n if (this._initialized)\r\n return; // we're already initialized, do nothing.\r\n this._initialized = true;\r\n\r\n opts = opts ?? {};\r\n this._securityOptions = opts.security ?? {};\r\n\r\n if (process.env.NODE_ENV === \"development\") {\r\n // Make IModelApp globally accessible for debugging purposes. We'll remove it on shutdown.\r\n (window as IModelAppForDebugger).iModelAppForDebugger = this;\r\n }\r\n\r\n this.sessionId = opts.sessionId ?? Guid.createValue();\r\n this._applicationId = opts.applicationId ?? \"2686\"; // Default to product id of iTwin.js\r\n this._applicationVersion = opts.applicationVersion ?? \"1.0.0\";\r\n this.authorizationClient = opts.authorizationClient;\r\n this._hubAccess = opts.hubAccess;\r\n this._noRender = opts.noRender ?? false;\r\n\r\n this._setupRpcRequestContext();\r\n\r\n this._localization = opts.localization ?? new ITwinLocalization();\r\n const toolsNs = \"CoreTools\";\r\n await this.localization.initialize([\"iModelJs\", toolsNs]);\r\n [\r\n selectTool,\r\n idleTool,\r\n viewTool,\r\n clipViewTool,\r\n measureTool,\r\n accudrawTool,\r\n ].forEach((tool) => this.tools.registerModule(tool, toolsNs));\r\n\r\n this.registerEntityState(EntityState.classFullName, EntityState);\r\n [\r\n modelState,\r\n sheetState,\r\n viewState,\r\n drawingViewState,\r\n spatialViewState,\r\n displayStyleState,\r\n modelselector,\r\n categorySelectorState,\r\n auxCoordState,\r\n ].forEach((module) => this.registerModuleEntities(module));\r\n\r\n this._renderSystem = (opts.renderSys instanceof RenderSystem) ? opts.renderSys : this.createRenderSys(opts.renderSys);\r\n if (opts.userPreferences)\r\n this._userPreferences = opts.userPreferences;\r\n this._viewManager = opts.viewManager ?? new ViewManager();\r\n this._tileAdmin = await TileAdmin.create(opts.tileAdmin);\r\n this._notifications = opts.notifications ?? new NotificationManager();\r\n this._toolAdmin = opts.toolAdmin ?? new ToolAdmin();\r\n this._accuDraw = opts.accuDraw ?? new AccuDraw();\r\n this._accuSnap = opts.accuSnap ?? new AccuSnap();\r\n this._locateManager = opts.locateManager ?? new ElementLocateManager();\r\n this._tentativePoint = opts.tentativePoint ?? new TentativePoint();\r\n this._quantityFormatter = opts.quantityFormatter ?? new QuantityFormatter();\r\n this._uiAdmin = opts.uiAdmin ?? new UiAdmin();\r\n this._mapLayerFormatRegistry = new MapLayerFormatRegistry(opts.mapLayerOptions);\r\n this._terrainProviderRegistry = new TerrainProviderRegistry();\r\n this._realityDataSourceProviders = new RealityDataSourceProviderRegistry();\r\n this._realityDataAccess = opts.realityDataAccess;\r\n this._publicPath = opts.publicPath ?? \"\";\r\n\r\n [\r\n this.renderSystem,\r\n this.viewManager,\r\n this.toolAdmin,\r\n this.accuDraw,\r\n this.accuSnap,\r\n this.locateManager,\r\n this.tentativePoint,\r\n this.uiAdmin,\r\n ].forEach((sys) => sys.onInitialized());\r\n\r\n await this.quantityFormatter.onInitialized();\r\n this.onAfterStartup.raiseEvent();\r\n }\r\n\r\n /** Must be called before the application exits to release any held resources. */\r\n public static async shutdown() {\r\n if (!this._initialized)\r\n return;\r\n\r\n // notify listeners that this IModelApp is about to be shut down.\r\n this.onBeforeShutdown.raiseEvent();\r\n this.onBeforeShutdown.clear();\r\n\r\n if (process.env.NODE_ENV === \"development\") {\r\n (window as IModelAppForDebugger).iModelAppForDebugger = undefined;\r\n }\r\n\r\n this._wantEventLoop = false;\r\n window.removeEventListener(\"resize\", IModelApp.requestNextAnimation);\r\n this.clearIntervalAnimation();\r\n [this.toolAdmin, this.viewManager, this.tileAdmin].forEach((sys) => sys.onShutDown());\r\n this.tools.shutdown();\r\n this._renderSystem = dispose(this._renderSystem);\r\n this._entityClasses.clear();\r\n this.authorizationClient = undefined;\r\n this._initialized = false;\r\n this.onAfterStartup.clear();\r\n }\r\n\r\n /** Controls how frequently the application polls for changes that may require a new animation frame to be requested.\r\n * Such changes include resizing a Viewport or changing the device pixel ratio by zooming in or out in the browser.\r\n * The default interval is 1 second. It may be desirable to override the default for specific apps and/or devices.\r\n * - Increasing the interval can conserve battery life on battery-powered devices at the expense of slower response to resize events.\r\n * - An application that only displays a single Viewport whose dimensions only change when the dimensions of the application window change, and which does not support changing application zoom level, could disable the interval altogether.\r\n * @param interval The interval at which to poll for changes. If undefined (or negative), the application will never poll. If zero, the application will poll as frequently as possible.\r\n * @beta\r\n */\r\n public static get animationInterval(): BeDuration | undefined { return IModelApp._animationInterval; }\r\n public static set animationInterval(interval: BeDuration | undefined) {\r\n if (undefined !== interval && interval.isTowardsPast)\r\n interval = undefined;\r\n\r\n if (interval !== IModelApp._animationInterval) {\r\n IModelApp._animationInterval = interval;\r\n if (IModelApp._wantEventLoop)\r\n IModelApp.requestIntervalAnimation();\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static requestNextAnimation() {\r\n // Only want to call requestAnimationFrame if it is defined. Need to check whether current iModelApp is a NoRenderApp.\r\n if (IModelApp._noRender)\r\n return;\r\n\r\n if (!IModelApp._animationRequested) {\r\n IModelApp._animationRequested = true;\r\n requestAnimationFrame(IModelApp.eventLoop);\r\n }\r\n }\r\n\r\n /** @internal */\r\n private static clearIntervalAnimation(): void {\r\n if (undefined !== IModelApp._animationIntervalId) {\r\n window.clearInterval(IModelApp._animationIntervalId);\r\n IModelApp._animationIntervalId = undefined;\r\n }\r\n }\r\n\r\n /** @internal */\r\n private static requestIntervalAnimation(): void {\r\n IModelApp.clearIntervalAnimation();\r\n\r\n if (undefined !== IModelApp.animationInterval)\r\n IModelApp._animationIntervalId = window.setInterval(() => {\r\n IModelApp.requestNextAnimation();\r\n }, IModelApp.animationInterval.milliseconds);\r\n }\r\n\r\n /** @internal */\r\n public static startEventLoop() {\r\n if (!IModelApp._wantEventLoop) {\r\n IModelApp._wantEventLoop = true;\r\n window.addEventListener(\"resize\", IModelApp.requestNextAnimation);\r\n IModelApp.requestIntervalAnimation();\r\n IModelApp.requestNextAnimation();\r\n }\r\n }\r\n\r\n /** Strictly for tests. @internal */\r\n public static stopEventLoop() {\r\n this._wantEventLoop = false;\r\n }\r\n\r\n /** The main event processing loop for Tools and rendering. */\r\n private static eventLoop() {\r\n IModelApp._animationRequested = false;\r\n if (!IModelApp._wantEventLoop) // flag turned on at startup\r\n return;\r\n\r\n try {\r\n IModelApp.toolAdmin.processEvent(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n IModelApp.viewManager.renderLoop();\r\n IModelApp.tileAdmin.process();\r\n } catch (exception) {\r\n ToolAdmin.exceptionHandler(exception); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n\r\n IModelApp._wantEventLoop = false;\r\n IModelApp._animationRequested = true; // unrecoverable after exception, don't request any further frames.\r\n window.removeEventListener(\"resize\", IModelApp.requestNextAnimation);\r\n }\r\n }\r\n\r\n /** Get the user's access token for this IModelApp, or a blank string if none is available.\r\n * @note accessTokens expire periodically and are automatically refreshed, if possible. Therefore tokens should not be saved, and the value\r\n * returned by this method may change over time throughout the course of a session.\r\n */\r\n public static async getAccessToken(): Promise<AccessToken> {\r\n try {\r\n return (await this.authorizationClient?.getAccessToken()) ?? \"\";\r\n } catch (e) {\r\n return \"\";\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static createRenderSys(opts?: RenderSystem.Options): RenderSystem { return System.create(opts); }\r\n\r\n private static _setupRpcRequestContext() {\r\n RpcConfiguration.requestContext.getId = (_request: RpcRequest): string => {\r\n return Guid.createValue();\r\n };\r\n\r\n RpcConfiguration.requestContext.serialize = async (_request: RpcRequest): Promise<SerializedRpcActivity> => {\r\n const id = _request.id;\r\n const serialized: SerializedRpcActivity = {\r\n id,\r\n applicationId: this.applicationId,\r\n applicationVersion: this.applicationVersion,\r\n sessionId: this.sessionId,\r\n authorization: ProcessDetector.isMobileAppFrontend ? \"\" : await this.getAccessToken(),\r\n };\r\n\r\n const csrf = IModelApp.securityOptions.csrfProtection;\r\n if (csrf && csrf.enabled) {\r\n const cookieName = csrf.cookieName || \"XSRF-TOKEN\";\r\n const cookieValue = document.cookie.split(\"; \").find((r) => r.startsWith(`${cookieName}=`));\r\n\r\n if (cookieValue) {\r\n const headerName = csrf.headerName || \"X-XSRF-TOKEN\";\r\n const headerValue = cookieValue.split(\"=\")[1];\r\n serialized.csrfToken = { headerName, headerValue };\r\n }\r\n }\r\n\r\n return serialized;\r\n };\r\n }\r\n\r\n /** Shortcut for creating an HTMLElement with optional parent, className, id, innerHTML, innerText\r\n * @internal\r\n */\r\n public static makeHTMLElement<K extends keyof HTMLElementTagNameMap>(type: K, opt?: {\r\n /** The parent for the new HTMLElement */\r\n parent?: HTMLElement;\r\n /** The className for the new HTMLElement */\r\n className?: string;\r\n /** The Id for the new HTMLElement */\r\n id?: string;\r\n /** innerHTML for the new HTMLElement */\r\n innerHTML?: string;\r\n /** innerText for the new HTMLElement */\r\n innerText?: string;\r\n }) {\r\n const el = document.createElement(type);\r\n if (undefined !== opt) {\r\n if (undefined !== opt.className)\r\n el.className = opt.className;\r\n if (undefined !== opt.id)\r\n el.id = opt.id;\r\n if (undefined !== opt.innerHTML)\r\n el.innerHTML = opt.innerHTML;\r\n if (undefined !== opt.innerText)\r\n el.innerText = opt.innerText;\r\n if (undefined !== opt.parent)\r\n opt.parent.appendChild(el);\r\n }\r\n return el;\r\n }\r\n\r\n /** Make a modal dialog on top of the root of the application. The returned HTMLDivElement will be placed topmost, all other application\r\n * windows will be covered with a semi-transparent background that intercepts all key/mouse/touch events until the modal is dismissed.\r\n * @param options The options that describe how the modal should work.\r\n * @internal\r\n */\r\n public static makeModalDiv(options: ModalOptions): ModalReturn {\r\n const root = options.rootDiv ? options.rootDiv : document.body;\r\n // create the overlay div to \"black out\" the application to indicate everything is inactive until the modal has been dismissed.\r\n const overlay = IModelApp.makeHTMLElement(\"div\", { parent: root, className: \"imodeljs-modal-overlay\" });\r\n overlay.tabIndex = -1; // so we can catch keystroke events\r\n\r\n // function to remove modal dialog\r\n const stop = (ev: Event) => {\r\n root.removeChild(overlay);\r\n ev.stopPropagation();\r\n };\r\n\r\n if (options.autoClose) {\r\n overlay.onclick = overlay.oncontextmenu = stop;\r\n overlay.onkeydown = overlay.onkeyup = (ev: KeyboardEvent) => { // ignore all keystrokes other than enter and escape\r\n switch (ev.key) {\r\n case \"Enter\":\r\n case \"Escape\":\r\n stop(ev);\r\n return;\r\n }\r\n ev.stopPropagation();\r\n };\r\n overlay.focus();\r\n }\r\n\r\n const modal = IModelApp.makeHTMLElement(\"div\", { parent: overlay, className: \"imodeljs-modal\" });\r\n if (undefined !== options.width) {\r\n modal.style.width = `${options.width}px`;\r\n // allow the dialog to be smaller than the width\r\n modal.style.maxWidth = `min(100% - (2 * var(--width-border)), ${options.width}px)`;\r\n }\r\n if (options.closeBox) {\r\n const close = IModelApp.makeHTMLElement(\"p\", { parent: modal, className: \"imodeljs-modal-close\" });\r\n close.innerText = \"\\u00d7\"; // unicode \"times\" symbol\r\n close.onclick = stop;\r\n }\r\n\r\n return { modal, stop };\r\n }\r\n\r\n /** Applications may implement this method to supply a Logo Card.\r\n * @beta\r\n */\r\n public static applicationLogoCard?: () => HTMLTableRowElement;\r\n\r\n /** Make a new Logo Card. Call this method from your implementation of [[IModelApp.applicationLogoCard]]\r\n * @param opts Options for Logo Card\r\n * @beta\r\n */\r\n public static makeLogoCard(\r\n opts: {\r\n /** The heading to be put at the top of this logo card inside an <h2>. May include HTML. */\r\n heading: string | HTMLElement;\r\n /** The URL or HTMLImageElement for the icon on this logo card. */\r\n iconSrc?: string | HTMLImageElement;\r\n /** The width of the icon, if `iconSrc` is a string. Default is 64. */\r\n iconWidth?: number;\r\n /** A *notice* string to be shown on the logo card. May include HTML. */\r\n notice?: string | HTMLElement;\r\n }): HTMLTableRowElement {\r\n const card = IModelApp.makeHTMLElement(\"tr\");\r\n const iconCell = IModelApp.makeHTMLElement(\"td\", { parent: card, className: \"logo-card-logo\" });\r\n if (undefined !== opts.iconSrc) {\r\n if (typeof opts.iconSrc === \"string\") {\r\n const logo = IModelApp.makeHTMLElement(\"img\");\r\n logo.src = opts.iconSrc;\r\n logo.width = opts.iconWidth ? opts.iconWidth : 64;\r\n opts.iconSrc = logo;\r\n }\r\n iconCell.appendChild(opts.iconSrc);\r\n }\r\n const noticeCell = IModelApp.makeHTMLElement(\"td\", { parent: card, className: \"logo-card-message\" });\r\n if (undefined !== opts.heading) {\r\n if (typeof opts.heading === \"string\")\r\n IModelApp.makeHTMLElement(\"h2\", { parent: noticeCell, innerHTML: opts.heading, className: \"logo-card-header\" });\r\n else\r\n noticeCell.appendChild(opts.heading);\r\n }\r\n if (undefined !== opts.notice) {\r\n if (typeof opts.notice === \"string\")\r\n IModelApp.makeHTMLElement(\"p\", { parent: noticeCell, innerHTML: opts.notice, className: \"logo-cards\" });\r\n else\r\n noticeCell.appendChild(opts.notice);\r\n }\r\n return card;\r\n }\r\n\r\n /** Make the logo card for the library itself. This card gets placed at the top of the stack.\r\n * @internal\r\n */\r\n public static makeIModelJsLogoCard() {\r\n return this.makeLogoCard({\r\n iconSrc: `${this.publicPath}images/about-imodeljs.svg`,\r\n heading: `<span style=\"font-weight:normal\">${this.localization.getLocalizedString(\"iModelJs:Notices.PoweredBy\")}</span>&nbsp;iTwin.js`,\r\n notice: `${ITWINJS_CORE_VERSION}<br>${COPYRIGHT_NOTICE}`,\r\n });\r\n }\r\n\r\n /** Format the tooltip strings returned by [[IModelConnection.getToolTipMessage]].\r\n * @alpha\r\n */\r\n public static formatElementToolTip(msg: string[]): HTMLElement {\r\n let out = \"\";\r\n msg.forEach((line) => out += `${IModelApp.localization?.getLocalizedKeys(line)}<br>`);\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = out;\r\n return div;\r\n }\r\n\r\n /** Localize an error status\r\n * @param status one of the status values from [BentleyStatus]($core-bentley), [IModelStatus]($core-bentley) or [DbResult]($core-bentley)\r\n * @returns a localized error message\r\n * @beta\r\n */\r\n public static translateStatus(status: number) {\r\n let key: { scope: string, val: string, status?: string };\r\n if (typeof status !== \"number\") {\r\n key = { scope: \"Errors\", val: \"IllegalValue\" };\r\n } else {\r\n key = { scope: \"BentleyStatus\", val: BentleyStatus[status] };\r\n if (!key.val)\r\n key = { scope: \"IModelStatus\", val: IModelStatus[status] };\r\n if (!key.val)\r\n key = { scope: \"DbResult\", val: DbResult[status] };\r\n if (!key.val)\r\n key = { scope: \"Errors\", val: \"Status\", status: status.toString() };\r\n }\r\n\r\n return this.localization.getLocalizedString(`iModelJs:${key.scope}.${key.val}`, key);\r\n }\r\n\r\n /**\r\n * Creates an instance of the ExtensionAdmin\r\n * and registers an event to execute after startup is complete\r\n * @returns an instance of ExtensionAdmin\r\n */\r\n private static _createExtensionAdmin(): ExtensionAdmin {\r\n const extensionAdmin = new ExtensionAdmin();\r\n IModelApp.onAfterStartup.addListener(extensionAdmin.onStartup);\r\n return extensionAdmin;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"IModelApp.js","sourceRoot":"","sources":["../../src/IModelApp.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 IModelApp\r\n */\r\n\r\n/** @public */\r\n// eslint-disable-next-line @typescript-eslint/no-var-requires\r\nexport const ITWINJS_CORE_VERSION = require(\"../../package.json\").version as string; // require resolves from the lib/{cjs,esm} dir\r\nconst COPYRIGHT_NOTICE = 'Copyright © 2017-2023 <a href=\"https://www.bentley.com\" target=\"_blank\" rel=\"noopener noreferrer\">Bentley Systems, Inc.</a>';\r\n\r\nimport { UiAdmin } from \"@itwin/appui-abstract\";\r\nimport { AccessToken, BeDuration, BeEvent, BentleyStatus, DbResult, dispose, Guid, GuidString, Logger, ProcessDetector } from \"@itwin/core-bentley\";\r\nimport {\r\n AuthorizationClient, IModelStatus, Localization, RealityDataAccess, RpcConfiguration, RpcInterfaceDefinition, RpcRequest, SerializedRpcActivity,\r\n} from \"@itwin/core-common\";\r\nimport { ITwinLocalization } from \"@itwin/core-i18n\";\r\nimport { TelemetryManager } from \"@itwin/core-telemetry\";\r\nimport { queryRenderCompatibility, WebGLRenderCompatibilityInfo } from \"@itwin/webgl-compatibility\";\r\nimport { AccuDraw } from \"./AccuDraw\";\r\nimport { AccuSnap } from \"./AccuSnap\";\r\nimport * as auxCoordState from \"./AuxCoordSys\";\r\nimport * as categorySelectorState from \"./CategorySelectorState\";\r\nimport { ExtensionAdmin } from \"./extension/ExtensionAdmin\";\r\nimport * as displayStyleState from \"./DisplayStyleState\";\r\nimport * as drawingViewState from \"./DrawingViewState\";\r\nimport { ElementLocateManager } from \"./ElementLocateManager\";\r\nimport { EntityState } from \"./EntityState\";\r\nimport { FrontendHubAccess } from \"./FrontendHubAccess\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport * as modelselector from \"./ModelSelectorState\";\r\nimport * as modelState from \"./ModelState\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { QuantityFormatter } from \"./quantity-formatting/QuantityFormatter\";\r\nimport { RenderSystem } from \"./render/RenderSystem\";\r\nimport { System } from \"./render/webgl/System\";\r\nimport * as sheetState from \"./SheetViewState\";\r\nimport * as spatialViewState from \"./SpatialViewState\";\r\nimport { TentativePoint } from \"./TentativePoint\";\r\nimport { RealityDataSourceProviderRegistry } from \"./RealityDataSource\";\r\nimport { MapLayerFormatRegistry, MapLayerOptions, TerrainProviderRegistry, TileAdmin } from \"./tile/internal\";\r\nimport * as accudrawTool from \"./tools/AccuDrawTool\";\r\nimport * as clipViewTool from \"./tools/ClipViewTool\";\r\nimport * as idleTool from \"./tools/IdleTool\";\r\nimport * as measureTool from \"./tools/MeasureTool\";\r\nimport * as selectTool from \"./tools/SelectTool\";\r\nimport { ToolRegistry } from \"./tools/Tool\";\r\nimport { ToolAdmin } from \"./tools/ToolAdmin\";\r\nimport * as viewTool from \"./tools/ViewTool\";\r\nimport { UserPreferencesAccess } from \"./UserPreferences\";\r\nimport { ViewManager } from \"./ViewManager\";\r\nimport * as viewState from \"./ViewState\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-var-requires\r\nrequire(\"./IModeljs-css\");\r\n\r\n// cSpell:ignore noopener noreferrer gprid forin nbsp csrf xsrf\r\n\r\n/** Options that can be supplied with [[IModelAppOptions]] to customize frontend security.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface FrontendSecurityOptions {\r\n /** Configures protection from Cross Site Request Forgery attacks. */\r\n readonly csrfProtection?: {\r\n /** If enabled, IModelApp will extract the CSRF token for the current session from the document's cookies and send it with each request as a header value. */\r\n readonly enabled: boolean;\r\n /** Defaults to XSRF-TOKEN. */\r\n readonly cookieName?: string;\r\n /** Defaults to X-XSRF-TOKEN. */\r\n readonly headerName?: string;\r\n };\r\n}\r\n\r\n/** Options that can be supplied to [[IModelApp.startup]] to customize frontend behavior.\r\n * @public\r\n */\r\nexport interface IModelAppOptions {\r\n /** If present, supplies the [[FrontendHubAccess]] for this session. */\r\n hubAccess?: FrontendHubAccess;\r\n /** If present, supplies the Id of this application. Applications must set this to the Bentley Global Product Registry Id (GPRID) for usage logging. */\r\n applicationId?: string;\r\n /** If present, supplies the version of this application. Must be set for usage logging. */\r\n applicationVersion?: string;\r\n /** If present, supplies the [[UserPreferencesAccess]] for this session.\r\n * @beta\r\n */\r\n userPreferences?: UserPreferencesAccess;\r\n /** If present, supplies the [[ViewManager]] for this session. */\r\n viewManager?: ViewManager;\r\n /** If present, supplies Map Layer Options for this session such as Azure Access Keys\r\n * @beta\r\n */\r\n mapLayerOptions?: MapLayerOptions;\r\n /** If present, supplies the properties with which to initialize the [[TileAdmin]] for this session. */\r\n tileAdmin?: TileAdmin.Props;\r\n /** If present, supplies the [[NotificationManager]] for this session. */\r\n notifications?: NotificationManager;\r\n /** If present, supplies the [[ToolAdmin]] for this session. */\r\n toolAdmin?: ToolAdmin;\r\n /** If present, supplies the [[AccuDraw]] for this session.\r\n * @internal\r\n */\r\n accuDraw?: AccuDraw;\r\n /** If present, supplies the [[AccuSnap]] for this session. */\r\n accuSnap?: AccuSnap;\r\n /** If present, supplies the [[Localization]] for this session. Defaults to [ITwinLocalization]($i18n). */\r\n localization?: Localization;\r\n /** The AuthorizationClient used to obtain [AccessToken]($bentley)s. */\r\n authorizationClient?: AuthorizationClient;\r\n /** If present, supplies security options for the frontend. */\r\n security?: FrontendSecurityOptions;\r\n /** @internal */\r\n sessionId?: GuidString;\r\n /** @internal */\r\n locateManager?: ElementLocateManager;\r\n /** @internal */\r\n tentativePoint?: TentativePoint;\r\n /** @internal */\r\n quantityFormatter?: QuantityFormatter;\r\n /** If present, supplies an implementation of the render system, or options for initializing the default render system. */\r\n renderSys?: RenderSystem | RenderSystem.Options;\r\n /** If present, supplies the [[UiAdmin]] for this session. */\r\n uiAdmin?: UiAdmin;\r\n /** If present, determines whether iModelApp is a NoRenderApp\r\n * @internal\r\n */\r\n noRender?: boolean;\r\n rpcInterfaces?: RpcInterfaceDefinition[];\r\n /** @beta */\r\n realityDataAccess?: RealityDataAccess;\r\n /** If present, overrides where public assets are fetched. The default is to fetch assets relative to the current URL.\r\n * The path should always end with a trailing `/`.\r\n * @beta\r\n */\r\n publicPath?: string;\r\n}\r\n\r\n/** Options for [[IModelApp.makeModalDiv]]\r\n * @internal\r\n */\r\nexport interface ModalOptions {\r\n /** Width for the Modal dialog box. */\r\n width?: number;\r\n /** The dialog should be dismissed if the user clicks anywhere or hits Enter or Escape on the keyboard. */\r\n autoClose?: boolean;\r\n /** Show an 'x' in the upper right corner to close the dialog */\r\n closeBox?: boolean;\r\n /** The parent for the semi transparent *darkening* div. If not present, use `document.body` */\r\n rootDiv?: HTMLElement;\r\n}\r\n\r\n/** Return type for [[IModelApp.makeModalDiv]]\r\n * @internal\r\n */\r\nexport interface ModalReturn {\r\n /** The modal HTMLDivElement created. */\r\n modal: HTMLDivElement;\r\n /** A function that can be set as an event handler to stop the modal dialog. This can be used if `autoClose` or `closeBox` are not enabled. */\r\n stop: (_ev: Event) => void;\r\n}\r\n\r\n/** We hang the IModelApp object off the global `window` object in IModelApp.startup for debugging purposes.\r\n * It's removed in IModelApp.shutdown.\r\n */\r\ninterface IModelAppForDebugger {\r\n iModelAppForDebugger?: typeof IModelApp;\r\n}\r\n\r\n/**\r\n * Global singleton that connects the user interface with the iTwin.js services. There can be only one IModelApp active in a session. All\r\n * members of IModelApp are static, and it serves as a singleton object for gaining access to session information.\r\n *\r\n * Before any interactive operations may be performed by the `@itwin/core-frontend package`, [[IModelApp.startup]] must be called and awaited.\r\n * Applications may customize the frontend behavior of iTwin.js by supplying options to [[IModelApp.startup]].\r\n *\r\n * @public\r\n */\r\nexport class IModelApp {\r\n private static _initialized = false;\r\n private static _accuDraw: AccuDraw;\r\n private static _accuSnap: AccuSnap;\r\n private static _applicationId: string;\r\n private static _applicationVersion: string;\r\n private static _localization: Localization;\r\n private static _locateManager: ElementLocateManager;\r\n private static _notifications: NotificationManager;\r\n private static _quantityFormatter: QuantityFormatter;\r\n private static _renderSystem?: RenderSystem;\r\n private static _userPreferences?: UserPreferencesAccess;\r\n private static _tentativePoint: TentativePoint;\r\n private static _tileAdmin: TileAdmin;\r\n private static _toolAdmin: ToolAdmin;\r\n private static _viewManager: ViewManager;\r\n private static _uiAdmin: UiAdmin;\r\n private static _noRender: boolean;\r\n private static _wantEventLoop = false;\r\n private static _animationRequested = false;\r\n private static _animationInterval: BeDuration | undefined = BeDuration.fromSeconds(1);\r\n private static _animationIntervalId?: number;\r\n private static _securityOptions: FrontendSecurityOptions;\r\n private static _mapLayerFormatRegistry: MapLayerFormatRegistry;\r\n private static _terrainProviderRegistry: TerrainProviderRegistry;\r\n private static _realityDataSourceProviders: RealityDataSourceProviderRegistry;\r\n private static _hubAccess?: FrontendHubAccess;\r\n private static _realityDataAccess?: RealityDataAccess;\r\n private static _publicPath: string;\r\n\r\n // No instances of IModelApp may be created. All members are static and must be on the singleton object IModelApp.\r\n protected constructor() { }\r\n\r\n /** Event raised just before the frontend IModelApp is to be shut down */\r\n public static readonly onBeforeShutdown = new BeEvent<() => void>();\r\n\r\n /** Event raised after IModelApp is finished starting up.\r\n * @internal\r\n */\r\n public static readonly onAfterStartup = new BeEvent<() => void>();\r\n\r\n /** The AuthorizationClient used to obtain [AccessToken]($bentley)s. */\r\n public static authorizationClient?: AuthorizationClient;\r\n /** The [[ToolRegistry]] for this session. */\r\n public static readonly tools = new ToolRegistry();\r\n /** A uniqueId for this session */\r\n public static sessionId: GuidString;\r\n /** The [[MapLayerProviderRegistry]] for this session.\r\n * @internal\r\n */\r\n public static get mapLayerFormatRegistry(): MapLayerFormatRegistry { return this._mapLayerFormatRegistry; }\r\n /** The [[TerrainProviderRegistry]] for this session.\r\n * @beta\r\n */\r\n public static get terrainProviderRegistry(): TerrainProviderRegistry { return this._terrainProviderRegistry; }\r\n /** The [[RealityDataSourceProviderRegistry]] for this session.\r\n * @alpha\r\n */\r\n public static get realityDataSourceProviders(): RealityDataSourceProviderRegistry { return this._realityDataSourceProviders; }\r\n /** The [[RenderSystem]] for this session. */\r\n public static get renderSystem(): RenderSystem { return this._renderSystem!; }\r\n /** The [[ViewManager]] for this session. */\r\n public static get viewManager(): ViewManager { return this._viewManager; }\r\n /** The [[NotificationManager]] for this session. */\r\n public static get notifications(): NotificationManager { return this._notifications; }\r\n /** The [[TileAdmin]] for this session. */\r\n public static get tileAdmin(): TileAdmin { return this._tileAdmin; }\r\n /** The [[QuantityFormatter]] for this session. */\r\n public static get quantityFormatter(): QuantityFormatter { return this._quantityFormatter; }\r\n /** The [[ToolAdmin]] for this session. */\r\n public static get toolAdmin(): ToolAdmin { return this._toolAdmin; }\r\n /** The [[AccuDraw]] for this session.\r\n * @internal\r\n */\r\n public static get accuDraw(): AccuDraw { return this._accuDraw; }\r\n /** The [[AccuSnap]] for this session. */\r\n public static get accuSnap(): AccuSnap { return this._accuSnap; }\r\n public static get locateManager(): ElementLocateManager { return this._locateManager; }\r\n /** @internal */\r\n public static get tentativePoint(): TentativePoint { return this._tentativePoint; }\r\n /** The [[Localization]] for this session. */\r\n public static get localization(): Localization { return this._localization; }\r\n /** The [[UserPreferencesAccess]] for this session.\r\n * @beta\r\n */\r\n public static get userPreferences(): UserPreferencesAccess | undefined { return this._userPreferences; }\r\n /** The Id of this application. Applications must set this to the Global Product Registry ID (GPRID) for usage logging. */\r\n public static get applicationId(): string { return this._applicationId; }\r\n /** The version of this application. Must be set for usage logging. */\r\n public static get applicationVersion(): string { return this._applicationVersion; }\r\n /** @internal */\r\n public static get initialized() { return this._initialized; }\r\n\r\n /** Provides access to the IModelHub implementation for this IModelApp.\r\n * @internal\r\n */\r\n public static get hubAccess(): FrontendHubAccess | undefined { return this._hubAccess; }\r\n /** Provides access to the RealityData service implementation for this IModelApp\r\n * @beta\r\n */\r\n public static get realityDataAccess(): RealityDataAccess | undefined { return this._realityDataAccess; }\r\n\r\n /** @internal */\r\n public static get hasRenderSystem() { return this._renderSystem !== undefined && this._renderSystem.isValid; }\r\n /** The [[UiAdmin]] for this session. */\r\n public static get uiAdmin() { return this._uiAdmin; }\r\n /** The requested security options for the frontend. */\r\n public static get securityOptions() { return this._securityOptions; }\r\n /** The root URL for the assets 'public' folder.\r\n * @beta\r\n */\r\n public static get publicPath() { return this._publicPath; }\r\n /** The [[TelemetryManager]] for this session\r\n * @internal\r\n */\r\n public static readonly telemetry: TelemetryManager = new TelemetryManager();\r\n\r\n /** @alpha */\r\n public static readonly extensionAdmin = this._createExtensionAdmin();\r\n\r\n /** Map of classFullName to EntityState class */\r\n private static _entityClasses = new Map<string, typeof EntityState>();\r\n\r\n /** Register all of the subclasses of EntityState from a module.\r\n * @internal\r\n */\r\n public static registerModuleEntities(moduleObj: any) {\r\n for (const thisMember in moduleObj) { // eslint-disable-line guard-for-in\r\n const thisEntityState = moduleObj[thisMember];\r\n if (thisEntityState.prototype instanceof EntityState) {\r\n this.registerEntityState(thisEntityState.classFullName, thisEntityState);\r\n }\r\n }\r\n }\r\n\r\n /** Register an EntityState class by its classFullName\r\n * @internal\r\n */\r\n public static registerEntityState(classFullName: string, classType: typeof EntityState) {\r\n const lowerName = classFullName.toLowerCase();\r\n if (this._entityClasses.has(lowerName)) {\r\n const errMsg = `Class ${classFullName} is already registered. Make sure static schemaName and className members are correct on class ${classType.name}`;\r\n Logger.logError(FrontendLoggerCategory.IModelConnection, errMsg);\r\n throw new Error(errMsg);\r\n }\r\n\r\n this._entityClasses.set(lowerName, classType);\r\n }\r\n\r\n /** @internal */\r\n public static lookupEntityClass(classFullName: string) { return this._entityClasses.get(classFullName.toLowerCase()); }\r\n\r\n /**\r\n * Obtain WebGL rendering compatibility information for the client system. This information describes whether the client meets the\r\n * minimum rendering capabilities. It also describes whether the system lacks any optional capabilities that could improve quality\r\n * and/or performance.\r\n */\r\n public static queryRenderCompatibility(): WebGLRenderCompatibilityInfo {\r\n if (undefined === System.instance || undefined === System.instance.options.useWebGL2)\r\n return queryRenderCompatibility(true, System.createContext);\r\n else\r\n return queryRenderCompatibility(System.instance.options.useWebGL2, System.createContext);\r\n }\r\n\r\n /**\r\n * This method must be called before any other `@itwin/core-frontend` methods are used.\r\n * Somewhere in your startup code, call [[IModelApp.startup]]. E.g.:\r\n * ``` ts\r\n * await IModelApp.startup( {applicationId: myAppId} );\r\n * ```\r\n * @param opts The options for configuring IModelApp\r\n */\r\n public static async startup(opts?: IModelAppOptions): Promise<void> {\r\n if (this._initialized)\r\n return; // we're already initialized, do nothing.\r\n this._initialized = true;\r\n\r\n opts = opts ?? {};\r\n this._securityOptions = opts.security ?? {};\r\n\r\n if (process.env.NODE_ENV === \"development\") {\r\n // Make IModelApp globally accessible for debugging purposes. We'll remove it on shutdown.\r\n (window as IModelAppForDebugger).iModelAppForDebugger = this;\r\n }\r\n\r\n this.sessionId = opts.sessionId ?? Guid.createValue();\r\n this._applicationId = opts.applicationId ?? \"2686\"; // Default to product id of iTwin.js\r\n this._applicationVersion = opts.applicationVersion ?? \"1.0.0\";\r\n this.authorizationClient = opts.authorizationClient;\r\n this._hubAccess = opts.hubAccess;\r\n this._noRender = opts.noRender ?? false;\r\n\r\n this._setupRpcRequestContext();\r\n\r\n this._localization = opts.localization ?? new ITwinLocalization();\r\n const toolsNs = \"CoreTools\";\r\n await this.localization.initialize([\"iModelJs\", toolsNs]);\r\n [\r\n selectTool,\r\n idleTool,\r\n viewTool,\r\n clipViewTool,\r\n measureTool,\r\n accudrawTool,\r\n ].forEach((tool) => this.tools.registerModule(tool, toolsNs));\r\n\r\n this.registerEntityState(EntityState.classFullName, EntityState);\r\n [\r\n modelState,\r\n sheetState,\r\n viewState,\r\n drawingViewState,\r\n spatialViewState,\r\n displayStyleState,\r\n modelselector,\r\n categorySelectorState,\r\n auxCoordState,\r\n ].forEach((module) => this.registerModuleEntities(module));\r\n\r\n this._renderSystem = (opts.renderSys instanceof RenderSystem) ? opts.renderSys : this.createRenderSys(opts.renderSys);\r\n if (opts.userPreferences)\r\n this._userPreferences = opts.userPreferences;\r\n this._viewManager = opts.viewManager ?? new ViewManager();\r\n this._tileAdmin = await TileAdmin.create(opts.tileAdmin);\r\n this._notifications = opts.notifications ?? new NotificationManager();\r\n this._toolAdmin = opts.toolAdmin ?? new ToolAdmin();\r\n this._accuDraw = opts.accuDraw ?? new AccuDraw();\r\n this._accuSnap = opts.accuSnap ?? new AccuSnap();\r\n this._locateManager = opts.locateManager ?? new ElementLocateManager();\r\n this._tentativePoint = opts.tentativePoint ?? new TentativePoint();\r\n this._quantityFormatter = opts.quantityFormatter ?? new QuantityFormatter();\r\n this._uiAdmin = opts.uiAdmin ?? new UiAdmin();\r\n this._mapLayerFormatRegistry = new MapLayerFormatRegistry(opts.mapLayerOptions);\r\n this._terrainProviderRegistry = new TerrainProviderRegistry();\r\n this._realityDataSourceProviders = new RealityDataSourceProviderRegistry();\r\n this._realityDataAccess = opts.realityDataAccess;\r\n this._publicPath = opts.publicPath ?? \"\";\r\n\r\n [\r\n this.renderSystem,\r\n this.viewManager,\r\n this.toolAdmin,\r\n this.accuDraw,\r\n this.accuSnap,\r\n this.locateManager,\r\n this.tentativePoint,\r\n this.uiAdmin,\r\n ].forEach((sys) => sys.onInitialized());\r\n\r\n await this.quantityFormatter.onInitialized();\r\n this.onAfterStartup.raiseEvent();\r\n }\r\n\r\n /** Must be called before the application exits to release any held resources. */\r\n public static async shutdown() {\r\n if (!this._initialized)\r\n return;\r\n\r\n // notify listeners that this IModelApp is about to be shut down.\r\n this.onBeforeShutdown.raiseEvent();\r\n this.onBeforeShutdown.clear();\r\n\r\n if (process.env.NODE_ENV === \"development\") {\r\n (window as IModelAppForDebugger).iModelAppForDebugger = undefined;\r\n }\r\n\r\n this._wantEventLoop = false;\r\n window.removeEventListener(\"resize\", IModelApp.requestNextAnimation);\r\n this.clearIntervalAnimation();\r\n [this.toolAdmin, this.viewManager, this.tileAdmin].forEach((sys) => sys.onShutDown());\r\n this.tools.shutdown();\r\n this._renderSystem = dispose(this._renderSystem);\r\n this._entityClasses.clear();\r\n this.authorizationClient = undefined;\r\n this._initialized = false;\r\n this.onAfterStartup.clear();\r\n }\r\n\r\n /** Controls how frequently the application polls for changes that may require a new animation frame to be requested.\r\n * Such changes include resizing a Viewport or changing the device pixel ratio by zooming in or out in the browser.\r\n * The default interval is 1 second. It may be desirable to override the default for specific apps and/or devices.\r\n * - Increasing the interval can conserve battery life on battery-powered devices at the expense of slower response to resize events.\r\n * - An application that only displays a single Viewport whose dimensions only change when the dimensions of the application window change, and which does not support changing application zoom level, could disable the interval altogether.\r\n * @param interval The interval at which to poll for changes. If undefined (or negative), the application will never poll. If zero, the application will poll as frequently as possible.\r\n * @beta\r\n */\r\n public static get animationInterval(): BeDuration | undefined { return IModelApp._animationInterval; }\r\n public static set animationInterval(interval: BeDuration | undefined) {\r\n if (undefined !== interval && interval.isTowardsPast)\r\n interval = undefined;\r\n\r\n if (interval !== IModelApp._animationInterval) {\r\n IModelApp._animationInterval = interval;\r\n if (IModelApp._wantEventLoop)\r\n IModelApp.requestIntervalAnimation();\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static requestNextAnimation() {\r\n // Only want to call requestAnimationFrame if it is defined. Need to check whether current iModelApp is a NoRenderApp.\r\n if (IModelApp._noRender)\r\n return;\r\n\r\n if (!IModelApp._animationRequested) {\r\n IModelApp._animationRequested = true;\r\n requestAnimationFrame(IModelApp.eventLoop);\r\n }\r\n }\r\n\r\n /** @internal */\r\n private static clearIntervalAnimation(): void {\r\n if (undefined !== IModelApp._animationIntervalId) {\r\n window.clearInterval(IModelApp._animationIntervalId);\r\n IModelApp._animationIntervalId = undefined;\r\n }\r\n }\r\n\r\n /** @internal */\r\n private static requestIntervalAnimation(): void {\r\n IModelApp.clearIntervalAnimation();\r\n\r\n if (undefined !== IModelApp.animationInterval)\r\n IModelApp._animationIntervalId = window.setInterval(() => {\r\n IModelApp.requestNextAnimation();\r\n }, IModelApp.animationInterval.milliseconds);\r\n }\r\n\r\n /** @internal */\r\n public static startEventLoop() {\r\n if (!IModelApp._wantEventLoop) {\r\n IModelApp._wantEventLoop = true;\r\n window.addEventListener(\"resize\", IModelApp.requestNextAnimation);\r\n IModelApp.requestIntervalAnimation();\r\n IModelApp.requestNextAnimation();\r\n }\r\n }\r\n\r\n /** Strictly for tests. @internal */\r\n public static stopEventLoop() {\r\n this._wantEventLoop = false;\r\n }\r\n\r\n /** The main event processing loop for Tools and rendering. */\r\n private static eventLoop() {\r\n IModelApp._animationRequested = false;\r\n if (!IModelApp._wantEventLoop) // flag turned on at startup\r\n return;\r\n\r\n try {\r\n IModelApp.toolAdmin.processEvent(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n IModelApp.viewManager.renderLoop();\r\n IModelApp.tileAdmin.process();\r\n } catch (exception) {\r\n ToolAdmin.exceptionHandler(exception); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n\r\n IModelApp._wantEventLoop = false;\r\n IModelApp._animationRequested = true; // unrecoverable after exception, don't request any further frames.\r\n window.removeEventListener(\"resize\", IModelApp.requestNextAnimation);\r\n }\r\n }\r\n\r\n /** Get the user's access token for this IModelApp, or a blank string if none is available.\r\n * @note Access tokens expire periodically and are automatically refreshed, if possible. Therefore tokens should not be saved, and the value\r\n * returned by this method may change over time throughout the course of a session.\r\n */\r\n public static async getAccessToken(): Promise<AccessToken> {\r\n try {\r\n return (await this.authorizationClient?.getAccessToken()) ?? \"\";\r\n } catch (e) {\r\n return \"\";\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static createRenderSys(opts?: RenderSystem.Options): RenderSystem { return System.create(opts); }\r\n\r\n private static _setupRpcRequestContext() {\r\n RpcConfiguration.requestContext.getId = (_request: RpcRequest): string => {\r\n return Guid.createValue();\r\n };\r\n\r\n RpcConfiguration.requestContext.serialize = async (_request: RpcRequest): Promise<SerializedRpcActivity> => {\r\n const id = _request.id;\r\n const serialized: SerializedRpcActivity = {\r\n id,\r\n applicationId: this.applicationId,\r\n applicationVersion: this.applicationVersion,\r\n sessionId: this.sessionId,\r\n authorization: ProcessDetector.isMobileAppFrontend ? \"\" : await this.getAccessToken(),\r\n };\r\n\r\n const csrf = IModelApp.securityOptions.csrfProtection;\r\n if (csrf && csrf.enabled) {\r\n const cookieName = csrf.cookieName || \"XSRF-TOKEN\";\r\n const cookieValue = document.cookie.split(\"; \").find((r) => r.startsWith(`${cookieName}=`));\r\n\r\n if (cookieValue) {\r\n const headerName = csrf.headerName || \"X-XSRF-TOKEN\";\r\n const headerValue = cookieValue.split(\"=\")[1];\r\n serialized.csrfToken = { headerName, headerValue };\r\n }\r\n }\r\n\r\n return serialized;\r\n };\r\n }\r\n\r\n /** Shortcut for creating an HTMLElement with optional parent, className, id, innerHTML, innerText\r\n * @internal\r\n */\r\n public static makeHTMLElement<K extends keyof HTMLElementTagNameMap>(type: K, opt?: {\r\n /** The parent for the new HTMLElement */\r\n parent?: HTMLElement;\r\n /** The className for the new HTMLElement */\r\n className?: string;\r\n /** The Id for the new HTMLElement */\r\n id?: string;\r\n /** innerHTML for the new HTMLElement */\r\n innerHTML?: string;\r\n /** innerText for the new HTMLElement */\r\n innerText?: string;\r\n }) {\r\n const el = document.createElement(type);\r\n if (undefined !== opt) {\r\n if (undefined !== opt.className)\r\n el.className = opt.className;\r\n if (undefined !== opt.id)\r\n el.id = opt.id;\r\n if (undefined !== opt.innerHTML)\r\n el.innerHTML = opt.innerHTML;\r\n if (undefined !== opt.innerText)\r\n el.innerText = opt.innerText;\r\n if (undefined !== opt.parent)\r\n opt.parent.appendChild(el);\r\n }\r\n return el;\r\n }\r\n\r\n /** Make a modal dialog on top of the root of the application. The returned HTMLDivElement will be placed topmost, all other application\r\n * windows will be covered with a semi-transparent background that intercepts all key/mouse/touch events until the modal is dismissed.\r\n * @param options The options that describe how the modal should work.\r\n * @internal\r\n */\r\n public static makeModalDiv(options: ModalOptions): ModalReturn {\r\n const root = options.rootDiv ? options.rootDiv : document.body;\r\n // create the overlay div to \"black out\" the application to indicate everything is inactive until the modal has been dismissed.\r\n const overlay = IModelApp.makeHTMLElement(\"div\", { parent: root, className: \"imodeljs-modal-overlay\" });\r\n overlay.tabIndex = -1; // so we can catch keystroke events\r\n\r\n // function to remove modal dialog\r\n const stop = (ev: Event) => {\r\n root.removeChild(overlay);\r\n ev.stopPropagation();\r\n };\r\n\r\n if (options.autoClose) {\r\n overlay.onclick = overlay.oncontextmenu = stop;\r\n overlay.onkeydown = overlay.onkeyup = (ev: KeyboardEvent) => { // ignore all keystrokes other than enter and escape\r\n switch (ev.key) {\r\n case \"Enter\":\r\n case \"Escape\":\r\n stop(ev);\r\n return;\r\n }\r\n ev.stopPropagation();\r\n };\r\n overlay.focus();\r\n }\r\n\r\n const modal = IModelApp.makeHTMLElement(\"div\", { parent: overlay, className: \"imodeljs-modal\" });\r\n if (undefined !== options.width) {\r\n modal.style.width = `${options.width}px`;\r\n // allow the dialog to be smaller than the width\r\n modal.style.maxWidth = `min(100% - (2 * var(--width-border)), ${options.width}px)`;\r\n }\r\n if (options.closeBox) {\r\n const close = IModelApp.makeHTMLElement(\"p\", { parent: modal, className: \"imodeljs-modal-close\" });\r\n close.innerText = \"\\u00d7\"; // unicode \"times\" symbol\r\n close.onclick = stop;\r\n }\r\n\r\n return { modal, stop };\r\n }\r\n\r\n /** Applications may implement this method to supply a Logo Card.\r\n * @beta\r\n */\r\n public static applicationLogoCard?: () => HTMLTableRowElement;\r\n\r\n /** Make a new Logo Card. Call this method from your implementation of [[IModelApp.applicationLogoCard]]\r\n * @param opts Options for Logo Card\r\n * @beta\r\n */\r\n public static makeLogoCard(\r\n opts: {\r\n /** The heading to be put at the top of this logo card inside an <h2>. May include HTML. */\r\n heading: string | HTMLElement;\r\n /** The URL or HTMLImageElement for the icon on this logo card. */\r\n iconSrc?: string | HTMLImageElement;\r\n /** The width of the icon, if `iconSrc` is a string. Default is 64. */\r\n iconWidth?: number;\r\n /** A *notice* string to be shown on the logo card. May include HTML. */\r\n notice?: string | HTMLElement;\r\n }): HTMLTableRowElement {\r\n const card = IModelApp.makeHTMLElement(\"tr\");\r\n const iconCell = IModelApp.makeHTMLElement(\"td\", { parent: card, className: \"logo-card-logo\" });\r\n if (undefined !== opts.iconSrc) {\r\n if (typeof opts.iconSrc === \"string\") {\r\n const logo = IModelApp.makeHTMLElement(\"img\");\r\n logo.src = opts.iconSrc;\r\n logo.width = opts.iconWidth ? opts.iconWidth : 64;\r\n opts.iconSrc = logo;\r\n }\r\n iconCell.appendChild(opts.iconSrc);\r\n }\r\n const noticeCell = IModelApp.makeHTMLElement(\"td\", { parent: card, className: \"logo-card-message\" });\r\n if (undefined !== opts.heading) {\r\n if (typeof opts.heading === \"string\")\r\n IModelApp.makeHTMLElement(\"h2\", { parent: noticeCell, innerHTML: opts.heading, className: \"logo-card-header\" });\r\n else\r\n noticeCell.appendChild(opts.heading);\r\n }\r\n if (undefined !== opts.notice) {\r\n if (typeof opts.notice === \"string\")\r\n IModelApp.makeHTMLElement(\"p\", { parent: noticeCell, innerHTML: opts.notice, className: \"logo-cards\" });\r\n else\r\n noticeCell.appendChild(opts.notice);\r\n }\r\n return card;\r\n }\r\n\r\n /** Make the logo card for the library itself. This card gets placed at the top of the stack.\r\n * @internal\r\n */\r\n public static makeIModelJsLogoCard() {\r\n return this.makeLogoCard({\r\n iconSrc: `${this.publicPath}images/about-imodeljs.svg`,\r\n heading: `<span style=\"font-weight:normal\">${this.localization.getLocalizedString(\"iModelJs:Notices.PoweredBy\")}</span>&nbsp;iTwin.js`,\r\n notice: `${ITWINJS_CORE_VERSION}<br>${COPYRIGHT_NOTICE}`,\r\n });\r\n }\r\n\r\n /** Format the tooltip strings returned by [[IModelConnection.getToolTipMessage]].\r\n * @alpha\r\n */\r\n public static formatElementToolTip(msg: string[]): HTMLElement {\r\n let out = \"\";\r\n msg.forEach((line) => out += `${IModelApp.localization?.getLocalizedKeys(line)}<br>`);\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = out;\r\n return div;\r\n }\r\n\r\n /** Localize an error status\r\n * @param status one of the status values from [BentleyStatus]($core-bentley), [IModelStatus]($core-bentley) or [DbResult]($core-bentley)\r\n * @returns a localized error message\r\n * @beta\r\n */\r\n public static translateStatus(status: number) {\r\n let key: { scope: string, val: string, status?: string };\r\n if (typeof status !== \"number\") {\r\n key = { scope: \"Errors\", val: \"IllegalValue\" };\r\n } else {\r\n key = { scope: \"BentleyStatus\", val: BentleyStatus[status] };\r\n if (!key.val)\r\n key = { scope: \"IModelStatus\", val: IModelStatus[status] };\r\n if (!key.val)\r\n key = { scope: \"DbResult\", val: DbResult[status] };\r\n if (!key.val)\r\n key = { scope: \"Errors\", val: \"Status\", status: status.toString() };\r\n }\r\n\r\n return this.localization.getLocalizedString(`iModelJs:${key.scope}.${key.val}`, key);\r\n }\r\n\r\n /**\r\n * Creates an instance of the ExtensionAdmin\r\n * and registers an event to execute after startup is complete\r\n * @returns an instance of ExtensionAdmin\r\n */\r\n private static _createExtensionAdmin(): ExtensionAdmin {\r\n const extensionAdmin = new ExtensionAdmin();\r\n IModelApp.onAfterStartup.addListener(extensionAdmin.onStartup);\r\n return extensionAdmin;\r\n }\r\n}\r\n"]}
@@ -5,6 +5,7 @@ import { AsyncMethodsOf, BeEvent, GuidString, PromiseReturnType } from "@itwin/c
5
5
  import { BriefcaseDownloader, BriefcaseProps, IModelVersion, InternetConnectivityStatus, IpcSocketFrontend, LocalBriefcaseProps, NativeAppFunctions, StorageValue, SyncMode } from "@itwin/core-common";
6
6
  import { ProgressCallback } from "./request/Request";
7
7
  import { IpcAppOptions } from "./IpcApp";
8
+ import { OnDownloadProgress } from "./BriefcaseConnection";
8
9
  /** Properties for specifying the BriefcaseId for downloading. May either specify a BriefcaseId directly (preferable) or, for
9
10
  * backwards compatibility, a [SyncMode]($common). If [SyncMode.PullAndPush]($common) is supplied, a new briefcaseId will be acquired.
10
11
  * @public
@@ -23,6 +24,8 @@ export declare type DownloadBriefcaseId = {
23
24
  export declare type DownloadBriefcaseOptions = DownloadBriefcaseId & {
24
25
  /** the full path for the briefcase file */
25
26
  fileName?: string;
27
+ /** Function called regularly to report progress of download. */
28
+ progressCallback?: OnDownloadProgress;
26
29
  /** interval for calling progress function, in milliseconds */
27
30
  progressInterval?: number;
28
31
  };
@@ -65,6 +68,10 @@ export declare class NativeApp {
65
68
  static startup(ipc: IpcSocketFrontend, opts?: NativeAppOpts): Promise<void>;
66
69
  /** @internal */
67
70
  static shutdown(): Promise<void>;
71
+ static requestDownloadBriefcase(iTwinId: string, iModelId: string, downloadOptions: DownloadBriefcaseOptions, asOf?: IModelVersion): Promise<BriefcaseDownloader>;
72
+ /**
73
+ * @deprecated in 3.6. [[progress]] argument is now deprecated, use [[DownloadBriefcaseOptions.progressCallback]] instead.
74
+ */
68
75
  static requestDownloadBriefcase(iTwinId: string, iModelId: string, downloadOptions: DownloadBriefcaseOptions, asOf?: IModelVersion, progress?: ProgressCallback): Promise<BriefcaseDownloader>;
69
76
  /** Get the full path filename for a briefcase within the briefcase cache */
70
77
  static getBriefcaseFileName(props: BriefcaseProps): Promise<string>;