chrome-devtools-frontend 1.0.1721762 → 1.0.1726686
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.
- package/.agents/skills/review-ui-widgets/SKILL.md +7 -7
- package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +12 -0
- package/.agents/skills/ui-eng-vision-widget-promoter/SKILL.md +3 -3
- package/.agents/skills/ui-widgets/SKILL.md +2 -1
- package/docs/cookbook/dependencies.md +57 -11
- package/docs/get_the_code.md +15 -0
- package/front_end/core/i18n/collect-ui-strings.js +58 -12
- package/front_end/core/i18n/i18nImpl.ts +1 -1
- package/front_end/core/root/Runtime.ts +1 -1
- package/front_end/core/sdk/ResourceTreeModel.ts +16 -0
- package/front_end/core/sdk/WebAuthnModel.ts +17 -10
- package/front_end/entrypoints/js_app/js_app.ts +2 -5
- package/front_end/entrypoints/node_app/node_app.ts +2 -3
- package/front_end/generated/InspectorBackendCommands.ts +3 -3
- package/front_end/generated/protocol.ts +17 -0
- package/front_end/models/ai_assistance/skills/lighthouse.md +2 -1
- package/front_end/models/ai_assistance/skills/network.md +1 -0
- package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +26 -2
- package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +1 -1
- package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +2 -7
- package/front_end/models/ai_assistance/tools/RunLighthouse.ts +2 -2
- package/front_end/models/comment_manager/CD4ABridge.ts +4 -0
- package/front_end/models/comment_manager/CommentManager.ts +0 -6
- package/front_end/models/comment_manager/CommentThread.ts +39 -19
- package/front_end/models/elements/StyleChanges.ts +66 -0
- package/front_end/models/trace/EventsSerializer.ts +2 -7
- package/front_end/models/trace/ModelImpl.ts +0 -2
- package/front_end/models/trace/handlers/FlowsHandler.ts +37 -29
- package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +13 -6
- package/front_end/models/trace/helpers/SyntheticEvents.ts +10 -37
- package/front_end/models/trace/insights/RenderBlocking.ts +3 -1
- package/front_end/models/trace/lantern/simulation/Simulator.ts +4 -0
- package/front_end/models/trace/lantern/types/Lantern.ts +1 -0
- package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +92 -0
- package/front_end/panels/accessibility/SourceOrderView.ts +1 -1
- package/front_end/panels/accessibility/accessibilityAnnouncementRecordingListView.css +3 -1
- package/front_end/panels/accessibility/accessibilityAnnouncementRecordingView.css +12 -1
- package/front_end/panels/application/ApplicationPanelSidebar.ts +90 -0
- package/front_end/panels/application/StorageView.ts +348 -254
- package/front_end/panels/application/SubAppsView.ts +159 -0
- package/front_end/panels/application/application.ts +2 -0
- package/front_end/panels/application/preloading/PreloadingView.ts +360 -336
- package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +3 -3
- package/front_end/panels/application/preloading/components/PreloadingGrid.ts +6 -3
- package/front_end/panels/application/preloading/components/RuleSetGrid.ts +17 -17
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -2
- package/front_end/panels/application/preloading/preloadingView.css +12 -4
- package/front_end/panels/application/preloading/preloadingViewDropDown.css +1 -1
- package/front_end/panels/application/storageView.css +16 -21
- package/front_end/panels/application/subAppsView.css +21 -0
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +2 -2
- package/front_end/panels/browser_debugger/browser_debugger-meta.ts +6 -8
- package/front_end/panels/comments/CommentsPane.ts +26 -9
- package/front_end/panels/comments/commentsPane.css +25 -6
- package/front_end/panels/common/CommentThreadWidget.ts +2 -2
- package/front_end/panels/common/CommentsOverlayWidget.ts +94 -35
- package/front_end/panels/common/commentThreadWidget.css +17 -0
- package/front_end/panels/common/commentsOverlay.css +5 -10
- package/front_end/panels/common/common-meta.ts +11 -1
- package/front_end/panels/elements/ClassesPaneWidget.ts +133 -89
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +7 -33
- package/front_end/panels/elements/DOMTreeElementWidget.ts +3 -1
- package/front_end/panels/elements/DOMTreeWidget.ts +19 -3
- package/front_end/panels/elements/ElementStatePaneWidget.ts +11 -1
- package/front_end/panels/elements/PropertyRenderer.ts +3 -2
- package/front_end/panels/elements/StyleEditorWidget.ts +87 -39
- package/front_end/panels/elements/StylePropertiesSection.ts +32 -5
- package/front_end/panels/elements/StylePropertyTreeElement.ts +227 -162
- package/front_end/panels/elements/StylesSidebarPane.ts +1 -0
- package/front_end/panels/event_listeners/EventListenersView.ts +11 -8
- package/front_end/panels/layer_viewer/Layers3DView.ts +21 -37
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -1
- package/front_end/panels/network/NetworkConfigView.ts +12 -10
- package/front_end/panels/network/NetworkDataGridNode.ts +3 -1
- package/front_end/panels/network/RequestConditionsDrawer.ts +1 -1
- package/front_end/panels/network/RequestPayloadView.ts +12 -5
- package/front_end/panels/network/networkConfigView.css +8 -8
- package/front_end/panels/profiler/HeapProfileView.ts +28 -6
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +7 -3
- package/front_end/panels/protocol_monitor/JSONEditor.ts +0 -1
- package/front_end/panels/recorder/RecorderPanel.ts +2 -2
- package/front_end/panels/screencast/ScreencastView.ts +3 -6
- package/front_end/panels/security/SecurityPanelSidebar.ts +0 -31
- package/front_end/panels/settings/SettingsScreen.ts +1 -1
- package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +9 -16
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +358 -345
- package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +136 -121
- package/front_end/panels/sources/NavigatorView.ts +105 -45
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +8 -5
- package/front_end/panels/sources/SourcesNavigator.ts +421 -213
- package/front_end/panels/sources/SourcesPanel.ts +9 -5
- package/front_end/panels/sources/TabbedEditorContainer.ts +41 -18
- package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +10 -5
- package/front_end/panels/sources/sources-meta.ts +4 -15
- package/front_end/panels/sources/sourcesNavigator.css +5 -0
- package/front_end/panels/timeline/ModificationsManager.ts +0 -2
- package/front_end/panels/timeline/README.md +2 -0
- package/front_end/panels/timeline/TimelineCommentContext.ts +171 -0
- package/front_end/panels/timeline/TimelineCommentController.ts +168 -30
- package/front_end/panels/timeline/TimelinePanel.ts +4 -0
- package/front_end/panels/timeline/components/IgnoreListSetting.ts +1 -1
- package/front_end/panels/timeline/timeline.ts +2 -0
- package/front_end/panels/timeline/utils/Treemap.ts +8 -0
- package/front_end/panels/webauthn/WebauthnPane.ts +15 -13
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +113 -3
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +21311 -20981
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts +36 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.js +22 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js +20 -18
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.d.ts +20 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts +40 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js +3 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.js +41 -5
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/locators/locators.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPRequest.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPRequest.js +23 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Input.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts +3 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js +13 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.js +18 -11
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/Request.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.js +8 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js +24 -12
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.js +13 -7
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/EmulationManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js +5 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.d.ts +22 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.js +75 -9
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkEventManager.d.ts +18 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkEventManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkEventManager.js +8 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkEventManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.js +65 -26
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/NetworkManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts +3 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js +19 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.js +4 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.js +4 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Target.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js +95 -8
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/TargetManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.d.ts +0 -8
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js +8 -24
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js +5 -4
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserWebSocketTransport.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts +9 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/ConnectOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/WaitTask.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/WaitTask.js +10 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/WaitTask.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts +10 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.js +30 -5
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/util.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js +33 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js +1 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.d.ts +4 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/NodeWebSocketTransport.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/encoding.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/encoding.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +113 -3
- package/front_end/third_party/puppeteer/package/package.json +4 -4
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +42 -0
- package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +25 -22
- package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +22 -2
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +45 -2
- package/front_end/third_party/puppeteer/package/src/api/locators/locators.ts +79 -32
- package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +32 -12
- package/front_end/third_party/puppeteer/package/src/bidi/Input.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +18 -2
- package/front_end/third_party/puppeteer/package/src/bidi/core/Request.ts +21 -13
- package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +12 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +37 -16
- package/front_end/third_party/puppeteer/package/src/cdp/EmulationManager.ts +14 -11
- package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +7 -1
- package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +101 -14
- package/front_end/third_party/puppeteer/package/src/cdp/NetworkEventManager.ts +26 -6
- package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +111 -29
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +37 -1
- package/front_end/third_party/puppeteer/package/src/cdp/ScreenRecording.ts +5 -4
- package/front_end/third_party/puppeteer/package/src/cdp/Target.ts +5 -0
- package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +122 -7
- package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +13 -33
- package/front_end/third_party/puppeteer/package/src/common/BrowserWebSocketTransport.ts +10 -5
- package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +10 -0
- package/front_end/third_party/puppeteer/package/src/common/WaitTask.ts +12 -0
- package/front_end/third_party/puppeteer/package/src/common/util.ts +39 -5
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/injected/Poller.ts +35 -3
- package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +4 -2
- package/front_end/third_party/puppeteer/package/src/node/NodeWebSocketTransport.ts +5 -0
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/encoding.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/ui/comments/CommentAnchorResolver.ts +3 -0
- package/front_end/ui/comments/CommentOverlayManager.ts +2 -4
- package/front_end/ui/components/lists/List.ts +14 -1
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +1 -1
- package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +23 -14
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +3 -0
- package/front_end/ui/helpers/OpenInNewTab.ts +8 -0
- package/front_end/ui/legacy/LinkContextMenuProvider.ts +1 -1
- package/front_end/ui/legacy/ListWidget.ts +14 -18
- package/front_end/ui/legacy/TabbedPane.ts +46 -3
- package/front_end/ui/legacy/Toolbar.ts +0 -1
- package/front_end/ui/legacy/Treeoutline.ts +10 -3
- package/front_end/ui/legacy/UIUtils.ts +5 -2
- package/front_end/ui/legacy/components/inline_editor/Swatches.ts +19 -6
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +20 -11
- package/front_end/ui/legacy/components/source_frame/XMLView.ts +27 -7
- package/front_end/ui/visual_logging/KnownContextValues.ts +5 -0
- package/package.json +1 -1
|
@@ -3,14 +3,19 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
/* eslint-disable @devtools/no-imperative-dom-api */
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import '../../ui/kit/kit.js';
|
|
7
|
+
|
|
8
|
+
import * as Elements from '../../models/elements/elements.js';
|
|
7
9
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
10
|
+
import {Directives, html, type LitTemplate} from '../../ui/lit/lit.js';
|
|
11
|
+
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
8
12
|
|
|
9
13
|
import type * as ElementsComponents from './components/components.js';
|
|
10
14
|
import type {StylePropertiesSection} from './StylePropertiesSection.js';
|
|
11
15
|
import {StylePropertyTreeElement} from './StylePropertyTreeElement.js';
|
|
12
16
|
import type {StylesContainer} from './StylesContainer.js';
|
|
13
17
|
|
|
18
|
+
const {ref} = Directives;
|
|
14
19
|
type PropertySelectedEvent = ElementsComponents.StylePropertyEditor.PropertySelectedEvent;
|
|
15
20
|
type PropertyDeselectedEvent = ElementsComponents.StylePropertyEditor.PropertyDeselectedEvent;
|
|
16
21
|
|
|
@@ -34,6 +39,7 @@ export class StyleEditorWidget extends UI.Widget.VBox {
|
|
|
34
39
|
private editorContainer: HTMLElement;
|
|
35
40
|
|
|
36
41
|
#triggerKey: string|undefined;
|
|
42
|
+
#initialProperties: Map<string, string>|null = null;
|
|
37
43
|
|
|
38
44
|
constructor() {
|
|
39
45
|
super({useShadowDom: true});
|
|
@@ -72,6 +78,10 @@ export class StyleEditorWidget extends UI.Widget.VBox {
|
|
|
72
78
|
bindContext(stylesContainer: StylesContainer, section: StylePropertiesSection): void {
|
|
73
79
|
this.stylesContainer = stylesContainer;
|
|
74
80
|
this.section = section;
|
|
81
|
+
if (!this.#initialProperties) {
|
|
82
|
+
this.#initialProperties =
|
|
83
|
+
this.editor ? getAuthoredStyles(section, this.editor.getEditableProperties()) : new Map();
|
|
84
|
+
}
|
|
75
85
|
this.editor?.addEventListener('propertyselected', this.onPropertySelected);
|
|
76
86
|
this.editor?.addEventListener('propertydeselected', this.onPropertyDeselected);
|
|
77
87
|
}
|
|
@@ -91,6 +101,27 @@ export class StyleEditorWidget extends UI.Widget.VBox {
|
|
|
91
101
|
this.editor?.removeEventListener('propertydeselected', this.onPropertyDeselected);
|
|
92
102
|
}
|
|
93
103
|
|
|
104
|
+
#trackChanges(): void {
|
|
105
|
+
const initialProperties = this.#initialProperties;
|
|
106
|
+
this.#initialProperties = null;
|
|
107
|
+
if (!this.editor || !this.section || !this.stylesContainer || !initialProperties) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const finalProperties = getAuthoredStyles(this.section, this.editor.getEditableProperties());
|
|
111
|
+
const node = this.stylesContainer.node() ?? this.section.matchedStyles.node();
|
|
112
|
+
const ruleHeader = this.section.headerText();
|
|
113
|
+
for (const {propertyName} of this.editor.getEditableProperties()) {
|
|
114
|
+
const oldValue = initialProperties.get(propertyName) ?? '';
|
|
115
|
+
const newValue = finalProperties.get(propertyName) ?? '';
|
|
116
|
+
Elements.StyleChanges.trackStylePropertyEdit(this.stylesContainer.changeTracker, node, {
|
|
117
|
+
ruleHeader,
|
|
118
|
+
oldName: oldValue ? propertyName : '',
|
|
119
|
+
oldValue,
|
|
120
|
+
newName: newValue ? propertyName : '',
|
|
121
|
+
newValue,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
94
125
|
async render(): Promise<void> {
|
|
95
126
|
if (!this.editor) {
|
|
96
127
|
return;
|
|
@@ -122,46 +153,63 @@ export class StyleEditorWidget extends UI.Widget.VBox {
|
|
|
122
153
|
}
|
|
123
154
|
}
|
|
124
155
|
|
|
125
|
-
static createTriggerButton(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const
|
|
129
|
-
triggerButton
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
156
|
+
static createTriggerButton(stylesContainer: StylesContainer, section: StylePropertiesSection,
|
|
157
|
+
editorClass: {new(): Editor}, buttonTitle: string, triggerKey: string,
|
|
158
|
+
jslogContext: string, onClick?: () => void): LitTemplate {
|
|
159
|
+
const popoverHelper = stylesContainer.swatchPopoverHelper();
|
|
160
|
+
let triggerButton: Element|undefined;
|
|
161
|
+
// clang-format off
|
|
162
|
+
return html`<devtools-icon
|
|
163
|
+
${ref(e => {
|
|
164
|
+
triggerButton = e;
|
|
165
|
+
if (e && popoverHelper.isShowing(StyleEditorWidget.instance()) &&
|
|
166
|
+
StyleEditorWidget.instance().getTriggerKey() === triggerKey) {
|
|
167
|
+
popoverHelper.setAnchorElement(e);
|
|
168
|
+
}
|
|
169
|
+
})}
|
|
170
|
+
name="flex-wrap"
|
|
171
|
+
class="styles-pane-button"
|
|
172
|
+
title=${buttonTitle}
|
|
173
|
+
role="button"
|
|
174
|
+
tabindex="-1"
|
|
175
|
+
jslog=${VisualLogging.showStyleEditor(jslogContext).track({click: true})}
|
|
176
|
+
@click=${async (event: Event) => {
|
|
177
|
+
event.stopPropagation();
|
|
178
|
+
onClick?.();
|
|
179
|
+
if (!triggerButton) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const widget = StyleEditorWidget.instance();
|
|
183
|
+
widget.element.classList.toggle('with-padding', true);
|
|
184
|
+
widget.setEditor(editorClass);
|
|
185
|
+
widget.bindContext(stylesContainer, section);
|
|
186
|
+
widget.setTriggerKey(triggerKey);
|
|
187
|
+
await widget.render();
|
|
188
|
+
widget.focus();
|
|
189
|
+
const scrollerElement = triggerButton.enclosingNodeOrSelfWithClass('style-panes-wrapper');
|
|
190
|
+
const onScroll = (): void => {
|
|
191
|
+
popoverHelper.hide(true);
|
|
192
|
+
};
|
|
193
|
+
const onStylesUpdateCompleted = widget.requestUpdate.bind(widget);
|
|
194
|
+
stylesContainer.addStyleUpdateListener(onStylesUpdateCompleted);
|
|
195
|
+
popoverHelper.show(widget, triggerButton, () => {
|
|
196
|
+
widget.#trackChanges();
|
|
197
|
+
widget.unbindContext();
|
|
198
|
+
if (scrollerElement) {
|
|
199
|
+
scrollerElement.removeEventListener('scroll', onScroll);
|
|
200
|
+
}
|
|
201
|
+
stylesContainer.removeStyleUpdateListener(onStylesUpdateCompleted);
|
|
202
|
+
});
|
|
150
203
|
if (scrollerElement) {
|
|
151
|
-
scrollerElement.
|
|
204
|
+
scrollerElement.addEventListener('scroll', onScroll);
|
|
152
205
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
// Stop propagation to prevent the property editor from being activated.
|
|
161
|
-
event.stopPropagation();
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
return triggerButton;
|
|
206
|
+
}}
|
|
207
|
+
@mouseup=${(event: Event) => {
|
|
208
|
+
// Stop propagation to prevent the property editor from being activated.
|
|
209
|
+
event.stopPropagation();
|
|
210
|
+
}}
|
|
211
|
+
></devtools-icon>`;
|
|
212
|
+
// clang-format on
|
|
165
213
|
}
|
|
166
214
|
}
|
|
167
215
|
|
|
@@ -44,6 +44,7 @@ import * as TextUtils from '../../core/text_utils/text_utils.js';
|
|
|
44
44
|
import * as Protocol from '../../generated/protocol.js';
|
|
45
45
|
import * as Badges from '../../models/badges/badges.js';
|
|
46
46
|
import * as Bindings from '../../models/bindings/bindings.js';
|
|
47
|
+
import * as Elements from '../../models/elements/elements.js';
|
|
47
48
|
import * as Buttons from '../../ui/components/buttons/buttons.js';
|
|
48
49
|
import * as Tooltips from '../../ui/components/tooltips/tooltips.js';
|
|
49
50
|
import {createIcon, type Icon} from '../../ui/kit/kit.js';
|
|
@@ -1993,12 +1994,18 @@ export class StylePropertiesSection {
|
|
|
1993
1994
|
}
|
|
1994
1995
|
|
|
1995
1996
|
setHeaderText(rule: SDK.CSSRule.CSSRule, newContent: string): Promise<void> {
|
|
1996
|
-
function onSelectorsUpdated(
|
|
1997
|
-
|
|
1997
|
+
function onSelectorsUpdated(this: StylePropertiesSection, rule: SDK.CSSRule.CSSStyleRule, oldSelector: string,
|
|
1998
|
+
success: boolean): Promise<void> {
|
|
1998
1999
|
if (!success) {
|
|
1999
2000
|
return Promise.resolve();
|
|
2000
2001
|
}
|
|
2001
2002
|
|
|
2003
|
+
Elements.StyleChanges.trackStyleSelectorChange(
|
|
2004
|
+
this.stylesContainer.changeTracker,
|
|
2005
|
+
this.stylesContainer.node() ?? this.matchedStyles.node(),
|
|
2006
|
+
oldSelector,
|
|
2007
|
+
newContent,
|
|
2008
|
+
);
|
|
2002
2009
|
Badges.UserBadges.instance().recordAction(Badges.BadgeAction.CSS_RULE_MODIFIED);
|
|
2003
2010
|
return this.matchedStyles.recomputeMatchingSelectors(rule).then(updateSourceRanges.bind(this, rule));
|
|
2004
2011
|
}
|
|
@@ -2017,8 +2024,9 @@ export class StylePropertiesSection {
|
|
|
2017
2024
|
if (!oldSelectorRange) {
|
|
2018
2025
|
return Promise.resolve();
|
|
2019
2026
|
}
|
|
2027
|
+
const oldSelector = rule.selectorText();
|
|
2020
2028
|
this.#customHeaderText = undefined;
|
|
2021
|
-
return rule.setSelectorText(newContent).then(onSelectorsUpdated.bind(this, rule,
|
|
2029
|
+
return rule.setSelectorText(newContent).then(onSelectorsUpdated.bind(this, rule, oldSelector));
|
|
2022
2030
|
}
|
|
2023
2031
|
|
|
2024
2032
|
protected editingSelectorCommittedForTest(): void {
|
|
@@ -2117,6 +2125,11 @@ export class BlankStylePropertiesSection extends StylePropertiesSection {
|
|
|
2117
2125
|
function onAddedToCascade(this: BlankStylePropertiesSection, newRule: SDK.CSSRule.CSSStyleRule): void {
|
|
2118
2126
|
const doesSelectorAffectSelectedNode = this.matchedStyles.getMatchingSelectors(newRule).length > 0;
|
|
2119
2127
|
this.makeNormal(newRule);
|
|
2128
|
+
Elements.StyleChanges.trackStyleRuleAdded(
|
|
2129
|
+
this.stylesContainer.changeTracker,
|
|
2130
|
+
this.stylesContainer.node() ?? this.matchedStyles.node(),
|
|
2131
|
+
newRule.selectorText(),
|
|
2132
|
+
);
|
|
2120
2133
|
|
|
2121
2134
|
if (!doesSelectorAffectSelectedNode) {
|
|
2122
2135
|
this.propertiesTreeOutline.element.classList.add('no-affect');
|
|
@@ -2186,7 +2199,14 @@ export class RegisteredPropertiesSection extends StylePropertiesSection {
|
|
|
2186
2199
|
if (!oldRange) {
|
|
2187
2200
|
return;
|
|
2188
2201
|
}
|
|
2202
|
+
const oldName = rule.propertyName().text;
|
|
2189
2203
|
if (await rule.setPropertyName(newContent)) {
|
|
2204
|
+
Elements.StyleChanges.trackPropertyRuleNameChange(
|
|
2205
|
+
this.stylesContainer.changeTracker,
|
|
2206
|
+
this.stylesContainer.node() ?? this.matchedStyles.node(),
|
|
2207
|
+
oldName,
|
|
2208
|
+
newContent,
|
|
2209
|
+
);
|
|
2190
2210
|
this.stylesContainer.forceUpdate();
|
|
2191
2211
|
}
|
|
2192
2212
|
}
|
|
@@ -2335,10 +2355,16 @@ export class KeyframePropertiesSection extends StylePropertiesSection {
|
|
|
2335
2355
|
}
|
|
2336
2356
|
|
|
2337
2357
|
override setHeaderText(rule: SDK.CSSRule.CSSRule, newContent: string): Promise<void> {
|
|
2338
|
-
function updateSourceRanges(this: KeyframePropertiesSection, success: boolean): void {
|
|
2358
|
+
function updateSourceRanges(this: KeyframePropertiesSection, oldKey: string, success: boolean): void {
|
|
2339
2359
|
if (!success) {
|
|
2340
2360
|
return;
|
|
2341
2361
|
}
|
|
2362
|
+
Elements.StyleChanges.trackKeyframeKeyChange(
|
|
2363
|
+
this.stylesContainer.changeTracker,
|
|
2364
|
+
this.stylesContainer.node() ?? this.matchedStyles.node(),
|
|
2365
|
+
oldKey,
|
|
2366
|
+
newContent,
|
|
2367
|
+
);
|
|
2342
2368
|
this.stylesContainer.refreshUpdate(this);
|
|
2343
2369
|
}
|
|
2344
2370
|
|
|
@@ -2349,7 +2375,8 @@ export class KeyframePropertiesSection extends StylePropertiesSection {
|
|
|
2349
2375
|
if (!oldRange) {
|
|
2350
2376
|
return Promise.resolve();
|
|
2351
2377
|
}
|
|
2352
|
-
|
|
2378
|
+
const oldKey = rule.key().text;
|
|
2379
|
+
return rule.setKeyText(newContent).then(updateSourceRanges.bind(this, oldKey));
|
|
2353
2380
|
}
|
|
2354
2381
|
|
|
2355
2382
|
override isPropertyInherited(_propertyName: string): boolean {
|