chrome-devtools-frontend 1.0.1683520 → 1.0.1689415

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 (661) hide show
  1. package/.agents/skills/gerrit-cli/SKILL.md +29 -8
  2. package/.agents/skills/gerrit-cli/references/commands.md +51 -18
  3. package/.agents/skills/gerrit-cli/references/workflows.md +6 -6
  4. package/.agents/skills/gerrit-cli/scripts/import_upstream.py +43 -70
  5. package/AUTHORS +1 -0
  6. package/config/typescript/tsconfig.base.json +1 -0
  7. package/config/typescript/tsconfig.eslint.json +9 -0
  8. package/docs/contributing/issues.md +1 -1
  9. package/docs/styleguide/ux/writing.md +2 -2
  10. package/eslint.config.mjs +18 -10
  11. package/front_end/core/common/Base64.ts +1 -1
  12. package/front_end/core/common/Color.ts +28 -6
  13. package/front_end/core/common/ColorConverter.ts +12 -0
  14. package/front_end/core/common/Console.ts +2 -1
  15. package/front_end/core/common/Object.ts +2 -2
  16. package/front_end/core/common/ResourceType.ts +12 -13
  17. package/front_end/core/common/Revealer.ts +1 -1
  18. package/front_end/core/common/Settings.ts +2 -2
  19. package/front_end/core/common/TextDictionary.ts +2 -2
  20. package/front_end/core/common/Throttler.ts +1 -1
  21. package/front_end/core/host/InspectorFrontendHostAPI.ts +2 -2
  22. package/front_end/core/host/UserMetrics.ts +51 -37
  23. package/front_end/core/host/host.ts +1 -1
  24. package/front_end/core/i18n/i18nImpl.ts +1 -1
  25. package/front_end/core/platform/HostRuntime.ts +3 -3
  26. package/front_end/core/platform/KeyboardUtilities.ts +1 -1
  27. package/front_end/core/protocol_client/InspectorBackend.ts +7 -6
  28. package/front_end/core/root/Runtime.ts +4 -2
  29. package/front_end/core/sdk/AnimationModel.ts +1 -1
  30. package/front_end/core/sdk/CPUThrottlingManager.ts +198 -0
  31. package/front_end/core/sdk/CSSMetadata.ts +11 -6
  32. package/front_end/core/sdk/CSSPropertyParser.ts +5 -3
  33. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +90 -59
  34. package/front_end/core/sdk/ConsoleModel.ts +1 -1
  35. package/front_end/core/sdk/DOMModel.ts +3 -3
  36. package/front_end/core/sdk/DebuggerModel.ts +1 -1
  37. package/front_end/core/sdk/EmulationModel.ts +5 -0
  38. package/front_end/core/sdk/LayerTreeBase.ts +1 -1
  39. package/front_end/core/sdk/NetworkManager.ts +1 -1
  40. package/front_end/core/sdk/README.md +40 -0
  41. package/front_end/core/sdk/RehydratingConnection.ts +1 -1
  42. package/front_end/core/sdk/RemoteObject.ts +1 -1
  43. package/front_end/core/sdk/ResourceTreeModel.ts +2 -2
  44. package/front_end/core/sdk/SDKModel.ts +1 -1
  45. package/front_end/core/sdk/SDKSettings.ts +6 -0
  46. package/front_end/core/sdk/Script.ts +2 -1
  47. package/front_end/core/sdk/SecurityOrigin.ts +48 -0
  48. package/front_end/core/sdk/ServiceWorkerCacheModel.ts +0 -7
  49. package/front_end/core/sdk/ServiceWorkerManager.ts +75 -17
  50. package/front_end/core/sdk/StorageBucketsModel.ts +0 -6
  51. package/front_end/core/sdk/sdk.ts +2 -0
  52. package/front_end/core/text_utils/ContentData.ts +1 -1
  53. package/front_end/entrypoints/formatter_worker/FormattedContentBuilder.ts +3 -1
  54. package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +1 -1
  55. package/front_end/entrypoints/formatter_worker/ScopeParser.ts +2 -2
  56. package/front_end/entrypoints/formatter_worker/Substitute.ts +1 -1
  57. package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +1 -1
  58. package/front_end/entrypoints/inspector_main/InspectorMain.ts +1 -1
  59. package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +1 -1
  60. package/front_end/entrypoints/inspector_main/nodeIcon.css +1 -1
  61. package/front_end/entrypoints/inspector_main/outermostTargetSelector.css +3 -3
  62. package/front_end/entrypoints/inspector_main/renderingOptions.css +3 -3
  63. package/front_end/entrypoints/js_app/js_app.ts +25 -9
  64. package/front_end/entrypoints/main/MainImpl.ts +2 -1
  65. package/front_end/entrypoints/main/main-meta.ts +5 -31
  66. package/front_end/entrypoints/node_app/app/nodeConnectionsPanel.css +5 -5
  67. package/front_end/entrypoints/node_app/node_app.ts +1 -1
  68. package/front_end/foundation/Universe.ts +7 -0
  69. package/front_end/generated/ARIAProperties.ts +39 -1
  70. package/front_end/generated/InspectorBackendCommands.ts +13 -22
  71. package/front_end/generated/SupportedCSSProperties.ts +60 -119
  72. package/front_end/generated/protocol-mapping.d.ts +18 -59
  73. package/front_end/generated/protocol-proxy-api.d.ts +14 -47
  74. package/front_end/generated/protocol.ts +104 -331
  75. package/front_end/models/ai_assistance/AiAgent2.ts +25 -11
  76. package/front_end/models/ai_assistance/AiConversation.ts +23 -14
  77. package/front_end/models/ai_assistance/AiHistoryStorage.ts +2 -2
  78. package/front_end/models/ai_assistance/AiUtils.ts +16 -0
  79. package/front_end/models/ai_assistance/EvaluateAction.ts +1 -1
  80. package/front_end/models/ai_assistance/README.md +1 -1
  81. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +2 -3
  82. package/front_end/models/ai_assistance/agents/AiAgent.ts +40 -25
  83. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +4 -3
  84. package/front_end/models/ai_assistance/agents/FileAgent.ts +2 -2
  85. package/front_end/models/ai_assistance/agents/NetworkAgent.ts +2 -2
  86. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +1 -1
  87. package/front_end/models/ai_assistance/agents/StorageAgent.ts +13 -11
  88. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +2 -2
  89. package/front_end/models/ai_assistance/agents/StylingAgent.ts +9 -7
  90. package/front_end/models/ai_assistance/ai_assistance.ts +12 -0
  91. package/front_end/models/ai_assistance/contexts/AccessibilityContext.ts +16 -1
  92. package/front_end/models/ai_assistance/contexts/FileContext.ts +6 -0
  93. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +150 -325
  94. package/front_end/models/ai_assistance/injected.ts +5 -3
  95. package/front_end/models/ai_assistance/performance/AIContext.ts +1 -1
  96. package/front_end/models/ai_assistance/skills/README.md +1 -1
  97. package/front_end/models/ai_assistance/skills/accessibility.md +19 -10
  98. package/front_end/models/ai_assistance/skills/network.md +13 -7
  99. package/front_end/models/ai_assistance/skills/performance.md +22 -16
  100. package/front_end/models/ai_assistance/skills/sources.md +13 -7
  101. package/front_end/models/ai_assistance/skills/storage.md +19 -18
  102. package/front_end/models/ai_assistance/skills/styling.md +30 -37
  103. package/front_end/models/ai_assistance/tools/CookieUtils.ts +120 -0
  104. package/front_end/models/ai_assistance/tools/DOMStorageUtils.ts +53 -4
  105. package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +8 -32
  106. package/front_end/models/ai_assistance/tools/GetCookieValues.ts +146 -0
  107. package/front_end/models/ai_assistance/tools/GetDetailedCallTree.ts +11 -9
  108. package/front_end/models/ai_assistance/tools/GetElementAccessibilityDetails.ts +17 -5
  109. package/front_end/models/ai_assistance/tools/GetFunctionCode.ts +12 -11
  110. package/front_end/models/ai_assistance/tools/GetInsightDetails.ts +11 -11
  111. package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +15 -8
  112. package/front_end/models/ai_assistance/tools/GetNetworkRequestDetails.ts +3 -3
  113. package/front_end/models/ai_assistance/tools/GetResourceContent.ts +12 -12
  114. package/front_end/models/ai_assistance/tools/GetSourceContent.ts +3 -2
  115. package/front_end/models/ai_assistance/tools/GetStorageBreakdown.ts +132 -0
  116. package/front_end/models/ai_assistance/tools/GetStorageValues.ts +18 -5
  117. package/front_end/models/ai_assistance/tools/GetStyles.ts +3 -3
  118. package/front_end/models/ai_assistance/tools/GetTraceEventByKey.ts +9 -8
  119. package/front_end/models/ai_assistance/tools/GetTraceMainThreadSummary.ts +13 -14
  120. package/front_end/models/ai_assistance/tools/GetTraceNetworkSummary.ts +12 -10
  121. package/front_end/models/ai_assistance/tools/ListCookies.ts +93 -0
  122. package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +15 -6
  123. package/front_end/models/ai_assistance/tools/ListPageOrigins.ts +3 -3
  124. package/front_end/models/ai_assistance/tools/ListSources.ts +5 -3
  125. package/front_end/models/ai_assistance/tools/ListStorageKeys.ts +17 -5
  126. package/front_end/models/ai_assistance/tools/RecordPerformanceTrace.ts +3 -2
  127. package/front_end/models/ai_assistance/tools/ResolveDevtoolsNodePath.ts +4 -3
  128. package/front_end/models/ai_assistance/tools/RunLighthouse.ts +14 -17
  129. package/front_end/models/ai_assistance/tools/SelectTraceEventByKey.ts +9 -8
  130. package/front_end/models/ai_assistance/tools/Tool.ts +36 -13
  131. package/front_end/models/ai_assistance/tools/ToolRegistry.ts +41 -8
  132. package/front_end/models/badges/AiExplorerBadge.ts +3 -3
  133. package/front_end/models/badges/CodeWhispererBadge.ts +2 -2
  134. package/front_end/models/badges/DOMDetectiveBadge.ts +3 -3
  135. package/front_end/models/badges/SpeedsterBadge.ts +3 -3
  136. package/front_end/models/badges/StarterBadge.ts +4 -4
  137. package/front_end/models/bindings/CompilerScriptMapping.ts +11 -2
  138. package/front_end/models/bindings/ContentProviderBasedProject.ts +3 -2
  139. package/front_end/models/breakpoints/BreakpointManager.ts +1 -1
  140. package/front_end/models/emulation/EmulatedDevices.ts +2 -2
  141. package/front_end/models/formatter/FormatterWorkerPool.ts +2 -2
  142. package/front_end/models/formatter/ScriptFormatter.ts +1 -2
  143. package/front_end/models/geometry/GeometryImpl.ts +2 -2
  144. package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +1 -1
  145. package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +3 -2
  146. package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +5 -5
  147. package/front_end/models/issues_manager/DOMIssuesManager.ts +144 -0
  148. package/front_end/models/issues_manager/ElementAccessibilityIssue.ts +13 -1
  149. package/front_end/models/issues_manager/GenericIssue.ts +32 -20
  150. package/front_end/models/issues_manager/IssuesManager.ts +0 -1
  151. package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +1 -1
  152. package/front_end/models/issues_manager/issues_manager.ts +2 -0
  153. package/front_end/models/javascript_metadata/{NativeFunctions.js → NativeFunctions.ts} +29 -9
  154. package/front_end/models/live-metrics/LiveMetrics.ts +9 -3
  155. package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +58 -6
  156. package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +2 -62
  157. package/front_end/models/network_time_calculator/RequestTimeRanges.ts +2 -2
  158. package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +5 -0
  159. package/front_end/models/persistence/IsolatedFileSystem.ts +1 -1
  160. package/front_end/models/persistence/NetworkPersistenceManager.ts +35 -6
  161. package/front_end/models/stack_trace/StackTraceImpl.ts +2 -2
  162. package/front_end/models/trace/LanternComputationData.ts +2 -3
  163. package/front_end/models/trace/extras/StackTraceForEvent.ts +3 -2
  164. package/front_end/models/trace/extras/ThirdParties.ts +9 -9
  165. package/front_end/models/trace/handlers/AsyncJSCallsHandler.ts +7 -4
  166. package/front_end/models/trace/handlers/FramesHandler.ts +3 -3
  167. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +2 -2
  168. package/front_end/models/trace/handlers/SamplesHandler.ts +4 -2
  169. package/front_end/models/trace/handlers/UserInteractionsHandler.ts +1 -1
  170. package/front_end/models/trace/handlers/WarningsHandler.ts +2 -2
  171. package/front_end/models/trace/helpers/Network.ts +3 -3
  172. package/front_end/models/trace/helpers/Trace.ts +1 -1
  173. package/front_end/models/trace/insights/CLSCulprits.ts +2 -1
  174. package/front_end/models/trace/insights/Cache.ts +3 -1
  175. package/front_end/models/trace/insights/CharacterSet.ts +3 -1
  176. package/front_end/models/trace/insights/DOMSize.ts +3 -1
  177. package/front_end/models/trace/insights/DocumentLatency.ts +3 -1
  178. package/front_end/models/trace/insights/DuplicatedJavaScript.ts +3 -1
  179. package/front_end/models/trace/insights/FontDisplay.ts +2 -1
  180. package/front_end/models/trace/insights/ForcedReflow.ts +2 -1
  181. package/front_end/models/trace/insights/INPBreakdown.ts +3 -1
  182. package/front_end/models/trace/insights/ImageDelivery.ts +3 -1
  183. package/front_end/models/trace/insights/LCPBreakdown.ts +3 -1
  184. package/front_end/models/trace/insights/LCPDiscovery.ts +3 -1
  185. package/front_end/models/trace/insights/LegacyJavaScript.ts +3 -1
  186. package/front_end/models/trace/insights/ModernHTTP.ts +2 -1
  187. package/front_end/models/trace/insights/NetworkDependencyTree.ts +2 -1
  188. package/front_end/models/trace/insights/RenderBlocking.ts +5 -4
  189. package/front_end/models/trace/insights/SlowCSSSelector.ts +3 -1
  190. package/front_end/models/trace/insights/ThirdParties.ts +5 -3
  191. package/front_end/models/trace/insights/Viewport.ts +2 -1
  192. package/front_end/models/trace/lantern/simulation/Constants.ts +34 -2
  193. package/front_end/models/trace/lantern/simulation/DNSCache.ts +1 -1
  194. package/front_end/models/trace/types/TraceEvents.ts +8 -3
  195. package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +2 -1
  196. package/front_end/models/workspace/WorkspaceImpl.ts +18 -2
  197. package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +686 -2
  198. package/front_end/panels/accessibility/accessibilityNode.css +4 -4
  199. package/front_end/panels/accessibility/accessibilityProperties.css +1 -1
  200. package/front_end/panels/accessibility/accessibilitySidebarView.css +2 -2
  201. package/front_end/panels/accessibility/axBreadcrumbs.css +13 -13
  202. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +14 -14
  203. package/front_end/panels/ai_assistance/ExternalHandler.ts +89 -0
  204. package/front_end/panels/ai_assistance/aiAssistancePanel.css +1 -1
  205. package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
  206. package/front_end/panels/ai_assistance/components/ChatInput.ts +3 -2
  207. package/front_end/panels/ai_assistance/components/ChatView.ts +1 -1
  208. package/front_end/panels/ai_assistance/components/DisabledWidget.ts +1 -1
  209. package/front_end/panels/ai_assistance/components/ExploreWidget.ts +1 -1
  210. package/front_end/panels/ai_assistance/components/chatInput.css +12 -12
  211. package/front_end/panels/ai_assistance/components/chatMessage.css +16 -16
  212. package/front_end/panels/ai_assistance/components/chatView.css +2 -2
  213. package/front_end/panels/ai_assistance/components/exploreWidget.css +1 -1
  214. package/front_end/panels/ai_assistance/components/exportForAgentsDialog.css +4 -0
  215. package/front_end/panels/ai_assistance/components/walkthroughView.css +6 -6
  216. package/front_end/panels/animation/animationTimeline.css +62 -62
  217. package/front_end/panels/application/ApplicationPanelSidebar.ts +6 -1
  218. package/front_end/panels/application/BackgroundServiceModel.ts +4 -3
  219. package/front_end/panels/application/BackgroundServiceView.ts +290 -252
  220. package/front_end/panels/application/IndexedDBModel.ts +0 -7
  221. package/front_end/panels/application/WebMCPView.ts +15 -7
  222. package/front_end/panels/application/appManifestView.css +5 -5
  223. package/front_end/panels/application/backgroundServiceView.css +18 -2
  224. package/front_end/panels/application/components/AdsView.ts +100 -4
  225. package/front_end/panels/application/components/adsView.css +8 -5
  226. package/front_end/panels/application/components/backForwardCacheView.css +5 -5
  227. package/front_end/panels/application/components/bounceTrackingMitigationsView.css +1 -1
  228. package/front_end/panels/application/components/endpointsGrid.css +1 -1
  229. package/front_end/panels/application/components/permissionsPolicySection.css +1 -1
  230. package/front_end/panels/application/components/protocolHandlersView.css +6 -6
  231. package/front_end/panels/application/components/reportsGrid.css +1 -1
  232. package/front_end/panels/application/components/serviceWorkerRouterView.css +4 -4
  233. package/front_end/panels/application/components/trustTokensView.css +7 -7
  234. package/front_end/panels/application/cookieItemsView.css +3 -3
  235. package/front_end/panels/application/deviceBoundSessionsView.css +3 -3
  236. package/front_end/panels/application/frameDetailsReportView.css +11 -11
  237. package/front_end/panels/application/indexedDBViews.css +7 -7
  238. package/front_end/panels/application/originTrialTokenRows.css +2 -2
  239. package/front_end/panels/application/originTrialTreeView.css +3 -3
  240. package/front_end/panels/application/preloading/components/RuleSetDetailsView.css +2 -2
  241. package/front_end/panels/application/preloading/components/preloadingDetailsReportView.css +1 -1
  242. package/front_end/panels/application/preloading/components/preloadingDisabledInfobar.css +2 -2
  243. package/front_end/panels/application/preloading/components/preloadingGrid.css +2 -2
  244. package/front_end/panels/application/preloading/components/usedPreloadingView.css +7 -7
  245. package/front_end/panels/application/preloading/preloadingView.css +1 -1
  246. package/front_end/panels/application/preloading/preloadingViewDropDown.css +3 -3
  247. package/front_end/panels/application/serviceWorkerCacheViews.css +5 -5
  248. package/front_end/panels/application/serviceWorkerUpdateCycleView.css +12 -12
  249. package/front_end/panels/application/serviceWorkersView.css +15 -16
  250. package/front_end/panels/application/storageView.css +5 -5
  251. package/front_end/panels/application/webMCPView.css +9 -9
  252. package/front_end/panels/autofill/autofillView.css +4 -4
  253. package/front_end/panels/browser_debugger/categorizedBreakpointsSidebarPane.css +4 -4
  254. package/front_end/panels/browser_debugger/domBreakpointsSidebarPane.css +5 -3
  255. package/front_end/panels/browser_debugger/xhrBreakpointsSidebarPane.css +4 -4
  256. package/front_end/panels/changes/changesSidebar.css +1 -1
  257. package/front_end/panels/changes/changesView.css +1 -1
  258. package/front_end/panels/changes/combinedDiffView.css +1 -1
  259. package/front_end/panels/common/CPUThrottlingOption.ts +5 -10
  260. package/front_end/panels/common/badgeNotification.css +2 -2
  261. package/front_end/panels/common/domLinkifier.css +1 -1
  262. package/front_end/panels/common/gdpSignUpDialog.css +3 -3
  263. package/front_end/panels/common/geminiRebrandPromoDialog.css +1 -1
  264. package/front_end/panels/console/ConsolePrompt.ts +6 -3
  265. package/front_end/panels/console/ConsoleView.ts +23 -19
  266. package/front_end/panels/console/ConsoleViewMessage.ts +7 -2
  267. package/front_end/panels/console/console-meta.ts +9 -43
  268. package/front_end/panels/console/consoleContextSelector.css +2 -2
  269. package/front_end/panels/console/consolePinPane.css +9 -9
  270. package/front_end/panels/console/consolePrompt.css +5 -5
  271. package/front_end/panels/console/consoleView.css +39 -39
  272. package/front_end/panels/coverage/coverageListView.css +2 -2
  273. package/front_end/panels/css_overview/cssOverviewCompletedView.css +34 -34
  274. package/front_end/panels/css_overview/cssOverviewProcessingView.css +5 -5
  275. package/front_end/panels/css_overview/cssOverviewSidebarPanel.css +1 -1
  276. package/front_end/panels/css_overview/cssOverviewStartView.css +17 -17
  277. package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +209 -62
  278. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +4 -4
  279. package/front_end/panels/elements/DOMTreeContextMenu.ts +59 -54
  280. package/front_end/panels/elements/ElementIssueUtils.ts +10 -2
  281. package/front_end/panels/elements/ElementsPanel.ts +5 -2
  282. package/front_end/panels/elements/ElementsTreeElement.ts +212 -255
  283. package/front_end/panels/elements/ElementsTreeOutline.ts +1804 -495
  284. package/front_end/panels/elements/ShortcutTreeElement.ts +6 -3
  285. package/front_end/panels/elements/StandaloneStylesContainer.ts +5 -11
  286. package/front_end/panels/elements/StylePropertiesSection.ts +65 -8
  287. package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -0
  288. package/front_end/panels/elements/StylesContainer.ts +1 -0
  289. package/front_end/panels/elements/StylesSidebarPane.ts +317 -159
  290. package/front_end/panels/elements/classesPaneWidget.css +6 -6
  291. package/front_end/panels/elements/components/stylePropertyEditor.css +7 -7
  292. package/front_end/panels/elements/computedStyleWidget.css +1 -1
  293. package/front_end/panels/elements/elementStatePaneWidget.css +8 -8
  294. package/front_end/panels/elements/elements-meta.ts +14 -0
  295. package/front_end/panels/elements/elementsPanel.css +4 -4
  296. package/front_end/panels/elements/elementsTreeOutline.css +222 -38
  297. package/front_end/panels/elements/layersWidget.css +4 -4
  298. package/front_end/panels/elements/layoutPane.css +18 -18
  299. package/front_end/panels/elements/metricsSidebarPane.css +11 -11
  300. package/front_end/panels/elements/platformFontsWidget.css +5 -5
  301. package/front_end/panels/elements/propertiesWidget.css +2 -2
  302. package/front_end/panels/elements/stylePropertiesTreeOutline.css +20 -20
  303. package/front_end/panels/elements/stylesSidebarPane.css +37 -20
  304. package/front_end/panels/emulation/deviceModeView.css +49 -49
  305. package/front_end/panels/emulation/mediaQueryInspector.css +18 -18
  306. package/front_end/panels/event_listeners/eventListenersView.css +1 -1
  307. package/front_end/panels/explain/components/consoleInsight.css +29 -29
  308. package/front_end/panels/issues/components/elementsPanelLink.css +2 -2
  309. package/front_end/panels/issues/components/hideIssuesMenu.css +1 -1
  310. package/front_end/panels/issues/issuesPane.css +2 -2
  311. package/front_end/panels/issues/issuesTree.css +50 -50
  312. package/front_end/panels/layer_viewer/Layers3DView.ts +9 -10
  313. package/front_end/panels/layer_viewer/layerDetailsView.css +1 -1
  314. package/front_end/panels/layer_viewer/layerTreeOutline.css +2 -2
  315. package/front_end/panels/layer_viewer/layers3DView.css +1 -1
  316. package/front_end/panels/layer_viewer/paintProfiler.css +1 -1
  317. package/front_end/panels/lighthouse/LighthouseReportSelector.ts +2 -2
  318. package/front_end/panels/media/playerListView.css +9 -9
  319. package/front_end/panels/media/playerMessagesView.css +8 -8
  320. package/front_end/panels/media/playerPropertiesView.css +6 -6
  321. package/front_end/panels/mobile_throttling/NetworkPanelIndicator.ts +1 -1
  322. package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +9 -9
  323. package/front_end/panels/network/NetworkDataGridNode.ts +1 -0
  324. package/front_end/panels/network/NetworkPanel.ts +9 -4
  325. package/front_end/panels/network/RequestConditionsDrawer.ts +12 -12
  326. package/front_end/panels/network/RequestPayloadView.ts +78 -26
  327. package/front_end/panels/network/binaryResourceView.css +1 -1
  328. package/front_end/panels/network/components/EditableSpan.css +3 -3
  329. package/front_end/panels/network/components/HeaderSectionRow.css +14 -14
  330. package/front_end/panels/network/components/RequestHeaderSection.css +7 -7
  331. package/front_end/panels/network/components/RequestHeadersView.css +18 -18
  332. package/front_end/panels/network/components/RequestTrustTokensView.css +1 -1
  333. package/front_end/panels/network/network-meta.ts +9 -9
  334. package/front_end/panels/network/networkConfigView.css +11 -11
  335. package/front_end/panels/network/networkLogView.css +35 -35
  336. package/front_end/panels/network/networkManageCustomHeadersView.css +1 -1
  337. package/front_end/panels/network/networkPanel.css +7 -7
  338. package/front_end/panels/network/networkTimingTable.css +13 -13
  339. package/front_end/panels/network/requestConditionsDrawer.css +4 -4
  340. package/front_end/panels/network/requestCookiesView.css +5 -5
  341. package/front_end/panels/network/requestDeviceBoundSessionsView.css +1 -1
  342. package/front_end/panels/network/requestHTMLView.css +1 -1
  343. package/front_end/panels/network/requestHeadersTree.css +19 -19
  344. package/front_end/panels/network/requestInitiatorView.css +1 -1
  345. package/front_end/panels/network/requestInitiatorViewTree.css +3 -3
  346. package/front_end/panels/network/requestPayloadTree.css +5 -5
  347. package/front_end/panels/network/requestPayloadView.css +1 -1
  348. package/front_end/panels/network/resourceChunkView.css +3 -3
  349. package/front_end/panels/network/signedExchangeInfoTree.css +6 -6
  350. package/front_end/panels/profiler/heapProfiler.css +15 -15
  351. package/front_end/panels/profiler/profileLauncherView.css +10 -10
  352. package/front_end/panels/recorder/RecordingView.ts +1 -1
  353. package/front_end/panels/recorder/StepEditor.ts +86 -7
  354. package/front_end/panels/recorder/TimelineSection.ts +2 -1
  355. package/front_end/panels/recorder/createRecordingView.css +17 -17
  356. package/front_end/panels/recorder/extensionView.css +5 -5
  357. package/front_end/panels/recorder/injected/RecordingClient.ts +1 -1
  358. package/front_end/panels/recorder/models/SchemaUtils.ts +2 -2
  359. package/front_end/panels/recorder/models/ScreenshotStorage.ts +1 -1
  360. package/front_end/panels/recorder/recorderPanel.css +7 -7
  361. package/front_end/panels/recorder/recordingListView.css +12 -12
  362. package/front_end/panels/recorder/recordingView.css +47 -47
  363. package/front_end/panels/recorder/stepEditor.css +2 -2
  364. package/front_end/panels/recorder/stepView.css +20 -20
  365. package/front_end/panels/recorder/timelineSection.css +9 -9
  366. package/front_end/panels/screencast/screencastView.css +12 -12
  367. package/front_end/panels/search/searchResultsPane.css +10 -10
  368. package/front_end/panels/search/searchView.css +9 -9
  369. package/front_end/panels/security/SecurityPanel.ts +84 -54
  370. package/front_end/panels/security/SecurityPanelSidebar.ts +0 -32
  371. package/front_end/panels/security/mainView.css +26 -26
  372. package/front_end/panels/security/originView.css +15 -15
  373. package/front_end/panels/sensors/locationsSettingsTab.css +6 -6
  374. package/front_end/panels/sensors/sensors.css +28 -28
  375. package/front_end/panels/settings/KeybindsSettingsTab.ts +5 -2
  376. package/front_end/panels/settings/components/syncSection.css +5 -5
  377. package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +13 -13
  378. package/front_end/panels/settings/emulation/devicesSettingsTab.css +16 -16
  379. package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +2 -2
  380. package/front_end/panels/settings/keybindsSettingsTab.css +2 -2
  381. package/front_end/panels/settings/settingsScreen.css +5 -5
  382. package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
  383. package/front_end/panels/sources/breakpointEditDialog.css +9 -9
  384. package/front_end/panels/sources/breakpointsView.css +25 -25
  385. package/front_end/panels/sources/callStackSidebarPane.css +10 -10
  386. package/front_end/panels/sources/components/HeadersView.css +6 -6
  387. package/front_end/panels/sources/debuggerPausedMessage.css +4 -4
  388. package/front_end/panels/sources/dialog.css +2 -2
  389. package/front_end/panels/sources/navigatorTree.css +2 -2
  390. package/front_end/panels/sources/navigatorView.css +2 -2
  391. package/front_end/panels/sources/scopeChainSidebarPane.css +1 -1
  392. package/front_end/panels/sources/sourcesNavigator.css +1 -1
  393. package/front_end/panels/sources/sourcesPanel.css +2 -2
  394. package/front_end/panels/sources/sourcesView.css +1 -1
  395. package/front_end/panels/sources/threadsSidebarPane.css +5 -5
  396. package/front_end/panels/sources/watchExpressionsSidebarPane.css +8 -8
  397. package/front_end/panels/timeline/TimelineDetailsView.ts +9 -21
  398. package/front_end/panels/timeline/TimelineFlameChartView.ts +3 -5
  399. package/front_end/panels/timeline/TimelineMiniMap.ts +3 -3
  400. package/front_end/panels/timeline/components/BreadcrumbsUI.ts +2 -6
  401. package/front_end/panels/timeline/components/CWVMetrics.ts +9 -10
  402. package/front_end/panels/timeline/components/DetailsView.ts +12 -16
  403. package/front_end/panels/timeline/components/ExportTraceOptions.ts +13 -13
  404. package/front_end/panels/timeline/components/FieldSettingsDialog.ts +19 -19
  405. package/front_end/panels/timeline/components/IgnoreListSetting.ts +7 -9
  406. package/front_end/panels/timeline/components/InteractionBreakdown.ts +3 -3
  407. package/front_end/panels/timeline/components/LayoutShiftDetails.ts +13 -13
  408. package/front_end/panels/timeline/components/LiveMetricsView.ts +65 -65
  409. package/front_end/panels/timeline/components/MetricCard.ts +25 -25
  410. package/front_end/panels/timeline/components/NetworkRequestDetails.ts +22 -22
  411. package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +9 -9
  412. package/front_end/panels/timeline/components/OriginMap.ts +7 -7
  413. package/front_end/panels/timeline/components/RelatedInsightChips.ts +2 -2
  414. package/front_end/panels/timeline/components/SidebarAnnotationsTab.ts +19 -20
  415. package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +1 -1
  416. package/front_end/panels/timeline/components/TimelineSummary.ts +2 -2
  417. package/front_end/panels/timeline/components/Utils.ts +2 -6
  418. package/front_end/panels/timeline/components/breadcrumbsUI.css +3 -3
  419. package/front_end/panels/timeline/components/exportTraceOptions.css +1 -1
  420. package/front_end/panels/timeline/components/fieldSettingsDialog.css +13 -13
  421. package/front_end/panels/timeline/components/ignoreListSetting.css +3 -3
  422. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +6 -9
  423. package/front_end/panels/timeline/components/insights/Checklist.ts +2 -2
  424. package/front_end/panels/timeline/components/insights/Table.ts +1 -1
  425. package/front_end/panels/timeline/components/liveMetricsView.css +39 -39
  426. package/front_end/panels/timeline/components/metricCard.css +20 -20
  427. package/front_end/panels/timeline/components/networkRequestDetails.css +9 -9
  428. package/front_end/panels/timeline/components/networkRequestTooltip.css +14 -14
  429. package/front_end/panels/timeline/components/networkTrackWidget.css +2 -2
  430. package/front_end/panels/timeline/components/originMap.css +4 -4
  431. package/front_end/panels/timeline/components/relatedInsightChips.css +1 -1
  432. package/front_end/panels/timeline/components/sidebarAnnotationsTab.css +4 -4
  433. package/front_end/panels/timeline/components/sidebarInsightsTab.css +5 -5
  434. package/front_end/panels/timeline/components/sidebarSingleInsightSet.css +1 -1
  435. package/front_end/panels/timeline/components/timelineSummary.css +4 -4
  436. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +4 -4
  437. package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +1 -1
  438. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +6 -6
  439. package/front_end/panels/timeline/overlays/components/TimeRangeOverlay.ts +1 -1
  440. package/front_end/panels/timeline/thirdPartyTreeView.css +5 -5
  441. package/front_end/panels/timeline/timeline-meta.ts +0 -6
  442. package/front_end/panels/timeline/timelineDetailsView.css +11 -11
  443. package/front_end/panels/timeline/timelinePanel.css +20 -20
  444. package/front_end/panels/timeline/timelineTreeView.css +8 -8
  445. package/front_end/panels/webauthn/webauthnPane.css +6 -6
  446. package/front_end/panels/whats_new/ReleaseNoteText.ts +2 -2
  447. package/front_end/third_party/chromium/README.chromium +1 -1
  448. package/front_end/third_party/i18n/i18n-impl.ts +1 -1
  449. package/front_end/third_party/puppeteer/README.chromium +2 -2
  450. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +15 -1
  451. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +42 -8
  452. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.d.ts +4 -0
  453. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.d.ts.map +1 -1
  454. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js +15 -2
  455. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js.map +1 -1
  456. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts +14 -1
  457. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts.map +1 -1
  458. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js +23 -1
  459. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js.map +1 -1
  460. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
  461. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
  462. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
  463. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
  464. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.d.ts.map +1 -1
  465. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js +77 -6
  466. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js.map +1 -1
  467. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
  468. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
  469. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
  470. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
  471. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
  472. package/front_end/third_party/puppeteer/package/lib/types.d.ts +15 -1
  473. package/front_end/third_party/puppeteer/package/package.json +2 -2
  474. package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +16 -2
  475. package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +36 -1
  476. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  477. package/front_end/third_party/puppeteer/package/src/injected/Poller.ts +86 -6
  478. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  479. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  480. package/front_end/third_party/web-vitals/README.chromium +2 -2
  481. package/front_end/third_party/web-vitals/package/README.md +22 -7
  482. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +6 -2
  483. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.d.ts +2 -2
  484. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.js +30 -3
  485. package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.d.ts +14 -0
  486. package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.js +19 -13
  487. package/front_end/third_party/web-vitals/package/dist/modules/lib/bindReporter.d.ts +1 -1
  488. package/front_end/third_party/web-vitals/package/dist/modules/lib/doubleRAF.js +1 -1
  489. package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.d.ts +3 -3
  490. package/front_end/third_party/web-vitals/package/dist/modules/lib/softNavs.js +3 -1
  491. package/front_end/third_party/web-vitals/package/dist/modules/types/lcp.d.ts +15 -1
  492. package/front_end/third_party/web-vitals/package/package.json +1 -2
  493. package/front_end/third_party/web-vitals/package/src/attribution/onINP.ts +9 -2
  494. package/front_end/third_party/web-vitals/package/src/attribution/onLCP.ts +36 -5
  495. package/front_end/third_party/web-vitals/package/src/lib/InteractionManager.ts +21 -15
  496. package/front_end/third_party/web-vitals/package/src/lib/doubleRAF.ts +1 -1
  497. package/front_end/third_party/web-vitals/package/src/lib/softNavs.ts +4 -1
  498. package/front_end/third_party/web-vitals/package/src/types/lcp.ts +16 -1
  499. package/front_end/third_party/web-vitals/rebuild.sh +3 -3
  500. package/front_end/ui/comments/CommentAnchorResolver.ts +109 -4
  501. package/front_end/ui/comments/CommentOverlayManager.ts +16 -32
  502. package/front_end/ui/comments/commentsOverlay.css +6 -5
  503. package/front_end/ui/components/adorners/Adorner.ts +1 -1
  504. package/front_end/ui/components/adorners/adorner.css +6 -6
  505. package/front_end/ui/components/buttons/FloatingButton.ts +1 -1
  506. package/front_end/ui/components/buttons/button.css +9 -9
  507. package/front_end/ui/components/buttons/floatingButton.css +2 -2
  508. package/front_end/ui/components/buttons/textButton.css +12 -12
  509. package/front_end/ui/components/dialogs/Dialog.ts +1 -1
  510. package/front_end/ui/components/dialogs/dialog.css +1 -1
  511. package/front_end/ui/components/diff_view/diffView.css +3 -3
  512. package/front_end/ui/components/expandable_list/expandableList.css +9 -9
  513. package/front_end/ui/components/highlighting/HighlightElement.ts +1 -1
  514. package/front_end/ui/components/highlighting/HighlightManager.ts +4 -0
  515. package/front_end/ui/components/icon_button/iconButton.css +2 -2
  516. package/front_end/ui/components/input/checkbox.css +8 -8
  517. package/front_end/ui/components/input/textInput.css +3 -3
  518. package/front_end/ui/components/issue_counter/issueLinkIcon.css +2 -2
  519. package/front_end/ui/components/linkifier/linkifierImpl.css +1 -1
  520. package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +1 -1
  521. package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +1 -1
  522. package/front_end/ui/components/markdown_view/codeBlock.css +2 -2
  523. package/front_end/ui/components/markdown_view/markdownView.css +7 -7
  524. package/front_end/ui/components/menus/menuGroup.css +2 -2
  525. package/front_end/ui/components/menus/menuItem.css +2 -2
  526. package/front_end/ui/components/menus/selectMenu.css +2 -2
  527. package/front_end/ui/components/menus/selectMenuButton.css +4 -4
  528. package/front_end/ui/components/panel_feedback/panelFeedback.css +15 -15
  529. package/front_end/ui/components/panel_feedback/previewToggle.css +2 -2
  530. package/front_end/ui/components/panel_introduction_steps/panelIntroductionSteps.css +7 -7
  531. package/front_end/ui/components/report_view/report.css +3 -3
  532. package/front_end/ui/components/report_view/reportSectionDivider.css +1 -1
  533. package/front_end/ui/components/report_view/reportValue.css +1 -1
  534. package/front_end/ui/components/request_link_icon/requestLinkIcon.css +2 -2
  535. package/front_end/ui/components/settings/settingCheckbox.css +6 -6
  536. package/front_end/ui/components/text_editor/TextEditor.ts +3 -1
  537. package/front_end/ui/components/text_editor/config.ts +16 -4
  538. package/front_end/ui/kit/icons/icon.css +4 -4
  539. package/front_end/ui/kit/link/link.css +1 -1
  540. package/front_end/ui/legacy/ActionRegistration.ts +23 -23
  541. package/front_end/ui/legacy/Dialog.ts +1 -1
  542. package/front_end/ui/legacy/DockController.ts +7 -4
  543. package/front_end/ui/legacy/EmptyWidget.ts +13 -34
  544. package/front_end/ui/legacy/FilterBar.ts +4 -4
  545. package/front_end/ui/legacy/Infobar.ts +2 -2
  546. package/front_end/ui/legacy/InspectorDrawerView.ts +6 -6
  547. package/front_end/ui/legacy/InspectorView.ts +22 -27
  548. package/front_end/ui/legacy/KeyboardShortcut.ts +4 -7
  549. package/front_end/ui/legacy/ListWidget.ts +7 -7
  550. package/front_end/ui/legacy/PlusButton.ts +1 -3
  551. package/front_end/ui/legacy/RemoteDebuggingTerminatedScreen.ts +6 -6
  552. package/front_end/ui/legacy/SearchableView.ts +18 -17
  553. package/front_end/ui/legacy/ShortcutRegistry.ts +6 -3
  554. package/front_end/ui/legacy/SoftContextMenu.ts +8 -8
  555. package/front_end/ui/legacy/SoftDropDown.ts +1 -1
  556. package/front_end/ui/legacy/SuggestBox.ts +2 -2
  557. package/front_end/ui/legacy/TabbedPane.ts +10 -10
  558. package/front_end/ui/legacy/TargetCrashedScreen.ts +2 -2
  559. package/front_end/ui/legacy/Toolbar.ts +5 -5
  560. package/front_end/ui/legacy/Treeoutline.ts +1 -1
  561. package/front_end/ui/legacy/UIUtils.ts +90 -26
  562. package/front_end/ui/legacy/ViewManager.ts +1 -1
  563. package/front_end/ui/legacy/ViewRegistration.ts +7 -7
  564. package/front_end/ui/legacy/Widget.ts +5 -5
  565. package/front_end/ui/legacy/checkboxTextLabel.css +3 -3
  566. package/front_end/ui/legacy/components/color_picker/ColorFormatSpec.ts +16 -0
  567. package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +1 -0
  568. package/front_end/ui/legacy/components/color_picker/spectrum.css +90 -90
  569. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +23 -24
  570. package/front_end/ui/legacy/components/cookie_table/cookiesTable.css +1 -1
  571. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +26 -28
  572. package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +3 -7
  573. package/front_end/ui/legacy/components/inline_editor/bezierEditor.css +13 -13
  574. package/front_end/ui/legacy/components/inline_editor/colorSwatch.css +7 -7
  575. package/front_end/ui/legacy/components/inline_editor/cssAngleEditor.css +5 -5
  576. package/front_end/ui/legacy/components/inline_editor/cssShadowEditor.css +18 -18
  577. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +104 -86
  578. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +8 -6
  579. package/front_end/ui/legacy/components/object_ui/objectPopover.css +4 -4
  580. package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +6 -6
  581. package/front_end/ui/legacy/components/perf_ui/BrickBreaker.ts +2 -2
  582. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +28 -11
  583. package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +6 -6
  584. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +14 -15
  585. package/front_end/ui/legacy/components/perf_ui/GCActionDelegate.ts +1 -1
  586. package/front_end/ui/legacy/components/perf_ui/NetworkPriorities.ts +5 -5
  587. package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +5 -5
  588. package/front_end/ui/legacy/components/perf_ui/PieChart.ts +1 -1
  589. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +0 -4
  590. package/front_end/ui/legacy/components/perf_ui/chartViewport.css +4 -4
  591. package/front_end/ui/legacy/components/perf_ui/filmStripView.css +6 -6
  592. package/front_end/ui/legacy/components/perf_ui/flameChart.css +7 -7
  593. package/front_end/ui/legacy/components/perf_ui/overviewGrid.css +11 -11
  594. package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +4 -6
  595. package/front_end/ui/legacy/components/perf_ui/pieChart.css +6 -6
  596. package/front_end/ui/legacy/components/perf_ui/timelineGrid.css +5 -5
  597. package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +3 -3
  598. package/front_end/ui/legacy/components/source_frame/FontView.ts +2 -2
  599. package/front_end/ui/legacy/components/source_frame/ImageView.ts +13 -13
  600. package/front_end/ui/legacy/components/source_frame/JSONView.ts +1 -1
  601. package/front_end/ui/legacy/components/source_frame/PreviewFactory.ts +2 -2
  602. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +2 -2
  603. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +15 -18
  604. package/front_end/ui/legacy/components/source_frame/XMLView.ts +1 -1
  605. package/front_end/ui/legacy/components/source_frame/imageView.css +1 -1
  606. package/front_end/ui/legacy/components/source_frame/jsonView.css +1 -1
  607. package/front_end/ui/legacy/components/source_frame/resourceSourceFrame.css +1 -1
  608. package/front_end/ui/legacy/components/source_frame/source_frame-meta.ts +10 -10
  609. package/front_end/ui/legacy/components/source_frame/xmlTree.css +3 -3
  610. package/front_end/ui/legacy/components/utils/imagePreview.css +1 -1
  611. package/front_end/ui/legacy/components/utils/jsUtils.css +10 -10
  612. package/front_end/ui/legacy/dropTarget.css +2 -2
  613. package/front_end/ui/legacy/emptyWidget.css +6 -0
  614. package/front_end/ui/legacy/filter.css +19 -19
  615. package/front_end/ui/legacy/infobar.css +2 -2
  616. package/front_end/ui/legacy/inspectorCommon.css +67 -67
  617. package/front_end/ui/legacy/inspectorDrawerTabbedPane.css +1 -1
  618. package/front_end/ui/legacy/listWidget.css +5 -5
  619. package/front_end/ui/legacy/progressIndicator.css +4 -4
  620. package/front_end/ui/legacy/reportView.css +7 -7
  621. package/front_end/ui/legacy/searchableView.css +5 -5
  622. package/front_end/ui/legacy/smallBubble.css +3 -3
  623. package/front_end/ui/legacy/softContextMenu.css +4 -4
  624. package/front_end/ui/legacy/softDropDownButton.css +1 -1
  625. package/front_end/ui/legacy/splitWidget.css +9 -31
  626. package/front_end/ui/legacy/suggestBox.css +4 -4
  627. package/front_end/ui/legacy/tabbedPane.css +17 -17
  628. package/front_end/ui/legacy/textPrompt.css +2 -2
  629. package/front_end/ui/legacy/toolbar.css +4 -4
  630. package/front_end/ui/legacy/treeoutline.css +14 -14
  631. package/front_end/ui/legacy/viewContainers.css +6 -6
  632. package/front_end/ui/settings/ConsoleSettings.ts +66 -0
  633. package/front_end/ui/settings/MainSettings.ts +47 -0
  634. package/front_end/ui/settings/settings.ts +2 -0
  635. package/front_end/ui/visual_logging/KnownContextValues.ts +12 -0
  636. package/inspector_overlay/common.ts +12 -12
  637. package/inspector_overlay/css_grid_label_helpers.ts +16 -17
  638. package/inspector_overlay/drag_resize_handler.ts +2 -2
  639. package/inspector_overlay/highlight_common.ts +11 -13
  640. package/inspector_overlay/highlight_container_query.ts +2 -2
  641. package/inspector_overlay/highlight_flex_common.ts +6 -7
  642. package/inspector_overlay/highlight_grid_common.ts +3 -3
  643. package/inspector_overlay/highlight_isolated_element.ts +12 -3
  644. package/inspector_overlay/highlight_scroll_snap.ts +2 -2
  645. package/inspector_overlay/loadCSS.rollup.js +0 -1
  646. package/inspector_overlay/testing/InspectorOverlayHelpers.ts +13 -13
  647. package/inspector_overlay/tool_green_dev_anchors.ts +3 -3
  648. package/inspector_overlay/tool_highlight.ts +9 -9
  649. package/inspector_overlay/tool_paused.ts +4 -4
  650. package/inspector_overlay/tool_persistent.ts +11 -11
  651. package/inspector_overlay/tool_screenshot.ts +7 -7
  652. package/inspector_overlay/tool_source_order.ts +4 -4
  653. package/inspector_overlay/tool_viewport_size.ts +3 -3
  654. package/inspector_overlay/tool_window_controls.ts +4 -4
  655. package/mcp/mcp.ts +1 -0
  656. package/package.json +2 -2
  657. package/front_end/generated/protocol-tsconfig.json +0 -10
  658. package/front_end/panels/js_timeline/DIR_METADATA +0 -3
  659. package/front_end/panels/js_timeline/js_timeline-meta.ts +0 -193
  660. package/front_end/panels/js_timeline/js_timeline.ts +0 -1
  661. /package/front_end/entrypoints/{formatter_worker/FormatterActions.ts → formatter_actions/formatter_actions.ts} +0 -0
