@itwin/core-frontend 5.0.0-dev.40 → 5.0.0-dev.49

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 (566) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/AccuDraw.d.ts +21 -3
  3. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  4. package/lib/cjs/AccuDraw.js +174 -56
  5. package/lib/cjs/AccuDraw.js.map +1 -1
  6. package/lib/cjs/BriefcaseConnection.js +1 -1
  7. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  8. package/lib/cjs/BriefcaseTxns.d.ts +1 -1
  9. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  10. package/lib/cjs/BriefcaseTxns.js +1 -1
  11. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  12. package/lib/cjs/DrawingViewState.js +2 -2
  13. package/lib/cjs/DrawingViewState.js.map +1 -1
  14. package/lib/cjs/EnvironmentDecorations.d.ts +1 -1
  15. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  16. package/lib/cjs/EnvironmentDecorations.js +1 -1
  17. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  18. package/lib/cjs/GraphicalEditingScope.d.ts +3 -1
  19. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  20. package/lib/cjs/GraphicalEditingScope.js +7 -3
  21. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  22. package/lib/cjs/IModelApp.d.ts +0 -5
  23. package/lib/cjs/IModelApp.d.ts.map +1 -1
  24. package/lib/cjs/IModelApp.js +0 -5
  25. package/lib/cjs/IModelApp.js.map +1 -1
  26. package/lib/cjs/IModelConnection.js +1 -1
  27. package/lib/cjs/IModelConnection.js.map +1 -1
  28. package/lib/cjs/NoRenderApp.d.ts +1 -1
  29. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  30. package/lib/cjs/NoRenderApp.js +1 -2
  31. package/lib/cjs/NoRenderApp.js.map +1 -1
  32. package/lib/cjs/SheetViewState.js +6 -6
  33. package/lib/cjs/SheetViewState.js.map +1 -1
  34. package/lib/cjs/SubCategoriesCache.d.ts +1 -1
  35. package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
  36. package/lib/cjs/SubCategoriesCache.js +1 -1
  37. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  38. package/lib/cjs/Tiles.d.ts +1 -1
  39. package/lib/cjs/Tiles.d.ts.map +1 -1
  40. package/lib/cjs/Tiles.js +6 -6
  41. package/lib/cjs/Tiles.js.map +1 -1
  42. package/lib/cjs/ViewManager.js +1 -1
  43. package/lib/cjs/ViewManager.js.map +1 -1
  44. package/lib/cjs/ViewState.js +1 -1
  45. package/lib/cjs/ViewState.js.map +1 -1
  46. package/lib/cjs/Viewport.d.ts +5 -3
  47. package/lib/cjs/Viewport.d.ts.map +1 -1
  48. package/lib/cjs/Viewport.js +8 -4
  49. package/lib/cjs/Viewport.js.map +1 -1
  50. package/lib/cjs/common/internal/render/MeshPrimitives.js +1 -1
  51. package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
  52. package/lib/cjs/core-frontend.d.ts +1 -0
  53. package/lib/cjs/core-frontend.d.ts.map +1 -1
  54. package/lib/cjs/core-frontend.js +1 -0
  55. package/lib/cjs/core-frontend.js.map +1 -1
  56. package/lib/cjs/internal/render/RenderGeometry.d.ts +1 -2
  57. package/lib/cjs/internal/render/RenderGeometry.d.ts.map +1 -1
  58. package/lib/cjs/internal/render/RenderGeometry.js.map +1 -1
  59. package/lib/cjs/render/Decorations.d.ts +3 -2
  60. package/lib/cjs/render/Decorations.d.ts.map +1 -1
  61. package/lib/cjs/render/Decorations.js +5 -1
  62. package/lib/cjs/render/Decorations.js.map +1 -1
  63. package/lib/cjs/render/GraphicBranch.d.ts +4 -2
  64. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  65. package/lib/cjs/render/GraphicBranch.js +5 -1
  66. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  67. package/lib/cjs/render/MockRender.d.ts +2 -2
  68. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  69. package/lib/cjs/render/MockRender.js +3 -4
  70. package/lib/cjs/render/MockRender.js.map +1 -1
  71. package/lib/cjs/render/RenderGraphic.d.ts +3 -2
  72. package/lib/cjs/render/RenderGraphic.d.ts.map +1 -1
  73. package/lib/cjs/render/RenderGraphic.js +4 -1
  74. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  75. package/lib/cjs/render/RenderPlanarClassifier.d.ts +3 -3
  76. package/lib/cjs/render/RenderPlanarClassifier.d.ts.map +1 -1
  77. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  78. package/lib/cjs/render/RenderSystem.d.ts +9 -8
  79. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  80. package/lib/cjs/render/RenderSystem.js +3 -0
  81. package/lib/cjs/render/RenderSystem.js.map +1 -1
  82. package/lib/cjs/render/RenderTarget.d.ts +3 -3
  83. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  84. package/lib/cjs/render/RenderTarget.js +1 -1
  85. package/lib/cjs/render/RenderTarget.js.map +1 -1
  86. package/lib/cjs/render/VisibleFeature.d.ts.map +1 -1
  87. package/lib/cjs/render/VisibleFeature.js +60 -3
  88. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  89. package/lib/cjs/render/webgl/AtmosphereUniforms.d.ts +2 -0
  90. package/lib/cjs/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  91. package/lib/cjs/render/webgl/AtmosphereUniforms.js +5 -1
  92. package/lib/cjs/render/webgl/AtmosphereUniforms.js.map +1 -1
  93. package/lib/cjs/render/webgl/AttributeBuffers.d.ts +6 -2
  94. package/lib/cjs/render/webgl/AttributeBuffers.d.ts.map +1 -1
  95. package/lib/cjs/render/webgl/AttributeBuffers.js +12 -4
  96. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  97. package/lib/cjs/render/webgl/BackgroundMapDrape.d.ts +1 -1
  98. package/lib/cjs/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  99. package/lib/cjs/render/webgl/BackgroundMapDrape.js +3 -3
  100. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  101. package/lib/cjs/render/webgl/CachedGeometry.d.ts +8 -8
  102. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  103. package/lib/cjs/render/webgl/CachedGeometry.js +8 -8
  104. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  105. package/lib/cjs/render/webgl/ClippingProgram.d.ts +2 -0
  106. package/lib/cjs/render/webgl/ClippingProgram.d.ts.map +1 -1
  107. package/lib/cjs/render/webgl/ClippingProgram.js +5 -1
  108. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  109. package/lib/cjs/render/webgl/Contours.d.ts +1 -1
  110. package/lib/cjs/render/webgl/Contours.d.ts.map +1 -1
  111. package/lib/cjs/render/webgl/Contours.js +1 -1
  112. package/lib/cjs/render/webgl/Contours.js.map +1 -1
  113. package/lib/cjs/render/webgl/Disposable.d.ts +1 -2
  114. package/lib/cjs/render/webgl/Disposable.d.ts.map +1 -1
  115. package/lib/cjs/render/webgl/Disposable.js +4 -0
  116. package/lib/cjs/render/webgl/Disposable.js.map +1 -1
  117. package/lib/cjs/render/webgl/EDL.d.ts +1 -1
  118. package/lib/cjs/render/webgl/EDL.d.ts.map +1 -1
  119. package/lib/cjs/render/webgl/EDL.js +3 -3
  120. package/lib/cjs/render/webgl/EDL.js.map +1 -1
  121. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +3 -3
  122. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -1
  123. package/lib/cjs/render/webgl/EdgeGeometry.js +4 -4
  124. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  125. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +1 -1
  126. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  127. package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
  128. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  129. package/lib/cjs/render/webgl/FrameBuffer.d.ts +1 -1
  130. package/lib/cjs/render/webgl/FrameBuffer.d.ts.map +1 -1
  131. package/lib/cjs/render/webgl/FrameBuffer.js +1 -1
  132. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  133. package/lib/cjs/render/webgl/Graphic.d.ts +2 -2
  134. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  135. package/lib/cjs/render/webgl/Graphic.js +11 -11
  136. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  137. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +2 -2
  138. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  139. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +2 -2
  140. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  141. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +4 -4
  142. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  143. package/lib/cjs/render/webgl/InstancedGeometry.js +5 -6
  144. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  145. package/lib/cjs/render/webgl/Layer.js +1 -1
  146. package/lib/cjs/render/webgl/Layer.js.map +1 -1
  147. package/lib/cjs/render/webgl/Mesh.d.ts +1 -1
  148. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  149. package/lib/cjs/render/webgl/Mesh.js +1 -1
  150. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  151. package/lib/cjs/render/webgl/MeshData.d.ts +1 -1
  152. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
  153. package/lib/cjs/render/webgl/MeshData.js +2 -2
  154. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  155. package/lib/cjs/render/webgl/PlanarClassifier.d.ts +1 -1
  156. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  157. package/lib/cjs/render/webgl/PlanarClassifier.js +22 -9
  158. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  159. package/lib/cjs/render/webgl/PointCloud.d.ts +1 -1
  160. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  161. package/lib/cjs/render/webgl/PointCloud.js +1 -1
  162. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  163. package/lib/cjs/render/webgl/PointString.d.ts +1 -1
  164. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  165. package/lib/cjs/render/webgl/PointString.js +1 -1
  166. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  167. package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
  168. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  169. package/lib/cjs/render/webgl/Polyline.js +1 -1
  170. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  171. package/lib/cjs/render/webgl/RealityMesh.d.ts +6 -10
  172. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  173. package/lib/cjs/render/webgl/RealityMesh.js +6 -6
  174. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  175. package/lib/cjs/render/webgl/RenderBuffer.d.ts +2 -2
  176. package/lib/cjs/render/webgl/RenderBuffer.d.ts.map +1 -1
  177. package/lib/cjs/render/webgl/RenderBuffer.js +2 -2
  178. package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
  179. package/lib/cjs/render/webgl/SceneCompositor.d.ts +1 -1
  180. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  181. package/lib/cjs/render/webgl/SceneCompositor.js +6 -6
  182. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  183. package/lib/cjs/render/webgl/ScreenSpaceEffect.d.ts +1 -1
  184. package/lib/cjs/render/webgl/ScreenSpaceEffect.d.ts.map +1 -1
  185. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +2 -2
  186. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  187. package/lib/cjs/render/webgl/ShaderProgram.d.ts +5 -1
  188. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  189. package/lib/cjs/render/webgl/ShaderProgram.js +11 -3
  190. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  191. package/lib/cjs/render/webgl/SolarShadowMap.d.ts +1 -1
  192. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  193. package/lib/cjs/render/webgl/SolarShadowMap.js +3 -3
  194. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  195. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +1 -1
  196. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  197. package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
  198. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  199. package/lib/cjs/render/webgl/System.d.ts +1 -1
  200. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  201. package/lib/cjs/render/webgl/System.js +1 -1
  202. package/lib/cjs/render/webgl/System.js.map +1 -1
  203. package/lib/cjs/render/webgl/Target.d.ts +2 -2
  204. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  205. package/lib/cjs/render/webgl/Target.js +9 -10
  206. package/lib/cjs/render/webgl/Target.js.map +1 -1
  207. package/lib/cjs/render/webgl/TargetGraphics.d.ts +1 -1
  208. package/lib/cjs/render/webgl/TargetGraphics.d.ts.map +1 -1
  209. package/lib/cjs/render/webgl/TargetGraphics.js +1 -1
  210. package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
  211. package/lib/cjs/render/webgl/Technique.d.ts +6 -0
  212. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  213. package/lib/cjs/render/webgl/Technique.js +97 -15
  214. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  215. package/lib/cjs/render/webgl/Texture.d.ts +1 -1
  216. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  217. package/lib/cjs/render/webgl/Texture.js +1 -1
  218. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  219. package/lib/cjs/render/webgl/TextureDrape.d.ts +1 -1
  220. package/lib/cjs/render/webgl/TextureDrape.d.ts.map +1 -1
  221. package/lib/cjs/render/webgl/TextureDrape.js +1 -1
  222. package/lib/cjs/render/webgl/TextureDrape.js.map +1 -1
  223. package/lib/cjs/render/webgl/ThematicSensors.d.ts +1 -1
  224. package/lib/cjs/render/webgl/ThematicSensors.d.ts.map +1 -1
  225. package/lib/cjs/render/webgl/ThematicSensors.js +1 -1
  226. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  227. package/lib/cjs/render/webgl/ThematicUniforms.d.ts +1 -1
  228. package/lib/cjs/render/webgl/ThematicUniforms.d.ts.map +1 -1
  229. package/lib/cjs/render/webgl/ThematicUniforms.js +1 -1
  230. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  231. package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -2
  232. package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
  233. package/lib/cjs/render/webgl/VertexLUT.js +2 -2
  234. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  235. package/lib/cjs/render/webgl/VisibleTileFeatures.js +60 -3
  236. package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
  237. package/lib/cjs/tile/ClassifierTileTree.js +1 -1
  238. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  239. package/lib/cjs/tile/DynamicIModelTile.js +3 -3
  240. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  241. package/lib/cjs/tile/IModelTileTree.d.ts +1 -1
  242. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  243. package/lib/cjs/tile/IModelTileTree.js +12 -10
  244. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  245. package/lib/cjs/tile/ImdlDecoder.d.ts +1 -1
  246. package/lib/cjs/tile/ImdlDecoder.js +1 -1
  247. package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
  248. package/lib/cjs/tile/LRUTileList.d.ts +1 -1
  249. package/lib/cjs/tile/LRUTileList.d.ts.map +1 -1
  250. package/lib/cjs/tile/LRUTileList.js +1 -1
  251. package/lib/cjs/tile/LRUTileList.js.map +1 -1
  252. package/lib/cjs/tile/OrbitGtTileTree.d.ts +1 -1
  253. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  254. package/lib/cjs/tile/OrbitGtTileTree.js +6 -6
  255. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  256. package/lib/cjs/tile/PrimaryTileTree.js +1 -1
  257. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  258. package/lib/cjs/tile/Tile.d.ts +2 -0
  259. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  260. package/lib/cjs/tile/Tile.js +6 -2
  261. package/lib/cjs/tile/Tile.js.map +1 -1
  262. package/lib/cjs/tile/TileAdmin.js +1 -1
  263. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  264. package/lib/cjs/tile/TileTree.d.ts +2 -0
  265. package/lib/cjs/tile/TileTree.d.ts.map +1 -1
  266. package/lib/cjs/tile/TileTree.js +5 -1
  267. package/lib/cjs/tile/TileTree.js.map +1 -1
  268. package/lib/cjs/tile/TileTreeOwner.d.ts +1 -1
  269. package/lib/cjs/tile/TileTreeOwner.d.ts.map +1 -1
  270. package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
  271. package/lib/cjs/tile/map/ImageryTileTree.d.ts +1 -1
  272. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  273. package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
  274. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  275. package/lib/cjs/tools/AccuDrawTool.d.ts +4 -2
  276. package/lib/cjs/tools/AccuDrawTool.d.ts.map +1 -1
  277. package/lib/cjs/tools/AccuDrawTool.js +34 -56
  278. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  279. package/lib/cjs/tools/AccuDrawViewportUI.d.ts +154 -0
  280. package/lib/cjs/tools/AccuDrawViewportUI.d.ts.map +1 -0
  281. package/lib/cjs/tools/AccuDrawViewportUI.js +715 -0
  282. package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -0
  283. package/lib/esm/AccuDraw.d.ts +21 -3
  284. package/lib/esm/AccuDraw.d.ts.map +1 -1
  285. package/lib/esm/AccuDraw.js +174 -56
  286. package/lib/esm/AccuDraw.js.map +1 -1
  287. package/lib/esm/BriefcaseConnection.js +1 -1
  288. package/lib/esm/BriefcaseConnection.js.map +1 -1
  289. package/lib/esm/BriefcaseTxns.d.ts +1 -1
  290. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  291. package/lib/esm/BriefcaseTxns.js +1 -1
  292. package/lib/esm/BriefcaseTxns.js.map +1 -1
  293. package/lib/esm/DrawingViewState.js +2 -2
  294. package/lib/esm/DrawingViewState.js.map +1 -1
  295. package/lib/esm/EnvironmentDecorations.d.ts +1 -1
  296. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  297. package/lib/esm/EnvironmentDecorations.js +1 -1
  298. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  299. package/lib/esm/GraphicalEditingScope.d.ts +3 -1
  300. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  301. package/lib/esm/GraphicalEditingScope.js +7 -3
  302. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  303. package/lib/esm/IModelApp.d.ts +0 -5
  304. package/lib/esm/IModelApp.d.ts.map +1 -1
  305. package/lib/esm/IModelApp.js +0 -5
  306. package/lib/esm/IModelApp.js.map +1 -1
  307. package/lib/esm/IModelConnection.js +1 -1
  308. package/lib/esm/IModelConnection.js.map +1 -1
  309. package/lib/esm/NoRenderApp.d.ts +1 -1
  310. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  311. package/lib/esm/NoRenderApp.js +1 -2
  312. package/lib/esm/NoRenderApp.js.map +1 -1
  313. package/lib/esm/SheetViewState.js +6 -6
  314. package/lib/esm/SheetViewState.js.map +1 -1
  315. package/lib/esm/SubCategoriesCache.d.ts +1 -1
  316. package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
  317. package/lib/esm/SubCategoriesCache.js +1 -1
  318. package/lib/esm/SubCategoriesCache.js.map +1 -1
  319. package/lib/esm/Tiles.d.ts +1 -1
  320. package/lib/esm/Tiles.d.ts.map +1 -1
  321. package/lib/esm/Tiles.js +6 -6
  322. package/lib/esm/Tiles.js.map +1 -1
  323. package/lib/esm/ViewManager.js +1 -1
  324. package/lib/esm/ViewManager.js.map +1 -1
  325. package/lib/esm/ViewState.js +1 -1
  326. package/lib/esm/ViewState.js.map +1 -1
  327. package/lib/esm/Viewport.d.ts +5 -3
  328. package/lib/esm/Viewport.d.ts.map +1 -1
  329. package/lib/esm/Viewport.js +8 -4
  330. package/lib/esm/Viewport.js.map +1 -1
  331. package/lib/esm/common/internal/render/MeshPrimitives.js +2 -2
  332. package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
  333. package/lib/esm/core-frontend.d.ts +1 -0
  334. package/lib/esm/core-frontend.d.ts.map +1 -1
  335. package/lib/esm/core-frontend.js +1 -0
  336. package/lib/esm/core-frontend.js.map +1 -1
  337. package/lib/esm/internal/render/RenderGeometry.d.ts +1 -2
  338. package/lib/esm/internal/render/RenderGeometry.d.ts.map +1 -1
  339. package/lib/esm/internal/render/RenderGeometry.js.map +1 -1
  340. package/lib/esm/render/Decorations.d.ts +3 -2
  341. package/lib/esm/render/Decorations.d.ts.map +1 -1
  342. package/lib/esm/render/Decorations.js +5 -1
  343. package/lib/esm/render/Decorations.js.map +1 -1
  344. package/lib/esm/render/GraphicBranch.d.ts +4 -2
  345. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  346. package/lib/esm/render/GraphicBranch.js +5 -1
  347. package/lib/esm/render/GraphicBranch.js.map +1 -1
  348. package/lib/esm/render/MockRender.d.ts +2 -2
  349. package/lib/esm/render/MockRender.d.ts.map +1 -1
  350. package/lib/esm/render/MockRender.js +3 -4
  351. package/lib/esm/render/MockRender.js.map +1 -1
  352. package/lib/esm/render/RenderGraphic.d.ts +3 -2
  353. package/lib/esm/render/RenderGraphic.d.ts.map +1 -1
  354. package/lib/esm/render/RenderGraphic.js +4 -1
  355. package/lib/esm/render/RenderGraphic.js.map +1 -1
  356. package/lib/esm/render/RenderPlanarClassifier.d.ts +3 -3
  357. package/lib/esm/render/RenderPlanarClassifier.d.ts.map +1 -1
  358. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  359. package/lib/esm/render/RenderSystem.d.ts +9 -8
  360. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  361. package/lib/esm/render/RenderSystem.js +3 -0
  362. package/lib/esm/render/RenderSystem.js.map +1 -1
  363. package/lib/esm/render/RenderTarget.d.ts +3 -3
  364. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  365. package/lib/esm/render/RenderTarget.js +1 -1
  366. package/lib/esm/render/RenderTarget.js.map +1 -1
  367. package/lib/esm/render/VisibleFeature.d.ts.map +1 -1
  368. package/lib/esm/render/VisibleFeature.js +60 -3
  369. package/lib/esm/render/VisibleFeature.js.map +1 -1
  370. package/lib/esm/render/webgl/AtmosphereUniforms.d.ts +2 -0
  371. package/lib/esm/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
  372. package/lib/esm/render/webgl/AtmosphereUniforms.js +5 -1
  373. package/lib/esm/render/webgl/AtmosphereUniforms.js.map +1 -1
  374. package/lib/esm/render/webgl/AttributeBuffers.d.ts +6 -2
  375. package/lib/esm/render/webgl/AttributeBuffers.d.ts.map +1 -1
  376. package/lib/esm/render/webgl/AttributeBuffers.js +12 -4
  377. package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
  378. package/lib/esm/render/webgl/BackgroundMapDrape.d.ts +1 -1
  379. package/lib/esm/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  380. package/lib/esm/render/webgl/BackgroundMapDrape.js +3 -3
  381. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  382. package/lib/esm/render/webgl/CachedGeometry.d.ts +8 -8
  383. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  384. package/lib/esm/render/webgl/CachedGeometry.js +8 -8
  385. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  386. package/lib/esm/render/webgl/ClippingProgram.d.ts +2 -0
  387. package/lib/esm/render/webgl/ClippingProgram.d.ts.map +1 -1
  388. package/lib/esm/render/webgl/ClippingProgram.js +5 -1
  389. package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
  390. package/lib/esm/render/webgl/Contours.d.ts +1 -1
  391. package/lib/esm/render/webgl/Contours.d.ts.map +1 -1
  392. package/lib/esm/render/webgl/Contours.js +1 -1
  393. package/lib/esm/render/webgl/Contours.js.map +1 -1
  394. package/lib/esm/render/webgl/Disposable.d.ts +1 -2
  395. package/lib/esm/render/webgl/Disposable.d.ts.map +1 -1
  396. package/lib/esm/render/webgl/Disposable.js +4 -0
  397. package/lib/esm/render/webgl/Disposable.js.map +1 -1
  398. package/lib/esm/render/webgl/EDL.d.ts +1 -1
  399. package/lib/esm/render/webgl/EDL.d.ts.map +1 -1
  400. package/lib/esm/render/webgl/EDL.js +3 -3
  401. package/lib/esm/render/webgl/EDL.js.map +1 -1
  402. package/lib/esm/render/webgl/EdgeGeometry.d.ts +3 -3
  403. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -1
  404. package/lib/esm/render/webgl/EdgeGeometry.js +4 -4
  405. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  406. package/lib/esm/render/webgl/FeatureOverrides.d.ts +1 -1
  407. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  408. package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
  409. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  410. package/lib/esm/render/webgl/FrameBuffer.d.ts +1 -1
  411. package/lib/esm/render/webgl/FrameBuffer.d.ts.map +1 -1
  412. package/lib/esm/render/webgl/FrameBuffer.js +1 -1
  413. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  414. package/lib/esm/render/webgl/Graphic.d.ts +2 -2
  415. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  416. package/lib/esm/render/webgl/Graphic.js +11 -11
  417. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  418. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +2 -2
  419. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  420. package/lib/esm/render/webgl/IndexedEdgeGeometry.js +2 -2
  421. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  422. package/lib/esm/render/webgl/InstancedGeometry.d.ts +4 -4
  423. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  424. package/lib/esm/render/webgl/InstancedGeometry.js +5 -6
  425. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  426. package/lib/esm/render/webgl/Layer.js +1 -1
  427. package/lib/esm/render/webgl/Layer.js.map +1 -1
  428. package/lib/esm/render/webgl/Mesh.d.ts +1 -1
  429. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  430. package/lib/esm/render/webgl/Mesh.js +1 -1
  431. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  432. package/lib/esm/render/webgl/MeshData.d.ts +1 -1
  433. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
  434. package/lib/esm/render/webgl/MeshData.js +2 -2
  435. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  436. package/lib/esm/render/webgl/PlanarClassifier.d.ts +1 -1
  437. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  438. package/lib/esm/render/webgl/PlanarClassifier.js +22 -9
  439. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  440. package/lib/esm/render/webgl/PointCloud.d.ts +1 -1
  441. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  442. package/lib/esm/render/webgl/PointCloud.js +1 -1
  443. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  444. package/lib/esm/render/webgl/PointString.d.ts +1 -1
  445. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  446. package/lib/esm/render/webgl/PointString.js +1 -1
  447. package/lib/esm/render/webgl/PointString.js.map +1 -1
  448. package/lib/esm/render/webgl/Polyline.d.ts +1 -1
  449. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  450. package/lib/esm/render/webgl/Polyline.js +1 -1
  451. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  452. package/lib/esm/render/webgl/RealityMesh.d.ts +6 -10
  453. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  454. package/lib/esm/render/webgl/RealityMesh.js +6 -6
  455. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  456. package/lib/esm/render/webgl/RenderBuffer.d.ts +2 -2
  457. package/lib/esm/render/webgl/RenderBuffer.d.ts.map +1 -1
  458. package/lib/esm/render/webgl/RenderBuffer.js +2 -2
  459. package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
  460. package/lib/esm/render/webgl/SceneCompositor.d.ts +1 -1
  461. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  462. package/lib/esm/render/webgl/SceneCompositor.js +6 -6
  463. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  464. package/lib/esm/render/webgl/ScreenSpaceEffect.d.ts +1 -1
  465. package/lib/esm/render/webgl/ScreenSpaceEffect.d.ts.map +1 -1
  466. package/lib/esm/render/webgl/ScreenSpaceEffect.js +2 -2
  467. package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
  468. package/lib/esm/render/webgl/ShaderProgram.d.ts +5 -1
  469. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  470. package/lib/esm/render/webgl/ShaderProgram.js +11 -3
  471. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  472. package/lib/esm/render/webgl/SolarShadowMap.d.ts +1 -1
  473. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  474. package/lib/esm/render/webgl/SolarShadowMap.js +3 -3
  475. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  476. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +1 -1
  477. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  478. package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
  479. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  480. package/lib/esm/render/webgl/System.d.ts +1 -1
  481. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  482. package/lib/esm/render/webgl/System.js +1 -1
  483. package/lib/esm/render/webgl/System.js.map +1 -1
  484. package/lib/esm/render/webgl/Target.d.ts +2 -2
  485. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  486. package/lib/esm/render/webgl/Target.js +9 -10
  487. package/lib/esm/render/webgl/Target.js.map +1 -1
  488. package/lib/esm/render/webgl/TargetGraphics.d.ts +1 -1
  489. package/lib/esm/render/webgl/TargetGraphics.d.ts.map +1 -1
  490. package/lib/esm/render/webgl/TargetGraphics.js +1 -1
  491. package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
  492. package/lib/esm/render/webgl/Technique.d.ts +6 -0
  493. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  494. package/lib/esm/render/webgl/Technique.js +98 -16
  495. package/lib/esm/render/webgl/Technique.js.map +1 -1
  496. package/lib/esm/render/webgl/Texture.d.ts +1 -1
  497. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  498. package/lib/esm/render/webgl/Texture.js +1 -1
  499. package/lib/esm/render/webgl/Texture.js.map +1 -1
  500. package/lib/esm/render/webgl/TextureDrape.d.ts +1 -1
  501. package/lib/esm/render/webgl/TextureDrape.d.ts.map +1 -1
  502. package/lib/esm/render/webgl/TextureDrape.js +1 -1
  503. package/lib/esm/render/webgl/TextureDrape.js.map +1 -1
  504. package/lib/esm/render/webgl/ThematicSensors.d.ts +1 -1
  505. package/lib/esm/render/webgl/ThematicSensors.d.ts.map +1 -1
  506. package/lib/esm/render/webgl/ThematicSensors.js +1 -1
  507. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  508. package/lib/esm/render/webgl/ThematicUniforms.d.ts +1 -1
  509. package/lib/esm/render/webgl/ThematicUniforms.d.ts.map +1 -1
  510. package/lib/esm/render/webgl/ThematicUniforms.js +1 -1
  511. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  512. package/lib/esm/render/webgl/VertexLUT.d.ts +2 -2
  513. package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
  514. package/lib/esm/render/webgl/VertexLUT.js +2 -2
  515. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  516. package/lib/esm/render/webgl/VisibleTileFeatures.js +60 -3
  517. package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
  518. package/lib/esm/tile/ClassifierTileTree.js +1 -1
  519. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  520. package/lib/esm/tile/DynamicIModelTile.js +3 -3
  521. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  522. package/lib/esm/tile/IModelTileTree.d.ts +1 -1
  523. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  524. package/lib/esm/tile/IModelTileTree.js +12 -10
  525. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  526. package/lib/esm/tile/ImdlDecoder.d.ts +1 -1
  527. package/lib/esm/tile/ImdlDecoder.js +1 -1
  528. package/lib/esm/tile/ImdlDecoder.js.map +1 -1
  529. package/lib/esm/tile/LRUTileList.d.ts +1 -1
  530. package/lib/esm/tile/LRUTileList.d.ts.map +1 -1
  531. package/lib/esm/tile/LRUTileList.js +1 -1
  532. package/lib/esm/tile/LRUTileList.js.map +1 -1
  533. package/lib/esm/tile/OrbitGtTileTree.d.ts +1 -1
  534. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  535. package/lib/esm/tile/OrbitGtTileTree.js +6 -6
  536. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  537. package/lib/esm/tile/PrimaryTileTree.js +1 -1
  538. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  539. package/lib/esm/tile/Tile.d.ts +2 -0
  540. package/lib/esm/tile/Tile.d.ts.map +1 -1
  541. package/lib/esm/tile/Tile.js +6 -2
  542. package/lib/esm/tile/Tile.js.map +1 -1
  543. package/lib/esm/tile/TileAdmin.js +1 -1
  544. package/lib/esm/tile/TileAdmin.js.map +1 -1
  545. package/lib/esm/tile/TileTree.d.ts +2 -0
  546. package/lib/esm/tile/TileTree.d.ts.map +1 -1
  547. package/lib/esm/tile/TileTree.js +5 -1
  548. package/lib/esm/tile/TileTree.js.map +1 -1
  549. package/lib/esm/tile/TileTreeOwner.d.ts +1 -1
  550. package/lib/esm/tile/TileTreeOwner.d.ts.map +1 -1
  551. package/lib/esm/tile/TileTreeOwner.js.map +1 -1
  552. package/lib/esm/tile/map/ImageryTileTree.d.ts +1 -1
  553. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  554. package/lib/esm/tile/map/ImageryTileTree.js +2 -2
  555. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  556. package/lib/esm/tools/AccuDrawTool.d.ts +4 -2
  557. package/lib/esm/tools/AccuDrawTool.d.ts.map +1 -1
  558. package/lib/esm/tools/AccuDrawTool.js +34 -56
  559. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  560. package/lib/esm/tools/AccuDrawViewportUI.d.ts +154 -0
  561. package/lib/esm/tools/AccuDrawViewportUI.d.ts.map +1 -0
  562. package/lib/esm/tools/AccuDrawViewportUI.js +711 -0
  563. package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -0
  564. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  565. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  566. package/package.json +16 -17
