@itwin/frontend-devtools 4.0.0-dev.52 → 4.0.0-dev.54

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 (344) hide show
  1. package/lib/cjs/ClipboardUtilities.d.ts +8 -8
  2. package/lib/cjs/ClipboardUtilities.js +26 -26
  3. package/lib/cjs/FrontEndDevTools.d.ts +19 -19
  4. package/lib/cjs/FrontEndDevTools.js +221 -221
  5. package/lib/cjs/FrontEndDevTools.js.map +1 -1
  6. package/lib/cjs/effects/Convolution.d.ts +68 -68
  7. package/lib/cjs/effects/Convolution.js +148 -148
  8. package/lib/cjs/effects/Convolution.js.map +1 -1
  9. package/lib/cjs/effects/EffectTools.d.ts +33 -33
  10. package/lib/cjs/effects/EffectTools.js +67 -67
  11. package/lib/cjs/effects/EffectTools.js.map +1 -1
  12. package/lib/cjs/effects/Explosion.d.ts +12 -12
  13. package/lib/cjs/effects/Explosion.js +168 -168
  14. package/lib/cjs/effects/Explosion.js.map +1 -1
  15. package/lib/cjs/effects/FlipImage.d.ts +30 -30
  16. package/lib/cjs/effects/FlipImage.js +79 -79
  17. package/lib/cjs/effects/FlipImage.js.map +1 -1
  18. package/lib/cjs/effects/LensDistortion.d.ts +34 -34
  19. package/lib/cjs/effects/LensDistortion.js +88 -88
  20. package/lib/cjs/effects/LensDistortion.js.map +1 -1
  21. package/lib/cjs/effects/Random.d.ts +24 -24
  22. package/lib/cjs/effects/Random.js +49 -49
  23. package/lib/cjs/effects/Saturation.d.ts +30 -30
  24. package/lib/cjs/effects/Saturation.js +59 -59
  25. package/lib/cjs/effects/Saturation.js.map +1 -1
  26. package/lib/cjs/effects/Snow.d.ts +76 -76
  27. package/lib/cjs/effects/Snow.js +187 -187
  28. package/lib/cjs/effects/Snow.js.map +1 -1
  29. package/lib/cjs/effects/Vignette.d.ts +39 -39
  30. package/lib/cjs/effects/Vignette.js +79 -79
  31. package/lib/cjs/effects/Vignette.js.map +1 -1
  32. package/lib/cjs/frontend-devtools.d.ts +82 -82
  33. package/lib/cjs/frontend-devtools.js +102 -98
  34. package/lib/cjs/frontend-devtools.js.map +1 -1
  35. package/lib/cjs/tools/AnimationIntervalTool.d.ts +15 -15
  36. package/lib/cjs/tools/AnimationIntervalTool.js +30 -30
  37. package/lib/cjs/tools/AnimationIntervalTool.js.map +1 -1
  38. package/lib/cjs/tools/ChangeUnitsTool.d.ts +15 -15
  39. package/lib/cjs/tools/ChangeUnitsTool.js +41 -41
  40. package/lib/cjs/tools/ChangeUnitsTool.js.map +1 -1
  41. package/lib/cjs/tools/ClipTools.d.ts +67 -67
  42. package/lib/cjs/tools/ClipTools.js +161 -161
  43. package/lib/cjs/tools/ClipTools.js.map +1 -1
  44. package/lib/cjs/tools/DisplayStyleTools.d.ts +145 -145
  45. package/lib/cjs/tools/DisplayStyleTools.js +368 -368
  46. package/lib/cjs/tools/DisplayStyleTools.js.map +1 -1
  47. package/lib/cjs/tools/EmphasizeElementsTool.d.ts +60 -60
  48. package/lib/cjs/tools/EmphasizeElementsTool.js +154 -154
  49. package/lib/cjs/tools/EmphasizeElementsTool.js.map +1 -1
  50. package/lib/cjs/tools/FrustumDecoration.d.ts +57 -57
  51. package/lib/cjs/tools/FrustumDecoration.js +374 -374
  52. package/lib/cjs/tools/FrustumDecoration.js.map +1 -1
  53. package/lib/cjs/tools/InspectElementTool.d.ts +42 -42
  54. package/lib/cjs/tools/InspectElementTool.js +198 -198
  55. package/lib/cjs/tools/InspectElementTool.js.map +1 -1
  56. package/lib/cjs/tools/MapLayerTool.d.ts +264 -264
  57. package/lib/cjs/tools/MapLayerTool.js +507 -507
  58. package/lib/cjs/tools/MapLayerTool.js.map +1 -1
  59. package/lib/cjs/tools/MeasureTileLoadTime.d.ts +12 -12
  60. package/lib/cjs/tools/MeasureTileLoadTime.js +63 -63
  61. package/lib/cjs/tools/MeasureTileLoadTime.js.map +1 -1
  62. package/lib/cjs/tools/ModelAppearanceTools.d.ts +86 -86
  63. package/lib/cjs/tools/ModelAppearanceTools.js +183 -183
  64. package/lib/cjs/tools/ModelAppearanceTools.js.map +1 -1
  65. package/lib/cjs/tools/PlanProjectionTools.d.ts +40 -40
  66. package/lib/cjs/tools/PlanProjectionTools.js +149 -149
  67. package/lib/cjs/tools/PlanProjectionTools.js.map +1 -1
  68. package/lib/cjs/tools/PlanarMaskTools.d.ts +182 -182
  69. package/lib/cjs/tools/PlanarMaskTools.js +391 -391
  70. package/lib/cjs/tools/PlanarMaskTools.js.map +1 -1
  71. package/lib/cjs/tools/ProjectExtents.d.ts +41 -41
  72. package/lib/cjs/tools/ProjectExtents.js +110 -110
  73. package/lib/cjs/tools/ProjectExtents.js.map +1 -1
  74. package/lib/cjs/tools/RealityModelTools.d.ts +116 -116
  75. package/lib/cjs/tools/RealityModelTools.js +281 -281
  76. package/lib/cjs/tools/RealityModelTools.js.map +1 -1
  77. package/lib/cjs/tools/RealityTransitionTool.d.ts +25 -25
  78. package/lib/cjs/tools/RealityTransitionTool.js +115 -115
  79. package/lib/cjs/tools/RealityTransitionTool.js.map +1 -1
  80. package/lib/cjs/tools/RenderSystemTools.d.ts +38 -38
  81. package/lib/cjs/tools/RenderSystemTools.js +69 -69
  82. package/lib/cjs/tools/RenderSystemTools.js.map +1 -1
  83. package/lib/cjs/tools/RenderTargetTools.d.ts +107 -107
  84. package/lib/cjs/tools/RenderTargetTools.d.ts.map +1 -1
  85. package/lib/cjs/tools/RenderTargetTools.js +174 -174
  86. package/lib/cjs/tools/RenderTargetTools.js.map +1 -1
  87. package/lib/cjs/tools/ReportWebGLCompatibilityTool.d.ts +11 -11
  88. package/lib/cjs/tools/ReportWebGLCompatibilityTool.js +30 -30
  89. package/lib/cjs/tools/ReportWebGLCompatibilityTool.js.map +1 -1
  90. package/lib/cjs/tools/SavedViews.d.ts +46 -46
  91. package/lib/cjs/tools/SavedViews.js +136 -136
  92. package/lib/cjs/tools/SavedViews.js.map +1 -1
  93. package/lib/cjs/tools/ScheduleScriptTools.d.ts +37 -37
  94. package/lib/cjs/tools/ScheduleScriptTools.js +157 -157
  95. package/lib/cjs/tools/ScheduleScriptTools.js.map +1 -1
  96. package/lib/cjs/tools/SelectionTools.d.ts +28 -28
  97. package/lib/cjs/tools/SelectionTools.js +87 -87
  98. package/lib/cjs/tools/SelectionTools.js.map +1 -1
  99. package/lib/cjs/tools/SetGpuMemoryLimitTool.d.ts +15 -15
  100. package/lib/cjs/tools/SetGpuMemoryLimitTool.js +33 -33
  101. package/lib/cjs/tools/SetGpuMemoryLimitTool.js.map +1 -1
  102. package/lib/cjs/tools/SourceAspectIdTools.d.ts +40 -40
  103. package/lib/cjs/tools/SourceAspectIdTools.js +86 -86
  104. package/lib/cjs/tools/SourceAspectIdTools.js.map +1 -1
  105. package/lib/cjs/tools/TileRequestDecoration.d.ts +12 -12
  106. package/lib/cjs/tools/TileRequestDecoration.js +83 -83
  107. package/lib/cjs/tools/TileRequestDecoration.js.map +1 -1
  108. package/lib/cjs/tools/TileTreeBoundsDecoration.d.ts +11 -11
  109. package/lib/cjs/tools/TileTreeBoundsDecoration.js +74 -74
  110. package/lib/cjs/tools/TileTreeBoundsDecoration.js.map +1 -1
  111. package/lib/cjs/tools/ToolTipProvider.d.ts +15 -15
  112. package/lib/cjs/tools/ToolTipProvider.js +66 -66
  113. package/lib/cjs/tools/ToolTipProvider.js.map +1 -1
  114. package/lib/cjs/tools/ViewportTools.d.ts +218 -218
  115. package/lib/cjs/tools/ViewportTools.js +516 -516
  116. package/lib/cjs/tools/ViewportTools.js.map +1 -1
  117. package/lib/cjs/tools/parseArgs.d.ts +23 -23
  118. package/lib/cjs/tools/parseArgs.js +51 -51
  119. package/lib/cjs/tools/parseBoolean.d.ts +8 -8
  120. package/lib/cjs/tools/parseBoolean.js +26 -26
  121. package/lib/cjs/tools/parseToggle.d.ts +8 -8
  122. package/lib/cjs/tools/parseToggle.js +25 -25
  123. package/lib/cjs/ui/Button.d.ts +29 -29
  124. package/lib/cjs/ui/Button.d.ts.map +1 -1
  125. package/lib/cjs/ui/Button.js +26 -26
  126. package/lib/cjs/ui/CheckBox.d.ts +23 -23
  127. package/lib/cjs/ui/CheckBox.d.ts.map +1 -1
  128. package/lib/cjs/ui/CheckBox.js +27 -27
  129. package/lib/cjs/ui/ColorInput.d.ts +27 -27
  130. package/lib/cjs/ui/ColorInput.d.ts.map +1 -1
  131. package/lib/cjs/ui/ColorInput.js +53 -53
  132. package/lib/cjs/ui/ComboBox.d.ts +28 -28
  133. package/lib/cjs/ui/ComboBox.d.ts.map +1 -1
  134. package/lib/cjs/ui/ComboBox.js +42 -42
  135. package/lib/cjs/ui/DataList.d.ts +27 -27
  136. package/lib/cjs/ui/DataList.d.ts.map +1 -1
  137. package/lib/cjs/ui/DataList.js +39 -39
  138. package/lib/cjs/ui/NestedMenu.d.ts +19 -19
  139. package/lib/cjs/ui/NestedMenu.d.ts.map +1 -1
  140. package/lib/cjs/ui/NestedMenu.js +46 -46
  141. package/lib/cjs/ui/NumericInput.d.ts +35 -35
  142. package/lib/cjs/ui/NumericInput.d.ts.map +1 -1
  143. package/lib/cjs/ui/NumericInput.js +61 -61
  144. package/lib/cjs/ui/RadioBox.d.ts +29 -29
  145. package/lib/cjs/ui/RadioBox.d.ts.map +1 -1
  146. package/lib/cjs/ui/RadioBox.js +76 -76
  147. package/lib/cjs/ui/Slider.d.ts +28 -28
  148. package/lib/cjs/ui/Slider.d.ts.map +1 -1
  149. package/lib/cjs/ui/Slider.js +42 -42
  150. package/lib/cjs/ui/TextBox.d.ts +32 -32
  151. package/lib/cjs/ui/TextBox.d.ts.map +1 -1
  152. package/lib/cjs/ui/TextBox.js +56 -56
  153. package/lib/cjs/widgets/DiagnosticsPanel.d.ts +37 -37
  154. package/lib/cjs/widgets/DiagnosticsPanel.js +81 -81
  155. package/lib/cjs/widgets/FpsTracker.d.ts +19 -19
  156. package/lib/cjs/widgets/FpsTracker.js +56 -56
  157. package/lib/cjs/widgets/GpuProfiler.d.ts +16 -16
  158. package/lib/cjs/widgets/GpuProfiler.js +192 -192
  159. package/lib/cjs/widgets/KeyinField.d.ts +61 -61
  160. package/lib/cjs/widgets/KeyinField.js +186 -186
  161. package/lib/cjs/widgets/MemoryTracker.d.ts +27 -27
  162. package/lib/cjs/widgets/MemoryTracker.js +242 -242
  163. package/lib/cjs/widgets/MemoryTracker.js.map +1 -1
  164. package/lib/cjs/widgets/RenderCommandBreakdown.d.ts +15 -15
  165. package/lib/cjs/widgets/RenderCommandBreakdown.js +67 -67
  166. package/lib/cjs/widgets/TileMemoryBreakdown.d.ts +30 -30
  167. package/lib/cjs/widgets/TileMemoryBreakdown.js +203 -203
  168. package/lib/cjs/widgets/TileStatisticsTracker.d.ts +21 -21
  169. package/lib/cjs/widgets/TileStatisticsTracker.js +144 -144
  170. package/lib/cjs/widgets/ToolSettingsTracker.d.ts +9 -9
  171. package/lib/cjs/widgets/ToolSettingsTracker.js +211 -211
  172. package/lib/cjs/widgets/ToolSettingsTracker.js.map +1 -1
  173. package/lib/esm/ClipboardUtilities.d.ts +8 -8
  174. package/lib/esm/ClipboardUtilities.js +22 -22
  175. package/lib/esm/FrontEndDevTools.d.ts +19 -19
  176. package/lib/esm/FrontEndDevTools.js +218 -217
  177. package/lib/esm/FrontEndDevTools.js.map +1 -1
  178. package/lib/esm/effects/Convolution.d.ts +68 -68
  179. package/lib/esm/effects/Convolution.js +144 -138
  180. package/lib/esm/effects/Convolution.js.map +1 -1
  181. package/lib/esm/effects/EffectTools.d.ts +33 -33
  182. package/lib/esm/effects/EffectTools.js +63 -61
  183. package/lib/esm/effects/EffectTools.js.map +1 -1
  184. package/lib/esm/effects/Explosion.d.ts +12 -12
  185. package/lib/esm/effects/Explosion.js +165 -164
  186. package/lib/esm/effects/Explosion.js.map +1 -1
  187. package/lib/esm/effects/FlipImage.d.ts +30 -30
  188. package/lib/esm/effects/FlipImage.js +76 -74
  189. package/lib/esm/effects/FlipImage.js.map +1 -1
  190. package/lib/esm/effects/LensDistortion.d.ts +34 -34
  191. package/lib/esm/effects/LensDistortion.js +85 -83
  192. package/lib/esm/effects/LensDistortion.js.map +1 -1
  193. package/lib/esm/effects/Random.d.ts +24 -24
  194. package/lib/esm/effects/Random.js +41 -41
  195. package/lib/esm/effects/Saturation.d.ts +30 -30
  196. package/lib/esm/effects/Saturation.js +56 -54
  197. package/lib/esm/effects/Saturation.js.map +1 -1
  198. package/lib/esm/effects/Snow.d.ts +76 -76
  199. package/lib/esm/effects/Snow.js +184 -182
  200. package/lib/esm/effects/Snow.js.map +1 -1
  201. package/lib/esm/effects/Vignette.d.ts +39 -39
  202. package/lib/esm/effects/Vignette.js +76 -74
  203. package/lib/esm/effects/Vignette.js.map +1 -1
  204. package/lib/esm/frontend-devtools.d.ts +82 -82
  205. package/lib/esm/frontend-devtools.js +86 -86
  206. package/lib/esm/tools/AnimationIntervalTool.d.ts +15 -15
  207. package/lib/esm/tools/AnimationIntervalTool.js +27 -26
  208. package/lib/esm/tools/AnimationIntervalTool.js.map +1 -1
  209. package/lib/esm/tools/ChangeUnitsTool.d.ts +15 -15
  210. package/lib/esm/tools/ChangeUnitsTool.js +38 -37
  211. package/lib/esm/tools/ChangeUnitsTool.js.map +1 -1
  212. package/lib/esm/tools/ClipTools.d.ts +67 -67
  213. package/lib/esm/tools/ClipTools.js +158 -155
  214. package/lib/esm/tools/ClipTools.js.map +1 -1
  215. package/lib/esm/tools/DisplayStyleTools.d.ts +145 -145
  216. package/lib/esm/tools/DisplayStyleTools.js +364 -354
  217. package/lib/esm/tools/DisplayStyleTools.js.map +1 -1
  218. package/lib/esm/tools/EmphasizeElementsTool.d.ts +60 -60
  219. package/lib/esm/tools/EmphasizeElementsTool.js +150 -145
  220. package/lib/esm/tools/EmphasizeElementsTool.js.map +1 -1
  221. package/lib/esm/tools/FrustumDecoration.d.ts +57 -57
  222. package/lib/esm/tools/FrustumDecoration.js +370 -367
  223. package/lib/esm/tools/FrustumDecoration.js.map +1 -1
  224. package/lib/esm/tools/InspectElementTool.d.ts +42 -42
  225. package/lib/esm/tools/InspectElementTool.js +195 -194
  226. package/lib/esm/tools/InspectElementTool.js.map +1 -1
  227. package/lib/esm/tools/MapLayerTool.d.ts +264 -264
  228. package/lib/esm/tools/MapLayerTool.js +504 -485
  229. package/lib/esm/tools/MapLayerTool.js.map +1 -1
  230. package/lib/esm/tools/MeasureTileLoadTime.d.ts +12 -12
  231. package/lib/esm/tools/MeasureTileLoadTime.js +60 -59
  232. package/lib/esm/tools/MeasureTileLoadTime.js.map +1 -1
  233. package/lib/esm/tools/ModelAppearanceTools.d.ts +86 -86
  234. package/lib/esm/tools/ModelAppearanceTools.js +180 -172
  235. package/lib/esm/tools/ModelAppearanceTools.js.map +1 -1
  236. package/lib/esm/tools/PlanProjectionTools.d.ts +40 -40
  237. package/lib/esm/tools/PlanProjectionTools.js +146 -143
  238. package/lib/esm/tools/PlanProjectionTools.js.map +1 -1
  239. package/lib/esm/tools/PlanarMaskTools.d.ts +182 -182
  240. package/lib/esm/tools/PlanarMaskTools.js +387 -375
  241. package/lib/esm/tools/PlanarMaskTools.js.map +1 -1
  242. package/lib/esm/tools/ProjectExtents.d.ts +41 -41
  243. package/lib/esm/tools/ProjectExtents.js +105 -104
  244. package/lib/esm/tools/ProjectExtents.js.map +1 -1
  245. package/lib/esm/tools/RealityModelTools.d.ts +116 -116
  246. package/lib/esm/tools/RealityModelTools.js +278 -268
  247. package/lib/esm/tools/RealityModelTools.js.map +1 -1
  248. package/lib/esm/tools/RealityTransitionTool.d.ts +25 -25
  249. package/lib/esm/tools/RealityTransitionTool.js +112 -111
  250. package/lib/esm/tools/RealityTransitionTool.js.map +1 -1
  251. package/lib/esm/tools/RenderSystemTools.d.ts +38 -38
  252. package/lib/esm/tools/RenderSystemTools.js +65 -62
  253. package/lib/esm/tools/RenderSystemTools.js.map +1 -1
  254. package/lib/esm/tools/RenderTargetTools.d.ts +107 -107
  255. package/lib/esm/tools/RenderTargetTools.d.ts.map +1 -1
  256. package/lib/esm/tools/RenderTargetTools.js +169 -159
  257. package/lib/esm/tools/RenderTargetTools.js.map +1 -1
  258. package/lib/esm/tools/ReportWebGLCompatibilityTool.d.ts +11 -11
  259. package/lib/esm/tools/ReportWebGLCompatibilityTool.js +27 -26
  260. package/lib/esm/tools/ReportWebGLCompatibilityTool.js.map +1 -1
  261. package/lib/esm/tools/SavedViews.d.ts +46 -46
  262. package/lib/esm/tools/SavedViews.js +131 -128
  263. package/lib/esm/tools/SavedViews.js.map +1 -1
  264. package/lib/esm/tools/ScheduleScriptTools.d.ts +37 -37
  265. package/lib/esm/tools/ScheduleScriptTools.js +154 -151
  266. package/lib/esm/tools/ScheduleScriptTools.js.map +1 -1
  267. package/lib/esm/tools/SelectionTools.d.ts +28 -28
  268. package/lib/esm/tools/SelectionTools.js +84 -82
  269. package/lib/esm/tools/SelectionTools.js.map +1 -1
  270. package/lib/esm/tools/SetGpuMemoryLimitTool.d.ts +15 -15
  271. package/lib/esm/tools/SetGpuMemoryLimitTool.js +30 -29
  272. package/lib/esm/tools/SetGpuMemoryLimitTool.js.map +1 -1
  273. package/lib/esm/tools/SourceAspectIdTools.d.ts +40 -40
  274. package/lib/esm/tools/SourceAspectIdTools.js +82 -80
  275. package/lib/esm/tools/SourceAspectIdTools.js.map +1 -1
  276. package/lib/esm/tools/TileRequestDecoration.d.ts +12 -12
  277. package/lib/esm/tools/TileRequestDecoration.js +80 -79
  278. package/lib/esm/tools/TileRequestDecoration.js.map +1 -1
  279. package/lib/esm/tools/TileTreeBoundsDecoration.d.ts +11 -11
  280. package/lib/esm/tools/TileTreeBoundsDecoration.js +71 -70
  281. package/lib/esm/tools/TileTreeBoundsDecoration.js.map +1 -1
  282. package/lib/esm/tools/ToolTipProvider.d.ts +15 -15
  283. package/lib/esm/tools/ToolTipProvider.js +63 -62
  284. package/lib/esm/tools/ToolTipProvider.js.map +1 -1
  285. package/lib/esm/tools/ViewportTools.d.ts +218 -218
  286. package/lib/esm/tools/ViewportTools.js +511 -492
  287. package/lib/esm/tools/ViewportTools.js.map +1 -1
  288. package/lib/esm/tools/parseArgs.d.ts +23 -23
  289. package/lib/esm/tools/parseArgs.js +47 -47
  290. package/lib/esm/tools/parseBoolean.d.ts +8 -8
  291. package/lib/esm/tools/parseBoolean.js +22 -22
  292. package/lib/esm/tools/parseToggle.d.ts +8 -8
  293. package/lib/esm/tools/parseToggle.js +21 -21
  294. package/lib/esm/ui/Button.d.ts +29 -29
  295. package/lib/esm/ui/Button.d.ts.map +1 -1
  296. package/lib/esm/ui/Button.js +22 -22
  297. package/lib/esm/ui/CheckBox.d.ts +23 -23
  298. package/lib/esm/ui/CheckBox.d.ts.map +1 -1
  299. package/lib/esm/ui/CheckBox.js +23 -23
  300. package/lib/esm/ui/ColorInput.d.ts +27 -27
  301. package/lib/esm/ui/ColorInput.d.ts.map +1 -1
  302. package/lib/esm/ui/ColorInput.js +48 -48
  303. package/lib/esm/ui/ComboBox.d.ts +28 -28
  304. package/lib/esm/ui/ComboBox.d.ts.map +1 -1
  305. package/lib/esm/ui/ComboBox.js +38 -38
  306. package/lib/esm/ui/DataList.d.ts +27 -27
  307. package/lib/esm/ui/DataList.d.ts.map +1 -1
  308. package/lib/esm/ui/DataList.js +34 -34
  309. package/lib/esm/ui/NestedMenu.d.ts +19 -19
  310. package/lib/esm/ui/NestedMenu.d.ts.map +1 -1
  311. package/lib/esm/ui/NestedMenu.js +42 -42
  312. package/lib/esm/ui/NumericInput.d.ts +35 -35
  313. package/lib/esm/ui/NumericInput.d.ts.map +1 -1
  314. package/lib/esm/ui/NumericInput.js +56 -56
  315. package/lib/esm/ui/RadioBox.d.ts +29 -29
  316. package/lib/esm/ui/RadioBox.d.ts.map +1 -1
  317. package/lib/esm/ui/RadioBox.js +72 -72
  318. package/lib/esm/ui/Slider.d.ts +28 -28
  319. package/lib/esm/ui/Slider.d.ts.map +1 -1
  320. package/lib/esm/ui/Slider.js +38 -38
  321. package/lib/esm/ui/TextBox.d.ts +32 -32
  322. package/lib/esm/ui/TextBox.d.ts.map +1 -1
  323. package/lib/esm/ui/TextBox.js +52 -52
  324. package/lib/esm/widgets/DiagnosticsPanel.d.ts +37 -37
  325. package/lib/esm/widgets/DiagnosticsPanel.js +77 -77
  326. package/lib/esm/widgets/FpsTracker.d.ts +19 -19
  327. package/lib/esm/widgets/FpsTracker.js +52 -52
  328. package/lib/esm/widgets/GpuProfiler.d.ts +16 -16
  329. package/lib/esm/widgets/GpuProfiler.js +188 -188
  330. package/lib/esm/widgets/KeyinField.d.ts +61 -61
  331. package/lib/esm/widgets/KeyinField.js +182 -182
  332. package/lib/esm/widgets/MemoryTracker.d.ts +27 -27
  333. package/lib/esm/widgets/MemoryTracker.js +237 -237
  334. package/lib/esm/widgets/MemoryTracker.js.map +1 -1
  335. package/lib/esm/widgets/RenderCommandBreakdown.d.ts +15 -15
  336. package/lib/esm/widgets/RenderCommandBreakdown.js +63 -63
  337. package/lib/esm/widgets/TileMemoryBreakdown.d.ts +30 -30
  338. package/lib/esm/widgets/TileMemoryBreakdown.js +199 -199
  339. package/lib/esm/widgets/TileStatisticsTracker.d.ts +21 -21
  340. package/lib/esm/widgets/TileStatisticsTracker.js +140 -140
  341. package/lib/esm/widgets/ToolSettingsTracker.d.ts +9 -9
  342. package/lib/esm/widgets/ToolSettingsTracker.js +208 -207
  343. package/lib/esm/widgets/ToolSettingsTracker.js.map +1 -1
  344. package/package.json +8 -8