@@ -210,9 +210,12 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
210
210
  private isActivePropertyHighlighted = false;
211
211
  private initialUpdateCompleted = false;
212
212
  hasMatchedStyles = false;
213
- private sectionBlocks: SectionBlock[] = [];
213
+ sectionBlocks: SectionBlock[] = [];
214
+ #allKnownBlocks = new Map<string, SectionBlock>();
215
+ #lastNode: SDK.DOMModel.DOMNode|null = null;
214
216
  private idleCallbackManager: IdleCallbackManager|null = null;
215
217
  private needsForceUpdate = false;
218
+ private isSuppressingResets = false;
216
219
  private readonly resizeThrottler = new Common.Throttler.Throttler(100);
217
220
  private readonly resetUpdateThrottler = new Common.Throttler.Throttler(500);
218
221
  private readonly computedStyleUpdateThrottler = new Common.Throttler.Throttler(500);
@@ -231,6 +234,7 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
231
234
  aiCodeCompletionProvider?: StylesAiCodeCompletionProvider.StylesAiCodeCompletionProvider;
232
235
  #aiCodeCompletionSummaryToolbarContainer?: HTMLElement;
233
236
  #aiCodeCompletionSummaryToolbar?: PanelsCommon.AiCodeCompletionSummaryToolbar.AiCodeCompletionSummaryToolbar;
