@itwin/core-frontend 5.0.0-dev.98 → 5.0.0

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 (681) hide show
  1. package/CHANGELOG.md +89 -1
  2. package/lib/cjs/AccuDraw.d.ts +2 -0
  3. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  4. package/lib/cjs/AccuDraw.js +22 -41
  5. package/lib/cjs/AccuDraw.js.map +1 -1
  6. package/lib/cjs/AccuSnap.d.ts +1 -0
  7. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  8. package/lib/cjs/AccuSnap.js +71 -3
  9. package/lib/cjs/AccuSnap.js.map +1 -1
  10. package/lib/cjs/BriefcaseConnection.d.ts +1 -1
  11. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  12. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  13. package/lib/cjs/CatalogConnection.d.ts +71 -0
  14. package/lib/cjs/CatalogConnection.d.ts.map +1 -0
  15. package/lib/cjs/CatalogConnection.js +95 -0
  16. package/lib/cjs/CatalogConnection.js.map +1 -0
  17. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  18. package/lib/cjs/ElementLocateManager.js +5 -2
  19. package/lib/cjs/ElementLocateManager.js.map +1 -1
  20. package/lib/cjs/GraphicalEditingScope.d.ts +1 -1
  21. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  22. package/lib/cjs/GraphicalEditingScope.js +1 -1
  23. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  24. package/lib/cjs/HitDetail.d.ts +30 -3
  25. package/lib/cjs/HitDetail.d.ts.map +1 -1
  26. package/lib/cjs/HitDetail.js +14 -0
  27. package/lib/cjs/HitDetail.js.map +1 -1
  28. package/lib/cjs/IModelApp.d.ts +16 -1
  29. package/lib/cjs/IModelApp.d.ts.map +1 -1
  30. package/lib/cjs/IModelApp.js +20 -1
  31. package/lib/cjs/IModelApp.js.map +1 -1
  32. package/lib/cjs/IModelConnection.d.ts +18 -6
  33. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  34. package/lib/cjs/IModelConnection.js +27 -6
  35. package/lib/cjs/IModelConnection.js.map +1 -1
  36. package/lib/cjs/IpcApp.d.ts +2 -2
  37. package/lib/cjs/IpcApp.d.ts.map +1 -1
  38. package/lib/cjs/IpcApp.js +1 -1
  39. package/lib/cjs/IpcApp.js.map +1 -1
  40. package/lib/cjs/ModelState.d.ts.map +1 -1
  41. package/lib/cjs/ModelState.js +7 -5
  42. package/lib/cjs/ModelState.js.map +1 -1
  43. package/lib/cjs/NativeApp.d.ts +2 -1
  44. package/lib/cjs/NativeApp.d.ts.map +1 -1
  45. package/lib/cjs/NativeApp.js +1 -0
  46. package/lib/cjs/NativeApp.js.map +1 -1
  47. package/lib/cjs/SelectionSet.d.ts +7 -7
  48. package/lib/cjs/SelectionSet.js +3 -3
  49. package/lib/cjs/SelectionSet.js.map +1 -1
  50. package/lib/cjs/ViewContext.d.ts +4 -1
  51. package/lib/cjs/ViewContext.d.ts.map +1 -1
  52. package/lib/cjs/ViewContext.js +10 -5
  53. package/lib/cjs/ViewContext.js.map +1 -1
  54. package/lib/cjs/ViewManager.js +2 -2
  55. package/lib/cjs/ViewManager.js.map +1 -1
  56. package/lib/cjs/ViewState.d.ts +1 -1
  57. package/lib/cjs/ViewState.js +1 -1
  58. package/lib/cjs/ViewState.js.map +1 -1
  59. package/lib/cjs/Viewport.d.ts +7 -5
  60. package/lib/cjs/Viewport.d.ts.map +1 -1
  61. package/lib/cjs/Viewport.js +10 -5
  62. package/lib/cjs/Viewport.js.map +1 -1
  63. package/lib/cjs/core-frontend.d.ts +2 -1
  64. package/lib/cjs/core-frontend.d.ts.map +1 -1
  65. package/lib/cjs/core-frontend.js +1 -0
  66. package/lib/cjs/core-frontend.js.map +1 -1
  67. package/lib/cjs/extension/ExtensionRuntime.js +15 -2
  68. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  69. package/lib/cjs/extension/providers/ExtensionLoadScript.d.ts.map +1 -1
  70. package/lib/cjs/extension/providers/ExtensionLoadScript.js +24 -6
  71. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  72. package/lib/cjs/internal/cross-package.d.ts +1 -1
  73. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  74. package/lib/cjs/internal/cross-package.js +3 -1
  75. package/lib/cjs/internal/cross-package.js.map +1 -1
  76. package/lib/cjs/internal/render/MockRender.d.ts +1 -1
  77. package/lib/cjs/internal/render/MockRender.d.ts.map +1 -1
  78. package/lib/cjs/internal/render/MockRender.js +1 -1
  79. package/lib/cjs/internal/render/MockRender.js.map +1 -1
  80. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts +1 -1
  81. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  82. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +1 -1
  83. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  84. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts +2 -2
  85. package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  86. package/lib/cjs/internal/render/webgl/AttributeBuffers.js +2 -2
  87. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  88. package/lib/cjs/internal/render/webgl/ClippingProgram.d.ts +1 -1
  89. package/lib/cjs/internal/render/webgl/ClippingProgram.d.ts.map +1 -1
  90. package/lib/cjs/internal/render/webgl/ClippingProgram.js +1 -1
  91. package/lib/cjs/internal/render/webgl/ClippingProgram.js.map +1 -1
  92. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts +2 -0
  93. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  94. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +7 -0
  95. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  96. package/lib/cjs/internal/render/webgl/MapLayerParams.d.ts +0 -1
  97. package/lib/cjs/internal/render/webgl/MapLayerParams.d.ts.map +1 -1
  98. package/lib/cjs/internal/render/webgl/MapLayerParams.js +11 -20
  99. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  100. package/lib/cjs/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  101. package/lib/cjs/internal/render/webgl/RenderCommands.js +2 -3
  102. package/lib/cjs/internal/render/webgl/RenderCommands.js.map +1 -1
  103. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts +9 -0
  104. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  105. package/lib/cjs/internal/render/webgl/SceneCompositor.js +86 -11
  106. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  107. package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts +4 -3
  108. package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
  109. package/lib/cjs/internal/render/webgl/ShaderBuilder.js +3 -3
  110. package/lib/cjs/internal/render/webgl/ShaderBuilder.js.map +1 -1
  111. package/lib/cjs/internal/render/webgl/ShaderProgram.d.ts +2 -2
  112. package/lib/cjs/internal/render/webgl/ShaderProgram.d.ts.map +1 -1
  113. package/lib/cjs/internal/render/webgl/ShaderProgram.js +2 -2
  114. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  115. package/lib/cjs/internal/render/webgl/SolarShadowMap.js +2 -2
  116. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  117. package/lib/cjs/internal/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  118. package/lib/cjs/internal/render/webgl/SurfaceGeometry.js +20 -8
  119. package/lib/cjs/internal/render/webgl/SurfaceGeometry.js.map +1 -1
  120. package/lib/cjs/internal/render/webgl/Target.d.ts +1 -1
  121. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  122. package/lib/cjs/internal/render/webgl/Target.js +2 -2
  123. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  124. package/lib/cjs/internal/render/webgl/TargetGraphics.d.ts +3 -3
  125. package/lib/cjs/internal/render/webgl/TargetGraphics.d.ts.map +1 -1
  126. package/lib/cjs/internal/render/webgl/TargetGraphics.js +10 -7
  127. package/lib/cjs/internal/render/webgl/TargetGraphics.js.map +1 -1
  128. package/lib/cjs/internal/render/webgl/Technique.d.ts +3 -3
  129. package/lib/cjs/internal/render/webgl/Technique.d.ts.map +1 -1
  130. package/lib/cjs/internal/render/webgl/Technique.js +3 -3
  131. package/lib/cjs/internal/render/webgl/Technique.js.map +1 -1
  132. package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js +1 -1
  133. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  134. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js +2 -1
  135. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  136. package/lib/cjs/internal/render/webgl/glsl/Contours.d.ts.map +1 -1
  137. package/lib/cjs/internal/render/webgl/glsl/Contours.js +31 -1
  138. package/lib/cjs/internal/render/webgl/glsl/Contours.js.map +1 -1
  139. package/lib/cjs/internal/render/webgl/glsl/Fragment.d.ts.map +1 -1
  140. package/lib/cjs/internal/render/webgl/glsl/Fragment.js +7 -2
  141. package/lib/cjs/internal/render/webgl/glsl/Fragment.js.map +1 -1
  142. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +1 -1
  143. package/lib/cjs/internal/render/webgl/glsl/Surface.js +1 -1
  144. package/lib/cjs/internal/tile/ClassifierTileTree.js +3 -1
  145. package/lib/cjs/internal/tile/ClassifierTileTree.js.map +1 -1
  146. package/lib/cjs/internal/tile/GraphicsCollector.d.ts +2 -0
  147. package/lib/cjs/internal/tile/GraphicsCollector.d.ts.map +1 -1
  148. package/lib/cjs/internal/tile/GraphicsCollector.js +2 -0
  149. package/lib/cjs/internal/tile/GraphicsCollector.js.map +1 -1
  150. package/lib/cjs/internal/tile/IModelTile.d.ts.map +1 -1
  151. package/lib/cjs/internal/tile/IModelTile.js +6 -0
  152. package/lib/cjs/internal/tile/IModelTile.js.map +1 -1
  153. package/lib/cjs/internal/tile/IModelTileTree.d.ts +4 -1
  154. package/lib/cjs/internal/tile/IModelTileTree.d.ts.map +1 -1
  155. package/lib/cjs/internal/tile/IModelTileTree.js +6 -0
  156. package/lib/cjs/internal/tile/IModelTileTree.js.map +1 -1
  157. package/lib/cjs/internal/tile/ImdlDecoder.d.ts +2 -0
  158. package/lib/cjs/internal/tile/ImdlDecoder.d.ts.map +1 -1
  159. package/lib/cjs/internal/tile/ImdlDecoder.js.map +1 -1
  160. package/lib/cjs/internal/tile/ImdlGraphicsCreator.d.ts +2 -2
  161. package/lib/cjs/internal/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  162. package/lib/cjs/internal/tile/ImdlGraphicsCreator.js +2 -1
  163. package/lib/cjs/internal/tile/ImdlGraphicsCreator.js.map +1 -1
  164. package/lib/cjs/{tile → internal/tile}/LayerTileTreeHandler.d.ts +3 -3
  165. package/lib/cjs/internal/tile/LayerTileTreeHandler.d.ts.map +1 -0
  166. package/lib/cjs/{tile → internal/tile}/LayerTileTreeHandler.js +3 -2
  167. package/lib/cjs/internal/tile/LayerTileTreeHandler.js.map +1 -0
  168. package/lib/cjs/{tile → internal/tile}/LayerTileTreeReferenceHandler.d.ts +7 -5
  169. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -0
  170. package/lib/cjs/{tile → internal/tile}/LayerTileTreeReferenceHandler.js +27 -4
  171. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -0
  172. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts +9 -4
  173. package/lib/cjs/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  174. package/lib/cjs/internal/tile/PrimaryTileTree.js +34 -11
  175. package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
  176. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts +15 -3
  177. package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  178. package/lib/cjs/internal/tile/RealityModelTileTree.js +27 -32
  179. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  180. package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
  181. package/lib/cjs/internal/tile/RealityTileLoader.js +2 -1
  182. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  183. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  184. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  185. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  186. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  187. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  188. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  189. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
  190. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  191. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  192. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  193. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
  194. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  195. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  196. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  197. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
  198. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  199. package/lib/cjs/properties/AngleDescription.d.ts +4 -1
  200. package/lib/cjs/properties/AngleDescription.d.ts.map +1 -1
  201. package/lib/cjs/properties/AngleDescription.js +10 -2
  202. package/lib/cjs/properties/AngleDescription.js.map +1 -1
  203. package/lib/cjs/properties/FormattedQuantityDescription.d.ts +11 -1
  204. package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
  205. package/lib/cjs/properties/FormattedQuantityDescription.js +7 -2
  206. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  207. package/lib/cjs/properties/LengthDescription.d.ts +12 -3
  208. package/lib/cjs/properties/LengthDescription.d.ts.map +1 -1
  209. package/lib/cjs/properties/LengthDescription.js +30 -6
  210. package/lib/cjs/properties/LengthDescription.js.map +1 -1
  211. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +103 -7
  212. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  213. package/lib/cjs/quantity-formatting/QuantityFormatter.js +212 -23
  214. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  215. package/lib/cjs/render/Decorations.d.ts +1 -1
  216. package/lib/cjs/render/Decorations.d.ts.map +1 -1
  217. package/lib/cjs/render/Decorations.js +1 -1
  218. package/lib/cjs/render/Decorations.js.map +1 -1
  219. package/lib/cjs/render/GraphicBranch.d.ts +1 -1
  220. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  221. package/lib/cjs/render/GraphicBranch.js +1 -1
  222. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  223. package/lib/cjs/render/Pixel.d.ts +13 -2
  224. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  225. package/lib/cjs/render/Pixel.js +20 -8
  226. package/lib/cjs/render/Pixel.js.map +1 -1
  227. package/lib/cjs/render/RenderGraphic.d.ts +1 -1
  228. package/lib/cjs/render/RenderGraphic.d.ts.map +1 -1
  229. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  230. package/lib/cjs/render/RenderSystem.d.ts +2 -2
  231. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  232. package/lib/cjs/render/RenderSystem.js.map +1 -1
  233. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  234. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  235. package/lib/cjs/render/RenderTarget.js.map +1 -1
  236. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +1 -1
  237. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  238. package/lib/cjs/request/Request.d.ts +2 -2
  239. package/lib/cjs/request/Request.js.map +1 -1
  240. package/lib/cjs/tile/ImdlReader.d.ts +3 -2
  241. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  242. package/lib/cjs/tile/ImdlReader.js +1 -0
  243. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  244. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  245. package/lib/cjs/tile/RealityTileTree.js +1 -1
  246. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  247. package/lib/cjs/tile/Tile.d.ts +1 -1
  248. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  249. package/lib/cjs/tile/Tile.js +1 -1
  250. package/lib/cjs/tile/Tile.js.map +1 -1
  251. package/lib/cjs/tile/TileAdmin.d.ts +10 -0
  252. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  253. package/lib/cjs/tile/TileAdmin.js +3 -0
  254. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  255. package/lib/cjs/tile/TileDrawArgs.d.ts +1 -0
  256. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  257. package/lib/cjs/tile/TileDrawArgs.js +2 -0
  258. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  259. package/lib/cjs/tile/TileTree.d.ts +1 -1
  260. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  261. package/lib/cjs/tile/TileTree.js +1 -1
  262. package/lib/cjs/tile/TileTree.js.map +1 -1
  263. package/lib/cjs/tile/TileTreeReference.d.ts +1 -1
  264. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  265. package/lib/cjs/tile/TileTreeReference.js +1 -1
  266. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  267. package/lib/cjs/tile/internal.d.ts +3 -2
  268. package/lib/cjs/tile/internal.d.ts.map +1 -1
  269. package/lib/cjs/tile/internal.js +3 -2
  270. package/lib/cjs/tile/internal.js.map +1 -1
  271. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts +1 -1
  272. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  273. package/lib/cjs/tile/map/CesiumTerrainProvider.js +3 -4
  274. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  275. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
  276. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  277. package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
  278. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  279. package/lib/cjs/tile/map/MapCartoRectangle.d.ts +10 -0
  280. package/lib/cjs/tile/map/MapCartoRectangle.d.ts.map +1 -1
  281. package/lib/cjs/tile/map/MapCartoRectangle.js +12 -0
  282. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  283. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +3 -3
  284. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  285. package/lib/cjs/tile/map/MapLayerImageryProvider.js +9 -5
  286. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  287. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
  288. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  289. package/lib/cjs/tile/map/MapTileTree.js +3 -5
  290. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  291. package/lib/cjs/tile/map/QuadId.d.ts +15 -0
  292. package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
  293. package/lib/cjs/tile/map/QuadId.js +12 -0
  294. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  295. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
  296. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  297. package/lib/cjs/tile/map/TerrainMeshProvider.js +1 -1
  298. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  299. package/lib/cjs/tools/AccuDrawTool.d.ts +0 -12
  300. package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
  301. package/lib/cjs/tools/AccuDrawTool.js +2 -60
  302. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  303. package/lib/cjs/tools/AccuDrawViewportUI.d.ts +7 -1
  304. package/lib/cjs/tools/AccuDrawViewportUI.d.ts.map +1 -1
  305. package/lib/cjs/tools/AccuDrawViewportUI.js +29 -19
  306. package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -1
  307. package/lib/cjs/tools/ElementSetTool.d.ts +9 -1
  308. package/lib/cjs/tools/ElementSetTool.d.ts.map +1 -1
  309. package/lib/cjs/tools/ElementSetTool.js +128 -7
  310. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  311. package/lib/cjs/tools/MeasureTool.d.ts +9 -0
  312. package/lib/cjs/tools/MeasureTool.d.ts.map +1 -1
  313. package/lib/cjs/tools/MeasureTool.js +53 -22
  314. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  315. package/lib/cjs/tools/SelectTool.d.ts +2 -2
  316. package/lib/cjs/tools/SelectTool.d.ts.map +1 -1
  317. package/lib/cjs/tools/SelectTool.js +26 -97
  318. package/lib/cjs/tools/SelectTool.js.map +1 -1
  319. package/lib/cjs/tools/Tool.d.ts +10 -1
  320. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  321. package/lib/cjs/tools/Tool.js +27 -4
  322. package/lib/cjs/tools/Tool.js.map +1 -1
  323. package/lib/cjs/tools/ToolAdmin.d.ts +1 -0
  324. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  325. package/lib/cjs/tools/ToolAdmin.js +8 -2
  326. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  327. package/lib/cjs/tools/ToolSettings.d.ts +5 -0
  328. package/lib/cjs/tools/ToolSettings.d.ts.map +1 -1
  329. package/lib/cjs/tools/ToolSettings.js +5 -0
  330. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  331. package/lib/cjs/tools/ViewTool.d.ts +26 -18
  332. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  333. package/lib/cjs/tools/ViewTool.js +39 -87
  334. package/lib/cjs/tools/ViewTool.js.map +1 -1
  335. package/lib/esm/AccuDraw.d.ts +2 -0
  336. package/lib/esm/AccuDraw.d.ts.map +1 -1
  337. package/lib/esm/AccuDraw.js +23 -42
  338. package/lib/esm/AccuDraw.js.map +1 -1
  339. package/lib/esm/AccuSnap.d.ts +1 -0
  340. package/lib/esm/AccuSnap.d.ts.map +1 -1
  341. package/lib/esm/AccuSnap.js +71 -3
  342. package/lib/esm/AccuSnap.js.map +1 -1
  343. package/lib/esm/BriefcaseConnection.d.ts +1 -1
  344. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  345. package/lib/esm/BriefcaseConnection.js.map +1 -1
  346. package/lib/esm/CatalogConnection.d.ts +71 -0
  347. package/lib/esm/CatalogConnection.d.ts.map +1 -0
  348. package/lib/esm/CatalogConnection.js +92 -0
  349. package/lib/esm/CatalogConnection.js.map +1 -0
  350. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  351. package/lib/esm/ElementLocateManager.js +5 -2
  352. package/lib/esm/ElementLocateManager.js.map +1 -1
  353. package/lib/esm/GraphicalEditingScope.d.ts +1 -1
  354. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  355. package/lib/esm/GraphicalEditingScope.js +1 -1
  356. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  357. package/lib/esm/HitDetail.d.ts +30 -3
  358. package/lib/esm/HitDetail.d.ts.map +1 -1
  359. package/lib/esm/HitDetail.js +14 -0
  360. package/lib/esm/HitDetail.js.map +1 -1
  361. package/lib/esm/IModelApp.d.ts +16 -1
  362. package/lib/esm/IModelApp.d.ts.map +1 -1
  363. package/lib/esm/IModelApp.js +21 -2
  364. package/lib/esm/IModelApp.js.map +1 -1
  365. package/lib/esm/IModelConnection.d.ts +18 -6
  366. package/lib/esm/IModelConnection.d.ts.map +1 -1
  367. package/lib/esm/IModelConnection.js +27 -6
  368. package/lib/esm/IModelConnection.js.map +1 -1
  369. package/lib/esm/IpcApp.d.ts +2 -2
  370. package/lib/esm/IpcApp.d.ts.map +1 -1
  371. package/lib/esm/IpcApp.js +1 -1
  372. package/lib/esm/IpcApp.js.map +1 -1
  373. package/lib/esm/ModelState.d.ts.map +1 -1
  374. package/lib/esm/ModelState.js +7 -5
  375. package/lib/esm/ModelState.js.map +1 -1
  376. package/lib/esm/NativeApp.d.ts +2 -1
  377. package/lib/esm/NativeApp.d.ts.map +1 -1
  378. package/lib/esm/NativeApp.js +1 -0
  379. package/lib/esm/NativeApp.js.map +1 -1
  380. package/lib/esm/SelectionSet.d.ts +7 -7
  381. package/lib/esm/SelectionSet.js +3 -3
  382. package/lib/esm/SelectionSet.js.map +1 -1
  383. package/lib/esm/ViewContext.d.ts +4 -1
  384. package/lib/esm/ViewContext.d.ts.map +1 -1
  385. package/lib/esm/ViewContext.js +10 -5
  386. package/lib/esm/ViewContext.js.map +1 -1
  387. package/lib/esm/ViewManager.js +2 -2
  388. package/lib/esm/ViewManager.js.map +1 -1
  389. package/lib/esm/ViewState.d.ts +1 -1
  390. package/lib/esm/ViewState.js +1 -1
  391. package/lib/esm/ViewState.js.map +1 -1
  392. package/lib/esm/Viewport.d.ts +7 -5
  393. package/lib/esm/Viewport.d.ts.map +1 -1
  394. package/lib/esm/Viewport.js +10 -5
  395. package/lib/esm/Viewport.js.map +1 -1
  396. package/lib/esm/core-frontend.d.ts +2 -1
  397. package/lib/esm/core-frontend.d.ts.map +1 -1
  398. package/lib/esm/core-frontend.js +1 -0
  399. package/lib/esm/core-frontend.js.map +1 -1
  400. package/lib/esm/extension/ExtensionRuntime.js +15 -2
  401. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  402. package/lib/esm/extension/providers/ExtensionLoadScript.d.ts.map +1 -1
  403. package/lib/esm/extension/providers/ExtensionLoadScript.js +1 -6
  404. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  405. package/lib/esm/internal/cross-package.d.ts +1 -1
  406. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  407. package/lib/esm/internal/cross-package.js +1 -1
  408. package/lib/esm/internal/cross-package.js.map +1 -1
  409. package/lib/esm/internal/render/MockRender.d.ts +1 -1
  410. package/lib/esm/internal/render/MockRender.d.ts.map +1 -1
  411. package/lib/esm/internal/render/MockRender.js +1 -1
  412. package/lib/esm/internal/render/MockRender.js.map +1 -1
  413. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts +1 -1
  414. package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  415. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +1 -1
  416. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  417. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts +2 -2
  418. package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
  419. package/lib/esm/internal/render/webgl/AttributeBuffers.js +2 -2
  420. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  421. package/lib/esm/internal/render/webgl/ClippingProgram.d.ts +1 -1
  422. package/lib/esm/internal/render/webgl/ClippingProgram.d.ts.map +1 -1
  423. package/lib/esm/internal/render/webgl/ClippingProgram.js +1 -1
  424. package/lib/esm/internal/render/webgl/ClippingProgram.js.map +1 -1
  425. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts +2 -0
  426. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  427. package/lib/esm/internal/render/webgl/FrustumUniforms.js +8 -1
  428. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  429. package/lib/esm/internal/render/webgl/MapLayerParams.d.ts +0 -1
  430. package/lib/esm/internal/render/webgl/MapLayerParams.d.ts.map +1 -1
  431. package/lib/esm/internal/render/webgl/MapLayerParams.js +11 -20
  432. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  433. package/lib/esm/internal/render/webgl/RenderCommands.d.ts.map +1 -1
  434. package/lib/esm/internal/render/webgl/RenderCommands.js +2 -3
  435. package/lib/esm/internal/render/webgl/RenderCommands.js.map +1 -1
  436. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts +9 -0
  437. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  438. package/lib/esm/internal/render/webgl/SceneCompositor.js +86 -11
  439. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  440. package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts +4 -3
  441. package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
  442. package/lib/esm/internal/render/webgl/ShaderBuilder.js +3 -3
  443. package/lib/esm/internal/render/webgl/ShaderBuilder.js.map +1 -1
  444. package/lib/esm/internal/render/webgl/ShaderProgram.d.ts +2 -2
  445. package/lib/esm/internal/render/webgl/ShaderProgram.d.ts.map +1 -1
  446. package/lib/esm/internal/render/webgl/ShaderProgram.js +2 -2
  447. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  448. package/lib/esm/internal/render/webgl/SolarShadowMap.js +2 -2
  449. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  450. package/lib/esm/internal/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  451. package/lib/esm/internal/render/webgl/SurfaceGeometry.js +20 -8
  452. package/lib/esm/internal/render/webgl/SurfaceGeometry.js.map +1 -1
  453. package/lib/esm/internal/render/webgl/Target.d.ts +1 -1
  454. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  455. package/lib/esm/internal/render/webgl/Target.js +2 -2
  456. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  457. package/lib/esm/internal/render/webgl/TargetGraphics.d.ts +3 -3
  458. package/lib/esm/internal/render/webgl/TargetGraphics.d.ts.map +1 -1
  459. package/lib/esm/internal/render/webgl/TargetGraphics.js +10 -7
  460. package/lib/esm/internal/render/webgl/TargetGraphics.js.map +1 -1
  461. package/lib/esm/internal/render/webgl/Technique.d.ts +3 -3
  462. package/lib/esm/internal/render/webgl/Technique.d.ts.map +1 -1
  463. package/lib/esm/internal/render/webgl/Technique.js +3 -3
  464. package/lib/esm/internal/render/webgl/Technique.js.map +1 -1
  465. package/lib/esm/internal/render/webgl/glsl/Atmosphere.js +1 -1
  466. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  467. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js +2 -1
  468. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  469. package/lib/esm/internal/render/webgl/glsl/Contours.d.ts.map +1 -1
  470. package/lib/esm/internal/render/webgl/glsl/Contours.js +31 -1
  471. package/lib/esm/internal/render/webgl/glsl/Contours.js.map +1 -1
  472. package/lib/esm/internal/render/webgl/glsl/Fragment.d.ts.map +1 -1
  473. package/lib/esm/internal/render/webgl/glsl/Fragment.js +7 -2
  474. package/lib/esm/internal/render/webgl/glsl/Fragment.js.map +1 -1
  475. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +1 -1
  476. package/lib/esm/internal/render/webgl/glsl/Surface.js +1 -1
  477. package/lib/esm/internal/tile/ClassifierTileTree.js +3 -1
  478. package/lib/esm/internal/tile/ClassifierTileTree.js.map +1 -1
  479. package/lib/esm/internal/tile/GraphicsCollector.d.ts +2 -0
  480. package/lib/esm/internal/tile/GraphicsCollector.d.ts.map +1 -1
  481. package/lib/esm/internal/tile/GraphicsCollector.js +2 -0
  482. package/lib/esm/internal/tile/GraphicsCollector.js.map +1 -1
  483. package/lib/esm/internal/tile/IModelTile.d.ts.map +1 -1
  484. package/lib/esm/internal/tile/IModelTile.js +7 -1
  485. package/lib/esm/internal/tile/IModelTile.js.map +1 -1
  486. package/lib/esm/internal/tile/IModelTileTree.d.ts +4 -1
  487. package/lib/esm/internal/tile/IModelTileTree.d.ts.map +1 -1
  488. package/lib/esm/internal/tile/IModelTileTree.js +7 -1
  489. package/lib/esm/internal/tile/IModelTileTree.js.map +1 -1
  490. package/lib/esm/internal/tile/ImdlDecoder.d.ts +2 -0
  491. package/lib/esm/internal/tile/ImdlDecoder.d.ts.map +1 -1
  492. package/lib/esm/internal/tile/ImdlDecoder.js.map +1 -1
  493. package/lib/esm/internal/tile/ImdlGraphicsCreator.d.ts +2 -2
  494. package/lib/esm/internal/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  495. package/lib/esm/internal/tile/ImdlGraphicsCreator.js +2 -1
  496. package/lib/esm/internal/tile/ImdlGraphicsCreator.js.map +1 -1
  497. package/lib/esm/{tile → internal/tile}/LayerTileTreeHandler.d.ts +3 -3
  498. package/lib/esm/internal/tile/LayerTileTreeHandler.d.ts.map +1 -0
  499. package/lib/esm/{tile → internal/tile}/LayerTileTreeHandler.js +3 -2
  500. package/lib/esm/internal/tile/LayerTileTreeHandler.js.map +1 -0
  501. package/lib/esm/{tile → internal/tile}/LayerTileTreeReferenceHandler.d.ts +7 -5
  502. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -0
  503. package/lib/esm/{tile → internal/tile}/LayerTileTreeReferenceHandler.js +27 -4
  504. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -0
  505. package/lib/esm/internal/tile/PrimaryTileTree.d.ts +9 -4
  506. package/lib/esm/internal/tile/PrimaryTileTree.d.ts.map +1 -1
  507. package/lib/esm/internal/tile/PrimaryTileTree.js +36 -13
  508. package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
  509. package/lib/esm/internal/tile/RealityModelTileTree.d.ts +15 -3
  510. package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
  511. package/lib/esm/internal/tile/RealityModelTileTree.js +26 -32
  512. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  513. package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
  514. package/lib/esm/internal/tile/RealityTileLoader.js +2 -1
  515. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  516. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  517. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  518. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  519. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  520. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  521. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  522. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +1 -1
  523. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  524. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  525. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  526. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
  527. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  528. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  529. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  530. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +1 -1
  531. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  532. package/lib/esm/properties/AngleDescription.d.ts +4 -1
  533. package/lib/esm/properties/AngleDescription.d.ts.map +1 -1
  534. package/lib/esm/properties/AngleDescription.js +10 -2
  535. package/lib/esm/properties/AngleDescription.js.map +1 -1
  536. package/lib/esm/properties/FormattedQuantityDescription.d.ts +11 -1
  537. package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
  538. package/lib/esm/properties/FormattedQuantityDescription.js +7 -2
  539. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  540. package/lib/esm/properties/LengthDescription.d.ts +12 -3
  541. package/lib/esm/properties/LengthDescription.d.ts.map +1 -1
  542. package/lib/esm/properties/LengthDescription.js +30 -6
  543. package/lib/esm/properties/LengthDescription.js.map +1 -1
  544. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +103 -7
  545. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  546. package/lib/esm/quantity-formatting/QuantityFormatter.js +210 -23
  547. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  548. package/lib/esm/render/Decorations.d.ts +1 -1
  549. package/lib/esm/render/Decorations.d.ts.map +1 -1
  550. package/lib/esm/render/Decorations.js +1 -1
  551. package/lib/esm/render/Decorations.js.map +1 -1
  552. package/lib/esm/render/GraphicBranch.d.ts +1 -1
  553. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  554. package/lib/esm/render/GraphicBranch.js +1 -1
  555. package/lib/esm/render/GraphicBranch.js.map +1 -1
  556. package/lib/esm/render/Pixel.d.ts +13 -2
  557. package/lib/esm/render/Pixel.d.ts.map +1 -1
  558. package/lib/esm/render/Pixel.js +20 -8
  559. package/lib/esm/render/Pixel.js.map +1 -1
  560. package/lib/esm/render/RenderGraphic.d.ts +1 -1
  561. package/lib/esm/render/RenderGraphic.d.ts.map +1 -1
  562. package/lib/esm/render/RenderGraphic.js.map +1 -1
  563. package/lib/esm/render/RenderSystem.d.ts +2 -2
  564. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  565. package/lib/esm/render/RenderSystem.js.map +1 -1
  566. package/lib/esm/render/RenderTarget.d.ts +1 -1
  567. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  568. package/lib/esm/render/RenderTarget.js.map +1 -1
  569. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +1 -1
  570. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  571. package/lib/esm/request/Request.d.ts +2 -2
  572. package/lib/esm/request/Request.js.map +1 -1
  573. package/lib/esm/tile/ImdlReader.d.ts +3 -2
  574. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  575. package/lib/esm/tile/ImdlReader.js +1 -0
  576. package/lib/esm/tile/ImdlReader.js.map +1 -1
  577. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  578. package/lib/esm/tile/RealityTileTree.js +2 -2
  579. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  580. package/lib/esm/tile/Tile.d.ts +1 -1
  581. package/lib/esm/tile/Tile.d.ts.map +1 -1
  582. package/lib/esm/tile/Tile.js +1 -1
  583. package/lib/esm/tile/Tile.js.map +1 -1
  584. package/lib/esm/tile/TileAdmin.d.ts +10 -0
  585. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  586. package/lib/esm/tile/TileAdmin.js +3 -0
  587. package/lib/esm/tile/TileAdmin.js.map +1 -1
  588. package/lib/esm/tile/TileDrawArgs.d.ts +1 -0
  589. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  590. package/lib/esm/tile/TileDrawArgs.js +2 -0
  591. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  592. package/lib/esm/tile/TileTree.d.ts +1 -1
  593. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  594. package/lib/esm/tile/TileTree.js +1 -1
  595. package/lib/esm/tile/TileTree.js.map +1 -1
  596. package/lib/esm/tile/TileTreeReference.d.ts +1 -1
  597. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  598. package/lib/esm/tile/TileTreeReference.js +1 -1
  599. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  600. package/lib/esm/tile/internal.d.ts +3 -2
  601. package/lib/esm/tile/internal.d.ts.map +1 -1
  602. package/lib/esm/tile/internal.js +3 -2
  603. package/lib/esm/tile/internal.js.map +1 -1
  604. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts +1 -1
  605. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  606. package/lib/esm/tile/map/CesiumTerrainProvider.js +4 -5
  607. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  608. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
  609. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  610. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  611. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  612. package/lib/esm/tile/map/MapCartoRectangle.d.ts +10 -0
  613. package/lib/esm/tile/map/MapCartoRectangle.d.ts.map +1 -1
  614. package/lib/esm/tile/map/MapCartoRectangle.js +12 -0
  615. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  616. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +3 -3
  617. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  618. package/lib/esm/tile/map/MapLayerImageryProvider.js +9 -5
  619. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  620. package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
  621. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  622. package/lib/esm/tile/map/MapTileTree.js +3 -5
  623. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  624. package/lib/esm/tile/map/QuadId.d.ts +15 -0
  625. package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
  626. package/lib/esm/tile/map/QuadId.js +12 -0
  627. package/lib/esm/tile/map/QuadId.js.map +1 -1
  628. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
  629. package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  630. package/lib/esm/tile/map/TerrainMeshProvider.js +1 -1
  631. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  632. package/lib/esm/tools/AccuDrawTool.d.ts +0 -12
  633. package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
  634. package/lib/esm/tools/AccuDrawTool.js +3 -60
  635. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  636. package/lib/esm/tools/AccuDrawViewportUI.d.ts +7 -1
  637. package/lib/esm/tools/AccuDrawViewportUI.d.ts.map +1 -1
  638. package/lib/esm/tools/AccuDrawViewportUI.js +30 -20
  639. package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -1
  640. package/lib/esm/tools/ElementSetTool.d.ts +9 -1
  641. package/lib/esm/tools/ElementSetTool.d.ts.map +1 -1
  642. package/lib/esm/tools/ElementSetTool.js +130 -9
  643. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  644. package/lib/esm/tools/MeasureTool.d.ts +9 -0
  645. package/lib/esm/tools/MeasureTool.d.ts.map +1 -1
  646. package/lib/esm/tools/MeasureTool.js +53 -22
  647. package/lib/esm/tools/MeasureTool.js.map +1 -1
  648. package/lib/esm/tools/SelectTool.d.ts +2 -2
  649. package/lib/esm/tools/SelectTool.d.ts.map +1 -1
  650. package/lib/esm/tools/SelectTool.js +26 -97
  651. package/lib/esm/tools/SelectTool.js.map +1 -1
  652. package/lib/esm/tools/Tool.d.ts +10 -1
  653. package/lib/esm/tools/Tool.d.ts.map +1 -1
  654. package/lib/esm/tools/Tool.js +27 -4
  655. package/lib/esm/tools/Tool.js.map +1 -1
  656. package/lib/esm/tools/ToolAdmin.d.ts +1 -0
  657. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  658. package/lib/esm/tools/ToolAdmin.js +8 -2
  659. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  660. package/lib/esm/tools/ToolSettings.d.ts +5 -0
  661. package/lib/esm/tools/ToolSettings.d.ts.map +1 -1
  662. package/lib/esm/tools/ToolSettings.js +5 -0
  663. package/lib/esm/tools/ToolSettings.js.map +1 -1
  664. package/lib/esm/tools/ViewTool.d.ts +26 -18
  665. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  666. package/lib/esm/tools/ViewTool.js +39 -87
  667. package/lib/esm/tools/ViewTool.js.map +1 -1
  668. package/lib/public/locales/en/CoreTools.json +0 -5
  669. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  670. package/lib/public/sprites/SnapPerpendicularPoint.png +0 -0
  671. package/lib/public/sprites/SnapTangentPoint.png +0 -0
  672. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  673. package/package.json +20 -16
  674. package/lib/cjs/tile/LayerTileTreeHandler.d.ts.map +0 -1
  675. package/lib/cjs/tile/LayerTileTreeHandler.js.map +0 -1
  676. package/lib/cjs/tile/LayerTileTreeReferenceHandler.d.ts.map +0 -1
  677. package/lib/cjs/tile/LayerTileTreeReferenceHandler.js.map +0 -1
  678. package/lib/esm/tile/LayerTileTreeHandler.d.ts.map +0 -1
  679. package/lib/esm/tile/LayerTileTreeHandler.js.map +0 -1
  680. package/lib/esm/tile/LayerTileTreeReferenceHandler.d.ts.map +0 -1
  681. package/lib/esm/tile/LayerTileTreeReferenceHandler.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ModelState.d.ts","sourceRoot":"","sources":["../../src/ModelState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelState.d.ts","sourceRoot":"","sources":["../../src/ModelState.ts"],"names":[],"mappings":"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"}