@@ -215,7 +215,7 @@ export class BriefcaseConnection extends IModelConnection {
215
215
  return;
216
216
  await this._modelsMonitor.close();
217
217
  this.beforeClose();
218
- this.txns.dispose();
218
+ this.txns[Symbol.dispose]();
219
219
  this._isClosed = true;
220
220
  await IpcApp.appFunctionIpc.closeIModel(this._fileKey);
221
221
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BriefcaseConnection.js","sourceRoot":"","sources":["../../src/BriefcaseConnection.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 IModelConnection\n */\n\nimport { assert, BeEvent, CompressedId64Set, Guid, GuidString, Id64String, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\nimport {\n ChangesetIndex, ChangesetIndexAndId, getPullChangesIpcChannel, IModelConnectionProps, IModelError,\n PullChangesOptions as IpcAppPullChangesOptions, OpenBriefcaseProps, StandaloneOpenOptions,\n} from \"@itwin/core-common\";\nimport { BriefcaseTxns } from \"./BriefcaseTxns\";\nimport { GraphicalEditingScope } from \"./GraphicalEditingScope\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { IpcApp } from \"./IpcApp\";\nimport { ProgressCallback } from \"./request/Request\";\nimport { disposeTileTreesForGeometricModels } from \"./tile/internal\";\nimport { Viewport } from \"./Viewport\";\n\n/**\n * Download progress information.\n * @public\n */\nexport interface DownloadProgressInfo {\n /** Bytes downloaded. */\n loaded: number;\n /** Total size of the download in bytes. */\n total: number;\n}\n\n/**\n * Called to show progress during a download.\n * @public\n */\nexport type OnDownloadProgress = (progress: DownloadProgressInfo) => void;\n\n/**\n * Partial interface of AbortSignal.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal\n * @beta\n */\nexport interface GenericAbortSignal {\n /** Add Listener for abort signal. */\n addEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n /** Remove Listener for abort signal. */\n removeEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n}\n\n/**\n * Options for pulling iModel changes.\n * @public\n */\nexport interface PullChangesOptions {\n /**\n * Function called regularly to report progress of changes download.\n * @deprecated in 3.6. Use [[downloadProgressCallback]] instead.\n */\n progressCallback?: ProgressCallback; // eslint-disable-line @typescript-eslint/no-deprecated\n /** Function called regularly to report progress of changes download. */\n downloadProgressCallback?: OnDownloadProgress;\n /** Interval for calling progress callback (in milliseconds). */\n progressInterval?: number;\n /** Signal for cancelling the download.\n * @beta\n */\n abortSignal?: GenericAbortSignal;\n}\n\n/** Keeps track of changes to models, buffering them until synchronization points.\n * While a GraphicalEditingScope is open, the changes are buffered until the scope exits, at which point they are processed.\n * Otherwise, the buffered changes are processed after undo/redo, commit, or pull+merge changes.\n */\nclass ModelChangeMonitor {\n private _editingScope?: GraphicalEditingScope;\n private readonly _briefcase: BriefcaseConnection;\n private readonly _deletedModels = new Set<string>();\n private readonly _modelIdToGuid = new Map<string, string>();\n private readonly _removals: VoidFunction[] = [];\n\n public constructor(briefcase: BriefcaseConnection) {\n this._briefcase = briefcase;\n\n // Buffer updated geometry guids.\n this._removals.push(briefcase.txns.onModelGeometryChanged.addListener((changes) => {\n for (const change of changes) {\n this._deletedModels.delete(change.id);\n this._modelIdToGuid.set(change.id, change.guid);\n }\n }));\n\n // Buffer deletions of models.\n this._removals.push(briefcase.txns.onModelsChanged.addListener((changes) => {\n if (changes.deleted) {\n for (const id of CompressedId64Set.iterable(changes.deleted)) {\n this._modelIdToGuid.delete(id);\n this._deletedModels.add(id);\n }\n }\n }));\n\n // Outside of an editing scope, we want to update viewport contents after commit, undo/redo, or merging changes.\n const maybeProcess = async () => {\n if (this.editingScope)\n return;\n\n const modelIds = Array.from(this._modelIdToGuid.keys());\n if (modelIds.length > 0)\n await IModelApp.tileAdmin.purgeTileTrees(this._briefcase, modelIds);\n\n this.processBuffered();\n };\n\n this._removals.push(briefcase.txns.onCommitted.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onReplayedExternalTxns.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onAfterUndoRedo.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onChangesPulled.addListener(maybeProcess));\n }\n\n public async close(): Promise<void> {\n for (const removal of this._removals)\n removal();\n\n this._removals.length = 0;\n\n if (this._editingScope) {\n await this._editingScope.exit();\n this._editingScope = undefined;\n }\n }\n\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._editingScope;\n }\n\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n if (this._editingScope)\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\n\n this._editingScope = await GraphicalEditingScope.enter(this._briefcase);\n\n const removeGeomListener = this._editingScope.onGeometryChanges.addListener((changes) => {\n const modelIds = [];\n for (const change of changes)\n modelIds.push(change.id);\n\n this.invalidateScenes(modelIds);\n });\n\n this._editingScope.onExited.addOnce((scope) => {\n assert(scope === this._editingScope);\n this._editingScope = undefined;\n removeGeomListener();\n this.processBuffered();\n });\n\n return this._editingScope;\n }\n\n private processBuffered(): void {\n const models = this._briefcase.models;\n for (const [id, guid] of this._modelIdToGuid) {\n const model = models.getLoaded(id)?.asGeometricModel;\n if (model)\n model.geometryGuid = guid;\n }\n\n const modelIds = new Set<string>(this._modelIdToGuid.keys());\n for (const deleted of this._deletedModels) {\n modelIds.add(deleted);\n models.unload(deleted);\n }\n\n this.invalidateScenes(modelIds);\n disposeTileTreesForGeometricModels(modelIds, this._briefcase);\n\n this._briefcase.onBufferedModelChanges.raiseEvent(modelIds);\n\n this._modelIdToGuid.clear();\n this._deletedModels.clear();\n }\n\n private invalidateScenes(changedModels: Iterable<Id64String>): void {\n for (const user of IModelApp.tileAdmin.tileUsers) {\n if (user instanceof Viewport && user.iModel === this._briefcase) {\n for (const modelId of changedModels) {\n if (user.view.viewsModel(modelId)) {\n user.invalidateScene();\n user.setFeatureOverrideProviderChanged();\n break;\n }\n }\n }\n }\n }\n}\n\n/** Settings that can be used to control the behavior of [[Tool]]s that modify a [[BriefcaseConnection]].\n * For example, tools that want to create new elements can consult the briefcase's editor tool settings to\n * determine into which model and category to insert the elements.\n * Specialized tools are free to ignore these settings.\n * @see [[BriefcaseConnection.editorToolSettings]] to query or modify the current settings for a briefcase.\n * @see [CreateElementTool]($editor-frontend) for an example of a tool that uses these settings.\n * @beta\n */\nexport class BriefcaseEditorToolSettings {\n private _category?: Id64String;\n private _model?: Id64String;\n\n /** An event raised just after the default [[category]] is changed. */\n public readonly onCategoryChanged = new BeEvent<(previousCategory: Id64String | undefined) => void>();\n\n /** An event raised just after the default [[model]] is changed. */\n public readonly onModelChanged = new BeEvent<(previousModel: Id64String | undefined) => void>();\n\n /** The [Category]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate category.\n * @see [[onCategoryChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetCategory]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get category(): Id64String | undefined {\n return this._category;\n }\n public set category(category: Id64String | undefined) {\n const previousCategory = this.category;\n if (category !== this.category) {\n this._category = category;\n this.onCategoryChanged.raiseEvent(previousCategory);\n }\n }\n\n /** The [Model]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate model.\n * @see [[onModelChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetModelId]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get model(): Id64String | undefined {\n return this._model;\n }\n public set model(model: Id64String | undefined) {\n const previousModel = this.model;\n if (model !== this.model) {\n this._model = model;\n this.onModelChanged.raiseEvent(previousModel);\n }\n }\n}\n\n/** A connection to an editable briefcase on the backend. This class uses [Ipc]($docs/learning/IpcInterface.md) to communicate\n * to the backend and may only be used by [[IpcApp]]s.\n * @public\n */\nexport class BriefcaseConnection extends IModelConnection {\n protected _isClosed?: boolean;\n private readonly _modelsMonitor: ModelChangeMonitor;\n /** Default settings that can be used to control the behavior of [[Tool]]s that modify this briefcase.\n * @beta\n */\n public readonly editorToolSettings = new BriefcaseEditorToolSettings();\n\n /** Manages local changes to the briefcase via [Txns]($docs/learning/InteractiveEditing.md). */\n public readonly txns: BriefcaseTxns;\n\n public override isBriefcaseConnection(): this is BriefcaseConnection { return true; }\n\n /** The Guid that identifies the iTwin that owns this iModel. */\n public override get iTwinId(): GuidString { return super.iTwinId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n /** The Guid that identifies this iModel. */\n public override get iModelId(): GuidString { return super.iModelId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n protected constructor(props: IModelConnectionProps, openMode: OpenMode) {\n super(props);\n this._openMode = openMode;\n this.txns = new BriefcaseTxns(this);\n this._modelsMonitor = new ModelChangeMonitor(this);\n if (OpenMode.ReadWrite === this._openMode)\n this.txns.onAfterUndoRedo.addListener(async () => { await IModelApp.toolAdmin.restartPrimitiveTool(); });\n }\n\n /** Open a BriefcaseConnection to a [BriefcaseDb]($backend). */\n public static async openFile(briefcaseProps: OpenBriefcaseProps): Promise<BriefcaseConnection> {\n const iModelProps = await IpcApp.appFunctionIpc.openBriefcase(briefcaseProps);\n const connection = new this({ ...briefcaseProps, ...iModelProps }, briefcaseProps.readonly ? OpenMode.Readonly : OpenMode.ReadWrite);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Open a BriefcaseConnection to a [StandaloneDb]($backend)\n * @note StandaloneDbs, by definition, may not push or pull changes. Attempting to do so will throw exceptions.\n */\n public static async openStandalone(filePath: string, openMode: OpenMode = OpenMode.ReadWrite, opts?: StandaloneOpenOptions): Promise<BriefcaseConnection> {\n const openResponse = await IpcApp.appFunctionIpc.openStandalone(filePath, openMode, opts);\n const connection = new this(openResponse, openMode);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Returns `true` if [[close]] has already been called. */\n public get isClosed(): boolean { return this._isClosed === true; }\n\n /**\n * Close this BriefcaseConnection.\n * @note make sure to call [[saveChanges]] before calling this method. Unsaved local changes are abandoned.\n */\n public async close(): Promise<void> {\n if (this.isClosed)\n return;\n\n await this._modelsMonitor.close();\n\n this.beforeClose();\n this.txns.dispose();\n\n this._isClosed = true;\n await IpcApp.appFunctionIpc.closeIModel(this._fileKey);\n }\n\n private requireTimeline() {\n if (this.iTwinId === Guid.empty)\n throw new IModelError(IModelStatus.WrongIModel, \"iModel has no timeline\");\n }\n\n /** Query if there are any pending Txns in this briefcase that are waiting to be pushed. */\n public async hasPendingTxns(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return this.txns.hasPendingTxns();\n }\n\n /** Commit pending changes to this briefcase.\n * @param description Optional description of the changes.\n */\n public async saveChanges(description?: string): Promise<void> {\n await IpcApp.appFunctionIpc.saveChanges(this.key, description);\n }\n\n /** Pull (and potentially merge if there are local changes) up to a specified changeset from iModelHub into this briefcase\n * @param toIndex The changeset index to pull changes to. If `undefined`, pull all changes.\n * @param options Options for pulling changes.\n * @see [[BriefcaseTxns.onChangesPulled]] for the event dispatched after changes are pulled.\n */\n public async pullChanges(toIndex?: ChangesetIndex, options?: PullChangesOptions): Promise<void> {\n const removeListeners: VoidFunction[] = [];\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const shouldReportProgress = !!options?.progressCallback || !!options?.downloadProgressCallback;\n\n if (shouldReportProgress) {\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n options?.progressCallback?.(data);\n options?.downloadProgressCallback?.(data);\n };\n\n const removeProgressListener = IpcApp.addListener(\n getPullChangesIpcChannel(this.iModelId),\n handleProgress,\n );\n removeListeners.push(removeProgressListener);\n }\n\n if (options?.abortSignal) {\n const abort = () => void IpcApp.appFunctionIpc.cancelPullChangesRequest(this.key);\n options?.abortSignal.addEventListener(\"abort\", abort);\n removeListeners.push(() => options?.abortSignal?.removeEventListener(\"abort\", abort));\n }\n\n this.requireTimeline();\n const ipcAppOptions: IpcAppPullChangesOptions = {\n reportProgress: shouldReportProgress,\n progressInterval: options?.progressInterval,\n enableCancellation: !!options?.abortSignal,\n };\n try {\n this.changeset = await IpcApp.appFunctionIpc.pullChanges(this.key, toIndex, ipcAppOptions);\n } finally {\n removeListeners.forEach((remove) => remove());\n }\n }\n\n /** Create a changeset from local Txns and push to iModelHub. On success, clear Txn table.\n * @param description The description for the changeset\n * @returns the changesetId of the pushed changes\n * @see [[BriefcaseTxns.onChangesPushed]] for the event dispatched after changes are pushed.\n */\n public async pushChanges(description: string): Promise<ChangesetIndexAndId> {\n this.requireTimeline();\n return IpcApp.appFunctionIpc.pushChanges(this.key, description);\n }\n\n /** The current graphical editing scope, if one is in progress.\n * @see [[enterEditingScope]] to begin graphical editing.\n */\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._modelsMonitor.editingScope;\n }\n\n /** Return whether graphical editing is supported for this briefcase. It is not supported if the briefcase is read-only, or the briefcase contains a version of\n * the BisCore ECSchema older than v0.1.11.\n * @see [[enterEditingScope]] to enable graphical editing.\n */\n public async supportsGraphicalEditing(): Promise<boolean> {\n return IpcApp.appFunctionIpc.isGraphicalEditingSupported(this.key);\n }\n\n /** Begin a new graphical editing scope.\n * @throws Error if an editing scope already exists or one could not be created.\n * @see [[GraphicalEditingScope.exit]] to exit the scope.\n * @see [[supportsGraphicalEditing]] to determine whether this method should be expected to succeed.\n * @see [[editingScope]] to obtain the current editing scope, if one is in progress.\n */\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n return this._modelsMonitor.enterEditingScope();\n }\n\n /** Strictly for tests - dispatched from ModelChangeMonitor.processBuffered.\n * @internal\n */\n public readonly onBufferedModelChanges = new BeEvent<(changedModelIds: Set<string>) => void>();\n}\n"]}
1
+ {"version":3,"file":"BriefcaseConnection.js","sourceRoot":"","sources":["../../src/BriefcaseConnection.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 IModelConnection\n */\n\nimport { assert, BeEvent, CompressedId64Set, Guid, GuidString, Id64String, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\nimport {\n ChangesetIndex, ChangesetIndexAndId, getPullChangesIpcChannel, IModelConnectionProps, IModelError,\n PullChangesOptions as IpcAppPullChangesOptions, OpenBriefcaseProps, StandaloneOpenOptions,\n} from \"@itwin/core-common\";\nimport { BriefcaseTxns } from \"./BriefcaseTxns\";\nimport { GraphicalEditingScope } from \"./GraphicalEditingScope\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { IpcApp } from \"./IpcApp\";\nimport { ProgressCallback } from \"./request/Request\";\nimport { disposeTileTreesForGeometricModels } from \"./tile/internal\";\nimport { Viewport } from \"./Viewport\";\n\n/**\n * Download progress information.\n * @public\n */\nexport interface DownloadProgressInfo {\n /** Bytes downloaded. */\n loaded: number;\n /** Total size of the download in bytes. */\n total: number;\n}\n\n/**\n * Called to show progress during a download.\n * @public\n */\nexport type OnDownloadProgress = (progress: DownloadProgressInfo) => void;\n\n/**\n * Partial interface of AbortSignal.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal\n * @beta\n */\nexport interface GenericAbortSignal {\n /** Add Listener for abort signal. */\n addEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n /** Remove Listener for abort signal. */\n removeEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n}\n\n/**\n * Options for pulling iModel changes.\n * @public\n */\nexport interface PullChangesOptions {\n /**\n * Function called regularly to report progress of changes download.\n * @deprecated in 3.6. Use [[downloadProgressCallback]] instead.\n */\n progressCallback?: ProgressCallback; // eslint-disable-line @typescript-eslint/no-deprecated\n /** Function called regularly to report progress of changes download. */\n downloadProgressCallback?: OnDownloadProgress;\n /** Interval for calling progress callback (in milliseconds). */\n progressInterval?: number;\n /** Signal for cancelling the download.\n * @beta\n */\n abortSignal?: GenericAbortSignal;\n}\n\n/** Keeps track of changes to models, buffering them until synchronization points.\n * While a GraphicalEditingScope is open, the changes are buffered until the scope exits, at which point they are processed.\n * Otherwise, the buffered changes are processed after undo/redo, commit, or pull+merge changes.\n */\nclass ModelChangeMonitor {\n private _editingScope?: GraphicalEditingScope;\n private readonly _briefcase: BriefcaseConnection;\n private readonly _deletedModels = new Set<string>();\n private readonly _modelIdToGuid = new Map<string, string>();\n private readonly _removals: VoidFunction[] = [];\n\n public constructor(briefcase: BriefcaseConnection) {\n this._briefcase = briefcase;\n\n // Buffer updated geometry guids.\n this._removals.push(briefcase.txns.onModelGeometryChanged.addListener((changes) => {\n for (const change of changes) {\n this._deletedModels.delete(change.id);\n this._modelIdToGuid.set(change.id, change.guid);\n }\n }));\n\n // Buffer deletions of models.\n this._removals.push(briefcase.txns.onModelsChanged.addListener((changes) => {\n if (changes.deleted) {\n for (const id of CompressedId64Set.iterable(changes.deleted)) {\n this._modelIdToGuid.delete(id);\n this._deletedModels.add(id);\n }\n }\n }));\n\n // Outside of an editing scope, we want to update viewport contents after commit, undo/redo, or merging changes.\n const maybeProcess = async () => {\n if (this.editingScope)\n return;\n\n const modelIds = Array.from(this._modelIdToGuid.keys());\n if (modelIds.length > 0)\n await IModelApp.tileAdmin.purgeTileTrees(this._briefcase, modelIds);\n\n this.processBuffered();\n };\n\n this._removals.push(briefcase.txns.onCommitted.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onReplayedExternalTxns.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onAfterUndoRedo.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onChangesPulled.addListener(maybeProcess));\n }\n\n public async close(): Promise<void> {\n for (const removal of this._removals)\n removal();\n\n this._removals.length = 0;\n\n if (this._editingScope) {\n await this._editingScope.exit();\n this._editingScope = undefined;\n }\n }\n\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._editingScope;\n }\n\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n if (this._editingScope)\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\n\n this._editingScope = await GraphicalEditingScope.enter(this._briefcase);\n\n const removeGeomListener = this._editingScope.onGeometryChanges.addListener((changes) => {\n const modelIds = [];\n for (const change of changes)\n modelIds.push(change.id);\n\n this.invalidateScenes(modelIds);\n });\n\n this._editingScope.onExited.addOnce((scope) => {\n assert(scope === this._editingScope);\n this._editingScope = undefined;\n removeGeomListener();\n this.processBuffered();\n });\n\n return this._editingScope;\n }\n\n private processBuffered(): void {\n const models = this._briefcase.models;\n for (const [id, guid] of this._modelIdToGuid) {\n const model = models.getLoaded(id)?.asGeometricModel;\n if (model)\n model.geometryGuid = guid;\n }\n\n const modelIds = new Set<string>(this._modelIdToGuid.keys());\n for (const deleted of this._deletedModels) {\n modelIds.add(deleted);\n models.unload(deleted);\n }\n\n this.invalidateScenes(modelIds);\n disposeTileTreesForGeometricModels(modelIds, this._briefcase);\n\n this._briefcase.onBufferedModelChanges.raiseEvent(modelIds);\n\n this._modelIdToGuid.clear();\n this._deletedModels.clear();\n }\n\n private invalidateScenes(changedModels: Iterable<Id64String>): void {\n for (const user of IModelApp.tileAdmin.tileUsers) {\n if (user instanceof Viewport && user.iModel === this._briefcase) {\n for (const modelId of changedModels) {\n if (user.view.viewsModel(modelId)) {\n user.invalidateScene();\n user.setFeatureOverrideProviderChanged();\n break;\n }\n }\n }\n }\n }\n}\n\n/** Settings that can be used to control the behavior of [[Tool]]s that modify a [[BriefcaseConnection]].\n * For example, tools that want to create new elements can consult the briefcase's editor tool settings to\n * determine into which model and category to insert the elements.\n * Specialized tools are free to ignore these settings.\n * @see [[BriefcaseConnection.editorToolSettings]] to query or modify the current settings for a briefcase.\n * @see [CreateElementTool]($editor-frontend) for an example of a tool that uses these settings.\n * @beta\n */\nexport class BriefcaseEditorToolSettings {\n private _category?: Id64String;\n private _model?: Id64String;\n\n /** An event raised just after the default [[category]] is changed. */\n public readonly onCategoryChanged = new BeEvent<(previousCategory: Id64String | undefined) => void>();\n\n /** An event raised just after the default [[model]] is changed. */\n public readonly onModelChanged = new BeEvent<(previousModel: Id64String | undefined) => void>();\n\n /** The [Category]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate category.\n * @see [[onCategoryChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetCategory]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get category(): Id64String | undefined {\n return this._category;\n }\n public set category(category: Id64String | undefined) {\n const previousCategory = this.category;\n if (category !== this.category) {\n this._category = category;\n this.onCategoryChanged.raiseEvent(previousCategory);\n }\n }\n\n /** The [Model]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate model.\n * @see [[onModelChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetModelId]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get model(): Id64String | undefined {\n return this._model;\n }\n public set model(model: Id64String | undefined) {\n const previousModel = this.model;\n if (model !== this.model) {\n this._model = model;\n this.onModelChanged.raiseEvent(previousModel);\n }\n }\n}\n\n/** A connection to an editable briefcase on the backend. This class uses [Ipc]($docs/learning/IpcInterface.md) to communicate\n * to the backend and may only be used by [[IpcApp]]s.\n * @public\n */\nexport class BriefcaseConnection extends IModelConnection {\n protected _isClosed?: boolean;\n private readonly _modelsMonitor: ModelChangeMonitor;\n /** Default settings that can be used to control the behavior of [[Tool]]s that modify this briefcase.\n * @beta\n */\n public readonly editorToolSettings = new BriefcaseEditorToolSettings();\n\n /** Manages local changes to the briefcase via [Txns]($docs/learning/InteractiveEditing.md). */\n public readonly txns: BriefcaseTxns;\n\n public override isBriefcaseConnection(): this is BriefcaseConnection { return true; }\n\n /** The Guid that identifies the iTwin that owns this iModel. */\n public override get iTwinId(): GuidString { return super.iTwinId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n /** The Guid that identifies this iModel. */\n public override get iModelId(): GuidString { return super.iModelId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n protected constructor(props: IModelConnectionProps, openMode: OpenMode) {\n super(props);\n this._openMode = openMode;\n this.txns = new BriefcaseTxns(this);\n this._modelsMonitor = new ModelChangeMonitor(this);\n if (OpenMode.ReadWrite === this._openMode)\n this.txns.onAfterUndoRedo.addListener(async () => { await IModelApp.toolAdmin.restartPrimitiveTool(); });\n }\n\n /** Open a BriefcaseConnection to a [BriefcaseDb]($backend). */\n public static async openFile(briefcaseProps: OpenBriefcaseProps): Promise<BriefcaseConnection> {\n const iModelProps = await IpcApp.appFunctionIpc.openBriefcase(briefcaseProps);\n const connection = new this({ ...briefcaseProps, ...iModelProps }, briefcaseProps.readonly ? OpenMode.Readonly : OpenMode.ReadWrite);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Open a BriefcaseConnection to a [StandaloneDb]($backend)\n * @note StandaloneDbs, by definition, may not push or pull changes. Attempting to do so will throw exceptions.\n */\n public static async openStandalone(filePath: string, openMode: OpenMode = OpenMode.ReadWrite, opts?: StandaloneOpenOptions): Promise<BriefcaseConnection> {\n const openResponse = await IpcApp.appFunctionIpc.openStandalone(filePath, openMode, opts);\n const connection = new this(openResponse, openMode);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Returns `true` if [[close]] has already been called. */\n public get isClosed(): boolean { return this._isClosed === true; }\n\n /**\n * Close this BriefcaseConnection.\n * @note make sure to call [[saveChanges]] before calling this method. Unsaved local changes are abandoned.\n */\n public async close(): Promise<void> {\n if (this.isClosed)\n return;\n\n await this._modelsMonitor.close();\n\n this.beforeClose();\n this.txns[Symbol.dispose]();\n\n this._isClosed = true;\n await IpcApp.appFunctionIpc.closeIModel(this._fileKey);\n }\n\n private requireTimeline() {\n if (this.iTwinId === Guid.empty)\n throw new IModelError(IModelStatus.WrongIModel, \"iModel has no timeline\");\n }\n\n /** Query if there are any pending Txns in this briefcase that are waiting to be pushed. */\n public async hasPendingTxns(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return this.txns.hasPendingTxns();\n }\n\n /** Commit pending changes to this briefcase.\n * @param description Optional description of the changes.\n */\n public async saveChanges(description?: string): Promise<void> {\n await IpcApp.appFunctionIpc.saveChanges(this.key, description);\n }\n\n /** Pull (and potentially merge if there are local changes) up to a specified changeset from iModelHub into this briefcase\n * @param toIndex The changeset index to pull changes to. If `undefined`, pull all changes.\n * @param options Options for pulling changes.\n * @see [[BriefcaseTxns.onChangesPulled]] for the event dispatched after changes are pulled.\n */\n public async pullChanges(toIndex?: ChangesetIndex, options?: PullChangesOptions): Promise<void> {\n const removeListeners: VoidFunction[] = [];\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const shouldReportProgress = !!options?.progressCallback || !!options?.downloadProgressCallback;\n\n if (shouldReportProgress) {\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n options?.progressCallback?.(data);\n options?.downloadProgressCallback?.(data);\n };\n\n const removeProgressListener = IpcApp.addListener(\n getPullChangesIpcChannel(this.iModelId),\n handleProgress,\n );\n removeListeners.push(removeProgressListener);\n }\n\n if (options?.abortSignal) {\n const abort = () => void IpcApp.appFunctionIpc.cancelPullChangesRequest(this.key);\n options?.abortSignal.addEventListener(\"abort\", abort);\n removeListeners.push(() => options?.abortSignal?.removeEventListener(\"abort\", abort));\n }\n\n this.requireTimeline();\n const ipcAppOptions: IpcAppPullChangesOptions = {\n reportProgress: shouldReportProgress,\n progressInterval: options?.progressInterval,\n enableCancellation: !!options?.abortSignal,\n };\n try {\n this.changeset = await IpcApp.appFunctionIpc.pullChanges(this.key, toIndex, ipcAppOptions);\n } finally {\n removeListeners.forEach((remove) => remove());\n }\n }\n\n /** Create a changeset from local Txns and push to iModelHub. On success, clear Txn table.\n * @param description The description for the changeset\n * @returns the changesetId of the pushed changes\n * @see [[BriefcaseTxns.onChangesPushed]] for the event dispatched after changes are pushed.\n */\n public async pushChanges(description: string): Promise<ChangesetIndexAndId> {\n this.requireTimeline();\n return IpcApp.appFunctionIpc.pushChanges(this.key, description);\n }\n\n /** The current graphical editing scope, if one is in progress.\n * @see [[enterEditingScope]] to begin graphical editing.\n */\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._modelsMonitor.editingScope;\n }\n\n /** Return whether graphical editing is supported for this briefcase. It is not supported if the briefcase is read-only, or the briefcase contains a version of\n * the BisCore ECSchema older than v0.1.11.\n * @see [[enterEditingScope]] to enable graphical editing.\n */\n public async supportsGraphicalEditing(): Promise<boolean> {\n return IpcApp.appFunctionIpc.isGraphicalEditingSupported(this.key);\n }\n\n /** Begin a new graphical editing scope.\n * @throws Error if an editing scope already exists or one could not be created.\n * @see [[GraphicalEditingScope.exit]] to exit the scope.\n * @see [[supportsGraphicalEditing]] to determine whether this method should be expected to succeed.\n * @see [[editingScope]] to obtain the current editing scope, if one is in progress.\n */\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n return this._modelsMonitor.enterEditingScope();\n }\n\n /** Strictly for tests - dispatched from ModelChangeMonitor.processBuffered.\n * @internal\n */\n public readonly onBufferedModelChanges = new BeEvent<(changedModelIds: Set<string>) => void>();\n}\n"]}
@@ -85,7 +85,7 @@ export declare class BriefcaseTxns extends BriefcaseNotificationHandler implemen
85
85
  /** @internal */
