@itwin/core-frontend 3.0.0-extension.1 → 3.1.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1266) hide show
  1. package/CHANGELOG.md +89 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/AccuSnap.js +3 -3
  4. package/lib/cjs/AccuSnap.js.map +1 -1
  5. package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
  6. package/lib/cjs/ApproximateTerrainHeights.js +10 -5
  7. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  8. package/lib/cjs/BackgroundMapGeometry.d.ts +1 -1
  9. package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
  10. package/lib/cjs/BackgroundMapGeometry.js +2 -2
  11. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  12. package/lib/cjs/BingLocation.js +2 -2
  13. package/lib/cjs/BingLocation.js.map +1 -1
  14. package/lib/cjs/CheckpointConnection.js +1 -1
  15. package/lib/cjs/CheckpointConnection.js.map +1 -1
  16. package/lib/cjs/ContextRealityModelState.js +1 -1
  17. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  18. package/lib/cjs/DisplayStyleState.d.ts +10 -163
  19. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  20. package/lib/cjs/DisplayStyleState.js +69 -350
  21. package/lib/cjs/DisplayStyleState.js.map +1 -1
  22. package/lib/cjs/DrawingViewState.d.ts +2 -2
  23. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  24. package/lib/cjs/DrawingViewState.js +3 -3
  25. package/lib/cjs/DrawingViewState.js.map +1 -1
  26. package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
  27. package/lib/cjs/EmphasizeElements.js +14 -4
  28. package/lib/cjs/EmphasizeElements.js.map +1 -1
  29. package/lib/cjs/EnvironmentDecorations.d.ts +39 -0
  30. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -0
  31. package/lib/cjs/EnvironmentDecorations.js +203 -0
  32. package/lib/cjs/EnvironmentDecorations.js.map +1 -0
  33. package/lib/cjs/FrontendHubAccess.d.ts +11 -7
  34. package/lib/cjs/FrontendHubAccess.d.ts.map +1 -1
  35. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  36. package/lib/cjs/FrontendLoggerCategory.d.ts +2 -8
  37. package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
  38. package/lib/cjs/FrontendLoggerCategory.js +2 -8
  39. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  40. package/lib/cjs/HitDetail.js +7 -7
  41. package/lib/cjs/HitDetail.js.map +1 -1
  42. package/lib/cjs/IModelApp.d.ts +31 -24
  43. package/lib/cjs/IModelApp.d.ts.map +1 -1
  44. package/lib/cjs/IModelApp.js +35 -36
  45. package/lib/cjs/IModelApp.js.map +1 -1
  46. package/lib/cjs/IModelConnection.d.ts +4 -6
  47. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  48. package/lib/cjs/IModelConnection.js +6 -11
  49. package/lib/cjs/IModelConnection.js.map +1 -1
  50. package/lib/cjs/IModeljs-css.d.ts.map +1 -1
  51. package/lib/cjs/IModeljs-css.js +8 -6
  52. package/lib/cjs/IModeljs-css.js.map +1 -1
  53. package/lib/cjs/ImageUtil.d.ts +3 -3
  54. package/lib/cjs/ImageUtil.d.ts.map +1 -1
  55. package/lib/cjs/ImageUtil.js +7 -4
  56. package/lib/cjs/ImageUtil.js.map +1 -1
  57. package/lib/cjs/LocalhostIpcApp.d.ts +2 -1
  58. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  59. package/lib/cjs/LocalhostIpcApp.js +21 -7
  60. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  61. package/lib/cjs/Marker.d.ts +9 -2
  62. package/lib/cjs/Marker.d.ts.map +1 -1
  63. package/lib/cjs/Marker.js +33 -5
  64. package/lib/cjs/Marker.js.map +1 -1
  65. package/lib/cjs/ModelState.js +1 -1
  66. package/lib/cjs/ModelState.js.map +1 -1
  67. package/lib/cjs/NativeApp.d.ts +3 -38
  68. package/lib/cjs/NativeApp.d.ts.map +1 -1
  69. package/lib/cjs/NativeApp.js +4 -73
  70. package/lib/cjs/NativeApp.js.map +1 -1
  71. package/lib/cjs/NoRenderApp.d.ts +0 -1
  72. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  73. package/lib/cjs/NoRenderApp.js +0 -1
  74. package/lib/cjs/NoRenderApp.js.map +1 -1
  75. package/lib/cjs/NotificationManager.d.ts +3 -1
  76. package/lib/cjs/NotificationManager.d.ts.map +1 -1
  77. package/lib/cjs/NotificationManager.js +2 -0
  78. package/lib/cjs/NotificationManager.js.map +1 -1
  79. package/lib/cjs/RealityDataSource.d.ts +59 -29
  80. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  81. package/lib/cjs/RealityDataSource.js +247 -94
  82. package/lib/cjs/RealityDataSource.js.map +1 -1
  83. package/lib/cjs/RenderScheduleState.d.ts +2 -0
  84. package/lib/cjs/RenderScheduleState.d.ts.map +1 -1
  85. package/lib/cjs/RenderScheduleState.js +10 -5
  86. package/lib/cjs/RenderScheduleState.js.map +1 -1
  87. package/lib/cjs/SheetViewState.d.ts +2 -2
  88. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  89. package/lib/cjs/SheetViewState.js +7 -6
  90. package/lib/cjs/SheetViewState.js.map +1 -1
  91. package/lib/cjs/SpatialViewState.d.ts +10 -2
  92. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  93. package/lib/cjs/SpatialViewState.js +12 -2
  94. package/lib/cjs/SpatialViewState.js.map +1 -1
  95. package/lib/cjs/SubCategoriesCache.js +1 -1
  96. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  97. package/lib/cjs/Tiles.d.ts +11 -1
  98. package/lib/cjs/Tiles.d.ts.map +1 -1
  99. package/lib/cjs/Tiles.js +7 -0
  100. package/lib/cjs/Tiles.js.map +1 -1
  101. package/lib/cjs/TwoWayViewportSync.d.ts +35 -6
  102. package/lib/cjs/TwoWayViewportSync.d.ts.map +1 -1
  103. package/lib/cjs/TwoWayViewportSync.js +51 -11
  104. package/lib/cjs/TwoWayViewportSync.js.map +1 -1
  105. package/lib/cjs/UserPreferences.d.ts +72 -0
  106. package/lib/cjs/UserPreferences.d.ts.map +1 -0
  107. package/lib/cjs/{extension/ExtensionLoader.js → UserPreferences.js} +1 -5
  108. package/lib/cjs/UserPreferences.js.map +1 -0
  109. package/lib/cjs/ViewContext.d.ts +3 -1
  110. package/lib/cjs/ViewContext.d.ts.map +1 -1
  111. package/lib/cjs/ViewContext.js +4 -0
  112. package/lib/cjs/ViewContext.js.map +1 -1
  113. package/lib/cjs/ViewCreator2d.js +3 -3
  114. package/lib/cjs/ViewCreator2d.js.map +1 -1
  115. package/lib/cjs/ViewCreator3d.d.ts +1 -1
  116. package/lib/cjs/ViewCreator3d.d.ts.map +1 -1
  117. package/lib/cjs/ViewCreator3d.js +4 -5
  118. package/lib/cjs/ViewCreator3d.js.map +1 -1
  119. package/lib/cjs/ViewManager.d.ts +6 -6
  120. package/lib/cjs/ViewManager.d.ts.map +1 -1
  121. package/lib/cjs/ViewManager.js +13 -13
  122. package/lib/cjs/ViewManager.js.map +1 -1
  123. package/lib/cjs/ViewState.d.ts +11 -5
  124. package/lib/cjs/ViewState.d.ts.map +1 -1
  125. package/lib/cjs/ViewState.js +18 -63
  126. package/lib/cjs/ViewState.js.map +1 -1
  127. package/lib/cjs/ViewingSpace.js +1 -1
  128. package/lib/cjs/ViewingSpace.js.map +1 -1
  129. package/lib/cjs/Viewport.d.ts +34 -6
  130. package/lib/cjs/Viewport.d.ts.map +1 -1
  131. package/lib/cjs/Viewport.js +42 -22
  132. package/lib/cjs/Viewport.js.map +1 -1
  133. package/lib/cjs/core-frontend.d.ts +16 -31
  134. package/lib/cjs/core-frontend.d.ts.map +1 -1
  135. package/lib/cjs/core-frontend.js +16 -31
  136. package/lib/cjs/core-frontend.js.map +1 -1
  137. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  138. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  139. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  140. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  141. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  142. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  143. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +20 -5
  144. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  145. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +26 -3
  146. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  147. package/lib/cjs/quantity-formatting/QuantityFormatter.js +46 -7
  148. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  149. package/lib/cjs/render/FeatureSymbology.d.ts.map +1 -1
  150. package/lib/cjs/render/FeatureSymbology.js +3 -3
  151. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  152. package/lib/cjs/render/GraphicBranch.d.ts +18 -2
  153. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  154. package/lib/cjs/render/GraphicBranch.js +9 -1
  155. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  156. package/lib/cjs/render/GraphicBuilder.d.ts +7 -1
  157. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  158. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  159. package/lib/cjs/render/MockRender.d.ts +3 -1
  160. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  161. package/lib/cjs/render/MockRender.js.map +1 -1
  162. package/lib/cjs/render/RenderMemory.d.ts +21 -15
  163. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  164. package/lib/cjs/render/RenderMemory.js +21 -15
  165. package/lib/cjs/render/RenderMemory.js.map +1 -1
  166. package/lib/cjs/render/RenderSystem.d.ts +38 -7
  167. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  168. package/lib/cjs/render/RenderSystem.js +24 -9
  169. package/lib/cjs/render/RenderSystem.js.map +1 -1
  170. package/lib/cjs/render/RenderTarget.d.ts +10 -2
  171. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  172. package/lib/cjs/render/RenderTarget.js +2 -1
  173. package/lib/cjs/render/RenderTarget.js.map +1 -1
  174. package/lib/cjs/render/RenderTexture.d.ts +2 -17
  175. package/lib/cjs/render/RenderTexture.d.ts.map +1 -1
  176. package/lib/cjs/render/RenderTexture.js +0 -17
  177. package/lib/cjs/render/RenderTexture.js.map +1 -1
  178. package/lib/cjs/render/primitives/EdgeParams.d.ts +84 -0
  179. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -0
  180. package/lib/cjs/render/primitives/EdgeParams.js +220 -0
  181. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -0
  182. package/lib/cjs/render/primitives/PointStringParams.d.ts +16 -0
  183. package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -0
  184. package/lib/cjs/render/primitives/PointStringParams.js +43 -0
  185. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -0
  186. package/lib/cjs/render/primitives/PolylineParams.d.ts +44 -0
  187. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -0
  188. package/lib/cjs/render/primitives/PolylineParams.js +205 -0
  189. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -0
  190. package/lib/cjs/render/primitives/Primitives.d.ts +1 -1
  191. package/lib/cjs/render/primitives/Primitives.d.ts.map +1 -1
  192. package/lib/cjs/render/primitives/Primitives.js.map +1 -1
  193. package/lib/cjs/render/primitives/SurfaceParams.d.ts +46 -0
  194. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -0
  195. package/lib/cjs/render/primitives/SurfaceParams.js +42 -0
  196. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -0
  197. package/lib/cjs/render/primitives/VertexTable.d.ts +4 -123
  198. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  199. package/lib/cjs/render/primitives/VertexTable.js +16 -352
  200. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  201. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  202. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  203. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +2 -1
  204. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  205. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  206. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -0
  207. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  208. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  209. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  210. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +3 -3
  211. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  212. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  213. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  214. package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  215. package/lib/cjs/render/webgl/AttributeMap.js +5 -5
  216. package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
  217. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  218. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  219. package/lib/cjs/render/webgl/BranchUniforms.js +8 -5
  220. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  221. package/lib/cjs/render/webgl/CachedGeometry.d.ts +16 -11
  222. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  223. package/lib/cjs/render/webgl/CachedGeometry.js +26 -23
  224. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  225. package/lib/cjs/render/webgl/DrawCommand.d.ts +2 -3
  226. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  227. package/lib/cjs/render/webgl/DrawCommand.js +6 -4
  228. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  229. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +73 -0
  230. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -0
  231. package/lib/cjs/render/webgl/EdgeGeometry.js +141 -0
  232. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -0
  233. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +2 -0
  234. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  235. package/lib/cjs/render/webgl/FeatureOverrides.js +11 -3
  236. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  237. package/lib/cjs/render/webgl/FloatRGBA.d.ts.map +1 -1
  238. package/lib/cjs/render/webgl/FloatRGBA.js +13 -11
  239. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  240. package/lib/cjs/render/webgl/Graphic.d.ts +13 -0
  241. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  242. package/lib/cjs/render/webgl/Graphic.js +41 -3
  243. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  244. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  245. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  246. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +90 -0
  247. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  248. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +6 -5
  249. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  250. package/lib/cjs/render/webgl/InstancedGeometry.js +2 -1
  251. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  252. package/lib/cjs/render/webgl/Material.d.ts +1 -1
  253. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  254. package/lib/cjs/render/webgl/Material.js.map +1 -1
  255. package/lib/cjs/render/webgl/Mesh.d.ts +8 -162
  256. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  257. package/lib/cjs/render/webgl/Mesh.js +18 -458
  258. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  259. package/lib/cjs/render/webgl/MeshData.d.ts +38 -0
  260. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -0
  261. package/lib/cjs/render/webgl/MeshData.js +66 -0
  262. package/lib/cjs/render/webgl/MeshData.js.map +1 -0
  263. package/lib/cjs/render/webgl/MeshGeometry.d.ts +38 -0
  264. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -0
  265. package/lib/cjs/render/webgl/MeshGeometry.js +59 -0
  266. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -0
  267. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  268. package/lib/cjs/render/webgl/PlanarClassifier.js +8 -4
  269. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  270. package/lib/cjs/render/webgl/PlanarGrid.d.ts +2 -3
  271. package/lib/cjs/render/webgl/PlanarGrid.d.ts.map +1 -1
  272. package/lib/cjs/render/webgl/PlanarGrid.js +3 -3
  273. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  274. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  275. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -0
  276. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  277. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  278. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  279. package/lib/cjs/render/webgl/PointCloud.js +2 -2
  280. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  281. package/lib/cjs/render/webgl/PointString.d.ts +3 -3
  282. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  283. package/lib/cjs/render/webgl/PointString.js +1 -1
  284. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  285. package/lib/cjs/render/webgl/Polyline.d.ts +3 -3
  286. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  287. package/lib/cjs/render/webgl/Polyline.js +6 -6
  288. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  289. package/lib/cjs/render/webgl/Primitive.d.ts +2 -2
  290. package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
  291. package/lib/cjs/render/webgl/Primitive.js +5 -5
  292. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  293. package/lib/cjs/render/webgl/RealityMesh.d.ts +2 -2
  294. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  295. package/lib/cjs/render/webgl/RealityMesh.js +9 -9
  296. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  297. package/lib/cjs/render/webgl/RenderCommands.d.ts +6 -2
  298. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  299. package/lib/cjs/render/webgl/RenderCommands.js +81 -48
  300. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  301. package/lib/cjs/render/webgl/RenderFlags.d.ts +48 -1
  302. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  303. package/lib/cjs/render/webgl/RenderFlags.js +64 -2
  304. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  305. package/lib/cjs/render/webgl/SceneCompositor.js +10 -9
  306. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  307. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
  308. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +23 -20
  309. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  310. package/lib/cjs/render/webgl/ShaderBuilder.js +38 -32
  311. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  312. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -1
  313. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  314. package/lib/cjs/render/webgl/ShaderProgram.js +4 -4
  315. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  316. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  317. package/lib/cjs/render/webgl/SolarShadowMap.js +4 -3
  318. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  319. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +54 -0
  320. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  321. package/lib/cjs/render/webgl/SurfaceGeometry.js +248 -0
  322. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -0
  323. package/lib/cjs/render/webgl/System.d.ts +11 -10
  324. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  325. package/lib/cjs/render/webgl/System.js +32 -21
  326. package/lib/cjs/render/webgl/System.js.map +1 -1
  327. package/lib/cjs/render/webgl/Target.d.ts +13 -1
  328. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  329. package/lib/cjs/render/webgl/Target.js +88 -2
  330. package/lib/cjs/render/webgl/Target.js.map +1 -1
  331. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  332. package/lib/cjs/render/webgl/Technique.js +112 -119
  333. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  334. package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
  335. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  336. package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
  337. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  338. package/lib/cjs/render/webgl/TechniqueId.d.ts +29 -28
  339. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  340. package/lib/cjs/render/webgl/TechniqueId.js +7 -7
  341. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  342. package/lib/cjs/render/webgl/Texture.d.ts +15 -12
  343. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  344. package/lib/cjs/render/webgl/Texture.js +26 -23
  345. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  346. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  347. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +83 -18
  348. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  349. package/lib/cjs/render/webgl/glsl/Animation.js +1 -1
  350. package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
  351. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -2
  352. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -2
  353. package/lib/cjs/render/webgl/glsl/Color.js +1 -1
  354. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
  355. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
  356. package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
  357. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  358. package/lib/cjs/render/webgl/glsl/CopyColor.js +17 -2
  359. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  360. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -2
  361. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  362. package/lib/cjs/render/webgl/glsl/CopyStencil.js +10 -13
  363. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  364. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -2
  365. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  366. package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -1
  367. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  368. package/lib/cjs/render/webgl/glsl/Edge.js +132 -14
  369. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  370. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  371. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +43 -21
  372. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  373. package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
  374. package/lib/cjs/render/webgl/glsl/Fragment.js +19 -11
  375. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  376. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  377. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts +4 -2
  378. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  379. package/lib/cjs/render/webgl/glsl/LookupTable.js +7 -3
  380. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  381. package/lib/cjs/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  382. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +13 -4
  383. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  384. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -2
  385. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  386. package/lib/cjs/render/webgl/glsl/PointCloud.js +2 -2
  387. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  388. package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
  389. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  390. package/lib/cjs/render/webgl/glsl/Polyline.js +1 -1
  391. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  392. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  393. package/lib/cjs/render/webgl/glsl/RealityMesh.js +9 -6
  394. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  395. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  396. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  397. package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -2
  398. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  399. package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -2
  400. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  401. package/lib/cjs/render/webgl/glsl/Surface.js +41 -16
  402. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  403. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
  404. package/lib/cjs/render/webgl/glsl/Vertex.js +2 -2
  405. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  406. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
  407. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  408. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts +9 -0
  409. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  410. package/lib/cjs/render/webgl/glsl/Wiremesh.js +40 -0
  411. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -0
  412. package/lib/cjs/render-primitives.d.ts +5 -1
  413. package/lib/cjs/render-primitives.d.ts.map +1 -1
  414. package/lib/cjs/render-primitives.js +5 -1
  415. package/lib/cjs/render-primitives.js.map +1 -1
  416. package/lib/cjs/request/Request.d.ts +167 -0
  417. package/lib/cjs/request/Request.d.ts.map +1 -0
  418. package/lib/cjs/request/Request.js +315 -0
  419. package/lib/cjs/request/Request.js.map +1 -0
  420. package/lib/cjs/tile/B3dmReader.d.ts +2 -1
  421. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  422. package/lib/cjs/tile/B3dmReader.js +11 -7
  423. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  424. package/lib/cjs/tile/CesiumAssetProvider.d.ts +14 -0
  425. package/lib/cjs/tile/CesiumAssetProvider.d.ts.map +1 -0
  426. package/lib/cjs/tile/CesiumAssetProvider.js +35 -0
  427. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -0
  428. package/lib/cjs/tile/ContextShareProvider.d.ts +22 -0
  429. package/lib/cjs/tile/ContextShareProvider.d.ts.map +1 -0
  430. package/lib/cjs/tile/ContextShareProvider.js +129 -0
  431. package/lib/cjs/tile/ContextShareProvider.js.map +1 -0
  432. package/lib/cjs/tile/DynamicIModelTile.js +9 -3
  433. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  434. package/lib/cjs/tile/GltfReader.d.ts +594 -55
  435. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  436. package/lib/cjs/tile/GltfReader.js +703 -264
  437. package/lib/cjs/tile/GltfReader.js.map +1 -1
  438. package/lib/cjs/tile/I3dmReader.d.ts +2 -1
  439. package/lib/cjs/tile/I3dmReader.d.ts.map +1 -1
  440. package/lib/cjs/tile/I3dmReader.js +10 -6
  441. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  442. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  443. package/lib/cjs/tile/IModelTile.js +14 -7
  444. package/lib/cjs/tile/IModelTile.js.map +1 -1
  445. package/lib/cjs/tile/IModelTileTree.d.ts +8 -0
  446. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  447. package/lib/cjs/tile/IModelTileTree.js +36 -1
  448. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  449. package/lib/cjs/tile/ImdlReader.d.ts +365 -10
  450. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  451. package/lib/cjs/tile/ImdlReader.js +201 -69
  452. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  453. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  454. package/lib/cjs/tile/OrbitGtTileTree.js +8 -5
  455. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  456. package/lib/cjs/tile/PrimaryTileTree.d.ts +14 -5
  457. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  458. package/lib/cjs/tile/PrimaryTileTree.js +69 -14
  459. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  460. package/lib/cjs/tile/RealityModelTileTree.d.ts +3 -55
  461. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  462. package/lib/cjs/tile/RealityModelTileTree.js +57 -232
  463. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  464. package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
  465. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  466. package/lib/cjs/tile/RealityTileLoader.js +4 -3
  467. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  468. package/lib/cjs/tile/Tile.d.ts.map +1 -1
  469. package/lib/cjs/tile/Tile.js +5 -1
  470. package/lib/cjs/tile/Tile.js.map +1 -1
  471. package/lib/cjs/tile/TileAdmin.d.ts +37 -4
  472. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  473. package/lib/cjs/tile/TileAdmin.js +18 -12
  474. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  475. package/lib/cjs/tile/TileDrawArgs.d.ts +11 -0
  476. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  477. package/lib/cjs/tile/TileDrawArgs.js +6 -1
  478. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  479. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  480. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  481. package/lib/cjs/tile/TileTreeReference.js +5 -0
  482. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  483. package/lib/cjs/tile/internal.d.ts +4 -1
  484. package/lib/cjs/tile/internal.d.ts.map +1 -1
  485. package/lib/cjs/tile/internal.js +4 -1
  486. package/lib/cjs/tile/internal.js.map +1 -1
  487. package/lib/cjs/tile/map/ArcGISTileMap.d.ts +22 -0
  488. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -0
  489. package/lib/cjs/tile/map/ArcGISTileMap.js +177 -0
  490. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -0
  491. package/lib/cjs/tile/map/ArcGisTokenGenerator.js +3 -3
  492. package/lib/cjs/tile/map/ArcGisTokenGenerator.js.map +1 -1
  493. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +1 -1
  494. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  495. package/lib/cjs/tile/map/ArcGisUtilities.js +18 -10
  496. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  497. package/lib/cjs/tile/map/BingElevation.js +4 -4
  498. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  499. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  500. package/lib/cjs/tile/map/CesiumTerrainProvider.js +27 -15
  501. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  502. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  503. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  504. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +23 -44
  505. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  506. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
  507. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  508. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  509. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  510. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  511. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  512. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  513. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  514. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  515. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  516. package/lib/cjs/tile/map/ImageryTileTree.d.ts +4 -4
  517. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  518. package/lib/cjs/tile/map/ImageryTileTree.js +20 -24
  519. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  520. package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
  521. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  522. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +20 -0
  523. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  524. package/lib/cjs/tile/map/MapLayerAuthentication.js +18 -0
  525. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -0
  526. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  527. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  528. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +3 -1
  529. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  530. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +2 -2
  531. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  532. package/lib/cjs/tile/map/MapLayerImageryFormats.js +21 -8
  533. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  534. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +18 -6
  535. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  536. package/lib/cjs/tile/map/MapLayerImageryProvider.js +47 -14
  537. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  538. package/lib/cjs/tile/map/MapLayerSources.d.ts +3 -11
  539. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  540. package/lib/cjs/tile/map/MapLayerSources.js +5 -34
  541. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  542. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  543. package/lib/cjs/tile/map/MapTile.js +4 -3
  544. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  545. package/lib/cjs/tile/map/MapTileLoader.js +2 -2
  546. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  547. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
  548. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  549. package/lib/cjs/tile/map/MapTileTree.js +30 -21
  550. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  551. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  552. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  553. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +4 -6
  554. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  555. package/lib/cjs/tile/map/MapTilingScheme.d.ts +7 -2
  556. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  557. package/lib/cjs/tile/map/MapTilingScheme.js +21 -8
  558. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  559. package/lib/cjs/tile/map/QuadId.d.ts +1 -0
  560. package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
  561. package/lib/cjs/tile/map/QuadId.js +2 -1
  562. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  563. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
  564. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  565. package/lib/cjs/tile/map/WmsCapabilities.d.ts +8 -1
  566. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  567. package/lib/cjs/tile/map/WmsCapabilities.js +39 -5
  568. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  569. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +11 -1
  570. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  571. package/lib/cjs/tile/map/WmtsCapabilities.js +23 -9
  572. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  573. package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
  574. package/lib/cjs/tools/EditManipulator.js +1 -1
  575. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  576. package/lib/cjs/tools/ElementSetTool.js +2 -2
  577. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  578. package/lib/cjs/tools/PrimitiveTool.d.ts +4 -4
  579. package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
  580. package/lib/cjs/tools/PrimitiveTool.js +2 -2
  581. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  582. package/lib/cjs/tools/Tool.d.ts +29 -1
  583. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  584. package/lib/cjs/tools/Tool.js +66 -0
  585. package/lib/cjs/tools/Tool.js.map +1 -1
  586. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  587. package/lib/cjs/tools/ToolAdmin.js +20 -10
  588. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  589. package/lib/cjs/tools/ViewTool.js +1 -1
  590. package/lib/cjs/tools/ViewTool.js.map +1 -1
  591. package/lib/cjs/webgl.d.ts +5 -0
  592. package/lib/cjs/webgl.d.ts.map +1 -1
  593. package/lib/cjs/webgl.js +5 -0
  594. package/lib/cjs/webgl.js.map +1 -1
  595. package/lib/esm/AccuSnap.js +3 -3
  596. package/lib/esm/AccuSnap.js.map +1 -1
  597. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  598. package/lib/esm/ApproximateTerrainHeights.js +10 -5
  599. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  600. package/lib/esm/BackgroundMapGeometry.d.ts +1 -1
  601. package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
  602. package/lib/esm/BackgroundMapGeometry.js +2 -2
  603. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  604. package/lib/esm/BingLocation.js +1 -1
  605. package/lib/esm/BingLocation.js.map +1 -1
  606. package/lib/esm/CheckpointConnection.js +1 -1
  607. package/lib/esm/CheckpointConnection.js.map +1 -1
  608. package/lib/esm/ContextRealityModelState.js +1 -1
  609. package/lib/esm/ContextRealityModelState.js.map +1 -1
  610. package/lib/esm/DisplayStyleState.d.ts +10 -163
  611. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  612. package/lib/esm/DisplayStyleState.js +70 -346
  613. package/lib/esm/DisplayStyleState.js.map +1 -1
  614. package/lib/esm/DrawingViewState.d.ts +2 -2
  615. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  616. package/lib/esm/DrawingViewState.js +3 -3
  617. package/lib/esm/DrawingViewState.js.map +1 -1
  618. package/lib/esm/EmphasizeElements.d.ts.map +1 -1
  619. package/lib/esm/EmphasizeElements.js +14 -4
  620. package/lib/esm/EmphasizeElements.js.map +1 -1
  621. package/lib/esm/EnvironmentDecorations.d.ts +39 -0
  622. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -0
  623. package/lib/esm/EnvironmentDecorations.js +199 -0
  624. package/lib/esm/EnvironmentDecorations.js.map +1 -0
  625. package/lib/esm/FrontendHubAccess.d.ts +11 -7
  626. package/lib/esm/FrontendHubAccess.d.ts.map +1 -1
  627. package/lib/esm/FrontendHubAccess.js.map +1 -1
  628. package/lib/esm/FrontendLoggerCategory.d.ts +2 -8
  629. package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
  630. package/lib/esm/FrontendLoggerCategory.js +2 -8
  631. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  632. package/lib/esm/HitDetail.js +7 -7
  633. package/lib/esm/HitDetail.js.map +1 -1
  634. package/lib/esm/IModelApp.d.ts +31 -24
  635. package/lib/esm/IModelApp.d.ts.map +1 -1
  636. package/lib/esm/IModelApp.js +34 -35
  637. package/lib/esm/IModelApp.js.map +1 -1
  638. package/lib/esm/IModelConnection.d.ts +4 -6
  639. package/lib/esm/IModelConnection.d.ts.map +1 -1
  640. package/lib/esm/IModelConnection.js +6 -11
  641. package/lib/esm/IModelConnection.js.map +1 -1
  642. package/lib/esm/IModeljs-css.d.ts.map +1 -1
  643. package/lib/esm/IModeljs-css.js +8 -6
  644. package/lib/esm/IModeljs-css.js.map +1 -1
  645. package/lib/esm/ImageUtil.d.ts +3 -3
  646. package/lib/esm/ImageUtil.d.ts.map +1 -1
  647. package/lib/esm/ImageUtil.js +7 -4
  648. package/lib/esm/ImageUtil.js.map +1 -1
  649. package/lib/esm/LocalhostIpcApp.d.ts +2 -1
  650. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  651. package/lib/esm/LocalhostIpcApp.js +22 -8
  652. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  653. package/lib/esm/Marker.d.ts +9 -2
  654. package/lib/esm/Marker.d.ts.map +1 -1
  655. package/lib/esm/Marker.js +34 -6
  656. package/lib/esm/Marker.js.map +1 -1
  657. package/lib/esm/ModelState.js +1 -1
  658. package/lib/esm/ModelState.js.map +1 -1
  659. package/lib/esm/NativeApp.d.ts +3 -38
  660. package/lib/esm/NativeApp.d.ts.map +1 -1
  661. package/lib/esm/NativeApp.js +1 -69
  662. package/lib/esm/NativeApp.js.map +1 -1
  663. package/lib/esm/NoRenderApp.d.ts +0 -1
  664. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  665. package/lib/esm/NoRenderApp.js +0 -1
  666. package/lib/esm/NoRenderApp.js.map +1 -1
  667. package/lib/esm/NotificationManager.d.ts +3 -1
  668. package/lib/esm/NotificationManager.d.ts.map +1 -1
  669. package/lib/esm/NotificationManager.js +2 -0
  670. package/lib/esm/NotificationManager.js.map +1 -1
  671. package/lib/esm/RealityDataSource.d.ts +59 -29
  672. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  673. package/lib/esm/RealityDataSource.js +247 -92
  674. package/lib/esm/RealityDataSource.js.map +1 -1
  675. package/lib/esm/RenderScheduleState.d.ts +2 -0
  676. package/lib/esm/RenderScheduleState.d.ts.map +1 -1
  677. package/lib/esm/RenderScheduleState.js +8 -4
  678. package/lib/esm/RenderScheduleState.js.map +1 -1
  679. package/lib/esm/SheetViewState.d.ts +2 -2
  680. package/lib/esm/SheetViewState.d.ts.map +1 -1
  681. package/lib/esm/SheetViewState.js +7 -6
  682. package/lib/esm/SheetViewState.js.map +1 -1
  683. package/lib/esm/SpatialViewState.d.ts +10 -2
  684. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  685. package/lib/esm/SpatialViewState.js +12 -2
  686. package/lib/esm/SpatialViewState.js.map +1 -1
  687. package/lib/esm/SubCategoriesCache.js +1 -1
  688. package/lib/esm/SubCategoriesCache.js.map +1 -1
  689. package/lib/esm/Tiles.d.ts +11 -1
  690. package/lib/esm/Tiles.d.ts.map +1 -1
  691. package/lib/esm/Tiles.js +7 -0
  692. package/lib/esm/Tiles.js.map +1 -1
  693. package/lib/esm/TwoWayViewportSync.d.ts +35 -6
  694. package/lib/esm/TwoWayViewportSync.d.ts.map +1 -1
  695. package/lib/esm/TwoWayViewportSync.js +49 -10
  696. package/lib/esm/TwoWayViewportSync.js.map +1 -1
  697. package/lib/esm/UserPreferences.d.ts +72 -0
  698. package/lib/esm/UserPreferences.d.ts.map +1 -0
  699. package/lib/esm/{extension/ExtensionLoader.js → UserPreferences.js} +1 -5
  700. package/lib/esm/UserPreferences.js.map +1 -0
  701. package/lib/esm/ViewContext.d.ts +3 -1
  702. package/lib/esm/ViewContext.d.ts.map +1 -1
  703. package/lib/esm/ViewContext.js +4 -0
  704. package/lib/esm/ViewContext.js.map +1 -1
  705. package/lib/esm/ViewCreator2d.js +3 -3
  706. package/lib/esm/ViewCreator2d.js.map +1 -1
  707. package/lib/esm/ViewCreator3d.d.ts +1 -1
  708. package/lib/esm/ViewCreator3d.d.ts.map +1 -1
  709. package/lib/esm/ViewCreator3d.js +5 -6
  710. package/lib/esm/ViewCreator3d.js.map +1 -1
  711. package/lib/esm/ViewManager.d.ts +6 -6
  712. package/lib/esm/ViewManager.d.ts.map +1 -1
  713. package/lib/esm/ViewManager.js +13 -13
  714. package/lib/esm/ViewManager.js.map +1 -1
  715. package/lib/esm/ViewState.d.ts +11 -5
  716. package/lib/esm/ViewState.d.ts.map +1 -1
  717. package/lib/esm/ViewState.js +21 -66
  718. package/lib/esm/ViewState.js.map +1 -1
  719. package/lib/esm/ViewingSpace.js +1 -1
  720. package/lib/esm/ViewingSpace.js.map +1 -1
  721. package/lib/esm/Viewport.d.ts +34 -6
  722. package/lib/esm/Viewport.d.ts.map +1 -1
  723. package/lib/esm/Viewport.js +43 -23
  724. package/lib/esm/Viewport.js.map +1 -1
  725. package/lib/esm/core-frontend.d.ts +16 -31
  726. package/lib/esm/core-frontend.d.ts.map +1 -1
  727. package/lib/esm/core-frontend.js +16 -31
  728. package/lib/esm/core-frontend.js.map +1 -1
  729. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  730. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  731. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  732. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  733. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  734. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  735. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +18 -4
  736. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  737. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +26 -3
  738. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  739. package/lib/esm/quantity-formatting/QuantityFormatter.js +45 -7
  740. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  741. package/lib/esm/render/FeatureSymbology.d.ts.map +1 -1
  742. package/lib/esm/render/FeatureSymbology.js +3 -3
  743. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  744. package/lib/esm/render/GraphicBranch.d.ts +18 -2
  745. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  746. package/lib/esm/render/GraphicBranch.js +8 -0
  747. package/lib/esm/render/GraphicBranch.js.map +1 -1
  748. package/lib/esm/render/GraphicBuilder.d.ts +7 -1
  749. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  750. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  751. package/lib/esm/render/MockRender.d.ts +3 -1
  752. package/lib/esm/render/MockRender.d.ts.map +1 -1
  753. package/lib/esm/render/MockRender.js.map +1 -1
  754. package/lib/esm/render/RenderMemory.d.ts +21 -15
  755. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  756. package/lib/esm/render/RenderMemory.js +21 -15
  757. package/lib/esm/render/RenderMemory.js.map +1 -1
  758. package/lib/esm/render/RenderSystem.d.ts +38 -7
  759. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  760. package/lib/esm/render/RenderSystem.js +24 -9
  761. package/lib/esm/render/RenderSystem.js.map +1 -1
  762. package/lib/esm/render/RenderTarget.d.ts +10 -2
  763. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  764. package/lib/esm/render/RenderTarget.js +2 -1
  765. package/lib/esm/render/RenderTarget.js.map +1 -1
  766. package/lib/esm/render/RenderTexture.d.ts +2 -17
  767. package/lib/esm/render/RenderTexture.d.ts.map +1 -1
  768. package/lib/esm/render/RenderTexture.js +1 -16
  769. package/lib/esm/render/RenderTexture.js.map +1 -1
  770. package/lib/esm/render/primitives/EdgeParams.d.ts +84 -0
  771. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -0
  772. package/lib/esm/render/primitives/EdgeParams.js +217 -0
  773. package/lib/esm/render/primitives/EdgeParams.js.map +1 -0
  774. package/lib/esm/render/primitives/PointStringParams.d.ts +16 -0
  775. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -0
  776. package/lib/esm/render/primitives/PointStringParams.js +39 -0
  777. package/lib/esm/render/primitives/PointStringParams.js.map +1 -0
  778. package/lib/esm/render/primitives/PolylineParams.d.ts +44 -0
  779. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -0
  780. package/lib/esm/render/primitives/PolylineParams.js +199 -0
  781. package/lib/esm/render/primitives/PolylineParams.js.map +1 -0
  782. package/lib/esm/render/primitives/Primitives.d.ts +1 -1
  783. package/lib/esm/render/primitives/Primitives.d.ts.map +1 -1
  784. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  785. package/lib/esm/render/primitives/SurfaceParams.d.ts +46 -0
  786. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -0
  787. package/lib/esm/render/primitives/SurfaceParams.js +37 -0
  788. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -0
  789. package/lib/esm/render/primitives/VertexTable.d.ts +4 -123
  790. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  791. package/lib/esm/render/primitives/VertexTable.js +11 -342
  792. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  793. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
  794. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  795. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +2 -1
  796. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  797. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  798. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -0
  799. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  800. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
  801. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  802. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +3 -3
  803. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  804. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
  805. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
  806. package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
  807. package/lib/esm/render/webgl/AttributeMap.js +5 -5
  808. package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
  809. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  810. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  811. package/lib/esm/render/webgl/BranchUniforms.js +8 -5
  812. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  813. package/lib/esm/render/webgl/CachedGeometry.d.ts +16 -11
  814. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  815. package/lib/esm/render/webgl/CachedGeometry.js +26 -23
  816. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  817. package/lib/esm/render/webgl/DrawCommand.d.ts +2 -3
  818. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  819. package/lib/esm/render/webgl/DrawCommand.js +6 -4
  820. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  821. package/lib/esm/render/webgl/EdgeGeometry.d.ts +73 -0
  822. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -0
  823. package/lib/esm/render/webgl/EdgeGeometry.js +135 -0
  824. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -0
  825. package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
  826. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  827. package/lib/esm/render/webgl/FeatureOverrides.js +11 -3
  828. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  829. package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
  830. package/lib/esm/render/webgl/FloatRGBA.js +13 -11
  831. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  832. package/lib/esm/render/webgl/Graphic.d.ts +13 -0
  833. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  834. package/lib/esm/render/webgl/Graphic.js +39 -2
  835. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  836. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  837. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  838. package/lib/esm/render/webgl/IndexedEdgeGeometry.js +85 -0
  839. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  840. package/lib/esm/render/webgl/InstancedGeometry.d.ts +6 -5
  841. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  842. package/lib/esm/render/webgl/InstancedGeometry.js +2 -1
  843. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  844. package/lib/esm/render/webgl/Material.d.ts +1 -1
  845. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  846. package/lib/esm/render/webgl/Material.js.map +1 -1
  847. package/lib/esm/render/webgl/Mesh.d.ts +8 -162
  848. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  849. package/lib/esm/render/webgl/Mesh.js +12 -445
  850. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  851. package/lib/esm/render/webgl/MeshData.d.ts +38 -0
  852. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -0
  853. package/lib/esm/render/webgl/MeshData.js +62 -0
  854. package/lib/esm/render/webgl/MeshData.js.map +1 -0
  855. package/lib/esm/render/webgl/MeshGeometry.d.ts +38 -0
  856. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -0
  857. package/lib/esm/render/webgl/MeshGeometry.js +55 -0
  858. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -0
  859. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  860. package/lib/esm/render/webgl/PlanarClassifier.js +9 -5
  861. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  862. package/lib/esm/render/webgl/PlanarGrid.d.ts +2 -3
  863. package/lib/esm/render/webgl/PlanarGrid.d.ts.map +1 -1
  864. package/lib/esm/render/webgl/PlanarGrid.js +3 -3
  865. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  866. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  867. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -0
  868. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  869. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  870. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  871. package/lib/esm/render/webgl/PointCloud.js +2 -2
  872. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  873. package/lib/esm/render/webgl/PointString.d.ts +3 -3
  874. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  875. package/lib/esm/render/webgl/PointString.js +1 -1
  876. package/lib/esm/render/webgl/PointString.js.map +1 -1
  877. package/lib/esm/render/webgl/Polyline.d.ts +3 -3
  878. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  879. package/lib/esm/render/webgl/Polyline.js +6 -6
  880. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  881. package/lib/esm/render/webgl/Primitive.d.ts +2 -2
  882. package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
  883. package/lib/esm/render/webgl/Primitive.js +5 -5
  884. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  885. package/lib/esm/render/webgl/RealityMesh.d.ts +2 -2
  886. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  887. package/lib/esm/render/webgl/RealityMesh.js +9 -9
  888. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  889. package/lib/esm/render/webgl/RenderCommands.d.ts +6 -2
  890. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  891. package/lib/esm/render/webgl/RenderCommands.js +78 -45
  892. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  893. package/lib/esm/render/webgl/RenderFlags.d.ts +48 -1
  894. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  895. package/lib/esm/render/webgl/RenderFlags.js +63 -1
  896. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  897. package/lib/esm/render/webgl/SceneCompositor.js +10 -9
  898. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  899. package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
  900. package/lib/esm/render/webgl/ShaderBuilder.d.ts +23 -20
  901. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  902. package/lib/esm/render/webgl/ShaderBuilder.js +38 -32
  903. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  904. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -1
  905. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  906. package/lib/esm/render/webgl/ShaderProgram.js +4 -4
  907. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  908. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  909. package/lib/esm/render/webgl/SolarShadowMap.js +5 -4
  910. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  911. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +54 -0
  912. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  913. package/lib/esm/render/webgl/SurfaceGeometry.js +243 -0
  914. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -0
  915. package/lib/esm/render/webgl/System.d.ts +11 -10
  916. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  917. package/lib/esm/render/webgl/System.js +34 -23
  918. package/lib/esm/render/webgl/System.js.map +1 -1
  919. package/lib/esm/render/webgl/Target.d.ts +13 -1
  920. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  921. package/lib/esm/render/webgl/Target.js +88 -2
  922. package/lib/esm/render/webgl/Target.js.map +1 -1
  923. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  924. package/lib/esm/render/webgl/Technique.js +112 -119
  925. package/lib/esm/render/webgl/Technique.js.map +1 -1
  926. package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
  927. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  928. package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
  929. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  930. package/lib/esm/render/webgl/TechniqueId.d.ts +29 -28
  931. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  932. package/lib/esm/render/webgl/TechniqueId.js +7 -7
  933. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  934. package/lib/esm/render/webgl/Texture.d.ts +15 -12
  935. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  936. package/lib/esm/render/webgl/Texture.js +27 -24
  937. package/lib/esm/render/webgl/Texture.js.map +1 -1
  938. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  939. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +84 -19
  940. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  941. package/lib/esm/render/webgl/glsl/Animation.js +1 -1
  942. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  943. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -2
  944. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -2
  945. package/lib/esm/render/webgl/glsl/Color.js +1 -1
  946. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  947. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  948. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  949. package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  950. package/lib/esm/render/webgl/glsl/CopyColor.js +17 -2
  951. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  952. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +2 -2
  953. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  954. package/lib/esm/render/webgl/glsl/CopyStencil.js +10 -13
  955. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  956. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +2 -2
  957. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  958. package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -1
  959. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  960. package/lib/esm/render/webgl/glsl/Edge.js +132 -14
  961. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  962. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  963. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +44 -22
  964. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  965. package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
  966. package/lib/esm/render/webgl/glsl/Fragment.js +19 -11
  967. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  968. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  969. package/lib/esm/render/webgl/glsl/LookupTable.d.ts +4 -2
  970. package/lib/esm/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  971. package/lib/esm/render/webgl/glsl/LookupTable.js +7 -3
  972. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  973. package/lib/esm/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
  974. package/lib/esm/render/webgl/glsl/PlanarClassification.js +13 -4
  975. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  976. package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -2
  977. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  978. package/lib/esm/render/webgl/glsl/PointCloud.js +2 -2
  979. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  980. package/lib/esm/render/webgl/glsl/PointString.js +1 -1
  981. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  982. package/lib/esm/render/webgl/glsl/Polyline.js +1 -1
  983. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  984. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  985. package/lib/esm/render/webgl/glsl/RealityMesh.js +9 -6
  986. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  987. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
  988. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  989. package/lib/esm/render/webgl/glsl/SkyBox.js +2 -2
  990. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  991. package/lib/esm/render/webgl/glsl/SkySphere.js +2 -2
  992. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  993. package/lib/esm/render/webgl/glsl/Surface.js +41 -16
  994. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  995. package/lib/esm/render/webgl/glsl/Translucency.js +2 -2
  996. package/lib/esm/render/webgl/glsl/Vertex.js +3 -3
  997. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  998. package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
  999. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  1000. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts +9 -0
  1001. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  1002. package/lib/esm/render/webgl/glsl/Wiremesh.js +36 -0
  1003. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -0
  1004. package/lib/esm/render-primitives.d.ts +5 -1
  1005. package/lib/esm/render-primitives.d.ts.map +1 -1
  1006. package/lib/esm/render-primitives.js +5 -1
  1007. package/lib/esm/render-primitives.js.map +1 -1
  1008. package/lib/esm/request/Request.d.ts +167 -0
  1009. package/lib/esm/request/Request.d.ts.map +1 -0
  1010. package/lib/esm/request/Request.js +289 -0
  1011. package/lib/esm/request/Request.js.map +1 -0
  1012. package/lib/esm/tile/B3dmReader.d.ts +2 -1
  1013. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  1014. package/lib/esm/tile/B3dmReader.js +12 -8
  1015. package/lib/esm/tile/B3dmReader.js.map +1 -1
  1016. package/lib/esm/tile/CesiumAssetProvider.d.ts +14 -0
  1017. package/lib/esm/tile/CesiumAssetProvider.d.ts.map +1 -0
  1018. package/lib/esm/tile/CesiumAssetProvider.js +31 -0
  1019. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -0
  1020. package/lib/esm/tile/ContextShareProvider.d.ts +22 -0
  1021. package/lib/esm/tile/ContextShareProvider.d.ts.map +1 -0
  1022. package/lib/esm/tile/ContextShareProvider.js +125 -0
  1023. package/lib/esm/tile/ContextShareProvider.js.map +1 -0
  1024. package/lib/esm/tile/DynamicIModelTile.js +9 -3
  1025. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  1026. package/lib/esm/tile/GltfReader.d.ts +594 -55
  1027. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  1028. package/lib/esm/tile/GltfReader.js +678 -242
  1029. package/lib/esm/tile/GltfReader.js.map +1 -1
  1030. package/lib/esm/tile/I3dmReader.d.ts +2 -1
  1031. package/lib/esm/tile/I3dmReader.d.ts.map +1 -1
  1032. package/lib/esm/tile/I3dmReader.js +11 -7
  1033. package/lib/esm/tile/I3dmReader.js.map +1 -1
  1034. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  1035. package/lib/esm/tile/IModelTile.js +14 -7
  1036. package/lib/esm/tile/IModelTile.js.map +1 -1
  1037. package/lib/esm/tile/IModelTileTree.d.ts +8 -0
  1038. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  1039. package/lib/esm/tile/IModelTileTree.js +36 -1
  1040. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  1041. package/lib/esm/tile/ImdlReader.d.ts +365 -10
  1042. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  1043. package/lib/esm/tile/ImdlReader.js +198 -67
  1044. package/lib/esm/tile/ImdlReader.js.map +1 -1
  1045. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  1046. package/lib/esm/tile/OrbitGtTileTree.js +8 -5
  1047. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  1048. package/lib/esm/tile/PrimaryTileTree.d.ts +14 -5
  1049. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  1050. package/lib/esm/tile/PrimaryTileTree.js +70 -15
  1051. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  1052. package/lib/esm/tile/RealityModelTileTree.d.ts +3 -55
  1053. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  1054. package/lib/esm/tile/RealityModelTileTree.js +56 -230
  1055. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  1056. package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
  1057. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  1058. package/lib/esm/tile/RealityTileLoader.js +4 -3
  1059. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  1060. package/lib/esm/tile/Tile.d.ts.map +1 -1
  1061. package/lib/esm/tile/Tile.js +5 -1
  1062. package/lib/esm/tile/Tile.js.map +1 -1
  1063. package/lib/esm/tile/TileAdmin.d.ts +37 -4
  1064. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  1065. package/lib/esm/tile/TileAdmin.js +19 -13
  1066. package/lib/esm/tile/TileAdmin.js.map +1 -1
  1067. package/lib/esm/tile/TileDrawArgs.d.ts +11 -0
  1068. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  1069. package/lib/esm/tile/TileDrawArgs.js +6 -1
  1070. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  1071. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  1072. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  1073. package/lib/esm/tile/TileTreeReference.js +5 -0
  1074. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  1075. package/lib/esm/tile/internal.d.ts +4 -1
  1076. package/lib/esm/tile/internal.d.ts.map +1 -1
  1077. package/lib/esm/tile/internal.js +4 -1
  1078. package/lib/esm/tile/internal.js.map +1 -1
  1079. package/lib/esm/tile/map/ArcGISTileMap.d.ts +22 -0
  1080. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -0
  1081. package/lib/esm/tile/map/ArcGISTileMap.js +173 -0
  1082. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -0
  1083. package/lib/esm/tile/map/ArcGisTokenGenerator.js +1 -1
  1084. package/lib/esm/tile/map/ArcGisTokenGenerator.js.map +1 -1
  1085. package/lib/esm/tile/map/ArcGisUtilities.d.ts +1 -1
  1086. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  1087. package/lib/esm/tile/map/ArcGisUtilities.js +14 -6
  1088. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  1089. package/lib/esm/tile/map/BingElevation.js +1 -1
  1090. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  1091. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  1092. package/lib/esm/tile/map/CesiumTerrainProvider.js +25 -13
  1093. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  1094. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
  1095. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  1096. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +21 -42
  1097. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  1098. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  1099. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  1100. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
  1101. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  1102. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
  1103. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  1104. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
  1105. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  1106. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
  1107. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  1108. package/lib/esm/tile/map/ImageryTileTree.d.ts +4 -4
  1109. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  1110. package/lib/esm/tile/map/ImageryTileTree.js +21 -25
  1111. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  1112. package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
  1113. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  1114. package/lib/esm/tile/map/MapLayerAuthentication.d.ts +20 -0
  1115. package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -0
  1116. package/lib/esm/tile/map/MapLayerAuthentication.js +15 -0
  1117. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -0
  1118. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +6 -3
  1119. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  1120. package/lib/esm/tile/map/MapLayerFormatRegistry.js +3 -1
  1121. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  1122. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +2 -2
  1123. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  1124. package/lib/esm/tile/map/MapLayerImageryFormats.js +22 -9
  1125. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  1126. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +18 -6
  1127. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  1128. package/lib/esm/tile/map/MapLayerImageryProvider.js +44 -11
  1129. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  1130. package/lib/esm/tile/map/MapLayerSources.d.ts +3 -11
  1131. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  1132. package/lib/esm/tile/map/MapLayerSources.js +7 -36
  1133. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  1134. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  1135. package/lib/esm/tile/map/MapTile.js +4 -3
  1136. package/lib/esm/tile/map/MapTile.js.map +1 -1
  1137. package/lib/esm/tile/map/MapTileLoader.js +1 -1
  1138. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  1139. package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
  1140. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  1141. package/lib/esm/tile/map/MapTileTree.js +30 -21
  1142. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  1143. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
  1144. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  1145. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +4 -6
  1146. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  1147. package/lib/esm/tile/map/MapTilingScheme.d.ts +7 -2
  1148. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  1149. package/lib/esm/tile/map/MapTilingScheme.js +22 -9
  1150. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  1151. package/lib/esm/tile/map/QuadId.d.ts +1 -0
  1152. package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
  1153. package/lib/esm/tile/map/QuadId.js +2 -1
  1154. package/lib/esm/tile/map/QuadId.js.map +1 -1
  1155. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
  1156. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  1157. package/lib/esm/tile/map/WmsCapabilities.d.ts +8 -1
  1158. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  1159. package/lib/esm/tile/map/WmsCapabilities.js +37 -3
  1160. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  1161. package/lib/esm/tile/map/WmtsCapabilities.d.ts +11 -1
  1162. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  1163. package/lib/esm/tile/map/WmtsCapabilities.js +20 -6
  1164. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  1165. package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
  1166. package/lib/esm/tools/EditManipulator.js +1 -1
  1167. package/lib/esm/tools/EditManipulator.js.map +1 -1
  1168. package/lib/esm/tools/ElementSetTool.js +2 -2
  1169. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  1170. package/lib/esm/tools/PrimitiveTool.d.ts +4 -4
  1171. package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
  1172. package/lib/esm/tools/PrimitiveTool.js +2 -2
  1173. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  1174. package/lib/esm/tools/Tool.d.ts +29 -1
  1175. package/lib/esm/tools/Tool.d.ts.map +1 -1
  1176. package/lib/esm/tools/Tool.js +66 -0
  1177. package/lib/esm/tools/Tool.js.map +1 -1
  1178. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  1179. package/lib/esm/tools/ToolAdmin.js +20 -10
  1180. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  1181. package/lib/esm/tools/ViewTool.js +1 -1
  1182. package/lib/esm/tools/ViewTool.js.map +1 -1
  1183. package/lib/esm/webgl.d.ts +5 -0
  1184. package/lib/esm/webgl.d.ts.map +1 -1
  1185. package/lib/esm/webgl.js +5 -0
  1186. package/lib/esm/webgl.js.map +1 -1
  1187. package/lib/public/locales/en/iModelJs.json +3 -1
  1188. package/package.json +32 -27
  1189. package/lib/cjs/RealityDataAccessProps.d.ts +0 -42
  1190. package/lib/cjs/RealityDataAccessProps.d.ts.map +0 -1
  1191. package/lib/cjs/RealityDataAccessProps.js +0 -23
  1192. package/lib/cjs/RealityDataAccessProps.js.map +0 -1
  1193. package/lib/cjs/RealityDataConnection.d.ts +0 -31
  1194. package/lib/cjs/RealityDataConnection.d.ts.map +0 -1
  1195. package/lib/cjs/RealityDataConnection.js +0 -101
  1196. package/lib/cjs/RealityDataConnection.js.map +0 -1
  1197. package/lib/cjs/extension/Extension.d.ts +0 -39
  1198. package/lib/cjs/extension/Extension.d.ts.map +0 -1
  1199. package/lib/cjs/extension/Extension.js +0 -39
  1200. package/lib/cjs/extension/Extension.js.map +0 -1
  1201. package/lib/cjs/extension/ExtensionAdmin.d.ts +0 -70
  1202. package/lib/cjs/extension/ExtensionAdmin.d.ts.map +0 -1
  1203. package/lib/cjs/extension/ExtensionAdmin.js +0 -105
  1204. package/lib/cjs/extension/ExtensionAdmin.js.map +0 -1
  1205. package/lib/cjs/extension/ExtensionHost.d.ts +0 -22
  1206. package/lib/cjs/extension/ExtensionHost.d.ts.map +0 -1
  1207. package/lib/cjs/extension/ExtensionHost.js +0 -24
  1208. package/lib/cjs/extension/ExtensionHost.js.map +0 -1
  1209. package/lib/cjs/extension/ExtensionImpl.d.ts +0 -16
  1210. package/lib/cjs/extension/ExtensionImpl.d.ts.map +0 -1
  1211. package/lib/cjs/extension/ExtensionImpl.js +0 -40
  1212. package/lib/cjs/extension/ExtensionImpl.js.map +0 -1
  1213. package/lib/cjs/extension/ExtensionLoader.d.ts +0 -20
  1214. package/lib/cjs/extension/ExtensionLoader.d.ts.map +0 -1
  1215. package/lib/cjs/extension/ExtensionLoader.js.map +0 -1
  1216. package/lib/cjs/extension/ExtensionRuntime.d.ts +0 -2
  1217. package/lib/cjs/extension/ExtensionRuntime.d.ts.map +0 -1
  1218. package/lib/cjs/extension/ExtensionRuntime.js +0 -71
  1219. package/lib/cjs/extension/ExtensionRuntime.js.map +0 -1
  1220. package/lib/cjs/extension/extensions.d.ts +0 -18
  1221. package/lib/cjs/extension/extensions.d.ts.map +0 -1
  1222. package/lib/cjs/extension/extensions.js +0 -35
  1223. package/lib/cjs/extension/extensions.js.map +0 -1
  1224. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts +0 -39
  1225. package/lib/cjs/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1226. package/lib/cjs/tile/map/MapLayerSettingsService.js +0 -190
  1227. package/lib/cjs/tile/map/MapLayerSettingsService.js.map +0 -1
  1228. package/lib/esm/RealityDataAccessProps.d.ts +0 -42
  1229. package/lib/esm/RealityDataAccessProps.d.ts.map +0 -1
  1230. package/lib/esm/RealityDataAccessProps.js +0 -20
  1231. package/lib/esm/RealityDataAccessProps.js.map +0 -1
  1232. package/lib/esm/RealityDataConnection.d.ts +0 -31
  1233. package/lib/esm/RealityDataConnection.d.ts.map +0 -1
  1234. package/lib/esm/RealityDataConnection.js +0 -98
  1235. package/lib/esm/RealityDataConnection.js.map +0 -1
  1236. package/lib/esm/extension/Extension.d.ts +0 -39
  1237. package/lib/esm/extension/Extension.d.ts.map +0 -1
  1238. package/lib/esm/extension/Extension.js +0 -38
  1239. package/lib/esm/extension/Extension.js.map +0 -1
  1240. package/lib/esm/extension/ExtensionAdmin.d.ts +0 -70
  1241. package/lib/esm/extension/ExtensionAdmin.d.ts.map +0 -1
  1242. package/lib/esm/extension/ExtensionAdmin.js +0 -101
  1243. package/lib/esm/extension/ExtensionAdmin.js.map +0 -1
  1244. package/lib/esm/extension/ExtensionHost.d.ts +0 -22
  1245. package/lib/esm/extension/ExtensionHost.d.ts.map +0 -1
  1246. package/lib/esm/extension/ExtensionHost.js +0 -20
  1247. package/lib/esm/extension/ExtensionHost.js.map +0 -1
  1248. package/lib/esm/extension/ExtensionImpl.d.ts +0 -16
  1249. package/lib/esm/extension/ExtensionImpl.d.ts.map +0 -1
  1250. package/lib/esm/extension/ExtensionImpl.js +0 -35
  1251. package/lib/esm/extension/ExtensionImpl.js.map +0 -1
  1252. package/lib/esm/extension/ExtensionLoader.d.ts +0 -20
  1253. package/lib/esm/extension/ExtensionLoader.d.ts.map +0 -1
  1254. package/lib/esm/extension/ExtensionLoader.js.map +0 -1
  1255. package/lib/esm/extension/ExtensionRuntime.d.ts +0 -2
  1256. package/lib/esm/extension/ExtensionRuntime.d.ts.map +0 -1
  1257. package/lib/esm/extension/ExtensionRuntime.js +0 -69
  1258. package/lib/esm/extension/ExtensionRuntime.js.map +0 -1
  1259. package/lib/esm/extension/extensions.d.ts +0 -18
  1260. package/lib/esm/extension/extensions.d.ts.map +0 -1
  1261. package/lib/esm/extension/extensions.js +0 -23
  1262. package/lib/esm/extension/extensions.js.map +0 -1
  1263. package/lib/esm/tile/map/MapLayerSettingsService.d.ts +0 -39
  1264. package/lib/esm/tile/map/MapLayerSettingsService.d.ts.map +0 -1
  1265. package/lib/esm/tile/map/MapLayerSettingsService.js +0 -186
  1266. package/lib/esm/tile/map/MapLayerSettingsService.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ImageUtil.js","sourceRoot":"","sources":["../../src/ImageUtil.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 Rendering\r\n */\r\n\r\nimport { ProcessDetector } from \"@itwin/core-bentley\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport { ImageBuffer, ImageBufferFormat, ImageSource, ImageSourceFormat } from \"@itwin/core-common\";\r\nimport { ViewRect } from \"./ViewRect\";\r\n\r\ninterface Rgba {\r\n r: number;\r\n g: number;\r\n b: number;\r\n a: number;\r\n}\r\n\r\nconst scratchRgba = { r: 0, g: 0, b: 0, a: 0 };\r\n\r\nfunction rgbaFromAlpha(rgba: Rgba, src: Uint8Array, idx: number): number {\r\n rgba.r = rgba.g = rgba.b = rgba.a = src[idx];\r\n return idx + 1;\r\n}\r\n\r\nfunction rgbaFromRgb(rgba: Rgba, src: Uint8Array, idx: number): number {\r\n rgba.r = src[idx + 0];\r\n rgba.g = src[idx + 1];\r\n rgba.b = src[idx + 2];\r\n rgba.a = 255;\r\n return idx + 3;\r\n}\r\n\r\nfunction rgbaFromRgba(rgba: Rgba, src: Uint8Array, idx: number): number {\r\n rgbaFromRgb(rgba, src, idx);\r\n rgba.a = src[idx + 3];\r\n return idx + 4;\r\n}\r\n\r\n/** Resize a canvas to a desired size. The final size will be targetSize plus barSize. The original canvas is left untouched and a new, resized canvas with potential side bars is returned.\r\n * @param canvasIn the source [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) to resize.\r\n * @param targetSize the desired new size for the canvas image.\r\n * @param barSize total size of side bars to add to the image in width and height; defaults to (0, 0). For example, if you specify (2, 0), a 1 pixel side bar will be added to the left and right sides of the resized image. If an odd dimension is specified, the left or upper side of the image will be one pixel larger than the opposite side. For example, if you specify (1, 0), a 1 pixel side bar will be added to the left side of the image and a 0 pixel side bar will be added to the right side of the image.\r\n * @param barStyle CSS style string to apply to any side bars; defaults to \"#C0C0C0\", which is silver.\r\n * @returns an [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) object containing the resized image and any requested side bars.\r\n * @public\r\n */\r\nexport function canvasToResizedCanvasWithBars(canvasIn: HTMLCanvasElement, targetSize: Point2d, barSize = new Point2d(0, 0), barStyle = \"#C0C0C0\"): HTMLCanvasElement {\r\n const canvasOut = document.createElement(\"canvas\");\r\n canvasOut.width = targetSize.x + barSize.x;\r\n canvasOut.height = targetSize.y + barSize.y;\r\n\r\n let adjustImageX = barSize.x / 2;\r\n let adjustImageY = barSize.y / 2;\r\n\r\n if (1 === barSize.x % 2) {\r\n adjustImageX += 0.5;\r\n }\r\n if (1 === barSize.y % 2) {\r\n adjustImageY += 0.5;\r\n }\r\n\r\n const context = canvasOut.getContext(\"2d\")!;\r\n context.fillStyle = barStyle;\r\n context.fillRect(0, 0, canvasOut.width, canvasOut.height);\r\n context.drawImage(canvasIn, adjustImageX, adjustImageY, targetSize.x, targetSize.y);\r\n return canvasOut;\r\n}\r\n\r\n/** Create a canvas element with the same dimensions and contents as an image buffer.\r\n * @param buffer the source [[ImageBuffer]] object from which the [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) object will be constructed.\r\n * @param preserveAlpha If false, the alpha channel will be set to 255 (fully opaque). This is recommended when converting an already-blended image (e.g., one obtained from [[Viewport.readImage]]).\r\n * @returns an [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) object containing the contents of the source image buffer, or undefined if the conversion fails.\r\n * @public\r\n */\r\nexport function imageBufferToCanvas(buffer: ImageBuffer, preserveAlpha: boolean = true): HTMLCanvasElement | undefined {\r\n const canvas = document.createElement(\"canvas\");\r\n if (null === canvas)\r\n return undefined;\r\n\r\n canvas.width = buffer.width;\r\n canvas.height = buffer.height;\r\n\r\n const context = canvas.getContext(\"2d\");\r\n if (null === context)\r\n return undefined;\r\n\r\n const imageData = context.createImageData(buffer.width, buffer.height);\r\n const extractRgba = ImageBufferFormat.Alpha === buffer.format ? rgbaFromAlpha : (ImageBufferFormat.Rgb === buffer.format ? rgbaFromRgb : rgbaFromRgba);\r\n\r\n const bufferData = buffer.data;\r\n let i = 0;\r\n let j = 0;\r\n const rgba = scratchRgba;\r\n while (i < bufferData.length) {\r\n i = extractRgba(rgba, bufferData, i);\r\n imageData.data[j + 0] = rgba.r;\r\n imageData.data[j + 1] = rgba.g;\r\n imageData.data[j + 2] = rgba.b;\r\n imageData.data[j + 3] = preserveAlpha ? rgba.a : 0xff;\r\n j += 4;\r\n }\r\n\r\n context.putImageData(imageData, 0, 0);\r\n return canvas;\r\n}\r\n\r\n/** Create an ImageBuffer in the specified format with the same dimensions and contents as a canvas.\r\n * @param canvas the source [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) object from which the [[ImageBuffer]] object will be constructed.\r\n * @param format the desired format of the created ImageBuffer; defaults to [[ImageBufferFormat.Rgba]].\r\n * @returns an [[ImageBuffer]] object containing the contents of the source canvas, or undefined if the conversion fails.\r\n * @public\r\n */\r\nexport function canvasToImageBuffer(canvas: HTMLCanvasElement, format = ImageBufferFormat.Rgba): ImageBuffer | undefined {\r\n const context = canvas.getContext(\"2d\");\r\n if (null === context)\r\n return undefined;\r\n\r\n const imageData = context.getImageData(0, 0, canvas.width, canvas.height);\r\n\r\n let imageBufferData: Uint8Array | undefined;\r\n\r\n if (ImageBufferFormat.Rgba === format) {\r\n imageBufferData = new Uint8Array(imageData.data.length);\r\n } else if (ImageBufferFormat.Rgb === format) {\r\n imageBufferData = new Uint8Array((imageData.data.length / 4) * 3);\r\n } else if (ImageBufferFormat.Alpha === format) {\r\n imageBufferData = new Uint8Array(imageData.data.length / 4);\r\n }\r\n\r\n if (undefined === imageBufferData)\r\n return undefined;\r\n\r\n let i = 0;\r\n let j = 0;\r\n while (i < imageData.data.length) {\r\n if (ImageBufferFormat.Rgba === format) {\r\n imageBufferData[j + 0] = imageData.data[i + 0];\r\n imageBufferData[j + 1] = imageData.data[i + 1];\r\n imageBufferData[j + 2] = imageData.data[i + 2];\r\n imageBufferData[j + 3] = imageData.data[i + 3];\r\n j += 4;\r\n } else if (ImageBufferFormat.Rgb === format) {\r\n imageBufferData[j + 0] = imageData.data[i + 0];\r\n imageBufferData[j + 1] = imageData.data[i + 1];\r\n imageBufferData[j + 2] = imageData.data[i + 2];\r\n j += 3;\r\n } else if (ImageBufferFormat.Alpha === format) {\r\n imageBufferData[j] = imageData.data[i + 3];\r\n j++;\r\n }\r\n i += 4;\r\n }\r\n\r\n return ImageBuffer.create(imageBufferData, format, canvas.width);\r\n}\r\n\r\n/** Get a string describing the mime type associated with an ImageSource format.\r\n * @public\r\n */\r\nexport function getImageSourceMimeType(format: ImageSourceFormat): string {\r\n\r\n switch (format) {\r\n case ImageSourceFormat.Jpeg:\r\n return \"image/jpeg\";\r\n case ImageSourceFormat.Png:\r\n return \"image/png\";\r\n case ImageSourceFormat.Svg:\r\n return \"image/svg+xml;charset=utf-8\";\r\n }\r\n return \"\";\r\n}\r\n\r\n/** Get the ImageSourceFormat corresponding to the mime type string, or undefined if the string does not identify a supported ImageSourceFormat.\r\n * @public\r\n */\r\nexport function getImageSourceFormatForMimeType(mimeType: string): ImageSourceFormat | undefined {\r\n switch (mimeType) {\r\n case \"image/jpeg\": return ImageSourceFormat.Jpeg;\r\n case \"image/png\": return ImageSourceFormat.Png;\r\n case \"image/svg+xml;charset=utf-8\": return ImageSourceFormat.Svg;\r\n default: return undefined;\r\n }\r\n}\r\n\r\n/** Extract an html Image element from a binary jpeg or png.\r\n * @param source The ImageSource containing the binary jpeg or png data.\r\n * @returns a Promise which resolves to an HTMLImageElement containing the uncompressed bitmap image in RGBA format.\r\n * @public\r\n */\r\nexport async function imageElementFromImageSource(source: ImageSource): Promise<HTMLImageElement> {\r\n const blob = new Blob([source.data], { type: getImageSourceMimeType(source.format) });\r\n return imageElementFromUrl(URL.createObjectURL(blob));\r\n}\r\n\r\n/** Create an html Image element from a URL.\r\n * @param url The URL pointing to the image data.\r\n * @returns A Promise resolving to an HTMLImageElement when the image data has been loaded from the URL.\r\n * @see tryImageElementFromUrl.\r\n * @public\r\n */\r\nexport async function imageElementFromUrl(url: string): Promise<HTMLImageElement> {\r\n return new Promise((resolve: (image: HTMLImageElement) => void, reject) => {\r\n const image = new Image();\r\n image.onload = () => resolve(image);\r\n\r\n // The \"error\" produced by Image is not an Error. It looks like an Event, but isn't one.\r\n image.onerror = () => reject(new Error(\"Failed to create image from url\"));\r\n image.src = url;\r\n });\r\n}\r\n\r\n/** Try to create an html Image element from a URL.\r\n * @param url The URL pointing to the image data.\r\n * @returns A Promise resolving to an HTMLImageElement when the image data has been loaded from the URL, or to `undefined` if an exception occurred.\r\n * @see imageElementFromUrl\r\n * @public\r\n */\r\nexport async function tryImageElementFromUrl(url: string): Promise<HTMLImageElement | undefined> {\r\n try {\r\n return await imageElementFromUrl(url);\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\n/**\r\n * Extract the dimensions of the jpeg or png data encoded in an ImageSource.\r\n * @param source The ImageSource containing the binary jpeg or png data.\r\n * @returns a Promise resolving to a Point2d of which x corresponds to the integer width of the uncompressed bitmap and y to the height.\r\n * @public\r\n */\r\nexport async function extractImageSourceDimensions(source: ImageSource): Promise<Point2d> {\r\n const image = await imageElementFromImageSource(source);\r\n return new Point2d(image.naturalWidth, image.naturalHeight);\r\n}\r\n\r\n/**\r\n * Produces a data url in \"image/png\" format from the contents of an ImageBuffer.\r\n * @param buffer The ImageBuffer, of any format.\r\n * @param preserveAlpha If false, the alpha channel will be set to 255 (fully opaque). This is recommended when converting an already-blended image (e.g., one obtained from [[Viewport.readImage]]).\r\n * @returns a data url as a string suitable for setting as the `src` property of an HTMLImageElement, or undefined if the url could not be created.\r\n * @public\r\n */\r\nexport function imageBufferToPngDataUrl(buffer: ImageBuffer, preserveAlpha = true): string | undefined {\r\n // The default format (and the only format required to be supported) for toDataUrl() is \"image/png\".\r\n const canvas = imageBufferToCanvas(buffer, preserveAlpha);\r\n return undefined !== canvas ? canvas.toDataURL() : undefined;\r\n}\r\n\r\n/**\r\n * Converts the contents of an ImageBuffer to PNG format.\r\n * @param buffer The ImageBuffer, of any format.\r\n * @param preserveAlpha If false, the alpha channel will be set to 255 (fully opaque). This is recommended when converting an already-blended image (e.g., one obtained from [[Viewport.readImage]]).\r\n * @returns a base64-encoded string representing the image as a PNG, or undefined if the conversion failed.\r\n * @public\r\n */\r\nexport function imageBufferToBase64EncodedPng(buffer: ImageBuffer, preserveAlpha = true): string | undefined {\r\n const urlPrefix = \"data:image/png;base64,\";\r\n const url = imageBufferToPngDataUrl(buffer, preserveAlpha);\r\n if (undefined === url || !url.startsWith(urlPrefix))\r\n return undefined;\r\n\r\n return url.substring(urlPrefix.length);\r\n}\r\n\r\n/** Open an image specified as a data URL in a new window or tab. Works around differences between browsers and Electron.\r\n * @param url The base64-encoded image URL.\r\n * @param title An optional title to apply to the new window.\r\n * @beta\r\n */\r\nexport function openImageDataUrlInNewWindow(url: string, title?: string): void {\r\n if (ProcessDetector.isElectronAppFrontend) {\r\n window.open(url, title);\r\n } else {\r\n const win = window.open();\r\n if (null === win)\r\n return;\r\n\r\n const div = win.document.createElement(\"div\");\r\n div.innerHTML = `<img src='${url}'/>`;\r\n win.document.body.append(div);\r\n if (undefined !== title)\r\n win.document.title = title;\r\n }\r\n}\r\n\r\n/** Determine the maximum [[ViewRect]] that can be fitted and centered in specified ViewRect given a required aspect ratio.\r\n * @param viewRect The rectangle in which the returned rectangle is to be centered and fitted.\r\n * @param aspectRatio Ratio of width to height.\r\n * @returns A ViewRect centered in the input rectangle.\r\n * @public\r\n */\r\nexport function getCenteredViewRect(viewRect: ViewRect, aspectRatio = 1.4): ViewRect {\r\n // Determine scale that ensures ability to return an image with the prescribed aspectRatio\r\n const scale = Math.min(viewRect.width / aspectRatio, viewRect.height);\r\n const finalWidth = scale * aspectRatio;\r\n const finalHeight = scale;\r\n const left = (viewRect.width - finalWidth) / 2.0;\r\n const right = left + finalWidth;\r\n const top = (viewRect.height - finalHeight) / 2.0;\r\n const bottom = top + finalHeight;\r\n return new ViewRect(left, top, right, bottom);\r\n}\r\n\r\n/** Produce a jpeg compressed to no more than specified bytes and of no less than specified quality.\r\n * @param canvas Canvas containing the image to be compressed.\r\n * @param maxBytes Maximum size of output jpeg in bytes.\r\n * @param minCompressionQuality The minimum acceptable image quality as a number between 0 (lowest quality) and 1 (highest quality).\r\n * @returns A [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) for the image, or `undefined` if the compression and size constraints could not be met.\r\n * @public\r\n */\r\nexport function getCompressedJpegFromCanvas(canvas: HTMLCanvasElement, maxBytes = 60000, minCompressionQuality = 0.1): string | undefined {\r\n const decrements = 0.1; // Decrements of quality\r\n const bytesPerCharacter = 2; // Assume 16-bit per character\r\n let quality = 1.0; // JPEG Compression quality\r\n\r\n while (quality > minCompressionQuality) {\r\n const data = canvas.toDataURL(\"image/jpeg\", quality);\r\n // If we are less than 60 Kb, we are good\r\n if (data.length * bytesPerCharacter < maxBytes)\r\n return data;\r\n\r\n quality -= decrements;\r\n }\r\n\r\n return undefined;\r\n}\r\n"]}
