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
|
@@ -97,7 +97,12 @@ export class DropTarget {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
export
|
|
100
|
+
export interface DropTargetType {
|
|
101
|
+
kind: string;
|
|
102
|
+
type: RegExp;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export const Type: Record<'URI'|'Folder'|'File'|'WebFile'|'ImageFile', DropTargetType> = {
|
|
101
106
|
URI: {kind: 'string', type: /text\/uri-list/},
|
|
102
107
|
Folder: {kind: 'file', type: /$^/},
|
|
103
108
|
File: {kind: 'file', type: /.*/},
|
|
@@ -52,7 +52,7 @@ export class EmptyWidget extends VBox {
|
|
|
52
52
|
#link: Platform.DevToolsPath.UrlString|undefined|null;
|
|
53
53
|
#view: View;
|
|
54
54
|
|
|
55
|
-
constructor(headerOrElement: string|HTMLElement, text = '', element?: HTMLElement, view = DEFAULT_VIEW) {
|
|
55
|
+
constructor(headerOrElement: string|HTMLElement, text = '', element?: HTMLElement, view: View = DEFAULT_VIEW) {
|
|
56
56
|
const header = typeof headerOrElement === 'string' ? headerOrElement : '';
|
|
57
57
|
if (!element && headerOrElement instanceof HTMLElement) {
|
|
58
58
|
element = headerOrElement;
|
|
@@ -10,6 +10,7 @@ import * as Root from '../../core/root/root.js';
|
|
|
10
10
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
11
11
|
import * as Buttons from '../../ui/components/buttons/buttons.js';
|
|
12
12
|
import {createIcon, type Icon} from '../kit/kit.js';
|
|
13
|
+
import * as Lit from '../lit/lit.js';
|
|
13
14
|
import * as SettingsUI from '../settings/settings.js';
|
|
14
15
|
import * as VisualLogging from '../visual_logging/visual_logging.js';
|
|
15
16
|
|
|
@@ -26,12 +27,15 @@ import {InspectorDrawerView} from './InspectorDrawerView.js';
|
|
|
26
27
|
import {KeyboardShortcut} from './KeyboardShortcut.js';
|
|
27
28
|
import type {Panel} from './Panel.js';
|
|
28
29
|
import {type ShowMode, SplitWidget} from './SplitWidget.js';
|
|
30
|
+
import {StatusBarWidget} from './StatusBar.js';
|
|
29
31
|
import {type EventData, Events as TabbedPaneEvents, type TabbedPane, type TabbedPaneTabDelegate} from './TabbedPane.js';
|
|
30
32
|
import {Tooltip} from './Tooltip.js';
|
|
31
33
|
import {UIUserMetrics} from './UIUserMetrics.js';
|
|
32
34
|
import type {TabbedViewLocation, View, ViewLocation, ViewLocationResolver} from './View.js';
|
|
33
35
|
import {ViewManager} from './ViewManager.js';
|
|
34
|
-
import {VBox, type Widget, WidgetFocusRestorer} from './Widget.js';
|
|
36
|
+
import {VBox, type Widget, widget, WidgetFocusRestorer} from './Widget.js';
|
|
37
|
+
|
|
38
|
+
const {html} = Lit;
|
|
35
39
|
|
|
36
40
|
const UIStrings = {
|
|
37
41
|
/**
|
|
@@ -166,6 +170,7 @@ export class InspectorView extends VBox implements ViewLocationResolver {
|
|
|
166
170
|
#resizeObserver: ResizeObserver;
|
|
167
171
|
#drawerShowModeBeforeDockSideChange: ShowMode|null = null;
|
|
168
172
|
#drawerMinimizedBeforeDockSideChange: boolean|null = null;
|
|
173
|
+
#statusBarContainer?: HTMLDivElement;
|
|
169
174
|
|
|
170
175
|
constructor() {
|
|
171
176
|
super();
|
|
@@ -848,6 +853,17 @@ export class InspectorView extends VBox implements ViewLocationResolver {
|
|
|
848
853
|
}
|
|
849
854
|
}
|
|
850
855
|
|
|
856
|
+
renderStatusBar(): void {
|
|
857
|
+
if (!this.#statusBarContainer) {
|
|
858
|
+
this.#statusBarContainer = document.createElement('div');
|
|
859
|
+
this.#statusBarContainer.style.display = 'contents';
|
|
860
|
+
this.element.appendChild(this.#statusBarContainer);
|
|
861
|
+
}
|
|
862
|
+
// eslint-disable-next-line @devtools/no-lit-render-outside-of-view
|
|
863
|
+
Lit.render(html`<devtools-widget class="flex-none" ${widget(StatusBarWidget)}></devtools-widget>`,
|
|
864
|
+
this.#statusBarContainer);
|
|
865
|
+
}
|
|
866
|
+
|
|
851
867
|
private createInfoBarDiv(): void {
|
|
852
868
|
if (!this.infoBarDiv) {
|
|
853
869
|
this.infoBarDiv = document.createElement('div');
|
|
@@ -514,10 +514,10 @@ export class ShortcutTreeNode {
|
|
|
514
514
|
}
|
|
515
515
|
|
|
516
516
|
export class ForwardedShortcut {
|
|
517
|
-
static instance = new ForwardedShortcut();
|
|
517
|
+
static instance: ForwardedShortcut = new ForwardedShortcut();
|
|
518
518
|
}
|
|
519
519
|
|
|
520
|
-
export const ForwardedActions = new Set<string>([
|
|
520
|
+
export const ForwardedActions: Set<string> = new Set<string>([
|
|
521
521
|
'main.toggle-dock',
|
|
522
522
|
'debugger.toggle-breakpoints-active',
|
|
523
523
|
'debugger.toggle-pause',
|
|
@@ -81,7 +81,14 @@ export class SplitWidget extends SplitWidgetBase {
|
|
|
81
81
|
const mainSlot = this.#mainElement.createChild('slot');
|
|
82
82
|
mainSlot.name = 'main';
|
|
83
83
|
mainSlot.addEventListener('slotchange', (_: Event) => {
|
|
84
|
-
const assignedNode = mainSlot.assignedNodes()
|
|
84
|
+
const assignedNode = mainSlot.assignedNodes().find(node => {
|
|
85
|
+
const widget = node instanceof HTMLElement ? Widget.get(node) : null;
|
|
86
|
+
if (widget) {
|
|
87
|
+
return widget === this.#mainWidget || widget.isShowing();
|
|
88
|
+
}
|
|
89
|
+
return node instanceof HTMLElement && !node.classList.contains('hidden');
|
|
90
|
+
}) ??
|
|
91
|
+
mainSlot.assignedNodes()[0];
|
|
85
92
|
const widget = assignedNode instanceof HTMLElement ? Widget.getOrCreateWidget(assignedNode) : null;
|
|
86
93
|
if (widget && widget !== this.#mainWidget) {
|
|
87
94
|
this.setMainWidget(widget);
|
|
@@ -90,7 +97,14 @@ export class SplitWidget extends SplitWidgetBase {
|
|
|
90
97
|
const sidebarSlot = this.#sidebarElement.createChild('slot');
|
|
91
98
|
sidebarSlot.name = 'sidebar';
|
|
92
99
|
sidebarSlot.addEventListener('slotchange', (_: Event) => {
|
|
93
|
-
const assignedNode = sidebarSlot.assignedNodes()
|
|
100
|
+
const assignedNode = sidebarSlot.assignedNodes().find(node => {
|
|
101
|
+
const widget = node instanceof HTMLElement ? Widget.get(node) : null;
|
|
102
|
+
if (widget) {
|
|
103
|
+
return widget === this.#sidebarWidget || widget.isShowing();
|
|
104
|
+
}
|
|
105
|
+
return node instanceof HTMLElement && !node.classList.contains('hidden');
|
|
106
|
+
}) ??
|
|
107
|
+
sidebarSlot.assignedNodes()[0];
|
|
94
108
|
const widget = assignedNode instanceof HTMLElement ? Widget.getOrCreateWidget(assignedNode) : null;
|
|
95
109
|
if (widget && widget !== this.#sidebarWidget) {
|
|
96
110
|
this.setSidebarWidget(widget);
|
|
@@ -888,7 +902,8 @@ export class SplitWidget extends SplitWidgetBase {
|
|
|
888
902
|
}
|
|
889
903
|
|
|
890
904
|
export class SplitWidgetElement extends WidgetElement<SplitWidget> {
|
|
891
|
-
static readonly observedAttributes
|
|
905
|
+
static readonly observedAttributes: string[] =
|
|
906
|
+
['direction', 'sidebar-position', 'sidebar-initial-size', 'sidebar-visibility'];
|
|
892
907
|
|
|
893
908
|
constructor() {
|
|
894
909
|
super();
|
|
@@ -157,7 +157,7 @@ export class ExpandableContainerWidget extends VBox {
|
|
|
157
157
|
const expandableContainerForView = new WeakMap<View, ExpandableContainerWidget>();
|
|
158
158
|
|
|
159
159
|
export class StackedPane extends VBox {
|
|
160
|
-
readonly expandableContainers = new Map<string, ExpandableContainerWidget>();
|
|
160
|
+
readonly expandableContainers: Map<string, ExpandableContainerWidget> = new Map<string, ExpandableContainerWidget>();
|
|
161
161
|
constructor(
|
|
162
162
|
private readonly createToolbar: CreateToolbarFn,
|
|
163
163
|
private readonly setWidgetForView: SetWidgetForViewFn,
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// Copyright 2026 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
import * as Lit from '../lit/lit.js';
|
|
6
|
+
|
|
7
|
+
import statusBarStyles from './statusBar.css.js';
|
|
8
|
+
import {ViewManager} from './ViewManager.js';
|
|
9
|
+
import {ViewLocationValues} from './ViewRegistration.js';
|
|
10
|
+
import {type AnyWidget, Widget} from './Widget.js';
|
|
11
|
+
|
|
12
|
+
const {html, render} = Lit;
|
|
13
|
+
|
|
14
|
+
export const DEFAULT_VIEW = (_input: undefined, _output: undefined, target: HTMLElement): void => {
|
|
15
|
+
// clang-format off
|
|
16
|
+
render(html`
|
|
17
|
+
<style>${statusBarStyles}</style>
|
|
18
|
+
<div class="status-bar"></div>
|
|
19
|
+
`, target);
|
|
20
|
+
// clang-format on
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
type View = typeof DEFAULT_VIEW;
|
|
24
|
+
|
|
25
|
+
export class StatusBarWidget extends Widget {
|
|
26
|
+
readonly #view: View;
|
|
27
|
+
#containerElement?: HTMLElement;
|
|
28
|
+
readonly #widgets: AnyWidget[] = [];
|
|
29
|
+
#viewsLoadedPromise?: Promise<void>;
|
|
30
|
+
|
|
31
|
+
constructor(
|
|
32
|
+
element: HTMLElement|undefined,
|
|
33
|
+
view: View = DEFAULT_VIEW,
|
|
34
|
+
) {
|
|
35
|
+
super(element);
|
|
36
|
+
this.#view = view;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
viewsLoadedForTest(): Promise<void> {
|
|
40
|
+
return this.#viewsLoadedPromise ?? Promise.resolve();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
#attachWidgets(): void {
|
|
44
|
+
if (!this.#containerElement) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
for (const widget of this.#widgets) {
|
|
48
|
+
if (!widget.isShowing()) {
|
|
49
|
+
widget.show(this.#containerElement);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async #loadViews(): Promise<void> {
|
|
55
|
+
const views = ViewManager.instance().viewsForLocation(
|
|
56
|
+
ViewLocationValues.STATUS_BAR,
|
|
57
|
+
);
|
|
58
|
+
for (const view of views) {
|
|
59
|
+
const widget = await view.widget();
|
|
60
|
+
if (widget instanceof Widget && !this.#widgets.includes(widget)) {
|
|
61
|
+
this.#widgets.push(widget);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
this.#attachWidgets();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
override wasShown(): void {
|
|
68
|
+
super.wasShown();
|
|
69
|
+
this.requestUpdate();
|
|
70
|
+
this.#viewsLoadedPromise = this.#loadViews();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
override performUpdate(): void {
|
|
74
|
+
this.#view(undefined, undefined, this.contentElement);
|
|
75
|
+
this.#containerElement = this.contentElement.querySelector('.status-bar') ?? undefined;
|
|
76
|
+
this.#attachWidgets();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -35,7 +35,7 @@ export const DEFAULT_VIEW: View = (input, _output, target) => {
|
|
|
35
35
|
|
|
36
36
|
export class TargetCrashedScreen extends VBox {
|
|
37
37
|
private readonly hideCallback: () => void;
|
|
38
|
-
constructor(hideCallback: () => void, view = DEFAULT_VIEW) {
|
|
38
|
+
constructor(hideCallback: () => void, view: View = DEFAULT_VIEW) {
|
|
39
39
|
super({useShadowDom: true});
|
|
40
40
|
view({}, {}, this.contentElement);
|
|
41
41
|
this.hideCallback = hideCallback;
|
|
@@ -68,7 +68,8 @@ import {cloneCustomElement, ElementFocusRestorer} from './UIUtils.js';
|
|
|
68
68
|
* @attribute value Sets the initial text value that's edited when editing starts. If not provided, the slot's inner text is used.
|
|
69
69
|
*/
|
|
70
70
|
export class TextPromptElement extends HTMLElement {
|
|
71
|
-
static readonly observedAttributes
|
|
71
|
+
static readonly observedAttributes: string[] =
|
|
72
|
+
['editing', 'completions', 'placeholder', 'cancel-on-blur', 'render-as-block'];
|
|
72
73
|
static formAssociated = true;
|
|
73
74
|
readonly #shadow = this.attachShadow({mode: 'open'});
|
|
74
75
|
readonly #internals = this.attachInternals();
|
|
@@ -873,11 +873,15 @@ export class ToolbarFilter extends ToolbarInput {
|
|
|
873
873
|
toggledIconName: regexIconName,
|
|
874
874
|
toggleType: Buttons.Button.ToggleType.PRIMARY,
|
|
875
875
|
toggled: false,
|
|
876
|
+
checked: false,
|
|
876
877
|
title: i18nString(UIStrings.useRegularExpression),
|
|
877
878
|
jslogContext: regexIconName,
|
|
878
879
|
};
|
|
880
|
+
regexButton.style.setProperty('--dot-toggle-top', 'calc(100% - var(--sys-size-3) - var(--sys-size-1))');
|
|
881
|
+
regexButton.style.setProperty('--dot-toggle-left', 'calc(100% - var(--sys-size-3) - var(--sys-size-1))');
|
|
879
882
|
ARIAUtils.setLabel(regexButton, i18nString(UIStrings.useRegularExpression));
|
|
880
883
|
regexButton.addEventListener('click', () => {
|
|
884
|
+
regexButton.checked = regexButton.toggled;
|
|
881
885
|
onRegexToggle?.();
|
|
882
886
|
});
|
|
883
887
|
this.insertTrailingElement(regexButton);
|
|
@@ -886,7 +890,7 @@ export class ToolbarFilter extends ToolbarInput {
|
|
|
886
890
|
}
|
|
887
891
|
|
|
888
892
|
export class ToolbarInputElement extends HTMLElement {
|
|
889
|
-
static observedAttributes = ['value', 'disabled', 'regex'];
|
|
893
|
+
static observedAttributes: string[] = ['value', 'disabled', 'regex'];
|
|
890
894
|
|
|
891
895
|
item?: ToolbarInput;
|
|
892
896
|
datalist: HTMLDataListElement|null = null;
|
|
@@ -459,6 +459,19 @@ export class TreeOutlineInShadow extends TreeOutline {
|
|
|
459
459
|
this.contentElement.classList.toggle('tree-outline-dense', dense);
|
|
460
460
|
}
|
|
461
461
|
|
|
462
|
+
setDisclosureClass(disclosureClass: string): void {
|
|
463
|
+
const isHideOverflow = this.disclosureElement.classList.contains('tree-outline-disclosure-hide-overflow');
|
|
464
|
+
this.disclosureElement.className = 'tree-outline-disclosure';
|
|
465
|
+
if (isHideOverflow) {
|
|
466
|
+
this.disclosureElement.classList.add('tree-outline-disclosure-hide-overflow');
|
|
467
|
+
}
|
|
468
|
+
for (const cls of disclosureClass.split(/\s+/)) {
|
|
469
|
+
if (cls) {
|
|
470
|
+
this.disclosureElement.classList.add(cls);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
|
|
462
475
|
override onStartedEditingTitle(treeElement: TreeElement): void {
|
|
463
476
|
const selection = this.shadowRoot.getSelection();
|
|
464
477
|
if (selection) {
|
|
@@ -467,7 +480,7 @@ export class TreeOutlineInShadow extends TreeOutline {
|
|
|
467
480
|
}
|
|
468
481
|
}
|
|
469
482
|
|
|
470
|
-
export const treeElementBylistItemNode = new WeakMap<Node, TreeElement>();
|
|
483
|
+
export const treeElementBylistItemNode: WeakMap<Node, TreeElement> = new WeakMap<Node, TreeElement>();
|
|
471
484
|
export class TreeElement {
|
|
472
485
|
treeOutline: TreeOutline|null;
|
|
473
486
|
parent: TreeElement|null;
|
|
@@ -663,6 +676,7 @@ export class TreeElement {
|
|
|
663
676
|
for (let current = child.firstChild(); this.treeOutline && current;
|
|
664
677
|
current = current.traverseNextTreeElement(false, child, true)) {
|
|
665
678
|
this.treeOutline.bindTreeElement(current);
|
|
679
|
+
current.ensureSelection();
|
|
666
680
|
}
|
|
667
681
|
child.onattach();
|
|
668
682
|
child.ensureSelection();
|
|
@@ -945,7 +959,7 @@ export class TreeElement {
|
|
|
945
959
|
}
|
|
946
960
|
}
|
|
947
961
|
|
|
948
|
-
|
|
962
|
+
protected ensureSelection(): void {
|
|
949
963
|
if (!this.treeOutline?.renderSelection) {
|
|
950
964
|
return;
|
|
951
965
|
}
|
|
@@ -1001,12 +1015,17 @@ export class TreeElement {
|
|
|
1001
1015
|
return;
|
|
1002
1016
|
}
|
|
1003
1017
|
|
|
1018
|
+
if (event.defaultPrevented) {
|
|
1019
|
+
return;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1004
1022
|
const handled = this.ondblclick(event);
|
|
1005
1023
|
if (handled) {
|
|
1006
1024
|
return;
|
|
1007
1025
|
}
|
|
1008
1026
|
if (this.expandable && !this.expanded) {
|
|
1009
1027
|
void this.#setExpandedFromUser(true, false);
|
|
1028
|
+
this.listItemElement.focus();
|
|
1010
1029
|
}
|
|
1011
1030
|
}
|
|
1012
1031
|
|
|
@@ -1591,11 +1610,9 @@ export namespace TreeSearch {
|
|
|
1591
1610
|
}
|
|
1592
1611
|
|
|
1593
1612
|
class TreeViewTreeElement extends TreeElement {
|
|
1594
|
-
static readonly CLONED_ATTRIBUTES = SDK.DOMModel.ARIA_ATTRIBUTES.union(new Set(['jslog', 'draggable']));
|
|
1613
|
+
static readonly CLONED_ATTRIBUTES = SDK.DOMModel.ARIA_ATTRIBUTES.union(new Set(['jslog', 'draggable', 'style']));
|
|
1595
1614
|
#clonedAttributes = new Set<string>();
|
|
1596
1615
|
#clonedClasses = new Set<string>();
|
|
1597
|
-
#userExpanded = false;
|
|
1598
|
-
#isProcessingAttribute = false;
|
|
1599
1616
|
#previousOpenAttributeValue?: string|null;
|
|
1600
1617
|
#refreshScheduled = false;
|
|
1601
1618
|
|
|
@@ -1609,39 +1626,16 @@ class TreeViewTreeElement extends TreeElement {
|
|
|
1609
1626
|
this.refresh();
|
|
1610
1627
|
}
|
|
1611
1628
|
|
|
1612
|
-
override onexpand(): void {
|
|
1613
|
-
if (!this.#isProcessingAttribute) {
|
|
1614
|
-
this.#userExpanded = true;
|
|
1615
|
-
}
|
|
1616
|
-
}
|
|
1617
|
-
|
|
1618
|
-
override oncollapse(): void {
|
|
1619
|
-
if (!this.#isProcessingAttribute) {
|
|
1620
|
-
this.#userExpanded = false;
|
|
1621
|
-
}
|
|
1622
|
-
}
|
|
1623
|
-
|
|
1624
1629
|
updateExpansionFromAttribute(): void {
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
this
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
this.expand();
|
|
1635
|
-
} else {
|
|
1636
|
-
this.collapse();
|
|
1637
|
-
}
|
|
1638
|
-
} else if (openAttr === 'false') {
|
|
1639
|
-
this.collapse();
|
|
1640
|
-
} else {
|
|
1641
|
-
this.expand();
|
|
1642
|
-
}
|
|
1643
|
-
} finally {
|
|
1644
|
-
this.#isProcessingAttribute = false;
|
|
1630
|
+
const openAttr = this.configElement.getAttribute('open');
|
|
1631
|
+
if (openAttr === this.#previousOpenAttributeValue) {
|
|
1632
|
+
return;
|
|
1633
|
+
}
|
|
1634
|
+
this.#previousOpenAttributeValue = openAttr;
|
|
1635
|
+
if (openAttr !== null && openAttr !== 'false') {
|
|
1636
|
+
this.expand();
|
|
1637
|
+
} else {
|
|
1638
|
+
this.collapse();
|
|
1645
1639
|
}
|
|
1646
1640
|
}
|
|
1647
1641
|
|
|
@@ -1680,6 +1674,7 @@ class TreeViewTreeElement extends TreeElement {
|
|
|
1680
1674
|
}
|
|
1681
1675
|
|
|
1682
1676
|
refresh(): void {
|
|
1677
|
+
const hadFocus = this.listItemElement.hasFocus();
|
|
1683
1678
|
this.titleElement.textContent = '';
|
|
1684
1679
|
this.updateAttributes();
|
|
1685
1680
|
const childUl = this.configElement.querySelector(':scope > ul[role="group"]');
|
|
@@ -1698,12 +1693,29 @@ class TreeViewTreeElement extends TreeElement {
|
|
|
1698
1693
|
this.updateExpansionFromAttribute();
|
|
1699
1694
|
|
|
1700
1695
|
Highlighting.HighlightManager.HighlightManager.instance().apply(this.titleElement);
|
|
1696
|
+
if (hadFocus) {
|
|
1697
|
+
this.listItemElement.focus();
|
|
1698
|
+
}
|
|
1701
1699
|
}
|
|
1702
1700
|
|
|
1703
1701
|
static get(configElement: Node|undefined): TreeViewTreeElement|undefined {
|
|
1704
1702
|
return configElement && TreeViewTreeElement.#elementToTreeElement.get(configElement);
|
|
1705
1703
|
}
|
|
1706
1704
|
|
|
1705
|
+
override onselect(selectedByUser?: boolean): boolean {
|
|
1706
|
+
this.listItemElement.dispatchEvent(new TreeViewElement.SelectEvent({selectedByUser: Boolean(selectedByUser)}));
|
|
1707
|
+
return super.onselect(selectedByUser);
|
|
1708
|
+
}
|
|
1709
|
+
|
|
1710
|
+
override onenter(): boolean {
|
|
1711
|
+
const enterEvent = new TreeViewElement.EnterEvent();
|
|
1712
|
+
const shouldExpand = this.listItemElement.dispatchEvent(enterEvent);
|
|
1713
|
+
if (!shouldExpand) {
|
|
1714
|
+
return false;
|
|
1715
|
+
}
|
|
1716
|
+
return super.onenter();
|
|
1717
|
+
}
|
|
1718
|
+
|
|
1707
1719
|
remove(): void {
|
|
1708
1720
|
removeNode(this,
|
|
1709
1721
|
Boolean(this.parent &&
|
|
@@ -1828,12 +1840,20 @@ function removeNode(node: TreeElement, preserveParentExpandable = false): void {
|
|
|
1828
1840
|
* @attribute hide-overflow
|
|
1829
1841
|
*/
|
|
1830
1842
|
export class TreeViewElement extends HTMLElementWithLightDOMTemplate {
|
|
1831
|
-
static readonly observedAttributes =
|
|
1832
|
-
['navigation-variant', 'hide-overflow', 'dense', 'show-selection-on-keyboard-focus'];
|
|
1843
|
+
static readonly observedAttributes: string[] =
|
|
1844
|
+
['navigation-variant', 'hide-overflow', 'dense', 'show-selection-on-keyboard-focus', 'disclosure-class'];
|
|
1833
1845
|
readonly #treeOutline = new TreeOutlineInShadow(undefined, this, true);
|
|
1846
|
+
readonly #syncedTreeClasses = new Set<string>();
|
|
1834
1847
|
|
|
1835
1848
|
constructor() {
|
|
1836
1849
|
super();
|
|
1850
|
+
this.#treeOutline.contentElement.removeAttribute('jslog');
|
|
1851
|
+
if (!this.hasAttribute('jslog')) {
|
|
1852
|
+
this.setAttribute('jslog', `${VisualLogging.tree()}`);
|
|
1853
|
+
}
|
|
1854
|
+
if (this.hasAttribute('disclosure-class')) {
|
|
1855
|
+
this.#treeOutline.setDisclosureClass(this.getAttribute('disclosure-class') ?? '');
|
|
1856
|
+
}
|
|
1837
1857
|
this.addEventListener('focusin', (event: Event) => {
|
|
1838
1858
|
const actualTarget = event.composedPath()[0];
|
|
1839
1859
|
if (actualTarget === this.#treeOutline.contentElement && !this.#treeOutline.selectedTreeElement &&
|
|
@@ -1841,11 +1861,6 @@ export class TreeViewElement extends HTMLElementWithLightDOMTemplate {
|
|
|
1841
1861
|
this.#treeOutline.firstChild()?.select(/* omitFocus */ true, /* selectedByUser */ false);
|
|
1842
1862
|
}
|
|
1843
1863
|
});
|
|
1844
|
-
this.#treeOutline.addEventListener(Events.ElementSelected, event => {
|
|
1845
|
-
if (event.data instanceof TreeViewTreeElement) {
|
|
1846
|
-
event.data.listItemElement.dispatchEvent(new TreeViewElement.SelectEvent());
|
|
1847
|
-
}
|
|
1848
|
-
});
|
|
1849
1864
|
this.#treeOutline.addEventListener(Events.ElementExpanded, event => {
|
|
1850
1865
|
// TODO(crbug.com/1166669): This is a stopgap. We can remove the global event once devtools-tree-wrapper is no longer needed.
|
|
1851
1866
|
this.dispatchEvent(new TreeViewElement.TreeElementExpandEvent(event.data, true));
|
|
@@ -1899,6 +1914,24 @@ export class TreeViewElement extends HTMLElementWithLightDOMTemplate {
|
|
|
1899
1914
|
}
|
|
1900
1915
|
|
|
1901
1916
|
protected override updateNode(node: Node, attributeName: string|null): void {
|
|
1917
|
+
if (node instanceof HTMLUListElement && node.role === 'tree') {
|
|
1918
|
+
if (attributeName === null || attributeName === 'class') {
|
|
1919
|
+
for (const cls of this.#syncedTreeClasses) {
|
|
1920
|
+
if (!node.classList.contains(cls)) {
|
|
1921
|
+
this.#treeOutline.contentElement.classList.remove(cls);
|
|
1922
|
+
}
|
|
1923
|
+
}
|
|
1924
|
+
this.#syncedTreeClasses.clear();
|
|
1925
|
+
for (const cls of node.classList) {
|
|
1926
|
+
if (cls) {
|
|
1927
|
+
this.#syncedTreeClasses.add(cls);
|
|
1928
|
+
this.#treeOutline.contentElement.classList.add(cls);
|
|
1929
|
+
}
|
|
1930
|
+
}
|
|
1931
|
+
this.#treeOutline.contentElement.classList.add('tree-outline');
|
|
1932
|
+
}
|
|
1933
|
+
return;
|
|
1934
|
+
}
|
|
1902
1935
|
let current: Node|null = node;
|
|
1903
1936
|
while (current?.parentNode && !(current instanceof HTMLElement)) {
|
|
1904
1937
|
current = current.parentNode;
|
|
@@ -2039,14 +2072,17 @@ export class TreeViewElement extends HTMLElementWithLightDOMTemplate {
|
|
|
2039
2072
|
case 'show-selection-on-keyboard-focus':
|
|
2040
2073
|
this.#treeOutline.setShowSelectionOnKeyboardFocus(booleanValueIsTrue);
|
|
2041
2074
|
break;
|
|
2075
|
+
case 'disclosure-class':
|
|
2076
|
+
this.#treeOutline.setDisclosureClass(newValue ?? '');
|
|
2077
|
+
break;
|
|
2042
2078
|
}
|
|
2043
2079
|
}
|
|
2044
2080
|
}
|
|
2045
2081
|
|
|
2046
2082
|
export namespace TreeViewElement {
|
|
2047
|
-
export class SelectEvent extends CustomEvent<
|
|
2048
|
-
constructor() {
|
|
2049
|
-
super('select');
|
|
2083
|
+
export class SelectEvent extends CustomEvent<{selectedByUser?: boolean}> {
|
|
2084
|
+
constructor(detail?: {selectedByUser?: boolean}) {
|
|
2085
|
+
super('select', {detail});
|
|
2050
2086
|
}
|
|
2051
2087
|
}
|
|
2052
2088
|
|
|
@@ -2056,6 +2092,12 @@ export namespace TreeViewElement {
|
|
|
2056
2092
|
}
|
|
2057
2093
|
}
|
|
2058
2094
|
|
|
2095
|
+
export class EnterEvent extends CustomEvent<void> {
|
|
2096
|
+
constructor() {
|
|
2097
|
+
super('enter', {bubbles: true, cancelable: true, composed: true});
|
|
2098
|
+
}
|
|
2099
|
+
}
|
|
2100
|
+
|
|
2059
2101
|
/**
|
|
2060
2102
|
* @deprecated
|
|
2061
2103
|
*/
|
|
@@ -2104,7 +2146,8 @@ class IfExpandedDirective extends Lit.Directive.Directive {
|
|
|
2104
2146
|
return node.expanded;
|
|
2105
2147
|
}
|
|
2106
2148
|
}
|
|
2107
|
-
export const ifExpanded
|
|
2149
|
+
export const ifExpanded: (content: Lit.LitTemplate|Iterable<Lit.LitTemplate>) =>
|
|
2150
|
+
Lit.DirectiveResult<typeof IfExpandedDirective> = Lit.Directive.directive(IfExpandedDirective);
|
|
2108
2151
|
|
|
2109
2152
|
export class TreeElementWrapper extends HTMLElement {
|
|
2110
2153
|
#treeElement?: TreeElement;
|
|
@@ -71,7 +71,8 @@ declare global {
|
|
|
71
71
|
'dt-small-bubble': DevToolsSmallBubble;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
const
|
|
74
|
+
const Directives: typeof Lit.Directives = Lit.Directives;
|
|
75
|
+
const render: typeof Lit.render = Lit.render;
|
|
75
76
|
|
|
76
77
|
const UIStrings = {
|
|
77
78
|
/**
|
|
@@ -753,7 +754,8 @@ class AnimateOnDirective extends Lit.Directive.Directive {
|
|
|
753
754
|
}
|
|
754
755
|
}
|
|
755
756
|
|
|
756
|
-
export const animateOn
|
|
757
|
+
export const animateOn: (_condition: boolean, _className: string) => Lit.DirectiveResult<typeof AnimateOnDirective> =
|
|
758
|
+
Lit.Directive.directive(AnimateOnDirective);
|
|
757
759
|
|
|
758
760
|
export function measurePreferredSize(element: Element, containerElement?: Element|null): Geometry.Size {
|
|
759
761
|
const oldParent = element.parentElement;
|
|
@@ -1195,7 +1197,8 @@ export function setTitle(element: HTMLElement, title: string): void {
|
|
|
1195
1197
|
}
|
|
1196
1198
|
|
|
1197
1199
|
export class CheckboxLabel extends HTMLElement {
|
|
1198
|
-
static readonly observedAttributes
|
|
1200
|
+
static readonly observedAttributes: string[] =
|
|
1201
|
+
['checked', 'disabled', 'indeterminate', 'name', 'title', 'aria-label', 'small'];
|
|
1199
1202
|
|
|
1200
1203
|
readonly #shadowRoot!: DocumentFragment;
|
|
1201
1204
|
#checkboxElement!: HTMLInputElement;
|
|
@@ -2080,7 +2083,8 @@ export class HTMLElementWithLightDOMTemplate extends HTMLElement {
|
|
|
2080
2083
|
const clones: Node[] = [];
|
|
2081
2084
|
for (const cloneRef of cloneSet) {
|
|
2082
2085
|
const clone = cloneRef.deref();
|
|
2083
|
-
|
|
2086
|
+
const root = clone?.getRootNode();
|
|
2087
|
+
if (clone && (root instanceof Document || root instanceof DocumentFragment)) {
|
|
2084
2088
|
clones.push(clone);
|
|
2085
2089
|
} else {
|
|
2086
2090
|
cloneSet.delete(cloneRef);
|
|
@@ -173,7 +173,7 @@ export interface EventTypes {
|
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
export class ViewManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
|
|
176
|
-
readonly views = new Map<string, View>();
|
|
176
|
+
readonly views: Map<string, View> = new Map<string, View>();
|
|
177
177
|
private readonly locationNameByViewId = new Map<string, string>();
|
|
178
178
|
private readonly locationOverrideSetting: Common.Settings.Setting<Record<string, string>>;
|
|
179
179
|
|
|
@@ -212,7 +212,7 @@ function runNextUpdate(): void {
|
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
215
|
-
export const widgetConfigs = new WeakMap<HTMLElement, WidgetConfig<any>>();
|
|
215
|
+
export const widgetConfigs: WeakMap<HTMLElement, WidgetConfig<any>> = new WeakMap<HTMLElement, WidgetConfig<any>>();
|
|
216
216
|
|
|
217
217
|
export function registerWidgetConfig<WidgetT extends AnyWidget>(element: HTMLElement,
|
|
218
218
|
config: WidgetConfig<WidgetT>): void {
|
|
@@ -1645,7 +1645,13 @@ const MaterialPaletteShades = new Map([
|
|
|
1645
1645
|
],
|
|
1646
1646
|
]);
|
|
1647
1647
|
|
|
1648
|
-
export const MaterialPalette
|
|
1648
|
+
export const MaterialPalette: {
|
|
1649
|
+
title: string,
|
|
1650
|
+
mutable: boolean,
|
|
1651
|
+
matchUserFormat: boolean,
|
|
1652
|
+
colors: string[],
|
|
1653
|
+
colorNames: string[],
|
|
1654
|
+
} = {
|
|
1649
1655
|
title: 'Material',
|
|
1650
1656
|
mutable: false,
|
|
1651
1657
|
matchUserFormat: true,
|
|
@@ -1756,7 +1756,7 @@ export class DataGridNode<T> {
|
|
|
1756
1756
|
selectable = true;
|
|
1757
1757
|
isRoot = false;
|
|
1758
1758
|
nodeAccessibleText = '';
|
|
1759
|
-
cellAccessibleTextMap = new Map<string, string>();
|
|
1759
|
+
cellAccessibleTextMap: Map<string, string> = new Map<string, string>();
|
|
1760
1760
|
isCreationNode = false;
|
|
1761
1761
|
#data: DataGridData;
|
|
1762
1762
|
#hasChildren: boolean;
|
|
@@ -58,7 +58,7 @@ type DataGridElementNode = SortableNode|DynamicHeightNode;
|
|
|
58
58
|
const elementToNode = new WeakMap<Element, DataGridElementNode>();
|
|
59
59
|
|
|
60
60
|
export class DataGridElement extends UI.UIUtils.HTMLElementWithLightDOMTemplate {
|
|
61
|
-
static readonly observedAttributes = ['striped', 'name', 'inline', 'resize', 'highlight'];
|
|
61
|
+
static readonly observedAttributes: string[] = ['striped', 'name', 'inline', 'resize', 'highlight'];
|
|
62
62
|
|
|
63
63
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
64
64
|
#dataGrid!: DataGridImpl<any>;
|
|
@@ -805,7 +805,8 @@ class IfExpandedDirective extends Lit.Directive.Directive {
|
|
|
805
805
|
return node.expanded;
|
|
806
806
|
}
|
|
807
807
|
}
|
|
808
|
-
export const ifExpanded
|
|
808
|
+
export const ifExpanded: (content: Lit.LitTemplate|Iterable<Lit.LitTemplate>) =>
|
|
809
|
+
Lit.DirectiveResult<typeof IfExpandedDirective> = Lit.Directive.directive(IfExpandedDirective);
|
|
809
810
|
|
|
810
811
|
function getNode(element: Element|undefined): DataGridElementNode|undefined {
|
|
811
812
|
return element ? elementToNode.get(element) : undefined;
|