chrome-devtools-frontend 1.0.1690116 → 1.0.1695017
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/devtools-model-management/SKILL.md +3 -3
- package/.agents/skills/foundation-test-migration/SKILL.md +2 -2
- package/.agents/skills/merging-devtools-module/SKILL.md +5 -5
- package/AUTHORS +3 -0
- package/config/typescript/tsconfig.base.json +1 -0
- package/docs/get_the_code.md +4 -9
- package/front_end/Images/src/comment-mode-cursor.svg +23 -0
- package/front_end/Tests.js +1 -1
- package/front_end/application_tokens.css +5 -0
- package/front_end/core/common/ColorConverter.ts +3 -3
- package/front_end/core/host/UserMetrics.ts +27 -0
- package/front_end/core/protocol_client/DevToolsCDPConnection.ts +0 -46
- package/front_end/core/protocol_client/InspectorBackend.ts +6 -6
- package/front_end/core/root/Runtime.ts +1 -0
- package/front_end/core/sdk/CSSLocation.ts +32 -0
- package/front_end/core/sdk/CSSModel.ts +2 -22
- package/front_end/core/sdk/CSSQuery.ts +2 -1
- package/front_end/core/sdk/CSSRule.ts +29 -0
- package/front_end/core/sdk/DebuggerModel.ts +5 -1
- package/front_end/core/sdk/NetworkManager.ts +2 -0
- package/front_end/core/sdk/NetworkRequest.ts +63 -4
- package/front_end/core/sdk/NetworkRequestAccess.ts +191 -0
- package/front_end/core/sdk/ResourceTreeModel.ts +72 -23
- package/front_end/core/sdk/SecurityOrigin.ts +97 -12
- package/front_end/core/sdk/Target.ts +18 -0
- package/front_end/core/sdk/sdk.ts +4 -0
- package/front_end/entrypoints/main/MainImpl.ts +8 -1
- package/front_end/foundation/Universe.ts +14 -11
- package/front_end/generated/Deprecation.ts +8 -0
- package/front_end/generated/InspectorBackendCommands.ts +9 -8
- package/front_end/generated/SupportedCSSProperties.ts +14 -4
- package/front_end/generated/protocol.ts +24 -0
- package/front_end/models/ai_assistance/AiAgent2.ts +46 -10
- package/front_end/models/ai_assistance/AiConversation.ts +35 -24
- package/front_end/models/ai_assistance/README.md +5 -3
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +1 -0
- package/front_end/models/ai_assistance/agents/AiAgent.ts +28 -34
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +13 -17
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +5 -3
- package/front_end/models/ai_assistance/agents/StorageAgent.ts +16 -10
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +3 -4
- package/front_end/models/ai_assistance/ai_assistance.ts +0 -2
- package/front_end/models/ai_assistance/contexts/AccessibilityContext.ts +11 -2
- package/front_end/models/ai_assistance/contexts/DOMNodeContext.ts +17 -5
- package/front_end/models/ai_assistance/contexts/FileContext.ts +13 -6
- package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +52 -25
- package/front_end/models/ai_assistance/contexts/RequestContext.ts +18 -34
- package/front_end/models/ai_assistance/contexts/StorageContext.ts +14 -3
- package/front_end/models/ai_assistance/data_formatters/FileFormatter.ts +2 -5
- package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +135 -58
- package/front_end/models/ai_assistance/tools/CookieUtils.ts +25 -35
- package/front_end/models/ai_assistance/tools/DOMStorageUtils.ts +6 -3
- package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +9 -2
- package/front_end/models/ai_assistance/tools/GetCookieValues.ts +1 -1
- package/front_end/models/ai_assistance/tools/GetElementAccessibilityDetails.ts +3 -2
- package/front_end/models/ai_assistance/tools/GetFunctionCode.ts +3 -5
- package/front_end/models/ai_assistance/tools/GetInsightDetails.ts +1 -1
- package/front_end/models/ai_assistance/tools/GetNetworkRequestDetails.ts +8 -11
- package/front_end/models/ai_assistance/tools/GetResourceContent.ts +2 -4
- package/front_end/models/ai_assistance/tools/GetSourceContent.ts +6 -13
- package/front_end/models/ai_assistance/tools/GetStorageBreakdown.ts +1 -1
- package/front_end/models/ai_assistance/tools/GetStorageValues.ts +9 -9
- package/front_end/models/ai_assistance/tools/GetStyles.ts +3 -2
- package/front_end/models/ai_assistance/tools/ListCookies.ts +1 -1
- package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +6 -14
- package/front_end/models/ai_assistance/tools/ListPageOrigins.ts +10 -15
- package/front_end/models/ai_assistance/tools/ListSources.ts +5 -7
- package/front_end/models/ai_assistance/tools/ListStorageKeys.ts +9 -9
- package/front_end/models/ai_assistance/tools/README.md +4 -2
- package/front_end/models/ai_assistance/tools/ResolveDevtoolsNodePath.ts +3 -2
- package/front_end/models/ai_assistance/tools/Tool.ts +27 -3
- package/front_end/models/comment_manager/CD4ABridge.ts +128 -0
- package/front_end/models/comment_manager/CommentManager.ts +50 -8
- package/front_end/models/comment_manager/comment_manager.ts +2 -0
- package/front_end/models/emulation/DeviceModeModel.ts +37 -47
- package/front_end/models/javascript_metadata/NativeFunctions.ts +9 -1
- package/front_end/models/live-metrics/web-vitals-injected/README.md +1 -1
- package/front_end/models/source_map_scopes/NamesResolver.ts +9 -7
- package/front_end/models/trace/ModelImpl.ts +2 -0
- package/front_end/models/trace/Processor.ts +6 -4
- package/front_end/models/trace/handlers/LayerTreeHandler.ts +3 -3
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +1 -1
- package/front_end/models/trace/helpers/SyntheticEvents.ts +23 -1
- package/front_end/models/trace/types/Configuration.ts +7 -0
- package/front_end/models/trace/types/TraceEvents.ts +20 -4
- package/front_end/panels/accessibility/ARIAAttributesView.ts +3 -0
- package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingListView.ts +177 -0
- package/front_end/panels/accessibility/accessibility.ts +2 -0
- package/front_end/panels/accessibility/accessibilityAnnouncementRecordingListView.css +33 -0
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +25 -15
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +6 -35
- package/front_end/panels/ai_assistance/components/DisabledWidget.ts +4 -3
- package/front_end/panels/ai_assistance/components/chatMessage.css +3 -1
- package/front_end/panels/animation/AnimationTimeline.ts +1 -0
- package/front_end/panels/application/CrashReportContextView.ts +0 -1
- package/front_end/panels/application/FrameDetailsView.ts +5 -4
- package/front_end/panels/application/IndexedDBViews.ts +4 -4
- package/front_end/panels/application/components/BackForwardCacheView.ts +1 -1
- package/front_end/panels/application/components/EndpointsGrid.ts +2 -1
- package/front_end/panels/application/components/PermissionsPolicySection.ts +1 -1
- package/front_end/panels/application/components/ServiceWorkerRouterView.ts +1 -1
- package/front_end/panels/application/components/TrustTokensView.ts +1 -1
- package/front_end/panels/application/indexedDBViews.css +0 -14
- package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +2 -1
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +2 -1
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +1 -1
- package/front_end/panels/common/CPUThrottlingOption.ts +12 -6
- package/front_end/panels/common/DOMLinkifier.ts +1 -1
- package/front_end/panels/common/ExtensionView.ts +2 -1
- package/front_end/panels/console/ConsoleContextSelector.ts +12 -5
- package/front_end/panels/console/ConsolePinPane.ts +4 -2
- package/front_end/panels/console/ConsoleSidebar.ts +6 -2
- package/front_end/panels/console/ConsoleViewMessage.ts +12 -8
- package/front_end/panels/console/PromptBuilder.ts +1 -1
- package/front_end/panels/coverage/CoverageListView.ts +1 -1
- package/front_end/panels/coverage/CoverageModel.ts +6 -4
- package/front_end/panels/coverage/coverageView.css +8 -8
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +13 -14
- package/front_end/panels/css_overview/CSSOverviewPanel.ts +3 -3
- package/front_end/panels/css_overview/CSSOverviewProcessingView.ts +2 -2
- package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +3 -3
- package/front_end/panels/css_overview/CSSOverviewStartView.ts +3 -3
- package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +1 -1
- package/front_end/panels/developer_resources/developerResourcesView.css +3 -3
- package/front_end/panels/elements/ComputedStyleWidget.ts +1 -1
- package/front_end/panels/elements/ElementsTreeElement.ts +43 -15
- package/front_end/panels/elements/ElementsTreeOutline.ts +185 -109
- package/front_end/panels/elements/MetricsSidebarPane.ts +1 -1
- package/front_end/panels/elements/PropertyNameCategories.ts +1 -1
- package/front_end/panels/elements/ShortcutTreeElement.ts +6 -1
- package/front_end/panels/elements/StandaloneStylesContainer.ts +1 -1
- package/front_end/panels/elements/StylePropertiesSection.ts +2 -35
- package/front_end/panels/elements/StylesSidebarPane.ts +3 -2
- package/front_end/panels/elements/components/CSSPropertyIconResolver.ts +5 -4
- package/front_end/panels/elements/components/StylePropertyEditor.ts +161 -148
- package/front_end/panels/elements/components/computedStyleProperty.css +5 -5
- package/front_end/panels/elements/components/computedStyleTrace.css +5 -5
- package/front_end/panels/elements/components/cssHintDetailsView.css +1 -1
- package/front_end/panels/elements/components/cssPropertyDocsView.css +3 -3
- package/front_end/panels/elements/components/cssVariableValueView.css +4 -4
- package/front_end/panels/elements/components/elementsBreadcrumbs.css +3 -3
- package/front_end/panels/elements/components/elementsTreeExpandButton.css +5 -5
- package/front_end/panels/elements/components/queryContainer.css +2 -2
- package/front_end/panels/elements/elementsTreeOutline.css +20 -4
- package/front_end/panels/emulation/MediaQueryInspector.ts +2 -1
- package/front_end/panels/event_listeners/eventListenersView.css +1 -1
- package/front_end/panels/issues/AffectedElementsView.ts +3 -0
- package/front_end/panels/issues/AffectedLazyLoadImagesView.ts +1 -1
- package/front_end/panels/issues/issues.ts +2 -0
- package/front_end/panels/layer_viewer/LayerDetailsView.ts +12 -10
- package/front_end/panels/layer_viewer/LayerTreeOutline.ts +1 -0
- package/front_end/panels/layer_viewer/Layers3DView.ts +13 -11
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +1 -1
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspectorUtils.ts +2 -2
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplayUtils.ts +1 -1
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -1
- package/front_end/panels/linear_memory_inspector/components/linearMemoryHighlightChipList.css +11 -11
- package/front_end/panels/linear_memory_inspector/components/linearMemoryInspector.css +2 -2
- package/front_end/panels/linear_memory_inspector/components/linearMemoryNavigator.css +1 -1
- package/front_end/panels/linear_memory_inspector/components/linearMemoryValueInterpreter.css +5 -5
- package/front_end/panels/linear_memory_inspector/components/linearMemoryViewer.css +6 -6
- package/front_end/panels/linear_memory_inspector/components/valueInterpreterDisplay.css +6 -6
- package/front_end/panels/linear_memory_inspector/components/valueInterpreterSettings.css +2 -2
- package/front_end/panels/media/PlayerPropertiesView.ts +1 -1
- package/front_end/panels/media/TickingFlameChart.ts +3 -2
- package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +2 -1
- package/front_end/panels/mobile_throttling/ThrottlingManager.ts +1 -1
- package/front_end/panels/mobile_throttling/ThrottlingPresets.ts +2 -1
- package/front_end/panels/network/NetworkDataGridNode.ts +11 -9
- package/front_end/panels/network/NetworkLogView.ts +4 -1
- package/front_end/panels/network/NetworkLogViewColumns.ts +5 -2
- package/front_end/panels/network/RequestConditionsDrawer.ts +2 -2
- package/front_end/panels/network/RequestHeadersView.ts +47 -11
- package/front_end/panels/network/RequestPayloadView.ts +1 -1
- package/front_end/panels/network/RequestResponseView.ts +1 -1
- package/front_end/panels/network/RequestTimingView.ts +1 -1
- package/front_end/panels/network/ShowMoreDetailsWidget.ts +1 -1
- package/front_end/panels/network/components/RequestHeadersView.css +12 -0
- package/front_end/panels/network/components/ResponseHeaderSection.ts +1 -1
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +3 -3
- package/front_end/panels/profiler/HeapProfileView.ts +1 -1
- package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +1 -1
- package/front_end/panels/protocol_monitor/JSONEditor.ts +1 -1
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +3 -3
- package/front_end/panels/recorder/RecordingListView.ts +0 -6
- package/front_end/panels/recorder/RecordingView.ts +0 -6
- package/front_end/panels/recorder/controlButton.css +10 -10
- package/front_end/panels/recorder/startView.css +1 -1
- package/front_end/panels/screencast/ScreencastView.ts +4 -2
- package/front_end/panels/search/SearchView.ts +1 -1
- package/front_end/panels/security/SecurityPanel.ts +46 -35
- package/front_end/panels/sources/BreakpointEditDialog.ts +1 -1
- package/front_end/panels/sources/CallStackSidebarPane.ts +1 -1
- package/front_end/panels/sources/DebuggerPausedMessage.ts +8 -6
- package/front_end/panels/sources/ProfilePlugin.ts +2 -1
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +1 -1
- package/front_end/panels/timeline/IsolateSelector.ts +1 -1
- package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +1 -1
- package/front_end/panels/timeline/NetworkTrackAppender.ts +1 -1
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +1 -1
- package/front_end/panels/timeline/TimelineFlameChartView.ts +0 -32
- package/front_end/panels/timeline/TimelineHistoryManager.ts +1 -1
- package/front_end/panels/timeline/TimelinePaintProfilerView.ts +7 -3
- package/front_end/panels/timeline/TimelinePanel.ts +3 -20
- package/front_end/panels/timeline/TimelineTreeView.ts +1 -1
- package/front_end/panels/timeline/TimelineUIUtils.ts +4 -4
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +4 -3
- package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -1
- package/front_end/panels/timeline/components/NetworkRequestDetails.ts +25 -24
- package/front_end/panels/timeline/components/RelatedInsightChips.ts +4 -3
- package/front_end/panels/timeline/components/Sidebar.ts +1 -1
- package/front_end/panels/timeline/components/SidebarAnnotationsTab.ts +4 -3
- package/front_end/panels/timeline/components/cwvMetrics.css +2 -2
- package/front_end/panels/timeline/components/insights/checklist.css +1 -1
- package/front_end/panels/timeline/components/insights/table.css +3 -3
- package/front_end/panels/timeline/overlays/components/entriesLinkOverlay.css +4 -4
- package/front_end/panels/timeline/overlays/components/entryLabelOverlay.css +4 -4
- package/front_end/panels/timeline/overlays/components/timeRangeOverlay.css +2 -2
- package/front_end/panels/timeline/overlays/components/timespanBreakdownOverlay.css +4 -4
- package/front_end/panels/timeline/timelinePanel.css +0 -74
- package/front_end/panels/timeline/utils/Helpers.ts +1 -1
- package/front_end/panels/timeline/utils/ImageCache.ts +5 -3
- package/front_end/panels/web_audio/WebAudioView.ts +3 -3
- package/front_end/panels/web_audio/webAudio.css +5 -5
- package/front_end/panels/webauthn/WebauthnPane.ts +5 -11
- package/front_end/third_party/acorn/acorn.ts +3 -3
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/chromium/ahem/ahem.d.ts +1 -0
- package/front_end/third_party/csp_evaluator/package/csp.ts +4 -4
- package/front_end/third_party/csp_evaluator/package/parser.ts +3 -1
- package/front_end/third_party/csp_evaluator/package/tsconfig.json +1 -0
- package/front_end/third_party/csp_evaluator/package/utils.ts +1 -1
- package/front_end/third_party/diff/DiffWrapper.ts +1 -8
- package/front_end/third_party/diff/diff_match_patch.d.ts +10 -0
- package/front_end/third_party/json5/json5.ts +2 -2
- 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 +183 -4
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +708 -122
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts +85 -3
- 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 +84 -11
- 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/ScreenRecording.d.ts +75 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/ScreenRecording.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/ScreenRecording.js +102 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/ScreenRecording.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/api.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/api.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/api.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/api/api.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Page.d.ts +6 -1
- 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 +7 -0
- 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/ScreenRecording.d.ts +31 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ScreenRecording.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ScreenRecording.js +138 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/ScreenRecording.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/bidi.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/bidi.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/bidi.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/bidi.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.d.ts +6 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.js +23 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Page.d.ts +6 -1
- 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 +7 -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 +31 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.js +131 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/ScreenRecording.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/cdp.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/cdp.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/cdp.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/cdp.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/BrowserConnector.js +7 -4
- 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 +4 -1
- 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 -1
- 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 +42 -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/Device.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Device.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Device.js +265 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/common/Device.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/node/BrowserLauncher.d.ts +4 -0
- 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 +24 -3
- 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 +23 -2
- 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 +49 -3
- 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/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +183 -4
- package/front_end/third_party/puppeteer/package/package.json +4 -4
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +143 -11
- package/front_end/third_party/puppeteer/package/src/api/ScreenRecording.ts +145 -0
- package/front_end/third_party/puppeteer/package/src/api/api.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +11 -0
- package/front_end/third_party/puppeteer/package/src/bidi/ScreenRecording.ts +106 -0
- package/front_end/third_party/puppeteer/package/src/bidi/bidi.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +41 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +11 -0
- package/front_end/third_party/puppeteer/package/src/cdp/ScreenRecording.ts +101 -0
- package/front_end/third_party/puppeteer/package/src/cdp/cdp.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +17 -9
- package/front_end/third_party/puppeteer/package/src/common/BrowserWebSocketTransport.ts +4 -0
- package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +46 -0
- package/front_end/third_party/puppeteer/package/src/common/Device.ts +287 -1
- package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +30 -1
- package/front_end/third_party/puppeteer/package/src/node/NodeWebSocketTransport.ts +73 -2
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +3 -0
- package/front_end/tsconfig.json +1 -2
- package/front_end/ui/comments/CommentAnchorResolver.ts +8 -3
- package/front_end/ui/comments/CommentOverlayManager.ts +53 -12
- package/front_end/ui/comments/CommentsOverlayWidget.ts +3 -3
- package/front_end/ui/comments/CommentsStatusBarPill.ts +96 -0
- package/front_end/ui/comments/comments-meta.ts +21 -0
- package/front_end/ui/comments/comments.ts +2 -0
- package/front_end/ui/comments/commentsOverlay.css +22 -3
- package/front_end/ui/components/buttons/floatingButton.css +25 -0
- package/front_end/ui/components/markdown_view/MarkdownView.ts +31 -1
- package/front_end/ui/components/srgb_overlay/SrgbOverlay.ts +1 -1
- package/front_end/ui/components/suggestion_input/SuggestionInput.ts +45 -25
- package/front_end/ui/kit/icons/Icon.ts +0 -1
- package/front_end/ui/kit/link/Link.ts +8 -1
- package/front_end/ui/legacy/ContextMenu.ts +2 -2
- package/front_end/ui/legacy/DropTarget.ts +6 -1
- package/front_end/ui/legacy/EmptyWidget.ts +1 -1
- package/front_end/ui/legacy/GlassPane.ts +1 -1
- package/front_end/ui/legacy/InspectorView.ts +17 -1
- package/front_end/ui/legacy/ShortcutRegistry.ts +2 -2
- package/front_end/ui/legacy/SplitWidget.ts +18 -3
- package/front_end/ui/legacy/StackedPane.ts +1 -1
- package/front_end/ui/legacy/StatusBar.ts +78 -0
- package/front_end/ui/legacy/TargetCrashedScreen.ts +1 -1
- package/front_end/ui/legacy/TextPrompt.ts +2 -1
- package/front_end/ui/legacy/Toolbar.ts +5 -1
- package/front_end/ui/legacy/Treeoutline.ts +91 -48
- package/front_end/ui/legacy/UIUtils.ts +8 -4
- package/front_end/ui/legacy/ViewManager.ts +1 -1
- package/front_end/ui/legacy/ViewRegistration.ts +1 -0
- package/front_end/ui/legacy/Widget.ts +1 -1
- package/front_end/ui/legacy/components/color_picker/Spectrum.ts +7 -1
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +1 -1
- package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +3 -2
- package/front_end/ui/legacy/components/data_grid/dataGrid.css +23 -23
- package/front_end/ui/legacy/components/inline_editor/AnimationTimingModel.ts +1 -1
- package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +48 -44
- package/front_end/ui/legacy/components/inline_editor/CSSAngleUtils.ts +1 -1
- package/front_end/ui/legacy/components/inline_editor/PositionAreaEditor.docs.ts +83 -0
- package/front_end/ui/legacy/components/inline_editor/PositionAreaEditor.ts +600 -0
- package/front_end/ui/legacy/components/inline_editor/animationNameSwatch.css +1 -1
- package/front_end/ui/legacy/components/inline_editor/colorMixSwatch.css +4 -4
- package/front_end/ui/legacy/components/inline_editor/cssAngleSwatch.css +3 -3
- package/front_end/ui/legacy/components/inline_editor/inline_editor.ts +2 -0
- package/front_end/ui/legacy/components/inline_editor/linkSwatch.css +1 -1
- package/front_end/ui/legacy/components/inline_editor/positionAreaEditor.css +154 -0
- package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +224 -127
- package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +10 -7
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +25 -106
- package/front_end/ui/legacy/components/object_ui/customPreviewComponent.css +7 -3
- package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +1 -1
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +0 -66
- package/front_end/ui/legacy/components/perf_ui/perf_ui.ts +0 -2
- package/front_end/ui/legacy/components/perf_ui/pieChart.css +7 -5
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +8 -5
- package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +1 -1
- package/front_end/ui/legacy/components/utils/Linkifier.ts +5 -5
- package/front_end/ui/legacy/inspectorCommon.css +41 -6
- package/front_end/ui/legacy/legacy.ts +2 -0
- package/front_end/ui/legacy/statusBar.css +18 -0
- package/front_end/ui/visual_logging/Debugging.ts +2 -1
- package/front_end/ui/visual_logging/KnownContextValues.ts +3 -1
- package/front_end/ui/visual_logging/LoggingDriver.ts +3 -3
- package/front_end/ui/visual_logging/LoggingEvents.ts +5 -5
- package/front_end/ui/visual_logging/LoggingState.ts +1 -1
- package/front_end/ui/visual_logging/visual_logging.ts +67 -56
- package/inspector_overlay/main.ts +8 -8
- package/mcp/mcp.ts +5 -0
- package/package.json +2 -8
- package/front_end/Images/generate-css-vars.js +0 -52
- package/front_end/Images/rollup.config.mjs +0 -36
- package/front_end/models/ai_assistance/AiOrigins.ts +0 -107
- package/front_end/models/live-metrics/web-vitals-injected/rollup.config.mjs +0 -20
- package/front_end/panels/recorder/injected/rollup.config.mjs +0 -20
- package/front_end/panels/timeline/EasterEgg.d.ts +0 -6
- package/front_end/panels/timeline/easter-egg-tsconfig.json +0 -8
- package/front_end/panels/timeline/enable-easter-egg.js +0 -20
- package/front_end/third_party/acorn/acorn-tsconfig.json +0 -12
- package/front_end/third_party/acorn/estree-tsconfig.json +0 -8
- package/front_end/third_party/chromium/client-variations/client-variations-tsconfig.json +0 -8
- package/front_end/third_party/codemirror/codemirror-legacy-types-tsconfig.json +0 -8
- package/front_end/third_party/codemirror/codemirror-tsconfig.json +0 -15
- package/front_end/third_party/codemirror.next/bundle-tsconfig.json +0 -24
- package/front_end/third_party/intl-messageformat/intl-messageformat-tsconfig.json +0 -16
- package/front_end/third_party/json5/json5-tsconfig.json +0 -8
- package/front_end/third_party/legacy-javascript/legacy-javascript-tsconfig.json +0 -8
- package/front_end/third_party/lighthouse/lighthouse-tsconfig.json +0 -11
- package/front_end/third_party/lighthouse/report/bundle-tsconfig.json +0 -8
- package/front_end/third_party/lit/lit-tsconfig.json +0 -15
- package/front_end/third_party/marked/marked-tsconfig.json +0 -8
- package/front_end/third_party/puppeteer-replay/puppeteer-replay-tsconfig.json +0 -8
- package/front_end/third_party/third-party-web/third-party-web-tsconfig.json +0 -8
- package/front_end/third_party/wasmparser/wasmparser-tsconfig.json +0 -9
- package/front_end/third_party/web-vitals/web-vitals-tsconfig.json +0 -47
- package/front_end/ui/legacy/components/perf_ui/BrickBreaker.ts +0 -606
- package/inspector_overlay/loadCSS.rollup.js +0 -29
|
@@ -73,7 +73,7 @@ import {ImagePreviewPopover} from './ImagePreviewPopover.js';
|
|
|
73
73
|
import {ShortcutTreeElement} from './ShortcutTreeElement.js';
|
|
74
74
|
import {TopLayerContainer} from './TopLayerContainer.js';
|
|
75
75
|
|
|
76
|
-
const {html, nothing, render, Directives: {classMap}} = Lit;
|
|
76
|
+
const {html, nothing, render, Directives: {classMap, styleMap}} = Lit;
|
|
77
77
|
|
|
78
78
|
const UIStrings = {
|
|
79
79
|
/**
|
|
@@ -129,10 +129,12 @@ interface ViewInput {
|
|
|
129
129
|
deindentSingleNode: boolean;
|
|
130
130
|
currentHighlightedNode: SDK.DOMModel.DOMNode|null;
|
|
131
131
|
hoveredNode?: SDK.DOMModel.DOMNode|null;
|
|
132
|
+
hoveredClosingTag?: boolean;
|
|
132
133
|
searchMatchNode?: SDK.DOMModel.DOMNode|null;
|
|
133
134
|
searchMatchQuery?: string|null;
|
|
134
135
|
|
|
135
136
|
selectedNode: SDK.DOMModel.DOMNode|null;
|
|
137
|
+
selectedClosingTag?: boolean;
|
|
136
138
|
|
|
137
139
|
onSelectedNodeChanged:
|
|
138
140
|
(event: Common.EventTarget.EventTargetEvent<{node: SDK.DOMModel.DOMNode | null, focus: boolean}>) => void;
|
|
@@ -140,10 +142,10 @@ interface ViewInput {
|
|
|
140
142
|
onElementCollapsed: () => void;
|
|
141
143
|
onElementExpanded: () => void;
|
|
142
144
|
|
|
143
|
-
onSelect?: (node: SDK.DOMModel.DOMNode, selectedByUser?: boolean) => void;
|
|
145
|
+
onSelect?: (node: SDK.DOMModel.DOMNode, isClosingTag?: boolean, selectedByUser?: boolean) => void;
|
|
144
146
|
onExpand?: (node: SDK.DOMModel.DOMNode, expanded: boolean) => void;
|
|
145
147
|
onContextMenu?: (node: SDK.DOMModel.DOMNode, event: MouseEvent, widget?: ElementsTreeWidget) => void;
|
|
146
|
-
onHoverNode?: (node: SDK.DOMModel.DOMNode, showInfo?: boolean) => void;
|
|
148
|
+
onHoverNode?: (node: SDK.DOMModel.DOMNode|null, showInfo?: boolean, isClosingTag?: boolean) => void;
|
|
147
149
|
onLeave?: () => void;
|
|
148
150
|
onToggleHideElement?: (node: SDK.DOMModel.DOMNode) => void;
|
|
149
151
|
onKeyDown?: (event: KeyboardEvent) => void;
|
|
@@ -157,6 +159,7 @@ interface ViewInput {
|
|
|
157
159
|
moveDirection?: string) => void;
|
|
158
160
|
nodeToEdit?: ({node: SDK.DOMModel.DOMNode}&InitialEditState)|null;
|
|
159
161
|
onInitialEditCompleted?: () => void;
|
|
162
|
+
multilineEditingNode?: SDK.DOMModel.DOMNode|null;
|
|
160
163
|
dragOverNode?: {node: SDK.DOMModel.DOMNode, isClosingTag: boolean}|null;
|
|
161
164
|
isValidDragSource?: (node: SDK.DOMModel.DOMNode) => boolean;
|
|
162
165
|
onDragStart?: (node: SDK.DOMModel.DOMNode, event: DragEvent, textContent?: string) => boolean;
|
|
@@ -520,12 +523,13 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
520
523
|
SDK.OverlayModel.OverlayModel.hideDOMNodeHighlight(SDK.TargetManager.TargetManager.instance());
|
|
521
524
|
};
|
|
522
525
|
|
|
526
|
+
// clang-format off
|
|
523
527
|
return html`
|
|
524
528
|
<li role="treeitem"
|
|
525
529
|
?selected=${isShortcutSelected}
|
|
526
530
|
?open=${isShortcutExpanded}
|
|
527
531
|
class="elements-tree-shortcut"
|
|
528
|
-
style
|
|
532
|
+
style=${styleMap({'--indent': `${computeLeftIndent(shortcutDepth, hasShortcutChildren)}px`})}
|
|
529
533
|
@select=${onShortcutSelect}
|
|
530
534
|
@expand=${onShortcutExpand}
|
|
531
535
|
@mousemove=${on(onShortcutMouseMove)}
|
|
@@ -534,34 +538,31 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
534
538
|
<div class="selection fill"></div>
|
|
535
539
|
<span class="elements-tree-shortcut-title">\u21AA ${title}</span>
|
|
536
540
|
<devtools-adorner
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
@mousedown=${(e: Event) => e.consume()}
|
|
548
|
-
${adornerRef()}>
|
|
541
|
+
.name=${ElementsComponents.AdornerManager.RegisteredAdorners.REVEAL}
|
|
542
|
+
class="adorner-reveal clickable"
|
|
543
|
+
role=button
|
|
544
|
+
tabindex=0
|
|
545
|
+
jslog=${VisualLogging.adorner('reveal').track({click: true})}
|
|
546
|
+
aria-label=${i18nString(UIStrings.reveal)}
|
|
547
|
+
@click=${on(onReveal)}
|
|
548
|
+
@keydown=${handleAdornerKeydown(onReveal)}
|
|
549
|
+
@mousedown=${(e: Event) => e.consume()}
|
|
550
|
+
${adornerRef()}>
|
|
549
551
|
<span class="adorner-with-icon">
|
|
550
552
|
<devtools-icon name="select-element"></devtools-icon>
|
|
551
553
|
<span>${ElementsComponents.AdornerManager.RegisteredAdorners.REVEAL}</span>
|
|
552
554
|
</span>
|
|
553
555
|
</devtools-adorner>
|
|
554
|
-
${
|
|
555
|
-
hasShortcutChildren ? html`
|
|
556
|
+
${hasShortcutChildren ? html`
|
|
556
557
|
<ul role="group">
|
|
557
558
|
${UI.TreeOutline.ifExpanded(html`
|
|
558
559
|
${shortcut.childShortcuts.map(child => renderShortcut(child, shortcutDepth + 1))}
|
|
559
560
|
`)}
|
|
560
561
|
</ul>
|
|
561
|
-
` :
|
|
562
|
-
nothing}
|
|
562
|
+
` : nothing}
|
|
563
563
|
</li>
|
|
564
564
|
`;
|
|
565
|
+
// clang-format on
|
|
565
566
|
};
|
|
566
567
|
|
|
567
568
|
const renderTopLayerContainer =
|
|
@@ -578,23 +579,25 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
578
579
|
input.onSelectTopLayerContainer?.(doc);
|
|
579
580
|
};
|
|
580
581
|
|
|
582
|
+
// clang-format off
|
|
581
583
|
return html`
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
584
|
+
<li role="treeitem"
|
|
585
|
+
?open=${isTopLayerExpanded}
|
|
586
|
+
class="elements-tree-top-layer-container"
|
|
587
|
+
style=${styleMap({'--indent': `${computeLeftIndent(containerDepth, true)}px`})}
|
|
588
|
+
@select=${onTopLayerSelect}
|
|
589
|
+
@expand=${onTopLayerExpand}
|
|
590
|
+
jslog=${VisualLogging.treeItem().parent('elementsTreeOutline')}>
|
|
591
|
+
<div class="selection fill"></div>
|
|
592
|
+
<span class="elements-tree-shortcut-title">#top-layer</span>
|
|
593
|
+
<ul role="group">
|
|
594
|
+
${UI.TreeOutline.ifExpanded(html`
|
|
595
|
+
${shortcuts.map(sc => renderShortcut(sc, containerDepth + 1))}
|
|
596
|
+
`)}
|
|
597
|
+
</ul>
|
|
598
|
+
</li>
|
|
599
|
+
`;
|
|
600
|
+
// clang-format on
|
|
598
601
|
};
|
|
599
602
|
|
|
600
603
|
const renderAdoptedStyleSheet = (sheet: SDK.DOMModel.AdoptedStyleSheet, depth: number): Lit.LitTemplate => {
|
|
@@ -615,7 +618,7 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
615
618
|
?selected=${isSelected}
|
|
616
619
|
?open=${isExpanded}
|
|
617
620
|
class="elements-tree-adopted-style-sheet"
|
|
618
|
-
style
|
|
621
|
+
style=${styleMap({'--indent': `${computeLeftIndent(depth, true)}px`})}
|
|
619
622
|
@select=${onSelect}
|
|
620
623
|
@expand=${onExpand}
|
|
621
624
|
jslog=${VisualLogging.treeItem('adopted-style-sheet').parent('elementsTreeOutline')}>
|
|
@@ -630,7 +633,7 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
630
633
|
${header ? html`
|
|
631
634
|
<li role="treeitem"
|
|
632
635
|
class="elements-tree-adopted-style-sheet-contents"
|
|
633
|
-
style
|
|
636
|
+
style=${styleMap({'--indent': `${computeLeftIndent(depth + 1, false)}px`})}
|
|
634
637
|
jslog=${VisualLogging.treeItem('adopted-style-sheet-contents').parent('elementsTreeOutline')}>
|
|
635
638
|
<div class="selection fill"></div>
|
|
636
639
|
${UI.Widget.widget(AdoptedStyleSheetContentsWidget, {styleSheetHeader: header})}
|
|
@@ -661,7 +664,7 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
661
664
|
<li role="treeitem"
|
|
662
665
|
?open=${isExpanded}
|
|
663
666
|
class="elements-tree-adopted-style-sheets"
|
|
664
|
-
style
|
|
667
|
+
style=${styleMap({'--indent': `${computeLeftIndent(depth, true)}px`})}
|
|
665
668
|
@select=${onSelect}
|
|
666
669
|
@expand=${onExpand}
|
|
667
670
|
jslog=${VisualLogging.treeItem('adopted-style-sheets').parent('elementsTreeOutline')}>
|
|
@@ -679,14 +682,23 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
679
682
|
|
|
680
683
|
const renderNode = (node: SDK.DOMModel.DOMNode, depth = 0): Lit.LitTemplate => {
|
|
681
684
|
const isSelected = input.selectedNode === node;
|
|
682
|
-
const
|
|
685
|
+
const isOpeningHovered =
|
|
686
|
+
(input.currentHighlightedNode === node) || (input.hoveredNode === node && !input.hoveredClosingTag);
|
|
687
|
+
const isClosingHovered = input.hoveredNode === node && Boolean(input.hoveredClosingTag);
|
|
683
688
|
const isExpanded = Boolean(
|
|
684
689
|
(input.currentHighlightedNode && isAncestorOf(node, input.currentHighlightedNode)) ||
|
|
685
690
|
(input.isNodeExpanded ?
|
|
686
691
|
input.isNodeExpanded(node) :
|
|
687
692
|
(input.expandRoot &&
|
|
688
693
|
(node === input.rootDOMNode || (input.omitRootDOMNode && node.parentNode === input.rootDOMNode)))));
|
|
689
|
-
const
|
|
694
|
+
const isEditingAsHTML = input.multilineEditingNode === node ||
|
|
695
|
+
(input.nodeToEdit?.node === node && Boolean(input.nodeToEdit.isEditAsHTML));
|
|
696
|
+
const hasChildren =
|
|
697
|
+
!isEditingAsHTML && nodeHasVisibleChildren(node, input.rootDOMNode, input.maxTreeDepth, input.omitRootDOMNode);
|
|
698
|
+
const isCollapsible = !isEditingAsHTML &&
|
|
699
|
+
!(node.nodeType() === Node.ELEMENT_NODE && node.parentNode?.nodeType() === Node.DOCUMENT_NODE &&
|
|
700
|
+
!node.parentNode.parentNode);
|
|
701
|
+
const isExpandable = hasChildren && isCollapsible;
|
|
690
702
|
const allVisibleChildren = hasChildren ? getVisibleChildren(node, input.showComments ?? true) : [];
|
|
691
703
|
const limit = input.expandedChildrenLimit ? input.expandedChildrenLimit(node) : InitialChildrenLimit;
|
|
692
704
|
const children = allVisibleChildren.slice(0, limit);
|
|
@@ -697,11 +709,14 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
697
709
|
|
|
698
710
|
const on = Lit.Directive.directive(Lit.CustomDirectives.InterceptBindingDirective);
|
|
699
711
|
|
|
700
|
-
const onSelect = (): void => {
|
|
701
|
-
input.onSelect?.(node, /* selectedByUser= */ true);
|
|
712
|
+
const onSelect = (isClosingTag = false): void => {
|
|
713
|
+
input.onSelect?.(node, isClosingTag, /* selectedByUser= */ true);
|
|
702
714
|
};
|
|
703
715
|
|
|
704
716
|
const onExpand = (event: UI.TreeOutline.TreeViewElement.ExpandEvent): void => {
|
|
717
|
+
if (isEditingAsHTML) {
|
|
718
|
+
return;
|
|
719
|
+
}
|
|
705
720
|
input.onExpand?.(node, event.detail.expanded);
|
|
706
721
|
};
|
|
707
722
|
|
|
@@ -710,15 +725,22 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
710
725
|
const isDraggable = !input.disableEdits && Boolean(input.isValidDragSource?.(node));
|
|
711
726
|
|
|
712
727
|
const classes = classMap({
|
|
713
|
-
hovered:
|
|
728
|
+
hovered: isOpeningHovered,
|
|
714
729
|
'in-clipboard': Boolean(input.isNodeInClipboard?.(node)),
|
|
715
730
|
'elements-drag-over': isDragOver,
|
|
731
|
+
'always-parent': !isCollapsible && !isEditingAsHTML,
|
|
716
732
|
});
|
|
717
733
|
|
|
718
|
-
const
|
|
734
|
+
const onOpeningMouseMove = (event: MouseEvent): void => {
|
|
719
735
|
event.stopPropagation();
|
|
720
736
|
const showInfo = !UI.KeyboardShortcut.KeyboardShortcut.eventHasEitherCtrlOrMeta(event);
|
|
721
|
-
input.onHoverNode?.(node, showInfo);
|
|
737
|
+
input.onHoverNode?.(node, showInfo, /* isClosingTag= */ false);
|
|
738
|
+
};
|
|
739
|
+
|
|
740
|
+
const onClosingMouseMove = (event: MouseEvent): void => {
|
|
741
|
+
event.stopPropagation();
|
|
742
|
+
const showInfo = !UI.KeyboardShortcut.KeyboardShortcut.eventHasEitherCtrlOrMeta(event);
|
|
743
|
+
input.onHoverNode?.(node, showInfo, /* isClosingTag= */ true);
|
|
722
744
|
};
|
|
723
745
|
|
|
724
746
|
const onContextMenu = (event: MouseEvent): void => {
|
|
@@ -763,16 +785,17 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
763
785
|
input.onDragEnd?.(event);
|
|
764
786
|
};
|
|
765
787
|
|
|
766
|
-
|
|
788
|
+
// clang-format off
|
|
767
789
|
return html`
|
|
768
790
|
<li role="treeitem"
|
|
769
|
-
?selected=${isSelected}
|
|
791
|
+
?selected=${isSelected && !input.selectedClosingTag}
|
|
770
792
|
class=${classes}
|
|
771
|
-
|
|
793
|
+
style=${styleMap({'--indent': `${computeLeftIndent(depth, isExpandable)}px`})}
|
|
794
|
+
?open=${isExpanded && !isEditingAsHTML}
|
|
772
795
|
draggable=${isDraggable ? 'true' : 'false'}
|
|
773
|
-
@select=${onSelect}
|
|
796
|
+
@select=${on(() => onSelect(false))}
|
|
774
797
|
@expand=${onExpand}
|
|
775
|
-
@mousemove=${on(
|
|
798
|
+
@mousemove=${on(onOpeningMouseMove)}
|
|
776
799
|
@contextmenu=${on(onContextMenu)}
|
|
777
800
|
@dragstart=${on(onDragStart)}
|
|
778
801
|
@dragover=${on(onDragOver)}
|
|
@@ -788,22 +811,22 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
788
811
|
${UI.Widget.widget(ElementsTreeWidget, {
|
|
789
812
|
node,
|
|
790
813
|
isClosingTag: false,
|
|
791
|
-
expanded: isExpanded,
|
|
814
|
+
expanded: isExpanded && !isEditingAsHTML,
|
|
792
815
|
isExpandable: hasChildren,
|
|
793
|
-
selected: isSelected,
|
|
816
|
+
selected: isSelected && !input.selectedClosingTag,
|
|
794
817
|
isDOMNodeSelected: isSelected,
|
|
795
|
-
hovered:
|
|
818
|
+
hovered: isOpeningHovered,
|
|
796
819
|
searchQuery: input.searchMatchNode === node ? (input.searchMatchQuery ?? null) : null,
|
|
797
820
|
inClipboard: input.isNodeInClipboard?.(node) ?? false,
|
|
798
|
-
computeLeftIndent: computeLeftIndent(depth,
|
|
821
|
+
computeLeftIndent: computeLeftIndent(depth, isExpandable),
|
|
799
822
|
disableEdits: input.disableEdits ?? false,
|
|
800
823
|
showAIButton: input.showAIButton ?? true,
|
|
801
824
|
initialEdit: input.nodeToEdit?.node === node ? input.nodeToEdit : null,
|
|
802
825
|
onInitialEditCompleted: input.onInitialEditCompleted,
|
|
803
826
|
revealInTopLayer: (n: SDK.DOMModel.DOMNode) => input.domTreeWidget?.revealInTopLayer(n),
|
|
804
|
-
setMultilineEditing: multilineEditing => input.domTreeWidget?.setMultilineEditing(multilineEditing),
|
|
827
|
+
setMultilineEditing: (multilineEditing, n) => input.domTreeWidget?.setMultilineEditing(multilineEditing, n ?? node),
|
|
805
828
|
visibleWidth: () => input.domTreeWidget?.visibleWidth ?? 0,
|
|
806
|
-
selectDOMNode: (n: SDK.DOMModel.DOMNode, selectedByUser?: boolean) => input.onSelect?.(n, selectedByUser),
|
|
829
|
+
selectDOMNode: (n: SDK.DOMModel.DOMNode, selectedByUser?: boolean) => input.onSelect?.(n, false, selectedByUser),
|
|
807
830
|
selectNodeAfterEdit: (wasExpanded: boolean, error: string|null, newNode: SDK.DOMModel.DOMNode|null, moveDirection?: string) => {
|
|
808
831
|
input.onSelectNodeAfterEdit?.(wasExpanded, error, newNode, moveDirection);
|
|
809
832
|
},
|
|
@@ -827,7 +850,7 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
827
850
|
${remainingChildrenCount > 0 ? html`
|
|
828
851
|
<li role="treeitem"
|
|
829
852
|
class="elements-tree-expand-all"
|
|
830
|
-
style
|
|
853
|
+
style=${styleMap({'--indent': `${computeLeftIndent(depth + 1, false)}px`})}
|
|
831
854
|
jslog=${VisualLogging.treeItem('show-all-nodes').parent('elementsTreeOutline')}>
|
|
832
855
|
<devtools-button
|
|
833
856
|
.variant=${Buttons.Button.Variant.OUTLINED}
|
|
@@ -843,21 +866,27 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
843
866
|
${node instanceof SDK.DOMModel.DOMDocument ? renderTopLayerContainer(node, depth + 1) : nothing}
|
|
844
867
|
${needsClosingTag ? html`
|
|
845
868
|
<li role="treeitem"
|
|
846
|
-
|
|
869
|
+
?selected=${isSelected && Boolean(input.selectedClosingTag)}
|
|
870
|
+
class=${classMap({hovered: isClosingHovered, 'elements-drag-over': isClosingTagDragOver})}
|
|
871
|
+
style=${styleMap({'--indent': `${computeLeftIndent(depth + 1, false)}px`})}
|
|
872
|
+
draggable=${isDraggable ? 'true' : 'false'}
|
|
847
873
|
jslog=${VisualLogging.treeItem().parent('elementsTreeOutline')}
|
|
848
|
-
@
|
|
874
|
+
@select=${on(() => onSelect(true))}
|
|
875
|
+
@mousemove=${on(onClosingMouseMove)}
|
|
876
|
+
@dragstart=${on(onDragStart)}
|
|
849
877
|
@dragover=${on(onClosingTagDragOver)}
|
|
850
878
|
@dragleave=${on(onDragLeave)}
|
|
851
|
-
@drop=${on(onClosingTagDrop)}
|
|
879
|
+
@drop=${on(onClosingTagDrop)}
|
|
880
|
+
@dragend=${on(onDragEnd)}>
|
|
852
881
|
${UI.Widget.widget(ElementsTreeWidget, {
|
|
853
882
|
node,
|
|
854
883
|
isClosingTag: true,
|
|
855
884
|
expanded: false,
|
|
856
885
|
isExpandable: false,
|
|
857
|
-
selected:
|
|
858
|
-
isDOMNodeSelected:
|
|
859
|
-
hovered:
|
|
860
|
-
computeLeftIndent: computeLeftIndent(depth, false),
|
|
886
|
+
selected: isSelected && Boolean(input.selectedClosingTag),
|
|
887
|
+
isDOMNodeSelected: isSelected,
|
|
888
|
+
hovered: isClosingHovered,
|
|
889
|
+
computeLeftIndent: computeLeftIndent(depth + 1, false),
|
|
861
890
|
disableEdits: input.disableEdits ?? false,
|
|
862
891
|
showAIButton: false,
|
|
863
892
|
showContextMenu: (event: Event, widget?: ElementsTreeWidget) => {
|
|
@@ -874,10 +903,10 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
874
903
|
` : nothing}
|
|
875
904
|
</li>
|
|
876
905
|
`;
|
|
877
|
-
|
|
906
|
+
// clang-format on
|
|
878
907
|
};
|
|
879
908
|
|
|
880
|
-
|
|
909
|
+
// clang-format off
|
|
881
910
|
render(html`
|
|
882
911
|
<style>${UI.inspectorCommonStyles}</style>
|
|
883
912
|
<style>${elementsTreeOutlineStyles}</style>
|
|
@@ -888,6 +917,7 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
888
917
|
aria-label=${i18nString(UIStrings.pageDom)}
|
|
889
918
|
jslog=${VisualLogging.tree('elements')}
|
|
890
919
|
?show-selection-on-keyboard-focus=${input.showSelectionOnKeyboardFocus}
|
|
920
|
+
@enter=${(event: Event) => event.preventDefault()}
|
|
891
921
|
@keydown=${input.onKeyDown}
|
|
892
922
|
@clipboard-copy=${(event: Event) => input.onCopyOrCut?.(false, event)}
|
|
893
923
|
@clipboard-cut=${(event: Event) => input.onCopyOrCut?.(true, event)}
|
|
@@ -898,6 +928,8 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
898
928
|
<style>${elementsTreeOutlineStyles}</style>
|
|
899
929
|
<style>${CodeHighlighter.codeHighlighterStyles}</style>
|
|
900
930
|
<ul role="tree">
|
|
931
|
+
${input.omitRootDOMNode && input.rootDOMNode && input.rootDOMNode.adoptedStyleSheetsForNode.length > 0 ?
|
|
932
|
+
renderAdoptedStyleSheets(input.rootDOMNode, 0) : nothing}
|
|
901
933
|
${rootNodes.map(node => renderNode(node))}
|
|
902
934
|
${input.omitRootDOMNode && input.rootDOMNode ? (() => {
|
|
903
935
|
const remaining = allRootNodes.length - rootNodes.length;
|
|
@@ -908,7 +940,7 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
908
940
|
return html`
|
|
909
941
|
<li role="treeitem"
|
|
910
942
|
class="elements-tree-expand-all"
|
|
911
|
-
style
|
|
943
|
+
style=${styleMap({'--indent': `${computeLeftIndent(0, false)}px`})}
|
|
912
944
|
jslog=${VisualLogging.treeItem('show-all-nodes').parent('elementsTreeOutline')}>
|
|
913
945
|
<devtools-button
|
|
914
946
|
.variant=${Buttons.Button.Variant.OUTLINED}
|
|
@@ -928,7 +960,7 @@ export const DECLARATIVE_VIEW: View = (input: ViewInput, _output: ViewOutput, ta
|
|
|
928
960
|
</devtools-tree>
|
|
929
961
|
</div>
|
|
930
962
|
`, target);
|
|
931
|
-
|
|
963
|
+
// clang-format on
|
|
932
964
|
};
|
|
933
965
|
|
|
934
966
|
function getElementsTreeWidgetAndNode(element: Element): {node?: SDK.DOMModel.DOMNode, widget?: ElementsTreeWidget} {
|
|
@@ -1007,20 +1039,35 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1007
1039
|
#expandedNodes = new Set<SDK.DOMModel.DOMNode>();
|
|
1008
1040
|
#expandedChildrenLimitByNode = new WeakMap<SDK.DOMModel.DOMNode, number>();
|
|
1009
1041
|
|
|
1042
|
+
#expandRootNode(node: SDK.DOMModel.DOMNode): void {
|
|
1043
|
+
if (!this.#expandRoot && !this.omitRootDOMNode) {
|
|
1044
|
+
return;
|
|
1045
|
+
}
|
|
1046
|
+
this.#expandedNodes.add(node);
|
|
1047
|
+
const expandChildren = (): void => {
|
|
1048
|
+
if (this.#expandRoot && this.omitRootDOMNode && node.children()) {
|
|
1049
|
+
for (const child of node.children() ?? []) {
|
|
1050
|
+
this.#expandedNodes.add(child);
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
};
|
|
1054
|
+
if (node.children()) {
|
|
1055
|
+
expandChildren();
|
|
1056
|
+
} else if (node.childNodeCount()) {
|
|
1057
|
+
void node.getChildNodes(() => {
|
|
1058
|
+
expandChildren();
|
|
1059
|
+
this.performUpdate();
|
|
1060
|
+
});
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1010
1064
|
// FIXME: this is not declarative because ElementsTreeOutline can
|
|
1011
1065
|
// change root node internally.
|
|
1012
1066
|
set rootDOMNode(node: SDK.DOMModel.DOMNode|null) {
|
|
1013
1067
|
if (this.#view === DECLARATIVE_VIEW) {
|
|
1014
1068
|
this.#rootDOMNode = node;
|
|
1015
1069
|
if (node) {
|
|
1016
|
-
|
|
1017
|
-
this.#expandedNodes.add(node);
|
|
1018
|
-
}
|
|
1019
|
-
if (!node.children() && node.childNodeCount()) {
|
|
1020
|
-
void node.getChildNodes(() => {
|
|
1021
|
-
this.performUpdate();
|
|
1022
|
-
});
|
|
1023
|
-
}
|
|
1070
|
+
this.#expandRootNode(node);
|
|
1024
1071
|
}
|
|
1025
1072
|
this.performUpdate();
|
|
1026
1073
|
return;
|
|
@@ -1090,6 +1137,9 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1090
1137
|
|
|
1091
1138
|
set expandRoot(expandRoot: boolean) {
|
|
1092
1139
|
this.#expandRoot = expandRoot;
|
|
1140
|
+
if (this.#rootDOMNode) {
|
|
1141
|
+
this.#expandRootNode(this.#rootDOMNode);
|
|
1142
|
+
}
|
|
1093
1143
|
this.performUpdate();
|
|
1094
1144
|
}
|
|
1095
1145
|
|
|
@@ -1314,6 +1364,10 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1314
1364
|
}
|
|
1315
1365
|
|
|
1316
1366
|
updateModifiedNodes(): void {
|
|
1367
|
+
if (this.#updateModifiedNodesTimeout) {
|
|
1368
|
+
clearTimeout(this.#updateModifiedNodesTimeout);
|
|
1369
|
+
this.#updateModifiedNodesTimeout = undefined;
|
|
1370
|
+
}
|
|
1317
1371
|
if (this.#view === DECLARATIVE_VIEW) {
|
|
1318
1372
|
this.performUpdate();
|
|
1319
1373
|
return;
|
|
@@ -1381,7 +1435,8 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1381
1435
|
this.performUpdate();
|
|
1382
1436
|
}
|
|
1383
1437
|
|
|
1384
|
-
selectDOMNode(node: SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet|null, focus?: boolean
|
|
1438
|
+
selectDOMNode(node: SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet|null, focus?: boolean,
|
|
1439
|
+
isClosingTag = false): void {
|
|
1385
1440
|
this.#imagePreviewPopover?.hide();
|
|
1386
1441
|
this.#issuePopoverHelper?.hidePopover();
|
|
1387
1442
|
if (node instanceof SDK.DOMModel.AdoptedStyleSheet) {
|
|
@@ -1390,6 +1445,7 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1390
1445
|
}
|
|
1391
1446
|
this.#selectedAdoptedStyleSheet = null;
|
|
1392
1447
|
if (this.#view === DECLARATIVE_VIEW) {
|
|
1448
|
+
this.#selectedClosingTag = Boolean(isClosingTag);
|
|
1393
1449
|
const isSameNode = this.#selectedDOMNode === node;
|
|
1394
1450
|
this.#selectedDOMNode = node;
|
|
1395
1451
|
if (node) {
|
|
@@ -1455,6 +1511,9 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1455
1511
|
}
|
|
1456
1512
|
|
|
1457
1513
|
setNodeExpanded(node: SDK.DOMModel.DOMNode, expanded: boolean): void {
|
|
1514
|
+
if (!expanded && this.#multilineEditingNode === node) {
|
|
1515
|
+
return;
|
|
1516
|
+
}
|
|
1458
1517
|
if (this.#view === DECLARATIVE_VIEW) {
|
|
1459
1518
|
if (expanded) {
|
|
1460
1519
|
this.#expandedNodes.add(node);
|
|
@@ -1513,7 +1572,7 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1513
1572
|
this.setExpandedChildrenLimit(node, Math.max(visibleChildren.length, currentLimit + InitialChildrenLimit));
|
|
1514
1573
|
}
|
|
1515
1574
|
|
|
1516
|
-
async expandRecursively(node: SDK.DOMModel.DOMNode, maxDepth = Number.MAX_VALUE): Promise<void> {
|
|
1575
|
+
async expandRecursively(node: SDK.DOMModel.DOMNode, maxDepth: number = Number.MAX_VALUE): Promise<void> {
|
|
1517
1576
|
if (this.#view === DECLARATIVE_VIEW) {
|
|
1518
1577
|
await node.getSubtree(100, true);
|
|
1519
1578
|
const expand = async(n: SDK.DOMModel.DOMNode, depth: number): Promise<void> => {
|
|
@@ -1546,11 +1605,10 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1546
1605
|
collapseChildren(node: SDK.DOMModel.DOMNode): void {
|
|
1547
1606
|
if (this.#view === DECLARATIVE_VIEW) {
|
|
1548
1607
|
const collapse = (n: SDK.DOMModel.DOMNode): void => {
|
|
1549
|
-
const
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
collapse(child);
|
|
1608
|
+
for (const child of getVisibleChildren(n, this.#showComments)) {
|
|
1609
|
+
if (this.#expandedNodes.delete(child)) {
|
|
1610
|
+
collapse(child);
|
|
1611
|
+
}
|
|
1554
1612
|
}
|
|
1555
1613
|
};
|
|
1556
1614
|
collapse(node);
|
|
@@ -1590,6 +1648,8 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1590
1648
|
}
|
|
1591
1649
|
|
|
1592
1650
|
#hoveredDOMNode: SDK.DOMModel.DOMNode|null = null;
|
|
1651
|
+
#hoveredClosingTag = false;
|
|
1652
|
+
#selectedClosingTag = false;
|
|
1593
1653
|
#searchMatchNode: SDK.DOMModel.DOMNode|null = null;
|
|
1594
1654
|
#searchMatchQuery: string|null = null;
|
|
1595
1655
|
#nodeToEdit: ({node: SDK.DOMModel.DOMNode}&InitialEditState)|null = null;
|
|
@@ -1608,6 +1668,14 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1608
1668
|
return null;
|
|
1609
1669
|
}
|
|
1610
1670
|
|
|
1671
|
+
hoveredClosingTag(): boolean {
|
|
1672
|
+
return this.#hoveredClosingTag;
|
|
1673
|
+
}
|
|
1674
|
+
|
|
1675
|
+
selectedClosingTag(): boolean {
|
|
1676
|
+
return this.#selectedClosingTag;
|
|
1677
|
+
}
|
|
1678
|
+
|
|
1611
1679
|
searchMatchNode(): SDK.DOMModel.DOMNode|null {
|
|
1612
1680
|
return this.#searchMatchNode;
|
|
1613
1681
|
}
|
|
@@ -1616,11 +1684,12 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1616
1684
|
return this.#searchMatchQuery;
|
|
1617
1685
|
}
|
|
1618
1686
|
|
|
1619
|
-
setHoveredNode(node: SDK.DOMModel.DOMNode|null, showInfo = true): void {
|
|
1620
|
-
if (this
|
|
1687
|
+
setHoveredNode(node: SDK.DOMModel.DOMNode|null, showInfo = true, isClosingTag = false): void {
|
|
1688
|
+
if (this.hoveredDOMNode() === node && this.#hoveredClosingTag === Boolean(isClosingTag)) {
|
|
1621
1689
|
return;
|
|
1622
1690
|
}
|
|
1623
1691
|
this.#hoveredDOMNode = node;
|
|
1692
|
+
this.#hoveredClosingTag = Boolean(isClosingTag);
|
|
1624
1693
|
if (node) {
|
|
1625
1694
|
const treeElement = this.treeElementForNode(node);
|
|
1626
1695
|
const selectorList = treeElement?.isDisplayContents() ? '*' : undefined;
|
|
@@ -1665,9 +1734,11 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1665
1734
|
|
|
1666
1735
|
currentHighlightedNode: this.#currentHighlightedNode,
|
|
1667
1736
|
hoveredNode: this.#hoveredDOMNode,
|
|
1737
|
+
hoveredClosingTag: this.#hoveredClosingTag,
|
|
1668
1738
|
searchMatchNode: this.#searchMatchNode,
|
|
1669
1739
|
searchMatchQuery: this.#searchMatchQuery,
|
|
1670
1740
|
selectedNode: this.selectedDOMNode(),
|
|
1741
|
+
selectedClosingTag: this.#selectedClosingTag,
|
|
1671
1742
|
onElementsTreeUpdated: this.onElementsTreeUpdated.bind(this),
|
|
1672
1743
|
onSelectedNodeChanged: event => {
|
|
1673
1744
|
this.#clearHighlightedNode();
|
|
@@ -1679,14 +1750,14 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1679
1750
|
onElementExpanded: () => {
|
|
1680
1751
|
this.#clearHighlightedNode();
|
|
1681
1752
|
},
|
|
1682
|
-
onHoverNode: (node: SDK.DOMModel.DOMNode, showInfo?: boolean) => {
|
|
1683
|
-
this.setHoveredNode(node, showInfo);
|
|
1753
|
+
onHoverNode: (node: SDK.DOMModel.DOMNode|null, showInfo?: boolean, isClosingTag = false) => {
|
|
1754
|
+
this.setHoveredNode(node, showInfo, isClosingTag);
|
|
1684
1755
|
},
|
|
1685
1756
|
onLeave: () => {
|
|
1686
1757
|
this.setHoveredNode(null);
|
|
1687
1758
|
},
|
|
1688
|
-
onSelect: (node: SDK.DOMModel.DOMNode, selectedByUser?: boolean) => {
|
|
1689
|
-
this.selectDOMNode(node, selectedByUser);
|
|
1759
|
+
onSelect: (node: SDK.DOMModel.DOMNode, isClosingTag = false, selectedByUser?: boolean) => {
|
|
1760
|
+
this.selectDOMNode(node, selectedByUser, isClosingTag);
|
|
1690
1761
|
},
|
|
1691
1762
|
onExpand: (node: SDK.DOMModel.DOMNode, expanded: boolean) => {
|
|
1692
1763
|
this.setNodeExpanded(node, expanded);
|
|
@@ -1726,6 +1797,7 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1726
1797
|
onInitialEditCompleted: () => {
|
|
1727
1798
|
this.#nodeToEdit = null;
|
|
1728
1799
|
},
|
|
1800
|
+
multilineEditingNode: this.#multilineEditingNode,
|
|
1729
1801
|
dragOverNode: this.#dragOverNode,
|
|
1730
1802
|
isValidDragSource: (node: SDK.DOMModel.DOMNode) => this.isValidDragSource(node),
|
|
1731
1803
|
onDragStart: (node: SDK.DOMModel.DOMNode, event: DragEvent, textContent?: string) =>
|
|
@@ -1850,12 +1922,10 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1850
1922
|
this.performUpdate();
|
|
1851
1923
|
}
|
|
1852
1924
|
|
|
1853
|
-
/**
|
|
1854
|
-
* FIXME: which node is expanded should be part of the view input.
|
|
1855
|
-
*/
|
|
1856
1925
|
expand(): void {
|
|
1857
|
-
|
|
1858
|
-
|
|
1926
|
+
const selectedNode = this.selectedDOMNode();
|
|
1927
|
+
if (selectedNode) {
|
|
1928
|
+
this.setNodeExpanded(selectedNode, true);
|
|
1859
1929
|
}
|
|
1860
1930
|
}
|
|
1861
1931
|
|
|
@@ -1915,15 +1985,22 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1915
1985
|
}
|
|
1916
1986
|
|
|
1917
1987
|
#multilineEditing: MultilineEditorController|null = null;
|
|
1988
|
+
#multilineEditingNode: SDK.DOMModel.DOMNode|null = null;
|
|
1918
1989
|
|
|
1919
|
-
setMultilineEditing(multilineEditing: MultilineEditorController|null): void {
|
|
1990
|
+
setMultilineEditing(multilineEditing: MultilineEditorController|null, node?: SDK.DOMModel.DOMNode): void {
|
|
1920
1991
|
this.#multilineEditing = multilineEditing;
|
|
1992
|
+
this.#multilineEditingNode = multilineEditing ? (node ?? this.#multilineEditingNode) : null;
|
|
1993
|
+
this.performUpdate();
|
|
1921
1994
|
}
|
|
1922
1995
|
|
|
1923
1996
|
multilineEditing(): MultilineEditorController|null {
|
|
1924
1997
|
return this.#multilineEditing;
|
|
1925
1998
|
}
|
|
1926
1999
|
|
|
2000
|
+
multilineEditingNode(): SDK.DOMModel.DOMNode|null {
|
|
2001
|
+
return this.#multilineEditingNode;
|
|
2002
|
+
}
|
|
2003
|
+
|
|
1927
2004
|
runPendingUpdates(): void {
|
|
1928
2005
|
this.updateModifiedNodes();
|
|
1929
2006
|
if (this.#view !== DECLARATIVE_VIEW) {
|
|
@@ -1963,10 +2040,12 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
1963
2040
|
const wasExpanded = this.isNodeExpanded(node);
|
|
1964
2041
|
|
|
1965
2042
|
const editingFinished = (success: boolean): void => {
|
|
2043
|
+
this.#multilineEditingNode = null;
|
|
1966
2044
|
if (callback) {
|
|
1967
2045
|
callback();
|
|
1968
2046
|
}
|
|
1969
2047
|
if (!success) {
|
|
2048
|
+
this.performUpdate();
|
|
1970
2049
|
return;
|
|
1971
2050
|
}
|
|
1972
2051
|
|
|
@@ -2000,6 +2079,7 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
2000
2079
|
return;
|
|
2001
2080
|
}
|
|
2002
2081
|
|
|
2082
|
+
this.#multilineEditingNode = node;
|
|
2003
2083
|
this.#nodeToEdit = {
|
|
2004
2084
|
node,
|
|
2005
2085
|
isEditAsHTML: true,
|
|
@@ -2723,8 +2803,8 @@ export class ElementsTreeOutline extends ElementsTreeOutlineBase {
|
|
|
2723
2803
|
this.elementInternal.classList.toggle('elements-tree-nowrap', !wrap);
|
|
2724
2804
|
}
|
|
2725
2805
|
|
|
2726
|
-
setMultilineEditing(multilineEditing: MultilineEditorController|null): void {
|
|
2727
|
-
this.domTreeWidget?.setMultilineEditing(multilineEditing);
|
|
2806
|
+
setMultilineEditing(multilineEditing: MultilineEditorController|null, node?: SDK.DOMModel.DOMNode): void {
|
|
2807
|
+
this.domTreeWidget?.setMultilineEditing(multilineEditing, node);
|
|
2728
2808
|
}
|
|
2729
2809
|
|
|
2730
2810
|
visibleWidth(): number {
|
|
@@ -3101,18 +3181,12 @@ export class ElementsTreeOutline extends ElementsTreeOutlineBase {
|
|
|
3101
3181
|
return;
|
|
3102
3182
|
}
|
|
3103
3183
|
|
|
3104
|
-
const showInfo = !UI.KeyboardShortcut.KeyboardShortcut.eventHasEitherCtrlOrMeta(event);
|
|
3105
|
-
if (this.domTreeWidget && element instanceof ElementsTreeElement) {
|
|
3106
|
-
this.domTreeWidget.setHoveredNode(element.node(), showInfo);
|
|
3107
|
-
return;
|
|
3108
|
-
}
|
|
3109
|
-
|
|
3110
|
-
this.domTreeWidget?.setHoveredNode(null);
|
|
3111
3184
|
this.setHoverEffect(element);
|
|
3112
|
-
|
|
3185
|
+
const showInfo = !UI.KeyboardShortcut.KeyboardShortcut.eventHasEitherCtrlOrMeta(event);
|
|
3186
|
+
this.highlightTreeElement((element as UI.TreeOutline.TreeElement | null), showInfo);
|
|
3113
3187
|
}
|
|
3114
3188
|
|
|
3115
|
-
private highlightTreeElement(element: UI.TreeOutline.TreeElement, showInfo: boolean): void {
|
|
3189
|
+
private highlightTreeElement(element: UI.TreeOutline.TreeElement|null, showInfo: boolean): void {
|
|
3116
3190
|
if (element instanceof ElementsTreeElement) {
|
|
3117
3191
|
const selectorList = element.isDisplayContents() ? '*' : undefined;
|
|
3118
3192
|
element.node().domModel().overlayModel().highlightInOverlay({node: element.node(), selectorList}, 'all',
|
|
@@ -3123,11 +3197,13 @@ export class ElementsTreeOutline extends ElementsTreeOutlineBase {
|
|
|
3123
3197
|
if (element instanceof ShortcutTreeElement) {
|
|
3124
3198
|
element.domModel().overlayModel().highlightInOverlay(
|
|
3125
3199
|
{deferredNode: element.deferredNode(), selectorList: undefined}, 'all', showInfo);
|
|
3200
|
+
return;
|
|
3126
3201
|
}
|
|
3202
|
+
|
|
3203
|
+
SDK.OverlayModel.OverlayModel.hideDOMNodeHighlight(SDK.TargetManager.TargetManager.instance());
|
|
3127
3204
|
}
|
|
3128
3205
|
|
|
3129
3206
|
private onmouseleave(_event: MouseEvent): void {
|
|
3130
|
-
this.domTreeWidget?.setHoveredNode(null);
|
|
3131
3207
|
this.setHoverEffect(null);
|
|
3132
3208
|
SDK.OverlayModel.OverlayModel.hideDOMNodeHighlight(SDK.TargetManager.TargetManager.instance());
|
|
3133
3209
|
}
|
|
@@ -3816,7 +3892,7 @@ export namespace ElementsTreeOutline {
|
|
|
3816
3892
|
}
|
|
3817
3893
|
|
|
3818
3894
|
// clang-format off
|
|
3819
|
-
export const MappedCharToEntity = new Map<string, string>([
|
|
3895
|
+
export const MappedCharToEntity: Map<string, string> = new Map<string, string>([
|
|
3820
3896
|
['\xA0', 'nbsp'],
|
|
3821
3897
|
['\xAD', 'shy'],
|
|
3822
3898
|
['\u2002', 'ensp'],
|