1
+ {"version":3,"file":"ImageUtil.js","sourceRoot":"","sources":["../../src/ImageUtil.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 Rendering\r\n */\r\n\r\nimport { ProcessDetector } from \"@itwin/core-bentley\";\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport { ImageBuffer, ImageBufferFormat, ImageSource, ImageSourceFormat } from \"@itwin/core-common\";\r\nimport { ViewRect } from \"./ViewRect\";\r\n\r\ninterface Rgba {\r\n r: number;\r\n g: number;\r\n b: number;\r\n a: number;\r\n}\r\n\r\nconst scratchRgba = { r: 0, g: 0, b: 0, a: 0 };\r\n\r\nfunction rgbaFromAlpha(rgba: Rgba, src: Uint8Array, idx: number): number {\r\n rgba.r = rgba.g = rgba.b = rgba.a = src[idx];\r\n return idx + 1;\r\n}\r\n\r\nfunction rgbaFromRgb(rgba: Rgba, src: Uint8Array, idx: number): number {\r\n rgba.r = src[idx + 0];\r\n rgba.g = src[idx + 1];\r\n rgba.b = src[idx + 2];\r\n rgba.a = 255;\r\n return idx + 3;\r\n}\r\n\r\nfunction rgbaFromRgba(rgba: Rgba, src: Uint8Array, idx: number): number {\r\n rgbaFromRgb(rgba, src, idx);\r\n rgba.a = src[idx + 3];\r\n return idx + 4;\r\n}\r\n\r\n/** Resize a canvas to a desired size. The final size will be targetSize plus barSize. The original canvas is left untouched and a new, resized canvas with potential side bars is returned.\r\n * @param canvasIn the source [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) to resize.\r\n * @param targetSize the desired new size for the canvas image.\r\n * @param barSize total size of side bars to add to the image in width and height; defaults to (0, 0). For example, if you specify (2, 0), a 1 pixel side bar will be added to the left and right sides of the resized image. If an odd dimension is specified, the left or upper side of the image will be one pixel larger than the opposite side. For example, if you specify (1, 0), a 1 pixel side bar will be added to the left side of the image and a 0 pixel side bar will be added to the right side of the image.\r\n * @param barStyle CSS style string to apply to any side bars; defaults to \"#C0C0C0\", which is silver.\r\n * @returns an [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) object containing the resized image and any requested side bars.\r\n * @public\r\n */\r\nexport function canvasToResizedCanvasWithBars(canvasIn: HTMLCanvasElement, targetSize: Point2d, barSize = new Point2d(0, 0), barStyle = \"#C0C0C0\"): HTMLCanvasElement {\r\n const canvasOut = document.createElement(\"canvas\");\r\n canvasOut.width = targetSize.x + barSize.x;\r\n canvasOut.height = targetSize.y + barSize.y;\r\n\r\n let adjustImageX = barSize.x / 2;\r\n let adjustImageY = barSize.y / 2;\r\n\r\n if (1 === barSize.x % 2) {\r\n adjustImageX += 0.5;\r\n }\r\n if (1 === barSize.y % 2) {\r\n adjustImageY += 0.5;\r\n }\r\n\r\n const context = canvasOut.getContext(\"2d\")!;\r\n context.fillStyle = barStyle;\r\n context.fillRect(0, 0, canvasOut.width, canvasOut.height);\r\n context.drawImage(canvasIn, adjustImageX, adjustImageY, targetSize.x, targetSize.y);\r\n return canvasOut;\r\n}\r\n\r\n/** Create a canvas element with the same dimensions and contents as an image buffer.\r\n * @param buffer the source [[ImageBuffer]] object from which the [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) object will be constructed.\r\n * @param preserveAlpha If false, the alpha channel will be set to 255 (fully opaque). This is recommended when converting an already-blended image (e.g., one obtained from [[Viewport.readImageBuffer]]).\r\n * @returns an [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) object containing the contents of the source image buffer, or undefined if the conversion fails.\r\n * @public\r\n */\r\nexport function imageBufferToCanvas(buffer: ImageBuffer, preserveAlpha: boolean = true): HTMLCanvasElement | undefined {\r\n const canvas = document.createElement(\"canvas\");\r\n if (null === canvas)\r\n return undefined;\r\n\r\n canvas.width = buffer.width;\r\n canvas.height = buffer.height;\r\n\r\n const context = canvas.getContext(\"2d\");\r\n if (null === context)\r\n return undefined;\r\n\r\n const imageData = context.createImageData(buffer.width, buffer.height);\r\n const extractRgba = ImageBufferFormat.Alpha === buffer.format ? rgbaFromAlpha : (ImageBufferFormat.Rgb === buffer.format ? rgbaFromRgb : rgbaFromRgba);\r\n\r\n const bufferData = buffer.data;\r\n let i = 0;\r\n let j = 0;\r\n const rgba = scratchRgba;\r\n while (i < bufferData.length) {\r\n i = extractRgba(rgba, bufferData, i);\r\n imageData.data[j + 0] = rgba.r;\r\n imageData.data[j + 1] = rgba.g;\r\n imageData.data[j + 2] = rgba.b;\r\n imageData.data[j + 3] = preserveAlpha ? rgba.a : 0xff;\r\n j += 4;\r\n }\r\n\r\n context.putImageData(imageData, 0, 0);\r\n return canvas;\r\n}\r\n\r\n/** Create an ImageBuffer in the specified format with the same dimensions and contents as a canvas.\r\n * @param canvas the source [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) object from which the [[ImageBuffer]] object will be constructed.\r\n * @param format the desired format of the created ImageBuffer; defaults to [[ImageBufferFormat.Rgba]].\r\n * @returns an [[ImageBuffer]] object containing the contents of the source canvas, or undefined if the conversion fails.\r\n * @public\r\n */\r\nexport function canvasToImageBuffer(canvas: HTMLCanvasElement, format = ImageBufferFormat.Rgba): ImageBuffer | undefined {\r\n const context = canvas.getContext(\"2d\");\r\n if (null === context)\r\n return undefined;\r\n\r\n const imageData = context.getImageData(0, 0, canvas.width, canvas.height);\r\n\r\n let imageBufferData: Uint8Array | undefined;\r\n\r\n if (ImageBufferFormat.Rgba === format) {\r\n imageBufferData = new Uint8Array(imageData.data.length);\r\n } else if (ImageBufferFormat.Rgb === format) {\r\n imageBufferData = new Uint8Array((imageData.data.length / 4) * 3);\r\n } else if (ImageBufferFormat.Alpha === format) {\r\n imageBufferData = new Uint8Array(imageData.data.length / 4);\r\n }\r\n\r\n if (undefined === imageBufferData)\r\n return undefined;\r\n\r\n let i = 0;\r\n let j = 0;\r\n while (i < imageData.data.length) {\r\n if (ImageBufferFormat.Rgba === format) {\r\n imageBufferData[j + 0] = imageData.data[i + 0];\r\n imageBufferData[j + 1] = imageData.data[i + 1];\r\n imageBufferData[j + 2] = imageData.data[i + 2];\r\n imageBufferData[j + 3] = imageData.data[i + 3];\r\n j += 4;\r\n } else if (ImageBufferFormat.Rgb === format) {\r\n imageBufferData[j + 0] = imageData.data[i + 0];\r\n imageBufferData[j + 1] = imageData.data[i + 1];\r\n imageBufferData[j + 2] = imageData.data[i + 2];\r\n j += 3;\r\n } else if (ImageBufferFormat.Alpha === format) {\r\n imageBufferData[j] = imageData.data[i + 3];\r\n j++;\r\n }\r\n i += 4;\r\n }\r\n\r\n return ImageBuffer.create(imageBufferData, format, canvas.width);\r\n}\r\n\r\n/** Get a string describing the mime type associated with an ImageSource format.\r\n * @public\r\n */\r\nexport function getImageSourceMimeType(format: ImageSourceFormat): string {\r\n\r\n switch (format) {\r\n case ImageSourceFormat.Jpeg:\r\n return \"image/jpeg\";\r\n case ImageSourceFormat.Png:\r\n return \"image/png\";\r\n case ImageSourceFormat.Svg:\r\n return \"image/svg+xml;charset=utf-8\";\r\n }\r\n return \"\";\r\n}\r\n\r\n/** Get the ImageSourceFormat corresponding to the mime type string, or undefined if the string does not identify a supported ImageSourceFormat.\r\n * @public\r\n */\r\nexport function getImageSourceFormatForMimeType(mimeType: string): ImageSourceFormat | undefined {\r\n switch (mimeType) {\r\n case \"image/jpeg\": return ImageSourceFormat.Jpeg;\r\n case \"image/png\": return ImageSourceFormat.Png;\r\n case \"image/svg+xml;charset=utf-8\": return ImageSourceFormat.Svg;\r\n default: return undefined;\r\n }\r\n}\r\n\r\n/** Extract an html Image element from a binary jpeg or png.\r\n * @param source The ImageSource containing the binary jpeg or png data.\r\n * @returns a Promise which resolves to an HTMLImageElement containing the uncompressed bitmap image in RGBA format.\r\n * @public\r\n */\r\nexport async function imageElementFromImageSource(source: ImageSource): Promise<HTMLImageElement> {\r\n const blob = new Blob([source.data], { type: getImageSourceMimeType(source.format) });\r\n return imageElementFromUrl(URL.createObjectURL(blob));\r\n}\r\n\r\n/** Create an html Image element from a URL.\r\n * @param url The URL pointing to the image data.\r\n * @returns A Promise resolving to an HTMLImageElement when the image data has been loaded from the URL.\r\n * @see tryImageElementFromUrl.\r\n * @public\r\n */\r\nexport async function imageElementFromUrl(url: string): Promise<HTMLImageElement> {\r\n // We must set crossorigin property so that images loaded from same origin can be used with texImage2d.\r\n // We must do that outside of the promise constructor or it won't work, for reasons.\r\n const image = new Image();\r\n image.crossOrigin = \"anonymous\";\r\n return new Promise((resolve: (image: HTMLImageElement) => void, reject) => {\r\n image.onload = () => resolve(image);\r\n\r\n // The \"error\" produced by Image is not an Error. It looks like an Event, but isn't one.\r\n image.onerror = () => reject(new Error(\"Failed to create image from url\"));\r\n image.src = url;\r\n });\r\n}\r\n\r\n/** Try to create an html Image element from a URL.\r\n * @param url The URL pointing to the image data.\r\n * @returns A Promise resolving to an HTMLImageElement when the image data has been loaded from the URL, or to `undefined` if an exception occurred.\r\n * @see imageElementFromUrl\r\n * @public\r\n */\r\nexport async function tryImageElementFromUrl(url: string): Promise<HTMLImageElement | undefined> {\r\n try {\r\n return await imageElementFromUrl(url);\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\n/**\r\n * Extract the dimensions of the jpeg or png data encoded in an ImageSource.\r\n * @param source The ImageSource containing the binary jpeg or png data.\r\n * @returns a Promise resolving to a Point2d of which x corresponds to the integer width of the uncompressed bitmap and y to the height.\r\n * @public\r\n */\r\nexport async function extractImageSourceDimensions(source: ImageSource): Promise<Point2d> {\r\n const image = await imageElementFromImageSource(source);\r\n return new Point2d(image.naturalWidth, image.naturalHeight);\r\n}\r\n\r\n/**\r\n * Produces a data url in \"image/png\" format from the contents of an ImageBuffer.\r\n * @param buffer The ImageBuffer, of any format.\r\n * @param preserveAlpha If false, the alpha channel will be set to 255 (fully opaque). This is recommended when converting an already-blended image (e.g., one obtained from [[Viewport.readImageBuffer]]).\r\n * @returns a data url as a string suitable for setting as the `src` property of an HTMLImageElement, or undefined if the url could not be created.\r\n * @public\r\n */\r\nexport function imageBufferToPngDataUrl(buffer: ImageBuffer, preserveAlpha = true): string | undefined {\r\n // The default format (and the only format required to be supported) for toDataUrl() is \"image/png\".\r\n const canvas = imageBufferToCanvas(buffer, preserveAlpha);\r\n return undefined !== canvas ? canvas.toDataURL() : undefined;\r\n}\r\n\r\n/**\r\n * Converts the contents of an ImageBuffer to PNG format.\r\n * @param buffer The ImageBuffer, of any format.\r\n * @param preserveAlpha If false, the alpha channel will be set to 255 (fully opaque). This is recommended when converting an already-blended image (e.g., one obtained from [[Viewport.readImageBuffer]]).\r\n * @returns a base64-encoded string representing the image as a PNG, or undefined if the conversion failed.\r\n * @public\r\n */\r\nexport function imageBufferToBase64EncodedPng(buffer: ImageBuffer, preserveAlpha = true): string | undefined {\r\n const urlPrefix = \"data:image/png;base64,\";\r\n const url = imageBufferToPngDataUrl(buffer, preserveAlpha);\r\n if (undefined === url || !url.startsWith(urlPrefix))\r\n return undefined;\r\n\r\n return url.substring(urlPrefix.length);\r\n}\r\n\r\n/** Open an image specified as a data URL in a new window or tab. Works around differences between browsers and Electron.\r\n * @param url The base64-encoded image URL.\r\n * @param title An optional title to apply to the new window.\r\n * @beta\r\n */\r\nexport function openImageDataUrlInNewWindow(url: string, title?: string): void {\r\n if (ProcessDetector.isElectronAppFrontend) {\r\n window.open(url, title);\r\n } else {\r\n const win = window.open();\r\n if (null === win)\r\n return;\r\n\r\n const div = win.document.createElement(\"div\");\r\n div.innerHTML = `<img src='${url}'/>`;\r\n win.document.body.append(div);\r\n if (undefined !== title)\r\n win.document.title = title;\r\n }\r\n}\r\n\r\n/** Determine the maximum [[ViewRect]] that can be fitted and centered in specified ViewRect given a required aspect ratio.\r\n * @param viewRect The rectangle in which the returned rectangle is to be centered and fitted.\r\n * @param aspectRatio Ratio of width to height.\r\n * @returns A ViewRect centered in the input rectangle.\r\n * @public\r\n */\r\nexport function getCenteredViewRect(viewRect: ViewRect, aspectRatio = 1.4): ViewRect {\r\n // Determine scale that ensures ability to return an image with the prescribed aspectRatio\r\n const scale = Math.min(viewRect.width / aspectRatio, viewRect.height);\r\n const finalWidth = scale * aspectRatio;\r\n const finalHeight = scale;\r\n const left = (viewRect.width - finalWidth) / 2.0;\r\n const right = left + finalWidth;\r\n const top = (viewRect.height - finalHeight) / 2.0;\r\n const bottom = top + finalHeight;\r\n return new ViewRect(left, top, right, bottom);\r\n}\r\n\r\n/** Produce a jpeg compressed to no more than specified bytes and of no less than specified quality.\r\n * @param canvas Canvas containing the image to be compressed.\r\n * @param maxBytes Maximum size of output jpeg in bytes.\r\n * @param minCompressionQuality The minimum acceptable image quality as a number between 0 (lowest quality) and 1 (highest quality).\r\n * @returns A [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) for the image, or `undefined` if the compression and size constraints could not be met.\r\n * @public\r\n */\r\nexport function getCompressedJpegFromCanvas(canvas: HTMLCanvasElement, maxBytes = 60000, minCompressionQuality = 0.1): string | undefined {\r\n const decrements = 0.1; // Decrements of quality\r\n const bytesPerCharacter = 2; // Assume 16-bit per character\r\n let quality = 1.0; // JPEG Compression quality\r\n\r\n while (quality > minCompressionQuality) {\r\n const data = canvas.toDataURL(\"image/jpeg\", quality);\r\n // If we are less than 60 Kb, we are good\r\n if (data.length * bytesPerCharacter < maxBytes)\r\n return data;\r\n\r\n quality -= decrements;\r\n }\r\n\r\n return undefined;\r\n}\r\n"]}
@@ -7,7 +7,7 @@ export interface LocalHostIpcAppOpts {
7
7
  iModelApp?: IModelAppOptions;
8
8
  localhostIpcApp?: {
9
9
  socketPort?: number;
10
- socketPath?: string;
10
+ socketUrl?: URL;
11
11
  };
12
12
  }
