chrome-devtools-frontend 1.0.1538310 → 1.0.1539728

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 (245) hide show
  1. package/eslint.config.mjs +1 -1
  2. package/front_end/core/protocol_client/CDPConnection.ts +12 -10
  3. package/front_end/core/protocol_client/InspectorBackend.ts +74 -101
  4. package/front_end/core/protocol_client/NodeURL.ts +1 -3
  5. package/front_end/core/sdk/ChildTargetManager.ts +5 -41
  6. package/front_end/core/sdk/Connections.ts +9 -58
  7. package/front_end/core/sdk/DOMModel.ts +1 -0
  8. package/front_end/core/sdk/RehydratingConnection.ts +1 -1
  9. package/front_end/entrypoints/lighthouse_worker/LighthouseWorkerService.ts +15 -26
  10. package/front_end/entrypoints/node_app/{NodeConnectionsPanel.ts → app/NodeConnectionsPanel.ts} +8 -8
  11. package/front_end/entrypoints/node_app/{NodeMain.ts → app/NodeMain.ts} +11 -11
  12. package/front_end/entrypoints/node_app/app/app.ts +6 -0
  13. package/front_end/entrypoints/node_app/node_app.ts +4 -2
  14. package/front_end/generated/{InspectorBackendCommands.js → InspectorBackendCommands.ts} +16 -34
  15. package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +18 -3
  16. package/front_end/models/trace/types/TraceEvents.ts +19 -0
  17. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +49 -26
  18. package/front_end/panels/ai_assistance/aiAssistancePanel.css +1 -1
  19. package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
  20. package/front_end/panels/ai_assistance/components/ChatView.ts +1 -134
  21. package/front_end/panels/ai_assistance/components/DisabledWidget.ts +170 -0
  22. package/front_end/panels/ai_assistance/components/ExploreWidget.ts +4 -4
  23. package/front_end/panels/ai_assistance/components/chatView.css +0 -31
  24. package/front_end/panels/ai_assistance/components/disabledWidget.css +45 -0
  25. package/front_end/panels/animation/AnimationTimeline.ts +1 -1
  26. package/front_end/panels/application/components/FrameDetailsView.ts +1 -1
  27. package/front_end/panels/console/ConsoleViewMessage.ts +1 -1
  28. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +3 -3
  29. package/front_end/panels/elements/ElementsTreeElement.ts +123 -95
  30. package/front_end/panels/elements/ElementsTreeOutline.ts +2 -2
  31. package/front_end/panels/elements/NodeStackTraceWidget.ts +8 -2
  32. package/front_end/panels/explain/components/ConsoleInsight.ts +0 -1
  33. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +57 -33
  34. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +1 -1
  35. package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +12 -5
  36. package/front_end/panels/network/RequestInitiatorView.ts +1 -1
  37. package/front_end/panels/network/components/EditableSpan.ts +1 -1
  38. package/front_end/panels/recorder/components/StepView.ts +1 -1
  39. package/front_end/panels/recorder/models/RecordingPlayer.ts +8 -7
  40. package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +4 -4
  41. package/front_end/panels/timeline/TimelineFlameChartView.ts +10 -10
  42. package/front_end/panels/timeline/TimelinePanel.ts +3 -3
  43. package/front_end/panels/timeline/TimelineUIUtils.ts +21 -24
  44. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +3 -2
  45. package/front_end/panels/utils/utils.ts +4 -2
  46. package/front_end/services/puppeteer/PuppeteerConnection.ts +56 -53
  47. package/front_end/third_party/puppeteer/README.chromium +2 -2
  48. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +3 -1
  49. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  50. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js +4 -2
  51. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  52. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts +3 -1
  53. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts.map +1 -1
  54. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.js.map +1 -1
  55. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BidiOverCdp.d.ts.map +1 -1
  56. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BidiOverCdp.js +1 -1
  57. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BidiOverCdp.js.map +1 -1
  58. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.d.ts.map +1 -1
  59. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.js +4 -3
  60. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.js.map +1 -1
  61. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts +1 -1
  62. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
  63. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js +1 -1
  64. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js.map +1 -1
  65. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.d.ts +2 -1
  66. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.d.ts.map +1 -1
  67. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.js +3 -2
  68. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.js.map +1 -1
  69. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  70. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +26 -9
  71. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  72. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
  73. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  74. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +11 -0
  75. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  76. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  77. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +9 -2
  78. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
  79. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
  80. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js +4 -2
  81. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js.map +1 -1
  82. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts +1 -1
  83. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  84. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +2 -2
  85. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
  86. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts.map +1 -1
  87. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.js +2 -1
  88. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.js.map +1 -1
  89. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.d.ts +6 -1
  90. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.d.ts.map +1 -1
  91. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.js +11 -2
  92. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Connection.js.map +1 -1
  93. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts +2 -0
  94. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
  95. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js +4 -3
  96. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js.map +1 -1
  97. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +7 -0
  98. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  99. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  100. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts +4 -0
  101. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  102. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js +10 -4
  103. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js.map +1 -1
  104. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  105. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  106. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  107. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +9 -3
  108. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +37 -18
  109. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +3 -1
  110. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  111. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js +4 -2
  112. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  113. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts +3 -1
  114. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts.map +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.js.map +1 -1
  116. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BidiOverCdp.d.ts.map +1 -1
  117. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BidiOverCdp.js +1 -1
  118. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BidiOverCdp.js.map +1 -1
  119. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserConnector.d.ts.map +1 -1
  120. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserConnector.js +4 -3
  121. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserConnector.js.map +1 -1
  122. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts +1 -1
  123. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
  124. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js +1 -1
  125. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js.map +1 -1
  126. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.d.ts +2 -1
  127. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.d.ts.map +1 -1
  128. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.js +3 -2
  129. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.js.map +1 -1
  130. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  131. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +26 -9
  132. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  133. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +1 -0
  134. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
  135. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +11 -0
  136. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
  137. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts.map +1 -1
  138. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +9 -2
  139. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
  140. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
  141. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js +4 -2
  142. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js.map +1 -1
  143. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts +1 -1
  144. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
  145. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +2 -2
  146. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
  147. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts.map +1 -1
  148. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.js +2 -1
  149. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.js.map +1 -1
  150. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Connection.d.ts +6 -1
  151. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Connection.d.ts.map +1 -1
  152. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Connection.js +11 -2
  153. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Connection.js.map +1 -1
  154. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts +2 -0
  155. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
  156. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js +4 -3
  157. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js.map +1 -1
  158. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +7 -0
  159. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  160. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts +4 -0
  161. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  162. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js +10 -4
  163. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js.map +1 -1
  164. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  165. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  166. package/front_end/third_party/puppeteer/package/lib/types.d.ts +9 -3
  167. package/front_end/third_party/puppeteer/package/package.json +3 -3
  168. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +4 -2
  169. package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +3 -1
  170. package/front_end/third_party/puppeteer/package/src/bidi/BidiOverCdp.ts +1 -0
  171. package/front_end/third_party/puppeteer/package/src/bidi/BrowserConnector.ts +8 -1
  172. package/front_end/third_party/puppeteer/package/src/bidi/BrowserContext.ts +1 -1
  173. package/front_end/third_party/puppeteer/package/src/bidi/Connection.ts +4 -1
  174. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +34 -10
  175. package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +13 -0
  176. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +8 -2
  177. package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +4 -0
  178. package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +2 -2
  179. package/front_end/third_party/puppeteer/package/src/cdp/CdpSession.ts +2 -1
  180. package/front_end/third_party/puppeteer/package/src/cdp/Connection.ts +15 -1
  181. package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +7 -5
  182. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +8 -0
  183. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +22 -1
  184. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  185. package/front_end/ui/components/panel_feedback/PreviewToggle.ts +1 -1
  186. package/front_end/ui/components/switch/Switch.docs.ts +38 -0
  187. package/front_end/ui/components/tooltips/Tooltip.ts +69 -45
  188. package/front_end/ui/legacy/Slider.docs.ts +49 -0
  189. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +77 -5
  190. package/front_end/ui/legacy/components/utils/Linkifier.ts +62 -3
  191. package/front_end/ui/visual_logging/KnownContextValues.ts +8 -0
  192. package/package.json +1 -1
  193. package/front_end/third_party/puppeteer/package/src/templates/version.ts.tmpl +0 -4
  194. package/front_end/ui/components/docs/color_swatch/basic.html +0 -32
  195. package/front_end/ui/components/docs/color_swatch/basic.ts +0 -38
  196. package/front_end/ui/components/docs/color_swatch/change-color.html +0 -24
  197. package/front_end/ui/components/docs/color_swatch/change-color.ts +0 -28
  198. package/front_end/ui/components/docs/computed_style_property/basic.html +0 -25
  199. package/front_end/ui/components/docs/computed_style_property/basic.ts +0 -19
  200. package/front_end/ui/components/docs/computed_style_property/traceable.html +0 -25
  201. package/front_end/ui/components/docs/computed_style_property/traceable.ts +0 -16
  202. package/front_end/ui/components/docs/computed_style_trace/basic.html +0 -25
  203. package/front_end/ui/components/docs/computed_style_trace/basic.ts +0 -24
  204. package/front_end/ui/components/docs/console_insight/basic.html +0 -28
  205. package/front_end/ui/components/docs/console_insight/basic.ts +0 -103
  206. package/front_end/ui/components/docs/console_insight/error.html +0 -28
  207. package/front_end/ui/components/docs/console_insight/error.ts +0 -33
  208. package/front_end/ui/components/docs/console_insight/loading.html +0 -28
  209. package/front_end/ui/components/docs/console_insight/loading.ts +0 -47
  210. package/front_end/ui/components/docs/elements_breadcrumbs/basic.html +0 -43
  211. package/front_end/ui/components/docs/elements_breadcrumbs/basic.ts +0 -54
  212. package/front_end/ui/components/docs/elements_breadcrumbs/helpers.ts +0 -29
  213. package/front_end/ui/components/docs/elements_breadcrumbs/scroll-to-active-element.html +0 -38
  214. package/front_end/ui/components/docs/elements_breadcrumbs/scroll-to-active-element.ts +0 -90
  215. package/front_end/ui/components/docs/elements_breadcrumbs/scroll.html +0 -29
  216. package/front_end/ui/components/docs/elements_breadcrumbs/scroll.ts +0 -62
  217. package/front_end/ui/components/docs/icon_button/basic.html +0 -34
  218. package/front_end/ui/components/docs/icon_button/basic.ts +0 -67
  219. package/front_end/ui/components/docs/issue_counter/basic.html +0 -35
  220. package/front_end/ui/components/docs/issue_counter/basic.ts +0 -34
  221. package/front_end/ui/components/docs/issue_link_icon/basic.html +0 -31
  222. package/front_end/ui/components/docs/issue_link_icon/basic.ts +0 -26
  223. package/front_end/ui/components/docs/linear_memory_inspector/basic.html +0 -26
  224. package/front_end/ui/components/docs/linear_memory_inspector/basic.ts +0 -44
  225. package/front_end/ui/components/docs/menu/basic.html +0 -28
  226. package/front_end/ui/components/docs/menu/basic.ts +0 -66
  227. package/front_end/ui/components/docs/recorder_control_button/basic.html +0 -20
  228. package/front_end/ui/components/docs/recorder_control_button/basic.ts +0 -15
  229. package/front_end/ui/components/docs/recorder_recording_list_view/basic.html +0 -20
  230. package/front_end/ui/components/docs/recorder_recording_list_view/basic.ts +0 -26
  231. package/front_end/ui/components/docs/recorder_select_button/basic.html +0 -20
  232. package/front_end/ui/components/docs/recorder_select_button/basic.ts +0 -81
  233. package/front_end/ui/components/docs/recorder_split_view/basic.html +0 -17
  234. package/front_end/ui/components/docs/recorder_split_view/basic.ts +0 -22
  235. package/front_end/ui/components/docs/request_link_icon/basic.html +0 -31
  236. package/front_end/ui/components/docs/request_link_icon/basic.ts +0 -21
  237. package/front_end/ui/components/docs/slider/basic.ts +0 -62
  238. package/front_end/ui/components/docs/style_property_editor/flex.html +0 -21
  239. package/front_end/ui/components/docs/style_property_editor/flex.ts +0 -52
  240. package/front_end/ui/components/docs/style_property_editor/grid.html +0 -22
  241. package/front_end/ui/components/docs/style_property_editor/grid.ts +0 -50
  242. package/front_end/ui/components/docs/style_property_editor/masonry.html +0 -21
  243. package/front_end/ui/components/docs/style_property_editor/masonry.ts +0 -50
  244. package/front_end/ui/components/docs/switch/basic.ts +0 -51
  245. /package/front_end/entrypoints/node_app/{nodeConnectionsPanel.css → app/nodeConnectionsPanel.css} +0 -0
