@itwin/frontend-devtools 3.6.0-dev.7 → 3.6.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 (372) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/ClipboardUtilities.d.ts +8 -8
  4. package/lib/cjs/ClipboardUtilities.js +26 -26
  5. package/lib/cjs/ClipboardUtilities.js.map +1 -1
  6. package/lib/cjs/FrontEndDevTools.d.ts +19 -19
  7. package/lib/cjs/FrontEndDevTools.js +221 -221
  8. package/lib/cjs/FrontEndDevTools.js.map +1 -1
  9. package/lib/cjs/effects/Convolution.d.ts +68 -68
  10. package/lib/cjs/effects/Convolution.js +165 -165
  11. package/lib/cjs/effects/Convolution.js.map +1 -1
  12. package/lib/cjs/effects/EffectTools.d.ts +33 -33
  13. package/lib/cjs/effects/EffectTools.js +68 -68
  14. package/lib/cjs/effects/EffectTools.js.map +1 -1
  15. package/lib/cjs/effects/Explosion.d.ts +12 -12
  16. package/lib/cjs/effects/Explosion.js +168 -168
  17. package/lib/cjs/effects/Explosion.js.map +1 -1
  18. package/lib/cjs/effects/FlipImage.d.ts +30 -30
  19. package/lib/cjs/effects/FlipImage.js +99 -99
  20. package/lib/cjs/effects/FlipImage.js.map +1 -1
  21. package/lib/cjs/effects/LensDistortion.d.ts +34 -34
  22. package/lib/cjs/effects/LensDistortion.js +109 -109
  23. package/lib/cjs/effects/LensDistortion.js.map +1 -1
  24. package/lib/cjs/effects/Random.d.ts +24 -24
  25. package/lib/cjs/effects/Random.js +49 -49
  26. package/lib/cjs/effects/Random.js.map +1 -1
  27. package/lib/cjs/effects/Saturation.d.ts +30 -30
  28. package/lib/cjs/effects/Saturation.js +85 -85
  29. package/lib/cjs/effects/Saturation.js.map +1 -1
  30. package/lib/cjs/effects/Snow.d.ts +76 -76
  31. package/lib/cjs/effects/Snow.js +187 -187
  32. package/lib/cjs/effects/Snow.js.map +1 -1
  33. package/lib/cjs/effects/Vignette.d.ts +39 -39
  34. package/lib/cjs/effects/Vignette.js +108 -108
  35. package/lib/cjs/effects/Vignette.js.map +1 -1
  36. package/lib/cjs/frontend-devtools.d.ts +82 -82
  37. package/lib/cjs/frontend-devtools.js +98 -98
  38. package/lib/cjs/frontend-devtools.js.map +1 -1
  39. package/lib/cjs/tools/AnimationIntervalTool.d.ts +15 -15
  40. package/lib/cjs/tools/AnimationIntervalTool.js +30 -30
  41. package/lib/cjs/tools/AnimationIntervalTool.js.map +1 -1
  42. package/lib/cjs/tools/ChangeUnitsTool.d.ts +15 -15
  43. package/lib/cjs/tools/ChangeUnitsTool.js +41 -41
  44. package/lib/cjs/tools/ChangeUnitsTool.js.map +1 -1
  45. package/lib/cjs/tools/ClipTools.d.ts +67 -67
  46. package/lib/cjs/tools/ClipTools.js +164 -164
  47. package/lib/cjs/tools/ClipTools.js.map +1 -1
  48. package/lib/cjs/tools/DisplayStyleTools.d.ts +145 -145
  49. package/lib/cjs/tools/DisplayStyleTools.js +370 -370
  50. package/lib/cjs/tools/DisplayStyleTools.js.map +1 -1
  51. package/lib/cjs/tools/EmphasizeElementsTool.d.ts +60 -60
  52. package/lib/cjs/tools/EmphasizeElementsTool.js +154 -154
  53. package/lib/cjs/tools/EmphasizeElementsTool.js.map +1 -1
  54. package/lib/cjs/tools/FrustumDecoration.d.ts +57 -57
  55. package/lib/cjs/tools/FrustumDecoration.js +374 -374
  56. package/lib/cjs/tools/FrustumDecoration.js.map +1 -1
  57. package/lib/cjs/tools/InspectElementTool.d.ts +42 -42
  58. package/lib/cjs/tools/InspectElementTool.js +198 -198
  59. package/lib/cjs/tools/InspectElementTool.js.map +1 -1
  60. package/lib/cjs/tools/MapLayerTool.d.ts +264 -264
  61. package/lib/cjs/tools/MapLayerTool.js +507 -507
  62. package/lib/cjs/tools/MapLayerTool.js.map +1 -1
  63. package/lib/cjs/tools/MeasureTileLoadTime.d.ts +12 -12
  64. package/lib/cjs/tools/MeasureTileLoadTime.js +63 -63
  65. package/lib/cjs/tools/MeasureTileLoadTime.js.map +1 -1
  66. package/lib/cjs/tools/ModelAppearanceTools.d.ts +86 -86
  67. package/lib/cjs/tools/ModelAppearanceTools.js +183 -183
  68. package/lib/cjs/tools/ModelAppearanceTools.js.map +1 -1
  69. package/lib/cjs/tools/PlanProjectionTools.d.ts +40 -40
  70. package/lib/cjs/tools/PlanProjectionTools.js +149 -149
  71. package/lib/cjs/tools/PlanProjectionTools.js.map +1 -1
  72. package/lib/cjs/tools/PlanarMaskTools.d.ts +182 -182
  73. package/lib/cjs/tools/PlanarMaskTools.js +393 -393
  74. package/lib/cjs/tools/PlanarMaskTools.js.map +1 -1
  75. package/lib/cjs/tools/ProjectExtents.d.ts +41 -41
  76. package/lib/cjs/tools/ProjectExtents.js +110 -110
  77. package/lib/cjs/tools/ProjectExtents.js.map +1 -1
  78. package/lib/cjs/tools/RealityModelTools.d.ts +116 -116
  79. package/lib/cjs/tools/RealityModelTools.js +281 -281
  80. package/lib/cjs/tools/RealityModelTools.js.map +1 -1
  81. package/lib/cjs/tools/RealityTransitionTool.d.ts +25 -25
  82. package/lib/cjs/tools/RealityTransitionTool.js +116 -116
  83. package/lib/cjs/tools/RealityTransitionTool.js.map +1 -1
  84. package/lib/cjs/tools/RenderSystemTools.d.ts +38 -38
  85. package/lib/cjs/tools/RenderSystemTools.js +70 -70
  86. package/lib/cjs/tools/RenderSystemTools.js.map +1 -1
  87. package/lib/cjs/tools/RenderTargetTools.d.ts +107 -107
  88. package/lib/cjs/tools/RenderTargetTools.js +174 -174
  89. package/lib/cjs/tools/RenderTargetTools.js.map +1 -1
  90. package/lib/cjs/tools/ReportWebGLCompatibilityTool.d.ts +11 -11
  91. package/lib/cjs/tools/ReportWebGLCompatibilityTool.js +30 -30
  92. package/lib/cjs/tools/ReportWebGLCompatibilityTool.js.map +1 -1
  93. package/lib/cjs/tools/SavedViews.d.ts +46 -46
  94. package/lib/cjs/tools/SavedViews.js +136 -136
  95. package/lib/cjs/tools/SavedViews.js.map +1 -1
  96. package/lib/cjs/tools/ScheduleScriptTools.d.ts +37 -37
  97. package/lib/cjs/tools/ScheduleScriptTools.js +159 -159
  98. package/lib/cjs/tools/ScheduleScriptTools.js.map +1 -1
  99. package/lib/cjs/tools/SelectionTools.d.ts +28 -28
  100. package/lib/cjs/tools/SelectionTools.js +87 -87
  101. package/lib/cjs/tools/SelectionTools.js.map +1 -1
  102. package/lib/cjs/tools/SetGpuMemoryLimitTool.d.ts +15 -15
  103. package/lib/cjs/tools/SetGpuMemoryLimitTool.js +33 -33
  104. package/lib/cjs/tools/SetGpuMemoryLimitTool.js.map +1 -1
  105. package/lib/cjs/tools/SourceAspectIdTools.d.ts +40 -40
  106. package/lib/cjs/tools/SourceAspectIdTools.js +86 -86
  107. package/lib/cjs/tools/SourceAspectIdTools.js.map +1 -1
  108. package/lib/cjs/tools/TileRequestDecoration.d.ts +12 -12
  109. package/lib/cjs/tools/TileRequestDecoration.js +83 -83
  110. package/lib/cjs/tools/TileRequestDecoration.js.map +1 -1
  111. package/lib/cjs/tools/TileTreeBoundsDecoration.d.ts +11 -11
  112. package/lib/cjs/tools/TileTreeBoundsDecoration.js +74 -74
  113. package/lib/cjs/tools/TileTreeBoundsDecoration.js.map +1 -1
  114. package/lib/cjs/tools/ToolTipProvider.d.ts +15 -15
  115. package/lib/cjs/tools/ToolTipProvider.js +66 -66
  116. package/lib/cjs/tools/ToolTipProvider.js.map +1 -1
  117. package/lib/cjs/tools/ViewportTools.d.ts +218 -218
  118. package/lib/cjs/tools/ViewportTools.js +516 -516
  119. package/lib/cjs/tools/ViewportTools.js.map +1 -1
  120. package/lib/cjs/tools/parseArgs.d.ts +23 -23
  121. package/lib/cjs/tools/parseArgs.js +51 -51
  122. package/lib/cjs/tools/parseArgs.js.map +1 -1
  123. package/lib/cjs/tools/parseBoolean.d.ts +8 -8
  124. package/lib/cjs/tools/parseBoolean.js +26 -26
  125. package/lib/cjs/tools/parseBoolean.js.map +1 -1
  126. package/lib/cjs/tools/parseToggle.d.ts +8 -8
  127. package/lib/cjs/tools/parseToggle.js +25 -25
  128. package/lib/cjs/tools/parseToggle.js.map +1 -1
  129. package/lib/cjs/ui/Button.d.ts +29 -29
  130. package/lib/cjs/ui/Button.js +26 -26
  131. package/lib/cjs/ui/Button.js.map +1 -1
  132. package/lib/cjs/ui/CheckBox.d.ts +23 -23
  133. package/lib/cjs/ui/CheckBox.js +27 -27
  134. package/lib/cjs/ui/CheckBox.js.map +1 -1
  135. package/lib/cjs/ui/ColorInput.d.ts +27 -27
  136. package/lib/cjs/ui/ColorInput.js +53 -53
  137. package/lib/cjs/ui/ColorInput.js.map +1 -1
  138. package/lib/cjs/ui/ComboBox.d.ts +28 -28
  139. package/lib/cjs/ui/ComboBox.js +42 -42
  140. package/lib/cjs/ui/ComboBox.js.map +1 -1
  141. package/lib/cjs/ui/DataList.d.ts +27 -27
  142. package/lib/cjs/ui/DataList.js +39 -39
  143. package/lib/cjs/ui/DataList.js.map +1 -1
  144. package/lib/cjs/ui/NestedMenu.d.ts +19 -19
  145. package/lib/cjs/ui/NestedMenu.js +46 -46
  146. package/lib/cjs/ui/NestedMenu.js.map +1 -1
  147. package/lib/cjs/ui/NumericInput.d.ts +35 -35
  148. package/lib/cjs/ui/NumericInput.js +61 -61
  149. package/lib/cjs/ui/NumericInput.js.map +1 -1
  150. package/lib/cjs/ui/RadioBox.d.ts +29 -29
  151. package/lib/cjs/ui/RadioBox.js +76 -76
  152. package/lib/cjs/ui/RadioBox.js.map +1 -1
  153. package/lib/cjs/ui/Slider.d.ts +28 -26
  154. package/lib/cjs/ui/Slider.d.ts.map +1 -1
  155. package/lib/cjs/ui/Slider.js +42 -34
  156. package/lib/cjs/ui/Slider.js.map +1 -1
  157. package/lib/cjs/ui/TextBox.d.ts +32 -32
  158. package/lib/cjs/ui/TextBox.js +56 -56
  159. package/lib/cjs/ui/TextBox.js.map +1 -1
  160. package/lib/cjs/widgets/DiagnosticsPanel.d.ts +37 -37
  161. package/lib/cjs/widgets/DiagnosticsPanel.js +81 -81
  162. package/lib/cjs/widgets/DiagnosticsPanel.js.map +1 -1
  163. package/lib/cjs/widgets/FpsTracker.d.ts +19 -19
  164. package/lib/cjs/widgets/FpsTracker.js +56 -56
  165. package/lib/cjs/widgets/FpsTracker.js.map +1 -1
  166. package/lib/cjs/widgets/GpuProfiler.d.ts +16 -16
  167. package/lib/cjs/widgets/GpuProfiler.js +192 -192
  168. package/lib/cjs/widgets/GpuProfiler.js.map +1 -1
  169. package/lib/cjs/widgets/KeyinField.d.ts +61 -61
  170. package/lib/cjs/widgets/KeyinField.js +187 -187
  171. package/lib/cjs/widgets/KeyinField.js.map +1 -1
  172. package/lib/cjs/widgets/MemoryTracker.d.ts +27 -27
  173. package/lib/cjs/widgets/MemoryTracker.js +243 -243
  174. package/lib/cjs/widgets/MemoryTracker.js.map +1 -1
  175. package/lib/cjs/widgets/RenderCommandBreakdown.d.ts +15 -15
  176. package/lib/cjs/widgets/RenderCommandBreakdown.js +68 -68
  177. package/lib/cjs/widgets/RenderCommandBreakdown.js.map +1 -1
  178. package/lib/cjs/widgets/TileMemoryBreakdown.d.ts +30 -30
  179. package/lib/cjs/widgets/TileMemoryBreakdown.js +204 -204
  180. package/lib/cjs/widgets/TileMemoryBreakdown.js.map +1 -1
  181. package/lib/cjs/widgets/TileStatisticsTracker.d.ts +21 -21
  182. package/lib/cjs/widgets/TileStatisticsTracker.js +142 -142
  183. package/lib/cjs/widgets/TileStatisticsTracker.js.map +1 -1
  184. package/lib/cjs/widgets/ToolSettingsTracker.d.ts +9 -9
  185. package/lib/cjs/widgets/ToolSettingsTracker.js +211 -211
  186. package/lib/cjs/widgets/ToolSettingsTracker.js.map +1 -1
  187. package/lib/esm/ClipboardUtilities.d.ts +8 -8
  188. package/lib/esm/ClipboardUtilities.js +22 -22
  189. package/lib/esm/ClipboardUtilities.js.map +1 -1
  190. package/lib/esm/FrontEndDevTools.d.ts +19 -19
  191. package/lib/esm/FrontEndDevTools.js +217 -217
  192. package/lib/esm/FrontEndDevTools.js.map +1 -1
  193. package/lib/esm/effects/Convolution.d.ts +68 -68
  194. package/lib/esm/effects/Convolution.js +155 -155
  195. package/lib/esm/effects/Convolution.js.map +1 -1
  196. package/lib/esm/effects/EffectTools.d.ts +33 -33
  197. package/lib/esm/effects/EffectTools.js +62 -62
  198. package/lib/esm/effects/EffectTools.js.map +1 -1
  199. package/lib/esm/effects/Explosion.d.ts +12 -12
  200. package/lib/esm/effects/Explosion.js +164 -164
  201. package/lib/esm/effects/Explosion.js.map +1 -1
  202. package/lib/esm/effects/FlipImage.d.ts +30 -30
  203. package/lib/esm/effects/FlipImage.js +94 -94
  204. package/lib/esm/effects/FlipImage.js.map +1 -1
  205. package/lib/esm/effects/LensDistortion.d.ts +34 -34
  206. package/lib/esm/effects/LensDistortion.js +104 -104
  207. package/lib/esm/effects/LensDistortion.js.map +1 -1
  208. package/lib/esm/effects/Random.d.ts +24 -24
  209. package/lib/esm/effects/Random.js +41 -41
  210. package/lib/esm/effects/Random.js.map +1 -1
  211. package/lib/esm/effects/Saturation.d.ts +30 -30
  212. package/lib/esm/effects/Saturation.js +80 -80
  213. package/lib/esm/effects/Saturation.js.map +1 -1
  214. package/lib/esm/effects/Snow.d.ts +76 -76
  215. package/lib/esm/effects/Snow.js +182 -182
  216. package/lib/esm/effects/Snow.js.map +1 -1
  217. package/lib/esm/effects/Vignette.d.ts +39 -39
  218. package/lib/esm/effects/Vignette.js +103 -103
  219. package/lib/esm/effects/Vignette.js.map +1 -1
  220. package/lib/esm/frontend-devtools.d.ts +82 -82
  221. package/lib/esm/frontend-devtools.js +86 -86
  222. package/lib/esm/frontend-devtools.js.map +1 -1
  223. package/lib/esm/tools/AnimationIntervalTool.d.ts +15 -15
  224. package/lib/esm/tools/AnimationIntervalTool.js +26 -26
  225. package/lib/esm/tools/AnimationIntervalTool.js.map +1 -1
  226. package/lib/esm/tools/ChangeUnitsTool.d.ts +15 -15
  227. package/lib/esm/tools/ChangeUnitsTool.js +37 -37
  228. package/lib/esm/tools/ChangeUnitsTool.js.map +1 -1
  229. package/lib/esm/tools/ClipTools.d.ts +67 -67
  230. package/lib/esm/tools/ClipTools.js +158 -158
  231. package/lib/esm/tools/ClipTools.js.map +1 -1
  232. package/lib/esm/tools/DisplayStyleTools.d.ts +145 -145
  233. package/lib/esm/tools/DisplayStyleTools.js +356 -356
  234. package/lib/esm/tools/DisplayStyleTools.js.map +1 -1
  235. package/lib/esm/tools/EmphasizeElementsTool.d.ts +60 -60
  236. package/lib/esm/tools/EmphasizeElementsTool.js +145 -145
  237. package/lib/esm/tools/EmphasizeElementsTool.js.map +1 -1
  238. package/lib/esm/tools/FrustumDecoration.d.ts +57 -57
  239. package/lib/esm/tools/FrustumDecoration.js +367 -367
  240. package/lib/esm/tools/FrustumDecoration.js.map +1 -1
  241. package/lib/esm/tools/InspectElementTool.d.ts +42 -42
  242. package/lib/esm/tools/InspectElementTool.js +194 -194
  243. package/lib/esm/tools/InspectElementTool.js.map +1 -1
  244. package/lib/esm/tools/MapLayerTool.d.ts +264 -264
  245. package/lib/esm/tools/MapLayerTool.js +485 -485
  246. package/lib/esm/tools/MapLayerTool.js.map +1 -1
  247. package/lib/esm/tools/MeasureTileLoadTime.d.ts +12 -12
  248. package/lib/esm/tools/MeasureTileLoadTime.js +59 -59
  249. package/lib/esm/tools/MeasureTileLoadTime.js.map +1 -1
  250. package/lib/esm/tools/ModelAppearanceTools.d.ts +86 -86
  251. package/lib/esm/tools/ModelAppearanceTools.js +172 -172
  252. package/lib/esm/tools/ModelAppearanceTools.js.map +1 -1
  253. package/lib/esm/tools/PlanProjectionTools.d.ts +40 -40
  254. package/lib/esm/tools/PlanProjectionTools.js +143 -143
  255. package/lib/esm/tools/PlanProjectionTools.js.map +1 -1
  256. package/lib/esm/tools/PlanarMaskTools.d.ts +182 -182
  257. package/lib/esm/tools/PlanarMaskTools.js +377 -377
  258. package/lib/esm/tools/PlanarMaskTools.js.map +1 -1
  259. package/lib/esm/tools/ProjectExtents.d.ts +41 -41
  260. package/lib/esm/tools/ProjectExtents.js +104 -104
  261. package/lib/esm/tools/ProjectExtents.js.map +1 -1
  262. package/lib/esm/tools/RealityModelTools.d.ts +116 -116
  263. package/lib/esm/tools/RealityModelTools.js +268 -268
  264. package/lib/esm/tools/RealityModelTools.js.map +1 -1
  265. package/lib/esm/tools/RealityTransitionTool.d.ts +25 -25
  266. package/lib/esm/tools/RealityTransitionTool.js +112 -112
  267. package/lib/esm/tools/RealityTransitionTool.js.map +1 -1
  268. package/lib/esm/tools/RenderSystemTools.d.ts +38 -38
  269. package/lib/esm/tools/RenderSystemTools.js +63 -63
  270. package/lib/esm/tools/RenderSystemTools.js.map +1 -1
  271. package/lib/esm/tools/RenderTargetTools.d.ts +107 -107
  272. package/lib/esm/tools/RenderTargetTools.js +159 -159
  273. package/lib/esm/tools/RenderTargetTools.js.map +1 -1
  274. package/lib/esm/tools/ReportWebGLCompatibilityTool.d.ts +11 -11
  275. package/lib/esm/tools/ReportWebGLCompatibilityTool.js +26 -26
  276. package/lib/esm/tools/ReportWebGLCompatibilityTool.js.map +1 -1
  277. package/lib/esm/tools/SavedViews.d.ts +46 -46
  278. package/lib/esm/tools/SavedViews.js +128 -128
  279. package/lib/esm/tools/SavedViews.js.map +1 -1
  280. package/lib/esm/tools/ScheduleScriptTools.d.ts +37 -37
  281. package/lib/esm/tools/ScheduleScriptTools.js +153 -153
  282. package/lib/esm/tools/ScheduleScriptTools.js.map +1 -1
  283. package/lib/esm/tools/SelectionTools.d.ts +28 -28
  284. package/lib/esm/tools/SelectionTools.js +82 -82
  285. package/lib/esm/tools/SelectionTools.js.map +1 -1
  286. package/lib/esm/tools/SetGpuMemoryLimitTool.d.ts +15 -15
  287. package/lib/esm/tools/SetGpuMemoryLimitTool.js +29 -29
  288. package/lib/esm/tools/SetGpuMemoryLimitTool.js.map +1 -1
  289. package/lib/esm/tools/SourceAspectIdTools.d.ts +40 -40
  290. package/lib/esm/tools/SourceAspectIdTools.js +80 -80
  291. package/lib/esm/tools/SourceAspectIdTools.js.map +1 -1
  292. package/lib/esm/tools/TileRequestDecoration.d.ts +12 -12
  293. package/lib/esm/tools/TileRequestDecoration.js +79 -79
  294. package/lib/esm/tools/TileRequestDecoration.js.map +1 -1
  295. package/lib/esm/tools/TileTreeBoundsDecoration.d.ts +11 -11
  296. package/lib/esm/tools/TileTreeBoundsDecoration.js +70 -70
  297. package/lib/esm/tools/TileTreeBoundsDecoration.js.map +1 -1
  298. package/lib/esm/tools/ToolTipProvider.d.ts +15 -15
  299. package/lib/esm/tools/ToolTipProvider.js +62 -62
  300. package/lib/esm/tools/ToolTipProvider.js.map +1 -1
  301. package/lib/esm/tools/ViewportTools.d.ts +218 -218
  302. package/lib/esm/tools/ViewportTools.js +492 -492
  303. package/lib/esm/tools/ViewportTools.js.map +1 -1
  304. package/lib/esm/tools/parseArgs.d.ts +23 -23
  305. package/lib/esm/tools/parseArgs.js +47 -47
  306. package/lib/esm/tools/parseArgs.js.map +1 -1
  307. package/lib/esm/tools/parseBoolean.d.ts +8 -8
  308. package/lib/esm/tools/parseBoolean.js +22 -22
  309. package/lib/esm/tools/parseBoolean.js.map +1 -1
  310. package/lib/esm/tools/parseToggle.d.ts +8 -8
  311. package/lib/esm/tools/parseToggle.js +21 -21
  312. package/lib/esm/tools/parseToggle.js.map +1 -1
  313. package/lib/esm/ui/Button.d.ts +29 -29
  314. package/lib/esm/ui/Button.js +22 -22
  315. package/lib/esm/ui/Button.js.map +1 -1
  316. package/lib/esm/ui/CheckBox.d.ts +23 -23
  317. package/lib/esm/ui/CheckBox.js +23 -23
  318. package/lib/esm/ui/CheckBox.js.map +1 -1
  319. package/lib/esm/ui/ColorInput.d.ts +27 -27
  320. package/lib/esm/ui/ColorInput.js +48 -48
  321. package/lib/esm/ui/ColorInput.js.map +1 -1
  322. package/lib/esm/ui/ComboBox.d.ts +28 -28
  323. package/lib/esm/ui/ComboBox.js +38 -38
  324. package/lib/esm/ui/ComboBox.js.map +1 -1
  325. package/lib/esm/ui/DataList.d.ts +27 -27
  326. package/lib/esm/ui/DataList.js +34 -34
  327. package/lib/esm/ui/DataList.js.map +1 -1
  328. package/lib/esm/ui/NestedMenu.d.ts +19 -19
  329. package/lib/esm/ui/NestedMenu.js +42 -42
  330. package/lib/esm/ui/NestedMenu.js.map +1 -1
  331. package/lib/esm/ui/NumericInput.d.ts +35 -35
  332. package/lib/esm/ui/NumericInput.js +56 -56
  333. package/lib/esm/ui/NumericInput.js.map +1 -1
  334. package/lib/esm/ui/RadioBox.d.ts +29 -29
  335. package/lib/esm/ui/RadioBox.js +72 -72
  336. package/lib/esm/ui/RadioBox.js.map +1 -1
  337. package/lib/esm/ui/Slider.d.ts +28 -26
  338. package/lib/esm/ui/Slider.d.ts.map +1 -1
  339. package/lib/esm/ui/Slider.js +38 -30
  340. package/lib/esm/ui/Slider.js.map +1 -1
  341. package/lib/esm/ui/TextBox.d.ts +32 -32
  342. package/lib/esm/ui/TextBox.js +52 -52
  343. package/lib/esm/ui/TextBox.js.map +1 -1
  344. package/lib/esm/widgets/DiagnosticsPanel.d.ts +37 -37
  345. package/lib/esm/widgets/DiagnosticsPanel.js +77 -77
  346. package/lib/esm/widgets/DiagnosticsPanel.js.map +1 -1
  347. package/lib/esm/widgets/FpsTracker.d.ts +19 -19
  348. package/lib/esm/widgets/FpsTracker.js +52 -52
  349. package/lib/esm/widgets/FpsTracker.js.map +1 -1
  350. package/lib/esm/widgets/GpuProfiler.d.ts +16 -16
  351. package/lib/esm/widgets/GpuProfiler.js +188 -188
  352. package/lib/esm/widgets/GpuProfiler.js.map +1 -1
  353. package/lib/esm/widgets/KeyinField.d.ts +61 -61
  354. package/lib/esm/widgets/KeyinField.js +183 -183
  355. package/lib/esm/widgets/KeyinField.js.map +1 -1
  356. package/lib/esm/widgets/MemoryTracker.d.ts +27 -27
  357. package/lib/esm/widgets/MemoryTracker.js +238 -238
  358. package/lib/esm/widgets/MemoryTracker.js.map +1 -1
  359. package/lib/esm/widgets/RenderCommandBreakdown.d.ts +15 -15
  360. package/lib/esm/widgets/RenderCommandBreakdown.js +64 -64
  361. package/lib/esm/widgets/RenderCommandBreakdown.js.map +1 -1
  362. package/lib/esm/widgets/TileMemoryBreakdown.d.ts +30 -30
  363. package/lib/esm/widgets/TileMemoryBreakdown.js +200 -200
  364. package/lib/esm/widgets/TileMemoryBreakdown.js.map +1 -1
  365. package/lib/esm/widgets/TileStatisticsTracker.d.ts +21 -21
  366. package/lib/esm/widgets/TileStatisticsTracker.js +138 -138
  367. package/lib/esm/widgets/TileStatisticsTracker.js.map +1 -1
  368. package/lib/esm/widgets/ToolSettingsTracker.d.ts +9 -9
  369. package/lib/esm/widgets/ToolSettingsTracker.js +207 -207
  370. package/lib/esm/widgets/ToolSettingsTracker.js.map +1 -1
  371. package/lib/public/locales/en/FrontendDevTools.json +484 -484
  372. package/package.json +7 -7