237
+ #aiCodeCompletionEnabled = false;
234
238
  #shouldRenderLazily = false;
235
239
  #lazyRenderObserver?: IntersectionObserver;
236
240
  #lazyRenderCallbacks = new WeakMap<Element, () => void>();
@@ -245,6 +249,9 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
245
249
  Common.Settings.Settings.instance()
246
250
  .moduleSetting('collapse-non-contributing-css-rules')
247
251
  .addChangeListener(this.updateCollapsedSectionsSetting, this);
252
+ Common.Settings.Settings.instance()
253
+ .moduleSetting('show-inactive-css-rules')
254
+ .addChangeListener(this.requestUpdate, this);
248
255
  this.toolbarPaneElement = this.createStylesSidebarToolbar();
249
256
  this.noMatchesElement = this.contentElement.createChild('div', 'gray-info-message hidden');
250
257
  this.noMatchesElement.textContent = i18nString(UIStrings.noMatchingSelectorOrStyle);
@@ -252,13 +259,13 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
252
259
  this.sectionsContainer.show(this.contentElement);
253
260
  UI.ARIAUtils.markAsList(this.sectionsContainer.contentElement);
254
261
  this.sectionsContainer.contentElement.addEventListener('keydown', this.sectionsContainerKeyDown.bind(this), false);
