chrome-devtools-frontend 1.0.1684555 → 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 (602) 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/config/typescript/tsconfig.base.json +1 -0
  6. package/config/typescript/tsconfig.eslint.json +9 -0
  7. package/docs/contributing/issues.md +1 -1
  8. package/docs/styleguide/ux/writing.md +2 -2
  9. package/eslint.config.mjs +18 -10
  10. package/front_end/core/common/Base64.ts +1 -1
  11. package/front_end/core/common/Color.ts +28 -6
  12. package/front_end/core/common/ColorConverter.ts +12 -0
  13. package/front_end/core/common/Console.ts +2 -1
  14. package/front_end/core/common/Object.ts +2 -2
  15. package/front_end/core/common/ResourceType.ts +12 -13
  16. package/front_end/core/common/Revealer.ts +1 -1
  17. package/front_end/core/common/Settings.ts +2 -2
  18. package/front_end/core/common/TextDictionary.ts +2 -2
  19. package/front_end/core/common/Throttler.ts +1 -1
  20. package/front_end/core/host/InspectorFrontendHostAPI.ts +2 -2
  21. package/front_end/core/host/UserMetrics.ts +51 -37
  22. package/front_end/core/host/host.ts +1 -1
  23. package/front_end/core/i18n/i18nImpl.ts +1 -1
  24. package/front_end/core/platform/HostRuntime.ts +3 -3
  25. package/front_end/core/platform/KeyboardUtilities.ts +1 -1
  26. package/front_end/core/protocol_client/InspectorBackend.ts +7 -6
  27. package/front_end/core/root/Runtime.ts +4 -2
  28. package/front_end/core/sdk/AnimationModel.ts +1 -1
  29. package/front_end/core/sdk/CPUThrottlingManager.ts +198 -0
  30. package/front_end/core/sdk/CSSMetadata.ts +11 -6
  31. package/front_end/core/sdk/CSSPropertyParser.ts +5 -3
  32. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +90 -59
  33. package/front_end/core/sdk/ConsoleModel.ts +1 -1
  34. package/front_end/core/sdk/DOMModel.ts +3 -3
  35. package/front_end/core/sdk/DebuggerModel.ts +1 -1
  36. package/front_end/core/sdk/EmulationModel.ts +5 -0
  37. package/front_end/core/sdk/LayerTreeBase.ts +1 -1
  38. package/front_end/core/sdk/NetworkManager.ts +1 -1
  39. package/front_end/core/sdk/README.md +40 -0
  40. package/front_end/core/sdk/RehydratingConnection.ts +1 -1
  41. package/front_end/core/sdk/RemoteObject.ts +1 -1
  42. package/front_end/core/sdk/ResourceTreeModel.ts +2 -2
  43. package/front_end/core/sdk/SDKModel.ts +1 -1
  44. package/front_end/core/sdk/SDKSettings.ts +6 -0
  45. package/front_end/core/sdk/Script.ts +2 -1
  46. package/front_end/core/sdk/SecurityOrigin.ts +48 -0
  47. package/front_end/core/sdk/ServiceWorkerManager.ts +75 -17
  48. package/front_end/core/sdk/sdk.ts +2 -0
  49. package/front_end/core/text_utils/ContentData.ts +1 -1
  50. package/front_end/entrypoints/formatter_worker/FormattedContentBuilder.ts +3 -1
  51. package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +1 -1
  52. package/front_end/entrypoints/formatter_worker/ScopeParser.ts +2 -2
  53. package/front_end/entrypoints/formatter_worker/Substitute.ts +1 -1
  54. package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +1 -1
  55. package/front_end/entrypoints/inspector_main/InspectorMain.ts +1 -1
  56. package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +1 -1
  57. package/front_end/entrypoints/inspector_main/nodeIcon.css +1 -1
  58. package/front_end/entrypoints/inspector_main/outermostTargetSelector.css +3 -3
  59. package/front_end/entrypoints/inspector_main/renderingOptions.css +3 -3
  60. package/front_end/entrypoints/js_app/js_app.ts +25 -9
  61. package/front_end/entrypoints/node_app/app/nodeConnectionsPanel.css +5 -5
  62. package/front_end/entrypoints/node_app/node_app.ts +1 -1
  63. package/front_end/generated/ARIAProperties.ts +39 -1
  64. package/front_end/generated/InspectorBackendCommands.ts +2 -1
  65. package/front_end/generated/SupportedCSSProperties.ts +60 -119
  66. package/front_end/generated/protocol-mapping.d.ts +9 -0
  67. package/front_end/generated/protocol-proxy-api.d.ts +7 -0
  68. package/front_end/generated/protocol.ts +12 -2
  69. package/front_end/models/ai_assistance/AiAgent2.ts +13 -7
  70. package/front_end/models/ai_assistance/AiConversation.ts +8 -17
  71. package/front_end/models/ai_assistance/AiHistoryStorage.ts +2 -2
  72. package/front_end/models/ai_assistance/AiUtils.ts +16 -0
  73. package/front_end/models/ai_assistance/EvaluateAction.ts +1 -1
  74. package/front_end/models/ai_assistance/README.md +1 -1
  75. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +2 -3
  76. package/front_end/models/ai_assistance/agents/AiAgent.ts +29 -6
  77. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +4 -3
  78. package/front_end/models/ai_assistance/agents/FileAgent.ts +2 -2
  79. package/front_end/models/ai_assistance/agents/NetworkAgent.ts +2 -2
  80. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +1 -1
  81. package/front_end/models/ai_assistance/agents/StorageAgent.ts +7 -5
  82. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +2 -2
  83. package/front_end/models/ai_assistance/agents/StylingAgent.ts +9 -7
  84. package/front_end/models/ai_assistance/ai_assistance.ts +8 -0
  85. package/front_end/models/ai_assistance/contexts/AccessibilityContext.ts +16 -1
  86. package/front_end/models/ai_assistance/contexts/FileContext.ts +6 -0
  87. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +150 -325
  88. package/front_end/models/ai_assistance/injected.ts +5 -3
  89. package/front_end/models/ai_assistance/performance/AIContext.ts +1 -1
  90. package/front_end/models/ai_assistance/skills/README.md +1 -1
  91. package/front_end/models/ai_assistance/skills/accessibility.md +19 -10
  92. package/front_end/models/ai_assistance/skills/network.md +13 -7
  93. package/front_end/models/ai_assistance/skills/performance.md +22 -16
  94. package/front_end/models/ai_assistance/skills/sources.md +13 -7
  95. package/front_end/models/ai_assistance/skills/storage.md +19 -18
  96. package/front_end/models/ai_assistance/skills/styling.md +30 -37
  97. package/front_end/models/ai_assistance/tools/CookieUtils.ts +120 -0
  98. package/front_end/models/ai_assistance/tools/DOMStorageUtils.ts +53 -4
  99. package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +8 -32
  100. package/front_end/models/ai_assistance/tools/GetCookieValues.ts +146 -0
  101. package/front_end/models/ai_assistance/tools/GetDetailedCallTree.ts +11 -9
  102. package/front_end/models/ai_assistance/tools/GetElementAccessibilityDetails.ts +17 -5
  103. package/front_end/models/ai_assistance/tools/GetFunctionCode.ts +12 -11
  104. package/front_end/models/ai_assistance/tools/GetInsightDetails.ts +11 -11
  105. package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +3 -2
  106. package/front_end/models/ai_assistance/tools/GetNetworkRequestDetails.ts +3 -3
  107. package/front_end/models/ai_assistance/tools/GetResourceContent.ts +12 -12
  108. package/front_end/models/ai_assistance/tools/GetSourceContent.ts +3 -2
  109. package/front_end/models/ai_assistance/tools/GetStorageBreakdown.ts +132 -0
  110. package/front_end/models/ai_assistance/tools/GetStorageValues.ts +17 -4
  111. package/front_end/models/ai_assistance/tools/GetStyles.ts +3 -3
  112. package/front_end/models/ai_assistance/tools/GetTraceEventByKey.ts +9 -8
  113. package/front_end/models/ai_assistance/tools/GetTraceMainThreadSummary.ts +13 -14
  114. package/front_end/models/ai_assistance/tools/GetTraceNetworkSummary.ts +12 -10
  115. package/front_end/models/ai_assistance/tools/ListCookies.ts +93 -0
  116. package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +15 -6
  117. package/front_end/models/ai_assistance/tools/ListPageOrigins.ts +3 -3
  118. package/front_end/models/ai_assistance/tools/ListSources.ts +5 -3
  119. package/front_end/models/ai_assistance/tools/ListStorageKeys.ts +16 -4
  120. package/front_end/models/ai_assistance/tools/RecordPerformanceTrace.ts +3 -2
  121. package/front_end/models/ai_assistance/tools/ResolveDevtoolsNodePath.ts +4 -3
  122. package/front_end/models/ai_assistance/tools/RunLighthouse.ts +9 -9
  123. package/front_end/models/ai_assistance/tools/SelectTraceEventByKey.ts +9 -8
  124. package/front_end/models/ai_assistance/tools/Tool.ts +21 -11
  125. package/front_end/models/ai_assistance/tools/ToolRegistry.ts +41 -8
  126. package/front_end/models/badges/AiExplorerBadge.ts +3 -3
  127. package/front_end/models/badges/CodeWhispererBadge.ts +2 -2
  128. package/front_end/models/badges/DOMDetectiveBadge.ts +3 -3
  129. package/front_end/models/badges/SpeedsterBadge.ts +3 -3
  130. package/front_end/models/badges/StarterBadge.ts +4 -4
  131. package/front_end/models/bindings/CompilerScriptMapping.ts +11 -2
  132. package/front_end/models/bindings/ContentProviderBasedProject.ts +3 -2
  133. package/front_end/models/breakpoints/BreakpointManager.ts +1 -1
  134. package/front_end/models/emulation/EmulatedDevices.ts +2 -2
  135. package/front_end/models/formatter/FormatterWorkerPool.ts +2 -2
  136. package/front_end/models/formatter/ScriptFormatter.ts +1 -2
  137. package/front_end/models/geometry/GeometryImpl.ts +2 -2
  138. package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +1 -1
  139. package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +3 -2
  140. package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +5 -5
  141. package/front_end/models/issues_manager/GenericIssue.ts +18 -18
  142. package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +1 -1
  143. package/front_end/models/javascript_metadata/{NativeFunctions.js → NativeFunctions.ts} +25 -9
  144. package/front_end/models/live-metrics/LiveMetrics.ts +9 -3
  145. package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +58 -6
  146. package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +2 -62
  147. package/front_end/models/network_time_calculator/RequestTimeRanges.ts +2 -2
  148. package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +5 -0
  149. package/front_end/models/persistence/IsolatedFileSystem.ts +1 -1
  150. package/front_end/models/persistence/NetworkPersistenceManager.ts +35 -6
  151. package/front_end/models/stack_trace/StackTraceImpl.ts +2 -2
  152. package/front_end/models/trace/LanternComputationData.ts +2 -3
  153. package/front_end/models/trace/extras/StackTraceForEvent.ts +3 -2
  154. package/front_end/models/trace/extras/ThirdParties.ts +9 -9
  155. package/front_end/models/trace/handlers/AsyncJSCallsHandler.ts +7 -4
  156. package/front_end/models/trace/handlers/FramesHandler.ts +3 -3
  157. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +2 -2
  158. package/front_end/models/trace/handlers/SamplesHandler.ts +4 -2
  159. package/front_end/models/trace/handlers/UserInteractionsHandler.ts +1 -1
  160. package/front_end/models/trace/handlers/WarningsHandler.ts +2 -2
  161. package/front_end/models/trace/helpers/Network.ts +3 -3
  162. package/front_end/models/trace/helpers/Trace.ts +1 -1
  163. package/front_end/models/trace/insights/CLSCulprits.ts +2 -1
  164. package/front_end/models/trace/insights/Cache.ts +3 -1
  165. package/front_end/models/trace/insights/CharacterSet.ts +3 -1
  166. package/front_end/models/trace/insights/DOMSize.ts +3 -1
  167. package/front_end/models/trace/insights/DocumentLatency.ts +3 -1
  168. package/front_end/models/trace/insights/DuplicatedJavaScript.ts +3 -1
  169. package/front_end/models/trace/insights/FontDisplay.ts +2 -1
  170. package/front_end/models/trace/insights/ForcedReflow.ts +2 -1
  171. package/front_end/models/trace/insights/INPBreakdown.ts +3 -1
  172. package/front_end/models/trace/insights/ImageDelivery.ts +3 -1
  173. package/front_end/models/trace/insights/LCPBreakdown.ts +3 -1
  174. package/front_end/models/trace/insights/LCPDiscovery.ts +3 -1
  175. package/front_end/models/trace/insights/LegacyJavaScript.ts +3 -1
  176. package/front_end/models/trace/insights/ModernHTTP.ts +2 -1
  177. package/front_end/models/trace/insights/NetworkDependencyTree.ts +2 -1
  178. package/front_end/models/trace/insights/RenderBlocking.ts +5 -4
  179. package/front_end/models/trace/insights/SlowCSSSelector.ts +3 -1
  180. package/front_end/models/trace/insights/ThirdParties.ts +5 -3
  181. package/front_end/models/trace/insights/Viewport.ts +2 -1
  182. package/front_end/models/trace/lantern/simulation/Constants.ts +34 -2
  183. package/front_end/models/trace/lantern/simulation/DNSCache.ts +1 -1
  184. package/front_end/models/trace/types/TraceEvents.ts +8 -3
  185. package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +2 -1
  186. package/front_end/models/workspace/WorkspaceImpl.ts +18 -2
  187. package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +686 -2
  188. package/front_end/panels/accessibility/accessibilityNode.css +4 -4
  189. package/front_end/panels/accessibility/accessibilityProperties.css +1 -1
  190. package/front_end/panels/accessibility/accessibilitySidebarView.css +2 -2
  191. package/front_end/panels/accessibility/axBreadcrumbs.css +13 -13
  192. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +14 -14
  193. package/front_end/panels/ai_assistance/ExternalHandler.ts +1 -1
  194. package/front_end/panels/ai_assistance/aiAssistancePanel.css +1 -1
  195. package/front_end/panels/ai_assistance/components/ChatInput.ts +3 -2
  196. package/front_end/panels/ai_assistance/components/ChatView.ts +1 -1
  197. package/front_end/panels/ai_assistance/components/DisabledWidget.ts +1 -1
  198. package/front_end/panels/ai_assistance/components/ExploreWidget.ts +1 -1
  199. package/front_end/panels/ai_assistance/components/chatInput.css +12 -12
  200. package/front_end/panels/ai_assistance/components/chatMessage.css +16 -16
  201. package/front_end/panels/ai_assistance/components/chatView.css +2 -2
  202. package/front_end/panels/ai_assistance/components/exploreWidget.css +1 -1
  203. package/front_end/panels/ai_assistance/components/exportForAgentsDialog.css +4 -0
  204. package/front_end/panels/ai_assistance/components/walkthroughView.css +6 -6
  205. package/front_end/panels/animation/animationTimeline.css +62 -62
  206. package/front_end/panels/application/ApplicationPanelSidebar.ts +6 -1
  207. package/front_end/panels/application/BackgroundServiceView.ts +290 -252
  208. package/front_end/panels/application/WebMCPView.ts +15 -7
  209. package/front_end/panels/application/appManifestView.css +5 -5
  210. package/front_end/panels/application/backgroundServiceView.css +18 -2
  211. package/front_end/panels/application/components/AdsView.ts +100 -4
  212. package/front_end/panels/application/components/adsView.css +8 -5
  213. package/front_end/panels/application/components/backForwardCacheView.css +5 -5
  214. package/front_end/panels/application/components/bounceTrackingMitigationsView.css +1 -1
  215. package/front_end/panels/application/components/endpointsGrid.css +1 -1
  216. package/front_end/panels/application/components/permissionsPolicySection.css +1 -1
  217. package/front_end/panels/application/components/protocolHandlersView.css +6 -6
  218. package/front_end/panels/application/components/reportsGrid.css +1 -1
  219. package/front_end/panels/application/components/serviceWorkerRouterView.css +4 -4
  220. package/front_end/panels/application/components/trustTokensView.css +7 -7
  221. package/front_end/panels/application/cookieItemsView.css +3 -3
  222. package/front_end/panels/application/deviceBoundSessionsView.css +3 -3
  223. package/front_end/panels/application/frameDetailsReportView.css +11 -11
  224. package/front_end/panels/application/indexedDBViews.css +7 -7
  225. package/front_end/panels/application/originTrialTokenRows.css +2 -2
  226. package/front_end/panels/application/originTrialTreeView.css +3 -3
  227. package/front_end/panels/application/preloading/components/RuleSetDetailsView.css +2 -2
  228. package/front_end/panels/application/preloading/components/preloadingDetailsReportView.css +1 -1
  229. package/front_end/panels/application/preloading/components/preloadingDisabledInfobar.css +2 -2
  230. package/front_end/panels/application/preloading/components/preloadingGrid.css +2 -2
  231. package/front_end/panels/application/preloading/components/usedPreloadingView.css +7 -7
  232. package/front_end/panels/application/preloading/preloadingView.css +1 -1
  233. package/front_end/panels/application/preloading/preloadingViewDropDown.css +3 -3
  234. package/front_end/panels/application/serviceWorkerCacheViews.css +5 -5
  235. package/front_end/panels/application/serviceWorkerUpdateCycleView.css +12 -12
  236. package/front_end/panels/application/serviceWorkersView.css +15 -16
  237. package/front_end/panels/application/storageView.css +5 -5
  238. package/front_end/panels/application/webMCPView.css +9 -9
  239. package/front_end/panels/autofill/autofillView.css +4 -4
  240. package/front_end/panels/browser_debugger/categorizedBreakpointsSidebarPane.css +4 -4
  241. package/front_end/panels/browser_debugger/domBreakpointsSidebarPane.css +5 -3
  242. package/front_end/panels/browser_debugger/xhrBreakpointsSidebarPane.css +4 -4
  243. package/front_end/panels/changes/changesSidebar.css +1 -1
  244. package/front_end/panels/changes/changesView.css +1 -1
  245. package/front_end/panels/changes/combinedDiffView.css +1 -1
  246. package/front_end/panels/common/CPUThrottlingOption.ts +5 -10
  247. package/front_end/panels/common/badgeNotification.css +2 -2
  248. package/front_end/panels/common/domLinkifier.css +1 -1
  249. package/front_end/panels/common/gdpSignUpDialog.css +3 -3
  250. package/front_end/panels/common/geminiRebrandPromoDialog.css +1 -1
  251. package/front_end/panels/console/ConsolePrompt.ts +6 -3
  252. package/front_end/panels/console/ConsoleView.ts +6 -3
  253. package/front_end/panels/console/ConsoleViewMessage.ts +3 -1
  254. package/front_end/panels/console/console-meta.ts +5 -24
  255. package/front_end/panels/console/consoleContextSelector.css +2 -2
  256. package/front_end/panels/console/consolePinPane.css +9 -9
  257. package/front_end/panels/console/consolePrompt.css +5 -5
  258. package/front_end/panels/console/consoleView.css +39 -39
  259. package/front_end/panels/coverage/coverageListView.css +2 -2
  260. package/front_end/panels/css_overview/cssOverviewCompletedView.css +34 -34
  261. package/front_end/panels/css_overview/cssOverviewProcessingView.css +5 -5
  262. package/front_end/panels/css_overview/cssOverviewSidebarPanel.css +1 -1
  263. package/front_end/panels/css_overview/cssOverviewStartView.css +17 -17
  264. package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +209 -62
  265. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +4 -4
  266. package/front_end/panels/elements/DOMTreeContextMenu.ts +59 -54
  267. package/front_end/panels/elements/ElementsPanel.ts +1 -1
  268. package/front_end/panels/elements/ElementsTreeElement.ts +130 -94
  269. package/front_end/panels/elements/ElementsTreeOutline.ts +1751 -363
  270. package/front_end/panels/elements/ShortcutTreeElement.ts +6 -3
  271. package/front_end/panels/elements/StylePropertiesSection.ts +65 -8
  272. package/front_end/panels/elements/StylePropertyTreeElement.ts +6 -0
  273. package/front_end/panels/elements/StylesSidebarPane.ts +143 -8
  274. package/front_end/panels/elements/classesPaneWidget.css +6 -6
  275. package/front_end/panels/elements/components/stylePropertyEditor.css +7 -7
  276. package/front_end/panels/elements/computedStyleWidget.css +1 -1
  277. package/front_end/panels/elements/elementStatePaneWidget.css +8 -8
  278. package/front_end/panels/elements/elements-meta.ts +14 -0
  279. package/front_end/panels/elements/elementsPanel.css +4 -4
  280. package/front_end/panels/elements/elementsTreeOutline.css +222 -38
  281. package/front_end/panels/elements/layersWidget.css +4 -4
  282. package/front_end/panels/elements/layoutPane.css +18 -18
  283. package/front_end/panels/elements/metricsSidebarPane.css +11 -11
  284. package/front_end/panels/elements/platformFontsWidget.css +5 -5
  285. package/front_end/panels/elements/propertiesWidget.css +2 -2
  286. package/front_end/panels/elements/stylePropertiesTreeOutline.css +20 -20
  287. package/front_end/panels/elements/stylesSidebarPane.css +37 -20
  288. package/front_end/panels/emulation/deviceModeView.css +49 -49
  289. package/front_end/panels/emulation/mediaQueryInspector.css +18 -18
  290. package/front_end/panels/event_listeners/eventListenersView.css +1 -1
  291. package/front_end/panels/explain/components/consoleInsight.css +29 -29
  292. package/front_end/panels/issues/components/elementsPanelLink.css +2 -2
  293. package/front_end/panels/issues/components/hideIssuesMenu.css +1 -1
  294. package/front_end/panels/issues/issuesPane.css +2 -2
  295. package/front_end/panels/issues/issuesTree.css +50 -50
  296. package/front_end/panels/layer_viewer/Layers3DView.ts +9 -10
  297. package/front_end/panels/layer_viewer/layerDetailsView.css +1 -1
  298. package/front_end/panels/layer_viewer/layerTreeOutline.css +2 -2
  299. package/front_end/panels/layer_viewer/layers3DView.css +1 -1
  300. package/front_end/panels/layer_viewer/paintProfiler.css +1 -1
  301. package/front_end/panels/lighthouse/LighthouseReportSelector.ts +2 -2
  302. package/front_end/panels/media/playerListView.css +9 -9
  303. package/front_end/panels/media/playerMessagesView.css +8 -8
  304. package/front_end/panels/media/playerPropertiesView.css +6 -6
  305. package/front_end/panels/mobile_throttling/NetworkPanelIndicator.ts +1 -1
  306. package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +9 -9
  307. package/front_end/panels/network/NetworkDataGridNode.ts +1 -0
  308. package/front_end/panels/network/NetworkPanel.ts +9 -4
  309. package/front_end/panels/network/RequestConditionsDrawer.ts +12 -12
  310. package/front_end/panels/network/RequestPayloadView.ts +78 -26
  311. package/front_end/panels/network/binaryResourceView.css +1 -1
  312. package/front_end/panels/network/components/EditableSpan.css +3 -3
  313. package/front_end/panels/network/components/HeaderSectionRow.css +14 -14
  314. package/front_end/panels/network/components/RequestHeaderSection.css +7 -7
  315. package/front_end/panels/network/components/RequestHeadersView.css +18 -18
  316. package/front_end/panels/network/components/RequestTrustTokensView.css +1 -1
  317. package/front_end/panels/network/network-meta.ts +9 -9
  318. package/front_end/panels/network/networkConfigView.css +11 -11
  319. package/front_end/panels/network/networkLogView.css +35 -35
  320. package/front_end/panels/network/networkManageCustomHeadersView.css +1 -1
  321. package/front_end/panels/network/networkPanel.css +7 -7
  322. package/front_end/panels/network/networkTimingTable.css +13 -13
  323. package/front_end/panels/network/requestConditionsDrawer.css +4 -4
  324. package/front_end/panels/network/requestCookiesView.css +5 -5
  325. package/front_end/panels/network/requestDeviceBoundSessionsView.css +1 -1
  326. package/front_end/panels/network/requestHTMLView.css +1 -1
  327. package/front_end/panels/network/requestHeadersTree.css +19 -19
  328. package/front_end/panels/network/requestInitiatorView.css +1 -1
  329. package/front_end/panels/network/requestInitiatorViewTree.css +3 -3
  330. package/front_end/panels/network/requestPayloadTree.css +5 -5
  331. package/front_end/panels/network/requestPayloadView.css +1 -1
  332. package/front_end/panels/network/resourceChunkView.css +3 -3
  333. package/front_end/panels/network/signedExchangeInfoTree.css +6 -6
  334. package/front_end/panels/profiler/heapProfiler.css +15 -15
  335. package/front_end/panels/profiler/profileLauncherView.css +10 -10
  336. package/front_end/panels/recorder/RecordingView.ts +1 -1
  337. package/front_end/panels/recorder/StepEditor.ts +86 -7
  338. package/front_end/panels/recorder/TimelineSection.ts +2 -1
  339. package/front_end/panels/recorder/createRecordingView.css +17 -17
  340. package/front_end/panels/recorder/extensionView.css +5 -5
  341. package/front_end/panels/recorder/injected/RecordingClient.ts +1 -1
  342. package/front_end/panels/recorder/models/SchemaUtils.ts +2 -2
  343. package/front_end/panels/recorder/models/ScreenshotStorage.ts +1 -1
  344. package/front_end/panels/recorder/recorderPanel.css +7 -7
  345. package/front_end/panels/recorder/recordingListView.css +12 -12
  346. package/front_end/panels/recorder/recordingView.css +47 -47
  347. package/front_end/panels/recorder/stepEditor.css +2 -2
  348. package/front_end/panels/recorder/stepView.css +20 -20
  349. package/front_end/panels/recorder/timelineSection.css +9 -9
  350. package/front_end/panels/screencast/screencastView.css +12 -12
  351. package/front_end/panels/search/searchResultsPane.css +10 -10
  352. package/front_end/panels/search/searchView.css +9 -9
  353. package/front_end/panels/security/SecurityPanel.ts +84 -54
  354. package/front_end/panels/security/mainView.css +26 -26
  355. package/front_end/panels/security/originView.css +15 -15
  356. package/front_end/panels/sensors/locationsSettingsTab.css +6 -6
  357. package/front_end/panels/sensors/sensors.css +28 -28
  358. package/front_end/panels/settings/components/syncSection.css +5 -5
  359. package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +13 -13
  360. package/front_end/panels/settings/emulation/devicesSettingsTab.css +16 -16
  361. package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +2 -2
  362. package/front_end/panels/settings/keybindsSettingsTab.css +2 -2
  363. package/front_end/panels/settings/settingsScreen.css +5 -5
  364. package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
  365. package/front_end/panels/sources/breakpointEditDialog.css +9 -9
  366. package/front_end/panels/sources/breakpointsView.css +25 -25
  367. package/front_end/panels/sources/callStackSidebarPane.css +10 -10
  368. package/front_end/panels/sources/components/HeadersView.css +6 -6
  369. package/front_end/panels/sources/debuggerPausedMessage.css +4 -4
  370. package/front_end/panels/sources/dialog.css +2 -2
  371. package/front_end/panels/sources/navigatorTree.css +2 -2
  372. package/front_end/panels/sources/navigatorView.css +2 -2
  373. package/front_end/panels/sources/scopeChainSidebarPane.css +1 -1
  374. package/front_end/panels/sources/sourcesNavigator.css +1 -1
  375. package/front_end/panels/sources/sourcesPanel.css +2 -2
  376. package/front_end/panels/sources/sourcesView.css +1 -1
  377. package/front_end/panels/sources/threadsSidebarPane.css +5 -5
  378. package/front_end/panels/sources/watchExpressionsSidebarPane.css +8 -8
  379. package/front_end/panels/timeline/TimelineDetailsView.ts +9 -21
  380. package/front_end/panels/timeline/TimelineFlameChartView.ts +3 -5
  381. package/front_end/panels/timeline/TimelineMiniMap.ts +3 -3
  382. package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -1
  383. package/front_end/panels/timeline/components/breadcrumbsUI.css +3 -3
  384. package/front_end/panels/timeline/components/exportTraceOptions.css +1 -1
  385. package/front_end/panels/timeline/components/fieldSettingsDialog.css +13 -13
  386. package/front_end/panels/timeline/components/ignoreListSetting.css +3 -3
  387. package/front_end/panels/timeline/components/liveMetricsView.css +39 -39
  388. package/front_end/panels/timeline/components/metricCard.css +20 -20
  389. package/front_end/panels/timeline/components/networkRequestDetails.css +9 -9
  390. package/front_end/panels/timeline/components/networkRequestTooltip.css +14 -14
  391. package/front_end/panels/timeline/components/networkTrackWidget.css +2 -2
  392. package/front_end/panels/timeline/components/originMap.css +4 -4
  393. package/front_end/panels/timeline/components/relatedInsightChips.css +1 -1
  394. package/front_end/panels/timeline/components/sidebarAnnotationsTab.css +4 -4
  395. package/front_end/panels/timeline/components/sidebarInsightsTab.css +5 -5
  396. package/front_end/panels/timeline/components/sidebarSingleInsightSet.css +1 -1
  397. package/front_end/panels/timeline/components/timelineSummary.css +4 -4
  398. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +4 -4
  399. package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +1 -1
  400. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +6 -6
  401. package/front_end/panels/timeline/overlays/components/TimeRangeOverlay.ts +1 -1
  402. package/front_end/panels/timeline/thirdPartyTreeView.css +5 -5
  403. package/front_end/panels/timeline/timeline-meta.ts +0 -6
  404. package/front_end/panels/timeline/timelineDetailsView.css +11 -11
  405. package/front_end/panels/timeline/timelinePanel.css +20 -20
  406. package/front_end/panels/timeline/timelineTreeView.css +8 -8
  407. package/front_end/panels/webauthn/webauthnPane.css +6 -6
  408. package/front_end/panels/whats_new/ReleaseNoteText.ts +2 -2
  409. package/front_end/third_party/chromium/README.chromium +1 -1
  410. package/front_end/third_party/i18n/i18n-impl.ts +1 -1
  411. package/front_end/third_party/puppeteer/README.chromium +2 -2
  412. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +15 -1
  413. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +42 -8
  414. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.d.ts +4 -0
  415. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.d.ts.map +1 -1
  416. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js +15 -2
  417. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js.map +1 -1
  418. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts +14 -1
  419. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts.map +1 -1
  420. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js +23 -1
  421. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js.map +1 -1
  422. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
  423. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
  424. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
  425. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
  426. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.d.ts.map +1 -1
  427. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js +77 -6
  428. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js.map +1 -1
  429. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
  430. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
  431. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
  432. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
  433. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
  434. package/front_end/third_party/puppeteer/package/lib/types.d.ts +15 -1
  435. package/front_end/third_party/puppeteer/package/package.json +2 -2
  436. package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +16 -2
  437. package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +36 -1
  438. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  439. package/front_end/third_party/puppeteer/package/src/injected/Poller.ts +86 -6
  440. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  441. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  442. package/front_end/third_party/web-vitals/README.chromium +2 -2
  443. package/front_end/third_party/web-vitals/package/README.md +22 -7
  444. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +6 -2
  445. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.d.ts +2 -2
  446. package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.js +30 -3
  447. package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.d.ts +14 -0
  448. package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.js +19 -13
  449. package/front_end/third_party/web-vitals/package/dist/modules/lib/bindReporter.d.ts +1 -1
  450. package/front_end/third_party/web-vitals/package/dist/modules/lib/doubleRAF.js +1 -1
  451. package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.d.ts +3 -3
  452. package/front_end/third_party/web-vitals/package/dist/modules/lib/softNavs.js +3 -1
  453. package/front_end/third_party/web-vitals/package/dist/modules/types/lcp.d.ts +15 -1
  454. package/front_end/third_party/web-vitals/package/package.json +1 -2
  455. package/front_end/third_party/web-vitals/package/src/attribution/onINP.ts +9 -2
  456. package/front_end/third_party/web-vitals/package/src/attribution/onLCP.ts +36 -5
  457. package/front_end/third_party/web-vitals/package/src/lib/InteractionManager.ts +21 -15
  458. package/front_end/third_party/web-vitals/package/src/lib/doubleRAF.ts +1 -1
  459. package/front_end/third_party/web-vitals/package/src/lib/softNavs.ts +4 -1
  460. package/front_end/third_party/web-vitals/package/src/types/lcp.ts +16 -1
  461. package/front_end/third_party/web-vitals/rebuild.sh +3 -3
  462. package/front_end/ui/comments/CommentAnchorResolver.ts +15 -4
  463. package/front_end/ui/comments/commentsOverlay.css +6 -5
  464. package/front_end/ui/components/adorners/Adorner.ts +1 -1
  465. package/front_end/ui/components/adorners/adorner.css +6 -6
  466. package/front_end/ui/components/buttons/FloatingButton.ts +1 -1
  467. package/front_end/ui/components/buttons/button.css +9 -9
  468. package/front_end/ui/components/buttons/floatingButton.css +2 -2
  469. package/front_end/ui/components/buttons/textButton.css +12 -12
  470. package/front_end/ui/components/dialogs/Dialog.ts +1 -1
  471. package/front_end/ui/components/dialogs/dialog.css +1 -1
  472. package/front_end/ui/components/diff_view/diffView.css +3 -3
  473. package/front_end/ui/components/expandable_list/expandableList.css +9 -9
  474. package/front_end/ui/components/highlighting/HighlightElement.ts +1 -1
  475. package/front_end/ui/components/highlighting/HighlightManager.ts +4 -0
  476. package/front_end/ui/components/icon_button/iconButton.css +2 -2
  477. package/front_end/ui/components/input/checkbox.css +8 -8
  478. package/front_end/ui/components/input/textInput.css +3 -3
  479. package/front_end/ui/components/issue_counter/issueLinkIcon.css +2 -2
  480. package/front_end/ui/components/linkifier/linkifierImpl.css +1 -1
  481. package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +1 -1
  482. package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +1 -1
  483. package/front_end/ui/components/markdown_view/codeBlock.css +2 -2
  484. package/front_end/ui/components/markdown_view/markdownView.css +7 -7
  485. package/front_end/ui/components/menus/menuGroup.css +2 -2
  486. package/front_end/ui/components/menus/menuItem.css +2 -2
  487. package/front_end/ui/components/menus/selectMenu.css +2 -2
  488. package/front_end/ui/components/menus/selectMenuButton.css +4 -4
  489. package/front_end/ui/components/panel_feedback/panelFeedback.css +15 -15
  490. package/front_end/ui/components/panel_feedback/previewToggle.css +2 -2
  491. package/front_end/ui/components/panel_introduction_steps/panelIntroductionSteps.css +7 -7
  492. package/front_end/ui/components/report_view/report.css +3 -3
  493. package/front_end/ui/components/report_view/reportSectionDivider.css +1 -1
  494. package/front_end/ui/components/report_view/reportValue.css +1 -1
  495. package/front_end/ui/components/request_link_icon/requestLinkIcon.css +2 -2
  496. package/front_end/ui/components/settings/settingCheckbox.css +6 -6
  497. package/front_end/ui/components/text_editor/TextEditor.ts +3 -1
  498. package/front_end/ui/components/text_editor/config.ts +16 -4
  499. package/front_end/ui/kit/icons/icon.css +4 -4
  500. package/front_end/ui/kit/link/link.css +1 -1
  501. package/front_end/ui/legacy/ActionRegistration.ts +23 -23
  502. package/front_end/ui/legacy/Dialog.ts +1 -1
  503. package/front_end/ui/legacy/DockController.ts +3 -3
  504. package/front_end/ui/legacy/EmptyWidget.ts +13 -34
  505. package/front_end/ui/legacy/FilterBar.ts +4 -4
  506. package/front_end/ui/legacy/Infobar.ts +2 -2
  507. package/front_end/ui/legacy/InspectorDrawerView.ts +6 -6
  508. package/front_end/ui/legacy/InspectorView.ts +19 -26
  509. package/front_end/ui/legacy/ListWidget.ts +7 -7
  510. package/front_end/ui/legacy/PlusButton.ts +1 -3
  511. package/front_end/ui/legacy/RemoteDebuggingTerminatedScreen.ts +6 -6
  512. package/front_end/ui/legacy/SearchableView.ts +16 -16
  513. package/front_end/ui/legacy/SoftContextMenu.ts +8 -8
  514. package/front_end/ui/legacy/SoftDropDown.ts +1 -1
  515. package/front_end/ui/legacy/SuggestBox.ts +2 -2
  516. package/front_end/ui/legacy/TabbedPane.ts +10 -10
  517. package/front_end/ui/legacy/TargetCrashedScreen.ts +2 -2
  518. package/front_end/ui/legacy/Toolbar.ts +5 -5
  519. package/front_end/ui/legacy/Treeoutline.ts +1 -1
  520. package/front_end/ui/legacy/UIUtils.ts +80 -20
  521. package/front_end/ui/legacy/ViewManager.ts +1 -1
  522. package/front_end/ui/legacy/ViewRegistration.ts +7 -7
  523. package/front_end/ui/legacy/Widget.ts +5 -5
  524. package/front_end/ui/legacy/checkboxTextLabel.css +3 -3
  525. package/front_end/ui/legacy/components/color_picker/ColorFormatSpec.ts +16 -0
  526. package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +1 -0
  527. package/front_end/ui/legacy/components/color_picker/spectrum.css +90 -90
  528. package/front_end/ui/legacy/components/cookie_table/cookiesTable.css +1 -1
  529. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +26 -28
  530. package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +3 -7
  531. package/front_end/ui/legacy/components/inline_editor/bezierEditor.css +13 -13
  532. package/front_end/ui/legacy/components/inline_editor/colorSwatch.css +7 -7
  533. package/front_end/ui/legacy/components/inline_editor/cssAngleEditor.css +5 -5
  534. package/front_end/ui/legacy/components/inline_editor/cssShadowEditor.css +18 -18
  535. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +104 -86
  536. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +8 -6
  537. package/front_end/ui/legacy/components/object_ui/objectPopover.css +4 -4
  538. package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +6 -6
  539. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +28 -11
  540. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +0 -4
  541. package/front_end/ui/legacy/components/perf_ui/chartViewport.css +4 -4
  542. package/front_end/ui/legacy/components/perf_ui/filmStripView.css +6 -6
  543. package/front_end/ui/legacy/components/perf_ui/flameChart.css +7 -7
  544. package/front_end/ui/legacy/components/perf_ui/overviewGrid.css +11 -11
  545. package/front_end/ui/legacy/components/perf_ui/pieChart.css +6 -6
  546. package/front_end/ui/legacy/components/perf_ui/timelineGrid.css +5 -5
  547. package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +3 -3
  548. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +1 -1
  549. package/front_end/ui/legacy/components/source_frame/imageView.css +1 -1
  550. package/front_end/ui/legacy/components/source_frame/jsonView.css +1 -1
  551. package/front_end/ui/legacy/components/source_frame/resourceSourceFrame.css +1 -1
  552. package/front_end/ui/legacy/components/source_frame/xmlTree.css +3 -3
  553. package/front_end/ui/legacy/components/utils/imagePreview.css +1 -1
  554. package/front_end/ui/legacy/components/utils/jsUtils.css +10 -10
  555. package/front_end/ui/legacy/dropTarget.css +2 -2
  556. package/front_end/ui/legacy/emptyWidget.css +6 -0
  557. package/front_end/ui/legacy/filter.css +19 -19
  558. package/front_end/ui/legacy/infobar.css +2 -2
  559. package/front_end/ui/legacy/inspectorCommon.css +67 -67
  560. package/front_end/ui/legacy/inspectorDrawerTabbedPane.css +1 -1
  561. package/front_end/ui/legacy/listWidget.css +5 -5
  562. package/front_end/ui/legacy/progressIndicator.css +4 -4
  563. package/front_end/ui/legacy/reportView.css +7 -7
  564. package/front_end/ui/legacy/searchableView.css +5 -5
  565. package/front_end/ui/legacy/smallBubble.css +3 -3
  566. package/front_end/ui/legacy/softContextMenu.css +4 -4
  567. package/front_end/ui/legacy/softDropDownButton.css +1 -1
  568. package/front_end/ui/legacy/splitWidget.css +9 -31
  569. package/front_end/ui/legacy/suggestBox.css +4 -4
  570. package/front_end/ui/legacy/tabbedPane.css +17 -17
  571. package/front_end/ui/legacy/textPrompt.css +2 -2
  572. package/front_end/ui/legacy/toolbar.css +4 -4
  573. package/front_end/ui/legacy/treeoutline.css +14 -14
  574. package/front_end/ui/legacy/viewContainers.css +6 -6
  575. package/front_end/ui/settings/ConsoleSettings.ts +34 -0
  576. package/front_end/ui/visual_logging/KnownContextValues.ts +12 -0
  577. package/inspector_overlay/common.ts +12 -12
  578. package/inspector_overlay/css_grid_label_helpers.ts +16 -17
  579. package/inspector_overlay/drag_resize_handler.ts +2 -2
  580. package/inspector_overlay/highlight_common.ts +11 -13
  581. package/inspector_overlay/highlight_container_query.ts +2 -2
  582. package/inspector_overlay/highlight_flex_common.ts +6 -7
  583. package/inspector_overlay/highlight_grid_common.ts +3 -3
  584. package/inspector_overlay/highlight_isolated_element.ts +12 -3
  585. package/inspector_overlay/highlight_scroll_snap.ts +2 -2
  586. package/inspector_overlay/loadCSS.rollup.js +0 -1
  587. package/inspector_overlay/testing/InspectorOverlayHelpers.ts +13 -13
  588. package/inspector_overlay/tool_green_dev_anchors.ts +3 -3
  589. package/inspector_overlay/tool_highlight.ts +9 -9
  590. package/inspector_overlay/tool_paused.ts +4 -4
  591. package/inspector_overlay/tool_persistent.ts +11 -11
  592. package/inspector_overlay/tool_screenshot.ts +7 -7
  593. package/inspector_overlay/tool_source_order.ts +4 -4
  594. package/inspector_overlay/tool_viewport_size.ts +3 -3
  595. package/inspector_overlay/tool_window_controls.ts +4 -4
  596. package/mcp/mcp.ts +1 -0
  597. package/package.json +2 -2
  598. package/front_end/generated/protocol-tsconfig.json +0 -10
  599. package/front_end/panels/js_timeline/DIR_METADATA +0 -3
  600. package/front_end/panels/js_timeline/js_timeline-meta.ts +0 -193
  601. package/front_end/panels/js_timeline/js_timeline.ts +0 -1
  602. /package/front_end/entrypoints/{formatter_worker/FormatterActions.ts → formatter_actions/formatter_actions.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import type { LCPMetricWithAttribution, AttributionReportOpts } from '../types.js';
1
+ import type { LCPMetricWithAttribution, LCPAttributionReportOpts } from '../types.js';
2
2
  /**
3
3
  * Calculates the [LCP](https://web.dev/articles/lcp) value for the current page and
4
4
  * calls the `callback` function once the value is ready (along with the
@@ -10,4 +10,4 @@ import type { LCPMetricWithAttribution, AttributionReportOpts } from '../types.j
10
10
  * performance entry is dispatched, or once the final value of the metric has
11
11
  * been determined.
12
12
  */
13
- export declare const onLCP: (onReport: (metric: LCPMetricWithAttribution) => void, opts?: AttributionReportOpts) => void;
13
+ export declare const onLCP: (onReport: (metric: LCPMetricWithAttribution) => void, opts?: LCPAttributionReportOpts) => void;
@@ -18,7 +18,27 @@ import { getSelector } from '../lib/getSelector.js';
18
18
  import { initUnique } from '../lib/initUnique.js';
19
19
  import { LCPEntryManager } from '../lib/LCPEntryManager.js';
20
20
  import { checkSoftNavsEnabled } from '../lib/softNavs.js';
21
+ import { observe } from '../lib/observe.js';
21
22
  import { onLCP as unattributedOnLCP } from '../onLCP.js';
23
+ /**
24
+ * Default resource buffer size to 50 to help attribute media LCPs to a URL and
25
+ * for subpart attribution. This can be increased for pages that request a
26
+ * large number of resources between the LCP resource and LCP candidates being
27
+ * processed, particularly for soft navigations where the browser default first
28
+ * 250 entries may not contain the LCP resource.
29
+ */
30
+ const DEFAULT_RESOURCE_BUFFER_SIZE = 50;
31
+ let resourceBufferSizeLimit = DEFAULT_RESOURCE_BUFFER_SIZE;
32
+ const resourceBuffer = [];
33
+ observe(['resource'], (entries) => {
34
+ for (const entry of entries) {
35
+ resourceBuffer.push(entry);
36
+ // Keep only the last resourceBufferSizeLimit entries.
37
+ if (resourceBuffer.length > resourceBufferSizeLimit) {
38
+ resourceBuffer.shift();
39
+ }
40
+ }
41
+ });
22
42
  /**
23
43
  * Calculates the [LCP](https://web.dev/articles/lcp) value for the current page and
24
44
  * calls the `callback` function once the value is ready (along with the
@@ -36,6 +56,9 @@ export const onLCP = (onReport, opts = {}) => {
36
56
  // this function invocation and the `unattributedOnLCP()` invocation below
37
57
  // (which is passed the same `opts` object).
38
58
  opts = Object.assign({}, opts);
59
+ if (opts.resourceBufferSize != undefined) {
60
+ resourceBufferSizeLimit = opts.resourceBufferSize;
61
+ }
39
62
  const lcpEntryManager = initUnique(opts, LCPEntryManager);
40
63
  const lcpTargetMap = new WeakMap();
41
64
  if (checkSoftNavsEnabled(opts)) {
@@ -64,10 +87,14 @@ export const onLCP = (onReport, opts = {}) => {
64
87
  if (metric.entries.length) {
65
88
  // The `metric.entries.length` check ensures there will be an entry.
66
89
  const lcpEntry = metric.entries.at(-1);
90
+ // Get the Resource Timing entry checking the local buffer first
91
+ // Use findLast to get the latest entry in case a resource is requested
92
+ // multiple times (can particularly affect soft nav page views).
67
93
  const lcpResourceEntry = lcpEntry.url &&
68
- performance
69
- .getEntriesByType('resource')
70
- .find((e) => e.name === lcpEntry.url);
94
+ (resourceBuffer.findLast((e) => e.name === lcpEntry.url) ||
95
+ performance
96
+ .getEntriesByType('resource')
97
+ .findLast((e) => e.name === lcpEntry.url));
71
98
  attribution.target = lcpTargetMap.get(lcpEntry);
72
99
  attribution.lcpEntry = lcpEntry;
73
100
  // Only attribute the URL and resource entry if they exist.
@@ -5,6 +5,15 @@ export interface Interaction {
5
5
  entries: PerformanceEventTiming[];
6
6
  }
7
7
  export declare class InteractionManager {
8
+ /**
9
+ * The interaction count at the start of the current navigation, so p98
10
+ * interaction latencies only consider interactions since then.
11
+ *
12
+ * This is per-instance rather than module state: `initUnique()` gives every
13
+ * `onINP()` call its own manager, and a shared counter would let whichever
14
+ * instance resets first hide the interactions from all the others.
15
+ */
16
+ _prevInteractionCount: number;
8
17
  /**
9
18
  * A list of longest interactions on the page (by latency) sorted so the
10
19
  * longest one is first. The list is at most MAX_INTERACTIONS_TO_CONSIDER
@@ -18,6 +27,11 @@ export declare class InteractionManager {
18
27
  _longestInteractionMap: Map<number, Interaction>;
19
28
  _onBeforeProcessingEntry?: (entry: PerformanceEventTiming) => void;
20
29
  _onAfterProcessingINPCandidate?: (interaction: Interaction) => void;
30
+ /**
31
+ * Returns the interaction count since the start of the current navigation
32
+ * (or the full page lifecycle if there were no soft navs / bfcache restores).
33
+ */
34
+ _getInteractionCountForNavigation(): number;
21
35
  _resetInteractions(): void;
22
36
  /**
23
37
  * Returns the estimated p98 longest interaction based on the stored
@@ -17,17 +17,16 @@ import { getInteractionCount } from './polyfills/interactionCountPolyfill.js';
17
17
  // To prevent unnecessary memory usage on pages with lots of interactions,
18
18
  // store at most 10 of the longest interactions to consider as INP candidates.
19
19
  const MAX_INTERACTIONS_TO_CONSIDER = 10;
20
- // Used to store the interaction count after a bfcache restore, since p98
21
- // interaction latencies should only consider the current navigation.
22
- let prevInteractionCount = 0;
23
- /**
24
- * Returns the interaction count since the last bfcache restore (or for the
25
- * full page lifecycle if there were no bfcache restores).
26
- */
27
- const getInteractionCountForNavigation = () => {
28
- return getInteractionCount() - prevInteractionCount;
29
- };
30
20
  export class InteractionManager {
21
+ /**
22
+ * The interaction count at the start of the current navigation, so p98
23
+ * interaction latencies only consider interactions since then.
24
+ *
25
+ * This is per-instance rather than module state: `initUnique()` gives every
26
+ * `onINP()` call its own manager, and a shared counter would let whichever
27
+ * instance resets first hide the interactions from all the others.
28
+ */
29
+ _prevInteractionCount = 0;
31
30
  /**
32
31
  * A list of longest interactions on the page (by latency) sorted so the
33
32
  * longest one is first. The list is at most MAX_INTERACTIONS_TO_CONSIDER
@@ -41,8 +40,15 @@ export class InteractionManager {
41
40
  _longestInteractionMap = new Map();
42
41
  _onBeforeProcessingEntry;
43
42
  _onAfterProcessingINPCandidate;
43
+ /**
44
+ * Returns the interaction count since the start of the current navigation
45
+ * (or the full page lifecycle if there were no soft navs / bfcache restores).
46
+ */
47
+ _getInteractionCountForNavigation() {
48
+ return getInteractionCount() - this._prevInteractionCount;
49
+ }
44
50
  _resetInteractions() {
45
- prevInteractionCount = getInteractionCount();
51
+ this._prevInteractionCount = getInteractionCount();
46
52
  this._longestInteractionList.length = 0;
47
53
  this._longestInteractionMap.clear();
48
54
  }
@@ -51,7 +57,7 @@ export class InteractionManager {
51
57
  * interaction candidates and the interaction count for the current page.
52
58
  */
53
59
  _estimateP98LongestInteraction(navigationType) {
54
- const interactionCountForNavigation = getInteractionCountForNavigation();
60
+ const interactionCountForNavigation = this._getInteractionCountForNavigation();
55
61
  const candidateInteractionIndex = Math.min(this._longestInteractionList.length - 1, Math.floor(interactionCountForNavigation / 50));
56
62
  // If we have a non-zero interactionCountForNavigation but no
57
63
  // candidateInteractionIndex, then it's below the 16ms limit
@@ -79,7 +85,7 @@ export class InteractionManager {
79
85
  _processEntry(entry) {
80
86
  this._onBeforeProcessingEntry?.(entry);
81
87
  // Skip further processing for entries that cannot be INP candidates.
82
- if (!(entry.interactionId || entry.entryType === 'first-input'))
88
+ if (!entry.interactionId)
83
89
  return;
84
90
  // The least-long of the 10 longest interactions.
85
91
  const minLongestInteraction = this._longestInteractionList.at(-1);
@@ -1,5 +1,5 @@
1
1
  import type { MetricType, MetricRatingThresholds } from '../types.js';
2
- export declare const bindReporter: <MetricName extends MetricType["name"]>(callback: (metric: Extract<MetricType, {
2
+ export declare const bindReporter: <MetricName extends MetricType['name']>(callback: (metric: Extract<MetricType, {
3
3
  name: MetricName;
4
4
  }>) => void, metric: Extract<MetricType, {
5
5
  name: MetricName;
@@ -14,5 +14,5 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  export const doubleRAF = (cb) => {
17
- requestAnimationFrame(() => requestAnimationFrame(cb));
17
+ requestAnimationFrame(() => requestAnimationFrame(() => cb()));
18
18
  };
@@ -1,8 +1,8 @@
1
1
  import type { MetricType } from '../types.js';
2
- export declare const initMetric: <MetricName extends MetricType["name"]>(name: MetricName, value?: number, navigationType?: MetricType["navigationType"], navigationId?: number, navigationInteractionId?: number, navigationURL?: string, navigationStartTime?: number) => {
2
+ export declare const initMetric: <MetricName extends MetricType['name']>(name: MetricName, value?: number, navigationType?: MetricType['navigationType'], navigationId?: number, navigationInteractionId?: number, navigationURL?: string, navigationStartTime?: number) => {
3
3
  name: MetricName;
4
4
  value: number;
5
- rating: "good";
5
+ rating: 'good';
6
6
  delta: number;
7
7
  entries: (Extract<import("../types.js").CLSMetric, {
8
8
  name: MetricName;
@@ -16,7 +16,7 @@ export declare const initMetric: <MetricName extends MetricType["name"]>(name: M
16
16
  name: MetricName;
17
17
  }>)["entries"];
18
18
  id: string;
19
- navigationType: "reload" | "navigate" | "soft-navigation" | "back-forward" | "back-forward-cache" | "prerender" | "restore";
19
+ navigationType: "back-forward" | "back-forward-cache" | "navigate" | "prerender" | "reload" | "restore" | "soft-navigation";
20
20
  navigationId: number;
21
21
  navigationInteractionId: number | undefined;
22
22
  navigationURL: string | undefined;
@@ -14,7 +14,9 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  export const checkSoftNavsEnabled = (opts) => {
17
- return (PerformanceObserver.supportedEntryTypes.includes('soft-navigation') &&
17
+ return (
18
+ // Firefox has a preference to disable this, which some people use so add a guard
19
+ globalThis.PerformanceObserver?.supportedEntryTypes?.includes('soft-navigation') &&
18
20
  // Older implementations expose the value as an attribute rather than the
19
21
  // method. We only support the newer method as that was what was launched
20
22
  // to stable unflagged.
@@ -1,4 +1,4 @@
1
- import type { Metric } from './base.js';
1
+ import type { AttributionReportOpts, Metric } from './base.js';
2
2
  /**
3
3
  * An LCP-specific version of the Metric object.
4
4
  */
@@ -65,6 +65,20 @@ export interface LCPAttribution {
65
65
  */
66
66
  lcpEntry?: LargestContentfulPaint;
67
67
  }
68
+ /**
69
+ * Configuration options for `onLCP`.
70
+ */
71
+ export interface LCPAttributionReportOpts extends AttributionReportOpts {
72
+ /**
73
+ * The maximum number of additional Resource Timing entries to keep in the
74
+ * buffer, in addition to the first 250 entries available in the default
75
+ * buffer. This is useful to help attribute media LCPs to a URL and LCP
76
+ * subparts. Defaults to 50 but can be increased for pages that use a lot of
77
+ * resources, before LCP gets a chance to emit, particularly for soft
78
+ * navigations.
79
+ */
80
+ resourceBufferSize?: number;
81
+ }
68
82
  /**
69
83
  * An LCP-specific version of the Metric object with attribution.
70
84
  */
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "web-vitals",
3
- "version": "6.0.0",
3
+ "version": "6.2.1",
4
4
  "description": "Easily measure performance metrics in JavaScript",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -90,7 +90,6 @@
90
90
  "release:alpha": "npm version prerelease --preid=alpha -m 'Release v%s' && npm publish --tag next",
91
91
  "release:beta": "npm version prerelease --preid=beta -m 'Release v%s' && npm publish --tag next",
92
92
  "release:rc": "npm version prerelease --preid=rc -m 'Release v%s' && npm publish --tag next",
93
- "release:soft-navs": "npm run build && npm publish --tag soft-navs",
94
93
  "test": "npm-run-all build test:unit -p -r test:e2e test:server",
95
94
  "test:e2e": "wdio",
96
95
  "test:server": "node test/server.js",
@@ -210,7 +210,7 @@ export const onINP = (
210
210
  }
211
211
 
212
212
  // Store the grouped render time for this entry for reference later.
213
- if (entry.interactionId || entry.entryType === 'first-input') {
213
+ if (entry.interactionId) {
214
214
  entryToEntriesGroupMap.set(entry, group);
215
215
  }
216
216
 
@@ -448,7 +448,14 @@ export const onINP = (
448
448
  const firstEntry = metric.entries[0];
449
449
  const group = entryToEntriesGroupMap.get(firstEntry)!;
450
450
 
451
- const processingStart = group.processingStart;
451
+ // `group.processingStart` is the earliest processing start across *all*
452
+ // events presented in this frame, which can predate this interaction's
453
+ // `startTime` (e.g. a long `pointerover` handler that was still running
454
+ // when the user clicked). Clamp so `inputDelay` is never negative.
455
+ const processingStart = Math.max(
456
+ group.processingStart,
457
+ firstEntry.startTime,
458
+ );
452
459
 
453
460
  // Due to the fact that durations can be rounded down to the nearest 8ms,
454
461
  // we have to clamp `nextPaintTime` so it doesn't appear to occur before
@@ -19,14 +19,37 @@ import {getSelector} from '../lib/getSelector.js';
19
19
  import {initUnique} from '../lib/initUnique.js';
20
20
  import {LCPEntryManager} from '../lib/LCPEntryManager.js';
21
21
  import {checkSoftNavsEnabled} from '../lib/softNavs.js';
22
+ import {observe} from '../lib/observe.js';
22
23
  import {onLCP as unattributedOnLCP} from '../onLCP.js';
23
24
  import type {
24
25
  LCPAttribution,
25
26
  LCPMetric,
26
27
  LCPMetricWithAttribution,
27
- AttributionReportOpts,
28
+ LCPAttributionReportOpts,
28
29
  } from '../types.js';
29
30
 
31
+ /**
32
+ * Default resource buffer size to 50 to help attribute media LCPs to a URL and
33
+ * for subpart attribution. This can be increased for pages that request a
34
+ * large number of resources between the LCP resource and LCP candidates being
35
+ * processed, particularly for soft navigations where the browser default first
36
+ * 250 entries may not contain the LCP resource.
37
+ */
38
+ const DEFAULT_RESOURCE_BUFFER_SIZE = 50;
39
+ let resourceBufferSizeLimit = DEFAULT_RESOURCE_BUFFER_SIZE;
40
+
41
+ const resourceBuffer: PerformanceResourceTiming[] = [];
42
+
43
+ observe(['resource'], (entries) => {
44
+ for (const entry of entries) {
45
+ resourceBuffer.push(entry);
46
+ // Keep only the last resourceBufferSizeLimit entries.
47
+ if (resourceBuffer.length > resourceBufferSizeLimit) {
48
+ resourceBuffer.shift();
49
+ }
50
+ }
51
+ });
52
+
30
53
  /**
31
54
  * Calculates the [LCP](https://web.dev/articles/lcp) value for the current page and
32
55
  * calls the `callback` function once the value is ready (along with the
@@ -40,7 +63,7 @@ import type {
40
63
  */
41
64
  export const onLCP = (
42
65
  onReport: (metric: LCPMetricWithAttribution) => void,
43
- opts: AttributionReportOpts = {},
66
+ opts: LCPAttributionReportOpts = {},
44
67
  ) => {
45
68
  // Clone the opts object to ensure it's unique, so we can initialize a
46
69
  // single instance of the `LCPEntryManager` class that's shared only with
@@ -48,6 +71,10 @@ export const onLCP = (
48
71
  // (which is passed the same `opts` object).
49
72
  opts = Object.assign({}, opts);
50
73
 
74
+ if (opts.resourceBufferSize != undefined) {
75
+ resourceBufferSizeLimit = opts.resourceBufferSize;
76
+ }
77
+
51
78
  const lcpEntryManager = initUnique(opts, LCPEntryManager);
52
79
  const lcpTargetMap: WeakMap<LargestContentfulPaint, string> = new WeakMap();
53
80
 
@@ -81,11 +108,15 @@ export const onLCP = (
81
108
  if (metric.entries.length) {
82
109
  // The `metric.entries.length` check ensures there will be an entry.
83
110
  const lcpEntry = metric.entries.at(-1)!;
111
+ // Get the Resource Timing entry checking the local buffer first
112
+ // Use findLast to get the latest entry in case a resource is requested
113
+ // multiple times (can particularly affect soft nav page views).
84
114
  const lcpResourceEntry =
85
115
  lcpEntry.url &&
86
- performance
87
- .getEntriesByType('resource')
88
- .find((e) => e.name === lcpEntry.url);
116
+ (resourceBuffer.findLast((e) => e.name === lcpEntry.url) ||
117
+ performance
118
+ .getEntriesByType('resource')
119
+ .findLast((e) => e.name === lcpEntry.url));
89
120
 
90
121
  attribution.target = lcpTargetMap.get(lcpEntry);
91
122
  attribution.lcpEntry = lcpEntry;
@@ -31,19 +31,16 @@ export interface Interaction {
31
31
  // store at most 10 of the longest interactions to consider as INP candidates.
32
32
  const MAX_INTERACTIONS_TO_CONSIDER = 10;
33
33
 
34
- // Used to store the interaction count after a bfcache restore, since p98
35
- // interaction latencies should only consider the current navigation.
36
- let prevInteractionCount = 0;
37
-
38
- /**
39
- * Returns the interaction count since the last bfcache restore (or for the
40
- * full page lifecycle if there were no bfcache restores).
41
- */
42
- const getInteractionCountForNavigation = () => {
43
- return getInteractionCount() - prevInteractionCount;
44
- };
45
-
46
34
  export class InteractionManager {
35
+ /**
36
+ * The interaction count at the start of the current navigation, so p98
37
+ * interaction latencies only consider interactions since then.
38
+ *
39
+ * This is per-instance rather than module state: `initUnique()` gives every
40
+ * `onINP()` call its own manager, and a shared counter would let whichever
41
+ * instance resets first hide the interactions from all the others.
42
+ */
43
+ _prevInteractionCount = 0;
47
44
  /**
48
45
  * A list of longest interactions on the page (by latency) sorted so the
49
46
  * longest one is first. The list is at most MAX_INTERACTIONS_TO_CONSIDER
@@ -61,8 +58,16 @@ export class InteractionManager {
61
58
 
62
59
  _onAfterProcessingINPCandidate?: (interaction: Interaction) => void;
63
60
 
61
+ /**
62
+ * Returns the interaction count since the start of the current navigation
63
+ * (or the full page lifecycle if there were no soft navs / bfcache restores).
64
+ */
65
+ _getInteractionCountForNavigation() {
66
+ return getInteractionCount() - this._prevInteractionCount;
67
+ }
68
+
64
69
  _resetInteractions() {
65
- prevInteractionCount = getInteractionCount();
70
+ this._prevInteractionCount = getInteractionCount();
66
71
  this._longestInteractionList.length = 0;
67
72
  this._longestInteractionMap.clear();
68
73
  }
@@ -72,7 +77,8 @@ export class InteractionManager {
72
77
  * interaction candidates and the interaction count for the current page.
73
78
  */
74
79
  _estimateP98LongestInteraction(navigationType: Metric['navigationType']) {
75
- const interactionCountForNavigation = getInteractionCountForNavigation();
80
+ const interactionCountForNavigation =
81
+ this._getInteractionCountForNavigation();
76
82
  const candidateInteractionIndex = Math.min(
77
83
  this._longestInteractionList.length - 1,
78
84
  Math.floor(interactionCountForNavigation / 50),
@@ -109,7 +115,7 @@ export class InteractionManager {
109
115
  this._onBeforeProcessingEntry?.(entry);
110
116
 
111
117
  // Skip further processing for entries that cannot be INP candidates.
112
- if (!(entry.interactionId || entry.entryType === 'first-input')) return;
118
+ if (!entry.interactionId) return;
113
119
 
114
120
  // The least-long of the 10 longest interactions.
115
121
  const minLongestInteraction = this._longestInteractionList.at(-1);
@@ -15,5 +15,5 @@
15
15
  */
16
16
 
17
17
  export const doubleRAF = (cb: () => unknown) => {
18
- requestAnimationFrame(() => requestAnimationFrame(cb));
18
+ requestAnimationFrame(() => requestAnimationFrame(() => cb()));
19
19
  };
@@ -18,7 +18,10 @@ import type {ReportOpts} from '../types.js';
18
18
 
19
19
  export const checkSoftNavsEnabled = (opts?: ReportOpts) => {
20
20
  return (
21
- PerformanceObserver.supportedEntryTypes.includes('soft-navigation') &&
21
+ // Firefox has a preference to disable this, which some people use so add a guard
22
+ globalThis.PerformanceObserver?.supportedEntryTypes?.includes(
23
+ 'soft-navigation',
24
+ ) &&
22
25
  // Older implementations expose the value as an attribute rather than the
23
26
  // method. We only support the newer method as that was what was launched
24
27
  // to stable unflagged.
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import type {Metric} from './base.js';
17
+ import type {AttributionReportOpts, Metric} from './base.js';
18
18
 
19
19
  /**
20
20
  * An LCP-specific version of the Metric object.
@@ -84,6 +84,21 @@ export interface LCPAttribution {
84
84
  lcpEntry?: LargestContentfulPaint;
85
85
  }
86
86
 
87
+ /**
88
+ * Configuration options for `onLCP`.
89
+ */
90
+ export interface LCPAttributionReportOpts extends AttributionReportOpts {
91
+ /**
92
+ * The maximum number of additional Resource Timing entries to keep in the
93
+ * buffer, in addition to the first 250 entries available in the default
94
+ * buffer. This is useful to help attribute media LCPs to a URL and LCP
95
+ * subparts. Defaults to 50 but can be increased for pages that use a lot of
96
+ * resources, before LCP gets a chance to emit, particularly for soft
97
+ * navigations.
98
+ */
99
+ resourceBufferSize?: number;
100
+ }
101
+
87
102
  /**
88
103
  * An LCP-specific version of the Metric object with attribution.
89
104
  */
@@ -4,8 +4,8 @@ set -euo pipefail
4
4
 
5
5
  SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
6
6
 
7
- VERSION=6.0.0
8
- GIT_SHA=67a9ddb4cf77f8d1cb2c877ccd870b9c821aa853 # web-vitals does not tag releases.
7
+ VERSION=6.2.1
8
+ GIT_SHA=582ee7450ca5c60a947edbfd95ad53e135ca5dde # web-vitals does not tag releases.
9
9
 
10
10
  # Note: this is just to handle updating README.chromium.
11
11
  # For the actual sources, below we checkout the repo, apply local patches, then build with tsc.
@@ -17,7 +17,7 @@ cd "$SCRIPT_DIR"
17
17
  rm -rf package/src package/dist
18
18
 
19
19
  if [ ! -d tmp-repo ]; then
20
- git clone http://github.com/GoogleChrome/web-vitals tmp-repo
20
+ git clone https://github.com/GoogleChrome/web-vitals tmp-repo
21
21
  fi
22
22
 
23
23
  cd tmp-repo
@@ -10,7 +10,16 @@ export type EditorAnchorSignature = CommentManager.CommentManager.EditorAnchorSi
10
10
  export type CommentAnchorSignature = CommentManager.CommentManager.CommentAnchorSignature;
11
11
  export type CommentThread = CommentManager.CommentManager.CommentThread;
12
12
 
13
- const IGNORED_MINOR_CONTROLS = new Set<number>([
13
+ const DISALLOWED_COMMENT_TARGETS = new Set<number>([
14
+ // Top-level containers & layout structures
15
+ VisualLogging.VisualElements.Panel,
16
+ VisualLogging.VisualElements.Drawer,
17
+ VisualLogging.VisualElements.Pane,
18
+ VisualLogging.VisualElements.Tree,
19
+ VisualLogging.VisualElements.PanelTabHeader,
20
+ VisualLogging.VisualElements.Resizer,
21
+ VisualLogging.VisualElements.Menu,
22
+ // Minor controls and toolbars
14
23
  VisualLogging.VisualElements.Action,
15
24
  VisualLogging.VisualElements.Toggle,
16
25
  VisualLogging.VisualElements.Close,
@@ -158,7 +167,8 @@ function resolveCodeMirrorLineInfo(element: Element): CodeMirrorLineInfo|null {
158
167
  * 3. Checks for domain IDs (`data-network-request-id` or `data-backend-node-id`) across shadow boundaries,
159
168
  * returning the owning domain element.
160
169
  * 4. Escalates minor controls / sub-elements up to semantic containers (e.g., TableRow, TreeItem).
161
- * 5. Falls back to the nearest visual logging element if no semantic container is found.
170
+ * 5. Falls back to the nearest visual logging element if no semantic container is found,
171
+ * excluding top-level containers and minor controls.
162
172
  *
163
173
  * @param element The source DOM element to resolve.
164
174
  * @returns The resolved semantic anchor Element, or null if unresolvable/empty/excluded.
@@ -193,7 +203,7 @@ export function resolveCommentAnchorElement(element: Element): Element|null {
193
203
  config.ve === VisualLogging.VisualElements.TreeItem) {
194
204
  return isNonEmptyItem(target) ? target : null;
195
205
  }
196
- if (!fallbackCandidate && !IGNORED_MINOR_CONTROLS.has(config.ve)) {
206
+ if (!fallbackCandidate && !DISALLOWED_COMMENT_TARGETS.has(config.ve)) {
197
207
  fallbackCandidate = target;
198
208
  }
199
209
  } catch {
@@ -369,7 +379,8 @@ export function resolveCommentAnchor(
369
379
  * @param limit Maximum number of matching elements to return (defaults to Infinity).
370
380
  * @returns Array of matching Elements in document order.
371
381
  */
372
- export function deepQuerySelectorAll(root: Document|Element, selector: string, limit = Infinity): Element[] {
382
+ // eslint-disable-next-line @typescript-eslint/no-inferrable-types
383
+ export function deepQuerySelectorAll(root: Document|Element, selector: string, limit: number = Infinity): Element[] {
373
384
  const results: Element[] = [];
374
385
  if (limit <= 0 || Number.isNaN(limit)) {
375
386
  return results;
@@ -10,7 +10,8 @@
10
10
  position: fixed;
11
11
  inset: 0;
12
12
  pointer-events: none;
13
- z-index: 999990;
13
+ /* Needs to be above regular panel widgets (e.g. flame chart at z-index 2000) but below floating glass panes (which start at z-index 3000). */
14
+ z-index: 2500;
14
15
  overflow: hidden;
15
16
  width: 100vw;
16
17
  height: 100vh;
@@ -20,8 +21,8 @@
20
21
  position: absolute;
21
22
  pointer-events: auto;
22
23
  cursor: pointer;
23
- font-size: 24px;
24
- line-height: 24px;
24
+ font-size: var(--sys-typescale-headline1-size);
25
+ line-height: var(--sys-typescale-body1-line-height);
25
26
  filter: drop-shadow(0 2px 5px rgb(0 0 0 / 35%));
26
27
  user-select: none;
27
28
  transition: transform 0.1s ease;
@@ -34,7 +35,7 @@
34
35
  .comment-anchor-highlight {
35
36
  position: absolute;
36
37
  pointer-events: none;
37
- border: 2px dashed var(--sys-color-primary);
38
+ border: var(--sys-size-2) dashed var(--sys-color-primary);
38
39
  background-color: color-mix(in srgb, var(--sys-color-primary), transparent 90%);
39
40
  box-sizing: border-box;
40
41
  }
@@ -42,7 +43,7 @@
42
43
  .comment-hover-highlight {
43
44
  position: absolute;
44
45
  pointer-events: none;
45
- border: 2px solid var(--sys-color-primary);
46
+ border: var(--sys-size-2) solid var(--sys-color-primary);
46
47
  background-color: color-mix(in srgb, var(--sys-color-primary), transparent 85%);
47
48
  box-sizing: border-box;
48
49
  }
@@ -39,7 +39,7 @@ export class Adorner extends HTMLElement {
39
39
  this.#render();
40
40
  }
41
41
 
42
- static readonly observedAttributes = ['active', 'toggleable'];
42
+ static readonly observedAttributes: string[] = ['active', 'toggleable'];
43
43
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void {
44
44
  if (oldValue === newValue) {
45
45
  return;
@@ -15,13 +15,13 @@
15
15
  slot {
16
16
  display: inline-flex;
17
17
  box-sizing: border-box;
18
- height: 14px;
18
+ height: var(--sys-size-7);
19
19
  line-height: 13px;
20
- padding: 0 6px;
20
+ padding: 0 var(--sys-size-4);
21
21
  font-size: var(--override-adorner-font-size, 8.5px);
22
22
  color: var(--override-adorner-text-color, var(--sys-color-primary));
23
23
  background-color: var(--override-adorner-background-color, var(--sys-color-cdt-base-container));
24
- border: 1px solid var(--override-adorner-border-color, var(--sys-color-tonal-outline));
24
+ border: var(--sys-size-1) solid var(--override-adorner-border-color, var(--sys-color-tonal-outline));
25
25
  border-radius: 10px;
26
26
  position: relative;
27
27
 
@@ -46,15 +46,15 @@ slot {
46
46
  }
47
47
 
48
48
  :host(:focus-visible) slot {
49
- outline: 2px solid var(--sys-color-state-focus-ring);
50
- outline-offset: 2px;
49
+ outline: var(--sys-size-2) solid var(--sys-color-state-focus-ring);
50
+ outline-offset: var(--sys-size-2);
51
51
  z-index: 999;
52
52
  }
53
53
 
54
54
  :host([aria-pressed="true"]) slot {
55
55
  color: var(--override-adorner-active-text-color, var(--sys-color-on-primary));
56
56
  background-color: var(--override-adorner-active-background-color, var(--sys-color-primary));
57
- border: 1px solid var(--override-adorner-active-background-color, var(--sys-color-primary));
57
+ border: var(--sys-size-1) solid var(--override-adorner-active-background-color, var(--sys-color-primary));
58
58
 
59
59
  &:hover::after {
60
60
  background-color: var(--sys-color-state-hover-on-prominent);
@@ -38,7 +38,7 @@ const {html, Directives: {classMap}} = Lit;
38
38
  * provided context.
39
39
  */
40
40
  export class FloatingButton extends HTMLElement {
41
- static readonly observedAttributes = ['icon-name', 'jslogcontext', 'disabled'];
41
+ static readonly observedAttributes: string[] = ['icon-name', 'jslogcontext', 'disabled'];
42
42
 
43
43
  readonly #shadow = this.attachShadow({mode: 'open'});
44
44