86
86
  constructor(iModel: BriefcaseConnection);
87
87
  /** @internal */
88
- dispose(): void;
88
+ [Symbol.dispose](): void;
89
89
  /** Query if the briefcase has any pending Txns waiting to be pushed. */
90
90
  hasPendingTxns(): Promise<boolean>;
91
91
  /** Determine if any reversible (undoable) changes exist.
@@ -1 +1 @@
1
- {"version":3,"file":"BriefcaseTxns.d.ts","sourceRoot":"","sources":["../../src/BriefcaseTxns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BriefcaseTxns.d.ts","sourceRoot":"","sources":["../../src/BriefcaseTxns.ts"],"names":[],"mappings":"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"}
@@ -93,7 +93,7 @@ export class BriefcaseTxns extends BriefcaseNotificationHandler {
93
93
  this._cleanup = this.registerImpl();
94
94
  }
95
95
  /** @internal */
96
- dispose() {
96
+ [Symbol.dispose]() {
97
97
  if (this._cleanup) {
98
98
  this._cleanup();
99
99
  this._cleanup = undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"BriefcaseTxns.js","sourceRoot":"","sources":["../../src/BriefcaseTxns.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAgB,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACgB,YAAY,EAAqB,aAAa,EAAsB,cAAc,GAExG,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAA0B,MAAM,sBAAsB,CAAC;AAEhF,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,aAAa,EAAoB,MAAM,oBAAoB,CAAC;AAErE;;;;GAIG;AACH,MAAM,OAAgB,4BAA6B,SAAQ,mBAAmB;IAC5E,YAAoB,IAAY;QAAI,KAAK,EAAE,CAAC;QAAxB,SAAI,GAAJ,IAAI,CAAQ;IAAa,CAAC;IAE9C,IAAW,WAAW,KAAK,OAAO,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CACjF;AAED;;;;GAIG;AACH,MAAM,OAAO,aAAc,SAAQ,4BAA4B;IAI7D,gBAAgB;IAChB,IAAW,oBAAoB;QAC7B,OAAO,cAAc,CAAC,IAAI,CAAC;IAC7B,CAAC;IAoED,gBAAgB;IAChB,YAAmB,MAA2B;QAC5C,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QApEpB;;WAEG;QACa,sBAAiB,GAAG,IAAI,OAAO,EAAuC,CAAC;QAEvF;;WAEG;QACa,oBAAe,GAAG,IAAI,OAAO,EAAuC,CAAC;QAErF;;;;;WAKG;QACa,2BAAsB,GAAG,IAAI,OAAO,EAA4D,CAAC;QAEjH;;WAEG;QACa,aAAQ,GAAG,IAAI,OAAO,EAAc,CAAC;QAErD;;;;;WAKG;QACa,gBAAW,GAAG,IAAI,OAAO,EAAmD,CAAC;QAE7F;;WAEG;QACa,yBAAoB,GAAG,IAAI,OAAO,EAAc,CAAC;QAEjE;;WAEG;QACa,2BAAsB,GAAG,IAAI,OAAO,EAAc,CAAC;QAEnE;;WAEG;QACa,qBAAgB,GAAG,IAAI,OAAO,EAAc,CAAC;QAE7D;;WAEG;QACa,qBAAgB,GAAG,IAAI,OAAO,EAA6B,CAAC;QAE5E;;WAEG;QACa,oBAAe,GAAG,IAAI,OAAO,EAA6B,CAAC;QAE3E;;WAEG;QACa,oBAAe,GAAG,IAAI,OAAO,EAAkD,CAAC;QAEhG;;WAEG;QACa,oBAAe,GAAG,IAAI,OAAO,EAAkD,CAAC;QAK9F,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACtC,CAAC;IAED,gBAAgB;IACT,OAAO;QACZ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAE1B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,wEAAwE;IACjE,KAAK,CAAC,cAAc;QACzB,OAAO,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc;QACzB,OAAO,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc;QACzB,OAAO,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa;QACxB,OAAO,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa;QACxB,OAAO,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,gBAAgB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,WAAW,CAAC,aAAqB;QAC5C,OAAO,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC5E,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,UAAU;QACrB,OAAO,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,YAAY;QACvB,OAAO,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,iBAAiB;QAC5B,MAAM,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,gBAAgB;IACT,qBAAqB,CAAC,OAAkC;QAC7D,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,gBAAgB;IACT,mBAAmB,CAAC,OAAkC;QAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,gBAAgB;IACT,0BAA0B,CAAC,OAAiC;QACjE,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,gBAAgB;IACT,YAAY;QACjB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAED,gBAAgB;IACT,eAAe,CAAC,cAAuB,EAAE,IAAY;QAC1D,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,gBAAgB;IACT,wBAAwB;QAC7B,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC;IAED,gBAAgB;IACT,0BAA0B;QAC/B,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,CAAC;IAC3C,CAAC;IAED,gBAAgB;IACT,oBAAoB;QACzB,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;IAED,gBAAgB;IACT,oBAAoB,CAAC,MAAe;QACzC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB;IACT,mBAAmB,CAAC,MAAe;QACxC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,gBAAgB;IACT,mBAAmB,CAAC,eAAoC;QAC7D,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACnD,CAAC;IAED,gBAAgB;IACT,mBAAmB,CAAC,eAAoC;QAC7D,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACnD,CAAC;IAED,gBAAgB;IACT,uBAAuB,CAAC,IAAY;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,gBAAgB;IACT,wBAAwB,CAAC,OAAyB;QACvD,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC;IACrC,CAAC;IAED,gBAAgB;IACT,2BAA2B,CAAC,KAAmB;QACpD,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,gBAAgB;IACT,yBAAyB,CAAC,MAAgB;QAC/C,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,gBAAgB;IACT,yBAAyB,CAAC,IAAmC;QAClE,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,CAAC;IAED,gBAAgB;IACT,uCAAuC,CAAC,GAAmC;QAChF,IAAI,CAAC,OAAO,CAAC,0BAA0B,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module IModelConnection\n */\n\nimport { BeEvent, IModelStatus } from \"@itwin/core-bentley\";\nimport {\n ChangesetIndexAndId, EcefLocation, EcefLocationProps, GeographicCRS, GeographicCRSProps, ipcAppChannels,\n ModelIdAndGeometryGuid, NotifyEntitiesChangedArgs, RemoveFunction, RootSubjectProps, TxnNotifications,\n} from \"@itwin/core-common\";\nimport { Point3d, Range3d, Range3dProps, XYZProps } from \"@itwin/core-geometry\";\nimport { BriefcaseConnection } from \"./BriefcaseConnection\";\nimport { IpcApp, NotificationHandler } from \"./IpcApp\";\nimport { EntityChanges, TxnEntityChanges } from \"./TxnEntityChanges\";\n\n/**\n * Base class for notification handlers for events from the backend that are specific to a [[BriefcaseConnection]].\n * @see [[BriefcaseTxns]].\n * @public\n */\nexport abstract class BriefcaseNotificationHandler extends NotificationHandler {\n constructor(private _key: string) { super(); }\n public abstract get briefcaseChannelName(): string;\n public get channelName() { return `${this.briefcaseChannelName}/${this._key}`; }\n}\n\n/** Manages local changes to a [[BriefcaseConnection]] via [Txns]($docs/learning/InteractiveEditing.md).\n * @see [[BriefcaseConnection.txns]].\n * @see [TxnManager]($backend) for the backend counterpart.\n * @public\n */\nexport class BriefcaseTxns extends BriefcaseNotificationHandler implements TxnNotifications {\n private readonly _iModel: BriefcaseConnection;\n private _cleanup?: RemoveFunction;\n\n /** @internal */\n public get briefcaseChannelName() {\n return ipcAppChannels.txns;\n }\n\n /** Event raised after Txn validation or changeset application to indicate the set of changed elements.\n * @note If there are many changed elements in a single Txn, the notifications are sent in batches so this event *may be called multiple times* per Txn.\n */\n public readonly onElementsChanged = new BeEvent<(changes: TxnEntityChanges) => void>();\n\n /** Event raised after Txn validation or changeset application to indicate the set of changed models.\n * @note If there are many changed models in a single Txn, the notifications are sent in batches so this event *may be called multiple times* per Txn.\n */\n public readonly onModelsChanged = new BeEvent<(changes: TxnEntityChanges) => void>();\n\n /** Event raised after the geometry within one or more [[GeometricModelState]]s is modified by applying a changeset or validation of a transaction.\n * A model's geometry can change as a result of:\n * - Insertion or deletion of a geometric element within the model; or\n * - Modification of an existing element's geometric properties; or\n * - An explicit request to flag it as changed via [IModelDb.Models.updateModel]($backend).\n */\n public readonly onModelGeometryChanged = new BeEvent<(changes: ReadonlyArray<ModelIdAndGeometryGuid>) => void>();\n\n /** Event raised before a commit operation is performed. Initiated by a call to [[BriefcaseConnection.saveChanges]], unless there are no changes to save.\n * @see [[onCommitted]] for the event raised after the operation.\n */\n public readonly onCommit = new BeEvent<() => void>();\n\n /** Event raised after a commit operation is performed. Initiated by a call to [[BriefcaseConnection.saveChanges]], even if there were no changes to save.\n * The event supplies the following information:\n * - `hasPendingTxns`: true if the briefcase has local changes not yet pushed to the server.\n * - `time`: the time at which changes were saved on the backend (obtained via `Date.now()`).\n * @see [[onCommit]] for the event raised before the operation.\n */\n public readonly onCommitted = new BeEvent<(hasPendingTxns: boolean, time: number) => void>();\n\n /** Event raised for a read-only briefcase that was opened with the `watchForChanges` flag enabled when changes made by another connection are applied to the briefcase.\n * @see [[onReplayedExternalTxns]] for the event raised after all such changes have been applied.\n */\n public readonly onReplayExternalTxns = new BeEvent<() => void>();\n\n /** Event raised for a read-only briefcase that was opened with the `watchForChanges` flag enabled when changes made by another connection are applied to the briefcase.\n * @see [[onReplayExternalTxns]] for the event raised before the changes are applied.\n */\n public readonly onReplayedExternalTxns = new BeEvent<() => void>();\n\n /** Event raised after a changeset has been applied to the briefcase.\n * Changesets may be applied as a result of [[BriefcaseConnection.pullChanges]], or by undo/redo operations.\n */\n public readonly onChangesApplied = new BeEvent<() => void>();\n\n /** Event raised before an undo/redo operation is performed.\n * @see [[onAfterUndoRedo]] for the event raised after the operation.\n */\n public readonly onBeforeUndoRedo = new BeEvent<(isUndo: boolean) => void>();\n\n /** Event raised after an undo/redo operation is performed.\n * @see [[onBeforeUndoRedo]] for the event raised before to the operation.\n */\n public readonly onAfterUndoRedo = new BeEvent<(isUndo: boolean) => void>();\n\n /** Event raised after changes are pulled and merged into the briefcase.\n * @see [[BriefcaseConnection.pullAndMergeChanges]].\n */\n public readonly onChangesPulled = new BeEvent<(parentChangeset: ChangesetIndexAndId) => void>();\n\n /** Event raised after the briefcase's local changes are pushed.\n * @see [[BriefcaseConnection.pushChanges]].\n */\n public readonly onChangesPushed = new BeEvent<(parentChangeset: ChangesetIndexAndId) => void>();\n\n /** @internal */\n public constructor(iModel: BriefcaseConnection) {\n super(iModel.key);\n this._iModel = iModel;\n this._cleanup = this.registerImpl();\n }\n\n /** @internal */\n public dispose(): void {\n if (this._cleanup) {\n this._cleanup();\n this._cleanup = undefined;\n\n this.onElementsChanged.clear();\n this.onModelsChanged.clear();\n this.onModelGeometryChanged.clear();\n this.onCommit.clear();\n this.onCommitted.clear();\n this.onChangesApplied.clear();\n this.onBeforeUndoRedo.clear();\n this.onAfterUndoRedo.clear();\n this.onChangesPulled.clear();\n this.onChangesPushed.clear();\n }\n }\n\n /** Query if the briefcase has any pending Txns waiting to be pushed. */\n public async hasPendingTxns(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return IpcApp.appFunctionIpc.hasPendingTxns(this._iModel.key);\n }\n\n /** Determine if any reversible (undoable) changes exist.\n * @see [[reverseSingleTxn]] or [[reverseAll]] to undo changes.\n */\n public async isUndoPossible(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return IpcApp.appFunctionIpc.isUndoPossible(this._iModel.key);\n }\n\n /** Determine if any reinstatable (redoable) changes exist.\n * @see [[reinstateTxn]] to redo changes.\n */\n public async isRedoPossible(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return IpcApp.appFunctionIpc.isRedoPossible(this._iModel.key);\n }\n\n /** Get the description of the operation that would be reversed by calling [[reverseTxns]]`(1)`.\n * This is useful for showing the operation that would be undone, for example in a menu.\n */\n public async getUndoString(): Promise<string> {\n return IpcApp.appFunctionIpc.getUndoString(this._iModel.key);\n }\n\n /** Get a description of the operation that would be reinstated by calling [[reinstateTxn]].\n * This is useful for showing the operation that would be redone, in a pull-down menu for example.\n */\n public async getRedoString(): Promise<string> {\n return IpcApp.appFunctionIpc.getRedoString(this._iModel.key);\n }\n\n /** Reverse (undo) the most recent operation.\n * @see [[reinstateTxn]] to redo operations.\n * @see [[reverseAll]] to undo all operations.\n * @see [[isUndoPossible]] to determine if any reversible operations exist.\n */\n public async reverseSingleTxn(): Promise<IModelStatus> {\n return this.reverseTxns(1);\n }\n\n /** Reverse (undo) the most recent operation(s) to the briefcase in the current session.\n * @param numOperations the number of operations to reverse. If this is greater than 1, the entire set of operations will\n * be reinstated together when/if [[reinstateTxn]] is called.\n * @note If there are any outstanding uncommitted changes, they are reversed.\n * @note The term \"operation\" is used rather than Txn, since multiple Txns can be grouped together via [TxnManager.beginMultiTxnOperation]($backend). So,\n * even if numOperations is 1, multiple Txns may be reversed if they were grouped together when they were made.\n * @note If numOperations is too large only the number of reversible operations are reversed.\n */\n public async reverseTxns(numOperations: number): Promise<IModelStatus> {\n return IpcApp.appFunctionIpc.reverseTxns(this._iModel.key, numOperations);\n }\n\n /** Reverse (undo) all changes back to the beginning of the session.\n * @see [[reinstateTxn]] to redo changes.\n * @see [[reverseSingleTxn]] to undo only the most recent operation.\n * @see [[isUndoPossible]] to determine if any reversible operations exist.\n */\n public async reverseAll(): Promise<IModelStatus> {\n return IpcApp.appFunctionIpc.reverseAllTxn(this._iModel.key);\n }\n\n /** Reinstate (redo) the most recently reversed transaction. Since at any time multiple transactions can be reversed, it\n * may take multiple calls to this method to reinstate all reversed operations.\n * @returns Success if a reversed transaction was reinstated, error status otherwise.\n * @note If there are any outstanding uncommitted changes, they are canceled before the Txn is reinstated.\n * @see [[isRedoPossible]] to determine if any reinstatable operations exist.\n * @see [[reverseSingleTxn]] or [[reverseAll]] to undo changes.\n */\n public async reinstateTxn(): Promise<IModelStatus> {\n return IpcApp.appFunctionIpc.reinstateTxn(this._iModel.key);\n }\n\n /** Restart the current TxnManager session. This causes all Txns in the current session to no longer be undoable (as if the file was closed\n * and reopened.)\n * @note This can be quite disconcerting to the user expecting to be able to undo previously made changes. It should only be used\n * under extreme circumstances where damage to the file or session could happen if the currently committed are reversed. Use sparingly and with care.\n * Probably a good idea to alert the user it happened.\n */\n public async restartTxnSession(): Promise<void> {\n await IpcApp.appFunctionIpc.restartTxnSession(this._iModel.key);\n }\n\n /** @internal */\n public notifyElementsChanged(changed: NotifyEntitiesChangedArgs): void {\n this.onElementsChanged.raiseEvent(new EntityChanges(changed));\n }\n\n /** @internal */\n public notifyModelsChanged(changed: NotifyEntitiesChangedArgs): void {\n this.onModelsChanged.raiseEvent(new EntityChanges(changed));\n }\n\n /** @internal */\n public notifyGeometryGuidsChanged(changes: ModelIdAndGeometryGuid[]): void {\n this.onModelGeometryChanged.raiseEvent(changes);\n }\n\n /** @internal */\n public notifyCommit() {\n this.onCommit.raiseEvent();\n }\n\n /** @internal */\n public notifyCommitted(hasPendingTxns: boolean, time: number) {\n this.onCommitted.raiseEvent(hasPendingTxns, time);\n }\n\n /** @internal */\n public notifyReplayExternalTxns() {\n this.onReplayExternalTxns.raiseEvent();\n }\n\n /** @internal */\n public notifyReplayedExternalTxns() {\n this.onReplayedExternalTxns.raiseEvent();\n }\n\n /** @internal */\n public notifyChangesApplied() {\n this.onChangesApplied.raiseEvent();\n }\n\n /** @internal */\n public notifyBeforeUndoRedo(isUndo: boolean) {\n this.onBeforeUndoRedo.raiseEvent(isUndo);\n }\n\n /** @internal */\n public notifyAfterUndoRedo(isUndo: boolean) {\n this.onAfterUndoRedo.raiseEvent(isUndo);\n }\n\n /** @internal */\n public notifyPulledChanges(parentChangeset: ChangesetIndexAndId) {\n this.onChangesPulled.raiseEvent(parentChangeset);\n }\n\n /** @internal */\n public notifyPushedChanges(parentChangeset: ChangesetIndexAndId) {\n this.onChangesPushed.raiseEvent(parentChangeset);\n }\n\n /** @internal */\n public notifyIModelNameChanged(name: string) {\n this._iModel.name = name;\n }\n\n /** @internal */\n public notifyRootSubjectChanged(subject: RootSubjectProps) {\n this._iModel.rootSubject = subject;\n }\n\n /** @internal */\n public notifyProjectExtentsChanged(range: Range3dProps) {\n this._iModel.projectExtents = Range3d.fromJSON(range);\n }\n\n /** @internal */\n public notifyGlobalOriginChanged(origin: XYZProps) {\n this._iModel.globalOrigin = Point3d.fromJSON(origin);\n }\n\n /** @internal */\n public notifyEcefLocationChanged(ecef: EcefLocationProps | undefined) {\n this._iModel.ecefLocation = ecef ? new EcefLocation(ecef) : undefined;\n }\n\n /** @internal */\n public notifyGeographicCoordinateSystemChanged(gcs: GeographicCRSProps | undefined) {\n this._iModel.geographicCoordinateSystem = gcs ? new GeographicCRS(gcs) : undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"BriefcaseTxns.js","sourceRoot":"","sources":["../../src/BriefcaseTxns.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 IModelConnection\n */\n\nimport { BeEvent, IModelStatus } from \"@itwin/core-bentley\";\nimport {\n ChangesetIndexAndId, EcefLocation, EcefLocationProps, GeographicCRS, GeographicCRSProps, ipcAppChannels,\n ModelIdAndGeometryGuid, NotifyEntitiesChangedArgs, RemoveFunction, RootSubjectProps, TxnNotifications,\n} from \"@itwin/core-common\";\nimport { Point3d, Range3d, Range3dProps, XYZProps } from \"@itwin/core-geometry\";\nimport { BriefcaseConnection } from \"./BriefcaseConnection\";\nimport { IpcApp, NotificationHandler } from \"./IpcApp\";\nimport { EntityChanges, TxnEntityChanges } from \"./TxnEntityChanges\";\n\n/**\n * Base class for notification handlers for events from the backend that are specific to a [[BriefcaseConnection]].\n * @see [[BriefcaseTxns]].\n * @public\n */\nexport abstract class BriefcaseNotificationHandler extends NotificationHandler {\n constructor(private _key: string) { super(); }\n public abstract get briefcaseChannelName(): string;\n public get channelName() { return `${this.briefcaseChannelName}/${this._key}`; }\n}\n\n/** Manages local changes to a [[BriefcaseConnection]] via [Txns]($docs/learning/InteractiveEditing.md).\n * @see [[BriefcaseConnection.txns]].\n * @see [TxnManager]($backend) for the backend counterpart.\n * @public\n */\nexport class BriefcaseTxns extends BriefcaseNotificationHandler implements TxnNotifications {\n private readonly _iModel: BriefcaseConnection;\n private _cleanup?: RemoveFunction;\n\n /** @internal */\n public get briefcaseChannelName() {\n return ipcAppChannels.txns;\n }\n\n /** Event raised after Txn validation or changeset application to indicate the set of changed elements.\n * @note If there are many changed elements in a single Txn, the notifications are sent in batches so this event *may be called multiple times* per Txn.\n */\n public readonly onElementsChanged = new BeEvent<(changes: TxnEntityChanges) => void>();\n\n /** Event raised after Txn validation or changeset application to indicate the set of changed models.\n * @note If there are many changed models in a single Txn, the notifications are sent in batches so this event *may be called multiple times* per Txn.\n */\n public readonly onModelsChanged = new BeEvent<(changes: TxnEntityChanges) => void>();\n\n /** Event raised after the geometry within one or more [[GeometricModelState]]s is modified by applying a changeset or validation of a transaction.\n * A model's geometry can change as a result of:\n * - Insertion or deletion of a geometric element within the model; or\n * - Modification of an existing element's geometric properties; or\n * - An explicit request to flag it as changed via [IModelDb.Models.updateModel]($backend).\n */\n public readonly onModelGeometryChanged = new BeEvent<(changes: ReadonlyArray<ModelIdAndGeometryGuid>) => void>();\n\n /** Event raised before a commit operation is performed. Initiated by a call to [[BriefcaseConnection.saveChanges]], unless there are no changes to save.\n * @see [[onCommitted]] for the event raised after the operation.\n */\n public readonly onCommit = new BeEvent<() => void>();\n\n /** Event raised after a commit operation is performed. Initiated by a call to [[BriefcaseConnection.saveChanges]], even if there were no changes to save.\n * The event supplies the following information:\n * - `hasPendingTxns`: true if the briefcase has local changes not yet pushed to the server.\n * - `time`: the time at which changes were saved on the backend (obtained via `Date.now()`).\n * @see [[onCommit]] for the event raised before the operation.\n */\n public readonly onCommitted = new BeEvent<(hasPendingTxns: boolean, time: number) => void>();\n\n /** Event raised for a read-only briefcase that was opened with the `watchForChanges` flag enabled when changes made by another connection are applied to the briefcase.\n * @see [[onReplayedExternalTxns]] for the event raised after all such changes have been applied.\n */\n public readonly onReplayExternalTxns = new BeEvent<() => void>();\n\n /** Event raised for a read-only briefcase that was opened with the `watchForChanges` flag enabled when changes made by another connection are applied to the briefcase.\n * @see [[onReplayExternalTxns]] for the event raised before the changes are applied.\n */\n public readonly onReplayedExternalTxns = new BeEvent<() => void>();\n\n /** Event raised after a changeset has been applied to the briefcase.\n * Changesets may be applied as a result of [[BriefcaseConnection.pullChanges]], or by undo/redo operations.\n */\n public readonly onChangesApplied = new BeEvent<() => void>();\n\n /** Event raised before an undo/redo operation is performed.\n * @see [[onAfterUndoRedo]] for the event raised after the operation.\n */\n public readonly onBeforeUndoRedo = new BeEvent<(isUndo: boolean) => void>();\n\n /** Event raised after an undo/redo operation is performed.\n * @see [[onBeforeUndoRedo]] for the event raised before to the operation.\n */\n public readonly onAfterUndoRedo = new BeEvent<(isUndo: boolean) => void>();\n\n /** Event raised after changes are pulled and merged into the briefcase.\n * @see [[BriefcaseConnection.pullAndMergeChanges]].\n */\n public readonly onChangesPulled = new BeEvent<(parentChangeset: ChangesetIndexAndId) => void>();\n\n /** Event raised after the briefcase's local changes are pushed.\n * @see [[BriefcaseConnection.pushChanges]].\n */\n public readonly onChangesPushed = new BeEvent<(parentChangeset: ChangesetIndexAndId) => void>();\n\n /** @internal */\n public constructor(iModel: BriefcaseConnection) {\n super(iModel.key);\n this._iModel = iModel;\n this._cleanup = this.registerImpl();\n }\n\n /** @internal */\n public [Symbol.dispose](): void {\n if (this._cleanup) {\n this._cleanup();\n this._cleanup = undefined;\n\n this.onElementsChanged.clear();\n this.onModelsChanged.clear();\n this.onModelGeometryChanged.clear();\n this.onCommit.clear();\n this.onCommitted.clear();\n this.onChangesApplied.clear();\n this.onBeforeUndoRedo.clear();\n this.onAfterUndoRedo.clear();\n this.onChangesPulled.clear();\n this.onChangesPushed.clear();\n }\n }\n\n /** Query if the briefcase has any pending Txns waiting to be pushed. */\n public async hasPendingTxns(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return IpcApp.appFunctionIpc.hasPendingTxns(this._iModel.key);\n }\n\n /** Determine if any reversible (undoable) changes exist.\n * @see [[reverseSingleTxn]] or [[reverseAll]] to undo changes.\n */\n public async isUndoPossible(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return IpcApp.appFunctionIpc.isUndoPossible(this._iModel.key);\n }\n\n /** Determine if any reinstatable (redoable) changes exist.\n * @see [[reinstateTxn]] to redo changes.\n */\n public async isRedoPossible(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return IpcApp.appFunctionIpc.isRedoPossible(this._iModel.key);\n }\n\n /** Get the description of the operation that would be reversed by calling [[reverseTxns]]`(1)`.\n * This is useful for showing the operation that would be undone, for example in a menu.\n */\n public async getUndoString(): Promise<string> {\n return IpcApp.appFunctionIpc.getUndoString(this._iModel.key);\n }\n\n /** Get a description of the operation that would be reinstated by calling [[reinstateTxn]].\n * This is useful for showing the operation that would be redone, in a pull-down menu for example.\n */\n public async getRedoString(): Promise<string> {\n return IpcApp.appFunctionIpc.getRedoString(this._iModel.key);\n }\n\n /** Reverse (undo) the most recent operation.\n * @see [[reinstateTxn]] to redo operations.\n * @see [[reverseAll]] to undo all operations.\n * @see [[isUndoPossible]] to determine if any reversible operations exist.\n */\n public async reverseSingleTxn(): Promise<IModelStatus> {\n return this.reverseTxns(1);\n }\n\n /** Reverse (undo) the most recent operation(s) to the briefcase in the current session.\n * @param numOperations the number of operations to reverse. If this is greater than 1, the entire set of operations will\n * be reinstated together when/if [[reinstateTxn]] is called.\n * @note If there are any outstanding uncommitted changes, they are reversed.\n * @note The term \"operation\" is used rather than Txn, since multiple Txns can be grouped together via [TxnManager.beginMultiTxnOperation]($backend). So,\n * even if numOperations is 1, multiple Txns may be reversed if they were grouped together when they were made.\n * @note If numOperations is too large only the number of reversible operations are reversed.\n */\n public async reverseTxns(numOperations: number): Promise<IModelStatus> {\n return IpcApp.appFunctionIpc.reverseTxns(this._iModel.key, numOperations);\n }\n\n /** Reverse (undo) all changes back to the beginning of the session.\n * @see [[reinstateTxn]] to redo changes.\n * @see [[reverseSingleTxn]] to undo only the most recent operation.\n * @see [[isUndoPossible]] to determine if any reversible operations exist.\n */\n public async reverseAll(): Promise<IModelStatus> {\n return IpcApp.appFunctionIpc.reverseAllTxn(this._iModel.key);\n }\n\n /** Reinstate (redo) the most recently reversed transaction. Since at any time multiple transactions can be reversed, it\n * may take multiple calls to this method to reinstate all reversed operations.\n * @returns Success if a reversed transaction was reinstated, error status otherwise.\n * @note If there are any outstanding uncommitted changes, they are canceled before the Txn is reinstated.\n * @see [[isRedoPossible]] to determine if any reinstatable operations exist.\n * @see [[reverseSingleTxn]] or [[reverseAll]] to undo changes.\n */\n public async reinstateTxn(): Promise<IModelStatus> {\n return IpcApp.appFunctionIpc.reinstateTxn(this._iModel.key);\n }\n\n /** Restart the current TxnManager session. This causes all Txns in the current session to no longer be undoable (as if the file was closed\n * and reopened.)\n * @note This can be quite disconcerting to the user expecting to be able to undo previously made changes. It should only be used\n * under extreme circumstances where damage to the file or session could happen if the currently committed are reversed. Use sparingly and with care.\n * Probably a good idea to alert the user it happened.\n */\n public async restartTxnSession(): Promise<void> {\n await IpcApp.appFunctionIpc.restartTxnSession(this._iModel.key);\n }\n\n /** @internal */\n public notifyElementsChanged(changed: NotifyEntitiesChangedArgs): void {\n this.onElementsChanged.raiseEvent(new EntityChanges(changed));\n }\n\n /** @internal */\n public notifyModelsChanged(changed: NotifyEntitiesChangedArgs): void {\n this.onModelsChanged.raiseEvent(new EntityChanges(changed));\n }\n\n /** @internal */\n public notifyGeometryGuidsChanged(changes: ModelIdAndGeometryGuid[]): void {\n this.onModelGeometryChanged.raiseEvent(changes);\n }\n\n /** @internal */\n public notifyCommit() {\n this.onCommit.raiseEvent();\n }\n\n /** @internal */\n public notifyCommitted(hasPendingTxns: boolean, time: number) {\n this.onCommitted.raiseEvent(hasPendingTxns, time);\n }\n\n /** @internal */\n public notifyReplayExternalTxns() {\n this.onReplayExternalTxns.raiseEvent();\n }\n\n /** @internal */\n public notifyReplayedExternalTxns() {\n this.onReplayedExternalTxns.raiseEvent();\n }\n\n /** @internal */\n public notifyChangesApplied() {\n this.onChangesApplied.raiseEvent();\n }\n\n /** @internal */\n public notifyBeforeUndoRedo(isUndo: boolean) {\n this.onBeforeUndoRedo.raiseEvent(isUndo);\n }\n\n /** @internal */\n public notifyAfterUndoRedo(isUndo: boolean) {\n this.onAfterUndoRedo.raiseEvent(isUndo);\n }\n\n /** @internal */\n public notifyPulledChanges(parentChangeset: ChangesetIndexAndId) {\n this.onChangesPulled.raiseEvent(parentChangeset);\n }\n\n /** @internal */\n public notifyPushedChanges(parentChangeset: ChangesetIndexAndId) {\n this.onChangesPushed.raiseEvent(parentChangeset);\n }\n\n /** @internal */\n public notifyIModelNameChanged(name: string) {\n this._iModel.name = name;\n }\n\n /** @internal */\n public notifyRootSubjectChanged(subject: RootSubjectProps) {\n this._iModel.rootSubject = subject;\n }\n\n /** @internal */\n public notifyProjectExtentsChanged(range: Range3dProps) {\n this._iModel.projectExtents = Range3d.fromJSON(range);\n }\n\n /** @internal */\n public notifyGlobalOriginChanged(origin: XYZProps) {\n this._iModel.globalOrigin = Point3d.fromJSON(origin);\n }\n\n /** @internal */\n public notifyEcefLocationChanged(ecef: EcefLocationProps | undefined) {\n this._iModel.ecefLocation = ecef ? new EcefLocation(ecef) : undefined;\n }\n\n /** @internal */\n public notifyGeographicCoordinateSystemChanged(gcs: GeographicCRSProps | undefined) {\n this._iModel.geographicCoordinateSystem = gcs ? new GeographicCRS(gcs) : undefined;\n }\n}\n"]}
@@ -165,8 +165,8 @@ class SectionAttachment {
165
165
  this._drawingExtents = drawingRange.diagonal();
166
166
  this._drawingExtents.z = Math.abs(this._drawingExtents.z);
167
167
  }
168
- dispose() {
169
- this.viewport.dispose();
168
+ [Symbol.dispose]() {
169
+ this.viewport[Symbol.dispose]();
170
170
  }
171
171
  addToScene(context) {
172
172
  if (context.viewport.freezeScene)
@@ -1 +1 @@
1
- {"version":3,"file":"DrawingViewState.js","sourceRoot":"","sources":["../../src/DrawingViewState.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 Views\n */\n\nimport { assert, dispose, Id64, Id64String } from \"@itwin/core-bentley\";\nimport {\n AxisAlignedBox3d, Frustum, HydrateViewStateRequestProps, HydrateViewStateResponseProps, QueryRowFormat, SectionDrawingViewProps, ViewDefinition2dProps, ViewFlagOverrides, ViewStateProps,\n} from \"@itwin/core-common\";\nimport { Constant, Range3d, Transform, TransformProps, Vector3d } from \"@itwin/core-geometry\";\nimport { CategorySelectorState } from \"./CategorySelectorState\";\nimport { CoordSystem } from \"./CoordSystem\";\nimport { DisplayStyle2dState } from \"./DisplayStyleState\";\nimport { Frustum2d } from \"./Frustum2d\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { FeatureSymbology } from \"./render/FeatureSymbology\";\nimport { GraphicBranch, GraphicBranchOptions } from \"./render/GraphicBranch\";\nimport { MockRender } from \"./render/MockRender\";\nimport { RenderGraphic } from \"./render/RenderGraphic\";\nimport { Scene } from \"./render/Scene\";\nimport { DisclosedTileTreeSet, TileGraphicType } from \"./tile/internal\";\nimport { SceneContext } from \"./ViewContext\";\nimport { OffScreenViewport, Viewport } from \"./Viewport\";\nimport { ViewRect } from \"./common/ViewRect\";\nimport { AttachToViewportArgs, ComputeDisplayTransformArgs, ExtentLimits, GetAttachmentViewportArgs, ViewState2d, ViewState3d } from \"./ViewState\";\n\n/** Strictly for testing.\n * @internal\n */\nexport interface SectionDrawingInfo {\n readonly spatialView: Id64String;\n readonly drawingToSpatialTransform: Transform;\n}\n\n/** The information required to instantiate a [[SectionAttachment]]. This information is supplied to DrawingViewState constructor via ViewStateProps.\n * The spatial view is obtained asynchronously in DrawingViewState.load(). The SectionAttachment is created in DrawingViewState.attachToViewport and\n * disposed of in DrawingViewState.detachFromViewport.\n */\nclass SectionAttachmentInfo {\n private _spatialView: Id64String | ViewState3d;\n private readonly _drawingToSpatialTransform: Transform;\n private readonly _displaySpatialView: boolean;\n\n public get spatialView(): Id64String | ViewState3d { return this._spatialView; }\n public get wantDisplayed(): boolean {\n return this._displaySpatialView || DrawingViewState.alwaysDisplaySpatialView;\n }\n\n private constructor(spatialView: Id64String | ViewState3d, drawingToSpatialTransform: Transform, displaySpatialView: boolean) {\n this._spatialView = spatialView;\n this._drawingToSpatialTransform = drawingToSpatialTransform;\n this._displaySpatialView = displaySpatialView;\n }\n\n public static fromJSON(props?: SectionDrawingViewProps): SectionAttachmentInfo {\n if (!props)\n return new SectionAttachmentInfo(Id64.invalid, Transform.createIdentity(), false);\n\n return new SectionAttachmentInfo(props.spatialView, Transform.fromJSON(props.drawingToSpatialTransform), true === props.displaySpatialView);\n }\n\n public toJSON(): SectionDrawingViewProps | undefined {\n if (\"string\" === typeof this._spatialView && !Id64.isValidId64(this._spatialView))\n return undefined;\n\n return {\n spatialView: (this._spatialView instanceof ViewState3d) ? this._spatialView.id : this._spatialView,\n drawingToSpatialTransform: this._drawingToSpatialTransform.isIdentity ? undefined : this._drawingToSpatialTransform.toJSON(),\n displaySpatialView: this._displaySpatialView,\n };\n }\n\n public clone(iModel: IModelConnection): SectionAttachmentInfo {\n let spatialView = this._spatialView;\n if (spatialView instanceof ViewState3d)\n spatialView = spatialView.clone(iModel);\n\n return new SectionAttachmentInfo(spatialView, this._drawingToSpatialTransform, this._displaySpatialView);\n }\n\n public preload(options: HydrateViewStateRequestProps): void {\n if (!this.wantDisplayed)\n return;\n\n if (this._spatialView instanceof ViewState3d)\n return;\n\n if (!Id64.isValidId64(this._spatialView))\n return;\n\n options.spatialViewId = this._spatialView;\n options.viewStateLoadProps = {\n displayStyle: {\n omitScheduleScriptElementIds: !IModelApp.tileAdmin.enableFrontendScheduleScripts,\n compressExcludedElementIds: true,\n },\n };\n }\n\n public async load(iModel: IModelConnection): Promise<void> {\n if (!this.wantDisplayed)\n return;\n\n if (this._spatialView instanceof ViewState3d)\n return;\n\n if (!Id64.isValidId64(this._spatialView))\n return;\n\n const spatialView = await iModel.views.load(this._spatialView);\n if (spatialView instanceof ViewState3d)\n this._spatialView = spatialView;\n }\n\n public async postload(options: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<void> {\n let spatialView;\n if (options.spatialViewProps) {\n spatialView = await iModel.views.convertViewStatePropsToViewState(options.spatialViewProps);\n }\n\n if (spatialView instanceof ViewState3d)\n this._spatialView = spatialView;\n }\n\n public createAttachment(toSheet: Transform | undefined): SectionAttachment | undefined {\n if (!this.wantDisplayed || !(this._spatialView instanceof ViewState3d))\n return undefined;\n\n const spatialToDrawing = this._drawingToSpatialTransform.inverse();\n return spatialToDrawing ? new SectionAttachment(this._spatialView, spatialToDrawing, this._drawingToSpatialTransform, toSheet) : undefined;\n }\n\n public get sectionDrawingInfo(): SectionDrawingInfo {\n return {\n drawingToSpatialTransform: this._drawingToSpatialTransform,\n spatialView: this._spatialView instanceof ViewState3d ? this._spatialView.id : this._spatialView,\n };\n }\n}\n\n/** A mostly no-op [[RenderTarget]] for a [[SectionAttachment]]. It allocates no webgl resources. */\nclass SectionTarget extends MockRender.OffScreenTarget {\n private readonly _attachment: SectionAttachment;\n\n public constructor(attachment: SectionAttachment) {\n super(IModelApp.renderSystem, new ViewRect(0, 0, 1, 1));\n this._attachment = attachment;\n }\n\n public override changeScene(scene: Scene): void {\n this._attachment.scene = scene;\n }\n\n public override overrideFeatureSymbology(ovrs: FeatureSymbology.Overrides): void {\n this._attachment.symbologyOverrides = ovrs;\n }\n}\n\n/** Draws the contents of an orthographic [[ViewState3d]] directly into a [[DrawingViewState]], if the associated [SectionDrawing]($backend)\n * specifies it should be. We select tiles for the view in the context of a lightweight offscreen viewport with a no-op [[RenderTarget]], then\n * add the resultant graphics to the drawing view's scene. The attachment is created in DrawingViewState.attachToViewport and disposed of in\n * DrawingViewState.detachFromViewport.\n */\nclass SectionAttachment {\n private readonly _viewFlagOverrides: ViewFlagOverrides;\n public readonly toDrawing: Transform;\n private readonly _fromDrawing: Transform;\n private readonly _viewRect = new ViewRect(0, 0, 1, 1);\n private readonly _originalFrustum = new Frustum();\n private readonly _drawingExtents: Vector3d;\n public readonly viewport: OffScreenViewport;\n private readonly _branchOptions: GraphicBranchOptions;\n public scene?: Scene;\n public symbologyOverrides: FeatureSymbology.Overrides;\n\n public get view(): ViewState3d {\n assert(this.viewport.view instanceof ViewState3d);\n return this.viewport.view;\n }\n\n public get zDepth(): number {\n return this._drawingExtents.z;\n }\n\n public get drawingRange() {\n const frustum3d = this._originalFrustum.transformBy(this.toDrawing);\n return frustum3d.toRange();\n }\n\n public constructor(view: ViewState3d, toDrawing: Transform, fromDrawing: Transform, toSheet: Transform | undefined) {\n // Save the input for clone(). Attach a copy to the viewport.\n this.toDrawing = toDrawing;\n this._fromDrawing = fromDrawing;\n\n this.viewport = OffScreenViewport.createViewport(view, new SectionTarget(this), true);\n\n this.symbologyOverrides = new FeatureSymbology.Overrides(view);\n let clipVolume;\n let clip = this.view.getViewClip();\n if (clip) {\n clip = clip.clone();\n const clipTransform = toSheet ? toSheet.multiplyTransformTransform(this.toDrawing) : this.toDrawing;\n clip.transformInPlace(clipTransform);\n clipVolume = IModelApp.renderSystem.createClipVolume(clip);\n }\n\n this._branchOptions = {\n clipVolume,\n hline: view.getDisplayStyle3d().settings.hiddenLineSettings,\n inSectionDrawingAttachment: true,\n frustum: {\n is3d: true,\n scale: { x: 1, y: 1 },\n },\n };\n\n this._viewFlagOverrides = { ...view.viewFlags, lighting: false, shadows: false };\n\n // Save off the original frustum (potentially adjusted by viewport).\n this.viewport.setupFromView();\n this.viewport.viewingSpace.getFrustum(CoordSystem.World, true, this._originalFrustum);\n\n const drawingFrustum = this._originalFrustum.transformBy(this.toDrawing);\n const drawingRange = drawingFrustum.toRange();\n this._drawingExtents = drawingRange.diagonal();\n this._drawingExtents.z = Math.abs(this._drawingExtents.z);\n }\n\n public dispose(): void {\n this.viewport.dispose();\n }\n\n public addToScene(context: SceneContext): void {\n if (context.viewport.freezeScene)\n return;\n\n const pixelSize = context.viewport.getPixelSizeAtPoint();\n if (0 === pixelSize)\n return;\n\n // Adjust offscreen viewport's frustum based on intersection with drawing view frustum.\n const frustum3d = this._originalFrustum.transformBy(this.toDrawing);\n const frustumRange3d = frustum3d.toRange();\n const frustum2d = context.viewport.getWorldFrustum();\n const frustumRange2d = frustum2d.toRange();\n const intersect = frustumRange3d.intersect(frustumRange2d);\n if (intersect.isNull)\n return;\n\n frustum3d.initFromRange(intersect);\n frustum3d.transformBy(this._fromDrawing, frustum3d);\n this.viewport.setupViewFromFrustum(frustum3d);\n\n // Adjust view rect based on size of attachment on screen so tiles of appropriate LOD are selected.\n const width = this._drawingExtents.x * intersect.xLength() / frustumRange3d.xLength();\n const height = this._drawingExtents.y * intersect.yLength() / frustumRange3d.yLength();\n this._viewRect.width = Math.max(1, Math.round(width / pixelSize));\n this._viewRect.height = Math.max(1, Math.round(height / pixelSize));\n this.viewport.setRect(this._viewRect);\n\n // Propagate settings from drawing viewport.\n this.viewport.debugBoundingBoxes = context.viewport.debugBoundingBoxes;\n this.viewport.setTileSizeModifier(context.viewport.tileSizeModifier);\n\n // Create the scene.\n this.viewport.renderFrame();\n const scene = this.scene;\n if (!scene)\n return;\n\n // Extract graphics and insert into drawing's scene context.\n const outputGraphics = (source: RenderGraphic[]) => {\n if (0 === source.length)\n return;\n\n const graphics = new GraphicBranch();\n graphics.setViewFlagOverrides(this._viewFlagOverrides);\n graphics.symbologyOverrides = this.symbologyOverrides;\n\n for (const graphic of source)\n graphics.entries.push(graphic);\n\n const branch = context.createGraphicBranch(graphics, this.toDrawing, this._branchOptions);\n context.outputGraphic(branch);\n };\n\n outputGraphics(scene.foreground);\n context.withGraphicType(TileGraphicType.BackgroundMap, () => outputGraphics(scene.background));\n context.withGraphicType(TileGraphicType.Overlay, () => outputGraphics(scene.overlay));\n\n // Report tile statistics to drawing viewport.\n const tileAdmin = IModelApp.tileAdmin;\n const selectedAndReady = tileAdmin.getTilesForUser(this.viewport);\n const requested = tileAdmin.getRequestsForUser(this.viewport);\n tileAdmin.addExternalTilesForUser(context.viewport, {\n requested: requested?.size ?? 0,\n selected: selectedAndReady?.selected.size ?? 0,\n ready: selectedAndReady?.ready.size ?? 0,\n });\n }\n}\n\n/** A view of a [DrawingModel]($backend)\n * @public\n * @extensions\n */\nexport class DrawingViewState extends ViewState2d {\n public static override get className() { return \"DrawingViewDefinition\"; }\n\n /** Exposed strictly for testing and debugging. Indicates that when loading the view, the spatial view should be displayed even\n * if `SectionDrawing.displaySpatialView` is not `true`.\n * @internal\n */\n public static alwaysDisplaySpatialView = false;\n\n /** Exposed strictly for testing and debugging. Indicates that the 2d graphics should not be displayed.\n * @internal\n */\n public static hideDrawingGraphics = false;\n\n private readonly _viewedExtents: AxisAlignedBox3d;\n private _attachmentInfo: SectionAttachmentInfo;\n private _attachment?: SectionAttachment;\n\n /** Strictly for testing. @internal */\n public get sectionDrawingProps(): SectionDrawingViewProps | undefined {\n return this._attachmentInfo.toJSON();\n }\n\n /** Strictly for testing. @internal */\n public get sectionDrawingInfo() {\n return this._attachmentInfo.sectionDrawingInfo;\n }\n\n /** Strictly for testing. @internal */\n public get attachment(): object | undefined {\n return this._attachment;\n }\n\n /** Strictly for testing. @internal */\n public get attachmentInfo(): { spatialView: Id64String | ViewState3d } {\n return this._attachmentInfo;\n }\n\n public constructor(props: ViewDefinition2dProps, iModel: IModelConnection, categories: CategorySelectorState, displayStyle: DisplayStyle2dState, extents: AxisAlignedBox3d, sectionDrawing?: SectionDrawingViewProps) {\n super(props, iModel, categories, displayStyle);\n if (categories instanceof DrawingViewState) {\n this._viewedExtents = categories._viewedExtents.clone();\n this._attachmentInfo = categories._attachmentInfo.clone(iModel);\n } else {\n this._viewedExtents = extents;\n this._attachmentInfo = SectionAttachmentInfo.fromJSON(sectionDrawing);\n }\n }\n\n /** See [[ViewState.attachToViewport]]. */\n public override attachToViewport(args: AttachToViewportArgs): void {\n super.attachToViewport(args);\n assert(undefined === this._attachment);\n this._attachment = this._attachmentInfo.createAttachment(args.drawingToSheetTransform);\n }\n\n /** See [[ViewState.detachFromViewport]]. */\n public override detachFromViewport(): void {\n super.detachFromViewport();\n this._attachment = dispose(this._attachment);\n }\n\n public override async changeViewedModel(modelId: Id64String): Promise<void> {\n await super.changeViewedModel(modelId);\n const props = await this.querySectionDrawingProps();\n this._attachmentInfo = SectionAttachmentInfo.fromJSON(props);\n\n // super.changeViewedModel() throws if attached to viewport, and attachment only allocated while attached to viewport\n assert(undefined === this._attachment);\n }\n\n private async querySectionDrawingProps(): Promise<SectionDrawingViewProps> {\n let spatialView = Id64.invalid;\n let drawingToSpatialTransform: TransformProps | undefined;\n let displaySpatialView = false;\n try {\n const ecsql = `\n SELECT spatialView,\n json_extract(jsonProperties, '$.drawingToSpatialTransform') as drawingToSpatialTransform,\n CAST(json_extract(jsonProperties, '$.displaySpatialView') as BOOLEAN) as displaySpatialView\n FROM bis.SectionDrawing\n WHERE ECInstanceId=${this.baseModelId}`;\n\n for await (const row of this.iModel.createQueryReader(ecsql, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n spatialView = Id64.fromJSON(row.spatialView?.id);\n displaySpatialView = !!row.displaySpatialView;\n try {\n drawingToSpatialTransform = JSON.parse(row.drawingToSpatialTransform);\n } catch {\n // We'll use identity transform.\n }\n\n break;\n }\n } catch {\n // The version of BisCore ECSchema in the iModel is probably too old to contain the SectionDrawing ECClass.\n }\n\n return { spatialView, displaySpatialView, drawingToSpatialTransform };\n }\n\n /** @internal */\n protected override preload(hydrateRequest: HydrateViewStateRequestProps): void {\n assert(!this.isAttachedToViewport);\n super.preload(hydrateRequest);\n this._attachmentInfo.preload(hydrateRequest);\n }\n\n /** @internal */\n protected override async postload(hydrateResponse: HydrateViewStateResponseProps): Promise<void> {\n const promises = [];\n promises.push(super.postload(hydrateResponse));\n promises.push(this._attachmentInfo.postload(hydrateResponse, this.iModel));\n await Promise.all(promises);\n }\n\n public static override createFromProps(props: ViewStateProps, iModel: IModelConnection): DrawingViewState {\n const cat = new CategorySelectorState(props.categorySelectorProps, iModel);\n const displayStyleState = new DisplayStyle2dState(props.displayStyleProps, iModel);\n const extents = props.modelExtents ? Range3d.fromJSON(props.modelExtents) : new Range3d();\n\n // use \"new this\" so subclasses are correct\n return new this(props.viewDefinitionProps as ViewDefinition2dProps, iModel, cat, displayStyleState, extents, props.sectionDrawing);\n }\n\n public override toProps(): ViewStateProps {\n const props = super.toProps();\n props.modelExtents = this._viewedExtents.toJSON();\n props.sectionDrawing = this._attachmentInfo.toJSON();\n return props;\n }\n\n public getViewedExtents(): AxisAlignedBox3d {\n const extents = this._viewedExtents.clone();\n if (this._attachment) {\n extents.extendRange(this._attachment.drawingRange);\n }\n\n return extents;\n }\n\n public get defaultExtentLimits(): ExtentLimits {\n return {\n min: Constant.oneMillimeter,\n max: 3 * Constant.diameterOfEarth,\n };\n }\n\n public override isDrawingView(): this is DrawingViewState { return true; }\n\n /** See [[ViewState.getOrigin]]. */\n public override getOrigin() {\n const origin = super.getOrigin();\n if (this._attachment)\n origin.z = -this._attachment.zDepth;\n\n return origin;\n }\n\n /** See [[ViewState.getExtents]]. */\n public override getExtents() {\n const extents = super.getExtents();\n if (this._attachment)\n extents.z = this._attachment.zDepth + Frustum2d.minimumZDistance;\n\n return extents;\n }\n\n /** @internal */\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\n super.discloseTileTrees(trees);\n if (this._attachment)\n trees.disclose(this._attachment.viewport);\n }\n\n /** @internal */\n public override createScene(context: SceneContext): void {\n if (!DrawingViewState.hideDrawingGraphics)\n super.createScene(context);\n\n if (this._attachment)\n this._attachment.addToScene(context);\n }\n\n public override get areAllTileTreesLoaded(): boolean {\n return super.areAllTileTreesLoaded && (!this._attachment || this._attachment.view.areAllTileTreesLoaded);\n }\n\n /** @internal */\n public override get secondaryViewports() {\n return this._attachment ? [this._attachment.viewport] : super.secondaryViewports;\n }\n\n /** @internal */\n public override getAttachmentViewport(args: GetAttachmentViewportArgs): Viewport | undefined {\n const attach = args.inSectionDrawingAttachment ? this._attachment : undefined;\n return attach?.viewport;\n }\n\n /** @beta */\n public override computeDisplayTransform(args: ComputeDisplayTransformArgs): Transform | undefined {\n // ###TODO we're currently ignoring model and element Id in args, assuming irrelevant for drawings.\n // Should probably call super or have super call us.\n const attach = args.inSectionDrawingAttachment ? this._attachment : undefined;\n return attach?.toDrawing.clone(args.output);\n }\n}\n"]}
1
+ {"version":3,"file":"DrawingViewState.js","sourceRoot":"","sources":["../../src/DrawingViewState.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 Views\n */\n\nimport { assert, dispose, Id64, Id64String } from \"@itwin/core-bentley\";\nimport {\n AxisAlignedBox3d, Frustum, HydrateViewStateRequestProps, HydrateViewStateResponseProps, QueryRowFormat, SectionDrawingViewProps, ViewDefinition2dProps, ViewFlagOverrides, ViewStateProps,\n} from \"@itwin/core-common\";\nimport { Constant, Range3d, Transform, TransformProps, Vector3d } from \"@itwin/core-geometry\";\nimport { CategorySelectorState } from \"./CategorySelectorState\";\nimport { CoordSystem } from \"./CoordSystem\";\nimport { DisplayStyle2dState } from \"./DisplayStyleState\";\nimport { Frustum2d } from \"./Frustum2d\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { FeatureSymbology } from \"./render/FeatureSymbology\";\nimport { GraphicBranch, GraphicBranchOptions } from \"./render/GraphicBranch\";\nimport { MockRender } from \"./render/MockRender\";\nimport { RenderGraphic } from \"./render/RenderGraphic\";\nimport { Scene } from \"./render/Scene\";\nimport { DisclosedTileTreeSet, TileGraphicType } from \"./tile/internal\";\nimport { SceneContext } from \"./ViewContext\";\nimport { OffScreenViewport, Viewport } from \"./Viewport\";\nimport { ViewRect } from \"./common/ViewRect\";\nimport { AttachToViewportArgs, ComputeDisplayTransformArgs, ExtentLimits, GetAttachmentViewportArgs, ViewState2d, ViewState3d } from \"./ViewState\";\n\n/** Strictly for testing.\n * @internal\n */\nexport interface SectionDrawingInfo {\n readonly spatialView: Id64String;\n readonly drawingToSpatialTransform: Transform;\n}\n\n/** The information required to instantiate a [[SectionAttachment]]. This information is supplied to DrawingViewState constructor via ViewStateProps.\n * The spatial view is obtained asynchronously in DrawingViewState.load(). The SectionAttachment is created in DrawingViewState.attachToViewport and\n * disposed of in DrawingViewState.detachFromViewport.\n */\nclass SectionAttachmentInfo {\n private _spatialView: Id64String | ViewState3d;\n private readonly _drawingToSpatialTransform: Transform;\n private readonly _displaySpatialView: boolean;\n\n public get spatialView(): Id64String | ViewState3d { return this._spatialView; }\n public get wantDisplayed(): boolean {\n return this._displaySpatialView || DrawingViewState.alwaysDisplaySpatialView;\n }\n\n private constructor(spatialView: Id64String | ViewState3d, drawingToSpatialTransform: Transform, displaySpatialView: boolean) {\n this._spatialView = spatialView;\n this._drawingToSpatialTransform = drawingToSpatialTransform;\n this._displaySpatialView = displaySpatialView;\n }\n\n public static fromJSON(props?: SectionDrawingViewProps): SectionAttachmentInfo {\n if (!props)\n return new SectionAttachmentInfo(Id64.invalid, Transform.createIdentity(), false);\n\n return new SectionAttachmentInfo(props.spatialView, Transform.fromJSON(props.drawingToSpatialTransform), true === props.displaySpatialView);\n }\n\n public toJSON(): SectionDrawingViewProps | undefined {\n if (\"string\" === typeof this._spatialView && !Id64.isValidId64(this._spatialView))\n return undefined;\n\n return {\n spatialView: (this._spatialView instanceof ViewState3d) ? this._spatialView.id : this._spatialView,\n drawingToSpatialTransform: this._drawingToSpatialTransform.isIdentity ? undefined : this._drawingToSpatialTransform.toJSON(),\n displaySpatialView: this._displaySpatialView,\n };\n }\n\n public clone(iModel: IModelConnection): SectionAttachmentInfo {\n let spatialView = this._spatialView;\n if (spatialView instanceof ViewState3d)\n spatialView = spatialView.clone(iModel);\n\n return new SectionAttachmentInfo(spatialView, this._drawingToSpatialTransform, this._displaySpatialView);\n }\n\n public preload(options: HydrateViewStateRequestProps): void {\n if (!this.wantDisplayed)\n return;\n\n if (this._spatialView instanceof ViewState3d)\n return;\n\n if (!Id64.isValidId64(this._spatialView))\n return;\n\n options.spatialViewId = this._spatialView;\n options.viewStateLoadProps = {\n displayStyle: {\n omitScheduleScriptElementIds: !IModelApp.tileAdmin.enableFrontendScheduleScripts,\n compressExcludedElementIds: true,\n },\n };\n }\n\n public async load(iModel: IModelConnection): Promise<void> {\n if (!this.wantDisplayed)\n return;\n\n if (this._spatialView instanceof ViewState3d)\n return;\n\n if (!Id64.isValidId64(this._spatialView))\n return;\n\n const spatialView = await iModel.views.load(this._spatialView);\n if (spatialView instanceof ViewState3d)\n this._spatialView = spatialView;\n }\n\n public async postload(options: HydrateViewStateResponseProps, iModel: IModelConnection): Promise<void> {\n let spatialView;\n if (options.spatialViewProps) {\n spatialView = await iModel.views.convertViewStatePropsToViewState(options.spatialViewProps);\n }\n\n if (spatialView instanceof ViewState3d)\n this._spatialView = spatialView;\n }\n\n public createAttachment(toSheet: Transform | undefined): SectionAttachment | undefined {\n if (!this.wantDisplayed || !(this._spatialView instanceof ViewState3d))\n return undefined;\n\n const spatialToDrawing = this._drawingToSpatialTransform.inverse();\n return spatialToDrawing ? new SectionAttachment(this._spatialView, spatialToDrawing, this._drawingToSpatialTransform, toSheet) : undefined;\n }\n\n public get sectionDrawingInfo(): SectionDrawingInfo {\n return {\n drawingToSpatialTransform: this._drawingToSpatialTransform,\n spatialView: this._spatialView instanceof ViewState3d ? this._spatialView.id : this._spatialView,\n };\n }\n}\n\n/** A mostly no-op [[RenderTarget]] for a [[SectionAttachment]]. It allocates no webgl resources. */\nclass SectionTarget extends MockRender.OffScreenTarget {\n private readonly _attachment: SectionAttachment;\n\n public constructor(attachment: SectionAttachment) {\n super(IModelApp.renderSystem, new ViewRect(0, 0, 1, 1));\n this._attachment = attachment;\n }\n\n public override changeScene(scene: Scene): void {\n this._attachment.scene = scene;\n }\n\n public override overrideFeatureSymbology(ovrs: FeatureSymbology.Overrides): void {\n this._attachment.symbologyOverrides = ovrs;\n }\n}\n\n/** Draws the contents of an orthographic [[ViewState3d]] directly into a [[DrawingViewState]], if the associated [SectionDrawing]($backend)\n * specifies it should be. We select tiles for the view in the context of a lightweight offscreen viewport with a no-op [[RenderTarget]], then\n * add the resultant graphics to the drawing view's scene. The attachment is created in DrawingViewState.attachToViewport and disposed of in\n * DrawingViewState.detachFromViewport.\n */\nclass SectionAttachment {\n private readonly _viewFlagOverrides: ViewFlagOverrides;\n public readonly toDrawing: Transform;\n private readonly _fromDrawing: Transform;\n private readonly _viewRect = new ViewRect(0, 0, 1, 1);\n private readonly _originalFrustum = new Frustum();\n private readonly _drawingExtents: Vector3d;\n public readonly viewport: OffScreenViewport;\n private readonly _branchOptions: GraphicBranchOptions;\n public scene?: Scene;\n public symbologyOverrides: FeatureSymbology.Overrides;\n\n public get view(): ViewState3d {\n assert(this.viewport.view instanceof ViewState3d);\n return this.viewport.view;\n }\n\n public get zDepth(): number {\n return this._drawingExtents.z;\n }\n\n public get drawingRange() {\n const frustum3d = this._originalFrustum.transformBy(this.toDrawing);\n return frustum3d.toRange();\n }\n\n public constructor(view: ViewState3d, toDrawing: Transform, fromDrawing: Transform, toSheet: Transform | undefined) {\n // Save the input for clone(). Attach a copy to the viewport.\n this.toDrawing = toDrawing;\n this._fromDrawing = fromDrawing;\n\n this.viewport = OffScreenViewport.createViewport(view, new SectionTarget(this), true);\n\n this.symbologyOverrides = new FeatureSymbology.Overrides(view);\n let clipVolume;\n let clip = this.view.getViewClip();\n if (clip) {\n clip = clip.clone();\n const clipTransform = toSheet ? toSheet.multiplyTransformTransform(this.toDrawing) : this.toDrawing;\n clip.transformInPlace(clipTransform);\n clipVolume = IModelApp.renderSystem.createClipVolume(clip);\n }\n\n this._branchOptions = {\n clipVolume,\n hline: view.getDisplayStyle3d().settings.hiddenLineSettings,\n inSectionDrawingAttachment: true,\n frustum: {\n is3d: true,\n scale: { x: 1, y: 1 },\n },\n };\n\n this._viewFlagOverrides = { ...view.viewFlags, lighting: false, shadows: false };\n\n // Save off the original frustum (potentially adjusted by viewport).\n this.viewport.setupFromView();\n this.viewport.viewingSpace.getFrustum(CoordSystem.World, true, this._originalFrustum);\n\n const drawingFrustum = this._originalFrustum.transformBy(this.toDrawing);\n const drawingRange = drawingFrustum.toRange();\n this._drawingExtents = drawingRange.diagonal();\n this._drawingExtents.z = Math.abs(this._drawingExtents.z);\n }\n\n public [Symbol.dispose](): void {\n this.viewport[Symbol.dispose]();\n }\n\n public addToScene(context: SceneContext): void {\n if (context.viewport.freezeScene)\n return;\n\n const pixelSize = context.viewport.getPixelSizeAtPoint();\n if (0 === pixelSize)\n return;\n\n // Adjust offscreen viewport's frustum based on intersection with drawing view frustum.\n const frustum3d = this._originalFrustum.transformBy(this.toDrawing);\n const frustumRange3d = frustum3d.toRange();\n const frustum2d = context.viewport.getWorldFrustum();\n const frustumRange2d = frustum2d.toRange();\n const intersect = frustumRange3d.intersect(frustumRange2d);\n if (intersect.isNull)\n return;\n\n frustum3d.initFromRange(intersect);\n frustum3d.transformBy(this._fromDrawing, frustum3d);\n this.viewport.setupViewFromFrustum(frustum3d);\n\n // Adjust view rect based on size of attachment on screen so tiles of appropriate LOD are selected.\n const width = this._drawingExtents.x * intersect.xLength() / frustumRange3d.xLength();\n const height = this._drawingExtents.y * intersect.yLength() / frustumRange3d.yLength();\n this._viewRect.width = Math.max(1, Math.round(width / pixelSize));\n this._viewRect.height = Math.max(1, Math.round(height / pixelSize));\n this.viewport.setRect(this._viewRect);\n\n // Propagate settings from drawing viewport.\n this.viewport.debugBoundingBoxes = context.viewport.debugBoundingBoxes;\n this.viewport.setTileSizeModifier(context.viewport.tileSizeModifier);\n\n // Create the scene.\n this.viewport.renderFrame();\n const scene = this.scene;\n if (!scene)\n return;\n\n // Extract graphics and insert into drawing's scene context.\n const outputGraphics = (source: RenderGraphic[]) => {\n if (0 === source.length)\n return;\n\n const graphics = new GraphicBranch();\n graphics.setViewFlagOverrides(this._viewFlagOverrides);\n graphics.symbologyOverrides = this.symbologyOverrides;\n\n for (const graphic of source)\n graphics.entries.push(graphic);\n\n const branch = context.createGraphicBranch(graphics, this.toDrawing, this._branchOptions);\n context.outputGraphic(branch);\n };\n\n outputGraphics(scene.foreground);\n context.withGraphicType(TileGraphicType.BackgroundMap, () => outputGraphics(scene.background));\n context.withGraphicType(TileGraphicType.Overlay, () => outputGraphics(scene.overlay));\n\n // Report tile statistics to drawing viewport.\n const tileAdmin = IModelApp.tileAdmin;\n const selectedAndReady = tileAdmin.getTilesForUser(this.viewport);\n const requested = tileAdmin.getRequestsForUser(this.viewport);\n tileAdmin.addExternalTilesForUser(context.viewport, {\n requested: requested?.size ?? 0,\n selected: selectedAndReady?.selected.size ?? 0,\n ready: selectedAndReady?.ready.size ?? 0,\n });\n }\n}\n\n/** A view of a [DrawingModel]($backend)\n * @public\n * @extensions\n */\nexport class DrawingViewState extends ViewState2d {\n public static override get className() { return \"DrawingViewDefinition\"; }\n\n /** Exposed strictly for testing and debugging. Indicates that when loading the view, the spatial view should be displayed even\n * if `SectionDrawing.displaySpatialView` is not `true`.\n * @internal\n */\n public static alwaysDisplaySpatialView = false;\n\n /** Exposed strictly for testing and debugging. Indicates that the 2d graphics should not be displayed.\n * @internal\n */\n public static hideDrawingGraphics = false;\n\n private readonly _viewedExtents: AxisAlignedBox3d;\n private _attachmentInfo: SectionAttachmentInfo;\n private _attachment?: SectionAttachment;\n\n /** Strictly for testing. @internal */\n public get sectionDrawingProps(): SectionDrawingViewProps | undefined {\n return this._attachmentInfo.toJSON();\n }\n\n /** Strictly for testing. @internal */\n public get sectionDrawingInfo() {\n return this._attachmentInfo.sectionDrawingInfo;\n }\n\n /** Strictly for testing. @internal */\n public get attachment(): object | undefined {\n return this._attachment;\n }\n\n /** Strictly for testing. @internal */\n public get attachmentInfo(): { spatialView: Id64String | ViewState3d } {\n return this._attachmentInfo;\n }\n\n public constructor(props: ViewDefinition2dProps, iModel: IModelConnection, categories: CategorySelectorState, displayStyle: DisplayStyle2dState, extents: AxisAlignedBox3d, sectionDrawing?: SectionDrawingViewProps) {\n super(props, iModel, categories, displayStyle);\n if (categories instanceof DrawingViewState) {\n this._viewedExtents = categories._viewedExtents.clone();\n this._attachmentInfo = categories._attachmentInfo.clone(iModel);\n } else {\n this._viewedExtents = extents;\n this._attachmentInfo = SectionAttachmentInfo.fromJSON(sectionDrawing);\n }\n }\n\n /** See [[ViewState.attachToViewport]]. */\n public override attachToViewport(args: AttachToViewportArgs): void {\n super.attachToViewport(args);\n assert(undefined === this._attachment);\n this._attachment = this._attachmentInfo.createAttachment(args.drawingToSheetTransform);\n }\n\n /** See [[ViewState.detachFromViewport]]. */\n public override detachFromViewport(): void {\n super.detachFromViewport();\n this._attachment = dispose(this._attachment);\n }\n\n public override async changeViewedModel(modelId: Id64String): Promise<void> {\n await super.changeViewedModel(modelId);\n const props = await this.querySectionDrawingProps();\n this._attachmentInfo = SectionAttachmentInfo.fromJSON(props);\n\n // super.changeViewedModel() throws if attached to viewport, and attachment only allocated while attached to viewport\n assert(undefined === this._attachment);\n }\n\n private async querySectionDrawingProps(): Promise<SectionDrawingViewProps> {\n let spatialView = Id64.invalid;\n let drawingToSpatialTransform: TransformProps | undefined;\n let displaySpatialView = false;\n try {\n const ecsql = `\n SELECT spatialView,\n json_extract(jsonProperties, '$.drawingToSpatialTransform') as drawingToSpatialTransform,\n CAST(json_extract(jsonProperties, '$.displaySpatialView') as BOOLEAN) as displaySpatialView\n FROM bis.SectionDrawing\n WHERE ECInstanceId=${this.baseModelId}`;\n\n for await (const row of this.iModel.createQueryReader(ecsql, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n spatialView = Id64.fromJSON(row.spatialView?.id);\n displaySpatialView = !!row.displaySpatialView;\n try {\n drawingToSpatialTransform = JSON.parse(row.drawingToSpatialTransform);\n } catch {\n // We'll use identity transform.\n }\n\n break;\n }\n } catch {\n // The version of BisCore ECSchema in the iModel is probably too old to contain the SectionDrawing ECClass.\n }\n\n return { spatialView, displaySpatialView, drawingToSpatialTransform };\n }\n\n /** @internal */\n protected override preload(hydrateRequest: HydrateViewStateRequestProps): void {\n assert(!this.isAttachedToViewport);\n super.preload(hydrateRequest);\n this._attachmentInfo.preload(hydrateRequest);\n }\n\n /** @internal */\n protected override async postload(hydrateResponse: HydrateViewStateResponseProps): Promise<void> {\n const promises = [];\n promises.push(super.postload(hydrateResponse));\n promises.push(this._attachmentInfo.postload(hydrateResponse, this.iModel));\n await Promise.all(promises);\n }\n\n public static override createFromProps(props: ViewStateProps, iModel: IModelConnection): DrawingViewState {\n const cat = new CategorySelectorState(props.categorySelectorProps, iModel);\n const displayStyleState = new DisplayStyle2dState(props.displayStyleProps, iModel);\n const extents = props.modelExtents ? Range3d.fromJSON(props.modelExtents) : new Range3d();\n\n // use \"new this\" so subclasses are correct\n return new this(props.viewDefinitionProps as ViewDefinition2dProps, iModel, cat, displayStyleState, extents, props.sectionDrawing);\n }\n\n public override toProps(): ViewStateProps {\n const props = super.toProps();\n props.modelExtents = this._viewedExtents.toJSON();\n props.sectionDrawing = this._attachmentInfo.toJSON();\n return props;\n }\n\n public getViewedExtents(): AxisAlignedBox3d {\n const extents = this._viewedExtents.clone();\n if (this._attachment) {\n extents.extendRange(this._attachment.drawingRange);\n }\n\n return extents;\n }\n\n public get defaultExtentLimits(): ExtentLimits {\n return {\n min: Constant.oneMillimeter,\n max: 3 * Constant.diameterOfEarth,\n };\n }\n\n public override isDrawingView(): this is DrawingViewState { return true; }\n\n /** See [[ViewState.getOrigin]]. */\n public override getOrigin() {\n const origin = super.getOrigin();\n if (this._attachment)\n origin.z = -this._attachment.zDepth;\n\n return origin;\n }\n\n /** See [[ViewState.getExtents]]. */\n public override getExtents() {\n const extents = super.getExtents();\n if (this._attachment)\n extents.z = this._attachment.zDepth + Frustum2d.minimumZDistance;\n\n return extents;\n }\n\n /** @internal */\n public override discloseTileTrees(trees: DisclosedTileTreeSet): void {\n super.discloseTileTrees(trees);\n if (this._attachment)\n trees.disclose(this._attachment.viewport);\n }\n\n /** @internal */\n public override createScene(context: SceneContext): void {\n if (!DrawingViewState.hideDrawingGraphics)\n super.createScene(context);\n\n if (this._attachment)\n this._attachment.addToScene(context);\n }\n\n public override get areAllTileTreesLoaded(): boolean {\n return super.areAllTileTreesLoaded && (!this._attachment || this._attachment.view.areAllTileTreesLoaded);\n }\n\n /** @internal */\n public override get secondaryViewports() {\n return this._attachment ? [this._attachment.viewport] : super.secondaryViewports;\n }\n\n /** @internal */\n public override getAttachmentViewport(args: GetAttachmentViewportArgs): Viewport | undefined {\n const attach = args.inSectionDrawingAttachment ? this._attachment : undefined;\n return attach?.viewport;\n }\n\n /** @beta */\n public override computeDisplayTransform(args: ComputeDisplayTransformArgs): Transform | undefined {\n // ###TODO we're currently ignoring model and element Id in args, assuming irrelevant for drawings.\n // Should probably call super or have super call us.\n const attach = args.inSectionDrawingAttachment ? this._attachment : undefined;\n return attach?.toDrawing.clone(args.output);\n }\n}\n"]}
@@ -24,7 +24,7 @@ export declare class EnvironmentDecorations {
24
24
  protected _ground?: GroundPlaneDecorations;
25
25
  protected _sky: SkyBoxDecorations;
26
26
  constructor(view: ViewState3d, onLoaded: () => void, onDispose: () => void);
27
- dispose(): void;
27
+ [Symbol.dispose](): void;
28
28
  setEnvironment(env: Environment): void;
29
29
  decorate(context: DecorateContext): void;
30
30
  private loadGround;
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentDecorations.d.ts","sourceRoot":"","sources":["../../src/EnvironmentDecorations.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EACK,WAAW,EAAY,aAAa,EAC/C,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;CACrC;AASD,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED,gBAAgB;AAChB,qBAAa,sBAAsB;IACjC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAC1C,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAC3C,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC;gBAEf,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,SAAS,EAAE,MAAM,IAAI;IAW1E,OAAO,IAAI,IAAI;IAOf,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAmBtC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAwC/C,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,kBAAkB;IAqC1B,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,gBAAgB;IAqExB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,uBAAuB;YAQjB,aAAa;CAM5B"}
1
+ {"version":3,"file":"EnvironmentDecorations.d.ts","sourceRoot":"","sources":["../../src/EnvironmentDecorations.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EACK,WAAW,EAAY,aAAa,EAC/C,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;CACrC;AASD,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED,gBAAgB;AAChB,qBAAa,sBAAsB;IACjC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAC1C,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAC3C,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC;gBAEf,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,SAAS,EAAE,MAAM,IAAI;IAW1E,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAOxB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAmBtC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAwC/C,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,kBAAkB;IAqC1B,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,gBAAgB;IAqExB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,uBAAuB;YAQjB,aAAa;CAM5B"}
@@ -23,7 +23,7 @@ export class EnvironmentDecorations {
23
23
  if (this._environment.displayGround)
24
24
  this.loadGround();
25
25
  }
26
- dispose() {
26
+ [Symbol.dispose]() {
27
27
  this._ground = undefined;
28
28
  this._sky.params = this._sky.promise = undefined;
29
29
  this._onDispose();
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentDecorations.js","sourceRoot":"","sources":["../../src/EnvironmentDecorations.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 Views\n */\n\nimport { assert, Id64 } from \"@itwin/core-bentley\";\nimport {\n ColorDef, Environment, Gradient, GraphicParams, RenderTexture, SkyCube, SkySphere, TextureImageSpec, TextureMapping,\n} from \"@itwin/core-common\";\nimport { Point2d, Point3d, PolyfaceBuilder, StrokeOptions } from \"@itwin/core-geometry\";\nimport { tryImageElementFromUrl } from \"./common/ImageUtil\";\nimport { IModelApp } from \"./IModelApp\";\nimport { RenderGraphic } from \"./render/RenderGraphic\";\nimport { RenderSkyBoxParams } from \"./render/RenderSystem\";\nimport { DecorateContext } from \"./ViewContext\";\nimport { ViewState3d } from \"./ViewState\";\nimport { GraphicType } from \"./common/render/GraphicType\";\n\n/** @internal */\nexport interface GroundPlaneDecorations {\n readonly aboveParams: GraphicParams;\n readonly belowParams: GraphicParams;\n}\n\ninterface SkyBoxParamsLoader {\n // Invoke to obtain sky box params.\n load(): RenderSkyBoxParams | undefined;\n // If defined, await before invoking load().\n preload?: Promise<boolean>;\n}\n\n/** @internal */\nexport interface SkyBoxDecorations {\n params?: RenderSkyBoxParams;\n promise?: Promise<boolean>;\n}\n\n/** @internal */\nexport class EnvironmentDecorations {\n protected readonly _view: ViewState3d;\n protected readonly _onLoaded: () => void;\n protected readonly _onDispose: () => void;\n protected _environment: Environment;\n protected _ground?: GroundPlaneDecorations;\n protected _sky: SkyBoxDecorations;\n\n public constructor(view: ViewState3d, onLoaded: () => void, onDispose: () => void) {\n this._environment = view.displayStyle.environment;\n this._view = view;\n this._onLoaded = onLoaded;\n this._onDispose = onDispose;\n this._sky = {};\n this.loadSkyBox();\n if (this._environment.displayGround)\n this.loadGround();\n }\n\n public dispose(): void {\n this._ground = undefined;\n this._sky.params = this._sky.promise = undefined;\n\n this._onDispose();\n }\n\n public setEnvironment(env: Environment): void {\n const prev = this._environment;\n if (prev === env)\n return;\n\n this._environment = env;\n\n // Update ground plane\n if (!env.displayGround || env.ground !== prev.ground)\n this._ground = undefined;\n\n if (env.displayGround && !this._ground)\n this.loadGround();\n\n // Update sky box\n if (env.sky !== prev.sky)\n this.loadSkyBox();\n }\n\n public decorate(context: DecorateContext): void {\n const env = this._environment;\n\n let sky: RenderGraphic | undefined;\n if (env.displayAtmosphere) {\n sky = IModelApp.renderSystem.createSkyBox(this.createSkyGradientParams());\n } else if (env.displaySky && this._sky.params) {\n sky = IModelApp.renderSystem.createSkyBox(this._sky.params);\n }\n if (sky)\n context.setSkyBox(sky);\n\n if (!env.displayGround || !this._ground)\n return;\n\n const extents = this._view.getGroundExtents(context.viewport);\n if (extents.isNull)\n return;\n\n const points: Point3d[] = [extents.low.clone(), extents.low.clone(), extents.high.clone(), extents.high.clone()];\n points[1].x = extents.high.x;\n points[3].x = extents.low.x;\n\n const aboveGround = this._view.isEyePointAbove(extents.low.z);\n const params = aboveGround ? this._ground.aboveParams : this._ground.belowParams;\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\n builder.activateGraphicParams(params);\n\n const strokeOptions = new StrokeOptions();\n strokeOptions.needParams = true;\n const polyfaceBuilder = PolyfaceBuilder.create(strokeOptions);\n polyfaceBuilder.toggleReversedFacetFlag();\n const uvParams: Point2d[] = [Point2d.create(0, 0), Point2d.create(1, 0), Point2d.create(1, 1), Point2d.create(0, 1)];\n polyfaceBuilder.addQuadFacet(points, uvParams);\n const polyface = polyfaceBuilder.claimPolyface(false);\n\n builder.addPolyface(polyface, true);\n context.addDecorationFromBuilder(builder);\n }\n\n private loadGround(): void {\n assert(undefined === this._ground);\n const aboveParams = this.createGroundParams(true);\n const belowParams = this.createGroundParams(false);\n if (aboveParams && belowParams)\n this._ground = { aboveParams, belowParams };\n }\n\n private createGroundParams(above: boolean): GraphicParams | undefined {\n // Create a gradient texture.\n const ground = this._environment.ground;\n const values = [0, 0.25, 0.5];\n const color = above ? ground.aboveColor : ground.belowColor;\n const alpha = above ? 0x80 : 0x85;\n const groundColors = [color.withTransparency(0xff), color, color];\n groundColors[1] = groundColors[2] = color.withTransparency(alpha);\n\n const gradient = new Gradient.Symb();\n gradient.mode = Gradient.Mode.Spherical;\n gradient.keys = [{ color: groundColors[0], value: values[0] }, { color: groundColors[1], value: values[1] }, { color: groundColors[2], value: values[2] }];\n const texture = IModelApp.renderSystem.getGradientTexture(gradient, this._view.iModel);\n if (!texture)\n return undefined;\n\n // Create a material using the gradient texture\n const material = IModelApp.renderSystem.createRenderMaterial({\n diffuse: { color: ColorDef.white, weight: 0 },\n textureMapping: {\n texture,\n transform: new TextureMapping.Trans2x3(0, 1, 0, 1, 0, 0),\n },\n });\n\n if (!material)\n return undefined;\n\n // Create GraphicParams using the material.\n const params = new GraphicParams();\n params.lineColor = gradient.keys[0].color;\n params.fillColor = ColorDef.white; // Fill should be set to opaque white for gradient texture...\n params.material = material;\n\n return params;\n }\n\n private loadSkyBox(): void {\n const loader = this.loadSkyBoxParams();\n if (undefined === loader.preload) {\n this.setSky(loader.load());\n return;\n }\n\n const promise = loader.preload;\n this._sky.promise = promise;\n loader.preload.then((loaded) => {\n if (promise === this._sky.promise)\n this.setSky(loaded ? loader.load() : undefined);\n }).catch(() => {\n if (promise === this._sky.promise)\n this.setSky(undefined);\n });\n }\n\n private setSky(params: RenderSkyBoxParams | undefined): void {\n this._sky.promise = undefined;\n this._sky.params = params ?? this.createSkyGradientParams();\n this._onLoaded();\n }\n\n private loadSkyBoxParams(): SkyBoxParamsLoader {\n let load: (() => RenderSkyBoxParams | undefined);\n let preload: Promise<boolean> | undefined;\n\n const sky = this._environment.sky;\n if (sky instanceof SkyCube) {\n const key = this.createCubeImageKey(sky);\n load = () => {\n const texture = IModelApp.renderSystem.findTexture(key, this._view.iModel);\n return texture ? { type: \"cube\", texture } : undefined;\n };\n\n if (!IModelApp.renderSystem.findTexture(key, this._view.iModel)) {\n // Some faces may use the same image. Only request each image once.\n const promises = [];\n const specs = new Set<string>([sky.images.front, sky.images.back, sky.images.left, sky.images.right, sky.images.top, sky.images.bottom]);\n for (const spec of specs)\n promises.push(this.imageFromSpec(spec));\n\n preload = Promise.all(promises).then((images) => {\n const idToImage = new Map<TextureImageSpec, HTMLImageElement>();\n let index = 0;\n for (const spec of specs) {\n const image = images[index++];\n if (!image)\n return false;\n else\n idToImage.set(spec, image);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const params = new RenderTexture.Params(key, RenderTexture.Type.SkyBox);\n const txImgs = [\n idToImage.get(sky.images.front)!, idToImage.get(sky.images.back)!, idToImage.get(sky.images.top)!,\n idToImage.get(sky.images.bottom)!, idToImage.get(sky.images.right)!, idToImage.get(sky.images.left)!,\n ];\n\n return undefined !== IModelApp.renderSystem.createTextureFromCubeImages(txImgs[0], txImgs[1], txImgs[2], txImgs[3], txImgs[4], txImgs[5], this._view.iModel, params);\n });\n }\n } else if (sky instanceof SkySphere) {\n load = () => {\n const texture = IModelApp.renderSystem.findTexture(sky.image, this._view.iModel);\n return texture ? {\n type: \"sphere\",\n texture,\n rotation: 0,\n zOffset: this._view.iModel.globalOrigin.z,\n } : undefined;\n };\n\n if (!IModelApp.renderSystem.findTexture(sky.image, this._view.iModel)) {\n preload = this.imageFromSpec(sky.image).then((image) => {\n if (!image)\n return false;\n\n return undefined !== IModelApp.renderSystem.createTexture({\n image: { source: image },\n ownership: { iModel: this._view.iModel, key: sky.image },\n });\n });\n }\n } else {\n load = () => this.createSkyGradientParams();\n }\n\n return { load, preload };\n }\n\n private createCubeImageKey(sky: SkyCube): string {\n const i = sky.images;\n return `skycube:${i.front}:${i.back}:${i.left}:${i.right}:${i.top}:${i.bottom}`;\n }\n\n private createSkyGradientParams(): RenderSkyBoxParams {\n return {\n type: \"gradient\",\n gradient: this._environment.sky.gradient,\n zOffset: this._view.iModel.globalOrigin.z,\n };\n }\n\n private async imageFromSpec(spec: TextureImageSpec): Promise<HTMLImageElement | undefined> {\n if (Id64.isValidId64(spec))\n return (await IModelApp.renderSystem.loadTextureImage(spec, this._view.iModel))?.image;\n\n return tryImageElementFromUrl(spec);\n }\n}\n"]}
1
+ {"version":3,"file":"EnvironmentDecorations.js","sourceRoot":"","sources":["../../src/EnvironmentDecorations.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 Views\n */\n\nimport { assert, Id64 } from \"@itwin/core-bentley\";\nimport {\n ColorDef, Environment, Gradient, GraphicParams, RenderTexture, SkyCube, SkySphere, TextureImageSpec, TextureMapping,\n} from \"@itwin/core-common\";\nimport { Point2d, Point3d, PolyfaceBuilder, StrokeOptions } from \"@itwin/core-geometry\";\nimport { tryImageElementFromUrl } from \"./common/ImageUtil\";\nimport { IModelApp } from \"./IModelApp\";\nimport { RenderGraphic } from \"./render/RenderGraphic\";\nimport { RenderSkyBoxParams } from \"./render/RenderSystem\";\nimport { DecorateContext } from \"./ViewContext\";\nimport { ViewState3d } from \"./ViewState\";\nimport { GraphicType } from \"./common/render/GraphicType\";\n\n/** @internal */\nexport interface GroundPlaneDecorations {\n readonly aboveParams: GraphicParams;\n readonly belowParams: GraphicParams;\n}\n\ninterface SkyBoxParamsLoader {\n // Invoke to obtain sky box params.\n load(): RenderSkyBoxParams | undefined;\n // If defined, await before invoking load().\n preload?: Promise<boolean>;\n}\n\n/** @internal */\nexport interface SkyBoxDecorations {\n params?: RenderSkyBoxParams;\n promise?: Promise<boolean>;\n}\n\n/** @internal */\nexport class EnvironmentDecorations {\n protected readonly _view: ViewState3d;\n protected readonly _onLoaded: () => void;\n protected readonly _onDispose: () => void;\n protected _environment: Environment;\n protected _ground?: GroundPlaneDecorations;\n protected _sky: SkyBoxDecorations;\n\n public constructor(view: ViewState3d, onLoaded: () => void, onDispose: () => void) {\n this._environment = view.displayStyle.environment;\n this._view = view;\n this._onLoaded = onLoaded;\n this._onDispose = onDispose;\n this._sky = {};\n this.loadSkyBox();\n if (this._environment.displayGround)\n this.loadGround();\n }\n\n public [Symbol.dispose](): void {\n this._ground = undefined;\n this._sky.params = this._sky.promise = undefined;\n\n this._onDispose();\n }\n\n public setEnvironment(env: Environment): void {\n const prev = this._environment;\n if (prev === env)\n return;\n\n this._environment = env;\n\n // Update ground plane\n if (!env.displayGround || env.ground !== prev.ground)\n this._ground = undefined;\n\n if (env.displayGround && !this._ground)\n this.loadGround();\n\n // Update sky box\n if (env.sky !== prev.sky)\n this.loadSkyBox();\n }\n\n public decorate(context: DecorateContext): void {\n const env = this._environment;\n\n let sky: RenderGraphic | undefined;\n if (env.displayAtmosphere) {\n sky = IModelApp.renderSystem.createSkyBox(this.createSkyGradientParams());\n } else if (env.displaySky && this._sky.params) {\n sky = IModelApp.renderSystem.createSkyBox(this._sky.params);\n }\n if (sky)\n context.setSkyBox(sky);\n\n if (!env.displayGround || !this._ground)\n return;\n\n const extents = this._view.getGroundExtents(context.viewport);\n if (extents.isNull)\n return;\n\n const points: Point3d[] = [extents.low.clone(), extents.low.clone(), extents.high.clone(), extents.high.clone()];\n points[1].x = extents.high.x;\n points[3].x = extents.low.x;\n\n const aboveGround = this._view.isEyePointAbove(extents.low.z);\n const params = aboveGround ? this._ground.aboveParams : this._ground.belowParams;\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\n builder.activateGraphicParams(params);\n\n const strokeOptions = new StrokeOptions();\n strokeOptions.needParams = true;\n const polyfaceBuilder = PolyfaceBuilder.create(strokeOptions);\n polyfaceBuilder.toggleReversedFacetFlag();\n const uvParams: Point2d[] = [Point2d.create(0, 0), Point2d.create(1, 0), Point2d.create(1, 1), Point2d.create(0, 1)];\n polyfaceBuilder.addQuadFacet(points, uvParams);\n const polyface = polyfaceBuilder.claimPolyface(false);\n\n builder.addPolyface(polyface, true);\n context.addDecorationFromBuilder(builder);\n }\n\n private loadGround(): void {\n assert(undefined === this._ground);\n const aboveParams = this.createGroundParams(true);\n const belowParams = this.createGroundParams(false);\n if (aboveParams && belowParams)\n this._ground = { aboveParams, belowParams };\n }\n\n private createGroundParams(above: boolean): GraphicParams | undefined {\n // Create a gradient texture.\n const ground = this._environment.ground;\n const values = [0, 0.25, 0.5];\n const color = above ? ground.aboveColor : ground.belowColor;\n const alpha = above ? 0x80 : 0x85;\n const groundColors = [color.withTransparency(0xff), color, color];\n groundColors[1] = groundColors[2] = color.withTransparency(alpha);\n\n const gradient = new Gradient.Symb();\n gradient.mode = Gradient.Mode.Spherical;\n gradient.keys = [{ color: groundColors[0], value: values[0] }, { color: groundColors[1], value: values[1] }, { color: groundColors[2], value: values[2] }];\n const texture = IModelApp.renderSystem.getGradientTexture(gradient, this._view.iModel);\n if (!texture)\n return undefined;\n\n // Create a material using the gradient texture\n const material = IModelApp.renderSystem.createRenderMaterial({\n diffuse: { color: ColorDef.white, weight: 0 },\n textureMapping: {\n texture,\n transform: new TextureMapping.Trans2x3(0, 1, 0, 1, 0, 0),\n },\n });\n\n if (!material)\n return undefined;\n\n // Create GraphicParams using the material.\n const params = new GraphicParams();\n params.lineColor = gradient.keys[0].color;\n params.fillColor = ColorDef.white; // Fill should be set to opaque white for gradient texture...\n params.material = material;\n\n return params;\n }\n\n private loadSkyBox(): void {\n const loader = this.loadSkyBoxParams();\n if (undefined === loader.preload) {\n this.setSky(loader.load());\n return;\n }\n\n const promise = loader.preload;\n this._sky.promise = promise;\n loader.preload.then((loaded) => {\n if (promise === this._sky.promise)\n this.setSky(loaded ? loader.load() : undefined);\n }).catch(() => {\n if (promise === this._sky.promise)\n this.setSky(undefined);\n });\n }\n\n private setSky(params: RenderSkyBoxParams | undefined): void {\n this._sky.promise = undefined;\n this._sky.params = params ?? this.createSkyGradientParams();\n this._onLoaded();\n }\n\n private loadSkyBoxParams(): SkyBoxParamsLoader {\n let load: (() => RenderSkyBoxParams | undefined);\n let preload: Promise<boolean> | undefined;\n\n const sky = this._environment.sky;\n if (sky instanceof SkyCube) {\n const key = this.createCubeImageKey(sky);\n load = () => {\n const texture = IModelApp.renderSystem.findTexture(key, this._view.iModel);\n return texture ? { type: \"cube\", texture } : undefined;\n };\n\n if (!IModelApp.renderSystem.findTexture(key, this._view.iModel)) {\n // Some faces may use the same image. Only request each image once.\n const promises = [];\n const specs = new Set<string>([sky.images.front, sky.images.back, sky.images.left, sky.images.right, sky.images.top, sky.images.bottom]);\n for (const spec of specs)\n promises.push(this.imageFromSpec(spec));\n\n preload = Promise.all(promises).then((images) => {\n const idToImage = new Map<TextureImageSpec, HTMLImageElement>();\n let index = 0;\n for (const spec of specs) {\n const image = images[index++];\n if (!image)\n return false;\n else\n idToImage.set(spec, image);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const params = new RenderTexture.Params(key, RenderTexture.Type.SkyBox);\n const txImgs = [\n idToImage.get(sky.images.front)!, idToImage.get(sky.images.back)!, idToImage.get(sky.images.top)!,\n idToImage.get(sky.images.bottom)!, idToImage.get(sky.images.right)!, idToImage.get(sky.images.left)!,\n ];\n\n return undefined !== IModelApp.renderSystem.createTextureFromCubeImages(txImgs[0], txImgs[1], txImgs[2], txImgs[3], txImgs[4], txImgs[5], this._view.iModel, params);\n });\n }\n } else if (sky instanceof SkySphere) {\n load = () => {\n const texture = IModelApp.renderSystem.findTexture(sky.image, this._view.iModel);\n return texture ? {\n type: \"sphere\",\n texture,\n rotation: 0,\n zOffset: this._view.iModel.globalOrigin.z,\n } : undefined;\n };\n\n if (!IModelApp.renderSystem.findTexture(sky.image, this._view.iModel)) {\n preload = this.imageFromSpec(sky.image).then((image) => {\n if (!image)\n return false;\n\n return undefined !== IModelApp.renderSystem.createTexture({\n image: { source: image },\n ownership: { iModel: this._view.iModel, key: sky.image },\n });\n });\n }\n } else {\n load = () => this.createSkyGradientParams();\n }\n\n return { load, preload };\n }\n\n private createCubeImageKey(sky: SkyCube): string {\n const i = sky.images;\n return `skycube:${i.front}:${i.back}:${i.left}:${i.right}:${i.top}:${i.bottom}`;\n }\n\n private createSkyGradientParams(): RenderSkyBoxParams {\n return {\n type: \"gradient\",\n gradient: this._environment.sky.gradient,\n zOffset: this._view.iModel.globalOrigin.z,\n };\n }\n\n private async imageFromSpec(spec: TextureImageSpec): Promise<HTMLImageElement | undefined> {\n if (Id64.isValidId64(spec))\n return (await IModelApp.renderSystem.loadTextureImage(spec, this._view.iModel))?.image;\n\n return tryImageElementFromUrl(spec);\n }\n}\n"]}
@@ -72,7 +72,9 @@ export declare class GraphicalEditingScope extends BriefcaseNotificationHandler
72
72
  get isDisposed(): boolean;
73
73
  private geometryChangeIterator;
74
74
  private constructor();
75
- private dispose;
75
+ private [Symbol.dispose];
76
+ /** @deprecated in 5.0 Use [Symbol.dispose] instead. */
77
+ dispose(): void;
76
78
  /** @internal */
77
79
  notifyGeometryChanged(props: ModelGeometryChangesProps[]): void;
78
80
  }