255
- this.sectionsContainer.contentElement.addEventListener(
256
- 'focusin', this.sectionsContainerFocusChanged.bind(this), false);
257
- this.sectionsContainer.contentElement.addEventListener(
258
- 'focusout', this.sectionsContainerFocusChanged.bind(this), false);
262
+ this.sectionsContainer.contentElement.addEventListener('focusin', this.sectionsContainerFocusChanged.bind(this),
263
+ false);
264
+ this.sectionsContainer.contentElement.addEventListener('focusout', this.sectionsContainerFocusChanged.bind(this),
265
+ false);
259
266
 
260
- this.#swatchPopoverHelper.addEventListener(
261
- InlineEditor.SwatchPopoverHelper.Events.WILL_SHOW_POPOVER, this.hideAllPopovers, this);
267
+ this.#swatchPopoverHelper.addEventListener(InlineEditor.SwatchPopoverHelper.Events.WILL_SHOW_POPOVER,
268
+ this.hideAllPopovers, this);
262
269
  this.decorator = new StylePropertyHighlighter(this);
263
270
  this.contentElement.classList.add('styles-pane');
264
271
 
@@ -266,19 +273,19 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
266
273
  this.contentElement.addEventListener('copy', this.clipboardCopy.bind(this));
267
274
 
268
275
  this.boundOnScroll = this.onScroll.bind(this);