@@ -96,6 +96,8 @@ export class GeometricModelState extends ModelState {
96
96
  const spatialModel = this.asSpatialModel;
97
97
  const rdSourceKey = this.jsonProperties.rdSourceKey;
98
98
  const getDisplaySettings = () => view.displayStyle.settings.getRealityModelDisplaySettings(this.id) ?? RealityModelDisplaySettings.defaults;
99
+ const getBackgroundBase = () => view.displayStyle.settings?.mapImagery.backgroundBase;
100
+ const getBackgroundLayers = () => view.displayStyle.settings?.mapImagery.backgroundLayers;
99
101
  if (rdSourceKey) {
100
102
  const useOrbitGtTileTreeReference = rdSourceKey.format === RealityDataFormat.OPC;
101
103
  const treeRef = (!useOrbitGtTileTreeReference) ?
@@ -107,8 +109,8 @@ export class GeometricModelState extends ModelState {
107
109
  // url: tilesetUrl, // If rdSourceKey is defined, url is not used
108
110
  classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,
109
111
  getDisplaySettings,
110
- getBackgroundBase: () => view.displayStyle.settings.mapImagery.backgroundBase,
111
- getBackgroundLayers: () => view.displayStyle.settings.mapImagery.backgroundLayers,
112
+ getBackgroundBase,
113
+ getBackgroundLayers,
112
114
  }) :
113
115
  createOrbitGtTileTreeReference({
114
116
  rdSourceKey,
@@ -157,11 +159,11 @@ export class GeometricModelState extends ModelState {
157
159
  tilesetToDbTransform: this.jsonProperties.tilesetToDbTransform,
158
160
  classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,
159
161
  getDisplaySettings,
160
- getBackgroundBase: () => view.displayStyle.settings.mapImagery.backgroundBase,
161
- getBackgroundLayers: () => view.displayStyle.settings.mapImagery.backgroundLayers,
162
+ getBackgroundBase,
163
+ getBackgroundLayers,
162
164
  });
163
165
  }
164
- return createPrimaryTileTreeReference(view, this);
166
+ return createPrimaryTileTreeReference(view, this, getBackgroundBase, getBackgroundLayers);
165
167
  }