@@ -53,6 +53,7 @@ import * as IconButton from '../../ui/components/icon_button/icon_button.js';
53
53
  import * as TextEditor from '../../ui/components/text_editor/text_editor.js';
54
54
  import * as Components from '../../ui/legacy/components/utils/utils.js';
55
55
  import * as UI from '../../ui/legacy/legacy.js';
56
+ import * as Lit from '../../ui/lit/lit.js';
56
57
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
57
58
  import * as Emulation from '../emulation/emulation.js';
58
59
  import * as Media from '../media/media.js';
@@ -64,6 +65,7 @@ import {ElementsPanel} from './ElementsPanel.js';
64
65
  import {type ElementsTreeOutline, MappedCharToEntity} from './ElementsTreeOutline.js';
65
66
  import {ImagePreviewPopover} from './ImagePreviewPopover.js';
66
67
  import {getRegisteredDecorators, type MarkerDecorator, type MarkerDecoratorRegistration} from './MarkerDecorator.js';
68
+ const {html, nothing, render, Directives: {ref, repeat}} = Lit;
67
69
 
68
70
  const UIStrings = {
69
71
  /**
@@ -335,12 +337,7 @@ const enum TagType {
335
337
 
336
338
  interface OpeningTagContext {
337
339
  tagType: TagType.OPENING;
338
- readonly adornerContainer: HTMLElement;
339
- adorners: Set<Adorners.Adorner.Adorner>;
340
- styleAdorners: Set<Adorners.Adorner.Adorner>;
341
- readonly adornersThrottler: Common.Throttler.Throttler;
342
340
  canAddAttributes: boolean;
343
- slot?: Adorners.Adorner.Adorner;
344
341
  }
345
342
 
346
343
  interface ClosingTagContext {
@@ -353,11 +350,47 @@ export function isOpeningTag(context: TagTypeContext): context is OpeningTagCont
353
350
  return context.tagType === TagType.OPENING;
354
351
  }
355
352
 
353
+ export interface ViewInput {
354
+ adorners?: Set<Adorners.Adorner.Adorner>;
355
+ nodeInfo?: DocumentFragment;
356
+
357
+ onGutterClick: (e: Event) => void;
358
+ }
359
+
360
+ export interface ViewOutput {
361
+ gutterContainer?: HTMLElement;
362
+ decorationsElement?: HTMLElement;
363
+ contentElement?: HTMLElement;
364
+ }
365
+
366
+ export const DEFAULT_VIEW = (input: ViewInput, output: ViewOutput, target: HTMLElement): void => {
367
+ // clang-format off
368
+ render(html`
369
+ <div ${ref(el => { output.contentElement = el as HTMLElement; })}>
370
+ ${input.nodeInfo ? html`<span class="highlight">${input.nodeInfo}</span>` : nothing}
371
+ <div class="gutter-container" @click=${input.onGutterClick} ${ref(el => { output.gutterContainer = el as HTMLElement; })}>
372
+ <devtools-icon name="dots-horizontal"></devtools-icon>
373
+ <div class="hidden" ${ref(el => { output.decorationsElement = el as HTMLElement; })}></div>
374
+ </div>
375
+ ${input.adorners ? html`<div class="adorner-container ${input.adorners.size === 0 ? 'hidden': ''}">
376
+ ${repeat(Array.from(input.adorners.values()).sort(adornerComparator), adorner => {
377
+ return adorner;
378
+ })}
379
+ </div>`: nothing}
380
+ </div>
381
+ `, target);
382
+ // clang-format on
383
+ };
384
+
356
385
  export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
357
386
  nodeInternal: SDK.DOMModel.DOMNode;
358
387
  override treeOutline: ElementsTreeOutline|null;
359
- private gutterContainer: HTMLElement;
360
- private readonly decorationsElement: HTMLElement;
388
+
389
+ // Handled by the view output for now.
390
+ gutterContainer!: HTMLElement;
391
+ decorationsElement!: HTMLElement;
392
+ contentElement!: HTMLElement;
393
+
361
394
  private searchQuery: string|null;
362
395
  #expandedChildrenLimit: number;
363
396
  private readonly decorationsThrottler: Common.Throttler.Throttler;
@@ -369,13 +402,16 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
369
402
  selectionElement?: HTMLDivElement;
370
403
  private hintElement?: HTMLElement;
371
404
  private aiButtonContainer?: HTMLElement;
372
- private contentElement: HTMLElement;
373
405
  #elementIssues = new Map<string, IssuesManager.Issue.Issue>();
374
406
  #nodeElementToIssue = new Map<Element, IssuesManager.Issue.Issue[]>();
375
407
  #highlights: Range[] = [];
376
408
 
377
409
  readonly tagTypeContext: TagTypeContext;
378
410
 
411
+ #adornersThrottler = new Common.Throttler.Throttler(100);
412
+ #adorners = new Set<Adorners.Adorner.Adorner>();
413
+ #nodeInfo?: DocumentFragment;
414
+
379
415
  constructor(node: SDK.DOMModel.DOMNode, isClosingTag?: boolean) {
380
416
  // The title will be updated in onattach.
381
417
  super();
@@ -387,13 +423,6 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
387
423
  drag: true,
388
424
  click: true,
389
425
  })}`);
390
- this.contentElement = this.listItemElement.createChild('div');
391
- this.gutterContainer = this.contentElement.createChild('div', 'gutter-container');
392
- this.gutterContainer.addEventListener('click', this.showContextMenu.bind(this));
393
- const gutterMenuIcon = new IconButton.Icon.Icon();
394
- gutterMenuIcon.name = 'dots-horizontal';
395
- this.gutterContainer.append(gutterMenuIcon);
396
- this.decorationsElement = this.gutterContainer.createChild('div', 'hidden');
397
426
 
398
427
  this.searchQuery = null;
399
428
  this.#expandedChildrenLimit = InitialChildrenLimit;
@@ -409,10 +438,6 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
409
438
  } else {
410
439
  this.tagTypeContext = {
411
440
  tagType: TagType.OPENING,
412
- adornerContainer: this.contentElement.createChild('div', 'adorner-container hidden'),
413
- adorners: new Set(),
414
- styleAdorners: new Set(),
415
- adornersThrottler: new Common.Throttler.Throttler(100),
416
441
  canAddAttributes: this.nodeInternal.nodeType() === Node.ELEMENT_NODE,
417
442
  };
418
443
  void this.updateStyleAdorners();
@@ -428,6 +453,8 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
428
453
  }
429
454
  this.expandAllButtonElement = null;
430
455
 
456
+ this.performUpdate();
457
+
431
458
  if (this.nodeInternal.retained && !this.isClosingTag()) {
432
459
  const icon = new IconButton.Icon.Icon();
433
460
  icon.name = 'small-status-dot';
@@ -498,6 +525,20 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
498
525
  }
499
526
  }
500
527
 
528
+ get adorners(): Adorners.Adorner.Adorner[] {
529
+ return Array.from(this.#adorners);
530
+ }
531
+
532
+ performUpdate(): void {
533
+ DEFAULT_VIEW(
534
+ {
535
+ adorners: !this.isClosingTag() ? this.#adorners : undefined,
536
+ nodeInfo: this.#nodeInfo,
537
+ onGutterClick: this.showContextMenu.bind(this),
538
+ },
539
+ this, this.listItemElement);
540
+ }
541
+
501
542
  highlightAttribute(attributeName: string): void {
502
543
  // If the attribute is not found, we highlight the tag name instead.
503
544
  let animationElement = this.listItemElement.querySelector('.webkit-html-tag-name') ?? this.listItemElement;
@@ -645,14 +686,15 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
645
686
  if (nodeShortcut) {
646
687
  const config = ElementsComponents.AdornerManager.getRegisteredAdorner(
647
688
  ElementsComponents.AdornerManager.RegisteredAdorners.SLOT);
648
- this.tagTypeContext.slot = this.adornSlot(config, this.tagTypeContext);
689
+ const adorner = this.adornSlot(config);
690
+ this.#adorners.add(adorner);
649
691
  const deferredNode = nodeShortcut.deferredNode;
650
- this.tagTypeContext.slot.addEventListener('click', () => {
692
+ adorner.addEventListener('click', () => {
651
693
  deferredNode.resolve(node => {
652
694
  void Common.Revealer.reveal(node);
653
695
  });
654
696
  });
655
- this.tagTypeContext.slot.addEventListener('mousedown', e => e.consume(), false);
697
+ adorner.addEventListener('mousedown', e => e.consume(), false);
656
698
  }
657
699
  }
658
700
 
@@ -735,7 +777,7 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
735
777
  }
736
778
 
737
779
  override async expandRecursively(): Promise<void> {
738
- await this.nodeInternal.getSubtree(-1, true);
780
+ await this.nodeInternal.getSubtree(100, true);
739
781
  await super.expandRecursively(Number.MAX_VALUE);
740
782
  }
741
783
 
@@ -1740,7 +1782,7 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
1740
1782
  return;
1741
1783
  }
1742
1784
 
1743
- const nodeInfo = this.nodeTitleInfo(updateRecord || null);
1785
+ this.#nodeInfo = this.nodeTitleInfo(updateRecord || null);
1744
1786
  if (this.nodeInternal.nodeType() === Node.DOCUMENT_FRAGMENT_NODE && this.nodeInternal.isInShadowTree() &&
1745
1787
  this.nodeInternal.shadowRootType()) {
1746
1788
  this.childrenListElement.classList.add('shadow-root');
@@ -1757,19 +1799,10 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
1757
1799
  this.childrenListElement.classList.add('shadow-root-depth-' + depth);
1758
1800
  }
1759
1801
  }
1760
- this.contentElement.removeChildren();
1761
- const highlightElement = this.contentElement.createChild('span', 'highlight');
1762
- highlightElement.append(nodeInfo);
1802
+ this.performUpdate();
1763
1803
  // fixme: make it clear that `this.title = x` is a setter with significant side effects
1764
1804
  this.title = this.contentElement;
1765
1805
  this.updateDecorations();
1766
- this.contentElement.prepend(this.gutterContainer);
1767
- if (isOpeningTag(this.tagTypeContext)) {
1768
- this.contentElement.append(this.tagTypeContext.adornerContainer);
1769
- }
1770
- delete this.selectionElement;
1771
- delete this.hintElement;
1772
- delete this.aiButtonContainer;
1773
1806
  if (this.selected) {
1774
1807
  this.createSelection();
1775
1808
  this.createHint();
@@ -2463,14 +2496,14 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2463
2496
  jslogContext: name,
2464
2497
  };
2465
2498
  if (isOpeningTag(this.tagTypeContext)) {
2466
- this.tagTypeContext.adorners.add(adorner);
2499
+ this.#adorners.add(adorner);
2467
2500
  ElementsPanel.instance().registerAdorner(adorner);
2468
- this.updateAdorners(this.tagTypeContext);
2501
+ this.updateAdorners();
2469
2502
  }
2470
2503
  return adorner;
2471
2504
  }
2472
2505
 
2473
- adornSlot({name}: {name: string}, context: OpeningTagContext): Adorners.Adorner.Adorner {
2506
+ adornSlot({name}: {name: string}): Adorners.Adorner.Adorner {
2474
2507
  const linkIcon = IconButton.Icon.create('select-element');
2475
2508
  const slotText = document.createElement('span');
2476
2509
  slotText.textContent = name;
@@ -2484,9 +2517,9 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2484
2517
  content: adornerContent,
2485
2518
  jslogContext: 'slot',
2486
2519
  };
2487
- context.adorners.add(adorner);
2520
+ this.#adorners.add(adorner);
2488
2521
  ElementsPanel.instance().registerAdorner(adorner);
2489
- this.updateAdorners(context);
2522
+ this.updateAdorners();
2490
2523
  return adorner;
2491
2524
  }
2492
2525
 
@@ -2506,19 +2539,18 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2506
2539
  jslogContext: 'media',
2507
2540
  };
2508
2541
  if (isOpeningTag(this.tagTypeContext)) {
2509
- this.tagTypeContext.adorners.add(adorner);
2542
+ this.#adorners.add(adorner);
2510
2543
  ElementsPanel.instance().registerAdorner(adorner);
2511
- this.updateAdorners(this.tagTypeContext);
2544
+ this.updateAdorners();
2512
2545
  }
2513
2546
  return adorner;
2514
2547
  }
2515
2548
 
2516
- removeAdorner(adornerToRemove: Adorners.Adorner.Adorner, context: OpeningTagContext): void {
2549
+ removeAdorner(adornerToRemove: Adorners.Adorner.Adorner): void {
2517
2550
  ElementsPanel.instance().deregisterAdorner(adornerToRemove);
2518
2551
  adornerToRemove.remove();
2519
- context.adorners.delete(adornerToRemove);
2520
- context.styleAdorners.delete(adornerToRemove);
2521
- this.updateAdorners(context);
2552
+ this.#adorners.delete(adornerToRemove);
2553
+ this.updateAdorners();
2522
2554
  }
2523
2555
 
2524
2556
  /**
@@ -2529,32 +2561,21 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2529
2561
  return;
2530
2562
  }
2531
2563
 
2532
- for (const adorner of this.tagTypeContext.adorners) {
2564
+ for (const adorner of this.#adorners) {
2533
2565
  if (adorner.name === adornerType || !adornerType) {
2534
- this.removeAdorner(adorner, this.tagTypeContext);
2566
+ this.removeAdorner(adorner);
2535
2567
  }
2536
2568
  }
2537
2569
  }
2538
2570
 
2539
- private updateAdorners(context: OpeningTagContext): void {
2540
- void context.adornersThrottler.schedule(this.#updateAdorners.bind(null, context));
2571
+ private updateAdorners(): void {
2572
+ // TODO: remove adornersThrottler in favour of throttled updated (requestUpdate/performUpdate).
2573
+ void this.#adornersThrottler.schedule(this.#updateAdorners.bind(this));
2541
2574
  }
2542
2575
 
2543
- #updateAdorners(context: OpeningTagContext): Promise<void> {
2544
- const adornerContainer = context.adornerContainer;
2545
- if (!adornerContainer) {
2546
- return Promise.resolve();
2547
- }
2548
- const adorners = [...context.adorners].sort(adornerComparator);
2549
- if (context.slot) {
2550
- adorners.push(context.slot);
2551
- }
2552
-
2553
- adornerContainer.removeChildren();
2554
- for (const adorner of adorners) {
2555
- adornerContainer.appendChild(adorner);
2556
- }
2557
- adornerContainer.classList.toggle('hidden', adorners.length === 0);
2576
+ #updateAdorners(): Promise<void> {
2577
+ // TODO: remove in favour of throttled updated (requestUpdate/performUpdate).
2578
+ this.performUpdate();
2558
2579
  return Promise.resolve();
2559
2580
  }
2560
2581
 
@@ -2571,44 +2592,51 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2571
2592
  }
2572
2593
 
2573
2594
  const layout = await node.domModel().cssModel().getLayoutPropertiesFromComputedStyle(nodeId);
2574
- for (const styleAdorner of this.tagTypeContext.styleAdorners) {
2575
- this.removeAdorner(styleAdorner, this.tagTypeContext);
2576
- }
2595
+ // TODO: move this to the template.
2596
+ this.removeAdornersByType(ElementsComponents.AdornerManager.RegisteredAdorners.SUBGRID);
2597
+ this.removeAdornersByType(ElementsComponents.AdornerManager.RegisteredAdorners.GRID);
2598
+ this.removeAdornersByType(ElementsComponents.AdornerManager.RegisteredAdorners.MASONRY);
2599
+ this.removeAdornersByType(ElementsComponents.AdornerManager.RegisteredAdorners.FLEX);
2600
+ this.removeAdornersByType(ElementsComponents.AdornerManager.RegisteredAdorners.SCROLL_SNAP);
2601
+ this.removeAdornersByType(ElementsComponents.AdornerManager.RegisteredAdorners.CONTAINER);
2602
+ this.removeAdornersByType(ElementsComponents.AdornerManager.RegisteredAdorners.MEDIA);
2603
+ this.removeAdornersByType(ElementsComponents.AdornerManager.RegisteredAdorners.STARTING_STYLE);
2604
+ this.removeAdornersByType(ElementsComponents.AdornerManager.RegisteredAdorners.POPOVER);
2577
2605
  if (layout) {
2578
2606
  if (layout.isGrid) {
2579
- this.pushGridAdorner(this.tagTypeContext, layout.isSubgrid);
2607
+ this.pushGridAdorner(layout.isSubgrid);
2580
2608
  }
2581
2609
  if (layout.isMasonry) {
2582
- this.pushMasonryAdorner(this.tagTypeContext);
2610
+ this.pushMasonryAdorner();
2583
2611
  }
2584
2612
  if (layout.isFlex) {
2585
- this.pushFlexAdorner(this.tagTypeContext);
2613
+ this.pushFlexAdorner();
2586
2614
  }
2587
2615
  if (layout.hasScroll) {
2588
- this.pushScrollSnapAdorner(this.tagTypeContext);
2616
+ this.pushScrollSnapAdorner();
2589
2617
  }
2590
2618
  if (layout.isContainer) {
2591
- this.pushContainerAdorner(this.tagTypeContext);
2619
+ this.pushContainerAdorner();
2592
2620
  }
2593
2621
  }
2594
2622
 
2595
2623
  if (node.isMediaNode()) {
2596
- this.pushMediaAdorner(this.tagTypeContext);
2624
+ this.pushMediaAdorner();
2597
2625
  }
2598
2626
 
2599
2627
  if (Root.Runtime.hostConfig.devToolsStartingStyleDebugging?.enabled) {
2600
2628
  const affectedByStartingStyles = node.affectedByStartingStyles();
2601
2629
  if (affectedByStartingStyles) {
2602
- this.pushStartingStyleAdorner(this.tagTypeContext);
2630
+ this.pushStartingStyleAdorner();
2603
2631
  }
2604
2632
  }
2605
2633
 
2606
2634
  if (node.attributes().find(attr => attr.name === 'popover')) {
2607
- this.pushPopoverAdorner(this.tagTypeContext);
2635
+ this.pushPopoverAdorner();
2608
2636
  }
2609
2637
  }
2610
2638
 
2611
- pushPopoverAdorner(context: OpeningTagContext): void {
2639
+ pushPopoverAdorner(): void {
2612
2640
  if (!Root.Runtime.hostConfig.devToolsAllowPopoverForcing?.enabled) {
2613
2641
  return;
2614
2642
  }
@@ -2629,7 +2657,7 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2629
2657
  if (!treeElement || !isOpeningTag(treeElement.tagTypeContext)) {
2630
2658
  return;
2631
2659
  }
2632
- const adorner = treeElement.tagTypeContext.adorners.values().find(adorner => adorner.name === config.name);
2660
+ const adorner = this.#adorners.values().find(adorner => adorner.name === config.name);
2633
2661
  adorner?.toggle(false);
2634
2662
  }
2635
2663
  };
@@ -2640,10 +2668,10 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2640
2668
  ariaLabelActive: i18nString(UIStrings.stopForceOpenPopover),
2641
2669
  });
2642
2670
 
2643
- context.styleAdorners.add(adorner);
2671
+ this.#adorners.add(adorner);
2644
2672
  }
2645
2673
 
2646
- pushGridAdorner(context: OpeningTagContext, isSubgrid: boolean): void {
2674
+ pushGridAdorner(isSubgrid: boolean): void {
2647
2675
  const node = this.node();
2648
2676
  const nodeId = node.id;
2649
2677
  if (!nodeId) {
@@ -2682,13 +2710,13 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2682
2710
  adorner.toggle(enabled);
2683
2711
  });
2684
2712
 
2685
- context.styleAdorners.add(adorner);
2713
+ this.#adorners.add(adorner);
2686
2714
  if (node.domModel().overlayModel().isHighlightedGridInPersistentOverlay(nodeId)) {
2687
2715
  adorner.toggle(true);
2688
2716
  }
2689
2717
  }
2690
2718
 
2691
- pushMasonryAdorner(context: OpeningTagContext): void {
2719
+ pushMasonryAdorner(): void {
2692
2720
  const node = this.node();
2693
2721
  const nodeId = node.id;
2694
2722
  if (!nodeId) {
@@ -2724,13 +2752,13 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2724
2752
  adorner.toggle(enabled);
2725
2753
  });
2726
2754
 
2727
- context.styleAdorners.add(adorner);
2755
+ this.#adorners.add(adorner);
2728
2756
  if (node.domModel().overlayModel().isHighlightedGridInPersistentOverlay(nodeId)) {
2729
2757
  adorner.toggle(true);
2730
2758
  }
2731
2759
  }
2732
2760
 
2733
- pushScrollSnapAdorner(context: OpeningTagContext): void {
2761
+ pushScrollSnapAdorner(): void {
2734
2762
  const node = this.node();
2735
2763
  const nodeId = node.id;
2736
2764
  if (!nodeId) {
@@ -2766,14 +2794,14 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2766
2794
  adorner.toggle(enabled);
2767
2795
  });
2768
2796
 
2769
- context.styleAdorners.add(adorner);
2797
+ this.#adorners.add(adorner);
2770
2798
 
2771
2799
  if (node.domModel().overlayModel().isHighlightedScrollSnapInPersistentOverlay(nodeId)) {
2772
2800
  adorner.toggle(true);
2773
2801
  }
2774
2802
  }
2775
2803
 
2776
- pushStartingStyleAdorner(context: OpeningTagContext): void {
2804
+ pushStartingStyleAdorner(): void {
2777
2805
  const node = this.node();
2778
2806
  const nodeId = node.id;
2779
2807
  if (!nodeId) {
@@ -2800,10 +2828,10 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2800
2828
  ariaLabelActive: i18nString(UIStrings.disableStartingStyle),
2801
2829
  });
2802
2830
 
2803
- context.styleAdorners.add(adorner);
2831
+ this.#adorners.add(adorner);
2804
2832
  }
2805
2833
 
2806
- pushFlexAdorner(context: OpeningTagContext): void {
2834
+ pushFlexAdorner(): void {
2807
2835
  const node = this.node();
2808
2836
  const nodeId = node.id;
2809
2837
  if (!nodeId) {
@@ -2840,14 +2868,14 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2840
2868
  adorner.toggle(enabled);
2841
2869
  });
2842
2870
 
2843
- context.styleAdorners.add(adorner);
2871
+ this.#adorners.add(adorner);
2844
2872
 
2845
2873
  if (node.domModel().overlayModel().isHighlightedFlexContainerInPersistentOverlay(nodeId)) {
2846
2874
  adorner.toggle(true);
2847
2875
  }
2848
2876
  }
2849
2877
 
2850
- pushContainerAdorner(context: OpeningTagContext): void {
2878
+ pushContainerAdorner(): void {
2851
2879
  const node = this.node();
2852
2880
  const nodeId = node.id;
2853
2881
  if (!nodeId) {
@@ -2884,13 +2912,13 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2884
2912
  adorner.toggle(enabled);
2885
2913
  });
2886
2914
 
2887
- context.styleAdorners.add(adorner);
2915
+ this.#adorners.add(adorner);
2888
2916
  if (node.domModel().overlayModel().isHighlightedContainerQueryInPersistentOverlay(nodeId)) {
2889
2917
  adorner.toggle(true);
2890
2918
  }
2891
2919
  }
2892
2920
 
2893
- pushMediaAdorner(context: OpeningTagContext): void {
2921
+ pushMediaAdorner(): void {
2894
2922
  const node = this.node();
2895
2923
  const nodeId = node.id;
2896
2924
  if (!nodeId) {
@@ -2919,15 +2947,15 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2919
2947
  ariaLabelActive: i18nString(UIStrings.openMediaPanel),
2920
2948
  });
2921
2949
 
2922
- context.styleAdorners.add(adorner);
2950
+ this.#adorners.add(adorner);
2923
2951
  }
2924
2952
 
2925
2953
  updateScrollAdorner(): void {
2926
2954
  if (!isOpeningTag(this.tagTypeContext)) {
2927
2955
  return;
2928
2956
  }
2929
- const scrollAdorner = this.tagTypeContext.adorners.values().find(
2930
- x => x.name === ElementsComponents.AdornerManager.RegisteredAdorners.SCROLL);
2957
+ const scrollAdorner =
2958
+ this.#adorners.values().find(x => x.name === ElementsComponents.AdornerManager.RegisteredAdorners.SCROLL);
2931
2959
  // Check if the node is scrollable, or if it's the <html> element and the document is scrollable
2932
2960
  // because the top-level document (#document) doesn't have a corresponding tree element.
2933
2961
  const needsAScrollAdorner = (this.node().nodeName() === 'HTML' && this.node().ownerDocument?.isScrollable()) ||
@@ -2935,7 +2963,7 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
2935
2963
  if (needsAScrollAdorner && !scrollAdorner) {
2936
2964
  this.pushScrollAdorner();
2937
2965
  } else if (!needsAScrollAdorner && scrollAdorner) {
2938
- this.removeAdorner(scrollAdorner, this.tagTypeContext);
2966
+ this.removeAdorner(scrollAdorner);
2939
2967
  }
2940
2968
  }
2941
2969
 
@@ -1986,7 +1986,7 @@ export class ElementsTreeOutline extends
1986
1986
  }
1987
1987
  const treeElement = this.treeElementByNode.get(node);
1988
1988
  if (treeElement && isOpeningTag(treeElement.tagTypeContext)) {
1989
- void treeElement.tagTypeContext.adornersThrottler.schedule(async () => treeElement.updateScrollAdorner());
1989
+ void treeElement.updateScrollAdorner();
1990
1990
  }
1991
1991
  }
1992
1992
 
@@ -1995,7 +1995,7 @@ export class ElementsTreeOutline extends
1995
1995
  const {node} = event.data;
1996
1996
  const treeElement = this.treeElementByNode.get(node);
1997
1997
  if (treeElement && isOpeningTag(treeElement.tagTypeContext)) {
1998
- void treeElement.tagTypeContext.adornersThrottler.schedule(async () => await treeElement.updateStyleAdorners());
1998
+ void treeElement.updateStyleAdorners();
1999
1999
  }
2000
2000
  }
2001
2001
  }
@@ -4,6 +4,7 @@
4
4
 
5
5
  import * as i18n from '../../core/i18n/i18n.js';
6
6
  import * as SDK from '../../core/sdk/sdk.js';
7
+ import * as Bindings from '../../models/bindings/bindings.js';
7
8
  import * as Components from '../../ui/legacy/components/utils/utils.js';
8
9
  import * as UI from '../../ui/legacy/legacy.js';
9
10
  import {html, render} from '../../ui/lit/lit.js';
@@ -65,9 +66,14 @@ export class NodeStackTraceWidget extends UI.Widget.VBox {
65
66
  override async performUpdate(): Promise<void> {
66
67
  const node = UI.Context.Context.instance().flavor(SDK.DOMModel.DOMNode);
67
68
 
68
- const stackTrace = await node?.creationStackTrace() ?? undefined;
69
+ const target = node?.domModel().target();
70
+ const runtimeStackTrace = await node?.creationStackTrace() ?? undefined;
71
+ const stackTrace = runtimeStackTrace && target ?
72
+ await Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createStackTraceFromProtocolRuntime(
73
+ runtimeStackTrace, target) :
74
+ undefined;
69
75
  const input: ViewInput = {
70
- target: node?.domModel().target(),
76
+ target,
71
77
  linkifier: this.#linkifier,
72
78
  options: {stackTrace},
73
79
  };
@@ -374,7 +374,6 @@ export class ConsoleInsight extends HTMLElement {
374
374
  }
375
375
 
376
376
  connectedCallback(): void {
377
- this.classList.add('opening');
378
377
  this.#consoleInsightsEnabledSetting?.addChangeListener(this.#onConsoleInsightsSettingChanged, this);
379
378
  const blockedByAge = Root.Runtime.hostConfig.aidaAvailability?.blockedByAge === true;
380
379
  if (this.#state.type === State.LOADING && this.#consoleInsightsEnabledSetting?.getIfNotDisabled() === true &&