chrome-devtools-frontend 1.0.1376716 → 1.0.1386602
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/.stylelintrc.json +2 -1
- package/config/gni/devtools_grd_files.gni +40 -11
- package/config/gni/devtools_image_files.gni +4 -0
- package/docs/README.md +4 -0
- package/docs/contributing/issues.md +13 -10
- package/docs/get_the_code.md +4 -1
- package/docs/policy/README.md +6 -0
- package/docs/policy/slow-close.md +52 -0
- package/docs/styleguide/ux/README.md +1 -0
- package/docs/styleguide/ux/numbers.md +106 -0
- package/front_end/Images/src/animation.svg +3 -0
- package/front_end/Images/src/brush-2.svg +3 -0
- package/front_end/Images/src/cookie_off.svg +3 -0
- package/front_end/Images/src/domain.svg +3 -0
- package/front_end/core/common/Color.ts +3 -3
- package/front_end/core/common/SettingRegistration.ts +8 -1
- package/front_end/core/host/AidaClient.ts +4 -3
- package/front_end/core/host/InspectorFrontendHost.ts +4 -0
- package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -1
- package/front_end/core/host/UserMetrics.ts +0 -8
- package/front_end/core/i18n/ByteUtilities.test.ts +34 -0
- package/front_end/core/i18n/ByteUtilities.ts +65 -0
- package/front_end/core/i18n/NumberFormatter.ts +75 -0
- package/front_end/core/i18n/i18n.ts +4 -0
- package/front_end/core/i18n/locales/af.json +1031 -887
- package/front_end/core/i18n/locales/am.json +1036 -892
- package/front_end/core/i18n/locales/ar.json +1039 -895
- package/front_end/core/i18n/locales/as.json +1032 -888
- package/front_end/core/i18n/locales/az.json +1034 -890
- package/front_end/core/i18n/locales/be.json +1031 -887
- package/front_end/core/i18n/locales/bg.json +1031 -887
- package/front_end/core/i18n/locales/bn.json +1033 -889
- package/front_end/core/i18n/locales/bs.json +1036 -892
- package/front_end/core/i18n/locales/ca.json +1031 -887
- package/front_end/core/i18n/locales/cs.json +1030 -886
- package/front_end/core/i18n/locales/cy.json +1032 -888
- package/front_end/core/i18n/locales/da.json +1031 -887
- package/front_end/core/i18n/locales/de.json +1033 -889
- package/front_end/core/i18n/locales/el.json +1031 -887
- package/front_end/core/i18n/locales/en-GB.json +1033 -889
- package/front_end/core/i18n/locales/es-419.json +1029 -885
- package/front_end/core/i18n/locales/es.json +1032 -888
- package/front_end/core/i18n/locales/et.json +1033 -889
- package/front_end/core/i18n/locales/eu.json +1031 -887
- package/front_end/core/i18n/locales/fa.json +1035 -891
- package/front_end/core/i18n/locales/fi.json +1035 -891
- package/front_end/core/i18n/locales/fil.json +1034 -890
- package/front_end/core/i18n/locales/fr-CA.json +1031 -887
- package/front_end/core/i18n/locales/fr.json +1049 -905
- package/front_end/core/i18n/locales/gl.json +1032 -888
- package/front_end/core/i18n/locales/gu.json +1035 -891
- package/front_end/core/i18n/locales/he.json +1031 -887
- package/front_end/core/i18n/locales/hi.json +1034 -890
- package/front_end/core/i18n/locales/hr.json +1031 -887
- package/front_end/core/i18n/locales/hu.json +1033 -889
- package/front_end/core/i18n/locales/hy.json +1046 -902
- package/front_end/core/i18n/locales/id.json +1023 -879
- package/front_end/core/i18n/locales/is.json +1032 -888
- package/front_end/core/i18n/locales/it.json +1031 -887
- package/front_end/core/i18n/locales/ja.json +1042 -898
- package/front_end/core/i18n/locales/ka.json +1034 -890
- package/front_end/core/i18n/locales/kk.json +1035 -891
- package/front_end/core/i18n/locales/km.json +1035 -891
- package/front_end/core/i18n/locales/kn.json +1036 -892
- package/front_end/core/i18n/locales/ko.json +1031 -887
- package/front_end/core/i18n/locales/ky.json +1032 -888
- package/front_end/core/i18n/locales/lo.json +1030 -886
- package/front_end/core/i18n/locales/lt.json +1032 -888
- package/front_end/core/i18n/locales/lv.json +1032 -888
- package/front_end/core/i18n/locales/mk.json +1032 -888
- package/front_end/core/i18n/locales/ml.json +1033 -889
- package/front_end/core/i18n/locales/mn.json +1034 -890
- package/front_end/core/i18n/locales/mr.json +1035 -891
- package/front_end/core/i18n/locales/ms.json +1033 -889
- package/front_end/core/i18n/locales/my.json +1033 -889
- package/front_end/core/i18n/locales/ne.json +1036 -892
- package/front_end/core/i18n/locales/nl.json +1033 -889
- package/front_end/core/i18n/locales/no.json +1036 -892
- package/front_end/core/i18n/locales/or.json +1043 -899
- package/front_end/core/i18n/locales/pa.json +1030 -886
- package/front_end/core/i18n/locales/pl.json +1032 -888
- package/front_end/core/i18n/locales/pt-PT.json +1033 -889
- package/front_end/core/i18n/locales/pt.json +1033 -889
- package/front_end/core/i18n/locales/ro.json +1029 -885
- package/front_end/core/i18n/locales/ru.json +1026 -882
- package/front_end/core/i18n/locales/si.json +1031 -887
- package/front_end/core/i18n/locales/sk.json +1033 -889
- package/front_end/core/i18n/locales/sl.json +1031 -887
- package/front_end/core/i18n/locales/sq.json +1061 -917
- package/front_end/core/i18n/locales/sr-Latn.json +1033 -889
- package/front_end/core/i18n/locales/sr.json +1033 -889
- package/front_end/core/i18n/locales/sv.json +1031 -887
- package/front_end/core/i18n/locales/sw.json +1033 -889
- package/front_end/core/i18n/locales/ta.json +1058 -914
- package/front_end/core/i18n/locales/te.json +1037 -893
- package/front_end/core/i18n/locales/th.json +1032 -888
- package/front_end/core/i18n/locales/tr.json +1031 -887
- package/front_end/core/i18n/locales/uk.json +1030 -886
- package/front_end/core/i18n/locales/ur.json +1031 -887
- package/front_end/core/i18n/locales/uz.json +1023 -879
- package/front_end/core/i18n/locales/vi.json +1032 -888
- package/front_end/core/i18n/locales/zh-HK.json +1032 -888
- package/front_end/core/i18n/locales/zh-TW.json +1032 -888
- package/front_end/core/i18n/locales/zh.json +1033 -889
- package/front_end/core/i18n/locales/zu.json +1032 -888
- package/front_end/core/i18n/time-utilities.test.ts +20 -2
- package/front_end/core/i18n/time-utilities.ts +125 -86
- package/front_end/core/platform/NumberUtilities.test.ts +3 -26
- package/front_end/core/platform/NumberUtilities.ts +0 -20
- package/front_end/core/root/Runtime.ts +6 -4
- package/front_end/core/sdk/CPUThrottlingManager.ts +4 -0
- package/front_end/core/sdk/CSSContainerQuery.test.ts +10 -16
- package/front_end/core/sdk/CSSContainerQuery.ts +3 -15
- package/front_end/core/sdk/CSSMatchedStyles.test.ts +4 -0
- package/front_end/core/sdk/CSSMatchedStyles.ts +5 -5
- package/front_end/core/sdk/CSSModel.ts +18 -0
- package/front_end/core/sdk/CSSPropertyParser.test.ts +16 -1
- package/front_end/core/sdk/CSSPropertyParser.ts +2 -2
- package/front_end/core/sdk/NetworkManager.test.ts +50 -0
- package/front_end/core/sdk/NetworkManager.ts +6 -4
- package/front_end/core/sdk/SourceMap.test.ts +5 -5
- package/front_end/core/sdk/SourceMapScopeChainEntry.test.ts +7 -2
- package/front_end/core/sdk/SourceMapScopeChainEntry.ts +2 -2
- package/front_end/core/sdk/SourceMapScopes.test.ts +112 -45
- package/front_end/core/sdk/SourceMapScopes.ts +39 -14
- package/front_end/core/sdk/SourceMapScopesInfo.test.ts +51 -50
- package/front_end/core/sdk/SourceMapScopesInfo.ts +1 -1
- package/front_end/core/sdk/sdk-meta.ts +35 -0
- package/front_end/devtools_compatibility.js +0 -1
- package/front_end/entrypoints/devtools_app/devtools_app.ts +1 -0
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +3 -3
- package/front_end/entrypoints/inspector_main/renderingOptions.css +1 -1
- package/front_end/entrypoints/main/ExecutionContextSelector.test.ts +13 -3
- package/front_end/entrypoints/main/ExecutionContextSelector.ts +23 -1
- package/front_end/entrypoints/main/MainImpl.ts +0 -5
- package/front_end/generated/ARIAProperties.js +4 -0
- package/front_end/generated/Deprecation.ts +0 -15
- package/front_end/generated/InspectorBackendCommands.js +9 -7
- package/front_end/generated/SupportedCSSProperties.js +14 -41
- package/front_end/generated/protocol-mapping.d.ts +15 -1
- package/front_end/generated/protocol-proxy-api.d.ts +14 -1
- package/front_end/generated/protocol.ts +27 -2
- package/front_end/models/bindings/IgnoreListManager.ts +25 -2
- package/front_end/models/crux-manager/CrUXManager.test.ts +25 -6
- package/front_end/models/crux-manager/CrUXManager.ts +23 -4
- package/front_end/models/extensions/ExtensionAPI.ts +9 -1
- package/front_end/models/extensions/ExtensionServer.test.ts +14 -0
- package/front_end/models/extensions/ExtensionServer.ts +28 -15
- package/front_end/models/heap_snapshot_model/HeapSnapshotModel.ts +2 -0
- package/front_end/models/issues_manager/CookieIssue.ts +79 -2
- package/front_end/models/issues_manager/IssuesManager.ts +1 -1
- package/front_end/models/issues_manager/descriptions/cookieExcludePortMismatch.md +8 -0
- package/front_end/models/issues_manager/descriptions/cookieExcludeSchemeMismatch.md +7 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +22 -25
- package/front_end/models/live-metrics/web-vitals-injected/{rollup.config.js → rollup.config.mjs} +1 -1
- package/front_end/models/persistence/EditFileSystemView.ts +20 -10
- package/front_end/models/persistence/WorkspaceSettingsTab.ts +50 -54
- package/front_end/models/persistence/editFileSystemView.css +38 -15
- package/front_end/models/persistence/workspaceSettingsTab.css +21 -87
- package/front_end/models/timeline_model/timeline_model.ts +0 -6
- package/front_end/models/trace/Processor.test.ts +18 -17
- package/front_end/models/trace/Processor.ts +10 -14
- package/front_end/models/trace/README.md +0 -1
- package/front_end/models/trace/extras/Metadata.test.ts +35 -2
- package/front_end/models/trace/extras/Metadata.ts +24 -5
- package/front_end/models/{timeline_model → trace/extras}/TimelineJSProfile.ts +19 -29
- package/front_end/models/{timeline_model/TimelineModelFilter.test.ts → trace/extras/TraceFilter.test.ts} +15 -17
- package/front_end/models/trace/extras/TraceFilter.ts +62 -0
- package/front_end/models/{timeline_model/TimelineProfileTree.test.ts → trace/extras/TraceTree.test.ts} +44 -43
- package/front_end/models/{timeline_model/TimelineProfileTree.ts → trace/extras/TraceTree.ts} +86 -70
- package/front_end/models/trace/extras/URLForEntry.ts +6 -5
- package/front_end/models/trace/extras/extras.ts +3 -0
- package/front_end/models/trace/handlers/AnimationHandler.ts +0 -8
- package/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +1 -11
- package/front_end/models/trace/handlers/FramesHandler.test.ts +1 -6
- package/front_end/models/trace/handlers/FramesHandler.ts +1 -14
- package/front_end/models/trace/handlers/GPUHandler.test.ts +0 -2
- package/front_end/models/trace/handlers/GPUHandler.ts +1 -25
- package/front_end/models/trace/handlers/ImagePaintingHandler.ts +15 -0
- package/front_end/models/trace/handlers/InitiatorsHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/InitiatorsHandler.ts +0 -20
- package/front_end/models/trace/handlers/InvalidationsHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/InvalidationsHandler.ts +0 -18
- package/front_end/models/trace/handlers/LargestImagePaintHandler.test.ts +2 -2
- package/front_end/models/trace/handlers/LargestImagePaintHandler.ts +63 -3
- package/front_end/models/trace/handlers/LargestTextPaintHandler.ts +3 -0
- package/front_end/models/trace/handlers/LayerTreeHandler.test.ts +0 -2
- package/front_end/models/trace/handlers/LayerTreeHandler.ts +1 -18
- package/front_end/models/trace/handlers/LayoutShiftsHandler.test.ts +0 -3
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +1 -20
- package/front_end/models/trace/handlers/MemoryHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/MemoryHandler.ts +3 -0
- package/front_end/models/trace/handlers/MetaHandler.test.ts +1 -32
- package/front_end/models/trace/handlers/MetaHandler.ts +2 -30
- package/front_end/models/trace/handlers/NetworkRequestsHandler.test.ts +0 -26
- package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +4 -23
- package/front_end/models/trace/handlers/PageFramesHandler.ts +3 -0
- package/front_end/models/trace/handlers/RendererHandler.test.ts +0 -4
- package/front_end/models/trace/handlers/RendererHandler.ts +1 -24
- package/front_end/models/trace/handlers/SamplesHandler.test.ts +0 -5
- package/front_end/models/trace/handlers/SamplesHandler.ts +0 -26
- package/front_end/models/trace/handlers/ScreenshotsHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/SelectorStatsHandler.ts +3 -0
- package/front_end/models/trace/handlers/ServerTimingsHandler.ts +1 -16
- package/front_end/models/trace/handlers/Threads.test.ts +1 -2
- package/front_end/models/trace/handlers/UserInteractionsHandler.test.ts +4 -27
- package/front_end/models/trace/handlers/UserInteractionsHandler.ts +16 -25
- package/front_end/models/trace/handlers/UserTimingsHandler.ts +0 -17
- package/front_end/models/trace/handlers/WorkersHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/WorkersHandler.ts +0 -23
- package/front_end/models/trace/handlers/types.ts +1 -8
- package/front_end/models/trace/helpers/Timing.ts +8 -0
- package/front_end/models/trace/insights/{CumulativeLayoutShift.test.ts → CLSCulprits.test.ts} +21 -21
- package/front_end/models/trace/insights/{CumulativeLayoutShift.ts → CLSCulprits.ts} +32 -5
- package/front_end/models/trace/insights/Common.ts +5 -55
- package/front_end/models/trace/insights/DocumentLatency.test.ts +2 -2
- package/front_end/models/trace/insights/DocumentLatency.ts +39 -6
- package/front_end/models/trace/insights/FontDisplay.ts +31 -5
- package/front_end/models/trace/insights/ImageDelivery.test.ts +98 -0
- package/front_end/models/trace/insights/ImageDelivery.ts +183 -0
- package/front_end/models/trace/insights/InteractionToNextPaint.test.ts +1 -1
- package/front_end/models/trace/insights/InteractionToNextPaint.ts +32 -6
- package/front_end/models/trace/insights/LCPDiscovery.test.ts +58 -0
- package/front_end/models/trace/insights/LCPDiscovery.ts +122 -0
- package/front_end/models/trace/insights/{LargestContentfulPaint.test.ts → LCPPhases.test.ts} +6 -28
- package/front_end/models/trace/insights/{LargestContentfulPaint.ts → LCPPhases.ts} +59 -38
- package/front_end/models/trace/insights/{InsightRunners.ts → Models.ts} +5 -3
- package/front_end/models/trace/insights/RenderBlocking.test.ts +1 -1
- package/front_end/models/trace/insights/RenderBlocking.ts +41 -28
- package/front_end/models/trace/insights/SlowCSSSelector.ts +33 -5
- package/front_end/models/trace/insights/{ThirdPartyWeb.test.ts → ThirdParties.test.ts} +3 -3
- package/front_end/models/trace/insights/{ThirdPartyWeb.ts → ThirdParties.ts} +32 -5
- package/front_end/models/trace/insights/Viewport.test.ts +1 -1
- package/front_end/models/trace/insights/Viewport.ts +40 -9
- package/front_end/models/trace/insights/insights.ts +1 -1
- package/front_end/models/trace/insights/types.ts +22 -9
- package/front_end/models/trace/types/File.ts +7 -0
- package/front_end/models/trace/types/TraceEvents.ts +60 -24
- package/front_end/panels/animation/AnimationTimeline.ts +2 -4
- package/front_end/panels/application/ApplicationPanelSidebar.test.ts +0 -5
- package/front_end/panels/application/ApplicationPanelSidebar.ts +15 -21
- package/front_end/panels/application/IndexedDBViews.ts +4 -1
- package/front_end/panels/application/ServiceWorkerCacheViews.ts +4 -1
- package/front_end/panels/application/SharedStorageItemsView.test.ts +3 -3
- package/front_end/panels/application/SharedStorageItemsView.ts +5 -3
- package/front_end/panels/application/StorageView.test.ts +1 -1
- package/front_end/panels/application/StorageView.ts +3 -3
- package/front_end/panels/application/components/StorageMetadataView.ts +1 -2
- package/front_end/panels/application/resourcesSidebar.css +1 -1
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +1 -1
- package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +1 -1
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +35 -32
- package/front_end/panels/browser_debugger/categorizedBreakpointsSidebarPane.css +1 -1
- package/front_end/panels/browser_debugger/xhrBreakpointsSidebarPane.css +1 -1
- package/front_end/panels/console/ConsoleViewMessage.test.ts +25 -0
- package/front_end/panels/console/ConsoleViewMessage.ts +23 -0
- package/front_end/panels/coverage/CoverageListView.ts +1 -1
- package/front_end/panels/coverage/CoverageView.ts +3 -3
- package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +1 -1
- package/front_end/panels/elements/ClassesPaneWidget.ts +1 -1
- package/front_end/panels/elements/ComputedStyleModel.ts +9 -2
- package/front_end/panels/elements/ComputedStyleWidget.test.ts +72 -0
- package/front_end/panels/elements/ComputedStyleWidget.ts +12 -0
- package/front_end/panels/elements/ElementStatePaneWidget.test.ts +85 -30
- package/front_end/panels/elements/ElementStatePaneWidget.ts +49 -26
- package/front_end/panels/elements/ElementsSidebarPane.ts +3 -3
- package/front_end/panels/elements/ElementsTreeElement.ts +25 -11
- package/front_end/panels/elements/LayersWidget.ts +1 -1
- package/front_end/panels/elements/MetricsSidebarPane.ts +12 -7
- package/front_end/panels/elements/PropertyMatchers.test.ts +7 -0
- package/front_end/panels/elements/PropertyMatchers.ts +6 -0
- package/front_end/panels/elements/StylePropertiesSection.ts +15 -6
- package/front_end/panels/elements/StylePropertyTreeElement.test.ts +3 -1
- package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -3
- package/front_end/panels/elements/classesPaneWidget.css +1 -1
- package/front_end/panels/elements/stylePropertiesTreeOutline.css +2 -2
- package/front_end/panels/emulation/DeviceModeView.ts +1 -1
- package/front_end/panels/emulation/DeviceModeWrapper.ts +1 -1
- package/front_end/panels/emulation/InspectedPagePlaceholder.ts +1 -1
- package/front_end/panels/explain/components/ConsoleInsight.ts +8 -18
- package/front_end/panels/freestyler/AiAgent.test.ts +376 -50
- package/front_end/panels/freestyler/AiAgent.ts +251 -144
- package/front_end/panels/freestyler/AiHistoryStorage.test.ts +159 -0
- package/front_end/panels/freestyler/AiHistoryStorage.ts +73 -0
- package/front_end/panels/freestyler/DrJonesFileAgent.test.ts +113 -38
- package/front_end/panels/freestyler/DrJonesFileAgent.ts +56 -34
- package/front_end/panels/freestyler/DrJonesNetworkAgent.test.ts +29 -20
- package/front_end/panels/freestyler/DrJonesNetworkAgent.ts +39 -18
- package/front_end/panels/freestyler/DrJonesPerformanceAgent.test.ts +44 -42
- package/front_end/panels/freestyler/DrJonesPerformanceAgent.ts +51 -22
- package/front_end/panels/freestyler/FreestylerAgent.test.ts +210 -28
- package/front_end/panels/freestyler/FreestylerAgent.ts +65 -26
- package/front_end/panels/freestyler/FreestylerPanel.test.ts +610 -39
- package/front_end/panels/freestyler/FreestylerPanel.ts +414 -255
- package/front_end/panels/freestyler/components/FreestylerChatUi.test.ts +126 -34
- package/front_end/panels/freestyler/components/FreestylerChatUi.ts +431 -280
- package/front_end/panels/freestyler/components/UserActionRow.ts +157 -47
- package/front_end/panels/freestyler/components/freestylerChatUi.css +90 -35
- package/front_end/panels/freestyler/components/userActionRow.css +41 -67
- package/front_end/panels/freestyler/freestyler-meta.ts +3 -11
- package/front_end/panels/freestyler/freestyler.ts +1 -0
- package/front_end/panels/issues/IssueAggregator.test.ts +50 -0
- package/front_end/panels/issues/IssueAggregator.ts +10 -10
- package/front_end/panels/issues/components/HideIssuesMenu.ts +2 -11
- package/front_end/panels/issues/issuesTree.css +1 -1
- package/front_end/panels/layer_viewer/LayerDetailsView.ts +2 -3
- package/front_end/panels/layer_viewer/Layers3DView.ts +1 -1
- package/front_end/panels/layer_viewer/PaintProfilerView.ts +6 -6
- package/front_end/panels/layers/LayersPanel.ts +1 -1
- package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +46 -0
- package/front_end/panels/lighthouse/lighthouseStartView.css +1 -1
- package/front_end/panels/media/TickingFlameChart.ts +1 -1
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +26 -17
- package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +25 -19
- package/front_end/panels/network/BinaryResourceView.ts +6 -7
- package/front_end/panels/network/BlockedURLsPane.ts +1 -1
- package/front_end/panels/network/EventSourceMessagesView.ts +1 -1
- package/front_end/panels/network/NetworkDataGridNode.ts +4 -3
- package/front_end/panels/network/NetworkLogView.test.ts +1 -1
- package/front_end/panels/network/NetworkLogView.ts +7 -8
- package/front_end/panels/network/NetworkPanel.ts +40 -32
- package/front_end/panels/network/NetworkWaterfallColumn.ts +1 -1
- package/front_end/panels/network/RequestTimingView.test.ts +35 -1
- package/front_end/panels/network/RequestTimingView.ts +96 -0
- package/front_end/panels/network/ResourceWebSocketFrameView.ts +2 -2
- package/front_end/panels/network/networkTimingTable.css +2 -1
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +1 -1
- package/front_end/panels/profiler/HeapProfileView.ts +10 -10
- package/front_end/panels/profiler/HeapSnapshotView.ts +2 -2
- package/front_end/panels/profiler/HeapTimelineOverview.ts +13 -13
- package/front_end/panels/profiler/IsolateSelector.ts +4 -5
- package/front_end/panels/profiler/LiveHeapProfileView.ts +3 -1
- package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +4 -4
- package/front_end/panels/profiler/ProfileSidebarTreeElement.ts +7 -6
- package/front_end/panels/profiler/ProfileView.ts +3 -3
- package/front_end/panels/profiler/profileLauncherView.css +1 -1
- package/front_end/panels/profiler/profilesSidebarTree.css +1 -1
- package/front_end/panels/recorder/components/RecordingView.ts +2 -2
- package/front_end/panels/recorder/injected/{rollup.config.js → rollup.config.mjs} +1 -1
- package/front_end/panels/recorder/recorderController.css +1 -5
- package/front_end/panels/security/CookieControlsTreeElement.ts +18 -0
- package/front_end/panels/security/CookieControlsView.test.ts +29 -0
- package/front_end/panels/security/CookieControlsView.ts +265 -0
- package/front_end/panels/security/CookieReportTreeElement.ts +1 -9
- package/front_end/panels/security/CookieReportView.test.ts +157 -0
- package/front_end/panels/security/CookieReportView.ts +316 -0
- package/front_end/panels/security/SecurityPanel.ts +12 -4
- package/front_end/panels/security/SecurityPanelSidebar.ts +6 -1
- package/front_end/panels/security/cookieControlsView.css +101 -0
- package/front_end/panels/security/cookieReportView.css +69 -0
- package/front_end/panels/security/security.ts +4 -0
- package/front_end/panels/security/sidebar.css +2 -3
- package/front_end/panels/sensors/LocationsSettingsTab.ts +26 -11
- package/front_end/panels/sensors/locationsSettingsTab.css +18 -18
- package/front_end/panels/settings/AISettingsTab.ts +6 -15
- package/front_end/panels/settings/KeybindsSettingsTab.ts +4 -3
- package/front_end/panels/settings/SettingsScreen.ts +64 -55
- package/front_end/panels/settings/aiSettingsTab.css +3 -14
- package/front_end/panels/settings/components/SyncSection.ts +1 -2
- package/front_end/panels/settings/components/syncSection.css +0 -10
- package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +4 -2
- package/front_end/panels/settings/keybindsSettingsTab.css +12 -10
- package/front_end/panels/settings/settings-meta.ts +3 -1
- package/front_end/panels/settings/settingsScreen.css +37 -125
- package/front_end/panels/sources/CallStackSidebarPane.ts +2 -2
- package/front_end/panels/sources/DebuggerPlugin.ts +9 -4
- package/front_end/panels/sources/NavigatorView.ts +12 -13
- package/front_end/panels/sources/navigatorTree.css +1 -1
- package/front_end/panels/sources/sourcesPanel.css +2 -2
- package/front_end/panels/timeline/ActiveFilters.ts +3 -4
- package/front_end/panels/timeline/AnimationsTrackAppender.ts +2 -9
- package/front_end/panels/timeline/AppenderUtils.ts +1 -1
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +38 -41
- package/front_end/panels/timeline/CountersGraph.ts +2 -4
- package/front_end/panels/timeline/EventsTimelineTreeView.ts +7 -8
- package/front_end/panels/timeline/ExtensionTrackAppender.ts +4 -13
- package/front_end/panels/timeline/InteractionsTrackAppender.ts +3 -4
- package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +6 -12
- package/front_end/panels/timeline/README.md +2 -1
- package/front_end/panels/timeline/ServerTimingsTrackAppender.ts +1 -10
- package/front_end/panels/timeline/ThreadAppender.ts +9 -12
- package/front_end/panels/timeline/TimelineController.ts +14 -4
- package/front_end/panels/timeline/TimelineDetailsView.test.ts +3 -2
- package/front_end/panels/timeline/TimelineDetailsView.ts +18 -17
- package/front_end/panels/timeline/TimelineEventOverview.ts +3 -4
- package/front_end/panels/timeline/TimelineFilters.ts +3 -4
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.test.ts +1 -1
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +58 -46
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +2 -3
- package/front_end/panels/timeline/TimelineFlameChartView.ts +54 -26
- package/front_end/panels/timeline/TimelineHistoryManager.test.ts +20 -15
- package/front_end/panels/timeline/TimelineHistoryManager.ts +46 -58
- package/front_end/panels/timeline/TimelineLayersView.ts +1 -1
- package/front_end/panels/timeline/TimelineLoader.test.ts +1 -2
- package/front_end/panels/timeline/TimelineLoader.ts +19 -4
- package/front_end/panels/timeline/TimelineMiniMap.ts +12 -2
- package/front_end/panels/timeline/TimelinePaintProfilerView.ts +1 -1
- package/front_end/panels/timeline/TimelinePanel.ts +161 -32
- package/front_end/panels/timeline/TimelineTreeView.test.ts +12 -13
- package/front_end/panels/timeline/TimelineTreeView.ts +98 -54
- package/front_end/panels/timeline/TimelineUIUtils.test.ts +2 -2
- package/front_end/panels/timeline/TimelineUIUtils.ts +56 -14
- package/front_end/panels/timeline/TimingsTrackAppender.ts +6 -13
- package/front_end/panels/timeline/components/FieldSettingsDialog.test.ts +1 -0
- package/front_end/panels/timeline/components/FieldSettingsDialog.ts +6 -1
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +6 -7
- package/front_end/panels/timeline/components/LiveMetricsView.test.ts +15 -3
- package/front_end/panels/timeline/components/LiveMetricsView.ts +27 -44
- package/front_end/panels/timeline/components/MetricCard.test.ts +1 -1
- package/front_end/panels/timeline/components/MetricCard.ts +46 -0
- package/front_end/panels/timeline/components/NetworkRequestDetails.ts +3 -4
- package/front_end/panels/timeline/components/Sidebar.ts +1 -4
- package/front_end/panels/timeline/components/SidebarAnnotationsTab.test.ts +1 -1
- package/front_end/panels/timeline/components/SidebarInsightsTab.ts +1 -1
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.test.ts +23 -35
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +53 -41
- package/front_end/panels/timeline/components/TimelineSummary.test.ts +75 -0
- package/front_end/panels/timeline/components/TimelineSummary.ts +101 -0
- package/front_end/panels/timeline/components/Utils.test.ts +49 -0
- package/front_end/panels/timeline/components/Utils.ts +2 -2
- package/front_end/panels/timeline/components/components.ts +2 -0
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.test.ts +84 -0
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +291 -0
- package/front_end/panels/timeline/components/insights/CLSCulprits.ts +24 -62
- package/front_end/panels/timeline/components/insights/DocumentLatency.ts +43 -72
- package/front_end/panels/timeline/components/insights/EventRef.ts +70 -2
- package/front_end/panels/timeline/components/insights/FontDisplay.ts +37 -61
- package/front_end/panels/timeline/components/insights/Helpers.ts +5 -212
- package/front_end/panels/timeline/components/insights/ImageDelivery.ts +142 -0
- package/front_end/panels/timeline/components/insights/InteractionToNextPaint.ts +34 -69
- package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +52 -103
- package/front_end/panels/timeline/components/insights/LCPPhases.ts +31 -92
- package/front_end/panels/timeline/components/insights/RenderBlocking.ts +38 -64
- package/front_end/panels/timeline/components/insights/SidebarInsight.ts +3 -198
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +59 -95
- package/front_end/panels/timeline/components/insights/Table.ts +6 -3
- package/front_end/panels/timeline/components/insights/ThirdParties.ts +51 -78
- package/front_end/panels/timeline/components/insights/Viewport.ts +27 -49
- package/front_end/panels/timeline/components/insights/{sidebarInsight.css → baseInsightComponent.css} +9 -9
- package/front_end/panels/timeline/components/insights/insights.ts +4 -0
- package/front_end/panels/timeline/components/insights/types.ts +0 -7
- package/front_end/panels/timeline/components/liveMetricsView.css +10 -18
- package/front_end/panels/timeline/components/metricCard.css +11 -0
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +1 -1
- package/front_end/panels/timeline/components/timelineSummary.css +67 -0
- package/front_end/panels/timeline/docs/flame_chart_migration.md +1 -1
- package/front_end/panels/timeline/fixtures/traces/README.md +4 -0
- package/front_end/panels/timeline/fixtures/traces/image-delivery.json.gz +0 -0
- package/front_end/panels/timeline/overlays/OverlaysImpl.test.ts +5 -5
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +35 -12
- package/front_end/panels/timeline/timeline-meta.ts +1 -1
- package/front_end/panels/timeline/timelineFlameChartView.css +1 -1
- package/front_end/panels/timeline/timelineFlamechartPopover.css +14 -4
- package/front_end/panels/timeline/timelineHistoryManager.css +7 -3
- package/front_end/panels/timeline/timelinePanel.css +0 -1
- package/front_end/panels/timeline/track_appenders/CompatibilityTracksAppender.test.ts +5 -5
- package/front_end/panels/timeline/track_appenders/ExtensionTrackAppender.test.ts +5 -6
- package/front_end/panels/timeline/track_appenders/LayoutShiftsTrackAppender.test.ts +11 -2
- package/front_end/panels/timeline/track_appenders/ServerTimingsTrackAppender.test.ts +0 -9
- package/front_end/panels/timeline/track_appenders/ThreadAppender.test.ts +37 -44
- package/front_end/panels/timeline/track_appenders/TimingsTrackAppender.test.ts +44 -30
- package/front_end/panels/timeline/utils/AICallTree.test.ts +105 -0
- package/front_end/panels/timeline/utils/AICallTree.ts +25 -24
- package/front_end/panels/timeline/utils/EntryName.ts +1 -2
- package/front_end/panels/timeline/utils/Helpers.ts +19 -0
- package/front_end/panels/timeline/utils/IgnoreList.test.ts +52 -0
- package/front_end/panels/timeline/utils/IgnoreList.ts +68 -7
- package/front_end/panels/timeline/utils/SourceMapsResolver.ts +2 -0
- package/front_end/panels/webauthn/webauthnPane.css +1 -1
- package/front_end/panels/whats_new/ReleaseNote.test.ts +90 -0
- package/front_end/panels/whats_new/ReleaseNoteText.ts +52 -0
- package/front_end/panels/whats_new/ReleaseNoteView.ts +157 -0
- package/front_end/panels/whats_new/WhatsNewImpl.ts +102 -0
- package/front_end/panels/whats_new/releaseNoteView.css +121 -0
- package/front_end/panels/whats_new/resources/WNDT.md +6 -0
- package/front_end/panels/whats_new/resources/whatsnew.avif +0 -0
- package/front_end/panels/whats_new/whats_new-meta.ts +142 -0
- package/front_end/panels/whats_new/whats_new.ts +13 -0
- package/front_end/services/puppeteer/PuppeteerConnection.ts +4 -3
- package/front_end/testing/EnvironmentHelpers.ts +6 -20
- package/front_end/testing/InsightHelpers.ts +4 -4
- package/front_end/testing/SourceMapEncoder.ts +27 -11
- package/front_end/testing/TraceHelpers.ts +3 -2
- package/front_end/testing/TraceLoader.ts +6 -2
- package/front_end/third_party/lighthouse/README.chromium +2 -2
- package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +1380 -1369
- package/front_end/third_party/lighthouse/locales/ar-XB.json +88 -85
- package/front_end/third_party/lighthouse/locales/ar.json +98 -95
- package/front_end/third_party/lighthouse/locales/bg.json +88 -85
- package/front_end/third_party/lighthouse/locales/ca.json +91 -88
- package/front_end/third_party/lighthouse/locales/cs.json +91 -88
- package/front_end/third_party/lighthouse/locales/da.json +94 -91
- package/front_end/third_party/lighthouse/locales/de.json +92 -89
- package/front_end/third_party/lighthouse/locales/el.json +92 -89
- package/front_end/third_party/lighthouse/locales/en-GB.json +89 -86
- package/front_end/third_party/lighthouse/locales/en-US.json +23 -20
- package/front_end/third_party/lighthouse/locales/en-XA.json +88 -85
- package/front_end/third_party/lighthouse/locales/en-XL.json +23 -20
- package/front_end/third_party/lighthouse/locales/es-419.json +92 -89
- package/front_end/third_party/lighthouse/locales/es.json +91 -88
- package/front_end/third_party/lighthouse/locales/fi.json +92 -89
- package/front_end/third_party/lighthouse/locales/fil.json +93 -90
- package/front_end/third_party/lighthouse/locales/fr.json +94 -91
- package/front_end/third_party/lighthouse/locales/he.json +97 -94
- package/front_end/third_party/lighthouse/locales/hi.json +92 -89
- package/front_end/third_party/lighthouse/locales/hr.json +90 -87
- package/front_end/third_party/lighthouse/locales/hu.json +90 -87
- package/front_end/third_party/lighthouse/locales/id.json +91 -88
- package/front_end/third_party/lighthouse/locales/it.json +90 -87
- package/front_end/third_party/lighthouse/locales/ja.json +90 -87
- package/front_end/third_party/lighthouse/locales/ko.json +90 -87
- package/front_end/third_party/lighthouse/locales/lt.json +90 -87
- package/front_end/third_party/lighthouse/locales/lv.json +91 -88
- package/front_end/third_party/lighthouse/locales/nl.json +90 -87
- package/front_end/third_party/lighthouse/locales/no.json +92 -89
- package/front_end/third_party/lighthouse/locales/pl.json +90 -87
- package/front_end/third_party/lighthouse/locales/pt-PT.json +111 -108
- package/front_end/third_party/lighthouse/locales/pt.json +97 -94
- package/front_end/third_party/lighthouse/locales/ro.json +94 -91
- package/front_end/third_party/lighthouse/locales/ru.json +93 -90
- package/front_end/third_party/lighthouse/locales/sk.json +93 -90
- package/front_end/third_party/lighthouse/locales/sl.json +91 -88
- package/front_end/third_party/lighthouse/locales/sr-Latn.json +91 -88
- package/front_end/third_party/lighthouse/locales/sr.json +91 -88
- package/front_end/third_party/lighthouse/locales/sv.json +92 -89
- package/front_end/third_party/lighthouse/locales/ta.json +101 -98
- package/front_end/third_party/lighthouse/locales/te.json +92 -89
- package/front_end/third_party/lighthouse/locales/th.json +95 -92
- package/front_end/third_party/lighthouse/locales/tr.json +91 -88
- package/front_end/third_party/lighthouse/locales/uk.json +93 -90
- package/front_end/third_party/lighthouse/locales/vi.json +95 -92
- package/front_end/third_party/lighthouse/locales/zh-HK.json +92 -89
- package/front_end/third_party/lighthouse/locales/zh-TW.json +98 -95
- package/front_end/third_party/lighthouse/locales/zh.json +96 -93
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +10 -3
- 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/ElementHandle.d.ts +14 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js +16 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts +34 -5
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js +51 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +4 -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/bidi/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js +10 -8
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js.map +1 -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 +1 -1
- 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/Input.d.ts +14 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js +57 -23
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +1 -0
- 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 +3 -0
- 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/cdp/Browser.d.ts +3 -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 +10 -4
- 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/BrowserConnector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js +13 -10
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.d.ts +1 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.js +4 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts +15 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js +55 -26
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.js +24 -12
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/NetworkManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +1 -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 +3 -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/common/CallbackRegistry.d.ts +0 -8
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js +2 -11
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +5 -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/common/ConsoleMessage.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DownloadBehavior.d.ts +30 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DownloadBehavior.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DownloadBehavior.js +8 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DownloadBehavior.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts +7 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js +9 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.js +5 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/common.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/common.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js +0 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +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/BrowserLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.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/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.d.ts +14 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.js +18 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +100 -10
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +291 -143
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +10 -3
- 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/ElementHandle.d.ts +14 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js +16 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts +34 -5
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js +51 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +4 -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/bidi/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js +10 -8
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js.map +1 -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 +1 -1
- 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/Input.d.ts +14 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js +57 -23
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +1 -0
- 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 +3 -0
- 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/cdp/Browser.d.ts +3 -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 +10 -4
- 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/BrowserConnector.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js +13 -10
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js +3 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.d.ts +1 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.js +4 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts +15 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js +55 -26
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.js +24 -12
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/NetworkManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +1 -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 +3 -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/common/CallbackRegistry.d.ts +0 -8
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js +1 -9
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +5 -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/common/ConsoleMessage.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DownloadBehavior.d.ts +30 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DownloadBehavior.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DownloadBehavior.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DownloadBehavior.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.js +5 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/common.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/common.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js +0 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.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/util/incremental-id-generator.d.ts +14 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js +15 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +100 -10
- package/front_end/third_party/puppeteer/package/package.json +5 -5
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +10 -3
- package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +21 -3
- package/front_end/third_party/puppeteer/package/src/api/Frame.ts +3 -1
- package/front_end/third_party/puppeteer/package/src/api/HTTPRequest.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/api/Input.ts +57 -8
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +5 -0
- package/front_end/third_party/puppeteer/package/src/bidi/ElementHandle.ts +9 -7
- package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/bidi/Input.ts +72 -31
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +4 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +11 -3
- package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +2 -0
- package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +11 -0
- package/front_end/third_party/puppeteer/package/src/cdp/ElementHandle.ts +14 -9
- package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +4 -0
- package/front_end/third_party/puppeteer/package/src/cdp/HTTPResponse.ts +3 -5
- package/front_end/third_party/puppeteer/package/src/cdp/Input.ts +71 -26
- package/front_end/third_party/puppeteer/package/src/cdp/NetworkManager.ts +34 -17
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +4 -0
- package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +1 -15
- package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +5 -0
- package/front_end/third_party/puppeteer/package/src/common/ConsoleMessage.ts +8 -1
- package/front_end/third_party/puppeteer/package/src/common/DownloadBehavior.ts +31 -0
- package/front_end/third_party/puppeteer/package/src/common/Errors.ts +7 -0
- package/front_end/third_party/puppeteer/package/src/common/WaitTask.ts +9 -9
- package/front_end/third_party/puppeteer/package/src/common/common.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/environment.ts +1 -4
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/generated/version.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +2 -0
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/incremental-id-generator.ts +20 -0
- package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +2 -0
- package/front_end/ui/components/buttons/Button.test.ts +14 -0
- package/front_end/ui/components/buttons/Button.ts +27 -4
- package/front_end/ui/components/cards/card.css +7 -4
- package/front_end/ui/components/data_grid/DataGridControllerIntegrator.ts +4 -1
- package/front_end/ui/components/dialogs/ButtonDialog.test.ts +78 -0
- package/front_end/ui/components/dialogs/ButtonDialog.ts +131 -0
- package/front_end/ui/components/dialogs/Dialog.test.ts +43 -0
- package/front_end/ui/components/dialogs/Dialog.ts +63 -3
- package/front_end/ui/components/dialogs/ShortcutDialog.test.ts +15 -1
- package/front_end/ui/components/dialogs/ShortcutDialog.ts +33 -23
- package/front_end/ui/components/dialogs/buttonDialog.css +9 -0
- package/front_end/ui/components/dialogs/dialog.css +15 -4
- package/front_end/ui/components/dialogs/dialogs.ts +2 -0
- package/front_end/ui/components/dialogs/shortcutDialog.css +58 -38
- package/front_end/ui/components/docs/dialog/button_dialog.html +28 -0
- package/front_end/ui/components/docs/dialog/button_dialog.ts +29 -0
- package/front_end/ui/components/docs/freestyler/basic.ts +6 -8
- package/front_end/ui/components/docs/freestyler/empty_state.ts +6 -8
- package/front_end/ui/components/docs/performance_panel/basic.ts +1 -1
- package/front_end/ui/components/docs/performance_panel/timeline_history_manager.ts +6 -4
- package/front_end/ui/components/docs/performance_panel/track_example.html +1 -1
- package/front_end/ui/components/floating_button/FloatingButton.ts +3 -2
- package/front_end/ui/components/icon_button/fileSourceIcon.css +7 -3
- package/front_end/ui/components/issue_counter/IssueCounter.ts +15 -2
- package/front_end/ui/components/legacy_wrapper/LegacyWrapper.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownView.test.ts +39 -17
- package/front_end/ui/components/markdown_view/MarkdownView.ts +92 -14
- package/front_end/ui/components/markdown_view/markdownView.css +15 -0
- package/front_end/ui/components/render_coordinator/RenderCoordinator.ts +24 -18
- package/front_end/ui/components/settings/SettingCheckbox.ts +3 -2
- package/front_end/ui/components/switch/SwitchImpl.ts +2 -2
- package/front_end/ui/legacy/ContextMenu.ts +2 -2
- package/front_end/ui/legacy/Infobar.ts +6 -0
- package/front_end/ui/legacy/InplaceEditor.ts +18 -14
- package/front_end/ui/legacy/InspectorView.ts +40 -0
- package/front_end/ui/legacy/ListWidget.ts +4 -2
- package/front_end/ui/legacy/TabbedPane.ts +0 -14
- package/front_end/ui/legacy/ThrottledWidget.ts +2 -2
- package/front_end/ui/legacy/Toolbar.ts +3 -3
- package/front_end/ui/legacy/UIUtils.ts +8 -13
- package/front_end/ui/legacy/Widget.ts +32 -0
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +7 -2
- package/front_end/ui/legacy/components/data_grid/DataGrid.test.ts +6 -9
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +43 -38
- package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +21 -12
- package/front_end/ui/legacy/components/inline_editor/LinkSwatch.test.ts +19 -0
- package/front_end/ui/legacy/components/inline_editor/LinkSwatch.ts +1 -1
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +2 -2
- package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +37 -47
- package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +129 -100
- package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +4 -2
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.test.ts +9 -4
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.ts +23 -9
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +102 -43
- package/front_end/ui/legacy/components/perf_ui/flameChart.css +0 -2
- package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +4 -4
- package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.test.ts +49 -0
- package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +23 -46
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -1
- package/front_end/ui/legacy/components/utils/ImagePreview.ts +1 -1
- package/front_end/ui/legacy/components/utils/jsUtils.css +8 -0
- package/front_end/ui/legacy/filter.css +1 -1
- package/front_end/ui/legacy/inspectorCommon.css +1 -1
- package/front_end/ui/legacy/listWidget.css +4 -1
- package/front_end/ui/legacy/reportView.css +1 -1
- package/front_end/ui/legacy/textPrompt.css +1 -1
- package/front_end/ui/legacy/toolbar.css +7 -11
- package/front_end/ui/legacy/treeoutline.css +3 -1
- package/front_end/ui/visual_logging/KnownContextValues.ts +186 -1
- package/front_end/ui/visual_logging/LoggingConfig.ts +6 -2
- package/front_end/ui/visual_logging/LoggingDriver.test.ts +27 -1
- package/front_end/ui/visual_logging/LoggingDriver.ts +7 -4
- package/package.json +8 -8
- package/scripts/build/ninja/bundle.gni +3 -3
- package/scripts/build/{rollup.config.js → rollup.config.mjs} +4 -4
- package/scripts/build/wasm-as.py +1 -1
- package/scripts/devtools_paths.py +8 -4
- package/scripts/eslint_rules/tests/check_test_definitions_test.js +8 -3
- package/scripts/freestyler/auto_freestyler.js +12 -4
- package/scripts/freestyler/to_tsv.mjs +40 -0
- package/scripts/tools/update_goldens.py +11 -13
- package/scripts/tools/update_goldens_v2.py +1 -1
- package/front_end/models/timeline_model/TimelineModelFilter.ts +0 -61
- package/front_end/panels/timeline/components/insights/SidebarInsight.test.ts +0 -72
- package/front_end/ui/components/docs/two_states_counter/basic.html +0 -27
- package/front_end/ui/components/docs/two_states_counter/basic.ts +0 -45
- package/front_end/ui/components/two_states_counter/TwoStatesCounter.test.ts +0 -73
- package/front_end/ui/components/two_states_counter/TwoStatesCounter.ts +0 -104
- package/front_end/ui/components/two_states_counter/twoStatesCounter.css +0 -37
- package/front_end/ui/components/two_states_counter/two_states_counter.ts +0 -9
- /package/front_end/Images/{rollup.config.js → rollup.config.mjs} +0 -0
@@ -9,9 +9,6 @@ import * as Common from '../../../core/common/common.js';
|
|
9
9
|
import * as Host from '../../../core/host/host.js';
|
10
10
|
import * as i18n from '../../../core/i18n/i18n.js';
|
11
11
|
import type * as Platform from '../../../core/platform/platform.js';
|
12
|
-
import * as SDK from '../../../core/sdk/sdk.js';
|
13
|
-
import type * as Workspace from '../../../models/workspace/workspace.js';
|
14
|
-
import * as TimelineUtils from '../../../panels/timeline/utils/utils.js';
|
15
12
|
import * as Marked from '../../../third_party/marked/marked.js';
|
16
13
|
import * as Buttons from '../../../ui/components/buttons/buttons.js';
|
17
14
|
import type * as IconButton from '../../../ui/components/icon_button/icon_button.js';
|
@@ -19,13 +16,12 @@ import * as MarkdownView from '../../../ui/components/markdown_view/markdown_vie
|
|
19
16
|
import * as UI from '../../../ui/legacy/legacy.js';
|
20
17
|
import * as LitHtml from '../../../ui/lit-html/lit-html.js';
|
21
18
|
import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
|
22
|
-
import {
|
23
|
-
import {AgentType, type ContextDetail, ErrorType} from '../AiAgent.js';
|
19
|
+
import {AgentType, type ContextDetail, type ConversationContext, ErrorType} from '../AiAgent.js';
|
24
20
|
|
25
21
|
import freestylerChatUiStyles from './freestylerChatUi.css.js';
|
26
22
|
import type {UserActionRowProps} from './UserActionRow.js';
|
27
23
|
|
28
|
-
const {html, Directives: {ifDefined}} = LitHtml;
|
24
|
+
const {html, Directives: {ifDefined, ref}} = LitHtml;
|
29
25
|
|
30
26
|
const UIStrings = {
|
31
27
|
/**
|
@@ -115,10 +111,22 @@ const UIStringsNotTranslate = {
|
|
115
111
|
*@description Placeholder text for the chat UI input.
|
116
112
|
*/
|
117
113
|
inputPlaceholderForDrJonesPerformanceAgent: 'Ask a question about the selected item and its call tree',
|
114
|
+
/**
|
115
|
+
* @description Placeholder text for the input shown when the conversation is blocked because a cross-origin context was selected.
|
116
|
+
*/
|
117
|
+
crossOriginError: 'To talk about data from another origin, start a new chat',
|
118
|
+
/**
|
119
|
+
* @description Placeholder text for the input shown when the conversation is blocked because a cross-origin context was selected.
|
120
|
+
*/
|
121
|
+
newConversationError: 'To talk about this data, start a new chat',
|
118
122
|
/**
|
119
123
|
*@description Title for the send icon button.
|
120
124
|
*/
|
121
125
|
sendButtonTitle: 'Send',
|
126
|
+
/**
|
127
|
+
*@description Title for the start new chat
|
128
|
+
*/
|
129
|
+
startNewChat: 'Start new chat',
|
122
130
|
/**
|
123
131
|
*@description Title for the cancel icon button.
|
124
132
|
*/
|
@@ -135,6 +143,10 @@ const UIStringsNotTranslate = {
|
|
135
143
|
*@description Text for the empty state of the AI assistance panel.
|
136
144
|
*/
|
137
145
|
emptyStateText: 'How can I help you?',
|
146
|
+
/**
|
147
|
+
*@description Text for the empty state of the AI assistance panel when there is no agent selected.
|
148
|
+
*/
|
149
|
+
noAgentStateText: 'Explore AI assistance',
|
138
150
|
/**
|
139
151
|
* @description The error message when the LLM loop is stopped for some reason (Max steps reached or request to LLM failed)
|
140
152
|
*/
|
@@ -200,67 +212,17 @@ const UIStringsNotTranslate = {
|
|
200
212
|
*@description Aria label for the cancel icon to be read by screen reader
|
201
213
|
*/
|
202
214
|
canceled: 'Canceled',
|
203
|
-
/*
|
204
|
-
* @description Header text for instructions on how to use the AI assistance feature.
|
205
|
-
*/
|
206
|
-
getStarted: 'Hi! Here’s how to get started:',
|
207
|
-
/**
|
208
|
-
* @description AI assistance for CSS.
|
209
|
-
*/
|
210
|
-
cssHelp: 'CSS help:',
|
211
|
-
/**
|
212
|
-
* @description Explanation on how to use AI assistance for DOM elements.
|
213
|
-
*/
|
214
|
-
cssHelpExplainer:
|
215
|
-
'Navigate to the Elements panel, right-click a DOM element, and select "Ask AI assistant". I’ll be happy to explain its styles or behavior.',
|
216
215
|
/**
|
217
|
-
|
216
|
+
*@description Text displayed when the chat input is disabled due to reading past conversation.
|
218
217
|
*/
|
219
|
-
|
220
|
-
/**
|
221
|
-
* @description Explanation on how to use AI assistance for files in the Sources panel.
|
222
|
-
*/
|
223
|
-
fileHelpExplainer:
|
224
|
-
'Open the Sources panel, right-click a file, and select "Ask AI". I can provide insights into its purpose or origin.',
|
225
|
-
/**
|
226
|
-
* @description AI assistance for network requests.
|
227
|
-
*/
|
228
|
-
networkHelp: 'Network request insights:',
|
229
|
-
/**
|
230
|
-
* @description Explanation on how to use AI assistance for network requests.
|
231
|
-
*/
|
232
|
-
networkHelpExplainer:
|
233
|
-
'In the Network panel, right-click any request and select "Ask AI assistant". I’ll help break down what’s happening with each request.',
|
234
|
-
/**
|
235
|
-
* @description AI assistance for performance traces.
|
236
|
-
*/
|
237
|
-
performanceHelp: 'Performance analysis:',
|
238
|
-
/**
|
239
|
-
* @description Explanation on how to use AI assistance for performance traces.
|
240
|
-
*/
|
241
|
-
performanceHelpExplainer:
|
242
|
-
'In the Performance panel, run a trace. Then, right-click any function in the timeline and select "Ask AI". I’ll help you analyze its performance impact and suggest improvements.',
|
218
|
+
pastConversation: 'You\'re viewing a past conversation.',
|
243
219
|
};
|
244
220
|
|
245
221
|
const str_ = i18n.i18n.registerUIStrings('panels/freestyler/components/FreestylerChatUi.ts', UIStrings);
|
246
222
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
247
223
|
const lockedString = i18n.i18n.lockedString;
|
248
224
|
|
249
|
-
|
250
|
-
if (state === State.CONSENT_VIEW || !agentType) {
|
251
|
-
return i18nString(UIStrings.followTheSteps);
|
252
|
-
}
|
253
|
-
switch (agentType) {
|
254
|
-
case AgentType.FREESTYLER:
|
255
|
-
return lockedString(UIStringsNotTranslate.inputPlaceholderForFreestylerAgent);
|
256
|
-
case AgentType.DRJONES_FILE:
|
257
|
-
return lockedString(UIStringsNotTranslate.inputPlaceholderForDrJonesFileAgent);
|
258
|
-
case AgentType.DRJONES_NETWORK_REQUEST:
|
259
|
-
return lockedString(UIStringsNotTranslate.inputPlaceholderForDrJonesNetworkAgent);
|
260
|
-
case AgentType.DRJONES_PERFORMANCE:
|
261
|
-
return lockedString(UIStringsNotTranslate.inputPlaceholderForDrJonesPerformanceAgent);
|
262
|
-
}
|
263
|
-
}
|
225
|
+
const SCROLL_ROUNDING_OFFSET = 1;
|
264
226
|
|
265
227
|
export interface Step {
|
266
228
|
isLoading: boolean;
|
@@ -307,20 +269,22 @@ export interface Props {
|
|
307
269
|
onInspectElementClick: () => void;
|
308
270
|
onFeedbackSubmit: (rpcId: number, rate: Host.AidaClient.Rating, feedback?: string) => void;
|
309
271
|
onCancelClick: () => void;
|
310
|
-
|
311
|
-
|
272
|
+
onContextClick: () => void | Promise<void>;
|
273
|
+
onNewConversation: () => void;
|
274
|
+
onCancelCrossOriginChat?: () => void;
|
312
275
|
inspectElementToggled: boolean;
|
313
276
|
state: State;
|
314
277
|
aidaAvailability: Host.AidaClient.AidaAccessPreconditions;
|
315
278
|
messages: ChatMessage[];
|
316
|
-
|
317
|
-
selectedFile: Workspace.UISourceCode.UISourceCode|null;
|
318
|
-
selectedNetworkRequest: SDK.NetworkRequest.NetworkRequest|null;
|
319
|
-
selectedAiCallTree: TimelineUtils.AICallTree.AICallTree|null;
|
279
|
+
selectedContext: ConversationContext<unknown>|null;
|
320
280
|
isLoading: boolean;
|
321
281
|
canShowFeedbackForm: boolean;
|
322
282
|
userInfo: Pick<Host.InspectorFrontendHostAPI.SyncInformation, 'accountImage'|'accountFullName'>;
|
323
283
|
agentType?: AgentType;
|
284
|
+
isReadOnly: boolean;
|
285
|
+
blockedByCrossOrigin: boolean;
|
286
|
+
requiresNewConversation?: boolean;
|
287
|
+
stripLinks: boolean;
|
324
288
|
}
|
325
289
|
|
326
290
|
// The model returns multiline code blocks in an erroneous way with the language being in new line.
|
@@ -334,6 +298,11 @@ export interface Props {
|
|
334
298
|
// }
|
335
299
|
// ```
|
336
300
|
class MarkdownRendererWithCodeBlock extends MarkdownView.MarkdownView.MarkdownInsightRenderer {
|
301
|
+
#stripLinks: boolean = false;
|
302
|
+
constructor(opts: {stripLinks?: boolean} = {}) {
|
303
|
+
super();
|
304
|
+
this.#stripLinks = Boolean(opts.stripLinks);
|
305
|
+
}
|
337
306
|
override templateForToken(token: Marked.Marked.MarkedToken): LitHtml.TemplateResult|null {
|
338
307
|
if (token.type === 'code') {
|
339
308
|
const lines = (token.text as string).split('\n');
|
@@ -343,15 +312,50 @@ class MarkdownRendererWithCodeBlock extends MarkdownView.MarkdownView.MarkdownIn
|
|
343
312
|
}
|
344
313
|
}
|
345
314
|
|
315
|
+
// Potentially remove links from the rendered result
|
316
|
+
if (this.#stripLinks && (token.type === 'link' || token.type === 'image')) {
|
317
|
+
// Insert an extra text node at the end after any link text. Show the link as plaintext (surrounded by parentheses)
|
318
|
+
const urlText = ` ( ${token.href} )`;
|
319
|
+
// Images would be turned into as links (but we'll skip that) https://source.chromium.org/chromium/chromium/src/+/main:third_party/devtools-frontend/src/front_end/ui/components/markdown_view/MarkdownView.ts;l=286-291;drc=d2cc89e48c913666655542d818ad0a09d25d0d08
|
320
|
+
const childTokens = token.type === 'image' ? undefined : [
|
321
|
+
...token.tokens,
|
322
|
+
{type: 'text', text: urlText, raw: urlText},
|
323
|
+
];
|
324
|
+
|
325
|
+
token = {
|
326
|
+
...token,
|
327
|
+
// Marked doesn't read .text or .raw of a link, but we'll update anyway
|
328
|
+
// https://github.com/markedjs/marked/blob/035af38ab1e5aae95ece213dcc9a9c6d79cff46f/src/Renderer.ts#L178-L191
|
329
|
+
text: `${token.text}${urlText}`,
|
330
|
+
raw: `${token.text}${urlText}`,
|
331
|
+
type: 'text',
|
332
|
+
tokens: childTokens,
|
333
|
+
};
|
334
|
+
}
|
335
|
+
|
346
336
|
return super.templateForToken(token);
|
347
337
|
}
|
348
338
|
}
|
349
339
|
|
350
340
|
export class FreestylerChatUi extends HTMLElement {
|
351
341
|
readonly #shadow = this.attachShadow({mode: 'open'});
|
352
|
-
|
342
|
+
#markdownRenderer = new MarkdownRendererWithCodeBlock();
|
353
343
|
#scrollTop?: number;
|
354
344
|
#props: Props;
|
345
|
+
#messagesContainerElement?: Element;
|
346
|
+
#mainElementRef?: LitHtml.Directives.Ref<Element> = LitHtml.Directives.createRef();
|
347
|
+
#lastAnswerMarkdownView?: MarkdownView.MarkdownView.MarkdownView;
|
348
|
+
#messagesContainerResizeObserver = new ResizeObserver(() => this.#handleMessagesContainerResize());
|
349
|
+
/**
|
350
|
+
* Indicates whether the chat scroll position should be pinned to the bottom.
|
351
|
+
*
|
352
|
+
* This is true when:
|
353
|
+
* - The scroll is at the very bottom, allowing new messages to push the scroll down automatically.
|
354
|
+
* - The panel is initially rendered and the user hasn't scrolled yet.
|
355
|
+
*
|
356
|
+
* It is set to false when the user scrolls up to view previous messages.
|
357
|
+
*/
|
358
|
+
#pinScrollToBottom = true;
|
355
359
|
|
356
360
|
constructor(props: Props) {
|
357
361
|
super();
|
@@ -359,6 +363,7 @@ export class FreestylerChatUi extends HTMLElement {
|
|
359
363
|
}
|
360
364
|
|
361
365
|
set props(props: Props) {
|
366
|
+
this.#markdownRenderer = new MarkdownRendererWithCodeBlock({stripLinks: props.stripLinks});
|
362
367
|
this.#props = props;
|
363
368
|
this.#render();
|
364
369
|
}
|
@@ -366,6 +371,14 @@ export class FreestylerChatUi extends HTMLElement {
|
|
366
371
|
connectedCallback(): void {
|
367
372
|
this.#shadow.adoptedStyleSheets = [freestylerChatUiStyles];
|
368
373
|
this.#render();
|
374
|
+
|
375
|
+
if (this.#messagesContainerElement) {
|
376
|
+
this.#messagesContainerResizeObserver.observe(this.#messagesContainerElement);
|
377
|
+
}
|
378
|
+
}
|
379
|
+
|
380
|
+
disconnectedCallback(): void {
|
381
|
+
this.#messagesContainerResizeObserver.disconnect();
|
369
382
|
}
|
370
383
|
|
371
384
|
focusTextInput(): void {
|
@@ -382,20 +395,41 @@ export class FreestylerChatUi extends HTMLElement {
|
|
382
395
|
return;
|
383
396
|
}
|
384
397
|
|
385
|
-
|
386
|
-
if (!scrollContainer) {
|
398
|
+
if (!this.#mainElementRef?.value) {
|
387
399
|
return;
|
388
400
|
}
|
389
401
|
|
390
|
-
|
402
|
+
this.#mainElementRef.value.scrollTop = this.#scrollTop;
|
391
403
|
}
|
392
404
|
|
393
|
-
|
394
|
-
|
395
|
-
if (!message) {
|
405
|
+
finishTextAnimations(): void {
|
406
|
+
if (!this.#lastAnswerMarkdownView) {
|
396
407
|
return;
|
397
408
|
}
|
398
|
-
|
409
|
+
|
410
|
+
this.#lastAnswerMarkdownView.finishAnimations();
|
411
|
+
}
|
412
|
+
|
413
|
+
scrollToBottom(): void {
|
414
|
+
if (!this.#mainElementRef?.value) {
|
415
|
+
return;
|
416
|
+
}
|
417
|
+
|
418
|
+
this.#mainElementRef.value.scrollTop = this.#mainElementRef.value.scrollHeight;
|
419
|
+
}
|
420
|
+
|
421
|
+
#handleMessagesContainerResize(): void {
|
422
|
+
if (!this.#pinScrollToBottom) {
|
423
|
+
return;
|
424
|
+
}
|
425
|
+
|
426
|
+
if (!this.#mainElementRef?.value) {
|
427
|
+
return;
|
428
|
+
}
|
429
|
+
|
430
|
+
if (this.#pinScrollToBottom) {
|
431
|
+
this.#mainElementRef.value.scrollTop = this.#mainElementRef.value.scrollHeight;
|
432
|
+
}
|
399
433
|
}
|
400
434
|
|
401
435
|
#setInputText(text: string): void {
|
@@ -408,6 +442,9 @@ export class FreestylerChatUi extends HTMLElement {
|
|
408
442
|
}
|
409
443
|
|
410
444
|
#isTextInputDisabled = (): boolean => {
|
445
|
+
if (this.#props.blockedByCrossOrigin || this.#props.requiresNewConversation) {
|
446
|
+
return true;
|
447
|
+
}
|
411
448
|
const isAidaAvailable = this.#props.aidaAvailability === Host.AidaClient.AidaAccessPreconditions.AVAILABLE;
|
412
449
|
const isConsentView = this.#props.state === State.CONSENT_VIEW;
|
413
450
|
const showsSideEffects = this.#props.messages.some(message => {
|
@@ -416,23 +453,57 @@ export class FreestylerChatUi extends HTMLElement {
|
|
416
453
|
});
|
417
454
|
});
|
418
455
|
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
!Boolean(this.#props.selectedFile) || !this.#props.selectedFile?.contentType().isTextType();
|
456
|
+
if (!isAidaAvailable || isConsentView || !this.#props.agentType) {
|
457
|
+
return true;
|
458
|
+
}
|
423
459
|
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
460
|
+
if (!this.#props.selectedContext) {
|
461
|
+
return true;
|
462
|
+
}
|
463
|
+
|
464
|
+
// Agent-specific input disabled rules.
|
465
|
+
switch (this.#props.agentType) {
|
466
|
+
case AgentType.FREESTYLER:
|
467
|
+
return showsSideEffects;
|
468
|
+
case AgentType.DRJONES_NETWORK_REQUEST:
|
469
|
+
return false;
|
470
|
+
case AgentType.DRJONES_FILE:
|
471
|
+
return false;
|
472
|
+
case AgentType.DRJONES_PERFORMANCE:
|
473
|
+
return false;
|
474
|
+
}
|
428
475
|
};
|
429
476
|
|
477
|
+
#handleMessageContainerRef(el: Element|undefined): void {
|
478
|
+
this.#messagesContainerElement = el;
|
479
|
+
|
480
|
+
if (el) {
|
481
|
+
this.#messagesContainerResizeObserver.observe(el);
|
482
|
+
} else {
|
483
|
+
this.#pinScrollToBottom = true;
|
484
|
+
this.#messagesContainerResizeObserver.disconnect();
|
485
|
+
}
|
486
|
+
}
|
487
|
+
|
488
|
+
#handleLastAnswerMarkdownViewRef(el: Element|undefined): void {
|
489
|
+
if (!el) {
|
490
|
+
this.#lastAnswerMarkdownView = undefined;
|
491
|
+
return;
|
492
|
+
}
|
493
|
+
|
494
|
+
if (el instanceof MarkdownView.MarkdownView.MarkdownView) {
|
495
|
+
this.#lastAnswerMarkdownView = el;
|
496
|
+
}
|
497
|
+
}
|
498
|
+
|
430
499
|
#handleScroll = (ev: Event): void => {
|
431
500
|
if (!ev.target || !(ev.target instanceof HTMLElement)) {
|
432
501
|
return;
|
433
502
|
}
|
434
503
|
|
435
504
|
this.#scrollTop = ev.target.scrollTop;
|
505
|
+
this.#pinScrollToBottom =
|
506
|
+
ev.target.scrollTop + ev.target.clientHeight + SCROLL_ROUNDING_OFFSET > ev.target.scrollHeight;
|
436
507
|
};
|
437
508
|
|
438
509
|
#handleSubmit = (ev: SubmitEvent): void => {
|
@@ -496,7 +567,10 @@ export class FreestylerChatUi extends HTMLElement {
|
|
496
567
|
// clang-format on
|
497
568
|
}
|
498
569
|
|
499
|
-
#renderTextAsMarkdown(text: string
|
570
|
+
#renderTextAsMarkdown(text: string, {animate, ref: refFn}: {
|
571
|
+
animate?: boolean,
|
572
|
+
ref?: (element?: Element) => void,
|
573
|
+
} = {}): LitHtml.TemplateResult {
|
500
574
|
let tokens = [];
|
501
575
|
try {
|
502
576
|
tokens = Marked.Marked.lexer(text);
|
@@ -516,7 +590,8 @@ export class FreestylerChatUi extends HTMLElement {
|
|
516
590
|
|
517
591
|
// clang-format off
|
518
592
|
return html`<devtools-markdown-view
|
519
|
-
.data=${{tokens, renderer: this.#markdownRenderer} as MarkdownView.MarkdownView.MarkdownViewData}
|
593
|
+
.data=${{tokens, renderer: this.#markdownRenderer, animationEnabled: animate} as MarkdownView.MarkdownView.MarkdownViewData}
|
594
|
+
${refFn ? ref(refFn) : LitHtml.nothing}>
|
520
595
|
</devtools-markdown-view>`;
|
521
596
|
// clang-format on
|
522
597
|
}
|
@@ -743,14 +818,14 @@ export class FreestylerChatUi extends HTMLElement {
|
|
743
818
|
// clang-format on
|
744
819
|
}
|
745
820
|
|
746
|
-
const shouldShowSuggestions = (isLast && !this.#props.isLoading && message.suggestions);
|
747
821
|
// clang-format off
|
748
822
|
return html`
|
749
|
-
<section
|
823
|
+
<section
|
824
|
+
class="chat-message answer"
|
825
|
+
jslog=${VisualLogging.section('answer')}
|
826
|
+
>
|
750
827
|
<div class="message-info">
|
751
|
-
<devtools-icon
|
752
|
-
name="smart-assistant"
|
753
|
-
></devtools-icon>
|
828
|
+
<devtools-icon name="smart-assistant"></devtools-icon>
|
754
829
|
<div class="message-name">
|
755
830
|
<h2>${lockedString(UIStringsNotTranslate.ai)}</h2>
|
756
831
|
</div>
|
@@ -764,14 +839,17 @@ export class FreestylerChatUi extends HTMLElement {
|
|
764
839
|
});
|
765
840
|
},
|
766
841
|
)}
|
767
|
-
${
|
768
|
-
message.answer
|
769
|
-
|
770
|
-
: LitHtml.nothing
|
771
|
-
}
|
842
|
+
${message.answer
|
843
|
+
? html`<p>${this.#renderTextAsMarkdown(message.answer, { animate: !this.#props.isReadOnly, ref: this.#handleLastAnswerMarkdownViewRef })}</p>`
|
844
|
+
: LitHtml.nothing}
|
772
845
|
${this.#renderError(message)}
|
773
846
|
<div class="actions">
|
774
|
-
${this.#
|
847
|
+
${isLast && this.#props.isLoading
|
848
|
+
? LitHtml.nothing
|
849
|
+
: this.#renderUserActionRow(
|
850
|
+
message.rpcId,
|
851
|
+
isLast ? message.suggestions : undefined,
|
852
|
+
)}
|
775
853
|
</div>
|
776
854
|
</section>
|
777
855
|
`;
|
@@ -782,135 +860,57 @@ export class FreestylerChatUi extends HTMLElement {
|
|
782
860
|
if (!this.#props.agentType) {
|
783
861
|
return LitHtml.nothing;
|
784
862
|
}
|
785
|
-
|
786
|
-
case AgentType.FREESTYLER:
|
787
|
-
return this.#renderSelectAnElement();
|
788
|
-
case AgentType.DRJONES_FILE:
|
789
|
-
return this.#renderSelectedFileName();
|
790
|
-
case AgentType.DRJONES_NETWORK_REQUEST:
|
791
|
-
return this.#renderSelectedNetworkRequest();
|
792
|
-
case AgentType.DRJONES_PERFORMANCE:
|
793
|
-
return this.#renderSelectedTask();
|
794
|
-
}
|
863
|
+
return this.#renderContextSelector();
|
795
864
|
}
|
796
865
|
|
797
|
-
#
|
866
|
+
#renderContextSelector(): LitHtml.LitTemplate {
|
798
867
|
const resourceClass = LitHtml.Directives.classMap({
|
799
|
-
'not-selected': !this.#props.
|
868
|
+
'not-selected': !this.#props.selectedContext,
|
800
869
|
'resource-link': true,
|
801
870
|
});
|
802
871
|
|
803
|
-
|
804
|
-
|
805
|
-
}
|
806
|
-
|
807
|
-
const icon = PanelUtils.getIconForSourceFile(this.#props.selectedFile);
|
808
|
-
|
809
|
-
// clang-format off
|
810
|
-
return html`<div class="select-element">
|
811
|
-
<div role=button class=${resourceClass}
|
812
|
-
@click=${this.#props.onSelectedFileRequestClick}>
|
813
|
-
${icon}${this.#props.selectedFile?.displayName()}
|
814
|
-
</div></div>`;
|
815
|
-
// clang-format on
|
816
|
-
}
|
817
|
-
|
818
|
-
#renderSelectedNetworkRequest = (): LitHtml.TemplateResult => {
|
819
|
-
const resourceClass = LitHtml.Directives.classMap({
|
820
|
-
'not-selected': !this.#props.selectedNetworkRequest,
|
821
|
-
'resource-link': true,
|
822
|
-
});
|
823
|
-
|
824
|
-
if (!this.#props.selectedNetworkRequest) {
|
825
|
-
return html`${LitHtml.nothing}`;
|
826
|
-
}
|
827
|
-
|
828
|
-
const icon = PanelUtils.getIconForNetworkRequest(this.#props.selectedNetworkRequest);
|
829
|
-
// clang-format off
|
830
|
-
return html`<div class="select-element">
|
831
|
-
<div role=button class=${resourceClass}
|
832
|
-
@click=${this.#props.onSelectedNetworkRequestClick}>
|
833
|
-
${icon}${this.#props.selectedNetworkRequest?.name()}
|
834
|
-
</div></div>`;
|
835
|
-
// clang-format on
|
836
|
-
};
|
872
|
+
// TODO: currently the picker behavior is SDKNode specific.
|
873
|
+
const hasPickerBehavior = this.#props.agentType === AgentType.FREESTYLER;
|
837
874
|
|
838
|
-
|
839
|
-
|
840
|
-
'not-selected': !this.#props.selectedElement,
|
841
|
-
'resource-link': true,
|
842
|
-
});
|
843
|
-
|
844
|
-
// clang-format off
|
845
|
-
return html`
|
846
|
-
<div class="select-element">
|
847
|
-
<devtools-button
|
848
|
-
.data=${{
|
849
|
-
variant: Buttons.Button.Variant.ICON_TOGGLE,
|
850
|
-
size: Buttons.Button.Size.REGULAR,
|
851
|
-
iconName: 'select-element',
|
852
|
-
toggledIconName: 'select-element',
|
853
|
-
toggleType: Buttons.Button.ToggleType.PRIMARY,
|
854
|
-
toggled: this.#props.inspectElementToggled,
|
855
|
-
title: lockedString(UIStringsNotTranslate.selectAnElement),
|
856
|
-
jslogContext: 'select-element',
|
857
|
-
} as Buttons.Button.ButtonData}
|
858
|
-
@click=${this.#props.onInspectElementClick}
|
859
|
-
></devtools-button>
|
860
|
-
<div class=${resourceClass}>${
|
861
|
-
this.#props.selectedElement
|
862
|
-
? LitHtml.Directives.until(
|
863
|
-
Common.Linkifier.Linkifier.linkify(this.#props.selectedElement),
|
864
|
-
)
|
865
|
-
: html`<span>${
|
866
|
-
lockedString(UIStringsNotTranslate.noElementSelected)
|
867
|
-
}</span>`
|
868
|
-
}</div>
|
869
|
-
</div>`;
|
870
|
-
// clang-format on
|
871
|
-
};
|
872
|
-
|
873
|
-
#renderSelectedTask = (): LitHtml.TemplateResult => {
|
874
|
-
const resourceClass = LitHtml.Directives.classMap({
|
875
|
-
'not-selected': !this.#props.selectedAiCallTree,
|
876
|
-
'resource-task': true,
|
877
|
-
});
|
878
|
-
|
879
|
-
if (!this.#props.selectedAiCallTree) {
|
880
|
-
return html`${LitHtml.nothing}`;
|
881
|
-
}
|
882
|
-
|
883
|
-
const {event} = this.#props.selectedAiCallTree.selectedNode;
|
884
|
-
if (!event) {
|
885
|
-
return html`${LitHtml.nothing}`;
|
875
|
+
if (!this.#props.selectedContext && !hasPickerBehavior) {
|
876
|
+
return LitHtml.nothing;
|
886
877
|
}
|
887
878
|
|
888
|
-
const
|
889
|
-
const handleClick = (): void => {
|
890
|
-
const trace = new SDK.TraceObject.RevealableEvent(event);
|
891
|
-
void Common.Revealer.reveal(trace);
|
892
|
-
};
|
893
|
-
|
894
|
-
const iconData = {
|
895
|
-
iconName: 'performance',
|
896
|
-
color: 'var(--sys-color-on-surface-subtle)',
|
897
|
-
};
|
898
|
-
const icon = PanelUtils.createIconElement(iconData, 'Performance');
|
899
|
-
icon.classList.add('icon');
|
879
|
+
const icon = this.#props.selectedContext?.getIcon() ?? LitHtml.nothing;
|
900
880
|
|
901
881
|
// clang-format off
|
902
882
|
return html`<div class="select-element">
|
903
|
-
|
904
|
-
|
883
|
+
${
|
884
|
+
hasPickerBehavior ? html`
|
885
|
+
<devtools-button
|
886
|
+
.data=${{
|
887
|
+
variant: Buttons.Button.Variant.ICON_TOGGLE,
|
888
|
+
size: Buttons.Button.Size.REGULAR,
|
889
|
+
iconName: 'select-element',
|
890
|
+
toggledIconName: 'select-element',
|
891
|
+
toggleType: Buttons.Button.ToggleType.PRIMARY,
|
892
|
+
toggled: this.#props.inspectElementToggled,
|
893
|
+
title: lockedString(UIStringsNotTranslate.selectAnElement),
|
894
|
+
jslogContext: 'select-element',
|
895
|
+
} as Buttons.Button.ButtonData}
|
896
|
+
@click=${this.#props.onInspectElementClick}
|
897
|
+
></devtools-button>
|
898
|
+
` : LitHtml.nothing
|
899
|
+
}
|
900
|
+
<div role=button class=${resourceClass}
|
901
|
+
@click=${this.#props.onContextClick}>
|
902
|
+
${icon}${this.#props.selectedContext?.getTitle() ?? html`<span>${
|
903
|
+
lockedString(UIStringsNotTranslate.noElementSelected)
|
904
|
+
}</span>`}
|
905
905
|
</div>
|
906
906
|
</div>`;
|
907
907
|
// clang-format on
|
908
|
-
}
|
908
|
+
}
|
909
909
|
|
910
910
|
#renderMessages = (): LitHtml.TemplateResult => {
|
911
911
|
// clang-format off
|
912
912
|
return html`
|
913
|
-
<div class="messages-container">
|
913
|
+
<div class="messages-container" ${ref(this.#handleMessageContainerRef)}>
|
914
914
|
${this.#props.messages.map((message, _, array) =>
|
915
915
|
this.#renderChatMessage(message, {
|
916
916
|
isLast: array.at(-1) === message,
|
@@ -934,7 +934,7 @@ export class FreestylerChatUi extends HTMLElement {
|
|
934
934
|
</div>
|
935
935
|
<h1>${lockedString(UIStringsNotTranslate.emptyStateText)}</h1>
|
936
936
|
</div>
|
937
|
-
<div class="
|
937
|
+
<div class="empty-state-content">
|
938
938
|
${suggestions.map(suggestion => {
|
939
939
|
return html`<devtools-button
|
940
940
|
class="suggestion"
|
@@ -955,6 +955,14 @@ export class FreestylerChatUi extends HTMLElement {
|
|
955
955
|
// clang-format on
|
956
956
|
};
|
957
957
|
|
958
|
+
#onNewConversation(): void {
|
959
|
+
this.#props.onNewConversation();
|
960
|
+
}
|
961
|
+
|
962
|
+
#onCancelCrossOriginChat(): void {
|
963
|
+
this.#props.onCancelCrossOriginChat?.();
|
964
|
+
}
|
965
|
+
|
958
966
|
#getEmptyStateSuggestions = (): string[] => {
|
959
967
|
if (!this.#props.agentType) {
|
960
968
|
return [];
|
@@ -987,53 +995,160 @@ export class FreestylerChatUi extends HTMLElement {
|
|
987
995
|
}
|
988
996
|
};
|
989
997
|
|
990
|
-
#
|
998
|
+
#getInputPlaceholderString(): Platform.UIString.LocalizedString {
|
999
|
+
const state = this.#props.state;
|
1000
|
+
const agentType = this.#props.agentType;
|
1001
|
+
if (state === State.CONSENT_VIEW || !agentType) {
|
1002
|
+
return i18nString(UIStrings.followTheSteps);
|
1003
|
+
}
|
1004
|
+
if (this.#props.requiresNewConversation) {
|
1005
|
+
return lockedString(UIStringsNotTranslate.newConversationError);
|
1006
|
+
}
|
1007
|
+
if (this.#props.blockedByCrossOrigin) {
|
1008
|
+
return lockedString(UIStringsNotTranslate.crossOriginError);
|
1009
|
+
}
|
1010
|
+
switch (agentType) {
|
1011
|
+
case AgentType.FREESTYLER:
|
1012
|
+
return lockedString(UIStringsNotTranslate.inputPlaceholderForFreestylerAgent);
|
1013
|
+
case AgentType.DRJONES_FILE:
|
1014
|
+
return lockedString(UIStringsNotTranslate.inputPlaceholderForDrJonesFileAgent);
|
1015
|
+
case AgentType.DRJONES_NETWORK_REQUEST:
|
1016
|
+
return lockedString(UIStringsNotTranslate.inputPlaceholderForDrJonesNetworkAgent);
|
1017
|
+
case AgentType.DRJONES_PERFORMANCE:
|
1018
|
+
return lockedString(UIStringsNotTranslate.inputPlaceholderForDrJonesPerformanceAgent);
|
1019
|
+
}
|
1020
|
+
}
|
1021
|
+
|
1022
|
+
#renderReadOnlySection(): LitHtml.LitTemplate {
|
1023
|
+
if (!this.#props.agentType) {
|
1024
|
+
return LitHtml.nothing;
|
1025
|
+
}
|
1026
|
+
|
1027
|
+
// clang-format off
|
1028
|
+
return html`<div
|
1029
|
+
class="chat-readonly-container"
|
1030
|
+
jslog=${VisualLogging.section('read-only')}
|
1031
|
+
>
|
1032
|
+
<span>${lockedString(UIStringsNotTranslate.pastConversation)}</span>
|
1033
|
+
<devtools-button
|
1034
|
+
aria-label=${lockedString(UIStringsNotTranslate.startNewChat)}
|
1035
|
+
@click=${this.#onNewConversation}
|
1036
|
+
.data=${{
|
1037
|
+
variant: Buttons.Button.Variant.TEXT,
|
1038
|
+
title: lockedString(UIStringsNotTranslate.startNewChat),
|
1039
|
+
jslogContext: 'start-new-chat',
|
1040
|
+
} as Buttons.Button.ButtonData}
|
1041
|
+
>${lockedString(UIStringsNotTranslate.startNewChat)}</devtools-button>
|
1042
|
+
</div>`;
|
1043
|
+
// clang-format on
|
1044
|
+
}
|
1045
|
+
|
1046
|
+
#renderChatInputButtons(): LitHtml.TemplateResult {
|
1047
|
+
if (this.#props.isLoading) {
|
1048
|
+
// clang-format off
|
1049
|
+
return html`<devtools-button
|
1050
|
+
class="chat-input-button"
|
1051
|
+
aria-label=${lockedString(UIStringsNotTranslate.cancelButtonTitle)}
|
1052
|
+
@click=${this.#handleCancel}
|
1053
|
+
.data=${
|
1054
|
+
{
|
1055
|
+
variant: Buttons.Button.Variant.ICON,
|
1056
|
+
size: Buttons.Button.Size.REGULAR,
|
1057
|
+
iconName: 'record-stop',
|
1058
|
+
title: lockedString(UIStringsNotTranslate.cancelButtonTitle),
|
1059
|
+
jslogContext: 'stop',
|
1060
|
+
} as Buttons.Button.ButtonData
|
1061
|
+
}
|
1062
|
+
></devtools-button>`;
|
1063
|
+
// clang-format on
|
1064
|
+
}
|
1065
|
+
if (this.#props.blockedByCrossOrigin || this.#props.requiresNewConversation) {
|
1066
|
+
// clang-format off
|
1067
|
+
return html`
|
1068
|
+
${this.#props.blockedByCrossOrigin && Boolean(this.#props.onCancelCrossOriginChat) ? html`<devtools-button
|
1069
|
+
class="chat-cancel-context-button"
|
1070
|
+
@click=${this.#onCancelCrossOriginChat}
|
1071
|
+
.data=${
|
1072
|
+
{
|
1073
|
+
variant: Buttons.Button.Variant.TEXT,
|
1074
|
+
size: Buttons.Button.Size.REGULAR,
|
1075
|
+
jslogContext: 'cancel-cross-origin-context-chat',
|
1076
|
+
} as Buttons.Button.ButtonData
|
1077
|
+
}
|
1078
|
+
>${lockedString(UIStringsNotTranslate.cancelButtonTitle)}</devtools-button>` : LitHtml.nothing}
|
1079
|
+
<devtools-button
|
1080
|
+
class="chat-input-button"
|
1081
|
+
aria-label=${lockedString(UIStringsNotTranslate.startNewChat)}
|
1082
|
+
@click=${this.#onNewConversation}
|
1083
|
+
.data=${
|
1084
|
+
{
|
1085
|
+
variant: Buttons.Button.Variant.PRIMARY,
|
1086
|
+
size: Buttons.Button.Size.REGULAR,
|
1087
|
+
title: lockedString(UIStringsNotTranslate.startNewChat),
|
1088
|
+
jslogContext: 'start-new-chat',
|
1089
|
+
} as Buttons.Button.ButtonData
|
1090
|
+
}
|
1091
|
+
>${lockedString(UIStringsNotTranslate.startNewChat)}</devtools-button>
|
1092
|
+
`;
|
1093
|
+
// clang-format on
|
1094
|
+
}
|
1095
|
+
// clang-format off
|
1096
|
+
return html`<devtools-button
|
1097
|
+
class="chat-input-button"
|
1098
|
+
aria-label=${lockedString(UIStringsNotTranslate.sendButtonTitle)}
|
1099
|
+
.data=${
|
1100
|
+
{
|
1101
|
+
type: 'submit',
|
1102
|
+
variant: Buttons.Button.Variant.ICON,
|
1103
|
+
size: Buttons.Button.Size.REGULAR,
|
1104
|
+
disabled: this.#isTextInputDisabled(),
|
1105
|
+
iconName: 'send',
|
1106
|
+
title: lockedString(UIStringsNotTranslate.sendButtonTitle),
|
1107
|
+
jslogContext: 'send',
|
1108
|
+
} as Buttons.Button.ButtonData
|
1109
|
+
}
|
1110
|
+
></devtools-button>`;
|
1111
|
+
}
|
1112
|
+
|
1113
|
+
#renderChatInput = (): LitHtml.LitTemplate => {
|
1114
|
+
if (!this.#props.agentType) {
|
1115
|
+
return LitHtml.nothing;
|
1116
|
+
}
|
1117
|
+
|
1118
|
+
const cls = LitHtml.Directives.classMap({
|
1119
|
+
'chat-input': true,
|
1120
|
+
'one-big-button': Boolean(this.#props.requiresNewConversation),
|
1121
|
+
'two-big-buttons': this.#props.blockedByCrossOrigin,
|
1122
|
+
});
|
1123
|
+
|
991
1124
|
// clang-format off
|
992
1125
|
return html`
|
1126
|
+
<form class="input-form" @submit=${this.#handleSubmit}>
|
1127
|
+
${this.#props.state !== State.CONSENT_VIEW ? html`
|
1128
|
+
<div class="input-header">
|
1129
|
+
<div class="header-link-container">
|
1130
|
+
${this.#renderSelection()}
|
1131
|
+
</div>
|
1132
|
+
</div>
|
1133
|
+
` : LitHtml.nothing}
|
993
1134
|
<div class="chat-input-container">
|
994
|
-
<textarea class
|
1135
|
+
<textarea class=${cls}
|
995
1136
|
.disabled=${this.#isTextInputDisabled()}
|
996
1137
|
wrap="hard"
|
997
1138
|
@keydown=${this.#handleTextAreaKeyDown}
|
998
|
-
placeholder=${getInputPlaceholderString(
|
999
|
-
jslog=${VisualLogging.textField('query').track({ keydown: 'Enter' })}
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
{
|
1007
|
-
variant: Buttons.Button.Variant.ICON,
|
1008
|
-
size: Buttons.Button.Size.REGULAR,
|
1009
|
-
disabled: this.#isTextInputDisabled(),
|
1010
|
-
iconName: 'record-stop',
|
1011
|
-
title: lockedString(UIStringsNotTranslate.cancelButtonTitle),
|
1012
|
-
jslogContext: 'stop',
|
1013
|
-
} as Buttons.Button.ButtonData
|
1014
|
-
}
|
1015
|
-
></devtools-button>`
|
1016
|
-
: html`<devtools-button
|
1017
|
-
class="chat-input-button"
|
1018
|
-
aria-label=${lockedString(UIStringsNotTranslate.sendButtonTitle)}
|
1019
|
-
.data=${
|
1020
|
-
{
|
1021
|
-
type: 'submit',
|
1022
|
-
variant: Buttons.Button.Variant.ICON,
|
1023
|
-
size: Buttons.Button.Size.REGULAR,
|
1024
|
-
disabled: this.#isTextInputDisabled(),
|
1025
|
-
iconName: 'send',
|
1026
|
-
title: lockedString(UIStringsNotTranslate.sendButtonTitle),
|
1027
|
-
jslogContext: 'send',
|
1028
|
-
} as Buttons.Button.ButtonData
|
1029
|
-
}
|
1030
|
-
></devtools-button>`}
|
1031
|
-
</div>`;
|
1139
|
+
placeholder=${this.#getInputPlaceholderString()}
|
1140
|
+
jslog=${VisualLogging.textField('query').track({ keydown: 'Enter' })}
|
1141
|
+
></textarea>
|
1142
|
+
<div class="chat-input-buttons">
|
1143
|
+
${this.#renderChatInputButtons()}
|
1144
|
+
</div>
|
1145
|
+
</div>
|
1146
|
+
</form>`;
|
1032
1147
|
// clang-format on
|
1033
1148
|
};
|
1034
1149
|
|
1035
1150
|
#getDisclaimerText = (): Platform.UIString.LocalizedString => {
|
1036
|
-
if (this.#props.state === State.CONSENT_VIEW || !this.#props.agentType) {
|
1151
|
+
if (this.#props.state === State.CONSENT_VIEW || !this.#props.agentType || this.#props.isReadOnly) {
|
1037
1152
|
return i18nString(UIStrings.inputDisclaimerForEmptyState);
|
1038
1153
|
}
|
1039
1154
|
switch (this.#props.agentType) {
|
@@ -1062,14 +1177,13 @@ export class FreestylerChatUi extends HTMLElement {
|
|
1062
1177
|
|
1063
1178
|
#getStringForConsentView(): string {
|
1064
1179
|
const config = Common.Settings.Settings.instance().getHostConfig();
|
1065
|
-
if (config.devToolsAiAssistancePerformanceAgent?.enabled
|
1066
|
-
config.devToolsAiAssistancePerformanceAgentDogfood?.enabled) {
|
1180
|
+
if (config.devToolsAiAssistancePerformanceAgent?.enabled) {
|
1067
1181
|
return UIStrings.turnOnForStylesRequestsPerformanceAndFiles;
|
1068
1182
|
}
|
1069
|
-
if (config.devToolsAiAssistanceFileAgent?.enabled
|
1183
|
+
if (config.devToolsAiAssistanceFileAgent?.enabled) {
|
1070
1184
|
return UIStrings.turnOnForStylesRequestsAndFiles;
|
1071
1185
|
}
|
1072
|
-
if (config.devToolsAiAssistanceNetworkAgent?.enabled
|
1186
|
+
if (config.devToolsAiAssistanceNetworkAgent?.enabled) {
|
1073
1187
|
return UIStrings.turnOnForStylesAndRequests;
|
1074
1188
|
}
|
1075
1189
|
return UIStrings.turnOnForStyles;
|
@@ -1114,33 +1228,76 @@ export class FreestylerChatUi extends HTMLElement {
|
|
1114
1228
|
|
1115
1229
|
#renderNoAgentState(): LitHtml.TemplateResult {
|
1116
1230
|
const config = Common.Settings.Settings.instance().getHostConfig();
|
1231
|
+
const featureCards: {
|
1232
|
+
icon: string,
|
1233
|
+
heading: string,
|
1234
|
+
content: LitHtml.TemplateResult,
|
1235
|
+
}[] =
|
1236
|
+
[
|
1237
|
+
...(config.devToolsFreestyler?.enabled ? [{
|
1238
|
+
icon: 'brush-2',
|
1239
|
+
heading: 'CSS styles',
|
1240
|
+
content: html`Open <button class="link" role="link" jslog=${
|
1241
|
+
VisualLogging.link('open-elements-panel').track({click: true})} @click=${() => {
|
1242
|
+
void UI.ViewManager.ViewManager.instance().showView('elements');
|
1243
|
+
}}>Elements</button> to ask about CSS styles`,
|
1244
|
+
}] :
|
1245
|
+
[]),
|
1246
|
+
...(config.devToolsAiAssistanceNetworkAgent?.enabled) ? [{
|
1247
|
+
icon: 'arrow-up-down',
|
1248
|
+
heading: 'Network',
|
1249
|
+
content: html`Open <button class="link" role="link" jslog=${
|
1250
|
+
VisualLogging.link('open-network-panel').track({click: true})} @click=${() => {
|
1251
|
+
void UI.ViewManager.ViewManager.instance().showView('network');
|
1252
|
+
}}>Network</button> to ask about a request's details`,
|
1253
|
+
}] :
|
1254
|
+
[],
|
1255
|
+
...(config.devToolsAiAssistanceFileAgent?.enabled) ? [{
|
1256
|
+
icon: 'document',
|
1257
|
+
heading: 'Files',
|
1258
|
+
content: html`Open <button class="link" role="link" jslog=${
|
1259
|
+
VisualLogging.link('open-sources-panel').track({click: true})} @click=${() => {
|
1260
|
+
void UI.ViewManager.ViewManager.instance().showView('sources');
|
1261
|
+
}}>Sources</button> to ask about a file's content`,
|
1262
|
+
}] :
|
1263
|
+
[],
|
1264
|
+
...(config.devToolsAiAssistancePerformanceAgent?.enabled ? [{
|
1265
|
+
icon: 'performance',
|
1266
|
+
heading: 'Performance',
|
1267
|
+
content: html`Open <button class="link" role="link" jslog=${
|
1268
|
+
VisualLogging.link('open-performance-panel').track({click: true})} @click=${() => {
|
1269
|
+
void UI.ViewManager.ViewManager.instance().showView('timeline');
|
1270
|
+
}}>Performance</button> to ask about a trace item`,
|
1271
|
+
}] :
|
1272
|
+
[]),
|
1273
|
+
];
|
1117
1274
|
|
1118
1275
|
// clang-format off
|
1119
1276
|
return html`
|
1120
|
-
<div class="
|
1121
|
-
<
|
1122
|
-
<div class="
|
1123
|
-
<devtools-icon
|
1124
|
-
|
1125
|
-
|
1126
|
-
<div class="instructions">
|
1127
|
-
<p>${lockedString(UIStringsNotTranslate.getStarted)}</p>
|
1128
|
-
${config.devToolsFreestyler?.enabled ? html`
|
1129
|
-
<p><strong>${lockedString(UIStringsNotTranslate.cssHelp)}</strong> ${lockedString(UIStringsNotTranslate.cssHelpExplainer)}</p>
|
1130
|
-
` : LitHtml.nothing}
|
1131
|
-
${(config.devToolsAiAssistanceFileAgent?.enabled || config.devToolsAiAssistanceFileAgentDogfood?.enabled) ? html`
|
1132
|
-
<p><strong>${lockedString(UIStringsNotTranslate.fileHelp)}</strong> ${lockedString(UIStringsNotTranslate.fileHelpExplainer)}</p>
|
1133
|
-
` : LitHtml.nothing}
|
1134
|
-
${(config.devToolsAiAssistanceNetworkAgent?.enabled || config.devToolsExplainThisResourceDogfood?.enabled) ? html`
|
1135
|
-
<p><strong>${lockedString(UIStringsNotTranslate.networkHelp)}</strong> ${lockedString(UIStringsNotTranslate.networkHelpExplainer)}</p>
|
1136
|
-
` : LitHtml.nothing}
|
1137
|
-
${(config.devToolsAiAssistancePerformanceAgent?.enabled || config.devToolsAiAssistancePerformanceAgentDogfood?.enabled) ? html`
|
1138
|
-
<p><strong>${lockedString(UIStringsNotTranslate.performanceHelp)}</strong> ${lockedString(UIStringsNotTranslate.performanceHelpExplainer)}</p>
|
1139
|
-
` : LitHtml.nothing}
|
1277
|
+
<div class="empty-state-container">
|
1278
|
+
<div class="header">
|
1279
|
+
<div class="icon">
|
1280
|
+
<devtools-icon
|
1281
|
+
name="smart-assistant"
|
1282
|
+
></devtools-icon>
|
1140
1283
|
</div>
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1284
|
+
<h1>${lockedString(UIStringsNotTranslate.noAgentStateText)}</h1>
|
1285
|
+
<p>To chat about an item, right-click and select <strong>Ask AI</strong></p>
|
1286
|
+
</div>
|
1287
|
+
<div class="empty-state-content">
|
1288
|
+
${featureCards.map(featureCard => html`
|
1289
|
+
<div class="feature-card">
|
1290
|
+
<div class="feature-card-icon">
|
1291
|
+
<devtools-icon name=${featureCard.icon}></devtools-icon>
|
1292
|
+
</div>
|
1293
|
+
<div class="feature-card-content">
|
1294
|
+
<h3>${featureCard.heading}</h3>
|
1295
|
+
<p>${featureCard.content}</p>
|
1296
|
+
</div>
|
1297
|
+
</div>
|
1298
|
+
`)}
|
1299
|
+
</div>
|
1300
|
+
</div>`;
|
1144
1301
|
// clang-format on
|
1145
1302
|
}
|
1146
1303
|
|
@@ -1168,18 +1325,12 @@ export class FreestylerChatUi extends HTMLElement {
|
|
1168
1325
|
// clang-format off
|
1169
1326
|
LitHtml.render(html`
|
1170
1327
|
<div class="chat-ui">
|
1171
|
-
<main @scroll=${this.#handleScroll}>
|
1328
|
+
<main @scroll=${this.#handleScroll} ${ref(this.#mainElementRef)}>
|
1172
1329
|
${this.#renderMainContents()}
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
${this.#renderSelection()}
|
1178
|
-
</div>
|
1179
|
-
</div>
|
1180
|
-
` : LitHtml.nothing}
|
1181
|
-
${this.#renderChatInput()}
|
1182
|
-
</form>
|
1330
|
+
${this.#props.isReadOnly ?
|
1331
|
+
this.#renderReadOnlySection() :
|
1332
|
+
this.#renderChatInput()
|
1333
|
+
}
|
1183
1334
|
</main>
|
1184
1335
|
<footer class="disclaimer">
|
1185
1336
|
<p class="disclaimer-text">
|