166
168
  }
167
169
  /** Represents the front-end state of a [GeometricModel2d]($backend).
@@ -1 +1 @@
1
- {"version":3,"file":"ModelState.js","sourceRoot":"","sources":["../../src/ModelState.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 ModelState\r\n */\r\n\r\nimport { Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\r\nimport {\r\n GeometricModel2dProps, GeometricModel3dProps, GeometricModelProps, ModelProps, RealityDataFormat, RealityDataSourceKey, RealityModelDisplaySettings, RelatedElement,\r\n} from \"@itwin/core-common\";\r\nimport { Point2d, Range3d } from \"@itwin/core-geometry\";\r\nimport { EntityState } from \"./EntityState\";\r\nimport { HitDetail } from \"./HitDetail\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { RealityDataSource } from \"./RealityDataSource\";\r\nimport { createOrbitGtTileTreeReference, createPrimaryTileTreeReference, createRealityTileTreeReference, TileTreeReference } from \"./tile/internal\";\r\nimport { ViewState } from \"./ViewState\";\r\nimport { SpatialClassifiersState } from \"./SpatialClassifiersState\";\r\n\r\n/** Represents the front-end state of a [Model]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class ModelState extends EntityState implements ModelProps {\r\n public static override get className() { return \"Model\"; }\r\n public readonly modeledElement: RelatedElement;\r\n public readonly name: string;\r\n public parentModel: Id64String;\r\n public readonly isPrivate: boolean;\r\n public readonly isTemplate: boolean;\r\n\r\n constructor(props: ModelProps, iModel: IModelConnection, state?: ModelState) {\r\n super(props, iModel, state);\r\n this.modeledElement = RelatedElement.fromJSON(props.modeledElement)!;\r\n this.name = props.name ? props.name : \"\";\r\n this.parentModel = Id64.fromJSON(props.parentModel)!; // NB! Must always match the model of the modeledElement!\r\n this.isPrivate = JsonUtils.asBool(props.isPrivate);\r\n this.isTemplate = JsonUtils.asBool(props.isTemplate);\r\n }\r\n\r\n /** Add all custom-handled properties of a Model to a json object. */\r\n public override toJSON(): ModelProps {\r\n const val = super.toJSON() as ModelProps;\r\n val.modeledElement = this.modeledElement;\r\n val.parentModel = this.parentModel;\r\n val.name = this.name;\r\n if (this.isPrivate)\r\n val.isPrivate = this.isPrivate;\r\n if (this.isTemplate)\r\n val.isTemplate = this.isTemplate;\r\n return val;\r\n }\r\n\r\n /** Determine whether this is a GeometricModel */\r\n public get isGeometricModel(): boolean { return false; }\r\n\r\n /** Attempts to cast this model to a geometric model. */\r\n public get asGeometricModel(): GeometricModelState | undefined { return undefined; }\r\n /** Attempts to cast this model to a 3d geometric model. */\r\n public get asGeometricModel3d(): GeometricModel3dState | undefined { return undefined; }\r\n /** Attempts to cast this model to a 2d geometric model. */\r\n public get asGeometricModel2d(): GeometricModel2dState | undefined { return undefined; }\r\n /** Attempts to cast this model to a spatial model. */\r\n public get asSpatialModel(): SpatialModelState | undefined { return undefined; }\r\n\r\n /**\r\n * Return the tool tip for this model. This is called only if the hit does not return a tooltip.\r\n * @internal\r\n */\r\n public getToolTip(_hit: HitDetail): HTMLElement | string | undefined { return undefined; }\r\n}\r\n\r\n/** Represents the front-end state of a [GeometricModel]($backend).\r\n * The contents of a GeometricModelState can be rendered inside a [[Viewport]].\r\n * @public\r\n * @extensions\r\n */\r\nexport abstract class GeometricModelState extends ModelState implements GeometricModelProps {\r\n public static override get className() { return \"GeometricModel\"; }\r\n /** @internal */\r\n public geometryGuid?: string;\r\n\r\n private _modelRange?: Range3d;\r\n\r\n constructor(props: GeometricModelProps, iModel: IModelConnection, state?: GeometricModelState) {\r\n super(props, iModel, state);\r\n this.geometryGuid = props.geometryGuid;\r\n }\r\n\r\n /** Returns true if this is a 3d model (a [[GeometricModel3dState]]). */\r\n public abstract get is3d(): boolean;\r\n public override get asGeometricModel(): GeometricModelState { return this; }\r\n /** Returns true if this is a 2d model (a [[GeometricModel2dState]]). */\r\n public get is2d(): boolean { return !this.is3d; }\r\n\r\n public override get isGeometricModel(): boolean { return true; }\r\n /** @internal */\r\n public get treeModelId(): Id64String { return this.id; }\r\n\r\n /** Query for the union of the ranges of all the elements in this GeometricModel.\r\n * @note This value is cached after the first time it is called.\r\n * @public\r\n */\r\n public async queryModelRange(): Promise<Range3d> {\r\n if (undefined === this._modelRange) {\r\n const ranges = await this.iModel.models.queryExtents(this.id);\r\n this._modelRange = Range3d.fromJSON(ranges[0]?.extents);\r\n }\r\n\r\n return this._modelRange;\r\n }\r\n\r\n /** @internal */\r\n public createTileTreeReference(view: ViewState): TileTreeReference {\r\n // If this is a reality model, its tile tree is obtained from reality data service URL.\r\n\r\n const spatialModel = this.asSpatialModel;\r\n const rdSourceKey = this.jsonProperties.rdSourceKey;\r\n const getDisplaySettings = () => view.displayStyle.settings.getRealityModelDisplaySettings(this.id) ?? RealityModelDisplaySettings.defaults;\r\n\r\n if (rdSourceKey) {\r\n const useOrbitGtTileTreeReference = rdSourceKey.format === RealityDataFormat.OPC;\r\n\r\n const treeRef = (!useOrbitGtTileTreeReference) ?\r\n createRealityTileTreeReference({\r\n rdSourceKey,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n // url: tilesetUrl, // If rdSourceKey is defined, url is not used\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n getDisplaySettings,\r\n getBackgroundBase: () => view.displayStyle.settings.mapImagery.backgroundBase,\r\n getBackgroundLayers: () => view.displayStyle.settings.mapImagery.backgroundLayers,\r\n }) :\r\n createOrbitGtTileTreeReference({\r\n rdSourceKey,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n // orbitGtBlob: props.orbitGtBlob!, // If rdSourceKey is defined, orbitGtBlob is not used\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n getDisplaySettings,\r\n });\r\n return treeRef;\r\n }\r\n\r\n const orbitGtBlob = this.jsonProperties.orbitGtBlob;\r\n\r\n // If this is an OrbitGt reality model, create it's reference\r\n if(orbitGtBlob) {\r\n let orbitGtName = \"\";\r\n if (orbitGtBlob.blobFileName !== \"\") {\r\n if (orbitGtBlob.blobFileName[0] === \"/\")\r\n orbitGtName = orbitGtBlob.blobFileName.substring(1);\r\n else\r\n orbitGtName = orbitGtBlob.blobFileName;\r\n }\r\n // Create rdSourceKey if not provided\r\n const rdSourceKeyOGT: RealityDataSourceKey = RealityDataSource.createKeyFromOrbitGtBlobProps(orbitGtBlob);\r\n\r\n return createOrbitGtTileTreeReference({\r\n rdSourceKey: rdSourceKeyOGT,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n orbitGtBlob,\r\n name: orbitGtName,\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n getDisplaySettings,\r\n });\r\n }\r\n\r\n // If this is a TileTree reality model, create it's reference\r\n const tilesetUrl = this.jsonProperties.tilesetUrl;\r\n\r\n if(tilesetUrl) {\r\n const rdSourceKeyCS = RealityDataSource.createKeyFromUrl(tilesetUrl);\r\n return createRealityTileTreeReference({\r\n rdSourceKey: rdSourceKeyCS,\r\n url : tilesetUrl,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n tilesetToDbTransform: this.jsonProperties.tilesetToDbTransform,\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n getDisplaySettings,\r\n getBackgroundBase: () => view.displayStyle.settings.mapImagery.backgroundBase,\r\n getBackgroundLayers: () => view.displayStyle.settings.mapImagery.backgroundLayers,\r\n });\r\n }\r\n\r\n return createPrimaryTileTreeReference(view, this);\r\n\r\n }\r\n}\r\n/** Represents the front-end state of a [GeometricModel2d]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class GeometricModel2dState extends GeometricModelState implements GeometricModel2dProps {\r\n public static override get className() { return \"GeometricModel2d\"; }\r\n /** @internal */\r\n public readonly globalOrigin: Point2d;\r\n\r\n constructor(props: GeometricModel2dProps, iModel: IModelConnection, state?: GeometricModel2dState) {\r\n super(props, iModel, state);\r\n this.globalOrigin = Point2d.fromJSON(props.globalOrigin);\r\n }\r\n\r\n public get is3d(): boolean { return false; }\r\n public override get asGeometricModel2d(): GeometricModel2dState { return this; }\r\n\r\n public override toJSON(): GeometricModel2dProps {\r\n const val = super.toJSON() as GeometricModel2dProps;\r\n val.globalOrigin = this.globalOrigin;\r\n return val;\r\n }\r\n}\r\n\r\n/** Represents the front-end state of a [GeometricModel3d]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class GeometricModel3dState extends GeometricModelState {\r\n public static override get className() { return \"GeometricModel3d\"; }\r\n\r\n constructor(props: GeometricModel3dProps, iModel: IModelConnection, state?: GeometricModel3dState) {\r\n super(props, iModel, state);\r\n this.isNotSpatiallyLocated = JsonUtils.asBool(props.isNotSpatiallyLocated);\r\n this.isPlanProjection = JsonUtils.asBool(props.isPlanProjection);\r\n }\r\n\r\n public override toJSON(): GeometricModel3dProps {\r\n const val = super.toJSON() as GeometricModel3dProps;\r\n if (this.isNotSpatiallyLocated)\r\n val.isNotSpatiallyLocated = true;\r\n\r\n if (this.isPlanProjection)\r\n val.isPlanProjection = true;\r\n\r\n return val;\r\n }\r\n\r\n public get is3d(): boolean { return true; }\r\n public override get asGeometricModel3d(): GeometricModel3dState { return this; }\r\n\r\n /** If true, then the elements in this GeometricModel3dState are expected to be in an XY plane.\r\n * @note The associated ECProperty was added to the BisCore schema in version 1.0.8\r\n */\r\n public readonly isPlanProjection: boolean;\r\n\r\n /** If true, then the elements in this GeometricModel3dState are not in real-world coordinates and will not be in the spatial index.\r\n * @note The associated ECProperty was added to the BisCore schema in version 1.0.8\r\n */\r\n public readonly isNotSpatiallyLocated: boolean;\r\n\r\n /** If true, then the elements in this GeometricModel3dState are in real-world coordinates and will be in the spatial index. */\r\n public get isSpatiallyLocated(): boolean { return !this.isNotSpatiallyLocated; }\r\n}\r\n\r\n/** Represents the front-end state of a [SheetModel]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class SheetModelState extends GeometricModel2dState {\r\n public static override get className() { return \"SheetModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [SpatialModel]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class SpatialModelState extends GeometricModel3dState {\r\n /** If this is a reality model, provides access to a list of available spatial classifiers that can be applied to it. */\r\n public readonly classifiers?: SpatialClassifiersState;\r\n\r\n public static override get className() { return \"SpatialModel\"; }\r\n\r\n public override get asSpatialModel(): SpatialModelState { return this; }\r\n\r\n public constructor(props: ModelProps, iModel: IModelConnection, state?: SpatialModelState) {\r\n super(props, iModel, state);\r\n if (this.isRealityModel)\r\n this.classifiers = SpatialClassifiersState.create(this.jsonProperties);\r\n }\r\n\r\n /** Return true if this is a reality model (represented by a 3d tile set). */\r\n public get isRealityModel(): boolean {\r\n return !!this.jsonProperties.tilesetUrl || !!this.jsonProperties.rdSourceKey || !!this.jsonProperties.orbitGtBlob;\r\n }\r\n}\r\n\r\n/** Represents the front-end state of a [PhysicalModel]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class PhysicalModelState extends SpatialModelState {\r\n public static override get className() { return \"PhysicalModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [SpatialLocationModel]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class SpatialLocationModelState extends SpatialModelState {\r\n public static override get className() { return \"SpatialLocationModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [DrawingModel]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class DrawingModelState extends GeometricModel2dState {\r\n public static override get className() { return \"DrawingModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [SectionDrawingModel]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class SectionDrawingModelState extends DrawingModelState {\r\n public static override get className() { return \"SectionDrawingModel\"; }\r\n}\r\n"]}
1
+ {"version":3,"file":"ModelState.js","sourceRoot":"","sources":["../../src/ModelState.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 ModelState\r\n */\r\n\r\nimport { Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\r\nimport {\r\n GeometricModel2dProps, GeometricModel3dProps, GeometricModelProps, ModelProps, RealityDataFormat, RealityDataSourceKey, RealityModelDisplaySettings, RelatedElement,\r\n} from \"@itwin/core-common\";\r\nimport { Point2d, Range3d } from \"@itwin/core-geometry\";\r\nimport { EntityState } from \"./EntityState\";\r\nimport { HitDetail } from \"./HitDetail\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { RealityDataSource } from \"./RealityDataSource\";\r\nimport { createOrbitGtTileTreeReference, createPrimaryTileTreeReference, createRealityTileTreeReference, TileTreeReference } from \"./tile/internal\";\r\nimport { ViewState } from \"./ViewState\";\r\nimport { SpatialClassifiersState } from \"./SpatialClassifiersState\";\r\n\r\n/** Represents the front-end state of a [Model]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class ModelState extends EntityState implements ModelProps {\r\n public static override get className() { return \"Model\"; }\r\n public readonly modeledElement: RelatedElement;\r\n public readonly name: string;\r\n public parentModel: Id64String;\r\n public readonly isPrivate: boolean;\r\n public readonly isTemplate: boolean;\r\n\r\n constructor(props: ModelProps, iModel: IModelConnection, state?: ModelState) {\r\n super(props, iModel, state);\r\n this.modeledElement = RelatedElement.fromJSON(props.modeledElement)!;\r\n this.name = props.name ? props.name : \"\";\r\n this.parentModel = Id64.fromJSON(props.parentModel)!; // NB! Must always match the model of the modeledElement!\r\n this.isPrivate = JsonUtils.asBool(props.isPrivate);\r\n this.isTemplate = JsonUtils.asBool(props.isTemplate);\r\n }\r\n\r\n /** Add all custom-handled properties of a Model to a json object. */\r\n public override toJSON(): ModelProps {\r\n const val = super.toJSON() as ModelProps;\r\n val.modeledElement = this.modeledElement;\r\n val.parentModel = this.parentModel;\r\n val.name = this.name;\r\n if (this.isPrivate)\r\n val.isPrivate = this.isPrivate;\r\n if (this.isTemplate)\r\n val.isTemplate = this.isTemplate;\r\n return val;\r\n }\r\n\r\n /** Determine whether this is a GeometricModel */\r\n public get isGeometricModel(): boolean { return false; }\r\n\r\n /** Attempts to cast this model to a geometric model. */\r\n public get asGeometricModel(): GeometricModelState | undefined { return undefined; }\r\n /** Attempts to cast this model to a 3d geometric model. */\r\n public get asGeometricModel3d(): GeometricModel3dState | undefined { return undefined; }\r\n /** Attempts to cast this model to a 2d geometric model. */\r\n public get asGeometricModel2d(): GeometricModel2dState | undefined { return undefined; }\r\n /** Attempts to cast this model to a spatial model. */\r\n public get asSpatialModel(): SpatialModelState | undefined { return undefined; }\r\n\r\n /**\r\n * Return the tool tip for this model. This is called only if the hit does not return a tooltip.\r\n * @internal\r\n */\r\n public getToolTip(_hit: HitDetail): HTMLElement | string | undefined { return undefined; }\r\n}\r\n\r\n/** Represents the front-end state of a [GeometricModel]($backend).\r\n * The contents of a GeometricModelState can be rendered inside a [[Viewport]].\r\n * @public\r\n * @extensions\r\n */\r\nexport abstract class GeometricModelState extends ModelState implements GeometricModelProps {\r\n public static override get className() { return \"GeometricModel\"; }\r\n /** @internal */\r\n public geometryGuid?: string;\r\n\r\n private _modelRange?: Range3d;\r\n\r\n constructor(props: GeometricModelProps, iModel: IModelConnection, state?: GeometricModelState) {\r\n super(props, iModel, state);\r\n this.geometryGuid = props.geometryGuid;\r\n }\r\n\r\n /** Returns true if this is a 3d model (a [[GeometricModel3dState]]). */\r\n public abstract get is3d(): boolean;\r\n public override get asGeometricModel(): GeometricModelState { return this; }\r\n /** Returns true if this is a 2d model (a [[GeometricModel2dState]]). */\r\n public get is2d(): boolean { return !this.is3d; }\r\n\r\n public override get isGeometricModel(): boolean { return true; }\r\n /** @internal */\r\n public get treeModelId(): Id64String { return this.id; }\r\n\r\n /** Query for the union of the ranges of all the elements in this GeometricModel.\r\n * @note This value is cached after the first time it is called.\r\n * @public\r\n */\r\n public async queryModelRange(): Promise<Range3d> {\r\n if (undefined === this._modelRange) {\r\n const ranges = await this.iModel.models.queryExtents(this.id);\r\n this._modelRange = Range3d.fromJSON(ranges[0]?.extents);\r\n }\r\n\r\n return this._modelRange;\r\n }\r\n\r\n /** @internal */\r\n public createTileTreeReference(view: ViewState): TileTreeReference {\r\n // If this is a reality model, its tile tree is obtained from reality data service URL.\r\n\r\n const spatialModel = this.asSpatialModel;\r\n const rdSourceKey = this.jsonProperties.rdSourceKey;\r\n const getDisplaySettings = () => view.displayStyle.settings.getRealityModelDisplaySettings(this.id) ?? RealityModelDisplaySettings.defaults;\r\n const getBackgroundBase = () => view.displayStyle.settings?.mapImagery.backgroundBase;\r\n const getBackgroundLayers = () => view.displayStyle.settings?.mapImagery.backgroundLayers\r\n\r\n if (rdSourceKey) {\r\n const useOrbitGtTileTreeReference = rdSourceKey.format === RealityDataFormat.OPC;\r\n\r\n const treeRef = (!useOrbitGtTileTreeReference) ?\r\n createRealityTileTreeReference({\r\n rdSourceKey,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n // url: tilesetUrl, // If rdSourceKey is defined, url is not used\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n getDisplaySettings,\r\n getBackgroundBase,\r\n getBackgroundLayers,\r\n }) :\r\n createOrbitGtTileTreeReference({\r\n rdSourceKey,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n // orbitGtBlob: props.orbitGtBlob!, // If rdSourceKey is defined, orbitGtBlob is not used\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n getDisplaySettings,\r\n });\r\n return treeRef;\r\n }\r\n\r\n const orbitGtBlob = this.jsonProperties.orbitGtBlob;\r\n\r\n // If this is an OrbitGt reality model, create it's reference\r\n if(orbitGtBlob) {\r\n let orbitGtName = \"\";\r\n if (orbitGtBlob.blobFileName !== \"\") {\r\n if (orbitGtBlob.blobFileName[0] === \"/\")\r\n orbitGtName = orbitGtBlob.blobFileName.substring(1);\r\n else\r\n orbitGtName = orbitGtBlob.blobFileName;\r\n }\r\n // Create rdSourceKey if not provided\r\n const rdSourceKeyOGT: RealityDataSourceKey = RealityDataSource.createKeyFromOrbitGtBlobProps(orbitGtBlob);\r\n\r\n return createOrbitGtTileTreeReference({\r\n rdSourceKey: rdSourceKeyOGT,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n orbitGtBlob,\r\n name: orbitGtName,\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n getDisplaySettings,\r\n });\r\n }\r\n\r\n // If this is a TileTree reality model, create it's reference\r\n const tilesetUrl = this.jsonProperties.tilesetUrl;\r\n\r\n if(tilesetUrl) {\r\n const rdSourceKeyCS = RealityDataSource.createKeyFromUrl(tilesetUrl);\r\n return createRealityTileTreeReference({\r\n rdSourceKey: rdSourceKeyCS,\r\n url : tilesetUrl,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n tilesetToDbTransform: this.jsonProperties.tilesetToDbTransform,\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n getDisplaySettings,\r\n getBackgroundBase,\r\n getBackgroundLayers,\r\n });\r\n }\r\n\r\n return createPrimaryTileTreeReference(view, this, getBackgroundBase, getBackgroundLayers);\r\n }\r\n}\r\n/** Represents the front-end state of a [GeometricModel2d]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class GeometricModel2dState extends GeometricModelState implements GeometricModel2dProps {\r\n public static override get className() { return \"GeometricModel2d\"; }\r\n /** @internal */\r\n public readonly globalOrigin: Point2d;\r\n\r\n constructor(props: GeometricModel2dProps, iModel: IModelConnection, state?: GeometricModel2dState) {\r\n super(props, iModel, state);\r\n this.globalOrigin = Point2d.fromJSON(props.globalOrigin);\r\n }\r\n\r\n public get is3d(): boolean { return false; }\r\n public override get asGeometricModel2d(): GeometricModel2dState { return this; }\r\n\r\n public override toJSON(): GeometricModel2dProps {\r\n const val = super.toJSON() as GeometricModel2dProps;\r\n val.globalOrigin = this.globalOrigin;\r\n return val;\r\n }\r\n}\r\n\r\n/** Represents the front-end state of a [GeometricModel3d]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class GeometricModel3dState extends GeometricModelState {\r\n public static override get className() { return \"GeometricModel3d\"; }\r\n\r\n constructor(props: GeometricModel3dProps, iModel: IModelConnection, state?: GeometricModel3dState) {\r\n super(props, iModel, state);\r\n this.isNotSpatiallyLocated = JsonUtils.asBool(props.isNotSpatiallyLocated);\r\n this.isPlanProjection = JsonUtils.asBool(props.isPlanProjection);\r\n }\r\n\r\n public override toJSON(): GeometricModel3dProps {\r\n const val = super.toJSON() as GeometricModel3dProps;\r\n if (this.isNotSpatiallyLocated)\r\n val.isNotSpatiallyLocated = true;\r\n\r\n if (this.isPlanProjection)\r\n val.isPlanProjection = true;\r\n\r\n return val;\r\n }\r\n\r\n public get is3d(): boolean { return true; }\r\n public override get asGeometricModel3d(): GeometricModel3dState { return this; }\r\n\r\n /** If true, then the elements in this GeometricModel3dState are expected to be in an XY plane.\r\n * @note The associated ECProperty was added to the BisCore schema in version 1.0.8\r\n */\r\n public readonly isPlanProjection: boolean;\r\n\r\n /** If true, then the elements in this GeometricModel3dState are not in real-world coordinates and will not be in the spatial index.\r\n * @note The associated ECProperty was added to the BisCore schema in version 1.0.8\r\n */\r\n public readonly isNotSpatiallyLocated: boolean;\r\n\r\n /** If true, then the elements in this GeometricModel3dState are in real-world coordinates and will be in the spatial index. */\r\n public get isSpatiallyLocated(): boolean { return !this.isNotSpatiallyLocated; }\r\n}\r\n\r\n/** Represents the front-end state of a [SheetModel]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class SheetModelState extends GeometricModel2dState {\r\n public static override get className() { return \"SheetModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [SpatialModel]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class SpatialModelState extends GeometricModel3dState {\r\n /** If this is a reality model, provides access to a list of available spatial classifiers that can be applied to it. */\r\n public readonly classifiers?: SpatialClassifiersState;\r\n\r\n public static override get className() { return \"SpatialModel\"; }\r\n\r\n public override get asSpatialModel(): SpatialModelState { return this; }\r\n\r\n public constructor(props: ModelProps, iModel: IModelConnection, state?: SpatialModelState) {\r\n super(props, iModel, state);\r\n if (this.isRealityModel)\r\n this.classifiers = SpatialClassifiersState.create(this.jsonProperties);\r\n }\r\n\r\n /** Return true if this is a reality model (represented by a 3d tile set). */\r\n public get isRealityModel(): boolean {\r\n return !!this.jsonProperties.tilesetUrl || !!this.jsonProperties.rdSourceKey || !!this.jsonProperties.orbitGtBlob;\r\n }\r\n}\r\n\r\n/** Represents the front-end state of a [PhysicalModel]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class PhysicalModelState extends SpatialModelState {\r\n public static override get className() { return \"PhysicalModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [SpatialLocationModel]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class SpatialLocationModelState extends SpatialModelState {\r\n public static override get className() { return \"SpatialLocationModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [DrawingModel]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class DrawingModelState extends GeometricModel2dState {\r\n public static override get className() { return \"DrawingModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [SectionDrawingModel]($backend).\r\n * @public\r\n * @extensions\r\n */\r\nexport class SectionDrawingModelState extends DrawingModelState {\r\n public static override get className() { return \"SectionDrawingModel\"; }\r\n}\r\n"]}
@@ -2,7 +2,7 @@
2
2
  * @module NativeApp