@@ -1,199 +1,199 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.InspectElementTool = void 0;
8
- /** @packageDocumentation
9
- * @module Tools
10
- */
11
- const core_bentley_1 = require("@itwin/core-bentley");
12
- const core_common_1 = require("@itwin/core-common");
13
- const core_frontend_1 = require("@itwin/core-frontend");
14
- const ClipboardUtilities_1 = require("../ClipboardUtilities");
15
- const parseArgs_1 = require("./parseArgs");
16
- /** Creates a readable text summary of a geometric element or geometry part. The keyin takes the following arguments, all of which are optional:
17
- * - `id=elementId,elementId,elementId` comma-separated list of element Ids where each `elementId` is a hexadecimal element Id such as "0x12cb";
18
- * - `symbology=0|1` where 1 indicates detailed symbology information should be included in the output;
19
- * - `placement=0|1` where 1 indicates detailed geometric element placement should be included; and
20
- * - `verbosity=0|1|2` controlling the verbosity of the output for each geometric primitive in the geometry stream. Higher values = more detailed information. Note verbosity=2 can produce megabytes of data for certain types of geometric primitives like large meshes.
21
- * - `modal=0|1` where 1 indicates the output should appear in a modal dialog.
22
- * - `copy=0|1` where 1 indicates the output should be copied to the clipboard. Defaults to true.
23
- * - `refs=0|1` where 1 indicates that for geometry parts a list of all elements referencing that part should be included in the output. This is extremely computationally expensive.
24
- * If no id is specified, the tool runs in interactive mode: first operating upon the selection set (if any), then allowing the user to select additional elements.
25
- * @beta
26
- */
27
- class InspectElementTool extends core_frontend_1.PrimitiveTool {
28
- constructor(options, elementIds) {
29
- super();
30
- this._options = {};
31
- this._modal = false;
32
- this._useSelection = false;
33
- this._doCopy = false;
34
- this._explodeParts = false;
35
- if (undefined !== options)
36
- this._options = { ...options };
37
- this._elementIds = elementIds;
38
- }
39
- static get minArgs() { return 0; }
40
- static get maxArgs() { return 6; }
41
- setupAndPromptForNextAction() {
42
- this._useSelection = (undefined !== this.targetView && this.targetView.iModel.selectionSet.isActive);
43
- if (!this._useSelection)
44
- core_frontend_1.IModelApp.accuSnap.enableLocate(true);
45
- this.showPrompt();
46
- }
47
- showPrompt() {
48
- core_frontend_1.CoreTools.outputPromptByKey(this._useSelection ? "ElementSet.Prompts.ConfirmSelection" : "ElementSet.Prompts.IdentifyElement");
49
- }
50
- autoLockTarget() { }
51
- requireWriteableTarget() { return false; }
52
- async onUnsuspend() {
53
- this.showPrompt();
54
- }
55
- async onPostInstall() {
56
- await super.onPostInstall();
57
- if (undefined !== this._elementIds)
58
- this.process(this._elementIds).then(async () => {
59
- await this.onReinitialize();
60
- }).catch((err) => {
61
- core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, err.toString()));
62
- });
63
- else {
64
- this.setupAndPromptForNextAction();
65
- }
66
- }
67
- async onDataButtonDown(ev) {
68
- if (this._useSelection) {
69
- if (undefined !== ev.viewport) {
70
- const ids = [];
71
- ev.viewport.iModel.selectionSet.elements.forEach((id) => {
72
- if (!core_bentley_1.Id64.isInvalid(id) && !core_bentley_1.Id64.isTransient(id))
73
- ids.push(id);
74
- });
75
- if (0 === ids.length)
76
- core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, core_frontend_1.CoreTools.translate("ElementSet.Error.NotSupportedElmType")));
77
- else
78
- await this.process(ids);
79
- await this.onReinitialize();
80
- return core_frontend_1.EventHandled.Yes;
81
- }
82
- }
83
- const hit = await core_frontend_1.IModelApp.locateManager.doLocate(new core_frontend_1.LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);
84
- if (undefined === hit || !hit.isElementHit)
85
- return core_frontend_1.EventHandled.No;
86
- await this.process([hit.sourceId]);
87
- this.setupAndPromptForNextAction();
88
- return core_frontend_1.EventHandled.No;
89
- }
90
- async onResetButtonUp(_ev) {
91
- await this.onReinitialize();
92
- return core_frontend_1.EventHandled.No;
93
- }
94
- async onReinitialize() {
95
- if (this._useSelection || undefined !== this._elementIds) {
96
- await this.exitTool();
97
- }
98
- else {
99
- await this.onRestartTool();
100
- }
101
- }
102
- async onRestartTool() {
103
- const tool = new InspectElementTool();
104
- if (!await tool.run())
105
- return this.exitTool();
106
- }
107
- async filterHit(hit, _out) {
108
- return hit.isElementHit ? core_frontend_1.LocateFilterStatus.Accept : core_frontend_1.LocateFilterStatus.Reject;
109
- }
110
- async process(elementIds) {
111
- const request = {
112
- elementIds,
113
- options: this._options,
114
- };
115
- let messageDetails;
116
- try {
117
- let str = await core_common_1.IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);
118
- if (this._explodeParts) {
119
- const regex = /^part id: (0x[a-f0-9]+)/gm;
120
- const partIds = new Set();
121
- let match;
122
- while (null !== (match = regex.exec(str)))
123
- partIds.add(match[1]);
124
- if (partIds.size > 0) {
125
- request.elementIds = Array.from(partIds);
126
- str += `\npart ids: ${JSON.stringify(request.elementIds)}\n`;
127
- str += await core_common_1.IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);
128
- }
129
- }
130
- if (this._doCopy)
131
- (0, ClipboardUtilities_1.copyStringToClipboard)(str);
132
- const brief = `Summary ${this._doCopy ? "copied to clipboard." : "complete."}`;
133
- messageDetails = new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, brief, str);
134
- if (this._modal) {
135
- const div = document.createElement("div");
136
- const appendText = (toAppend) => {
137
- const txt = document.createElement("div");
138
- txt.innerText = toAppend;
139
- div.append(txt);
140
- };
141
- const lines = str.split("\n");
142
- const maxLines = 30;
143
- let curLine = 0;
144
- for (const line of lines) {
145
- appendText(line);
146
- if (++curLine > maxLines) {
147
- appendText("...");
148
- break;
149
- }
150
- }
151
- await core_frontend_1.IModelApp.notifications.openMessageBox(core_frontend_1.MessageBoxType.Ok, div, core_frontend_1.MessageBoxIconType.Information);
152
- }
153
- }
154
- catch (err) {
155
- messageDetails = new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, "Error occurred while generating summary", core_bentley_1.BentleyError.getErrorMessage(err));
156
- }
157
- core_frontend_1.IModelApp.notifications.outputMessage(messageDetails);
158
- }
159
- async parseAndRun(...inputArgs) {
160
- const args = (0, parseArgs_1.parseArgs)(inputArgs);
161
- const ids = args.get("i");
162
- if (undefined !== ids)
163
- this._elementIds = ids.split(",");
164
- const verbosity = args.getInteger("v");
165
- if (undefined !== verbosity) {
166
- switch (verbosity) {
167
- case 0:
168
- this._options.geometryVerbosity = core_common_1.GeometrySummaryVerbosity.Basic;
169
- break;
170
- case 1:
171
- this._options.geometryVerbosity = core_common_1.GeometrySummaryVerbosity.Detailed;
172
- break;
173
- case 2:
174
- this._options.geometryVerbosity = core_common_1.GeometrySummaryVerbosity.Full;
175
- break;
176
- }
177
- }
178
- const symbology = args.getBoolean("s");
179
- if (undefined !== symbology)
180
- this._options.verboseSymbology = symbology;
181
- const placement = args.getBoolean("p");
182
- if (undefined !== placement)
183
- this._options.includePlacement = placement;
184
- const parts = args.getBoolean("r");
185
- if (true === parts && undefined !== core_frontend_1.IModelApp.viewManager.selectedView)
186
- this._options.includePartReferences = core_frontend_1.IModelApp.viewManager.selectedView.view.is3d() ? "3d" : "2d";
187
- const modal = args.getBoolean("m");
188
- if (undefined !== modal)
189
- this._modal = modal;
190
- const doCopy = args.getBoolean("c");
191
- if (undefined !== doCopy)
192
- this._doCopy = doCopy;
193
- this._explodeParts = true === args.getBoolean("e");
194
- return this.run();
195
- }
196
- }
197
- exports.InspectElementTool = InspectElementTool;
198
- InspectElementTool.toolId = "InspectElement";
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.InspectElementTool = void 0;
8
+ /** @packageDocumentation
9
+ * @module Tools
10
+ */
11
+ const core_bentley_1 = require("@itwin/core-bentley");
12
+ const core_common_1 = require("@itwin/core-common");
13
+ const core_frontend_1 = require("@itwin/core-frontend");
14
+ const ClipboardUtilities_1 = require("../ClipboardUtilities");
15
+ const parseArgs_1 = require("./parseArgs");
16
+ /** Creates a readable text summary of a geometric element or geometry part. The keyin takes the following arguments, all of which are optional:
17
+ * - `id=elementId,elementId,elementId` comma-separated list of element Ids where each `elementId` is a hexadecimal element Id such as "0x12cb";
18
+ * - `symbology=0|1` where 1 indicates detailed symbology information should be included in the output;
19
+ * - `placement=0|1` where 1 indicates detailed geometric element placement should be included; and
20
+ * - `verbosity=0|1|2` controlling the verbosity of the output for each geometric primitive in the geometry stream. Higher values = more detailed information. Note verbosity=2 can produce megabytes of data for certain types of geometric primitives like large meshes.
21
+ * - `modal=0|1` where 1 indicates the output should appear in a modal dialog.
22
+ * - `copy=0|1` where 1 indicates the output should be copied to the clipboard. Defaults to true.
23
+ * - `refs=0|1` where 1 indicates that for geometry parts a list of all elements referencing that part should be included in the output. This is extremely computationally expensive.
24
+ * If no id is specified, the tool runs in interactive mode: first operating upon the selection set (if any), then allowing the user to select additional elements.
25
+ * @beta
26
+ */
27
+ class InspectElementTool extends core_frontend_1.PrimitiveTool {
28
+ static get minArgs() { return 0; }
29
+ static get maxArgs() { return 6; }
30
+ constructor(options, elementIds) {
31
+ super();
32
+ this._options = {};
33
+ this._modal = false;
34
+ this._useSelection = false;
35
+ this._doCopy = false;
36
+ this._explodeParts = false;
37
+ if (undefined !== options)
38
+ this._options = { ...options };
39
+ this._elementIds = elementIds;
40
+ }
41
+ setupAndPromptForNextAction() {
42
+ this._useSelection = (undefined !== this.targetView && this.targetView.iModel.selectionSet.isActive);
43
+ if (!this._useSelection)
44
+ core_frontend_1.IModelApp.accuSnap.enableLocate(true);
45
+ this.showPrompt();
46
+ }
47
+ showPrompt() {
48
+ core_frontend_1.CoreTools.outputPromptByKey(this._useSelection ? "ElementSet.Prompts.ConfirmSelection" : "ElementSet.Prompts.IdentifyElement");
49
+ }
50
+ autoLockTarget() { }
51
+ requireWriteableTarget() { return false; }
52
+ async onUnsuspend() {
53
+ this.showPrompt();
54
+ }
55
+ async onPostInstall() {
56
+ await super.onPostInstall();
57
+ if (undefined !== this._elementIds)
58
+ this.process(this._elementIds).then(async () => {
59
+ await this.onReinitialize();
60
+ }).catch((err) => {
61
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, err.toString()));
62
+ });
63
+ else {
64
+ this.setupAndPromptForNextAction();
65
+ }
66
+ }
67
+ async onDataButtonDown(ev) {
68
+ if (this._useSelection) {
69
+ if (undefined !== ev.viewport) {
70
+ const ids = [];
71
+ ev.viewport.iModel.selectionSet.elements.forEach((id) => {
72
+ if (!core_bentley_1.Id64.isInvalid(id) && !core_bentley_1.Id64.isTransient(id))
73
+ ids.push(id);
74
+ });
75
+ if (0 === ids.length)
76
+ core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, core_frontend_1.CoreTools.translate("ElementSet.Error.NotSupportedElmType")));
77
+ else
78
+ await this.process(ids);
79
+ await this.onReinitialize();
80
+ return core_frontend_1.EventHandled.Yes;
81
+ }
82
+ }
83
+ const hit = await core_frontend_1.IModelApp.locateManager.doLocate(new core_frontend_1.LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);
84
+ if (undefined === hit || !hit.isElementHit)
85
+ return core_frontend_1.EventHandled.No;
86
+ await this.process([hit.sourceId]);
87
+ this.setupAndPromptForNextAction();
88
+ return core_frontend_1.EventHandled.No;
89
+ }
90
+ async onResetButtonUp(_ev) {
91
+ await this.onReinitialize();
92
+ return core_frontend_1.EventHandled.No;
93
+ }
94
+ async onReinitialize() {
95
+ if (this._useSelection || undefined !== this._elementIds) {
96
+ await this.exitTool();
97
+ }
98
+ else {
99
+ await this.onRestartTool();
100
+ }
101
+ }
102
+ async onRestartTool() {
103
+ const tool = new InspectElementTool();
104
+ if (!await tool.run())
105
+ return this.exitTool();
106
+ }
107
+ async filterHit(hit, _out) {
108
+ return hit.isElementHit ? core_frontend_1.LocateFilterStatus.Accept : core_frontend_1.LocateFilterStatus.Reject;
109
+ }
110
+ async process(elementIds) {
111
+ const request = {
112
+ elementIds,
113
+ options: this._options,
114
+ };
115
+ let messageDetails;
116
+ try {
117
+ let str = await core_common_1.IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);
118
+ if (this._explodeParts) {
119
+ const regex = /^part id: (0x[a-f0-9]+)/gm;
120
+ const partIds = new Set();
121
+ let match;
122
+ while (null !== (match = regex.exec(str)))
123
+ partIds.add(match[1]);
124
+ if (partIds.size > 0) {
125
+ request.elementIds = Array.from(partIds);
126
+ str += `\npart ids: ${JSON.stringify(request.elementIds)}\n`;
127
+ str += await core_common_1.IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);
128
+ }
129
+ }
130
+ if (this._doCopy)
131
+ (0, ClipboardUtilities_1.copyStringToClipboard)(str);
132
+ const brief = `Summary ${this._doCopy ? "copied to clipboard." : "complete."}`;
133
+ messageDetails = new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, brief, str);
134
+ if (this._modal) {
135
+ const div = document.createElement("div");
136
+ const appendText = (toAppend) => {
137
+ const txt = document.createElement("div");
138
+ txt.innerText = toAppend;
139
+ div.append(txt);
140
+ };
141
+ const lines = str.split("\n");
142
+ const maxLines = 30;
143
+ let curLine = 0;
144
+ for (const line of lines) {
145
+ appendText(line);
146
+ if (++curLine > maxLines) {
147
+ appendText("...");
148
+ break;
149
+ }
150
+ }
151
+ await core_frontend_1.IModelApp.notifications.openMessageBox(core_frontend_1.MessageBoxType.Ok, div, core_frontend_1.MessageBoxIconType.Information);
152
+ }
153
+ }
154
+ catch (err) {
155
+ messageDetails = new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, "Error occurred while generating summary", core_bentley_1.BentleyError.getErrorMessage(err));
156
+ }
157
+ core_frontend_1.IModelApp.notifications.outputMessage(messageDetails);
158
+ }
159
+ async parseAndRun(...inputArgs) {
160
+ const args = (0, parseArgs_1.parseArgs)(inputArgs);
161
+ const ids = args.get("i");
162
+ if (undefined !== ids)
163
+ this._elementIds = ids.split(",");
164
+ const verbosity = args.getInteger("v");
165
+ if (undefined !== verbosity) {
166
+ switch (verbosity) {
167
+ case 0:
168
+ this._options.geometryVerbosity = core_common_1.GeometrySummaryVerbosity.Basic;
169
+ break;
170
+ case 1:
171
+ this._options.geometryVerbosity = core_common_1.GeometrySummaryVerbosity.Detailed;
172
+ break;
173
+ case 2:
174
+ this._options.geometryVerbosity = core_common_1.GeometrySummaryVerbosity.Full;
175
+ break;
176
+ }
177
+ }
178
+ const symbology = args.getBoolean("s");
179
+ if (undefined !== symbology)
180
+ this._options.verboseSymbology = symbology;
181
+ const placement = args.getBoolean("p");
182
+ if (undefined !== placement)
183
+ this._options.includePlacement = placement;
184
+ const parts = args.getBoolean("r");
185
+ if (true === parts && undefined !== core_frontend_1.IModelApp.viewManager.selectedView)
186
+ this._options.includePartReferences = core_frontend_1.IModelApp.viewManager.selectedView.view.is3d() ? "3d" : "2d";
187
+ const modal = args.getBoolean("m");
188
+ if (undefined !== modal)
189
+ this._modal = modal;
190
+ const doCopy = args.getBoolean("c");
191
+ if (undefined !== doCopy)
192
+ this._doCopy = doCopy;
193
+ this._explodeParts = true === args.getBoolean("e");
194
+ return this.run();
195
+ }
196
+ }
197
+ InspectElementTool.toolId = "InspectElement";
198
+ exports.InspectElementTool = InspectElementTool;
199
199
  //# sourceMappingURL=InspectElementTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InspectElementTool.js","sourceRoot":"","sources":["../../../src/tools/InspectElementTool.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,sDAAgF;AAChF,oDAA8G;AAC9G,wDAG8B;AAC9B,8DAA8D;AAC9D,2CAAwC;AAExC;;;;;;;;;;GAUG;AACH,MAAa,kBAAmB,SAAQ,6BAAa;IAYnD,YAAY,OAAgC,EAAE,UAAyB;QACrE,KAAK,EAAE,CAAC;QARF,aAAQ,GAA2B,EAAE,CAAC;QAEtC,WAAM,GAAG,KAAK,CAAC;QACf,kBAAa,GAAG,KAAK,CAAC;QACtB,YAAO,GAAG,KAAK,CAAC;QAChB,kBAAa,GAAG,KAAK,CAAC;QAI5B,IAAI,SAAS,KAAK,OAAO;YACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAEjC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAhBM,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAiB1C,2BAA2B;QACjC,IAAI,CAAC,aAAa,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACrG,IAAI,CAAC,IAAI,CAAC,aAAa;YACrB,yBAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,yBAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC;IACjI,CAAC;IAEe,cAAc,KAAW,CAAC;IAE1B,sBAAsB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAEnD,KAAK,CAAC,WAAW;QAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEe,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAE5B,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW;YAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBAC7C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,yBAAS,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,oCAAoB,CAAC,qCAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC/G,CAAC,CAAC,CAAC;aACA;YACH,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACpC;IACH,CAAC;IAEe,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ,EAAE;gBAC7B,MAAM,GAAG,GAAc,EAAE,CAAC;gBAC1B,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;oBACtD,IAAI,CAAC,mBAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAI,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC9C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM;oBAClB,yBAAS,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,oCAAoB,CAAC,qCAAqB,CAAC,KAAK,EAAE,yBAAS,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC;;oBAE1J,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAE1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,OAAO,4BAAY,CAAC,GAAG,CAAC;aACzB;SACF;QAED,MAAM,GAAG,GAAG,MAAM,yBAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,8BAAc,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;QACtH,IAAI,SAAS,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY;YACxC,OAAO,4BAAY,CAAC,EAAE,CAAC;QAEzB,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,OAAO,4BAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,eAAe,CAAC,GAAkB;QACtD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,4BAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,cAAc;QAClC,IAAI,IAAI,CAAC,aAAa,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE;YACxD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;SACvB;aAAM;YACL,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;SAC5B;IACH,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,IAAI,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;YACnB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEe,KAAK,CAAC,SAAS,CAAC,GAAc,EAAE,IAAoB;QAClE,OAAO,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,kCAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,kCAAkB,CAAC,MAAM,CAAC;IAClF,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,UAAwB;QAC5C,MAAM,OAAO,GAAG;YACd,UAAU;YACV,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC;QACF,IAAI,cAAoC,CAAC;QACzC,IAAI;YACF,IAAI,GAAG,GAAG,MAAM,oCAAsB,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;YACpJ,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,MAAM,KAAK,GAAG,2BAA2B,CAAC;gBAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;gBAClC,IAAI,KAAK,CAAC;gBACV,OAAO,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAExB,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE;oBACpB,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACzC,GAAG,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;oBAC7D,GAAG,IAAI,MAAM,oCAAsB,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;iBAClJ;aACF;YAED,IAAI,IAAI,CAAC,OAAO;gBACd,IAAA,0CAAqB,EAAC,GAAG,CAAC,CAAC;YAE7B,MAAM,KAAK,GAAG,WAAW,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/E,cAAc,GAAG,IAAI,oCAAoB,CAAC,qCAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAElF,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,EAAE;oBACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBAC1C,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;oBACzB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC,CAAC;gBAEF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC;gBACpB,IAAI,OAAO,GAAG,CAAC,CAAC;gBAChB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,UAAU,CAAC,IAAI,CAAC,CAAC;oBACjB,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE;wBACxB,UAAU,CAAC,KAAK,CAAC,CAAC;wBAClB,MAAM;qBACP;iBACF;gBAED,MAAM,yBAAS,CAAC,aAAa,CAAC,cAAc,CAAC,8BAAc,CAAC,EAAE,EAAE,GAAG,EAAE,kCAAkB,CAAC,WAAW,CAAC,CAAC;aACtG;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,cAAc,GAAG,IAAI,oCAAoB,CAAC,qCAAqB,CAAC,KAAK,EAAE,yCAAyC,EAAE,2BAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;SACtJ;QAED,yBAAS,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACxD,CAAC;IAEe,KAAK,CAAC,WAAW,CAAC,GAAG,SAAmB;QACtD,MAAM,IAAI,GAAG,IAAA,qBAAS,EAAC,SAAS,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,SAAS,KAAK,GAAG;YACnB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,QAAQ,SAAS,EAAE;gBACjB,KAAK,CAAC;oBACJ,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,sCAAwB,CAAC,KAAK,CAAC;oBACjE,MAAM;gBACR,KAAK,CAAC;oBACJ,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,sCAAwB,CAAC,QAAQ,CAAC;oBACpE,MAAM;gBACR,KAAK,CAAC;oBACJ,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,sCAAwB,CAAC,IAAI,CAAC;oBAChE,MAAM;aACT;SACF;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,SAAS,KAAK,SAAS;YACzB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,SAAS,KAAK,SAAS;YACzB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,KAAK,IAAI,SAAS,KAAK,yBAAS,CAAC,WAAW,CAAC,YAAY;YACpE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,GAAG,yBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAErG,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,SAAS,KAAK,KAAK;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,SAAS,KAAK,MAAM;YACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAExB,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;;AA7MH,gDA8MC;AA7MwB,yBAAM,GAAG,gBAAgB,CAAC","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\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { BentleyError, Id64, Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { GeometrySummaryOptions, GeometrySummaryVerbosity, IModelReadRpcInterface } from \"@itwin/core-common\";\r\nimport {\r\n BeButtonEvent, CoreTools, EventHandled, HitDetail, IModelApp, LocateFilterStatus, LocateResponse, MessageBoxIconType, MessageBoxType,\r\n NotifyMessageDetails, OutputMessagePriority, PrimitiveTool,\r\n} from \"@itwin/core-frontend\";\r\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\r\nimport { parseArgs } from \"./parseArgs\";\r\n\r\n/** Creates a readable text summary of a geometric element or geometry part. The keyin takes the following arguments, all of which are optional:\r\n * - `id=elementId,elementId,elementId` comma-separated list of element Ids where each `elementId` is a hexadecimal element Id such as \"0x12cb\";\r\n * - `symbology=0|1` where 1 indicates detailed symbology information should be included in the output;\r\n * - `placement=0|1` where 1 indicates detailed geometric element placement should be included; and\r\n * - `verbosity=0|1|2` controlling the verbosity of the output for each geometric primitive in the geometry stream. Higher values = more detailed information. Note verbosity=2 can produce megabytes of data for certain types of geometric primitives like large meshes.\r\n * - `modal=0|1` where 1 indicates the output should appear in a modal dialog.\r\n * - `copy=0|1` where 1 indicates the output should be copied to the clipboard. Defaults to true.\r\n * - `refs=0|1` where 1 indicates that for geometry parts a list of all elements referencing that part should be included in the output. This is extremely computationally expensive.\r\n * If no id is specified, the tool runs in interactive mode: first operating upon the selection set (if any), then allowing the user to select additional elements.\r\n * @beta\r\n */\r\nexport class InspectElementTool extends PrimitiveTool {\r\n public static override toolId = \"InspectElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 6; }\r\n\r\n private _options: GeometrySummaryOptions = {};\r\n private _elementIds?: Id64String[];\r\n private _modal = false;\r\n private _useSelection = false;\r\n private _doCopy = false;\r\n private _explodeParts = false;\r\n\r\n constructor(options?: GeometrySummaryOptions, elementIds?: Id64String[]) {\r\n super();\r\n if (undefined !== options)\r\n this._options = { ...options };\r\n\r\n this._elementIds = elementIds;\r\n }\r\n\r\n private setupAndPromptForNextAction(): void {\r\n this._useSelection = (undefined !== this.targetView && this.targetView.iModel.selectionSet.isActive);\r\n if (!this._useSelection)\r\n IModelApp.accuSnap.enableLocate(true);\r\n\r\n this.showPrompt();\r\n }\r\n\r\n private showPrompt(): void {\r\n CoreTools.outputPromptByKey(this._useSelection ? \"ElementSet.Prompts.ConfirmSelection\" : \"ElementSet.Prompts.IdentifyElement\");\r\n }\r\n\r\n public override autoLockTarget(): void { }\r\n\r\n public override requireWriteableTarget(): boolean { return false; }\r\n\r\n public override async onUnsuspend() {\r\n this.showPrompt();\r\n }\r\n\r\n public override async onPostInstall() {\r\n await super.onPostInstall();\r\n\r\n if (undefined !== this._elementIds)\r\n this.process(this._elementIds).then(async () => {\r\n await this.onReinitialize();\r\n }).catch((err) => {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, err.toString()));\r\n });\r\n else {\r\n this.setupAndPromptForNextAction();\r\n }\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (this._useSelection) {\r\n if (undefined !== ev.viewport) {\r\n const ids: Id64Array = [];\r\n ev.viewport.iModel.selectionSet.elements.forEach((id) => {\r\n if (!Id64.isInvalid(id) && !Id64.isTransient(id))\r\n ids.push(id);\r\n });\r\n\r\n if (0 === ids.length)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, CoreTools.translate(\"ElementSet.Error.NotSupportedElmType\")));\r\n else\r\n await this.process(ids);\r\n\r\n await this.onReinitialize();\r\n return EventHandled.Yes;\r\n }\r\n }\r\n\r\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\r\n if (undefined === hit || !hit.isElementHit)\r\n return EventHandled.No;\r\n\r\n await this.process([hit.sourceId]);\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onReinitialize() {\r\n if (this._useSelection || undefined !== this._elementIds) {\r\n await this.exitTool();\r\n } else {\r\n await this.onRestartTool();\r\n }\r\n }\r\n\r\n public async onRestartTool() {\r\n const tool = new InspectElementTool();\r\n if (!await tool.run())\r\n return this.exitTool();\r\n }\r\n\r\n public override async filterHit(hit: HitDetail, _out: LocateResponse): Promise<LocateFilterStatus> {\r\n return hit.isElementHit ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\r\n }\r\n\r\n private async process(elementIds: Id64String[]) {\r\n const request = {\r\n elementIds,\r\n options: this._options,\r\n };\r\n let messageDetails: NotifyMessageDetails;\r\n try {\r\n let str = await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);\r\n if (this._explodeParts) {\r\n const regex = /^part id: (0x[a-f0-9]+)/gm;\r\n const partIds = new Set<string>();\r\n let match;\r\n while (null !== (match = regex.exec(str)))\r\n partIds.add(match[1]);\r\n\r\n if (partIds.size > 0) {\r\n request.elementIds = Array.from(partIds);\r\n str += `\\npart ids: ${JSON.stringify(request.elementIds)}\\n`;\r\n str += await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);\r\n }\r\n }\r\n\r\n if (this._doCopy)\r\n copyStringToClipboard(str);\r\n\r\n const brief = `Summary ${this._doCopy ? \"copied to clipboard.\" : \"complete.\"}`;\r\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Info, brief, str);\r\n\r\n if (this._modal) {\r\n const div = document.createElement(\"div\");\r\n const appendText = (toAppend: string) => {\r\n const txt = document.createElement(\"div\");\r\n txt.innerText = toAppend;\r\n div.append(txt);\r\n };\r\n\r\n const lines = str.split(\"\\n\");\r\n const maxLines = 30;\r\n let curLine = 0;\r\n for (const line of lines) {\r\n appendText(line);\r\n if (++curLine > maxLines) {\r\n appendText(\"...\");\r\n break;\r\n }\r\n }\r\n\r\n await IModelApp.notifications.openMessageBox(MessageBoxType.Ok, div, MessageBoxIconType.Information);\r\n }\r\n } catch (err) {\r\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Error, \"Error occurred while generating summary\", BentleyError.getErrorMessage(err));\r\n }\r\n\r\n IModelApp.notifications.outputMessage(messageDetails);\r\n }\r\n\r\n public override async parseAndRun(...inputArgs: string[]): Promise<boolean> {\r\n const args = parseArgs(inputArgs);\r\n const ids = args.get(\"i\");\r\n if (undefined !== ids)\r\n this._elementIds = ids.split(\",\");\r\n\r\n const verbosity = args.getInteger(\"v\");\r\n if (undefined !== verbosity) {\r\n switch (verbosity) {\r\n case 0:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Basic;\r\n break;\r\n case 1:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Detailed;\r\n break;\r\n case 2:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Full;\r\n break;\r\n }\r\n }\r\n\r\n const symbology = args.getBoolean(\"s\");\r\n if (undefined !== symbology)\r\n this._options.verboseSymbology = symbology;\r\n\r\n const placement = args.getBoolean(\"p\");\r\n if (undefined !== placement)\r\n this._options.includePlacement = placement;\r\n\r\n const parts = args.getBoolean(\"r\");\r\n if (true === parts && undefined !== IModelApp.viewManager.selectedView)\r\n this._options.includePartReferences = IModelApp.viewManager.selectedView.view.is3d() ? \"3d\" : \"2d\";\r\n\r\n const modal = args.getBoolean(\"m\");\r\n if (undefined !== modal)\r\n this._modal = modal;\r\n\r\n const doCopy = args.getBoolean(\"c\");\r\n if (undefined !== doCopy)\r\n this._doCopy = doCopy;\r\n\r\n this._explodeParts = true === args.getBoolean(\"e\");\r\n\r\n return this.run();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"InspectElementTool.js","sourceRoot":"","sources":["../../../src/tools/InspectElementTool.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\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { BentleyError, Id64, Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { GeometrySummaryOptions, GeometrySummaryVerbosity, IModelReadRpcInterface } from \"@itwin/core-common\";\r\nimport {\r\n BeButtonEvent, CoreTools, EventHandled, HitDetail, IModelApp, LocateFilterStatus, LocateResponse, MessageBoxIconType, MessageBoxType,\r\n NotifyMessageDetails, OutputMessagePriority, PrimitiveTool,\r\n} from \"@itwin/core-frontend\";\r\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\r\nimport { parseArgs } from \"./parseArgs\";\r\n\r\n/** Creates a readable text summary of a geometric element or geometry part. The keyin takes the following arguments, all of which are optional:\r\n * - `id=elementId,elementId,elementId` comma-separated list of element Ids where each `elementId` is a hexadecimal element Id such as \"0x12cb\";\r\n * - `symbology=0|1` where 1 indicates detailed symbology information should be included in the output;\r\n * - `placement=0|1` where 1 indicates detailed geometric element placement should be included; and\r\n * - `verbosity=0|1|2` controlling the verbosity of the output for each geometric primitive in the geometry stream. Higher values = more detailed information. Note verbosity=2 can produce megabytes of data for certain types of geometric primitives like large meshes.\r\n * - `modal=0|1` where 1 indicates the output should appear in a modal dialog.\r\n * - `copy=0|1` where 1 indicates the output should be copied to the clipboard. Defaults to true.\r\n * - `refs=0|1` where 1 indicates that for geometry parts a list of all elements referencing that part should be included in the output. This is extremely computationally expensive.\r\n * If no id is specified, the tool runs in interactive mode: first operating upon the selection set (if any), then allowing the user to select additional elements.\r\n * @beta\r\n */\r\nexport class InspectElementTool extends PrimitiveTool {\r\n public static override toolId = \"InspectElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 6; }\r\n\r\n private _options: GeometrySummaryOptions = {};\r\n private _elementIds?: Id64String[];\r\n private _modal = false;\r\n private _useSelection = false;\r\n private _doCopy = false;\r\n private _explodeParts = false;\r\n\r\n constructor(options?: GeometrySummaryOptions, elementIds?: Id64String[]) {\r\n super();\r\n if (undefined !== options)\r\n this._options = { ...options };\r\n\r\n this._elementIds = elementIds;\r\n }\r\n\r\n private setupAndPromptForNextAction(): void {\r\n this._useSelection = (undefined !== this.targetView && this.targetView.iModel.selectionSet.isActive);\r\n if (!this._useSelection)\r\n IModelApp.accuSnap.enableLocate(true);\r\n\r\n this.showPrompt();\r\n }\r\n\r\n private showPrompt(): void {\r\n CoreTools.outputPromptByKey(this._useSelection ? \"ElementSet.Prompts.ConfirmSelection\" : \"ElementSet.Prompts.IdentifyElement\");\r\n }\r\n\r\n public override autoLockTarget(): void { }\r\n\r\n public override requireWriteableTarget(): boolean { return false; }\r\n\r\n public override async onUnsuspend() {\r\n this.showPrompt();\r\n }\r\n\r\n public override async onPostInstall() {\r\n await super.onPostInstall();\r\n\r\n if (undefined !== this._elementIds)\r\n this.process(this._elementIds).then(async () => {\r\n await this.onReinitialize();\r\n }).catch((err) => {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, err.toString()));\r\n });\r\n else {\r\n this.setupAndPromptForNextAction();\r\n }\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (this._useSelection) {\r\n if (undefined !== ev.viewport) {\r\n const ids: Id64Array = [];\r\n ev.viewport.iModel.selectionSet.elements.forEach((id) => {\r\n if (!Id64.isInvalid(id) && !Id64.isTransient(id))\r\n ids.push(id);\r\n });\r\n\r\n if (0 === ids.length)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, CoreTools.translate(\"ElementSet.Error.NotSupportedElmType\")));\r\n else\r\n await this.process(ids);\r\n\r\n await this.onReinitialize();\r\n return EventHandled.Yes;\r\n }\r\n }\r\n\r\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\r\n if (undefined === hit || !hit.isElementHit)\r\n return EventHandled.No;\r\n\r\n await this.process([hit.sourceId]);\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onReinitialize() {\r\n if (this._useSelection || undefined !== this._elementIds) {\r\n await this.exitTool();\r\n } else {\r\n await this.onRestartTool();\r\n }\r\n }\r\n\r\n public async onRestartTool() {\r\n const tool = new InspectElementTool();\r\n if (!await tool.run())\r\n return this.exitTool();\r\n }\r\n\r\n public override async filterHit(hit: HitDetail, _out: LocateResponse): Promise<LocateFilterStatus> {\r\n return hit.isElementHit ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\r\n }\r\n\r\n private async process(elementIds: Id64String[]) {\r\n const request = {\r\n elementIds,\r\n options: this._options,\r\n };\r\n let messageDetails: NotifyMessageDetails;\r\n try {\r\n let str = await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);\r\n if (this._explodeParts) {\r\n const regex = /^part id: (0x[a-f0-9]+)/gm;\r\n const partIds = new Set<string>();\r\n let match;\r\n while (null !== (match = regex.exec(str)))\r\n partIds.add(match[1]);\r\n\r\n if (partIds.size > 0) {\r\n request.elementIds = Array.from(partIds);\r\n str += `\\npart ids: ${JSON.stringify(request.elementIds)}\\n`;\r\n str += await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);\r\n }\r\n }\r\n\r\n if (this._doCopy)\r\n copyStringToClipboard(str);\r\n\r\n const brief = `Summary ${this._doCopy ? \"copied to clipboard.\" : \"complete.\"}`;\r\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Info, brief, str);\r\n\r\n if (this._modal) {\r\n const div = document.createElement(\"div\");\r\n const appendText = (toAppend: string) => {\r\n const txt = document.createElement(\"div\");\r\n txt.innerText = toAppend;\r\n div.append(txt);\r\n };\r\n\r\n const lines = str.split(\"\\n\");\r\n const maxLines = 30;\r\n let curLine = 0;\r\n for (const line of lines) {\r\n appendText(line);\r\n if (++curLine > maxLines) {\r\n appendText(\"...\");\r\n break;\r\n }\r\n }\r\n\r\n await IModelApp.notifications.openMessageBox(MessageBoxType.Ok, div, MessageBoxIconType.Information);\r\n }\r\n } catch (err) {\r\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Error, \"Error occurred while generating summary\", BentleyError.getErrorMessage(err));\r\n }\r\n\r\n IModelApp.notifications.outputMessage(messageDetails);\r\n }\r\n\r\n public override async parseAndRun(...inputArgs: string[]): Promise<boolean> {\r\n const args = parseArgs(inputArgs);\r\n const ids = args.get(\"i\");\r\n if (undefined !== ids)\r\n this._elementIds = ids.split(\",\");\r\n\r\n const verbosity = args.getInteger(\"v\");\r\n if (undefined !== verbosity) {\r\n switch (verbosity) {\r\n case 0:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Basic;\r\n break;\r\n case 1:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Detailed;\r\n break;\r\n case 2:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Full;\r\n break;\r\n }\r\n }\r\n\r\n const symbology = args.getBoolean(\"s\");\r\n if (undefined !== symbology)\r\n this._options.verboseSymbology = symbology;\r\n\r\n const placement = args.getBoolean(\"p\");\r\n if (undefined !== placement)\r\n this._options.includePlacement = placement;\r\n\r\n const parts = args.getBoolean(\"r\");\r\n if (true === parts && undefined !== IModelApp.viewManager.selectedView)\r\n this._options.includePartReferences = IModelApp.viewManager.selectedView.view.is3d() ? \"3d\" : \"2d\";\r\n\r\n const modal = args.getBoolean(\"m\");\r\n if (undefined !== modal)\r\n this._modal = modal;\r\n\r\n const doCopy = args.getBoolean(\"c\");\r\n if (undefined !== doCopy)\r\n this._doCopy = doCopy;\r\n\r\n this._explodeParts = true === args.getBoolean(\"e\");\r\n\r\n return this.run();\r\n }\r\n}\r\n"]}