13
13
  /**
@@ -15,6 +15,7 @@ export interface LocalHostIpcAppOpts {
15
15
  * @internal
16
16
  */
17
17
  export declare class LocalhostIpcApp {
18
+ static buildUrlForSocket(base: URL, path?: string): URL;
18
19
  static startup(opts: LocalHostIpcAppOpts): Promise<void>;
19
20
  }
20
21
  //# sourceMappingURL=LocalhostIpcApp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalhostIpcApp.d.ts","sourceRoot":"","sources":["../../src/LocalhostIpcApp.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,gBAAgB;AAChB,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B,eAAe,CAAC,EAAE;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAoCD;;;GAGG;AACH,qBAAa,eAAe;WACN,OAAO,CAAC,IAAI,EAAE,mBAAmB;CAKtD"}
1
+ {"version":3,"file":"LocalhostIpcApp.d.ts","sourceRoot":"","sources":["../../src/LocalhostIpcApp.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,gBAAgB;AAChB,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B,eAAe,CAAC,EAAE;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,GAAG,CAAC;KACjB,CAAC;CACH;AA+CD;;;GAGG;AACH,qBAAa,eAAe;WACZ,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,SAAQ,GAAG,GAAG;WAOzC,OAAO,CAAC,IAAI,EAAE,mBAAmB;CAKtD"}
@@ -5,20 +5,20 @@
5
5
  /** @packageDocumentation
6
6
  * @module IModelApp
7
7
  */
8
- import { IpcWebSocket, IpcWebSocketFrontend, IpcWebSocketTransport } from "@itwin/core-common";
8
+ import { IpcWebSocket, IpcWebSocketFrontend, IpcWebSocketMessage, IpcWebSocketTransport } from "@itwin/core-common";
9
9
  import { IpcApp } from "./IpcApp";
10
10
  class LocalTransport extends IpcWebSocketTransport {
11
11
  constructor(opts) {
12
12
  var _a, _b, _c, _d;
13
13
  super();
14
14
  this._pending = [];
15
- let url = "";
16
- if ((_a = opts === null || opts === void 0 ? void 0 : opts.localhostIpcApp) === null || _a === void 0 ? void 0 : _a.socketPath) {
17
- url = (_b = opts === null || opts === void 0 ? void 0 : opts.localhostIpcApp) === null || _b === void 0 ? void 0 : _b.socketPath;
15
+ let url;
16
+ if ((_a = opts === null || opts === void 0 ? void 0 : opts.localhostIpcApp) === null || _a === void 0 ? void 0 : _a.socketUrl) {
17
+ url = (_b = opts === null || opts === void 0 ? void 0 : opts.localhostIpcApp) === null || _b === void 0 ? void 0 : _b.socketUrl;
18
18
  }
19
19
  else {
20
20
  const port = (_d = (_c = opts === null || opts === void 0 ? void 0 : opts.localhostIpcApp) === null || _c === void 0 ? void 0 : _c.socketPort) !== null && _d !== void 0 ? _d : 3002;
21
- url = `ws://localhost:${port}/`;
21
+ url = new URL(`ws://localhost:${port}/`);
22
22
  }
23
23
  this._client = new WebSocket(url);
24
24
  this._client.addEventListener("open", () => {
@@ -27,13 +27,21 @@ class LocalTransport extends IpcWebSocketTransport {
27
27
  pending.forEach((m) => this.send(m));
28
28
  });
29
29
  this._client.addEventListener("message", async (event) => {
30
+ const message = await this.notifyIncoming(event.data);
31
+ if (IpcWebSocketMessage.skip(message)) {
32
+ return;
33
+ }
30
34
  for (const listener of IpcWebSocket.receivers)
31
- listener({}, JSON.parse(event.data));
35
+ listener({}, message);
32
36
  });
33
37
  }
34
38
  send(message) {
35
- var _a;
36
- ((_a = this._pending) === null || _a === void 0 ? void 0 : _a.push(message)) || this._client.send(JSON.stringify(message));
39
+ if (this._pending) {
40
+ this._pending.push(message);
41
+ return;
42
+ }
43
+ const parts = this.serialize(message);
44
+ parts.forEach((part) => this._client.send(part));
37
45
  }
38
46
  }
39
47
  /**
@@ -41,6 +49,12 @@ class LocalTransport extends IpcWebSocketTransport {
41
49
  * @internal
42
50
  */
43
51
  export class LocalhostIpcApp {
52
+ static buildUrlForSocket(base, path = "ipc") {
53
+ const url = new URL(base);
54
+ url.protocol = "ws";
55
+ url.pathname = [...url.pathname.split("/"), path].filter((v) => v).join("/");
56
+ return url;
57
+ }
44
58
  static async startup(opts) {
45
59
  IpcWebSocket.transport = new LocalTransport(opts);
46
60
  const ipc = new IpcWebSocketFrontend();
@@ -1 +1 @@
1
- {"version":3,"file":"LocalhostIpcApp.js","sourceRoot":"","sources":["../../src/LocalhostIpcApp.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAuB,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACpH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAalC,MAAM,cAAe,SAAQ,qBAAqB;IAIhD,YAAmB,IAAyB;;QAC1C,KAAK,EAAE,CAAC;QAHF,aAAQ,GAA2B,EAAE,CAAC;QAK5C,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,0CAAE,UAAU,EAAE;YACrC,GAAG,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,0CAAE,UAAU,CAAC;SACzC;aAAM;YACL,MAAM,IAAI,GAAG,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,0CAAE,UAAU,mCAAI,IAAI,CAAC;YACvD,GAAG,GAAG,kBAAkB,IAAI,GAAG,CAAC;SACjC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAS,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvD,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,SAAS;gBAC3C,QAAQ,CAAC,EAAW,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAc,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,IAAI,CAAC,OAA4B;;QACtC,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,CAAC,OAAO,CAAC,KAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,eAAe;IACnB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAyB;QACnD,YAAY,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelApp\r\n */\r\n\r\nimport { IpcWebSocket, IpcWebSocketFrontend, IpcWebSocketMessage, IpcWebSocketTransport } from \"@itwin/core-common\";\r\nimport { IpcApp } from \"./IpcApp\";\r\nimport { IModelAppOptions } from \"./IModelApp\";\r\n\r\n/** @internal */\r\nexport interface LocalHostIpcAppOpts {\r\n iModelApp?: IModelAppOptions;\r\n\r\n localhostIpcApp?: {\r\n socketPort?: number;\r\n socketPath?: string;\r\n };\r\n}\r\n\r\nclass LocalTransport extends IpcWebSocketTransport {\r\n private _client: WebSocket;\r\n private _pending?: IpcWebSocketMessage[] = [];\r\n\r\n public constructor(opts: LocalHostIpcAppOpts) {\r\n super();\r\n\r\n let url = \"\";\r\n if (opts?.localhostIpcApp?.socketPath) {\r\n url = opts?.localhostIpcApp?.socketPath;\r\n } else {\r\n const port = opts?.localhostIpcApp?.socketPort ?? 3002;\r\n url = `ws://localhost:${port}/`;\r\n }\r\n\r\n this._client = new WebSocket(url);\r\n\r\n this._client.addEventListener(\"open\", () => {\r\n const pending = this._pending!;\r\n this._pending = undefined;\r\n pending.forEach((m) => this.send(m));\r\n });\r\n\r\n this._client.addEventListener(\"message\", async (event) => {\r\n for (const listener of IpcWebSocket.receivers)\r\n listener({} as Event, JSON.parse(event.data as string));\r\n });\r\n }\r\n\r\n public send(message: IpcWebSocketMessage): void {\r\n this._pending?.push(message) || this._client.send(JSON.stringify(message));\r\n }\r\n}\r\n\r\n/**\r\n * To be used only by test applications that want to test web-based editing using localhost.\r\n * @internal\r\n */\r\nexport class LocalhostIpcApp {\r\n public static async startup(opts: LocalHostIpcAppOpts) {\r\n IpcWebSocket.transport = new LocalTransport(opts);\r\n const ipc = new IpcWebSocketFrontend();\r\n await IpcApp.startup(ipc, opts);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"LocalhostIpcApp.js","sourceRoot":"","sources":["../../src/LocalhostIpcApp.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelApp\r\n */\r\n\r\nimport { IpcWebSocket, IpcWebSocketFrontend, IpcWebSocketMessage, IpcWebSocketTransport } from \"@itwin/core-common\";\r\nimport { IpcApp } from \"./IpcApp\";\r\nimport { IModelAppOptions } from \"./IModelApp\";\r\n\r\n/** @internal */\r\nexport interface LocalHostIpcAppOpts {\r\n iModelApp?: IModelAppOptions;\r\n\r\n localhostIpcApp?: {\r\n socketPort?: number;\r\n socketUrl?: URL;\r\n };\r\n}\r\n\r\nclass LocalTransport extends IpcWebSocketTransport {\r\n private _client: WebSocket;\r\n private _pending?: IpcWebSocketMessage[] = [];\r\n\r\n public constructor(opts: LocalHostIpcAppOpts) {\r\n super();\r\n\r\n let url: URL;\r\n if (opts?.localhostIpcApp?.socketUrl) {\r\n url = opts?.localhostIpcApp?.socketUrl;\r\n } else {\r\n const port = opts?.localhostIpcApp?.socketPort ?? 3002;\r\n url = new URL(`ws://localhost:${port}/`);\r\n }\r\n\r\n this._client = new WebSocket(url);\r\n\r\n this._client.addEventListener(\"open\", () => {\r\n const pending = this._pending!;\r\n this._pending = undefined;\r\n pending.forEach((m) => this.send(m));\r\n });\r\n\r\n this._client.addEventListener(\"message\", async (event) => {\r\n const message = await this.notifyIncoming(event.data);\r\n if (IpcWebSocketMessage.skip(message)) {\r\n return;\r\n }\r\n\r\n for (const listener of IpcWebSocket.receivers)\r\n listener({} as Event, message);\r\n });\r\n }\r\n\r\n public send(message: IpcWebSocketMessage): void {\r\n if (this._pending) {\r\n this._pending.push(message);\r\n return;\r\n }\r\n\r\n const parts = this.serialize(message);\r\n parts.forEach((part) => this._client.send(part));\r\n }\r\n}\r\n\r\n/**\r\n * To be used only by test applications that want to test web-based editing using localhost.\r\n * @internal\r\n */\r\nexport class LocalhostIpcApp {\r\n public static buildUrlForSocket(base: URL, path = \"ipc\"): URL {\r\n const url = new URL(base);\r\n url.protocol = \"ws\";\r\n url.pathname = [...url.pathname.split(\"/\"), path].filter((v) => v).join(\"/\");\r\n return url;\r\n }\r\n\r\n public static async startup(opts: LocalHostIpcAppOpts) {\r\n IpcWebSocket.transport = new LocalTransport(opts);\r\n const ipc = new IpcWebSocketFrontend();\r\n await IpcApp.startup(ipc, opts);\r\n }\r\n}\r\n"]}
@@ -99,7 +99,7 @@ export declare class Marker implements CanvasDecoration {
99
99
  */
100
100
  constructor(worldLocation: XYAndZ, size: XAndY);
101
101
  /** Make a new Marker at the same position and size as this Marker.
102
- * The new Marker will share the world location and size objects, but will be otherwise blank.
102
+ * The new Marker will share the world location and size, but will be otherwise blank.
103
103
  */
104
104
  static makeFrom<T extends Marker>(other: Marker, ...args: any[]): T;
105
105
  /** When a Marker is displayed in its hilited state, this method is called first. If it returns true, no further action is taken.
@@ -142,9 +142,14 @@ export declare class Marker implements CanvasDecoration {
142
142
  */
143
143
  export declare class Cluster<T extends Marker> {
144
144
  readonly markers: T[];
145
- readonly rect: ViewRect;
146
145
  clusterMarker?: Marker;
147
146
  constructor(markers: T[]);
147
+ get position(): Point3d;
148
+ /**
149
+ * Gets the location for the cluster
150
+ * @returns The average of the cluster markers worldLocation.
151
+ */
152
+ getClusterLocation(): Point3d;
148
153
  }
149
154
  /** A *set* of Markers that are logically related, such that they *cluster* when they overlap one another in screen space.
150
155
  * In that case, a *cluster marker* is drawn instead of the overlapping Markers.
@@ -163,6 +168,8 @@ export declare abstract class MarkerSet<T extends Marker> {
163
168
  minimumClusterSize: number;
164
169
  /** The set of Markers in this MarkerSet. Add your [[Marker]]s into this. */
165
170
  get markers(): Set<T>;
171
+ /** The radius (in pixels) representing the distance between the screen X,Y positions of two Markers to be clustered. When less than or equal to 0 (the default), the radius is calculated based on the first visible marker imageSize/size. */
172
+ protected clusterRadius: number;
166
173
  /** Construct a new MarkerSet for a specific ScreenViewport.
167
174
  * @param viewport the ScreenViewport for this MarkerSet. If undefined, use [[IModelApp.viewManager.selectedView]]
168
175
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Marker.d.ts","sourceRoot":"","sources":["../../src/Marker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Marker.d.ts","sourceRoot":"","sources":["../../src/Marker.ts"],"names":[],"mappings":"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"}
package/lib/esm/Marker.js CHANGED
@@ -5,7 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module Views
7
7
  */
8
- import { Logger, ObservableSet } from "@itwin/core-bentley";
8
+ import { assert, Logger, ObservableSet } from "@itwin/core-bentley";
9
9
  import { Geometry, Matrix4d, Point2d, Point3d, Range1d, Vector3d } from "@itwin/core-geometry";
10
10
  import { FrontendLoggerCategory } from "./FrontendLoggerCategory";
11
11
  import { imageElementFromUrl } from "./ImageUtil";
@@ -74,7 +74,7 @@ export class Marker {
74
74
  this._scaleFactor = Point2d.create(1, 1);
75
75
  }
76
76
  /** Make a new Marker at the same position and size as this Marker.
77
- * The new Marker will share the world location and size objects, but will be otherwise blank.
77
+ * The new Marker will share the world location and size, but will be otherwise blank.
78
78
  */
79
79
  static makeFrom(other, ...args) {
80
80
  const out = new this(other.worldLocation, other.size, ...args);
@@ -211,9 +211,24 @@ export class Marker {
211
211
  */
212
212
  export class Cluster {
213
213
  constructor(markers) {
214
- this.rect = markers[0].rect;
214
+ assert(markers.length > 0);
215
215
  this.markers = markers;
216
216
  }
217
+ get position() {
218
+ return this.markers[0].position;
219
+ }
220
+ /**
221
+ * Gets the location for the cluster
222
+ * @returns The average of the cluster markers worldLocation.
223
+ */
224
+ getClusterLocation() {
225
+ const location = Point3d.createZero();
226
+ if (this.markers.length > 0) {
227
+ this.markers.forEach((marker) => location.addInPlace(marker.worldLocation));
228
+ location.scaleInPlace(1 / this.markers.length);
229
+ }
230
+ return location;
231
+ }
217
232
  }
218
233
  /** A *set* of Markers that are logically related, such that they *cluster* when they overlap one another in screen space.
219
234
  * In that case, a *cluster marker* is drawn instead of the overlapping Markers.
@@ -231,6 +246,8 @@ export class MarkerSet {
231
246
  this._markers = new ObservableSet();
232
247
  /** The minimum number of Markers that must overlap before they are clustered. Otherwise they are each drawn individually. Default is 1 (always create a cluster.) */
233
248
  this.minimumClusterSize = 1;
249
+ /** The radius (in pixels) representing the distance between the screen X,Y positions of two Markers to be clustered. When less than or equal to 0 (the default), the radius is calculated based on the first visible marker imageSize/size. */
250
+ this.clusterRadius = 0;
234
251
  this._viewport = undefined === viewport ? IModelApp.viewManager.selectedView : viewport;
235
252
  const markDirty = () => this.markDirty();
236
253
  this._markers.onAdded.addListener(markDirty);
@@ -280,15 +297,21 @@ export class MarkerSet {
280
297
  this._worldToViewMap.setFrom(vp.worldToViewMap.transform0);
281
298
  this._minScaleViewW = undefined; // Invalidate current value.
282
299
  entries.length = 0; // start over.
300
+ let distSquared = this.clusterRadius * this.clusterRadius;
283
301
  // loop through all of the Markers in the MarkerSet.
284
302
  for (const marker of this.markers) {
285
303
  // establish the screen position for this marker. If it's not in view, setPosition returns false
286
304
  if (!marker.setPosition(vp, this))
287
305
  continue;
306
+ if (distSquared <= 0) {
307
+ const size = marker.imageSize ? marker.imageSize : marker.size;
308
+ const dist = Math.max(size.x, size.y) * 1.5;
309
+ distSquared = dist * dist;
310
+ }
288
311
  let added = false;
289
312
  for (let i = 0; i < entries.length; ++i) { // loop through all of the currently visible markers/clusters
290
313
  const entry = entries[i];
291
- if (marker.rect.overlaps(entry.rect)) { // does new Marker overlap with this entry?
314
+ if (marker.position.distanceSquaredXY(entry.position) <= distSquared) {
292
315
  added = true; // yes, we're going to save it as a Cluster
293
316
  if (entry instanceof Cluster) { // is the entry already a Cluster?
294
317
  entry.markers.push(marker); // yes, just add this to the existing cluster
@@ -311,8 +334,13 @@ export class MarkerSet {
311
334
  }
312
335
  else {
313
336
  // yes, get and draw the Marker for this Cluster
314
- if (undefined === entry.clusterMarker) // have we already created this cluster marker?
315
- entry.clusterMarker = this.getClusterMarker(entry); // no, get it now.
337
+ if (undefined === entry.clusterMarker) { // have we already created this cluster marker?
338
+ const clusterMarker = this.getClusterMarker(entry); // no, get it now.
339
+ // set the marker's position as getClusterMarker may not set it.
340
+ if (clusterMarker.rect.isNull)
341
+ clusterMarker.setPosition(vp, this);
342
+ entry.clusterMarker = clusterMarker;
343
+ }
316
344
  entry.clusterMarker.addMarker(context);
317
345
  }
318
346
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Marker.js","sourceRoot":"","sources":["../../src/Marker.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 Views\r\n */\r\n\r\nimport { Logger, ObservableSet } from \"@itwin/core-bentley\";\r\nimport { Geometry, Matrix4d, Point2d, Point3d, Range1d, Range1dProps, Vector3d, XAndY, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport { imageElementFromUrl } from \"./ImageUtil\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { ToolTipOptions } from \"./NotificationManager\";\r\nimport { CanvasDecoration } from \"./render/CanvasDecoration\";\r\nimport { BeButtonEvent } from \"./tools/Tool\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { ScreenViewport, Viewport } from \"./Viewport\";\r\nimport { ViewRect } from \"./ViewRect\";\r\n\r\n/** The types that may be used for Markers\r\n * @public\r\n */\r\nexport type MarkerImage = HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap;\r\n\r\n/** @public */\r\nexport type MarkerFillStyle = string | CanvasGradient | CanvasPattern;\r\n\r\n/** @public */\r\nexport type MarkerTextAlign = \"left\" | \"right\" | \"center\" | \"start\" | \"end\";\r\n\r\n/** @public */\r\nexport type MarkerTextBaseline = \"top\" | \"hanging\" | \"middle\" | \"alphabetic\" | \"ideographic\" | \"bottom\";\r\n\r\nfunction getMinScaleViewW(vp: Viewport): number {\r\n let zHigh;\r\n const origin = vp.view.getCenter();\r\n const direction = vp.view.getZVector(); direction.scaleInPlace(-1);\r\n const corners = vp.view.iModel.projectExtents.corners();\r\n const delta = Vector3d.create();\r\n for (const corner of corners) {\r\n Vector3d.createStartEnd(origin, corner, delta);\r\n const projection = delta.dotProduct(direction);\r\n if (undefined === zHigh || projection > zHigh)\r\n zHigh = projection;\r\n }\r\n if (undefined === zHigh)\r\n return 0.0;\r\n origin.plusScaled(direction, zHigh, origin);\r\n return vp.worldToView4d(origin).w;\r\n}\r\n\r\n/** A Marker is a [[CanvasDecoration]], whose position follows a fixed location in world space.\r\n * Markers draw on top of all scene graphics, and show visual cues about locations of interest.\r\n * @see [Markers]($docs/learning/frontend/Markers)\r\n * @public\r\n */\r\nexport class Marker implements CanvasDecoration {\r\n protected _scaleFactor?: Point2d;\r\n protected _scaleFactorRange?: Range1d;\r\n\r\n /** Whether this marker is currently enabled. If false, this Marker is not displayed. */\r\n public visible = true;\r\n /** Whether this marker is currently hilited or not. */\r\n protected _isHilited = false;\r\n /** The color for the shadowBlur when this Marker is hilited */\r\n protected _hiliteColor?: ColorDef;\r\n /** The location of this Marker in world coordinates. */\r\n public worldLocation: Point3d;\r\n /** The size of this Marker, in pixels. */\r\n public size: Point2d;\r\n /** The current position for the marker, in view coordinates (pixels). This value will be updated by calls to [[setPosition]]. */\r\n public position = new Point3d();\r\n /** The current rectangle for the marker, in view coordinates (pixels). This value will be updated by calls to [[setPosition]]. */\r\n public readonly rect = new ViewRect();\r\n /** An image to draw for this Marker. If undefined, no image is shown. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage. */\r\n public image?: MarkerImage;\r\n /** The offset for [[image]], in pixels, from the *center* of this Marker. If undefined, (0,0). */\r\n public imageOffset?: XAndY;\r\n /** The size of [[image]], in pixels. If undefined, use [[size]]. */\r\n public imageSize?: XAndY;\r\n /** A text Label for this Marker. If undefined, no label is displayed. */\r\n public label?: string;\r\n /** The offset for [[label]], in pixels, from the *center* of this Marker. If undefined, (0,0). */\r\n public labelOffset?: XAndY;\r\n /** The maximum with for [[label]], in pixels. If undefined label will not be condensed or use a smaller font size. */\r\n public labelMaxWidth?: number;\r\n /** The color for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/fillStyle. If undefined, \"white\". */\r\n public labelColor?: MarkerFillStyle;\r\n /** The text alignment for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/textAlign. If undefined, \"center\" */\r\n public labelAlign?: MarkerTextAlign;\r\n /** The text baseline for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/textBaseline. If undefined, \"middle\" */\r\n public labelBaseline?: MarkerTextBaseline;\r\n /** The font for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font. */\r\n public labelFont?: string;\r\n /** The title string, or HTMLElement, to show (only) in the ToolTip when the pointer is over this Marker. See [[NotificationManager.openToolTip]] */\r\n public title?: HTMLElement | string;\r\n /** The ToolTipOptions to use for [[title]]. */\r\n public tooltipOptions?: ToolTipOptions;\r\n\r\n /** An Optional (unique) HTMLElement to display with this Marker. Generally, HTMLElements are more expensive than\r\n * images and labels, since they are added/removed from the DOM every frame. But, some types of markers are more convenient to construct\r\n * as HTMLElements, and if there aren't too many of them performance is fine.\r\n * @note HTMLElements may only appear in the DOM one time. Therefore, they *may not be shared* by more than one Marker.\r\n * You must ensure that each marker has its own HTMLElement. For this reason, you should probably only use HTMLElements in Markers if\r\n * each one is meant to be unique. For shared content, use images.\r\n */\r\n public htmlElement?: HTMLElement;\r\n\r\n /** Return true to display [[image]], if present. */\r\n public get wantImage() { return true; }\r\n\r\n /** Implement this function to draw onto the CanvasRenderingContext2D when this Marker is displayed. The [0,0] point will be the center of the Marker. */\r\n public drawFunc?(ctx: CanvasRenderingContext2D): void;\r\n\r\n /** Called when the mouse pointer enters this Marker. */\r\n public onMouseEnter(ev: BeButtonEvent) { this._isHilited = true; this._hiliteColor = ev.viewport!.hilite.color; IModelApp.accuSnap.clear(); }\r\n\r\n /** Called when the mouse pointer leaves this Marker. */\r\n public onMouseLeave() { this._isHilited = false; }\r\n\r\n /** Called when the mouse pointer moves over this Marker */\r\n public onMouseMove(ev: BeButtonEvent): void {\r\n if (this.title)\r\n ev.viewport!.openToolTip(this.title, ev.viewPoint, this.tooltipOptions);\r\n }\r\n /** Called when a mouse button is pressed over this Marker. */\r\n public onMouseButton?(_ev: BeButtonEvent): boolean;\r\n\r\n /** Determine whether the point is within this Marker. */\r\n public pick(pt: XAndY): boolean { return this.rect.containsPoint(pt); }\r\n\r\n /** Establish a range of scale factors to increases and decrease the size of this Marker based on its distance from the camera.\r\n * @param range The minimum and maximum scale factors to be applied to the size of this Marker based on its distance from the camera. `range.Low` is the scale factor\r\n * for Markers at the back of the view frustum and `range.high` is the scale factor at the front of the view frustum.\r\n * @note Marker size scaling is only applied in views with the camera enabled. It has no effect on orthographic views.\r\n */\r\n public setScaleFactor(range: Range1dProps) {\r\n this._scaleFactorRange = Range1d.fromJSON(range);\r\n this._scaleFactor = Point2d.create(1, 1);\r\n }\r\n\r\n /** Constructor for Marker\r\n * @param worldLocation The location of this Marker in world coordinates.\r\n * @param size The size of this Marker in pixels.\r\n */\r\n constructor(worldLocation: XYAndZ, size: XAndY) {\r\n this.worldLocation = Point3d.createFrom(worldLocation);\r\n this.size = Point2d.createFrom(size);\r\n }\r\n\r\n /** Make a new Marker at the same position and size as this Marker.\r\n * The new Marker will share the world location and size objects, but will be otherwise blank.\r\n */\r\n public static makeFrom<T extends Marker>(other: Marker, ...args: any[]): T {\r\n const out = new (this as any)(other.worldLocation, other.size, ...args) as T;\r\n out.rect.setFrom(other.rect);\r\n out.position.setFrom(other.position);\r\n if (other._scaleFactor)\r\n out._scaleFactor = Point2d.createFrom(other._scaleFactor);\r\n out._scaleFactorRange = other._scaleFactorRange;\r\n return out;\r\n }\r\n\r\n /** When a Marker is displayed in its hilited state, this method is called first. If it returns true, no further action is taken.\r\n * Otherwise the Marker's normal drawing operations are also called. By default, this method adds a shadowBlur effect and increases\r\n * the size of the Marker by 25%.\r\n * @return true to stop drawing this Marker\r\n */\r\n protected drawHilited(ctx: CanvasRenderingContext2D) {\r\n ctx.shadowBlur = 30;\r\n ctx.shadowColor = this._hiliteColor ? this._hiliteColor.toHexString() : \"white\";\r\n ctx.scale(1.25, 1.25);\r\n return false;\r\n }\r\n\r\n /** Called during frame rendering to display this Marker onto the supplied context. */\r\n public drawDecoration(ctx: CanvasRenderingContext2D): void {\r\n if (this._isHilited && this.drawHilited(ctx))\r\n return;\r\n\r\n if (this._scaleFactor !== undefined)\r\n ctx.scale(this._scaleFactor.x, this._scaleFactor.y);\r\n\r\n // first call the \"drawFunc\" if defined. This means it will be below the image and label if they overlap\r\n if (undefined !== this.drawFunc)\r\n this.drawFunc(ctx);\r\n\r\n // next draw the image, if defined and desired\r\n if (this.wantImage && this.image !== undefined) {\r\n const size = this.imageSize ? this.imageSize : this.size;\r\n const offset = new Point2d(size.x / 2, size.y / 2);\r\n if (this.imageOffset)\r\n offset.plus(this.imageOffset, offset);\r\n ctx.drawImage(this.image, -offset.x, -offset.y, size.x, size.y);\r\n }\r\n\r\n // lastly, draw the label, if defined. This puts it on top of all other graphics for this Marker.\r\n if (this.label !== undefined) {\r\n ctx.textAlign = this.labelAlign ? this.labelAlign : \"center\";\r\n ctx.textBaseline = this.labelBaseline ? this.labelBaseline : \"middle\";\r\n ctx.font = this.labelFont ? this.labelFont : \"14px sans-serif\";\r\n ctx.fillStyle = this.labelColor ? this.labelColor : \"white\";\r\n ctx.fillText(this.label, this.labelOffset ? -this.labelOffset.x : 0, this.labelOffset ? -this.labelOffset.y : 0, this.labelMaxWidth);\r\n }\r\n }\r\n\r\n /** Set the [[image]] for this marker.\r\n * @param image Either a [[MarkerImage]] or a Promise for a [[MarkerImage]]. If a Promise is supplied, the [[image]] member is set\r\n * when the Promise resolves.\r\n */\r\n public setImage(image: MarkerImage | Promise<MarkerImage>) {\r\n if (image instanceof Promise) {\r\n image.then((resolvedImage) =>\r\n this.image = resolvedImage,\r\n ).catch((err: Event) => {\r\n const target = err.target as any;\r\n const msg = `Could not load image ${target && target.src ? target.src : \"unknown\"}`;\r\n Logger.logError(`${FrontendLoggerCategory.Package}.markers`, msg);\r\n console.log(msg); // eslint-disable-line no-console\r\n });\r\n } else\r\n this.image = image;\r\n }\r\n\r\n /** Set the image for this Marker from a URL. */\r\n public setImageUrl(url: string) { this.setImage(imageElementFromUrl(url)); }\r\n\r\n /** Set the position (in pixels) for this Marker in the supplied Viewport, based on its worldLocation.\r\n * @param markerSet The MarkerSet if this Marker is included in a set.\r\n * @return true if the Marker is visible and its new position is inside the Viewport.\r\n */\r\n public setPosition(vp: Viewport, markerSet?: MarkerSet<Marker>): boolean {\r\n if (!this.visible) // if we're turned off, skip\r\n return false;\r\n\r\n const pt4 = vp.worldToView4d(this.worldLocation);\r\n if (pt4.w > 1.0 || pt4.w < 1.0e-6) // outside of frustum or too close to eye.\r\n return false;\r\n\r\n pt4.realPoint(this.position);\r\n if (!vp.viewRect.containsPoint(this.position))\r\n return false; // outside this viewport rect\r\n\r\n const origin = this.position;\r\n const sizeX = this.size.x / 2;\r\n const sizeY = this.size.y / 2;\r\n this.rect.init(origin.x - sizeX, origin.y - sizeY, origin.x + sizeX, origin.y + sizeY);\r\n\r\n // if there's a scale factor active, calculate it now.\r\n if (this._scaleFactor && this._scaleFactorRange) {\r\n let scale = 1.0;\r\n if (vp.isCameraOn) {\r\n const range = this._scaleFactorRange;\r\n const minScaleViewW = (undefined !== markerSet ? markerSet.getMinScaleViewW(vp) : getMinScaleViewW(vp));\r\n if (minScaleViewW > 0.0)\r\n scale = Geometry.clamp(range.high - (pt4.w / minScaleViewW) * range.length(), .4, 2.0);\r\n else\r\n scale = Geometry.clamp(range.low + ((1 - pt4.w) * range.length()), .4, 2.0);\r\n this.rect.scaleAboutCenter(scale, scale);\r\n }\r\n this._scaleFactor.set(scale, scale);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** Position the HTMLElement for this Marker relative to the Marker's position in the view.\r\n * The default implementation centers the HTMLElement (using its boundingClientRect) on the Marker.\r\n * Override this method to provide an alternative positioning approach.\r\n */\r\n protected positionHtml() {\r\n const html = this.htmlElement!;\r\n const style = html.style;\r\n style.position = \"absolute\";\r\n const size = html.getBoundingClientRect(); // Note: only call this *after* setting position = absolute\r\n const markerPos = this.position;\r\n style.left = `${markerPos.x - (size.width / 2)}px`;\r\n style.top = `${markerPos.y - (size.height / 2)}px`;\r\n }\r\n\r\n /** Add this Marker to the supplied DecorateContext. */\r\n public addMarker(context: DecorateContext) {\r\n context.addCanvasDecoration(this);\r\n if (undefined !== this.htmlElement) {\r\n // add this Marker to the DOM\r\n context.addHtmlDecoration(this.htmlElement);\r\n this.positionHtml(); // always reposition it\r\n }\r\n }\r\n\r\n /** Set the position and add this Marker to the supplied DecorateContext, if it's visible.\r\n * This method should be called from your implementation of [[Decorator.decorate]]. It will set this Marker's position based on the\r\n * Viewport from the context, and add this this Marker to the supplied DecorateContext.\r\n * @param context The DecorateContext for the Marker\r\n */\r\n public addDecoration(context: DecorateContext) {\r\n if (this.setPosition(context.viewport))\r\n this.addMarker(context);\r\n }\r\n}\r\n\r\n/** A cluster of one or more Markers that overlap one another in the view. The cluster's screen position is taken from its first entry.\r\n * Clusters also have a Marker themselves, that represents the whole group. The cluster marker isn't created until all entries have been added.\r\n * @public\r\n */\r\nexport class Cluster<T extends Marker> {\r\n public readonly markers: T[];\r\n public readonly rect: ViewRect;\r\n public clusterMarker?: Marker;\r\n\r\n public constructor(markers: T[]) {\r\n this.rect = markers[0].rect;\r\n this.markers = markers;\r\n }\r\n}\r\n\r\n/** A *set* of Markers that are logically related, such that they *cluster* when they overlap one another in screen space.\r\n * In that case, a *cluster marker* is drawn instead of the overlapping Markers.\r\n * @public\r\n */\r\nexport abstract class MarkerSet<T extends Marker> {\r\n private _viewport?: ScreenViewport;\r\n\r\n /** @internal */\r\n protected _entries: Array<T | Cluster<T>> = []; // this is an array that holds either Markers or a cluster of markers.\r\n /** @internal */\r\n protected readonly _worldToViewMap = Matrix4d.createZero();\r\n /** @internal */\r\n protected _minScaleViewW?: number;\r\n private readonly _markers = new ObservableSet<T>();\r\n\r\n /** The minimum number of Markers that must overlap before they are clustered. Otherwise they are each drawn individually. Default is 1 (always create a cluster.) */\r\n public minimumClusterSize = 1;\r\n /** The set of Markers in this MarkerSet. Add your [[Marker]]s into this. */\r\n public get markers(): Set<T> { return this._markers; }\r\n\r\n /** Construct a new MarkerSet for a specific ScreenViewport.\r\n * @param viewport the ScreenViewport for this MarkerSet. If undefined, use [[IModelApp.viewManager.selectedView]]\r\n */\r\n public constructor(viewport?: ScreenViewport) {\r\n this._viewport = undefined === viewport ? IModelApp.viewManager.selectedView : viewport;\r\n const markDirty = () => this.markDirty();\r\n this._markers.onAdded.addListener(markDirty);\r\n this._markers.onDeleted.addListener(markDirty);\r\n this._markers.onCleared.addListener(markDirty);\r\n }\r\n\r\n /** The ScreenViewport of this MarkerSet. */\r\n public get viewport(): ScreenViewport | undefined { return this._viewport; }\r\n\r\n /** Change the ScreenViewport for this MarkerSet.\r\n * After this call, the markers from this MarkerSet will only appear in the supplied ScreenViewport.\r\n * @beta\r\n */\r\n public changeViewport(viewport: ScreenViewport) {\r\n this._viewport = viewport;\r\n this.markDirty();\r\n }\r\n\r\n /** Indicate that this MarkerSet has been changed and is now *dirty*.\r\n * This is necessary because [[addDecoration]] does not recreate the set of decoration graphics\r\n * if it can detect that the previously-created set remains valid.\r\n * The set becomes invalid when the view frustum changes, or the contents of [[markers]] changes.\r\n * If some other criterion affecting the graphics changes, invoke this method. This should not be necessary for most use cases.\r\n * @public\r\n */\r\n public markDirty(): void {\r\n this._worldToViewMap.setZero();\r\n }\r\n\r\n /** Implement this method to create a new Marker that is shown as a *stand-in* for a Cluster of Markers that overlap one another.\r\n * @param cluster The [[Cluster]] that the new Marker will represent.\r\n * @returns The Marker that will be displayed to represent the Cluster.\r\n * @note You must create a new Marker each time this method is called.\r\n */\r\n protected abstract getClusterMarker(cluster: Cluster<T>): Marker;\r\n\r\n /** Get weight value limit establishing the distance from camera for the back of view scale factor. */\r\n public getMinScaleViewW(vp: Viewport): number {\r\n if (undefined === this._minScaleViewW)\r\n this._minScaleViewW = getMinScaleViewW(vp);\r\n return this._minScaleViewW;\r\n }\r\n\r\n /** This method should be called from [[Decorator.decorate]]. It will add this this MarkerSet to the supplied DecorateContext.\r\n * This method implements the logic that turns overlapping Markers into a Cluster.\r\n * @param context The DecorateContext for the Markers\r\n */\r\n public addDecoration(context: DecorateContext): void {\r\n const vp = context.viewport;\r\n if (vp !== this._viewport)\r\n return; // not viewport of this MarkerSet, ignore it\r\n\r\n const entries = this._entries;\r\n\r\n // Don't recreate the entries array if the view hasn't changed. This is important for performance, but also necessary for hilite of\r\n // clusters (otherwise they're recreated continually and never hilited.) */\r\n if (!this._worldToViewMap.isAlmostEqual(vp.worldToViewMap.transform0)) {\r\n this._worldToViewMap.setFrom(vp.worldToViewMap.transform0);\r\n this._minScaleViewW = undefined; // Invalidate current value.\r\n entries.length = 0; // start over.\r\n\r\n // loop through all of the Markers in the MarkerSet.\r\n for (const marker of this.markers) {\r\n // establish the screen position for this marker. If it's not in view, setPosition returns false\r\n if (!marker.setPosition(vp, this))\r\n continue;\r\n\r\n let added = false;\r\n for (let i = 0; i < entries.length; ++i) { // loop through all of the currently visible markers/clusters\r\n const entry = entries[i];\r\n if (marker.rect.overlaps(entry.rect)) { // does new Marker overlap with this entry?\r\n added = true; // yes, we're going to save it as a Cluster\r\n if (entry instanceof Cluster) { // is the entry already a Cluster?\r\n entry.markers.push(marker); // yes, just add this to the existing cluster\r\n } else {\r\n entries[i] = new Cluster([entry, marker]); // no, make a new Cluster holding both\r\n }\r\n break; // this Marker has been handled, we can stop looking for overlaps\r\n }\r\n }\r\n if (!added)\r\n entries.push(marker); // there was no overlap, save this Marker to be drawn\r\n }\r\n }\r\n\r\n // we now have an array of Markers and Clusters, add them to context\r\n for (const entry of entries) {\r\n if (entry instanceof Cluster) { // is this entry a Cluster?\r\n if (entry.markers.length <= this.minimumClusterSize) { // yes, does it have more than the minimum number of entries?\r\n entry.markers.forEach((marker) => marker.addMarker(context)); // no, just draw all of its Markers\r\n } else {\r\n // yes, get and draw the Marker for this Cluster\r\n if (undefined === entry.clusterMarker) // have we already created this cluster marker?\r\n entry.clusterMarker = this.getClusterMarker(entry); // no, get it now.\r\n entry.clusterMarker.addMarker(context);\r\n }\r\n } else {\r\n entry.addMarker(context); // entry is a non-overlapping Marker, draw it.\r\n }\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Marker.js","sourceRoot":"","sources":["../../src/Marker.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 Views\r\n */\r\n\r\nimport { assert, Logger, ObservableSet } from \"@itwin/core-bentley\";\r\nimport { Geometry, Matrix4d, Point2d, Point3d, Range1d, Range1dProps, Vector3d, XAndY, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport { imageElementFromUrl } from \"./ImageUtil\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { ToolTipOptions } from \"./NotificationManager\";\r\nimport { CanvasDecoration } from \"./render/CanvasDecoration\";\r\nimport { BeButtonEvent } from \"./tools/Tool\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { ScreenViewport, Viewport } from \"./Viewport\";\r\nimport { ViewRect } from \"./ViewRect\";\r\n\r\n/** The types that may be used for Markers\r\n * @public\r\n */\r\nexport type MarkerImage = HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap;\r\n\r\n/** @public */\r\nexport type MarkerFillStyle = string | CanvasGradient | CanvasPattern;\r\n\r\n/** @public */\r\nexport type MarkerTextAlign = \"left\" | \"right\" | \"center\" | \"start\" | \"end\";\r\n\r\n/** @public */\r\nexport type MarkerTextBaseline = \"top\" | \"hanging\" | \"middle\" | \"alphabetic\" | \"ideographic\" | \"bottom\";\r\n\r\nfunction getMinScaleViewW(vp: Viewport): number {\r\n let zHigh;\r\n const origin = vp.view.getCenter();\r\n const direction = vp.view.getZVector(); direction.scaleInPlace(-1);\r\n const corners = vp.view.iModel.projectExtents.corners();\r\n const delta = Vector3d.create();\r\n for (const corner of corners) {\r\n Vector3d.createStartEnd(origin, corner, delta);\r\n const projection = delta.dotProduct(direction);\r\n if (undefined === zHigh || projection > zHigh)\r\n zHigh = projection;\r\n }\r\n if (undefined === zHigh)\r\n return 0.0;\r\n origin.plusScaled(direction, zHigh, origin);\r\n return vp.worldToView4d(origin).w;\r\n}\r\n\r\n/** A Marker is a [[CanvasDecoration]], whose position follows a fixed location in world space.\r\n * Markers draw on top of all scene graphics, and show visual cues about locations of interest.\r\n * @see [Markers]($docs/learning/frontend/Markers)\r\n * @public\r\n */\r\nexport class Marker implements CanvasDecoration {\r\n protected _scaleFactor?: Point2d;\r\n protected _scaleFactorRange?: Range1d;\r\n\r\n /** Whether this marker is currently enabled. If false, this Marker is not displayed. */\r\n public visible = true;\r\n /** Whether this marker is currently hilited or not. */\r\n protected _isHilited = false;\r\n /** The color for the shadowBlur when this Marker is hilited */\r\n protected _hiliteColor?: ColorDef;\r\n /** The location of this Marker in world coordinates. */\r\n public worldLocation: Point3d;\r\n /** The size of this Marker, in pixels. */\r\n public size: Point2d;\r\n /** The current position for the marker, in view coordinates (pixels). This value will be updated by calls to [[setPosition]]. */\r\n public position = new Point3d();\r\n /** The current rectangle for the marker, in view coordinates (pixels). This value will be updated by calls to [[setPosition]]. */\r\n public readonly rect = new ViewRect();\r\n /** An image to draw for this Marker. If undefined, no image is shown. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage. */\r\n public image?: MarkerImage;\r\n /** The offset for [[image]], in pixels, from the *center* of this Marker. If undefined, (0,0). */\r\n public imageOffset?: XAndY;\r\n /** The size of [[image]], in pixels. If undefined, use [[size]]. */\r\n public imageSize?: XAndY;\r\n /** A text Label for this Marker. If undefined, no label is displayed. */\r\n public label?: string;\r\n /** The offset for [[label]], in pixels, from the *center* of this Marker. If undefined, (0,0). */\r\n public labelOffset?: XAndY;\r\n /** The maximum with for [[label]], in pixels. If undefined label will not be condensed or use a smaller font size. */\r\n public labelMaxWidth?: number;\r\n /** The color for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/fillStyle. If undefined, \"white\". */\r\n public labelColor?: MarkerFillStyle;\r\n /** The text alignment for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/textAlign. If undefined, \"center\" */\r\n public labelAlign?: MarkerTextAlign;\r\n /** The text baseline for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/textBaseline. If undefined, \"middle\" */\r\n public labelBaseline?: MarkerTextBaseline;\r\n /** The font for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font. */\r\n public labelFont?: string;\r\n /** The title string, or HTMLElement, to show (only) in the ToolTip when the pointer is over this Marker. See [[NotificationManager.openToolTip]] */\r\n public title?: HTMLElement | string;\r\n /** The ToolTipOptions to use for [[title]]. */\r\n public tooltipOptions?: ToolTipOptions;\r\n\r\n /** An Optional (unique) HTMLElement to display with this Marker. Generally, HTMLElements are more expensive than\r\n * images and labels, since they are added/removed from the DOM every frame. But, some types of markers are more convenient to construct\r\n * as HTMLElements, and if there aren't too many of them performance is fine.\r\n * @note HTMLElements may only appear in the DOM one time. Therefore, they *may not be shared* by more than one Marker.\r\n * You must ensure that each marker has its own HTMLElement. For this reason, you should probably only use HTMLElements in Markers if\r\n * each one is meant to be unique. For shared content, use images.\r\n */\r\n public htmlElement?: HTMLElement;\r\n\r\n /** Return true to display [[image]], if present. */\r\n public get wantImage() { return true; }\r\n\r\n /** Implement this function to draw onto the CanvasRenderingContext2D when this Marker is displayed. The [0,0] point will be the center of the Marker. */\r\n public drawFunc?(ctx: CanvasRenderingContext2D): void;\r\n\r\n /** Called when the mouse pointer enters this Marker. */\r\n public onMouseEnter(ev: BeButtonEvent) { this._isHilited = true; this._hiliteColor = ev.viewport!.hilite.color; IModelApp.accuSnap.clear(); }\r\n\r\n /** Called when the mouse pointer leaves this Marker. */\r\n public onMouseLeave() { this._isHilited = false; }\r\n\r\n /** Called when the mouse pointer moves over this Marker */\r\n public onMouseMove(ev: BeButtonEvent): void {\r\n if (this.title)\r\n ev.viewport!.openToolTip(this.title, ev.viewPoint, this.tooltipOptions);\r\n }\r\n /** Called when a mouse button is pressed over this Marker. */\r\n public onMouseButton?(_ev: BeButtonEvent): boolean;\r\n\r\n /** Determine whether the point is within this Marker. */\r\n public pick(pt: XAndY): boolean { return this.rect.containsPoint(pt); }\r\n\r\n /** Establish a range of scale factors to increases and decrease the size of this Marker based on its distance from the camera.\r\n * @param range The minimum and maximum scale factors to be applied to the size of this Marker based on its distance from the camera. `range.Low` is the scale factor\r\n * for Markers at the back of the view frustum and `range.high` is the scale factor at the front of the view frustum.\r\n * @note Marker size scaling is only applied in views with the camera enabled. It has no effect on orthographic views.\r\n */\r\n public setScaleFactor(range: Range1dProps) {\r\n this._scaleFactorRange = Range1d.fromJSON(range);\r\n this._scaleFactor = Point2d.create(1, 1);\r\n }\r\n\r\n /** Constructor for Marker\r\n * @param worldLocation The location of this Marker in world coordinates.\r\n * @param size The size of this Marker in pixels.\r\n */\r\n constructor(worldLocation: XYAndZ, size: XAndY) {\r\n this.worldLocation = Point3d.createFrom(worldLocation);\r\n this.size = Point2d.createFrom(size);\r\n }\r\n\r\n /** Make a new Marker at the same position and size as this Marker.\r\n * The new Marker will share the world location and size, but will be otherwise blank.\r\n */\r\n public static makeFrom<T extends Marker>(other: Marker, ...args: any[]): T {\r\n const out = new (this as any)(other.worldLocation, other.size, ...args) as T;\r\n out.rect.setFrom(other.rect);\r\n out.position.setFrom(other.position);\r\n if (other._scaleFactor)\r\n out._scaleFactor = Point2d.createFrom(other._scaleFactor);\r\n out._scaleFactorRange = other._scaleFactorRange;\r\n return out;\r\n }\r\n\r\n /** When a Marker is displayed in its hilited state, this method is called first. If it returns true, no further action is taken.\r\n * Otherwise the Marker's normal drawing operations are also called. By default, this method adds a shadowBlur effect and increases\r\n * the size of the Marker by 25%.\r\n * @return true to stop drawing this Marker\r\n */\r\n protected drawHilited(ctx: CanvasRenderingContext2D) {\r\n ctx.shadowBlur = 30;\r\n ctx.shadowColor = this._hiliteColor ? this._hiliteColor.toHexString() : \"white\";\r\n ctx.scale(1.25, 1.25);\r\n return false;\r\n }\r\n\r\n /** Called during frame rendering to display this Marker onto the supplied context. */\r\n public drawDecoration(ctx: CanvasRenderingContext2D): void {\r\n if (this._isHilited && this.drawHilited(ctx))\r\n return;\r\n\r\n if (this._scaleFactor !== undefined)\r\n ctx.scale(this._scaleFactor.x, this._scaleFactor.y);\r\n\r\n // first call the \"drawFunc\" if defined. This means it will be below the image and label if they overlap\r\n if (undefined !== this.drawFunc)\r\n this.drawFunc(ctx);\r\n\r\n // next draw the image, if defined and desired\r\n if (this.wantImage && this.image !== undefined) {\r\n const size = this.imageSize ? this.imageSize : this.size;\r\n const offset = new Point2d(size.x / 2, size.y / 2);\r\n if (this.imageOffset)\r\n offset.plus(this.imageOffset, offset);\r\n ctx.drawImage(this.image, -offset.x, -offset.y, size.x, size.y);\r\n }\r\n\r\n // lastly, draw the label, if defined. This puts it on top of all other graphics for this Marker.\r\n if (this.label !== undefined) {\r\n ctx.textAlign = this.labelAlign ? this.labelAlign : \"center\";\r\n ctx.textBaseline = this.labelBaseline ? this.labelBaseline : \"middle\";\r\n ctx.font = this.labelFont ? this.labelFont : \"14px sans-serif\";\r\n ctx.fillStyle = this.labelColor ? this.labelColor : \"white\";\r\n ctx.fillText(this.label, this.labelOffset ? -this.labelOffset.x : 0, this.labelOffset ? -this.labelOffset.y : 0, this.labelMaxWidth);\r\n }\r\n }\r\n\r\n /** Set the [[image]] for this marker.\r\n * @param image Either a [[MarkerImage]] or a Promise for a [[MarkerImage]]. If a Promise is supplied, the [[image]] member is set\r\n * when the Promise resolves.\r\n */\r\n public setImage(image: MarkerImage | Promise<MarkerImage>) {\r\n if (image instanceof Promise) {\r\n image.then((resolvedImage) =>\r\n this.image = resolvedImage,\r\n ).catch((err: Event) => {\r\n const target = err.target as any;\r\n const msg = `Could not load image ${target && target.src ? target.src : \"unknown\"}`;\r\n Logger.logError(`${FrontendLoggerCategory.Package}.markers`, msg);\r\n console.log(msg); // eslint-disable-line no-console\r\n });\r\n } else\r\n this.image = image;\r\n }\r\n\r\n /** Set the image for this Marker from a URL. */\r\n public setImageUrl(url: string) { this.setImage(imageElementFromUrl(url)); }\r\n\r\n /** Set the position (in pixels) for this Marker in the supplied Viewport, based on its worldLocation.\r\n * @param markerSet The MarkerSet if this Marker is included in a set.\r\n * @return true if the Marker is visible and its new position is inside the Viewport.\r\n */\r\n public setPosition(vp: Viewport, markerSet?: MarkerSet<Marker>): boolean {\r\n if (!this.visible) // if we're turned off, skip\r\n return false;\r\n\r\n const pt4 = vp.worldToView4d(this.worldLocation);\r\n if (pt4.w > 1.0 || pt4.w < 1.0e-6) // outside of frustum or too close to eye.\r\n return false;\r\n\r\n pt4.realPoint(this.position);\r\n if (!vp.viewRect.containsPoint(this.position))\r\n return false; // outside this viewport rect\r\n\r\n const origin = this.position;\r\n const sizeX = this.size.x / 2;\r\n const sizeY = this.size.y / 2;\r\n this.rect.init(origin.x - sizeX, origin.y - sizeY, origin.x + sizeX, origin.y + sizeY);\r\n\r\n // if there's a scale factor active, calculate it now.\r\n if (this._scaleFactor && this._scaleFactorRange) {\r\n let scale = 1.0;\r\n if (vp.isCameraOn) {\r\n const range = this._scaleFactorRange;\r\n const minScaleViewW = (undefined !== markerSet ? markerSet.getMinScaleViewW(vp) : getMinScaleViewW(vp));\r\n if (minScaleViewW > 0.0)\r\n scale = Geometry.clamp(range.high - (pt4.w / minScaleViewW) * range.length(), .4, 2.0);\r\n else\r\n scale = Geometry.clamp(range.low + ((1 - pt4.w) * range.length()), .4, 2.0);\r\n this.rect.scaleAboutCenter(scale, scale);\r\n }\r\n this._scaleFactor.set(scale, scale);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** Position the HTMLElement for this Marker relative to the Marker's position in the view.\r\n * The default implementation centers the HTMLElement (using its boundingClientRect) on the Marker.\r\n * Override this method to provide an alternative positioning approach.\r\n */\r\n protected positionHtml() {\r\n const html = this.htmlElement!;\r\n const style = html.style;\r\n style.position = \"absolute\";\r\n const size = html.getBoundingClientRect(); // Note: only call this *after* setting position = absolute\r\n const markerPos = this.position;\r\n style.left = `${markerPos.x - (size.width / 2)}px`;\r\n style.top = `${markerPos.y - (size.height / 2)}px`;\r\n }\r\n\r\n /** Add this Marker to the supplied DecorateContext. */\r\n public addMarker(context: DecorateContext) {\r\n context.addCanvasDecoration(this);\r\n if (undefined !== this.htmlElement) {\r\n // add this Marker to the DOM\r\n context.addHtmlDecoration(this.htmlElement);\r\n this.positionHtml(); // always reposition it\r\n }\r\n }\r\n\r\n /** Set the position and add this Marker to the supplied DecorateContext, if it's visible.\r\n * This method should be called from your implementation of [[Decorator.decorate]]. It will set this Marker's position based on the\r\n * Viewport from the context, and add this this Marker to the supplied DecorateContext.\r\n * @param context The DecorateContext for the Marker\r\n */\r\n public addDecoration(context: DecorateContext) {\r\n if (this.setPosition(context.viewport))\r\n this.addMarker(context);\r\n }\r\n}\r\n\r\n/** A cluster of one or more Markers that overlap one another in the view. The cluster's screen position is taken from its first entry.\r\n * Clusters also have a Marker themselves, that represents the whole group. The cluster marker isn't created until all entries have been added.\r\n * @public\r\n */\r\nexport class Cluster<T extends Marker> {\r\n public readonly markers: T[];\r\n public clusterMarker?: Marker;\r\n\r\n public constructor(markers: T[]) {\r\n assert(markers.length > 0);\r\n this.markers = markers;\r\n }\r\n\r\n public get position() {\r\n return this.markers[0].position;\r\n }\r\n\r\n /**\r\n * Gets the location for the cluster\r\n * @returns The average of the cluster markers worldLocation.\r\n */\r\n public getClusterLocation() {\r\n const location = Point3d.createZero();\r\n if (this.markers.length > 0) {\r\n this.markers.forEach((marker) => location.addInPlace(marker.worldLocation));\r\n location.scaleInPlace(1 / this.markers.length);\r\n }\r\n return location;\r\n }\r\n}\r\n\r\n/** A *set* of Markers that are logically related, such that they *cluster* when they overlap one another in screen space.\r\n * In that case, a *cluster marker* is drawn instead of the overlapping Markers.\r\n * @public\r\n */\r\nexport abstract class MarkerSet<T extends Marker> {\r\n private _viewport?: ScreenViewport;\r\n\r\n /** @internal */\r\n protected _entries: Array<T | Cluster<T>> = []; // this is an array that holds either Markers or a cluster of markers.\r\n /** @internal */\r\n protected readonly _worldToViewMap = Matrix4d.createZero();\r\n /** @internal */\r\n protected _minScaleViewW?: number;\r\n private readonly _markers = new ObservableSet<T>();\r\n\r\n /** The minimum number of Markers that must overlap before they are clustered. Otherwise they are each drawn individually. Default is 1 (always create a cluster.) */\r\n public minimumClusterSize = 1;\r\n /** The set of Markers in this MarkerSet. Add your [[Marker]]s into this. */\r\n public get markers(): Set<T> { return this._markers; }\r\n /** The radius (in pixels) representing the distance between the screen X,Y positions of two Markers to be clustered. When less than or equal to 0 (the default), the radius is calculated based on the first visible marker imageSize/size. */\r\n protected clusterRadius = 0;\r\n\r\n /** Construct a new MarkerSet for a specific ScreenViewport.\r\n * @param viewport the ScreenViewport for this MarkerSet. If undefined, use [[IModelApp.viewManager.selectedView]]\r\n */\r\n public constructor(viewport?: ScreenViewport) {\r\n this._viewport = undefined === viewport ? IModelApp.viewManager.selectedView : viewport;\r\n const markDirty = () => this.markDirty();\r\n this._markers.onAdded.addListener(markDirty);\r\n this._markers.onDeleted.addListener(markDirty);\r\n this._markers.onCleared.addListener(markDirty);\r\n }\r\n\r\n /** The ScreenViewport of this MarkerSet. */\r\n public get viewport(): ScreenViewport | undefined { return this._viewport; }\r\n\r\n /** Change the ScreenViewport for this MarkerSet.\r\n * After this call, the markers from this MarkerSet will only appear in the supplied ScreenViewport.\r\n * @beta\r\n */\r\n public changeViewport(viewport: ScreenViewport) {\r\n this._viewport = viewport;\r\n this.markDirty();\r\n }\r\n\r\n /** Indicate that this MarkerSet has been changed and is now *dirty*.\r\n * This is necessary because [[addDecoration]] does not recreate the set of decoration graphics\r\n * if it can detect that the previously-created set remains valid.\r\n * The set becomes invalid when the view frustum changes, or the contents of [[markers]] changes.\r\n * If some other criterion affecting the graphics changes, invoke this method. This should not be necessary for most use cases.\r\n * @public\r\n */\r\n public markDirty(): void {\r\n this._worldToViewMap.setZero();\r\n }\r\n\r\n /** Implement this method to create a new Marker that is shown as a *stand-in* for a Cluster of Markers that overlap one another.\r\n * @param cluster The [[Cluster]] that the new Marker will represent.\r\n * @returns The Marker that will be displayed to represent the Cluster.\r\n * @note You must create a new Marker each time this method is called.\r\n */\r\n protected abstract getClusterMarker(cluster: Cluster<T>): Marker;\r\n\r\n /** Get weight value limit establishing the distance from camera for the back of view scale factor. */\r\n public getMinScaleViewW(vp: Viewport): number {\r\n if (undefined === this._minScaleViewW)\r\n this._minScaleViewW = getMinScaleViewW(vp);\r\n return this._minScaleViewW;\r\n }\r\n\r\n /** This method should be called from [[Decorator.decorate]]. It will add this this MarkerSet to the supplied DecorateContext.\r\n * This method implements the logic that turns overlapping Markers into a Cluster.\r\n * @param context The DecorateContext for the Markers\r\n */\r\n public addDecoration(context: DecorateContext): void {\r\n const vp = context.viewport;\r\n if (vp !== this._viewport)\r\n return; // not viewport of this MarkerSet, ignore it\r\n\r\n const entries = this._entries;\r\n\r\n // Don't recreate the entries array if the view hasn't changed. This is important for performance, but also necessary for hilite of\r\n // clusters (otherwise they're recreated continually and never hilited.) */\r\n if (!this._worldToViewMap.isAlmostEqual(vp.worldToViewMap.transform0)) {\r\n this._worldToViewMap.setFrom(vp.worldToViewMap.transform0);\r\n this._minScaleViewW = undefined; // Invalidate current value.\r\n entries.length = 0; // start over.\r\n\r\n let distSquared = this.clusterRadius * this.clusterRadius;\r\n\r\n // loop through all of the Markers in the MarkerSet.\r\n for (const marker of this.markers) {\r\n // establish the screen position for this marker. If it's not in view, setPosition returns false\r\n if (!marker.setPosition(vp, this))\r\n continue;\r\n\r\n if (distSquared <= 0) {\r\n const size = marker.imageSize ? marker.imageSize : marker.size;\r\n const dist = Math.max(size.x, size.y) * 1.5;\r\n distSquared = dist * dist;\r\n }\r\n\r\n let added = false;\r\n for (let i = 0; i < entries.length; ++i) { // loop through all of the currently visible markers/clusters\r\n const entry = entries[i];\r\n if (marker.position.distanceSquaredXY(entry.position) <= distSquared) {\r\n added = true; // yes, we're going to save it as a Cluster\r\n if (entry instanceof Cluster) { // is the entry already a Cluster?\r\n entry.markers.push(marker); // yes, just add this to the existing cluster\r\n } else {\r\n entries[i] = new Cluster([entry, marker]); // no, make a new Cluster holding both\r\n }\r\n break; // this Marker has been handled, we can stop looking for overlaps\r\n }\r\n }\r\n if (!added)\r\n entries.push(marker); // there was no overlap, save this Marker to be drawn\r\n }\r\n }\r\n\r\n // we now have an array of Markers and Clusters, add them to context\r\n for (const entry of entries) {\r\n if (entry instanceof Cluster) { // is this entry a Cluster?\r\n if (entry.markers.length <= this.minimumClusterSize) { // yes, does it have more than the minimum number of entries?\r\n entry.markers.forEach((marker) => marker.addMarker(context)); // no, just draw all of its Markers\r\n } else {\r\n // yes, get and draw the Marker for this Cluster\r\n if (undefined === entry.clusterMarker) { // have we already created this cluster marker?\r\n const clusterMarker = this.getClusterMarker(entry); // no, get it now.\r\n // set the marker's position as getClusterMarker may not set it.\r\n if (clusterMarker.rect.isNull)\r\n clusterMarker.setPosition(vp, this);\r\n entry.clusterMarker = clusterMarker;\r\n }\r\n entry.clusterMarker.addMarker(context);\r\n }\r\n } else {\r\n entry.addMarker(context); // entry is a non-overlapping Marker, draw it.\r\n }\r\n }\r\n }\r\n}\r\n"]}
@@ -133,7 +133,7 @@ export class GeometricModelState extends ModelState {
133
133
  // If this is a TileTree reality model, create it's reference
134
134
  const tilesetUrl = this.jsonProperties.tilesetUrl;
135
135
  if (tilesetUrl) {
136
- const rdSourceKeyCS = RealityDataSource.createRealityDataSourceKeyFromUrl(tilesetUrl);
136
+ const rdSourceKeyCS = RealityDataSource.createKeyFromUrl(tilesetUrl);
137
137
  return createRealityTileTreeReference({
138
138
  rdSourceKey: rdSourceKeyCS,
139
139
  url: tilesetUrl,