269
- this.imagePreviewPopover = new ImagePreviewPopover(
270
- this.contentElement,
271
- event => {
272
- const link = event.composedPath()[0];
273
- if (link instanceof Element) {
274
- return link;
275
- }
276
- return null;
277
- },
278
- async () => {
279
- const features = await Components.ImagePreview.loadPrecomputedFeatures(this.node());
280
- return features;
281
- });
276
+ this.imagePreviewPopover =
277
+ new ImagePreviewPopover(this.contentElement,
278
+ event => {
279
+ const link = event.composedPath()[0];
280
+ if (link instanceof Element) {
281
+ return link;
282
+ }
283
+ return null;
284
+ },
285
+ async () => {
286
+ const features = await Components.ImagePreview.loadPrecomputedFeatures(this.node());
287
+ return features;
288
+ });
282
289
 
283
290
  UI.ViewManager.ViewManager.instance().addEventListener(UI.ViewManager.Events.VIEW_VISIBILITY_CHANGED, event => {
284
291
  if (event.data.revealedViewId === 'animations' || event.data.hiddenViewId === 'animations') {
@@ -291,9 +298,11 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
291
298
  completionContext: {},
292
299
  generationContext: {},
293
300
  onFeatureEnabled: () => {
301
+ this.#aiCodeCompletionEnabled = true;
294
302
  this.#createAiCodeCompletionSummaryToolbar();
295
303
  },
296
304
  onFeatureDisabled: () => {
305
+ this.#aiCodeCompletionEnabled = false;
297
306
  this.#cleanupAiCodeCompletion();
298
307
  },
299
308
  onSuggestionAccepted: this.#onAiCodeCompletionSuggestionAccepted.bind(this),
@@ -325,6 +334,9 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
325
334
  }
326
335
 
327
336
  setUserOperation(userOperation: boolean): void {
337
+ if (userOperation) {
338
+ this.isSuppressingResets = false;
339
+ }
328
340
  this.userOperation = userOperation;
329
341
  }
330
342
 
@@ -465,23 +477,22 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
465
477
  const contextMenu = new UI.ContextMenu.ContextMenu(event);
466
478
  for (let i = 0; i < contextMenuDescriptors.length; ++i) {
467
479
  const descriptor = contextMenuDescriptors[i];
468
- contextMenu.defaultSection().appendItem(
469
- descriptor.text, descriptor.handler, {jslogContext: 'style-sheet-header'});
480
+ contextMenu.defaultSection().appendItem(descriptor.text, descriptor.handler,
481
+ {jslogContext: 'style-sheet-header'});
470
482
  }
471
- contextMenu.footerSection().appendItem(
472
- 'inspector-stylesheet', this.createNewRuleInViaInspectorStyleSheet.bind(this),
473
- {jslogContext: 'inspector-stylesheet'});
483
+ contextMenu.footerSection().appendItem('inspector-stylesheet',
484
+ this.createNewRuleInViaInspectorStyleSheet.bind(this),
485
+ {jslogContext: 'inspector-stylesheet'});
474
486
  void contextMenu.show();
475
487
 
476
- function compareDescriptors(
477
- descriptor1: {
478
- text: string,
479
- handler: () => Promise<void>,
480
- },
481
- descriptor2: {
482
- text: string,
483
- handler: () => Promise<void>,
484
- }): number {
488
+ function compareDescriptors(descriptor1: {
489
+ text: string,
490
+ handler: () => Promise<void>,
491
+ },
492
+ descriptor2: {
493
+ text: string,
494
+ handler: () => Promise<void>,
495
+ }): number {
485
496
  return Platform.StringUtilities.naturalOrderComparator(descriptor1.text, descriptor2.text);
486
497
  }
487
498
 
@@ -523,9 +534,9 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
523
534
  if (this.lastFilterChange) {
524
535
  const stillTyping = Date.now() - this.lastFilterChange < FILTER_IDLE_PERIOD;
525
536
  if (!stillTyping) {
526
- UI.ARIAUtils.LiveAnnouncer.alert(
527
- this.visibleSections ? i18nString(UIStrings.visibleSelectors, {n: this.visibleSections}) :
528
- i18nString(UIStrings.noMatchingSelectorOrStyle));
537
+ UI.ARIAUtils.LiveAnnouncer.alert(this.visibleSections ?
538
+ i18nString(UIStrings.visibleSelectors, {n: this.visibleSections}) :
539
+ i18nString(UIStrings.noMatchingSelectorOrStyle));
529
540
  }
530
541
  }
531
542
  }, FILTER_IDLE_PERIOD);
@@ -556,6 +567,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
556
567
  section.update(section === editedSection);
557
568
  }
558
569
 
570
+ this.#performSyncViewportCheck();
571
+
559
572
  if (this.#filterRegex) {
560
573
  this.updateFilter();
561
574
  }
@@ -608,8 +621,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
608
621
 
609
622
  signal?.throwIfAborted();
610
623
 
611
- await this.innerRebuildUpdate(
612
- signal, this.matchedStyles, computedStyles, parentsComputedStyles, computedStyleExtraFields);
624
+ await this.innerRebuildUpdate(signal, this.matchedStyles, computedStyles, parentsComputedStyles,
625
+ computedStyleExtraFields);
613
626
 
614
627
  signal?.throwIfAborted();
615
628
 
@@ -637,17 +650,16 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
637
650
  return registration ? {registration, goToDefinition} : undefined;
638
651
  }
639
652
 
