chrome-devtools-frontend 1.0.1550444 → 1.0.1555174
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/docs/styleguide/ux/components.md +34 -8
- package/eslint.config.mjs +7 -0
- package/front_end/Images/generate-css-vars.js +8 -4
- package/front_end/Images/src/spark.svg +10 -0
- package/front_end/core/common/Settings.ts +20 -8
- package/front_end/core/host/UserMetrics.ts +3 -1
- package/front_end/core/i18n/collect-ui-strings.js +19 -10
- package/front_end/core/i18n/generate-locales-js.js +4 -4
- package/front_end/core/protocol_client/CDPConnection.ts +1 -0
- package/front_end/core/protocol_client/InspectorBackend.ts +5 -1
- package/front_end/core/root/Runtime.ts +0 -12
- package/front_end/core/sdk/DOMModel.ts +38 -3
- package/front_end/core/sdk/DebuggerModel.ts +9 -4
- package/front_end/core/sdk/IsolateManager.ts +7 -0
- package/front_end/core/sdk/PageResourceLoader.ts +3 -3
- package/front_end/core/sdk/RehydratingConnection.ts +5 -2
- package/front_end/core/sdk/ResourceTreeModel.ts +0 -1
- package/front_end/entrypoints/main/MainImpl.ts +28 -10
- package/front_end/generated/SupportedCSSProperties.js +32 -0
- package/front_end/models/ai_assistance/AiConversation.ts +94 -4
- package/front_end/models/ai_assistance/agents/AiAgent.ts +30 -15
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +179 -41
- package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +5 -0
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +62 -0
- package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +2 -1
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +1 -7
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +124 -12
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +125 -30
- package/front_end/models/ai_assistance/performance/AICallTree.ts +42 -0
- package/front_end/models/ai_code_generation/AiCodeGeneration.ts +12 -0
- package/front_end/models/issues_manager/Issue.ts +1 -0
- package/front_end/models/issues_manager/IssueAggregator.ts +9 -0
- package/front_end/models/issues_manager/IssuesManager.ts +5 -0
- package/front_end/models/issues_manager/PermissionElementIssue.ts +262 -0
- package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabled.md +7 -0
- package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluder.md +9 -0
- package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluderParent.md +9 -0
- package/front_end/models/issues_manager/descriptions/permissionElementCspFrameAncestorsMissing.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementFencedFrameDisallowed.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooLarge.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooSmall.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementGeolocationDeprecated.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementInsetBoxShadowUnsupported.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidDisplayStyle.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidSizeValue.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidType.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidTypeActivation.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementLowContrast.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementNonOpaqueColor.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementPaddingBottomUnsupported.md +6 -0
- package/front_end/models/issues_manager/descriptions/permissionElementPaddingRightUnsupported.md +6 -0
- package/front_end/models/issues_manager/descriptions/permissionElementPermissionsPolicyBlocked.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementRegistrationFailed.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementRequestInProgress.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementSecurityChecksFailed.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementTypeNotSupported.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementUntrustedEvent.md +7 -0
- package/front_end/models/issues_manager/issues_manager.ts +2 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +23 -23
- package/front_end/models/stack_trace/StackTraceModel.ts +37 -18
- package/front_end/models/trace/Processor.ts +14 -15
- package/front_end/models/trace/insights/Common.ts +2 -8
- package/front_end/models/trace/insights/types.ts +12 -2
- package/front_end/models/trace/types/TraceEvents.ts +4 -1
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +28 -6
- package/front_end/panels/ai_assistance/ai_assistance-meta.ts +9 -23
- package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
- package/front_end/panels/ai_assistance/components/ChatView.ts +78 -2
- package/front_end/panels/ai_assistance/components/CollapsibleAssistanceContentWidget.ts +71 -0
- package/front_end/panels/ai_assistance/components/PerformanceAgentFlameChart.ts +126 -0
- package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +131 -2
- package/front_end/panels/ai_assistance/components/chatView.css +28 -0
- package/front_end/panels/ai_assistance/components/collapsibleAssistanceContentWidget.css +33 -0
- package/front_end/panels/application/AppManifestView.ts +1007 -521
- package/front_end/panels/application/ApplicationPanelSidebar.ts +1 -17
- package/front_end/panels/application/BounceTrackingMitigationsTreeElement.ts +2 -6
- package/front_end/panels/application/ExtensionStorageItemsView.ts +3 -5
- package/front_end/panels/application/KeyValueStorageItemsView.ts +3 -2
- package/front_end/panels/application/components/BackForwardCacheView.ts +2 -2
- package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +133 -118
- package/front_end/panels/application/preloading/PreloadingView.ts +46 -45
- package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +80 -75
- package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +169 -133
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +74 -93
- package/front_end/panels/application/preloading/components/RuleSetGrid.ts +142 -117
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +51 -11
- package/front_end/panels/application/preloading/components/components.ts +0 -2
- package/front_end/panels/common/Annotation.ts +184 -0
- package/front_end/panels/common/AnnotationManager.ts +148 -11
- package/front_end/panels/common/ExtensionView.ts +47 -0
- package/front_end/panels/common/PersistenceUtils.ts +22 -25
- package/front_end/panels/common/annotation.css +40 -0
- package/front_end/panels/common/common.ts +1 -0
- package/front_end/panels/console/ConsoleInsightTeaser.ts +187 -5
- package/front_end/panels/console/ConsolePinPane.ts +437 -217
- package/front_end/panels/console/ConsolePrompt.ts +32 -223
- package/front_end/panels/console/ConsoleView.ts +67 -66
- package/front_end/panels/console/ConsoleViewMessage.ts +8 -3
- package/front_end/panels/console/consoleInsightTeaser.css +23 -0
- package/front_end/panels/console/consoleView.css +1 -1
- package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +89 -0
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +2 -2
- package/front_end/panels/elements/ComputedStyleWidget.ts +16 -5
- package/front_end/panels/elements/ElementsPanel.ts +38 -12
- package/front_end/panels/elements/ElementsSidebarPane.ts +1 -3
- package/front_end/panels/elements/ElementsTreeElement.ts +313 -353
- package/front_end/panels/elements/ElementsTreeOutline.ts +39 -13
- package/front_end/panels/elements/StylePropertyTreeElement.ts +15 -14
- package/front_end/panels/elements/StylesSidebarPane.ts +1 -1
- package/front_end/panels/emulation/MediaQueryInspector.ts +171 -125
- package/front_end/panels/explain/components/ConsoleInsight.ts +175 -150
- package/front_end/panels/explain/components/consoleInsight.css +348 -347
- package/front_end/panels/issues/AffectedPermissionElementsView.ts +46 -0
- package/front_end/panels/issues/IssueView.ts +2 -0
- package/front_end/panels/issues/IssuesPane.ts +6 -0
- package/front_end/panels/layer_viewer/LayerDetailsView.ts +165 -149
- package/front_end/panels/layer_viewer/Layers3DView.ts +131 -78
- package/front_end/panels/lighthouse/LighthouseStatusView.ts +149 -100
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +90 -64
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +25 -34
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +60 -44
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +170 -151
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +50 -51
- package/front_end/panels/linear_memory_inspector/components/valueInterpreterDisplay.css +0 -13
- package/front_end/panels/linear_memory_inspector/components/valueInterpreterSettings.css +20 -18
- package/front_end/panels/mobile_throttling/CalibrationController.ts +3 -1
- package/front_end/panels/network/NetworkDataGridNode.ts +14 -6
- package/front_end/panels/network/NetworkItemView.ts +42 -3
- package/front_end/panels/network/NetworkLogView.ts +10 -11
- package/front_end/panels/network/NetworkPanel.ts +63 -1
- package/front_end/panels/network/RequestInitiatorView.ts +146 -113
- package/front_end/panels/network/components/RequestHeaderSection.css +51 -50
- package/front_end/panels/network/components/RequestHeaderSection.ts +81 -71
- package/front_end/panels/network/components/RequestHeadersView.css +1 -1
- package/front_end/panels/network/components/RequestHeadersView.ts +26 -11
- package/front_end/panels/network/components/RequestTrustTokensView.css +24 -14
- package/front_end/panels/network/components/RequestTrustTokensView.ts +144 -140
- package/front_end/panels/profiler/IsolateSelector.ts +2 -1
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +49 -33
- package/front_end/panels/recorder/RecorderController.ts +2 -3
- package/front_end/panels/recorder/components/ControlButton.ts +68 -34
- package/front_end/panels/recorder/components/CreateRecordingView.ts +9 -6
- package/front_end/panels/recorder/components/RecordingView.ts +81 -88
- package/front_end/panels/recorder/components/ReplaySection.ts +226 -145
- package/front_end/panels/recorder/{controllers → components}/SelectorPicker.ts +129 -52
- package/front_end/panels/recorder/components/StepEditor.ts +21 -67
- package/front_end/panels/recorder/components/StepView.ts +222 -180
- package/front_end/panels/recorder/components/TimelineSection.ts +69 -48
- package/front_end/panels/recorder/components/components.ts +2 -2
- package/front_end/panels/recorder/components/selectorPicker.css +14 -0
- package/front_end/panels/recorder/components/stepEditor.css +0 -5
- package/front_end/panels/recorder/components/stepView.css +196 -198
- package/front_end/panels/recorder/extensions/ExtensionManager.ts +4 -48
- package/front_end/panels/recorder/models/ScreenshotUtils.ts +17 -11
- package/front_end/panels/security/CookieControlsView.ts +30 -26
- package/front_end/panels/settings/components/SyncSection.ts +0 -1
- package/front_end/panels/sources/CSSPlugin.ts +3 -3
- package/front_end/panels/sources/CallStackSidebarPane.ts +60 -75
- package/front_end/panels/sources/SourcesPanel.ts +1 -11
- package/front_end/panels/sources/TabbedEditorContainer.ts +11 -8
- package/front_end/panels/sources/ThreadsSidebarPane.ts +96 -101
- package/front_end/panels/sources/threadsSidebarPane.css +6 -5
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +0 -1
- package/front_end/panels/timeline/InteractionsTrackAppender.ts +2 -3
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +23 -33
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +4 -3
- package/front_end/panels/timeline/TimelineFlameChartView.ts +12 -0
- package/front_end/panels/timeline/TimelinePanel.ts +3 -5
- package/front_end/panels/timeline/components/IgnoreListSetting.ts +164 -142
- package/front_end/panels/timeline/components/InteractionBreakdown.ts +48 -28
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +18 -23
- package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +98 -73
- package/front_end/panels/timeline/components/Sidebar.ts +16 -7
- package/front_end/panels/timeline/components/SidebarInsightsTab.ts +174 -137
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +262 -291
- package/front_end/panels/timeline/components/Utils.ts +25 -0
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +210 -146
- package/front_end/panels/timeline/components/insights/CLSCulprits.ts +8 -20
- package/front_end/panels/timeline/components/insights/Cache.ts +0 -9
- package/front_end/panels/timeline/components/insights/Checklist.ts +53 -43
- package/front_end/panels/timeline/components/insights/DOMSize.ts +11 -33
- package/front_end/panels/timeline/components/insights/DocumentLatency.ts +6 -12
- package/front_end/panels/timeline/components/insights/DuplicatedJavaScript.ts +0 -9
- package/front_end/panels/timeline/components/insights/EventRef.ts +47 -109
- package/front_end/panels/timeline/components/insights/FontDisplay.ts +0 -9
- package/front_end/panels/timeline/components/insights/ForcedReflow.ts +0 -9
- package/front_end/panels/timeline/components/insights/INPBreakdown.ts +0 -9
- package/front_end/panels/timeline/components/insights/ImageDelivery.ts +1 -10
- package/front_end/panels/timeline/components/insights/ImageRef.ts +112 -0
- package/front_end/panels/timeline/components/insights/InsightRenderer.ts +91 -0
- package/front_end/panels/timeline/components/insights/LCPBreakdown.ts +0 -9
- package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +11 -14
- package/front_end/panels/timeline/components/insights/LegacyJavaScript.ts +0 -9
- package/front_end/panels/timeline/components/insights/ModernHTTP.ts +0 -9
- package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +6 -21
- package/front_end/panels/timeline/components/insights/NodeLink.ts +68 -43
- package/front_end/panels/timeline/components/insights/README.md +2 -3
- package/front_end/panels/timeline/components/insights/RenderBlocking.ts +0 -9
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +0 -9
- package/front_end/panels/timeline/components/insights/ThirdParties.ts +0 -9
- package/front_end/panels/timeline/components/insights/Viewport.ts +7 -19
- package/front_end/panels/timeline/components/insights/baseInsightComponent.css +5 -0
- package/front_end/panels/timeline/components/insights/insights.ts +2 -0
- package/front_end/panels/timeline/components/interactionBreakdown.css +15 -13
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +50 -48
- package/front_end/panels/timeline/enable-easter-egg.js +7 -3
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.d.ts +96 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.js +8 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +87 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.d.ts +2 -6
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.js +5 -24
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +5 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.d.ts +18 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.js +42 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts +4 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +10 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.d.ts +27 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.js +90 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +3 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +4 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +4 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +14 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.d.ts +18 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.js +30 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +5 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +22 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts +2 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js +4 -6
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +8 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.js +8 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js +30 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +15 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js +2 -13
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts +5 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.js +17 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +221 -4
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +182 -95
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.d.ts +96 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +87 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.d.ts +2 -6
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.js +4 -22
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +5 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.d.ts +18 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.js +38 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts +4 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +10 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.d.ts +27 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.js +85 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +3 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +4 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +4 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +14 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.d.ts +18 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.js +26 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +5 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +22 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts +2 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js +2 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +8 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.js +8 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js +31 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +15 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js +2 -13
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts +5 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.js +16 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +221 -4
- package/front_end/third_party/puppeteer/package/package.json +4 -4
- package/front_end/third_party/puppeteer/package/src/api/BluetoothEmulation.ts +103 -0
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +96 -1
- package/front_end/third_party/puppeteer/package/src/api/DeviceRequestPrompt.ts +2 -10
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +6 -0
- package/front_end/third_party/puppeteer/package/src/api/api.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/bidi/BluetoothEmulation.ts +52 -0
- package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +15 -0
- package/front_end/third_party/puppeteer/package/src/bidi/DeviceRequestPrompt.ts +138 -0
- package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +7 -3
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +10 -2
- package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +30 -2
- package/front_end/third_party/puppeteer/package/src/bidi/util.ts +8 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/BluetoothEmulation.ts +47 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +33 -3
- package/front_end/third_party/puppeteer/package/src/cdp/CdpSession.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/DeviceRequestPrompt.ts +3 -8
- package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/cdp/FrameManager.ts +9 -4
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +13 -0
- package/front_end/third_party/puppeteer/package/src/cdp/WebWorker.ts +8 -3
- package/front_end/third_party/puppeteer/package/src/cdp/cdp.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +45 -1
- package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +20 -0
- package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +5 -17
- package/front_end/third_party/puppeteer/package/src/node/LaunchOptions.ts +23 -7
- 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 +4 -0
- package/front_end/ui/components/annotations/AnnotationRepository.ts +153 -13
- package/front_end/ui/components/settings/SettingCheckbox.ts +4 -6
- package/front_end/ui/components/snackbars/Snackbars.docs.ts +0 -1
- package/front_end/ui/components/text_editor/AiCodeCompletionTeaserPlaceholder.ts +12 -3
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +182 -0
- package/front_end/ui/components/text_editor/text_editor.ts +1 -0
- package/front_end/ui/helpers/OpenInNewTab.ts +5 -1
- package/front_end/ui/i18n/i18n.ts +9 -9
- package/front_end/ui/kit/icons/Icon.docs.ts +22 -65
- package/front_end/ui/kit/kit.ts +1 -0
- package/front_end/ui/kit/link/Link.docs.ts +15 -0
- package/front_end/ui/kit/link/Link.ts +151 -0
- package/front_end/ui/kit/link/link.css +27 -0
- package/front_end/ui/legacy/EmptyWidget.ts +6 -0
- package/front_end/ui/legacy/Floaty.ts +442 -0
- package/front_end/ui/legacy/InspectorView.ts +12 -0
- package/front_end/ui/legacy/ReportView.ts +1 -1
- package/front_end/ui/legacy/SelectMenu.docs.ts +0 -1
- package/front_end/ui/legacy/TabbedPane.ts +150 -65
- package/front_end/ui/legacy/Widget.ts +1 -3
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +1 -1
- package/front_end/ui/legacy/components/inline_editor/ColorSwatch.ts +36 -36
- package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +22 -37
- package/front_end/ui/legacy/components/object_ui/RemoteObjectPreviewFormatter.ts +31 -1
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +2 -2
- package/front_end/ui/legacy/components/utils/Linkifier.ts +7 -11
- package/front_end/ui/legacy/floaty.css +77 -0
- package/front_end/ui/legacy/legacy.ts +2 -0
- package/front_end/ui/legacy/tabbedPane.css +4 -7
- package/front_end/ui/visual_logging/KnownContextValues.ts +7 -0
- package/inspector_overlay/loadCSS.rollup.js +5 -4
- package/package.json +2 -2
- package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.ts +0 -99
- package/front_end/panels/recorder/components/SelectButton.ts +0 -304
- package/front_end/panels/recorder/controllers/controllers.ts +0 -7
- package/front_end/ui/components/chrome_link/ChromeLink.ts +0 -76
- package/front_end/ui/components/chrome_link/chromeLink.css +0 -12
- package/front_end/ui/components/chrome_link/chrome_link.ts +0 -9
- /package/front_end/panels/recorder/components/{selectButton.css → replaySection.css} +0 -0
|
@@ -47,6 +47,7 @@ import * as UI from '../../ui/legacy/legacy.js';
|
|
|
47
47
|
import {html, nothing, render} from '../../ui/lit/lit.js';
|
|
48
48
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
49
49
|
|
|
50
|
+
import {AdoptedStyleSheetTreeElement} from './AdoptedStyleSheetTreeElement.js';
|
|
50
51
|
import {getElementIssueDetails} from './ElementIssueUtils.js';
|
|
51
52
|
import {ElementsPanel} from './ElementsPanel.js';
|
|
52
53
|
import {ElementsTreeElement, InitialChildrenLimit, isOpeningTag} from './ElementsTreeElement.js';
|
|
@@ -119,8 +120,8 @@ export const DEFAULT_VIEW = (input: ViewInput, output: ViewOutput, target: HTMLE
|
|
|
119
120
|
ElementsTreeOutline.Events.SelectedNodeChanged, input.onSelectedNodeChanged, this);
|
|
120
121
|
output.elementsTreeOutline.addEventListener(
|
|
121
122
|
ElementsTreeOutline.Events.ElementsTreeUpdated, input.onElementsTreeUpdated, this);
|
|
122
|
-
output.elementsTreeOutline.addEventListener(UI.TreeOutline.Events.ElementExpanded, input.
|
|
123
|
-
output.elementsTreeOutline.addEventListener(UI.TreeOutline.Events.ElementCollapsed, input.
|
|
123
|
+
output.elementsTreeOutline.addEventListener(UI.TreeOutline.Events.ElementExpanded, input.onElementExpanded, this);
|
|
124
|
+
output.elementsTreeOutline.addEventListener(UI.TreeOutline.Events.ElementCollapsed, input.onElementCollapsed, this);
|
|
124
125
|
target.appendChild(output.elementsTreeOutline.element);
|
|
125
126
|
}
|
|
126
127
|
if (input.visibleWidth !== undefined) {
|
|
@@ -198,6 +199,8 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
198
199
|
Common.EventTarget.EventTargetEvent<{node: SDK.DOMModel.DOMNode | null, focus: boolean}>) => void = () => {};
|
|
199
200
|
onElementsTreeUpdated: (event: Common.EventTarget.EventTargetEvent<SDK.DOMModel.DOMNode[]>) => void = () => {};
|
|
200
201
|
onDocumentUpdated: (domModel: SDK.DOMModel.DOMModel) => void = () => {};
|
|
202
|
+
onElementExpanded: () => void = () => {};
|
|
203
|
+
onElementCollapsed: () => void = () => {};
|
|
201
204
|
|
|
202
205
|
#visible = false;
|
|
203
206
|
#visibleWidth?: number;
|
|
@@ -322,8 +325,14 @@ export class DOMTreeWidget extends UI.Widget.Widget {
|
|
|
322
325
|
this.#clearHighlightedNode();
|
|
323
326
|
this.onSelectedNodeChanged(event);
|
|
324
327
|
},
|
|
325
|
-
onElementCollapsed:
|
|
326
|
-
|
|
328
|
+
onElementCollapsed: () => {
|
|
329
|
+
this.#clearHighlightedNode();
|
|
330
|
+
this.onElementCollapsed();
|
|
331
|
+
},
|
|
332
|
+
onElementExpanded: () => {
|
|
333
|
+
this.#clearHighlightedNode();
|
|
334
|
+
this.onElementExpanded();
|
|
335
|
+
},
|
|
327
336
|
},
|
|
328
337
|
this.#viewOutput, this.contentElement);
|
|
329
338
|
}
|
|
@@ -945,7 +954,10 @@ export class ElementsTreeOutline extends
|
|
|
945
954
|
this.dispatchEventToListeners(ElementsTreeOutline.Events.ElementsTreeUpdated, nodes);
|
|
946
955
|
}
|
|
947
956
|
|
|
948
|
-
findTreeElement(node: SDK.DOMModel.DOMNode): ElementsTreeElement|null {
|
|
957
|
+
findTreeElement(node: SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet): ElementsTreeElement|null {
|
|
958
|
+
if (node instanceof SDK.DOMModel.AdoptedStyleSheet) {
|
|
959
|
+
return null;
|
|
960
|
+
}
|
|
949
961
|
let treeElement = this.lookUpTreeElement(node);
|
|
950
962
|
if (!treeElement && node.nodeType() === Node.TEXT_NODE) {
|
|
951
963
|
// The text node might have been inlined if it was short, so try to find the parent element.
|
|
@@ -1518,6 +1530,7 @@ export class ElementsTreeOutline extends
|
|
|
1518
1530
|
domModel.addEventListener(SDK.DOMModel.Events.ScrollableFlagUpdated, this.scrollableFlagUpdated, this);
|
|
1519
1531
|
domModel.addEventListener(
|
|
1520
1532
|
SDK.DOMModel.Events.AffectedByStartingStylesFlagUpdated, this.affectedByStartingStylesFlagUpdated, this);
|
|
1533
|
+
domModel.addEventListener(SDK.DOMModel.Events.AdoptedStyleSheetsModified, this.adoptedStyleSheetsModified, this);
|
|
1521
1534
|
}
|
|
1522
1535
|
|
|
1523
1536
|
unwireFromDOMModel(domModel: SDK.DOMModel.DOMModel): void {
|
|
@@ -1534,6 +1547,7 @@ export class ElementsTreeOutline extends
|
|
|
1534
1547
|
domModel.removeEventListener(SDK.DOMModel.Events.ScrollableFlagUpdated, this.scrollableFlagUpdated, this);
|
|
1535
1548
|
domModel.removeEventListener(
|
|
1536
1549
|
SDK.DOMModel.Events.AffectedByStartingStylesFlagUpdated, this.affectedByStartingStylesFlagUpdated, this);
|
|
1550
|
+
domModel.removeEventListener(SDK.DOMModel.Events.AdoptedStyleSheetsModified, this.adoptedStyleSheetsModified, this);
|
|
1537
1551
|
elementsTreeOutlineByDOMModel.delete(domModel);
|
|
1538
1552
|
}
|
|
1539
1553
|
|
|
@@ -1612,6 +1626,12 @@ export class ElementsTreeOutline extends
|
|
|
1612
1626
|
this.updateModifiedNodesSoon();
|
|
1613
1627
|
}
|
|
1614
1628
|
|
|
1629
|
+
private adoptedStyleSheetsModified(event: Common.EventTarget.EventTargetEvent<SDK.DOMModel.DOMNode>): void {
|
|
1630
|
+
const node = event.data;
|
|
1631
|
+
this.addUpdateRecord(node).childrenModified();
|
|
1632
|
+
this.updateModifiedNodesSoon();
|
|
1633
|
+
}
|
|
1634
|
+
|
|
1615
1635
|
private updateModifiedNodesSoon(): void {
|
|
1616
1636
|
if (!this.updateRecords.size) {
|
|
1617
1637
|
return;
|
|
@@ -1711,7 +1731,11 @@ export class ElementsTreeOutline extends
|
|
|
1711
1731
|
this.#topLayerContainerByParent.set(parent, container);
|
|
1712
1732
|
}
|
|
1713
1733
|
|
|
1714
|
-
private createElementTreeElement(node: SDK.DOMModel.DOMNode, isClosingTag?: boolean):
|
|
1734
|
+
private createElementTreeElement(node: SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet, isClosingTag?: boolean):
|
|
1735
|
+
UI.TreeOutline.TreeElement {
|
|
1736
|
+
if (node instanceof SDK.DOMModel.AdoptedStyleSheet) {
|
|
1737
|
+
return new AdoptedStyleSheetTreeElement(node);
|
|
1738
|
+
}
|
|
1715
1739
|
const treeElement = new ElementsTreeElement(node, isClosingTag);
|
|
1716
1740
|
treeElement.setExpandable(!isClosingTag && this.hasVisibleChildren(node));
|
|
1717
1741
|
if (node.nodeType() === Node.ELEMENT_NODE && node.parentNode && node.parentNode.nodeType() === Node.DOCUMENT_NODE &&
|
|
@@ -1743,8 +1767,8 @@ export class ElementsTreeOutline extends
|
|
|
1743
1767
|
return treeElement.childAt(index) as ElementsTreeElement;
|
|
1744
1768
|
}
|
|
1745
1769
|
|
|
1746
|
-
private visibleChildren(node: SDK.DOMModel.DOMNode): SDK.DOMModel.DOMNode
|
|
1747
|
-
let visibleChildren = ElementsTreeElement.visibleShadowRoots(node);
|
|
1770
|
+
private visibleChildren(node: SDK.DOMModel.DOMNode): Array<SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet> {
|
|
1771
|
+
let visibleChildren = [...node.adoptedStyleSheetsForNode, ...ElementsTreeElement.visibleShadowRoots(node)];
|
|
1748
1772
|
|
|
1749
1773
|
const contentDocument = node.contentDocument();
|
|
1750
1774
|
if (contentDocument) {
|
|
@@ -1870,8 +1894,8 @@ export class ElementsTreeOutline extends
|
|
|
1870
1894
|
}
|
|
1871
1895
|
|
|
1872
1896
|
insertChildElement(
|
|
1873
|
-
treeElement: ElementsTreeElement|TopLayerContainer, child: SDK.DOMModel.DOMNode,
|
|
1874
|
-
isClosingTag?: boolean):
|
|
1897
|
+
treeElement: ElementsTreeElement|TopLayerContainer, child: SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet,
|
|
1898
|
+
index: number, isClosingTag?: boolean): UI.TreeOutline.TreeElement {
|
|
1875
1899
|
const newElement = this.createElementTreeElement(child, isClosingTag);
|
|
1876
1900
|
treeElement.insertChild(newElement, index);
|
|
1877
1901
|
if (child instanceof SDK.DOMModel.DOMDocument) {
|
|
@@ -1903,11 +1927,12 @@ export class ElementsTreeOutline extends
|
|
|
1903
1927
|
|
|
1904
1928
|
const node = treeElement.node();
|
|
1905
1929
|
const visibleChildren = this.visibleChildren(node);
|
|
1906
|
-
const visibleChildrenSet = new Set<SDK.DOMModel.DOMNode>(visibleChildren);
|
|
1930
|
+
const visibleChildrenSet = new Set<SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet>(visibleChildren);
|
|
1907
1931
|
|
|
1908
1932
|
// Remove any tree elements that no longer have this node as their parent and save
|
|
1909
1933
|
// all existing elements that could be reused. This also removes closing tag element.
|
|
1910
|
-
const existingTreeElements =
|
|
1934
|
+
const existingTreeElements =
|
|
1935
|
+
new Map<SDK.DOMModel.DOMNode|SDK.DOMModel.AdoptedStyleSheet, UI.TreeOutline.TreeElement&ElementsTreeElement>();
|
|
1911
1936
|
for (let i = treeElement.childCount() - 1; i >= 0; --i) {
|
|
1912
1937
|
const existingTreeElement = treeElement.childAt(i);
|
|
1913
1938
|
if (!(existingTreeElement instanceof ElementsTreeElement)) {
|
|
@@ -1926,6 +1951,7 @@ export class ElementsTreeOutline extends
|
|
|
1926
1951
|
treeElement.removeChildAtIndex(i);
|
|
1927
1952
|
}
|
|
1928
1953
|
|
|
1954
|
+
// Insert child nodes.
|
|
1929
1955
|
for (let i = 0; i < visibleChildren.length && i < treeElement.expandedChildrenLimit(); ++i) {
|
|
1930
1956
|
const child = visibleChildren[i];
|
|
1931
1957
|
const existingTreeElement = existingTreeElements.get(child) || this.findTreeElement(child);
|
|
@@ -1935,7 +1961,7 @@ export class ElementsTreeOutline extends
|
|
|
1935
1961
|
} else {
|
|
1936
1962
|
// No existing element found, insert a new element.
|
|
1937
1963
|
const newElement = this.insertChildElement(treeElement, child, i);
|
|
1938
|
-
if (this.updateRecordForHighlight(node) && treeElement.expanded) {
|
|
1964
|
+
if (this.updateRecordForHighlight(node) && treeElement.expanded && newElement instanceof ElementsTreeElement) {
|
|
1939
1965
|
ElementsTreeElement.animateOnDOMUpdate(newElement);
|
|
1940
1966
|
}
|
|
1941
1967
|
// If a node was inserted in the middle of existing list dynamically we might need to increase the limit.
|
|
@@ -398,7 +398,7 @@ export class VariableRenderer extends rendererBase(SDK.CSSPropertyParserMatchers
|
|
|
398
398
|
if (fromFallback) {
|
|
399
399
|
renderedFallback?.cssControls.get('color')?.forEach(
|
|
400
400
|
innerSwatch => innerSwatch.addEventListener(InlineEditor.ColorSwatch.ColorChangedEvent.eventName, ev => {
|
|
401
|
-
colorSwatch.
|
|
401
|
+
colorSwatch.color = ev.data.color;
|
|
402
402
|
}));
|
|
403
403
|
}
|
|
404
404
|
|
|
@@ -516,7 +516,7 @@ export class AttributeRenderer extends rendererBase(SDK.CSSPropertyParserMatcher
|
|
|
516
516
|
if (fromFallback) {
|
|
517
517
|
renderedFallback?.cssControls.get('color')?.forEach(
|
|
518
518
|
innerSwatch => innerSwatch.addEventListener(InlineEditor.ColorSwatch.ColorChangedEvent.eventName, ev => {
|
|
519
|
-
colorSwatch.
|
|
519
|
+
colorSwatch.color = ev.data.color;
|
|
520
520
|
}));
|
|
521
521
|
}
|
|
522
522
|
|
|
@@ -691,19 +691,19 @@ export class ColorRenderer extends rendererBase(SDK.CSSPropertyParserMatchers.Co
|
|
|
691
691
|
context.ast.text(match.node.getChild('Callee')).match(/^(hsla?|hwba?)/)) {
|
|
692
692
|
const [angle] = cssControls.get('angle') ?? [];
|
|
693
693
|
if (angle instanceof InlineEditor.CSSAngle.CSSAngle) {
|
|
694
|
-
angle.updateProperty(swatch.
|
|
694
|
+
angle.updateProperty(swatch.color?.asString() ?? '');
|
|
695
695
|
angle.addEventListener(InlineEditor.InlineEditorUtils.ValueChangedEvent.eventName, ev => {
|
|
696
696
|
const hue = Common.Color.parseHueNumeric(ev.data.value);
|
|
697
|
-
const color = swatch.
|
|
697
|
+
const color = swatch.color;
|
|
698
698
|
if (!hue || !color) {
|
|
699
699
|
return;
|
|
700
700
|
}
|
|
701
701
|
if (color.is(Common.Color.Format.HSL) || color.is(Common.Color.Format.HSLA)) {
|
|
702
|
-
swatch.
|
|
702
|
+
swatch.color = new Common.Color.HSL(hue, color.s, color.l, color.alpha);
|
|
703
703
|
} else if (color.is(Common.Color.Format.HWB) || color.is(Common.Color.Format.HWBA)) {
|
|
704
|
-
swatch.
|
|
704
|
+
swatch.color = new Common.Color.HWB(hue, color.w, color.b, color.alpha);
|
|
705
705
|
}
|
|
706
|
-
angle.updateProperty(swatch.
|
|
706
|
+
angle.updateProperty(swatch.color?.asString() ?? '');
|
|
707
707
|
});
|
|
708
708
|
}
|
|
709
709
|
}
|
|
@@ -716,9 +716,9 @@ export class ColorRenderer extends rendererBase(SDK.CSSPropertyParserMatchers.Co
|
|
|
716
716
|
const tooltip = editable ? i18nString(UIStrings.openColorPickerS, {PH1: shiftClickMessage}) : '';
|
|
717
717
|
|
|
718
718
|
const swatch = new InlineEditor.ColorSwatch.ColorSwatch(tooltip);
|
|
719
|
-
swatch.
|
|
719
|
+
swatch.readonly = !editable;
|
|
720
720
|
if (color) {
|
|
721
|
-
swatch.
|
|
721
|
+
swatch.color = color;
|
|
722
722
|
}
|
|
723
723
|
|
|
724
724
|
if (this.#treeElement?.editable()) {
|
|
@@ -742,7 +742,7 @@ export class ColorRenderer extends rendererBase(SDK.CSSPropertyParserMatchers.Co
|
|
|
742
742
|
new ColorSwatchPopoverIcon(treeElement, treeElement.parentPane().swatchPopoverHelper(), swatch);
|
|
743
743
|
swatchIcon.addEventListener(ColorSwatchPopoverIconEvents.COLOR_CHANGED, ev => {
|
|
744
744
|
valueChild.textContent = ev.data.getAuthoredText() ?? ev.data.asString();
|
|
745
|
-
swatch.
|
|
745
|
+
swatch.color = ev.data;
|
|
746
746
|
});
|
|
747
747
|
if (treeElement.property.name === 'color') {
|
|
748
748
|
void this.#addColorContrastInfo(swatchIcon);
|
|
@@ -819,14 +819,15 @@ export class LightDarkColorRenderer extends rendererBase(SDK.CSSPropertyParserMa
|
|
|
819
819
|
|
|
820
820
|
const activeColorSwatches = (activeColor === match.light ? lightControls : darkControls).get('color');
|
|
821
821
|
activeColorSwatches?.forEach(
|
|
822
|
-
swatch => swatch.addEventListener(
|
|
823
|
-
|
|
822
|
+
swatch => swatch.addEventListener(InlineEditor.ColorSwatch.ColorChangedEvent.eventName, ev => {
|
|
823
|
+
colorSwatch.color = ev.data.color;
|
|
824
|
+
}));
|
|
824
825
|
const inactiveColor = (activeColor === match.light) ? dark : light;
|
|
825
826
|
const colorText = context.matchedResult.getComputedTextRange(activeColor[0], activeColor[activeColor.length - 1]);
|
|
826
827
|
const color = colorText && Common.Color.parse(colorText);
|
|
827
828
|
inactiveColor.classList.add('inactive-value');
|
|
828
829
|
if (color) {
|
|
829
|
-
colorSwatch.
|
|
830
|
+
colorSwatch.color = color;
|
|
830
831
|
}
|
|
831
832
|
}
|
|
832
833
|
|
|
@@ -948,7 +949,7 @@ export class ColorMixRenderer extends rendererBase(SDK.CSSPropertyParserMatchers
|
|
|
948
949
|
if (results) {
|
|
949
950
|
const color = Common.Color.parse(results[0]);
|
|
950
951
|
if (color) {
|
|
951
|
-
swatch.
|
|
952
|
+
swatch.color = color.as(Common.Color.Format.HEXA);
|
|
952
953
|
return true;
|
|
953
954
|
}
|
|
954
955
|
}
|
|
@@ -2023,7 +2023,7 @@ export class CSSPropertyPrompt extends UI.TextPrompt.TextPrompt {
|
|
|
2023
2023
|
|
|
2024
2024
|
function colorSwatchRenderer(color: Common.Color.Color): Element {
|
|
2025
2025
|
const swatch = new InlineEditor.ColorSwatch.ColorSwatch();
|
|
2026
|
-
swatch.
|
|
2026
|
+
swatch.color = color;
|
|
2027
2027
|
swatch.style.pointerEvents = 'none';
|
|
2028
2028
|
return swatch;
|
|
2029
2029
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// Copyright 2014 The Chromium Authors
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
|
-
/* eslint-disable @devtools/no-imperative-dom-api */
|
|
5
4
|
|
|
6
5
|
import * as Common from '../../core/common/common.js';
|
|
7
6
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
@@ -9,7 +8,9 @@ import * as Platform from '../../core/platform/platform.js';
|
|
|
9
8
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
10
9
|
import * as Bindings from '../../models/bindings/bindings.js';
|
|
11
10
|
import type * as Workspace from '../../models/workspace/workspace.js';
|
|
11
|
+
import {Directives, html, nothing, render} from '../../third_party/lit/lit.js';
|
|
12
12
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
13
|
+
import type {LitTemplate} from '../../ui/lit/lit.js';
|
|
13
14
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
14
15
|
|
|
15
16
|
import mediaQueryInspectorStyles from './mediaQueryInspector.css.js';
|
|
@@ -23,40 +24,165 @@ const UIStrings = {
|
|
|
23
24
|
} as const;
|
|
24
25
|
const str_ = i18n.i18n.registerUIStrings('panels/emulation/MediaQueryInspector.ts', UIStrings);
|
|
25
26
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
27
|
+
|
|
28
|
+
const {classMap} = Directives;
|
|
29
|
+
|
|
30
|
+
export interface ViewInput {
|
|
31
|
+
zoomFactor: number;
|
|
32
|
+
markers: Map<Section, MediaQueryMarker[]>;
|
|
33
|
+
onMediaQueryClicked: (model: MediaQueryUIModel) => void;
|
|
34
|
+
onContextMenu: (event: Event, locations: SDK.CSSModel.CSSLocation[]) => void;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface MediaQueryMarker {
|
|
38
|
+
active: boolean;
|
|
39
|
+
model: MediaQueryUIModel;
|
|
40
|
+
locations: SDK.CSSModel.CSSLocation[];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const DEFAULT_VIEW = (input: ViewInput, _output: object, target: HTMLElement): void => {
|
|
44
|
+
const createBarClassMap = (marker: MediaQueryMarker): Record<string, boolean> => ({
|
|
45
|
+
'media-inspector-bar': true,
|
|
46
|
+
'media-inspector-marker-inactive': !marker.active,
|
|
47
|
+
});
|
|
48
|
+
// clang-format off
|
|
49
|
+
render(html`
|
|
50
|
+
<style>${mediaQueryInspectorStyles}</style>
|
|
51
|
+
<div class='media-inspector-view'>
|
|
52
|
+
${input.markers.entries().map(([section, markers]) => html`
|
|
53
|
+
<div class='media-inspector-marker-container'>
|
|
54
|
+
${markers.map(marker => html`
|
|
55
|
+
<div
|
|
56
|
+
class=${classMap(createBarClassMap(marker))}
|
|
57
|
+
@click=${() => input.onMediaQueryClicked(marker.model)}
|
|
58
|
+
@contextmenu=${(event: Event) => input.onContextMenu(event, marker.locations)}
|
|
59
|
+
>
|
|
60
|
+
${section === Section.MAX
|
|
61
|
+
? renderMaxSection(input.zoomFactor, marker.model)
|
|
62
|
+
: section === Section.MIN_MAX
|
|
63
|
+
? renderMinMaxSection(input.zoomFactor, marker.model)
|
|
64
|
+
: renderMinSection(input.zoomFactor, marker.model)}
|
|
65
|
+
</div>
|
|
66
|
+
`)}
|
|
67
|
+
</div>
|
|
68
|
+
`).toArray()}
|
|
69
|
+
</div>`, target);
|
|
70
|
+
// clang-format on
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
function renderMaxSection(zoomFactor: number, model: MediaQueryUIModel): LitTemplate {
|
|
74
|
+
// clang-format off
|
|
75
|
+
return html`
|
|
76
|
+
<div class='media-inspector-marker-spacer'></div>
|
|
77
|
+
<div
|
|
78
|
+
class='media-inspector-marker media-inspector-marker-max-width'
|
|
79
|
+
style=${'width: ' + model.maxWidthValue(zoomFactor) + 'px'}
|
|
80
|
+
title=${model.mediaText()}
|
|
81
|
+
>
|
|
82
|
+
${renderLabel(model.maxWidthExpression(), false, false)}
|
|
83
|
+
${renderLabel(model.maxWidthExpression(), true, true)}
|
|
84
|
+
</div>
|
|
85
|
+
<div class='media-inspector-marker-spacer'></div>
|
|
86
|
+
`;
|
|
87
|
+
// clang-format on
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function renderMinMaxSection(zoomFactor: number, model: MediaQueryUIModel): LitTemplate {
|
|
91
|
+
const width = (model.maxWidthValue(zoomFactor) - model.minWidthValue(zoomFactor)) * 0.5;
|
|
92
|
+
// clang-format off
|
|
93
|
+
return html`
|
|
94
|
+
<div class='media-inspector-marker-spacer'></div>
|
|
95
|
+
<div
|
|
96
|
+
class='media-inspector-marker media-inspector-marker-min-max-width'
|
|
97
|
+
style=${'width: ' + width + 'px'}
|
|
98
|
+
title=${model.mediaText()}
|
|
99
|
+
>
|
|
100
|
+
${renderLabel(model.maxWidthExpression(), true, false)}
|
|
101
|
+
${renderLabel(model.minWidthExpression(), false, true)}
|
|
102
|
+
</div>
|
|
103
|
+
<div class='media-inspector-marker-spacer' style=${'flex: 0 0 ' + model.minWidthValue(zoomFactor) + 'px'}></div>
|
|
104
|
+
<div
|
|
105
|
+
class='media-inspector-marker media-inspector-marker-min-max-width'
|
|
106
|
+
style=${'width: ' + width + 'px'}
|
|
107
|
+
title=${model.mediaText()}
|
|
108
|
+
>
|
|
109
|
+
${renderLabel(model.minWidthExpression(), true, false)}
|
|
110
|
+
${renderLabel(model.maxWidthExpression(), false, true)}
|
|
111
|
+
</div>
|
|
112
|
+
<div class='media-inspector-marker-spacer'></div>
|
|
113
|
+
`;
|
|
114
|
+
// clang-format on
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function renderMinSection(zoomFactor: number, model: MediaQueryUIModel): LitTemplate {
|
|
118
|
+
// clang-format off
|
|
119
|
+
return html`
|
|
120
|
+
<div
|
|
121
|
+
class='media-inspector-marker media-inspector-marker-min-width media-inspector-marker-min-width-left'
|
|
122
|
+
title=${model.mediaText()}
|
|
123
|
+
>${renderLabel(model.minWidthExpression(), false, false)}</div>
|
|
124
|
+
<div class='media-inspector-marker-spacer' style=${'flex: 0 0 ' + model.minWidthValue(zoomFactor) + 'px'}></div>
|
|
125
|
+
<div
|
|
126
|
+
class='media-inspector-marker media-inspector-marker-min-width media-inspector-marker-min-width-right'
|
|
127
|
+
title=${model.mediaText()}
|
|
128
|
+
>${renderLabel(model.minWidthExpression(), true, true)}</div>
|
|
129
|
+
`;
|
|
130
|
+
// clang-format on
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function renderLabel(
|
|
134
|
+
expression: SDK.CSSMedia.CSSMediaQueryExpression|null, atLeft: boolean, leftAlign: boolean): LitTemplate {
|
|
135
|
+
if (!expression) {
|
|
136
|
+
return nothing;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const containerClassMap = {
|
|
140
|
+
'media-inspector-marker-label-container': true,
|
|
141
|
+
'media-inspector-marker-label-container-left': atLeft,
|
|
142
|
+
'media-inspector-marker-label-container-right': !atLeft
|
|
143
|
+
};
|
|
144
|
+
const labelClassMap = {
|
|
145
|
+
'media-inspector-marker-label': true,
|
|
146
|
+
'media-inspector-label-left': leftAlign,
|
|
147
|
+
'media-inspector-label-right': !leftAlign
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
// clang-format off
|
|
151
|
+
return html`
|
|
152
|
+
<div class=${classMap(containerClassMap)}>
|
|
153
|
+
<span class=${classMap(labelClassMap)}>${expression.value()}${expression.unit()}</span>
|
|
154
|
+
</div>
|
|
155
|
+
`;
|
|
156
|
+
// clang-format on
|
|
157
|
+
}
|
|
158
|
+
|
|
26
159
|
export class MediaQueryInspector extends UI.Widget.Widget implements
|
|
27
160
|
SDK.TargetManager.SDKModelObserver<SDK.CSSModel.CSSModel> {
|
|
161
|
+
private readonly view: typeof DEFAULT_VIEW;
|
|
28
162
|
private readonly mediaThrottler: Common.Throttler.Throttler;
|
|
29
163
|
private readonly getWidthCallback: () => number;
|
|
30
164
|
private readonly setWidthCallback: (arg0: number) => void;
|
|
31
165
|
private scale: number;
|
|
32
|
-
elementsToMediaQueryModel: WeakMap<Element, MediaQueryUIModel>;
|
|
33
|
-
elementsToCSSLocations: WeakMap<Element, SDK.CSSModel.CSSLocation[]>;
|
|
34
166
|
private cssModel?: SDK.CSSModel.CSSModel;
|
|
35
167
|
private cachedQueryModels?: MediaQueryUIModel[];
|
|
36
168
|
|
|
37
169
|
constructor(
|
|
38
170
|
getWidthCallback: () => number, setWidthCallback: (arg0: number) => void,
|
|
39
|
-
mediaThrottler: Common.Throttler.Throttler) {
|
|
171
|
+
mediaThrottler: Common.Throttler.Throttler, view = DEFAULT_VIEW) {
|
|
40
172
|
super({
|
|
41
173
|
jslog: `${VisualLogging.mediaInspectorView().track({click: true})}`,
|
|
42
174
|
useShadowDom: true,
|
|
43
175
|
});
|
|
44
|
-
this.
|
|
45
|
-
this.contentElement.classList.add('media-inspector-view');
|
|
46
|
-
this.contentElement.addEventListener('click', this.onMediaQueryClicked.bind(this), false);
|
|
47
|
-
this.contentElement.addEventListener('contextmenu', this.onContextMenu.bind(this), false);
|
|
176
|
+
this.view = view;
|
|
48
177
|
this.mediaThrottler = mediaThrottler;
|
|
49
178
|
|
|
50
179
|
this.getWidthCallback = getWidthCallback;
|
|
51
180
|
this.setWidthCallback = setWidthCallback;
|
|
52
181
|
this.scale = 1;
|
|
53
182
|
|
|
54
|
-
this.elementsToMediaQueryModel = new WeakMap();
|
|
55
|
-
this.elementsToCSSLocations = new WeakMap();
|
|
56
|
-
|
|
57
183
|
SDK.TargetManager.TargetManager.instance().observeModels(SDK.CSSModel.CSSModel, this);
|
|
58
184
|
UI.ZoomManager.ZoomManager.instance().addEventListener(
|
|
59
|
-
UI.ZoomManager.Events.ZOOM_CHANGED, this.
|
|
185
|
+
UI.ZoomManager.Events.ZOOM_CHANGED, this.requestUpdate.bind(this), this);
|
|
60
186
|
}
|
|
61
187
|
|
|
62
188
|
modelAdded(cssModel: SDK.CSSModel.CSSModel): void {
|
|
@@ -88,19 +214,10 @@ export class MediaQueryInspector extends UI.Widget.Widget implements
|
|
|
88
214
|
return;
|
|
89
215
|
}
|
|
90
216
|
this.scale = scale;
|
|
91
|
-
this.
|
|
217
|
+
this.performUpdate();
|
|
92
218
|
}
|
|
93
219
|
|
|
94
|
-
private onMediaQueryClicked(
|
|
95
|
-
const mediaQueryMarker = (event.target as Node).enclosingNodeOrSelfWithClass('media-inspector-bar');
|
|
96
|
-
if (!mediaQueryMarker) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
const model = this.elementsToMediaQueryModel.get(mediaQueryMarker);
|
|
101
|
-
if (!model) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
220
|
+
private onMediaQueryClicked(model: MediaQueryUIModel): void {
|
|
104
221
|
const modelMaxWidth = model.maxWidthExpression();
|
|
105
222
|
const modelMinWidth = model.minWidthExpression();
|
|
106
223
|
|
|
@@ -120,17 +237,11 @@ export class MediaQueryInspector extends UI.Widget.Widget implements
|
|
|
120
237
|
}
|
|
121
238
|
}
|
|
122
239
|
|
|
123
|
-
private onContextMenu(event: Event): void {
|
|
240
|
+
private onContextMenu(event: Event, locations: SDK.CSSModel.CSSLocation[]): void {
|
|
124
241
|
if (!this.cssModel?.isEnabled()) {
|
|
125
242
|
return;
|
|
126
243
|
}
|
|
127
244
|
|
|
128
|
-
const mediaQueryMarker = (event.target as Node).enclosingNodeOrSelfWithClass('media-inspector-bar');
|
|
129
|
-
if (!mediaQueryMarker) {
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
const locations = this.elementsToCSSLocations.get(mediaQueryMarker) || [];
|
|
134
245
|
const uiLocations = new Map<string, Workspace.UISourceCode.UILocation>();
|
|
135
246
|
for (let i = 0; i < locations.length; ++i) {
|
|
136
247
|
const uiLocation =
|
|
@@ -214,24 +325,20 @@ export class MediaQueryInspector extends UI.Widget.Widget implements
|
|
|
214
325
|
return;
|
|
215
326
|
}
|
|
216
327
|
this.cachedQueryModels = queryModels;
|
|
217
|
-
this.
|
|
328
|
+
this.requestUpdate();
|
|
218
329
|
|
|
219
330
|
function compareModels(model1: MediaQueryUIModel, model2: MediaQueryUIModel): number {
|
|
220
331
|
return model1.compareTo(model2);
|
|
221
332
|
}
|
|
222
333
|
}
|
|
223
334
|
|
|
224
|
-
private
|
|
225
|
-
if (!this.cachedQueryModels
|
|
226
|
-
return;
|
|
335
|
+
private buildMediaQueryMarkers(): MediaQueryMarker[] {
|
|
336
|
+
if (!this.cachedQueryModels) {
|
|
337
|
+
return [];
|
|
227
338
|
}
|
|
228
339
|
|
|
229
|
-
const markers = [];
|
|
230
|
-
let lastMarker:
|
|
231
|
-
active: boolean,
|
|
232
|
-
model: MediaQueryUIModel,
|
|
233
|
-
locations: SDK.CSSModel.CSSLocation[],
|
|
234
|
-
}|null = null;
|
|
340
|
+
const markers: MediaQueryMarker[] = [];
|
|
341
|
+
let lastMarker: MediaQueryMarker|null = null;
|
|
235
342
|
for (const model of this.cachedQueryModels) {
|
|
236
343
|
if (lastMarker?.model.dimensionsEqual(model)) {
|
|
237
344
|
lastMarker.active = lastMarker.active || model.active();
|
|
@@ -239,7 +346,7 @@ export class MediaQueryInspector extends UI.Widget.Widget implements
|
|
|
239
346
|
lastMarker = {
|
|
240
347
|
active: model.active(),
|
|
241
348
|
model,
|
|
242
|
-
locations:
|
|
349
|
+
locations: [],
|
|
243
350
|
};
|
|
244
351
|
markers.push(lastMarker);
|
|
245
352
|
}
|
|
@@ -249,23 +356,7 @@ export class MediaQueryInspector extends UI.Widget.Widget implements
|
|
|
249
356
|
}
|
|
250
357
|
}
|
|
251
358
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
let container: HTMLElement|null = null;
|
|
255
|
-
for (let i = 0; i < markers.length; ++i) {
|
|
256
|
-
if (!i || markers[i].model.section() !== markers[i - 1].model.section()) {
|
|
257
|
-
container = this.contentElement.createChild('div', 'media-inspector-marker-container');
|
|
258
|
-
}
|
|
259
|
-
const marker = markers[i];
|
|
260
|
-
const bar = this.createElementFromMediaQueryModel(marker.model);
|
|
261
|
-
this.elementsToMediaQueryModel.set(bar, marker.model);
|
|
262
|
-
this.elementsToCSSLocations.set(bar, marker.locations);
|
|
263
|
-
bar.classList.toggle('media-inspector-marker-inactive', !marker.active);
|
|
264
|
-
if (!container) {
|
|
265
|
-
throw new Error('Could not find container to render media queries into.');
|
|
266
|
-
}
|
|
267
|
-
container.appendChild(bar);
|
|
268
|
-
}
|
|
359
|
+
return markers;
|
|
269
360
|
}
|
|
270
361
|
|
|
271
362
|
private zoomFactor(): number {
|
|
@@ -275,75 +366,20 @@ export class MediaQueryInspector extends UI.Widget.Widget implements
|
|
|
275
366
|
override wasShown(): void {
|
|
276
367
|
super.wasShown();
|
|
277
368
|
this.scheduleMediaQueriesUpdate();
|
|
369
|
+
this.performUpdate(); // Trigger a manual update eagerly, DeviceModeView needs to measure our height.
|
|
278
370
|
}
|
|
279
371
|
|
|
280
|
-
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
const markerElement = result.createChild('div', 'media-inspector-marker media-inspector-marker-max-width');
|
|
292
|
-
markerElement.style.width = maxWidthValue + 'px';
|
|
293
|
-
UI.Tooltip.Tooltip.install(markerElement, model.mediaText());
|
|
294
|
-
appendLabel(markerElement, model.maxWidthExpression(), false, false);
|
|
295
|
-
appendLabel(markerElement, model.maxWidthExpression(), true, true);
|
|
296
|
-
result.createChild('div', 'media-inspector-marker-spacer');
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
if (model.section() === Section.MIN_MAX) {
|
|
300
|
-
result.createChild('div', 'media-inspector-marker-spacer');
|
|
301
|
-
const leftElement = result.createChild('div', 'media-inspector-marker media-inspector-marker-min-max-width');
|
|
302
|
-
leftElement.style.width = (maxWidthValue - minWidthValue) * 0.5 + 'px';
|
|
303
|
-
UI.Tooltip.Tooltip.install(leftElement, model.mediaText());
|
|
304
|
-
appendLabel(leftElement, model.maxWidthExpression(), true, false);
|
|
305
|
-
appendLabel(leftElement, model.minWidthExpression(), false, true);
|
|
306
|
-
result.createChild('div', 'media-inspector-marker-spacer').style.flex = '0 0 ' + minWidthValue + 'px';
|
|
307
|
-
const rightElement = result.createChild('div', 'media-inspector-marker media-inspector-marker-min-max-width');
|
|
308
|
-
rightElement.style.width = (maxWidthValue - minWidthValue) * 0.5 + 'px';
|
|
309
|
-
UI.Tooltip.Tooltip.install(rightElement, model.mediaText());
|
|
310
|
-
appendLabel(rightElement, model.minWidthExpression(), true, false);
|
|
311
|
-
appendLabel(rightElement, model.maxWidthExpression(), false, true);
|
|
312
|
-
result.createChild('div', 'media-inspector-marker-spacer');
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
if (model.section() === Section.MIN) {
|
|
316
|
-
const leftElement = result.createChild(
|
|
317
|
-
'div', 'media-inspector-marker media-inspector-marker-min-width media-inspector-marker-min-width-left');
|
|
318
|
-
UI.Tooltip.Tooltip.install(leftElement, model.mediaText());
|
|
319
|
-
appendLabel(leftElement, model.minWidthExpression(), false, false);
|
|
320
|
-
result.createChild('div', 'media-inspector-marker-spacer').style.flex = '0 0 ' + minWidthValue + 'px';
|
|
321
|
-
const rightElement = result.createChild(
|
|
322
|
-
'div', 'media-inspector-marker media-inspector-marker-min-width media-inspector-marker-min-width-right');
|
|
323
|
-
UI.Tooltip.Tooltip.install(rightElement, model.mediaText());
|
|
324
|
-
appendLabel(rightElement, model.minWidthExpression(), true, true);
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
function appendLabel(
|
|
328
|
-
marker: Element, expression: SDK.CSSMedia.CSSMediaQueryExpression|null, atLeft: boolean,
|
|
329
|
-
leftAlign: boolean): void {
|
|
330
|
-
if (!expression) {
|
|
331
|
-
return;
|
|
332
|
-
}
|
|
333
|
-
marker
|
|
334
|
-
.createChild(
|
|
335
|
-
'div',
|
|
336
|
-
'media-inspector-marker-label-container ' +
|
|
337
|
-
(atLeft ? 'media-inspector-marker-label-container-left' :
|
|
338
|
-
'media-inspector-marker-label-container-right'))
|
|
339
|
-
.createChild(
|
|
340
|
-
'span',
|
|
341
|
-
'media-inspector-marker-label ' +
|
|
342
|
-
(leftAlign ? 'media-inspector-label-left' : 'media-inspector-label-right'))
|
|
343
|
-
.textContent = expression.value() + expression.unit();
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
return result;
|
|
372
|
+
override performUpdate(): void {
|
|
373
|
+
const markers = Map.groupBy(this.buildMediaQueryMarkers(), marker => marker.model.section());
|
|
374
|
+
|
|
375
|
+
this.view(
|
|
376
|
+
{
|
|
377
|
+
zoomFactor: this.zoomFactor(),
|
|
378
|
+
markers,
|
|
379
|
+
onMediaQueryClicked: this.onMediaQueryClicked.bind(this),
|
|
380
|
+
onContextMenu: this.onContextMenu.bind(this),
|
|
381
|
+
},
|
|
382
|
+
{}, this.contentElement);
|
|
347
383
|
}
|
|
348
384
|
}
|
|
349
385
|
|
|
@@ -502,6 +538,16 @@ export class MediaQueryUIModel {
|
|
|
502
538
|
return this.#maxWidthExpression;
|
|
503
539
|
}
|
|
504
540
|
|
|
541
|
+
minWidthValue(zoomFactor: number): number {
|
|
542
|
+
const minWidthExpression = this.minWidthExpression();
|
|
543
|
+
return minWidthExpression ? (minWidthExpression.computedLength() || 0) / zoomFactor : 0;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
maxWidthValue(zoomFactor: number): number {
|
|
547
|
+
const maxWidthExpression = this.maxWidthExpression();
|
|
548
|
+
return maxWidthExpression ? (maxWidthExpression.computedLength() || 0) / zoomFactor : 0;
|
|
549
|
+
}
|
|
550
|
+
|
|
505
551
|
active(): boolean {
|
|
506
552
|
return this.#active;
|
|
507
553
|
}
|