@@ -1,244 +1,244 @@
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.MemoryTracker = exports.formatMemory = void 0;
8
- /** @packageDocumentation
9
- * @module Widgets
10
- */
11
- const core_bentley_1 = require("@itwin/core-bentley");
12
- const core_frontend_1 = require("@itwin/core-frontend");
13
- const ComboBox_1 = require("../ui/ComboBox");
14
- function collectTileTreeMemory(stats, owner) {
15
- const tree = owner.tileTree;
16
- if (undefined !== tree)
17
- tree.collectStatistics(stats);
18
- }
19
- // Includes None (-1) at index 0
20
- const memLabels = [
21
- "None",
22
- "Viewed Tile Trees",
23
- "Selected Tiles",
24
- "All Tile Trees",
25
- "Render Target",
26
- "Viewport",
27
- "System",
28
- "All",
29
- ];
30
- function collectStatisticsForViewedTileTrees(vp, stats) {
31
- vp.collectStatistics(stats);
32
- const trees = new core_frontend_1.DisclosedTileTreeSet();
33
- vp.discloseTileTrees(trees);
34
- return trees.size;
35
- }
36
- function collectStatisticsForSelectedTiles(vp, stats) {
37
- var _a;
38
- const trees = new Set();
39
- const selectedTiles = (_a = core_frontend_1.IModelApp.tileAdmin.getTilesForUser(vp)) === null || _a === void 0 ? void 0 : _a.selected;
40
- if (selectedTiles) {
41
- for (const tile of selectedTiles) {
42
- trees.add(tile.tree);
43
- tile.collectStatistics(stats);
44
- }
45
- }
46
- return trees.size;
47
- }
48
- function collectStatisticsForAllTileTrees(vp, stats) {
49
- let numTrees = 0;
50
- vp.view.iModel.tiles.forEachTreeOwner((owner) => {
51
- collectTileTreeMemory(stats, owner);
52
- if (undefined !== owner.tileTree)
53
- ++numTrees;
54
- });
55
- return numTrees;
56
- }
57
- const calcMem = [
58
- (stats, vp) => collectStatisticsForViewedTileTrees(vp, stats),
59
- (stats, vp) => collectStatisticsForSelectedTiles(vp, stats),
60
- (stats, vp) => collectStatisticsForAllTileTrees(vp, stats),
61
- (stats, vp) => {
62
- vp.target.collectStatistics(stats);
63
- return 0;
64
- },
65
- (stats, vp) => {
66
- vp.target.collectStatistics(stats);
67
- return collectStatisticsForViewedTileTrees(vp, stats);
68
- },
69
- (stats, vp) => {
70
- vp.target.renderSystem.collectStatistics(stats);
71
- return 0;
72
- },
73
- (stats, vp) => {
74
- vp.target.renderSystem.collectStatistics(stats);
75
- for (const x of core_frontend_1.IModelApp.viewManager)
76
- x.target.collectStatistics(stats);
77
- return collectStatisticsForAllTileTrees(vp, stats);
78
- },
79
- ];
80
- // ###TODO...
81
- const purgeMem = [
82
- undefined,
83
- (olderThan) => core_frontend_1.IModelApp.viewManager.purgeTileTrees(olderThan ? olderThan : core_bentley_1.BeTimePoint.now()),
84
- ];
85
- /** @internal */
86
- function formatMemory(numBytes) {
87
- let suffix = "b";
88
- if (numBytes >= 1024) {
89
- numBytes /= 1024;
90
- suffix = "kb";
91
- if (numBytes >= 1024) {
92
- numBytes /= 1024;
93
- suffix = "mb";
94
- }
95
- }
96
- return numBytes.toFixed(2) + suffix;
97
- }
98
- exports.formatMemory = formatMemory;
99
- class MemoryPanel {
100
- constructor(parent, label, labels) {
101
- this._elems = [];
102
- this._label = label;
103
- this._labels = labels;
104
- this._div = document.createElement("div");
105
- this._header = document.createElement("label");
106
- this._header.style.fontWeight = "bold";
107
- this._div.appendChild(this._header);
108
- const numElems = labels.length;
109
- for (let i = 0; i < numElems; i++) {
110
- const elem = document.createElement("label");
111
- this._elems.push(elem);
112
- this._div.appendChild(elem);
113
- }
114
- parent.appendChild(this._div);
115
- }
116
- update(stats, total) {
117
- (0, core_bentley_1.assert)(this._labels.length === stats.length);
118
- (0, core_bentley_1.assert)(this._labels.length === this._elems.length);
119
- this._header.innerHTML = `${this._label}: ${formatMemory(total)}`;
120
- for (let i = 0; i < this._labels.length; i++) {
121
- const elem = this._elems[i];
122
- const stat = stats[i];
123
- if (0 === stat.totalBytes) {
124
- elem.style.display = "none";
125
- continue;
126
- }
127
- elem.style.display = "block";
128
- elem.innerHTML = `${this._labels[i]} (${stat.count}): ${formatMemory(stat.totalBytes)}`; // + "\n(max: " + formatMemory(stat.maxBytes) + ")";
129
- }
130
- }
131
- }
132
- /** Displays GPU memory allocated to tile trees - either all tile trees in the system, or only those associated with a specific Viewport.
133
- * @beta
134
- */
135
- class MemoryTracker {
136
- constructor(parent, vp) {
137
- this._stats = new core_frontend_1.RenderMemory.Statistics();
138
- this._memIndex = -1 /* None */;
139
- this._vp = vp;
140
- this._div = document.createElement("div");
141
- this._div.style.display = "none";
142
- this._div.style.textAlign = "right";
143
- this.addSelector(parent);
144
- const table = document.createElement("table");
145
- table.style.width = "100%";
146
- table.setAttribute("border", "1");
147
- this._div.appendChild(table);
148
- const row0 = document.createElement("tr");
149
- const cell00 = document.createElement("td");
150
- const cell01 = document.createElement("td");
151
- cell00.style.width = cell01.style.width = "50%";
152
- row0.appendChild(cell00);
153
- row0.appendChild(cell01);
154
- table.appendChild(row0);
155
- const row1 = document.createElement("tr");
156
- const cell10 = document.createElement("td");
157
- const cell11 = document.createElement("td");
158
- cell10.style.width = cell11.style.width = "50%";
159
- row1.appendChild(cell10);
160
- row1.appendChild(cell11);
161
- table.appendChild(row1);
162
- this._textures = new MemoryPanel(cell00, "Textures", ["Surface Textures", "Vertex Tables", "Edge Tables", "Feature Tables", "Feature Overrides", "Clip Volumes", "Planar Classifiers", "Shadow Maps", "Texture Attachments", "Thematic Textures"]);
163
- this._buffers = new MemoryPanel(cell01, "Buffers", ["Surfaces", "Visible Edges", "Silhouettes", "Polyline Edges", "Indexed Edges", "Polylines", "Point Strings", "Point Clouds", "Instances", "Terrain", "Reality Mesh"]);
164
- this._totalElem = this.addStatistics(cell10);
165
- this._totalTreesElem = this.addStatistics(cell11);
166
- this._purgeButton = this.addPurgeButton(this._div);
167
- parent.appendChild(this._div);
168
- }
169
- dispose() {
170
- this.clearInterval();
171
- }
172
- addSelector(parent) {
173
- const entries = [];
174
- for (let i = -1 /* None */; i < 7 /* COUNT */; i++)
175
- entries.push({ name: memLabels[i + 1], value: i });
176
- (0, ComboBox_1.createComboBox)({
177
- parent,
178
- name: "Track Memory: ",
179
- id: "memTracker_type",
180
- value: -1 /* None */,
181
- handler: (select) => this.change(Number.parseInt(select.value, 10)),
182
- entries,
183
- });
184
- }
185
- addPurgeButton(parent) {
186
- const div = document.createElement("div");
187
- div.style.textAlign = "center";
188
- const button = document.createElement("button");
189
- button.innerText = "Purge";
190
- button.addEventListener("click", () => this.purge());
191
- div.appendChild(button);
192
- parent.appendChild(div);
193
- return button;
194
- }
195
- addStatistics(parent) {
196
- const div = document.createElement("div");
197
- const text = document.createElement("text");
198
- text.style.fontWeight = "bold";
199
- div.appendChild(text);
200
- parent.appendChild(div);
201
- return text;
202
- }
203
- clearInterval() {
204
- if (undefined !== this._curIntervalId) {
205
- clearInterval(this._curIntervalId);
206
- this._curIntervalId = undefined;
207
- }
208
- }
209
- change(newIndex) {
210
- if (newIndex === this._memIndex)
211
- return;
212
- this._memIndex = newIndex;
213
- if (-1 /* None */ === newIndex) {
214
- this.clearInterval();
215
- this._div.style.display = "none";
216
- return;
217
- }
218
- if (undefined === this._curIntervalId) {
219
- this._curIntervalId = setInterval(() => this.update(), 1000);
220
- this._div.style.display = "block";
221
- }
222
- this._purgeButton.disabled = undefined === purgeMem[this._memIndex];
223
- this.update();
224
- }
225
- update() {
226
- const calc = calcMem[this._memIndex];
227
- this._stats.clear();
228
- const numTrees = calc(this._stats, this._vp);
229
- this._totalElem.innerText = `Total: ${formatMemory(this._stats.totalBytes)}`;
230
- this._totalTreesElem.innerText = `Total Tile Trees: ${numTrees}`;
231
- this._textures.update(this._stats.consumers, this._stats.totalBytes - this._stats.buffers.totalBytes);
232
- this._buffers.update(this._stats.buffers.consumers, this._stats.buffers.totalBytes);
233
- }
234
- purge() {
235
- const purge = purgeMem[this._memIndex];
236
- if (undefined !== purge) {
237
- purge();
238
- this._vp.invalidateScene(); // to trigger reloading of tiles we actually do want to continue drawing
239
- this.update();
240
- }
241
- }
242
- }
243
- exports.MemoryTracker = MemoryTracker;
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.MemoryTracker = exports.formatMemory = void 0;
8
+ /** @packageDocumentation
9
+ * @module Widgets
10
+ */
11
+ const core_bentley_1 = require("@itwin/core-bentley");
12
+ const core_frontend_1 = require("@itwin/core-frontend");
13
+ const ComboBox_1 = require("../ui/ComboBox");
14
+ function collectTileTreeMemory(stats, owner) {
15
+ const tree = owner.tileTree;
16
+ if (undefined !== tree)
17
+ tree.collectStatistics(stats);
18
+ }
19
+ // Includes None (-1) at index 0
20
+ const memLabels = [
21
+ "None",
22
+ "Viewed Tile Trees",
23
+ "Selected Tiles",
24
+ "All Tile Trees",
25
+ "Render Target",
26
+ "Viewport",
27
+ "System",
28
+ "All",
29
+ ];
30
+ function collectStatisticsForViewedTileTrees(vp, stats) {
31
+ vp.collectStatistics(stats);
32
+ const trees = new core_frontend_1.DisclosedTileTreeSet();
33
+ vp.discloseTileTrees(trees);
34
+ return trees.size;
35
+ }
36
+ function collectStatisticsForSelectedTiles(vp, stats) {
37
+ var _a;
38
+ const trees = new Set();
39
+ const selectedTiles = (_a = core_frontend_1.IModelApp.tileAdmin.getTilesForUser(vp)) === null || _a === void 0 ? void 0 : _a.selected;
40
+ if (selectedTiles) {
41
+ for (const tile of selectedTiles) {
42
+ trees.add(tile.tree);
43
+ tile.collectStatistics(stats);
44
+ }
45
+ }
46
+ return trees.size;
47
+ }
48
+ function collectStatisticsForAllTileTrees(vp, stats) {
49
+ let numTrees = 0;
50
+ vp.view.iModel.tiles.forEachTreeOwner((owner) => {
51
+ collectTileTreeMemory(stats, owner);
52
+ if (undefined !== owner.tileTree)
53
+ ++numTrees;
54
+ });
55
+ return numTrees;
56
+ }
57
+ const calcMem = [
58
+ (stats, vp) => collectStatisticsForViewedTileTrees(vp, stats),
59
+ (stats, vp) => collectStatisticsForSelectedTiles(vp, stats),
60
+ (stats, vp) => collectStatisticsForAllTileTrees(vp, stats),
61
+ (stats, vp) => {
62
+ vp.target.collectStatistics(stats);
63
+ return 0;
64
+ },
65
+ (stats, vp) => {
66
+ vp.target.collectStatistics(stats);
67
+ return collectStatisticsForViewedTileTrees(vp, stats);
68
+ },
69
+ (stats, vp) => {
70
+ vp.target.renderSystem.collectStatistics(stats);
71
+ return 0;
72
+ },
73
+ (stats, vp) => {
74
+ vp.target.renderSystem.collectStatistics(stats);
75
+ for (const x of core_frontend_1.IModelApp.viewManager)
76
+ x.target.collectStatistics(stats);
77
+ return collectStatisticsForAllTileTrees(vp, stats);
78
+ },
79
+ ];
80
+ // ###TODO...
81
+ const purgeMem = [
82
+ undefined,
83
+ (olderThan) => core_frontend_1.IModelApp.viewManager.purgeTileTrees(olderThan ? olderThan : core_bentley_1.BeTimePoint.now()),
84
+ ];
85
+ /** @internal */
86
+ function formatMemory(numBytes) {
87
+ let suffix = "b";
88
+ if (numBytes >= 1024) {
89
+ numBytes /= 1024;
90
+ suffix = "kb";
91
+ if (numBytes >= 1024) {
92
+ numBytes /= 1024;
93
+ suffix = "mb";
94
+ }
95
+ }
96
+ return numBytes.toFixed(2) + suffix;
97
+ }
98
+ exports.formatMemory = formatMemory;
99
+ class MemoryPanel {
100
+ constructor(parent, label, labels) {
101
+ this._elems = [];
102
+ this._label = label;
103
+ this._labels = labels;
104
+ this._div = document.createElement("div");
105
+ this._header = document.createElement("label");
106
+ this._header.style.fontWeight = "bold";
107
+ this._div.appendChild(this._header);
108
+ const numElems = labels.length;
109
+ for (let i = 0; i < numElems; i++) {
110
+ const elem = document.createElement("label");
111
+ this._elems.push(elem);
112
+ this._div.appendChild(elem);
113
+ }
114
+ parent.appendChild(this._div);
115
+ }
116
+ update(stats, total) {
117
+ (0, core_bentley_1.assert)(this._labels.length === stats.length);
118
+ (0, core_bentley_1.assert)(this._labels.length === this._elems.length);
119
+ this._header.innerHTML = `${this._label}: ${formatMemory(total)}`;
120
+ for (let i = 0; i < this._labels.length; i++) {
121
+ const elem = this._elems[i];
122
+ const stat = stats[i];
123
+ if (0 === stat.totalBytes) {
124
+ elem.style.display = "none";
125
+ continue;
126
+ }
127
+ elem.style.display = "block";
128
+ elem.innerHTML = `${this._labels[i]} (${stat.count}): ${formatMemory(stat.totalBytes)}`; // + "\n(max: " + formatMemory(stat.maxBytes) + ")";
129
+ }
130
+ }
131
+ }
132
+ /** Displays GPU memory allocated to tile trees - either all tile trees in the system, or only those associated with a specific Viewport.
133
+ * @beta
134
+ */
135
+ class MemoryTracker {
136
+ constructor(parent, vp) {
137
+ this._stats = new core_frontend_1.RenderMemory.Statistics();
138
+ this._memIndex = -1 /* None */;
139
+ this._vp = vp;
140
+ this._div = document.createElement("div");
141
+ this._div.style.display = "none";
142
+ this._div.style.textAlign = "right";
143
+ this.addSelector(parent);
144
+ const table = document.createElement("table");
145
+ table.style.width = "100%";
146
+ table.setAttribute("border", "1");
147
+ this._div.appendChild(table);
148
+ const row0 = document.createElement("tr");
149
+ const cell00 = document.createElement("td");
150
+ const cell01 = document.createElement("td");
151
+ cell00.style.width = cell01.style.width = "50%";
152
+ row0.appendChild(cell00);
153
+ row0.appendChild(cell01);
154
+ table.appendChild(row0);
155
+ const row1 = document.createElement("tr");
156
+ const cell10 = document.createElement("td");
157
+ const cell11 = document.createElement("td");
158
+ cell10.style.width = cell11.style.width = "50%";
159
+ row1.appendChild(cell10);
160
+ row1.appendChild(cell11);
161
+ table.appendChild(row1);
162
+ this._textures = new MemoryPanel(cell00, "Textures", ["Surface Textures", "Vertex Tables", "Edge Tables", "Feature Tables", "Feature Overrides", "Clip Volumes", "Planar Classifiers", "Shadow Maps", "Texture Attachments", "Thematic Textures"]);
163
+ this._buffers = new MemoryPanel(cell01, "Buffers", ["Surfaces", "Visible Edges", "Silhouettes", "Polyline Edges", "Indexed Edges", "Polylines", "Point Strings", "Point Clouds", "Instances", "Terrain", "Reality Mesh"]);
164
+ this._totalElem = this.addStatistics(cell10);
165
+ this._totalTreesElem = this.addStatistics(cell11);
166
+ this._purgeButton = this.addPurgeButton(this._div);
167
+ parent.appendChild(this._div);
168
+ }
169
+ dispose() {
170
+ this.clearInterval();
171
+ }
172
+ addSelector(parent) {
173
+ const entries = [];
174
+ for (let i = -1 /* None */; i < 7 /* COUNT */; i++)
175
+ entries.push({ name: memLabels[i + 1], value: i });
176
+ (0, ComboBox_1.createComboBox)({
177
+ parent,
178
+ name: "Track Memory: ",
179
+ id: "memTracker_type",
180
+ value: -1 /* None */,
181
+ handler: (select) => this.change(Number.parseInt(select.value, 10)),
182
+ entries,
183
+ });
184
+ }
185
+ addPurgeButton(parent) {
186
+ const div = document.createElement("div");
187
+ div.style.textAlign = "center";
188
+ const button = document.createElement("button");
189
+ button.innerText = "Purge";
190
+ button.addEventListener("click", () => this.purge());
191
+ div.appendChild(button);
192
+ parent.appendChild(div);
193
+ return button;
194
+ }
195
+ addStatistics(parent) {
196
+ const div = document.createElement("div");
197
+ const text = document.createElement("text");
198
+ text.style.fontWeight = "bold";
199
+ div.appendChild(text);
200
+ parent.appendChild(div);
201
+ return text;
202
+ }
203
+ clearInterval() {
204
+ if (undefined !== this._curIntervalId) {
205
+ clearInterval(this._curIntervalId);
206
+ this._curIntervalId = undefined;
207
+ }
208
+ }
209
+ change(newIndex) {
210
+ if (newIndex === this._memIndex)
211
+ return;
212
+ this._memIndex = newIndex;
213
+ if (-1 /* None */ === newIndex) {
214
+ this.clearInterval();
215
+ this._div.style.display = "none";
216
+ return;
217
+ }
218
+ if (undefined === this._curIntervalId) {
219
+ this._curIntervalId = setInterval(() => this.update(), 1000);
220
+ this._div.style.display = "block";
221
+ }
222
+ this._purgeButton.disabled = undefined === purgeMem[this._memIndex];
223
+ this.update();
224
+ }
225
+ update() {
226
+ const calc = calcMem[this._memIndex];
227
+ this._stats.clear();
228
+ const numTrees = calc(this._stats, this._vp);
229
+ this._totalElem.innerText = `Total: ${formatMemory(this._stats.totalBytes)}`;
230
+ this._totalTreesElem.innerText = `Total Tile Trees: ${numTrees}`;
231
+ this._textures.update(this._stats.consumers, this._stats.totalBytes - this._stats.buffers.totalBytes);
232
+ this._buffers.update(this._stats.buffers.consumers, this._stats.buffers.totalBytes);
233
+ }
234
+ purge() {
235
+ const purge = purgeMem[this._memIndex];
236
+ if (undefined !== purge) {
237
+ purge();
238
+ this._vp.invalidateScene(); // to trigger reloading of tiles we actually do want to continue drawing
239
+ this.update();
240
+ }
241
+ }
242
+ }
243
+ exports.MemoryTracker = MemoryTracker;
244
244
  //# sourceMappingURL=MemoryTracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryTracker.js","sourceRoot":"","sources":["../../../src/widgets/MemoryTracker.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,sDAA0D;AAC1D,wDAE8B;AAC9B,6CAA+D;AAE/D,SAAS,qBAAqB,CAAC,KAA8B,EAAE,KAAoB;IACjF,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC5B,IAAI,SAAS,KAAK,IAAI;QACpB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAoBD,gCAAgC;AAChC,MAAM,SAAS,GAAG;IAChB,MAAM;IACN,mBAAmB;IACnB,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,UAAU;IACV,QAAQ;IACR,KAAK;CACN,CAAC;AAEF,SAAS,mCAAmC,CAAC,EAAY,EAAE,KAA8B;IACvF,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,oCAAoB,EAAE,CAAC;IACzC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,SAAS,iCAAiC,CAAC,EAAY,EAAE,KAA8B;;IACrF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAY,CAAC;IAClC,MAAM,aAAa,GAAG,MAAA,yBAAS,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,0CAAE,QAAQ,CAAC;IACxE,IAAI,aAAa,EAAE;QACjB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;YAChC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAC/B;KACF;IAED,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,SAAS,gCAAgC,CAAC,EAAY,EAAE,KAA8B;IACpF,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9C,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,SAAS,KAAK,KAAK,CAAC,QAAQ;YAC9B,EAAE,QAAQ,CAAC;IACf,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,GAAc;IACzB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,mCAAmC,CAAC,EAAE,EAAE,KAAK,CAAC;IAC7D,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,iCAAiC,CAAC,EAAE,EAAE,KAAK,CAAC;IAC3D,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,gCAAgC,CAAC,EAAE,EAAE,KAAK,CAAC;IAC1D,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACZ,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACZ,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,mCAAmC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACZ,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACZ,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,yBAAS,CAAC,WAAW;YACnC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEpC,OAAO,gCAAgC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;CACF,CAAC;AAEF,aAAa;AACb,MAAM,QAAQ,GAAgC;IAC5C,SAAS;IACT,CAAC,SAAU,EAAE,EAAE,CAAC,yBAAS,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,0BAAW,CAAC,GAAG,EAAE,CAAC;CAChG,CAAC;AAEF,gBAAgB;AAChB,SAAgB,YAAY,CAAC,QAAgB;IAC3C,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,QAAQ,IAAI,IAAI,CAAC;QACjB,MAAM,GAAG,IAAI,CAAC;QACd,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,QAAQ,IAAI,IAAI,CAAC;YACjB,MAAM,GAAG,IAAI,CAAC;SACf;KACF;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AACtC,CAAC;AAZD,oCAYC;AAED,MAAM,WAAW;IAOf,YAAmB,MAAmB,EAAE,KAAa,EAAE,MAAgB;QAJtD,WAAM,GAAkB,EAAE,CAAC;QAK1C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,KAA+B,EAAE,KAAa;QAC1D,IAAA,qBAAM,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAA,qBAAM,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEnD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;gBACzB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBAC5B,SAAS;aACV;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,MAAM,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,oDAAoD;SAC9I;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAa,aAAa;IAYxB,YAAmB,MAAmB,EAAE,EAAY;QAXnC,WAAM,GAAG,IAAI,4BAAY,CAAC,UAAU,EAAE,CAAC;QAIhD,cAAS,iBAAiB;QAQhC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QAEd,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;QAEpC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEzB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QAC3B,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAChD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAExB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAChD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,CAAC,SAAS,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,EAAE,aAAa,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACnP,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;QAC1N,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,WAAW,CAAC,MAAmB;QACrC,MAAM,OAAO,GAAoB,EAAE,CAAC;QACpC,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC,gBAAiB,EAAE,CAAC,EAAE;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAErD,IAAA,yBAAc,EAAC;YACb,MAAM;YACN,IAAI,EAAE,gBAAgB;YACtB,EAAE,EAAE,iBAAiB;YACrB,KAAK,eAAe;YACpB,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnE,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,MAAmB;QACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE/B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC;QAC3B,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAErD,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAExB,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,aAAa,CAAC,MAAmB;QACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QAC/B,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,aAAa;QACnB,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE;YACrC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;SACjC;IACH,CAAC;IAEO,MAAM,CAAC,QAAkB;QAC/B,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS;YAC7B,OAAO;QAET,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,kBAAkB,QAAQ,EAAE;YAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACjC,OAAO;SACR;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE;YACrC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;SACnC;QAED,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpE,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,MAAM;QACZ,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,UAAU,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,qBAAqB,QAAQ,EAAE,CAAC;QAEjE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtF,CAAC;IAEO,KAAK;QACX,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,SAAS,KAAK,KAAK,EAAE;YACvB,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,wEAAwE;YACpG,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;CACF;AA7ID,sCA6IC","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 Widgets\r\n */\r\n\r\nimport { assert, BeTimePoint } from \"@itwin/core-bentley\";\r\nimport {\r\n DisclosedTileTreeSet, IModelApp, RenderMemory, TileTree, TileTreeOwner, Viewport,\r\n} from \"@itwin/core-frontend\";\r\nimport { ComboBoxEntry, createComboBox } from \"../ui/ComboBox\";\r\n\r\nfunction collectTileTreeMemory(stats: RenderMemory.Statistics, owner: TileTreeOwner): void {\r\n const tree = owner.tileTree;\r\n if (undefined !== tree)\r\n tree.collectStatistics(stats);\r\n}\r\n\r\n// Returns the number of tile trees processed.\r\ntype CalcMem = (stats: RenderMemory.Statistics, vp: Viewport) => number;\r\ntype PurgeMem = (olderThan?: BeTimePoint) => void;\r\n\r\nconst enum MemIndex { // eslint-disable-line no-restricted-syntax\r\n None = -1,\r\n ViewportTileTrees,\r\n SelectedTiles,\r\n AllTileTrees,\r\n RenderTarget,\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n Viewport, // RenderTarget + Viewed Tile Trees\r\n System,\r\n All, // All Tile Trees + System + (RenderTarget for each ViewManager viewport)\r\n\r\n COUNT,\r\n}\r\n\r\n// Includes None (-1) at index 0\r\nconst memLabels = [\r\n \"None\",\r\n \"Viewed Tile Trees\",\r\n \"Selected Tiles\",\r\n \"All Tile Trees\",\r\n \"Render Target\",\r\n \"Viewport\",\r\n \"System\",\r\n \"All\",\r\n];\r\n\r\nfunction collectStatisticsForViewedTileTrees(vp: Viewport, stats: RenderMemory.Statistics): number {\r\n vp.collectStatistics(stats);\r\n const trees = new DisclosedTileTreeSet();\r\n vp.discloseTileTrees(trees);\r\n return trees.size;\r\n}\r\n\r\nfunction collectStatisticsForSelectedTiles(vp: Viewport, stats: RenderMemory.Statistics): number {\r\n const trees = new Set<TileTree>();\r\n const selectedTiles = IModelApp.tileAdmin.getTilesForUser(vp)?.selected;\r\n if (selectedTiles) {\r\n for (const tile of selectedTiles) {\r\n trees.add(tile.tree);\r\n tile.collectStatistics(stats);\r\n }\r\n }\r\n\r\n return trees.size;\r\n}\r\n\r\nfunction collectStatisticsForAllTileTrees(vp: Viewport, stats: RenderMemory.Statistics): number {\r\n let numTrees = 0;\r\n vp.view.iModel.tiles.forEachTreeOwner((owner) => {\r\n collectTileTreeMemory(stats, owner);\r\n if (undefined !== owner.tileTree)\r\n ++numTrees;\r\n });\r\n return numTrees;\r\n}\r\n\r\nconst calcMem: CalcMem[] = [\r\n (stats, vp) => collectStatisticsForViewedTileTrees(vp, stats),\r\n (stats, vp) => collectStatisticsForSelectedTiles(vp, stats),\r\n (stats, vp) => collectStatisticsForAllTileTrees(vp, stats),\r\n (stats, vp) => {\r\n vp.target.collectStatistics(stats);\r\n return 0;\r\n },\r\n (stats, vp) => {\r\n vp.target.collectStatistics(stats);\r\n return collectStatisticsForViewedTileTrees(vp, stats);\r\n },\r\n (stats, vp) => {\r\n vp.target.renderSystem.collectStatistics(stats);\r\n return 0;\r\n },\r\n (stats, vp) => {\r\n vp.target.renderSystem.collectStatistics(stats);\r\n for (const x of IModelApp.viewManager)\r\n x.target.collectStatistics(stats);\r\n\r\n return collectStatisticsForAllTileTrees(vp, stats);\r\n },\r\n];\r\n\r\n// ###TODO...\r\nconst purgeMem: Array<PurgeMem | undefined> = [\r\n undefined,\r\n (olderThan?) => IModelApp.viewManager.purgeTileTrees(olderThan ? olderThan : BeTimePoint.now()),\r\n];\r\n\r\n/** @internal */\r\nexport function formatMemory(numBytes: number): string {\r\n let suffix = \"b\";\r\n if (numBytes >= 1024) {\r\n numBytes /= 1024;\r\n suffix = \"kb\";\r\n if (numBytes >= 1024) {\r\n numBytes /= 1024;\r\n suffix = \"mb\";\r\n }\r\n }\r\n\r\n return numBytes.toFixed(2) + suffix;\r\n}\r\n\r\nclass MemoryPanel {\r\n private readonly _label: string;\r\n private readonly _labels: string[];\r\n private readonly _elems: HTMLElement[] = [];\r\n private readonly _div: HTMLDivElement;\r\n private readonly _header: HTMLElement;\r\n\r\n public constructor(parent: HTMLElement, label: string, labels: string[]) {\r\n this._label = label;\r\n this._labels = labels;\r\n this._div = document.createElement(\"div\");\r\n\r\n this._header = document.createElement(\"label\")!;\r\n this._header.style.fontWeight = \"bold\";\r\n this._div.appendChild(this._header);\r\n\r\n const numElems = labels.length;\r\n for (let i = 0; i < numElems; i++) {\r\n const elem = document.createElement(\"label\");\r\n this._elems.push(elem);\r\n this._div.appendChild(elem);\r\n }\r\n\r\n parent.appendChild(this._div);\r\n }\r\n\r\n public update(stats: RenderMemory.Consumers[], total: number): void {\r\n assert(this._labels.length === stats.length);\r\n assert(this._labels.length === this._elems.length);\r\n\r\n this._header.innerHTML = `${this._label}: ${formatMemory(total)}`;\r\n\r\n for (let i = 0; i < this._labels.length; i++) {\r\n const elem = this._elems[i];\r\n const stat = stats[i];\r\n if (0 === stat.totalBytes) {\r\n elem.style.display = \"none\";\r\n continue;\r\n }\r\n\r\n elem.style.display = \"block\";\r\n elem.innerHTML = `${this._labels[i]} (${stat.count}): ${formatMemory(stat.totalBytes)}`; // + \"\\n(max: \" + formatMemory(stat.maxBytes) + \")\";\r\n }\r\n }\r\n}\r\n\r\n/** Displays GPU memory allocated to tile trees - either all tile trees in the system, or only those associated with a specific Viewport.\r\n * @beta\r\n */\r\nexport class MemoryTracker {\r\n private readonly _stats = new RenderMemory.Statistics();\r\n private readonly _vp: Viewport;\r\n private readonly _div: HTMLDivElement;\r\n private _curIntervalId?: NodeJS.Timer;\r\n private _memIndex = MemIndex.None;\r\n private readonly _totalElem: HTMLElement;\r\n private readonly _totalTreesElem: HTMLElement;\r\n private readonly _purgeButton: HTMLButtonElement;\r\n private readonly _textures: MemoryPanel;\r\n private readonly _buffers: MemoryPanel;\r\n\r\n public constructor(parent: HTMLElement, vp: Viewport) {\r\n this._vp = vp;\r\n\r\n this._div = document.createElement(\"div\");\r\n this._div.style.display = \"none\";\r\n this._div.style.textAlign = \"right\";\r\n\r\n this.addSelector(parent);\r\n\r\n const table = document.createElement(\"table\");\r\n table.style.width = \"100%\";\r\n table.setAttribute(\"border\", \"1\");\r\n this._div.appendChild(table);\r\n\r\n const row0 = document.createElement(\"tr\");\r\n const cell00 = document.createElement(\"td\");\r\n const cell01 = document.createElement(\"td\");\r\n cell00.style.width = cell01.style.width = \"50%\";\r\n row0.appendChild(cell00);\r\n row0.appendChild(cell01);\r\n table.appendChild(row0);\r\n\r\n const row1 = document.createElement(\"tr\");\r\n const cell10 = document.createElement(\"td\");\r\n const cell11 = document.createElement(\"td\");\r\n cell10.style.width = cell11.style.width = \"50%\";\r\n row1.appendChild(cell10);\r\n row1.appendChild(cell11);\r\n table.appendChild(row1);\r\n\r\n this._textures = new MemoryPanel(cell00, \"Textures\", [\"Surface Textures\", \"Vertex Tables\", \"Edge Tables\", \"Feature Tables\", \"Feature Overrides\", \"Clip Volumes\", \"Planar Classifiers\", \"Shadow Maps\", \"Texture Attachments\", \"Thematic Textures\"]);\r\n this._buffers = new MemoryPanel(cell01, \"Buffers\", [\"Surfaces\", \"Visible Edges\", \"Silhouettes\", \"Polyline Edges\", \"Indexed Edges\", \"Polylines\", \"Point Strings\", \"Point Clouds\", \"Instances\", \"Terrain\", \"Reality Mesh\"]);\r\n this._totalElem = this.addStatistics(cell10);\r\n this._totalTreesElem = this.addStatistics(cell11);\r\n\r\n this._purgeButton = this.addPurgeButton(this._div);\r\n\r\n parent.appendChild(this._div);\r\n }\r\n\r\n public dispose(): void {\r\n this.clearInterval();\r\n }\r\n\r\n private addSelector(parent: HTMLElement): void {\r\n const entries: ComboBoxEntry[] = [];\r\n for (let i = MemIndex.None; i < MemIndex.COUNT; i++)\r\n entries.push({ name: memLabels[i + 1], value: i });\r\n\r\n createComboBox({\r\n parent,\r\n name: \"Track Memory: \",\r\n id: \"memTracker_type\",\r\n value: MemIndex.None,\r\n handler: (select) => this.change(Number.parseInt(select.value, 10)),\r\n entries,\r\n });\r\n }\r\n\r\n private addPurgeButton(parent: HTMLElement): HTMLButtonElement {\r\n const div = document.createElement(\"div\");\r\n div.style.textAlign = \"center\";\r\n\r\n const button = document.createElement(\"button\");\r\n button.innerText = \"Purge\";\r\n button.addEventListener(\"click\", () => this.purge());\r\n\r\n div.appendChild(button);\r\n parent.appendChild(div);\r\n\r\n return button;\r\n }\r\n\r\n private addStatistics(parent: HTMLElement): HTMLElement {\r\n const div = document.createElement(\"div\");\r\n const text = document.createElement(\"text\");\r\n text.style.fontWeight = \"bold\";\r\n div.appendChild(text);\r\n parent.appendChild(div);\r\n return text;\r\n }\r\n\r\n private clearInterval(): void {\r\n if (undefined !== this._curIntervalId) {\r\n clearInterval(this._curIntervalId);\r\n this._curIntervalId = undefined;\r\n }\r\n }\r\n\r\n private change(newIndex: MemIndex): void {\r\n if (newIndex === this._memIndex)\r\n return;\r\n\r\n this._memIndex = newIndex;\r\n if (MemIndex.None === newIndex) {\r\n this.clearInterval();\r\n this._div.style.display = \"none\";\r\n return;\r\n }\r\n\r\n if (undefined === this._curIntervalId) {\r\n this._curIntervalId = setInterval(() => this.update(), 1000);\r\n this._div.style.display = \"block\";\r\n }\r\n\r\n this._purgeButton.disabled = undefined === purgeMem[this._memIndex];\r\n\r\n this.update();\r\n }\r\n\r\n private update(): void {\r\n const calc = calcMem[this._memIndex];\r\n this._stats.clear();\r\n const numTrees = calc(this._stats, this._vp);\r\n this._totalElem.innerText = `Total: ${formatMemory(this._stats.totalBytes)}`;\r\n this._totalTreesElem.innerText = `Total Tile Trees: ${numTrees}`;\r\n\r\n this._textures.update(this._stats.consumers, this._stats.totalBytes - this._stats.buffers.totalBytes);\r\n this._buffers.update(this._stats.buffers.consumers, this._stats.buffers.totalBytes);\r\n }\r\n\r\n private purge(): void {\r\n const purge = purgeMem[this._memIndex];\r\n if (undefined !== purge) {\r\n purge();\r\n this._vp.invalidateScene(); // to trigger reloading of tiles we actually do want to continue drawing\r\n this.update();\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MemoryTracker.js","sourceRoot":"","sources":["../../../src/widgets/MemoryTracker.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Widgets\n */\n\nimport { assert, BeTimePoint } from \"@itwin/core-bentley\";\nimport {\n DisclosedTileTreeSet, IModelApp, RenderMemory, TileTree, TileTreeOwner, Viewport,\n} from \"@itwin/core-frontend\";\nimport { ComboBoxEntry, createComboBox } from \"../ui/ComboBox\";\n\nfunction collectTileTreeMemory(stats: RenderMemory.Statistics, owner: TileTreeOwner): void {\n const tree = owner.tileTree;\n if (undefined !== tree)\n tree.collectStatistics(stats);\n}\n\n// Returns the number of tile trees processed.\ntype CalcMem = (stats: RenderMemory.Statistics, vp: Viewport) => number;\ntype PurgeMem = (olderThan?: BeTimePoint) => void;\n\nconst enum MemIndex { // eslint-disable-line no-restricted-syntax\n None = -1,\n ViewportTileTrees,\n SelectedTiles,\n AllTileTrees,\n RenderTarget,\n // eslint-disable-next-line @typescript-eslint/no-shadow\n Viewport, // RenderTarget + Viewed Tile Trees\n System,\n All, // All Tile Trees + System + (RenderTarget for each ViewManager viewport)\n\n COUNT,\n}\n\n// Includes None (-1) at index 0\nconst memLabels = [\n \"None\",\n \"Viewed Tile Trees\",\n \"Selected Tiles\",\n \"All Tile Trees\",\n \"Render Target\",\n \"Viewport\",\n \"System\",\n \"All\",\n];\n\nfunction collectStatisticsForViewedTileTrees(vp: Viewport, stats: RenderMemory.Statistics): number {\n vp.collectStatistics(stats);\n const trees = new DisclosedTileTreeSet();\n vp.discloseTileTrees(trees);\n return trees.size;\n}\n\nfunction collectStatisticsForSelectedTiles(vp: Viewport, stats: RenderMemory.Statistics): number {\n const trees = new Set<TileTree>();\n const selectedTiles = IModelApp.tileAdmin.getTilesForUser(vp)?.selected;\n if (selectedTiles) {\n for (const tile of selectedTiles) {\n trees.add(tile.tree);\n tile.collectStatistics(stats);\n }\n }\n\n return trees.size;\n}\n\nfunction collectStatisticsForAllTileTrees(vp: Viewport, stats: RenderMemory.Statistics): number {\n let numTrees = 0;\n vp.view.iModel.tiles.forEachTreeOwner((owner) => {\n collectTileTreeMemory(stats, owner);\n if (undefined !== owner.tileTree)\n ++numTrees;\n });\n return numTrees;\n}\n\nconst calcMem: CalcMem[] = [\n (stats, vp) => collectStatisticsForViewedTileTrees(vp, stats),\n (stats, vp) => collectStatisticsForSelectedTiles(vp, stats),\n (stats, vp) => collectStatisticsForAllTileTrees(vp, stats),\n (stats, vp) => {\n vp.target.collectStatistics(stats);\n return 0;\n },\n (stats, vp) => {\n vp.target.collectStatistics(stats);\n return collectStatisticsForViewedTileTrees(vp, stats);\n },\n (stats, vp) => {\n vp.target.renderSystem.collectStatistics(stats);\n return 0;\n },\n (stats, vp) => {\n vp.target.renderSystem.collectStatistics(stats);\n for (const x of IModelApp.viewManager)\n x.target.collectStatistics(stats);\n\n return collectStatisticsForAllTileTrees(vp, stats);\n },\n];\n\n// ###TODO...\nconst purgeMem: Array<PurgeMem | undefined> = [\n undefined,\n (olderThan?) => IModelApp.viewManager.purgeTileTrees(olderThan ? olderThan : BeTimePoint.now()),\n];\n\n/** @internal */\nexport function formatMemory(numBytes: number): string {\n let suffix = \"b\";\n if (numBytes >= 1024) {\n numBytes /= 1024;\n suffix = \"kb\";\n if (numBytes >= 1024) {\n numBytes /= 1024;\n suffix = \"mb\";\n }\n }\n\n return numBytes.toFixed(2) + suffix;\n}\n\nclass MemoryPanel {\n private readonly _label: string;\n private readonly _labels: string[];\n private readonly _elems: HTMLElement[] = [];\n private readonly _div: HTMLDivElement;\n private readonly _header: HTMLElement;\n\n public constructor(parent: HTMLElement, label: string, labels: string[]) {\n this._label = label;\n this._labels = labels;\n this._div = document.createElement(\"div\");\n\n this._header = document.createElement(\"label\")!;\n this._header.style.fontWeight = \"bold\";\n this._div.appendChild(this._header);\n\n const numElems = labels.length;\n for (let i = 0; i < numElems; i++) {\n const elem = document.createElement(\"label\");\n this._elems.push(elem);\n this._div.appendChild(elem);\n }\n\n parent.appendChild(this._div);\n }\n\n public update(stats: RenderMemory.Consumers[], total: number): void {\n assert(this._labels.length === stats.length);\n assert(this._labels.length === this._elems.length);\n\n this._header.innerHTML = `${this._label}: ${formatMemory(total)}`;\n\n for (let i = 0; i < this._labels.length; i++) {\n const elem = this._elems[i];\n const stat = stats[i];\n if (0 === stat.totalBytes) {\n elem.style.display = \"none\";\n continue;\n }\n\n elem.style.display = \"block\";\n elem.innerHTML = `${this._labels[i]} (${stat.count}): ${formatMemory(stat.totalBytes)}`; // + \"\\n(max: \" + formatMemory(stat.maxBytes) + \")\";\n }\n }\n}\n\n/** Displays GPU memory allocated to tile trees - either all tile trees in the system, or only those associated with a specific Viewport.\n * @beta\n */\nexport class MemoryTracker {\n private readonly _stats = new RenderMemory.Statistics();\n private readonly _vp: Viewport;\n private readonly _div: HTMLDivElement;\n private _curIntervalId?: NodeJS.Timer;\n private _memIndex = MemIndex.None;\n private readonly _totalElem: HTMLElement;\n private readonly _totalTreesElem: HTMLElement;\n private readonly _purgeButton: HTMLButtonElement;\n private readonly _textures: MemoryPanel;\n private readonly _buffers: MemoryPanel;\n\n public constructor(parent: HTMLElement, vp: Viewport) {\n this._vp = vp;\n\n this._div = document.createElement(\"div\");\n this._div.style.display = \"none\";\n this._div.style.textAlign = \"right\";\n\n this.addSelector(parent);\n\n const table = document.createElement(\"table\");\n table.style.width = \"100%\";\n table.setAttribute(\"border\", \"1\");\n this._div.appendChild(table);\n\n const row0 = document.createElement(\"tr\");\n const cell00 = document.createElement(\"td\");\n const cell01 = document.createElement(\"td\");\n cell00.style.width = cell01.style.width = \"50%\";\n row0.appendChild(cell00);\n row0.appendChild(cell01);\n table.appendChild(row0);\n\n const row1 = document.createElement(\"tr\");\n const cell10 = document.createElement(\"td\");\n const cell11 = document.createElement(\"td\");\n cell10.style.width = cell11.style.width = \"50%\";\n row1.appendChild(cell10);\n row1.appendChild(cell11);\n table.appendChild(row1);\n\n this._textures = new MemoryPanel(cell00, \"Textures\", [\"Surface Textures\", \"Vertex Tables\", \"Edge Tables\", \"Feature Tables\", \"Feature Overrides\", \"Clip Volumes\", \"Planar Classifiers\", \"Shadow Maps\", \"Texture Attachments\", \"Thematic Textures\"]);\n this._buffers = new MemoryPanel(cell01, \"Buffers\", [\"Surfaces\", \"Visible Edges\", \"Silhouettes\", \"Polyline Edges\", \"Indexed Edges\", \"Polylines\", \"Point Strings\", \"Point Clouds\", \"Instances\", \"Terrain\", \"Reality Mesh\"]);\n this._totalElem = this.addStatistics(cell10);\n this._totalTreesElem = this.addStatistics(cell11);\n\n this._purgeButton = this.addPurgeButton(this._div);\n\n parent.appendChild(this._div);\n }\n\n public dispose(): void {\n this.clearInterval();\n }\n\n private addSelector(parent: HTMLElement): void {\n const entries: ComboBoxEntry[] = [];\n for (let i = MemIndex.None; i < MemIndex.COUNT; i++)\n entries.push({ name: memLabels[i + 1], value: i });\n\n createComboBox({\n parent,\n name: \"Track Memory: \",\n id: \"memTracker_type\",\n value: MemIndex.None,\n handler: (select) => this.change(Number.parseInt(select.value, 10)),\n entries,\n });\n }\n\n private addPurgeButton(parent: HTMLElement): HTMLButtonElement {\n const div = document.createElement(\"div\");\n div.style.textAlign = \"center\";\n\n const button = document.createElement(\"button\");\n button.innerText = \"Purge\";\n button.addEventListener(\"click\", () => this.purge());\n\n div.appendChild(button);\n parent.appendChild(div);\n\n return button;\n }\n\n private addStatistics(parent: HTMLElement): HTMLElement {\n const div = document.createElement(\"div\");\n const text = document.createElement(\"text\");\n text.style.fontWeight = \"bold\";\n div.appendChild(text);\n parent.appendChild(div);\n return text;\n }\n\n private clearInterval(): void {\n if (undefined !== this._curIntervalId) {\n clearInterval(this._curIntervalId);\n this._curIntervalId = undefined;\n }\n }\n\n private change(newIndex: MemIndex): void {\n if (newIndex === this._memIndex)\n return;\n\n this._memIndex = newIndex;\n if (MemIndex.None === newIndex) {\n this.clearInterval();\n this._div.style.display = \"none\";\n return;\n }\n\n if (undefined === this._curIntervalId) {\n this._curIntervalId = setInterval(() => this.update(), 1000);\n this._div.style.display = \"block\";\n }\n\n this._purgeButton.disabled = undefined === purgeMem[this._memIndex];\n\n this.update();\n }\n\n private update(): void {\n const calc = calcMem[this._memIndex];\n this._stats.clear();\n const numTrees = calc(this._stats, this._vp);\n this._totalElem.innerText = `Total: ${formatMemory(this._stats.totalBytes)}`;\n this._totalTreesElem.innerText = `Total Tile Trees: ${numTrees}`;\n\n this._textures.update(this._stats.consumers, this._stats.totalBytes - this._stats.buffers.totalBytes);\n this._buffers.update(this._stats.buffers.consumers, this._stats.buffers.totalBytes);\n }\n\n private purge(): void {\n const purge = purgeMem[this._memIndex];\n if (undefined !== purge) {\n purge();\n this._vp.invalidateScene(); // to trigger reloading of tiles we actually do want to continue drawing\n this.update();\n }\n }\n}\n"]}
@@ -1,16 +1,16 @@
1
- /** @packageDocumentation
2
- * @module Widgets
3
- */
4
- export declare class RenderCommandBreakdown {
5
- private readonly _div;
6
- private readonly _cellDiv;
7
- private _curIntervalId?;
8
- private readonly _cells;
9
- private readonly _total;
10
- constructor(parent: HTMLElement);
11
- dispose(): void;
12
- private toggle;
13
- private clearInterval;
14
- private update;
15
- }
1
+ /** @packageDocumentation
2
+ * @module Widgets
3
+ */
4
+ export declare class RenderCommandBreakdown {
5
+ private readonly _div;
6
+ private readonly _cellDiv;
7
+ private _curIntervalId?;
8
+ private readonly _cells;
9
+ private readonly _total;
10
+ constructor(parent: HTMLElement);
11
+ dispose(): void;
12
+ private toggle;
13
+ private clearInterval;
14
+ private update;
15
+ }
16
16
  //# sourceMappingURL=RenderCommandBreakdown.d.ts.map