3
3
  */
4
4
  import { BeEvent, GuidString } from "@itwin/core-bentley";
5
- import { BriefcaseDownloader, BriefcaseProps, IModelVersion, InternetConnectivityStatus, IpcSocketFrontend, LocalBriefcaseProps, NativeAppFunctions, StorageValue, SyncMode } from "@itwin/core-common";
5
+ import { BriefcaseDownloader, BriefcaseProps, CatalogIModel, IModelVersion, InternetConnectivityStatus, IpcSocketFrontend, LocalBriefcaseProps, NativeAppFunctions, StorageValue, SyncMode } from "@itwin/core-common";
6
6
  import { IpcAppOptions } from "./IpcApp";
7
7
  import { OnDownloadProgress } from "./BriefcaseConnection";
8
8
  /** Properties for specifying the BriefcaseId for downloading. May either specify a BriefcaseId directly (preferable) or, for
@@ -44,6 +44,7 @@ export declare class NativeApp {
44
44
  private static _removeAppNotify?;
45
45
  /** A Proxy to call one of the [NativeAppFunctions]($common) functions via IPC. */
46
46
  static nativeAppIpc: import("@itwin/core-bentley").PickAsyncMethods<NativeAppFunctions>;
47
+ static catalogIpc: import("@itwin/core-bentley").PickAsyncMethods<CatalogIModel.IpcMethods>;
47
48
  private static _storages;
48
49
  private static _onOnline;