640
- getVariableParserError(matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles, variableName: string):
641
- ElementsComponents.CSSVariableValueView.CSSVariableParserError|null {
653
+ getVariableParserError(matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles,
654
+ variableName: string): ElementsComponents.CSSVariableValueView.CSSVariableParserError|null {
642
655
  const registrationDetails = this.#getRegisteredPropertyDetails(matchedStyles, variableName);
643
656
  return registrationDetails ?
644
657
  new ElementsComponents.CSSVariableValueView.CSSVariableParserError(registrationDetails) :
645
658
  null;
646
659
  }
647
660
 
648
- getVariablePopoverContents(
649
- matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles, variableName: string,
650
- computedValue: string|null): ElementsComponents.CSSVariableValueView.CSSVariableValueView {
661
+ getVariablePopoverContents(matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles, variableName: string,
662
+ computedValue: string|null): ElementsComponents.CSSVariableValueView.CSSVariableValueView {
651
663
  return new ElementsComponents.CSSVariableValueView.CSSVariableValueView({
652
664
  variableName,
653
665
  value: computedValue ?? undefined,
@@ -663,8 +675,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
663
675
  return await node.domModel().cssModel().getComputedStyle(nodeId);
664
676
  }
665
677
 
666
- private async fetchComputedStyleExtraFieldsFor(nodeId: Protocol.DOM.NodeId|undefined):
667
- Promise<Protocol.CSS.ComputedStyleExtraFields|null> {
678
+ private async fetchComputedStyleExtraFieldsFor(nodeId: Protocol.DOM.NodeId|
679
+ undefined): Promise<Protocol.CSS.ComputedStyleExtraFields|null> {
668
680
  const node = this.node();
669
681
  if (node === null || nodeId === undefined) {
670
682
  return null;
@@ -686,6 +698,7 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
686
698
  }
687
699
 
688
700
  private resetCache(): void {
701
+ this.isSuppressingResets = false;
689
702
  const cssModel = this.cssModel();
690
703
  if (cssModel) {
691
704
  cssModel.discardCachedMatchedCascade();
@@ -711,6 +724,9 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
711
724
  }
712
725
 
713
726
  setEditingStyle(editing: boolean): void {
727
+ if (editing) {
728
+ this.isSuppressingResets = false;
729
+ }
714
730
  if (this.isEditingStyle === editing) {
715
731
  return;
716
732
  }
@@ -743,8 +759,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
743
759
  if (!node) {
744
760
  continue;
745
761
  }
746
- node.domModel().overlayModel().highlightInOverlay(
747
- {node: (this.node() as SDK.DOMModel.DOMNode), selectorList}, mode);
762
+ node.domModel().overlayModel().highlightInOverlay({node: (this.node() as SDK.DOMModel.DOMNode), selectorList},
763
+ mode);
748
764
  this.isActivePropertyHighlighted = true;
749
765
  break;
750
766
  }
@@ -788,9 +804,17 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
788
804
  this.requestUpdate();
789
805
  }
790
806
 
807
+ suppressResets(): void {
808
+ this.isSuppressingResets = true;
809
+ }
810
+
791
811
  #scheduleResetUpdateIfNotEditing(): void {
792
812
  this.scheduleResetUpdateIfNotEditingCalledForTest();
793
813
 
814
+ if (this.isSuppressingResets) {
815
+ return;
816
+ }
817
+
794
818
  // Don't schedule if editing; the edit completion will handle the update.
795
819
  if (this.userOperation || this.isEditingStyle) {
796
820
  return;
@@ -805,10 +829,9 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
805
829
  }
806
830
 
807
831
  #hasAnimatedStyles(animatedStyles: Protocol.CSS.GetAnimatedStylesForNodeResponse): boolean {
808
- return Boolean(
809
- animatedStyles.animationStyles?.length || animatedStyles.transitionsStyle?.cssProperties.length ||
810
- animatedStyles.inherited?.some(
811
- inherited => inherited.animationStyles?.length || inherited.transitionsStyle?.cssProperties.length));
832
+ return Boolean(animatedStyles.animationStyles?.length || animatedStyles.transitionsStyle?.cssProperties.length ||
833
+ animatedStyles.inherited?.some(inherited => inherited.animationStyles?.length ||
834
+ inherited.transitionsStyle?.cssProperties.length));
812
835
  }
813
836
 
814
837
  async #updateAnimatedStyles(): Promise<void> {
@@ -828,8 +851,9 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
828
851
 
829
852
  if (!this.#hasAnimatedStyles(animatedStyles)) {
830
853
  // A computed style change that doesn't correspond to any animation is
831
- // likely to be a change in the matched styles. In this case, we should
832
- // update the matched styles.
854
+ // likely to be a change in the matched styles, which is already handled
855
+ // by CSSModelChanged events. We still schedule a reset update here for
856
+ // DevTools garbage collection purposes.
833
857
  this.#scheduleResetUpdateIfNotEditing();
834
858
  return;
835
859
  }
@@ -838,40 +862,39 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
838
862
  return;
839
863
  }
840
864
 
841
- const updateStyleSection =
842
- (currentStyle: SDK.CSSStyleDeclaration.CSSStyleDeclaration|null, newStyle: Protocol.CSS.CSSStyle|null):
843
- void => {
844
- // The newly fetched matched styles contain a new style.
845
- if (newStyle) {
846
- // If the number of CSS properties in the new style
847
- // differs from the current style, it indicates a potential change
848
- // in property overrides. In this case, re-fetch the entire style
849
- // cascade to ensure accurate updates.
850
- if (currentStyle?.allProperties().length !== newStyle.cssProperties.length) {
851
- this.#scheduleResetUpdateIfNotEditing();
852
- return;
853
- }
854
-
855
- // If the number of properties remains the same, update the
856
- // existing style properties with the new values from the
857
- // fetched style.
858
- currentStyle.allProperties().forEach((property, index) => {
859
- const newProperty = newStyle.cssProperties[index];
860
- if (!newProperty) {
861
- return;
862
- }
863
-
864
- property.setLocalValue(newProperty.value);
865
- });
866
- } else if (currentStyle) {
867
- // If no new style is fetched while a current style exists,
868
- // it implies the style has been removed (e.g., animation or
869
- // transition ended). Trigger a reset and update the UI to
870
- // reflect this change.
871
- this.#scheduleResetUpdateIfNotEditing();
872
- return;
873
- }
874
- };
865
+ const updateStyleSection = (currentStyle: SDK.CSSStyleDeclaration.CSSStyleDeclaration|null,
866
+ newStyle: Protocol.CSS.CSSStyle|null): void => {
867
+ // The newly fetched matched styles contain a new style.
868
+ if (newStyle) {
869
+ // If the number of CSS properties in the new style
870
+ // differs from the current style, it indicates a potential change
871
+ // in property overrides. In this case, re-fetch the entire style
872
+ // cascade to ensure accurate updates.
873
+ if (currentStyle?.allProperties().length !== newStyle.cssProperties.length) {
874
+ this.#scheduleResetUpdateIfNotEditing();
875
+ return;
876
+ }
877
+
878
+ // If the number of properties remains the same, update the
879
+ // existing style properties with the new values from the
880
+ // fetched style.
881
+ currentStyle.allProperties().forEach((property, index) => {
882
+ const newProperty = newStyle.cssProperties[index];
883
+ if (!newProperty) {
884
+ return;
885
+ }
886
+
887
+ property.setLocalValue(newProperty.value);
888
+ });
889
+ } else if (currentStyle) {
890
+ // If no new style is fetched while a current style exists,
891
+ // it implies the style has been removed (e.g., animation or
892
+ // transition ended). Trigger a reset and update the UI to
893
+ // reflect this change.
894
+ this.#scheduleResetUpdateIfNotEditing();
895
+ return;
896
+ }
897
+ };
875
898
 
876
899
  updateStyleSection(this.matchedStyles.transitionsStyle() ?? null, animatedStyles.transitionsStyle ?? null);
877
900
 
@@ -894,9 +917,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
894
917
  inheritedStyles.filter(style => style.type === SDK.CSSStyleDeclaration.Type.Transition);
895
918
  const newInheritedTransitionsStyles =
896
919
  animatedStyles.inherited?.map(inherited => inherited.transitionsStyle)
897
- .filter(
898
- style => style?.cssProperties.some(
899
- cssProperty => SDK.CSSMetadata.cssMetadata().isPropertyInherited(cssProperty.name))) ??
920
+ .filter(style => style?.cssProperties.some(
921
+ cssProperty => SDK.CSSMetadata.cssMetadata().isPropertyInherited(cssProperty.name))) ??
900
922
  [];
901
923
  if (currentInheritedTransitionsStyles.length !== newInheritedTransitionsStyles.length) {
902
924
  this.#scheduleResetUpdateIfNotEditing();
@@ -913,9 +935,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
913
935
  inheritedStyles.filter(style => style.type === SDK.CSSStyleDeclaration.Type.Animation);
914
936
  const newInheritedAnimationsStyles =
915
937
  animatedStyles.inherited?.flatMap(inherited => inherited.animationStyles)
916
- .filter(
917
- animationStyle => animationStyle?.style.cssProperties.some(
918
- cssProperty => SDK.CSSMetadata.cssMetadata().isPropertyInherited(cssProperty.name))) ??
938
+ .filter(animationStyle => animationStyle?.style.cssProperties.some(
939
+ cssProperty => SDK.CSSMetadata.cssMetadata().isPropertyInherited(cssProperty.name))) ??
919
940
  [];
920
941
  if (currentInheritedAnimationsStyles.length !== newInheritedAnimationsStyles.length) {
921
942
  this.#scheduleResetUpdateIfNotEditing();
@@ -976,10 +997,12 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
976
997
  }
977
998
  }
978
999
 
979
- private async innerRebuildUpdate(
980
- signal: AbortSignal|undefined, matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles|null,
981
- computedStyles: Map<string, string>|null, parentsComputedStyles: Map<string, string>|null,
982
- computedStyleExtraFields: Protocol.CSS.ComputedStyleExtraFields|null): Promise<void> {
1000
+ private async innerRebuildUpdate(signal: AbortSignal|undefined,
1001
+ matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles|null,
1002
+ computedStyles: Map<string, string>|null,
1003
+ parentsComputedStyles: Map<string, string>|null,
1004
+ computedStyleExtraFields: Protocol.CSS.ComputedStyleExtraFields|
1005
+ null): Promise<void> {
983
1006
  // ElementsSidebarPane's throttler schedules this method. Usually,
984
1007
  // rebuild is suppressed while editing (see onCSSModelChanged()), but we need a
985
1008
  // 'force' flag since the currently running throttler process cannot be canceled.
@@ -993,9 +1016,15 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
993
1016
 
994
1017
  this.#elementsForSyncViewportCheck = [];
995
1018
  this.linkifier.reset();
1019
+ const node = this.node();
1020
+ if (this.#lastNode !== node) {
1021
+ // Clear inactive styles when a different node is selected.
1022
+ this.#allKnownBlocks.clear();
1023
+ this.#lastNode = node;
1024
+ }
1025
+
996
1026
  const prevSections = this.sectionBlocks.map(block => block.sections).flat();
997
1027
 
998
- const node = this.node();
999
1028
  this.hasMatchedStyles = matchedStyles !== null && node !== null;
1000
1029
  if (!this.hasMatchedStyles) {
1001
1030
  this.sectionBlocks = [];
@@ -1005,9 +1034,9 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1005
1034
  return;
1006
1035
  }
1007
1036
 
1008
- const blocks = await this.rebuildSectionsForMatchedStyleRules(
1009
- signal, (matchedStyles as SDK.CSSMatchedStyles.CSSMatchedStyles), computedStyles, parentsComputedStyles,
1010
- computedStyleExtraFields);
1037
+ const blocks =
1038
+ await this.rebuildSectionsForMatchedStyleRules(signal, (matchedStyles as SDK.CSSMatchedStyles.CSSMatchedStyles),
1039
+ computedStyles, parentsComputedStyles, computedStyleExtraFields);
1011
1040
 
1012
1041
  signal?.throwIfAborted();
1013
1042
 
@@ -1087,18 +1116,51 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1087
1116
  this.matchedStyles = matchedStyles;
1088
1117
  }
1089
1118
 
1090
- rebuildSectionsForMatchedStyleRulesForTest(
1091
- matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles, computedStyles: Map<string, string>|null,
1092
- parentsComputedStyles: Map<string, string>|null,
1093
- computedStyleExtraFields: Protocol.CSS.ComputedStyleExtraFields|null): Promise<SectionBlock[]> {
1094
- return this.rebuildSectionsForMatchedStyleRules(
1095
- undefined, matchedStyles, computedStyles, parentsComputedStyles, computedStyleExtraFields);
1119
+ setNodeForTest(node: SDK.DOMModel.DOMNode): void {
1120
+ if (this.#lastNode !== node) {
1121
+ this.#allKnownBlocks.clear();
1122
+ this.#lastNode = node;
1123
+ }
1124
+ }
1125
+
1126
+ private getStyleId(style: SDK.CSSStyleDeclaration.CSSStyleDeclaration): string {
1127
+ if (style.range) {
1128
+ return `${style.styleSheetId || ''}:${style.range.toString()}`;
1129
+ }
1130
+ if (style.type === SDK.CSSStyleDeclaration.Type.Inline || style.type === SDK.CSSStyleDeclaration.Type.Attributes) {
1131
+ return style.type;
1132
+ }
1133
+ if (style.type === SDK.CSSStyleDeclaration.Type.Animation) {
1134
+ return `${style.type}:${style.animationName() || ''}:${style.cssText}`;
1135
+ }
1136
+ const parentRule = style.parentRule;
1137
+ if (parentRule instanceof SDK.CSSRule.CSSStyleRule) {
1138
+ return `${style.type}:${parentRule.selectorText()}`;
1139
+ }
1140
+ if (parentRule instanceof SDK.CSSRule.CSSKeyframeRule) {
1141
+ return `${style.type}:${parentRule.parentRuleName()}:${parentRule.key().text}`;
1142
+ }
1143
+ if (parentRule instanceof SDK.CSSRule.CSSPropertyRule) {
1144
+ return `${style.type}:${parentRule.propertyName().text}`;
1145
+ }
1146
+ return `${style.type}:${style.cssText}`;
1096
1147
  }
1097
1148
 
1098
- private async rebuildSectionsForMatchedStyleRules(
1099
- signal: AbortSignal|undefined, matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles,
1100
- computedStyles: Map<string, string>|null, parentsComputedStyles: Map<string, string>|null,
1101
- computedStyleExtraFields: Protocol.CSS.ComputedStyleExtraFields|null): Promise<SectionBlock[]> {
1149
+ rebuildSectionsForMatchedStyleRulesForTest(matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles,
1150
+ computedStyles: Map<string, string>|null,
1151
+ parentsComputedStyles: Map<string, string>|null,
1152
+ computedStyleExtraFields: Protocol.CSS.ComputedStyleExtraFields|
1153
+ null): Promise<SectionBlock[]> {
1154
+ return this.rebuildSectionsForMatchedStyleRules(undefined, matchedStyles, computedStyles, parentsComputedStyles,
1155
+ computedStyleExtraFields);
1156
+ }
1157
+
1158
+ private async rebuildSectionsForMatchedStyleRules(signal: AbortSignal|undefined,
1159
+ matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles,
1160
+ computedStyles: Map<string, string>|null,
1161
+ parentsComputedStyles: Map<string, string>|null,
1162
+ computedStyleExtraFields: Protocol.CSS.ComputedStyleExtraFields|
1163
+ null): Promise<SectionBlock[]> {
1102
1164
  if (this.idleCallbackManager) {
1103
1165
  this.idleCallbackManager.discard();
1104
1166
  }
@@ -1109,7 +1171,7 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1109
1171
  let sectionIdx = 0;
1110
1172
  let lastParentNode: SDK.DOMModel.DOMNode|null = null;
1111
1173
 
1112
- let lastLayerParent: SectionBlock|undefined;
1174
+ let lastLayerParent: SectionBlock|undefined = blocks[0];
1113
1175
  let lastLayers: SDK.CSSLayer.CSSLayer[]|null = null;
1114
1176
  let sawLayers = false;
1115
1177
 
@@ -1141,12 +1203,15 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1141
1203
  // Always render eagerly for layout tests.
1142
1204
  this.#shouldRenderLazily = !Host.InspectorFrontendHost.isUnderTest() && totalProperties > LAZY_RENDER_THRESHOLD;
1143
1205
 
1144
- for (const style of matchedStyles.nodeStyles()) {
1206
+ const activeStyles = matchedStyles.nodeStyles().filter(style => {
1207
+ const isTransitionOrAnimationStyle = style.type === SDK.CSSStyleDeclaration.Type.Transition ||
1208
+ style.type === SDK.CSSStyleDeclaration.Type.Animation;
1209
+ return !isTransitionOrAnimationStyle || animationsPanelVisible || !cssAnimationsOnlyWhenAnimationsTabOpen;
1210
+ });
1211
+
1212
+ for (const style of activeStyles) {
1145
1213
  const isTransitionOrAnimationStyle = style.type === SDK.CSSStyleDeclaration.Type.Transition ||
1146
1214
  style.type === SDK.CSSStyleDeclaration.Type.Animation;
1147
- if (isTransitionOrAnimationStyle && cssAnimationsOnlyWhenAnimationsTabOpen && !animationsPanelVisible) {
1148
- continue;
1149
- }
1150
1215
 
1151
1216
  const parentNode = matchedStyles.isInherited(style) ? matchedStyles.nodeForStyle(style) : null;
1152
1217
  if (parentNode && parentNode !== lastParentNode) {
@@ -1164,8 +1229,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1164
1229
  if (signal?.aborted) {
1165
1230
  return;
1166
1231
  }
1167
- const section = new StylePropertiesSection(
1168
- this, matchedStyles, style, sectionIdx, computedStyles, parentsComputedStyles, computedStyleExtraFields);
1232
+ const section = new StylePropertiesSection(this, matchedStyles, style, sectionIdx, computedStyles,
1233
+ parentsComputedStyles, computedStyleExtraFields);
1169
1234
  sectionIdx++;
1170
1235
  lastBlock.sections.push(section);
1171
1236
  });
@@ -1284,8 +1349,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1284
1349
  if (signal?.aborted) {
1285
1350
  return;
1286
1351
  }
1287
- block.sections.push(new PositionTryRuleSection(
1288
- this, matchedStyles, positionTryRule.style, sectionIdx, positionTryRule.active()));
1352
+ block.sections.push(new PositionTryRuleSection(this, matchedStyles, positionTryRule.style, sectionIdx,
1353
+ positionTryRule.active()));
1289
1354
  sectionIdx++;
1290
1355
  });
1291
1356
  blocks.push(block);
@@ -1299,8 +1364,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1299
1364
  if (signal?.aborted) {
1300
1365
  return;
1301
1366
  }
1302
- block.sections.push(new RegisteredPropertiesSection(
1303
- this, matchedStyles, propertyRule.style(), sectionIdx, propertyRule.propertyName(), expandedByDefault));
1367
+ block.sections.push(new RegisteredPropertiesSection(this, matchedStyles, propertyRule.style(), sectionIdx,
1368
+ propertyRule.propertyName(), expandedByDefault));
1304
1369
  sectionIdx++;
1305
1370
  });
1306
1371
  }
@@ -1315,9 +1380,9 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1315
1380
  if (signal?.aborted) {
1316
1381
  return;
1317
1382
  }
1318
- block.sections.push(new FunctionRuleSection(
1319
- this, matchedStyles, functionRule.style, functionRule.children(), sectionIdx,
1320
- functionRule.nameWithParameters(), expandedByDefault));
1383
+ block.sections.push(new FunctionRuleSection(this, matchedStyles, functionRule.style, functionRule.children(),
1384
+ sectionIdx, functionRule.nameWithParameters(),
1385
+ expandedByDefault));
1321
1386
  sectionIdx++;
1322
1387
  });
1323
1388
  }
@@ -1336,7 +1401,59 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1336
1401
 
1337
1402
  await this.idleCallbackManager.awaitDone();
1338
1403
 
1339
- return blocks;
1404
+ const showInactiveCSSRules = Common.Settings.Settings.instance().moduleSetting('show-inactive-css-rules').get();
1405
+ if (!showInactiveCSSRules) {
1406
+ return blocks;
1407
+ }
1408
+
1409
+ return this.mergeInactiveStyles(blocks);
1410
+ }
1411
+
1412
+ private computeBlockIds(blocks: SectionBlock[]): Map<SectionBlock, string> {
1413
+ let nullBlockCounter = 0;
1414
+ const blockIds = new Map<SectionBlock, string>();
1415
+ for (const block of blocks) {
1416
+ blockIds.set(block, block.titleElement()?.textContent || `MAIN_BLOCK_NULL_${nullBlockCounter++}`);
1417
+ }
1418
+ return blockIds;
1419
+ }
1420
+
1421
+ private mergeInactiveStyles(blocks: SectionBlock[]): SectionBlock[] {
1422
+ const blockIds = this.computeBlockIds(blocks);
1423
+ for (const [id, block] of this.#allKnownBlocks) {
1424
+ if (!blockIds.has(block)) {
1425
+ blockIds.set(block, id);
1426
+ }
1427
+ }
1428
+ const getBlockId = (block: SectionBlock): string => blockIds.get(block) || 'UNKNOWN_BLOCK';
1429
+
1430
+ for (const block of blocks) {
1431
+ const bid = getBlockId(block);
1432
+ const knownBlock = this.#allKnownBlocks.get(bid);
1433
+ if (knownBlock) {
1434
+ block.sections = mergeOrderedItems(
1435
+ knownBlock.sections,
1436
+ block.sections,
1437
+ section => this.getStyleId(section.styleInternal),
1438
+ section => section.setInactive(true),
1439
+ );
1440
+ }
1441
+ }
1442
+
1443
+ const oldBlocks = Array.from(this.#allKnownBlocks.values());
1444
+ const finalBlocks = mergeOrderedItems(
1445
+ oldBlocks,
1446
+ blocks,
1447
+ getBlockId,
1448
+ block => block.sections.forEach(section => section.setInactive(true)),
1449
+ );
1450
+
1451
+ this.#allKnownBlocks.clear();
1452
+ for (const block of finalBlocks) {
1453
+ this.#allKnownBlocks.set(getBlockId(block), block);
1454
+ }
1455
+
1456
+ return finalBlocks;
1340
1457
  }
1341
1458
 
1342
1459
  async createNewRuleInViaInspectorStyleSheet(): Promise<void> {
@@ -1353,8 +1470,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1353
1470
  await this.createNewRuleInStyleSheet(styleSheetHeader);
1354
1471
  }
1355
1472
 
1356
- private async createNewRuleInStyleSheet(styleSheetHeader: SDK.CSSStyleSheetHeader.CSSStyleSheetHeader|null):
1357
- Promise<void> {
1473
+ private async createNewRuleInStyleSheet(styleSheetHeader: SDK.CSSStyleSheetHeader.CSSStyleSheetHeader|
1474
+ null): Promise<void> {
1358
1475
  if (!styleSheetHeader) {
1359
1476
  return;
1360
1477
  }
@@ -1368,13 +1485,13 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1368
1485
  }
1369
1486
  }
1370
1487
 
1371
- addBlankSection(
1372
- insertAfterSection: StylePropertiesSection, styleSheetHeader: SDK.CSSStyleSheetHeader.CSSStyleSheetHeader,
1373
- ruleLocation: TextUtils.TextRange.TextRange): void {
1488
+ addBlankSection(insertAfterSection: StylePropertiesSection,
1489
+ styleSheetHeader: SDK.CSSStyleSheetHeader.CSSStyleSheetHeader,
1490
+ ruleLocation: TextUtils.TextRange.TextRange): void {
1374
1491
  const node = this.node();
1375
- const blankSection = new BlankStylePropertiesSection(
1376
- this, insertAfterSection.matchedStyles, node ? node.simpleSelector() : '', styleSheetHeader, ruleLocation,
1377
- insertAfterSection.style(), 0);
1492
+ const blankSection =
1493
+ new BlankStylePropertiesSection(this, insertAfterSection.matchedStyles, node ? node.simpleSelector() : '',
1494
+ styleSheetHeader, ruleLocation, insertAfterSection.style(), 0);
1378
1495
 
1379
1496
  this.sectionsContainer.contentElement.insertBefore(blankSection.element, insertAfterSection.element.nextSibling);
1380
1497
 
@@ -1425,6 +1542,9 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1425
1542
  override wasShown(): void {
1426
1543
  UI.Context.Context.instance().setFlavor(StylesSidebarPane, this);
1427
1544
  super.wasShown();
1545
+ if (this.#aiCodeCompletionEnabled && !this.#aiCodeCompletionSummaryToolbar) {
1546
+ this.#createAiCodeCompletionSummaryToolbar();
1547
+ }
1428
1548
  }
1429
1549
 
1430
1550
  override willHide(): void {
@@ -1464,9 +1584,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1464
1584
  const hbox = container.createChild('div', 'hbox styles-sidebar-pane-toolbar');
1465
1585
  const toolbar = hbox.createChild('devtools-toolbar', 'styles-pane-toolbar');
1466
1586
  toolbar.role = 'presentation';
1467
- const filterInput = new UI.Toolbar.ToolbarFilter(
1468
- undefined, 1, 1, undefined, undefined, false, undefined, undefined, /* showRegexToggle=*/ true,
1469
- this.onRegexToggled.bind(this));
1587
+ const filterInput = new UI.Toolbar.ToolbarFilter(undefined, 1, 1, undefined, undefined, false, undefined, undefined,
1588
+ /* showRegexToggle=*/ true, this.onRegexToggled.bind(this));
1470
1589
  filterInput.addEventListener(UI.Toolbar.ToolbarInput.Event.TEXT_CHANGED, this.onFilterChanged, this);
1471
1590
  toolbar.appendToolbarItem(filterInput);
1472
1591
  void toolbar.appendItemsAtLocation('styles-sidebarpane-toolbar');
@@ -1565,8 +1684,8 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1565
1684
  Common.Settings.Settings.instance().resolve(SDK.SDKSettings.emulateAutoDarkModeSettingDescriptor);
1566
1685
  const decorateStatus = (condition: boolean, title: string): string => `${condition ? '✓ ' : ''}${title}`;
1567
1686
 
1568
- const button = new UI.Toolbar.ToolbarToggle(
1569
- i18nString(UIStrings.toggleRenderingEmulations), 'brush', 'brush-filled', undefined, false);
1687
+ const button = new UI.Toolbar.ToolbarToggle(i18nString(UIStrings.toggleRenderingEmulations), 'brush',
1688
+ 'brush-filled', undefined, false);
1570
1689
  button.element.setAttribute('jslog', `${VisualLogging.dropDown('rendering-emulations').track({click: true})}`);
1571
1690
  button.element.addEventListener('click', event => {
1572
1691
  const boundingRect = button.element.getBoundingClientRect();
@@ -1611,7 +1730,12 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1611
1730
  }
1612
1731
 
1613
1732
  #createAiCodeCompletionSummaryToolbar(): void {
1614
- if (this.#aiCodeCompletionSummaryToolbar) {
1733
+ if (!this.#aiCodeCompletionEnabled || this.#aiCodeCompletionSummaryToolbar) {
1734
+ return;
1735
+ }
1736
+ const containingPane =
1737
+ this.contentElement.enclosingNodeOrSelfWithClass('style-panes-wrapper') as HTMLElement | null;
1738
+ if (!containingPane) {
1615
1739
  return;
1616
1740
  }
1617
1741
  this.#aiCodeCompletionSummaryToolbar =
@@ -1621,7 +1745,6 @@ export class StylesSidebarPane extends Common.ObjectWrapper.eventMixin<EventType
1621
1745
  spinnerTooltipId: SPINNER_TOOLTIP_ID,
1622
1746
  disclaimerTextVariant: 'styles',
1623
1747
  });
1624
- const containingPane = this.contentElement.enclosingNodeOrSelfWithClass('style-panes-wrapper') as HTMLElement;
1625
1748
  this.#aiCodeCompletionSummaryToolbarContainer =
1626
1749
  containingPane.createChild('div', 'ai-code-completion-summary-toolbar-container');
1627
1750
  this.#aiCodeCompletionSummaryToolbarContainer.role = 'toolbar';
@@ -1782,9 +1905,8 @@ export class SectionBlock {
1782
1905
  return new SectionBlock(separatorElement);
1783
1906
  }
1784
1907
 
1785
- static async createInheritedPseudoTypeBlock(
1786
- pseudoType: Protocol.DOM.PseudoType, pseudoArgument: string|null,
1787
- node: SDK.DOMModel.DOMNode): Promise<SectionBlock> {
1908
+ static async createInheritedPseudoTypeBlock(pseudoType: Protocol.DOM.PseudoType, pseudoArgument: string|null,
1909
+ node: SDK.DOMModel.DOMNode): Promise<SectionBlock> {
1788
1910
  const separatorElement = document.createElement('div');
1789
1911
  separatorElement.className = 'sidebar-separator';
1790
1912
  separatorElement.setAttribute('jslog', `${VisualLogging.sectionHeader('inherited-pseudotype')}`);
@@ -2141,9 +2263,8 @@ export class CSSPropertyPrompt extends UI.TextPrompt.TextPrompt {
2141
2263
 
2142
2264
  // Handle numeric value increment/decrement only at this point.
2143
2265
  if (!this.isEditingName && this.treeElement.valueElement &&
2144
- UI.UIUtils.handleElementValueModifications(
2145
- event, this.treeElement.valueElement, finishHandler.bind(this), this.isValueSuggestion.bind(this),
2146
- customNumberHandler.bind(this))) {
2266
+ UI.UIUtils.handleElementValueModifications(event, this.treeElement.valueElement, finishHandler.bind(this),
2267
+ this.isValueSuggestion.bind(this), customNumberHandler.bind(this))) {
2147
2268
  return true;
2148
2269
  }
2149
2270
 
@@ -2158,8 +2279,8 @@ export class CSSPropertyPrompt extends UI.TextPrompt.TextPrompt {
2158
2279
  return this.cssCompletions.indexOf(word) !== -1 || word.startsWith('--');
2159
2280
  }
2160
2281
 
2161
- private async buildPropertyCompletions(expression: string, query: string, force?: boolean):
2162
- Promise<UI.SuggestBox.Suggestions> {
2282
+ private async buildPropertyCompletions(expression: string, query: string,
2283
+ force?: boolean): Promise<UI.SuggestBox.Suggestions> {
2163
2284
  const lowerQuery = query.toLowerCase();
2164
2285
  const editingVariable = !this.isEditingName && expression.trim().endsWith('var(');
2165
2286
  if (this.isEditingName && expression) {
@@ -2204,8 +2325,8 @@ export class CSSPropertyPrompt extends UI.TextPrompt.TextPrompt {
2204
2325
  const node = this.treeElement.node();
2205
2326
  if (this.isEditingName && node) {
2206
2327
  const nameValuePresets = SDK.CSSMetadata.cssMetadata().nameValuePresets(node.isSVGNode());
2207
- nameValuePresets.forEach(
2208
- preset => filterCompletions.call(this, preset, false /* variable */, true /* nameValue */));
2328
+ nameValuePresets.forEach(preset =>
2329
+ filterCompletions.call(this, preset, false /* variable */, true /* nameValue */));
2209
2330
  }
2210
2331
  if (this.isEditingName || editingVariable) {
2211
2332
  this.cssVariables.forEach(variable => filterCompletions.call(this, variable, true /* variable */));
@@ -2285,8 +2406,8 @@ export class CSSPropertyPrompt extends UI.TextPrompt.TextPrompt {
2285
2406
  }
2286
2407
  return await Promise.resolve(results);
2287
2408
 
2288
- function filterCompletions(
2289
- this: CSSPropertyPrompt, completion: string, variable: boolean, nameValue?: boolean): void {
2409
+ function filterCompletions(this: CSSPropertyPrompt, completion: string, variable: boolean,
2410
+ nameValue?: boolean): void {
2290
2411
  const index = completion.toLowerCase().indexOf(lowerQuery);
2291
2412
  const result: CompletionResult = {
2292
2413
  text: completion,
@@ -2377,8 +2498,8 @@ export class CSSPropertyPrompt extends UI.TextPrompt.TextPrompt {
2377
2498
  if (!cssModel) {
2378
2499
  return;
2379
2500
  }
2380
- await this.aiCodeCompletionProvider.triggerAiCodeCompletion(
2381
- userInput, range.endOffset, this.isEditingName, this.treeElement.property, cssModel);
2501
+ await this.aiCodeCompletionProvider.triggerAiCodeCompletion(userInput, range.endOffset, this.isEditingName,
2502
+ this.treeElement.property, cssModel);
2382
2503
  }
2383
2504
 
2384
2505
  private setAiAutoCompletion(args: {
@@ -2521,9 +2642,9 @@ export class CSSPropertyPrompt extends UI.TextPrompt.TextPrompt {
2521
2642
  const suggestionText = this.treeElement.section().activeAiSuggestion?.text;
2522
2643
  await this.treeElement.section().commitActiveAiSuggestion();
2523
2644
  if (this.activeAiSuggestionInfo) {
2524
- this.aiCodeCompletionProvider?.onSuggestionAccepted(
2525
- this.activeAiSuggestionInfo.citations, this.activeAiSuggestionInfo.rpcGlobalId,
2526
- this.activeAiSuggestionInfo.sampleId);
2645
+ this.aiCodeCompletionProvider?.onSuggestionAccepted(this.activeAiSuggestionInfo.citations,
2646
+ this.activeAiSuggestionInfo.rpcGlobalId,
2647
+ this.activeAiSuggestionInfo.sampleId);
2527
2648
  }
2528
2649
  if (suggestionText) {
2529
2650
  UI.ARIAUtils.LiveAnnouncer.status(i18nString(UIStrings.aiSuggestionAccepted, {PH1: suggestionText}));
@@ -2569,6 +2690,43 @@ export function escapeUrlAsCssComment(urlText: string): string {
2569
2690
  return url.toString();
2570
2691
  }
2571
2692
 
2693
+ /**
2694
+ * Merges a newly active list of items with an existing (previously known) list of items,
2695
+ * preserving the relative order of inactive items while updating and inserting active items.
2696
+ */
2697
+ export function mergeOrderedItems<T>(
2698
+ oldItems: T[],
2699
+ newItems: T[],
2700
+ getId: (item: T) => string,
2701
+ markInactive: (item: T) => void,
2702
+ ): T[] {
2703
+ const newIds = new Set(newItems.map(getId));
2704
+ const merged: T[] = [];
2705
+ let newIdx = 0;
2706
+
2707
+ for (const oldItem of oldItems) {
2708
+ const oldId = getId(oldItem);
2709
+ if (newIds.has(oldId)) {
2710
+ while (newIdx < newItems.length) {
2711
+ const newItem = newItems[newIdx++];
2712
+ merged.push(newItem);
2713
+ if (getId(newItem) === oldId) {
2714
+ break;
2715
+ }
2716
+ }
2717
+ } else {
2718
+ markInactive(oldItem);
2719
+ merged.push(oldItem);
2720
+ }
2721
+ }
2722
+
2723
+ while (newIdx < newItems.length) {
2724
+ merged.push(newItems[newIdx++]);
2725
+ }
2726
+
2727
+ return merged;
2728
+ }
2729
+
2572
2730
  export class ActionDelegate implements UI.ActionRegistration.ActionDelegate {
2573
2731
  handleAction(_context: UI.Context.Context, actionId: string): boolean {
2574
2732
  switch (actionId) {