@qilin-agent/experimental-inspector 0.0.0-stage → 3.1.3

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 (930) hide show
  1. package/README.i18n.yaml +49 -0
  2. package/README.md +179 -2
  3. package/README.zh.md +180 -0
  4. package/cordis.patch.yml +5 -0
  5. package/icon.svg +12 -0
  6. package/lib/client.js +3572 -0
  7. package/lib/client.page.js +314 -0
  8. package/lib/devtools/Images/3d-center.svg +3 -0
  9. package/lib/devtools/Images/3d-pan.svg +3 -0
  10. package/lib/devtools/Images/3d-rotate.svg +3 -0
  11. package/lib/devtools/Images/accelerometer-back.svg +69 -0
  12. package/lib/devtools/Images/accelerometer-bottom.png +0 -0
  13. package/lib/devtools/Images/accelerometer-front.svg +28 -0
  14. package/lib/devtools/Images/accelerometer-left.png +0 -0
  15. package/lib/devtools/Images/accelerometer-right.png +0 -0
  16. package/lib/devtools/Images/accelerometer-top.png +0 -0
  17. package/lib/devtools/Images/account-tree.svg +10 -0
  18. package/lib/devtools/Images/add-photo.svg +3 -0
  19. package/lib/devtools/Images/ai-explorer-badge.svg +114 -0
  20. package/lib/devtools/Images/align-content-center.svg +5 -0
  21. package/lib/devtools/Images/align-content-end.svg +5 -0
  22. package/lib/devtools/Images/align-content-space-around.svg +6 -0
  23. package/lib/devtools/Images/align-content-space-between.svg +4 -0
  24. package/lib/devtools/Images/align-content-space-evenly.svg +6 -0
  25. package/lib/devtools/Images/align-content-start.svg +5 -0
  26. package/lib/devtools/Images/align-content-stretch.svg +4 -0
  27. package/lib/devtools/Images/align-items-baseline.svg +4 -0
  28. package/lib/devtools/Images/align-items-center.svg +5 -0
  29. package/lib/devtools/Images/align-items-end.svg +5 -0
  30. package/lib/devtools/Images/align-items-start.svg +5 -0
  31. package/lib/devtools/Images/align-items-stretch.svg +6 -0
  32. package/lib/devtools/Images/align-self-center.svg +3 -0
  33. package/lib/devtools/Images/align-self-end.svg +4 -0
  34. package/lib/devtools/Images/align-self-start.svg +4 -0
  35. package/lib/devtools/Images/align-self-stretch.svg +5 -0
  36. package/lib/devtools/Images/animation.svg +3 -0
  37. package/lib/devtools/Images/arrow-back.svg +4 -0
  38. package/lib/devtools/Images/arrow-collapse.svg +3 -0
  39. package/lib/devtools/Images/arrow-down.svg +10 -0
  40. package/lib/devtools/Images/arrow-drop-down-dark.svg +3 -0
  41. package/lib/devtools/Images/arrow-drop-down-light.svg +3 -0
  42. package/lib/devtools/Images/arrow-drop-down.svg +3 -0
  43. package/lib/devtools/Images/arrow-forward.svg +4 -0
  44. package/lib/devtools/Images/arrow-right-circle.svg +3 -0
  45. package/lib/devtools/Images/arrow-up-down-circle.svg +3 -0
  46. package/lib/devtools/Images/arrow-up-down.svg +3 -0
  47. package/lib/devtools/Images/arrow-up.svg +10 -0
  48. package/lib/devtools/Images/attach-file.svg +3 -0
  49. package/lib/devtools/Images/baseline-high-availability.svg +17 -0
  50. package/lib/devtools/Images/baseline-limited-availability.svg +19 -0
  51. package/lib/devtools/Images/baseline-low-availability.svg +31 -0
  52. package/lib/devtools/Images/bell.svg +3 -0
  53. package/lib/devtools/Images/bezier-curve-filled.svg +3 -0
  54. package/lib/devtools/Images/bin.svg +1 -0
  55. package/lib/devtools/Images/bottom-panel-close.svg +1 -0
  56. package/lib/devtools/Images/bottom-panel-open.svg +1 -0
  57. package/lib/devtools/Images/brackets.svg +1 -0
  58. package/lib/devtools/Images/breakpoint-circle.svg +4 -0
  59. package/lib/devtools/Images/breakpoint-crossed-filled.svg +1 -0
  60. package/lib/devtools/Images/breakpoint-crossed.svg +1 -0
  61. package/lib/devtools/Images/brush-2.svg +3 -0
  62. package/lib/devtools/Images/brush-filled.svg +1 -0
  63. package/lib/devtools/Images/brush.svg +1 -0
  64. package/lib/devtools/Images/bucket.svg +4 -0
  65. package/lib/devtools/Images/bug.svg +3 -0
  66. package/lib/devtools/Images/button-magic.svg +3 -0
  67. package/lib/devtools/Images/calendar-today.svg +3 -0
  68. package/lib/devtools/Images/center-focus-weak.svg +3 -0
  69. package/lib/devtools/Images/check-circle.svg +3 -0
  70. package/lib/devtools/Images/check-double.svg +3 -0
  71. package/lib/devtools/Images/checker.svg +12 -0
  72. package/lib/devtools/Images/checkmark.svg +1 -0
  73. package/lib/devtools/Images/chevron-double-right.svg +3 -0
  74. package/lib/devtools/Images/chevron-down.svg +3 -0
  75. package/lib/devtools/Images/chevron-left-dot.svg +4 -0
  76. package/lib/devtools/Images/chevron-left.svg +3 -0
  77. package/lib/devtools/Images/chevron-right.svg +3 -0
  78. package/lib/devtools/Images/chevron-up.svg +3 -0
  79. package/lib/devtools/Images/chromeLeft.avif +0 -0
  80. package/lib/devtools/Images/chromeMiddle.avif +0 -0
  81. package/lib/devtools/Images/chromeRight.avif +0 -0
  82. package/lib/devtools/Images/class.svg +6 -0
  83. package/lib/devtools/Images/clear-list.svg +3 -0
  84. package/lib/devtools/Images/clear.svg +3 -0
  85. package/lib/devtools/Images/cloud.svg +3 -0
  86. package/lib/devtools/Images/code-circle.svg +5 -0
  87. package/lib/devtools/Images/code-whisperer-badge.svg +166 -0
  88. package/lib/devtools/Images/code.svg +3 -0
  89. package/lib/devtools/Images/colon.svg +4 -0
  90. package/lib/devtools/Images/color-picker-filled.svg +3 -0
  91. package/lib/devtools/Images/color-picker.svg +3 -0
  92. package/lib/devtools/Images/compress.svg +8 -0
  93. package/lib/devtools/Images/console-conditional-breakpoint.svg +1 -0
  94. package/lib/devtools/Images/console-logpoint.svg +1 -0
  95. package/lib/devtools/Images/container.svg +4 -0
  96. package/lib/devtools/Images/cookie.svg +3 -0
  97. package/lib/devtools/Images/cookie_off.svg +3 -0
  98. package/lib/devtools/Images/copy.svg +3 -0
  99. package/lib/devtools/Images/corporate-fare.svg +3 -0
  100. package/lib/devtools/Images/credit-card.svg +3 -0
  101. package/lib/devtools/Images/cross-circle-filled.svg +3 -0
  102. package/lib/devtools/Images/cross-circle.svg +3 -0
  103. package/lib/devtools/Images/cross.svg +3 -0
  104. package/lib/devtools/Images/cssoverview_icons_2x.avif +0 -0
  105. package/lib/devtools/Images/database-off.svg +1 -0
  106. package/lib/devtools/Images/database.svg +3 -0
  107. package/lib/devtools/Images/deployed.svg +3 -0
  108. package/lib/devtools/Images/device-fold.svg +1 -0
  109. package/lib/devtools/Images/devices.svg +3 -0
  110. package/lib/devtools/Images/devtools-thumbnail.svg +57 -0
  111. package/lib/devtools/Images/devtools-tips.svg +61 -0
  112. package/lib/devtools/Images/devtools-user-badge.svg +129 -0
  113. package/lib/devtools/Images/devtools.svg +13 -0
  114. package/lib/devtools/Images/difference.svg +3 -0
  115. package/lib/devtools/Images/dock-bottom.svg +3 -0
  116. package/lib/devtools/Images/dock-left.svg +3 -0
  117. package/lib/devtools/Images/dock-right.svg +3 -0
  118. package/lib/devtools/Images/dock-window.svg +3 -0
  119. package/lib/devtools/Images/document.svg +3 -0
  120. package/lib/devtools/Images/dog-paw.svg +10 -0
  121. package/lib/devtools/Images/dom-detective-badge.svg +136 -0
  122. package/lib/devtools/Images/domain.svg +3 -0
  123. package/lib/devtools/Images/dots-horizontal.svg +1 -0
  124. package/lib/devtools/Images/dots-vertical.svg +3 -0
  125. package/lib/devtools/Images/download.svg +3 -0
  126. package/lib/devtools/Images/edit.svg +1 -0
  127. package/lib/devtools/Images/empty.svg +2 -0
  128. package/lib/devtools/Images/errorWave.svg +74 -0
  129. package/lib/devtools/Images/exclamation.svg +3 -0
  130. package/lib/devtools/Images/expand.svg +1 -0
  131. package/lib/devtools/Images/experiment-check.svg +1 -0
  132. package/lib/devtools/Images/experiment.svg +3 -0
  133. package/lib/devtools/Images/extension.svg +1 -0
  134. package/lib/devtools/Images/eye-crossed.svg +3 -0
  135. package/lib/devtools/Images/eye.svg +3 -0
  136. package/lib/devtools/Images/file-document.svg +3 -0
  137. package/lib/devtools/Images/file-fetch-xhr.svg +3 -0
  138. package/lib/devtools/Images/file-font.svg +4 -0
  139. package/lib/devtools/Images/file-generic.svg +3 -0
  140. package/lib/devtools/Images/file-image.svg +3 -0
  141. package/lib/devtools/Images/file-json.svg +4 -0
  142. package/lib/devtools/Images/file-manifest.svg +3 -0
  143. package/lib/devtools/Images/file-media.svg +3 -0
  144. package/lib/devtools/Images/file-script.svg +3 -0
  145. package/lib/devtools/Images/file-snippet.svg +4 -0
  146. package/lib/devtools/Images/file-stylesheet.svg +4 -0
  147. package/lib/devtools/Images/file-wasm.svg +5 -0
  148. package/lib/devtools/Images/file-websocket.svg +3 -0
  149. package/lib/devtools/Images/filter-clear.svg +3 -0
  150. package/lib/devtools/Images/filter-filled.svg +3 -0
  151. package/lib/devtools/Images/filter.svg +3 -0
  152. package/lib/devtools/Images/flex-direction.svg +5 -0
  153. package/lib/devtools/Images/flex-no-wrap.svg +5 -0
  154. package/lib/devtools/Images/flex-wrap.svg +8 -0
  155. package/lib/devtools/Images/flow.svg +3 -0
  156. package/lib/devtools/Images/flowsheet.svg +1 -0
  157. package/lib/devtools/Images/fold-more.svg +3 -0
  158. package/lib/devtools/Images/folder-asterisk.svg +10 -0
  159. package/lib/devtools/Images/folder-off.svg +3 -0
  160. package/lib/devtools/Images/folder.svg +3 -0
  161. package/lib/devtools/Images/frame-crossed.svg +3 -0
  162. package/lib/devtools/Images/frame-icon.svg +54 -0
  163. package/lib/devtools/Images/frame.svg +3 -0
  164. package/lib/devtools/Images/gdp-logo-dark.png +0 -0
  165. package/lib/devtools/Images/gdp-logo-light.png +0 -0
  166. package/lib/devtools/Images/gear-filled.svg +3 -0
  167. package/lib/devtools/Images/gear.svg +4 -0
  168. package/lib/devtools/Images/gears.svg +3 -0
  169. package/lib/devtools/Images/geminiInDevTools.png +0 -0
  170. package/lib/devtools/Images/geminiInDevTools_2x.png +0 -0
  171. package/lib/devtools/Images/global.svg +5 -0
  172. package/lib/devtools/Images/google.svg +3 -0
  173. package/lib/devtools/Images/goto-filled.svg +1 -0
  174. package/lib/devtools/Images/grid-direction.svg +6 -0
  175. package/lib/devtools/Images/grid-on.svg +10 -0
  176. package/lib/devtools/Images/group.svg +3 -0
  177. package/lib/devtools/Images/heap-snapshot.svg +6 -0
  178. package/lib/devtools/Images/heap-snapshots.svg +7 -0
  179. package/lib/devtools/Images/help.svg +3 -0
  180. package/lib/devtools/Images/history.svg +3 -0
  181. package/lib/devtools/Images/home.svg +3 -0
  182. package/lib/devtools/Images/hover.svg +6 -0
  183. package/lib/devtools/Images/iframe-crossed.svg +3 -0
  184. package/lib/devtools/Images/iframe.svg +3 -0
  185. package/lib/devtools/Images/import.svg +3 -0
  186. package/lib/devtools/Images/indeterminate-question-box.svg +3 -0
  187. package/lib/devtools/Images/info-filled.svg +3 -0
  188. package/lib/devtools/Images/info.svg +3 -0
  189. package/lib/devtools/Images/issue-cross-filled.svg +3 -0
  190. package/lib/devtools/Images/issue-exclamation-filled.svg +3 -0
  191. package/lib/devtools/Images/issue-questionmark-filled.svg +3 -0
  192. package/lib/devtools/Images/issue-text-filled.svg +3 -0
  193. package/lib/devtools/Images/justify-content-center.svg +5 -0
  194. package/lib/devtools/Images/justify-content-end.svg +5 -0
  195. package/lib/devtools/Images/justify-content-space-around.svg +6 -0
  196. package/lib/devtools/Images/justify-content-space-between.svg +4 -0
  197. package/lib/devtools/Images/justify-content-space-evenly.svg +6 -0
  198. package/lib/devtools/Images/justify-content-start.svg +5 -0
  199. package/lib/devtools/Images/justify-content-stretch.svg +4 -0
  200. package/lib/devtools/Images/justify-items-center.svg +4 -0
  201. package/lib/devtools/Images/justify-items-end.svg +4 -0
  202. package/lib/devtools/Images/justify-items-start.svg +4 -0
  203. package/lib/devtools/Images/justify-items-stretch.svg +4 -0
  204. package/lib/devtools/Images/keyboard-arrow-right.svg +1 -0
  205. package/lib/devtools/Images/keyboard-full.svg +10 -0
  206. package/lib/devtools/Images/keyboard-pen.svg +1 -0
  207. package/lib/devtools/Images/keyboard.svg +3 -0
  208. package/lib/devtools/Images/label-auto.svg +3 -0
  209. package/lib/devtools/Images/label.svg +10 -0
  210. package/lib/devtools/Images/large-arrow-right-filled.svg +1 -0
  211. package/lib/devtools/Images/layers-filled.svg +1 -0
  212. package/lib/devtools/Images/layers.svg +1 -0
  213. package/lib/devtools/Images/left-panel-close.svg +1 -0
  214. package/lib/devtools/Images/left-panel-open.svg +1 -0
  215. package/lib/devtools/Images/lightbulb-spark.svg +13 -0
  216. package/lib/devtools/Images/lightbulb.svg +3 -0
  217. package/lib/devtools/Images/lighthouse_logo.svg +158 -0
  218. package/lib/devtools/Images/list.svg +3 -0
  219. package/lib/devtools/Images/location-on.svg +3 -0
  220. package/lib/devtools/Images/lock-person.svg +1 -0
  221. package/lib/devtools/Images/lock.svg +3 -0
  222. package/lib/devtools/Images/mark-email-unread.svg +3 -0
  223. package/lib/devtools/Images/match-case.svg +3 -0
  224. package/lib/devtools/Images/match-whole-word.svg +1 -0
  225. package/lib/devtools/Images/memory.svg +6 -0
  226. package/lib/devtools/Images/minus.svg +3 -0
  227. package/lib/devtools/Images/mop.svg +1 -0
  228. package/lib/devtools/Images/mouse.svg +4 -0
  229. package/lib/devtools/Images/navigationControls.png +0 -0
  230. package/lib/devtools/Images/navigationControls_2x.png +0 -0
  231. package/lib/devtools/Images/network-settings.svg +3 -0
  232. package/lib/devtools/Images/node-stack-icon.svg +1 -0
  233. package/lib/devtools/Images/nodeIcon.avif +0 -0
  234. package/lib/devtools/Images/open-externally.svg +3 -0
  235. package/lib/devtools/Images/override.svg +11 -0
  236. package/lib/devtools/Images/palette.svg +10 -0
  237. package/lib/devtools/Images/pause-circle.svg +1 -0
  238. package/lib/devtools/Images/pause.svg +1 -0
  239. package/lib/devtools/Images/pen-spark.svg +3 -0
  240. package/lib/devtools/Images/performance-panel-delete-annotation.svg +32 -0
  241. package/lib/devtools/Images/performance-panel-diagram.svg +34 -0
  242. package/lib/devtools/Images/performance-panel-entry-label.svg +75 -0
  243. package/lib/devtools/Images/performance-panel-time-range.svg +15 -0
  244. package/lib/devtools/Images/performance.svg +3 -0
  245. package/lib/devtools/Images/person.svg +3 -0
  246. package/lib/devtools/Images/photo-camera.svg +10 -0
  247. package/lib/devtools/Images/play.svg +3 -0
  248. package/lib/devtools/Images/plus.svg +3 -0
  249. package/lib/devtools/Images/policy.svg +3 -0
  250. package/lib/devtools/Images/popoverArrows.png +0 -0
  251. package/lib/devtools/Images/popup.svg +3 -0
  252. package/lib/devtools/Images/preview_feature_video_thumbnail.svg +92 -0
  253. package/lib/devtools/Images/profile.svg +3 -0
  254. package/lib/devtools/Images/psychiatry.svg +3 -0
  255. package/lib/devtools/Images/puzzle.svg +3 -0
  256. package/lib/devtools/Images/record-start.svg +4 -0
  257. package/lib/devtools/Images/record-stop.svg +4 -0
  258. package/lib/devtools/Images/redo.svg +3 -0
  259. package/lib/devtools/Images/refresh.svg +10 -0
  260. package/lib/devtools/Images/regular-expression.svg +3 -0
  261. package/lib/devtools/Images/replace.svg +1 -0
  262. package/lib/devtools/Images/replay.svg +3 -0
  263. package/lib/devtools/Images/report.svg +1 -0
  264. package/lib/devtools/Images/resizeDiagonal.svg +1 -0
  265. package/lib/devtools/Images/resizeHorizontal.svg +1 -0
  266. package/lib/devtools/Images/resizeVertical.svg +1 -0
  267. package/lib/devtools/Images/resume.svg +1 -0
  268. package/lib/devtools/Images/revert.svg +3 -0
  269. package/lib/devtools/Images/review.svg +5 -0
  270. package/lib/devtools/Images/right-panel-close.svg +1 -0
  271. package/lib/devtools/Images/right-panel-open.svg +1 -0
  272. package/lib/devtools/Images/scissors.svg +3 -0
  273. package/lib/devtools/Images/screen-rotation.svg +1 -0
  274. package/lib/devtools/Images/search.svg +3 -0
  275. package/lib/devtools/Images/select-element.svg +3 -0
  276. package/lib/devtools/Images/send.svg +3 -0
  277. package/lib/devtools/Images/shadow.svg +3 -0
  278. package/lib/devtools/Images/shield.svg +3 -0
  279. package/lib/devtools/Images/small-status-dot.svg +3 -0
  280. package/lib/devtools/Images/smart-assistant.svg +3 -0
  281. package/lib/devtools/Images/snippet.svg +4 -0
  282. package/lib/devtools/Images/spark-info.svg +3 -0
  283. package/lib/devtools/Images/spark.svg +3 -0
  284. package/lib/devtools/Images/speculative-loads.svg +1 -0
  285. package/lib/devtools/Images/speedster-badge.svg +166 -0
  286. package/lib/devtools/Images/star.svg +3 -0
  287. package/lib/devtools/Images/step-into.svg +1 -0
  288. package/lib/devtools/Images/step-out.svg +1 -0
  289. package/lib/devtools/Images/step-over.svg +1 -0
  290. package/lib/devtools/Images/step.svg +1 -0
  291. package/lib/devtools/Images/stop.svg +3 -0
  292. package/lib/devtools/Images/symbol.svg +3 -0
  293. package/lib/devtools/Images/sync.svg +3 -0
  294. package/lib/devtools/Images/tab-move.svg +1 -0
  295. package/lib/devtools/Images/table.svg +3 -0
  296. package/lib/devtools/Images/terminal.svg +10 -0
  297. package/lib/devtools/Images/text-analysis.svg +3 -0
  298. package/lib/devtools/Images/thumb-down-filled.svg +3 -0
  299. package/lib/devtools/Images/thumb-down.svg +3 -0
  300. package/lib/devtools/Images/thumb-up-filled.svg +3 -0
  301. package/lib/devtools/Images/thumb-up.svg +3 -0
  302. package/lib/devtools/Images/tonality.svg +10 -0
  303. package/lib/devtools/Images/toolbarResizerVertical.png +0 -0
  304. package/lib/devtools/Images/top-panel-close.svg +1 -0
  305. package/lib/devtools/Images/top-panel-open.svg +1 -0
  306. package/lib/devtools/Images/touch-app.svg +4 -0
  307. package/lib/devtools/Images/touchCursor.png +0 -0
  308. package/lib/devtools/Images/touchCursor_2x.png +0 -0
  309. package/lib/devtools/Images/triangle-bottom-right.svg +3 -0
  310. package/lib/devtools/Images/triangle-down.svg +1 -0
  311. package/lib/devtools/Images/triangle-left.svg +1 -0
  312. package/lib/devtools/Images/triangle-right.svg +1 -0
  313. package/lib/devtools/Images/triangle-up.svg +3 -0
  314. package/lib/devtools/Images/trophy.svg +3 -0
  315. package/lib/devtools/Images/tune.svg +3 -0
  316. package/lib/devtools/Images/undo.svg +1 -0
  317. package/lib/devtools/Images/warning-filled.svg +3 -0
  318. package/lib/devtools/Images/warning.svg +3 -0
  319. package/lib/devtools/Images/watch.svg +3 -0
  320. package/lib/devtools/Images/whatsnew.svg +61 -0
  321. package/lib/devtools/Images/width.svg +3 -0
  322. package/lib/devtools/Images/zoom-in.svg +3 -0
  323. package/lib/devtools/LICENSE +27 -0
  324. package/lib/devtools/application_tokens.css +413 -0
  325. package/lib/devtools/chunks/FormatterActions-FcPgI0uV.js +19 -0
  326. package/lib/devtools/chunks/UIFilter-CIzBruM3.js +18 -0
  327. package/lib/devtools/chunks/UIRequestLocation-CtGcVN3I.js +48 -0
  328. package/lib/devtools/chunks/_qilin-devtools_empty-BvRk9kiK.js +0 -0
  329. package/lib/devtools/chunks/accessibility-CwvHp3sj.js +2718 -0
  330. package/lib/devtools/chunks/acorn-_jSanihy.js +3232 -0
  331. package/lib/devtools/chunks/adorners-D4aU6nuY.js +45 -0
  332. package/lib/devtools/chunks/ai_assistance-BU6E0Wio.js +4255 -0
  333. package/lib/devtools/chunks/angular-Dutmu-L9.js +117 -0
  334. package/lib/devtools/chunks/animation-TEwO5UI_.js +922 -0
  335. package/lib/devtools/chunks/application-SCf6MiCN.js +12740 -0
  336. package/lib/devtools/chunks/autofill-Dp3nMnuK.js +198 -0
  337. package/lib/devtools/chunks/autofill_manager-BXntqfdp.js +58 -0
  338. package/lib/devtools/chunks/bindings-DgoVEdsr.js +4105 -0
  339. package/lib/devtools/chunks/browser-DL1S1Kiu.js +62 -0
  340. package/lib/devtools/chunks/browser_debugger-p7Rr4IBR.js +629 -0
  341. package/lib/devtools/chunks/changes-DeW5MC9u.js +2 -0
  342. package/lib/devtools/chunks/changes-k42bihtm.js +393 -0
  343. package/lib/devtools/chunks/checkbox.css-CZJJ6atQ.js +4 -0
  344. package/lib/devtools/chunks/chunk-DF993M8W.js +11 -0
  345. package/lib/devtools/chunks/code_highlighter-BnTPt9_G.js +210 -0
  346. package/lib/devtools/chunks/codemirror-CBR9VJma.js +15842 -0
  347. package/lib/devtools/chunks/color_picker-Cuh_X19Y.js +1566 -0
  348. package/lib/devtools/chunks/common-DjRFwulW.js +15145 -0
  349. package/lib/devtools/chunks/common-Uu9A2glf.js +2 -0
  350. package/lib/devtools/chunks/common-qd_KLeYO.js +6639 -0
  351. package/lib/devtools/chunks/components-CnPGgDUW.js +704 -0
  352. package/lib/devtools/chunks/components-Cw5tHQqN.js +1338 -0
  353. package/lib/devtools/chunks/components-EJwviLtZ.js +1090 -0
  354. package/lib/devtools/chunks/console-D1WlMaFQ.js +3855 -0
  355. package/lib/devtools/chunks/console-yMm3XVTY.js +2 -0
  356. package/lib/devtools/chunks/console_counters-9SfIdrUo.js +103 -0
  357. package/lib/devtools/chunks/coverage-BbFH390Q.js +1176 -0
  358. package/lib/devtools/chunks/coverage-CLBpovLw.js +2 -0
  359. package/lib/devtools/chunks/cpp-CdElSCaB.js +435 -0
  360. package/lib/devtools/chunks/css_overview-cITV9auE.js +1288 -0
  361. package/lib/devtools/chunks/data_grid-pC5qqfsJ.js +1671 -0
  362. package/lib/devtools/chunks/developer_resources-4DqQIvy6.js +240 -0
  363. package/lib/devtools/chunks/diff-qn55JSCS.js +444 -0
  364. package/lib/devtools/chunks/dom_extension-BfrKZ4JG.js +172 -0
  365. package/lib/devtools/chunks/elements-CgEYz3mX.js +2 -0
  366. package/lib/devtools/chunks/elements-Dbx4q9-v.js +11407 -0
  367. package/lib/devtools/chunks/emulation-C6XKPPGu.js +1306 -0
  368. package/lib/devtools/chunks/emulation-D8xbdsAj.js +2 -0
  369. package/lib/devtools/chunks/emulation-EtJlEukP.js +2732 -0
  370. package/lib/devtools/chunks/emulation-cjFPXHT9.js +157 -0
  371. package/lib/devtools/chunks/event_listeners-BeTH3gi2.js +414 -0
  372. package/lib/devtools/chunks/explain-P_aDGFSD.js +747 -0
  373. package/lib/devtools/chunks/greendev-BU0QcVPX.js +152 -0
  374. package/lib/devtools/chunks/heap_snapshot-CZt2KUPL.js +427 -0
  375. package/lib/devtools/chunks/helper-CI72KvIC.js +33 -0
  376. package/lib/devtools/chunks/helpers--xrfGSwQ.js +29 -0
  377. package/lib/devtools/chunks/i18n-DvFMqQdJ.js +17 -0
  378. package/lib/devtools/chunks/icon_button-BebVdJD8.js +83 -0
  379. package/lib/devtools/chunks/inline_editor-D54X5UUr.js +1309 -0
  380. package/lib/devtools/chunks/inspector_main-DRbdXLmF.js +279 -0
  381. package/lib/devtools/chunks/issue_counter-CeOjTNGW.js +193 -0
  382. package/lib/devtools/chunks/issues-CegBKEda.js +1649 -0
  383. package/lib/devtools/chunks/issues_manager-D7nfNPN1.js +3009 -0
  384. package/lib/devtools/chunks/java-7g_qfFa2.js +263 -0
  385. package/lib/devtools/chunks/layer_viewer-CaFC5oyv.js +1423 -0
  386. package/lib/devtools/chunks/layers-CXqlD9zH.js +370 -0
  387. package/lib/devtools/chunks/legacy-Bqn4Q0Tf.js +41804 -0
  388. package/lib/devtools/chunks/legacy-DOCLCisy.js +1434 -0
  389. package/lib/devtools/chunks/less-DXiRNbd4.js +195 -0
  390. package/lib/devtools/chunks/lighthouse-DtpzvfT6.js +3920 -0
  391. package/lib/devtools/chunks/lighthouse-T9ZpmENr.js +2 -0
  392. package/lib/devtools/chunks/linear_memory_inspector-C50PtM45.js +305 -0
  393. package/lib/devtools/chunks/live-metrics-Bs7wxibB.js +284 -0
  394. package/lib/devtools/chunks/main-C5y6NscM.js +2 -0
  395. package/lib/devtools/chunks/main-DcgYyEI0.js +755 -0
  396. package/lib/devtools/chunks/markdown-tZoR6Bsu.js +1512 -0
  397. package/lib/devtools/chunks/markdown_view-C67b2DdG.js +461 -0
  398. package/lib/devtools/chunks/marked-zGgfoDxO.js +1362 -0
  399. package/lib/devtools/chunks/media-BhuqASbO.js +1337 -0
  400. package/lib/devtools/chunks/media-Wfo1AbXC.js +2 -0
  401. package/lib/devtools/chunks/menus-BAUukA5-.js +969 -0
  402. package/lib/devtools/chunks/mobile_throttling-C26zde8o.js +2 -0
  403. package/lib/devtools/chunks/mobile_throttling-Cw4AkJH4.js +1052 -0
  404. package/lib/devtools/chunks/network-C3gIloDN.js +2 -0
  405. package/lib/devtools/chunks/network-CaxdpGU2.js +9181 -0
  406. package/lib/devtools/chunks/objectValue.css-C9o9fdM2.js +4 -0
  407. package/lib/devtools/chunks/object_ui-BYgPTK_b.js +1461 -0
  408. package/lib/devtools/chunks/object_ui-E7eR7aD-.js +2 -0
  409. package/lib/devtools/chunks/perf_ui-BqzJrt4p.js +2 -0
  410. package/lib/devtools/chunks/perf_ui-CQMkYfn3.js +3143 -0
  411. package/lib/devtools/chunks/performance_monitor-B2kUoCv0.js +385 -0
  412. package/lib/devtools/chunks/php-tl5gKrxu.js +423 -0
  413. package/lib/devtools/chunks/platform-BzB373NB.js +600 -0
  414. package/lib/devtools/chunks/profiler-BGu3akEf.js +4608 -0
  415. package/lib/devtools/chunks/protocol_client-Cwf_jb8R.js +24329 -0
  416. package/lib/devtools/chunks/protocol_monitor-B9nMqAAE.js +2 -0
  417. package/lib/devtools/chunks/protocol_monitor-CvLQ8ms1.js +1224 -0
  418. package/lib/devtools/chunks/puppeteer-CaOjgj3v.js +13299 -0
  419. package/lib/devtools/chunks/python-D9AdRkMm.js +580 -0
  420. package/lib/devtools/chunks/quick_open-C3IZ69m9.js +2 -0
  421. package/lib/devtools/chunks/quick_open-DRITaPnZ.js +722 -0
  422. package/lib/devtools/chunks/recorder-C0f1n95b.js +5465 -0
  423. package/lib/devtools/chunks/recorder-actions-S2RfLX4H.js +6 -0
  424. package/lib/devtools/chunks/request_link_icon-fGy57GcW.js +87 -0
  425. package/lib/devtools/chunks/root-DbVQo07X.js +255 -0
  426. package/lib/devtools/chunks/sass-BPQlMmw2.js +370 -0
  427. package/lib/devtools/chunks/security-NbgKa3ux.js +898 -0
  428. package/lib/devtools/chunks/sensors-nM7qcBE4.js +752 -0
  429. package/lib/devtools/chunks/settings-aKtQC12v.js +1433 -0
  430. package/lib/devtools/chunks/settings_ui-CzxAFzIb.js +175 -0
  431. package/lib/devtools/chunks/snackbars-lPThuWYs.js +12010 -0
  432. package/lib/devtools/chunks/snippets-dIuBmVBv.js +173 -0
  433. package/lib/devtools/chunks/source_frame-CSjno3kf.js +1352 -0
  434. package/lib/devtools/chunks/sources-BIZssBei.js +8216 -0
  435. package/lib/devtools/chunks/sources-Bf8QJxju.js +2 -0
  436. package/lib/devtools/chunks/suggestion_input-Duuu5pyd.js +196 -0
  437. package/lib/devtools/chunks/svelte-DJS1itbE.js +744 -0
  438. package/lib/devtools/chunks/textInput.css-DPvwvIic.js +4 -0
  439. package/lib/devtools/chunks/text_editor-Dq1P6D2J.js +15706 -0
  440. package/lib/devtools/chunks/text_utils-ohNt_gua.js +608 -0
  441. package/lib/devtools/chunks/theme_support-CbSSLkbO.js +92 -0
  442. package/lib/devtools/chunks/third-party-web-DGiPoc0U.js +12626 -0
  443. package/lib/devtools/chunks/timeline-BE_ysZxO.js +2 -0
  444. package/lib/devtools/chunks/timeline-C4vCX79k.js +16347 -0
  445. package/lib/devtools/chunks/utils-CELci976.js +298 -0
  446. package/lib/devtools/chunks/vue-CjH9yovn.js +73 -0
  447. package/lib/devtools/chunks/wast-CbGHiqaW.js +109 -0
  448. package/lib/devtools/chunks/web_audio-IdfBLjwV.js +277 -0
  449. package/lib/devtools/chunks/webauthn-iRZlbjGV.js +522 -0
  450. package/lib/devtools/chunks/whats_new-DOTPf2xJ.js +177 -0
  451. package/lib/devtools/chunks/xml-DI9dcP5w.js +327 -0
  452. package/lib/devtools/connect.js +9 -0
  453. package/lib/devtools/design_system_tokens.css +1061 -0
  454. package/lib/devtools/device_mode_emulation_frame.html +25 -0
  455. package/lib/devtools/devtools_app.html +25 -0
  456. package/lib/devtools/emulated_devices/optimized/MotoG4-landscape.avif +0 -0
  457. package/lib/devtools/emulated_devices/optimized/MotoG4-portrait.avif +0 -0
  458. package/lib/devtools/emulated_devices/optimized/Nexus5X-landscape.avif +0 -0
  459. package/lib/devtools/emulated_devices/optimized/Nexus5X-portrait.avif +0 -0
  460. package/lib/devtools/emulated_devices/optimized/Nexus6P-landscape.avif +0 -0
  461. package/lib/devtools/emulated_devices/optimized/Nexus6P-portrait.avif +0 -0
  462. package/lib/devtools/emulated_devices/optimized/google-nest-hub-horizontal.avif +0 -0
  463. package/lib/devtools/emulated_devices/optimized/google-nest-hub-max-horizontal.avif +0 -0
  464. package/lib/devtools/emulated_devices/optimized/google-nexus-5-horizontal-default-1x.avif +0 -0
  465. package/lib/devtools/emulated_devices/optimized/google-nexus-5-horizontal-default-2x.avif +0 -0
  466. package/lib/devtools/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-1x.avif +0 -0
  467. package/lib/devtools/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-2x.avif +0 -0
  468. package/lib/devtools/emulated_devices/optimized/google-nexus-5-horizontal-navigation-1x.avif +0 -0
  469. package/lib/devtools/emulated_devices/optimized/google-nexus-5-horizontal-navigation-2x.avif +0 -0
  470. package/lib/devtools/emulated_devices/optimized/google-nexus-5-vertical-default-1x.avif +0 -0
  471. package/lib/devtools/emulated_devices/optimized/google-nexus-5-vertical-default-2x.avif +0 -0
  472. package/lib/devtools/emulated_devices/optimized/google-nexus-5-vertical-keyboard-1x.avif +0 -0
  473. package/lib/devtools/emulated_devices/optimized/google-nexus-5-vertical-keyboard-2x.avif +0 -0
  474. package/lib/devtools/emulated_devices/optimized/google-nexus-5-vertical-navigation-1x.avif +0 -0
  475. package/lib/devtools/emulated_devices/optimized/google-nexus-5-vertical-navigation-2x.avif +0 -0
  476. package/lib/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-default-1x.avif +0 -0
  477. package/lib/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-default-2x.avif +0 -0
  478. package/lib/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-1x.avif +0 -0
  479. package/lib/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-2x.avif +0 -0
  480. package/lib/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-1x.avif +0 -0
  481. package/lib/devtools/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-2x.avif +0 -0
  482. package/lib/devtools/emulated_devices/optimized/google-nexus-5x-vertical-default-1x.avif +0 -0
  483. package/lib/devtools/emulated_devices/optimized/google-nexus-5x-vertical-default-2x.avif +0 -0
  484. package/lib/devtools/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-1x.avif +0 -0
  485. package/lib/devtools/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-2x.avif +0 -0
  486. package/lib/devtools/emulated_devices/optimized/google-nexus-5x-vertical-navigation-1x.avif +0 -0
  487. package/lib/devtools/emulated_devices/optimized/google-nexus-5x-vertical-navigation-2x.avif +0 -0
  488. package/lib/devtools/emulated_devices/optimized/iPad-landscape.avif +0 -0
  489. package/lib/devtools/emulated_devices/optimized/iPad-portrait.avif +0 -0
  490. package/lib/devtools/emulated_devices/optimized/iPhone5-landscape.avif +0 -0
  491. package/lib/devtools/emulated_devices/optimized/iPhone5-portrait.avif +0 -0
  492. package/lib/devtools/emulated_devices/optimized/iPhone6-landscape.avif +0 -0
  493. package/lib/devtools/emulated_devices/optimized/iPhone6-portrait.avif +0 -0
  494. package/lib/devtools/emulated_devices/optimized/iPhone6Plus-landscape.avif +0 -0
  495. package/lib/devtools/emulated_devices/optimized/iPhone6Plus-portrait.avif +0 -0
  496. package/lib/devtools/emulated_devices/optimized/optimized_images.gni +53 -0
  497. package/lib/devtools/entrypoints/device_mode_emulation_frame/device_mode_emulation_frame.js +4 -0
  498. package/lib/devtools/entrypoints/devtools_app/devtools_app.js +6240 -0
  499. package/lib/devtools/entrypoints/formatter_worker/formatter_worker-entrypoint.js +2810 -0
  500. package/lib/devtools/entrypoints/heap_snapshot_worker/heap_snapshot_worker-entrypoint.js +2142 -0
  501. package/lib/devtools/entrypoints/lighthouse_worker/lighthouse_worker.js +290095 -0
  502. package/lib/devtools/entrypoints/wasmparser_worker/wasmparser_worker-entrypoint.js +3403 -0
  503. package/lib/devtools/models/issues_manager/descriptions/CoepCoopSandboxedIframeCannotNavigateToCoopPage.md +4 -0
  504. package/lib/devtools/models/issues_manager/descriptions/CoepCorpNotSameOrigin.md +8 -0
  505. package/lib/devtools/models/issues_manager/descriptions/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +18 -0
  506. package/lib/devtools/models/issues_manager/descriptions/CoepCorpNotSameSite.md +7 -0
  507. package/lib/devtools/models/issues_manager/descriptions/CoepFrameResourceNeedsCoepHeader.md +10 -0
  508. package/lib/devtools/models/issues_manager/descriptions/CompatibilityModeQuirks.md +5 -0
  509. package/lib/devtools/models/issues_manager/descriptions/CookieAttributeValueExceedsMaxSize.md +5 -0
  510. package/lib/devtools/models/issues_manager/descriptions/LowTextContrast.md +5 -0
  511. package/lib/devtools/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeRead.md +8 -0
  512. package/lib/devtools/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeSet.md +8 -0
  513. package/lib/devtools/models/issues_manager/descriptions/SameSiteExcludeNavigationContextDowngrade.md +8 -0
  514. package/lib/devtools/models/issues_manager/descriptions/SameSiteNoneInsecureErrorRead.md +8 -0
  515. package/lib/devtools/models/issues_manager/descriptions/SameSiteNoneInsecureErrorSet.md +8 -0
  516. package/lib/devtools/models/issues_manager/descriptions/SameSiteNoneInsecureWarnRead.md +8 -0
  517. package/lib/devtools/models/issues_manager/descriptions/SameSiteNoneInsecureWarnSet.md +8 -0
  518. package/lib/devtools/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeRead.md +9 -0
  519. package/lib/devtools/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeSet.md +9 -0
  520. package/lib/devtools/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeRead.md +8 -0
  521. package/lib/devtools/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeSet.md +8 -0
  522. package/lib/devtools/models/issues_manager/descriptions/SameSiteWarnStrictLaxDowngradeStrict.md +8 -0
  523. package/lib/devtools/models/issues_manager/descriptions/arInsecureContext.md +7 -0
  524. package/lib/devtools/models/issues_manager/descriptions/arInvalidInfoHeader.md +5 -0
  525. package/lib/devtools/models/issues_manager/descriptions/arInvalidRegisterOsSourceHeader.md +5 -0
  526. package/lib/devtools/models/issues_manager/descriptions/arInvalidRegisterOsTriggerHeader.md +5 -0
  527. package/lib/devtools/models/issues_manager/descriptions/arInvalidRegisterSourceHeader.md +5 -0
  528. package/lib/devtools/models/issues_manager/descriptions/arInvalidRegisterTriggerHeader.md +5 -0
  529. package/lib/devtools/models/issues_manager/descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +5 -0
  530. package/lib/devtools/models/issues_manager/descriptions/arNavigationRegistrationWithoutTransientUserActivation.md +6 -0
  531. package/lib/devtools/models/issues_manager/descriptions/arNoRegisterOsSourceHeader.md +5 -0
  532. package/lib/devtools/models/issues_manager/descriptions/arNoRegisterOsTriggerHeader.md +5 -0
  533. package/lib/devtools/models/issues_manager/descriptions/arNoRegisterSourceHeader.md +5 -0
  534. package/lib/devtools/models/issues_manager/descriptions/arNoRegisterTriggerHeader.md +5 -0
  535. package/lib/devtools/models/issues_manager/descriptions/arNoWebOrOsSupport.md +4 -0
  536. package/lib/devtools/models/issues_manager/descriptions/arOsSourceIgnored.md +18 -0
  537. package/lib/devtools/models/issues_manager/descriptions/arOsTriggerIgnored.md +19 -0
  538. package/lib/devtools/models/issues_manager/descriptions/arPermissionPolicyDisabled.md +8 -0
  539. package/lib/devtools/models/issues_manager/descriptions/arSourceAndTriggerHeaders.md +9 -0
  540. package/lib/devtools/models/issues_manager/descriptions/arSourceIgnored.md +13 -0
  541. package/lib/devtools/models/issues_manager/descriptions/arTriggerIgnored.md +12 -0
  542. package/lib/devtools/models/issues_manager/descriptions/arUntrustworthyReportingOrigin.md +10 -0
  543. package/lib/devtools/models/issues_manager/descriptions/arWebAndOsHeaders.md +11 -0
  544. package/lib/devtools/models/issues_manager/descriptions/bounceTrackingMitigations.md +3 -0
  545. package/lib/devtools/models/issues_manager/descriptions/clientHintMetaTagAllowListInvalidOrigin.md +4 -0
  546. package/lib/devtools/models/issues_manager/descriptions/clientHintMetaTagModifiedHTML.md +4 -0
  547. package/lib/devtools/models/issues_manager/descriptions/connectionAllowlistInvalidAllowlistItemType.md +12 -0
  548. package/lib/devtools/models/issues_manager/descriptions/connectionAllowlistInvalidHeader.md +12 -0
  549. package/lib/devtools/models/issues_manager/descriptions/connectionAllowlistInvalidUrlPattern.md +8 -0
  550. package/lib/devtools/models/issues_manager/descriptions/connectionAllowlistItemNotInnerList.md +12 -0
  551. package/lib/devtools/models/issues_manager/descriptions/connectionAllowlistMoreThanOneList.md +7 -0
  552. package/lib/devtools/models/issues_manager/descriptions/connectionAllowlistReportingEndpointNotToken.md +10 -0
  553. package/lib/devtools/models/issues_manager/descriptions/cookieCrossSiteRedirectDowngrade.md +12 -0
  554. package/lib/devtools/models/issues_manager/descriptions/cookieExcludeBlockedWithinRelatedWebsiteSet.md +4 -0
  555. package/lib/devtools/models/issues_manager/descriptions/cookieExcludeDomainNonAscii.md +11 -0
  556. package/lib/devtools/models/issues_manager/descriptions/cookieExcludePortMismatch.md +8 -0
  557. package/lib/devtools/models/issues_manager/descriptions/cookieExcludeSchemeMismatch.md +7 -0
  558. package/lib/devtools/models/issues_manager/descriptions/cookieExcludeThirdPartyPhaseoutRead.md +6 -0
  559. package/lib/devtools/models/issues_manager/descriptions/cookieExcludeThirdPartyPhaseoutSet.md +6 -0
  560. package/lib/devtools/models/issues_manager/descriptions/cookieWarnDomainNonAscii.md +11 -0
  561. package/lib/devtools/models/issues_manager/descriptions/cookieWarnMetadataGrantRead.md +4 -0
  562. package/lib/devtools/models/issues_manager/descriptions/cookieWarnMetadataGrantSet.md +4 -0
  563. package/lib/devtools/models/issues_manager/descriptions/cookieWarnThirdPartyPhaseoutRead.md +6 -0
  564. package/lib/devtools/models/issues_manager/descriptions/cookieWarnThirdPartyPhaseoutSet.md +6 -0
  565. package/lib/devtools/models/issues_manager/descriptions/corsAllowCredentialsRequired.md +6 -0
  566. package/lib/devtools/models/issues_manager/descriptions/corsDisabledScheme.md +7 -0
  567. package/lib/devtools/models/issues_manager/descriptions/corsDisallowedByMode.md +7 -0
  568. package/lib/devtools/models/issues_manager/descriptions/corsHeaderDisallowedByPreflightResponse.md +5 -0
  569. package/lib/devtools/models/issues_manager/descriptions/corsInvalidHeaderValues.md +7 -0
  570. package/lib/devtools/models/issues_manager/descriptions/corsLocalNetworkAccessPermissionDenied.md +19 -0
  571. package/lib/devtools/models/issues_manager/descriptions/corsMethodDisallowedByPreflightResponse.md +5 -0
  572. package/lib/devtools/models/issues_manager/descriptions/corsNoCorsRedirectModeNotFollow.md +5 -0
  573. package/lib/devtools/models/issues_manager/descriptions/corsOriginMismatch.md +6 -0
  574. package/lib/devtools/models/issues_manager/descriptions/corsPreflightResponseInvalid.md +5 -0
  575. package/lib/devtools/models/issues_manager/descriptions/corsRedirectContainsCredentials.md +5 -0
  576. package/lib/devtools/models/issues_manager/descriptions/corsWildcardOriginNotAllowed.md +8 -0
  577. package/lib/devtools/models/issues_manager/descriptions/cspEvalViolation.md +9 -0
  578. package/lib/devtools/models/issues_manager/descriptions/cspInlineViolation.md +10 -0
  579. package/lib/devtools/models/issues_manager/descriptions/cspTrustedTypesPolicyViolation.md +5 -0
  580. package/lib/devtools/models/issues_manager/descriptions/cspTrustedTypesSinkViolation.md +8 -0
  581. package/lib/devtools/models/issues_manager/descriptions/cspURLViolation.md +10 -0
  582. package/lib/devtools/models/issues_manager/descriptions/deprecation.md +3 -0
  583. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestDnsFetchFailed.md +1 -0
  584. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestDnsInvalidRecord.md +1 -0
  585. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestInvalidEmail.md +1 -0
  586. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestKeyBindingSigningFailed.md +1 -0
  587. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestRpOriginIsOpaque.md +1 -0
  588. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestTokenHttpNotFound.md +1 -0
  589. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidContentType.md +1 -0
  590. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidResponse.md +1 -0
  591. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidSdJwt.md +1 -0
  592. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestTokenMalformedSdJwt.md +1 -0
  593. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestTokenNoResponse.md +1 -0
  594. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestUserLoggedOut.md +1 -0
  595. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestWellKnownAccountsEndpointCrossOrigin.md +1 -0
  596. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestWellKnownHttpNotFound.md +1 -0
  597. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidContentType.md +1 -0
  598. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidResponse.md +1 -0
  599. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestWellKnownIssuanceEndpointCrossOrigin.md +1 -0
  600. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestWellKnownListEmpty.md +1 -0
  601. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingAccountsEndpoint.md +1 -0
  602. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingIssuanceEndpoint.md +1 -0
  603. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestWellKnownNoResponse.md +1 -0
  604. package/lib/devtools/models/issues_manager/descriptions/emailVerificationRequestWellKnownUnsupportedSigningAlgorithm.md +1 -0
  605. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestAccountsHttpNotFound.md +1 -0
  606. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestAccountsInvalidResponse.md +1 -0
  607. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestAccountsNoResponse.md +1 -0
  608. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestApprovalDeclined.md +1 -0
  609. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestCanceled.md +1 -0
  610. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestErrorFetchingSignin.md +1 -0
  611. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestErrorIdToken.md +1 -0
  612. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestIdTokenHttpNotFound.md +1 -0
  613. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidRequest.md +1 -0
  614. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidResponse.md +1 -0
  615. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestIdTokenNoResponse.md +1 -0
  616. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestInvalidSigninResponse.md +1 -0
  617. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestManifestHttpNotFound.md +1 -0
  618. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestManifestInvalidResponse.md +1 -0
  619. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestManifestNoResponse.md +1 -0
  620. package/lib/devtools/models/issues_manager/descriptions/federatedAuthRequestTooManyRequests.md +1 -0
  621. package/lib/devtools/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidAccountsResponse.md +1 -0
  622. package/lib/devtools/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +1 -0
  623. package/lib/devtools/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoAccountSharingPermission.md +1 -0
  624. package/lib/devtools/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoApiPermission.md +1 -0
  625. package/lib/devtools/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +1 -0
  626. package/lib/devtools/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotIframe.md +1 -0
  627. package/lib/devtools/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +1 -0
  628. package/lib/devtools/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSameOrigin.md +1 -0
  629. package/lib/devtools/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSignedInWithIdp.md +1 -0
  630. package/lib/devtools/models/issues_manager/descriptions/fetchingPartitionedBlobURL.md +7 -0
  631. package/lib/devtools/models/issues_manager/descriptions/genericBackUINavigationWouldSkipAd.md +4 -0
  632. package/lib/devtools/models/issues_manager/descriptions/genericFormAriaLabelledByToNonExistingIdError.md +8 -0
  633. package/lib/devtools/models/issues_manager/descriptions/genericFormAutocompleteAttributeEmptyError.md +5 -0
  634. package/lib/devtools/models/issues_manager/descriptions/genericFormDuplicateIdForInputError.md +5 -0
  635. package/lib/devtools/models/issues_manager/descriptions/genericFormEmptyIdAndNameAttributesForInputError.md +5 -0
  636. package/lib/devtools/models/issues_manager/descriptions/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +5 -0
  637. package/lib/devtools/models/issues_manager/descriptions/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +5 -0
  638. package/lib/devtools/models/issues_manager/descriptions/genericFormInputWithNoLabelError.md +5 -0
  639. package/lib/devtools/models/issues_manager/descriptions/genericFormLabelForMatchesNonExistingIdError.md +5 -0
  640. package/lib/devtools/models/issues_manager/descriptions/genericFormLabelForNameError.md +5 -0
  641. package/lib/devtools/models/issues_manager/descriptions/genericFormLabelHasNeitherForNorNestedInputError.md +5 -0
  642. package/lib/devtools/models/issues_manager/descriptions/genericFormModelContextMissingToolDescription.md +5 -0
  643. package/lib/devtools/models/issues_manager/descriptions/genericFormModelContextMissingToolName.md +5 -0
  644. package/lib/devtools/models/issues_manager/descriptions/genericFormModelContextParameterMissingName.md +5 -0
  645. package/lib/devtools/models/issues_manager/descriptions/genericFormModelContextParameterMissingTitleAndDescription.md +5 -0
  646. package/lib/devtools/models/issues_manager/descriptions/genericFormModelContextRequiredParameterMissingName.md +5 -0
  647. package/lib/devtools/models/issues_manager/descriptions/genericNavigationEntryMarkedSkippable.md +7 -0
  648. package/lib/devtools/models/issues_manager/descriptions/genericResponseWasBlockedByORB.md +4 -0
  649. package/lib/devtools/models/issues_manager/descriptions/heavyAd.md +10 -0
  650. package/lib/devtools/models/issues_manager/descriptions/mixedContent.md +5 -0
  651. package/lib/devtools/models/issues_manager/descriptions/navigatingPartitionedBlobURL.md +5 -0
  652. package/lib/devtools/models/issues_manager/descriptions/permissionElementActivationDisabled.md +7 -0
  653. package/lib/devtools/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluder.md +9 -0
  654. package/lib/devtools/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluderParent.md +9 -0
  655. package/lib/devtools/models/issues_manager/descriptions/permissionElementCspFrameAncestorsMissing.md +5 -0
  656. package/lib/devtools/models/issues_manager/descriptions/permissionElementFencedFrameDisallowed.md +5 -0
  657. package/lib/devtools/models/issues_manager/descriptions/permissionElementFontSizeTooLarge.md +5 -0
  658. package/lib/devtools/models/issues_manager/descriptions/permissionElementFontSizeTooSmall.md +5 -0
  659. package/lib/devtools/models/issues_manager/descriptions/permissionElementGeolocationDeprecated.md +5 -0
  660. package/lib/devtools/models/issues_manager/descriptions/permissionElementInsetBoxShadowUnsupported.md +5 -0
  661. package/lib/devtools/models/issues_manager/descriptions/permissionElementInvalidDisplayStyle.md +5 -0
  662. package/lib/devtools/models/issues_manager/descriptions/permissionElementInvalidSizeValue.md +5 -0
  663. package/lib/devtools/models/issues_manager/descriptions/permissionElementInvalidType.md +5 -0
  664. package/lib/devtools/models/issues_manager/descriptions/permissionElementInvalidTypeActivation.md +5 -0
  665. package/lib/devtools/models/issues_manager/descriptions/permissionElementLowContrast.md +5 -0
  666. package/lib/devtools/models/issues_manager/descriptions/permissionElementNonOpaqueColor.md +5 -0
  667. package/lib/devtools/models/issues_manager/descriptions/permissionElementPaddingBottomUnsupported.md +6 -0
  668. package/lib/devtools/models/issues_manager/descriptions/permissionElementPaddingRightUnsupported.md +6 -0
  669. package/lib/devtools/models/issues_manager/descriptions/permissionElementPermissionsPolicyBlocked.md +5 -0
  670. package/lib/devtools/models/issues_manager/descriptions/permissionElementRegistrationFailed.md +5 -0
  671. package/lib/devtools/models/issues_manager/descriptions/permissionElementRequestInProgress.md +5 -0
  672. package/lib/devtools/models/issues_manager/descriptions/permissionElementSecurityChecksFailed.md +5 -0
  673. package/lib/devtools/models/issues_manager/descriptions/permissionElementTypeNotSupported.md +5 -0
  674. package/lib/devtools/models/issues_manager/descriptions/permissionElementUntrustedEvent.md +7 -0
  675. package/lib/devtools/models/issues_manager/descriptions/placeholderDescriptionForInvisibleIssues.md +3 -0
  676. package/lib/devtools/models/issues_manager/descriptions/propertyRuleInvalidNameIssue.md +3 -0
  677. package/lib/devtools/models/issues_manager/descriptions/propertyRuleIssue.md +7 -0
  678. package/lib/devtools/models/issues_manager/descriptions/selectElementAccessibilityDisallowedOptGroupChild.md +7 -0
  679. package/lib/devtools/models/issues_manager/descriptions/selectElementAccessibilityDisallowedSelectChild.md +7 -0
  680. package/lib/devtools/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +3 -0
  681. package/lib/devtools/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentLegendChild.md +3 -0
  682. package/lib/devtools/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentOptionChild.md +3 -0
  683. package/lib/devtools/models/issues_manager/descriptions/selectElementAccessibilityNonPhrasingContentOptionChild.md +3 -0
  684. package/lib/devtools/models/issues_manager/descriptions/selectivePermissionsIntervention.md +7 -0
  685. package/lib/devtools/models/issues_manager/descriptions/sharedArrayBuffer.md +7 -0
  686. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +1 -0
  687. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryUseErrorDictionaryLoadFailure.md +3 -0
  688. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +3 -0
  689. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +1 -0
  690. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +1 -0
  691. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorDisallowedBySettings.md +1 -0
  692. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorExpiredResponse.md +3 -0
  693. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorFeatureDisabled.md +3 -0
  694. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorInsufficientResources.md +1 -0
  695. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidMatchField.md +1 -0
  696. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidStructuredHeader.md +1 -0
  697. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidTTLField.md +1 -0
  698. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorNavigationRequest.md +3 -0
  699. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorNoMatchField.md +1 -0
  700. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonIntegerTTLField.md +1 -0
  701. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonListMatchDestField.md +1 -0
  702. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonSecureContext.md +3 -0
  703. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonStringIdField.md +1 -0
  704. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonStringInMatchDestList.md +1 -0
  705. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonStringMatchField.md +1 -0
  706. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonTokenTypeField.md +1 -0
  707. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorRequestAborted.md +1 -0
  708. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorShuttingDown.md +1 -0
  709. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorTooLongIdField.md +3 -0
  710. package/lib/devtools/models/issues_manager/descriptions/sharedDictionaryWriteErrorUnsupportedType.md +3 -0
  711. package/lib/devtools/models/issues_manager/descriptions/sriInvalidSignatureHeader.md +14 -0
  712. package/lib/devtools/models/issues_manager/descriptions/sriInvalidSignatureInputHeader.md +15 -0
  713. package/lib/devtools/models/issues_manager/descriptions/sriMissingSignatureHeader.md +8 -0
  714. package/lib/devtools/models/issues_manager/descriptions/sriMissingSignatureInputHeader.md +7 -0
  715. package/lib/devtools/models/issues_manager/descriptions/sriSignatureHeaderValueIsIncorrectLength.md +11 -0
  716. package/lib/devtools/models/issues_manager/descriptions/sriSignatureHeaderValueIsNotByteSequence.md +14 -0
  717. package/lib/devtools/models/issues_manager/descriptions/sriSignatureHeaderValueIsParameterized.md +15 -0
  718. package/lib/devtools/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentName.md +8 -0
  719. package/lib/devtools/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentType.md +13 -0
  720. package/lib/devtools/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +4 -0
  721. package/lib/devtools/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +5 -0
  722. package/lib/devtools/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidParameter.md +11 -0
  723. package/lib/devtools/models/issues_manager/descriptions/sriSignatureInputHeaderKeyIdLength.md +12 -0
  724. package/lib/devtools/models/issues_manager/descriptions/sriSignatureInputHeaderMissingLabel.md +6 -0
  725. package/lib/devtools/models/issues_manager/descriptions/sriSignatureInputHeaderMissingRequiredParameters.md +8 -0
  726. package/lib/devtools/models/issues_manager/descriptions/sriSignatureInputHeaderValueMissingComponents.md +11 -0
  727. package/lib/devtools/models/issues_manager/descriptions/sriSignatureInputHeaderValueNotInnerList.md +11 -0
  728. package/lib/devtools/models/issues_manager/descriptions/sriValidationFailedIntegrityMismatch.md +10 -0
  729. package/lib/devtools/models/issues_manager/descriptions/sriValidationFailedInvalidLength.md +5 -0
  730. package/lib/devtools/models/issues_manager/descriptions/sriValidationFailedSignatureExpired.md +6 -0
  731. package/lib/devtools/models/issues_manager/descriptions/sriValidationFailedSignatureMismatch.md +11 -0
  732. package/lib/devtools/models/issues_manager/descriptions/stylesheetLateImport.md +4 -0
  733. package/lib/devtools/models/issues_manager/descriptions/stylesheetRequestFailed.md +3 -0
  734. package/lib/devtools/models/issues_manager/descriptions/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +3 -0
  735. package/lib/devtools/models/issues_manager/descriptions/unencodedDigestIncorrectDigestLength.md +12 -0
  736. package/lib/devtools/models/issues_manager/descriptions/unencodedDigestIncorrectDigestType.md +17 -0
  737. package/lib/devtools/models/issues_manager/descriptions/unencodedDigestMalformedDictionary.md +14 -0
  738. package/lib/devtools/models/issues_manager/descriptions/unencodedDigestUnknownAlgorithm.md +15 -0
  739. package/lib/devtools/models/live-metrics/web-vitals-injected/web-vitals-injected.generated.js +1 -0
  740. package/lib/devtools/panels/recorder/injected/injected.generated.js +1 -0
  741. package/lib/devtools/panels/whats_new/resources/WNDT.md +14 -0
  742. package/lib/devtools/resource-manifest.json +3818 -0
  743. package/lib/devtools/third_party/acorn/package/LICENSE +21 -0
  744. package/lib/devtools/third_party/axe-core/LICENSE +362 -0
  745. package/lib/devtools/third_party/chromium/LICENSE +27 -0
  746. package/lib/devtools/third_party/codemirror/package/LICENSE +21 -0
  747. package/lib/devtools/third_party/codemirror.next/LICENSE +21 -0
  748. package/lib/devtools/third_party/csp_evaluator/package/LICENSE +202 -0
  749. package/lib/devtools/third_party/diff/LICENSE +202 -0
  750. package/lib/devtools/third_party/i18n/LICENSE +202 -0
  751. package/lib/devtools/third_party/intl-messageformat/LICENSE +33 -0
  752. package/lib/devtools/third_party/intl-messageformat/package/LICENSE.md +33 -0
  753. package/lib/devtools/third_party/json5/LICENSE +23 -0
  754. package/lib/devtools/third_party/legacy-javascript/LICENSE +202 -0
  755. package/lib/devtools/third_party/lighthouse/LICENSE +202 -0
  756. package/lib/devtools/third_party/lit/LICENSE +28 -0
  757. package/lib/devtools/third_party/marked/LICENSE +39 -0
  758. package/lib/devtools/third_party/marked/package/LICENSE.md +44 -0
  759. package/lib/devtools/third_party/puppeteer/LICENSE +202 -0
  760. package/lib/devtools/third_party/puppeteer/third_party/mitt/LICENSE +21 -0
  761. package/lib/devtools/third_party/puppeteer/third_party/parsel/LICENSE +21 -0
  762. package/lib/devtools/third_party/puppeteer/third_party/rxjs/LICENSE +201 -0
  763. package/lib/devtools/third_party/puppeteer-replay/package/LICENSE +202 -0
  764. package/lib/devtools/third_party/source-map-scopes-codec/LICENSE +26 -0
  765. package/lib/devtools/third_party/source-map-scopes-codec/package/LICENSE +26 -0
  766. package/lib/devtools/third_party/third-party-web/LICENSE +20 -0
  767. package/lib/devtools/third_party/third-party-web/package/LICENSE +20 -0
  768. package/lib/devtools/third_party/vscode.web-custom-data/package/LICENSE.md +21 -0
  769. package/lib/devtools/third_party/wasmparser/package/LICENSE +177 -0
  770. package/lib/devtools/third_party/web-vitals/package/LICENSE +202 -0
  771. package/lib/index.js +2554 -0
  772. package/lib/types/client/bottom/keyboard.d.ts +10 -0
  773. package/lib/types/client/bottom/locales.d.ts +17 -0
  774. package/lib/types/client/bottom/page.d.ts +10 -0
  775. package/lib/types/client/bottom/resize.d.ts +12 -0
  776. package/lib/types/client/bridge/controller.d.ts +10 -0
  777. package/lib/types/client/bridge/dispatcher.d.ts +26 -0
  778. package/lib/types/client/bridge/lifecycle.d.ts +22 -0
  779. package/lib/types/client/bridge/locales.d.ts +3 -0
  780. package/lib/types/client/bridge/publisher.d.ts +42 -0
  781. package/lib/types/client/bridge/rpc.d.ts +13 -0
  782. package/lib/types/client/bridge/transport.d.ts +41 -0
  783. package/lib/types/client/cdp/console.d.ts +45 -0
  784. package/lib/types/client/cdp/debugger.d.ts +8 -0
  785. package/lib/types/client/cdp/errors.d.ts +8 -0
  786. package/lib/types/client/cdp/heap-profiler.d.ts +8 -0
  787. package/lib/types/client/cdp/index.d.ts +10 -0
  788. package/lib/types/client/cdp/objects.d.ts +69 -0
  789. package/lib/types/client/cdp/profiler.d.ts +8 -0
  790. package/lib/types/client/cdp/properties.d.ts +16 -0
  791. package/lib/types/client/cdp/runtime.d.ts +79 -0
  792. package/lib/types/client/cdp/sources.d.ts +53 -0
  793. package/lib/types/client/cdp/stack.d.ts +27 -0
  794. package/lib/types/client/index.d.ts +3 -0
  795. package/lib/types/client/inspection/cordis.d.ts +3 -0
  796. package/lib/types/client/inspection/network.d.ts +4 -0
  797. package/lib/types/client/inspection/realm.d.ts +27 -0
  798. package/lib/types/client/plugin.d.ts +29 -0
  799. package/lib/types/host/bridge/controller.d.ts +108 -0
  800. package/lib/types/host/bridge/dispatcher.d.ts +16 -0
  801. package/lib/types/host/bridge/lifecycle.d.ts +42 -0
  802. package/lib/types/host/bridge/publisher.d.ts +31 -0
  803. package/lib/types/host/bridge/rpc.d.ts +15 -0
  804. package/lib/types/host/bridge/transport.d.ts +28 -0
  805. package/lib/types/host/cdp/console.d.ts +14 -0
  806. package/lib/types/host/cdp/debugger.d.ts +8 -0
  807. package/lib/types/host/cdp/errors.d.ts +6 -0
  808. package/lib/types/host/cdp/heap-profiler.d.ts +8 -0
  809. package/lib/types/host/cdp/index.d.ts +10 -0
  810. package/lib/types/host/cdp/objects.d.ts +8 -0
  811. package/lib/types/host/cdp/profiler.d.ts +8 -0
  812. package/lib/types/host/cdp/properties.d.ts +7 -0
  813. package/lib/types/host/cdp/runtime.d.ts +16 -0
  814. package/lib/types/host/cdp/sources.d.ts +14 -0
  815. package/lib/types/host/cdp/stack.d.ts +4 -0
  816. package/lib/types/host/index.d.ts +3 -0
  817. package/lib/types/host/inspection/cordis.d.ts +3 -0
  818. package/lib/types/host/inspection/network.d.ts +23 -0
  819. package/lib/types/host/inspection/realm.d.ts +9 -0
  820. package/lib/types/host/plugin.d.ts +19 -0
  821. package/lib/types/index.d.ts +50 -0
  822. package/lib/types/shared/bridge/buffer.d.ts +62 -0
  823. package/lib/types/shared/bridge/codec.d.ts +4 -0
  824. package/lib/types/shared/bridge/control-codec.d.ts +27 -0
  825. package/lib/types/shared/bridge/ids.d.ts +19 -0
  826. package/lib/types/shared/bridge/messages/control.d.ts +64 -0
  827. package/lib/types/shared/bridge/messages/cordis.d.ts +4 -0
  828. package/lib/types/shared/bridge/messages/network.d.ts +4 -0
  829. package/lib/types/shared/bridge/messages/observation.d.ts +110 -0
  830. package/lib/types/shared/bridge/messages/query/codec.d.ts +40 -0
  831. package/lib/types/shared/bridge/messages/query/commands.d.ts +35 -0
  832. package/lib/types/shared/bridge/messages/query/frames.d.ts +31 -0
  833. package/lib/types/shared/bridge/messages/query/index.d.ts +5 -0
  834. package/lib/types/shared/bridge/messages/runtime/command-codec.d.ts +9 -0
  835. package/lib/types/shared/bridge/messages/runtime/commands.d.ts +76 -0
  836. package/lib/types/shared/bridge/messages/runtime/console-frames.d.ts +52 -0
  837. package/lib/types/shared/bridge/messages/runtime/frames.d.ts +98 -0
  838. package/lib/types/shared/bridge/messages/runtime/index.d.ts +5 -0
  839. package/lib/types/shared/bridge/messages/runtime/value-codec.d.ts +28 -0
  840. package/lib/types/shared/bridge/messages/sources/codec.d.ts +15 -0
  841. package/lib/types/shared/bridge/messages/sources/commands.d.ts +42 -0
  842. package/lib/types/shared/bridge/messages/sources/frames.d.ts +67 -0
  843. package/lib/types/shared/bridge/messages/sources/index.d.ts +5 -0
  844. package/lib/types/shared/bridge/publisher.d.ts +33 -0
  845. package/lib/types/shared/bridge/query-reader.d.ts +10 -0
  846. package/lib/types/shared/bridge/rpc.d.ts +62 -0
  847. package/lib/types/shared/bridge/validation.d.ts +3 -0
  848. package/lib/types/shared/bridge/version.d.ts +3 -0
  849. package/lib/types/shared/cdp/capabilities.d.ts +17 -0
  850. package/lib/types/shared/cdp/console.d.ts +28 -0
  851. package/lib/types/shared/cdp/debugger.d.ts +69 -0
  852. package/lib/types/shared/cdp/errors.d.ts +27 -0
  853. package/lib/types/shared/cdp/ids.d.ts +9 -0
  854. package/lib/types/shared/cdp/index.d.ts +11 -0
  855. package/lib/types/shared/cdp/operations.d.ts +86 -0
  856. package/lib/types/shared/cdp/property.d.ts +28 -0
  857. package/lib/types/shared/cdp/realm.d.ts +137 -0
  858. package/lib/types/shared/cdp/remote-object.d.ts +44 -0
  859. package/lib/types/shared/cdp/sources.d.ts +18 -0
  860. package/lib/types/shared/cordis/collector.d.ts +26 -0
  861. package/lib/types/shared/cordis/ids.d.ts +7 -0
  862. package/lib/types/shared/cordis/model.d.ts +61 -0
  863. package/lib/types/shared/cordis/object-reference.d.ts +14 -0
  864. package/lib/types/shared/cordis/object-registry.d.ts +80 -0
  865. package/lib/types/shared/cordis/observer.d.ts +15 -0
  866. package/lib/types/shared/cordis/projector.d.ts +34 -0
  867. package/lib/types/shared/cordis/publisher.d.ts +13 -0
  868. package/lib/types/shared/cordis/reader.d.ts +18 -0
  869. package/lib/types/shared/cordis/snapshot.d.ts +39 -0
  870. package/lib/types/shared/dispose.d.ts +11 -0
  871. package/lib/types/shared/identity.d.ts +12 -0
  872. package/lib/types/shared/index.d.ts +18 -0
  873. package/lib/types/shared/json.d.ts +35 -0
  874. package/lib/types/shared/network/event-source.d.ts +20 -0
  875. package/lib/types/shared/network/observation.d.ts +52 -0
  876. package/lib/types/shared/service.d.ts +23 -0
  877. package/lib/types/shared/validation.d.ts +52 -0
  878. package/lib/types/shared/web.d.ts +16 -0
  879. package/lib/types/worker/bridge/endpoint.d.ts +49 -0
  880. package/lib/types/worker/bridge/hub.d.ts +108 -0
  881. package/lib/types/worker/bridge/runtime-rpc.d.ts +90 -0
  882. package/lib/types/worker/bridge/session.d.ts +15 -0
  883. package/lib/types/worker/bridge/source-rpc.d.ts +42 -0
  884. package/lib/types/worker/cdp/domains/debugger/cdp-params.d.ts +15 -0
  885. package/lib/types/worker/cdp/domains/debugger/index.d.ts +6 -0
  886. package/lib/types/worker/cdp/domains/debugger/projector.d.ts +22 -0
  887. package/lib/types/worker/cdp/domains/debugger/script-registry.d.ts +70 -0
  888. package/lib/types/worker/cdp/domains/debugger/session.d.ts +47 -0
  889. package/lib/types/worker/cdp/domains/dom/index.d.ts +4 -0
  890. package/lib/types/worker/cdp/domains/dom/model.d.ts +121 -0
  891. package/lib/types/worker/cdp/domains/dom/session.d.ts +78 -0
  892. package/lib/types/worker/cdp/domains/native.d.ts +25 -0
  893. package/lib/types/worker/cdp/domains/network/session.d.ts +46 -0
  894. package/lib/types/worker/cdp/domains/runtime/cdp-params.d.ts +82 -0
  895. package/lib/types/worker/cdp/domains/runtime/index.d.ts +3 -0
  896. package/lib/types/worker/cdp/domains/runtime/object-table.d.ts +117 -0
  897. package/lib/types/worker/cdp/domains/runtime/session.d.ts +97 -0
  898. package/lib/types/worker/cdp/ids.d.ts +37 -0
  899. package/lib/types/worker/cdp/protocol.d.ts +46 -0
  900. package/lib/types/worker/cdp/realm-sessions.d.ts +67 -0
  901. package/lib/types/worker/cdp/session.d.ts +39 -0
  902. package/lib/types/worker/cdp/target.d.ts +17 -0
  903. package/lib/types/worker/entry.d.ts +3 -0
  904. package/lib/types/worker/inspection/cordis-query.d.ts +11 -0
  905. package/lib/types/worker/inspection/cordis-store.d.ts +94 -0
  906. package/lib/types/worker/inspection/network-store.d.ts +110 -0
  907. package/lib/types/worker/inspection/query-router.d.ts +78 -0
  908. package/lib/types/worker/inspection/realm-store.d.ts +58 -0
  909. package/lib/types/worker/inspection/realm.d.ts +43 -0
  910. package/lib/types/worker/realms/client/bridge.d.ts +18 -0
  911. package/lib/types/worker/realms/client/console.d.ts +21 -0
  912. package/lib/types/worker/realms/client/debugger.d.ts +8 -0
  913. package/lib/types/worker/realms/client/index.d.ts +18 -0
  914. package/lib/types/worker/realms/client/runtime.d.ts +28 -0
  915. package/lib/types/worker/realms/client/scripts.d.ts +15 -0
  916. package/lib/types/worker/realms/client/sources.d.ts +30 -0
  917. package/lib/types/worker/realms/client/values.d.ts +55 -0
  918. package/lib/types/worker/realms/host/bridge.d.ts +49 -0
  919. package/lib/types/worker/realms/host/console.d.ts +25 -0
  920. package/lib/types/worker/realms/host/debugger.d.ts +25 -0
  921. package/lib/types/worker/realms/host/index.d.ts +13 -0
  922. package/lib/types/worker/realms/host/runtime.d.ts +54 -0
  923. package/lib/types/worker/realms/host/scripts.d.ts +9 -0
  924. package/lib/types/worker/realms/host/sources.d.ts +26 -0
  925. package/lib/types/worker/realms/host/values.d.ts +22 -0
  926. package/lib/types/worker/server.d.ts +16 -0
  927. package/lib/worker.js +7289 -0
  928. package/locale/en.json +6 -0
  929. package/locale/zh.json +6 -0
  930. package/package.json +90 -3
@@ -0,0 +1,4608 @@
1
+ import { n as e } from "./chunk-DF993M8W.js";
2
+ import { $ as t, G as n, K as r, Ot as i, Tt as a, Y as o, _t as s, gt as c, v as l, xt as u } from "./platform-BzB373NB.js";
3
+ import { $ as d, At as f, Dt as p, Et as m, F as ee, Ft as h, Ot as te, at as ne, bt as g, d as re, ft as ie, ht as ae, jt as _, mt as oe, n as se, wt as v } from "./common-qd_KLeYO.js";
4
+ import { $i as ce, $n as le, Ad as ue, C as de, Cl as fe, Cs as pe, D as me, Dt as he, El as y, Fo as ge, Ho as _e, Hr as ve, Jt as ye, Md as b, Mo as be, O as xe, Or as Se, Po as Ce, Qn as we, Qs as Te, Ss as Ee, St as De, Tl as x, Ur as S, Xi as Oe, Xn as C, Xr as ke, Yn as Ae, Yo as je, Zl as Me, _ as Ne, _o as Pe, _r as Fe, bn as Ie, br as Le, ct as Re, ei as w, er as ze, fa as T, fo as Be, gr as Ve, hn as He, i as Ue, ja as We, jo as Ge, kr as Ke, mf as qe, mo as Je, n as Ye, na as Xe, ni as Ze, no as Qe, o as $e, pf as et, qa as tt, rc as nt, rl as rt, rn as it, so as at, tl as ot, tn as st, ui as ct, un as lt, ur as ut, ut as dt, wl as ft, wn as pt, ws as mt, x as ht, xn as gt, yr as _t } from "./legacy-Bqn4Q0Tf.js";
5
+ import { a as vt, o as yt, s as bt, t as xt } from "./bindings-DgoVEdsr.js";
6
+ import { C as E } from "./common-DjRFwulW.js";
7
+ import { t as St } from "./object_ui-BYgPTK_b.js";
8
+ import { $t as Ct, en as wt } from "./snackbars-lPThuWYs.js";
9
+ import { n as D, t as Tt } from "./theme_support-CbSSLkbO.js";
10
+ import { t as Et } from "./objectValue.css-C9o9fdM2.js";
11
+ import { c as Dt, d as O, l as Ot, n as kt, u as k } from "./data_grid-pC5qqfsJ.js";
12
+ import { n as At } from "./settings_ui-CzxAFzIb.js";
13
+ import { m as jt } from "./elements-Dbx4q9-v.js";
14
+ import { A as Mt, E as Nt, F as Pt, L as Ft, O as It, c as Lt, d as Rt, u as zt } from "./perf_ui-CQMkYfn3.js";
15
+ import { c as Bt, f as Vt, h as Ht, l as Ut, n as Wt, o as A, p as j, u as Gt, v as Kt, y as qt } from "./heap_snapshot-CZt2KUPL.js";
16
+ //#region node_modules/.pnpm/chrome-devtools-frontend@1.0.1638082/node_modules/chrome-devtools-frontend/front_end/panels/profiler/ProfileDataGrid.ts
17
+ var Jt = /* @__PURE__ */ e({
18
+ ProfileDataGridNode: () => M,
19
+ ProfileDataGridTree: () => Qt
20
+ }), Yt = {
21
+ notOptimizedS: "Not optimized: {PH1}",
22
+ genericTextTwoPlaceholders: "{PH1}, {PH2}"
23
+ }, Xt = v("panels/profiler/ProfileDataGrid.ts", Yt), Zt = g.bind(void 0, Xt), M = class e extends Ot {
24
+ searchMatchedSelfColumn;
25
+ searchMatchedTotalColumn;
26
+ searchMatchedFunctionColumn;
27
+ profileNode;
28
+ tree;
29
+ childrenByCallUID;
30
+ lastComparator;
31
+ callUID;
32
+ self;
33
+ total;
34
+ functionName;
35
+ deoptReason;
36
+ url;
37
+ linkElement;
38
+ populated;
39
+ savedSelf;
40
+ savedTotal;
41
+ savedChildren;
42
+ constructor(e, t, n) {
43
+ super(null, n), this.searchMatchedSelfColumn = !1, this.searchMatchedTotalColumn = !1, this.searchMatchedFunctionColumn = !1, this.profileNode = e, this.tree = t, this.childrenByCallUID = /* @__PURE__ */ new Map(), this.lastComparator = null, this.callUID = e.callUID, this.self = e.self, this.total = e.total, this.functionName = it(e.functionName), this.deoptReason = e.deoptReason || "", this.url = e.url, this.linkElement = null, this.populated = !1;
44
+ }
45
+ static sort(e, t, n) {
46
+ for (let r = 0; r < e.length; ++r) {
47
+ let i = e[r], a = i.length;
48
+ for (let r = 0; r < a; ++r) {
49
+ let a = i[r];
50
+ if (!n && (!a.expanded || a.lastComparator === t)) {
51
+ a.children.length && (a.shouldRefreshChildren = !0);
52
+ continue;
53
+ }
54
+ a.lastComparator = t;
55
+ let o = a.children, s = o.length;
56
+ if (s) {
57
+ o.sort(t);
58
+ for (let e = 0; e < s; ++e) o[e].recalculateSiblings(e);
59
+ e.push(o);
60
+ }
61
+ }
62
+ }
63
+ }
64
+ static merge(e, t, n) {
65
+ e.self += t.self, n || (e.total += t.total);
66
+ let r = e.children.slice();
67
+ e.removeChildren();
68
+ let i = r.length;
69
+ for (let a = 0; a < i; ++a) (!n || r[a] !== t) && e.appendChild(r[a]);
70
+ r = t.children.slice(), i = r.length;
71
+ for (let t = 0; t < i; ++t) {
72
+ let n = r[t], i = e.childrenByCallUID.get(n.callUID);
73
+ i ? i.merge(n, !1) : e.appendChild(n);
74
+ }
75
+ }
76
+ static populate(e) {
77
+ if (e.populated) return;
78
+ e.populated = !0, e.populateChildren();
79
+ let t = e.tree.lastComparator;
80
+ t && e.sort(t, !0);
81
+ }
82
+ createCell(e) {
83
+ switch (e) {
84
+ case "self": {
85
+ let t = this.createValueCell(this.self, this.selfPercent, e);
86
+ return t.classList.toggle("highlight", this.searchMatchedSelfColumn), t;
87
+ }
88
+ case "total": {
89
+ let t = this.createValueCell(this.total, this.totalPercent, e);
90
+ return t.classList.toggle("highlight", this.searchMatchedTotalColumn), t;
91
+ }
92
+ case "function": {
93
+ let t = this.createTD(e);
94
+ if (t.classList.toggle("highlight", this.searchMatchedFunctionColumn), this.deoptReason) {
95
+ t.classList.add("not-optimized");
96
+ let e = new Ge();
97
+ e.name = "warning-filled", e.classList.add("profile-warn-marker", "small"), S.install(e, Zt(Yt.notOptimizedS, { PH1: this.deoptReason })), t.appendChild(e);
98
+ }
99
+ if (gt(t, this.functionName), this.profileNode.scriptId === "0") return t;
100
+ let n = this.tree.formatter.linkifyNode(this);
101
+ return n ? (n.style.maxWidth = "75%", t.appendChild(n), this.linkElement = n, t) : t;
102
+ }
103
+ }
104
+ return super.createCell(e);
105
+ }
106
+ createValueCell(e, t, n) {
107
+ let r = document.createElement("td");
108
+ r.classList.add("numeric-column");
109
+ let i = r.createChild("div", "profile-multiple-values"), a = i.createChild("span");
110
+ a.textContent = this.tree.formatter.formatValue(e, this);
111
+ let o = i.createChild("span", "percent-column"), s = this.tree.formatter.formatPercent(t, this);
112
+ o.textContent = s;
113
+ let c = this.tree.formatter.formatValueAccessibleText(e, this);
114
+ return this.setCellAccessibleName(Zt(Yt.genericTextTwoPlaceholders, {
115
+ PH1: c,
116
+ PH2: s
117
+ }), r, n), r;
118
+ }
119
+ sort(t, n) {
120
+ let r = t;
121
+ return e.sort([[this]], r, n);
122
+ }
123
+ insertChild(e, t) {
124
+ let n = e;
125
+ super.insertChild(n, t), this.childrenByCallUID.set(n.callUID, n);
126
+ }
127
+ removeChild(e) {
128
+ super.removeChild(e), this.childrenByCallUID.delete(e.callUID);
129
+ }
130
+ removeChildren() {
131
+ super.removeChildren(), this.childrenByCallUID.clear();
132
+ }
133
+ findChild(e) {
134
+ return e && this.childrenByCallUID.get(e.callUID) || null;
135
+ }
136
+ get selfPercent() {
137
+ return this.self / this.tree.total * 100;
138
+ }
139
+ get totalPercent() {
140
+ return this.total / this.tree.total * 100;
141
+ }
142
+ populate() {
143
+ e.populate(this);
144
+ }
145
+ populateChildren() {}
146
+ save() {
147
+ this.savedChildren ||= (this.savedSelf = this.self, this.savedTotal = this.total, this.children.slice());
148
+ }
149
+ restore() {
150
+ if (!this.savedChildren) return;
151
+ this.savedSelf && this.savedTotal && (this.self = this.savedSelf, this.total = this.savedTotal), this.removeChildren();
152
+ let e = this.savedChildren, t = e.length;
153
+ for (let n = 0; n < t; ++n) e[n].restore(), this.appendChild(e[n]);
154
+ }
155
+ merge(t, n) {
156
+ e.merge(this, t, n);
157
+ }
158
+ }, Qt = class {
159
+ tree;
160
+ self;
161
+ children;
162
+ formatter;
163
+ searchableView;
164
+ total;
165
+ lastComparator;
166
+ childrenByCallUID;
167
+ deepSearch;
168
+ populated;
169
+ searchResults;
170
+ savedTotal;
171
+ savedChildren;
172
+ searchResultIndex = -1;
173
+ constructor(e, t, n) {
174
+ this.tree = this, this.self = 0, this.children = [], this.formatter = e, this.searchableView = t, this.total = n, this.lastComparator = null, this.childrenByCallUID = /* @__PURE__ */ new Map(), this.deepSearch = !0, this.populated = !1;
175
+ }
176
+ static propertyComparator(e, t) {
177
+ let n = $t[+!!t][e];
178
+ return n || (n = t ? function(t, n) {
179
+ return t[e] < n[e] ? -1 : +(t[e] > n[e]);
180
+ } : function(t, n) {
181
+ return t[e] > n[e] ? -1 : +(t[e] < n[e]);
182
+ }, $t[+!!t][e] = n), n;
183
+ }
184
+ get expanded() {
185
+ return !0;
186
+ }
187
+ appendChild(e) {
188
+ this.insertChild(e, this.children.length);
189
+ }
190
+ focus(e) {}
191
+ exclude(e) {}
192
+ insertChild(e, t) {
193
+ let n = e;
194
+ this.children.splice(t, 0, n), this.childrenByCallUID.set(n.callUID, e);
195
+ }
196
+ removeChildren() {
197
+ this.children = [], this.childrenByCallUID.clear();
198
+ }
199
+ populateChildren() {}
200
+ findChild(e) {
201
+ return e && this.childrenByCallUID.get(e.callUID) || null;
202
+ }
203
+ sort(e, t) {
204
+ return M.sort([[this]], e, t);
205
+ }
206
+ save() {
207
+ this.savedChildren ||= (this.savedTotal = this.total, this.children.slice());
208
+ }
209
+ restore() {
210
+ if (!this.savedChildren) return;
211
+ this.children = this.savedChildren, this.savedTotal && (this.total = this.savedTotal);
212
+ let e = this.children, t = e.length;
213
+ for (let n = 0; n < t; ++n) e[n].restore();
214
+ this.savedChildren = null;
215
+ }
216
+ matchFunction(e) {
217
+ let t = e.query.trim();
218
+ if (!t.length) return null;
219
+ let n = t.startsWith(">"), r = t.startsWith("<"), i = t.startsWith("=") || (n || r) && t.indexOf("=") === 1, a = t.endsWith("%"), o = t.length > 2 && t.endsWith("ms"), s = !o && t.endsWith("s"), c = parseFloat(t);
220
+ (n || r || i) && (c = parseFloat(i && (n || r) ? t.substring(2) : t.substring(1)));
221
+ let u = s ? c * 1e3 : c;
222
+ !isNaN(c) && !(n || r) && (i = !0);
223
+ let d = l(t, "i");
224
+ function f(e) {
225
+ return e.searchMatchedSelfColumn = !1, e.searchMatchedTotalColumn = !1, e.searchMatchedFunctionColumn = !1, a ? (r ? (e.selfPercent < c && (e.searchMatchedSelfColumn = !0), e.totalPercent < c && (e.searchMatchedTotalColumn = !0)) : n && (e.selfPercent > c && (e.searchMatchedSelfColumn = !0), e.totalPercent > c && (e.searchMatchedTotalColumn = !0)), i && (e.selfPercent === c && (e.searchMatchedSelfColumn = !0), e.totalPercent === c && (e.searchMatchedTotalColumn = !0))) : (o || s) && (r ? (e.self < u && (e.searchMatchedSelfColumn = !0), e.total < u && (e.searchMatchedTotalColumn = !0)) : n && (e.self > u && (e.searchMatchedSelfColumn = !0), e.total > u && (e.searchMatchedTotalColumn = !0)), i && (e.self === u && (e.searchMatchedSelfColumn = !0), e.total === u && (e.searchMatchedTotalColumn = !0))), (e.functionName.match(d) || e.url && e.url.match(d)) && (e.searchMatchedFunctionColumn = !0), e.searchMatchedSelfColumn || e.searchMatchedTotalColumn || e.searchMatchedFunctionColumn ? (e.refresh(), !0) : !1;
226
+ }
227
+ return f;
228
+ }
229
+ performSearch(e, t, n) {
230
+ this.onSearchCanceled();
231
+ let r = this.matchFunction(e);
232
+ if (!r) return;
233
+ this.searchResults = [];
234
+ let i = this.deepSearch, a;
235
+ for (a = this.children[0]; a; a = a.traverseNextNode(!i, null, !i)) {
236
+ let e = a;
237
+ if (!e) break;
238
+ r(e) && this.searchResults.push({ profileNode: e });
239
+ }
240
+ this.searchResultIndex = n ? 0 : this.searchResults.length - 1, this.searchableView.updateSearchMatchesCount(this.searchResults.length), this.searchableView.updateCurrentMatchIndex(this.searchResultIndex);
241
+ }
242
+ onSearchCanceled() {
243
+ if (this.searchResults) for (let e = 0; e < this.searchResults.length; ++e) {
244
+ let t = this.searchResults[e].profileNode;
245
+ t.searchMatchedSelfColumn = !1, t.searchMatchedTotalColumn = !1, t.searchMatchedFunctionColumn = !1, t.refresh();
246
+ }
247
+ this.searchResults = [], this.searchResultIndex = -1;
248
+ }
249
+ jumpToNextSearchResult() {
250
+ this.searchResults?.length && (this.searchResultIndex = (this.searchResultIndex + 1) % this.searchResults.length, this.jumpToSearchResult(this.searchResultIndex));
251
+ }
252
+ jumpToPreviousSearchResult() {
253
+ this.searchResults?.length && (this.searchResultIndex = (this.searchResultIndex - 1 + this.searchResults.length) % this.searchResults.length, this.jumpToSearchResult(this.searchResultIndex));
254
+ }
255
+ supportsCaseSensitiveSearch() {
256
+ return !0;
257
+ }
258
+ supportsWholeWordSearch() {
259
+ return !1;
260
+ }
261
+ supportsRegexSearch() {
262
+ return !1;
263
+ }
264
+ jumpToSearchResult(e) {
265
+ let t = this.searchResults[e];
266
+ t && (t.profileNode.revealAndSelect(), this.searchableView.updateCurrentMatchIndex(e));
267
+ }
268
+ }, $t = [{}, {}], en = /* @__PURE__ */ e({
269
+ BottomUpProfileDataGridNode: () => tn,
270
+ BottomUpProfileDataGridTree: () => nn
271
+ }), tn = class e extends M {
272
+ remainingNodeInfos;
273
+ constructor(e, t) {
274
+ super(e, t, e.parent !== null && !!e.parent.parent), this.remainingNodeInfos = [];
275
+ }
276
+ static sharedPopulate(t) {
277
+ if (t.remainingNodeInfos === void 0) return;
278
+ let n = t.remainingNodeInfos, r = n.length;
279
+ for (let i = 0; i < r; ++i) {
280
+ let r = n[i], a = r.ancestor, o = r.focusNode, s = t.findChild(a);
281
+ if (s) {
282
+ let e = r.totalAccountedFor;
283
+ s.self += o.self, e || (s.total += o.total);
284
+ } else s = new e(a, t.tree), a !== o && (s.self = o.self, s.total = o.total), t.appendChild(s);
285
+ let c = a.parent;
286
+ c?.parent && (r.ancestor = c, s.remainingNodeInfos ||= [], s.remainingNodeInfos.push(r));
287
+ }
288
+ delete t.remainingNodeInfos;
289
+ }
290
+ takePropertiesFromProfileDataGridNode(e) {
291
+ this.save(), this.self = e.self, this.total = e.total;
292
+ }
293
+ keepOnlyChild(e) {
294
+ this.save(), this.removeChildren(), this.appendChild(e);
295
+ }
296
+ exclude(e) {
297
+ this.remainingNodeInfos && this.populate(), this.save();
298
+ let t = this.children, n = this.children.length;
299
+ for (; n--;) t[n].exclude(e);
300
+ let r = this.childrenByCallUID.get(e);
301
+ r && this.merge(r, !0);
302
+ }
303
+ restore() {
304
+ super.restore(), this.children.length || this.setHasChildren(this.willHaveChildren(this.profileNode));
305
+ }
306
+ merge(e, t) {
307
+ this.self -= e.self, super.merge(e, t);
308
+ }
309
+ populateChildren() {
310
+ e.sharedPopulate(this);
311
+ }
312
+ willHaveChildren(e) {
313
+ return !!e.parent?.parent;
314
+ }
315
+ }, nn = class extends Qt {
316
+ deepSearch;
317
+ remainingNodeInfos;
318
+ constructor(e, t, n, r) {
319
+ super(e, t, r), this.deepSearch = !1;
320
+ let i = 0, a = [[], [n]], o = /* @__PURE__ */ new Map();
321
+ this.remainingNodeInfos = [];
322
+ for (let e = 0; e < a.length; ++e) {
323
+ let t = a[e], n = a[++e], r = n.length, s = /* @__PURE__ */ new WeakMap();
324
+ for (let e = 0; e < r; ++e) {
325
+ let r = n[e];
326
+ if (s.get(r) || s.set(r, ++i), r.parent) {
327
+ let e = o.get(r.callUID), n = !1;
328
+ if (!e) e = /* @__PURE__ */ new Set(), o.set(r.callUID, e);
329
+ else {
330
+ let r = t.length;
331
+ for (let i = 0; i < r; ++i) {
332
+ let r = s.get(t[i]);
333
+ if (r && e.has(r)) {
334
+ n = !0;
335
+ break;
336
+ }
337
+ }
338
+ }
339
+ let i = s.get(r);
340
+ i && e.add(i), this.remainingNodeInfos.push({
341
+ ancestor: r,
342
+ focusNode: r,
343
+ totalAccountedFor: n
344
+ });
345
+ }
346
+ let c = r.children;
347
+ c.length && (a.push(t.concat([r])), a.push(c));
348
+ }
349
+ }
350
+ return M.populate(this), this;
351
+ }
352
+ focus(e) {
353
+ if (!e) return;
354
+ this.save();
355
+ let t = e, n = e;
356
+ for (; t.parent && t instanceof tn;) t.takePropertiesFromProfileDataGridNode(e), n = t, t = t.parent, t instanceof tn && t.keepOnlyChild(n);
357
+ this.children = [n], this.total = e.total;
358
+ }
359
+ exclude(e) {
360
+ if (!e) return;
361
+ this.save();
362
+ let t = e.callUID, n = this.childrenByCallUID.get(t);
363
+ n && a(this.children, n);
364
+ let r = this.children, i = r.length;
365
+ for (let e = 0; e < i; ++e) r[e].exclude(t);
366
+ this.lastComparator && this.sort(this.lastComparator, !0);
367
+ }
368
+ populateChildren() {
369
+ tn.sharedPopulate(this);
370
+ }
371
+ }, rn = {
372
+ detachedNodes: "Detached nodes",
373
+ nodeSize: "Node count",
374
+ detachedElementsList: "Detached elements list"
375
+ }, an = v("panels/profiler/HeapDetachedElementsDataGrid.ts", rn), on = g.bind(void 0, an), sn = class extends Dt {
376
+ constructor() {
377
+ let e = [];
378
+ e.push({
379
+ id: "detached-node",
380
+ title: on(rn.detachedNodes),
381
+ sortable: !1
382
+ }), e.push({
383
+ id: "detached-node-count",
384
+ title: on(rn.nodeSize),
385
+ sortable: !1,
386
+ disclosure: !0
387
+ }), super({
388
+ displayName: on(rn.detachedElementsList),
389
+ columns: e
390
+ }), this.setStriped(!0);
391
+ }
392
+ }, cn = class extends Ot {
393
+ detachedElementInfo;
394
+ domModel;
395
+ retainedNodeIds = /* @__PURE__ */ new Set();
396
+ constructor(e, t) {
397
+ super(null), this.detachedElementInfo = e, this.domModel = t;
398
+ for (let t of e.retainedNodeIds) this.retainedNodeIds.add(t);
399
+ }
400
+ createCell(e) {
401
+ let t = this.createTD(e);
402
+ switch (e) {
403
+ case "detached-node": {
404
+ let e = rt.create(this.domModel, null, !1, this.detachedElementInfo.treeNode, this.retainedNodeIds);
405
+ return e.detached = !0, this.#t(e, t), t;
406
+ }
407
+ case "detached-node-count": return gt(t, this.#e(this.detachedElementInfo).toString()), t;
408
+ }
409
+ return t;
410
+ }
411
+ #e(e) {
412
+ let t = 1, n = [], r;
413
+ for (n.push(e.treeNode); n.length > 0 && (r = n.shift(), r);) if (r.childNodeCount && (t += r.childNodeCount), r.children) for (let e of r.children) n.push(e);
414
+ return t;
415
+ }
416
+ #t(e, t) {
417
+ let n = new jt();
418
+ n.omitRootDOMNode = !1, n.selectEnabled = !0, n.hideGutter = !0, n.rootDOMNode = e, n.showSelectionOnKeyboardFocus = !0, n.preventTabOrder = !0, n.deindentSingleNode = !0, n.show(t, void 0, !0);
419
+ }
420
+ }, ln = /* @__PURE__ */ e({
421
+ Events: () => P,
422
+ ProfileEvents: () => F,
423
+ ProfileHeader: () => N,
424
+ ProfileType: () => dn,
425
+ StatusUpdate: () => un
426
+ }), N = class extends f {
427
+ #e;
428
+ title;
429
+ uid;
430
+ #t = !1;
431
+ tempFile = null;
432
+ constructor(e, t) {
433
+ super(), this.#e = e, this.title = t, this.uid = e.incrementProfileUid();
434
+ }
435
+ setTitle(e) {
436
+ this.title = e, this.dispatchEventToListeners("ProfileTitleChanged", this);
437
+ }
438
+ profileType() {
439
+ return this.#e;
440
+ }
441
+ updateStatus(e, t) {
442
+ this.dispatchEventToListeners("UpdateStatus", new un(e, t));
443
+ }
444
+ removeTempFile() {
445
+ this.tempFile && this.tempFile.remove();
446
+ }
447
+ dispose() {}
448
+ canSaveToFile() {
449
+ return !1;
450
+ }
451
+ saveToFile() {
452
+ throw Error("Not implemented.");
453
+ }
454
+ loadFromFile(e) {
455
+ throw Error("Not implemented.");
456
+ }
457
+ fromFile() {
458
+ return this.#t;
459
+ }
460
+ setFromFile() {
461
+ this.#t = !0;
462
+ }
463
+ setProfile(e) {}
464
+ }, un = class {
465
+ subtitle;
466
+ wait;
467
+ constructor(e, t) {
468
+ this.subtitle = e, this.wait = t;
469
+ }
470
+ }, P = /* @__PURE__ */ function(e) {
471
+ return e.UPDATE_STATUS = "UpdateStatus", e.PROFILE_TITLE_CHANGED = "ProfileTitleChanged", e;
472
+ }({}), dn = class extends f {
473
+ #e;
474
+ #t;
475
+ profiles = [];
476
+ #n = null;
477
+ #r = 1;
478
+ constructor(e, t) {
479
+ super(), this.#e = e, this.#t = t, window.opener || window.addEventListener("pagehide", this.clearTempStorage.bind(this), !1);
480
+ }
481
+ typeName() {
482
+ return "";
483
+ }
484
+ nextProfileUid() {
485
+ return this.#r;
486
+ }
487
+ incrementProfileUid() {
488
+ return this.#r++;
489
+ }
490
+ hasTemporaryView() {
491
+ return !1;
492
+ }
493
+ fileExtension() {
494
+ return null;
495
+ }
496
+ get buttonTooltip() {
497
+ return "";
498
+ }
499
+ get id() {
500
+ return this.#e;
501
+ }
502
+ get treeItemTitle() {
503
+ return this.#t;
504
+ }
505
+ get name() {
506
+ return this.#t;
507
+ }
508
+ buttonClicked() {
509
+ return !1;
510
+ }
511
+ get description() {
512
+ return "";
513
+ }
514
+ isInstantProfile() {
515
+ return !1;
516
+ }
517
+ isEnabled() {
518
+ return !0;
519
+ }
520
+ getProfiles() {
521
+ return this.profiles.filter((e) => this.#n !== e);
522
+ }
523
+ customContent() {
524
+ return null;
525
+ }
526
+ setCustomContentEnabled(e) {}
527
+ loadFromFile(e) {
528
+ let t = e.name, n = this.fileExtension();
529
+ n && t.endsWith(n) && (t = t.substr(0, t.length - n.length));
530
+ let r = this.createProfileLoadedFromFile(t);
531
+ return r.setFromFile(), this.setProfileBeingRecorded(r), this.addProfile(r), r.loadFromFile(e);
532
+ }
533
+ createProfileLoadedFromFile(e) {
534
+ throw Error("Not implemented");
535
+ }
536
+ addProfile(e) {
537
+ this.profiles.push(e), this.dispatchEventToListeners("add-profile-header", e);
538
+ }
539
+ removeProfile(e) {
540
+ let t = this.profiles.indexOf(e);
541
+ t !== -1 && (this.profiles.splice(t, 1), this.disposeProfile(e));
542
+ }
543
+ clearTempStorage() {
544
+ for (let e = 0; e < this.profiles.length; ++e) this.profiles[e].removeTempFile();
545
+ }
546
+ profileBeingRecorded() {
547
+ return this.#n;
548
+ }
549
+ setProfileBeingRecorded(e) {
550
+ this.#n = e;
551
+ }
552
+ profileBeingRecordedRemoved() {}
553
+ reset() {
554
+ for (let e of this.profiles.slice()) this.disposeProfile(e);
555
+ this.profiles = [], this.#r = 1;
556
+ }
557
+ disposeProfile(e) {
558
+ this.dispatchEventToListeners("remove-profile-header", e), e.dispose(), this.#n === e && (this.profileBeingRecordedRemoved(), this.setProfileBeingRecorded(null));
559
+ }
560
+ }, F = /* @__PURE__ */ function(e) {
561
+ return e.ADD_PROFILE_HEADER = "add-profile-header", e.PROFILE_COMPLETE = "profile-complete", e.REMOVE_PROFILE_HEADER = "remove-profile-header", e.VIEW_UPDATED = "view-updated", e;
562
+ }({}), fn = /* @__PURE__ */ e({
563
+ OverviewCalculator: () => gn,
564
+ OverviewPane: () => _n,
565
+ OverviewPaneEvents: () => vn,
566
+ ProfileFlameChart: () => hn,
567
+ ProfileFlameChartDataProvider: () => mn
568
+ }), pn = null, mn = class e {
569
+ #e;
570
+ maxStackDepthInternal;
571
+ timelineDataInternal;
572
+ entryNodes;
573
+ #t;
574
+ boldFont;
575
+ constructor() {
576
+ this.#e = e.colorGenerator(), this.maxStackDepthInternal = 0, this.timelineDataInternal = null, this.entryNodes = [], this.#t = `${Pt} ${Ft()}`;
577
+ }
578
+ static colorGenerator() {
579
+ return pn || (pn = new h({
580
+ min: 30,
581
+ max: 330
582
+ }, {
583
+ min: 50,
584
+ max: 80,
585
+ count: 5
586
+ }, {
587
+ min: 80,
588
+ max: 90,
589
+ count: 3
590
+ }), pn.setColorForID("(idle)", "hsl(0, 0%, 94%)"), pn.setColorForID("(program)", "hsl(0, 0%, 80%)"), pn.setColorForID("(garbage collector)", "hsl(0, 0%, 80%)")), pn;
591
+ }
592
+ minimumBoundary() {
593
+ throw Error("Not implemented");
594
+ }
595
+ totalTime() {
596
+ throw Error("Not implemented");
597
+ }
598
+ formatValue(e, t) {
599
+ return ie(e, t);
600
+ }
601
+ maxStackDepth() {
602
+ return this.maxStackDepthInternal;
603
+ }
604
+ hasTrackConfigurationMode() {
605
+ return !1;
606
+ }
607
+ timelineData() {
608
+ return this.timelineDataInternal || this.calculateTimelineData();
609
+ }
610
+ calculateTimelineData() {
611
+ throw Error("Not implemented");
612
+ }
613
+ preparePopoverElement(e) {
614
+ throw Error("Not implemented");
615
+ }
616
+ canJumpToEntry(e) {
617
+ return this.entryNodes[e].scriptId !== "0";
618
+ }
619
+ entryTitle(e) {
620
+ let t = this.entryNodes[e];
621
+ return it(t.functionName);
622
+ }
623
+ entryFont(e) {
624
+ let t = "bold " + this.#t;
625
+ return this.entryHasDeoptReason(e) ? t : this.#t;
626
+ }
627
+ entryHasDeoptReason(e) {
628
+ throw Error("Not implemented");
629
+ }
630
+ entryColor(e) {
631
+ let t = this.entryNodes[e];
632
+ return this.#e.colorForID(t.url || (t.scriptId === "0" ? t.functionName : t.scriptId));
633
+ }
634
+ decorateEntry(e, t, n, r, i, a, o) {
635
+ return !1;
636
+ }
637
+ forceDecoration(e) {
638
+ return !1;
639
+ }
640
+ textColor(e) {
641
+ return "#333";
642
+ }
643
+ entryNodesLength() {
644
+ return this.entryNodes.length;
645
+ }
646
+ }, hn = class extends _(w) {
647
+ searchableView;
648
+ overviewPane;
649
+ mainPane;
650
+ entrySelected;
651
+ dataProvider;
652
+ searchResults;
653
+ searchResultIndex = -1;
654
+ constructor(e, t) {
655
+ super(), this.element.id = "cpu-flame-chart", this.searchableView = e, this.overviewPane = new _n(t), this.overviewPane.show(this.element), this.mainPane = new It(t, this.overviewPane), this.mainPane.setBarHeight(15), this.mainPane.setTextBaseline(4), this.mainPane.setTextPadding(2), this.mainPane.show(this.element), this.mainPane.addEventListener(Nt.ENTRY_SELECTED, this.onEntrySelected, this), this.mainPane.addEventListener(Nt.ENTRY_INVOKED, this.onEntryInvoked, this), this.entrySelected = !1, this.mainPane.addEventListener(Nt.CANVAS_FOCUSED, this.onEntrySelected, this), this.overviewPane.addEventListener("WindowChanged", this.onWindowChanged, this), this.dataProvider = t, this.searchResults = [];
656
+ }
657
+ focus() {
658
+ this.mainPane.focus();
659
+ }
660
+ onWindowChanged(e) {
661
+ let { windowTimeLeft: t, windowTimeRight: n } = e.data;
662
+ this.mainPane.setWindowTimes(t, n, !0);
663
+ }
664
+ selectRange(e, t) {
665
+ this.overviewPane.selectRange(e, t);
666
+ }
667
+ onEntrySelected(e) {
668
+ if (e.data) {
669
+ let t = e.data;
670
+ this.mainPane.setSelectedEntry(t), t === -1 ? this.entrySelected = !1 : this.entrySelected = !0;
671
+ } else this.entrySelected ||= (this.mainPane.setSelectedEntry(0), !0);
672
+ }
673
+ onEntryInvoked(e) {
674
+ this.onEntrySelected(e), this.dispatchEventToListeners(Nt.ENTRY_INVOKED, e.data);
675
+ }
676
+ update() {
677
+ this.overviewPane.update(), this.mainPane.update();
678
+ }
679
+ performSearch(e, t, n) {
680
+ let r = l(e.query, e.caseSensitive ? "" : "i"), i = this.searchResultIndex === -1 ? -1 : this.searchResults[this.searchResultIndex];
681
+ this.searchResults = [];
682
+ let a = this.dataProvider.entryNodesLength();
683
+ for (let e = 0; e < a; ++e) this.dataProvider.entryTitle(e).match(r) && this.searchResults.push(e);
684
+ this.searchResults.length ? (this.searchResultIndex = this.searchResults.indexOf(i), this.searchResultIndex === -1 && (this.searchResultIndex = n ? this.searchResults.length - 1 : 0), this.mainPane.setSelectedEntry(this.searchResults[this.searchResultIndex])) : this.onSearchCanceled(), this.searchableView.updateSearchMatchesCount(this.searchResults.length), this.searchableView.updateCurrentMatchIndex(this.searchResultIndex);
685
+ }
686
+ onSearchCanceled() {
687
+ this.mainPane.setSelectedEntry(-1), this.searchResults = [], this.searchResultIndex = -1;
688
+ }
689
+ jumpToNextSearchResult() {
690
+ this.searchResultIndex = (this.searchResultIndex + 1) % this.searchResults.length, this.mainPane.setSelectedEntry(this.searchResults[this.searchResultIndex]), this.searchableView.updateCurrentMatchIndex(this.searchResultIndex);
691
+ }
692
+ jumpToPreviousSearchResult() {
693
+ this.searchResultIndex = (this.searchResultIndex - 1 + this.searchResults.length) % this.searchResults.length, this.mainPane.setSelectedEntry(this.searchResults[this.searchResultIndex]), this.searchableView.updateCurrentMatchIndex(this.searchResultIndex);
694
+ }
695
+ supportsCaseSensitiveSearch() {
696
+ return !0;
697
+ }
698
+ supportsWholeWordSearch() {
699
+ return !1;
700
+ }
701
+ supportsRegexSearch() {
702
+ return !1;
703
+ }
704
+ }, gn = class {
705
+ formatter;
706
+ minimumBoundaries;
707
+ maximumBoundaries;
708
+ xScaleFactor;
709
+ constructor(e) {
710
+ this.formatter = e;
711
+ }
712
+ updateBoundaries(e) {
713
+ this.minimumBoundaries = e.dataProvider.minimumBoundary();
714
+ let t = e.dataProvider.totalTime();
715
+ this.maximumBoundaries = this.minimumBoundaries + t, this.xScaleFactor = e.overviewContainer.clientWidth / t;
716
+ }
717
+ computePosition(e) {
718
+ return (e - this.minimumBoundaries) * this.xScaleFactor;
719
+ }
720
+ formatValue(e, t) {
721
+ return this.formatter(e - this.minimumBoundaries, t);
722
+ }
723
+ maximumBoundary() {
724
+ return this.maximumBoundaries;
725
+ }
726
+ minimumBoundary() {
727
+ return this.minimumBoundaries;
728
+ }
729
+ zeroTime() {
730
+ return this.minimumBoundaries;
731
+ }
732
+ boundarySpan() {
733
+ return this.maximumBoundaries - this.minimumBoundaries;
734
+ }
735
+ }, _n = class extends _(w) {
736
+ overviewContainer;
737
+ overviewCalculator;
738
+ overviewGrid;
739
+ overviewCanvas;
740
+ dataProvider;
741
+ windowTimeLeft;
742
+ windowTimeRight;
743
+ updateTimerId;
744
+ constructor(e) {
745
+ super(), this.element.classList.add("cpu-profile-flame-chart-overview-pane"), this.overviewContainer = this.element.createChild("div", "cpu-profile-flame-chart-overview-container"), this.overviewCalculator = new gn(e.formatValue), this.overviewGrid = new Rt("cpu-profile-flame-chart", this.overviewCalculator), this.overviewGrid.element.classList.add("fill"), this.overviewCanvas = this.overviewContainer.createChild("canvas", "cpu-profile-flame-chart-overview-canvas"), this.overviewContainer.appendChild(this.overviewGrid.element), this.dataProvider = e, this.overviewGrid.addEventListener(zt.WINDOW_CHANGED_WITH_POSITION, this.onWindowChanged, this);
746
+ }
747
+ windowChanged(e, t) {
748
+ this.selectRange(e, t);
749
+ }
750
+ updateRangeSelection(e, t) {}
751
+ updateSelectedGroup(e, t) {}
752
+ selectRange(e, t) {
753
+ let n = this.dataProvider.minimumBoundary(), r = this.dataProvider.totalTime();
754
+ this.overviewGrid.setWindowRatio((e - n) / r, (t - n) / r);
755
+ }
756
+ onWindowChanged(e) {
757
+ let t = {
758
+ windowTimeLeft: e.data.rawStartValue,
759
+ windowTimeRight: e.data.rawEndValue
760
+ };
761
+ this.windowTimeLeft = t.windowTimeLeft, this.windowTimeRight = t.windowTimeRight, this.dispatchEventToListeners("WindowChanged", t);
762
+ }
763
+ timelineData() {
764
+ return this.dataProvider.timelineData();
765
+ }
766
+ onResize() {
767
+ this.scheduleUpdate();
768
+ }
769
+ scheduleUpdate() {
770
+ this.updateTimerId ||= this.element.window().requestAnimationFrame(this.update.bind(this));
771
+ }
772
+ update() {
773
+ this.updateTimerId = 0, this.timelineData() && (this.resetCanvas(this.overviewContainer.clientWidth, this.overviewContainer.clientHeight - 15), this.overviewCalculator.updateBoundaries(this), this.overviewGrid.updateDividers(this.overviewCalculator), this.drawOverviewCanvas());
774
+ }
775
+ drawOverviewCanvas() {
776
+ let e = this.overviewCanvas.width, t = this.overviewCanvas.height, n = this.calculateDrawData(e), r = this.overviewCanvas.getContext("2d");
777
+ if (!r) throw Error("Failed to get canvas context");
778
+ let i = window.devicePixelRatio, a = t / (this.dataProvider.maxStackDepth() * 1.1);
779
+ r.lineWidth = 1, r.translate(.5, .5), r.strokeStyle = "rgba(20,0,0,0.4)", r.fillStyle = "rgba(214,225,254,0.8)", r.moveTo(-1, t + 1), r.lineTo(-1, Math.round(t - n[0] * a - i));
780
+ let o = 0;
781
+ for (let s = 0; s < e; ++s) o = Math.round(t - n[s] * a - i), r.lineTo(s, o);
782
+ r.lineTo(e + 1, o), r.lineTo(e + 1, t + 1), r.fill(), r.stroke(), r.closePath();
783
+ }
784
+ calculateDrawData(e) {
785
+ let t = this.dataProvider, n = this.timelineData(), r = n.entryStartTimes, i = n.entryTotalTimes, a = n.entryLevels, o = r.length, s = this.dataProvider.minimumBoundary(), c = new Uint8Array(e), l = e / t.totalTime();
786
+ for (let e = 0; e < o; ++e) {
787
+ let t = Math.floor((r[e] - s) * l), n = Math.floor((r[e] - s + i[e]) * l);
788
+ for (let r = t; r <= n; ++r) c[r] = Math.max(c[r], a[e] + 1);
789
+ }
790
+ return c;
791
+ }
792
+ resetCanvas(e, t) {
793
+ let n = window.devicePixelRatio;
794
+ this.overviewCanvas.width = e * n, this.overviewCanvas.height = t * n, this.overviewCanvas.style.width = e + "px", this.overviewCanvas.style.height = t + "px";
795
+ }
796
+ }, vn = /* @__PURE__ */ function(e) {
797
+ return e.WINDOW_CHANGED = "WindowChanged", e;
798
+ }({}), yn = /* @__PURE__ */ e({
799
+ TopDownProfileDataGridNode: () => bn,
800
+ TopDownProfileDataGridTree: () => xn
801
+ }), bn = class e extends M {
802
+ remainingChildren;
803
+ constructor(e, t) {
804
+ let n = !!e.children?.length;
805
+ super(e, t, n), this.remainingChildren = e.children;
806
+ }
807
+ static sharedPopulate(t) {
808
+ let n = t.remainingChildren, r = n.length;
809
+ for (let i = 0; i < r; ++i) t.appendChild(new e(n[i], t.tree));
810
+ t.remainingChildren = [];
811
+ }
812
+ static excludeRecursively(t, n) {
813
+ t.remainingChildren.length > 0 && t.populate(), t.save();
814
+ let r = t.children, i = t.children.length;
815
+ for (; i--;) e.excludeRecursively(r[i], n);
816
+ let a = t.childrenByCallUID.get(n);
817
+ a && M.merge(t, a, !0);
818
+ }
819
+ populateChildren() {
820
+ e.sharedPopulate(this);
821
+ }
822
+ }, xn = class extends Qt {
823
+ remainingChildren;
824
+ constructor(e, t, n, r) {
825
+ super(e, t, r), this.remainingChildren = n.children, M.populate(this);
826
+ }
827
+ focus(e) {
828
+ e && (this.save(), e.savePosition(), this.children = [e], this.total = e.total);
829
+ }
830
+ exclude(e) {
831
+ e && (this.save(), bn.excludeRecursively(this, e.callUID), this.lastComparator && this.sort(this.lastComparator, !0));
832
+ }
833
+ restore() {
834
+ this.savedChildren && (this.children[0].restorePosition(), super.restore());
835
+ }
836
+ populateChildren() {
837
+ bn.sharedPopulate(this);
838
+ }
839
+ }, Sn = /* @__PURE__ */ e({
840
+ ProfileView: () => wn,
841
+ ViewTypes: () => Tn,
842
+ WritableProfileHeader: () => En,
843
+ maxLinkLength: () => 30
844
+ }), I = {
845
+ profile: "Profile",
846
+ findByCostMsNameOrFile: "Find by cost (>50ms), name or file",
847
+ function: "Function",
848
+ profiler: "Profiler",
849
+ profileViewMode: "Profile view mode",
850
+ focusSelectedFunction: "Focus selected function",
851
+ excludeSelectedFunction: "Exclude selected function",
852
+ restoreAllFunctions: "Restore all functions",
853
+ chart: "Chart",
854
+ heavyBottomUp: "Heavy (Bottom Up)",
855
+ treeTopDown: "Tree (Top Down)",
856
+ profileD: "Profile {PH1}",
857
+ loadingD: "Loading… {PH1}%",
858
+ fileSReadErrorS: "File ''{PH1}'' read error: {PH2}",
859
+ loading: "Loading…",
860
+ failedToReadFile: "Failed to read file",
861
+ parsing: "Parsing…",
862
+ loaded: "Loaded"
863
+ }, Cn = v("panels/profiler/ProfileView.ts", I), L = g.bind(void 0, Cn), wn = class extends Ye {
864
+ profileInternal;
865
+ searchableViewInternal;
866
+ dataGrid;
867
+ viewSelectComboBox;
868
+ focusButton;
869
+ excludeButton;
870
+ resetButton;
871
+ linkifierInternal;
872
+ nodeFormatter;
873
+ viewType;
874
+ adjustedTotal;
875
+ profileHeader;
876
+ bottomUpProfileDataGridTree;
877
+ topDownProfileDataGridTree;
878
+ currentSearchResultIndex;
879
+ dataProvider;
880
+ flameChart;
881
+ visibleView;
882
+ searchableElement;
883
+ profileDataGridTree;
884
+ constructor() {
885
+ super({
886
+ title: L(I.profile),
887
+ viewId: "profile"
888
+ }), this.profileInternal = null, this.searchableViewInternal = new Ne(this, null), this.searchableViewInternal.setPlaceholder(L(I.findByCostMsNameOrFile)), this.searchableViewInternal.show(this.element);
889
+ let e = [];
890
+ e.push({
891
+ id: "self",
892
+ title: this.columnHeader("self"),
893
+ width: "120px",
894
+ fixedWidth: !0,
895
+ sortable: !0,
896
+ sort: O.Descending
897
+ }), e.push({
898
+ id: "total",
899
+ title: this.columnHeader("total"),
900
+ width: "120px",
901
+ fixedWidth: !0,
902
+ sortable: !0
903
+ }), e.push({
904
+ id: "function",
905
+ title: L(I.function),
906
+ disclosure: !0,
907
+ sortable: !0
908
+ }), this.dataGrid = new Dt({
909
+ displayName: L(I.profiler),
910
+ columns: e
911
+ }), this.dataGrid.addEventListener(k.SORTING_CHANGED, this.sortProfile, this), this.dataGrid.addEventListener(k.SELECTED_NODE, this.nodeSelected.bind(this, !0)), this.dataGrid.addEventListener(k.DESELECTED_NODE, this.nodeSelected.bind(this, !1)), this.dataGrid.setRowContextMenuCallback(this.populateContextMenu.bind(this)), this.viewSelectComboBox = new we(this.changeView.bind(this), L(I.profileViewMode), void 0, "profile-view.selected-view"), this.focusButton = new C(L(I.focusSelectedFunction), "eye", void 0, "profile-view.focus-selected-function"), this.focusButton.setEnabled(!1), this.focusButton.addEventListener(C.Events.CLICK, this.focusClicked, this), this.excludeButton = new C(L(I.excludeSelectedFunction), "cross", void 0, "profile-view.exclude-selected-function"), this.excludeButton.setEnabled(!1), this.excludeButton.addEventListener(C.Events.CLICK, this.excludeClicked, this), this.resetButton = new C(L(I.restoreAllFunctions), "refresh", void 0, "profile-view.restore-all-functions"), this.resetButton.setEnabled(!1), this.resetButton.addEventListener(C.Events.CLICK, this.resetClicked, this), this.linkifierInternal = new E(30);
912
+ }
913
+ static buildPopoverTable(e) {
914
+ let t = document.createElement("table");
915
+ for (let n of e) {
916
+ let e = t.createChild("tr");
917
+ e.createChild("td").textContent = n.title, e.createChild("td").textContent = n.value;
918
+ }
919
+ return t;
920
+ }
921
+ setProfile(e) {
922
+ this.profileInternal = e, this.bottomUpProfileDataGridTree = null, this.topDownProfileDataGridTree = null, this.changeView(), this.refresh();
923
+ }
924
+ profile() {
925
+ return this.profileInternal;
926
+ }
927
+ initialize(e) {
928
+ this.nodeFormatter = e, this.viewType = re.instance().createSetting("profile-view", "Heavy");
929
+ let t = [
930
+ "Flame",
931
+ "Heavy",
932
+ "Tree"
933
+ ], n = new Map([
934
+ ["Flame", L(I.chart)],
935
+ ["Heavy", L(I.heavyBottomUp)],
936
+ ["Tree", L(I.treeTopDown)]
937
+ ]), r = new Map(t.map((e) => [e, this.viewSelectComboBox.createOption(n.get(e), e)])), i = this.viewType.get() || t[0], a = r.get(i) || r.get(t[0]);
938
+ this.viewSelectComboBox.select(a), this.changeView(), this.flameChart && this.flameChart.update();
939
+ }
940
+ focus() {
941
+ this.flameChart ? this.flameChart.focus() : super.focus();
942
+ }
943
+ columnHeader(e) {
944
+ throw Error("Not implemented");
945
+ }
946
+ selectRange(e, t) {
947
+ this.flameChart && this.flameChart.selectRange(e, t);
948
+ }
949
+ async toolbarItems() {
950
+ return [
951
+ this.viewSelectComboBox,
952
+ this.focusButton,
953
+ this.excludeButton,
954
+ this.resetButton
955
+ ];
956
+ }
957
+ getBottomUpProfileDataGridTree() {
958
+ return this.bottomUpProfileDataGridTree ||= new nn(this.nodeFormatter, this.searchableViewInternal, this.profileInternal.root, this.adjustedTotal), this.bottomUpProfileDataGridTree;
959
+ }
960
+ getTopDownProfileDataGridTree() {
961
+ return this.topDownProfileDataGridTree ||= new xn(this.nodeFormatter, this.searchableViewInternal, this.profileInternal.root, this.adjustedTotal), this.topDownProfileDataGridTree;
962
+ }
963
+ populateContextMenu(e, t) {
964
+ let n = t;
965
+ n.linkElement && e.appendApplicableItems(n.linkElement);
966
+ }
967
+ willHide() {
968
+ super.willHide(), this.currentSearchResultIndex = -1;
969
+ }
970
+ refresh() {
971
+ if (!this.profileDataGridTree) return;
972
+ this.dataGrid.rootNode().removeChildren();
973
+ let e = this.profileDataGridTree.children, t = e.length;
974
+ for (let n = 0; n < t; ++n) this.dataGrid.rootNode().appendChild(e[n]);
975
+ }
976
+ refreshVisibleData() {
977
+ let e = this.dataGrid.rootNode().children[0];
978
+ for (; e;) e.refresh(), e = e.traverseNextNode(!1, null, !0);
979
+ }
980
+ searchableView() {
981
+ return this.searchableViewInternal;
982
+ }
983
+ supportsCaseSensitiveSearch() {
984
+ return !0;
985
+ }
986
+ supportsWholeWordSearch() {
987
+ return !1;
988
+ }
989
+ supportsRegexSearch() {
990
+ return !1;
991
+ }
992
+ onSearchCanceled() {
993
+ this.searchableElement && this.searchableElement.onSearchCanceled();
994
+ }
995
+ performSearch(e, t, n) {
996
+ this.searchableElement && this.searchableElement.performSearch(e, t, n);
997
+ }
998
+ jumpToNextSearchResult() {
999
+ this.searchableElement && this.searchableElement.jumpToNextSearchResult();
1000
+ }
1001
+ jumpToPreviousSearchResult() {
1002
+ this.searchableElement && this.searchableElement.jumpToPreviousSearchResult();
1003
+ }
1004
+ linkifier() {
1005
+ return this.linkifierInternal;
1006
+ }
1007
+ createFlameChartDataProvider() {
1008
+ throw Error("Not implemented");
1009
+ }
1010
+ ensureFlameChartCreated() {
1011
+ this.flameChart || (this.dataProvider = this.createFlameChartDataProvider(), this.flameChart = new hn(this.searchableViewInternal, this.dataProvider), this.flameChart.addEventListener(Nt.ENTRY_INVOKED, (e) => {
1012
+ this.onEntryInvoked(e);
1013
+ }));
1014
+ }
1015
+ async onEntryInvoked(e) {
1016
+ if (!this.dataProvider) return;
1017
+ let t = e.data, n = this.dataProvider.entryNodes[t], r = this.profileHeader.debuggerModel;
1018
+ if (!n || !n.scriptId || !r) return;
1019
+ let i = r.scriptForId(n.scriptId);
1020
+ if (!i) return;
1021
+ let a = r.createRawLocation(i, n.lineNumber, n.columnNumber);
1022
+ ne(await bt.instance().rawLocationToUILocation(a));
1023
+ }
1024
+ changeView() {
1025
+ if (!this.profileInternal) return;
1026
+ switch (this.searchableViewInternal.closeSearch(), this.visibleView && this.visibleView.detach(), this.viewType.set(this.viewSelectComboBox.selectedOption().value), this.viewType.get()) {
1027
+ case "Flame":
1028
+ this.ensureFlameChartCreated(), this.visibleView = this.flameChart, this.searchableElement = this.flameChart;
1029
+ break;
1030
+ case "Tree":
1031
+ this.profileDataGridTree = this.getTopDownProfileDataGridTree(), this.sortProfile(), this.visibleView = this.dataGrid.asWidget(), this.searchableElement = this.profileDataGridTree;
1032
+ break;
1033
+ case "Heavy":
1034
+ this.profileDataGridTree = this.getBottomUpProfileDataGridTree(), this.sortProfile(), this.visibleView = this.dataGrid.asWidget(), this.searchableElement = this.profileDataGridTree;
1035
+ break;
1036
+ }
1037
+ let e = this.viewType.get() === "Flame";
1038
+ this.focusButton.setVisible(!e), this.excludeButton.setVisible(!e), this.resetButton.setVisible(!e), this.visibleView && this.visibleView.show(this.searchableViewInternal.element);
1039
+ }
1040
+ nodeSelected(e) {
1041
+ this.focusButton.setEnabled(e), this.excludeButton.setEnabled(e);
1042
+ }
1043
+ focusClicked() {
1044
+ this.dataGrid.selectedNode && (this.resetButton.setEnabled(!0), this.resetButton.element.focus(), this.profileDataGridTree && this.profileDataGridTree.focus(this.dataGrid.selectedNode), this.refresh(), this.refreshVisibleData(), et.actionTaken(qe.CpuProfileNodeFocused));
1045
+ }
1046
+ excludeClicked() {
1047
+ let e = this.dataGrid.selectedNode;
1048
+ e && (this.resetButton.setEnabled(!0), this.resetButton.element.focus(), e.deselect(), this.profileDataGridTree && this.profileDataGridTree.exclude(e), this.refresh(), this.refreshVisibleData(), et.actionTaken(qe.CpuProfileNodeExcluded));
1049
+ }
1050
+ resetClicked() {
1051
+ this.viewSelectComboBox.element.focus(), this.resetButton.setEnabled(!1), this.profileDataGridTree && this.profileDataGridTree.restore(), this.linkifierInternal.reset(), this.refresh(), this.refreshVisibleData();
1052
+ }
1053
+ sortProfile() {
1054
+ if (!this.profileDataGridTree) return;
1055
+ let e = this.dataGrid.isSortOrderAscending(), t = this.dataGrid.sortColumnId(), n = t === "function" ? "functionName" : t || "";
1056
+ this.profileDataGridTree.sort(Qt.propertyComparator(n, e), !1), this.refresh();
1057
+ }
1058
+ }, Tn = /* @__PURE__ */ function(e) {
1059
+ return e.FLAME = "Flame", e.TREE = "Tree", e.HEAVY = "Heavy", e;
1060
+ }({}), En = class extends N {
1061
+ debuggerModel;
1062
+ fileName;
1063
+ jsonifiedProfile;
1064
+ profile;
1065
+ protocolProfileInternal;
1066
+ #e = Promise.withResolvers();
1067
+ constructor(e, t, n) {
1068
+ super(t, n || L(I.profileD, { PH1: t.nextProfileUid() })), this.debuggerModel = e;
1069
+ }
1070
+ onChunkTransferred(e) {
1071
+ this.jsonifiedProfile && this.updateStatus(L(I.loadingD, { PH1: m(this.jsonifiedProfile.length) }));
1072
+ }
1073
+ onError(e) {
1074
+ let t = e.error();
1075
+ t && this.updateStatus(L(I.fileSReadErrorS, {
1076
+ PH1: e.fileName(),
1077
+ PH2: t.message
1078
+ }));
1079
+ }
1080
+ async write(e) {
1081
+ this.jsonifiedProfile += e;
1082
+ }
1083
+ async close() {}
1084
+ dispose() {
1085
+ this.removeTempFile();
1086
+ }
1087
+ canSaveToFile() {
1088
+ return !this.fromFile();
1089
+ }
1090
+ async saveToFile() {
1091
+ await this.#e.promise;
1092
+ let e = new yt();
1093
+ if (!this.fileName) {
1094
+ let e = c(/* @__PURE__ */ new Date()), t = this.profileType().fileExtension();
1095
+ this.fileName = `${this.profileType().typeName()}-${e}${t}`;
1096
+ }
1097
+ if (!await e.open(this.fileName) || !this.tempFile) return;
1098
+ let t = await this.tempFile.read();
1099
+ t && await e.write(t), e.close();
1100
+ }
1101
+ async loadFromFile(e) {
1102
+ this.updateStatus(L(I.loading), !0);
1103
+ let t = new vt(e, 1e7, this.onChunkTransferred.bind(this));
1104
+ if (this.jsonifiedProfile = "", !await t.read(this)) return this.onError(t), Error(L(I.failedToReadFile));
1105
+ this.updateStatus(L(I.parsing), !0);
1106
+ let n = null;
1107
+ try {
1108
+ this.profile = JSON.parse(this.jsonifiedProfile), this.setProfile(this.profile), this.updateStatus(L(I.loaded), !1);
1109
+ } catch (e) {
1110
+ n = e, this.profileType().removeProfile(this);
1111
+ }
1112
+ return this.jsonifiedProfile = null, this.profileType().profileBeingRecorded() === this && this.profileType().setProfileBeingRecorded(null), n;
1113
+ }
1114
+ setProtocolProfile(e) {
1115
+ this.setProfile(e), this.protocolProfileInternal = e, this.tempFile = new xt(), this.tempFile.write([JSON.stringify(e)]), this.#e.resolve();
1116
+ }
1117
+ }, R = {
1118
+ startDetachedElements: "Obtain detached elements",
1119
+ detachedElementsTitle: "Detached elements",
1120
+ detachedElementsDescription: "Detached elements shows objects that are retained by a JS reference.",
1121
+ detachedElementProfile: "Detached elements {PH1}"
1122
+ }, Dn = v("panels/profiler/HeapDetachedElementsView.ts", R), z = g.bind(void 0, Dn), On = class extends Ye {
1123
+ selectedSizeText;
1124
+ dataGrid;
1125
+ profile;
1126
+ parentDataDisplayDelegate;
1127
+ constructor(e, t) {
1128
+ super({
1129
+ title: z(R.detachedElementsTitle),
1130
+ viewId: "detached-elements"
1131
+ }), this.element.classList.add("detached-elements-view"), this.profile = t, this.parentDataDisplayDelegate = e, this.selectedSizeText = new ut(), this.dataGrid = new sn(), this.populateElementsGrid(t.detachedElements), this.dataGrid.asWidget().show(this.element);
1132
+ }
1133
+ showProfile(e) {
1134
+ return this.parentDataDisplayDelegate.showProfile(e);
1135
+ }
1136
+ showObject(e, t) {
1137
+ this.parentDataDisplayDelegate.showObject(e, t);
1138
+ }
1139
+ async linkifyObject() {
1140
+ return null;
1141
+ }
1142
+ populateElementsGrid(e) {
1143
+ if (!e) return;
1144
+ let t = this.profile.heapProfilerModel()?.target().model(ot);
1145
+ if (t) for (let n of e) this.dataGrid.rootNode().appendChild(new cn(n, t));
1146
+ }
1147
+ async toolbarItems() {
1148
+ return [...await super.toolbarItems(), this.selectedSizeText];
1149
+ }
1150
+ }, kn = class extends _(dn) {
1151
+ constructor(e, t) {
1152
+ super(e || z(R.detachedElementsTitle), t || z(R.detachedElementsTitle));
1153
+ }
1154
+ profileBeingRecorded() {
1155
+ return super.profileBeingRecorded();
1156
+ }
1157
+ get buttonTooltip() {
1158
+ return z(R.startDetachedElements);
1159
+ }
1160
+ buttonClicked() {
1161
+ return this.getDetachedElements(), !1;
1162
+ }
1163
+ async getDetachedElements() {
1164
+ if (this.profileBeingRecorded()) return;
1165
+ let e = T.instance().flavor(y), t = e?.target(), n = t?.model(ot);
1166
+ if (!e || !t || !n) return;
1167
+ let r = await n.getDetachedDOMNodes(), i = new An(e, this, r);
1168
+ this.addProfile(i), this.dispatchEventToListeners(F.PROFILE_COMPLETE, i);
1169
+ }
1170
+ get treeItemTitle() {
1171
+ return z(R.detachedElementsTitle);
1172
+ }
1173
+ get description() {
1174
+ return z(R.detachedElementsDescription);
1175
+ }
1176
+ isInstantProfile() {
1177
+ return !0;
1178
+ }
1179
+ static TypeId = "DetachedElements";
1180
+ };
1181
+ (function(e) {
1182
+ e.Events = /* @__PURE__ */ function(e) {
1183
+ return e.RECORDING_STOPPED = "RecordingStopped", e.STATS_UPDATE = "StatsUpdate", e.DETACHED_ELEMENTS_OBTAINED = "DetachedElementsObtained", e;
1184
+ }({});
1185
+ })(kn ||= {});
1186
+ var An = class extends En {
1187
+ #e;
1188
+ detachedElements;
1189
+ constructor(e, t, n, r) {
1190
+ super(e?.debuggerModel() ?? null, t, r || z(R.detachedElementProfile, { PH1: t.nextProfileUid() })), this.detachedElements = n, this.#e = e;
1191
+ }
1192
+ heapProfilerModel() {
1193
+ return this.#e;
1194
+ }
1195
+ profileType() {
1196
+ return super.profileType();
1197
+ }
1198
+ }, jn = "/*\n * Copyright (C) 2009 Google Inc. All rights reserved.\n * Copyright (C) 2010 Apple Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following disclaimer\n * in the documentation and/or other materials provided with the\n * distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n.heap-snapshot-view {\n overflow: hidden;\n}\n\n.heap-snapshot-view .data-grid {\n border: none;\n flex: auto;\n\n .data-container {\n overflow-x: scroll;\n }\n\n .corner {\n width: 100%;\n }\n}\n\n.heap-snapshot-view .data-grid tr:empty {\n height: 16px;\n visibility: hidden;\n}\n\n.heap-snapshot-view .data-grid span.percent-column {\n width: 35px !important; /* stylelint-disable-line declaration-no-important */\n}\n\n.heap-snapshot-view .object-value-object,\n.object-value-node {\n display: inline;\n position: static;\n}\n\n.heap-snapshot-view .object-value-string {\n white-space: nowrap;\n}\n\n.heap-snapshot-view td.object-column .objects-count {\n margin-left: 10px;\n font-size: 11px;\n color: var(--sys-color-token-subtle);\n}\n\n.heap-snapshot-view tr:not(.selected) .object-value-id {\n color: var(--sys-color-token-subtle);\n}\n\n.profile-view .heap-tracking-overview {\n flex: 0 0 80px;\n height: 80px;\n}\n\n.heap-snapshot-view .retaining-paths-view {\n overflow: hidden;\n}\n\n.heap-snapshot-view .heap-snapshot-view-resizer {\n background-color: var(--sys-color-surface1);\n display: flex;\n flex: 0 0 21px;\n}\n\n.heap-snapshot-view td.object-column > div > span {\n margin-right: 6px;\n}\n\n.heap-snapshot-view .heap-snapshot-view-resizer .title {\n flex: 0 1 auto;\n overflow: hidden;\n white-space: nowrap;\n}\n\n.heap-snapshot-view .heap-snapshot-view-resizer .verticalResizerIcon {\n /* stylelint-disable-next-line custom-property-pattern */\n background-image: var(--image-file-toolbarResizerVertical);\n background-repeat: no-repeat;\n background-position: center;\n flex: 0 0 28px;\n margin-left: auto;\n}\n\n.heap-snapshot-view .heap-snapshot-view-resizer .title > span {\n display: inline-block;\n padding-top: 3px;\n vertical-align: middle;\n margin-left: 4px;\n margin-right: 8px;\n}\n\n.heap-snapshot-view .heap-snapshot-view-resizer * {\n pointer-events: none;\n}\n\n.heap-snapshot-view tr:not(.selected) td.object-column span.highlight {\n background-color: inherit;\n}\n\n.heap-snapshot-view td.object-column span.heap-object-source-link {\n float: right;\n\n & > button.text-button.devtools-link {\n background-color: inherit;\n outline-offset: calc(-1 * var(--sys-size-1));\n padding-inline: var(--sys-size-2) !important; /* stylelint-disable-line declaration-no-important */\n }\n}\n\n.heap-snapshot-view td.object-column span.heap-object-source-link:empty {\n animation: fadeInOut 2s infinite;\n}\n\n.heap-snapshot-view td.object-column span.heap-object-source-link:empty::before {\n content: \"\\b7\\b7\";\n font-weight: bold;\n}\n\n@keyframes fadeInOut {\n 0% {\n transform: rotate(0);\n }\n\n 50% {\n transform: rotate(0.5turn);\n }\n\n 100% {\n transform: rotate(1turn);\n }\n}\n\n.heap-object-tag {\n height: 14px;\n width: 14px;\n}\n\n.heap-snapshot-view tr:not(.selected) td.object-column span.heap-object-tag,\n.heap-snapshot-view tr:not(.selected) td.object-column span.grayed {\n color: var(--sys-color-token-subtle);\n}\n\n.heap-snapshot-view tr:not(.selected) .cycled-ancestor-node,\n.heap-snapshot-view tr:not(.selected) .unreachable-ancestor-node {\n opacity: 60%;\n}\n\n#heap-recording-view .profile-view {\n top: 80px;\n}\n\n.heap-overview-container {\n overflow: hidden;\n position: absolute;\n top: 0;\n width: 100%;\n height: 80px;\n}\n\n#heap-recording-overview-grid .resources-dividers-label-bar {\n pointer-events: auto;\n}\n\n.heap-recording-overview-canvas {\n position: absolute;\n inset: 20px 0 0;\n}\n\n.heap-snapshot-statistics-view {\n overflow: auto;\n}\n\n.heap-snapshot-stats-pie-chart {\n margin: 12px 30px;\n flex-shrink: 0;\n}\n\n.heap-allocation-stack .stack-frame {\n display: flex;\n justify-content: space-between;\n border-bottom: 1px solid var(--sys-color-divider);\n padding: 2px;\n}\n\n.heap-allocation-stack .stack-frame:focus {\n background-color: var(--sys-color-tonal-container);\n color: var(--sys-color-on-tonal-container);\n}\n\n.heap-allocation-stack .stack-frame:hover:not(:focus) {\n background-color: var(--sys-color-state-hover-on-subtle);\n}\n\n.heap-allocation-stack .stack-frame .devtools-link {\n color: var(--sys-color-primary);\n}\n\n.no-heap-allocation-stack {\n padding: 5px;\n}\n\n@media (forced-colors: active) {\n .cycled-ancestor-node {\n opacity: 100%;\n }\n\n .heap-snapshot-view td.object-column .objects-count,\n .heap-snapshot-view tr:not(.selected) td.object-column span.heap-object-tag,\n .heap-snapshot-view tr:not(.selected) .object-value-id {\n color: ButtonText;\n }\n}\n\n.detached-elements-view {\n overflow: auto;\n}\n", Mn = /* @__PURE__ */ e({
1199
+ Events: () => Pn,
1200
+ HeapTimelineOverview: () => Nn,
1201
+ OverviewCalculator: () => Ln,
1202
+ Samples: () => In,
1203
+ SmoothScale: () => Fn
1204
+ }), Nn = class extends _(w) {
1205
+ overviewCalculator;
1206
+ overviewContainer;
1207
+ overviewGrid;
1208
+ overviewCanvas;
1209
+ windowLeftRatio;
1210
+ windowRightRatio;
1211
+ yScale;
1212
+ xScale;
1213
+ profileSamples;
1214
+ running;
1215
+ updateOverviewCanvas;
1216
+ updateGridTimerId;
1217
+ updateTimerId;
1218
+ windowWidthRatio;
1219
+ constructor() {
1220
+ super({ jslog: `${Qe("heap-tracking-overview")}` }), this.element.id = "heap-recording-view", this.element.classList.add("heap-tracking-overview"), this.overviewCalculator = new Ln(), this.overviewContainer = this.element.createChild("div", "heap-overview-container"), this.overviewGrid = new Rt("heap-recording", this.overviewCalculator), this.overviewGrid.element.classList.add("fill"), this.overviewCanvas = this.overviewContainer.createChild("canvas", "heap-recording-overview-canvas"), this.overviewContainer.appendChild(this.overviewGrid.element), this.overviewGrid.addEventListener(zt.WINDOW_CHANGED, this.onWindowChanged, this), this.windowLeftRatio = 0, this.windowRightRatio = 1, this.overviewGrid.setWindowRatio(this.windowLeftRatio, this.windowRightRatio), this.yScale = new Fn(), this.xScale = new Fn(), this.profileSamples = new In(), D.instance().addEventListener(Tt.eventName, () => this.update());
1221
+ }
1222
+ start() {
1223
+ this.running = !0;
1224
+ let e = () => {
1225
+ this.update(), this.running && this.element.window().requestAnimationFrame(e);
1226
+ };
1227
+ e();
1228
+ }
1229
+ stop() {
1230
+ this.running = !1;
1231
+ }
1232
+ setSamples(e) {
1233
+ this.profileSamples = e, this.running || this.update();
1234
+ }
1235
+ drawOverviewCanvas(e, t) {
1236
+ if (!this.profileSamples) return;
1237
+ let n = this.profileSamples, r = n.sizes, i = n.max, a = n.timestamps, o = a[0], s = this.xScale.nextScale(e / n.totalTime), c = 0;
1238
+ function l(e, t) {
1239
+ let n = 0, r = 0;
1240
+ for (let i = 1; i < a.length; ++i) {
1241
+ let c = Math.floor((a[i] - o) * s);
1242
+ c !== r && (n && t(r, n), n = 0, r = c), n += e[i];
1243
+ }
1244
+ t(r, n);
1245
+ }
1246
+ function u(e, t) {
1247
+ c = Math.max(c, t);
1248
+ }
1249
+ l(r, u);
1250
+ let d = this.yScale.nextScale(c ? t / (c * 1.1) : 0);
1251
+ this.overviewCanvas.width = e * window.devicePixelRatio, this.overviewCanvas.height = t * window.devicePixelRatio, this.overviewCanvas.style.width = e + "px", this.overviewCanvas.style.height = t + "px";
1252
+ let f = this.overviewCanvas.getContext("2d");
1253
+ if (!f) throw Error("Failed to get canvas context");
1254
+ let p = f;
1255
+ if (p.scale(window.devicePixelRatio, window.devicePixelRatio), this.running) {
1256
+ p.beginPath(), p.lineWidth = 2, p.strokeStyle = D.instance().getComputedValue("--sys-color-neutral-outline");
1257
+ let e = (Date.now() - o) * s;
1258
+ p.moveTo(e, t - 1), p.lineTo(e, 0), p.stroke(), p.closePath();
1259
+ }
1260
+ let ee = 0, h;
1261
+ if (d) {
1262
+ let n = (t - 14) / d;
1263
+ h = 1024 ** Math.floor(Math.log(n) / Math.log(1024)), h *= 10 ** Math.floor(Math.log(n / h) / Math.LN10), h * 5 <= n && (h *= 5), ee = Math.round(t - h * d - .5) + .5, p.beginPath(), p.lineWidth = 1, p.strokeStyle = D.instance().getComputedValue("--sys-color-on-surface-subtle"), p.moveTo(0, ee), p.lineTo(e, ee), p.stroke(), p.closePath();
1264
+ }
1265
+ function te(e, n) {
1266
+ p.moveTo(e, t - 1), p.lineTo(e, Math.round(t - n * d - 1));
1267
+ }
1268
+ if (p.beginPath(), p.lineWidth = 2, p.strokeStyle = D.instance().getComputedValue("--sys-color-neutral-outline"), l(i, te), p.stroke(), p.closePath(), p.beginPath(), p.lineWidth = 2, p.strokeStyle = D.instance().getComputedValue("--sys-color-primary-bright"), l(r, te), p.stroke(), p.closePath(), h) {
1269
+ let e = m(h), t = ee - .5, n = 8 + p.measureText(e).width;
1270
+ p.beginPath(), p.textBaseline = "bottom", p.font = "10px " + window.getComputedStyle(this.element, null).getPropertyValue("font-family"), p.fillStyle = D.instance().getComputedValue("--color-background-opacity-80"), p.fillRect(0, t - 14, n, 14), p.fillStyle = D.instance().getComputedValue("--sys-color-on-surface-subtle"), p.fillText(e, 4, t), p.fill(), p.closePath();
1271
+ }
1272
+ }
1273
+ onResize() {
1274
+ this.updateOverviewCanvas = !0, this.scheduleUpdate();
1275
+ }
1276
+ onWindowChanged() {
1277
+ this.updateGridTimerId ||= window.setTimeout(this.updateGrid.bind(this), 10);
1278
+ }
1279
+ scheduleUpdate() {
1280
+ this.updateTimerId ||= window.setTimeout(this.update.bind(this), 10);
1281
+ }
1282
+ updateBoundaries() {
1283
+ this.windowLeftRatio = this.overviewGrid.windowLeftRatio(), this.windowRightRatio = this.overviewGrid.windowRightRatio(), this.windowWidthRatio = this.windowRightRatio - this.windowLeftRatio;
1284
+ }
1285
+ update() {
1286
+ this.updateTimerId = null, this.isShowing() && (this.updateBoundaries(), this.overviewCalculator.updateBoundaries(this), this.overviewGrid.updateDividers(this.overviewCalculator), this.drawOverviewCanvas(this.overviewContainer.clientWidth, this.overviewContainer.clientHeight - 20));
1287
+ }
1288
+ updateGrid() {
1289
+ this.updateGridTimerId = 0, this.updateBoundaries();
1290
+ let e = this.profileSamples.ids;
1291
+ if (!e.length) return;
1292
+ let t = this.profileSamples.timestamps, n = this.profileSamples.sizes, r = t[0], a = this.profileSamples.totalTime, o = r + a * this.windowLeftRatio, c = r + a * this.windowRightRatio, l = u(t, o, s), d = i(t, c, s), f = 0;
1293
+ for (let e = l; e < d; ++e) f += n[e];
1294
+ let p = l > 0 ? e[l - 1] : 0, m = d < e.length ? e[d] : Infinity;
1295
+ this.dispatchEventToListeners("IdsRangeChanged", {
1296
+ minId: p,
1297
+ maxId: m,
1298
+ size: f
1299
+ });
1300
+ }
1301
+ }, Pn = /* @__PURE__ */ function(e) {
1302
+ return e.IDS_RANGE_CHANGED = "IdsRangeChanged", e;
1303
+ }({}), Fn = class {
1304
+ lastUpdate;
1305
+ currentScale;
1306
+ constructor() {
1307
+ this.lastUpdate = 0, this.currentScale = 0;
1308
+ }
1309
+ nextScale(e) {
1310
+ if (e ||= this.currentScale, this.currentScale) {
1311
+ let t = Date.now(), n = t - this.lastUpdate;
1312
+ this.lastUpdate = t;
1313
+ let r = 20 ** (n / 1e3), i = e / this.currentScale;
1314
+ this.currentScale *= o(i, 1 / r, r);
1315
+ } else this.currentScale = e;
1316
+ return this.currentScale;
1317
+ }
1318
+ }, In = class {
1319
+ sizes;
1320
+ ids;
1321
+ timestamps;
1322
+ max;
1323
+ totalTime;
1324
+ constructor() {
1325
+ this.sizes = [], this.ids = [], this.timestamps = [], this.max = [], this.totalTime = 3e4;
1326
+ }
1327
+ }, Ln = class {
1328
+ maximumBoundaries;
1329
+ minimumBoundaries;
1330
+ xScaleFactor;
1331
+ constructor() {
1332
+ this.maximumBoundaries = 0, this.minimumBoundaries = 0, this.xScaleFactor = 0;
1333
+ }
1334
+ updateBoundaries(e) {
1335
+ this.minimumBoundaries = 0, this.maximumBoundaries = e.profileSamples.totalTime, this.xScaleFactor = e.overviewContainer.clientWidth / this.maximumBoundaries;
1336
+ }
1337
+ computePosition(e) {
1338
+ return (e - this.minimumBoundaries) * this.xScaleFactor;
1339
+ }
1340
+ formatValue(e, t) {
1341
+ return oe(e / 1e3, !!t);
1342
+ }
1343
+ maximumBoundary() {
1344
+ return this.maximumBoundaries;
1345
+ }
1346
+ minimumBoundary() {
1347
+ return this.minimumBoundaries;
1348
+ }
1349
+ zeroTime() {
1350
+ return this.minimumBoundaries;
1351
+ }
1352
+ boundarySpan() {
1353
+ return this.maximumBoundaries - this.minimumBoundaries;
1354
+ }
1355
+ }, Rn = /* @__PURE__ */ e({
1356
+ HeapFlameChartDataProvider: () => Yn,
1357
+ HeapProfileView: () => Vn,
1358
+ NodeFormatter: () => Jn,
1359
+ SamplingHeapProfileHeader: () => Gn,
1360
+ SamplingHeapProfileModel: () => qn,
1361
+ SamplingHeapProfileNode: () => Kn,
1362
+ SamplingHeapProfileType: () => Wn,
1363
+ SamplingHeapProfileTypeBase: () => Hn
1364
+ }), B = {
1365
+ selectedSizeS: "Selected size: {PH1}",
1366
+ selfSizeBytes: "Self size",
1367
+ totalSizeBytes: "Total size",
1368
+ stopHeapProfiling: "Stop heap profiling",
1369
+ startHeapProfiling: "Start heap profiling",
1370
+ recording: "Recording…",
1371
+ heapProfilerIsRecording: "Heap profiler is recording",
1372
+ stopping: "Stopping…",
1373
+ allocationSampling: "Allocation sampling",
1374
+ samplingProfiles: "Sampling profiles",
1375
+ recordMemoryAllocations: "Approximate memory allocations by sampling long operations with minimal overhead and get a breakdown by JavaScript execution stack",
1376
+ profileD: "Profile {PH1}",
1377
+ sBytes: "{PH1} bytes",
1378
+ formatPercent: "{PH1}\xA0%",
1379
+ skb: "{PH1}\xA0kB",
1380
+ name: "Name",
1381
+ selfSize: "Self size",
1382
+ totalSize: "Total size",
1383
+ url: "URL",
1384
+ samplingHeapProfilerTimeline: "Sampling heap profiler timeline"
1385
+ }, zn = v("panels/profiler/HeapProfileView.ts", B), V = g.bind(void 0, zn);
1386
+ function Bn(e) {
1387
+ return e.profile || e.protocolProfile();
1388
+ }
1389
+ var Vn = class extends wn {
1390
+ profileHeader;
1391
+ profileType;
1392
+ adjustedTotal;
1393
+ selectedSizeText;
1394
+ timestamps;
1395
+ sizes;
1396
+ max;
1397
+ ordinals;
1398
+ totalTime;
1399
+ lastOrdinal;
1400
+ timelineOverview;
1401
+ constructor(e) {
1402
+ super(), this.profileHeader = e, this.profileType = e.profileType(), this.initialize(new Jn(this));
1403
+ let t = new qn(Bn(e));
1404
+ this.adjustedTotal = t.total, this.setProfile(t), this.selectedSizeText = new ut(), this.timestamps = [], this.sizes = [], this.max = [], this.ordinals = [], this.totalTime = 0, this.lastOrdinal = 0, this.timelineOverview = new Nn(), this.profileType.hasTemporaryView() && (this.timelineOverview.addEventListener(Pn.IDS_RANGE_CHANGED, this.onIdsRangeChanged.bind(this)), this.timelineOverview.show(this.element, this.element.firstChild), this.timelineOverview.start(), this.profileType.addEventListener(Wn.Events.STATS_UPDATE, this.onStatsUpdate, this), this.profileType.once(F.PROFILE_COMPLETE).then(() => {
1405
+ this.profileType.removeEventListener(Wn.Events.STATS_UPDATE, this.onStatsUpdate, this), this.timelineOverview.stop(), this.timelineOverview.updateGrid();
1406
+ }));
1407
+ }
1408
+ async toolbarItems() {
1409
+ return [...await super.toolbarItems(), this.selectedSizeText];
1410
+ }
1411
+ onIdsRangeChanged(e) {
1412
+ let { minId: t, maxId: n } = e.data;
1413
+ this.selectedSizeText.setText(V(B.selectedSizeS, { PH1: m(e.data.size) })), this.setSelectionRange(t, n);
1414
+ }
1415
+ setSelectionRange(e, t) {
1416
+ let n = new qn(Bn(this.profileHeader), e, t);
1417
+ this.adjustedTotal = n.total, this.setProfile(n);
1418
+ }
1419
+ onStatsUpdate(e) {
1420
+ let t = e.data;
1421
+ this.totalTime || (this.timestamps = [], this.sizes = [], this.max = [], this.ordinals = [], this.totalTime = 3e4, this.lastOrdinal = 0), this.sizes.fill(0), this.sizes.push(0), this.timestamps.push(Date.now()), this.ordinals.push(this.lastOrdinal + 1);
1422
+ for (let e of t?.samples ?? []) {
1423
+ this.lastOrdinal = Math.max(this.lastOrdinal, e.ordinal);
1424
+ let t = i(this.ordinals, e.ordinal, s) - 1;
1425
+ this.sizes[t] += e.size;
1426
+ }
1427
+ this.max.push(this.sizes[this.sizes.length - 1]), this.timestamps[this.timestamps.length - 1] - this.timestamps[0] > this.totalTime && (this.totalTime *= 2);
1428
+ let n = {
1429
+ sizes: this.sizes,
1430
+ max: this.max,
1431
+ ids: this.ordinals,
1432
+ timestamps: this.timestamps,
1433
+ totalTime: this.totalTime
1434
+ };
1435
+ this.timelineOverview.setSamples(n);
1436
+ }
1437
+ columnHeader(e) {
1438
+ switch (e) {
1439
+ case "self": return V(B.selfSizeBytes);
1440
+ case "total": return V(B.totalSizeBytes);
1441
+ }
1442
+ return "";
1443
+ }
1444
+ createFlameChartDataProvider() {
1445
+ return new Yn(this.profile(), this.profileHeader.heapProfilerModel());
1446
+ }
1447
+ }, Hn = class extends _(dn) {
1448
+ recording;
1449
+ clearedDuringRecording;
1450
+ constructor(e, t) {
1451
+ super(e, t), this.recording = !1, this.clearedDuringRecording = !1;
1452
+ }
1453
+ profileBeingRecorded() {
1454
+ return super.profileBeingRecorded();
1455
+ }
1456
+ typeName() {
1457
+ return "Heap";
1458
+ }
1459
+ fileExtension() {
1460
+ return ".heapprofile";
1461
+ }
1462
+ get buttonTooltip() {
1463
+ return this.recording ? V(B.stopHeapProfiling) : V(B.startHeapProfiling);
1464
+ }
1465
+ buttonClicked() {
1466
+ return this.recording ? this.stopRecordingProfile() : this.startRecordingProfile(), this.recording;
1467
+ }
1468
+ async startRecordingProfile() {
1469
+ let e = T.instance().flavor(y);
1470
+ if (this.profileBeingRecorded() || !e) return;
1471
+ let t = new Gn(e, this);
1472
+ this.setProfileBeingRecorded(t), this.addProfile(t), t.updateStatus(V(B.recording));
1473
+ let n = [V(B.heapProfilerIsRecording)];
1474
+ Se.instance().setPanelWarnings("heap-profiler", n), this.recording = !0, this.startSampling();
1475
+ }
1476
+ async stopRecordingProfile() {
1477
+ this.recording = !1;
1478
+ let e = this.profileBeingRecorded();
1479
+ if (!e?.heapProfilerModel()) return;
1480
+ e.updateStatus(V(B.stopping));
1481
+ let t = await this.stopSampling();
1482
+ e && (console.assert(t !== void 0), e.setProtocolProfile(t), e.updateStatus(""), this.setProfileBeingRecorded(null)), Se.instance().setPanelWarnings("heap-profiler", []);
1483
+ let n = this.clearedDuringRecording;
1484
+ this.clearedDuringRecording = !1, !n && this.dispatchEventToListeners(F.PROFILE_COMPLETE, e);
1485
+ }
1486
+ createProfileLoadedFromFile(e) {
1487
+ return new Gn(null, this, e);
1488
+ }
1489
+ profileBeingRecordedRemoved() {
1490
+ this.clearedDuringRecording = !0, this.stopRecordingProfile();
1491
+ }
1492
+ startSampling() {
1493
+ throw Error("Not implemented");
1494
+ }
1495
+ stopSampling() {
1496
+ throw Error("Not implemented");
1497
+ }
1498
+ }, Un, Wn = class e extends Hn {
1499
+ updateTimer;
1500
+ updateIntervalMs;
1501
+ #e;
1502
+ customContentInternal = null;
1503
+ constructor() {
1504
+ super(e.TypeId, V(B.allocationSampling)), Un ||= this, this.updateTimer = 0, this.updateIntervalMs = 200, this.#e = re.instance().createSetting("record-sampling-heap-profiler-timeline", !1);
1505
+ }
1506
+ static get instance() {
1507
+ return Un;
1508
+ }
1509
+ get treeItemTitle() {
1510
+ return V(B.samplingProfiles);
1511
+ }
1512
+ get description() {
1513
+ return [V(B.recordMemoryAllocations)].join("\n");
1514
+ }
1515
+ hasTemporaryView() {
1516
+ return this.#e.get();
1517
+ }
1518
+ customContent() {
1519
+ let e = At(V(B.samplingHeapProfilerTimeline), this.#e);
1520
+ return this.customContentInternal = e, e.setAttribute("jslog", `${Be("record-sampling-heap-profiler-timeline").track({ click: !0 })}`), e;
1521
+ }
1522
+ setCustomContentEnabled(e) {
1523
+ this.customContentInternal && (this.customContentInternal.disabled = !e);
1524
+ }
1525
+ startSampling() {
1526
+ let e = this.obtainRecordingProfile();
1527
+ e && (e.startSampling(), this.#e.get() && (this.updateTimer = window.setTimeout(() => {
1528
+ this.updateStats();
1529
+ }, this.updateIntervalMs)));
1530
+ }
1531
+ obtainRecordingProfile() {
1532
+ let e = this.profileBeingRecorded();
1533
+ return e ? e.heapProfilerModel() : null;
1534
+ }
1535
+ async stopSampling() {
1536
+ window.clearTimeout(this.updateTimer), this.updateTimer = 0, this.dispatchEventToListeners(e.Events.RECORDING_STOPPED);
1537
+ let t = this.obtainRecordingProfile();
1538
+ if (!t) throw Error("No heap profiler model");
1539
+ let n = await t.stopSampling();
1540
+ if (!n) throw Error("No sampling profile found");
1541
+ return n;
1542
+ }
1543
+ async updateStats() {
1544
+ let t = this.obtainRecordingProfile();
1545
+ if (!t) return;
1546
+ let n = await t.getSamplingProfile();
1547
+ this.updateTimer &&= (this.dispatchEventToListeners(e.Events.STATS_UPDATE, n), window.setTimeout(() => {
1548
+ this.updateStats();
1549
+ }, this.updateIntervalMs));
1550
+ }
1551
+ static TypeId = "SamplingHeap";
1552
+ };
1553
+ (function(e) {
1554
+ e.Events = /* @__PURE__ */ function(e) {
1555
+ return e.RECORDING_STOPPED = "RecordingStopped", e.STATS_UPDATE = "StatsUpdate", e;
1556
+ }({});
1557
+ })(Wn ||= {});
1558
+ var Gn = class extends En {
1559
+ heapProfilerModelInternal;
1560
+ protocolProfileInternal;
1561
+ constructor(e, t, n) {
1562
+ super(e?.debuggerModel() ?? null, t, n || V(B.profileD, { PH1: t.nextProfileUid() })), this.heapProfilerModelInternal = e, this.protocolProfileInternal = {
1563
+ head: {
1564
+ callFrame: {
1565
+ functionName: "",
1566
+ scriptId: "",
1567
+ url: "",
1568
+ lineNumber: 0,
1569
+ columnNumber: 0
1570
+ },
1571
+ children: [],
1572
+ selfSize: 0,
1573
+ id: 0
1574
+ },
1575
+ samples: [],
1576
+ startTime: 0,
1577
+ endTime: 0,
1578
+ nodes: []
1579
+ };
1580
+ }
1581
+ protocolProfile() {
1582
+ return this.protocolProfileInternal;
1583
+ }
1584
+ heapProfilerModel() {
1585
+ return this.heapProfilerModelInternal;
1586
+ }
1587
+ profileType() {
1588
+ return super.profileType();
1589
+ }
1590
+ }, Kn = class extends Ct {
1591
+ self;
1592
+ constructor(e) {
1593
+ let t = e.callFrame || {
1594
+ functionName: e.functionName,
1595
+ scriptId: e.scriptId,
1596
+ url: e.url,
1597
+ lineNumber: e.lineNumber - 1,
1598
+ columnNumber: e.columnNumber - 1
1599
+ };
1600
+ super(t), this.self = e.selfSize;
1601
+ }
1602
+ }, qn = class extends wt {
1603
+ modules;
1604
+ constructor(e, t, n) {
1605
+ super(), this.modules = e.modules || [];
1606
+ let r = null;
1607
+ if (t || n) {
1608
+ r = /* @__PURE__ */ new Map(), t ||= 0, n ||= Infinity;
1609
+ for (let i of e.samples) {
1610
+ if (i.ordinal < t || i.ordinal > n) continue;
1611
+ let e = r.get(i.nodeId) || 0;
1612
+ r.set(i.nodeId, e + i.size);
1613
+ }
1614
+ }
1615
+ this.initialize(i(e.head));
1616
+ function i(e) {
1617
+ let t = new Kn(e), n = [e], i = [t];
1618
+ for (; n.length;) {
1619
+ let e = n.pop(), t = i.pop();
1620
+ t.children = e.children.map((e) => {
1621
+ let t = new Kn(e);
1622
+ return r && (t.self = r.get(e.id) || 0), t;
1623
+ }), n.push(...e.children), i.push(...t.children);
1624
+ }
1625
+ return a(t), t;
1626
+ }
1627
+ function a(e) {
1628
+ return e.children = e.children.filter(a), !!(e.children.length || e.self);
1629
+ }
1630
+ }
1631
+ }, Jn = class {
1632
+ profileView;
1633
+ constructor(e) {
1634
+ this.profileView = e;
1635
+ }
1636
+ formatValue(e) {
1637
+ return m(e);
1638
+ }
1639
+ formatValueAccessibleText(e) {
1640
+ return V(B.sBytes, { PH1: e });
1641
+ }
1642
+ formatPercent(e, t) {
1643
+ return V(B.formatPercent, { PH1: e.toFixed(2) });
1644
+ }
1645
+ linkifyNode(e) {
1646
+ let t = this.profileView.profileHeader.heapProfilerModel(), n = t ? t.target() : null;
1647
+ return this.profileView.linkifier().maybeLinkifyConsoleCallFrame(n, e.profileNode.callFrame, {
1648
+ className: "profile-node-file",
1649
+ inlineFrameIndex: 0
1650
+ });
1651
+ }
1652
+ }, Yn = class extends mn {
1653
+ profile;
1654
+ heapProfilerModel;
1655
+ constructor(e, t) {
1656
+ super(), this.profile = e, this.heapProfilerModel = t;
1657
+ }
1658
+ minimumBoundary() {
1659
+ return 0;
1660
+ }
1661
+ totalTime() {
1662
+ return this.profile.root.total;
1663
+ }
1664
+ entryHasDeoptReason(e) {
1665
+ return !1;
1666
+ }
1667
+ formatValue(e, n) {
1668
+ return V(B.skb, { PH1: t(e / 1e3) });
1669
+ }
1670
+ calculateTimelineData() {
1671
+ function e(t) {
1672
+ return t.children.reduce((t, n) => t + e(n), 1);
1673
+ }
1674
+ let t = e(this.profile.root), n = Array(t), r = new Uint16Array(t), i = new Float32Array(t), a = new Float64Array(t), o = 0, s = 0, c = 0, l = 0;
1675
+ function u(e) {
1676
+ let t = c;
1677
+ n[l] = e, r[l] = o, i[l] = e.total, a[l] = c, ++l, ++o, e.children.forEach(u), --o, s = Math.max(s, o), c = t + e.total;
1678
+ }
1679
+ return u(this.profile.root), this.maxStackDepthInternal = s + 1, this.entryNodes = n, this.timelineDataInternal = Mt.create({
1680
+ entryLevels: r,
1681
+ entryTotalTimes: i,
1682
+ entryStartTimes: a,
1683
+ groups: null
1684
+ }), this.timelineDataInternal;
1685
+ }
1686
+ preparePopoverElement(e) {
1687
+ let t = this.entryNodes[e];
1688
+ if (!t) return null;
1689
+ let n = [];
1690
+ function r(e, t) {
1691
+ n.push({
1692
+ title: e,
1693
+ value: t
1694
+ });
1695
+ }
1696
+ r(V(B.name), it(t.functionName)), r(V(B.selfSize), m(t.self)), r(V(B.totalSize), m(t.total));
1697
+ let i = new E(), a = i.maybeLinkifyConsoleCallFrame(this.heapProfilerModel ? this.heapProfilerModel.target() : null, t.callFrame);
1698
+ return a && r(V(B.url), a.textContent), i.dispose(), wn.buildPopoverTable(n);
1699
+ }
1700
+ }, Xn = /* @__PURE__ */ e({
1701
+ AllocationGridNode: () => or,
1702
+ HeapSnapshotConstructorNode: () => rr,
1703
+ HeapSnapshotDiffNode: () => ar,
1704
+ HeapSnapshotDiffNodesProvider: () => ir,
1705
+ HeapSnapshotGenericObjectNode: () => $n,
1706
+ HeapSnapshotGridNode: () => W,
1707
+ HeapSnapshotInstanceNode: () => nr,
1708
+ HeapSnapshotObjectNode: () => er,
1709
+ HeapSnapshotRetainingObjectNode: () => tr
1710
+ }), H = {
1711
+ genericStringsTwoPlaceholders: "{PH1}, {PH2}",
1712
+ internalArray: "(internal array)[]",
1713
+ userObjectReachableFromWindow: "User object reachable from window",
1714
+ detachedFromDomTree: "Detached from DOM tree",
1715
+ previewIsNotAvailable: "Preview is not available",
1716
+ revealInSummaryView: "Reveal in Summary view",
1717
+ summary: "Summary",
1718
+ revealObjectSWithIdSInSummary: "Reveal object ''{PH1}'' with id @{PH2} in Summary view",
1719
+ storeAsGlobalVariable: "Store as global variable",
1720
+ ignoreThisRetainer: "Ignore this retainer",
1721
+ stopIgnoringThisRetainer: "Stop ignoring this retainer",
1722
+ ignored: "ignored",
1723
+ inElement: "in",
1724
+ compiledCodeSummary: "Internal data which V8 uses to run functions defined by JavaScript or WebAssembly.",
1725
+ concatenatedStringSummary: "A string which represents the contents of two other strings joined together.",
1726
+ contextSummary: "An internal object containing variables from a JavaScript scope which may be needed by a function created within that scope.",
1727
+ descriptorArraySummary: "A list of the property names used by a JavaScript Object.",
1728
+ internalArraySummary: "An internal array-like data structure (not a JavaScript Array).",
1729
+ internalNodeSummary: "An object allocated by a component other than V8, such as C++ objects defined by Blink.",
1730
+ mapSummary: "An internal object representing the shape of a JavaScript Object (not a JavaScript Map).",
1731
+ objectElementsSummary: "An internal object which stores the indexed properties in a JavaScript Object, such as the contents of an Array.",
1732
+ objectPropertiesSummary: "An internal object which stores the named properties in a JavaScript Object.",
1733
+ slicedStringSummary: "A string which represents some of the characters from another string."
1734
+ }, Zn = v("panels/profiler/HeapSnapshotGridNodes.ts", H), U = g.bind(void 0, Zn), Qn = class extends Ot {}, W = class e extends _(Qn) {
1735
+ dataGridInternal;
1736
+ instanceCount = 0;
1737
+ savedChildren = /* @__PURE__ */ new Map();
1738
+ retrievedChildrenRanges = [];
1739
+ providerObject = null;
1740
+ reachableFromWindow = !1;
1741
+ populated;
1742
+ constructor(e, t) {
1743
+ super(null, t), this.dataGridInternal = e;
1744
+ }
1745
+ get name() {}
1746
+ createProvider() {
1747
+ throw Error("Not implemented.");
1748
+ }
1749
+ comparator() {
1750
+ throw Error("Not implemented.");
1751
+ }
1752
+ getHash() {
1753
+ throw Error("Not implemented.");
1754
+ }
1755
+ createChildNode(e) {
1756
+ throw Error("Not implemented.");
1757
+ }
1758
+ retainersDataSource() {
1759
+ return null;
1760
+ }
1761
+ provider() {
1762
+ return this.providerObject ||= this.createProvider(), this.providerObject;
1763
+ }
1764
+ createCell(e) {
1765
+ return super.createCell(e);
1766
+ }
1767
+ collapse() {
1768
+ super.collapse(), this.dataGridInternal.updateVisibleNodes(!0);
1769
+ }
1770
+ expand() {
1771
+ super.expand(), this.dataGridInternal.updateVisibleNodes(!0);
1772
+ }
1773
+ dispose() {
1774
+ this.providerObject && this.providerObject.dispose();
1775
+ for (let e = this.children[0]; e; e = e.traverseNextNode(!0, this, !0)) e.dispose();
1776
+ }
1777
+ queryObjectContent(e, t) {
1778
+ throw Error("Not implemented.");
1779
+ }
1780
+ tryQueryObjectContent(e, t) {
1781
+ throw Error("Not implemented.");
1782
+ }
1783
+ populateContextMenu(e, t, n) {}
1784
+ toPercentString(e) {
1785
+ return e.toFixed(0) + "\xA0%";
1786
+ }
1787
+ toUIDistance(e) {
1788
+ return e >= 0 && e < Kt ? e.toString() : "−";
1789
+ }
1790
+ allChildren() {
1791
+ return this.dataGridInternal.allChildren(this);
1792
+ }
1793
+ removeChildByIndex(e) {
1794
+ this.dataGridInternal.removeChildByIndex(this, e);
1795
+ }
1796
+ childForPosition(e) {
1797
+ let t = 0;
1798
+ for (let n = 0; n < this.retrievedChildrenRanges.length; n++) {
1799
+ let r = this.retrievedChildrenRanges[n];
1800
+ if (r.from <= e && e < r.to) {
1801
+ let n = t + e - r.from;
1802
+ return this.allChildren()[n];
1803
+ }
1804
+ t += r.to - r.from + 1;
1805
+ }
1806
+ return null;
1807
+ }
1808
+ createValueCell(e) {
1809
+ let t = at("numeric-column").track({ click: !0 }), n = document.createElement("td");
1810
+ n.className = "numeric-column", n.setAttribute("jslog", t.toString());
1811
+ let r = this.dataGrid;
1812
+ if (r.snapshot && r.snapshot.totalSize !== 0) {
1813
+ let t = this.data[e], r = e + "-percent", i = this.data[r], a = `${e}-tooltip`, o = this.data[a];
1814
+ i ? (ge(Ce`
1815
+ <div class="profile-multiple-values">
1816
+ <span aria-hidden="true" title=${_e(o)}>${t}</span>
1817
+ <span class="percent-column" aria-hidden="true">${i}</span>
1818
+ </div>`, n), this.setCellAccessibleName(U(H.genericStringsTwoPlaceholders, {
1819
+ PH1: t,
1820
+ PH2: i
1821
+ }), n, e)) : ge(Ce`
1822
+ <div>
1823
+ <span title=${_e(o)}>${t}</span>
1824
+ </div>`, n);
1825
+ }
1826
+ return n;
1827
+ }
1828
+ populate() {
1829
+ this.populated || (this.populated = !0, this.provider().sortAndRewind(this.comparator()).then(() => this.populateChildren()));
1830
+ }
1831
+ expandWithoutPopulate() {
1832
+ return this.populated = !0, this.expand(), this.provider().sortAndRewind(this.comparator());
1833
+ }
1834
+ childHashForEntity(e) {
1835
+ return "edgeIndex" in e ? e.edgeIndex : e.id;
1836
+ }
1837
+ populateChildren(t, n) {
1838
+ return new Promise((r) => {
1839
+ t ||= 0, n ||= t + this.dataGridInternal.defaultPopulateCount();
1840
+ let i = t;
1841
+ a.call(this, n);
1842
+ function a(e) {
1843
+ if (i >= e) return;
1844
+ let t = Math.min(i + this.dataGridInternal.defaultPopulateCount(), e);
1845
+ this.provider().serializeItemsRange(i, t).then((t) => c.call(this, t, e)), i = t;
1846
+ }
1847
+ function o(e, t) {
1848
+ if (this.savedChildren) {
1849
+ let n = this.childHashForEntity(e), r = this.savedChildren.get(n);
1850
+ if (r) {
1851
+ this.dataGridInternal.insertChild(this, r, t);
1852
+ return;
1853
+ }
1854
+ }
1855
+ this.dataGridInternal.insertChild(this, this.createChildNode(e), t);
1856
+ }
1857
+ function s(e, t, n) {
1858
+ let r = new kt(this.populateChildren.bind(this), e, t, this.dataGridInternal.defaultPopulateCount());
1859
+ this.dataGridInternal.insertChild(this, r, n);
1860
+ }
1861
+ function c(t, n) {
1862
+ let c = 0, l = t.startPosition, u = t.items, d = 0;
1863
+ if (this.retrievedChildrenRanges.length) {
1864
+ let e = 0, n = !1, r = {
1865
+ from: 0,
1866
+ to: 0
1867
+ };
1868
+ for (; e < this.retrievedChildrenRanges.length;) {
1869
+ if (r = this.retrievedChildrenRanges[e], r.to >= l) {
1870
+ n = !0;
1871
+ break;
1872
+ }
1873
+ d += r.to - r.from, r.to < t.totalLength && (d += 1), ++e;
1874
+ }
1875
+ for (!n || t.startPosition < r.from ? (this.allChildren()[d - 1].setEndPosition(t.startPosition), s.call(this, t.startPosition, n ? r.from : t.totalLength, d), r = {
1876
+ from: t.startPosition,
1877
+ to: t.startPosition
1878
+ }, n || (e = this.retrievedChildrenRanges.length), this.retrievedChildrenRanges.splice(e, 0, r)) : d += l - r.from; r.to < t.endPosition;) {
1879
+ let n = r.to - l;
1880
+ d += n, c += n, l = r.to;
1881
+ let i = this.retrievedChildrenRanges[e + 1], a = i ? i.from : t.totalLength;
1882
+ for (a > t.endPosition && (a = t.endPosition); l < a;) o.call(this, u[c++], d++), ++l;
1883
+ a === i?.from ? (r.to = i.to, this.removeChildByIndex(d), this.retrievedChildrenRanges.splice(e + 1, 1)) : (r.to = a, a === t.totalLength ? this.removeChildByIndex(d) : this.allChildren()[d].setStartPosition(t.endPosition));
1884
+ }
1885
+ } else {
1886
+ t.startPosition > 0 && (this.retrievedChildrenRanges.push({
1887
+ from: 0,
1888
+ to: 0
1889
+ }), s.call(this, 0, t.startPosition, d++)), this.retrievedChildrenRanges.push({
1890
+ from: t.startPosition,
1891
+ to: t.endPosition
1892
+ });
1893
+ for (let e = 0, t = u.length; e < t; ++e) o.call(this, u[e], d++);
1894
+ t.endPosition < t.totalLength && s.call(this, t.endPosition, t.totalLength, d++);
1895
+ }
1896
+ if (this.instanceCount += u.length, i < n && i < t.totalLength) {
1897
+ a.call(this, n);
1898
+ return;
1899
+ }
1900
+ this.expanded && this.dataGridInternal.updateVisibleNodes(!0), r(), this.dispatchEventToListeners(e.Events.PopulateComplete);
1901
+ }
1902
+ });
1903
+ }
1904
+ saveChildren() {
1905
+ this.savedChildren.clear();
1906
+ let e = this.allChildren();
1907
+ for (let t = 0, n = e.length; t < n; ++t) {
1908
+ let n = e[t];
1909
+ n.expanded && this.savedChildren.set(n.getHash(), n);
1910
+ }
1911
+ }
1912
+ async sort() {
1913
+ this.dataGridInternal.recursiveSortingEnter(), await this.provider().sortAndRewind(this.comparator()), this.saveChildren(), this.dataGridInternal.removeAllChildren(this), this.retrievedChildrenRanges = [];
1914
+ let e = this.instanceCount;
1915
+ this.instanceCount = 0, await this.populateChildren(0, e);
1916
+ for (let e of this.allChildren()) e.expanded && e.sort();
1917
+ this.dataGridInternal.recursiveSortingLeave();
1918
+ }
1919
+ };
1920
+ (function(e) {
1921
+ e.Events = /* @__PURE__ */ function(e) {
1922
+ return e.PopulateComplete = "PopulateComplete", e;
1923
+ }({});
1924
+ })(W ||= {});
1925
+ var $n = class extends W {
1926
+ referenceName;
1927
+ nameInternal;
1928
+ type;
1929
+ distance;
1930
+ shallowSize;
1931
+ retainedSize;
1932
+ snapshotNodeId;
1933
+ snapshotNodeIndex;
1934
+ detachedDOMTreeNode;
1935
+ linkElement;
1936
+ constructor(e, t) {
1937
+ if (super(e, !1), !t) return;
1938
+ this.referenceName = null, this.nameInternal = t.name, this.type = t.type, this.distance = t.distance, this.shallowSize = t.selfSize, this.retainedSize = t.retainedSize, this.snapshotNodeId = t.id, this.snapshotNodeIndex = t.nodeIndex, this.type === "string" ? this.reachableFromWindow = !0 : this.type === "object" && this.nameInternal.startsWith("Window") ? (this.nameInternal = this.shortenWindowURL(this.nameInternal, !1), this.reachableFromWindow = !0) : t.canBeQueried && (this.reachableFromWindow = !0), t.detachedDOMTreeNode && (this.detachedDOMTreeNode = !0);
1939
+ let n = e.snapshot, r = this.shallowSize / n.totalSize * 100, i = this.retainedSize / n.totalSize * 100;
1940
+ this.data = {
1941
+ distance: this.toUIDistance(this.distance),
1942
+ shallowSize: p(this.shallowSize),
1943
+ retainedSize: p(this.retainedSize),
1944
+ "shallowSize-percent": this.toPercentString(r),
1945
+ "retainedSize-percent": this.toPercentString(i),
1946
+ "shallowSize-tooltip": m(this.shallowSize),
1947
+ "retainedSize-tooltip": m(this.retainedSize)
1948
+ };
1949
+ }
1950
+ get name() {
1951
+ return this.nameInternal;
1952
+ }
1953
+ retainersDataSource() {
1954
+ return this.snapshotNodeIndex === void 0 ? null : {
1955
+ snapshot: this.dataGridInternal.snapshot,
1956
+ snapshotNodeIndex: this.snapshotNodeIndex,
1957
+ snapshotNodeId: this.snapshotNodeId
1958
+ };
1959
+ }
1960
+ createCell(e) {
1961
+ return e === "object" ? this.createObjectCell() : this.createValueCell(e);
1962
+ }
1963
+ createObjectCell() {
1964
+ let e = this.nameInternal, t = "object";
1965
+ switch (this.type) {
1966
+ case "concatenated string":
1967
+ case "string":
1968
+ e = `"${e}"`, t = "string";
1969
+ break;
1970
+ case "regexp":
1971
+ e = `/${e}/`, t = "string";
1972
+ break;
1973
+ case "closure":
1974
+ e = `${e}()`, t = "function";
1975
+ break;
1976
+ case "bigint":
1977
+ t = "bigint";
1978
+ break;
1979
+ case "number":
1980
+ t = "number";
1981
+ break;
1982
+ case "hidden":
1983
+ case "object shape":
1984
+ t = "null";
1985
+ break;
1986
+ case "array":
1987
+ e = e ? `${e}[]` : U(H.internalArray);
1988
+ break;
1989
+ }
1990
+ return this.createObjectCellWithValue(t, e || "");
1991
+ }
1992
+ createObjectCellWithValue(e, t) {
1993
+ let n = at("object-column").track({ click: !0 }), r = document.createElement("td");
1994
+ r.className = "object-column disclosure", r.setAttribute("jslog", n.toString());
1995
+ let i = {};
1996
+ ge(Ce`<div
1997
+ class="source-code event-properties"
1998
+ style="overflow: visible;"
1999
+ ${je((e) => {
2000
+ i.div = e;
2001
+ })}
2002
+ >
2003
+ <span class="value object-value-${e}">${t}</span>
2004
+ <span class="object-value-id">@${this.snapshotNodeId}</span>
2005
+ </div>`, r);
2006
+ let a = i.div;
2007
+ if (!a) throw Error("Expected div to exists");
2008
+ if (this.prefixObjectCell(a), this.reachableFromWindow) {
2009
+ let e = be("frame", "heap-object-tag");
2010
+ S.install(e, U(H.userObjectReachableFromWindow)), a.appendChild(e);
2011
+ }
2012
+ if (this.detachedDOMTreeNode) {
2013
+ let e = be("scissors", "heap-object-tag");
2014
+ S.install(e, U(H.detachedFromDomTree)), a.appendChild(e);
2015
+ }
2016
+ return this.appendSourceLocation(a), this.depth && r.style.setProperty("padding-left", this.depth * this.dataGrid.indentWidth + "px"), r;
2017
+ }
2018
+ prefixObjectCell(e) {}
2019
+ async appendSourceLocation(e) {
2020
+ let t = document.createElement("span");
2021
+ t.className = "heap-object-source-link", e.appendChild(t);
2022
+ let n = await this.dataGridInternal.dataDisplayDelegate().linkifyObject(this.snapshotNodeIndex);
2023
+ n ? (n.setAttribute("tabindex", "0"), t.appendChild(n), this.linkElement = n) : t.remove();
2024
+ }
2025
+ async queryObjectContent(e, t) {
2026
+ return await this.tryQueryObjectContent(e, t) || this.tryGetTooltipDescription() || e.runtimeModel().createRemoteObjectFromPrimitiveValue(U(H.previewIsNotAvailable));
2027
+ }
2028
+ async tryQueryObjectContent(e, t) {
2029
+ return this.type === "string" ? e.runtimeModel().createRemoteObjectFromPrimitiveValue(this.nameInternal) : await e.objectForSnapshotObjectId(String(this.snapshotNodeId), t);
2030
+ }
2031
+ tryGetTooltipDescription() {
2032
+ switch (this.type) {
2033
+ case "code": return {
2034
+ description: U(H.compiledCodeSummary),
2035
+ link: "https://developer.chrome.com/docs/devtools/memory-problems/heap-snapshots#compiled-code"
2036
+ };
2037
+ case "concatenated string": return {
2038
+ description: U(H.concatenatedStringSummary),
2039
+ link: "https://developer.chrome.com/docs/devtools/memory-problems/heap-snapshots#concatenated-string"
2040
+ };
2041
+ case "sliced string": return {
2042
+ description: U(H.slicedStringSummary),
2043
+ link: "https://developer.chrome.com/docs/devtools/memory-problems/heap-snapshots#sliced-string"
2044
+ };
2045
+ }
2046
+ switch (this.type + ":" + this.nameInternal) {
2047
+ case "array:": return {
2048
+ description: U(H.internalArraySummary),
2049
+ link: "https://developer.chrome.com/docs/devtools/memory-problems/heap-snapshots#array"
2050
+ };
2051
+ case "array:(object elements)": return {
2052
+ description: U(H.objectElementsSummary),
2053
+ link: "https://developer.chrome.com/docs/devtools/memory-problems/heap-snapshots#array"
2054
+ };
2055
+ case "array:(object properties)":
2056
+ case "hidden:system / PropertyArray": return {
2057
+ description: U(H.objectPropertiesSummary),
2058
+ link: "https://developer.chrome.com/docs/devtools/memory-problems/heap-snapshots#array"
2059
+ };
2060
+ case "object:system / Context": return {
2061
+ description: U(H.contextSummary),
2062
+ link: "https://developer.chrome.com/docs/devtools/memory-problems/heap-snapshots#system-context"
2063
+ };
2064
+ case "object shape:system / DescriptorArray": return {
2065
+ description: U(H.descriptorArraySummary),
2066
+ link: "https://developer.chrome.com/docs/devtools/memory-problems/heap-snapshots#object-shape"
2067
+ };
2068
+ case "object shape:system / Map": return {
2069
+ description: U(H.mapSummary),
2070
+ link: "https://developer.chrome.com/docs/devtools/memory-problems/heap-snapshots#object-shape"
2071
+ };
2072
+ case "native:InternalNode": return {
2073
+ description: U(H.internalNodeSummary),
2074
+ link: "https://developer.chrome.com/docs/devtools/memory-problems/heap-snapshots#internal-node"
2075
+ };
2076
+ }
2077
+ }
2078
+ async updateHasChildren() {
2079
+ let e = await this.provider().isEmpty();
2080
+ this.setHasChildren(!e);
2081
+ }
2082
+ shortenWindowURL(e, t) {
2083
+ let i = e.indexOf("/"), a = t ? e.indexOf("@") : e.length;
2084
+ if (i === -1 || a === -1) return e;
2085
+ let o = r(e.substring(i + 1, a).trimLeft());
2086
+ return o.length > 40 && (o = n(o, 40)), e.substr(0, i + 2) + o + e.substr(a);
2087
+ }
2088
+ populateContextMenu(e, t, n) {
2089
+ if (this.shallowSize !== 0 && e.revealSection().appendItem(U(H.revealInSummaryView), () => {
2090
+ t.showObject(String(this.snapshotNodeId), U(H.summary));
2091
+ }, { jslogContext: "reveal-in-summary" }), this.referenceName) for (let n of this.referenceName.matchAll(/\((?<objectName>[^@)]*) @(?<snapshotNodeId>\d+)\)/g)) {
2092
+ let { objectName: r, snapshotNodeId: i } = n.groups;
2093
+ e.revealSection().appendItem(U(H.revealObjectSWithIdSInSummary, {
2094
+ PH1: r,
2095
+ PH2: i
2096
+ }), () => {
2097
+ t.showObject(i, U(H.summary));
2098
+ }, { jslogContext: "reveal-in-summary" });
2099
+ }
2100
+ n && e.revealSection().appendItem(U(H.storeAsGlobalVariable), async () => {
2101
+ let e = await this.tryQueryObjectContent(n, "");
2102
+ e ? await n.target().model(Te)?.saveToTempVariable(T.instance().flavor(fe), e) : d.instance().error(U(H.previewIsNotAvailable));
2103
+ }, { jslogContext: "store-as-global-variable" });
2104
+ }
2105
+ }, er = class e extends $n {
2106
+ referenceName;
2107
+ referenceType;
2108
+ edgeIndex;
2109
+ snapshot;
2110
+ parentObjectNode;
2111
+ cycledWithAncestorGridNode;
2112
+ constructor(e, t, n, r) {
2113
+ super(e, n.node), this.referenceName = n.name, this.referenceType = n.type, this.edgeIndex = n.edgeIndex, this.snapshot = t, this.parentObjectNode = r, this.cycledWithAncestorGridNode = this.findAncestorWithSameSnapshotNodeId(), this.cycledWithAncestorGridNode || this.updateHasChildren();
2114
+ let i = this.data;
2115
+ i.count = "", i.addedCount = "", i.removedCount = "", i.countDelta = "", i.addedSize = "", i.removedSize = "", i.sizeDelta = "";
2116
+ }
2117
+ retainersDataSource() {
2118
+ return this.snapshotNodeIndex === void 0 ? null : {
2119
+ snapshot: this.snapshot,
2120
+ snapshotNodeIndex: this.snapshotNodeIndex,
2121
+ snapshotNodeId: this.snapshotNodeId
2122
+ };
2123
+ }
2124
+ createProvider() {
2125
+ if (this.snapshotNodeIndex === void 0) throw Error("Cannot create a provider on a root node");
2126
+ return this.snapshot.createEdgesProvider(this.snapshotNodeIndex);
2127
+ }
2128
+ findAncestorWithSameSnapshotNodeId() {
2129
+ let e = this.parentObjectNode;
2130
+ for (; e;) {
2131
+ if (e.snapshotNodeId === this.snapshotNodeId) return e;
2132
+ e = e.parentObjectNode;
2133
+ }
2134
+ return null;
2135
+ }
2136
+ createChildNode(t) {
2137
+ return new e(this.dataGridInternal, this.snapshot, t, this);
2138
+ }
2139
+ getHash() {
2140
+ return this.edgeIndex;
2141
+ }
2142
+ comparator() {
2143
+ let e = this.dataGridInternal.isSortOrderAscending();
2144
+ switch (this.dataGridInternal.sortColumnId()) {
2145
+ case "object": return new A("!edgeName", e, "retainedSize", !1);
2146
+ case "count": return new A("!edgeName", !0, "retainedSize", !1);
2147
+ case "shallowSize": return new A("selfSize", e, "!edgeName", !0);
2148
+ case "retainedSize": return new A("retainedSize", e, "!edgeName", !0);
2149
+ case "distance": return new A("distance", e, "name", !0);
2150
+ default: return new A("!edgeName", !0, "retainedSize", !1);
2151
+ }
2152
+ }
2153
+ prefixObjectCell(e) {
2154
+ let t = this.referenceName || "(empty)", n = "name";
2155
+ switch (this.referenceType) {
2156
+ case "context":
2157
+ n = "object-value-number";
2158
+ break;
2159
+ case "internal":
2160
+ case "hidden":
2161
+ case "weak":
2162
+ n = "object-value-null";
2163
+ break;
2164
+ case "element":
2165
+ t = `[${t}]`;
2166
+ break;
2167
+ }
2168
+ this.cycledWithAncestorGridNode && e.classList.add("cycled-ancestor-node");
2169
+ let r = document.createElement("span");
2170
+ r.classList.add("property-name", n), r.textContent = t;
2171
+ let i = document.createElement("span");
2172
+ i.classList.add("grayed"), i.textContent = this.edgeNodeSeparator(), e.prepend(r, i);
2173
+ }
2174
+ edgeNodeSeparator() {
2175
+ return "::";
2176
+ }
2177
+ }, tr = class e extends er {
2178
+ #e;
2179
+ constructor(e, t, n, r) {
2180
+ super(e, t, n, r), this.#e = n.node.ignored, this.#e && (this.data.distance = U(H.ignored));
2181
+ }
2182
+ createProvider() {
2183
+ if (this.snapshotNodeIndex === void 0) throw Error("Cannot create providers on root nodes");
2184
+ return this.snapshot.createRetainingEdgesProvider(this.snapshotNodeIndex);
2185
+ }
2186
+ createChildNode(t) {
2187
+ return new e(this.dataGridInternal, this.snapshot, t, this);
2188
+ }
2189
+ edgeNodeSeparator() {
2190
+ return U(H.inElement);
2191
+ }
2192
+ expand() {
2193
+ this.expandRetainersChain(20);
2194
+ }
2195
+ populateContextMenu(e, t, n) {
2196
+ super.populateContextMenu(e, t, n);
2197
+ let r = this.snapshotNodeIndex;
2198
+ r !== void 0 && (this.#e ? e.revealSection().appendItem(U(H.stopIgnoringThisRetainer), async () => {
2199
+ await this.snapshot.unignoreNodeInRetainersView(r), await this.dataGridInternal.dataSourceChanged();
2200
+ }, { jslogContext: "stop-ignoring-this-retainer" }) : e.revealSection().appendItem(U(H.ignoreThisRetainer), async () => {
2201
+ await this.snapshot.ignoreNodeInRetainersView(r), await this.dataGridInternal.dataSourceChanged();
2202
+ }, { jslogContext: "ignore-this-retainer" }));
2203
+ }
2204
+ isReachable() {
2205
+ return (this.distance ?? 0) < qt;
2206
+ }
2207
+ prefixObjectCell(e) {
2208
+ super.prefixObjectCell(e), this.isReachable() || e.classList.add("unreachable-ancestor-node");
2209
+ }
2210
+ expandRetainersChain(e) {
2211
+ if (!this.populated) {
2212
+ this.once(W.Events.PopulateComplete).then(() => this.expandRetainersChain(e)), this.populate();
2213
+ return;
2214
+ }
2215
+ if (super.expand(), --e > 0 && this.children.length > 0) {
2216
+ let t = this.children[0];
2217
+ if ((t.distance || 0) > 1 && t.isReachable()) {
2218
+ t.expandRetainersChain(e);
2219
+ return;
2220
+ }
2221
+ }
2222
+ this.dataGridInternal.dispatchEventToListeners(fr.ExpandRetainersComplete);
2223
+ }
2224
+ comparator() {
2225
+ let e = super.comparator();
2226
+ return e.fieldName1 === "distance" && (e.fieldName1 = "!edgeDistance"), e.fieldName2 === "distance" && (e.fieldName2 = "!edgeDistance"), e;
2227
+ }
2228
+ }, nr = class extends $n {
2229
+ baseSnapshotOrSnapshot;
2230
+ isDeletedNode;
2231
+ constructor(e, t, n, r) {
2232
+ super(e, n), this.baseSnapshotOrSnapshot = t, this.isDeletedNode = r, this.updateHasChildren();
2233
+ let i = this.data;
2234
+ i.count = "", i.countDelta = "", i.sizeDelta = "", this.isDeletedNode ? (i.addedCount = "", i.addedSize = "", i.removedCount = "•", i.removedSize = p(this.shallowSize || 0)) : (i.addedCount = "•", i.addedSize = p(this.shallowSize || 0), i.removedCount = "", i.removedSize = "");
2235
+ }
2236
+ retainersDataSource() {
2237
+ return this.snapshotNodeIndex === void 0 ? null : {
2238
+ snapshot: this.baseSnapshotOrSnapshot,
2239
+ snapshotNodeIndex: this.snapshotNodeIndex,
2240
+ snapshotNodeId: this.snapshotNodeId
2241
+ };
2242
+ }
2243
+ createProvider() {
2244
+ if (this.snapshotNodeIndex === void 0) throw Error("Cannot create providers on root nodes");
2245
+ return this.baseSnapshotOrSnapshot.createEdgesProvider(this.snapshotNodeIndex);
2246
+ }
2247
+ createChildNode(e) {
2248
+ return new er(this.dataGridInternal, this.baseSnapshotOrSnapshot, e, null);
2249
+ }
2250
+ getHash() {
2251
+ if (this.snapshotNodeId === void 0) throw Error("Cannot hash root nodes");
2252
+ return this.snapshotNodeId;
2253
+ }
2254
+ comparator() {
2255
+ let e = this.dataGridInternal.isSortOrderAscending();
2256
+ switch (this.dataGridInternal.sortColumnId()) {
2257
+ case "object": return new A("!edgeName", e, "retainedSize", !1);
2258
+ case "distance": return new A("distance", e, "retainedSize", !1);
2259
+ case "count": return new A("!edgeName", !0, "retainedSize", !1);
2260
+ case "addedSize": return new A("selfSize", e, "!edgeName", !0);
2261
+ case "removedSize": return new A("selfSize", e, "!edgeName", !0);
2262
+ case "shallowSize": return new A("selfSize", e, "!edgeName", !0);
2263
+ case "retainedSize": return new A("retainedSize", e, "!edgeName", !0);
2264
+ default: return new A("!edgeName", !0, "retainedSize", !1);
2265
+ }
2266
+ }
2267
+ }, rr = class extends W {
2268
+ nameInternal;
2269
+ nodeFilter;
2270
+ distance;
2271
+ count;
2272
+ shallowSize;
2273
+ retainedSize;
2274
+ classKey;
2275
+ #e = new Intl.NumberFormat(te.instance().locale);
2276
+ constructor(e, t, n, r) {
2277
+ super(e, n.count > 0), this.nameInternal = n.name, this.nodeFilter = r, this.distance = n.distance, this.count = n.count, this.shallowSize = n.self, this.retainedSize = n.maxRet, this.classKey = t;
2278
+ let i = e.snapshot, a = this.retainedSize / i.totalSize * 100, o = this.shallowSize / i.totalSize * 100;
2279
+ this.data = {
2280
+ object: this.nameInternal,
2281
+ count: this.#e.format(this.count),
2282
+ distance: this.toUIDistance(this.distance),
2283
+ shallowSize: p(this.shallowSize),
2284
+ retainedSize: p(this.retainedSize),
2285
+ "shallowSize-percent": this.toPercentString(o),
2286
+ "retainedSize-percent": this.toPercentString(a),
2287
+ "shallowSize-tooltip": m(this.shallowSize),
2288
+ "retainedSize-tooltip": m(this.retainedSize)
2289
+ };
2290
+ }
2291
+ get name() {
2292
+ return this.nameInternal;
2293
+ }
2294
+ createProvider() {
2295
+ return this.dataGridInternal.snapshot.createNodesProviderForClass(this.classKey, this.nodeFilter);
2296
+ }
2297
+ async populateNodeBySnapshotObjectId(e) {
2298
+ this.dataGridInternal.resetNameFilter(), await this.expandWithoutPopulate();
2299
+ let t = await this.provider().nodePosition(e);
2300
+ if (t === -1) return this.collapse(), [];
2301
+ await this.populateChildren(t, null);
2302
+ let n = this.childForPosition(t);
2303
+ return n ? [this, n] : [];
2304
+ }
2305
+ filteredOut(e) {
2306
+ return this.nameInternal.toLowerCase().indexOf(e) === -1;
2307
+ }
2308
+ createCell(e) {
2309
+ let t = e === "object" ? super.createCell(e) : this.createValueCell(e);
2310
+ return e === "object" && this.count > 1 && ge(Ce`<span class="objects-count">×${this.data.count}</span>`, t), t;
2311
+ }
2312
+ createChildNode(e) {
2313
+ return new nr(this.dataGridInternal, this.dataGridInternal.snapshot, e, !1);
2314
+ }
2315
+ comparator() {
2316
+ let e = this.dataGridInternal.isSortOrderAscending(), t = this.dataGridInternal.sortColumnId();
2317
+ switch (t) {
2318
+ case "object": return new A("name", e, "id", !0);
2319
+ case "distance": return new A("distance", e, "retainedSize", !1);
2320
+ case "shallowSize": return new A("selfSize", e, "id", !0);
2321
+ case "retainedSize": return new A("retainedSize", e, "id", !0);
2322
+ default: throw Error(`Invalid sort column id ${t}`);
2323
+ }
2324
+ }
2325
+ }, ir = class {
2326
+ addedNodesProvider;
2327
+ deletedNodesProvider;
2328
+ addedCount;
2329
+ removedCount;
2330
+ constructor(e, t, n, r) {
2331
+ this.addedNodesProvider = e, this.deletedNodesProvider = t, this.addedCount = n, this.removedCount = r;
2332
+ }
2333
+ dispose() {
2334
+ this.addedNodesProvider.dispose(), this.deletedNodesProvider.dispose();
2335
+ }
2336
+ nodePosition(e) {
2337
+ throw Error("Unreachable");
2338
+ }
2339
+ isEmpty() {
2340
+ return Promise.resolve(!1);
2341
+ }
2342
+ async serializeItemsRange(e, t) {
2343
+ let n, r;
2344
+ if (e < this.addedCount) {
2345
+ n = await this.addedNodesProvider.serializeItemsRange(e, t);
2346
+ for (let e of n.items) e.isAddedNotRemoved = !0;
2347
+ if (n.endPosition >= t) return n.totalLength = this.addedCount + this.removedCount, n;
2348
+ r = n, n = await this.deletedNodesProvider.serializeItemsRange(0, t - n.endPosition);
2349
+ } else r = new Gt(0, 0, 0, []), n = await this.deletedNodesProvider.serializeItemsRange(e - this.addedCount, t - this.addedCount);
2350
+ r.items.length || (r.startPosition = this.addedCount + n.startPosition);
2351
+ for (let e of n.items) e.isAddedNotRemoved = !1;
2352
+ return r.items.push(...n.items), r.endPosition = this.addedCount + n.endPosition, r.totalLength = this.addedCount + this.removedCount, r;
2353
+ }
2354
+ async sortAndRewind(e) {
2355
+ await this.addedNodesProvider.sortAndRewind(e), await this.deletedNodesProvider.sortAndRewind(e);
2356
+ }
2357
+ }, ar = class extends W {
2358
+ nameInternal;
2359
+ addedCount;
2360
+ removedCount;
2361
+ countDelta;
2362
+ addedSize;
2363
+ removedSize;
2364
+ sizeDelta;
2365
+ deletedIndexes;
2366
+ classKey;
2367
+ constructor(e, n, r) {
2368
+ super(e, !0), this.nameInternal = r.name, this.addedCount = r.addedCount, this.removedCount = r.removedCount, this.countDelta = r.countDelta, this.addedSize = r.addedSize, this.removedSize = r.removedSize, this.sizeDelta = r.sizeDelta, this.deletedIndexes = r.deletedIndexes, this.classKey = n, this.data = {
2369
+ object: this.nameInternal,
2370
+ addedCount: t(this.addedCount),
2371
+ removedCount: t(this.removedCount),
2372
+ countDelta: this.signForDelta(this.countDelta) + t(Math.abs(this.countDelta)),
2373
+ addedSize: m(this.addedSize),
2374
+ removedSize: m(this.removedSize),
2375
+ sizeDelta: this.signForDelta(this.sizeDelta) + m(Math.abs(this.sizeDelta))
2376
+ };
2377
+ }
2378
+ get name() {
2379
+ return this.nameInternal;
2380
+ }
2381
+ createProvider() {
2382
+ let e = this.dataGridInternal;
2383
+ if (e.snapshot === null || e.baseSnapshot?.uid === void 0) throw Error("Data sources have not been set correctly");
2384
+ let t = e.snapshot.createAddedNodesProvider(e.baseSnapshot.uid, this.classKey), n = e.baseSnapshot.createDeletedNodesProvider(this.deletedIndexes);
2385
+ if (!t || !n) throw Error("Failed to create node providers");
2386
+ return new ir(t, n, this.addedCount, this.removedCount);
2387
+ }
2388
+ createCell(e) {
2389
+ let t = super.createCell(e);
2390
+ return e !== "object" && t.classList.add("numeric-column"), t;
2391
+ }
2392
+ createChildNode(e) {
2393
+ let t = this.dataGridInternal;
2394
+ if (e.isAddedNotRemoved) {
2395
+ if (t.snapshot === null) throw Error("Data sources have not been set correctly");
2396
+ return new nr(this.dataGridInternal, t.snapshot, e, !1);
2397
+ }
2398
+ if (t.baseSnapshot === void 0) throw Error("Data sources have not been set correctly");
2399
+ return new nr(this.dataGridInternal, t.baseSnapshot, e, !0);
2400
+ }
2401
+ comparator() {
2402
+ let e = this.dataGridInternal.isSortOrderAscending(), t = this.dataGridInternal.sortColumnId();
2403
+ switch (t) {
2404
+ case "object": return new A("name", e, "id", !0);
2405
+ case "addedCount": return new A("name", !0, "id", !0);
2406
+ case "removedCount": return new A("name", !0, "id", !0);
2407
+ case "countDelta": return new A("name", !0, "id", !0);
2408
+ case "addedSize": return new A("selfSize", e, "id", !0);
2409
+ case "removedSize": return new A("selfSize", e, "id", !0);
2410
+ case "sizeDelta": return new A("selfSize", e, "id", !0);
2411
+ default: throw Error(`Invalid sort column ${t}`);
2412
+ }
2413
+ }
2414
+ filteredOut(e) {
2415
+ return this.nameInternal.toLowerCase().indexOf(e) === -1;
2416
+ }
2417
+ signForDelta(e) {
2418
+ return e === 0 ? "" : e > 0 ? "+" : "−";
2419
+ }
2420
+ }, or = class e extends W {
2421
+ populated;
2422
+ allocationNode;
2423
+ constructor(e, n) {
2424
+ super(e, n.hasChildren), this.populated = !1, this.allocationNode = n, this.data = {
2425
+ liveCount: t(n.liveCount),
2426
+ count: t(n.count),
2427
+ liveSize: m(n.liveSize),
2428
+ size: m(n.size),
2429
+ name: n.name
2430
+ };
2431
+ }
2432
+ populate() {
2433
+ this.populated || this.doPopulate();
2434
+ }
2435
+ async doPopulate() {
2436
+ this.populated = !0;
2437
+ let t = await this.dataGridInternal.snapshot.allocationNodeCallers(this.allocationNode.id), n = t.nodesWithSingleCaller, r = this, i = this.dataGridInternal;
2438
+ for (let t of n) {
2439
+ let n = new e(i, t);
2440
+ i.appendNode(r, n), r = n, r.populated = !0, this.expanded && r.expand();
2441
+ }
2442
+ let a = t.branchingCallers;
2443
+ a.sort(this.dataGridInternal.createComparator());
2444
+ for (let t of a) i.appendNode(r, new e(i, t));
2445
+ i.updateVisibleNodes(!0);
2446
+ }
2447
+ expand() {
2448
+ super.expand(), this.children.length === 1 && this.children[0].expand();
2449
+ }
2450
+ createCell(e) {
2451
+ if (e !== "name") return this.createValueCell(e);
2452
+ let t = super.createCell(e), n = this.allocationNode, r = this.dataGridInternal.heapProfilerModel();
2453
+ if (n.scriptId) {
2454
+ let e = this.dataGridInternal.linkifier.linkifyScriptLocation(r ? r.target() : null, String(n.scriptId), n.scriptName, n.line - 1, {
2455
+ columnNumber: n.column - 1,
2456
+ inlineFrameIndex: 0,
2457
+ className: "profile-node-file"
2458
+ });
2459
+ e.style.maxWidth = "75%", t.insertBefore(e, t.firstChild);
2460
+ }
2461
+ return t;
2462
+ }
2463
+ allocationNodeId() {
2464
+ return this.allocationNode.id;
2465
+ }
2466
+ }, sr = /* @__PURE__ */ e({
2467
+ AllocationDataGrid: () => yr,
2468
+ HeapSnapshotConstructorsDataGrid: () => _r,
2469
+ HeapSnapshotContainmentDataGrid: () => mr,
2470
+ HeapSnapshotDiffDataGrid: () => vr,
2471
+ HeapSnapshotRetainmentDataGrid: () => hr,
2472
+ HeapSnapshotRetainmentDataGridEvents: () => gr,
2473
+ HeapSnapshotSortableDataGrid: () => dr,
2474
+ HeapSnapshotSortableDataGridEvents: () => fr,
2475
+ HeapSnapshotViewportDataGrid: () => pr
2476
+ }), G = {
2477
+ distanceFromWindowObject: "Distance from window object",
2478
+ sizeOfTheObjectItselfInBytes: "Size of the object itself in bytes",
2479
+ sizeOfTheObjectPlusTheGraphIt: "Size of the object plus the graph it retains in bytes",
2480
+ object: "Object",
2481
+ distance: "Distance",
2482
+ shallowSize: "Shallow Size",
2483
+ retainedSize: "Retained Size",
2484
+ heapSnapshotRetainment: "Heap Snapshot Retainment",
2485
+ constructorString: "Constructor",
2486
+ heapSnapshotConstructors: "Heap Snapshot Constructors",
2487
+ New: "# New",
2488
+ Deleted: "# Deleted",
2489
+ Delta: "# Delta",
2490
+ allocSize: "Alloc. Size",
2491
+ freedSize: "Freed Size",
2492
+ sizeDelta: "Size Delta",
2493
+ heapSnapshotDiff: "Heap Snapshot Diff",
2494
+ liveCount: "Live Count",
2495
+ count: "Count",
2496
+ liveSize: "Live Size",
2497
+ size: "Size",
2498
+ function: "Function",
2499
+ allocation: "Allocation"
2500
+ }, cr = v("panels/profiler/HeapSnapshotDataGrids.ts", G), K = g.bind(void 0, cr), lr = /* @__PURE__ */ new WeakMap(), ur = class extends Dt {}, dr = class extends _(ur) {
2501
+ snapshot = null;
2502
+ selectedNode = null;
2503
+ heapProfilerModelInternal;
2504
+ dataDisplayDelegateInternal;
2505
+ recursiveSortingDepth = 0;
2506
+ populatedAndSorted = !1;
2507
+ nameFilter = null;
2508
+ nodeFilterInternal;
2509
+ lastSortColumnId;
2510
+ lastSortAscending;
2511
+ constructor(e, t, n) {
2512
+ super(n), this.heapProfilerModelInternal = e, this.dataDisplayDelegateInternal = t;
2513
+ let r = [
2514
+ ["distance", K(G.distanceFromWindowObject)],
2515
+ ["shallowSize", K(G.sizeOfTheObjectItselfInBytes)],
2516
+ ["retainedSize", K(G.sizeOfTheObjectPlusTheGraphIt)]
2517
+ ];
2518
+ for (let e of r) {
2519
+ let t = this.headerTableHeader(e[0]);
2520
+ t && t.setAttribute("title", e[1]);
2521
+ }
2522
+ this.recursiveSortingDepth = 0, this.populatedAndSorted = !1, this.nameFilter = null, this.nodeFilterInternal = new j(), this.addEventListener("SortingComplete", this.sortingComplete, this), this.addEventListener(k.SORTING_CHANGED, this.sortingChanged, this), this.setRowContextMenuCallback(this.populateContextMenu.bind(this));
2523
+ }
2524
+ async setDataSource(e, t) {}
2525
+ isFilteredOut(e) {
2526
+ let t = this.nameFilter ? this.nameFilter.value().toLowerCase() : "";
2527
+ return !!(t && (e instanceof ar || e instanceof rr) && e.filteredOut(t));
2528
+ }
2529
+ heapProfilerModel() {
2530
+ return this.heapProfilerModelInternal;
2531
+ }
2532
+ dataDisplayDelegate() {
2533
+ return this.dataDisplayDelegateInternal;
2534
+ }
2535
+ nodeFilter() {
2536
+ return this.nodeFilterInternal;
2537
+ }
2538
+ setNameFilter(e) {
2539
+ this.nameFilter = e;
2540
+ }
2541
+ defaultPopulateCount() {
2542
+ return 100;
2543
+ }
2544
+ disposeAllNodes() {
2545
+ let e = this.topLevelNodes();
2546
+ for (let t = 0, n = e.length; t < n; ++t) e[t].dispose();
2547
+ }
2548
+ wasShown() {
2549
+ super.wasShown(), this.nameFilter && (this.nameFilter.addEventListener(ze.Event.TEXT_CHANGED, this.onNameFilterChanged, this), this.updateVisibleNodes(!0)), this.populatedAndSorted && this.dispatchEventToListeners("ContentShown", this);
2550
+ }
2551
+ sortingComplete() {
2552
+ this.removeEventListener("SortingComplete", this.sortingComplete, this), this.populatedAndSorted = !0, this.dispatchEventToListeners("ContentShown", this);
2553
+ }
2554
+ willHide() {
2555
+ super.willHide(), this.nameFilter && this.nameFilter.removeEventListener(ze.Event.TEXT_CHANGED, this.onNameFilterChanged, this);
2556
+ }
2557
+ populateContextMenu(e, t) {
2558
+ let n = t;
2559
+ n.populateContextMenu(e, this.dataDisplayDelegateInternal, this.heapProfilerModel()), n instanceof $n && n.linkElement && e.appendApplicableItems(n.linkElement);
2560
+ }
2561
+ resetSortingCache() {
2562
+ delete this.lastSortColumnId, delete this.lastSortAscending;
2563
+ }
2564
+ topLevelNodes() {
2565
+ return this.rootNode().children;
2566
+ }
2567
+ revealObjectByHeapSnapshotId(e) {
2568
+ return Promise.resolve(null);
2569
+ }
2570
+ resetNameFilter() {
2571
+ this.nameFilter && this.nameFilter.setValue("");
2572
+ }
2573
+ onNameFilterChanged() {
2574
+ this.updateVisibleNodes(!0), this.deselectFilteredNodes();
2575
+ }
2576
+ deselectFilteredNodes() {
2577
+ let e = this.selectedNode;
2578
+ for (; e;) {
2579
+ if (this.selectedNode && this.isFilteredOut(e)) {
2580
+ this.selectedNode.deselect(), this.selectedNode = null;
2581
+ return;
2582
+ }
2583
+ e = e.parent;
2584
+ }
2585
+ }
2586
+ sortFields(e, t) {
2587
+ throw Error("Not implemented");
2588
+ }
2589
+ sortingChanged() {
2590
+ let e = this.isSortOrderAscending(), t = this.sortColumnId();
2591
+ if (this.lastSortColumnId === t && this.lastSortAscending === e) return;
2592
+ this.lastSortColumnId = t, this.lastSortAscending = e;
2593
+ let n = this.sortFields(t || "", e);
2594
+ function r(e, t) {
2595
+ let r = e[n.fieldName1], i = t[n.fieldName1], a = r < i ? -1 : +(r > i);
2596
+ return n.ascending1 || (a = -a), a === 0 ? (r = e[n.fieldName2], i = t[n.fieldName2], a = r < i ? -1 : +(r > i), n.ascending2 || (a = -a), a) : a;
2597
+ }
2598
+ this.performSorting(r);
2599
+ }
2600
+ performSorting(e) {
2601
+ this.recursiveSortingEnter();
2602
+ let t = this.allChildren(this.rootNode());
2603
+ this.rootNode().removeChildren(), t.sort(e);
2604
+ for (let e = 0, n = t.length; e < n; ++e) {
2605
+ let n = t[e];
2606
+ this.appendChildAfterSorting(n), n.populated && n.sort();
2607
+ }
2608
+ this.recursiveSortingLeave();
2609
+ }
2610
+ appendChildAfterSorting(e) {
2611
+ let t = e.revealed;
2612
+ this.rootNode().appendChild(e), e.revealed = t;
2613
+ }
2614
+ recursiveSortingEnter() {
2615
+ ++this.recursiveSortingDepth;
2616
+ }
2617
+ recursiveSortingLeave() {
2618
+ this.recursiveSortingDepth && (--this.recursiveSortingDepth || (this.updateVisibleNodes(!0), this.dispatchEventToListeners("SortingComplete")));
2619
+ }
2620
+ updateVisibleNodes(e) {}
2621
+ allChildren(e) {
2622
+ return e.children;
2623
+ }
2624
+ insertChild(e, t, n) {
2625
+ e.insertChild(t, n);
2626
+ }
2627
+ removeChildByIndex(e, t) {
2628
+ e.removeChild(e.children[t]);
2629
+ }
2630
+ removeAllChildren(e) {
2631
+ e.removeChildren();
2632
+ }
2633
+ async dataSourceChanged() {
2634
+ throw Error("Not implemented");
2635
+ }
2636
+ }, fr = /* @__PURE__ */ function(e) {
2637
+ return e.ContentShown = "ContentShown", e.SortingComplete = "SortingComplete", e.ExpandRetainersComplete = "ExpandRetainersComplete", e;
2638
+ }({}), pr = class extends dr {
2639
+ topPaddingHeight;
2640
+ bottomPaddingHeight;
2641
+ selectedNode;
2642
+ scrollToResolveCallback;
2643
+ constructor(e, t, n) {
2644
+ super(e, t, n), this.scrollContainer.addEventListener("scroll", this.onScroll.bind(this), !0), this.topPaddingHeight = 0, this.bottomPaddingHeight = 0, this.selectedNode = null;
2645
+ }
2646
+ topLevelNodes() {
2647
+ return this.allChildren(this.rootNode());
2648
+ }
2649
+ appendChildAfterSorting(e) {}
2650
+ updateVisibleNodes(e) {
2651
+ let t = this.scrollContainer.scrollHeight, n = this.scrollContainer.scrollTop, r = t - n - this.scrollContainer.offsetHeight;
2652
+ n = Math.max(0, n - 40), r = Math.max(0, r - 40);
2653
+ let i = t - n - r;
2654
+ if (!e && n >= this.topPaddingHeight && r >= this.bottomPaddingHeight) return;
2655
+ n -= 500, i += 2 * 500;
2656
+ let a = this.selectedNode;
2657
+ this.rootNode().removeChildren(), this.topPaddingHeight = 0, this.bottomPaddingHeight = 0, this.addVisibleNodes(this.rootNode(), n, n + i), this.setVerticalPadding(this.topPaddingHeight, this.bottomPaddingHeight), a && (a.parent ? a.select(!0) : this.selectedNode = a);
2658
+ }
2659
+ addVisibleNodes(e, t, n) {
2660
+ if (!e.expanded) return 0;
2661
+ let r = this.allChildren(e), i = 0, a = 0;
2662
+ for (; a < r.length; ++a) {
2663
+ let e = r[a];
2664
+ if (this.isFilteredOut(e)) continue;
2665
+ let n = i + this.nodeHeight(e);
2666
+ if (n > t) break;
2667
+ i = n;
2668
+ }
2669
+ let o = i;
2670
+ for (; a < r.length && o < n; ++a) {
2671
+ let i = r[a];
2672
+ if (this.isFilteredOut(i)) continue;
2673
+ let s = i.hasChildren();
2674
+ i.removeChildren(), i.setHasChildren(s), e.appendChild(i), o += i.nodeSelfHeight(), o += this.addVisibleNodes(i, t - o, n - o);
2675
+ }
2676
+ let s = 0;
2677
+ for (; a < r.length; ++a) {
2678
+ let e = r[a];
2679
+ this.isFilteredOut(e) || (s += this.nodeHeight(e));
2680
+ }
2681
+ return this.topPaddingHeight += i, this.bottomPaddingHeight += s, o + s;
2682
+ }
2683
+ nodeHeight(e) {
2684
+ let t = e.nodeSelfHeight();
2685
+ if (!e.expanded) return t;
2686
+ let n = this.allChildren(e);
2687
+ for (let e = 0; e < n.length; e++) t += this.nodeHeight(n[e]);
2688
+ return t;
2689
+ }
2690
+ revealTreeNode(e) {
2691
+ let t = this.calculateOffset(e), n = e[e.length - 1], r = this.scrollContainer.scrollTop, i = r + this.scrollContainer.offsetHeight;
2692
+ return t >= r && t < i ? Promise.resolve(n) : (this.scrollContainer.scrollTop = Math.max(0, t - 40), new Promise((e) => {
2693
+ console.assert(!this.scrollToResolveCallback), this.scrollToResolveCallback = e.bind(null, n), this.scrollContainer.window().requestAnimationFrame(() => {
2694
+ this.scrollToResolveCallback &&= (this.scrollToResolveCallback(), null);
2695
+ });
2696
+ }));
2697
+ }
2698
+ calculateOffset(e) {
2699
+ let t = this.rootNode(), n = 0;
2700
+ if (e.length === 0) return 0;
2701
+ for (let r = 0; r < e.length; ++r) {
2702
+ let i = e[r], a = this.allChildren(t);
2703
+ for (let e = 0; e < a.length; ++e) {
2704
+ let t = a[e];
2705
+ if (i === t) {
2706
+ n += i.nodeSelfHeight();
2707
+ break;
2708
+ }
2709
+ n += this.nodeHeight(t);
2710
+ }
2711
+ t = i;
2712
+ }
2713
+ return n - e[e.length - 1].nodeSelfHeight();
2714
+ }
2715
+ allChildren(e) {
2716
+ let t = lr.get(e) || [];
2717
+ return lr.has(e) || lr.set(e, t), t;
2718
+ }
2719
+ appendNode(e, t) {
2720
+ this.allChildren(e).push(t);
2721
+ }
2722
+ insertChild(e, t, n) {
2723
+ this.allChildren(e).splice(n, 0, t);
2724
+ }
2725
+ removeChildByIndex(e, t) {
2726
+ this.allChildren(e).splice(t, 1);
2727
+ }
2728
+ removeAllChildren(e) {
2729
+ lr.delete(e);
2730
+ }
2731
+ removeTopLevelNodes() {
2732
+ this.disposeAllNodes(), this.rootNode().removeChildren(), this.removeAllChildren(this.rootNode());
2733
+ }
2734
+ onResize() {
2735
+ super.onResize(), this.updateVisibleNodes(!1);
2736
+ }
2737
+ onScroll(e) {
2738
+ this.updateVisibleNodes(!1), this.scrollToResolveCallback &&= (this.scrollToResolveCallback(), null);
2739
+ }
2740
+ }, mr = class extends dr {
2741
+ constructor(e, t, n, r) {
2742
+ let i = [
2743
+ {
2744
+ id: "object",
2745
+ title: K(G.object),
2746
+ disclosure: !0,
2747
+ sortable: !0
2748
+ },
2749
+ {
2750
+ id: "distance",
2751
+ title: K(G.distance),
2752
+ width: "70px",
2753
+ sortable: !0,
2754
+ fixedWidth: !0
2755
+ },
2756
+ {
2757
+ id: "shallowSize",
2758
+ title: K(G.shallowSize),
2759
+ width: "110px",
2760
+ sortable: !0,
2761
+ fixedWidth: !0
2762
+ },
2763
+ {
2764
+ id: "retainedSize",
2765
+ title: K(G.retainedSize),
2766
+ width: "110px",
2767
+ sortable: !0,
2768
+ fixedWidth: !0,
2769
+ sort: O.Descending
2770
+ }
2771
+ ];
2772
+ r ||= i, super(e, t, {
2773
+ displayName: n,
2774
+ columns: r
2775
+ });
2776
+ }
2777
+ async setDataSource(e, t, n) {
2778
+ this.snapshot = e;
2779
+ let r = new Vt(n ?? -1, "root", 0, t || e.rootNodeIndex, 0, 0, "");
2780
+ this.setRootNode(this.createRootNode(e, r)), this.rootNode().sort();
2781
+ }
2782
+ createRootNode(e, t) {
2783
+ let n = new Bt("", t, "", -1);
2784
+ return new er(this, e, n, null);
2785
+ }
2786
+ sortingChanged() {
2787
+ let e = this.rootNode();
2788
+ e.hasChildren() && e.sort();
2789
+ }
2790
+ }, hr = class extends mr {
2791
+ resetRetainersButton;
2792
+ constructor(e, t) {
2793
+ let n = [
2794
+ {
2795
+ id: "object",
2796
+ title: K(G.object),
2797
+ disclosure: !0,
2798
+ sortable: !0
2799
+ },
2800
+ {
2801
+ id: "distance",
2802
+ title: K(G.distance),
2803
+ width: "70px",
2804
+ sortable: !0,
2805
+ fixedWidth: !0,
2806
+ sort: O.Ascending
2807
+ },
2808
+ {
2809
+ id: "shallowSize",
2810
+ title: K(G.shallowSize),
2811
+ width: "110px",
2812
+ sortable: !0,
2813
+ fixedWidth: !0
2814
+ },
2815
+ {
2816
+ id: "retainedSize",
2817
+ title: K(G.retainedSize),
2818
+ width: "110px",
2819
+ sortable: !0,
2820
+ fixedWidth: !0
2821
+ }
2822
+ ];
2823
+ super(e, t, K(G.heapSnapshotRetainment), n);
2824
+ }
2825
+ createRootNode(e, t) {
2826
+ let n = new Bt("", t, "", -1);
2827
+ return new tr(this, e, n, null);
2828
+ }
2829
+ sortFields(e, t) {
2830
+ switch (e) {
2831
+ case "object": return new A("name", t, "count", !1);
2832
+ case "count": return new A("count", t, "name", !0);
2833
+ case "shallowSize": return new A("shallowSize", t, "name", !0);
2834
+ case "retainedSize": return new A("retainedSize", t, "name", !0);
2835
+ case "distance": return new A("distance", t, "name", !0);
2836
+ default: throw Error(`Unknown column ${e}`);
2837
+ }
2838
+ }
2839
+ reset() {
2840
+ this.rootNode().removeChildren(), this.resetSortingCache();
2841
+ }
2842
+ updateResetButtonVisibility() {
2843
+ this.snapshot?.areNodesIgnoredInRetainersView().then((e) => {
2844
+ this.resetRetainersButton?.setVisible(e);
2845
+ });
2846
+ }
2847
+ async setDataSource(e, t, n) {
2848
+ await super.setDataSource(e, t, n), this.rootNode().expand(), this.updateResetButtonVisibility();
2849
+ }
2850
+ async dataSourceChanged() {
2851
+ this.reset(), await this.rootNode().sort(), this.rootNode().expand(), this.updateResetButtonVisibility();
2852
+ }
2853
+ }, gr = /* @__PURE__ */ function(e) {
2854
+ return e.ExpandRetainersComplete = "ExpandRetainersComplete", e;
2855
+ }({}), _r = class extends pr {
2856
+ profileIndex = -1;
2857
+ objectIdToSelect = null;
2858
+ nextRequestedFilter = null;
2859
+ lastFilter;
2860
+ filterInProgress;
2861
+ constructor(e, t) {
2862
+ let n = [
2863
+ {
2864
+ id: "object",
2865
+ title: K(G.constructorString),
2866
+ disclosure: !0,
2867
+ sortable: !0
2868
+ },
2869
+ {
2870
+ id: "distance",
2871
+ title: K(G.distance),
2872
+ width: "70px",
2873
+ sortable: !0,
2874
+ fixedWidth: !0
2875
+ },
2876
+ {
2877
+ id: "shallowSize",
2878
+ title: K(G.shallowSize),
2879
+ width: "110px",
2880
+ sortable: !0,
2881
+ fixedWidth: !0
2882
+ },
2883
+ {
2884
+ id: "retainedSize",
2885
+ title: K(G.retainedSize),
2886
+ width: "110px",
2887
+ sort: O.Descending,
2888
+ sortable: !0,
2889
+ fixedWidth: !0
2890
+ }
2891
+ ];
2892
+ super(e, t, {
2893
+ displayName: K(G.heapSnapshotConstructors).toString(),
2894
+ columns: n
2895
+ });
2896
+ }
2897
+ sortFields(e, t) {
2898
+ switch (e) {
2899
+ case "object": return new A("name", t, "retainedSize", !1);
2900
+ case "distance": return new A("distance", t, "retainedSize", !1);
2901
+ case "shallowSize": return new A("shallowSize", t, "name", !0);
2902
+ case "retainedSize": return new A("retainedSize", t, "name", !0);
2903
+ default: throw Error(`Unknown column ${e}`);
2904
+ }
2905
+ }
2906
+ async revealObjectByHeapSnapshotId(e) {
2907
+ if (!this.snapshot) return this.objectIdToSelect = e, null;
2908
+ let t = await this.snapshot.nodeClassKey(parseInt(e, 10));
2909
+ if (!t) return null;
2910
+ let n = this.topLevelNodes().find((e) => e.classKey === t);
2911
+ if (!n) return null;
2912
+ let r = await n.populateNodeBySnapshotObjectId(parseInt(e, 10));
2913
+ return r.length ? await this.revealTreeNode(r) : null;
2914
+ }
2915
+ clear() {
2916
+ this.nextRequestedFilter = null, this.lastFilter = null, this.removeTopLevelNodes();
2917
+ }
2918
+ async setDataSource(e, t) {
2919
+ this.snapshot = e, this.profileIndex === -1 && this.populateChildren(), this.objectIdToSelect &&= (this.revealObjectByHeapSnapshotId(this.objectIdToSelect), null);
2920
+ }
2921
+ setSelectionRange(e, t) {
2922
+ this.nodeFilterInternal = new j(e, t), this.populateChildren(this.nodeFilterInternal);
2923
+ }
2924
+ setAllocationNodeId(e) {
2925
+ this.nodeFilterInternal = new j(), this.nodeFilterInternal.allocationNodeId = e, this.populateChildren(this.nodeFilterInternal);
2926
+ }
2927
+ aggregatesReceived(e, t) {
2928
+ this.filterInProgress = null, this.nextRequestedFilter && this.snapshot && (this.snapshot.aggregatesWithFilter(this.nextRequestedFilter).then(this.aggregatesReceived.bind(this, this.nextRequestedFilter)), this.filterInProgress = this.nextRequestedFilter, this.nextRequestedFilter = null), this.removeTopLevelNodes(), this.resetSortingCache();
2929
+ for (let n in t) this.appendNode(this.rootNode(), new rr(this, n, t[n], e));
2930
+ this.sortingChanged(), this.lastFilter = e;
2931
+ }
2932
+ async populateChildren(e) {
2933
+ let t = e || new j();
2934
+ if (this.filterInProgress) {
2935
+ this.nextRequestedFilter = this.filterInProgress.equals(t) ? null : t;
2936
+ return;
2937
+ }
2938
+ if (!this.lastFilter?.equals(t) && (this.filterInProgress = t, this.snapshot)) {
2939
+ let e = await this.snapshot.aggregatesWithFilter(t);
2940
+ this.aggregatesReceived(t, e);
2941
+ }
2942
+ }
2943
+ filterSelectIndexChanged(e, t, n) {
2944
+ if (this.profileIndex = t, this.nodeFilterInternal = void 0, t !== -1) {
2945
+ let n = t > 0 ? e[t - 1].maxJSObjectId : 0, r = e[t].maxJSObjectId;
2946
+ this.nodeFilterInternal = new j(n, r);
2947
+ } else n !== void 0 && (this.nodeFilterInternal = new j(), this.nodeFilterInternal.filterName = n);
2948
+ this.populateChildren(this.nodeFilterInternal);
2949
+ }
2950
+ }, vr = class extends pr {
2951
+ baseSnapshot;
2952
+ constructor(e, t) {
2953
+ let n = [
2954
+ {
2955
+ id: "object",
2956
+ title: K(G.constructorString),
2957
+ disclosure: !0,
2958
+ sortable: !0
2959
+ },
2960
+ {
2961
+ id: "addedCount",
2962
+ title: K(G.New),
2963
+ width: "75px",
2964
+ sortable: !0,
2965
+ fixedWidth: !0
2966
+ },
2967
+ {
2968
+ id: "removedCount",
2969
+ title: K(G.Deleted),
2970
+ width: "75px",
2971
+ sortable: !0,
2972
+ fixedWidth: !0
2973
+ },
2974
+ {
2975
+ id: "countDelta",
2976
+ title: K(G.Delta),
2977
+ width: "65px",
2978
+ sortable: !0,
2979
+ fixedWidth: !0
2980
+ },
2981
+ {
2982
+ id: "addedSize",
2983
+ title: K(G.allocSize),
2984
+ width: "75px",
2985
+ sortable: !0,
2986
+ fixedWidth: !0,
2987
+ sort: O.Descending
2988
+ },
2989
+ {
2990
+ id: "removedSize",
2991
+ title: K(G.freedSize),
2992
+ width: "75px",
2993
+ sortable: !0,
2994
+ fixedWidth: !0
2995
+ },
2996
+ {
2997
+ id: "sizeDelta",
2998
+ title: K(G.sizeDelta),
2999
+ width: "75px",
3000
+ sortable: !0,
3001
+ fixedWidth: !0
3002
+ }
3003
+ ];
3004
+ super(e, t, {
3005
+ displayName: K(G.heapSnapshotDiff).toString(),
3006
+ columns: n
3007
+ });
3008
+ }
3009
+ defaultPopulateCount() {
3010
+ return 50;
3011
+ }
3012
+ sortFields(e, t) {
3013
+ switch (e) {
3014
+ case "object": return new A("name", t, "count", !1);
3015
+ case "addedCount": return new A("addedCount", t, "name", !0);
3016
+ case "removedCount": return new A("removedCount", t, "name", !0);
3017
+ case "countDelta": return new A("countDelta", t, "name", !0);
3018
+ case "addedSize": return new A("addedSize", t, "name", !0);
3019
+ case "removedSize": return new A("removedSize", t, "name", !0);
3020
+ case "sizeDelta": return new A("sizeDelta", t, "name", !0);
3021
+ default: throw Error(`Unknown column ${e}`);
3022
+ }
3023
+ }
3024
+ async setDataSource(e, t) {
3025
+ this.snapshot = e;
3026
+ }
3027
+ setBaseDataSource(e) {
3028
+ if (this.baseSnapshot = e, this.removeTopLevelNodes(), this.resetSortingCache(), this.baseSnapshot === this.snapshot) {
3029
+ this.dispatchEventToListeners("SortingComplete");
3030
+ return;
3031
+ }
3032
+ this.populateChildren();
3033
+ }
3034
+ async populateChildren() {
3035
+ if (this.snapshot === null || this.baseSnapshot?.uid === void 0) throw Error("Data sources have not been set correctly");
3036
+ let e = await this.snapshot.interfaceDefinitions(), t = await this.baseSnapshot.aggregatesForDiff(e), n = await this.snapshot.calculateSnapshotDiff(this.baseSnapshot.uid, t);
3037
+ for (let e in n) {
3038
+ let t = n[e];
3039
+ this.appendNode(this.rootNode(), new ar(this, e, t));
3040
+ }
3041
+ this.sortingChanged();
3042
+ }
3043
+ }, yr = class extends pr {
3044
+ linkifierInternal;
3045
+ topNodes;
3046
+ constructor(e, t) {
3047
+ let n = [
3048
+ {
3049
+ id: "liveCount",
3050
+ title: K(G.liveCount),
3051
+ width: "75px",
3052
+ sortable: !0,
3053
+ fixedWidth: !0
3054
+ },
3055
+ {
3056
+ id: "count",
3057
+ title: K(G.count),
3058
+ width: "65px",
3059
+ sortable: !0,
3060
+ fixedWidth: !0
3061
+ },
3062
+ {
3063
+ id: "liveSize",
3064
+ title: K(G.liveSize),
3065
+ width: "75px",
3066
+ sortable: !0,
3067
+ fixedWidth: !0
3068
+ },
3069
+ {
3070
+ id: "size",
3071
+ title: K(G.size),
3072
+ width: "75px",
3073
+ sortable: !0,
3074
+ fixedWidth: !0,
3075
+ sort: O.Descending
3076
+ },
3077
+ {
3078
+ id: "name",
3079
+ title: K(G.function),
3080
+ disclosure: !0,
3081
+ sortable: !0
3082
+ }
3083
+ ];
3084
+ super(e, t, {
3085
+ displayName: K(G.allocation).toString(),
3086
+ columns: n
3087
+ }), this.linkifierInternal = new E();
3088
+ }
3089
+ get linkifier() {
3090
+ return this.linkifierInternal;
3091
+ }
3092
+ dispose() {
3093
+ this.linkifierInternal.reset();
3094
+ }
3095
+ async setDataSource(e, t) {
3096
+ this.snapshot = e, this.topNodes = await this.snapshot.allocationTracesTops(), this.populateChildren();
3097
+ }
3098
+ populateChildren() {
3099
+ this.removeTopLevelNodes();
3100
+ let e = this.rootNode(), t = this.topNodes || [];
3101
+ for (let n of t) this.appendNode(e, new or(this, n));
3102
+ this.updateVisibleNodes(!0);
3103
+ }
3104
+ sortingChanged() {
3105
+ this.topNodes !== void 0 && (this.topNodes.sort(this.createComparator()), this.rootNode().removeChildren(), this.populateChildren());
3106
+ }
3107
+ createComparator() {
3108
+ let e = this.sortColumnId(), t = this.sortOrder() === O.Ascending ? 1 : -1;
3109
+ function n(n, r) {
3110
+ return n[e] > r[e] ? t : n[e] < r[e] ? -t : 0;
3111
+ }
3112
+ return n;
3113
+ }
3114
+ }, br = {
3115
+ buildingEdgeIndexes: "Building edge indexes…",
3116
+ buildingRetainers: "Building retainers…",
3117
+ propagatingDomState: "Propagating DOM state…",
3118
+ calculatingNodeFlags: "Calculating node flags…",
3119
+ calculatingDistances: "Calculating distances…",
3120
+ calculatingShallowSizes: "Calculating shallow sizes…",
3121
+ calculatingRetainedSizes: "Calculating retained sizes…",
3122
+ buildingDominatedNodes: "Building dominated nodes…",
3123
+ calculatingObjectNames: "Calculating object names…",
3124
+ calculatingStatistics: "Calculating statistics…",
3125
+ calculatingSamples: "Calculating samples…",
3126
+ buildingLocations: "Building locations…",
3127
+ finishedProcessing: "Finished processing.",
3128
+ buildingAllocationStatistics: "Building allocation statistics…",
3129
+ done: "Done",
3130
+ processingSnapshot: "Processing snapshot…",
3131
+ parsingStrings: "Parsing strings…",
3132
+ loadingSnapshotInfo: "Loading snapshot info…",
3133
+ loadingNodesD: "Loading nodes… {PH1}%",
3134
+ loadingEdgesD: "Loading edges… {PH1}%",
3135
+ loadingAllocationTracesD: "Loading allocation traces… {PH1}%",
3136
+ loadingSamples: "Loading samples…",
3137
+ loadingLocations: "Loading locations…",
3138
+ loadingStrings: "Loading strings…"
3139
+ }, xr = /* @__PURE__ */ e({
3140
+ AllocationPerspective: () => Ar,
3141
+ ComparisonPerspective: () => Or,
3142
+ ContainmentPerspective: () => kr,
3143
+ HeapAllocationStackView: () => Rr,
3144
+ HeapProfileHeader: () => Ir,
3145
+ HeapSnapshotProfileType: () => Mr,
3146
+ HeapSnapshotProfileTypeEvents: () => Nr,
3147
+ HeapSnapshotStatisticsView: () => Lr,
3148
+ HeapSnapshotView: () => Tr,
3149
+ Perspective: () => Er,
3150
+ StatisticsPerspective: () => jr,
3151
+ SummaryPerspective: () => Dr,
3152
+ TrackingHeapSnapshotProfileType: () => Pr,
3153
+ TrackingHeapSnapshotProfileTypeEvents: () => Fr
3154
+ }), q = {
3155
+ find: "Find",
3156
+ containment: "Containment",
3157
+ retainers: "Retainers",
3158
+ allocationStack: "Allocation stack",
3159
+ perspective: "Perspective",
3160
+ baseSnapshot: "Base snapshot",
3161
+ filter: "Filter",
3162
+ filterByClass: "Filter by class",
3163
+ code: "Code",
3164
+ strings: "Strings",
3165
+ jsArrays: "JS arrays",
3166
+ typedArrays: "Typed arrays",
3167
+ systemObjects: "System objects",
3168
+ otherJSObjects: "Other JS objects",
3169
+ otherNonJSObjects: "Other non-JS objects (such as HTML and CSS)",
3170
+ selectedSizeS: "Selected size: {PH1}",
3171
+ allObjects: "All objects",
3172
+ objectsAllocatedBeforeS: "Objects allocated before {PH1}",
3173
+ objectsAllocatedBetweenSAndS: "Objects allocated between {PH1} and {PH2}",
3174
+ duplicatedStrings: "Duplicated strings",
3175
+ objectsRetainedByDetachedDomNodes: "Objects retained by detached DOM nodes",
3176
+ objectsRetainedByConsole: "Objects retained by DevTools Console",
3177
+ objectsRetainedByEventHandlers: "Objects retained by Event Handlers",
3178
+ summary: "Summary",
3179
+ comparison: "Comparison",
3180
+ allocation: "Allocation",
3181
+ liveObjects: "Live objects",
3182
+ statistics: "Statistics",
3183
+ heapSnapshot: "Heap snapshot",
3184
+ takeHeapSnapshot: "Take heap snapshot",
3185
+ heapSnapshots: "Heap snapshots",
3186
+ heapSnapshotProfilesShowMemory: "See the memory distribution of JavaScript objects and related DOM nodes",
3187
+ snapshotting: "Snapshotting…",
3188
+ snapshotD: "Snapshot {PH1}",
3189
+ percentagePlaceholder: "{PH1}%",
3190
+ allocationInstrumentationOn: "Allocations on timeline",
3191
+ stopRecordingHeapProfile: "Stop recording heap profile",
3192
+ startRecordingHeapProfile: "Start recording heap profile",
3193
+ recordAllocationStacksExtra: "Allocation stack traces (more overhead)",
3194
+ recording: "Recording…",
3195
+ allocationTimelines: "Allocation timelines",
3196
+ AllocationTimelinesShowInstrumented: "Record memory allocations over time and isolate memory leaks by selecting intervals with allocations that are still alive",
3197
+ loading: "Loading…",
3198
+ savingD: "Saving… {PH1}%",
3199
+ heapMemoryUsage: "Heap memory usage",
3200
+ stackWasNotRecordedForThisObject: "Stack wasn't recorded for this object because it had been allocated before this profile recording started.",
3201
+ restoreIgnoredRetainers: "Restore ignored retainers"
3202
+ }, Sr = v("panels/profiler/HeapSnapshotView.ts", q), J = g.bind(void 0, Sr), Cr = v("panels/profiler/ModuleUIStrings.ts", br), wr = g.bind(void 0, Cr), Tr = class e extends Ye {
3203
+ searchResults = [];
3204
+ profile;
3205
+ linkifier;
3206
+ parentDataDisplayDelegate;
3207
+ searchableViewInternal;
3208
+ splitWidget;
3209
+ containmentDataGrid;
3210
+ containmentWidget;
3211
+ statisticsView;
3212
+ constructorsDataGrid;
3213
+ constructorsWidget;
3214
+ diffDataGrid;
3215
+ diffWidget;
3216
+ allocationDataGrid;
3217
+ allocationWidget;
3218
+ allocationStackView;
3219
+ tabbedPane;
3220
+ retainmentDataGrid;
3221
+ retainmentWidget;
3222
+ objectDetailsView;
3223
+ perspectives;
3224
+ comparisonPerspective;
3225
+ perspectiveSelect;
3226
+ baseSelect;
3227
+ filterSelect;
3228
+ classNameFilter;
3229
+ selectedSizeText;
3230
+ resetRetainersButton;
3231
+ popoverHelper;
3232
+ currentPerspectiveIndex;
3233
+ currentPerspective;
3234
+ dataGrid;
3235
+ searchThrottler;
3236
+ baseProfile;
3237
+ trackingOverviewGrid;
3238
+ currentSearchResultIndex = -1;
3239
+ currentSearch;
3240
+ #e;
3241
+ get currentQuery() {
3242
+ return this.currentSearch?.query;
3243
+ }
3244
+ set currentQuery(e) {
3245
+ this.currentSearch && (this.currentSearch.query = e);
3246
+ }
3247
+ constructor(e, t, n) {
3248
+ super({
3249
+ title: J(q.heapSnapshot),
3250
+ viewId: "heap-snapshot"
3251
+ }), this.#e = n, this.element.classList.add("heap-snapshot-view"), this.profile = t, this.linkifier = new E();
3252
+ let r = t.profileType();
3253
+ r.addEventListener("SnapshotReceived", this.onReceiveSnapshot, this), r.addEventListener(F.REMOVE_PROFILE_HEADER, this.onProfileHeaderRemoved, this);
3254
+ let i = r.id === Pr.TypeId;
3255
+ i && this.createOverview();
3256
+ let a = n.trackingHeapSnapshotProfileType.recordAllocationStacksSetting().get();
3257
+ this.parentDataDisplayDelegate = e, this.searchableViewInternal = new Ne(this, null), this.searchableViewInternal.setPlaceholder(J(q.find), J(q.find)), this.searchableViewInternal.show(this.element), this.splitWidget = new ke(!1, !0, "heap-snapshot-split-view-state", 200, 200), this.splitWidget.show(this.searchableViewInternal.element);
3258
+ let o = t.heapProfilerModel();
3259
+ this.containmentDataGrid = new mr(o, this, J(q.containment)), this.containmentDataGrid.addEventListener(k.SELECTED_NODE, this.selectionChanged, this), this.containmentWidget = this.containmentDataGrid.asWidget(), this.containmentWidget.setMinimumSize(50, 25), this.statisticsView = new Lr(), this.constructorsDataGrid = new _r(o, this), this.constructorsDataGrid.addEventListener(k.SELECTED_NODE, this.selectionChanged, this), this.constructorsWidget = this.constructorsDataGrid.asWidget(), this.constructorsWidget.setMinimumSize(50, 25), this.constructorsWidget.element.setAttribute("jslog", `${tt("heap-snapshot.constructors-view").track({ resize: !0 })}`), this.diffDataGrid = new vr(o, this), this.diffDataGrid.addEventListener(k.SELECTED_NODE, this.selectionChanged, this), this.diffWidget = this.diffDataGrid.asWidget(), this.diffWidget.setMinimumSize(50, 25), this.allocationDataGrid = null, i && a && (this.allocationDataGrid = new yr(o, this), this.allocationDataGrid.addEventListener(k.SELECTED_NODE, this.onSelectAllocationNode, this), this.allocationWidget = this.allocationDataGrid.asWidget(), this.allocationWidget.setMinimumSize(50, 25), this.allocationStackView = new Rr(o), this.allocationStackView.setMinimumSize(50, 25), this.tabbedPane = new ve()), this.retainmentDataGrid = new hr(o, this), this.retainmentWidget = this.retainmentDataGrid.asWidget(), this.retainmentWidget.setMinimumSize(50, 21), this.retainmentWidget.element.classList.add("retaining-paths-view"), this.retainmentWidget.element.setAttribute("jslog", `${tt("heap-snapshot.retaining-paths-view").track({ resize: !0 })}`);
3260
+ let s;
3261
+ if (this.allocationStackView) this.tabbedPane = new ve(), this.tabbedPane.appendTab("retainers", J(q.retainers), this.retainmentWidget), this.tabbedPane.appendTab("allocation-stack", J(q.allocationStack), this.allocationStackView), s = this.tabbedPane.headerElement(), this.objectDetailsView = this.tabbedPane;
3262
+ else {
3263
+ let e = document.createElement("div");
3264
+ e.classList.add("heap-snapshot-view-resizer");
3265
+ let t = e.createChild("div", "title");
3266
+ e.createChild("div", "verticalResizerIcon");
3267
+ let n = t.createChild("span");
3268
+ n.textContent = J(q.retainers), s = e, this.objectDetailsView = new w(), this.objectDetailsView.element.appendChild(e), this.retainmentWidget.show(this.objectDetailsView.element);
3269
+ }
3270
+ this.splitWidget.hideDefaultResizer(), this.splitWidget.installResizer(s), this.retainmentDataGrid.addEventListener(k.SELECTED_NODE, this.inspectedObjectChanged, this), this.retainmentDataGrid.reset(), this.perspectives = [], this.comparisonPerspective = new Or(), this.perspectives.push(new Dr()), t.profileType() !== this.#e.trackingHeapSnapshotProfileType && this.perspectives.push(this.comparisonPerspective), this.perspectives.push(new kr()), this.allocationWidget && this.perspectives.push(new Ar()), this.perspectives.push(new jr()), this.perspectiveSelect = new we(this.onSelectedPerspectiveChanged.bind(this), J(q.perspective), void 0, "profiler.heap-snapshot-perspective"), this.updatePerspectiveOptions(), this.baseSelect = new we(this.changeBase.bind(this), J(q.baseSnapshot), void 0, "profiler.heap-snapshot-base"), this.baseSelect.setVisible(!1), this.updateBaseOptions(), this.filterSelect = new we(this.changeFilter.bind(this), J(q.filter), void 0, "profiler.heap-snapshot-filter"), this.filterSelect.setVisible(!1), this.updateFilterOptions(), this.classNameFilter = new le(J(q.filterByClass)), this.classNameFilter.setVisible(!1), this.constructorsDataGrid.setNameFilter(this.classNameFilter), this.diffDataGrid.setNameFilter(this.classNameFilter), this.selectedSizeText = new ut();
3271
+ let c = J(q.restoreIgnoredRetainers);
3272
+ this.resetRetainersButton = new C(c, "clear-list", c), this.resetRetainersButton.setVisible(!1), this.resetRetainersButton.addEventListener(C.Events.CLICK, async () => {
3273
+ await this.retainmentDataGrid.snapshot?.unignoreAllNodesInRetainersView(), await this.retainmentDataGrid.dataSourceChanged();
3274
+ }), this.retainmentDataGrid.resetRetainersButton = this.resetRetainersButton, this.popoverHelper = new ht(this.element, this.getPopoverRequest.bind(this), "profiler.heap-snapshot-object"), this.popoverHelper.setDisableOnClick(!0), this.element.addEventListener("scroll", this.popoverHelper.hidePopover.bind(this.popoverHelper), !0), this.currentPerspectiveIndex = 0, this.currentPerspective = this.perspectives[0], this.currentPerspective.activate(this), this.dataGrid = this.currentPerspective.masterGrid(this), this.populate(), this.searchThrottler = new se(0);
3275
+ for (let e of this.profiles()) e.addEventListener(P.PROFILE_TITLE_CHANGED, this.updateControls, this);
3276
+ }
3277
+ createOverview() {
3278
+ let e = this.profile.profileType();
3279
+ this.trackingOverviewGrid = new Nn(), this.trackingOverviewGrid.addEventListener(Pn.IDS_RANGE_CHANGED, this.onIdsRangeChanged.bind(this)), !this.profile.fromFile() && e.profileBeingRecorded() === this.profile && (e.addEventListener("HeapStatsUpdate", this.onHeapStatsUpdate, this), e.addEventListener("TrackingStopped", this.onStopTracking, this), this.trackingOverviewGrid.start());
3280
+ }
3281
+ onStopTracking() {
3282
+ let e = this.profile.profileType();
3283
+ e.removeEventListener("HeapStatsUpdate", this.onHeapStatsUpdate, this), e.removeEventListener("TrackingStopped", this.onStopTracking, this), this.trackingOverviewGrid && this.trackingOverviewGrid.stop();
3284
+ }
3285
+ onHeapStatsUpdate({ data: e }) {
3286
+ this.trackingOverviewGrid && this.trackingOverviewGrid.setSamples(e);
3287
+ }
3288
+ searchableView() {
3289
+ return this.searchableViewInternal;
3290
+ }
3291
+ showProfile(e) {
3292
+ return this.parentDataDisplayDelegate.showProfile(e);
3293
+ }
3294
+ showObject(e, t) {
3295
+ Number(e) <= this.profile.maxJSObjectId ? this.selectLiveObject(t, e) : this.parentDataDisplayDelegate.showObject(e, t);
3296
+ }
3297
+ async linkifyObject(e) {
3298
+ let t = this.profile.heapProfilerModel();
3299
+ if (!t) return null;
3300
+ let n = await this.profile.getLocation(e);
3301
+ if (!n) return null;
3302
+ let r = t.runtimeModel().debuggerModel().createRawLocationByScriptId(String(n.scriptId), n.lineNumber, n.columnNumber);
3303
+ if (!r) return null;
3304
+ let i = r.script()?.sourceURL;
3305
+ return i && this.linkifier ? this.linkifier.linkifyRawLocation(r, i) : null;
3306
+ }
3307
+ async populate() {
3308
+ let e = await this.profile.loadPromise;
3309
+ if (this.retrieveStatistics(e), this.dataGrid && this.dataGrid.setDataSource(e, 0), this.profile.profileType().id === Pr.TypeId && this.profile.fromFile()) {
3310
+ let t = await e.getSamples();
3311
+ if (t) {
3312
+ console.assert(!!t.timestamps.length);
3313
+ let e = new In();
3314
+ e.sizes = t.sizes, e.ids = t.lastAssignedIds, e.timestamps = t.timestamps, e.max = t.sizes, e.totalTime = Math.max(t.timestamps[t.timestamps.length - 1] || 0, 1e4), this.trackingOverviewGrid && this.trackingOverviewGrid.setSamples(e);
3315
+ }
3316
+ }
3317
+ let t = this.profiles().indexOf(this.profile);
3318
+ this.baseSelect.setSelectedIndex(Math.max(0, t - 1)), this.trackingOverviewGrid && this.trackingOverviewGrid.updateGrid();
3319
+ }
3320
+ async retrieveStatistics(e) {
3321
+ let t = await e.getStatistics(), { v8heap: n, native: r } = t, i = n.total - n.code - n.strings - n.jsArrays - n.system, a = [
3322
+ {
3323
+ value: n.code,
3324
+ color: "var(--app-color-code)",
3325
+ title: J(q.code)
3326
+ },
3327
+ {
3328
+ value: n.strings,
3329
+ color: "var(--app-color-strings)",
3330
+ title: J(q.strings)
3331
+ },
3332
+ {
3333
+ value: n.jsArrays,
3334
+ color: "var(--app-color-js-arrays)",
3335
+ title: J(q.jsArrays)
3336
+ },
3337
+ {
3338
+ value: r.typedArrays,
3339
+ color: "var(--app-color-typed-arrays)",
3340
+ title: J(q.typedArrays)
3341
+ },
3342
+ {
3343
+ value: n.system,
3344
+ color: "var(--app-color-system)",
3345
+ title: J(q.systemObjects)
3346
+ },
3347
+ {
3348
+ value: i,
3349
+ color: "var(--app-color-other-js-objects)",
3350
+ title: J(q.otherJSObjects)
3351
+ },
3352
+ {
3353
+ value: r.total - r.typedArrays,
3354
+ color: "var(--app-color-other-non-js-objects)",
3355
+ title: J(q.otherNonJSObjects)
3356
+ }
3357
+ ];
3358
+ return this.statisticsView.setTotalAndRecords(t.total, a), t;
3359
+ }
3360
+ onIdsRangeChanged(e) {
3361
+ let { minId: t, maxId: n } = e.data;
3362
+ this.selectedSizeText.setText(J(q.selectedSizeS, { PH1: m(e.data.size) })), this.constructorsDataGrid.snapshot && this.constructorsDataGrid.setSelectionRange(t, n);
3363
+ }
3364
+ async toolbarItems() {
3365
+ let e = [this.perspectiveSelect, this.classNameFilter];
3366
+ return this.profile.profileType() !== this.#e.trackingHeapSnapshotProfileType && e.push(this.baseSelect, this.filterSelect), e.push(this.selectedSizeText), e.push(this.resetRetainersButton), e;
3367
+ }
3368
+ willHide() {
3369
+ super.willHide(), this.currentSearchResultIndex = -1, this.popoverHelper.hidePopover();
3370
+ }
3371
+ supportsCaseSensitiveSearch() {
3372
+ return !0;
3373
+ }
3374
+ supportsWholeWordSearch() {
3375
+ return !1;
3376
+ }
3377
+ supportsRegexSearch() {
3378
+ return !1;
3379
+ }
3380
+ onSearchCanceled() {
3381
+ this.currentSearchResultIndex = -1, this.searchResults = [];
3382
+ }
3383
+ selectRevealedNode(e) {
3384
+ e && e.select();
3385
+ }
3386
+ performSearch(e, t, n) {
3387
+ let r = new Ht(e.query.trim(), e.caseSensitive, e.wholeWord, e.isRegex, t, n || !1);
3388
+ this.searchThrottler.schedule(this.performSearchInternal.bind(this, r));
3389
+ }
3390
+ async performSearchInternal(e) {
3391
+ if (this.onSearchCanceled(), !this.currentPerspective.supportsSearch()) return;
3392
+ this.currentSearch = e;
3393
+ let t = e.query.trim();
3394
+ if (!t) return;
3395
+ if (t.charAt(0) === "@") {
3396
+ let e = parseInt(t.substring(1), 10);
3397
+ if (isNaN(e) || !this.dataGrid) return;
3398
+ let n = await this.dataGrid.revealObjectByHeapSnapshotId(String(e));
3399
+ this.selectRevealedNode(n);
3400
+ return;
3401
+ }
3402
+ if (!this.profile.snapshotProxy || !this.dataGrid) return;
3403
+ let n = this.dataGrid.nodeFilter();
3404
+ this.searchResults = n ? await this.profile.snapshotProxy.search(this.currentSearch, n) : [], this.searchableViewInternal.updateSearchMatchesCount(this.searchResults.length), this.searchResults.length && (this.currentSearchResultIndex = e.jumpBackward ? this.searchResults.length - 1 : 0), await this.jumpToSearchResult(this.currentSearchResultIndex);
3405
+ }
3406
+ jumpToNextSearchResult() {
3407
+ this.searchResults.length && (this.currentSearchResultIndex = (this.currentSearchResultIndex + 1) % this.searchResults.length, this.searchThrottler.schedule(this.jumpToSearchResult.bind(this, this.currentSearchResultIndex)));
3408
+ }
3409
+ jumpToPreviousSearchResult() {
3410
+ this.searchResults.length && (this.currentSearchResultIndex = (this.currentSearchResultIndex + this.searchResults.length - 1) % this.searchResults.length, this.searchThrottler.schedule(this.jumpToSearchResult.bind(this, this.currentSearchResultIndex)));
3411
+ }
3412
+ async jumpToSearchResult(e) {
3413
+ if (this.searchableViewInternal.updateCurrentMatchIndex(e), e === -1 || !this.dataGrid) return;
3414
+ let t = await this.dataGrid.revealObjectByHeapSnapshotId(String(this.searchResults[e]));
3415
+ this.selectRevealedNode(t);
3416
+ }
3417
+ refreshVisibleData() {
3418
+ if (!this.dataGrid) return;
3419
+ let e = this.dataGrid.rootNode().children[0];
3420
+ for (; e;) e.refresh(), e = e.traverseNextNode(!1, null, !0);
3421
+ }
3422
+ changeBase() {
3423
+ if (this.baseProfile === this.profiles()[this.baseSelect.selectedIndex()]) return;
3424
+ this.baseProfile = this.profiles()[this.baseSelect.selectedIndex()];
3425
+ let e = this.dataGrid;
3426
+ e.snapshot && this.baseProfile.loadPromise.then(e.setBaseDataSource.bind(e)), !(!this.currentSearch || !this.searchResults) && this.performSearch(this.currentSearch, !1);
3427
+ }
3428
+ static ALWAYS_AVAILABLE_FILTERS = [
3429
+ {
3430
+ uiName: J(q.duplicatedStrings),
3431
+ filterName: "duplicatedStrings"
3432
+ },
3433
+ {
3434
+ uiName: J(q.objectsRetainedByDetachedDomNodes),
3435
+ filterName: "objectsRetainedByDetachedDomNodes"
3436
+ },
3437
+ {
3438
+ uiName: J(q.objectsRetainedByConsole),
3439
+ filterName: "objectsRetainedByConsole"
3440
+ },
3441
+ {
3442
+ uiName: J(q.objectsRetainedByEventHandlers),
3443
+ filterName: "objectsRetainedByEventHandlers"
3444
+ }
3445
+ ];
3446
+ changeFilter() {
3447
+ let t = this.filterSelect.selectedIndex(), n, r = this.filterSelect.size() - e.ALWAYS_AVAILABLE_FILTERS.length;
3448
+ t >= r && (n = e.ALWAYS_AVAILABLE_FILTERS[t - r].filterName, t = 0);
3449
+ let i = t - 1;
3450
+ this.dataGrid && (this.dataGrid.filterSelectIndexChanged(this.profiles(), i, n), !(!this.currentSearch || !this.searchResults) && this.performSearch(this.currentSearch, !1));
3451
+ }
3452
+ profiles() {
3453
+ return this.profile.profileType().getProfiles();
3454
+ }
3455
+ selectionChanged(e) {
3456
+ let t = e.data;
3457
+ this.setSelectedNodeForDetailsView(t), this.inspectedObjectChanged(e);
3458
+ }
3459
+ onSelectAllocationNode(e) {
3460
+ let t = e.data;
3461
+ this.constructorsDataGrid.setAllocationNodeId(t.allocationNodeId()), this.setSelectedNodeForDetailsView(null);
3462
+ }
3463
+ inspectedObjectChanged(e) {
3464
+ let t = e.data, n = this.profile.heapProfilerModel();
3465
+ n && t instanceof $n && n.addInspectedHeapObject(String(t.snapshotNodeId));
3466
+ }
3467
+ setSelectedNodeForDetailsView(e) {
3468
+ let t = e?.retainersDataSource();
3469
+ t ? (this.retainmentDataGrid.setDataSource(t.snapshot, t.snapshotNodeIndex, t.snapshotNodeId), this.allocationStackView && this.allocationStackView.setAllocatedObject(t.snapshot, t.snapshotNodeIndex)) : (this.allocationStackView && this.allocationStackView.clear(), this.retainmentDataGrid.reset());
3470
+ }
3471
+ async changePerspectiveAndWait(e) {
3472
+ let t = this.perspectives.findIndex((t) => t.title() === e);
3473
+ if (t === -1 || this.currentPerspectiveIndex === t) return;
3474
+ let n = this.perspectives[t].masterGrid(this);
3475
+ if (!n) return;
3476
+ let r = n.once(fr.ContentShown), i = this.perspectiveSelect.options().find((e) => e.value === String(t));
3477
+ this.perspectiveSelect.select(i), this.changePerspective(t), await r;
3478
+ }
3479
+ async updateDataSourceAndView() {
3480
+ let e = this.dataGrid;
3481
+ if (!e || e.snapshot) return;
3482
+ let t = await this.profile.loadPromise;
3483
+ if (this.dataGrid !== e || (e.snapshot !== t && e.setDataSource(t, 0), e !== this.diffDataGrid)) return;
3484
+ this.baseProfile ||= this.profiles()[this.baseSelect.selectedIndex()];
3485
+ let n = await this.baseProfile.loadPromise;
3486
+ this.diffDataGrid.baseSnapshot !== n && this.diffDataGrid.setBaseDataSource(n);
3487
+ }
3488
+ onSelectedPerspectiveChanged(e) {
3489
+ this.changePerspective(Number(e.target.selectedOptions[0].value));
3490
+ }
3491
+ changePerspective(e) {
3492
+ if (e === this.currentPerspectiveIndex) return;
3493
+ this.currentPerspectiveIndex = e, this.currentPerspective.deactivate(this);
3494
+ let t = this.perspectives[e];
3495
+ this.currentPerspective = t, this.dataGrid = t.masterGrid(this), t.activate(this), this.refreshVisibleData(), this.dataGrid && this.dataGrid.updateWidths(), this.updateDataSourceAndView(), !(!this.currentSearch || !this.searchResults) && this.performSearch(this.currentSearch, !1);
3496
+ }
3497
+ async selectLiveObject(e, t) {
3498
+ if (await this.changePerspectiveAndWait(e), !this.dataGrid) return;
3499
+ let n = await this.dataGrid.revealObjectByHeapSnapshotId(t);
3500
+ n ? n.select() : d.instance().error("Cannot find corresponding heap snapshot node");
3501
+ }
3502
+ getPopoverRequest(e) {
3503
+ let t = pt(e.target, "span"), n = pt(e.target, "tr");
3504
+ if (!n || !this.dataGrid) return null;
3505
+ let r = this.dataGrid.dataGridNodeFromNode(n) || this.containmentDataGrid.dataGridNodeFromNode(n) || this.constructorsDataGrid.dataGridNodeFromNode(n) || this.diffDataGrid.dataGridNodeFromNode(n) || this.allocationDataGrid?.dataGridNodeFromNode(n) || this.retainmentDataGrid.dataGridNodeFromNode(n), i = this.profile.heapProfilerModel();
3506
+ if (!r || !t || !i) return null;
3507
+ let a;
3508
+ return {
3509
+ box: t.boxInWindow(),
3510
+ show: async (e) => {
3511
+ if (!i) return !1;
3512
+ let t = await r.queryObjectContent(i, "popover");
3513
+ return a = t instanceof Me ? await St.buildObjectPopover(t, e) : St.buildDescriptionPopover(t.description, t.link, e), a ? !0 : (i.runtimeModel().releaseObjectGroup("popover"), !1);
3514
+ },
3515
+ hide: () => {
3516
+ i.runtimeModel().releaseObjectGroup("popover"), a && a.dispose();
3517
+ }
3518
+ };
3519
+ }
3520
+ updatePerspectiveOptions() {
3521
+ let e = this.profiles().length > 1;
3522
+ this.perspectiveSelect.removeOptions(), this.perspectives.forEach((t, n) => {
3523
+ if (e || t !== this.comparisonPerspective) {
3524
+ let e = this.perspectiveSelect.createOption(t.title(), String(n));
3525
+ t === this.currentPerspective && this.perspectiveSelect.select(e);
3526
+ }
3527
+ });
3528
+ }
3529
+ updateBaseOptions() {
3530
+ let e = this.profiles(), t = this.baseSelect.selectedIndex();
3531
+ this.baseSelect.removeOptions();
3532
+ for (let t of e) this.baseSelect.createOption(t.title);
3533
+ t > -1 && this.baseSelect.setSelectedIndex(t);
3534
+ }
3535
+ updateFilterOptions() {
3536
+ let t = this.profiles(), n = this.filterSelect.selectedIndex(), r = this.filterSelect.size();
3537
+ this.filterSelect.removeOptions(), this.filterSelect.createOption(J(q.allObjects));
3538
+ for (let e = 0; e < t.length; ++e) {
3539
+ let n;
3540
+ n = e ? J(q.objectsAllocatedBetweenSAndS, {
3541
+ PH1: t[e - 1].title,
3542
+ PH2: t[e].title
3543
+ }) : J(q.objectsAllocatedBeforeS, { PH1: t[e].title }), this.filterSelect.createOption(n);
3544
+ }
3545
+ let i = this.filterSelect.size(), a = this.filterSelect.createOption("—".repeat(18));
3546
+ a.disabled = !0;
3547
+ for (let t of e.ALWAYS_AVAILABLE_FILTERS) this.filterSelect.createOption(t.uiName);
3548
+ let o = this.filterSelect.size();
3549
+ if (n > -1) {
3550
+ let t = r - n;
3551
+ t <= e.ALWAYS_AVAILABLE_FILTERS.length ? this.filterSelect.setSelectedIndex(o - t) : n >= i ? this.filterSelect.setSelectedIndex(-1) : this.filterSelect.setSelectedIndex(n);
3552
+ }
3553
+ }
3554
+ updateControls() {
3555
+ this.updatePerspectiveOptions(), this.updateBaseOptions(), this.updateFilterOptions();
3556
+ }
3557
+ onReceiveSnapshot(e) {
3558
+ this.updateControls(), e.data.addEventListener(P.PROFILE_TITLE_CHANGED, this.updateControls, this);
3559
+ }
3560
+ onProfileHeaderRemoved(e) {
3561
+ let t = e.data;
3562
+ t.removeEventListener(P.PROFILE_TITLE_CHANGED, this.updateControls, this), this.profile === t ? (this.detach(), this.profile.profileType().removeEventListener("SnapshotReceived", this.onReceiveSnapshot, this), this.profile.profileType().removeEventListener(F.REMOVE_PROFILE_HEADER, this.onProfileHeaderRemoved, this), this.dispose()) : this.updateControls();
3563
+ }
3564
+ dispose() {
3565
+ this.linkifier.dispose(), this.popoverHelper.dispose(), this.allocationStackView && (this.allocationStackView.clear(), this.allocationDataGrid && this.allocationDataGrid.dispose()), this.onStopTracking(), this.trackingOverviewGrid && this.trackingOverviewGrid.removeEventListener(Pn.IDS_RANGE_CHANGED, this.onIdsRangeChanged.bind(this));
3566
+ }
3567
+ }, Er = class {
3568
+ titleInternal;
3569
+ constructor(e) {
3570
+ this.titleInternal = e;
3571
+ }
3572
+ activate(e) {}
3573
+ deactivate(e) {
3574
+ e.baseSelect.setVisible(!1), e.filterSelect.setVisible(!1), e.classNameFilter.setVisible(!1), e.trackingOverviewGrid && e.trackingOverviewGrid.detach(), e.allocationWidget && e.allocationWidget.detach(), e.statisticsView && e.statisticsView.detach(), e.splitWidget.detach(), e.splitWidget.detachChildWidgets();
3575
+ }
3576
+ masterGrid(e) {
3577
+ return null;
3578
+ }
3579
+ title() {
3580
+ return this.titleInternal;
3581
+ }
3582
+ supportsSearch() {
3583
+ return !1;
3584
+ }
3585
+ }, Dr = class extends Er {
3586
+ constructor() {
3587
+ super(J(q.summary));
3588
+ }
3589
+ activate(e) {
3590
+ e.splitWidget.setMainWidget(e.constructorsWidget), e.splitWidget.setSidebarWidget(e.objectDetailsView), e.splitWidget.show(e.searchableViewInternal.element), e.filterSelect.setVisible(!0), e.classNameFilter.setVisible(!0), e.trackingOverviewGrid && (e.trackingOverviewGrid.show(e.searchableViewInternal.element, e.splitWidget.element), e.trackingOverviewGrid.update(), e.trackingOverviewGrid.updateGrid());
3591
+ }
3592
+ masterGrid(e) {
3593
+ return e.constructorsDataGrid;
3594
+ }
3595
+ supportsSearch() {
3596
+ return !0;
3597
+ }
3598
+ }, Or = class extends Er {
3599
+ constructor() {
3600
+ super(J(q.comparison));
3601
+ }
3602
+ activate(e) {
3603
+ e.splitWidget.setMainWidget(e.diffWidget), e.splitWidget.setSidebarWidget(e.objectDetailsView), e.splitWidget.show(e.searchableViewInternal.element), e.baseSelect.setVisible(!0), e.classNameFilter.setVisible(!0);
3604
+ }
3605
+ masterGrid(e) {
3606
+ return e.diffDataGrid;
3607
+ }
3608
+ supportsSearch() {
3609
+ return !0;
3610
+ }
3611
+ }, kr = class extends Er {
3612
+ constructor() {
3613
+ super(J(q.containment));
3614
+ }
3615
+ activate(e) {
3616
+ e.splitWidget.setMainWidget(e.containmentWidget), e.splitWidget.setSidebarWidget(e.objectDetailsView), e.splitWidget.show(e.searchableViewInternal.element);
3617
+ }
3618
+ masterGrid(e) {
3619
+ return e.containmentDataGrid;
3620
+ }
3621
+ }, Ar = class extends Er {
3622
+ allocationSplitWidget;
3623
+ constructor() {
3624
+ super(J(q.allocation)), this.allocationSplitWidget = new ke(!1, !0, "heap-snapshot-allocation-split-view-state", 200, 200), this.allocationSplitWidget.setSidebarWidget(new w());
3625
+ }
3626
+ activate(e) {
3627
+ e.allocationWidget && this.allocationSplitWidget.setMainWidget(e.allocationWidget), e.splitWidget.setMainWidget(e.constructorsWidget), e.splitWidget.setSidebarWidget(e.objectDetailsView);
3628
+ let t = new w(), n = document.createElement("div");
3629
+ n.classList.add("heap-snapshot-view-resizer");
3630
+ let r = n.createChild("div", "title").createChild("span");
3631
+ if (n.createChild("div", "verticalResizerIcon"), r.textContent = J(q.liveObjects), this.allocationSplitWidget.hideDefaultResizer(), this.allocationSplitWidget.installResizer(n), t.element.appendChild(n), e.splitWidget.show(t.element), this.allocationSplitWidget.setSidebarWidget(t), this.allocationSplitWidget.show(e.searchableViewInternal.element), e.constructorsDataGrid.clear(), e.allocationDataGrid) {
3632
+ let t = e.allocationDataGrid.selectedNode;
3633
+ t && e.constructorsDataGrid.setAllocationNodeId(t.allocationNodeId());
3634
+ }
3635
+ }
3636
+ deactivate(e) {
3637
+ this.allocationSplitWidget.detach(), super.deactivate(e);
3638
+ }
3639
+ masterGrid(e) {
3640
+ return e.allocationDataGrid;
3641
+ }
3642
+ }, jr = class extends Er {
3643
+ constructor() {
3644
+ super(J(q.statistics));
3645
+ }
3646
+ activate(e) {
3647
+ e.statisticsView.show(e.searchableViewInternal.element);
3648
+ }
3649
+ masterGrid(e) {
3650
+ return null;
3651
+ }
3652
+ }, Mr = class e extends _(dn) {
3653
+ customContentInternal;
3654
+ constructor(t, n) {
3655
+ super(t || e.TypeId, n || J(q.heapSnapshot)), b.instance().observeModels(y, this), b.instance().addModelListener(y, x.RESET_PROFILES, this.resetProfiles, this), b.instance().addModelListener(y, x.ADD_HEAP_SNAPSHOT_CHUNK, this.addHeapSnapshotChunk, this), b.instance().addModelListener(y, x.REPORT_HEAP_SNAPSHOT_PROGRESS, this.reportHeapSnapshotProgress, this), this.customContentInternal = null;
3656
+ }
3657
+ modelAdded(e) {
3658
+ e.enable();
3659
+ }
3660
+ modelRemoved(e) {}
3661
+ getProfiles() {
3662
+ return super.getProfiles();
3663
+ }
3664
+ fileExtension() {
3665
+ return ".heapsnapshot";
3666
+ }
3667
+ get buttonTooltip() {
3668
+ return J(q.takeHeapSnapshot);
3669
+ }
3670
+ isInstantProfile() {
3671
+ return !0;
3672
+ }
3673
+ buttonClicked() {
3674
+ return this.takeHeapSnapshot(), et.actionTaken(qe.ProfilesHeapProfileTaken), !1;
3675
+ }
3676
+ get treeItemTitle() {
3677
+ return J(q.heapSnapshots);
3678
+ }
3679
+ get description() {
3680
+ return J(q.heapSnapshotProfilesShowMemory);
3681
+ }
3682
+ createProfileLoadedFromFile(e) {
3683
+ return new Ir(null, this, e);
3684
+ }
3685
+ async takeHeapSnapshot() {
3686
+ if (this.profileBeingRecorded()) return;
3687
+ let e = T.instance().flavor(y);
3688
+ if (!e) return;
3689
+ let t = new Ir(e, this);
3690
+ this.setProfileBeingRecorded(t), this.addProfile(t), t.updateStatus(J(q.snapshotting)), await e.takeHeapSnapshot({
3691
+ reportProgress: !0,
3692
+ captureNumericValue: !0,
3693
+ exposeInternals: !0
3694
+ }), t = this.profileBeingRecorded(), t && (t.title = J(q.snapshotD, { PH1: t.uid }), t.finishLoad(), this.setProfileBeingRecorded(null), this.dispatchEventToListeners(F.PROFILE_COMPLETE, t));
3695
+ }
3696
+ addHeapSnapshotChunk(e) {
3697
+ let t = this.profileBeingRecorded();
3698
+ t && t.transferChunk(e.data);
3699
+ }
3700
+ reportHeapSnapshotProgress(e) {
3701
+ let t = this.profileBeingRecorded();
3702
+ if (!t) return;
3703
+ let { done: n, total: r, finished: i } = e.data;
3704
+ t.updateStatus(J(q.percentagePlaceholder, { PH1: (n / r * 100).toFixed(0) }), !0), i && t.prepareToLoad();
3705
+ }
3706
+ resetProfiles(e) {
3707
+ let t = e.data;
3708
+ for (let e of this.getProfiles()) e.heapProfilerModel() === t && this.removeProfile(e);
3709
+ }
3710
+ snapshotReceived(e) {
3711
+ this.profileBeingRecorded() === e && this.setProfileBeingRecorded(null), this.dispatchEventToListeners("SnapshotReceived", e);
3712
+ }
3713
+ static TypeId = "HEAP";
3714
+ static SnapshotReceived = "SnapshotReceived";
3715
+ }, Nr = /* @__PURE__ */ function(e) {
3716
+ return e.SNAPSHOT_RECEIVED = "SnapshotReceived", e;
3717
+ }({}), Pr = class e extends _(Mr) {
3718
+ recordAllocationStacksSettingInternal;
3719
+ customContentInternal;
3720
+ recording;
3721
+ profileSamples;
3722
+ constructor() {
3723
+ super(e.TypeId, J(q.allocationInstrumentationOn)), this.recordAllocationStacksSettingInternal = re.instance().createSetting("record-allocation-stacks", !1), this.customContentInternal = null, this.recording = !1;
3724
+ }
3725
+ modelAdded(e) {
3726
+ super.modelAdded(e), e.addEventListener(x.HEAP_STATS_UPDATED, this.heapStatsUpdate, this), e.addEventListener(x.LAST_SEEN_OBJECT_ID, this.lastSeenObjectId, this);
3727
+ }
3728
+ modelRemoved(e) {
3729
+ super.modelRemoved(e), e.removeEventListener(x.HEAP_STATS_UPDATED, this.heapStatsUpdate, this), e.removeEventListener(x.LAST_SEEN_OBJECT_ID, this.lastSeenObjectId, this);
3730
+ }
3731
+ heapStatsUpdate(e) {
3732
+ if (!this.profileSamples) return;
3733
+ let t = e.data, n;
3734
+ for (let e = 0; e < t.length; e += 3) {
3735
+ n = t[e];
3736
+ let r = t[e + 2];
3737
+ this.profileSamples.sizes[n] = r, this.profileSamples.max[n] || (this.profileSamples.max[n] = r);
3738
+ }
3739
+ }
3740
+ lastSeenObjectId(e) {
3741
+ let t = this.profileSamples;
3742
+ if (!t) return;
3743
+ let { lastSeenObjectId: n, timestamp: r } = e.data, i = Math.max(t.ids.length, t.max.length - 1);
3744
+ t.ids[i] = n, t.max[i] || (t.max[i] = 0, t.sizes[i] = 0), t.timestamps[i] = r, t.totalTime < r - t.timestamps[0] && (t.totalTime *= 2), this.profileSamples && this.dispatchEventToListeners("HeapStatsUpdate", this.profileSamples);
3745
+ let a = this.profileBeingRecorded();
3746
+ a && a.updateStatus(null, !0);
3747
+ }
3748
+ hasTemporaryView() {
3749
+ return !0;
3750
+ }
3751
+ get buttonTooltip() {
3752
+ return this.recording ? J(q.stopRecordingHeapProfile) : J(q.startRecordingHeapProfile);
3753
+ }
3754
+ isInstantProfile() {
3755
+ return !1;
3756
+ }
3757
+ buttonClicked() {
3758
+ return this.toggleRecording();
3759
+ }
3760
+ async startRecordingProfile() {
3761
+ if (this.profileBeingRecorded()) return;
3762
+ let e = this.addNewProfile();
3763
+ e && e.startTrackingHeapObjects(this.recordAllocationStacksSettingInternal.get());
3764
+ }
3765
+ customContent() {
3766
+ let e = At(J(q.recordAllocationStacksExtra), this.recordAllocationStacksSettingInternal);
3767
+ return this.customContentInternal = e, e;
3768
+ }
3769
+ setCustomContentEnabled(e) {
3770
+ this.customContentInternal && (this.customContentInternal.disabled = !e);
3771
+ }
3772
+ recordAllocationStacksSetting() {
3773
+ return this.recordAllocationStacksSettingInternal;
3774
+ }
3775
+ addNewProfile() {
3776
+ let e = T.instance().flavor(y);
3777
+ return e ? (this.setProfileBeingRecorded(new Ir(e, this, void 0)), this.profileSamples = new In(), this.recording = !0, this.addProfile(this.profileBeingRecorded()), this.profileBeingRecorded().updateStatus(J(q.recording)), this.dispatchEventToListeners("TrackingStarted"), e) : null;
3778
+ }
3779
+ async stopRecordingProfile() {
3780
+ let e = this.profileBeingRecorded();
3781
+ e.updateStatus(J(q.snapshotting));
3782
+ let t = e.heapProfilerModel().stopTrackingHeapObjects(!0);
3783
+ this.recording = !1, this.dispatchEventToListeners("TrackingStopped"), await t, e = this.profileBeingRecorded(), e && (e.finishLoad(), this.profileSamples = null, this.setProfileBeingRecorded(null), this.dispatchEventToListeners(F.PROFILE_COMPLETE, e));
3784
+ }
3785
+ toggleRecording() {
3786
+ return this.recording ? this.stopRecordingProfile() : this.startRecordingProfile(), this.recording;
3787
+ }
3788
+ fileExtension() {
3789
+ return ".heaptimeline";
3790
+ }
3791
+ get treeItemTitle() {
3792
+ return J(q.allocationTimelines);
3793
+ }
3794
+ get description() {
3795
+ return J(q.AllocationTimelinesShowInstrumented);
3796
+ }
3797
+ resetProfiles(e) {
3798
+ let t = this.recording;
3799
+ this.setProfileBeingRecorded(null), super.resetProfiles(e), this.profileSamples = null, t && this.addNewProfile();
3800
+ }
3801
+ profileBeingRecordedRemoved() {
3802
+ this.stopRecordingProfile(), this.profileSamples = null;
3803
+ }
3804
+ static TypeId = "HEAP-RECORD";
3805
+ static HeapStatsUpdate = "HeapStatsUpdate";
3806
+ static TrackingStarted = "TrackingStarted";
3807
+ static TrackingStopped = "TrackingStopped";
3808
+ }, Fr = /* @__PURE__ */ function(e) {
3809
+ return e.HEAP_STATS_UPDATE = "HeapStatsUpdate", e.TRACKING_STARTED = "TrackingStarted", e.TRACKING_STOPPED = "TrackingStopped", e;
3810
+ }({}), Ir = class extends N {
3811
+ heapProfilerModelInternal;
3812
+ maxJSObjectId = -1;
3813
+ workerProxy = null;
3814
+ receiver = null;
3815
+ snapshotProxy = null;
3816
+ loadPromise;
3817
+ fulfillLoad;
3818
+ totalNumberOfChunks = 0;
3819
+ bufferedWriter = null;
3820
+ onTempFileReady = null;
3821
+ failedToCreateTempFile;
3822
+ wasDisposed;
3823
+ fileName;
3824
+ constructor(e, t, n) {
3825
+ super(t, n || J(q.snapshotD, { PH1: t.nextProfileUid() })), this.heapProfilerModelInternal = e;
3826
+ let { promise: r, resolve: i } = Promise.withResolvers();
3827
+ this.loadPromise = r, this.fulfillLoad = i;
3828
+ }
3829
+ heapProfilerModel() {
3830
+ return this.heapProfilerModelInternal;
3831
+ }
3832
+ async getLocation(e) {
3833
+ return this.snapshotProxy ? await this.snapshotProxy.getLocation(e) : null;
3834
+ }
3835
+ prepareToLoad() {
3836
+ console.assert(!this.receiver, "Already loading"), this.setupWorker(), this.updateStatus(J(q.loading), !0);
3837
+ }
3838
+ finishLoad() {
3839
+ !this.wasDisposed && this.receiver && this.receiver.close(), this.bufferedWriter && this.didWriteToTempFile(this.bufferedWriter);
3840
+ }
3841
+ didWriteToTempFile(e) {
3842
+ if (this.wasDisposed) {
3843
+ e && e.remove();
3844
+ return;
3845
+ }
3846
+ this.tempFile = e, e || (this.failedToCreateTempFile = !0), this.onTempFileReady &&= (this.onTempFileReady(), null);
3847
+ }
3848
+ setupWorker() {
3849
+ console.assert(!this.workerProxy, "HeapSnapshotWorkerProxy already exists"), this.workerProxy = new Wt(this.handleWorkerEvent.bind(this)), this.workerProxy.addEventListener(Wt.Events.WAIT, (e) => {
3850
+ this.updateStatus(null, e.data);
3851
+ }, this), this.receiver = this.workerProxy.createLoader(this.uid, this.snapshotReceived.bind(this));
3852
+ }
3853
+ handleWorkerEvent(e, t) {
3854
+ if (Ut.BrokenSnapshot === e) {
3855
+ d.instance().error(t);
3856
+ return;
3857
+ }
3858
+ if (Ut.Update !== e) return;
3859
+ let n = ae(t);
3860
+ this.updateStatus(wr(n.string, n.values));
3861
+ }
3862
+ dispose() {
3863
+ this.workerProxy && this.workerProxy.dispose(), this.removeTempFile(), this.wasDisposed = !0;
3864
+ }
3865
+ didCompleteSnapshotTransfer() {
3866
+ this.snapshotProxy && this.updateStatus(m(this.snapshotProxy.totalSize), !1);
3867
+ }
3868
+ transferChunk(e) {
3869
+ this.bufferedWriter ||= new xt(), this.bufferedWriter.write([e]), ++this.totalNumberOfChunks, this.receiver && this.receiver.write(e);
3870
+ }
3871
+ snapshotReceived(e) {
3872
+ this.wasDisposed || (this.receiver = null, this.snapshotProxy = e, this.maxJSObjectId = e.maxJSObjectId(), this.didCompleteSnapshotTransfer(), this.workerProxy && this.workerProxy.startCheckingForLongRunningCalls(), this.notifySnapshotReceived());
3873
+ }
3874
+ notifySnapshotReceived() {
3875
+ this.snapshotProxy && this.fulfillLoad(this.snapshotProxy), this.profileType().snapshotReceived(this);
3876
+ }
3877
+ canSaveToFile() {
3878
+ return !this.fromFile();
3879
+ }
3880
+ async saveToFile() {
3881
+ await this.loadPromise;
3882
+ let e = new yt();
3883
+ this.fileName = this.fileName || "Heap-" + c(/* @__PURE__ */ new Date()) + this.profileType().fileExtension();
3884
+ let t = async (n) => {
3885
+ if (n) {
3886
+ if (this.failedToCreateTempFile) {
3887
+ d.instance().error("Failed to open temp file with heap snapshot"), e.close();
3888
+ return;
3889
+ }
3890
+ if (this.tempFile) {
3891
+ let t = await this.tempFile.copyToOutputStream(e, this.onChunkTransferred.bind(this));
3892
+ t && d.instance().error("Failed to read heap snapshot from temp file: " + t.message), this.didCompleteSnapshotTransfer();
3893
+ return;
3894
+ }
3895
+ this.onTempFileReady = () => {
3896
+ t(n);
3897
+ }, this.updateSaveProgress(0, 1);
3898
+ }
3899
+ };
3900
+ await e.open(this.fileName).then(t.bind(this));
3901
+ }
3902
+ onChunkTransferred(e) {
3903
+ this.updateSaveProgress(e.loadedSize(), e.fileSize());
3904
+ }
3905
+ updateSaveProgress(e, t) {
3906
+ let n = ((t && e / t) * 100).toFixed(0);
3907
+ this.updateStatus(J(q.savingD, { PH1: n }));
3908
+ }
3909
+ async loadFromFile(e) {
3910
+ this.updateStatus(J(q.loading), !0), this.setupWorker();
3911
+ let t = new vt(e, 1e7), n = await t.read(this.receiver), r = t.error();
3912
+ return !n && r && this.updateStatus(r.message), n ? null : r;
3913
+ }
3914
+ profileType() {
3915
+ return super.profileType();
3916
+ }
3917
+ }, Lr = class e extends w {
3918
+ pieChart;
3919
+ constructor() {
3920
+ super(), this.element.classList.add("heap-snapshot-statistics-view"), this.element.setAttribute("jslog", `${tt("profiler.heap-snapshot-statistics-view").track({ resize: !0 })}`), this.pieChart = new Lt(), this.setTotalAndRecords(0, []), this.pieChart.classList.add("heap-snapshot-stats-pie-chart"), this.element.appendChild(this.pieChart);
3921
+ }
3922
+ static valueFormatter(e) {
3923
+ return new Intl.NumberFormat(te.instance().locale, {
3924
+ style: "unit",
3925
+ unit: "kilobyte"
3926
+ }).format(Math.round(e / 1e3));
3927
+ }
3928
+ setTotalAndRecords(t, n) {
3929
+ this.pieChart.data = {
3930
+ chartName: J(q.heapMemoryUsage),
3931
+ size: 150,
3932
+ formatter: e.valueFormatter,
3933
+ showLegend: !0,
3934
+ total: t,
3935
+ slices: n
3936
+ };
3937
+ }
3938
+ }, Rr = class extends Ze {
3939
+ heapProfilerModel;
3940
+ linkifier;
3941
+ frameElements;
3942
+ constructor(e) {
3943
+ super(), this.heapProfilerModel = e, this.linkifier = new E(), this.frameElements = [];
3944
+ }
3945
+ onContextMenu(e, t) {
3946
+ let n = new Le(t);
3947
+ n.appendApplicableItems(e), n.show(), t.consume(!0);
3948
+ }
3949
+ onStackViewKeydown(e) {
3950
+ let t = e.target;
3951
+ if (!t) return;
3952
+ if (e.key === "Enter") {
3953
+ let n = zr.get(t);
3954
+ if (!n) return;
3955
+ let r = E.linkInfo(n);
3956
+ if (!r) return;
3957
+ E.invokeFirstAction(r) && e.consume(!0);
3958
+ return;
3959
+ }
3960
+ let n, r = e;
3961
+ if (r.key === "ArrowUp") n = !1;
3962
+ else if (r.key === "ArrowDown") n = !0;
3963
+ else return;
3964
+ let i = this.frameElements.indexOf(t);
3965
+ if (i === -1) return;
3966
+ let a = n ? i + 1 : i - 1;
3967
+ if (a < 0 || a >= this.frameElements.length) return;
3968
+ let o = this.frameElements[a];
3969
+ o.tabIndex = 0, t.tabIndex = -1, o.focus(), e.consume(!0);
3970
+ }
3971
+ async setAllocatedObject(e, t) {
3972
+ this.clear();
3973
+ let n = await e.allocationStack(t);
3974
+ if (!n) {
3975
+ gt(this.element.createChild("div", "no-heap-allocation-stack"), J(q.stackWasNotRecordedForThisObject));
3976
+ return;
3977
+ }
3978
+ let r = this.element.createChild("div", "heap-allocation-stack");
3979
+ r.addEventListener("keydown", this.onStackViewKeydown.bind(this), !1);
3980
+ for (let e of n) {
3981
+ let t = r.createChild("div", "stack-frame");
3982
+ this.frameElements.push(t), t.tabIndex = -1;
3983
+ let n = t.createChild("div");
3984
+ if (n.textContent = it(e.functionName), !e.scriptId) continue;
3985
+ let i = this.heapProfilerModel ? this.heapProfilerModel.target() : null, a = {
3986
+ columnNumber: e.column - 1,
3987
+ inlineFrameIndex: 0
3988
+ }, o = this.linkifier.linkifyScriptLocation(i, String(e.scriptId), e.scriptName, e.line - 1, a);
3989
+ t.appendChild(o), zr.set(t, o), t.addEventListener("contextmenu", this.onContextMenu.bind(this, o));
3990
+ }
3991
+ this.frameElements[0].tabIndex = 0;
3992
+ }
3993
+ clear() {
3994
+ this.element.removeChildren(), this.frameElements = [], this.linkifier.reset();
3995
+ }
3996
+ }, zr = /* @__PURE__ */ new WeakMap(), Br = /* @__PURE__ */ e({
3997
+ IsolateSelector: () => Hr,
3998
+ ListItem: () => Ur
3999
+ }), Y = {
4000
+ javascriptVmInstances: "JavaScript VM instances",
4001
+ totalJsHeapSize: "Total JS heap size",
4002
+ totalPageJsHeapSizeChangeTrend: "Total page JS heap size change trend over the last {PH1} minutes.",
4003
+ totalPageJsHeapSizeAcrossAllVm: "Total page JS heap size across all VM instances.",
4004
+ changeRate: "{PH1}/s",
4005
+ increasingBySPerSecond: "increasing by {PH1} per second",
4006
+ decreasingBySPerSecond: "decreasing by {PH1} per second",
4007
+ heapSizeInUseByLiveJsObjects: "Heap size in use by live JS objects.",
4008
+ heapSizeChangeTrendOverTheLastS: "Heap size change trend over the last {PH1} minutes.",
4009
+ empty: "(empty)"
4010
+ }, Vr = v("panels/profiler/IsolateSelector.ts", Y), X = g.bind(void 0, Vr), Hr = class e extends w {
4011
+ items;
4012
+ list;
4013
+ itemByIsolate;
4014
+ totalElement;
4015
+ totalValueDiv;
4016
+ totalTrendDiv;
4017
+ constructor() {
4018
+ super(), this.items = new _t(), this.list = new Ve(this.items, this, Fe.NonViewport), this.list.element.classList.add("javascript-vm-instances-list"), he(this.list.element, X(Y.javascriptVmInstances)), this.contentElement.appendChild(this.list.element), this.itemByIsolate = /* @__PURE__ */ new Map(), this.totalElement = document.createElement("div"), this.totalElement.classList.add("profile-memory-usage-item"), this.totalElement.classList.add("hbox"), this.totalValueDiv = this.totalElement.createChild("div", "profile-memory-usage-item-size"), this.totalTrendDiv = this.totalElement.createChild("div", "profile-memory-usage-item-trend"), this.totalElement.createChild("div").textContent = X(Y.totalJsHeapSize);
4019
+ let e = Math.round(mt / 6e4);
4020
+ S.install(this.totalTrendDiv, X(Y.totalPageJsHeapSizeChangeTrend, { PH1: e })), S.install(this.totalValueDiv, X(Y.totalPageJsHeapSizeAcrossAllVm)), pe.instance().observeIsolates(this), b.instance().addEventListener(ue.NAME_CHANGED, this.targetChanged, this), b.instance().addEventListener(ue.INSPECTED_URL_CHANGED, this.targetChanged, this);
4021
+ }
4022
+ wasShown() {
4023
+ super.wasShown(), pe.instance().addEventListener(Ee.MEMORY_CHANGED, this.heapStatsChanged, this);
4024
+ }
4025
+ willHide() {
4026
+ super.willHide(), pe.instance().removeEventListener(Ee.MEMORY_CHANGED, this.heapStatsChanged, this);
4027
+ }
4028
+ isolateAdded(e) {
4029
+ this.list.element.tabIndex = 0;
4030
+ let t = new Ur(e), n = t.model().target() === b.instance().primaryPageTarget() ? 0 : this.items.length;
4031
+ this.items.insert(n, t), this.itemByIsolate.set(e, t), n === 0 && this.list.selectItem(t), this.update();
4032
+ }
4033
+ isolateChanged(e) {
4034
+ let t = this.itemByIsolate.get(e);
4035
+ t && t.updateTitle(), this.update();
4036
+ }
4037
+ isolateRemoved(e) {
4038
+ let t = this.itemByIsolate.get(e);
4039
+ t && this.items.remove(this.items.indexOf(t)), this.itemByIsolate.delete(e), this.items.length === 0 && (this.list.element.tabIndex = -1), this.update();
4040
+ }
4041
+ targetChanged(e) {
4042
+ let t = e.data.model(ft);
4043
+ if (!t) return;
4044
+ let n = pe.instance().isolateByModel(t), r = n && this.itemByIsolate.get(n);
4045
+ r && r.updateTitle();
4046
+ }
4047
+ heapStatsChanged(e) {
4048
+ let t = e.data, n = this.itemByIsolate.get(t);
4049
+ n && n.updateStats(), this.updateTotal();
4050
+ }
4051
+ updateTotal() {
4052
+ let t = 0, n = 0;
4053
+ for (let e of pe.instance().isolates()) t += e.usedHeapSize(), n += e.usedHeapSizeGrowRate();
4054
+ this.totalValueDiv.textContent = m(t), e.formatTrendElement(n, this.totalTrendDiv);
4055
+ }
4056
+ static formatTrendElement(e, t) {
4057
+ let n = e * 1e3;
4058
+ if (Math.abs(n) < 1e3) return;
4059
+ let r = m(Math.abs(n)), i, a;
4060
+ n > 0 ? (i = "⬆" + X(Y.changeRate, { PH1: r }), t.classList.toggle("increasing", !0), a = X(Y.increasingBySPerSecond, { PH1: r })) : (i = "⬇" + X(Y.changeRate, { PH1: r }), t.classList.toggle("increasing", !1), a = X(Y.decreasingBySPerSecond, { PH1: r })), t.textContent = i, he(t, a);
4061
+ }
4062
+ totalMemoryElement() {
4063
+ return this.totalElement;
4064
+ }
4065
+ createElementForItem(e) {
4066
+ return e.element;
4067
+ }
4068
+ heightForItem(e) {
4069
+ return console.assert(!1, "should not be called"), 0;
4070
+ }
4071
+ updateSelectedItemARIA(e, t) {
4072
+ return !1;
4073
+ }
4074
+ isItemSelectable(e) {
4075
+ return !0;
4076
+ }
4077
+ selectedItemChanged(e, t, n, r) {
4078
+ n && n.classList.remove("selected"), r && r.classList.add("selected");
4079
+ let i = t?.model();
4080
+ T.instance().setFlavor(y, i?.heapProfilerModel() ?? null), T.instance().setFlavor(nt, i?.target().model(nt) ?? null);
4081
+ }
4082
+ update() {
4083
+ this.updateTotal(), this.list.invalidateRange(0, this.items.length);
4084
+ }
4085
+ }, Ur = class {
4086
+ isolate;
4087
+ element;
4088
+ heapDiv;
4089
+ trendDiv;
4090
+ nameDiv;
4091
+ constructor(e) {
4092
+ this.isolate = e;
4093
+ let t = Math.round(mt / 6e4);
4094
+ this.element = document.createElement("div"), this.element.classList.add("profile-memory-usage-item"), this.element.classList.add("hbox"), Re(this.element), this.heapDiv = this.element.createChild("div", "profile-memory-usage-item-size"), S.install(this.heapDiv, X(Y.heapSizeInUseByLiveJsObjects)), this.trendDiv = this.element.createChild("div", "profile-memory-usage-item-trend"), S.install(this.trendDiv, X(Y.heapSizeChangeTrendOverTheLastS, { PH1: t })), this.nameDiv = this.element.createChild("div", "profile-memory-usage-item-name"), this.updateTitle();
4095
+ }
4096
+ model() {
4097
+ return this.isolate.runtimeModel();
4098
+ }
4099
+ updateStats() {
4100
+ this.heapDiv.textContent = m(this.isolate.usedHeapSize()), Hr.formatTrendElement(this.isolate.usedHeapSizeGrowRate(), this.trendDiv);
4101
+ }
4102
+ updateTitle() {
4103
+ let e = /* @__PURE__ */ new Map(), t = b.instance();
4104
+ for (let n of this.isolate.models()) {
4105
+ let r = n.target(), i = t.primaryPageTarget() === r, a = r.name(), o = new ee(r.inspectedURL()), s = o.isValid ? o.domain() : "", c = r.decorateLabel(s && !i ? `${s}: ${a}` : a || s || X(Y.empty));
4106
+ e.set(c, (e.get(c) || 0) + 1);
4107
+ }
4108
+ this.nameDiv.removeChildren();
4109
+ let n = [];
4110
+ for (let [t, r] of e) {
4111
+ let e = r > 1 ? `${t} (${r})` : t;
4112
+ n.push(e);
4113
+ let i = this.nameDiv.createChild("div");
4114
+ i.textContent = e, S.install(i, String(e));
4115
+ }
4116
+ }
4117
+ }, Wr = "/*\n * Copyright 2018 The Chromium Authors\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.profile-launcher-view {\n overflow: auto;\n}\n\n.profile-launcher-view-content {\n margin: 10px 16px;\n flex: auto 1 0;\n\n & h1 {\n font: var(--sys-typescale-headline4);\n margin: 6px 0 10px;\n }\n\n & label {\n font: var(--sys-typescale-body3-regular);\n }\n\n & p {\n color: var(--sys-color-token-subtle);\n margin-top: var(--sys-size-1);\n margin-left: var(--sys-size-10);\n\n & > devtools-checkbox {\n display: flex;\n }\n }\n\n .profile-launcher-view-content button.text-button.running,\n .profile-launcher-view-content button.text-button.running:focus {\n color: var(--sys-color-error);\n }\n\n & > div {\n flex: auto 0 0;\n }\n\n & > .profile-isolate-selector-block {\n flex: auto 1 0;\n overflow: hidden;\n }\n}\n\n.profile-launcher-target-list {\n margin-bottom: 6px;\n border: 1px solid var(--sys-color-divider);\n flex: 150px 1 0;\n}\n\n.profile-launcher-target-list-container {\n overflow: auto;\n}\n\n.profile-memory-usage-item {\n min-width: 100%;\n width: max-content;\n padding: 4px;\n line-height: 16px;\n}\n\n.profile-isolate-selector-block > .profile-memory-usage-item {\n margin-left: 1px;\n margin-bottom: 4px;\n font-weight: bolder;\n}\n\n.profile-memory-usage-item.selected {\n background-color: var(--sys-color-neutral-container);\n}\n\n.profile-memory-usage-item:focus {\n background-color: var(--sys-color-tonal-container);\n}\n\n.profile-launcher-target-list .profile-memory-usage-item:hover:not(.selected) {\n background-color: var(--sys-color-state-hover-on-subtle);\n}\n\n.javascript-vm-instances-list {\n width: max-content;\n min-width: 100%;\n}\n\n.javascript-vm-instances-list:focus .profile-memory-usage-item.selected {\n background-color: var(--sys-color-tonal-container);\n}\n\n.profile-memory-usage-item > div {\n flex-shrink: 0;\n margin-right: 12px;\n}\n\n.profile-memory-usage-item-size {\n width: 60px;\n text-align: right;\n}\n\n.profile-memory-usage-item-trend {\n min-width: 5em;\n color: var(--sys-color-tertiary);\n}\n\n.profile-memory-usage-item-trend.increasing {\n color: var(--sys-color-error);\n}\n\n.profile-launcher-buttons {\n flex-wrap: wrap;\n column-gap: 8px;\n}\n\n@media (forced-colors: active) {\n .profile-memory-usage-item {\n forced-color-adjust: none;\n border-left-color: transparent;\n }\n\n .profile-memory-usage-item-trend,\n .profile-memory-usage-item-trend.increasing,\n .profile-launcher-view-content button.running {\n color: ButtonText;\n }\n\n .javascript-vm-instances-list .profile-memory-usage-item:hover:not(.selected) {\n background-color: Highlight;\n color: HighlightText;\n }\n\n .javascript-vm-instances-list .profile-memory-usage-item.selected .profile-memory-usage-item-trend,\n .javascript-vm-instances-list .profile-memory-usage-item.selected .profile-memory-usage-item-trend.increasing {\n color: ButtonFace;\n }\n\n .javascript-vm-instances-list .profile-memory-usage-item:hover:not(.selected) .profile-memory-usage-item-trend,\n .javascript-vm-instances-list .profile-memory-usage-item:hover:not(.selected) .profile-memory-usage-item-trend.increasing {\n background-color: Highlight;\n color: HighlightText;\n }\n\n .javascript-vm-instances-list .profile-memory-usage-item.selected {\n background-color: ButtonText;\n border-color: Highlight;\n color: ButtonFace;\n }\n\n .javascript-vm-instances-list:focus .profile-memory-usage-item.selected,\n .javascript-vm-instances-list:focus-visible .profile-memory-usage-item.selected {\n background-color: Highlight;\n border-color: ButtonText;\n color: HighlightText;\n }\n}\n", Gr = /* @__PURE__ */ e({
4118
+ Events: () => Yr,
4119
+ ProfileLauncherView: () => Jr
4120
+ }), Z = {
4121
+ selectJavascriptVmInstance: "Select JavaScript VM instance",
4122
+ load: "Load profile",
4123
+ takeSnapshot: "Take snapshot",
4124
+ stop: "Stop",
4125
+ start: "Start",
4126
+ selectProfilingType: "Select profiling type"
4127
+ }, Kr = v("panels/profiler/ProfileLauncherView.ts", Z), qr = g.bind(void 0, Kr), Jr = class extends _(w) {
4128
+ panel;
4129
+ #e;
4130
+ selectedProfileTypeSetting;
4131
+ profileTypeHeaderElement;
4132
+ profileTypeSelectorForm;
4133
+ controlButton;
4134
+ loadButton;
4135
+ recordButtonEnabled;
4136
+ typeIdToOptionElementAndProfileType;
4137
+ isProfiling;
4138
+ isInstantProfile;
4139
+ isEnabled;
4140
+ constructor(e) {
4141
+ super(), this.registerRequiredCSS(Wr), this.panel = e, this.element.classList.add("profile-launcher-view"), this.#e = this.element.createChild("div", "profile-launcher-view-content vbox");
4142
+ let t = this.#e.createChild("div", "vbox");
4143
+ this.selectedProfileTypeSetting = re.instance().createSetting("selected-profile-type", "CPU"), this.profileTypeHeaderElement = t.createChild("h1"), this.profileTypeSelectorForm = t.createChild("form"), dt(this.profileTypeSelectorForm);
4144
+ let n = this.#e.createChild("div", "vbox profile-isolate-selector-block");
4145
+ n.createChild("h1").textContent = qr(Z.selectJavascriptVmInstance);
4146
+ let r = new Hr(), i = n.createChild("div", "vbox profile-launcher-target-list");
4147
+ i.classList.add("profile-launcher-target-list-container"), r.show(i), n.appendChild(r.totalMemoryElement());
4148
+ let a = this.#e.createChild("div", "hbox profile-launcher-buttons");
4149
+ this.controlButton = Ie("", this.controlButtonClicked.bind(this), {
4150
+ jslogContext: "profiler.heap-toggle-recording",
4151
+ variant: ce.PRIMARY
4152
+ }), this.loadButton = new Oe(), this.loadButton.data = {
4153
+ iconName: "import",
4154
+ variant: ce.OUTLINED,
4155
+ jslogContext: "profiler.load-from-file"
4156
+ }, this.loadButton.textContent = qr(Z.load), this.loadButton.addEventListener("click", this.loadButtonClicked.bind(this)), a.appendChild(this.loadButton), a.appendChild(this.controlButton), this.recordButtonEnabled = !0, this.typeIdToOptionElementAndProfileType = /* @__PURE__ */ new Map();
4157
+ }
4158
+ loadButtonClicked() {
4159
+ Xe.instance().getAction("profiler.load-from-file").execute();
4160
+ }
4161
+ updateControls() {
4162
+ this.isEnabled && this.recordButtonEnabled ? this.controlButton.removeAttribute("disabled") : this.controlButton.setAttribute("disabled", ""), S.install(this.controlButton, this.recordButtonEnabled ? "" : st()), this.isInstantProfile ? (this.controlButton.classList.remove("running"), this.controlButton.textContent = qr(Z.takeSnapshot)) : this.isProfiling ? (this.controlButton.classList.add("running"), this.controlButton.textContent = qr(Z.stop)) : (this.controlButton.classList.remove("running"), this.controlButton.textContent = qr(Z.start));
4163
+ for (let { optionElement: e } of this.typeIdToOptionElementAndProfileType.values()) e.disabled = !!this.isProfiling;
4164
+ }
4165
+ profileStarted() {
4166
+ this.isProfiling = !0, this.updateControls();
4167
+ }
4168
+ profileFinished() {
4169
+ this.isProfiling = !1, this.updateControls();
4170
+ }
4171
+ updateProfileType(e, t) {
4172
+ this.isInstantProfile = e.isInstantProfile(), this.recordButtonEnabled = t, this.isEnabled = e.isEnabled(), this.updateControls();
4173
+ }
4174
+ addProfileType(e) {
4175
+ let { radio: t, label: n } = He("profile-type", e.name, "profiler.profile-type");
4176
+ this.profileTypeSelectorForm.appendChild(n), this.typeIdToOptionElementAndProfileType.set(e.id, {
4177
+ optionElement: t,
4178
+ profileType: e
4179
+ }), t.addEventListener("change", this.profileTypeChanged.bind(this, e), !1);
4180
+ let r = this.profileTypeSelectorForm.createChild("p");
4181
+ r.textContent = e.description, De(t, e.description);
4182
+ let i = e.customContent();
4183
+ i && (i.setAttribute("role", "group"), i.setAttribute("aria-labelledby", `${t.id}`), this.profileTypeSelectorForm.createChild("p").appendChild(i), e.setCustomContentEnabled(!1));
4184
+ let a = this.typeIdToOptionElementAndProfileType.size > 1 ? qr(Z.selectProfilingType) : e.name;
4185
+ this.profileTypeHeaderElement.textContent = a, he(this.profileTypeSelectorForm, a);
4186
+ }
4187
+ restoreSelectedProfileType() {
4188
+ let e = this.selectedProfileTypeSetting.get();
4189
+ this.typeIdToOptionElementAndProfileType.has(e) || (e = this.typeIdToOptionElementAndProfileType.keys().next().value, this.selectedProfileTypeSetting.set(e));
4190
+ let t = this.typeIdToOptionElementAndProfileType.get(e);
4191
+ t.optionElement.checked = !0;
4192
+ let n = t.profileType;
4193
+ for (let [t, { profileType: n }] of this.typeIdToOptionElementAndProfileType) {
4194
+ let r = t === e;
4195
+ n.setCustomContentEnabled(r);
4196
+ }
4197
+ this.dispatchEventToListeners("ProfileTypeSelected", n);
4198
+ }
4199
+ controlButtonClicked() {
4200
+ this.panel.toggleRecord();
4201
+ }
4202
+ profileTypeChanged(e) {
4203
+ let t = this.selectedProfileTypeSetting.get();
4204
+ this.typeIdToOptionElementAndProfileType.get(t).profileType.setCustomContentEnabled(!1), e.setCustomContentEnabled(!0), this.dispatchEventToListeners("ProfileTypeSelected", e), this.isInstantProfile = e.isInstantProfile(), this.isEnabled = e.isEnabled(), this.updateControls(), this.selectedProfileTypeSetting.set(e.id);
4205
+ }
4206
+ }, Yr = /* @__PURE__ */ function(e) {
4207
+ return e.PROFILE_TYPE_SELECTED = "ProfileTypeSelected", e;
4208
+ }({}), Xr = /* @__PURE__ */ e({ ProfileSidebarTreeElement: () => ei }), Zr = { profileOptions: "Profile options" }, Qr = v("panels/profiler/ProfileSidebarTreeElement.ts", Zr), $r = g.bind(void 0, Qr), ei = class extends Ue {
4209
+ iconElement;
4210
+ titlesElement;
4211
+ menuElement;
4212
+ titleContainer;
4213
+ titleElement;
4214
+ subtitleElement;
4215
+ className;
4216
+ small;
4217
+ dataDisplayDelegate;
4218
+ profile;
4219
+ editing;
4220
+ constructor(e, t, n) {
4221
+ super("", !1), this.iconElement = document.createElement("div"), this.iconElement.classList.add("icon"), this.titlesElement = document.createElement("div"), this.titlesElement.classList.add("titles"), this.titlesElement.classList.add("no-subtitle"), this.titlesElement.setAttribute("jslog", `${Pe("title").track({
4222
+ dblclick: !0,
4223
+ change: !0
4224
+ })}`), this.titleContainer = this.titlesElement.createChild("span", "title-container"), this.titleElement = this.titleContainer.createChild("span", "title"), this.subtitleElement = this.titlesElement.createChild("span", "subtitle"), this.menuElement = new Oe(), this.menuElement.data = {
4225
+ variant: ce.ICON,
4226
+ iconName: "dots-vertical",
4227
+ title: $r(Zr.profileOptions)
4228
+ }, this.menuElement.tabIndex = -1, this.menuElement.addEventListener("click", this.handleContextMenuEvent.bind(this)), this.menuElement.setAttribute("jslog", `${We("profile-options").track({ click: !0 })}`), S.install(this.menuElement, $r(Zr.profileOptions)), this.titleElement.textContent = t.title, this.className = n, this.small = !1, this.dataDisplayDelegate = e, this.profile = t, t.addEventListener(P.UPDATE_STATUS, this.updateStatus, this), this.editing = null;
4229
+ }
4230
+ updateStatus(e) {
4231
+ let t = e.data;
4232
+ t.subtitle !== null && (this.subtitleElement.textContent = t.subtitle.length > 0 ? `(${t.subtitle})` : "", this.titlesElement.classList.toggle("no-subtitle", !t.subtitle), he(this.listItemElement, `${this.profile.title}, ${t.subtitle}`)), typeof t.wait == "boolean" && this.listItemElement && (this.iconElement.classList.toggle("spinner", t.wait), this.listItemElement.classList.toggle("wait", t.wait));
4233
+ }
4234
+ ondblclick(e) {
4235
+ return this.editing || this.startEditing(e.target), !1;
4236
+ }
4237
+ startEditing(e) {
4238
+ let t = e.enclosingNodeOrSelfWithClass("title");
4239
+ if (!t) return;
4240
+ let n = new me(this.editingCommitted.bind(this), this.editingCancelled.bind(this), void 0);
4241
+ this.editing = xe.startEditing(t, n);
4242
+ }
4243
+ editingCommitted(e, t) {
4244
+ t.trim().length === 0 ? this.editing && this.editing.cancel() : (this.editing = null, this.profile.setTitle(t));
4245
+ }
4246
+ editingCancelled() {
4247
+ this.editing = null;
4248
+ }
4249
+ dispose() {
4250
+ this.profile.removeEventListener(P.UPDATE_STATUS, this.updateStatus, this);
4251
+ }
4252
+ onselect() {
4253
+ return this.dataDisplayDelegate.showProfile(this.profile), !0;
4254
+ }
4255
+ ondelete() {
4256
+ return this.profile.profileType().removeProfile(this.profile), !0;
4257
+ }
4258
+ onattach() {
4259
+ this.className && this.listItemElement.classList.add(this.className), this.small && this.listItemElement.classList.add("small"), this.listItemElement.append(this.iconElement, this.titlesElement, this.menuElement), this.listItemElement.addEventListener("contextmenu", this.handleContextMenuEvent.bind(this), !0), De(this.listItemElement, this.profile.profileType().name);
4260
+ }
4261
+ handleContextMenuEvent(e) {
4262
+ let t = new Le(e);
4263
+ t.appendItemsAtLocation("profilerMenu"), t.show();
4264
+ }
4265
+ setSmall(e) {
4266
+ this.small = e, this.listItemElement && this.listItemElement.classList.toggle("small", this.small);
4267
+ }
4268
+ setMainTitle(e) {
4269
+ this.titleElement.textContent = e;
4270
+ }
4271
+ }, ti = "/*\n * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.\n * Copyright (C) 2009 Anthony Ricaud <rik@webkit.org>\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. Neither the name of Apple Computer, Inc. (\"Apple\") nor the names of\n * its contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n/* Profiler Style */\n\n#profile-views {\n flex: auto;\n position: relative;\n}\n\n.profile-view .data-grid table.data {\n background: var(--sys-color-cdt-base-container);\n}\n\n.profile-view .data-grid tr:not(.selected) .highlight {\n background-color: var(--sys-color-tonal-container);\n}\n\n.profile-view .data-grid tr:hover td:not(.bottom-filler-td) {\n background-color: var(--sys-color-state-hover-on-subtle);\n}\n\n.profile-view .data-grid td.numeric-column {\n text-align: right;\n}\n\n.profile-view .data-grid div.profile-multiple-values {\n float: right;\n}\n\n.profile-view .data-grid span.percent-column {\n color: var(--sys-color-token-subtle);\n width: 9ex;\n display: inline-block;\n}\n\n.profile-view .data-grid tr.selected span {\n color: inherit;\n}\n\n.profiles-toolbar {\n background-color: var(--sys-color-cdt-base-container);\n border-bottom: 1px solid var(--sys-color-divider);\n flex-shrink: 0;\n}\n\n.profiles-tree-sidebar {\n flex: auto;\n overflow: hidden;\n}\n\n.profiles-sidebar-tree-box {\n overflow-y: auto;\n}\n\n.profile-view {\n display: flex;\n overflow: hidden;\n}\n\n.profile-view .data-grid {\n border: none;\n flex: auto;\n}\n\n.profile-view .data-grid th.self-column,\n.profile-view .data-grid th.total-column {\n text-align: center;\n}\n\n.profile-node-file {\n float: right;\n color: var(--sys-color-token-subtle);\n}\n\n.profile-warn-marker {\n vertical-align: -1px;\n margin-right: 2px;\n}\n\n.cpu-profile-flame-chart-overview-container {\n overflow: hidden;\n position: absolute;\n top: 0;\n width: 100%;\n height: 80px;\n}\n\n#cpu-profile-flame-chart-overview-container {\n border-bottom: 1px solid var(--sys-color-divider);\n overflow: hidden;\n}\n\n.cpu-profile-flame-chart-overview-canvas {\n position: absolute;\n inset: 20px 0 0;\n}\n\n#cpu-profile-flame-chart-overview-grid .resources-dividers-label-bar {\n pointer-events: auto;\n}\n\n.cpu-profile-flame-chart-overview-pane {\n flex: 0 0 80px !important; /* stylelint-disable-line declaration-no-important */\n}\n\n.profile-text-view {\n padding: 10px;\n overflow: auto;\n margin: 0;\n user-select: text;\n cursor: text;\n}\n\n.empty-landing-page {\n position: absolute;\n background-color: var(--sys-color-cdt-base-container);\n justify-content: center;\n align-items: center;\n overflow: auto;\n font-size: 16px;\n color: var(--sys-color-token-subtle);\n padding: 50px;\n}\n\n@media (forced-colors: active) {\n .profile-view .data-grid tr:hover td:not(.bottom-filler-td) {\n background: Highlight;\n }\n\n .profile-view .data-grid table.data {\n background: transparent;\n }\n}\n", ni = "/*\n * Copyright 2016 The Chromium Authors\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n:host {\n padding: var(--sys-size-3) 0;\n}\n\n.tree-outline-disclosure {\n width: 100%;\n}\n\n/* Icon-related changes */\nli .icon {\n width: 20px;\n height: 20px;\n margin-right: var(--sys-size-6);\n flex: none;\n}\n\n/* Heap profiles and CPU profiles */\n.heap-snapshot-sidebar-tree-item .icon,\n.profile-sidebar-tree-item .icon {\n mask-image: var(--image-file-heap-snapshot);\n background: var(--icon-default);\n}\n\n.profile-group-sidebar-tree-item .icon {\n mask-image: var(--image-file-heap-snapshots);\n background: var(--icon-default);\n}\n\nli.small .icon {\n width: 16px;\n height: 16px;\n}\n\nli.wait .icon {\n content: none;\n}\n\nli devtools-button {\n min-width: var(--sys-size-12);\n visibility: hidden;\n}\n\n/* Tree outline overrides */\n.heap-snapshot-sidebar-tree-item:not(:hover) devtools-button {\n visibility: hidden;\n}\n\n.heap-snapshot-sidebar-tree-item.wait .icon {\n mask-image: unset;\n background-color: inherit;\n}\n\n.heap-snapshot-sidebar-tree-item.small .icon {\n mask-image: var(--image-file-heap-snapshots);\n background: var(--icon-default);\n}\n\n.profile-sidebar-tree-item.small .icon {\n mask-image: var(--image-file-heap-snapshots);\n background: var(--icon-default);\n}\n\n.tree-outline li:not(.parent)::before {\n content: none;\n}\n\nol.tree-outline {\n flex: auto;\n padding: 0;\n}\n\n.tree-outline li {\n height: var(--sys-size-12);\n padding-left: var(--sys-size-7);\n margin-right: var(--sys-size-5);\n color: var(--sys-color-on-surface);\n\n & .leading-icons {\n margin-right: var(--sys-size-6);\n flex: none;\n }\n\n & .selection {\n border-radius: 0 100px 100px 0;\n }\n}\n\n.tree-outline .profile-launcher-view-tree-item,\n.tree-outline li.profiles-tree-section + .children > li {\n border-radius: 0 100px 100px 0;\n position: relative;\n\n &.selected {\n background-color: var(--app-color-navigation-drawer-background-selected);\n color: var(--app-color-navigation-drawer-label-selected);\n\n & devtools-icon {\n color: var(--app-color-navigation-drawer-label-selected);\n }\n\n & > .icon:not(.spinner) {\n background-color: var(--app-color-navigation-drawer-label-selected);\n }\n }\n\n &:active::before {\n background-color: var(--sys-color-state-ripple-neutral-on-subtle);\n mask-image: none;\n content: \"\";\n height: 100%;\n width: 100%;\n border-radius: inherit;\n position: absolute;\n top: 0;\n left: 0;\n }\n\n &:focus-visible {\n box-shadow: inset 0 0 0 2px var(--sys-color-state-focus-ring);\n }\n}\n\n.tree-outline li.profiles-tree-section {\n margin-top: var(--sys-size-6);\n line-height: var(--sys-size-8);\n\n &:hover:not(:has(devtools-checkbox)) .selection {\n background-color: transparent;\n }\n}\n\n.tree-outline li.profiles-tree-section::before {\n display: none;\n}\n\n.tree-outline ol {\n overflow: hidden;\n padding: 0;\n}\n\n/* Generic items styling */\n\nli.wait .spinner::before {\n --dimension: 20px;\n\n margin: 0;\n}\n\nli.wait.small .spinner::before {\n --dimension: 14px;\n --clip-size: 9px;\n --override-spinner-size: 2px;\n\n margin: 1px;\n}\n\nli.wait.selected .spinner::before {\n --override-spinner-color: var(--ref-palette-neutral100);\n}\n\n@keyframes spinner-animation {\n from {\n transform: rotate(0);\n }\n\n to {\n transform: rotate(360deg);\n }\n}\n\nli.small {\n height: 20px;\n}\n\nli .titles {\n display: inline-flex;\n padding-right: var(--sys-size-5);\n}\n\nli .titles > .title-container {\n z-index: 1;\n overflow: hidden;\n}\n\nli .titles > .title-container:has(:not(.editing)) {\n text-overflow: ellipsis;\n}\n\nli .titles > .title-container .title.editing {\n display: flex;\n overflow: hidden;\n margin-inline: 0;\n padding-inline: 0;\n}\n\nli.small .titles {\n top: 2px;\n line-height: normal;\n}\n\nli:not(.small) .title::after {\n content: \"\\A\";\n white-space: pre;\n}\n\nli .subtitle {\n text-overflow: ellipsis;\n overflow: hidden;\n margin-left: var(--sys-size-3);\n}\n\nli.small .subtitle {\n display: none;\n}\n\nli.selected:hover devtools-button {\n visibility: visible;\n margin-left: auto;\n}\n\n@media (forced-colors: active) {\n .tree-outline li,\n .tree-outline li.profiles-tree-section,\n .tree-outline li:hover .tree-element-title {\n forced-color-adjust: none;\n color: ButtonText;\n text-shadow: unset;\n }\n\n .tree-outline .profile-launcher-view-tree-item,\n .tree-outline li.profiles-tree-section + .children > li {\n &.selected {\n background-color: Highlight;\n color: HighlightText;\n\n & devtools-icon {\n color: HighlightText;\n }\n\n & > .icon:not(.spinner) {\n background-color: HighlightText;\n }\n }\n }\n}\n", ri = /* @__PURE__ */ e({
4272
+ ActionDelegate: () => di,
4273
+ ProfileGroupSidebarTreeElement: () => li,
4274
+ ProfileTypeSidebarSection: () => ci,
4275
+ ProfilesPanel: () => si,
4276
+ ProfilesSidebarTreeElement: () => ui
4277
+ }), Q = {
4278
+ cantLoadFileSupportedFile: "Can’t load file. Supported file extensions: ''{PH1}''.",
4279
+ cantLoadProfileWhileAnother: "Can’t load profile while another profile is being recorded.",
4280
+ profileLoadingFailed: "Profile loading failed",
4281
+ failReason: "Reason: {PH1}.",
4282
+ runD: "Run {PH1}",
4283
+ profiles: "Profiles"
4284
+ }, ii = v("panels/profiler/ProfilesPanel.ts", Q), $ = g.bind(void 0, ii);
4285
+ function ai(e, t) {
4286
+ if (e instanceof Ir) return new ei(t, e, "heap-snapshot-sidebar-tree-item");
4287
+ if (e instanceof En) return new ei(t, e, "profile-sidebar-tree-item");
4288
+ throw Error("Not implemented.");
4289
+ }
4290
+ function oi(e, t, n) {
4291
+ if (e instanceof Ir) return new Tr(t, e, n);
4292
+ if (e instanceof Gn) return new Vn(e);
4293
+ if (e instanceof An) return new On(t, e);
4294
+ throw Error("Not implemented.");
4295
+ }
4296
+ var si = class e extends de {
4297
+ profilesItemTreeElement;
4298
+ sidebarTree;
4299
+ profileViews;
4300
+ toolbarElement;
4301
+ toggleRecordAction;
4302
+ toggleRecordButton;
4303
+ #e;
4304
+ profileViewToolbar;
4305
+ profileGroups;
4306
+ launcherView;
4307
+ visibleView;
4308
+ profileToView;
4309
+ typeIdToSidebarSection;
4310
+ fileSelectorElement;
4311
+ selectedProfileType;
4312
+ static registry = {
4313
+ heapSnapshotProfileType: new Mr(),
4314
+ trackingHeapSnapshotProfileType: new Pr(),
4315
+ samplingHeapProfileType: new Wn(),
4316
+ detachedElementProfileType: new kn()
4317
+ };
4318
+ constructor(e, t) {
4319
+ super(e), this.registerRequiredCSS(Et, ti, jn);
4320
+ let n = new w();
4321
+ this.splitWidget().setMainWidget(n), this.profilesItemTreeElement = new ui(this), this.sidebarTree = new $e(), this.sidebarTree.registerRequiredCSS(ni), this.sidebarTree.element.classList.add("profiles-sidebar-tree-box"), this.panelSidebarElement().appendChild(this.sidebarTree.element), this.sidebarTree.appendChild(this.profilesItemTreeElement), this.sidebarTree.element.addEventListener("keydown", this.onKeyDown.bind(this), !1), this.profileViews = document.createElement("div"), this.profileViews.id = "profile-views", this.profileViews.classList.add("vbox"), n.element.appendChild(this.profileViews), this.toolbarElement = document.createElement("div"), this.toolbarElement.classList.add("profiles-toolbar"), n.element.insertBefore(this.toolbarElement, n.element.firstChild), this.panelSidebarElement().classList.add("profiles-tree-sidebar");
4322
+ let r = document.createElement("div");
4323
+ r.classList.add("profiles-toolbar"), r.setAttribute("jslog", `${Je("profiles-sidebar")}`), this.panelSidebarElement().insertBefore(r, this.panelSidebarElement().firstChild);
4324
+ let i = r.createChild("devtools-toolbar");
4325
+ i.wrappable = !0, this.toggleRecordAction = Xe.instance().getAction(t), this.toggleRecordButton = Ae.createActionButton(this.toggleRecordAction), i.appendToolbarItem(this.toggleRecordButton), i.appendToolbarItem(Ae.createActionButton("profiler.clear-all")), i.appendSeparator(), i.appendToolbarItem(Ae.createActionButton("profiler.load-from-file")), this.#e = Xe.instance().getAction("profiler.save-to-file"), this.#e.setEnabled(!1), i.appendToolbarItem(Ae.createActionButton(this.#e)), i.appendSeparator(), i.appendToolbarItem(Ae.createActionButton("components.collect-garbage")), this.profileViewToolbar = this.toolbarElement.createChild("devtools-toolbar"), this.profileViewToolbar.wrappable = !0, this.profileViewToolbar.setAttribute("jslog", `${Je("profile-view")}`), this.profileGroups = {}, this.launcherView = new Jr(this), this.launcherView.addEventListener(Yr.PROFILE_TYPE_SELECTED, this.onProfileTypeSelected, this), this.profileToView = [], this.typeIdToSidebarSection = {};
4326
+ let a = this.profileTypes;
4327
+ for (let e = 0; e < a.length; e++) this.registerProfileType(a[e]);
4328
+ this.launcherView.restoreSelectedProfileType(), this.profilesItemTreeElement.select(), this.showLauncherView(), this.createFileSelectorElement(), b.instance().addEventListener(ue.SUSPEND_STATE_CHANGED, this.onSuspendStateChanged, this), T.instance().addFlavorChangeListener(nt, this.updateProfileTypeSpecificUI, this), T.instance().addFlavorChangeListener(y, this.updateProfileTypeSpecificUI, this);
4329
+ }
4330
+ get profileTypes() {
4331
+ return Object.values(e.registry);
4332
+ }
4333
+ onKeyDown(e) {
4334
+ let t = !1;
4335
+ e.key === "ArrowDown" && !e.altKey ? t = this.sidebarTree.selectNext() : e.key === "ArrowUp" && !e.altKey && (t = this.sidebarTree.selectPrevious()), t && e.consume(!0);
4336
+ }
4337
+ searchableView() {
4338
+ let e = this.visibleView;
4339
+ return e?.searchableView ? e.searchableView() : null;
4340
+ }
4341
+ createFileSelectorElement() {
4342
+ this.fileSelectorElement && this.element.removeChild(this.fileSelectorElement), this.fileSelectorElement = lt(this.loadFromFile.bind(this)), this.element.appendChild(this.fileSelectorElement);
4343
+ }
4344
+ findProfileTypeByExtension(e) {
4345
+ return this.profileTypes.find((t) => !!t.fileExtension() && e.endsWith(t.fileExtension() || "")) || null;
4346
+ }
4347
+ async loadFromFile(e) {
4348
+ this.createFileSelectorElement();
4349
+ let t = this.findProfileTypeByExtension(e.name);
4350
+ if (!t) {
4351
+ let e = new Set(this.profileTypes.map((e) => e.fileExtension()).filter((e) => e));
4352
+ d.instance().error($(Q.cantLoadFileSupportedFile, { PH1: Array.from(e).join("', '") }));
4353
+ return;
4354
+ }
4355
+ if (t.profileBeingRecorded()) {
4356
+ d.instance().error($(Q.cantLoadProfileWhileAnother));
4357
+ return;
4358
+ }
4359
+ let n = await t.loadFromFile(e);
4360
+ n && "message" in n && ye.show($(Q.profileLoadingFailed), $(Q.failReason, { PH1: n.message }), void 0, "profile-loading-failed");
4361
+ }
4362
+ toggleRecord() {
4363
+ if (!this.toggleRecordAction.enabled()) return !0;
4364
+ let e = ct(this.element.ownerDocument), t = this.selectedProfileType;
4365
+ if (!t) return !0;
4366
+ let n = t.buttonClicked();
4367
+ return this.updateToggleRecordAction(n), n ? (this.launcherView.profileStarted(), t.hasTemporaryView() && this.showProfile(t.profileBeingRecorded())) : this.launcherView.profileFinished(), e && e.focus(), !0;
4368
+ }
4369
+ onSuspendStateChanged() {
4370
+ this.updateToggleRecordAction(this.toggleRecordAction.toggled());
4371
+ }
4372
+ updateToggleRecordAction(e) {
4373
+ let t = !!(T.instance().flavor(nt) || T.instance().flavor(y)), n = e || !b.instance().allTargetsSuspended() && t;
4374
+ this.toggleRecordAction.setEnabled(n), this.toggleRecordAction.setToggled(e), n ? this.toggleRecordButton.setTitle(this.selectedProfileType ? this.selectedProfileType.buttonTooltip : "") : this.toggleRecordButton.setTitle(st()), this.selectedProfileType && this.launcherView.updateProfileType(this.selectedProfileType, n);
4375
+ }
4376
+ profileBeingRecordedRemoved() {
4377
+ this.updateToggleRecordAction(!1), this.launcherView.profileFinished();
4378
+ }
4379
+ onProfileTypeSelected(e) {
4380
+ this.selectedProfileType = e.data, this.updateProfileTypeSpecificUI();
4381
+ }
4382
+ updateProfileTypeSpecificUI() {
4383
+ this.selectedProfileType?.isInstantProfile() && this.toggleRecordButton.toggleOnClick(!1), this.updateToggleRecordAction(this.toggleRecordAction.toggled());
4384
+ }
4385
+ reset() {
4386
+ this.profileTypes.forEach((e) => e.reset()), delete this.visibleView, this.profileGroups = {}, this.updateToggleRecordAction(!1), this.launcherView.profileFinished(), this.sidebarTree.element.classList.remove("some-expandable"), this.launcherView.detach(), this.profileViews.removeChildren(), this.profileViewToolbar.removeToolbarItems(), this.profilesItemTreeElement.select(), this.showLauncherView();
4387
+ }
4388
+ showLauncherView() {
4389
+ this.closeVisibleView(), this.profileViewToolbar.removeToolbarItems(), this.launcherView.show(this.profileViews), this.visibleView = this.launcherView, this.toolbarElement.classList.add("hidden"), this.#e.setEnabled(!1);
4390
+ }
4391
+ registerProfileType(e) {
4392
+ this.launcherView.addProfileType(e);
4393
+ let t = new ci(this, e);
4394
+ this.typeIdToSidebarSection[e.id] = t, this.sidebarTree.appendChild(t);
4395
+ function n(e) {
4396
+ this.addProfileHeader(e.data);
4397
+ }
4398
+ function r(e) {
4399
+ this.removeProfileHeader(e.data);
4400
+ }
4401
+ function i(e) {
4402
+ this.showProfile(e.data);
4403
+ }
4404
+ e.addEventListener(F.VIEW_UPDATED, this.updateProfileTypeSpecificUI, this), e.addEventListener(F.ADD_PROFILE_HEADER, n, this), e.addEventListener(F.REMOVE_PROFILE_HEADER, r, this), e.addEventListener(F.PROFILE_COMPLETE, i, this);
4405
+ let a = e.getProfiles();
4406
+ for (let e = 0; e < a.length; e++) this.addProfileHeader(a[e]);
4407
+ }
4408
+ showLoadFromFileDialog() {
4409
+ this.fileSelectorElement.click();
4410
+ }
4411
+ addProfileHeader(e) {
4412
+ let t = e.profileType().id;
4413
+ this.typeIdToSidebarSection[t].addProfileHeader(e), (!this.visibleView || this.visibleView === this.launcherView) && this.showProfile(e);
4414
+ }
4415
+ removeProfileHeader(e) {
4416
+ e.profileType().profileBeingRecorded() === e && this.profileBeingRecordedRemoved();
4417
+ let t = this.indexOfViewForProfile(e);
4418
+ t !== -1 && this.profileToView.splice(t, 1);
4419
+ let n = e.profileType().id;
4420
+ this.typeIdToSidebarSection[n].removeProfileHeader(e) && (this.profilesItemTreeElement.select(), this.showLauncherView());
4421
+ }
4422
+ showProfile(e) {
4423
+ if (!e || e.profileType().profileBeingRecorded() === e && !e.profileType().hasTemporaryView()) return null;
4424
+ let t = this.viewForProfile(e);
4425
+ if (t === this.visibleView) return t;
4426
+ this.closeVisibleView(), T.instance().setFlavor(N, e), this.#e.setEnabled(e.canSaveToFile()), t.show(this.profileViews), this.toolbarElement.classList.remove("hidden"), this.visibleView = t;
4427
+ let n = this.typeIdToSidebarSection[e.profileType().id].sidebarElementForProfile(e);
4428
+ return n && n.revealAndSelect(), this.profileViewToolbar.removeToolbarItems(), t.toolbarItems().then((e) => {
4429
+ Array.isArray(e) ? e.map((e) => this.profileViewToolbar.appendToolbarItem(e)) : ge(e, this.profileViewToolbar);
4430
+ }), t;
4431
+ }
4432
+ showObject(e, t) {}
4433
+ async linkifyObject(e) {
4434
+ return null;
4435
+ }
4436
+ viewForProfile(t) {
4437
+ let n = this.indexOfViewForProfile(t);
4438
+ if (n !== -1) return this.profileToView[n].view;
4439
+ let r = oi(t, this, e.registry);
4440
+ return r.element.classList.add("profile-view"), this.profileToView.push({
4441
+ profile: t,
4442
+ view: r
4443
+ }), r;
4444
+ }
4445
+ indexOfViewForProfile(e) {
4446
+ return this.profileToView.findIndex((t) => t.profile === e);
4447
+ }
4448
+ closeVisibleView() {
4449
+ T.instance().setFlavor(N, null), this.#e.setEnabled(!1), this.visibleView && this.visibleView.detach(), delete this.visibleView;
4450
+ }
4451
+ focus() {
4452
+ this.sidebarTree.focus();
4453
+ }
4454
+ wasShown() {
4455
+ super.wasShown(), T.instance().setFlavor(e, this);
4456
+ }
4457
+ willHide() {
4458
+ T.instance().setFlavor(e, null), super.willHide();
4459
+ }
4460
+ }, ci = class extends Ue {
4461
+ dataDisplayDelegate;
4462
+ profileTreeElements;
4463
+ profileGroups;
4464
+ constructor(e, t) {
4465
+ super(t.treeItemTitle, !0), this.selectable = !1, this.dataDisplayDelegate = e, this.profileTreeElements = [], this.profileGroups = {}, this.expand(), this.hidden = !0, this.setCollapsible(!1);
4466
+ }
4467
+ addProfileHeader(e) {
4468
+ this.hidden = !1;
4469
+ let t = e.profileType(), n = this, r = ai(e, this.dataDisplayDelegate);
4470
+ if (this.profileTreeElements.push(r), !e.fromFile() && t.profileBeingRecorded() !== e) {
4471
+ let t = e.title, i = this.profileGroups[t];
4472
+ i || (i = {
4473
+ profileSidebarTreeElements: [],
4474
+ sidebarTreeElement: null
4475
+ }, this.profileGroups[t] = i), i.profileSidebarTreeElements.push(r);
4476
+ let a = i.profileSidebarTreeElements.length;
4477
+ if (a === 2) {
4478
+ i.sidebarTreeElement = new li(this.dataDisplayDelegate, e.title);
4479
+ let t = i.profileSidebarTreeElements[0], n = this.children().indexOf(t);
4480
+ this.insertChild(i.sidebarTreeElement, n);
4481
+ let r = t.selected;
4482
+ this.removeChild(t), i.sidebarTreeElement.appendChild(t), r && t.revealAndSelect(), t.setSmall(!0), t.setMainTitle($(Q.runD, { PH1: 1 })), this.treeOutline && this.treeOutline.element.classList.add("some-expandable");
4483
+ }
4484
+ a >= 2 && (n = i.sidebarTreeElement, r.setSmall(!0), r.setMainTitle($(Q.runD, { PH1: a })));
4485
+ }
4486
+ n && n.appendChild(r);
4487
+ }
4488
+ removeProfileHeader(e) {
4489
+ let t = this.sidebarElementIndex(e);
4490
+ if (t === -1) return !1;
4491
+ let n = this.profileTreeElements[t];
4492
+ this.profileTreeElements.splice(t, 1);
4493
+ let r = this, i = this.profileGroups[e.title];
4494
+ if (i) {
4495
+ let t = i.profileSidebarTreeElements;
4496
+ if (t.splice(t.indexOf(n), 1), t.length === 1) {
4497
+ let n = r.children().indexOf(i.sidebarTreeElement);
4498
+ i.sidebarTreeElement && i.sidebarTreeElement.removeChild(t[0]), this.insertChild(t[0], n), t[0].setSmall(!1), t[0].setMainTitle(e.title), i.sidebarTreeElement && this.removeChild(i.sidebarTreeElement);
4499
+ }
4500
+ t.length !== 0 && (r = i.sidebarTreeElement);
4501
+ }
4502
+ return r && r.removeChild(n), n.dispose(), this.childCount() ? !1 : (this.hidden = !0, !0);
4503
+ }
4504
+ sidebarElementForProfile(e) {
4505
+ let t = this.sidebarElementIndex(e);
4506
+ return t === -1 ? null : this.profileTreeElements[t];
4507
+ }
4508
+ sidebarElementIndex(e) {
4509
+ let t = this.profileTreeElements;
4510
+ for (let n = 0; n < t.length; n++) if (t[n].profile === e) return n;
4511
+ return -1;
4512
+ }
4513
+ onattach() {
4514
+ this.listItemElement.classList.add("profiles-tree-section");
4515
+ }
4516
+ }, li = class extends Ue {
4517
+ dataDisplayDelegate;
4518
+ profileTitle;
4519
+ constructor(e, t) {
4520
+ super("", !0), this.selectable = !1, this.dataDisplayDelegate = e, this.profileTitle = t, this.expand(), this.toggleOnClick = !0;
4521
+ }
4522
+ onselect() {
4523
+ let e = this.childCount() > 0;
4524
+ if (e) {
4525
+ let e = this.lastChild();
4526
+ e instanceof ei && this.dataDisplayDelegate.showProfile(e.profile);
4527
+ }
4528
+ return e;
4529
+ }
4530
+ onattach() {
4531
+ this.listItemElement.classList.add("profile-group-sidebar-tree-item"), this.listItemElement.createChild("div", "icon"), this.listItemElement.createChild("div", "titles no-subtitle").createChild("span", "title-container").createChild("span", "title").textContent = this.profileTitle;
4532
+ }
4533
+ }, ui = class extends Ue {
4534
+ panel;
4535
+ constructor(e) {
4536
+ super("", !1), this.selectable = !0, this.panel = e;
4537
+ }
4538
+ onselect() {
4539
+ return this.panel.showLauncherView(), !0;
4540
+ }
4541
+ onattach() {
4542
+ this.listItemElement.classList.add("profile-launcher-view-tree-item"), this.listItemElement.createChild("div", "titles no-subtitle").createChild("span", "title-container").createChild("span", "title").textContent = $(Q.profiles), this.setLeadingIcons([be("tune")]);
4543
+ }
4544
+ }, di = class {
4545
+ handleAction(e, t) {
4546
+ switch (t) {
4547
+ case "profiler.clear-all": {
4548
+ let t = e.flavor(si);
4549
+ return t === null ? !1 : (t.reset(), !0);
4550
+ }
4551
+ case "profiler.load-from-file": {
4552
+ let t = e.flavor(si);
4553
+ return t === null ? !1 : (t.showLoadFromFileDialog(), !0);
4554
+ }
4555
+ case "profiler.save-to-file": {
4556
+ let t = e.flavor(N);
4557
+ return t === null ? !1 : (t.saveToFile(), !0);
4558
+ }
4559
+ case "profiler.delete-profile": {
4560
+ let t = e.flavor(N);
4561
+ return t === null ? !1 : (t.profileType().removeProfile(t), !0);
4562
+ }
4563
+ }
4564
+ return !1;
4565
+ }
4566
+ }, fi = /* @__PURE__ */ e({ HeapProfilerPanel: () => _i }), pi = { revealInSummaryView: "Reveal in Summary view" }, mi = v("panels/profiler/HeapProfilerPanel.ts", pi), hi = g.bind(void 0, mi), gi, _i = class e extends si {
4567
+ constructor() {
4568
+ super("heap-profiler", "profiler.heap-toggle-recording");
4569
+ }
4570
+ static instance() {
4571
+ return gi ||= new e(), gi;
4572
+ }
4573
+ appendApplicableItems(e, t, n) {
4574
+ if (!this.isShowing() || !n.objectId) return;
4575
+ let r = n.objectId;
4576
+ if (!si.registry.heapSnapshotProfileType.getProfiles().length) return;
4577
+ let i = n.runtimeModel().heapProfilerModel();
4578
+ if (!i) return;
4579
+ function a(e) {
4580
+ i.snapshotObjectIdForObjectId(r).then((t) => {
4581
+ this.isShowing() && t && this.showObject(t, e);
4582
+ });
4583
+ }
4584
+ t.revealSection().appendItem(hi(pi.revealInSummaryView), a.bind(this, "Summary"), { jslogContext: "reveal-in-summary" });
4585
+ }
4586
+ handleAction(t, n) {
4587
+ let r = T.instance().flavor(e);
4588
+ return console.assert(!!r && r instanceof e), r && r.toggleRecord(), !0;
4589
+ }
4590
+ wasShown() {
4591
+ super.wasShown(), T.instance().setFlavor(e, this), Ke.instance().panelLoaded("heap-profiler", "DevTools.Launch.HeapProfiler");
4592
+ }
4593
+ willHide() {
4594
+ T.instance().setFlavor(e, null), super.willHide();
4595
+ }
4596
+ showObject(e, t) {
4597
+ let n = si.registry.heapSnapshotProfileType.getProfiles();
4598
+ for (let r = 0; r < n.length; r++) {
4599
+ let i = n[r];
4600
+ if (i.maxJSObjectId >= parseInt(e, 10)) {
4601
+ this.showProfile(i), this.viewForProfile(i).selectLiveObject(t, e);
4602
+ break;
4603
+ }
4604
+ }
4605
+ }
4606
+ }, vi = /* @__PURE__ */ e({});
4607
+ //#endregion
4608
+ export { en as BottomUpProfileDataGrid, Rn as HeapProfileView, fi as HeapProfilerPanel, sr as HeapSnapshotDataGrids, Xn as HeapSnapshotGridNodes, xr as HeapSnapshotView, Mn as HeapTimelineOverview, Br as IsolateSelector, Jt as ProfileDataGrid, fn as ProfileFlameChart, ln as ProfileHeader, Gr as ProfileLauncherView, Xr as ProfileSidebarTreeElement, vi as ProfileTypeRegistry, Sn as ProfileView, ri as ProfilesPanel, yn as TopDownProfileDataGrid };