@itwin/core-frontend 4.1.0-dev.6 → 4.1.0-dev.62

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 (1172) hide show
  1. package/CHANGELOG.md +78 -1
  2. package/lib/cjs/AccuDraw.d.ts +3 -4
  3. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  4. package/lib/cjs/AccuDraw.js +6 -7
  5. package/lib/cjs/AccuDraw.js.map +1 -1
  6. package/lib/cjs/AccuSnap.d.ts +7 -1
  7. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  8. package/lib/cjs/AccuSnap.js +24 -6
  9. package/lib/cjs/AccuSnap.js.map +1 -1
  10. package/lib/cjs/BackgroundMapGeometry.d.ts +3 -2
  11. package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
  12. package/lib/cjs/BackgroundMapGeometry.js +47 -7
  13. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  14. package/lib/cjs/BriefcaseConnection.d.ts +3 -3
  15. package/lib/cjs/BriefcaseConnection.js +3 -3
  16. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  17. package/lib/cjs/BriefcaseTxns.d.ts +2 -2
  18. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  19. package/lib/cjs/BriefcaseTxns.js +3 -3
  20. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  21. package/lib/cjs/ChangeFlags.d.ts +25 -12
  22. package/lib/cjs/ChangeFlags.d.ts.map +1 -1
  23. package/lib/cjs/ChangeFlags.js +24 -11
  24. package/lib/cjs/ChangeFlags.js.map +1 -1
  25. package/lib/cjs/CheckpointConnection.js +1 -1
  26. package/lib/cjs/CheckpointConnection.js.map +1 -1
  27. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  28. package/lib/cjs/DisplayStyleState.js +2 -1
  29. package/lib/cjs/DisplayStyleState.js.map +1 -1
  30. package/lib/cjs/DrawingViewState.d.ts +2 -2
  31. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  32. package/lib/cjs/DrawingViewState.js +3 -3
  33. package/lib/cjs/DrawingViewState.js.map +1 -1
  34. package/lib/cjs/ElementLocateManager.d.ts +0 -1
  35. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  36. package/lib/cjs/ElementLocateManager.js +11 -19
  37. package/lib/cjs/ElementLocateManager.js.map +1 -1
  38. package/lib/cjs/EnvironmentDecorations.js +1 -1
  39. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  40. package/lib/cjs/GeoServices.d.ts +37 -7
  41. package/lib/cjs/GeoServices.d.ts.map +1 -1
  42. package/lib/cjs/GeoServices.js +75 -25
  43. package/lib/cjs/GeoServices.js.map +1 -1
  44. package/lib/cjs/GraphicalEditingScope.d.ts +2 -2
  45. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  46. package/lib/cjs/GraphicalEditingScope.js +1 -1
  47. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  48. package/lib/cjs/HitDetail.d.ts +100 -29
  49. package/lib/cjs/HitDetail.d.ts.map +1 -1
  50. package/lib/cjs/HitDetail.js +89 -36
  51. package/lib/cjs/HitDetail.js.map +1 -1
  52. package/lib/cjs/IModelApp.d.ts +18 -14
  53. package/lib/cjs/IModelApp.d.ts.map +1 -1
  54. package/lib/cjs/IModelApp.js +17 -13
  55. package/lib/cjs/IModelApp.js.map +1 -1
  56. package/lib/cjs/IModelConnection.d.ts +64 -19
  57. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  58. package/lib/cjs/IModelConnection.js +131 -20
  59. package/lib/cjs/IModelConnection.js.map +1 -1
  60. package/lib/cjs/IpcApp.d.ts +1 -1
  61. package/lib/cjs/IpcApp.d.ts.map +1 -1
  62. package/lib/cjs/IpcApp.js +4 -4
  63. package/lib/cjs/IpcApp.js.map +1 -1
  64. package/lib/cjs/LocalhostIpcApp.js +1 -1
  65. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  66. package/lib/cjs/Marker.d.ts +1 -1
  67. package/lib/cjs/Marker.d.ts.map +1 -1
  68. package/lib/cjs/Marker.js +3 -3
  69. package/lib/cjs/Marker.js.map +1 -1
  70. package/lib/cjs/NativeApp.d.ts.map +1 -1
  71. package/lib/cjs/NativeApp.js +4 -4
  72. package/lib/cjs/NativeApp.js.map +1 -1
  73. package/lib/cjs/NoRenderApp.d.ts +1 -1
  74. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  75. package/lib/cjs/NoRenderApp.js +1 -1
  76. package/lib/cjs/NoRenderApp.js.map +1 -1
  77. package/lib/cjs/RealityDataSource.js +1 -1
  78. package/lib/cjs/RealityDataSource.js.map +1 -1
  79. package/lib/cjs/RealityDataSourceContextShareImpl.js +1 -1
  80. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  81. package/lib/cjs/SheetViewState.d.ts +9 -7
  82. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  83. package/lib/cjs/SheetViewState.js +22 -7
  84. package/lib/cjs/SheetViewState.js.map +1 -1
  85. package/lib/cjs/SpatialViewState.d.ts +20 -5
  86. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  87. package/lib/cjs/SpatialViewState.js +13 -5
  88. package/lib/cjs/SpatialViewState.js.map +1 -1
  89. package/lib/cjs/Sprites.js +2 -2
  90. package/lib/cjs/Sprites.js.map +1 -1
  91. package/lib/cjs/TentativePoint.d.ts.map +1 -1
  92. package/lib/cjs/TentativePoint.js +10 -1
  93. package/lib/cjs/TentativePoint.js.map +1 -1
  94. package/lib/cjs/ViewContext.d.ts +19 -0
  95. package/lib/cjs/ViewContext.d.ts.map +1 -1
  96. package/lib/cjs/ViewContext.js +9 -0
  97. package/lib/cjs/ViewContext.js.map +1 -1
  98. package/lib/cjs/ViewCreator3d.d.ts +3 -6
  99. package/lib/cjs/ViewCreator3d.d.ts.map +1 -1
  100. package/lib/cjs/ViewCreator3d.js +12 -33
  101. package/lib/cjs/ViewCreator3d.js.map +1 -1
  102. package/lib/cjs/ViewGlobalLocation.d.ts.map +1 -1
  103. package/lib/cjs/ViewGlobalLocation.js +4 -3
  104. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  105. package/lib/cjs/ViewManager.d.ts +4 -2
  106. package/lib/cjs/ViewManager.d.ts.map +1 -1
  107. package/lib/cjs/ViewManager.js +4 -2
  108. package/lib/cjs/ViewManager.js.map +1 -1
  109. package/lib/cjs/ViewPose.d.ts +11 -11
  110. package/lib/cjs/ViewPose.d.ts.map +1 -1
  111. package/lib/cjs/ViewPose.js +17 -11
  112. package/lib/cjs/ViewPose.js.map +1 -1
  113. package/lib/cjs/ViewState.d.ts +44 -26
  114. package/lib/cjs/ViewState.d.ts.map +1 -1
  115. package/lib/cjs/ViewState.js +52 -25
  116. package/lib/cjs/ViewState.js.map +1 -1
  117. package/lib/cjs/ViewingSpace.js +1 -1
  118. package/lib/cjs/ViewingSpace.js.map +1 -1
  119. package/lib/cjs/Viewport.d.ts +59 -21
  120. package/lib/cjs/Viewport.d.ts.map +1 -1
  121. package/lib/cjs/Viewport.js +67 -24
  122. package/lib/cjs/Viewport.js.map +1 -1
  123. package/lib/cjs/ViewportSync.d.ts +2 -2
  124. package/lib/cjs/ViewportSync.d.ts.map +1 -1
  125. package/lib/cjs/ViewportSync.js +2 -2
  126. package/lib/cjs/ViewportSync.js.map +1 -1
  127. package/lib/cjs/common/FrontendLoggerCategory.d.ts.map +1 -0
  128. package/lib/cjs/common/FrontendLoggerCategory.js.map +1 -0
  129. package/lib/cjs/common/ImageUtil.d.ts.map +1 -0
  130. package/lib/cjs/{ImageUtil.js → common/ImageUtil.js} +2 -0
  131. package/lib/cjs/common/ImageUtil.js.map +1 -0
  132. package/lib/cjs/common/ViewRect.d.ts.map +1 -0
  133. package/lib/cjs/common/ViewRect.js.map +1 -0
  134. package/lib/cjs/common/WorkerProxy.d.ts +73 -0
  135. package/lib/cjs/common/WorkerProxy.d.ts.map +1 -0
  136. package/lib/cjs/common/WorkerProxy.js +54 -0
  137. package/lib/cjs/common/WorkerProxy.js.map +1 -0
  138. package/lib/{esm → cjs/common}/gltf/GltfModel.d.ts +1 -1
  139. package/lib/cjs/common/gltf/GltfModel.d.ts.map +1 -0
  140. package/lib/cjs/common/gltf/GltfModel.js.map +1 -0
  141. package/lib/cjs/common/gltf/GltfParser.d.ts.map +1 -0
  142. package/lib/cjs/common/gltf/GltfParser.js.map +1 -0
  143. package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -0
  144. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -0
  145. package/lib/cjs/common/imdl/CompactEdges.d.ts +27 -0
  146. package/lib/cjs/common/imdl/CompactEdges.d.ts.map +1 -0
  147. package/lib/cjs/common/imdl/CompactEdges.js +96 -0
  148. package/lib/cjs/common/imdl/CompactEdges.js.map +1 -0
  149. package/lib/cjs/common/imdl/ImdlModel.d.ts +186 -0
  150. package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -0
  151. package/lib/cjs/common/imdl/ImdlModel.js +71 -0
  152. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -0
  153. package/lib/cjs/common/imdl/ImdlSchema.d.ts +412 -0
  154. package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -0
  155. package/lib/cjs/common/imdl/ImdlSchema.js +23 -0
  156. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -0
  157. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts +45 -0
  158. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -0
  159. package/lib/cjs/common/imdl/ParseImdlDocument.js +1011 -0
  160. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -0
  161. package/lib/cjs/common/render/AnimationNodeId.d.ts +11 -0
  162. package/lib/cjs/common/render/AnimationNodeId.d.ts.map +1 -0
  163. package/lib/cjs/common/render/AnimationNodeId.js +19 -0
  164. package/lib/cjs/common/render/AnimationNodeId.js.map +1 -0
  165. package/lib/{esm/render/RenderMaterial.d.ts → cjs/common/render/MaterialParams.d.ts} +7 -20
  166. package/lib/cjs/common/render/MaterialParams.d.ts.map +1 -0
  167. package/lib/cjs/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
  168. package/lib/cjs/common/render/MaterialParams.js.map +1 -0
  169. package/lib/cjs/common/render/TextureParams.d.ts +30 -0
  170. package/lib/cjs/common/render/TextureParams.d.ts.map +1 -0
  171. package/lib/cjs/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
  172. package/lib/cjs/common/render/TextureParams.js.map +1 -0
  173. package/lib/{esm → cjs/common}/render/primitives/AuxChannelTable.d.ts +12 -8
  174. package/lib/cjs/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
  175. package/lib/cjs/{render → common/render}/primitives/AuxChannelTable.js +42 -9
  176. package/lib/cjs/common/render/primitives/AuxChannelTable.js.map +1 -0
  177. package/lib/cjs/common/render/primitives/DisplayParams.d.ts.map +1 -0
  178. package/lib/cjs/common/render/primitives/DisplayParams.js.map +1 -0
  179. package/lib/cjs/common/render/primitives/EdgeParams.d.ts +94 -0
  180. package/lib/cjs/common/render/primitives/EdgeParams.d.ts.map +1 -0
  181. package/lib/cjs/common/render/primitives/EdgeParams.js +46 -0
  182. package/lib/cjs/common/render/primitives/EdgeParams.js.map +1 -0
  183. package/lib/cjs/common/render/primitives/MeshParams.d.ts +20 -0
  184. package/lib/cjs/common/render/primitives/MeshParams.d.ts.map +1 -0
  185. package/lib/cjs/common/render/primitives/MeshParams.js +10 -0
  186. package/lib/cjs/common/render/primitives/MeshParams.js.map +1 -0
  187. package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts +29 -0
  188. package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
  189. package/lib/cjs/common/render/primitives/MeshPrimitive.js +18 -0
  190. package/lib/cjs/common/render/primitives/MeshPrimitive.js.map +1 -0
  191. package/lib/cjs/common/render/primitives/PointStringParams.d.ts +14 -0
  192. package/lib/cjs/common/render/primitives/PointStringParams.d.ts.map +1 -0
  193. package/lib/cjs/common/render/primitives/PointStringParams.js +10 -0
  194. package/lib/cjs/common/render/primitives/PointStringParams.js.map +1 -0
  195. package/lib/cjs/common/render/primitives/PolylineParams.d.ts +29 -0
  196. package/lib/cjs/common/render/primitives/PolylineParams.d.ts.map +1 -0
  197. package/lib/cjs/common/render/primitives/PolylineParams.js +10 -0
  198. package/lib/cjs/common/render/primitives/PolylineParams.js.map +1 -0
  199. package/lib/{esm → cjs/common}/render/primitives/SurfaceParams.d.ts +1 -1
  200. package/lib/cjs/common/render/primitives/SurfaceParams.d.ts.map +1 -0
  201. package/lib/cjs/common/render/primitives/SurfaceParams.js.map +1 -0
  202. package/lib/cjs/common/render/primitives/VertexIndices.d.ts +26 -0
  203. package/lib/cjs/common/render/primitives/VertexIndices.d.ts.map +1 -0
  204. package/lib/cjs/common/render/primitives/VertexIndices.js +64 -0
  205. package/lib/cjs/common/render/primitives/VertexIndices.js.map +1 -0
  206. package/lib/cjs/common/render/primitives/VertexTable.d.ts +45 -0
  207. package/lib/cjs/common/render/primitives/VertexTable.d.ts.map +1 -0
  208. package/lib/cjs/common/render/primitives/VertexTable.js +38 -0
  209. package/lib/cjs/common/render/primitives/VertexTable.js.map +1 -0
  210. package/lib/cjs/{render → common/render}/primitives/VertexTableSplitter.d.ts +23 -2
  211. package/lib/cjs/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
  212. package/lib/cjs/{render → common/render}/primitives/VertexTableSplitter.js +46 -35
  213. package/lib/cjs/common/render/primitives/VertexTableSplitter.js.map +1 -0
  214. package/lib/cjs/core-frontend.d.ts +45 -8
  215. package/lib/cjs/core-frontend.d.ts.map +1 -1
  216. package/lib/cjs/core-frontend.js +45 -8
  217. package/lib/cjs/core-frontend.js.map +1 -1
  218. package/lib/cjs/extension/ExtensionAdmin.js +1 -1
  219. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  220. package/lib/cjs/quantity-formatting/QuantityFormatter.js +1 -1
  221. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  222. package/lib/cjs/render/CreateRenderMaterialArgs.d.ts +24 -0
  223. package/lib/cjs/render/CreateRenderMaterialArgs.d.ts.map +1 -0
  224. package/lib/cjs/render/CreateRenderMaterialArgs.js +10 -0
  225. package/lib/cjs/render/CreateRenderMaterialArgs.js.map +1 -0
  226. package/lib/{esm/render/RenderTexture.d.ts → cjs/render/CreateTextureArgs.d.ts} +4 -28
  227. package/lib/cjs/render/CreateTextureArgs.d.ts.map +1 -0
  228. package/lib/cjs/render/CreateTextureArgs.js +10 -0
  229. package/lib/cjs/render/CreateTextureArgs.js.map +1 -0
  230. package/lib/cjs/render/GraphicBranch.d.ts +5 -7
  231. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  232. package/lib/cjs/render/GraphicBranch.js +1 -9
  233. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  234. package/lib/cjs/render/InstancedGraphicParams.d.ts +3 -4
  235. package/lib/cjs/render/InstancedGraphicParams.d.ts.map +1 -1
  236. package/lib/cjs/render/InstancedGraphicParams.js.map +1 -1
  237. package/lib/cjs/render/MockRender.d.ts +4 -4
  238. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  239. package/lib/cjs/render/MockRender.js +1 -1
  240. package/lib/cjs/render/MockRender.js.map +1 -1
  241. package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
  242. package/lib/cjs/render/ParticleCollectionBuilder.js +5 -5
  243. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  244. package/lib/cjs/render/Pixel.d.ts +57 -0
  245. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  246. package/lib/cjs/render/Pixel.js +41 -0
  247. package/lib/cjs/render/Pixel.js.map +1 -1
  248. package/lib/cjs/render/RealityMeshParams.js +2 -2
  249. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  250. package/lib/cjs/render/RenderSystem.d.ts +24 -10
  251. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  252. package/lib/cjs/render/RenderSystem.js +7 -8
  253. package/lib/cjs/render/RenderSystem.js.map +1 -1
  254. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  255. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  256. package/lib/cjs/render/RenderTarget.js.map +1 -1
  257. package/lib/cjs/render/VisibleFeature.d.ts +1 -1
  258. package/lib/cjs/render/VisibleFeature.d.ts.map +1 -1
  259. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  260. package/lib/cjs/render/primitives/EdgeParams.d.ts +2 -89
  261. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
  262. package/lib/cjs/render/primitives/EdgeParams.js +44 -80
  263. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  264. package/lib/cjs/render/primitives/PointCloudPrimitive.d.ts +1 -0
  265. package/lib/cjs/render/primitives/PointCloudPrimitive.d.ts.map +1 -1
  266. package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +1 -1
  267. package/lib/cjs/render/primitives/PointStringParams.d.ts +3 -11
  268. package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -1
  269. package/lib/cjs/render/primitives/PointStringParams.js +27 -30
  270. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
  271. package/lib/cjs/render/primitives/Polyface.d.ts +1 -1
  272. package/lib/cjs/render/primitives/Polyface.d.ts.map +1 -1
  273. package/lib/cjs/render/primitives/Polyface.js.map +1 -1
  274. package/lib/cjs/render/primitives/PolylineParams.d.ts +8 -37
  275. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -1
  276. package/lib/cjs/render/primitives/PolylineParams.js +40 -48
  277. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  278. package/lib/cjs/render/primitives/Strokes.d.ts +1 -1
  279. package/lib/cjs/render/primitives/Strokes.d.ts.map +1 -1
  280. package/lib/cjs/render/primitives/Strokes.js.map +1 -1
  281. package/lib/cjs/render/primitives/VertexTableBuilder.d.ts +31 -0
  282. package/lib/cjs/render/primitives/VertexTableBuilder.d.ts.map +1 -0
  283. package/lib/cjs/render/primitives/{VertexTable.js → VertexTableBuilder.js} +62 -173
  284. package/lib/cjs/render/primitives/VertexTableBuilder.js.map +1 -0
  285. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
  286. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  287. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  288. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
  289. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  290. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -1
  291. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  292. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
  293. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
  294. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js +1 -1
  295. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  296. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts +2 -1
  297. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  298. package/lib/cjs/render/primitives/mesh/MeshBuilder.js +5 -2
  299. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  300. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
  301. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  302. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +7 -4
  303. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  304. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +58 -31
  305. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  306. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +25 -29
  307. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  308. package/lib/cjs/render/webgl/BatchState.js +1 -1
  309. package/lib/cjs/render/webgl/BatchState.js.map +1 -1
  310. package/lib/cjs/render/webgl/BranchState.d.ts +3 -0
  311. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  312. package/lib/cjs/render/webgl/BranchState.js +2 -0
  313. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  314. package/lib/cjs/render/webgl/CachedGeometry.d.ts +1 -1
  315. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  316. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  317. package/lib/cjs/render/webgl/ColorInfo.d.ts +1 -1
  318. package/lib/cjs/render/webgl/ColorInfo.d.ts.map +1 -1
  319. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  320. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +2 -2
  321. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -1
  322. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  323. package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
  324. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  325. package/lib/cjs/render/webgl/Graphic.d.ts +7 -1
  326. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  327. package/lib/cjs/render/webgl/Graphic.js +7 -2
  328. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  329. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
  330. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  331. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  332. package/lib/cjs/render/webgl/Material.d.ts +1 -1
  333. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  334. package/lib/cjs/render/webgl/Material.js.map +1 -1
  335. package/lib/cjs/render/webgl/Mesh.d.ts +2 -2
  336. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  337. package/lib/cjs/render/webgl/Mesh.js +1 -1
  338. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  339. package/lib/cjs/render/webgl/MeshData.d.ts +2 -2
  340. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
  341. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  342. package/lib/cjs/render/webgl/MeshGeometry.d.ts +1 -1
  343. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -1
  344. package/lib/cjs/render/webgl/PointString.d.ts +1 -1
  345. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  346. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  347. package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
  348. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  349. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  350. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  351. package/lib/cjs/render/webgl/RenderCommands.js +1 -1
  352. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  353. package/lib/cjs/render/webgl/SceneCompositor.d.ts +2 -1
  354. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  355. package/lib/cjs/render/webgl/SceneCompositor.js +5 -2
  356. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  357. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +1 -1
  358. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  359. package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
  360. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  361. package/lib/cjs/render/webgl/System.d.ts +7 -6
  362. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  363. package/lib/cjs/render/webgl/System.js +1 -1
  364. package/lib/cjs/render/webgl/System.js.map +1 -1
  365. package/lib/cjs/render/webgl/Target.d.ts +1 -1
  366. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  367. package/lib/cjs/render/webgl/Target.js +14 -12
  368. package/lib/cjs/render/webgl/Target.js.map +1 -1
  369. package/lib/cjs/render/webgl/Texture.d.ts +1 -1
  370. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  371. package/lib/cjs/render/webgl/Texture.js +1 -1
  372. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  373. package/lib/cjs/render/webgl/UniformHandle.js +1 -1
  374. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  375. package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -2
  376. package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
  377. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  378. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  379. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  380. package/lib/cjs/render/webgl/glsl/RealityMesh.js +32 -19
  381. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  382. package/lib/cjs/tile/B3dmReader.d.ts +1 -1
  383. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  384. package/lib/cjs/tile/B3dmReader.js +1 -1
  385. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  386. package/lib/cjs/tile/DynamicIModelTile.js +1 -1
  387. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  388. package/lib/cjs/tile/FetchCloudStorage.d.ts +15 -0
  389. package/lib/cjs/tile/FetchCloudStorage.d.ts.map +1 -0
  390. package/lib/cjs/tile/FetchCloudStorage.js +35 -0
  391. package/lib/cjs/tile/FetchCloudStorage.js.map +1 -0
  392. package/lib/cjs/tile/GltfReader.d.ts +3 -3
  393. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  394. package/lib/cjs/tile/GltfReader.js +15 -22
  395. package/lib/cjs/tile/GltfReader.js.map +1 -1
  396. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  397. package/lib/cjs/tile/IModelTile.js +11 -17
  398. package/lib/cjs/tile/IModelTile.js.map +1 -1
  399. package/lib/cjs/tile/IModelTileTree.d.ts +4 -1
  400. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  401. package/lib/cjs/tile/IModelTileTree.js +15 -0
  402. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  403. package/lib/cjs/tile/ImdlDecoder.d.ts +52 -0
  404. package/lib/cjs/tile/ImdlDecoder.d.ts.map +1 -0
  405. package/lib/cjs/tile/ImdlDecoder.js +35 -0
  406. package/lib/cjs/tile/ImdlDecoder.js.map +1 -0
  407. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +19 -0
  408. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -0
  409. package/lib/cjs/tile/ImdlGraphicsCreator.js +328 -0
  410. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -0
  411. package/lib/cjs/tile/ImdlParser.d.ts +26 -0
  412. package/lib/cjs/tile/ImdlParser.d.ts.map +1 -0
  413. package/lib/cjs/tile/ImdlParser.js +72 -0
  414. package/lib/cjs/tile/ImdlParser.js.map +1 -0
  415. package/lib/cjs/tile/ImdlReader.d.ts +16 -420
  416. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  417. package/lib/cjs/tile/ImdlReader.js +69 -902
  418. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  419. package/lib/cjs/tile/OPCFormatInterpreter.js +1 -1
  420. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  421. package/lib/cjs/tile/PntsReader.js +1 -1
  422. package/lib/cjs/tile/PntsReader.js.map +1 -1
  423. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  424. package/lib/cjs/tile/PrimaryTileTree.js +2 -1
  425. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  426. package/lib/cjs/tile/RealityTile.d.ts +8 -3
  427. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  428. package/lib/cjs/tile/RealityTile.js +4 -1
  429. package/lib/cjs/tile/RealityTile.js.map +1 -1
  430. package/lib/cjs/tile/RealityTileLoader.js +1 -1
  431. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  432. package/lib/cjs/tile/RealityTileTree.js +1 -1
  433. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  434. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +1 -1
  435. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  436. package/lib/cjs/tile/TileAdmin.d.ts +14 -11
  437. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  438. package/lib/cjs/tile/TileAdmin.js +9 -52
  439. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  440. package/lib/cjs/tile/internal.d.ts +8 -0
  441. package/lib/cjs/tile/internal.d.ts.map +1 -1
  442. package/lib/cjs/tile/internal.js +8 -0
  443. package/lib/cjs/tile/internal.js.map +1 -1
  444. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +8 -1
  445. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  446. package/lib/cjs/tile/map/ArcGisUtilities.js +21 -0
  447. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  448. package/lib/cjs/tile/map/EllipsoidTerrainProvider.d.ts +6 -4
  449. package/lib/cjs/tile/map/EllipsoidTerrainProvider.d.ts.map +1 -1
  450. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js +6 -4
  451. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  452. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +2 -0
  453. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  454. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +4 -2
  455. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  456. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +55 -2
  457. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  458. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +96 -23
  459. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  460. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts +15 -0
  461. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts.map +1 -0
  462. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js +59 -0
  463. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -0
  464. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts +44 -0
  465. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts.map +1 -0
  466. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.js +126 -0
  467. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.js.map +1 -0
  468. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts +26 -0
  469. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts.map +1 -0
  470. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js +134 -0
  471. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js.map +1 -0
  472. package/lib/cjs/tile/map/ImageryProviders/WebMercator.d.ts +6 -0
  473. package/lib/cjs/tile/map/ImageryProviders/WebMercator.d.ts.map +1 -0
  474. package/lib/cjs/tile/map/ImageryProviders/WebMercator.js +22 -0
  475. package/lib/cjs/tile/map/ImageryProviders/WebMercator.js.map +1 -0
  476. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -1
  477. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  478. package/lib/cjs/tile/map/ImageryTileTree.js +16 -9
  479. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  480. package/lib/cjs/tile/map/MapFeatureInfo.d.ts +67 -7
  481. package/lib/cjs/tile/map/MapFeatureInfo.d.ts.map +1 -1
  482. package/lib/cjs/tile/map/MapFeatureInfo.js +16 -2
  483. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
  484. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  485. package/lib/cjs/tile/map/MapLayerImageryFormats.js +3 -0
  486. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  487. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +4 -1
  488. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  489. package/lib/cjs/tile/map/MapLayerImageryProvider.js +3 -1
  490. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  491. package/lib/cjs/tile/map/MapLayerSources.d.ts +4 -1
  492. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  493. package/lib/cjs/tile/map/MapLayerSources.js +3 -0
  494. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  495. package/lib/cjs/tile/map/MapTile.d.ts +6 -1
  496. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  497. package/lib/cjs/tile/map/MapTile.js +17 -8
  498. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  499. package/lib/cjs/tile/map/MapTileLoader.d.ts.map +1 -1
  500. package/lib/cjs/tile/map/MapTileLoader.js +1 -15
  501. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  502. package/lib/cjs/tile/map/MapTileTree.d.ts +12 -3
  503. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  504. package/lib/cjs/tile/map/MapTileTree.js +41 -22
  505. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  506. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +2 -3
  507. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  508. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +3 -4
  509. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  510. package/lib/cjs/tile/map/MapTilingScheme.d.ts +4 -4
  511. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  512. package/lib/cjs/tile/map/MapTilingScheme.js +4 -4
  513. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  514. package/lib/cjs/tools/ElementSetTool.js +1 -1
  515. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  516. package/lib/cjs/tools/SelectTool.js +1 -1
  517. package/lib/cjs/tools/SelectTool.js.map +1 -1
  518. package/lib/cjs/tools/ToolAdmin.d.ts +8 -6
  519. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  520. package/lib/cjs/tools/ToolAdmin.js +9 -7
  521. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  522. package/lib/cjs/tools/ToolAssistance.d.ts +18 -0
  523. package/lib/cjs/tools/ToolAssistance.d.ts.map +1 -1
  524. package/lib/cjs/tools/ToolAssistance.js +8 -0
  525. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  526. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  527. package/lib/cjs/tools/ViewTool.js +3 -2
  528. package/lib/cjs/tools/ViewTool.js.map +1 -1
  529. package/lib/cjs/workers/ImdlParser/Worker.d.ts +20 -0
  530. package/lib/cjs/workers/ImdlParser/Worker.d.ts.map +1 -0
  531. package/lib/cjs/workers/ImdlParser/Worker.js +32 -0
  532. package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -0
  533. package/lib/cjs/workers/ImdlParser/webpack.config.js +40 -0
  534. package/lib/cjs/workers/RegisterWorker.d.ts +9 -0
  535. package/lib/cjs/workers/RegisterWorker.d.ts.map +1 -0
  536. package/lib/cjs/workers/RegisterWorker.js +36 -0
  537. package/lib/cjs/workers/RegisterWorker.js.map +1 -0
  538. package/lib/esm/AccuDraw.d.ts +3 -4
  539. package/lib/esm/AccuDraw.d.ts.map +1 -1
  540. package/lib/esm/AccuDraw.js +6 -7
  541. package/lib/esm/AccuDraw.js.map +1 -1
  542. package/lib/esm/AccuSnap.d.ts +7 -1
  543. package/lib/esm/AccuSnap.d.ts.map +1 -1
  544. package/lib/esm/AccuSnap.js +24 -6
  545. package/lib/esm/AccuSnap.js.map +1 -1
  546. package/lib/esm/BackgroundMapGeometry.d.ts +3 -2
  547. package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
  548. package/lib/esm/BackgroundMapGeometry.js +47 -7
  549. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  550. package/lib/esm/BriefcaseConnection.d.ts +3 -3
  551. package/lib/esm/BriefcaseConnection.js +3 -3
  552. package/lib/esm/BriefcaseConnection.js.map +1 -1
  553. package/lib/esm/BriefcaseTxns.d.ts +2 -2
  554. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  555. package/lib/esm/BriefcaseTxns.js +3 -3
  556. package/lib/esm/BriefcaseTxns.js.map +1 -1
  557. package/lib/esm/ChangeFlags.d.ts +25 -12
  558. package/lib/esm/ChangeFlags.d.ts.map +1 -1
  559. package/lib/esm/ChangeFlags.js +24 -11
  560. package/lib/esm/ChangeFlags.js.map +1 -1
  561. package/lib/esm/CheckpointConnection.js +1 -1
  562. package/lib/esm/CheckpointConnection.js.map +1 -1
  563. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  564. package/lib/esm/DisplayStyleState.js +2 -1
  565. package/lib/esm/DisplayStyleState.js.map +1 -1
  566. package/lib/esm/DrawingViewState.d.ts +2 -2
  567. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  568. package/lib/esm/DrawingViewState.js +3 -3
  569. package/lib/esm/DrawingViewState.js.map +1 -1
  570. package/lib/esm/ElementLocateManager.d.ts +0 -1
  571. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  572. package/lib/esm/ElementLocateManager.js +12 -20
  573. package/lib/esm/ElementLocateManager.js.map +1 -1
  574. package/lib/esm/EnvironmentDecorations.js +1 -1
  575. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  576. package/lib/esm/GeoServices.d.ts +37 -7
  577. package/lib/esm/GeoServices.d.ts.map +1 -1
  578. package/lib/esm/GeoServices.js +75 -25
  579. package/lib/esm/GeoServices.js.map +1 -1
  580. package/lib/esm/GraphicalEditingScope.d.ts +2 -2
  581. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  582. package/lib/esm/GraphicalEditingScope.js +2 -2
  583. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  584. package/lib/esm/HitDetail.d.ts +100 -29
  585. package/lib/esm/HitDetail.d.ts.map +1 -1
  586. package/lib/esm/HitDetail.js +90 -37
  587. package/lib/esm/HitDetail.js.map +1 -1
  588. package/lib/esm/IModelApp.d.ts +18 -14
  589. package/lib/esm/IModelApp.d.ts.map +1 -1
  590. package/lib/esm/IModelApp.js +17 -13
  591. package/lib/esm/IModelApp.js.map +1 -1
  592. package/lib/esm/IModelConnection.d.ts +64 -19
  593. package/lib/esm/IModelConnection.d.ts.map +1 -1
  594. package/lib/esm/IModelConnection.js +132 -21
  595. package/lib/esm/IModelConnection.js.map +1 -1
  596. package/lib/esm/IpcApp.d.ts +1 -1
  597. package/lib/esm/IpcApp.d.ts.map +1 -1
  598. package/lib/esm/IpcApp.js +5 -5
  599. package/lib/esm/IpcApp.js.map +1 -1
  600. package/lib/esm/LocalhostIpcApp.js +2 -2
  601. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  602. package/lib/esm/Marker.d.ts +1 -1
  603. package/lib/esm/Marker.d.ts.map +1 -1
  604. package/lib/esm/Marker.js +3 -3
  605. package/lib/esm/Marker.js.map +1 -1
  606. package/lib/esm/NativeApp.d.ts.map +1 -1
  607. package/lib/esm/NativeApp.js +5 -5
  608. package/lib/esm/NativeApp.js.map +1 -1
  609. package/lib/esm/NoRenderApp.d.ts +1 -1
  610. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  611. package/lib/esm/NoRenderApp.js +1 -1
  612. package/lib/esm/NoRenderApp.js.map +1 -1
  613. package/lib/esm/RealityDataSource.js +1 -1
  614. package/lib/esm/RealityDataSource.js.map +1 -1
  615. package/lib/esm/RealityDataSourceContextShareImpl.js +1 -1
  616. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  617. package/lib/esm/SheetViewState.d.ts +9 -7
  618. package/lib/esm/SheetViewState.d.ts.map +1 -1
  619. package/lib/esm/SheetViewState.js +22 -7
  620. package/lib/esm/SheetViewState.js.map +1 -1
  621. package/lib/esm/SpatialViewState.d.ts +20 -5
  622. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  623. package/lib/esm/SpatialViewState.js +13 -5
  624. package/lib/esm/SpatialViewState.js.map +1 -1
  625. package/lib/esm/Sprites.js +2 -2
  626. package/lib/esm/Sprites.js.map +1 -1
  627. package/lib/esm/TentativePoint.d.ts.map +1 -1
  628. package/lib/esm/TentativePoint.js +10 -1
  629. package/lib/esm/TentativePoint.js.map +1 -1
  630. package/lib/esm/ViewContext.d.ts +19 -0
  631. package/lib/esm/ViewContext.d.ts.map +1 -1
  632. package/lib/esm/ViewContext.js +9 -0
  633. package/lib/esm/ViewContext.js.map +1 -1
  634. package/lib/esm/ViewCreator3d.d.ts +3 -6
  635. package/lib/esm/ViewCreator3d.d.ts.map +1 -1
  636. package/lib/esm/ViewCreator3d.js +14 -35
  637. package/lib/esm/ViewCreator3d.js.map +1 -1
  638. package/lib/esm/ViewGlobalLocation.d.ts.map +1 -1
  639. package/lib/esm/ViewGlobalLocation.js +4 -3
  640. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  641. package/lib/esm/ViewManager.d.ts +4 -2
  642. package/lib/esm/ViewManager.d.ts.map +1 -1
  643. package/lib/esm/ViewManager.js +4 -2
  644. package/lib/esm/ViewManager.js.map +1 -1
  645. package/lib/esm/ViewPose.d.ts +11 -11
  646. package/lib/esm/ViewPose.d.ts.map +1 -1
  647. package/lib/esm/ViewPose.js +17 -11
  648. package/lib/esm/ViewPose.js.map +1 -1
  649. package/lib/esm/ViewState.d.ts +44 -26
  650. package/lib/esm/ViewState.d.ts.map +1 -1
  651. package/lib/esm/ViewState.js +52 -25
  652. package/lib/esm/ViewState.js.map +1 -1
  653. package/lib/esm/ViewingSpace.js +1 -1
  654. package/lib/esm/ViewingSpace.js.map +1 -1
  655. package/lib/esm/Viewport.d.ts +59 -21
  656. package/lib/esm/Viewport.d.ts.map +1 -1
  657. package/lib/esm/Viewport.js +67 -24
  658. package/lib/esm/Viewport.js.map +1 -1
  659. package/lib/esm/ViewportSync.d.ts +2 -2
  660. package/lib/esm/ViewportSync.d.ts.map +1 -1
  661. package/lib/esm/ViewportSync.js +2 -2
  662. package/lib/esm/ViewportSync.js.map +1 -1
  663. package/lib/esm/common/FrontendLoggerCategory.d.ts.map +1 -0
  664. package/lib/esm/common/FrontendLoggerCategory.js.map +1 -0
  665. package/lib/esm/common/ImageUtil.d.ts.map +1 -0
  666. package/lib/esm/{ImageUtil.js → common/ImageUtil.js} +2 -0
  667. package/lib/esm/common/ImageUtil.js.map +1 -0
  668. package/lib/esm/common/ViewRect.d.ts.map +1 -0
  669. package/lib/esm/common/ViewRect.js.map +1 -0
  670. package/lib/esm/common/WorkerProxy.d.ts +73 -0
  671. package/lib/esm/common/WorkerProxy.d.ts.map +1 -0
  672. package/lib/esm/common/WorkerProxy.js +50 -0
  673. package/lib/esm/common/WorkerProxy.js.map +1 -0
  674. package/lib/{cjs → esm/common}/gltf/GltfModel.d.ts +1 -1
  675. package/lib/esm/common/gltf/GltfModel.d.ts.map +1 -0
  676. package/lib/esm/common/gltf/GltfModel.js.map +1 -0
  677. package/lib/esm/common/gltf/GltfParser.d.ts.map +1 -0
  678. package/lib/esm/common/gltf/GltfParser.js.map +1 -0
  679. package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -0
  680. package/lib/esm/common/gltf/GltfSchema.js.map +1 -0
  681. package/lib/esm/common/imdl/CompactEdges.d.ts +27 -0
  682. package/lib/esm/common/imdl/CompactEdges.d.ts.map +1 -0
  683. package/lib/esm/common/imdl/CompactEdges.js +92 -0
  684. package/lib/esm/common/imdl/CompactEdges.js.map +1 -0
  685. package/lib/esm/common/imdl/ImdlModel.d.ts +186 -0
  686. package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -0
  687. package/lib/esm/common/imdl/ImdlModel.js +67 -0
  688. package/lib/esm/common/imdl/ImdlModel.js.map +1 -0
  689. package/lib/esm/common/imdl/ImdlSchema.d.ts +412 -0
  690. package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -0
  691. package/lib/esm/common/imdl/ImdlSchema.js +20 -0
  692. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -0
  693. package/lib/esm/common/imdl/ParseImdlDocument.d.ts +45 -0
  694. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -0
  695. package/lib/esm/common/imdl/ParseImdlDocument.js +1003 -0
  696. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -0
  697. package/lib/esm/common/render/AnimationNodeId.d.ts +11 -0
  698. package/lib/esm/common/render/AnimationNodeId.d.ts.map +1 -0
  699. package/lib/esm/common/render/AnimationNodeId.js +16 -0
  700. package/lib/esm/common/render/AnimationNodeId.js.map +1 -0
  701. package/lib/{cjs/render/RenderMaterial.d.ts → esm/common/render/MaterialParams.d.ts} +7 -20
  702. package/lib/esm/common/render/MaterialParams.d.ts.map +1 -0
  703. package/lib/esm/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
  704. package/lib/esm/common/render/MaterialParams.js.map +1 -0
  705. package/lib/esm/common/render/TextureParams.d.ts +30 -0
  706. package/lib/esm/common/render/TextureParams.d.ts.map +1 -0
  707. package/lib/esm/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
  708. package/lib/esm/common/render/TextureParams.js.map +1 -0
  709. package/lib/{cjs → esm/common}/render/primitives/AuxChannelTable.d.ts +12 -8
  710. package/lib/esm/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
  711. package/lib/esm/{render → common/render}/primitives/AuxChannelTable.js +42 -9
  712. package/lib/esm/common/render/primitives/AuxChannelTable.js.map +1 -0
  713. package/lib/esm/common/render/primitives/DisplayParams.d.ts.map +1 -0
  714. package/lib/esm/common/render/primitives/DisplayParams.js.map +1 -0
  715. package/lib/esm/common/render/primitives/EdgeParams.d.ts +94 -0
  716. package/lib/esm/common/render/primitives/EdgeParams.d.ts.map +1 -0
  717. package/lib/esm/common/render/primitives/EdgeParams.js +42 -0
  718. package/lib/esm/common/render/primitives/EdgeParams.js.map +1 -0
  719. package/lib/esm/common/render/primitives/MeshParams.d.ts +20 -0
  720. package/lib/esm/common/render/primitives/MeshParams.d.ts.map +1 -0
  721. package/lib/esm/common/render/primitives/MeshParams.js +9 -0
  722. package/lib/esm/common/render/primitives/MeshParams.js.map +1 -0
  723. package/lib/esm/common/render/primitives/MeshPrimitive.d.ts +29 -0
  724. package/lib/esm/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
  725. package/lib/esm/common/render/primitives/MeshPrimitive.js +15 -0
  726. package/lib/esm/common/render/primitives/MeshPrimitive.js.map +1 -0
  727. package/lib/esm/common/render/primitives/PointStringParams.d.ts +14 -0
  728. package/lib/esm/common/render/primitives/PointStringParams.d.ts.map +1 -0
  729. package/lib/esm/common/render/primitives/PointStringParams.js +9 -0
  730. package/lib/esm/common/render/primitives/PointStringParams.js.map +1 -0
  731. package/lib/esm/common/render/primitives/PolylineParams.d.ts +29 -0
  732. package/lib/esm/common/render/primitives/PolylineParams.d.ts.map +1 -0
  733. package/lib/esm/common/render/primitives/PolylineParams.js +9 -0
  734. package/lib/esm/common/render/primitives/PolylineParams.js.map +1 -0
  735. package/lib/{cjs → esm/common}/render/primitives/SurfaceParams.d.ts +1 -1
  736. package/lib/esm/common/render/primitives/SurfaceParams.d.ts.map +1 -0
  737. package/lib/esm/common/render/primitives/SurfaceParams.js.map +1 -0
  738. package/lib/esm/common/render/primitives/VertexIndices.d.ts +26 -0
  739. package/lib/esm/common/render/primitives/VertexIndices.d.ts.map +1 -0
  740. package/lib/esm/common/render/primitives/VertexIndices.js +60 -0
  741. package/lib/esm/common/render/primitives/VertexIndices.js.map +1 -0
  742. package/lib/esm/common/render/primitives/VertexTable.d.ts +45 -0
  743. package/lib/esm/common/render/primitives/VertexTable.d.ts.map +1 -0
  744. package/lib/esm/common/render/primitives/VertexTable.js +34 -0
  745. package/lib/esm/common/render/primitives/VertexTable.js.map +1 -0
  746. package/lib/esm/{render → common/render}/primitives/VertexTableSplitter.d.ts +23 -2
  747. package/lib/esm/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
  748. package/lib/esm/{render → common/render}/primitives/VertexTableSplitter.js +44 -33
  749. package/lib/esm/common/render/primitives/VertexTableSplitter.js.map +1 -0
  750. package/lib/esm/core-frontend.d.ts +45 -8
  751. package/lib/esm/core-frontend.d.ts.map +1 -1
  752. package/lib/esm/core-frontend.js +45 -8
  753. package/lib/esm/core-frontend.js.map +1 -1
  754. package/lib/esm/extension/ExtensionAdmin.js +1 -1
  755. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  756. package/lib/esm/quantity-formatting/QuantityFormatter.js +1 -1
  757. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  758. package/lib/esm/render/CreateRenderMaterialArgs.d.ts +24 -0
  759. package/lib/esm/render/CreateRenderMaterialArgs.d.ts.map +1 -0
  760. package/lib/esm/render/CreateRenderMaterialArgs.js +9 -0
  761. package/lib/esm/render/CreateRenderMaterialArgs.js.map +1 -0
  762. package/lib/{cjs/render/RenderTexture.d.ts → esm/render/CreateTextureArgs.d.ts} +4 -28
  763. package/lib/esm/render/CreateTextureArgs.d.ts.map +1 -0
  764. package/lib/esm/render/CreateTextureArgs.js +9 -0
  765. package/lib/esm/render/CreateTextureArgs.js.map +1 -0
  766. package/lib/esm/render/GraphicBranch.d.ts +5 -7
  767. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  768. package/lib/esm/render/GraphicBranch.js +0 -8
  769. package/lib/esm/render/GraphicBranch.js.map +1 -1
  770. package/lib/esm/render/InstancedGraphicParams.d.ts +3 -4
  771. package/lib/esm/render/InstancedGraphicParams.d.ts.map +1 -1
  772. package/lib/esm/render/InstancedGraphicParams.js.map +1 -1
  773. package/lib/esm/render/MockRender.d.ts +4 -4
  774. package/lib/esm/render/MockRender.d.ts.map +1 -1
  775. package/lib/esm/render/MockRender.js +1 -1
  776. package/lib/esm/render/MockRender.js.map +1 -1
  777. package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
  778. package/lib/esm/render/ParticleCollectionBuilder.js +5 -5
  779. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  780. package/lib/esm/render/Pixel.d.ts +57 -0
  781. package/lib/esm/render/Pixel.d.ts.map +1 -1
  782. package/lib/esm/render/Pixel.js +41 -0
  783. package/lib/esm/render/Pixel.js.map +1 -1
  784. package/lib/esm/render/RealityMeshParams.js +2 -2
  785. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  786. package/lib/esm/render/RenderSystem.d.ts +24 -10
  787. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  788. package/lib/esm/render/RenderSystem.js +8 -9
  789. package/lib/esm/render/RenderSystem.js.map +1 -1
  790. package/lib/esm/render/RenderTarget.d.ts +1 -1
  791. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  792. package/lib/esm/render/RenderTarget.js.map +1 -1
  793. package/lib/esm/render/VisibleFeature.d.ts +1 -1
  794. package/lib/esm/render/VisibleFeature.d.ts.map +1 -1
  795. package/lib/esm/render/VisibleFeature.js.map +1 -1
  796. package/lib/esm/render/primitives/EdgeParams.d.ts +2 -89
  797. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
  798. package/lib/esm/render/primitives/EdgeParams.js +38 -74
  799. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  800. package/lib/esm/render/primitives/PointCloudPrimitive.d.ts +1 -0
  801. package/lib/esm/render/primitives/PointCloudPrimitive.d.ts.map +1 -1
  802. package/lib/esm/render/primitives/PointCloudPrimitive.js.map +1 -1
  803. package/lib/esm/render/primitives/PointStringParams.d.ts +3 -11
  804. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -1
  805. package/lib/esm/render/primitives/PointStringParams.js +25 -28
  806. package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
  807. package/lib/esm/render/primitives/Polyface.d.ts +1 -1
  808. package/lib/esm/render/primitives/Polyface.d.ts.map +1 -1
  809. package/lib/esm/render/primitives/Polyface.js.map +1 -1
  810. package/lib/esm/render/primitives/PolylineParams.d.ts +8 -37
  811. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -1
  812. package/lib/esm/render/primitives/PolylineParams.js +34 -43
  813. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  814. package/lib/esm/render/primitives/Strokes.d.ts +1 -1
  815. package/lib/esm/render/primitives/Strokes.d.ts.map +1 -1
  816. package/lib/esm/render/primitives/Strokes.js.map +1 -1
  817. package/lib/esm/render/primitives/VertexTableBuilder.d.ts +31 -0
  818. package/lib/esm/render/primitives/VertexTableBuilder.d.ts.map +1 -0
  819. package/lib/esm/render/primitives/{VertexTable.js → VertexTableBuilder.js} +62 -170
  820. package/lib/esm/render/primitives/VertexTableBuilder.js.map +1 -0
  821. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
  822. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  823. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  824. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
  825. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  826. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -1
  827. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  828. package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
  829. package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
  830. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js +1 -1
  831. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  832. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts +2 -1
  833. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  834. package/lib/esm/render/primitives/mesh/MeshBuilder.js +5 -2
  835. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  836. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
  837. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  838. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +8 -5
  839. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  840. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +58 -31
  841. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  842. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +26 -30
  843. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  844. package/lib/esm/render/webgl/BatchState.js +1 -1
  845. package/lib/esm/render/webgl/BatchState.js.map +1 -1
  846. package/lib/esm/render/webgl/BranchState.d.ts +3 -0
  847. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  848. package/lib/esm/render/webgl/BranchState.js +2 -0
  849. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  850. package/lib/esm/render/webgl/CachedGeometry.d.ts +1 -1
  851. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  852. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  853. package/lib/esm/render/webgl/ColorInfo.d.ts +1 -1
  854. package/lib/esm/render/webgl/ColorInfo.d.ts.map +1 -1
  855. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  856. package/lib/esm/render/webgl/EdgeGeometry.d.ts +2 -2
  857. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -1
  858. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  859. package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
  860. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  861. package/lib/esm/render/webgl/Graphic.d.ts +7 -1
  862. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  863. package/lib/esm/render/webgl/Graphic.js +7 -2
  864. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  865. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
  866. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  867. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  868. package/lib/esm/render/webgl/Material.d.ts +1 -1
  869. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  870. package/lib/esm/render/webgl/Material.js.map +1 -1
  871. package/lib/esm/render/webgl/Mesh.d.ts +2 -2
  872. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  873. package/lib/esm/render/webgl/Mesh.js +1 -1
  874. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  875. package/lib/esm/render/webgl/MeshData.d.ts +2 -2
  876. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
  877. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  878. package/lib/esm/render/webgl/MeshGeometry.d.ts +1 -1
  879. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -1
  880. package/lib/esm/render/webgl/PointString.d.ts +1 -1
  881. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  882. package/lib/esm/render/webgl/PointString.js.map +1 -1
  883. package/lib/esm/render/webgl/Polyline.d.ts +1 -1
  884. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  885. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  886. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  887. package/lib/esm/render/webgl/RenderCommands.js +1 -1
  888. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  889. package/lib/esm/render/webgl/SceneCompositor.d.ts +2 -1
  890. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  891. package/lib/esm/render/webgl/SceneCompositor.js +5 -2
  892. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  893. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +1 -1
  894. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  895. package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
  896. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  897. package/lib/esm/render/webgl/System.d.ts +7 -6
  898. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  899. package/lib/esm/render/webgl/System.js +1 -1
  900. package/lib/esm/render/webgl/System.js.map +1 -1
  901. package/lib/esm/render/webgl/Target.d.ts +1 -1
  902. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  903. package/lib/esm/render/webgl/Target.js +13 -11
  904. package/lib/esm/render/webgl/Target.js.map +1 -1
  905. package/lib/esm/render/webgl/Texture.d.ts +1 -1
  906. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  907. package/lib/esm/render/webgl/Texture.js +1 -1
  908. package/lib/esm/render/webgl/Texture.js.map +1 -1
  909. package/lib/esm/render/webgl/UniformHandle.js +1 -1
  910. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  911. package/lib/esm/render/webgl/VertexLUT.d.ts +2 -2
  912. package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
  913. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  914. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  915. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  916. package/lib/esm/render/webgl/glsl/RealityMesh.js +32 -19
  917. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  918. package/lib/esm/tile/B3dmReader.d.ts +1 -1
  919. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  920. package/lib/esm/tile/B3dmReader.js +1 -1
  921. package/lib/esm/tile/B3dmReader.js.map +1 -1
  922. package/lib/esm/tile/DynamicIModelTile.js +1 -1
  923. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  924. package/lib/esm/tile/FetchCloudStorage.d.ts +15 -0
  925. package/lib/esm/tile/FetchCloudStorage.d.ts.map +1 -0
  926. package/lib/esm/tile/FetchCloudStorage.js +31 -0
  927. package/lib/esm/tile/FetchCloudStorage.js.map +1 -0
  928. package/lib/esm/tile/GltfReader.d.ts +3 -3
  929. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  930. package/lib/esm/tile/GltfReader.js +15 -22
  931. package/lib/esm/tile/GltfReader.js.map +1 -1
  932. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  933. package/lib/esm/tile/IModelTile.js +12 -18
  934. package/lib/esm/tile/IModelTile.js.map +1 -1
  935. package/lib/esm/tile/IModelTileTree.d.ts +4 -1
  936. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  937. package/lib/esm/tile/IModelTileTree.js +16 -1
  938. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  939. package/lib/esm/tile/ImdlDecoder.d.ts +52 -0
  940. package/lib/esm/tile/ImdlDecoder.d.ts.map +1 -0
  941. package/lib/esm/tile/ImdlDecoder.js +31 -0
  942. package/lib/esm/tile/ImdlDecoder.js.map +1 -0
  943. package/lib/esm/tile/ImdlGraphicsCreator.d.ts +19 -0
  944. package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -0
  945. package/lib/esm/tile/ImdlGraphicsCreator.js +324 -0
  946. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -0
  947. package/lib/esm/tile/ImdlParser.d.ts +26 -0
  948. package/lib/esm/tile/ImdlParser.d.ts.map +1 -0
  949. package/lib/esm/tile/ImdlParser.js +68 -0
  950. package/lib/esm/tile/ImdlParser.js.map +1 -0
  951. package/lib/esm/tile/ImdlReader.d.ts +16 -420
  952. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  953. package/lib/esm/tile/ImdlReader.js +71 -903
  954. package/lib/esm/tile/ImdlReader.js.map +1 -1
  955. package/lib/esm/tile/OPCFormatInterpreter.js +1 -1
  956. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  957. package/lib/esm/tile/PntsReader.js +1 -1
  958. package/lib/esm/tile/PntsReader.js.map +1 -1
  959. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  960. package/lib/esm/tile/PrimaryTileTree.js +2 -1
  961. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  962. package/lib/esm/tile/RealityTile.d.ts +8 -3
  963. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  964. package/lib/esm/tile/RealityTile.js +4 -1
  965. package/lib/esm/tile/RealityTile.js.map +1 -1
  966. package/lib/esm/tile/RealityTileLoader.js +1 -1
  967. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  968. package/lib/esm/tile/RealityTileTree.js +1 -1
  969. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  970. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +1 -1
  971. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  972. package/lib/esm/tile/TileAdmin.d.ts +14 -11
  973. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  974. package/lib/esm/tile/TileAdmin.js +10 -30
  975. package/lib/esm/tile/TileAdmin.js.map +1 -1
  976. package/lib/esm/tile/internal.d.ts +8 -0
  977. package/lib/esm/tile/internal.d.ts.map +1 -1
  978. package/lib/esm/tile/internal.js +8 -0
  979. package/lib/esm/tile/internal.js.map +1 -1
  980. package/lib/esm/tile/map/ArcGisUtilities.d.ts +8 -1
  981. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  982. package/lib/esm/tile/map/ArcGisUtilities.js +21 -0
  983. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  984. package/lib/esm/tile/map/EllipsoidTerrainProvider.d.ts +6 -4
  985. package/lib/esm/tile/map/EllipsoidTerrainProvider.d.ts.map +1 -1
  986. package/lib/esm/tile/map/EllipsoidTerrainProvider.js +6 -4
  987. package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  988. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +2 -0
  989. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  990. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +4 -2
  991. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  992. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +55 -2
  993. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  994. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +96 -24
  995. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  996. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts +15 -0
  997. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.d.ts.map +1 -0
  998. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js +55 -0
  999. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -0
  1000. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts +44 -0
  1001. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts.map +1 -0
  1002. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.js +122 -0
  1003. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.js.map +1 -0
  1004. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts +26 -0
  1005. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts.map +1 -0
  1006. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js +130 -0
  1007. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js.map +1 -0
  1008. package/lib/esm/tile/map/ImageryProviders/WebMercator.d.ts +6 -0
  1009. package/lib/esm/tile/map/ImageryProviders/WebMercator.d.ts.map +1 -0
  1010. package/lib/esm/tile/map/ImageryProviders/WebMercator.js +18 -0
  1011. package/lib/esm/tile/map/ImageryProviders/WebMercator.js.map +1 -0
  1012. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -1
  1013. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  1014. package/lib/esm/tile/map/ImageryTileTree.js +16 -9
  1015. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  1016. package/lib/esm/tile/map/MapFeatureInfo.d.ts +67 -7
  1017. package/lib/esm/tile/map/MapFeatureInfo.d.ts.map +1 -1
  1018. package/lib/esm/tile/map/MapFeatureInfo.js +14 -1
  1019. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
  1020. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  1021. package/lib/esm/tile/map/MapLayerImageryFormats.js +3 -0
  1022. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  1023. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +4 -1
  1024. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  1025. package/lib/esm/tile/map/MapLayerImageryProvider.js +3 -1
  1026. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  1027. package/lib/esm/tile/map/MapLayerSources.d.ts +4 -1
  1028. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  1029. package/lib/esm/tile/map/MapLayerSources.js +3 -0
  1030. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  1031. package/lib/esm/tile/map/MapTile.d.ts +6 -1
  1032. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  1033. package/lib/esm/tile/map/MapTile.js +17 -8
  1034. package/lib/esm/tile/map/MapTile.js.map +1 -1
  1035. package/lib/esm/tile/map/MapTileLoader.d.ts.map +1 -1
  1036. package/lib/esm/tile/map/MapTileLoader.js +1 -15
  1037. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  1038. package/lib/esm/tile/map/MapTileTree.d.ts +12 -3
  1039. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  1040. package/lib/esm/tile/map/MapTileTree.js +42 -23
  1041. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  1042. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +2 -3
  1043. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  1044. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +3 -4
  1045. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  1046. package/lib/esm/tile/map/MapTilingScheme.d.ts +4 -4
  1047. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  1048. package/lib/esm/tile/map/MapTilingScheme.js +4 -4
  1049. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  1050. package/lib/esm/tools/ElementSetTool.js +1 -1
  1051. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  1052. package/lib/esm/tools/SelectTool.js +1 -1
  1053. package/lib/esm/tools/SelectTool.js.map +1 -1
  1054. package/lib/esm/tools/ToolAdmin.d.ts +8 -6
  1055. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  1056. package/lib/esm/tools/ToolAdmin.js +9 -7
  1057. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  1058. package/lib/esm/tools/ToolAssistance.d.ts +18 -0
  1059. package/lib/esm/tools/ToolAssistance.d.ts.map +1 -1
  1060. package/lib/esm/tools/ToolAssistance.js +8 -0
  1061. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  1062. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  1063. package/lib/esm/tools/ViewTool.js +3 -2
  1064. package/lib/esm/tools/ViewTool.js.map +1 -1
  1065. package/lib/esm/workers/ImdlParser/Worker.d.ts +20 -0
  1066. package/lib/esm/workers/ImdlParser/Worker.d.ts.map +1 -0
  1067. package/lib/esm/workers/ImdlParser/Worker.js +30 -0
  1068. package/lib/esm/workers/ImdlParser/Worker.js.map +1 -0
  1069. package/lib/esm/workers/ImdlParser/webpack.config.js +40 -0
  1070. package/lib/esm/workers/RegisterWorker.d.ts +9 -0
  1071. package/lib/esm/workers/RegisterWorker.d.ts.map +1 -0
  1072. package/lib/esm/workers/RegisterWorker.js +32 -0
  1073. package/lib/esm/workers/RegisterWorker.js.map +1 -0
  1074. package/lib/public/scripts/parse-imdl-worker.js +1 -0
  1075. package/lib/workers/webpack/parse-imdl-worker.js +1 -0
  1076. package/package.json +30 -29
  1077. package/lib/cjs/FrontendLoggerCategory.d.ts.map +0 -1
  1078. package/lib/cjs/FrontendLoggerCategory.js.map +0 -1
  1079. package/lib/cjs/ImageUtil.d.ts.map +0 -1
  1080. package/lib/cjs/ImageUtil.js.map +0 -1
  1081. package/lib/cjs/ViewRect.d.ts.map +0 -1
  1082. package/lib/cjs/ViewRect.js.map +0 -1
  1083. package/lib/cjs/WebWorkerManager.d.ts +0 -49
  1084. package/lib/cjs/WebWorkerManager.d.ts.map +0 -1
  1085. package/lib/cjs/WebWorkerManager.js +0 -155
  1086. package/lib/cjs/WebWorkerManager.js.map +0 -1
  1087. package/lib/cjs/gltf/GltfModel.d.ts.map +0 -1
  1088. package/lib/cjs/gltf/GltfModel.js.map +0 -1
  1089. package/lib/cjs/gltf/GltfParser.d.ts.map +0 -1
  1090. package/lib/cjs/gltf/GltfParser.js.map +0 -1
  1091. package/lib/cjs/gltf/GltfSchema.d.ts.map +0 -1
  1092. package/lib/cjs/gltf/GltfSchema.js.map +0 -1
  1093. package/lib/cjs/render/RenderMaterial.d.ts.map +0 -1
  1094. package/lib/cjs/render/RenderMaterial.js.map +0 -1
  1095. package/lib/cjs/render/RenderTexture.d.ts.map +0 -1
  1096. package/lib/cjs/render/RenderTexture.js.map +0 -1
  1097. package/lib/cjs/render/primitives/AuxChannelTable.d.ts.map +0 -1
  1098. package/lib/cjs/render/primitives/AuxChannelTable.js.map +0 -1
  1099. package/lib/cjs/render/primitives/DisplayParams.d.ts.map +0 -1
  1100. package/lib/cjs/render/primitives/DisplayParams.js.map +0 -1
  1101. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +0 -1
  1102. package/lib/cjs/render/primitives/SurfaceParams.js.map +0 -1
  1103. package/lib/cjs/render/primitives/VertexTable.d.ts +0 -152
  1104. package/lib/cjs/render/primitives/VertexTable.d.ts.map +0 -1
  1105. package/lib/cjs/render/primitives/VertexTable.js.map +0 -1
  1106. package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +0 -1
  1107. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +0 -1
  1108. package/lib/cjs/render-primitives.d.ts +0 -21
  1109. package/lib/cjs/render-primitives.d.ts.map +0 -1
  1110. package/lib/cjs/render-primitives.js +0 -41
  1111. package/lib/cjs/render-primitives.js.map +0 -1
  1112. package/lib/esm/FrontendLoggerCategory.d.ts.map +0 -1
  1113. package/lib/esm/FrontendLoggerCategory.js.map +0 -1
  1114. package/lib/esm/ImageUtil.d.ts.map +0 -1
  1115. package/lib/esm/ImageUtil.js.map +0 -1
  1116. package/lib/esm/ViewRect.d.ts.map +0 -1
  1117. package/lib/esm/ViewRect.js.map +0 -1
  1118. package/lib/esm/WebWorkerManager.d.ts +0 -49
  1119. package/lib/esm/WebWorkerManager.d.ts.map +0 -1
  1120. package/lib/esm/WebWorkerManager.js +0 -150
  1121. package/lib/esm/WebWorkerManager.js.map +0 -1
  1122. package/lib/esm/gltf/GltfModel.d.ts.map +0 -1
  1123. package/lib/esm/gltf/GltfModel.js.map +0 -1
  1124. package/lib/esm/gltf/GltfParser.d.ts.map +0 -1
  1125. package/lib/esm/gltf/GltfParser.js.map +0 -1
  1126. package/lib/esm/gltf/GltfSchema.d.ts.map +0 -1
  1127. package/lib/esm/gltf/GltfSchema.js.map +0 -1
  1128. package/lib/esm/render/RenderMaterial.d.ts.map +0 -1
  1129. package/lib/esm/render/RenderMaterial.js.map +0 -1
  1130. package/lib/esm/render/RenderTexture.d.ts.map +0 -1
  1131. package/lib/esm/render/RenderTexture.js.map +0 -1
  1132. package/lib/esm/render/primitives/AuxChannelTable.d.ts.map +0 -1
  1133. package/lib/esm/render/primitives/AuxChannelTable.js.map +0 -1
  1134. package/lib/esm/render/primitives/DisplayParams.d.ts.map +0 -1
  1135. package/lib/esm/render/primitives/DisplayParams.js.map +0 -1
  1136. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +0 -1
  1137. package/lib/esm/render/primitives/SurfaceParams.js.map +0 -1
  1138. package/lib/esm/render/primitives/VertexTable.d.ts +0 -152
  1139. package/lib/esm/render/primitives/VertexTable.d.ts.map +0 -1
  1140. package/lib/esm/render/primitives/VertexTable.js.map +0 -1
  1141. package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +0 -1
  1142. package/lib/esm/render/primitives/VertexTableSplitter.js.map +0 -1
  1143. package/lib/esm/render-primitives.d.ts +0 -21
  1144. package/lib/esm/render-primitives.d.ts.map +0 -1
  1145. package/lib/esm/render-primitives.js +0 -25
  1146. package/lib/esm/render-primitives.js.map +0 -1
  1147. /package/lib/cjs/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
  1148. /package/lib/cjs/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
  1149. /package/lib/cjs/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
  1150. /package/lib/cjs/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
  1151. /package/lib/cjs/{ViewRect.js → common/ViewRect.js} +0 -0
  1152. /package/lib/cjs/{gltf → common/gltf}/GltfModel.js +0 -0
  1153. /package/lib/cjs/{gltf → common/gltf}/GltfParser.d.ts +0 -0
  1154. /package/lib/cjs/{gltf → common/gltf}/GltfParser.js +0 -0
  1155. /package/lib/cjs/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
  1156. /package/lib/cjs/{gltf → common/gltf}/GltfSchema.js +0 -0
  1157. /package/lib/cjs/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
  1158. /package/lib/cjs/{render → common/render}/primitives/DisplayParams.js +0 -0
  1159. /package/lib/cjs/{render → common/render}/primitives/SurfaceParams.js +0 -0
  1160. /package/lib/esm/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
  1161. /package/lib/esm/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
  1162. /package/lib/esm/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
  1163. /package/lib/esm/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
  1164. /package/lib/esm/{ViewRect.js → common/ViewRect.js} +0 -0
  1165. /package/lib/esm/{gltf → common/gltf}/GltfModel.js +0 -0
  1166. /package/lib/esm/{gltf → common/gltf}/GltfParser.d.ts +0 -0
  1167. /package/lib/esm/{gltf → common/gltf}/GltfParser.js +0 -0
  1168. /package/lib/esm/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
  1169. /package/lib/esm/{gltf → common/gltf}/GltfSchema.js +0 -0
  1170. /package/lib/esm/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
  1171. /package/lib/esm/{render → common/render}/primitives/DisplayParams.js +0 -0
  1172. /package/lib/esm/{render → common/render}/primitives/SurfaceParams.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"GeoServices.js","sourceRoot":"","sources":["../../src/GeoServices.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelConnection\r\n */\r\n\r\n// cspell:ignore GCRS\r\nimport {\r\n assert, BeEvent, Dictionary, Logger, SortedArray,\r\n} from \"@itwin/core-bentley\";\r\nimport { WritableXYAndZ, XYAndZ, XYZProps } from \"@itwin/core-geometry\";\r\nimport {\r\n GeoCoordinatesResponseProps, GeoCoordStatus, GeographicCRSProps, IModelCoordinatesResponseProps, IModelReadRpcInterface, PointWithStatus,\r\n} from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\n\r\n/** Options used to create a [[CoordinateConverter]].\r\n * @internal exported strictly for tests.\r\n */\r\nexport interface CoordinateConverterOptions {\r\n /** The iModel for which to perform the conversions. */\r\n iModel: IModelConnection;\r\n /** Asynchronously convert each point. The resultant array should have the same number and order of points as the input. */\r\n requestPoints: (points: XYAndZ[]) => Promise<PointWithStatus[]>;\r\n /** Maximum number of points to include in each request. Default: 300. */\r\n maxPointsPerRequest?: number;\r\n}\r\n\r\nfunction compareXYAndZ(lhs: XYAndZ, rhs: XYAndZ): number {\r\n return lhs.x - rhs.x || lhs.y - rhs.y || lhs.z - rhs.z;\r\n}\r\n\r\nfunction cloneXYAndZ(xyz: XYAndZ): XYAndZ {\r\n return { x: xyz.x, y: xyz.y, z: xyz.z };\r\n}\r\n\r\ntype CoordinateConverterState =\r\n // No pending requests.\r\n \"idle\" |\r\n // We have scheduled a requestAnimationFrame to dispatch all pending requests.\r\n \"scheduled\" |\r\n // We have dispatched all requests that were pending at the most recent requestAnimationFrame callback.\r\n \"in-flight\";\r\n\r\n/** Performs conversion of coordinates from one coordinate system to another.\r\n * A [[GeoConverter]] has a pair of these for converting between iModel coordinates and geographic coordinates.\r\n * Uses a cache to avoid repeatedly requesting the same points, and a batching strategy to avoid making frequent small requests.\r\n * The cache stores every point that was ever converted by [[convert]]. It is currently permitted to grow to unbounded size.\r\n * The batching works as follows:\r\n * When a conversion is requested via [[convert]], if all the requested points are in the cache, they are returned immediately.\r\n * Otherwise, any points not in the cache and not in the current in-flight request (if any) are placed onto the queue of pending requests.\r\n * A pending request is scheduled if one hasn't already been scheduled, via requestAnimationFrame.\r\n * In the animation frame callback, the pending requests are split into batches of no more than options.maxPointsPerRequest and dispatched to the backend.\r\n * Once the response is received, the results are loaded into and returned from the cache.\r\n * If more calls to convert occurred while the request was in flight, another request is dispatched.\r\n * @internal exported strictly for tests.\r\n */\r\nexport class CoordinateConverter {\r\n protected readonly _cache: Dictionary<XYAndZ, PointWithStatus>;\r\n protected _state: CoordinateConverterState = \"idle\";\r\n // The accumulated set of points to be converted by the next request.\r\n protected _pending: SortedArray<XYAndZ>;\r\n // The set of points that were included in the current in-flight request, if any.\r\n protected _inflight: SortedArray<XYAndZ>;\r\n // An event fired when the next request completes.\r\n protected _onCompleted = new BeEvent<() => void>();\r\n // Used for creating cache keys (XYAndZ) from XYZProps without having to allocate temporary objects.\r\n protected readonly _scratchXYZ = { x: 0, y: 0, z: 0 };\r\n protected readonly _maxPointsPerRequest: number;\r\n protected readonly _iModel: IModelConnection;\r\n protected readonly _requestPoints: (points: XYAndZ[]) => Promise<PointWithStatus[]>;\r\n\r\n protected toXYAndZ(input: XYZProps, output: WritableXYAndZ): XYAndZ {\r\n if (Array.isArray(input)) {\r\n output.x = input[0] ?? 0;\r\n output.y = input[1] ?? 0;\r\n output.z = input[2] ?? 0;\r\n } else {\r\n output.x = input.x ?? 0;\r\n output.y = input.y ?? 0;\r\n output.z = input.z ?? 0;\r\n }\r\n\r\n return output;\r\n }\r\n\r\n public constructor(opts: CoordinateConverterOptions) {\r\n this._maxPointsPerRequest = Math.max(1, opts.maxPointsPerRequest ?? 300);\r\n this._iModel = opts.iModel;\r\n this._requestPoints = opts.requestPoints;\r\n\r\n this._cache = new Dictionary<XYAndZ, PointWithStatus>(compareXYAndZ, cloneXYAndZ);\r\n this._pending = new SortedArray<XYAndZ>(compareXYAndZ, false, cloneXYAndZ);\r\n this._inflight = new SortedArray<XYAndZ>(compareXYAndZ, false, cloneXYAndZ);\r\n }\r\n\r\n protected async dispatch(): Promise<void> {\r\n assert(this._state === \"scheduled\");\r\n if (this._iModel.isClosed || this._pending.isEmpty) {\r\n this._state = \"idle\";\r\n this._onCompleted.raiseEvent();\r\n return;\r\n }\r\n\r\n this._state = \"in-flight\";\r\n\r\n // Ensure subsequently-enqueued requests listen for the *next* response to be received.\r\n const onCompleted = this._onCompleted;\r\n this._onCompleted = new BeEvent<() => void>();\r\n\r\n // Pending requests are now in flight. Start a new list of pending requests. It's cheaper to swap than to allocate new objects.\r\n const inflight = this._pending;\r\n this._pending = this._inflight;\r\n assert(this._pending.isEmpty);\r\n this._inflight = inflight;\r\n\r\n // Split requests if necessary to avoid requesting more than the maximum allowed number of points.\r\n const promises: Array<Promise<void>> = [];\r\n for (let i = 0; i < inflight.length; i += this._maxPointsPerRequest) {\r\n const requests = inflight.slice(i, i + this._maxPointsPerRequest).extractArray();\r\n const promise = this._requestPoints(requests).then((results) => {\r\n if (this._iModel.isClosed)\r\n return;\r\n\r\n if (results.length !== requests.length)\r\n Logger.logError(`${FrontendLoggerCategory.Package}.geoservices`, `requested conversion of ${requests.length} points, but received ${results.length} points`);\r\n\r\n for (let j = 0; j < results.length; j++) {\r\n if (j < requests.length)\r\n this._cache.set(requests[j], results[j]);\r\n }\r\n }).catch((err) => {\r\n Logger.logException(`${FrontendLoggerCategory.Package}.geoservices`, err);\r\n });\r\n\r\n promises.push(promise);\r\n }\r\n\r\n await Promise.all(promises);\r\n\r\n assert(this._state === \"in-flight\");\r\n this._state = \"idle\";\r\n this._inflight.clear();\r\n\r\n // If any more pending conversions arrived while awaiting this request, schedule another request.\r\n if (!this._pending.isEmpty)\r\n this.scheduleDispatch(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n\r\n // Resolve promises of all callers who were awaiting this request.\r\n onCompleted.raiseEvent();\r\n }\r\n\r\n // Add any points not present in cache to pending request list.\r\n // Return the number of points present in cache.\r\n protected enqueue(points: XYZProps[]): number {\r\n let numInCache = 0;\r\n for (const point of points) {\r\n const xyz = this.toXYAndZ(point, this._scratchXYZ);\r\n if (this._cache.get(xyz))\r\n ++numInCache;\r\n else if (!this._inflight.contains(xyz))\r\n this._pending.insert(xyz);\r\n }\r\n\r\n return numInCache;\r\n }\r\n\r\n // Obtain converted points from the cache. The assumption is that every point in `inputs` is already present in the cache.\r\n // Any point not present will be returned unconverted with an error status.\r\n protected getFromCache(inputs: XYZProps[]): PointWithStatus[] {\r\n const outputs: PointWithStatus[] = [];\r\n for (const input of inputs) {\r\n const xyz = this.toXYAndZ(input, this._scratchXYZ);\r\n let output = this._cache.get(xyz);\r\n if (!output)\r\n output = { p: { ...xyz }, s: GeoCoordStatus.CSMapError };\r\n\r\n outputs.push(output);\r\n }\r\n\r\n return outputs;\r\n }\r\n\r\n protected async scheduleDispatch(): Promise<void> {\r\n if (\"idle\" === this._state) {\r\n this._state = \"scheduled\";\r\n requestAnimationFrame(() => {\r\n this.dispatch(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n });\r\n }\r\n\r\n return new Promise((resolve) => {\r\n this._onCompleted.addOnce(() => resolve());\r\n });\r\n }\r\n\r\n public async convert(inputs: XYZProps[]): Promise<{ points: PointWithStatus[], fromCache: number }> {\r\n const fromCache = this.enqueue(inputs);\r\n assert(fromCache >= 0);\r\n assert(fromCache <= inputs.length);\r\n\r\n if (fromCache === inputs.length)\r\n return { points: this.getFromCache(inputs), fromCache };\r\n\r\n await this.scheduleDispatch();\r\n\r\n return { points: this.getFromCache(inputs), fromCache };\r\n }\r\n\r\n public findCached(inputs: XYZProps[]): CachedIModelCoordinatesResponseProps {\r\n const result: Array<PointWithStatus | undefined> = [];\r\n let missing: XYZProps[] | undefined;\r\n for (const input of inputs) {\r\n const key = this.toXYAndZ(input, this._scratchXYZ);\r\n const output = this._cache.get(key);\r\n result.push(output);\r\n if (!output) {\r\n if (!missing)\r\n missing = [];\r\n\r\n missing.push(input);\r\n }\r\n }\r\n\r\n return { result, missing };\r\n }\r\n}\r\n\r\n/** Response to a request to obtain imodel coordinates from cache.\r\n * @internal\r\n */\r\nexport interface CachedIModelCoordinatesResponseProps {\r\n /** An array of the same length as the input array, with undefined entries at indices corresponding to points not found in cache. */\r\n result: Array<PointWithStatus | undefined>;\r\n /** An array of points in the input array which were not found in the cache, or undefined if all points were found in the cache. */\r\n missing?: XYZProps[];\r\n}\r\n\r\n/** An object capable of communicating with the backend to convert between coordinates in a geographic coordinate system and coordinates in an [[IModelConnection]]'s own coordinate system.\r\n * @see [[GeoServices.getConverter]] to obtain a converter.\r\n * @see [GeographicCRS]($common) for more information about geographic coordinate reference systems.\r\n * @public\r\n */\r\nexport class GeoConverter {\r\n private readonly _geoToIModel: CoordinateConverter;\r\n private readonly _iModelToGeo: CoordinateConverter;\r\n\r\n /** @internal */\r\n constructor(iModel: IModelConnection, datumOrGCRS: string | GeographicCRSProps) {\r\n const datum = typeof datumOrGCRS === \"object\" ? JSON.stringify(datumOrGCRS) : datumOrGCRS;\r\n\r\n this._geoToIModel = new CoordinateConverter({\r\n iModel,\r\n requestPoints: async (geoCoords: XYAndZ[]) => {\r\n const request = { source: datum, geoCoords };\r\n const rpc = IModelReadRpcInterface.getClientForRouting(iModel.routingContext.token);\r\n const response = await rpc.getIModelCoordinatesFromGeoCoordinates(iModel.getRpcProps(), request);\r\n return response.iModelCoords;\r\n },\r\n });\r\n\r\n this._iModelToGeo = new CoordinateConverter({\r\n iModel,\r\n requestPoints: async (iModelCoords: XYAndZ[]) => {\r\n const request = { target: datum, iModelCoords };\r\n const rpc = IModelReadRpcInterface.getClientForRouting(iModel.routingContext.token);\r\n const response = await rpc.getGeoCoordinatesFromIModelCoordinates(iModel.getRpcProps(), request);\r\n return response.geoCoords;\r\n },\r\n });\r\n }\r\n\r\n /** Convert the specified geographic coordinates into iModel coordinates. */\r\n public async convertToIModelCoords(geoPoints: XYZProps[]): Promise<PointWithStatus[]> {\r\n const result = await this.getIModelCoordinatesFromGeoCoordinates(geoPoints);\r\n return result.iModelCoords;\r\n }\r\n\r\n /** Convert the specified iModel coordinates into geographic coordinates. */\r\n public async convertFromIModelCoords(iModelCoords: XYZProps[]): Promise<PointWithStatus[]> {\r\n const result = await this.getGeoCoordinatesFromIModelCoordinates(iModelCoords);\r\n return result.geoCoords;\r\n }\r\n\r\n /** @internal */\r\n public async getIModelCoordinatesFromGeoCoordinates(geoPoints: XYZProps[]): Promise<IModelCoordinatesResponseProps> {\r\n const result = await this._geoToIModel.convert(geoPoints);\r\n return {\r\n iModelCoords: result.points,\r\n fromCache: result.fromCache,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public async getGeoCoordinatesFromIModelCoordinates(iModelPoints: XYZProps[]): Promise<GeoCoordinatesResponseProps> {\r\n const result = await this._iModelToGeo.convert(iModelPoints);\r\n return {\r\n geoCoords: result.points,\r\n fromCache: result.fromCache,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public getCachedIModelCoordinatesFromGeoCoordinates(geoPoints: XYZProps[]): CachedIModelCoordinatesResponseProps {\r\n return this._geoToIModel.findCached(geoPoints);\r\n }\r\n}\r\n\r\n/** The Geographic Services available for an [[IModelConnection]].\r\n * @see [[IModelConnection.geoServices]] to obtain the GeoServices for a specific iModel.\r\n * @public\r\n */\r\nexport class GeoServices {\r\n private _iModel: IModelConnection;\r\n\r\n /** @internal */\r\n constructor(iModel: IModelConnection) {\r\n this._iModel = iModel;\r\n }\r\n\r\n /** Obtain a converter that can convert between a geographic coordinate system and the iModel's own coordinate system.\r\n * @param datumOrGCRS The name or JSON representation of the geographic coordinate system datum - for example, \"WGS84\".\r\n * @returns a converter, or `undefined` if the iModel is not open.\r\n * @note A [[BlankConnection]] has no connection to a backend, so it is never \"open\"; therefore it always returns `undefined`.\r\n */\r\n public getConverter(datumOrGCRS?: string | GeographicCRSProps): GeoConverter | undefined {\r\n return this._iModel.isOpen ? new GeoConverter(this._iModel, datumOrGCRS ? datumOrGCRS : \"\") : undefined;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"GeoServices.js","sourceRoot":"","sources":["../../src/GeoServices.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelConnection\r\n */\r\n\r\n// cspell:ignore GCRS\r\nimport {\r\n assert, BeEvent, Dictionary, Logger, SortedArray,\r\n} from \"@itwin/core-bentley\";\r\nimport { WritableXYAndZ, XYAndZ, XYZProps } from \"@itwin/core-geometry\";\r\nimport {\r\n GeoCoordinatesRequestProps, GeoCoordinatesResponseProps, GeoCoordStatus, GeographicCRSProps, IModelCoordinatesRequestProps, IModelCoordinatesResponseProps,\r\n IModelReadRpcInterface, PointWithStatus,\r\n} from \"@itwin/core-common\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { FrontendLoggerCategory } from \"./common/FrontendLoggerCategory\";\r\n\r\n/** Options used to create a [[CoordinateConverter]].\r\n * @internal exported strictly for tests.\r\n */\r\nexport interface CoordinateConverterOptions {\r\n isIModelClosed: () => boolean;\r\n /** Asynchronously convert each point. The resultant array should have the same number and order of points as the input. */\r\n requestPoints: (points: XYAndZ[]) => Promise<PointWithStatus[]>;\r\n /** Maximum number of points to include in each request. Default: 300. */\r\n maxPointsPerRequest?: number;\r\n}\r\n\r\nfunction compareXYAndZ(lhs: XYAndZ, rhs: XYAndZ): number {\r\n return lhs.x - rhs.x || lhs.y - rhs.y || lhs.z - rhs.z;\r\n}\r\n\r\nfunction cloneXYAndZ(xyz: XYAndZ): XYAndZ {\r\n return { x: xyz.x, y: xyz.y, z: xyz.z };\r\n}\r\n\r\ntype CoordinateConverterState =\r\n // No pending requests.\r\n \"idle\" |\r\n // We have scheduled a requestAnimationFrame to dispatch all pending requests.\r\n \"scheduled\" |\r\n // We have dispatched all requests that were pending at the most recent requestAnimationFrame callback.\r\n \"in-flight\";\r\n\r\n/** Performs conversion of coordinates from one coordinate system to another.\r\n * A [[GeoConverter]] has a pair of these for converting between iModel coordinates and geographic coordinates.\r\n * Uses a cache to avoid repeatedly requesting the same points, and a batching strategy to avoid making frequent small requests.\r\n * The cache stores every point that was ever converted by [[convert]]. It is currently permitted to grow to unbounded size.\r\n * The batching works as follows:\r\n * When a conversion is requested via [[convert]], if all the requested points are in the cache, they are returned immediately.\r\n * Otherwise, any points not in the cache and not in the current in-flight request (if any) are placed onto the queue of pending requests.\r\n * A pending request is scheduled if one hasn't already been scheduled, via requestAnimationFrame.\r\n * In the animation frame callback, the pending requests are split into batches of no more than options.maxPointsPerRequest and dispatched to the backend.\r\n * Once the response is received, the results are loaded into and returned from the cache.\r\n * If more calls to convert occurred while the request was in flight, another request is dispatched.\r\n * @internal exported strictly for tests.\r\n */\r\nexport class CoordinateConverter {\r\n protected readonly _cache: Dictionary<XYAndZ, PointWithStatus>;\r\n protected _state: CoordinateConverterState = \"idle\";\r\n // The accumulated set of points to be converted by the next request.\r\n protected _pending: SortedArray<XYAndZ>;\r\n // The set of points that were included in the current in-flight request, if any.\r\n protected _inflight: SortedArray<XYAndZ>;\r\n // An event fired when the next request completes.\r\n protected _onCompleted = new BeEvent<() => void>();\r\n // Used for creating cache keys (XYAndZ) from XYZProps without having to allocate temporary objects.\r\n protected readonly _scratchXYZ = { x: 0, y: 0, z: 0 };\r\n protected readonly _maxPointsPerRequest: number;\r\n protected readonly _isIModelClosed: () => boolean;\r\n protected readonly _requestPoints: (points: XYAndZ[]) => Promise<PointWithStatus[]>;\r\n // If true, [[dispatch]] will schedule another dispatch after it receives a response.\r\n // This is needed when all the points requested after the most recent dispatch were included in the currently-in-flight request -\r\n // _pending will be empty but new callers will be awaiting the results of the in-flight request.\r\n protected _redispatchOnCompletion = false;\r\n\r\n public get isIdle(): boolean {\r\n return \"idle\" === this._state;\r\n }\r\n\r\n protected toXYAndZ(input: XYZProps, output: WritableXYAndZ): XYAndZ {\r\n if (Array.isArray(input)) {\r\n output.x = input[0] ?? 0;\r\n output.y = input[1] ?? 0;\r\n output.z = input[2] ?? 0;\r\n } else {\r\n output.x = input.x ?? 0;\r\n output.y = input.y ?? 0;\r\n output.z = input.z ?? 0;\r\n }\r\n\r\n return output;\r\n }\r\n\r\n public constructor(opts: CoordinateConverterOptions) {\r\n this._maxPointsPerRequest = Math.max(1, opts.maxPointsPerRequest ?? 300);\r\n this._isIModelClosed = opts.isIModelClosed;\r\n this._requestPoints = opts.requestPoints;\r\n\r\n this._cache = new Dictionary<XYAndZ, PointWithStatus>(compareXYAndZ, cloneXYAndZ);\r\n this._pending = new SortedArray<XYAndZ>(compareXYAndZ, false, cloneXYAndZ);\r\n this._inflight = new SortedArray<XYAndZ>(compareXYAndZ, false, cloneXYAndZ);\r\n }\r\n\r\n protected async dispatch(): Promise<void> {\r\n assert(this._state === \"scheduled\");\r\n if (this._isIModelClosed() || this._pending.isEmpty) {\r\n this._state = \"idle\";\r\n this._onCompleted.raiseEvent();\r\n return;\r\n }\r\n\r\n this._state = \"in-flight\";\r\n\r\n // Ensure subsequently-enqueued requests listen for the *next* response to be received.\r\n const onCompleted = this._onCompleted;\r\n this._onCompleted = new BeEvent<() => void>();\r\n\r\n // Pending requests are now in flight. Start a new list of pending requests. It's cheaper to swap than to allocate new objects.\r\n const inflight = this._pending;\r\n this._pending = this._inflight;\r\n assert(this._pending.isEmpty);\r\n this._inflight = inflight;\r\n\r\n // Split requests if necessary to avoid requesting more than the maximum allowed number of points.\r\n const promises: Array<Promise<void>> = [];\r\n for (let i = 0; i < inflight.length; i += this._maxPointsPerRequest) {\r\n const requests = inflight.slice(i, i + this._maxPointsPerRequest).extractArray();\r\n const promise = this._requestPoints(requests).then((results) => {\r\n if (this._isIModelClosed())\r\n return;\r\n\r\n if (results.length !== requests.length)\r\n Logger.logError(`${FrontendLoggerCategory.Package}.geoservices`, `requested conversion of ${requests.length} points, but received ${results.length} points`);\r\n\r\n for (let j = 0; j < results.length; j++) {\r\n if (j < requests.length)\r\n this._cache.set(requests[j], results[j]);\r\n }\r\n }).catch((err) => {\r\n Logger.logException(`${FrontendLoggerCategory.Package}.geoservices`, err);\r\n });\r\n\r\n promises.push(promise);\r\n }\r\n\r\n await Promise.all(promises);\r\n\r\n assert(this._state === \"in-flight\");\r\n this._state = \"idle\";\r\n this._inflight.clear();\r\n\r\n // If any more pending conversions arrived while awaiting this request, schedule another request.\r\n if (!this._pending.isEmpty || this._redispatchOnCompletion) {\r\n this._redispatchOnCompletion = false;\r\n this.scheduleDispatch(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n\r\n // Resolve promises of all callers who were awaiting this request.\r\n onCompleted.raiseEvent();\r\n }\r\n\r\n // Add any points not present in cache to pending request list.\r\n // Return the number of points present in cache.\r\n protected enqueue(points: XYZProps[]): number {\r\n let numInCache = 0;\r\n for (const point of points) {\r\n const xyz = this.toXYAndZ(point, this._scratchXYZ);\r\n if (this._cache.get(xyz))\r\n ++numInCache;\r\n else if (this._inflight.contains(xyz))\r\n this._redispatchOnCompletion = true;\r\n else\r\n this._pending.insert(xyz);\r\n }\r\n\r\n return numInCache;\r\n }\r\n\r\n // Obtain converted points from the cache. The assumption is that every point in `inputs` is already present in the cache.\r\n // Any point not present will be returned unconverted with an error status.\r\n protected getFromCache(inputs: XYZProps[]): PointWithStatus[] {\r\n const outputs: PointWithStatus[] = [];\r\n for (const input of inputs) {\r\n const xyz = this.toXYAndZ(input, this._scratchXYZ);\r\n let output = this._cache.get(xyz);\r\n if (!output)\r\n output = { p: { ...xyz }, s: GeoCoordStatus.CSMapError };\r\n\r\n outputs.push(output);\r\n }\r\n\r\n return outputs;\r\n }\r\n\r\n protected async scheduleDispatch(): Promise<void> {\r\n if (\"idle\" === this._state) {\r\n this._state = \"scheduled\";\r\n requestAnimationFrame(() => {\r\n this.dispatch(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n });\r\n }\r\n\r\n return new Promise((resolve) => {\r\n this._onCompleted.addOnce(() => resolve());\r\n });\r\n }\r\n\r\n public async convert(inputs: XYZProps[]): Promise<{ points: PointWithStatus[], fromCache: number }> {\r\n const fromCache = this.enqueue(inputs);\r\n assert(fromCache >= 0);\r\n assert(fromCache <= inputs.length);\r\n\r\n if (fromCache === inputs.length)\r\n return { points: this.getFromCache(inputs), fromCache };\r\n\r\n await this.scheduleDispatch();\r\n\r\n return { points: this.getFromCache(inputs), fromCache };\r\n }\r\n\r\n public findCached(inputs: XYZProps[]): CachedIModelCoordinatesResponseProps {\r\n const result: Array<PointWithStatus | undefined> = [];\r\n let missing: XYZProps[] | undefined;\r\n for (const input of inputs) {\r\n const key = this.toXYAndZ(input, this._scratchXYZ);\r\n const output = this._cache.get(key);\r\n result.push(output);\r\n if (!output) {\r\n if (!missing)\r\n missing = [];\r\n\r\n missing.push(input);\r\n }\r\n }\r\n\r\n return { result, missing };\r\n }\r\n}\r\n\r\n/** Response to a request to obtain imodel coordinates from cache.\r\n * @internal\r\n */\r\nexport interface CachedIModelCoordinatesResponseProps {\r\n /** An array of the same length as the input array, with undefined entries at indices corresponding to points not found in cache. */\r\n result: Array<PointWithStatus | undefined>;\r\n /** An array of points in the input array which were not found in the cache, or undefined if all points were found in the cache. */\r\n missing?: XYZProps[];\r\n}\r\n\r\n/** Options used to create a [[GeoConverter]].\r\n * @internal exported strictly for tests.\r\n */\r\nexport interface GeoConverterOptions {\r\n readonly datum: string;\r\n isIModelClosed: () => boolean;\r\n toIModelCoords: (request: IModelCoordinatesRequestProps) => Promise<PointWithStatus[]>;\r\n fromIModelCoords: (request: GeoCoordinatesRequestProps) => Promise<PointWithStatus[]>;\r\n}\r\n\r\n/** An object capable of communicating with the backend to convert between coordinates in a geographic coordinate system and coordinates in an [[IModelConnection]]'s own coordinate system.\r\n * @see [[GeoServices.getConverter]] to obtain a converter.\r\n * @see [GeographicCRS]($common) for more information about geographic coordinate reference systems.\r\n * @public\r\n */\r\nexport class GeoConverter {\r\n private readonly _geoToIModel: CoordinateConverter;\r\n private readonly _iModelToGeo: CoordinateConverter;\r\n /** Used for removing this converter from GeoServices' cache after all requests are completed.\r\n * @internal\r\n */\r\n public readonly onAllRequestsCompleted = new BeEvent<() => void>();\r\n\r\n /** @internal */\r\n constructor(opts: GeoConverterOptions) {\r\n const isIModelClosed = opts.isIModelClosed;\r\n this._geoToIModel = new CoordinateConverter({\r\n isIModelClosed,\r\n requestPoints: async (geoCoords: XYAndZ[]) => opts.toIModelCoords({ source: opts.datum, geoCoords }),\r\n });\r\n\r\n this._iModelToGeo = new CoordinateConverter({\r\n isIModelClosed,\r\n requestPoints: async (iModelCoords: XYAndZ[]) => opts.fromIModelCoords({ target: opts.datum, iModelCoords }),\r\n });\r\n }\r\n\r\n /** Convert the specified geographic coordinates into iModel coordinates. */\r\n public async convertToIModelCoords(geoPoints: XYZProps[]): Promise<PointWithStatus[]> {\r\n const result = await this.getIModelCoordinatesFromGeoCoordinates(geoPoints);\r\n return result.iModelCoords;\r\n }\r\n\r\n /** Convert the specified iModel coordinates into geographic coordinates. */\r\n public async convertFromIModelCoords(iModelCoords: XYZProps[]): Promise<PointWithStatus[]> {\r\n const result = await this.getGeoCoordinatesFromIModelCoordinates(iModelCoords);\r\n return result.geoCoords;\r\n }\r\n\r\n /** @internal */\r\n public async getIModelCoordinatesFromGeoCoordinates(geoPoints: XYZProps[]): Promise<IModelCoordinatesResponseProps> {\r\n const result = await this._geoToIModel.convert(geoPoints);\r\n this.checkCompletion();\r\n return {\r\n iModelCoords: result.points,\r\n fromCache: result.fromCache,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public async getGeoCoordinatesFromIModelCoordinates(iModelPoints: XYZProps[]): Promise<GeoCoordinatesResponseProps> {\r\n const result = await this._iModelToGeo.convert(iModelPoints);\r\n this.checkCompletion();\r\n return {\r\n geoCoords: result.points,\r\n fromCache: result.fromCache,\r\n };\r\n }\r\n\r\n private checkCompletion(): void {\r\n if (this._geoToIModel.isIdle && this._iModelToGeo.isIdle)\r\n this.onAllRequestsCompleted.raiseEvent();\r\n }\r\n\r\n /** @internal */\r\n public getCachedIModelCoordinatesFromGeoCoordinates(geoPoints: XYZProps[]): CachedIModelCoordinatesResponseProps {\r\n return this._geoToIModel.findCached(geoPoints);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type GeoServicesOptions = Omit<GeoConverterOptions, \"datum\">;\r\n\r\n/** The Geographic Services available for an [[IModelConnection]].\r\n * @see [[IModelConnection.geoServices]] to obtain the GeoServices for a specific iModel.\r\n * @public\r\n */\r\nexport class GeoServices {\r\n private readonly _options: GeoServicesOptions;\r\n /** Each GeoConverter has its own independent request queue and cache of previously-converted points.\r\n * Some callers like RealityTileTree obtain a single GeoConverter and reuse it throughout their own lifetime. Therefore they benefit from both batching and caching, and\r\n * the cache gets deleted once the RealityTileTree becomes disused.\r\n *\r\n * Other callers like IModelConnection.spatialToCartographic obtain a new GeoConverter every time they need one, use it to convert a single point(!), and then discard the converter.\r\n * This entirely prevents batching - e.g., calling spatialToCartographic 20 times in one frame results in 20 http requests.\r\n * To address that, we cache each GeoConverter returned by getConverter until it has converted at least one point and has no further outstanding conversion requests.\r\n * In this way, the converter lives for as long as (and no longer than) any caller is awaiting conversion to/from its datum - it and its cache are deleted once it becomes disused.\r\n * This makes the coordinate caching generally less useful, but at least bounded - and maximizes batching of requests.\r\n */\r\n private readonly _cache = new Map<string, GeoConverter>();\r\n\r\n /** @internal */\r\n public constructor(options: GeoServicesOptions) {\r\n this._options = options;\r\n }\r\n\r\n /** @internal */\r\n public static createForIModel(iModel: IModelConnection): GeoServices {\r\n return new GeoServices({\r\n isIModelClosed: () => iModel.isClosed,\r\n toIModelCoords: async (request) => {\r\n const rpc = IModelReadRpcInterface.getClientForRouting(iModel.routingContext.token);\r\n const response = await rpc.getIModelCoordinatesFromGeoCoordinates(iModel.getRpcProps(), request);\r\n return response.iModelCoords;\r\n },\r\n fromIModelCoords: async (request) => {\r\n const rpc = IModelReadRpcInterface.getClientForRouting(iModel.routingContext.token);\r\n const response = await rpc.getGeoCoordinatesFromIModelCoordinates(iModel.getRpcProps(), request);\r\n return response.geoCoords;\r\n },\r\n });\r\n }\r\n\r\n /** Obtain a converter that can convert between a geographic coordinate system and the iModel's own coordinate system.\r\n * @param datumOrGCRS The name or JSON representation of the geographic coordinate system datum - for example, \"WGS84\".\r\n * @returns a converter, or `undefined` if the iModel is not open.\r\n * @note A [[BlankConnection]] has no connection to a backend, so it is never \"open\"; therefore it always returns `undefined`.\r\n */\r\n public getConverter(datumOrGCRS?: string | GeographicCRSProps): GeoConverter | undefined {\r\n if (this._options.isIModelClosed())\r\n return undefined;\r\n\r\n const datum = (typeof datumOrGCRS === \"object\" ? JSON.stringify(datumOrGCRS) : datumOrGCRS) ?? \"\";\r\n\r\n let converter = this._cache.get(datum);\r\n if (!converter) {\r\n converter = new GeoConverter({ ...this._options, datum });\r\n this._cache.set(datum, converter);\r\n\r\n converter.onAllRequestsCompleted.addOnce(() => {\r\n if (converter === this._cache.get(datum))\r\n this._cache.delete(datum);\r\n });\r\n }\r\n\r\n return converter;\r\n }\r\n}\r\n"]}
@@ -2,7 +2,7 @@
2
2
  * @module IModelConnection
3
3
  */
4
4
  import { BeEvent, Id64String } from "@itwin/core-bentley";
5
- import { EditingScopeNotifications, ElementGeometryChange, IpcAppChannel, ModelGeometryChanges, ModelGeometryChangesProps } from "@itwin/core-common";
5
+ import { EditingScopeNotifications, ElementGeometryChange, ModelGeometryChanges, ModelGeometryChangesProps } from "@itwin/core-common";
6
6
  import { BriefcaseNotificationHandler } from "./BriefcaseTxns";
7
7
  import { BriefcaseConnection } from "./BriefcaseConnection";
8
8
  /** Represents a period of time within an [interactive editing]($docs/learning/InteractiveEditing.md) session during which the
@@ -32,7 +32,7 @@ import { BriefcaseConnection } from "./BriefcaseConnection";
32
32
  * @public
33
33
  */
34
34
  export declare class GraphicalEditingScope extends BriefcaseNotificationHandler implements EditingScopeNotifications {
35
- get briefcaseChannelName(): IpcAppChannel;
35
+ get briefcaseChannelName(): "itwinjs-core/editing-scope";
36
36
  /** Maps model Id to accumulated changes to geometric elements within the associated model. */
37
37
  private readonly _geometryChanges;
38
38
  private _disposed;
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicalEditingScope.d.ts","sourceRoot":"","sources":["../../src/GraphicalEditingScope.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,OAAO,EAAkE,UAAU,EAAe,MAAM,qBAAqB,CAAC;AAE/I,OAAO,EACL,yBAAyB,EAAE,qBAAqB,EAAE,aAAa,EAAE,oBAAoB,EAAE,yBAAyB,EACjH,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAc5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,qBAAsB,SAAQ,4BAA6B,YAAW,yBAAyB;IAC1G,IAAW,oBAAoB,kBAAyC;IAExE,8FAA8F;IAC9F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IACxE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAElC,iDAAiD;IACjD,SAAgB,MAAM,EAAE,mBAAmB,CAAC;IAE5C;;OAEG;IACH,gBAAuB,OAAO,kBAAuB,qBAAqB,KAAK,IAAI,EAAI;IAEvF;;;OAGG;IACH,SAAgB,SAAS,kBAAuB,qBAAqB,KAAK,IAAI,EAAI;IAElF;;;OAGG;IACH,SAAgB,QAAQ,kBAAuB,qBAAqB,KAAK,IAAI,EAAI;IAEjF,sEAAsE;IACtE,SAAgB,iBAAiB,oBAAyB,SAAS,oBAAoB,CAAC,SAAS,qBAAqB,KAAK,IAAI,EAAI;IAEnI;;OAEG;WACiB,KAAK,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAmBtF;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBlC,yGAAyG;IAClG,0BAA0B,CAAC,OAAO,EAAE,UAAU,GAAG,QAAQ,CAAC,qBAAqB,CAAC,GAAG,SAAS;IAInG,4EAA4E;IACrE,kBAAkB,IAAI,QAAQ,CAAC,oBAAoB,CAAC;IAI3D,gBAAgB;IAChB,IAAW,UAAU,YAEpB;IAED,OAAO,CAAG,sBAAsB;IAWhC,OAAO;IAMP,OAAO,CAAC,OAAO;IAef,gBAAgB;IACT,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,EAAE;CAiChE"}
1
+ {"version":3,"file":"GraphicalEditingScope.d.ts","sourceRoot":"","sources":["../../src/GraphicalEditingScope.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,OAAO,EAAkE,UAAU,EAAe,MAAM,qBAAqB,CAAC;AAE/I,OAAO,EACL,yBAAyB,EAAE,qBAAqB,EAAkB,oBAAoB,EAAE,yBAAyB,EAClH,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAc5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,qBAAsB,SAAQ,4BAA6B,YAAW,yBAAyB;IAC1G,IAAW,oBAAoB,iCAA0C;IAEzE,8FAA8F;IAC9F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IACxE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAElC,iDAAiD;IACjD,SAAgB,MAAM,EAAE,mBAAmB,CAAC;IAE5C;;OAEG;IACH,gBAAuB,OAAO,kBAAuB,qBAAqB,KAAK,IAAI,EAAI;IAEvF;;;OAGG;IACH,SAAgB,SAAS,kBAAuB,qBAAqB,KAAK,IAAI,EAAI;IAElF;;;OAGG;IACH,SAAgB,QAAQ,kBAAuB,qBAAqB,KAAK,IAAI,EAAI;IAEjF,sEAAsE;IACtE,SAAgB,iBAAiB,oBAAyB,SAAS,oBAAoB,CAAC,SAAS,qBAAqB,KAAK,IAAI,EAAI;IAEnI;;OAEG;WACiB,KAAK,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAmBtF;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBlC,yGAAyG;IAClG,0BAA0B,CAAC,OAAO,EAAE,UAAU,GAAG,QAAQ,CAAC,qBAAqB,CAAC,GAAG,SAAS;IAInG,4EAA4E;IACrE,kBAAkB,IAAI,QAAQ,CAAC,oBAAoB,CAAC;IAI3D,gBAAgB;IAChB,IAAW,UAAU,YAEpB;IAED,OAAO,CAAG,sBAAsB;IAWhC,OAAO;IAMP,OAAO,CAAC,OAAO;IAef,gBAAgB;IACT,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,EAAE;CAiChE"}
@@ -6,7 +6,7 @@
6
6
  * @module IModelConnection
7
7
  */
8
8
  import { assert, BeEvent, compareStrings, DbOpcode, DuplicatePolicy, SortedArray } from "@itwin/core-bentley";
9
- import { IpcAppChannel, ModelGeometryChanges, } from "@itwin/core-common";
9
+ import { ipcAppChannels, ModelGeometryChanges, } from "@itwin/core-common";
10
10
  import { BriefcaseNotificationHandler } from "./BriefcaseTxns";
11
11
  import { IpcApp } from "./IpcApp";
12
12
  class ModelChanges extends SortedArray {
@@ -43,7 +43,7 @@ class ModelChanges extends SortedArray {
43
43
  * @public
44
44
  */
45
45
  class GraphicalEditingScope extends BriefcaseNotificationHandler {
46
- get briefcaseChannelName() { return IpcAppChannel.EditingScope; }
46
+ get briefcaseChannelName() { return ipcAppChannels.editingScope; }
47
47
  /** Don't call this directly - use BriefcaseConnection.enterEditingScope.
48
48
  * @internal
49
49
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicalEditingScope.js","sourceRoot":"","sources":["../../src/GraphicalEditingScope.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAmC,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE/I,OAAO,EAC6C,aAAa,EAAE,oBAAoB,GACtF,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,YAAa,SAAQ,WAAkC;IAI3D,YAAmB,YAAwB,EAAE,KAAc;QACzD,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;QAC7E,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAa,qBAAsB,SAAQ,4BAA4B;IACrE,IAAW,oBAAoB,KAAK,OAAO,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IA8BxE;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAA2B;QACnD,IAAI,MAAM,CAAC,YAAY;YACrB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QAEvF,gIAAgI;QAChI,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI;YACF,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/F,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,4CAA4C;SACnE;QAAC,OAAO,CAAC,EAAE;YACV,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,CAAC,CAAC;SACT;QAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,IAAI;QACf,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI;YACrD,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QAExF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI;YACF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACjC;gBAAS;YACR,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACpG,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;YACrB,IAAI;gBACF,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAChC;oBAAS;gBACR,IAAI,CAAC,OAAO,EAAE,CAAC;aAChB;SACF;IACH,CAAC;IAED,yGAAyG;IAClG,0BAA0B,CAAC,OAAmB;QACnD,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,4EAA4E;IACrE,kBAAkB;QACvB,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;IACpE,CAAC;IAED,gBAAgB;IAChB,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEO,CAAE,sBAAsB;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAChD,MAAM;gBACJ,EAAE,EAAE,GAAG;gBACP,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,KAAK;aAChB,CAAC;SACH;IACH,CAAC;IAED,YAAoB,MAA2B;QAC7C,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAnGpB,8FAA8F;QAC7E,qBAAgB,GAAG,IAAI,GAAG,EAA4B,CAAC;QAChE,cAAS,GAAG,KAAK,CAAC;QAW1B;;;WAGG;QACa,cAAS,GAAG,IAAI,OAAO,EAA0C,CAAC;QAElF;;;WAGG;QACa,aAAQ,GAAG,IAAI,OAAO,EAA0C,CAAC;QAEjF,sEAAsE;QACtD,sBAAiB,GAAG,IAAI,OAAO,EAAmF,CAAC;QA0EjI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACtC,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEtB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;SAC3B;IACH,CAAC;IAED,gBAAgB;IACT,qBAAqB,CAAC,KAAkC;QAC7D,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAClC,IAAI,UAA+B,CAAC;QAEpC,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE;YAClC,4CAA4C;YAC5C,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC/B,KAAK,MAAM,aAAa,IAAI,YAAY,CAAC,QAAQ,EAAE;gBACjD,IAAI,CAAC,IAAI,EAAE;oBACT,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;iBACpH;qBAAM;oBACL,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;oBAC9C,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACtC;gBAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC3B,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa,CAAC,IAAI,EAAE;oBAC1C,IAAI,SAAS,KAAK,UAAU;wBAC1B,UAAU,GAAG,IAAI,GAAG,EAAc,CAAC;oBACrC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;iBAClC;aACF;SACF;QAED,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;SAClD;QAED,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;;AAhJD;;GAEG;AACoB,6BAAO,GAAG,IAAI,OAAO,EAA0C,AAAxD,CAAyD;SAd5E,qBAAqB","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelConnection\r\n */\r\n\r\nimport { assert, BeEvent, compareStrings, DbOpcode, DuplicatePolicy, GuidString, Id64Set, Id64String, SortedArray } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n EditingScopeNotifications, ElementGeometryChange, IpcAppChannel, ModelGeometryChanges, ModelGeometryChangesProps, RemoveFunction,\r\n} from \"@itwin/core-common\";\r\nimport { BriefcaseNotificationHandler } from \"./BriefcaseTxns\";\r\nimport { BriefcaseConnection } from \"./BriefcaseConnection\";\r\nimport { IpcApp } from \"./IpcApp\";\r\n\r\nclass ModelChanges extends SortedArray<ElementGeometryChange> {\r\n public geometryGuid: GuidString;\r\n public readonly range: Range3d;\r\n\r\n public constructor(geometryGuid: GuidString, range: Range3d) {\r\n super((lhs, rhs) => compareStrings(lhs.id, rhs.id), DuplicatePolicy.Replace);\r\n this.geometryGuid = geometryGuid;\r\n this.range = range;\r\n }\r\n}\r\n\r\n/** Represents a period of time within an [interactive editing]($docs/learning/InteractiveEditing.md) session during which the\r\n * geometry of elements being displayed in one or more [[Viewport]]s is being modified. Outside of such a scope, whenever the\r\n * geometry within a [GeometricModel]($backend) changes new [[Tile]]s must be generated to reflect those changes in a viewport.\r\n * Regenerating entire tiles each time individual elements change can be time-consuming, which may introduce an unacceptable delay\r\n * between making a modification and seeing its result on the screen.\r\n *\r\n * Within the context of a graphical editing scope, no new tiles are generated. Instead, the geometry for any deleted or modified elements\r\n * is hidden in the tile graphics, and additional temporary graphics are displayed for any newly-inserted or modified elements. Only when the\r\n * scope exits are new tiles produced.\r\n *\r\n * The application decides when to enter and exit a graphical editing scope. A single interactive editing session may involve any number of\r\n * editing scopes. Typically, applications will enter a new editing scope (after first exiting a previous scope, if one exists):\r\n * - When switching from a non-graphical workflow to one that involves editing geometry; or\r\n * - When changing which geometric model is being edited; or\r\n * - After performing an operation that creates or modifies a \"large\" number (perhaps hundreds?) of elements.\r\n *\r\n * An application should typically exit any graphical editing scope before:\r\n * - Pulling changesets; or\r\n * - Switching from a graphical editing workflow to some non-graphical workflow.\r\n *\r\n * Graphical editing scopes are only supported for [[BriefcaseConnection]]s opened in read-write mode that contain version 1.0.11 or newer of the BisCore schema.\r\n * @see [[BriefcaseConnection.enterEditingScope]] to create a scope for a briefcase.\r\n * @see [[BriefcaseConnection.editingScope]] to obtain a briefcase's current scope.\r\n * @see [[exit]] to terminate a scope.\r\n * @public\r\n */\r\nexport class GraphicalEditingScope extends BriefcaseNotificationHandler implements EditingScopeNotifications {\r\n public get briefcaseChannelName() { return IpcAppChannel.EditingScope; }\r\n\r\n /** Maps model Id to accumulated changes to geometric elements within the associated model. */\r\n private readonly _geometryChanges = new Map<Id64String, ModelChanges>();\r\n private _disposed = false;\r\n private _cleanup?: RemoveFunction;\r\n\r\n /** The connection to the iModel being edited. */\r\n public readonly iModel: BriefcaseConnection;\r\n\r\n /** Event raised when a new scope is created for any [[BriefcaseConnection]].\r\n * @see [[onExiting]] and [[onExited]] for complementary events.\r\n */\r\n public static readonly onEnter = new BeEvent<(scope: GraphicalEditingScope) => void>();\r\n\r\n /** Event raised when this scope is about to exit.\r\n * @see [[onEnter]] for the complementary event.\r\n * @see [[onExited]] for an event raised after the scope exits.\r\n */\r\n public readonly onExiting = new BeEvent<(scope: GraphicalEditingScope) => void>();\r\n\r\n /** Event raised when this scope has exited.\r\n * @see [[onEnter]] for the complementary event.\r\n * @see [[onExiting]] for an event raised just before the scope is exited.\r\n */\r\n public readonly onExited = new BeEvent<(scope: GraphicalEditingScope) => void>();\r\n\r\n /** Event raised after geometric changes are written to the iModel. */\r\n public readonly onGeometryChanges = new BeEvent<(changes: Iterable<ModelGeometryChanges>, scope: GraphicalEditingScope) => void>();\r\n\r\n /** Don't call this directly - use BriefcaseConnection.enterEditingScope.\r\n * @internal\r\n */\r\n public static async enter(imodel: BriefcaseConnection): Promise<GraphicalEditingScope> {\r\n if (imodel.editingScope)\r\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\r\n\r\n // Register the scope synchronously, in case enter() is called again for same iModel while awaiting asynchronous initialization.\r\n const scope = new GraphicalEditingScope(imodel);\r\n try {\r\n const scopeStarted = await IpcApp.appFunctionIpc.toggleGraphicalEditingScope(imodel.key, true);\r\n assert(scopeStarted); // If it didn't, the backend threw an error.\r\n } catch (e) {\r\n scope.dispose();\r\n throw e;\r\n }\r\n\r\n this.onEnter.raiseEvent(scope);\r\n\r\n return scope;\r\n }\r\n\r\n /** Exits this editing scope. The associated [[BriefcaseConnection]]'s `editingScope` will be reset to `undefined`.\r\n * @throws Error if the scope could not be exited, e.g., if it has already been exited.\r\n * @see [[BriefcaseConnection.enterEditingScope]] to enter an editing scope.\r\n */\r\n public async exit(): Promise<void> {\r\n if (this._disposed || this.iModel.editingScope !== this)\r\n throw new Error(\"Cannot exit editing scope after it is disconnected from the iModel\");\r\n\r\n this._disposed = true;\r\n try {\r\n this.onExiting.raiseEvent(this);\r\n } finally {\r\n const scopeExited = await IpcApp.appFunctionIpc.toggleGraphicalEditingScope(this.iModel.key, false);\r\n assert(!scopeExited);\r\n try {\r\n this.onExited.raiseEvent(this);\r\n } finally {\r\n this.dispose();\r\n }\r\n }\r\n }\r\n\r\n /** Obtain all geometric changes to elements within the specified model accumulated within this scope. */\r\n public getGeometryChangesForModel(modelId: Id64String): Iterable<ElementGeometryChange> | undefined {\r\n return this._geometryChanges.get(modelId);\r\n }\r\n\r\n /** Obtain all geometric changes to models accumulated within this scope. */\r\n public getGeometryChanges(): Iterable<ModelGeometryChanges> {\r\n return { [Symbol.iterator]: () => this.geometryChangeIterator() };\r\n }\r\n\r\n /** @internal */\r\n public get isDisposed() {\r\n return this._disposed;\r\n }\r\n\r\n private * geometryChangeIterator(): Iterator<ModelGeometryChanges> {\r\n for (const [key, value] of this._geometryChanges) {\r\n yield {\r\n id: key,\r\n geometryGuid: value.geometryGuid,\r\n range: value.range,\r\n elements: value,\r\n };\r\n }\r\n }\r\n\r\n private constructor(iModel: BriefcaseConnection) {\r\n super(iModel.key);\r\n this.iModel = iModel;\r\n this._cleanup = this.registerImpl();\r\n }\r\n\r\n private dispose(): void {\r\n this._disposed = true;\r\n\r\n this.onExiting.clear();\r\n this.onGeometryChanges.clear();\r\n this.onExited.clear();\r\n\r\n this._geometryChanges.clear();\r\n\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public notifyGeometryChanged(props: ModelGeometryChangesProps[]) {\r\n const changes = ModelGeometryChanges.iterable(props);\r\n const modelIds: Id64String[] = [];\r\n let deletedIds: Id64Set | undefined;\r\n\r\n for (const modelChanges of changes) {\r\n // ###TODO do we care about the model range?\r\n let list = this._geometryChanges.get(modelChanges.id);\r\n modelIds.push(modelChanges.id);\r\n for (const elementChange of modelChanges.elements) {\r\n if (!list) {\r\n this._geometryChanges.set(modelChanges.id, list = new ModelChanges(modelChanges.geometryGuid, modelChanges.range));\r\n } else {\r\n list.geometryGuid = modelChanges.geometryGuid;\r\n modelChanges.range.clone(list.range);\r\n }\r\n\r\n list.insert(elementChange);\r\n if (DbOpcode.Delete === elementChange.type) {\r\n if (undefined === deletedIds)\r\n deletedIds = new Set<Id64String>();\r\n deletedIds.add(elementChange.id);\r\n }\r\n }\r\n }\r\n\r\n if (deletedIds) {\r\n this.iModel.selectionSet.remove(deletedIds);\r\n this.iModel.hilited.setHilite(deletedIds, false);\r\n }\r\n\r\n this.onGeometryChanges.raiseEvent(changes, this);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"GraphicalEditingScope.js","sourceRoot":"","sources":["../../src/GraphicalEditingScope.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelConnection\r\n */\r\n\r\nimport { assert, BeEvent, compareStrings, DbOpcode, DuplicatePolicy, GuidString, Id64Set, Id64String, SortedArray } from \"@itwin/core-bentley\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n EditingScopeNotifications, ElementGeometryChange, ipcAppChannels, ModelGeometryChanges, ModelGeometryChangesProps, RemoveFunction,\r\n} from \"@itwin/core-common\";\r\nimport { BriefcaseNotificationHandler } from \"./BriefcaseTxns\";\r\nimport { BriefcaseConnection } from \"./BriefcaseConnection\";\r\nimport { IpcApp } from \"./IpcApp\";\r\n\r\nclass ModelChanges extends SortedArray<ElementGeometryChange> {\r\n public geometryGuid: GuidString;\r\n public readonly range: Range3d;\r\n\r\n public constructor(geometryGuid: GuidString, range: Range3d) {\r\n super((lhs, rhs) => compareStrings(lhs.id, rhs.id), DuplicatePolicy.Replace);\r\n this.geometryGuid = geometryGuid;\r\n this.range = range;\r\n }\r\n}\r\n\r\n/** Represents a period of time within an [interactive editing]($docs/learning/InteractiveEditing.md) session during which the\r\n * geometry of elements being displayed in one or more [[Viewport]]s is being modified. Outside of such a scope, whenever the\r\n * geometry within a [GeometricModel]($backend) changes new [[Tile]]s must be generated to reflect those changes in a viewport.\r\n * Regenerating entire tiles each time individual elements change can be time-consuming, which may introduce an unacceptable delay\r\n * between making a modification and seeing its result on the screen.\r\n *\r\n * Within the context of a graphical editing scope, no new tiles are generated. Instead, the geometry for any deleted or modified elements\r\n * is hidden in the tile graphics, and additional temporary graphics are displayed for any newly-inserted or modified elements. Only when the\r\n * scope exits are new tiles produced.\r\n *\r\n * The application decides when to enter and exit a graphical editing scope. A single interactive editing session may involve any number of\r\n * editing scopes. Typically, applications will enter a new editing scope (after first exiting a previous scope, if one exists):\r\n * - When switching from a non-graphical workflow to one that involves editing geometry; or\r\n * - When changing which geometric model is being edited; or\r\n * - After performing an operation that creates or modifies a \"large\" number (perhaps hundreds?) of elements.\r\n *\r\n * An application should typically exit any graphical editing scope before:\r\n * - Pulling changesets; or\r\n * - Switching from a graphical editing workflow to some non-graphical workflow.\r\n *\r\n * Graphical editing scopes are only supported for [[BriefcaseConnection]]s opened in read-write mode that contain version 1.0.11 or newer of the BisCore schema.\r\n * @see [[BriefcaseConnection.enterEditingScope]] to create a scope for a briefcase.\r\n * @see [[BriefcaseConnection.editingScope]] to obtain a briefcase's current scope.\r\n * @see [[exit]] to terminate a scope.\r\n * @public\r\n */\r\nexport class GraphicalEditingScope extends BriefcaseNotificationHandler implements EditingScopeNotifications {\r\n public get briefcaseChannelName() { return ipcAppChannels.editingScope; }\r\n\r\n /** Maps model Id to accumulated changes to geometric elements within the associated model. */\r\n private readonly _geometryChanges = new Map<Id64String, ModelChanges>();\r\n private _disposed = false;\r\n private _cleanup?: RemoveFunction;\r\n\r\n /** The connection to the iModel being edited. */\r\n public readonly iModel: BriefcaseConnection;\r\n\r\n /** Event raised when a new scope is created for any [[BriefcaseConnection]].\r\n * @see [[onExiting]] and [[onExited]] for complementary events.\r\n */\r\n public static readonly onEnter = new BeEvent<(scope: GraphicalEditingScope) => void>();\r\n\r\n /** Event raised when this scope is about to exit.\r\n * @see [[onEnter]] for the complementary event.\r\n * @see [[onExited]] for an event raised after the scope exits.\r\n */\r\n public readonly onExiting = new BeEvent<(scope: GraphicalEditingScope) => void>();\r\n\r\n /** Event raised when this scope has exited.\r\n * @see [[onEnter]] for the complementary event.\r\n * @see [[onExiting]] for an event raised just before the scope is exited.\r\n */\r\n public readonly onExited = new BeEvent<(scope: GraphicalEditingScope) => void>();\r\n\r\n /** Event raised after geometric changes are written to the iModel. */\r\n public readonly onGeometryChanges = new BeEvent<(changes: Iterable<ModelGeometryChanges>, scope: GraphicalEditingScope) => void>();\r\n\r\n /** Don't call this directly - use BriefcaseConnection.enterEditingScope.\r\n * @internal\r\n */\r\n public static async enter(imodel: BriefcaseConnection): Promise<GraphicalEditingScope> {\r\n if (imodel.editingScope)\r\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\r\n\r\n // Register the scope synchronously, in case enter() is called again for same iModel while awaiting asynchronous initialization.\r\n const scope = new GraphicalEditingScope(imodel);\r\n try {\r\n const scopeStarted = await IpcApp.appFunctionIpc.toggleGraphicalEditingScope(imodel.key, true);\r\n assert(scopeStarted); // If it didn't, the backend threw an error.\r\n } catch (e) {\r\n scope.dispose();\r\n throw e;\r\n }\r\n\r\n this.onEnter.raiseEvent(scope);\r\n\r\n return scope;\r\n }\r\n\r\n /** Exits this editing scope. The associated [[BriefcaseConnection]]'s `editingScope` will be reset to `undefined`.\r\n * @throws Error if the scope could not be exited, e.g., if it has already been exited.\r\n * @see [[BriefcaseConnection.enterEditingScope]] to enter an editing scope.\r\n */\r\n public async exit(): Promise<void> {\r\n if (this._disposed || this.iModel.editingScope !== this)\r\n throw new Error(\"Cannot exit editing scope after it is disconnected from the iModel\");\r\n\r\n this._disposed = true;\r\n try {\r\n this.onExiting.raiseEvent(this);\r\n } finally {\r\n const scopeExited = await IpcApp.appFunctionIpc.toggleGraphicalEditingScope(this.iModel.key, false);\r\n assert(!scopeExited);\r\n try {\r\n this.onExited.raiseEvent(this);\r\n } finally {\r\n this.dispose();\r\n }\r\n }\r\n }\r\n\r\n /** Obtain all geometric changes to elements within the specified model accumulated within this scope. */\r\n public getGeometryChangesForModel(modelId: Id64String): Iterable<ElementGeometryChange> | undefined {\r\n return this._geometryChanges.get(modelId);\r\n }\r\n\r\n /** Obtain all geometric changes to models accumulated within this scope. */\r\n public getGeometryChanges(): Iterable<ModelGeometryChanges> {\r\n return { [Symbol.iterator]: () => this.geometryChangeIterator() };\r\n }\r\n\r\n /** @internal */\r\n public get isDisposed() {\r\n return this._disposed;\r\n }\r\n\r\n private * geometryChangeIterator(): Iterator<ModelGeometryChanges> {\r\n for (const [key, value] of this._geometryChanges) {\r\n yield {\r\n id: key,\r\n geometryGuid: value.geometryGuid,\r\n range: value.range,\r\n elements: value,\r\n };\r\n }\r\n }\r\n\r\n private constructor(iModel: BriefcaseConnection) {\r\n super(iModel.key);\r\n this.iModel = iModel;\r\n this._cleanup = this.registerImpl();\r\n }\r\n\r\n private dispose(): void {\r\n this._disposed = true;\r\n\r\n this.onExiting.clear();\r\n this.onGeometryChanges.clear();\r\n this.onExited.clear();\r\n\r\n this._geometryChanges.clear();\r\n\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public notifyGeometryChanged(props: ModelGeometryChangesProps[]) {\r\n const changes = ModelGeometryChanges.iterable(props);\r\n const modelIds: Id64String[] = [];\r\n let deletedIds: Id64Set | undefined;\r\n\r\n for (const modelChanges of changes) {\r\n // ###TODO do we care about the model range?\r\n let list = this._geometryChanges.get(modelChanges.id);\r\n modelIds.push(modelChanges.id);\r\n for (const elementChange of modelChanges.elements) {\r\n if (!list) {\r\n this._geometryChanges.set(modelChanges.id, list = new ModelChanges(modelChanges.geometryGuid, modelChanges.range));\r\n } else {\r\n list.geometryGuid = modelChanges.geometryGuid;\r\n modelChanges.range.clone(list.range);\r\n }\r\n\r\n list.insert(elementChange);\r\n if (DbOpcode.Delete === elementChange.type) {\r\n if (undefined === deletedIds)\r\n deletedIds = new Set<Id64String>();\r\n deletedIds.add(elementChange.id);\r\n }\r\n }\r\n }\r\n\r\n if (deletedIds) {\r\n this.iModel.selectionSet.remove(deletedIds);\r\n this.iModel.hilited.setHilite(deletedIds, false);\r\n }\r\n\r\n this.onGeometryChanges.raiseEvent(changes, this);\r\n }\r\n}\r\n"]}
@@ -1,9 +1,13 @@
1
+ /** @packageDocumentation
2
+ * @module LocatingElements
3
+ */
4
+ import { Id64String } from "@itwin/core-bentley";
1
5
  import { CurvePrimitive, Point3d, Transform, Vector3d, XYZProps } from "@itwin/core-geometry";
2
6
  import { GeometryClass } from "@itwin/core-common";
3
7
  import { IModelConnection } from "./IModelConnection";
4
8
  import { Sprite } from "./Sprites";
5
9
  import { DecorateContext } from "./ViewContext";
6
- import { ScreenViewport } from "./Viewport";
10
+ import { ScreenViewport, Viewport } from "./Viewport";
7
11
  /**
8
12
  * @public
9
13
  * @extensions
@@ -88,45 +92,112 @@ export declare enum HitDetailType {
88
92
  Snap = 2,
89
93
  Intersection = 3
90
94
  }
91
- /** A HitDetail stores the result when locating geometry displayed in a view.
92
- * It holds an approximate location on an element (or decoration) from a *pick*.
95
+ /** Describes the [ViewAttachment]($backend), if any, from which the hit represented by a [[HitDetail]] originated.
96
+ * @note Only [[SheetViewState]]s contain view attachments.
97
+ * @beta
98
+ */
99
+ export interface ViewAttachmentHitInfo {
100
+ /** The element Id of the [ViewAttachment]($backend) from which the hit originated. */
101
+ readonly id: Id64String;
102
+ /** The viewport that renders the contents of the attached view into the [[ScreenViewport]].
103
+ * @alpha
104
+ */
105
+ readonly viewport: Viewport;
106
+ }
107
+ /** Arguments supplied to the [[HitDetail]] constructor.
93
108
  * @public
94
- * @extensions
95
109
  */
96
- export declare class HitDetail {
110
+ export interface HitDetailProps {
111
+ /** The point in world coordinates that was used as the initial locate point. */
97
112
  readonly testPoint: Point3d;
113
+ /** The viewport in which the locate operation was performed. */
98
114
  readonly viewport: ScreenViewport;
115
+ /** The procedure that requested the locate operation. */
99
116
  readonly hitSource: HitSource;
117
+ /** The approximate location in world coordinates on the geometry identified by this HitDetail. */
100
118
  readonly hitPoint: Point3d;
101
- readonly sourceId: string;
119
+ /** The source of the geometry. This may be a persistent element Id, or a transient Id used for, e.g., pickable decorations. */
120
+ readonly sourceId: Id64String;
121
+ /** The hit geometry priority/classification. */
102
122
  readonly priority: HitPriority;
123
+ /** The xy distance to the hit in view coordinates. */
103
124
  readonly distXY: number;
125
+ /** The distance in view coordinates between the hit and the near plane. */
104
126
  readonly distFraction: number;
105
- readonly subCategoryId?: string | undefined;
106
- readonly geometryClass?: GeometryClass | undefined;
107
- readonly modelId?: string | undefined;
108
- private readonly _iModel?;
109
- /** @internal chiefly for debugging. */
127
+ /** The [SubCategory]($backend) to which the hit geometry belongs. */
128
+ readonly subCategoryId?: Id64String;
129
+ /** The class of the hit geometry. */
130
+ readonly geometryClass?: GeometryClass;
131
+ /** The Id of the [[ModelState]] from which the hit originated. */
132
+ readonly modelId?: string;
133
+ /** The IModelConnection from which the hit originated.
134
+ * This should almost always be left undefined, unless the hit is known to have originated from an iModel
135
+ * other than the one associated with the viewport.
136
+ * @internal
137
+ */
138
+ readonly sourceIModel?: IModelConnection;
139
+ /** @internal chiefly for debugging */
110
140
  readonly tileId?: string;
111
- /** @alpha */
112
- readonly isClassifier: boolean;
113
- /** Create a new HitDetail from the inputs to and results of a locate operation.
114
- * @param testPoint The world coordinate space point that was used as the locate point.
115
- * @param viewport The view the locate operation was performed in.
116
- * @param hitSource The procedure that requested the locate operation.
117
- * @param hitPoint The approximate world coordinate location on the geometry identified by this HitDetail.
118
- * @param sourceId The source of the geometry, either a persistent element id or pickable decoration id.
119
- * @param priority The hit geometry priority/classification.
120
- * @param distXY The xy distance to hit in view coordinates.
121
- * @param distFraction The near plane distance fraction to hit.
122
- * @param subCategoryId The SubCategory for a persistent element hit.
123
- * @param geometryClass The GeometryClass for a persistent element hit.
124
- * @param iModel The IModelConnection from which the hit originated. This should almost always be left undefined, unless the hit is known to have originated from an iModel other than the one associated with the viewport.
125
- * @param modelId Optionally the Id of the [[ModelState]] from which the hit originated.
126
- * @param tileId Optionally the Id of the Tile from which the hit originated.
127
- * @param isClassifier Optionally whether the hit originated from a reality model classification.
141
+ /** True if the hit originated from a reality model classifier.
142
+ * @alpha
143
+ */
144
+ readonly isClassifier?: boolean;
145
+ /** Information about the [ViewAttachment]($backend) within which the hit geometry resides, if any.
146
+ * @note Only [[SheetViewState]]s can have view attachments.
147
+ * @beta
148
+ */
149
+ readonly viewAttachment?: ViewAttachmentHitInfo;
150
+ }
151
+ /** A HitDetail stores the result when locating geometry displayed in a view.
152
+ * It holds an approximate location on an element (or decoration) from a *pick*.
153
+ * @public
154
+ * @extensions
155
+ */
156
+ export declare class HitDetail {
157
+ private readonly _props;
158
+ /** The point in world coordinates that was used as the initial locate point. */
159
+ get testPoint(): Point3d;
160
+ /** The viewport in which the locate operation was performed. */
161
+ get viewport(): ScreenViewport;
162
+ /** The procedure that requested the locate operation. */
163
+ get hitSource(): HitSource;
164
+ /** The approximate location in world coordinates on the geometry identified by this HitDetail. */
165
+ get hitPoint(): Point3d;
166
+ /** The source of the geometry. This may be a persistent element Id, or a transient Id used for, e.g., pickable decorations. */
167
+ get sourceId(): Id64String;
168
+ /** The hit geometry priority/classification. */
169
+ get priority(): HitPriority;
170
+ /** The xy distance to the hit in view coordinates. */
171
+ get distXY(): number;
172
+ /** The distance in view coordinates between the hit and the near plane. */
173
+ get distFraction(): number;
174
+ /** The [SubCategory]($backend) to which the hit geometry belongs. */
175
+ get subCategoryId(): Id64String | undefined;
176
+ /** The class of the hit geometry. */
177
+ get geometryClass(): GeometryClass | undefined;
178
+ /** The Id of the [[ModelState]] from which the hit originated. */
179
+ get modelId(): string | undefined;
180
+ /** The IModelConnection from which the hit originated.
181
+ * This should almost always be left undefined, unless the hit is known to have originated from an iModel
182
+ * other than the one associated with the viewport.
183
+ * @internal
184
+ */
185
+ get sourceIModel(): IModelConnection | undefined;
186
+ /** @internal chiefly for debugging */
187
+ get tileId(): string | undefined;
188
+ /** True if the hit originated from a reality model classifier.
189
+ * @alpha
190
+ */
191
+ get isClassifier(): boolean | undefined;
192
+ /** Information about the [ViewAttachment]($backend) within which the hit geometry resides, if any.
193
+ * @note Only [[SheetViewState]]s can have view attachments.
194
+ * @beta
128
195
  */
129
- constructor(testPoint: Point3d, viewport: ScreenViewport, hitSource: HitSource, hitPoint: Point3d, sourceId: string, priority: HitPriority, distXY: number, distFraction: number, subCategoryId?: string | undefined, geometryClass?: GeometryClass | undefined, modelId?: string | undefined, iModel?: IModelConnection, tileId?: string, isClassifier?: boolean);
196
+ get viewAttachment(): ViewAttachmentHitInfo | undefined;
197
+ /** Create a new HitDetail from the inputs to and results of a locate operation. */
198
+ constructor(props: HitDetailProps);
199
+ /** @deprecated in 4.1. Use the overload that takes a [[HitDetailProps]]. */
200
+ constructor(testPoint: Point3d, viewport: ScreenViewport, hitSource: HitSource, hitPoint: Point3d, sourceId: string, priority: HitPriority, distXY: number, distFraction: number, subCategoryId?: string, geometryClass?: GeometryClass, modelId?: string, sourceIModel?: IModelConnection, tileId?: string, isClassifier?: boolean);
130
201
  /** Get the type of HitDetail.
131
202
  * @returns HitDetailType.Hit if this is a HitDetail, HitDetailType.Snap if it is a SnapDetail
132
203
  */
@@ -1 +1 @@
1
- {"version":3,"file":"HitDetail.d.ts","sourceRoot":"","sources":["../../src/HitDetail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HitDetail.d.ts","sourceRoot":"","sources":["../../src/HitDetail.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAS,cAAc,EAAqC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxI,OAAO,EAAE,aAAa,EAAc,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAe,MAAM,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtD;;;GAGG;AACH,oBAAY,QAAQ;IAClB,OAAO,IAAI;IACX,eAAe,IAAS;IACxB,QAAQ,IAAS;IACjB,MAAM,IAAS;IACf,MAAM,KAAS;IACf,QAAQ,KAAS;IACjB,YAAY,KAAS;CACtB;AAED;;;GAGG;AACH,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,UAAU,IAAI;IACd,OAAO,IAAI;CACZ;AAED;;;GAGG;AACH,oBAAY,SAAS;IACnB,IAAI,IAAI;IACR,QAAQ,IAAI;IACZ,YAAY,IAAI;IAChB,QAAQ,IAAI;IACZ,aAAa,IAAI;IACjB,SAAS,IAAI;IACb,WAAW,IAAI;IACf,UAAU,IAAI;IACd,YAAY,IAAI;CACjB;AAED;;;;GAIG;AACH,oBAAY,WAAW;IACrB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,OAAO,IAAI;IACX,KAAK,IAAI;IACT,GAAG,IAAI;IACP,OAAO,IAAI;CACZ;AAED;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;CACT;AAED;;;GAGG;AACH,oBAAY,WAAW;IACrB,QAAQ,IAAI;IACZ,UAAU,IAAI;IACd,aAAa,IAAI;IACjB,cAAc,IAAI;IAClB,aAAa,IAAI;IACjB,gBAAgB,IAAI;IACpB,OAAO,IAAI;CACZ;AAED;;;GAGG;AACH,oBAAY,aAAa;IACvB,GAAG,IAAI;IACP,IAAI,IAAI;IACR,YAAY,IAAI;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,kGAAkG;IAClG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,+HAA+H;IAC/H,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;IACpC,qCAAqC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IACzC,sCAAsC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACjD;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,gFAAgF;IAChF,IAAW,SAAS,IAAI,OAAO,CAAkC;IACjE,gEAAgE;IAChE,IAAW,QAAQ,IAAI,cAAc,CAAiC;IACtE,yDAAyD;IACzD,IAAW,SAAS,IAAI,SAAS,CAAkC;IACnE,kGAAkG;IAClG,IAAW,QAAQ,IAAI,OAAO,CAAiC;IAC/D,+HAA+H;IAC/H,IAAW,QAAQ,IAAI,UAAU,CAAiC;IAClE,gDAAgD;IAChD,IAAW,QAAQ,IAAI,WAAW,CAAiC;IACnE,sDAAsD;IACtD,IAAW,MAAM,IAAI,MAAM,CAA+B;IAC1D,2EAA2E;IAC3E,IAAW,YAAY,IAAI,MAAM,CAAqC;IACtE,qEAAqE;IACrE,IAAW,aAAa,IAAI,UAAU,GAAG,SAAS,CAAsC;IACxF,qCAAqC;IACrC,IAAW,aAAa,IAAI,aAAa,GAAG,SAAS,CAAsC;IAC3F,kEAAkE;IAClE,IAAW,OAAO,IAAI,MAAM,GAAG,SAAS,CAAgC;IACxE;;;;OAIG;IACH,IAAW,YAAY,IAAI,gBAAgB,GAAG,SAAS,CAAqC;IAC5F,sCAAsC;IACtC,IAAW,MAAM,IAAI,MAAM,GAAG,SAAS,CAA+B;IACtE;;OAEG;IACH,IAAW,YAAY,IAAI,OAAO,GAAG,SAAS,CAAqC;IACnF;;;OAGG;IACH,IAAW,cAAc,IAAI,qBAAqB,GAAG,SAAS,CAAuC;IAErG,mFAAmF;gBAChE,KAAK,EAAE,cAAc;IAExC,4EAA4E;gBACzD,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO;IA8C1U;;OAEG;IACI,UAAU,IAAI,aAAa;IAElC;;OAEG;IACI,QAAQ,IAAI,OAAO;IAE1B,+EAA+E;IACxE,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO;IAC/C,yFAAyF;IACzF,IAAW,YAAY,IAAI,OAAO,CAA+E;IAEjH,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAW,QAAQ,IAAI,OAAO,CAA6D;IAE3F,2CAA2C;IACpC,KAAK,IAAI,SAAS;IAIzB,gFAAgF;IACzE,IAAI,CAAC,QAAQ,EAAE,eAAe;IAIrC,kDAAkD;IACrC,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;IAOxD;;;OAGG;IACH,IAAW,MAAM,IAAI,gBAAgB,CAEpC;IAED;;OAEG;IACH,IAAW,mBAAmB,IAAI,OAAO,CAExC;CACF;AAED;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,SAAS;IAsBI,QAAQ,EAAE,QAAQ;IAA4B,IAAI,EAAE,QAAQ;IArBvG,2DAA2D;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,6DAA6D;IAC7D,SAAgB,aAAa,EAAE,OAAO,CAAC;IACvC,gCAAgC;IACzB,SAAS,CAAC,EAAE,cAAc,CAAC;IAClC,kCAAkC;IAC3B,MAAM,CAAC,EAAE,QAAQ,CAAC;IACzB,yCAAyC;IAClC,QAAQ,CAAC,EAAE,WAAW,CAAC;IAC9B,yCAAyC;IAClC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IAE1C;;;;;OAKG;gBACgB,IAAI,EAAE,SAAS,EAAS,QAAQ,GAAE,QAA2B,EAAS,IAAI,GAAE,QAAwB,EAAE,SAAS,CAAC,EAAE,QAAQ;IAO7I,mCAAmC;IACnB,UAAU,IAAI,aAAa;IAC3C,gFAAgF;IAChE,QAAQ,IAAI,OAAO;IACnC,qGAAqG;IACrG,IAAW,KAAK,IAAI,OAAO,CAAwC;IACnE,gLAAgL;IAChL,IAAW,eAAe,IAAI,OAAO,CAA6D;IAClG,6BAA6B;IACtB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ;IAMlD,mEAAmE;IAC5D,iBAAiB,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IA8B5G,sCAAsC;IACtB,KAAK,IAAI,UAAU;IAa5B,iBAAiB,CAAC,aAAa,GAAE,OAAc,GAAG,cAAc,GAAG,SAAS;IAoBnE,IAAI,CAAC,OAAO,EAAE,eAAe;IAgC7C,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAYhC;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,UAAU;aAC6D,cAAc,EAAE,cAAc;aAAkB,OAAO,EAAE,MAAM;gBAAtJ,IAAI,EAAE,UAAU,EAAE,IAAI,sBAA0B,EAAE,SAAS,EAAE,QAAQ,EAAkB,cAAc,EAAE,cAAc,EAAkB,OAAO,EAAE,MAAM;IAMzJ,IAAI,CAAC,OAAO,EAAE,eAAe;CAsB9C;AAED;;;;GAIG;AACH,qBAAa,OAAO,CAAC,CAAC,SAAS,SAAS;IAC/B,IAAI,EAAE,CAAC,EAAE,CAAM;IACf,OAAO,SAAM;IACpB,IAAW,MAAM,IAAI,MAAM,CAA6B;IACjD,KAAK,IAAI,IAAI;IAKb,eAAe,IAAI,IAAI;IAE9B;;OAEG;IACI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAO5C,uFAAuF;IAChF,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI;IAMzC,SAAS,IAAI,IAAI;IAOjB,UAAU,IAAI,CAAC,GAAG,SAAS;IAK3B,aAAa,IAAI,CAAC,GAAG,SAAS;IAE9B,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAQlC,4CAA4C;IACrC,gBAAgB;IAEvB,gCAAgC;IACzB,SAAS,CAAC,MAAM,EAAE,MAAM;IAa/B,mFAAmF;IAC5E,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAchD,OAAO,CAAC,oBAAoB;IAgB5B,gDAAgD;IACzC,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAkCpF,2FAA2F;IACpF,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM;IAiBhC,4DAA4D;IACrD,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;CAM1C"}
@@ -5,7 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module LocatingElements
7
7
  */
8
- import { Id64 } from "@itwin/core-bentley";
8
+ import { assert, Id64 } from "@itwin/core-bentley";
9
9
  import { Arc3d, LineSegment3d, LineString3d, Path, Point3d } from "@itwin/core-geometry";
10
10
  import { LinePixels } from "@itwin/core-common";
11
11
  import { IModelApp } from "./IModelApp";
@@ -108,37 +108,87 @@ export var HitDetailType;
108
108
  * @extensions
109
109
  */
110
110
  export class HitDetail {
111
- /** Create a new HitDetail from the inputs to and results of a locate operation.
112
- * @param testPoint The world coordinate space point that was used as the locate point.
113
- * @param viewport The view the locate operation was performed in.
114
- * @param hitSource The procedure that requested the locate operation.
115
- * @param hitPoint The approximate world coordinate location on the geometry identified by this HitDetail.
116
- * @param sourceId The source of the geometry, either a persistent element id or pickable decoration id.
117
- * @param priority The hit geometry priority/classification.
118
- * @param distXY The xy distance to hit in view coordinates.
119
- * @param distFraction The near plane distance fraction to hit.
120
- * @param subCategoryId The SubCategory for a persistent element hit.
121
- * @param geometryClass The GeometryClass for a persistent element hit.
122
- * @param iModel The IModelConnection from which the hit originated. This should almost always be left undefined, unless the hit is known to have originated from an iModel other than the one associated with the viewport.
123
- * @param modelId Optionally the Id of the [[ModelState]] from which the hit originated.
124
- * @param tileId Optionally the Id of the Tile from which the hit originated.
125
- * @param isClassifier Optionally whether the hit originated from a reality model classification.
111
+ /** The point in world coordinates that was used as the initial locate point. */
112
+ get testPoint() { return this._props.testPoint; }
113
+ /** The viewport in which the locate operation was performed. */
114
+ get viewport() { return this._props.viewport; }
115
+ /** The procedure that requested the locate operation. */
116
+ get hitSource() { return this._props.hitSource; }
117
+ /** The approximate location in world coordinates on the geometry identified by this HitDetail. */
118
+ get hitPoint() { return this._props.hitPoint; }
119
+ /** The source of the geometry. This may be a persistent element Id, or a transient Id used for, e.g., pickable decorations. */
120
+ get sourceId() { return this._props.sourceId; }
121
+ /** The hit geometry priority/classification. */
122
+ get priority() { return this._props.priority; }
123
+ /** The xy distance to the hit in view coordinates. */
124
+ get distXY() { return this._props.distXY; }
125
+ /** The distance in view coordinates between the hit and the near plane. */
126
+ get distFraction() { return this._props.distFraction; }
127
+ /** The [SubCategory]($backend) to which the hit geometry belongs. */
128
+ get subCategoryId() { return this._props.subCategoryId; }
129
+ /** The class of the hit geometry. */
130
+ get geometryClass() { return this._props.geometryClass; }
131
+ /** The Id of the [[ModelState]] from which the hit originated. */
132
+ get modelId() { return this._props.modelId; }
133
+ /** The IModelConnection from which the hit originated.
134
+ * This should almost always be left undefined, unless the hit is known to have originated from an iModel
135
+ * other than the one associated with the viewport.
136
+ * @internal
126
137
  */
127
- constructor(testPoint, viewport, hitSource, hitPoint, sourceId, priority, distXY, distFraction, subCategoryId, geometryClass, modelId, iModel, tileId, isClassifier) {
128
- this.testPoint = testPoint;
129
- this.viewport = viewport;
130
- this.hitSource = hitSource;
131
- this.hitPoint = hitPoint;
132
- this.sourceId = sourceId;
133
- this.priority = priority;
134
- this.distXY = distXY;
135
- this.distFraction = distFraction;
136
- this.subCategoryId = subCategoryId;
137
- this.geometryClass = geometryClass;
138
- this.modelId = modelId;
139
- this._iModel = iModel;
140
- this.tileId = tileId;
141
- this.isClassifier = undefined !== isClassifier ? isClassifier : false;
138
+ get sourceIModel() { return this._props.sourceIModel; }
139
+ /** @internal chiefly for debugging */
140
+ get tileId() { return this._props.tileId; }
141
+ /** True if the hit originated from a reality model classifier.
142
+ * @alpha
143
+ */
144
+ get isClassifier() { return this._props.isClassifier; }
145
+ /** Information about the [ViewAttachment]($backend) within which the hit geometry resides, if any.
146
+ * @note Only [[SheetViewState]]s can have view attachments.
147
+ * @beta
148
+ */
149
+ get viewAttachment() { return this._props.viewAttachment; }
150
+ /** @internal */
151
+ constructor(arg0, viewport, hitSource, hitPoint, sourceId, priority, distXY, distFraction, subCategoryId, geometryClass, modelId, sourceIModel, tileId, isClassifier) {
152
+ if (arg0 instanceof Point3d) {
153
+ assert(undefined !== viewport && undefined !== hitSource && undefined !== hitPoint && undefined !== sourceId);
154
+ assert(undefined !== priority && undefined !== distXY && undefined !== distFraction);
155
+ this._props = {
156
+ testPoint: arg0,
157
+ viewport,
158
+ hitSource,
159
+ hitPoint,
160
+ sourceId,
161
+ priority,
162
+ distXY,
163
+ distFraction,
164
+ subCategoryId,
165
+ geometryClass,
166
+ modelId,
167
+ sourceIModel,
168
+ tileId,
169
+ isClassifier,
170
+ };
171
+ }
172
+ else {
173
+ // Tempting to use { ...arg0 } but spread operator omits getters so, e.g., if input is a HitDetail we would lose all the properties.
174
+ this._props = {
175
+ testPoint: arg0.testPoint,
176
+ viewport: arg0.viewport,
177
+ hitSource: arg0.hitSource,
178
+ hitPoint: arg0.hitPoint,
179
+ sourceId: arg0.sourceId,
180
+ priority: arg0.priority,
181
+ distXY: arg0.distXY,
182
+ distFraction: arg0.distFraction,
183
+ subCategoryId: arg0.subCategoryId,
184
+ geometryClass: arg0.geometryClass,
185
+ modelId: arg0.modelId,
186
+ sourceIModel: arg0.sourceIModel,
187
+ tileId: arg0.tileId,
188
+ isClassifier: arg0.isClassifier,
189
+ viewAttachment: arg0.viewAttachment,
190
+ };
191
+ }
142
192
  }
143
193
  /** Get the type of HitDetail.
144
194
  * @returns HitDetailType.Hit if this is a HitDetail, HitDetailType.Snap if it is a SnapDetail
@@ -157,11 +207,10 @@ export class HitDetail {
157
207
  return this.modelId === this.sourceId;
158
208
  }
159
209
  // return whether the hit point is from map.
160
- get isMapHit() { return undefined !== this.viewport.mapLayerFromHit(this); }
210
+ get isMapHit() { return 0 !== this.viewport.mapLayerFromHit(this).length; }
161
211
  /** Create a deep copy of this HitDetail */
162
212
  clone() {
163
- const val = new HitDetail(this.testPoint, this.viewport, this.hitSource, this.hitPoint, this.sourceId, this.priority, this.distXY, this.distFraction, this.subCategoryId, this.geometryClass, this.modelId, this._iModel, this.tileId, this.isClassifier);
164
- return val;
213
+ return new HitDetail(this);
165
214
  }
166
215
  /** Draw this HitDetail as a Decoration. Causes the picked element to *flash* */
167
216
  draw(_context) {
@@ -178,11 +227,15 @@ export class HitDetail {
178
227
  * for example, if a [[TiledGraphicsProvider]] is used to display graphics from a different iModel in the viewport.
179
228
  * This HitDetail's element, subcategory, and model Ids are defined in the context of this IModelConnection.
180
229
  */
181
- get iModel() { return undefined !== this._iModel ? this._iModel : this.viewport.iModel; }
230
+ get iModel() {
231
+ return this.sourceIModel ?? this.viewport.iModel;
232
+ }
182
233
  /** Returns true if this hit originated from an [[IModelConnection]] other than the one associated with the [[Viewport]].
183
234
  * @see [[iModel]].
184
235
  */
185
- get isExternalIModelHit() { return this.iModel !== this.viewport.iModel; }
236
+ get isExternalIModelHit() {
237
+ return this.iModel !== this.viewport.iModel;
238
+ }
186
239
  }
187
240
  /** A SnapDetail is generated from the result of a snap request. In addition to the HitDetail about the reason the element was *picked*,
188
241
  * it holds the *exact* point on the element from the snapping logic, plus additional information that varies with the type of element and snap mode.
@@ -197,7 +250,7 @@ export class SnapDetail extends HitDetail {
197
250
  * @param snapPoint The snapped point in the element
198
251
  */
199
252
  constructor(from, snapMode = SnapMode.Nearest, heat = SnapHeat.None, snapPoint) {
200
- super(from.testPoint, from.viewport, from.hitSource, from.hitPoint, from.sourceId, from.priority, from.distXY, from.distFraction, from.subCategoryId, from.geometryClass, from.modelId, from.iModel, from.tileId, from.isClassifier);
253
+ super(from);
201
254
  this.snapMode = snapMode;
202
255
  this.heat = heat;
203
256
  this.snapPoint = Point3d.fromJSON(snapPoint ? snapPoint : from.hitPoint);