49
50
  private static _onOffline;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeApp.d.ts","sourceRoot":"","sources":["../../src/NativeApp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NativeApp.d.ts","sourceRoot":"","sources":["../../src/NativeApp.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ export class NativeApp {
27
27
  static _removeAppNotify;
28
28
  /** A Proxy to call one of the [NativeAppFunctions]($common) functions via IPC. */
29
29
  static nativeAppIpc = IpcApp.makeIpcProxy(nativeAppIpcStrings.channelName);
30
+ static catalogIpc = IpcApp.makeIpcProxy("catalogIModel/ipc");
30
31
  static _storages = new Map();
31
32
  static _onOnline = async () => {
32
33
  await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Online);
@@ -1 +1 @@
1
- {"version":3,"file":"NativeApp.js","sourceRoot":"","sources":["../../src/NativeApp.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module NativeApp\n */\n\nimport { BeEvent, GuidString, Logger } from \"@itwin/core-bentley\";\nimport {\n BriefcaseDownloader, BriefcaseProps, IModelVersion, InternetConnectivityStatus, IpcSocketFrontend, LocalBriefcaseProps,\n NativeAppFunctions, nativeAppIpcStrings, NativeAppNotifications, OverriddenBy,\n RemoveFunction, RequestNewBriefcaseProps, StorageValue, SyncMode,\n} from \"@itwin/core-common\";\nimport { FrontendLoggerCategory } from \"./common/FrontendLoggerCategory\";\nimport { IpcApp, IpcAppOptions, NotificationHandler } from \"./IpcApp\";\nimport { NativeAppLogger } from \"./NativeAppLogger\";\nimport { OnDownloadProgress } from \"./BriefcaseConnection\";\nimport { _callIpcChannel } from \"./common/internal/Symbols\";\n\n/** Properties for specifying the BriefcaseId for downloading. May either specify a BriefcaseId directly (preferable) or, for\n * backwards compatibility, a [SyncMode]($common). If [SyncMode.PullAndPush]($common) is supplied, a new briefcaseId will be acquired.\n * @public\n */\nexport type DownloadBriefcaseId =\n { syncMode?: SyncMode, briefcaseId?: never } |\n { briefcaseId: number, syncMode?: never };\n\n/**\n* Options to download a briefcase\n* @public\n*/\nexport type DownloadBriefcaseOptions = DownloadBriefcaseId & {\n /** the full path for the briefcase file */\n fileName?: string;\n /** Function called regularly to report progress of download. */\n progressCallback?: OnDownloadProgress;\n /** interval for calling progress function, in milliseconds */\n progressInterval?: number;\n};\n\n/** NativeApp notifications from backend */\nclass NativeAppNotifyHandler extends NotificationHandler implements NativeAppNotifications {\n public get channelName() { return nativeAppIpcStrings.notifyChannel; }\n public notifyInternetConnectivityChanged(status: InternetConnectivityStatus) {\n Logger.logInfo(FrontendLoggerCategory.NativeApp, \"Internet connectivity changed\");\n NativeApp.onInternetConnectivityChanged.raiseEvent(status);\n }\n}\n\n/**\n * Options for [[NativeApp.startup]]\n * @public\n */\nexport interface NativeAppOpts extends IpcAppOptions {\n nativeApp?: object;\n}\n\n/**\n * The frontend of a native application\n * @see [Native Applications]($docs/learning/NativeApps.md)\n * @public\n */\nexport class NativeApp {\n private static _removeAppNotify?: RemoveFunction;\n\n /** A Proxy to call one of the [NativeAppFunctions]($common) functions via IPC. */\n public static nativeAppIpc = IpcApp.makeIpcProxy<NativeAppFunctions>(nativeAppIpcStrings.channelName);\n\n private static _storages = new Map<string, Storage>();\n private static _onOnline = async () => {\n await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Online);\n };\n private static _onOffline = async () => {\n await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Offline);\n };\n private static async setConnectivity(by: OverriddenBy, status: InternetConnectivityStatus) {\n await this.nativeAppIpc.overrideInternetConnectivity(by, status);\n }\n private static hookBrowserConnectivityEvents() {\n if (typeof window === \"object\" && window.ononline && window.onoffline) {\n window.addEventListener(\"online\", this._onOnline);\n window.addEventListener(\"offline\", this._onOffline);\n }\n }\n private static unhookBrowserConnectivityEvents() {\n if (typeof window === \"object\" && window.ononline && window.onoffline) {\n window.removeEventListener(\"online\", this._onOnline);\n window.removeEventListener(\"offline\", this._onOffline);\n }\n }\n /** event called when internet connectivity changes, if known */\n public static onInternetConnectivityChanged = new BeEvent<(status: InternetConnectivityStatus) => void>();\n\n /** determine whether the app currently has internet connectivity, if known */\n public static async checkInternetConnectivity(): Promise<InternetConnectivityStatus> {\n return this.nativeAppIpc.checkInternetConnectivity();\n }\n /** @internal */\n public static async overrideInternetConnectivity(status: InternetConnectivityStatus): Promise<void> {\n return this.nativeAppIpc.overrideInternetConnectivity(OverriddenBy.User, status);\n }\n private static _isValid = false;\n public static get isValid(): boolean { return this._isValid; }\n\n /**\n * This is called by either ElectronApp.startup or MobileApp.startup - it should not be called directly\n * @internal\n */\n public static async startup(ipc: IpcSocketFrontend, opts?: NativeAppOpts) {\n await IpcApp.startup(ipc, opts);\n if (this._isValid)\n return;\n this._isValid = true;\n\n this._removeAppNotify = NativeAppNotifyHandler.register(); // receives notifications from backend\n NativeApp.hookBrowserConnectivityEvents();\n\n // initialize current online state.\n if (window.navigator.onLine) {\n await this.setConnectivity(OverriddenBy.Browser, window.navigator.onLine ? InternetConnectivityStatus.Online : InternetConnectivityStatus.Offline);\n }\n }\n\n /** @internal */\n public static async shutdown() {\n this._removeAppNotify?.();\n NativeApp.unhookBrowserConnectivityEvents();\n await NativeAppLogger.flush();\n await IpcApp.shutdown();\n this._isValid = false;\n }\n\n public static async requestDownloadBriefcase(iTwinId: string, iModelId: string, downloadOptions: DownloadBriefcaseOptions,\n asOf?: IModelVersion): Promise<BriefcaseDownloader>;\n\n public static async requestDownloadBriefcase(\n iTwinId: string,\n iModelId: string,\n downloadOptions: DownloadBriefcaseOptions,\n asOf: IModelVersion = IModelVersion.latest()\n ): Promise<BriefcaseDownloader> {\n const shouldReportProgress = !!downloadOptions.progressCallback;\n\n let stopProgressEvents = () => { };\n if (shouldReportProgress) {\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\n downloadOptions.progressCallback?.(data);\n };\n\n stopProgressEvents = IpcApp.addListener(`nativeApp.progress-${iModelId}`, handleProgress);\n }\n\n const briefcaseId = (undefined !== downloadOptions.briefcaseId) ? downloadOptions.briefcaseId :\n (downloadOptions.syncMode === SyncMode.PullOnly ? 0 : await this.nativeAppIpc.acquireNewBriefcaseId(iModelId));\n\n const fileName = downloadOptions.fileName ?? await this.getBriefcaseFileName({ briefcaseId, iModelId });\n const requestProps: RequestNewBriefcaseProps = { iModelId, briefcaseId, iTwinId, asOf: asOf.toJSON(), fileName };\n\n const doDownload = async (): Promise<void> => {\n try {\n await this.nativeAppIpc.downloadBriefcase(requestProps, shouldReportProgress, downloadOptions.progressInterval);\n } finally {\n stopProgressEvents();\n }\n };\n\n const requestCancel = async (): Promise<boolean> => {\n const status = await this.nativeAppIpc.requestCancelDownloadBriefcase(fileName);\n if (status)\n stopProgressEvents();\n return status;\n };\n\n return { briefcaseId, fileName, downloadPromise: doDownload(), requestCancel };\n }\n\n /** Get the full path filename for a briefcase within the briefcase cache */\n public static async getBriefcaseFileName(props: BriefcaseProps): Promise<string> {\n return this.nativeAppIpc.getBriefcaseFileName(props);\n }\n\n /** Delete an existing briefcase\n * @param fileName the briefcase fileName\n */\n public static async deleteBriefcase(fileName: string): Promise<void> {\n await this.nativeAppIpc.deleteBriefcaseFiles(fileName);\n }\n\n /** Get a list of all briefcase files held in the local briefcase cache directory */\n public static async getCachedBriefcases(iModelId?: GuidString): Promise<LocalBriefcaseProps[]> {\n return this.nativeAppIpc.getCachedBriefcases(iModelId);\n }\n\n /**\n * Open a [[Storage]]. Creates a new Storage with that name if it does not already exist.\n * @param name Should be a local filename without an extension.\n * @returns a Promise for the [[Storage]].\n */\n public static async openStorage(name: string): Promise<Storage> {\n if (this._storages.has(name))\n return this._storages.get(name)!;\n\n const storage = new Storage(await this.nativeAppIpc.storageMgrOpen(name));\n this._storages.set(storage.id, storage);\n return storage;\n }\n\n /**\n * Close a Storage and optionally delete it.\n * @param storage normally not call directly instead use Storage.close()\n * @param deleteStorage if true, delete the storage from disk after closing it.\n */\n public static async closeStorage(storage: Storage, deleteStorage: boolean = false): Promise<void> {\n if (!this._storages.has(storage.id))\n throw new Error(`Storage [Id=${storage.id}] not open`);\n\n await this.nativeAppIpc.storageMgrClose(storage.id, deleteStorage);\n this._storages.delete(storage.id);\n }\n\n /** Get the list of existing Storages on the local disk. */\n public static async getStorageNames(): Promise<string[]> {\n return NativeApp.nativeAppIpc.storageMgrNames();\n }\n}\n\n/**\n * A local disk-based cache for key value pairs for NativeApps.\n * @note This should be used only for local caching, since its not guaranteed to exist permanently.\n * @public\n */\nexport class Storage {\n constructor(public readonly id: string) { }\n\n /** get the type of a value for a key, or undefined if not present. */\n public async getValueType(key: string): Promise<\"number\" | \"string\" | \"boolean\" | \"Uint8Array\" | \"null\" | undefined> {\n return NativeApp.nativeAppIpc.storageGetValueType(this.id, key);\n }\n\n /** Get the value for a key */\n public async getData(key: string): Promise<StorageValue> {\n return NativeApp.nativeAppIpc.storageGet(this.id, key);\n }\n\n /** Set value for a key */\n public async setData(key: string, value: StorageValue): Promise<void> {\n return NativeApp.nativeAppIpc.storageSet(this.id, key, value);\n }\n\n /**\n * Return an array of all keys in this Storage.\n * @note This can be expensive, depending on the number of keys present.\n */\n public async getKeys(): Promise<string[]> {\n return NativeApp.nativeAppIpc.storageKeys(this.id);\n }\n\n /** Remove a key and its data. */\n public async removeData(key: string): Promise<void> {\n return NativeApp.nativeAppIpc.storageRemove(this.id, key);\n }\n\n /** Remove all keys and their data. */\n public async removeAll(): Promise<void> {\n return NativeApp.nativeAppIpc.storageRemoveAll(this.id);\n }\n}\n"]}
1
+ {"version":3,"file":"NativeApp.js","sourceRoot":"","sources":["../../src/NativeApp.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module NativeApp\n */\n\nimport { BeEvent, GuidString, Logger } from \"@itwin/core-bentley\";\nimport {\n BriefcaseDownloader, BriefcaseProps, CatalogIModel, IModelVersion, InternetConnectivityStatus, IpcSocketFrontend, LocalBriefcaseProps,\n NativeAppFunctions, nativeAppIpcStrings, NativeAppNotifications, OverriddenBy,\n RemoveFunction, RequestNewBriefcaseProps, StorageValue, SyncMode,\n} from \"@itwin/core-common\";\nimport { FrontendLoggerCategory } from \"./common/FrontendLoggerCategory\";\nimport { IpcApp, IpcAppOptions, NotificationHandler } from \"./IpcApp\";\nimport { NativeAppLogger } from \"./NativeAppLogger\";\nimport { OnDownloadProgress } from \"./BriefcaseConnection\";\nimport { _callIpcChannel } from \"./common/internal/Symbols\";\n\n/** Properties for specifying the BriefcaseId for downloading. May either specify a BriefcaseId directly (preferable) or, for\n * backwards compatibility, a [SyncMode]($common). If [SyncMode.PullAndPush]($common) is supplied, a new briefcaseId will be acquired.\n * @public\n */\nexport type DownloadBriefcaseId =\n { syncMode?: SyncMode, briefcaseId?: never } |\n { briefcaseId: number, syncMode?: never };\n\n/**\n* Options to download a briefcase\n* @public\n*/\nexport type DownloadBriefcaseOptions = DownloadBriefcaseId & {\n /** the full path for the briefcase file */\n fileName?: string;\n /** Function called regularly to report progress of download. */\n progressCallback?: OnDownloadProgress;\n /** interval for calling progress function, in milliseconds */\n progressInterval?: number;\n};\n\n/** NativeApp notifications from backend */\nclass NativeAppNotifyHandler extends NotificationHandler implements NativeAppNotifications {\n public get channelName() { return nativeAppIpcStrings.notifyChannel; }\n public notifyInternetConnectivityChanged(status: InternetConnectivityStatus) {\n Logger.logInfo(FrontendLoggerCategory.NativeApp, \"Internet connectivity changed\");\n NativeApp.onInternetConnectivityChanged.raiseEvent(status);\n }\n}\n\n/**\n * Options for [[NativeApp.startup]]\n * @public\n */\nexport interface NativeAppOpts extends IpcAppOptions {\n nativeApp?: object;\n}\n\n/**\n * The frontend of a native application\n * @see [Native Applications]($docs/learning/NativeApps.md)\n * @public\n */\nexport class NativeApp {\n private static _removeAppNotify?: RemoveFunction;\n\n /** A Proxy to call one of the [NativeAppFunctions]($common) functions via IPC. */\n public static nativeAppIpc = IpcApp.makeIpcProxy<NativeAppFunctions>(nativeAppIpcStrings.channelName);\n public static catalogIpc = IpcApp.makeIpcProxy<CatalogIModel.IpcMethods, CatalogIModel.IpcChannel>(\"catalogIModel/ipc\");\n\n private static _storages = new Map<string, Storage>();\n private static _onOnline = async () => {\n await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Online);\n };\n private static _onOffline = async () => {\n await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Offline);\n };\n private static async setConnectivity(by: OverriddenBy, status: InternetConnectivityStatus) {\n await this.nativeAppIpc.overrideInternetConnectivity(by, status);\n }\n private static hookBrowserConnectivityEvents() {\n if (typeof window === \"object\" && window.ononline && window.onoffline) {\n window.addEventListener(\"online\", this._onOnline);\n window.addEventListener(\"offline\", this._onOffline);\n }\n }\n private static unhookBrowserConnectivityEvents() {\n if (typeof window === \"object\" && window.ononline && window.onoffline) {\n window.removeEventListener(\"online\", this._onOnline);\n window.removeEventListener(\"offline\", this._onOffline);\n }\n }\n /** event called when internet connectivity changes, if known */\n public static onInternetConnectivityChanged = new BeEvent<(status: InternetConnectivityStatus) => void>();\n\n /** determine whether the app currently has internet connectivity, if known */\n public static async checkInternetConnectivity(): Promise<InternetConnectivityStatus> {\n return this.nativeAppIpc.checkInternetConnectivity();\n }\n /** @internal */\n public static async overrideInternetConnectivity(status: InternetConnectivityStatus): Promise<void> {\n return this.nativeAppIpc.overrideInternetConnectivity(OverriddenBy.User, status);\n }\n private static _isValid = false;\n public static get isValid(): boolean { return this._isValid; }\n\n /**\n * This is called by either ElectronApp.startup or MobileApp.startup - it should not be called directly\n * @internal\n */\n public static async startup(ipc: IpcSocketFrontend, opts?: NativeAppOpts) {\n await IpcApp.startup(ipc, opts);\n if (this._isValid)\n return;\n this._isValid = true;\n\n this._removeAppNotify = NativeAppNotifyHandler.register(); // receives notifications from backend\n NativeApp.hookBrowserConnectivityEvents();\n\n // initialize current online state.\n if (window.navigator.onLine) {\n await this.setConnectivity(OverriddenBy.Browser, window.navigator.onLine ? InternetConnectivityStatus.Online : InternetConnectivityStatus.Offline);\n }\n }\n\n /** @internal */\n public static async shutdown() {\n this._removeAppNotify?.();\n NativeApp.unhookBrowserConnectivityEvents();\n await NativeAppLogger.flush();\n await IpcApp.shutdown();\n this._isValid = false;\n }\n\n public static async requestDownloadBriefcase(iTwinId: string, iModelId: string, downloadOptions: DownloadBriefcaseOptions,\n asOf?: IModelVersion): Promise<BriefcaseDownloader>;\n\n public static async requestDownloadBriefcase(\n iTwinId: string,\n iModelId: string,\n downloadOptions: DownloadBriefcaseOptions,\n asOf: IModelVersion = IModelVersion.latest()\n ): Promise<BriefcaseDownloader> {\n const shouldReportProgress = !!downloadOptions.progressCallback;\n\n let stopProgressEvents = () => { };\n if (shouldReportProgress) {\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\n downloadOptions.progressCallback?.(data);\n };\n\n stopProgressEvents = IpcApp.addListener(`nativeApp.progress-${iModelId}`, handleProgress);\n }\n\n const briefcaseId = (undefined !== downloadOptions.briefcaseId) ? downloadOptions.briefcaseId :\n (downloadOptions.syncMode === SyncMode.PullOnly ? 0 : await this.nativeAppIpc.acquireNewBriefcaseId(iModelId));\n\n const fileName = downloadOptions.fileName ?? await this.getBriefcaseFileName({ briefcaseId, iModelId });\n const requestProps: RequestNewBriefcaseProps = { iModelId, briefcaseId, iTwinId, asOf: asOf.toJSON(), fileName };\n\n const doDownload = async (): Promise<void> => {\n try {\n await this.nativeAppIpc.downloadBriefcase(requestProps, shouldReportProgress, downloadOptions.progressInterval);\n } finally {\n stopProgressEvents();\n }\n };\n\n const requestCancel = async (): Promise<boolean> => {\n const status = await this.nativeAppIpc.requestCancelDownloadBriefcase(fileName);\n if (status)\n stopProgressEvents();\n return status;\n };\n\n return { briefcaseId, fileName, downloadPromise: doDownload(), requestCancel };\n }\n\n /** Get the full path filename for a briefcase within the briefcase cache */\n public static async getBriefcaseFileName(props: BriefcaseProps): Promise<string> {\n return this.nativeAppIpc.getBriefcaseFileName(props);\n }\n\n /** Delete an existing briefcase\n * @param fileName the briefcase fileName\n */\n public static async deleteBriefcase(fileName: string): Promise<void> {\n await this.nativeAppIpc.deleteBriefcaseFiles(fileName);\n }\n\n /** Get a list of all briefcase files held in the local briefcase cache directory */\n public static async getCachedBriefcases(iModelId?: GuidString): Promise<LocalBriefcaseProps[]> {\n return this.nativeAppIpc.getCachedBriefcases(iModelId);\n }\n\n /**\n * Open a [[Storage]]. Creates a new Storage with that name if it does not already exist.\n * @param name Should be a local filename without an extension.\n * @returns a Promise for the [[Storage]].\n */\n public static async openStorage(name: string): Promise<Storage> {\n if (this._storages.has(name))\n return this._storages.get(name)!;\n\n const storage = new Storage(await this.nativeAppIpc.storageMgrOpen(name));\n this._storages.set(storage.id, storage);\n return storage;\n }\n\n /**\n * Close a Storage and optionally delete it.\n * @param storage normally not call directly instead use Storage.close()\n * @param deleteStorage if true, delete the storage from disk after closing it.\n */\n public static async closeStorage(storage: Storage, deleteStorage: boolean = false): Promise<void> {\n if (!this._storages.has(storage.id))\n throw new Error(`Storage [Id=${storage.id}] not open`);\n\n await this.nativeAppIpc.storageMgrClose(storage.id, deleteStorage);\n this._storages.delete(storage.id);\n }\n\n /** Get the list of existing Storages on the local disk. */\n public static async getStorageNames(): Promise<string[]> {\n return NativeApp.nativeAppIpc.storageMgrNames();\n }\n}\n\n/**\n * A local disk-based cache for key value pairs for NativeApps.\n * @note This should be used only for local caching, since its not guaranteed to exist permanently.\n * @public\n */\nexport class Storage {\n constructor(public readonly id: string) { }\n\n /** get the type of a value for a key, or undefined if not present. */\n public async getValueType(key: string): Promise<\"number\" | \"string\" | \"boolean\" | \"Uint8Array\" | \"null\" | undefined> {\n return NativeApp.nativeAppIpc.storageGetValueType(this.id, key);\n }\n\n /** Get the value for a key */\n public async getData(key: string): Promise<StorageValue> {\n return NativeApp.nativeAppIpc.storageGet(this.id, key);\n }\n\n /** Set value for a key */\n public async setData(key: string, value: StorageValue): Promise<void> {\n return NativeApp.nativeAppIpc.storageSet(this.id, key, value);\n }\n\n /**\n * Return an array of all keys in this Storage.\n * @note This can be expensive, depending on the number of keys present.\n */\n public async getKeys(): Promise<string[]> {\n return NativeApp.nativeAppIpc.storageKeys(this.id);\n }\n\n /** Remove a key and its data. */\n public async removeData(key: string): Promise<void> {\n return NativeApp.nativeAppIpc.storageRemove(this.id, key);\n }\n\n /** Remove all keys and their data. */\n public async removeAll(): Promise<void> {\n return NativeApp.nativeAppIpc.storageRemoveAll(this.id);\n }\n}\n"]}
@@ -25,7 +25,7 @@ export interface SelectAddEvent {
25
25
  type: SelectionSetEventType.Add;
26
26
  /**
27
27
  * The Ids of the elements added to the set.
28
- * @deprecated in 5.0. Use the [[additions]] attribute instead.
28
+ * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use the [[additions]] attribute instead.
29
29
  */
30
30
  added: Id64Arg;
31
31
  /** A collection of geometric element, model and subcategory ids that have been added to selection set. */
@@ -42,7 +42,7 @@ export interface SelectRemoveEvent {
42
42
  type: SelectionSetEventType.Remove | SelectionSetEventType.Clear;
43
43
  /**
44
44
  * The element Ids removed from the set.
45
- * @deprecated in 5.0. Use the [[removals]] attribute instead.
45
+ * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use the [[removals]] attribute instead.
46
46
  */
47
47
  removed: Id64Arg;
48
48
  /** A collection of geometric element, model and subcategory ids that have been removed from selection set. */
@@ -58,14 +58,14 @@ export interface SelectReplaceEvent {
58
58
  type: SelectionSetEventType.Replace;
59
59
  /**
60
60
  * The element Ids added to the set.
61
- * @deprecated in 5.0. Use the [[additions]] attribute instead.
61
+ * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use the [[additions]] attribute instead.
62
62
  */
63
63
  added: Id64Arg;
64
64
  /** A collection of geometric element, model and subcategory ids that have been added to selection set. */
65
65
  additions: SelectableIds;
66
66
  /**
67
67
  * The element Ids removed from the set.
68
- * @deprecated in 5.0. Use the [[removals]] attribute instead.
68
+ * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use the [[removals]] attribute instead.
69
69
  */
70
70
  removed: Id64Arg;
71
71
  /** A collection of geometric element, model and subcategory ids that have been removed from selection set. */
@@ -163,7 +163,7 @@ export declare class HiliteSet {
163
163
  /** Toggle the hilited state of one or more elements.
164
164
  * @param arg the ID(s) of the elements whose state is to be toggled.
165
165
  * @param onOff True to add the elements to the hilited set, false to remove them.
166
- * @deprecated in 5.0. Use [[add]], [[remove]], [[replace]] instead.
166
+ * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [[add]], [[remove]], [[replace]] instead.
167
167
  */
168
168
  setHilite(arg: Id64Arg, onOff: boolean): void;
169
169
  }
@@ -203,12 +203,12 @@ export declare class SelectionSet {
203
203
  get isActive(): boolean;
204
204
  /** Return true if elemId is in this `SelectionSet`.
205
205
  * @see [[isSelected]]
206
- * @deprecated in 5.0. Use `SelectionSet.elements.has(elemId)` instead.
206
+ * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `SelectionSet.elements.has(elemId)` instead.
207
207
  */
208
208
  has(elemId?: string): boolean;
209
209
  /** Query whether an Id is in the selection set.
210
210
  * @see [[has]]
211
- * @deprecated in 5.0. Use `SelectionSet.elements.has(elemId)` instead.
211
+ * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `SelectionSet.elements.has(elemId)` instead.
212
212
  */
213
213
  isSelected(elemId?: Id64String): boolean;
214
214
  /** Clear current selection set.
@@ -201,7 +201,7 @@ export class HiliteSet {
201
201
  /** Toggle the hilited state of one or more elements.
202
202
  * @param arg the ID(s) of the elements whose state is to be toggled.
203
203
  * @param onOff True to add the elements to the hilited set, false to remove them.
204
- * @deprecated in 5.0. Use [[add]], [[remove]], [[replace]] instead.
204
+ * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [[add]], [[remove]], [[replace]] instead.
205
205
  */
206
206
  setHilite(arg, onOff) {
207
207
  if (onOff) {
@@ -269,14 +269,14 @@ export class SelectionSet {
269
269
  }
270
270
  /** Return true if elemId is in this `SelectionSet`.
271
271
  * @see [[isSelected]]
272
- * @deprecated in 5.0. Use `SelectionSet.elements.has(elemId)` instead.
272
+ * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `SelectionSet.elements.has(elemId)` instead.
273
273
  */
274
274
  has(elemId) {
275
275
  return !!elemId && this.elements.has(elemId);
276
276
  }
277
277
  /** Query whether an Id is in the selection set.
278
278
  * @see [[has]]
279
- * @deprecated in 5.0. Use `SelectionSet.elements.has(elemId)` instead.
279
+ * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `SelectionSet.elements.has(elemId)` instead.
280
280
  */
281
281
  isSelected(elemId) {
282
282
  return !!elemId && this.elements.has(elemId);
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionSet.js","sourceRoot":"","sources":["../../src/SelectionSet.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module SelectionSet\n */\nimport { BeEvent, Id64, Id64Arg, Id64Array, Id64Set, Id64String } from \"@itwin/core-bentley\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\n\n/** Identifies the type of changes made to the [[SelectionSet]] to produce a [[SelectionSetEvent]].\n * @public\n * @extensions\n */\nexport enum SelectionSetEventType {\n /** Ids have been added to the set. */\n Add,\n /** Ids have been removed from the set. */\n Remove,\n /** Some ids have been added to the set and others have been removed. */\n Replace,\n /** All ids have been removed from the set. */\n Clear,\n}\n\n/** Passed to [[SelectionSet.onChanged]] event listeners when ids are added to the selection set.\n * @public\n * @extensions\n */\nexport interface SelectAddEvent {\n type: SelectionSetEventType.Add;\n /**\n * The Ids of the elements added to the set.\n * @deprecated in 5.0. Use the [[additions]] attribute instead.\n */\n added: Id64Arg;\n /** A collection of geometric element, model and subcategory ids that have been added to selection set. */\n additions: SelectableIds;\n /** The affected SelectionSet. */\n set: SelectionSet;\n}\n\n/** Passed to [[SelectionSet.onChanged]] event listeners when ids are removed from the selection set.\n * @public\n * @extensions\n */\nexport interface SelectRemoveEvent {\n /** The type of operation that produced this event. */\n type: SelectionSetEventType.Remove | SelectionSetEventType.Clear;\n /**\n * The element Ids removed from the set.\n * @deprecated in 5.0. Use the [[removals]] attribute instead.\n */\n removed: Id64Arg;\n /** A collection of geometric element, model and subcategory ids that have been removed from selection set. */\n removals: SelectableIds;\n /** The affected SelectionSet. */\n set: SelectionSet;\n}\n\n/** Passed to [[SelectionSet.onChanged]] event listeners when ids are simultaneously added to and removed from the selection set.\n * @public\n * @extensions\n */\nexport interface SelectReplaceEvent {\n type: SelectionSetEventType.Replace;\n /**\n * The element Ids added to the set.\n * @deprecated in 5.0. Use the [[additions]] attribute instead.\n */\n added: Id64Arg;\n /** A collection of geometric element, model and subcategory ids that have been added to selection set. */\n additions: SelectableIds;\n /**\n * The element Ids removed from the set.\n * @deprecated in 5.0. Use the [[removals]] attribute instead.\n */\n removed: Id64Arg;\n /** A collection of geometric element, model and subcategory ids that have been removed from selection set. */\n removals: SelectableIds;\n /** The affected SelectionSet. */\n set: SelectionSet;\n}\n\n/** Payload sent to [[SelectionSet.onChanged]] event listeners to describe how the contents of the set have changed.\n * The `type` property of the event serves as a type assertion. For example, the following code will output the added and/or removed Ids:\n * ```ts\n * processSelectionSetEvent(ev: SelectionSetEvent): void {\n * if (SelectionSetEventType.Add === ev.type || SelectionSetEventType.Replace === ev.type)\n * console.log(\"Added \" + (ev.additions.elements?.size ?? 0) + \" elements\");\n *\n * if (SelectionSetEventType.Add !== ev.type)\n * console.log(\"Removed \" + (ev.removals.elements?.size ?? 0) + \" elements\");\n * }\n * ```\n * @public\n * @extensions\n */\nexport type SelectionSetEvent = SelectAddEvent | SelectRemoveEvent | SelectReplaceEvent;\n\n/** Holds a set of hilited entities and makes any changes to the set by passing the change\n * function to given `change` callback.\n * @internal\n */\nclass HilitedIds extends Id64.Uint32Set {\n public constructor(private _change: (func: () => void) => void) {\n super();\n }\n\n public override add(low: number, high: number) {\n this._change(() => super.add(low, high));\n }\n\n public override delete(low: number, high: number) {\n this._change(() => super.delete(low, high));\n }\n\n public override clear() {\n this._change(() => super.clear());\n }\n\n public override addIds(ids: Id64Arg) {\n this._change(() => super.addIds(ids));\n }\n\n public override deleteIds(ids: Id64Arg) {\n this._change(() => super.deleteIds(ids));\n }\n}\n\n/** Describes how the sets of hilited models and subcategories in a [[HiliteSet]] interact.\n * - \"union\" indicates a [Feature]($common) will be hilited if either its model **or** its subcategory is present in the HiliteSet.\n * - \"intersection\" indicates a [Feature]($common) will be hilited only if both its model **and** its subcategory are present in the HiliteSet.\n *\n * @see [[HiliteSet.modelSubCategoryMode]] to change the mode for a HiliteSet.\n * @public\n */\nexport type ModelSubCategoryHiliteMode = \"union\" | \"intersection\";\n\n/** A set of *hilited* elements for an [[IModelConnection]], by element id.\n * Hilited elements are displayed with a customizable hilite effect within a [[Viewport]].\n * The set exposes 3 types of elements in 3 separate collections: [GeometricElement]($backend), [GeometricModel]($backend), and [SubCategory]($backend).\n * The [[models]] and [[subcategories]] can be hilited independently or as an intersection of the two sets, as specified by [[modelSubCategoryMode]].\n *\n * Technically, the hilite effect is applied to [Feature]($common)s, not [Element]($backend)s. An element's geometry stream can contain multiple\n * features belonging to different subcategories.\n *\n * Because Javascript lacks efficient support for 64-bit integers, the Ids are stored as pairs of 32-bit integers via [Id64.Uint32Set]($bentley).\n *\n * @note Typically, elements are hilited by virtue of their presence in the IModelConnection's [[SelectionSet]]. The HiliteSet allows additional\n * elements to be displayed with the hilite effect without adding them to the [[SelectionSet]]. If you add elements to the HiliteSet directly, you\n * are also responsible for removing them as appropriate.\n * @see [[IModelConnection.hilited]] for the HiliteSet associated with an iModel.\n * @see [Hilite.Settings]($common) for customization of the hilite effect.\n * @public\n * @extensions\n */\nexport class HiliteSet {\n #mode: ModelSubCategoryHiliteMode = \"union\";\n #selectionChangesListener?: () => void;\n #changing = false;\n\n /** The set of hilited elements. */\n public readonly elements: Id64.Uint32Set;\n\n /** The set of hilited subcategories.\n * @see [[modelSubCategoryMode]] to control how this set interacts with the set of hilited [[models]].\n * @see [[IModelConnection.Categories]] to obtain the set of subcategories associated with one or more [Category]($backend)'s.\n */\n public readonly subcategories: Id64.Uint32Set;\n\n /** The set of hilited [[GeometricModelState]]s.\n * @see [[modelSubCategoryMode]] to control how this set interacts with the set of hilited [[subcategories]].\n */\n public readonly models: Id64.Uint32Set;\n\n /** Controls how the sets of hilited [[models]] and [[subcategories]] interact with one another.\n * By default they are treated as a union: a [Feature]($common) is hilited if either its model **or** its subcategory is hilited.\n * This can be changed to an intersection such that a [Feature]($common) is hilited only if both its model **and** subcategory are hilited.\n * @note The sets of hilited models and subcategories are independent of the set of hilited [[elements]] - an element whose Id is present in\n * [[elements]] is always hilited regardless of its model or subcategories.\n */\n public get modelSubCategoryMode(): ModelSubCategoryHiliteMode {\n return this.#mode;\n }\n public set modelSubCategoryMode(mode: ModelSubCategoryHiliteMode) {\n if (mode === this.#mode) {\n return;\n }\n this.onModelSubCategoryModeChanged.raiseEvent(mode);\n this.#mode = mode;\n }\n\n /** Event raised just before changing the value of [[modelSubCategoryMode]]. */\n public readonly onModelSubCategoryModeChanged = new BeEvent<(newMode: ModelSubCategoryHiliteMode) => void>();\n\n /** Construct a HiliteSet\n * @param iModel The iModel containing the entities to be hilited.\n * @param syncWithSelectionSet If true, the hilite set contents will be synchronized with those in the `iModel`'s [[SelectionSet]].\n */\n public constructor(public iModel: IModelConnection, syncWithSelectionSet = true) {\n this.elements = new HilitedIds((func) => this.#change(func));\n this.subcategories = new HilitedIds((func) => this.#change(func));\n this.models = new HilitedIds((func) => this.#change(func));\n this.wantSyncWithSelectionSet = syncWithSelectionSet;\n }\n\n /** Control whether the hilite set will be synchronized with the contents of the [[SelectionSet]].\n * By default they are synchronized. Applications that override this take responsibility for managing the set of hilited entities.\n * When turning synchronization off, the contents of the HiliteSet will remain unchanged.\n * When turning synchronization on, the current contents of the HiliteSet will be preserved, and the contents of the selection set will be added to them.\n */\n public get wantSyncWithSelectionSet(): boolean {\n return !!this.#selectionChangesListener;\n }\n public set wantSyncWithSelectionSet(want: boolean) {\n if (want === this.wantSyncWithSelectionSet) {\n return;\n }\n if (want) {\n const set = this.iModel.selectionSet;\n this.#selectionChangesListener = set.onChanged.addListener((ev) => this.#processSelectionSetEvent(ev));\n this.add(set.active);\n } else {\n this.#selectionChangesListener!();\n this.#selectionChangesListener = undefined;\n }\n }\n\n #onChanged() {\n if (!this.#changing) {\n IModelApp.viewManager.onSelectionSetChanged(this.iModel);\n }\n }\n\n #change(func: () => void) {\n const changing = this.#changing;\n this.#changing = true;\n try {\n func();\n } finally {\n this.#changing = changing;\n }\n this.#onChanged();\n }\n\n #processSelectionSetEvent(ev: SelectionSetEvent) {\n switch (ev.type) {\n case SelectionSetEventType.Add:\n return this.add(ev.additions);\n case SelectionSetEventType.Replace:\n return this.#change(() => {\n this.add(ev.additions);\n this.remove(ev.removals);\n });\n case SelectionSetEventType.Remove:\n case SelectionSetEventType.Clear:\n return this.remove(ev.removals);\n }\n }\n\n /** Adds a collection of geometric element, model and subcategory ids to this hilite set. */\n public add(additions: SelectableIds): void {\n this.#change(() => {\n additions.elements && this.elements.addIds(additions.elements);\n additions.models && this.models.addIds(additions.models);\n additions.subcategories && this.subcategories.addIds(additions.subcategories);\n });\n }\n\n /** Removes a collection of geometric element, model and subcategory ids from this hilite set. */\n public remove(removals: SelectableIds): void {\n this.#change(() => {\n removals.elements && this.elements.deleteIds(removals.elements);\n removals.models && this.models.deleteIds(removals.models);\n removals.subcategories && this.subcategories.deleteIds(removals.subcategories);\n });\n }\n\n /** Replaces ids currently in the hilite set with the given collection. */\n public replace(ids: SelectableIds): void {\n this.#change(() => {\n this.clear();\n this.add(ids);\n });\n }\n\n /** Remove all elements from the hilited set. */\n public clear() {\n this.#change(() => {\n this.elements.clear();\n this.models.clear();\n this.subcategories.clear();\n });\n }\n\n /** Returns true if nothing is hilited. */\n public get isEmpty(): boolean {\n return this.elements.isEmpty && this.subcategories.isEmpty && this.models.isEmpty;\n }\n\n /** Toggle the hilited state of one or more elements.\n * @param arg the ID(s) of the elements whose state is to be toggled.\n * @param onOff True to add the elements to the hilited set, false to remove them.\n * @deprecated in 5.0. Use [[add]], [[remove]], [[replace]] instead.\n */\n public setHilite(arg: Id64Arg, onOff: boolean): void {\n if (onOff) {\n this.add({ elements: arg });\n } else {\n this.remove({ elements: arg });\n }\n }\n}\n\n/** A set of *currently selected* geometric elements, models and subcategories for an `IModelConnection`.\n * Generally, selected elements are displayed with a customizable hilite effect within a [[Viewport]], see [[HiliteSet]].\n * @see [Hilite.Settings]($common) for customization of the hilite effect.\n * @public\n * @extensions\n */\nexport class SelectionSet {\n #selection: {\n [P in keyof SelectableIds]-?: Id64Set;\n };\n\n /** The IDs of the selected elements.\n * @note Do not modify this set directly. Instead, use methods like [[SelectionSet.add]].\n */\n public get elements(): Set<Id64String> {\n return this.#selection.elements;\n }\n\n /** The IDs of the selected models.\n * @note Do not modify this set directly. Instead, use methods like [[SelectionSet.add]].\n */\n public get models(): Set<Id64String> {\n return this.#selection.models;\n }\n\n /** The IDs of the selected subcategories.\n * @note Do not modify this set directly. Instead, use methods like [[SelectionSet.add]].\n */\n public get subcategories(): Set<Id64String> {\n return this.#selection.subcategories;\n }\n\n /** Get the active selection as a collection of geometric element, model and subcategory ids.\n * @note Do not modify the sets in returned collection directly. Instead, use methods like [[SelectionSet.add]].\n */\n public get active(): { [P in keyof SelectableIds]-?: Set<Id64String> } {\n return { ...this.#selection };\n }\n\n /** Called whenever ids are added or removed from this `SelectionSet` */\n public readonly onChanged = new BeEvent<(ev: SelectionSetEvent) => void>();\n\n public constructor(public iModel: IModelConnection) {\n this.#selection = {\n elements: new Set(),\n models: new Set(),\n subcategories: new Set(),\n };\n }\n\n #sendChangedEvent(ev: SelectionSetEvent) {\n IModelApp.viewManager.onSelectionSetChanged(this.iModel);\n this.onChanged.raiseEvent(ev);\n }\n\n /** Get the number of entries in this selection set. */\n public get size() {\n return this.elements.size + this.models.size + this.subcategories.size;\n }\n\n /** Check whether there are any ids in this selection set. */\n public get isActive() {\n return this.elements.size > 0 || this.models.size > 0 || this.subcategories.size > 0;\n }\n\n /** Return true if elemId is in this `SelectionSet`.\n * @see [[isSelected]]\n * @deprecated in 5.0. Use `SelectionSet.elements.has(elemId)` instead.\n */\n public has(elemId?: string) {\n return !!elemId && this.elements.has(elemId);\n }\n\n /** Query whether an Id is in the selection set.\n * @see [[has]]\n * @deprecated in 5.0. Use `SelectionSet.elements.has(elemId)` instead.\n */\n public isSelected(elemId?: Id64String): boolean {\n return !!elemId && this.elements.has(elemId);\n }\n\n /** Clear current selection set.\n * @note raises the [[onChanged]] event with [[SelectionSetEventType.Clear]].\n */\n public emptyAll(): void {\n if (!this.isActive) {\n return;\n }\n const removals = this.#selection;\n this.#selection = {\n elements: new Set(),\n models: new Set(),\n subcategories: new Set(),\n };\n this.#sendChangedEvent({ set: this, type: SelectionSetEventType.Clear, removals, removed: removals.elements });\n }\n\n /**\n * Add one or more Ids to the current selection set.\n * @param elem The set of Ids to add.\n * @returns true if any elements were added.\n */\n public add(adds: Id64Arg | SelectableIds): boolean {\n return !!this.#add(adds);\n }\n\n #add(adds: Id64Arg | SelectableIds, sendEvent = true): SelectableIds | undefined {\n const oldSize = this.size;\n const additions: { [P in keyof SelectableIds]: Id64Array } = {};\n forEachSelectableType({\n ids: adds,\n elements: (elementIds) =>\n addIds({\n target: this.#selection.elements,\n ids: elementIds,\n onAdd: (id) => (additions.elements ??= []).push(id),\n }),\n models: (modelIds) =>\n addIds({\n target: this.#selection.models,\n ids: modelIds,\n onAdd: (id) => (additions.models ??= []).push(id),\n }),\n subcategories: (subcategoryIds) =>\n addIds({\n target: this.#selection.subcategories,\n ids: subcategoryIds,\n onAdd: (id) => (additions.subcategories ??= []).push(id),\n }),\n });\n const changed = oldSize !== this.size;\n if (!changed) {\n return undefined;\n }\n if (sendEvent) {\n this.#sendChangedEvent({\n type: SelectionSetEventType.Add,\n set: this,\n additions,\n added: additions.elements ?? [],\n });\n }\n return additions;\n }\n\n /**\n * Remove one or more Ids from the current selection set.\n * @param elem The set of Ids to remove.\n * @returns true if any elements were removed.\n */\n public remove(removes: Id64Arg | SelectableIds): boolean {\n return !!this.#remove(removes);\n }\n\n #remove(removes: Id64Arg | SelectableIds, sendEvent = true): SelectableIds | undefined {\n const oldSize = this.size;\n const removals: { [P in keyof SelectableIds]: Id64Array } = {};\n forEachSelectableType({\n ids: removes,\n elements: (elementIds) =>\n removeIds({\n target: this.#selection.elements,\n ids: elementIds,\n onRemove: (id) => (removals.elements ??= []).push(id),\n }),\n models: (modelIds) =>\n removeIds({\n target: this.#selection.models,\n ids: modelIds,\n onRemove: (id) => (removals.models ??= []).push(id),\n }),\n subcategories: (subcategoryIds) =>\n removeIds({\n target: this.#selection.subcategories,\n ids: subcategoryIds,\n onRemove: (id) => (removals.subcategories ??= []).push(id),\n }),\n });\n const changed = oldSize !== this.size;\n if (!changed) {\n return undefined;\n }\n if (sendEvent) {\n this.#sendChangedEvent({\n type: SelectionSetEventType.Remove,\n set: this,\n removals,\n removed: removals.elements ?? [],\n });\n }\n return removals;\n }\n\n /**\n * Add one set of Ids, and remove another set of Ids. Any Ids that are in both sets are removed.\n * @returns True if any Ids were either added or removed.\n */\n public addAndRemove(adds: Id64Arg | SelectableIds, removes: Id64Arg | SelectableIds): boolean {\n const additions = this.#add(adds, false);\n const removals = this.#remove(removes, false);\n const addedElements = additions?.elements ?? [];\n const removedElements = removals?.elements ?? [];\n if (additions && removals) {\n this.#sendChangedEvent({\n type: SelectionSetEventType.Replace,\n set: this,\n additions,\n added: addedElements,\n removals,\n removed: removedElements,\n });\n } else if (additions) {\n this.#sendChangedEvent({\n type: SelectionSetEventType.Add,\n set: this,\n additions,\n added: addedElements,\n });\n } else if (removals) {\n this.#sendChangedEvent({\n type: SelectionSetEventType.Remove,\n set: this,\n removals,\n removed: removedElements,\n });\n }\n return !!additions || !!removals;\n }\n\n /** Invert the state of a set of Ids in the `SelectionSet` */\n public invert(ids: Id64Arg | SelectableIds): boolean {\n const adds: { [P in keyof SelectableIds]: Id64Set } = {};\n const removes: { [P in keyof SelectableIds]: Id64Set } = {};\n forEachSelectableType({\n ids,\n elements: (elementIds) => {\n for (const id of Id64.iterable(elementIds)) {\n ((this.elements.has(id) ? removes : adds).elements ??= new Set()).add(id);\n }\n },\n models: (modelIds) => {\n for (const id of Id64.iterable(modelIds)) {\n ((this.models.has(id) ? removes : adds).models ??= new Set()).add(id);\n }\n },\n subcategories: (subcategoryIds) => {\n for (const id of Id64.iterable(subcategoryIds)) {\n ((this.subcategories.has(id) ? removes : adds).subcategories ??= new Set()).add(id);\n }\n },\n });\n return this.addAndRemove(adds, removes);\n }\n\n /** Change selection set to be the supplied set of Ids. */\n public replace(ids: Id64Arg | SelectableIds): boolean {\n if (areEqual(this.#selection, ids)) {\n return false;\n }\n\n const previousSelection = this.#selection;\n this.#selection = {\n elements: new Set(),\n models: new Set(),\n subcategories: new Set(),\n };\n this.#add(ids, false);\n\n const additions: { [P in keyof SelectableIds]: Id64Set } = {};\n const removals: { [P in keyof SelectableIds]: Id64Set } = {};\n forEachSelectableType({\n ids: this.#selection,\n elements: (elementIds) => {\n removeIds({\n target: previousSelection.elements,\n ids: elementIds,\n onNotFound: (id) => (additions.elements ??= new Set()).add(id),\n });\n if (previousSelection.elements.size > 0) {\n removals.elements = previousSelection.elements;\n }\n },\n models: (modelIds) => {\n removeIds({\n target: previousSelection.models,\n ids: modelIds,\n onNotFound: (id) => (additions.models ??= new Set()).add(id),\n });\n if (previousSelection.models.size > 0) {\n removals.models = previousSelection.models;\n }\n },\n subcategories: (subcategoryIds) => {\n removeIds({\n target: previousSelection.subcategories,\n ids: subcategoryIds,\n onNotFound: (id) => (additions.subcategories ??= new Set()).add(id),\n });\n if (previousSelection.subcategories.size > 0) {\n removals.subcategories = previousSelection.subcategories;\n }\n },\n });\n\n this.#sendChangedEvent({\n type: SelectionSetEventType.Replace,\n set: this,\n additions,\n added: additions.elements ?? [],\n removals,\n removed: removals.elements ?? [],\n });\n return true;\n }\n}\n\n/**\n * A collection of geometric element, model and subcategory ids that can be added to\n * a [[SelectionSet]] or [[HiliteSet]].\n * @public\n */\nexport interface SelectableIds {\n elements?: Id64Arg;\n models?: Id64Arg;\n subcategories?: Id64Arg;\n}\n\nfunction forEachSelectableType({\n ids,\n elements,\n models,\n subcategories,\n}: {\n ids: Id64Arg | SelectableIds;\n elements: (ids: Id64Arg) => void;\n models: (ids: Id64Arg) => void;\n subcategories: (ids: Id64Arg) => void;\n}): SelectableIds {\n if (typeof ids === \"string\" || Array.isArray(ids) || ids instanceof Set) {\n elements(ids);\n return { elements: ids };\n }\n elements(ids.elements ?? []);\n models(ids.models ?? []);\n subcategories(ids.subcategories ?? []);\n return ids;\n}\n\nfunction areEqual(lhs: { [P in keyof SelectableIds]-?: Id64Set }, rhs: Id64Arg | SelectableIds): boolean {\n let result = true;\n forEachSelectableType({\n ids: rhs,\n elements: (elementIds) => {\n if (result && !areIdsEqual(lhs.elements, elementIds)) {\n result = false;\n }\n },\n models: (modelIds) => {\n if (result && !areIdsEqual(lhs.models, modelIds)) {\n result = false;\n }\n },\n subcategories: (subcategoryIds) => {\n if (result && !areIdsEqual(lhs.subcategories, subcategoryIds)) {\n result = false;\n }\n },\n });\n return result;\n}\n\nfunction areIdsEqual(lhs: Set<Id64String>, rhs: Id64Arg): boolean {\n // Size is unreliable if input can contain duplicates...\n if (Array.isArray(rhs)) {\n rhs = Id64.toIdSet(rhs);\n }\n if (lhs.size !== Id64.sizeOf(rhs)) {\n return false;\n }\n for (const id of Id64.iterable(rhs)) {\n if (!lhs.has(id)) {\n return false;\n }\n }\n return true;\n}\n\nfunction addIds({ target, ids, onAdd }: { target: Id64Set; ids: Id64Arg; onAdd?: (id: Id64String) => void }) {\n let size = target.size;\n for (const id of Id64.iterable(ids)) {\n target.add(id);\n const newSize = target.size;\n if (newSize !== size) {\n onAdd?.(id);\n }\n size = newSize;\n }\n}\n\nfunction removeIds({\n target,\n ids,\n onRemove,\n onNotFound,\n}: {\n target: Id64Set;\n ids: Id64Arg;\n onRemove?: (id: Id64String) => void;\n onNotFound?: (id: Id64String) => void;\n}) {\n let size = target.size;\n for (const id of Id64.iterable(ids)) {\n target.delete(id);\n const newSize = target.size;\n if (newSize !== size) {\n onRemove?.(id);\n } else {\n onNotFound?.(id);\n }\n size = newSize;\n }\n}\n"]}
1
+ {"version":3,"file":"SelectionSet.js","sourceRoot":"","sources":["../../src/SelectionSet.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module SelectionSet\n */\nimport { BeEvent, Id64, Id64Arg, Id64Array, Id64Set, Id64String } from \"@itwin/core-bentley\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\n\n/** Identifies the type of changes made to the [[SelectionSet]] to produce a [[SelectionSetEvent]].\n * @public\n * @extensions\n */\nexport enum SelectionSetEventType {\n /** Ids have been added to the set. */\n Add,\n /** Ids have been removed from the set. */\n Remove,\n /** Some ids have been added to the set and others have been removed. */\n Replace,\n /** All ids have been removed from the set. */\n Clear,\n}\n\n/** Passed to [[SelectionSet.onChanged]] event listeners when ids are added to the selection set.\n * @public\n * @extensions\n */\nexport interface SelectAddEvent {\n type: SelectionSetEventType.Add;\n /**\n * The Ids of the elements added to the set.\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use the [[additions]] attribute instead.\n */\n added: Id64Arg;\n /** A collection of geometric element, model and subcategory ids that have been added to selection set. */\n additions: SelectableIds;\n /** The affected SelectionSet. */\n set: SelectionSet;\n}\n\n/** Passed to [[SelectionSet.onChanged]] event listeners when ids are removed from the selection set.\n * @public\n * @extensions\n */\nexport interface SelectRemoveEvent {\n /** The type of operation that produced this event. */\n type: SelectionSetEventType.Remove | SelectionSetEventType.Clear;\n /**\n * The element Ids removed from the set.\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use the [[removals]] attribute instead.\n */\n removed: Id64Arg;\n /** A collection of geometric element, model and subcategory ids that have been removed from selection set. */\n removals: SelectableIds;\n /** The affected SelectionSet. */\n set: SelectionSet;\n}\n\n/** Passed to [[SelectionSet.onChanged]] event listeners when ids are simultaneously added to and removed from the selection set.\n * @public\n * @extensions\n */\nexport interface SelectReplaceEvent {\n type: SelectionSetEventType.Replace;\n /**\n * The element Ids added to the set.\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use the [[additions]] attribute instead.\n */\n added: Id64Arg;\n /** A collection of geometric element, model and subcategory ids that have been added to selection set. */\n additions: SelectableIds;\n /**\n * The element Ids removed from the set.\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use the [[removals]] attribute instead.\n */\n removed: Id64Arg;\n /** A collection of geometric element, model and subcategory ids that have been removed from selection set. */\n removals: SelectableIds;\n /** The affected SelectionSet. */\n set: SelectionSet;\n}\n\n/** Payload sent to [[SelectionSet.onChanged]] event listeners to describe how the contents of the set have changed.\n * The `type` property of the event serves as a type assertion. For example, the following code will output the added and/or removed Ids:\n * ```ts\n * processSelectionSetEvent(ev: SelectionSetEvent): void {\n * if (SelectionSetEventType.Add === ev.type || SelectionSetEventType.Replace === ev.type)\n * console.log(\"Added \" + (ev.additions.elements?.size ?? 0) + \" elements\");\n *\n * if (SelectionSetEventType.Add !== ev.type)\n * console.log(\"Removed \" + (ev.removals.elements?.size ?? 0) + \" elements\");\n * }\n * ```\n * @public\n * @extensions\n */\nexport type SelectionSetEvent = SelectAddEvent | SelectRemoveEvent | SelectReplaceEvent;\n\n/** Holds a set of hilited entities and makes any changes to the set by passing the change\n * function to given `change` callback.\n * @internal\n */\nclass HilitedIds extends Id64.Uint32Set {\n public constructor(private _change: (func: () => void) => void) {\n super();\n }\n\n public override add(low: number, high: number) {\n this._change(() => super.add(low, high));\n }\n\n public override delete(low: number, high: number) {\n this._change(() => super.delete(low, high));\n }\n\n public override clear() {\n this._change(() => super.clear());\n }\n\n public override addIds(ids: Id64Arg) {\n this._change(() => super.addIds(ids));\n }\n\n public override deleteIds(ids: Id64Arg) {\n this._change(() => super.deleteIds(ids));\n }\n}\n\n/** Describes how the sets of hilited models and subcategories in a [[HiliteSet]] interact.\n * - \"union\" indicates a [Feature]($common) will be hilited if either its model **or** its subcategory is present in the HiliteSet.\n * - \"intersection\" indicates a [Feature]($common) will be hilited only if both its model **and** its subcategory are present in the HiliteSet.\n *\n * @see [[HiliteSet.modelSubCategoryMode]] to change the mode for a HiliteSet.\n * @public\n */\nexport type ModelSubCategoryHiliteMode = \"union\" | \"intersection\";\n\n/** A set of *hilited* elements for an [[IModelConnection]], by element id.\n * Hilited elements are displayed with a customizable hilite effect within a [[Viewport]].\n * The set exposes 3 types of elements in 3 separate collections: [GeometricElement]($backend), [GeometricModel]($backend), and [SubCategory]($backend).\n * The [[models]] and [[subcategories]] can be hilited independently or as an intersection of the two sets, as specified by [[modelSubCategoryMode]].\n *\n * Technically, the hilite effect is applied to [Feature]($common)s, not [Element]($backend)s. An element's geometry stream can contain multiple\n * features belonging to different subcategories.\n *\n * Because Javascript lacks efficient support for 64-bit integers, the Ids are stored as pairs of 32-bit integers via [Id64.Uint32Set]($bentley).\n *\n * @note Typically, elements are hilited by virtue of their presence in the IModelConnection's [[SelectionSet]]. The HiliteSet allows additional\n * elements to be displayed with the hilite effect without adding them to the [[SelectionSet]]. If you add elements to the HiliteSet directly, you\n * are also responsible for removing them as appropriate.\n * @see [[IModelConnection.hilited]] for the HiliteSet associated with an iModel.\n * @see [Hilite.Settings]($common) for customization of the hilite effect.\n * @public\n * @extensions\n */\nexport class HiliteSet {\n #mode: ModelSubCategoryHiliteMode = \"union\";\n #selectionChangesListener?: () => void;\n #changing = false;\n\n /** The set of hilited elements. */\n public readonly elements: Id64.Uint32Set;\n\n /** The set of hilited subcategories.\n * @see [[modelSubCategoryMode]] to control how this set interacts with the set of hilited [[models]].\n * @see [[IModelConnection.Categories]] to obtain the set of subcategories associated with one or more [Category]($backend)'s.\n */\n public readonly subcategories: Id64.Uint32Set;\n\n /** The set of hilited [[GeometricModelState]]s.\n * @see [[modelSubCategoryMode]] to control how this set interacts with the set of hilited [[subcategories]].\n */\n public readonly models: Id64.Uint32Set;\n\n /** Controls how the sets of hilited [[models]] and [[subcategories]] interact with one another.\n * By default they are treated as a union: a [Feature]($common) is hilited if either its model **or** its subcategory is hilited.\n * This can be changed to an intersection such that a [Feature]($common) is hilited only if both its model **and** subcategory are hilited.\n * @note The sets of hilited models and subcategories are independent of the set of hilited [[elements]] - an element whose Id is present in\n * [[elements]] is always hilited regardless of its model or subcategories.\n */\n public get modelSubCategoryMode(): ModelSubCategoryHiliteMode {\n return this.#mode;\n }\n public set modelSubCategoryMode(mode: ModelSubCategoryHiliteMode) {\n if (mode === this.#mode) {\n return;\n }\n this.onModelSubCategoryModeChanged.raiseEvent(mode);\n this.#mode = mode;\n }\n\n /** Event raised just before changing the value of [[modelSubCategoryMode]]. */\n public readonly onModelSubCategoryModeChanged = new BeEvent<(newMode: ModelSubCategoryHiliteMode) => void>();\n\n /** Construct a HiliteSet\n * @param iModel The iModel containing the entities to be hilited.\n * @param syncWithSelectionSet If true, the hilite set contents will be synchronized with those in the `iModel`'s [[SelectionSet]].\n */\n public constructor(public iModel: IModelConnection, syncWithSelectionSet = true) {\n this.elements = new HilitedIds((func) => this.#change(func));\n this.subcategories = new HilitedIds((func) => this.#change(func));\n this.models = new HilitedIds((func) => this.#change(func));\n this.wantSyncWithSelectionSet = syncWithSelectionSet;\n }\n\n /** Control whether the hilite set will be synchronized with the contents of the [[SelectionSet]].\n * By default they are synchronized. Applications that override this take responsibility for managing the set of hilited entities.\n * When turning synchronization off, the contents of the HiliteSet will remain unchanged.\n * When turning synchronization on, the current contents of the HiliteSet will be preserved, and the contents of the selection set will be added to them.\n */\n public get wantSyncWithSelectionSet(): boolean {\n return !!this.#selectionChangesListener;\n }\n public set wantSyncWithSelectionSet(want: boolean) {\n if (want === this.wantSyncWithSelectionSet) {\n return;\n }\n if (want) {\n const set = this.iModel.selectionSet;\n this.#selectionChangesListener = set.onChanged.addListener((ev) => this.#processSelectionSetEvent(ev));\n this.add(set.active);\n } else {\n this.#selectionChangesListener!();\n this.#selectionChangesListener = undefined;\n }\n }\n\n #onChanged() {\n if (!this.#changing) {\n IModelApp.viewManager.onSelectionSetChanged(this.iModel);\n }\n }\n\n #change(func: () => void) {\n const changing = this.#changing;\n this.#changing = true;\n try {\n func();\n } finally {\n this.#changing = changing;\n }\n this.#onChanged();\n }\n\n #processSelectionSetEvent(ev: SelectionSetEvent) {\n switch (ev.type) {\n case SelectionSetEventType.Add:\n return this.add(ev.additions);\n case SelectionSetEventType.Replace:\n return this.#change(() => {\n this.add(ev.additions);\n this.remove(ev.removals);\n });\n case SelectionSetEventType.Remove:\n case SelectionSetEventType.Clear:\n return this.remove(ev.removals);\n }\n }\n\n /** Adds a collection of geometric element, model and subcategory ids to this hilite set. */\n public add(additions: SelectableIds): void {\n this.#change(() => {\n additions.elements && this.elements.addIds(additions.elements);\n additions.models && this.models.addIds(additions.models);\n additions.subcategories && this.subcategories.addIds(additions.subcategories);\n });\n }\n\n /** Removes a collection of geometric element, model and subcategory ids from this hilite set. */\n public remove(removals: SelectableIds): void {\n this.#change(() => {\n removals.elements && this.elements.deleteIds(removals.elements);\n removals.models && this.models.deleteIds(removals.models);\n removals.subcategories && this.subcategories.deleteIds(removals.subcategories);\n });\n }\n\n /** Replaces ids currently in the hilite set with the given collection. */\n public replace(ids: SelectableIds): void {\n this.#change(() => {\n this.clear();\n this.add(ids);\n });\n }\n\n /** Remove all elements from the hilited set. */\n public clear() {\n this.#change(() => {\n this.elements.clear();\n this.models.clear();\n this.subcategories.clear();\n });\n }\n\n /** Returns true if nothing is hilited. */\n public get isEmpty(): boolean {\n return this.elements.isEmpty && this.subcategories.isEmpty && this.models.isEmpty;\n }\n\n /** Toggle the hilited state of one or more elements.\n * @param arg the ID(s) of the elements whose state is to be toggled.\n * @param onOff True to add the elements to the hilited set, false to remove them.\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use [[add]], [[remove]], [[replace]] instead.\n */\n public setHilite(arg: Id64Arg, onOff: boolean): void {\n if (onOff) {\n this.add({ elements: arg });\n } else {\n this.remove({ elements: arg });\n }\n }\n}\n\n/** A set of *currently selected* geometric elements, models and subcategories for an `IModelConnection`.\n * Generally, selected elements are displayed with a customizable hilite effect within a [[Viewport]], see [[HiliteSet]].\n * @see [Hilite.Settings]($common) for customization of the hilite effect.\n * @public\n * @extensions\n */\nexport class SelectionSet {\n #selection: {\n [P in keyof SelectableIds]-?: Id64Set;\n };\n\n /** The IDs of the selected elements.\n * @note Do not modify this set directly. Instead, use methods like [[SelectionSet.add]].\n */\n public get elements(): Set<Id64String> {\n return this.#selection.elements;\n }\n\n /** The IDs of the selected models.\n * @note Do not modify this set directly. Instead, use methods like [[SelectionSet.add]].\n */\n public get models(): Set<Id64String> {\n return this.#selection.models;\n }\n\n /** The IDs of the selected subcategories.\n * @note Do not modify this set directly. Instead, use methods like [[SelectionSet.add]].\n */\n public get subcategories(): Set<Id64String> {\n return this.#selection.subcategories;\n }\n\n /** Get the active selection as a collection of geometric element, model and subcategory ids.\n * @note Do not modify the sets in returned collection directly. Instead, use methods like [[SelectionSet.add]].\n */\n public get active(): { [P in keyof SelectableIds]-?: Set<Id64String> } {\n return { ...this.#selection };\n }\n\n /** Called whenever ids are added or removed from this `SelectionSet` */\n public readonly onChanged = new BeEvent<(ev: SelectionSetEvent) => void>();\n\n public constructor(public iModel: IModelConnection) {\n this.#selection = {\n elements: new Set(),\n models: new Set(),\n subcategories: new Set(),\n };\n }\n\n #sendChangedEvent(ev: SelectionSetEvent) {\n IModelApp.viewManager.onSelectionSetChanged(this.iModel);\n this.onChanged.raiseEvent(ev);\n }\n\n /** Get the number of entries in this selection set. */\n public get size() {\n return this.elements.size + this.models.size + this.subcategories.size;\n }\n\n /** Check whether there are any ids in this selection set. */\n public get isActive() {\n return this.elements.size > 0 || this.models.size > 0 || this.subcategories.size > 0;\n }\n\n /** Return true if elemId is in this `SelectionSet`.\n * @see [[isSelected]]\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `SelectionSet.elements.has(elemId)` instead.\n */\n public has(elemId?: string) {\n return !!elemId && this.elements.has(elemId);\n }\n\n /** Query whether an Id is in the selection set.\n * @see [[has]]\n * @deprecated in 5.0 - will not be removed until after 2026-06-13. Use `SelectionSet.elements.has(elemId)` instead.\n */\n public isSelected(elemId?: Id64String): boolean {\n return !!elemId && this.elements.has(elemId);\n }\n\n /** Clear current selection set.\n * @note raises the [[onChanged]] event with [[SelectionSetEventType.Clear]].\n */\n public emptyAll(): void {\n if (!this.isActive) {\n return;\n }\n const removals = this.#selection;\n this.#selection = {\n elements: new Set(),\n models: new Set(),\n subcategories: new Set(),\n };\n this.#sendChangedEvent({ set: this, type: SelectionSetEventType.Clear, removals, removed: removals.elements });\n }\n\n /**\n * Add one or more Ids to the current selection set.\n * @param elem The set of Ids to add.\n * @returns true if any elements were added.\n */\n public add(adds: Id64Arg | SelectableIds): boolean {\n return !!this.#add(adds);\n }\n\n #add(adds: Id64Arg | SelectableIds, sendEvent = true): SelectableIds | undefined {\n const oldSize = this.size;\n const additions: { [P in keyof SelectableIds]: Id64Array } = {};\n forEachSelectableType({\n ids: adds,\n elements: (elementIds) =>\n addIds({\n target: this.#selection.elements,\n ids: elementIds,\n onAdd: (id) => (additions.elements ??= []).push(id),\n }),\n models: (modelIds) =>\n addIds({\n target: this.#selection.models,\n ids: modelIds,\n onAdd: (id) => (additions.models ??= []).push(id),\n }),\n subcategories: (subcategoryIds) =>\n addIds({\n target: this.#selection.subcategories,\n ids: subcategoryIds,\n onAdd: (id) => (additions.subcategories ??= []).push(id),\n }),\n });\n const changed = oldSize !== this.size;\n if (!changed) {\n return undefined;\n }\n if (sendEvent) {\n this.#sendChangedEvent({\n type: SelectionSetEventType.Add,\n set: this,\n additions,\n added: additions.elements ?? [],\n });\n }\n return additions;\n }\n\n /**\n * Remove one or more Ids from the current selection set.\n * @param elem The set of Ids to remove.\n * @returns true if any elements were removed.\n */\n public remove(removes: Id64Arg | SelectableIds): boolean {\n return !!this.#remove(removes);\n }\n\n #remove(removes: Id64Arg | SelectableIds, sendEvent = true): SelectableIds | undefined {\n const oldSize = this.size;\n const removals: { [P in keyof SelectableIds]: Id64Array } = {};\n forEachSelectableType({\n ids: removes,\n elements: (elementIds) =>\n removeIds({\n target: this.#selection.elements,\n ids: elementIds,\n onRemove: (id) => (removals.elements ??= []).push(id),\n }),\n models: (modelIds) =>\n removeIds({\n target: this.#selection.models,\n ids: modelIds,\n onRemove: (id) => (removals.models ??= []).push(id),\n }),\n subcategories: (subcategoryIds) =>\n removeIds({\n target: this.#selection.subcategories,\n ids: subcategoryIds,\n onRemove: (id) => (removals.subcategories ??= []).push(id),\n }),\n });\n const changed = oldSize !== this.size;\n if (!changed) {\n return undefined;\n }\n if (sendEvent) {\n this.#sendChangedEvent({\n type: SelectionSetEventType.Remove,\n set: this,\n removals,\n removed: removals.elements ?? [],\n });\n }\n return removals;\n }\n\n /**\n * Add one set of Ids, and remove another set of Ids. Any Ids that are in both sets are removed.\n * @returns True if any Ids were either added or removed.\n */\n public addAndRemove(adds: Id64Arg | SelectableIds, removes: Id64Arg | SelectableIds): boolean {\n const additions = this.#add(adds, false);\n const removals = this.#remove(removes, false);\n const addedElements = additions?.elements ?? [];\n const removedElements = removals?.elements ?? [];\n if (additions && removals) {\n this.#sendChangedEvent({\n type: SelectionSetEventType.Replace,\n set: this,\n additions,\n added: addedElements,\n removals,\n removed: removedElements,\n });\n } else if (additions) {\n this.#sendChangedEvent({\n type: SelectionSetEventType.Add,\n set: this,\n additions,\n added: addedElements,\n });\n } else if (removals) {\n this.#sendChangedEvent({\n type: SelectionSetEventType.Remove,\n set: this,\n removals,\n removed: removedElements,\n });\n }\n return !!additions || !!removals;\n }\n\n /** Invert the state of a set of Ids in the `SelectionSet` */\n public invert(ids: Id64Arg | SelectableIds): boolean {\n const adds: { [P in keyof SelectableIds]: Id64Set } = {};\n const removes: { [P in keyof SelectableIds]: Id64Set } = {};\n forEachSelectableType({\n ids,\n elements: (elementIds) => {\n for (const id of Id64.iterable(elementIds)) {\n ((this.elements.has(id) ? removes : adds).elements ??= new Set()).add(id);\n }\n },\n models: (modelIds) => {\n for (const id of Id64.iterable(modelIds)) {\n ((this.models.has(id) ? removes : adds).models ??= new Set()).add(id);\n }\n },\n subcategories: (subcategoryIds) => {\n for (const id of Id64.iterable(subcategoryIds)) {\n ((this.subcategories.has(id) ? removes : adds).subcategories ??= new Set()).add(id);\n }\n },\n });\n return this.addAndRemove(adds, removes);\n }\n\n /** Change selection set to be the supplied set of Ids. */\n public replace(ids: Id64Arg | SelectableIds): boolean {\n if (areEqual(this.#selection, ids)) {\n return false;\n }\n\n const previousSelection = this.#selection;\n this.#selection = {\n elements: new Set(),\n models: new Set(),\n subcategories: new Set(),\n };\n this.#add(ids, false);\n\n const additions: { [P in keyof SelectableIds]: Id64Set } = {};\n const removals: { [P in keyof SelectableIds]: Id64Set } = {};\n forEachSelectableType({\n ids: this.#selection,\n elements: (elementIds) => {\n removeIds({\n target: previousSelection.elements,\n ids: elementIds,\n onNotFound: (id) => (additions.elements ??= new Set()).add(id),\n });\n if (previousSelection.elements.size > 0) {\n removals.elements = previousSelection.elements;\n }\n },\n models: (modelIds) => {\n removeIds({\n target: previousSelection.models,\n ids: modelIds,\n onNotFound: (id) => (additions.models ??= new Set()).add(id),\n });\n if (previousSelection.models.size > 0) {\n removals.models = previousSelection.models;\n }\n },\n subcategories: (subcategoryIds) => {\n removeIds({\n target: previousSelection.subcategories,\n ids: subcategoryIds,\n onNotFound: (id) => (additions.subcategories ??= new Set()).add(id),\n });\n if (previousSelection.subcategories.size > 0) {\n removals.subcategories = previousSelection.subcategories;\n }\n },\n });\n\n this.#sendChangedEvent({\n type: SelectionSetEventType.Replace,\n set: this,\n additions,\n added: additions.elements ?? [],\n removals,\n removed: removals.elements ?? [],\n });\n return true;\n }\n}\n\n/**\n * A collection of geometric element, model and subcategory ids that can be added to\n * a [[SelectionSet]] or [[HiliteSet]].\n * @public\n */\nexport interface SelectableIds {\n elements?: Id64Arg;\n models?: Id64Arg;\n subcategories?: Id64Arg;\n}\n\nfunction forEachSelectableType({\n ids,\n elements,\n models,\n subcategories,\n}: {\n ids: Id64Arg | SelectableIds;\n elements: (ids: Id64Arg) => void;\n models: (ids: Id64Arg) => void;\n subcategories: (ids: Id64Arg) => void;\n}): SelectableIds {\n if (typeof ids === \"string\" || Array.isArray(ids) || ids instanceof Set) {\n elements(ids);\n return { elements: ids };\n }\n elements(ids.elements ?? []);\n models(ids.models ?? []);\n subcategories(ids.subcategories ?? []);\n return ids;\n}\n\nfunction areEqual(lhs: { [P in keyof SelectableIds]-?: Id64Set }, rhs: Id64Arg | SelectableIds): boolean {\n let result = true;\n forEachSelectableType({\n ids: rhs,\n elements: (elementIds) => {\n if (result && !areIdsEqual(lhs.elements, elementIds)) {\n result = false;\n }\n },\n models: (modelIds) => {\n if (result && !areIdsEqual(lhs.models, modelIds)) {\n result = false;\n }\n },\n subcategories: (subcategoryIds) => {\n if (result && !areIdsEqual(lhs.subcategories, subcategoryIds)) {\n result = false;\n }\n },\n });\n return result;\n}\n\nfunction areIdsEqual(lhs: Set<Id64String>, rhs: Id64Arg): boolean {\n // Size is unreliable if input can contain duplicates...\n if (Array.isArray(rhs)) {\n rhs = Id64.toIdSet(rhs);\n }\n if (lhs.size !== Id64.sizeOf(rhs)) {\n return false;\n }\n for (const id of Id64.iterable(rhs)) {\n if (!lhs.has(id)) {\n return false;\n }\n }\n return true;\n}\n\nfunction addIds({ target, ids, onAdd }: { target: Id64Set; ids: Id64Arg; onAdd?: (id: Id64String) => void }) {\n let size = target.size;\n for (const id of Id64.iterable(ids)) {\n target.add(id);\n const newSize = target.size;\n if (newSize !== size) {\n onAdd?.(id);\n }\n size = newSize;\n }\n}\n\nfunction removeIds({\n target,\n ids,\n onRemove,\n onNotFound,\n}: {\n target: Id64Set;\n ids: Id64Arg;\n onRemove?: (id: Id64String) => void;\n onNotFound?: (id: Id64String) => void;\n}) {\n let size = target.size;\n for (const id of Id64.iterable(ids)) {\n target.delete(id);\n const newSize = target.size;\n if (newSize !== size) {\n onRemove?.(id);\n } else {\n onNotFound?.(id);\n }\n size = newSize;\n }\n}\n"]}
@@ -69,10 +69,13 @@ export declare class RenderContext {
69
69
  * @public
70
70
  */
71
71
  export declare class DynamicsContext extends RenderContext {
72
- private _dynamics?;
72
+ private _foreground?;
73
+ private _overlay?;
73
74
  /** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]]. */
74
75
  addGraphic(graphic: RenderGraphic): void;
75
76
  /** @internal */
77
+ add(graphic: RenderGraphic, isOverlay: boolean): void;
78
+ /** @internal */
76
79
  changeDynamics(): void;
77
80
  /** Create a builder for producing a [[RenderGraphic]] appropriate for rendering within this context's [[Viewport]].
78
81
  * @param options Options describing how to create the builder.