chrome-devtools-frontend 1.0.1402249 → 1.0.1418433
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/.git-blame-ignore-revs +6 -1
- package/.vscode/devtools-workspace-launch.json +13 -31
- package/.vscode/devtools-workspace-settings.json +2 -4
- package/.vscode/devtools-workspace-tasks.json +5 -4
- package/AUTHORS +1 -0
- package/config/gni/devtools_grd_files.gni +97 -84
- package/config/gni/devtools_image_files.gni +14 -0
- package/config/owner/INFRA_OWNERS +1 -0
- package/config/typescript/tsconfig.eslint.json +2 -1
- package/docs/README.md +4 -0
- package/docs/cookbook/localization.md +1 -1
- package/docs/get_the_code.md +0 -17
- package/docs/playbook.md +176 -0
- package/docs/styleguide/ux/README.md +1 -0
- package/docs/styleguide/ux/components.md +54 -2
- package/docs/styleguide/ux/images/combo-box-variations.png +0 -0
- package/docs/styleguide/ux/patterns.md +87 -0
- package/docs/styleguide/ux/styles.md +19 -8
- package/eslint.config.mjs +93 -72
- package/extension-api/ExtensionAPI.d.ts +22 -0
- package/extensions/cxx_debugging/e2e/TestDriver.ts +1 -3
- package/extensions/cxx_debugging/e2e/cxx-debugging-extension-helpers.ts +1 -0
- package/extensions/cxx_debugging/e2e/standalone/MemoryInspector_test.ts +0 -1
- package/extensions/cxx_debugging/src/CreditsItem.ts +5 -6
- package/extensions/cxx_debugging/src/CustomFormatters.ts +4 -4
- package/extensions/cxx_debugging/src/DWARFSymbols.ts +10 -10
- package/extensions/cxx_debugging/src/DevToolsPluginHost.ts +6 -6
- package/extensions/cxx_debugging/src/DevToolsPluginWorker.ts +3 -6
- package/extensions/cxx_debugging/src/DevToolsPluginWorkerMain.ts +1 -0
- package/extensions/cxx_debugging/src/ExtensionOptions.ts +6 -10
- package/extensions/cxx_debugging/src/Formatters.ts +15 -8
- package/extensions/cxx_debugging/src/MEMFSResourceLoader.ts +7 -7
- package/extensions/cxx_debugging/src/ModuleConfiguration.ts +6 -6
- package/extensions/cxx_debugging/src/ModuleConfigurationList.ts +4 -4
- package/extensions/cxx_debugging/src/WasmTypes.ts +21 -11
- package/extensions/cxx_debugging/src/WorkerRPC.ts +3 -4
- package/extensions/cxx_debugging/tests/CreditsItem_test.ts +2 -3
- package/extensions/cxx_debugging/tests/DevToolsPluginTestWorker.ts +4 -4
- package/extensions/cxx_debugging/tests/DevToolsPlugin_test.ts +12 -12
- package/extensions/cxx_debugging/tests/Externref_test.ts +3 -6
- package/extensions/cxx_debugging/tests/Formatters_test.ts +3 -3
- package/extensions/cxx_debugging/tests/Interpreter_test.ts +1 -1
- package/extensions/cxx_debugging/tests/RealBackend.ts +9 -9
- package/extensions/cxx_debugging/tests/SymbolsBackend_test.ts +31 -29
- package/extensions/cxx_debugging/tests/TestUtils.ts +8 -7
- package/extensions/cxx_debugging/tests/inputs/externref.js +14 -4
- package/extensions/cxx_debugging/tests/inputs/page.js +3 -1
- package/front_end/Images/generate-css-vars.js +1 -0
- package/front_end/Images/rollup.config.mjs +0 -1
- package/front_end/Images/src/account-tree.svg +1 -0
- package/front_end/Images/src/arrow-collapse.svg +3 -0
- package/front_end/Images/src/arrow-drop-down.svg +3 -0
- package/front_end/Images/src/difference.svg +3 -0
- package/front_end/Images/src/global.svg +5 -0
- package/front_end/Images/src/grid-on.svg +10 -0
- package/front_end/Images/src/keyboard-full.svg +10 -0
- package/front_end/Images/src/label.svg +10 -0
- package/front_end/Images/src/node-stack-icon.svg +1 -0
- package/front_end/Images/src/override.svg +11 -0
- package/front_end/Images/src/palette.svg +10 -0
- package/front_end/Images/src/photo-camera.svg +10 -0
- package/front_end/Images/src/terminal.svg +10 -0
- package/front_end/Images/src/tonality.svg +10 -0
- package/front_end/Tests.js +1 -8
- package/front_end/application_tokens.css +407 -0
- package/front_end/core/common/Base64.test.ts +3 -3
- package/front_end/core/common/Color.ts +8 -0
- package/front_end/core/common/Console.ts +3 -3
- package/front_end/core/common/EventTarget.test.ts +7 -7
- package/front_end/core/common/EventTarget.ts +3 -3
- package/front_end/core/common/ParsedURL.test.ts +33 -37
- package/front_end/core/common/ParsedURL.ts +1 -1
- package/front_end/core/common/ResolverBase.test.ts +1 -1
- package/front_end/core/common/ResolverBase.ts +2 -7
- package/front_end/core/common/ResourceType.test.ts +19 -23
- package/front_end/core/common/Revealer.ts +5 -0
- package/front_end/core/common/SettingRegistration.test.ts +1 -1
- package/front_end/core/common/Settings.ts +6 -6
- package/front_end/core/common/Throttler.ts +3 -3
- package/front_end/core/dom_extension/DOMExtension.test.ts +36 -41
- package/front_end/core/host/AidaClient.test.ts +16 -3
- package/front_end/core/host/AidaClient.ts +31 -16
- package/front_end/core/host/InspectorFrontendHost.ts +6 -0
- package/front_end/core/host/InspectorFrontendHostAPI.ts +32 -34
- package/front_end/core/host/ResourceLoader.ts +1 -1
- package/front_end/core/host/UserMetrics.ts +100 -126
- package/front_end/core/i18n/collect-ui-strings.js +5 -4
- package/front_end/core/i18n/generate-locales-js.js +4 -2
- package/front_end/core/i18n/i18nImpl.ts +1 -1
- package/front_end/core/i18n/i18nTypes.ts +3 -3
- package/front_end/core/i18n/locales/af.json +848 -518
- package/front_end/core/i18n/locales/am.json +857 -527
- package/front_end/core/i18n/locales/ar.json +864 -534
- package/front_end/core/i18n/locales/as.json +853 -523
- package/front_end/core/i18n/locales/az.json +856 -526
- package/front_end/core/i18n/locales/be.json +854 -524
- package/front_end/core/i18n/locales/bg.json +844 -514
- package/front_end/core/i18n/locales/bn.json +851 -521
- package/front_end/core/i18n/locales/bs.json +861 -531
- package/front_end/core/i18n/locales/ca.json +851 -521
- package/front_end/core/i18n/locales/cs.json +854 -524
- package/front_end/core/i18n/locales/cy.json +849 -519
- package/front_end/core/i18n/locales/da.json +850 -520
- package/front_end/core/i18n/locales/de.json +848 -518
- package/front_end/core/i18n/locales/el.json +851 -521
- package/front_end/core/i18n/locales/en-GB.json +845 -515
- package/front_end/core/i18n/locales/es-419.json +847 -517
- package/front_end/core/i18n/locales/es.json +847 -517
- package/front_end/core/i18n/locales/et.json +843 -513
- package/front_end/core/i18n/locales/eu.json +861 -531
- package/front_end/core/i18n/locales/fa.json +860 -530
- package/front_end/core/i18n/locales/fi.json +848 -518
- package/front_end/core/i18n/locales/fil.json +849 -519
- package/front_end/core/i18n/locales/fr-CA.json +849 -519
- package/front_end/core/i18n/locales/fr.json +849 -519
- package/front_end/core/i18n/locales/gl.json +852 -522
- package/front_end/core/i18n/locales/gu.json +846 -516
- package/front_end/core/i18n/locales/he.json +867 -537
- package/front_end/core/i18n/locales/hi.json +853 -523
- package/front_end/core/i18n/locales/hr.json +854 -524
- package/front_end/core/i18n/locales/hu.json +848 -518
- package/front_end/core/i18n/locales/hy.json +850 -520
- package/front_end/core/i18n/locales/id.json +849 -519
- package/front_end/core/i18n/locales/is.json +850 -520
- package/front_end/core/i18n/locales/it.json +852 -522
- package/front_end/core/i18n/locales/ja.json +844 -514
- package/front_end/core/i18n/locales/ka.json +847 -517
- package/front_end/core/i18n/locales/kk.json +850 -520
- package/front_end/core/i18n/locales/km.json +853 -523
- package/front_end/core/i18n/locales/kn.json +857 -527
- package/front_end/core/i18n/locales/ko.json +850 -520
- package/front_end/core/i18n/locales/ky.json +846 -516
- package/front_end/core/i18n/locales/lo.json +851 -521
- package/front_end/core/i18n/locales/lt.json +845 -515
- package/front_end/core/i18n/locales/lv.json +849 -519
- package/front_end/core/i18n/locales/mk.json +851 -521
- package/front_end/core/i18n/locales/ml.json +850 -520
- package/front_end/core/i18n/locales/mn.json +860 -530
- package/front_end/core/i18n/locales/mr.json +852 -522
- package/front_end/core/i18n/locales/ms.json +848 -518
- package/front_end/core/i18n/locales/my.json +857 -527
- package/front_end/core/i18n/locales/ne.json +857 -527
- package/front_end/core/i18n/locales/nl.json +847 -517
- package/front_end/core/i18n/locales/no.json +848 -518
- package/front_end/core/i18n/locales/or.json +969 -639
- package/front_end/core/i18n/locales/pa.json +850 -520
- package/front_end/core/i18n/locales/pl.json +849 -519
- package/front_end/core/i18n/locales/pt-PT.json +850 -520
- package/front_end/core/i18n/locales/pt.json +844 -514
- package/front_end/core/i18n/locales/ro.json +850 -520
- package/front_end/core/i18n/locales/ru.json +861 -531
- package/front_end/core/i18n/locales/si.json +850 -520
- package/front_end/core/i18n/locales/sk.json +850 -520
- package/front_end/core/i18n/locales/sl.json +851 -521
- package/front_end/core/i18n/locales/sq.json +847 -517
- package/front_end/core/i18n/locales/sr-Latn.json +848 -518
- package/front_end/core/i18n/locales/sr.json +848 -518
- package/front_end/core/i18n/locales/sv.json +849 -519
- package/front_end/core/i18n/locales/sw.json +856 -526
- package/front_end/core/i18n/locales/ta.json +853 -523
- package/front_end/core/i18n/locales/te.json +854 -524
- package/front_end/core/i18n/locales/th.json +839 -509
- package/front_end/core/i18n/locales/tr.json +850 -520
- package/front_end/core/i18n/locales/uk.json +850 -520
- package/front_end/core/i18n/locales/ur.json +849 -519
- package/front_end/core/i18n/locales/uz.json +854 -524
- package/front_end/core/i18n/locales/vi.json +847 -517
- package/front_end/core/i18n/locales/zh-HK.json +852 -522
- package/front_end/core/i18n/locales/zh-TW.json +852 -522
- package/front_end/core/i18n/locales/zh.json +849 -519
- package/front_end/core/i18n/locales/zu.json +855 -525
- package/front_end/core/platform/DevToolsPath.test.ts +80 -41
- package/front_end/core/platform/DevToolsPath.ts +32 -9
- package/front_end/core/platform/ServerTiming.ts +8 -8
- package/front_end/core/platform/StringUtilities.ts +1 -1
- package/front_end/core/protocol_client/InspectorBackend.ts +15 -22
- package/front_end/core/protocol_client/protocol_client.ts +1 -0
- package/front_end/core/root/Runtime.test.ts +17 -0
- package/front_end/core/root/Runtime.ts +79 -50
- package/front_end/core/sdk/AccessibilityModel.ts +3 -3
- package/front_end/core/sdk/AnimationModel.ts +5 -5
- package/front_end/core/sdk/AutofillModel.ts +3 -3
- package/front_end/core/sdk/CPUProfilerModel.ts +4 -4
- package/front_end/core/sdk/CPUThrottlingManager.ts +157 -17
- package/front_end/core/sdk/CSSMatchedStyles.test.ts +3 -0
- package/front_end/core/sdk/CSSMatchedStyles.ts +73 -6
- package/front_end/core/sdk/CSSMetadata.ts +21 -0
- package/front_end/core/sdk/CSSModel.test.ts +7 -9
- package/front_end/core/sdk/CSSModel.ts +53 -34
- package/front_end/core/sdk/CSSProperty.ts +16 -6
- package/front_end/core/sdk/CSSPropertyParser.ts +4 -4
- package/front_end/{panels/elements/PropertyMatchers.test.ts → core/sdk/CSSPropertyParserMatchers.test.ts} +126 -63
- package/front_end/{panels/elements/PropertyMatchers.ts → core/sdk/CSSPropertyParserMatchers.ts} +126 -59
- package/front_end/core/sdk/CSSStyleDeclaration.ts +13 -1
- package/front_end/core/sdk/CSSStyleSheetHeader.test.ts +29 -0
- package/front_end/core/sdk/CSSStyleSheetHeader.ts +1 -1
- package/front_end/core/sdk/ChildTargetManager.test.ts +20 -4
- package/front_end/core/sdk/ChildTargetManager.ts +8 -11
- package/front_end/core/sdk/Connections.ts +22 -9
- package/front_end/core/sdk/ConsoleModel.test.ts +6 -4
- package/front_end/core/sdk/ConsoleModel.ts +11 -6
- package/front_end/core/sdk/CookieModel.test.ts +8 -7
- package/front_end/core/sdk/CookieModel.ts +3 -3
- package/front_end/core/sdk/DOMDebuggerModel.ts +5 -5
- package/front_end/core/sdk/DOMModel.ts +35 -17
- package/front_end/core/sdk/DebuggerModel.test.ts +4 -3
- package/front_end/core/sdk/DebuggerModel.ts +13 -13
- package/front_end/core/sdk/EmulationModel.ts +2 -3
- package/front_end/core/sdk/FrameManager.ts +7 -7
- package/front_end/core/sdk/HeapProfilerModel.ts +7 -7
- package/front_end/core/sdk/IOModel.ts +2 -3
- package/front_end/core/sdk/IsolateManager.ts +4 -4
- package/front_end/core/sdk/IssuesModel.ts +7 -4
- package/front_end/core/sdk/LogModel.ts +5 -5
- package/front_end/core/sdk/NetworkManager.test.ts +103 -54
- package/front_end/core/sdk/NetworkManager.ts +57 -22
- package/front_end/core/sdk/NetworkRequest.test.ts +19 -20
- package/front_end/core/sdk/NetworkRequest.ts +10 -10
- package/front_end/core/sdk/OverlayModel.test.ts +6 -6
- package/front_end/core/sdk/OverlayModel.ts +10 -10
- package/front_end/core/sdk/OverlayPersistentHighlighter.test.ts +5 -3
- package/front_end/core/sdk/PageResourceLoader.test.ts +20 -25
- package/front_end/core/sdk/PageResourceLoader.ts +3 -3
- package/front_end/core/sdk/PaintProfiler.ts +4 -4
- package/front_end/core/sdk/PerformanceMetricsModel.ts +2 -2
- package/front_end/core/sdk/PreloadingModel.test.ts +19 -17
- package/front_end/core/sdk/PreloadingModel.ts +4 -4
- package/front_end/core/sdk/RehydratingConnection.ts +6 -4
- package/front_end/core/sdk/RemoteObject.ts +2 -2
- package/front_end/core/sdk/ResourceTreeModel.ts +39 -32
- package/front_end/core/sdk/RuntimeModel.test.ts +4 -2
- package/front_end/core/sdk/RuntimeModel.ts +14 -12
- package/front_end/core/sdk/ScreenCaptureModel.ts +3 -0
- package/front_end/core/sdk/Script.ts +1 -1
- package/front_end/core/sdk/SecurityOriginManager.ts +6 -6
- package/front_end/core/sdk/ServiceWorkerCacheModel.ts +5 -5
- package/front_end/core/sdk/ServiceWorkerManager.ts +10 -11
- package/front_end/core/sdk/SourceMap.test.ts +141 -77
- package/front_end/core/sdk/SourceMap.ts +110 -193
- package/front_end/core/sdk/SourceMapFunctionRanges.test.ts +171 -0
- package/front_end/core/sdk/SourceMapFunctionRanges.ts +150 -0
- package/front_end/core/sdk/SourceMapManager.test.ts +14 -14
- package/front_end/core/sdk/SourceMapManager.ts +12 -12
- package/front_end/core/sdk/SourceMapScopes.ts +29 -7
- package/front_end/core/sdk/SourceMapScopesInfo.test.ts +36 -28
- package/front_end/core/sdk/SourceMapScopesInfo.ts +35 -23
- package/front_end/core/sdk/StorageBucketsModel.ts +8 -8
- package/front_end/core/sdk/StorageKeyManager.test.ts +4 -2
- package/front_end/core/sdk/StorageKeyManager.ts +8 -7
- package/front_end/core/sdk/Target.test.ts +39 -3
- package/front_end/core/sdk/Target.ts +41 -1
- package/front_end/core/sdk/TargetManager.test.ts +6 -4
- package/front_end/core/sdk/TargetManager.ts +6 -6
- package/front_end/core/sdk/TraceObject.test.ts +1 -1
- package/front_end/core/sdk/TraceObject.ts +32 -0
- package/front_end/core/sdk/WebAuthnModel.ts +6 -6
- package/front_end/core/sdk/sdk-meta.ts +1 -1
- package/front_end/core/sdk/sdk.ts +4 -5
- package/front_end/design_system_tokens.css +775 -0
- package/front_end/devtools_compatibility.js +5 -5
- package/front_end/entrypoint_template.html +2 -0
- package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +1 -2
- package/front_end/entrypoints/formatter_worker/JavaScriptFormatter.test.ts +12 -2
- package/front_end/entrypoints/formatter_worker/JavaScriptFormatter.ts +3 -3
- package/front_end/entrypoints/formatter_worker/ScopeParser.ts +0 -1
- package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +0 -1
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +67 -52
- package/front_end/entrypoints/inspector_main/InspectorMain.test.ts +276 -142
- package/front_end/entrypoints/inspector_main/InspectorMain.ts +41 -2
- package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +1 -1
- package/front_end/entrypoints/inspector_main/RenderingOptions.ts +1 -4
- package/front_end/entrypoints/js_app/js_app.ts +2 -1
- package/front_end/entrypoints/main/ExecutionContextSelector.ts +1 -1
- package/front_end/entrypoints/main/MainImpl.ts +83 -78
- package/front_end/entrypoints/node_app/NodeConnectionsPanel.ts +5 -7
- package/front_end/entrypoints/node_app/NodeMain.ts +4 -5
- package/front_end/entrypoints/node_app/node_app.ts +1 -0
- package/front_end/entrypoints/wasmparser_worker/WasmParserWorker.ts +1 -1
- package/front_end/entrypoints/worker_app/WorkerMain.ts +1 -1
- package/front_end/generated/InspectorBackendCommands.js +20 -20
- package/front_end/generated/SupportedCSSProperties.js +205 -9
- package/front_end/generated/protocol-mapping.d.ts +41 -23
- package/front_end/generated/protocol-proxy-api.d.ts +34 -25
- package/front_end/generated/protocol.ts +173 -79
- package/front_end/global_typings/global_defs.d.ts +0 -5
- package/front_end/legacy/legacy-defs.d.ts +0 -2
- package/front_end/legacy_test_runner/application_test_runner/ResourceTreeTestRunner.js +2 -1
- package/front_end/legacy_test_runner/bindings_test_runner/BindingsTestRunner.js +3 -4
- package/front_end/legacy_test_runner/elements_test_runner/ElementsTestRunner.js +1 -2
- package/front_end/legacy_test_runner/heap_profiler_test_runner/heap_profiler_test_runner.js +15 -3
- package/front_end/models/autofill_manager/AutofillManager.ts +3 -3
- package/front_end/models/bindings/CompilerScriptMapping.test.ts +6 -6
- package/front_end/models/bindings/CompilerScriptMapping.ts +8 -0
- package/front_end/models/bindings/ContentProviderBasedProject.ts +1 -1
- package/front_end/models/bindings/DebuggerLanguagePlugins.test.ts +5 -3
- package/front_end/models/bindings/DebuggerWorkspaceBinding.test.ts +29 -3
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +8 -0
- package/front_end/models/bindings/DefaultScriptMapping.test.ts +4 -2
- package/front_end/models/bindings/FileUtils.ts +1 -1
- package/front_end/models/bindings/IgnoreListManager.test.ts +17 -15
- package/front_end/models/bindings/IgnoreListManager.ts +6 -6
- package/front_end/models/bindings/NetworkProject.ts +4 -4
- package/front_end/models/bindings/PresentationConsoleMessageHelper.test.ts +4 -2
- package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +4 -5
- package/front_end/models/bindings/ResourceMapping.test.ts +6 -4
- package/front_end/models/bindings/ResourceScriptMapping.test.ts +4 -2
- package/front_end/models/bindings/ResourceScriptMapping.ts +4 -4
- package/front_end/models/bindings/ResourceUtils.test.ts +26 -28
- package/front_end/models/bindings/ResourceUtils.ts +1 -8
- package/front_end/models/bindings/SASSSourceMapping.ts +0 -1
- package/front_end/models/breakpoints/BreakpointManager.test.ts +23 -22
- package/front_end/models/breakpoints/BreakpointManager.ts +4 -4
- package/front_end/models/cpu_profile/CPUProfileDataModel.test.ts +8 -1
- package/front_end/models/cpu_profile/CPUProfileDataModel.ts +14 -4
- package/front_end/models/cpu_profile/ProfileTreeModel.ts +1 -3
- package/front_end/models/crux-manager/CrUXManager.test.ts +27 -15
- package/front_end/models/crux-manager/CrUXManager.ts +23 -8
- package/front_end/models/emulation/DeviceModeModel.ts +3 -3
- package/front_end/models/emulation/EmulatedDevices.ts +7 -7
- package/front_end/models/extensions/ExtensionAPI.ts +300 -174
- package/front_end/models/extensions/ExtensionEndpoint.ts +8 -8
- package/front_end/models/extensions/ExtensionPanel.ts +4 -2
- package/front_end/models/extensions/ExtensionServer.test.ts +163 -28
- package/front_end/models/extensions/ExtensionServer.ts +59 -5
- package/front_end/models/extensions/HostUrlPattern.test.ts +59 -58
- package/front_end/models/extensions/LanguageExtensionEndpoint.test.ts +9 -5
- package/front_end/models/extensions/LanguageExtensionEndpoint.ts +3 -3
- package/front_end/models/extensions/RecorderPluginManager.ts +13 -13
- package/front_end/models/formatter/FormatterWorkerPool.ts +1 -3
- package/front_end/models/har/Log.test.ts +3 -1
- package/front_end/models/har/Log.ts +3 -3
- package/front_end/models/har/Writer.test.ts +2 -1
- package/front_end/models/heap_snapshot_model/HeapSnapshotModel.ts +4 -10
- package/front_end/models/issues_manager/ClientHintIssue.ts +2 -3
- package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +0 -1
- package/front_end/models/issues_manager/CookieIssue.ts +1 -0
- package/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.ts +0 -1
- package/front_end/models/issues_manager/DeprecationIssue.ts +2 -3
- package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +2 -3
- package/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.ts +2 -3
- package/front_end/models/issues_manager/GenericIssue.ts +0 -1
- package/front_end/models/issues_manager/IssueResolver.test.ts +1 -1
- package/front_end/models/issues_manager/IssuesManager.ts +29 -10
- package/front_end/models/issues_manager/MarkdownIssueDescription.ts +1 -1
- package/front_end/models/issues_manager/SelectElementAccessibilityIssue.test.ts +86 -0
- package/front_end/models/issues_manager/SelectElementAccessibilityIssue.ts +110 -0
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityDisallowedOptGroupChild.md +7 -0
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityDisallowedSelectChild.md +7 -0
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +3 -0
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentLegendChild.md +3 -0
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentOptionChild.md +3 -0
- package/front_end/models/issues_manager/descriptions/selectElementAccessibilityNonPhrasingContentOptionChild.md +3 -0
- package/front_end/models/issues_manager/issues_manager.ts +2 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +149 -130
- package/front_end/models/live-metrics/LiveMetrics.ts +21 -21
- package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +13 -13
- package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +10 -3
- package/front_end/models/logs/NetworkLog.test.ts +3 -1
- package/front_end/models/logs/NetworkLog.ts +6 -6
- package/front_end/models/logs/RequestResolver.test.ts +1 -1
- package/front_end/models/persistence/EditFileSystemView.ts +3 -6
- package/front_end/models/persistence/IsolatedFileSystemManager.ts +9 -13
- package/front_end/models/persistence/NetworkPersistenceManager.test.ts +36 -44
- package/front_end/models/persistence/NetworkPersistenceManager.ts +6 -6
- package/front_end/models/persistence/PersistenceAction.test.ts +11 -9
- package/front_end/models/persistence/PersistenceImpl.test.ts +10 -8
- package/front_end/models/persistence/PersistenceImpl.ts +4 -4
- package/front_end/models/persistence/PersistenceUtils.ts +3 -3
- package/front_end/models/persistence/PlatformFileSystem.test.ts +4 -3
- package/front_end/models/persistence/PlatformFileSystem.ts +1 -1
- package/front_end/models/persistence/WorkspaceSettingsTab.ts +14 -20
- package/front_end/models/project_settings/ProjectSettingsModel.test.ts +138 -0
- package/front_end/models/project_settings/ProjectSettingsModel.ts +157 -0
- package/front_end/models/project_settings/project_settings.ts +9 -0
- package/front_end/models/source_map_scopes/NamesResolver.test.ts +11 -3
- package/front_end/models/source_map_scopes/NamesResolver.ts +5 -7
- package/front_end/models/source_map_scopes/ScopeChainModel.ts +3 -3
- package/front_end/models/text_utils/StaticContentProvider.test.ts +4 -2
- package/front_end/models/text_utils/StreamingContentData.ts +3 -3
- package/front_end/models/text_utils/TextUtils.ts +1 -1
- package/front_end/models/trace/LanternComputationData.ts +11 -10
- package/front_end/models/trace/ModelImpl.test.ts +6 -6
- package/front_end/models/trace/ModelImpl.ts +11 -15
- package/front_end/models/trace/Processor.test.ts +8 -0
- package/front_end/models/trace/Processor.ts +11 -23
- package/front_end/models/trace/extras/FilmStrip.test.ts +54 -32
- package/front_end/models/trace/extras/FilmStrip.ts +11 -10
- package/front_end/models/trace/extras/MainThreadActivity.test.ts +7 -7
- package/front_end/models/trace/extras/MainThreadActivity.ts +5 -5
- package/front_end/models/trace/extras/StackTraceForEvent.ts +5 -1
- package/front_end/models/trace/extras/ThirdParties.test.ts +100 -65
- package/front_end/models/trace/extras/ThirdParties.ts +132 -56
- package/front_end/models/trace/extras/TimelineJSProfile.ts +10 -5
- package/front_end/models/trace/extras/TraceFilter.test.ts +3 -2
- package/front_end/models/trace/extras/TraceTree.test.ts +65 -39
- package/front_end/models/trace/extras/TraceTree.ts +32 -21
- package/front_end/models/trace/handlers/AnimationFramesHandler.test.ts +1 -1
- package/front_end/models/trace/handlers/AnimationFramesHandler.ts +1 -1
- package/front_end/models/trace/handlers/DOMStatsHandler.test.ts +30 -0
- package/front_end/models/trace/handlers/DOMStatsHandler.ts +31 -0
- package/front_end/models/trace/handlers/ExtensionTraceDataHandler.test.ts +741 -381
- package/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +180 -15
- package/front_end/models/trace/handlers/FlowsHandler.ts +9 -10
- package/front_end/models/trace/handlers/FramesHandler.test.ts +42 -43
- package/front_end/models/trace/handlers/FramesHandler.ts +24 -25
- package/front_end/models/trace/handlers/InitiatorsHandler.ts +0 -41
- package/front_end/models/trace/handlers/LargestImagePaintHandler.test.ts +29 -12
- package/front_end/models/trace/handlers/LargestImagePaintHandler.ts +31 -39
- package/front_end/models/trace/handlers/LayoutShiftsHandler.test.ts +2 -2
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +33 -24
- package/front_end/models/trace/handlers/MetaHandler.test.ts +5 -4
- package/front_end/models/trace/handlers/MetaHandler.ts +46 -47
- package/front_end/models/trace/handlers/ModelHandlers.ts +1 -0
- package/front_end/models/trace/handlers/NetworkRequestsHandler.test.ts +62 -62
- package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +38 -40
- package/front_end/models/trace/handlers/PageLoadMetricsHandler.test.ts +2 -2
- package/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +26 -27
- package/front_end/models/trace/handlers/RendererHandler.ts +5 -5
- package/front_end/models/trace/handlers/SamplesHandler.test.ts +49 -16
- package/front_end/models/trace/handlers/SamplesHandler.ts +69 -60
- package/front_end/models/trace/handlers/ScreenshotsHandler.test.ts +31 -42
- package/front_end/models/trace/handlers/ScreenshotsHandler.ts +38 -13
- package/front_end/models/trace/handlers/ServerTimingsHandler.test.ts +6 -6
- package/front_end/models/trace/handlers/ServerTimingsHandler.ts +4 -5
- package/front_end/models/trace/handlers/Threads.test.ts +5 -5
- package/front_end/models/trace/handlers/Threads.ts +13 -4
- package/front_end/models/trace/handlers/UserInteractionsHandler.test.ts +4 -4
- package/front_end/models/trace/handlers/UserInteractionsHandler.ts +17 -18
- package/front_end/models/trace/handlers/UserTimings.md +1 -1
- package/front_end/models/trace/handlers/UserTimingsHandler.test.ts +32 -24
- package/front_end/models/trace/handlers/UserTimingsHandler.ts +25 -4
- package/front_end/models/trace/handlers/WarningsHandler.ts +2 -2
- package/front_end/models/trace/handlers/WorkersHandler.test.ts +4 -4
- package/front_end/models/trace/handlers/helpers.ts +17 -18
- package/front_end/models/trace/handlers/types.ts +2 -1
- package/front_end/models/trace/helpers/SamplesIntegrator.test.ts +68 -0
- package/front_end/models/trace/helpers/SamplesIntegrator.ts +59 -18
- package/front_end/models/trace/helpers/SyntheticEvents.test.ts +1 -1
- package/front_end/models/trace/helpers/SyntheticEvents.ts +1 -1
- package/front_end/models/trace/helpers/Timing.test.ts +33 -45
- package/front_end/models/trace/helpers/Timing.ts +50 -76
- package/front_end/models/trace/helpers/Trace.test.ts +13 -13
- package/front_end/models/trace/helpers/Trace.ts +36 -35
- package/front_end/models/trace/helpers/TreeHelpers.test.ts +10 -81
- package/front_end/models/trace/helpers/TreeHelpers.ts +13 -181
- package/front_end/models/trace/insights/CLSCulprits.test.ts +1 -1
- package/front_end/models/trace/insights/CLSCulprits.ts +206 -107
- package/front_end/models/trace/insights/Common.test.ts +6 -2
- package/front_end/models/trace/insights/Common.ts +165 -31
- package/front_end/models/trace/insights/DOMSize.test.ts +54 -22
- package/front_end/models/trace/insights/DOMSize.ts +71 -17
- package/front_end/models/trace/insights/DocumentLatency.test.ts +4 -4
- package/front_end/models/trace/insights/DocumentLatency.ts +87 -22
- package/front_end/models/trace/insights/FontDisplay.ts +24 -14
- package/front_end/models/trace/insights/ForcedReflow.test.ts +35 -0
- package/front_end/models/trace/insights/ForcedReflow.ts +224 -0
- package/front_end/models/trace/insights/ImageDelivery.test.ts +18 -16
- package/front_end/models/trace/insights/ImageDelivery.ts +63 -26
- package/front_end/models/trace/insights/InteractionToNextPaint.ts +39 -6
- package/front_end/models/trace/insights/LCPDiscovery.test.ts +23 -4
- package/front_end/models/trace/insights/LCPDiscovery.ts +57 -19
- package/front_end/models/trace/insights/LCPPhases.test.ts +2 -2
- package/front_end/models/trace/insights/LCPPhases.ts +57 -29
- package/front_end/models/trace/insights/LongCriticalNetworkTree.ts +60 -0
- package/front_end/models/trace/insights/Models.ts +2 -0
- package/front_end/models/trace/insights/RenderBlocking.ts +22 -10
- package/front_end/models/trace/insights/SlowCSSSelector.ts +42 -10
- package/front_end/models/trace/insights/ThirdParties.test.ts +56 -39
- package/front_end/models/trace/insights/ThirdParties.ts +41 -24
- package/front_end/models/trace/insights/Viewport.ts +8 -7
- package/front_end/models/trace/insights/types.ts +36 -17
- package/front_end/models/trace/lantern/core/NetworkAnalyzer.test.ts +80 -52
- package/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +6 -7
- package/front_end/models/trace/lantern/graph/BaseNode.test.ts +59 -52
- package/front_end/models/trace/lantern/graph/BaseNode.ts +2 -1
- package/front_end/models/trace/lantern/graph/CPUNode.ts +2 -1
- package/front_end/models/trace/lantern/graph/NetworkNode.ts +2 -1
- package/front_end/models/trace/lantern/graph/PageDependencyGraph.test.ts +84 -88
- package/front_end/models/trace/lantern/graph/PageDependencyGraph.ts +2 -1
- package/front_end/models/trace/lantern/metrics/FirstContentfulPaint.ts +1 -1
- package/front_end/models/trace/lantern/simulation/ConnectionPool.test.ts +40 -28
- package/front_end/models/trace/lantern/simulation/ConnectionPool.ts +1 -1
- package/front_end/models/trace/lantern/simulation/DNSCache.test.ts +3 -5
- package/front_end/models/trace/lantern/simulation/DNSCache.ts +2 -2
- package/front_end/models/trace/lantern/simulation/Simulator.test.ts +68 -37
- package/front_end/models/trace/lantern/simulation/Simulator.ts +4 -3
- package/front_end/models/trace/lantern/simulation/TCPConnection.ts +0 -4
- package/front_end/models/trace/lantern/testing/MetricTestUtils.ts +2 -2
- package/front_end/models/trace/lantern/types/Lantern.ts +56 -56
- package/front_end/models/trace/root-causes/LayoutShift.test.ts +17 -20
- package/front_end/models/trace/root-causes/LayoutShift.ts +20 -19
- package/front_end/models/trace/root-causes/RootCauses.ts +8 -8
- package/front_end/models/trace/types/Configuration.ts +23 -6
- package/front_end/models/trace/types/Extensions.ts +4 -6
- package/front_end/models/trace/types/File.ts +30 -30
- package/front_end/models/trace/types/Timing.ts +12 -20
- package/front_end/models/trace/types/TraceEvents.ts +254 -188
- package/front_end/models/workspace/FileManager.ts +3 -3
- package/front_end/models/workspace/SearchConfig.test.ts +3 -2
- package/front_end/models/workspace/UISourceCode.ts +10 -13
- package/front_end/models/workspace/WorkspaceImpl.test.ts +12 -13
- package/front_end/models/workspace/WorkspaceImpl.ts +10 -10
- package/front_end/models/workspace_diff/WorkspaceDiff.test.ts +5 -3
- package/front_end/models/workspace_diff/WorkspaceDiff.ts +49 -47
- package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +4 -7
- package/front_end/panels/accessibility/AccessibilityNodeView.ts +1 -4
- package/front_end/panels/accessibility/AccessibilitySubPane.ts +6 -8
- package/front_end/panels/accessibility/axBreadcrumbs.css +3 -14
- package/front_end/panels/ai_assistance/AiAssistancePanel.test.ts +67 -89
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +245 -203
- package/front_end/panels/ai_assistance/AiHistoryStorage.test.ts +16 -16
- package/front_end/panels/ai_assistance/AiHistoryStorage.ts +62 -4
- package/front_end/panels/ai_assistance/ChangeManager.test.ts +101 -23
- package/front_end/panels/ai_assistance/ChangeManager.ts +32 -13
- package/front_end/panels/ai_assistance/ExtensionScope.ts +50 -31
- package/front_end/panels/ai_assistance/agents/AiAgent.test.ts +88 -272
- package/front_end/panels/ai_assistance/agents/AiAgent.ts +389 -382
- package/front_end/panels/ai_assistance/agents/FileAgent.test.ts +22 -217
- package/front_end/panels/ai_assistance/agents/FileAgent.ts +5 -69
- package/front_end/panels/ai_assistance/agents/NetworkAgent.test.ts +19 -163
- package/front_end/panels/ai_assistance/agents/NetworkAgent.ts +9 -253
- package/front_end/panels/ai_assistance/agents/PatchAgent.ts +120 -198
- package/front_end/panels/ai_assistance/agents/PerformanceAgent.test.ts +44 -67
- package/front_end/panels/ai_assistance/agents/PerformanceAgent.ts +31 -12
- package/front_end/panels/ai_assistance/agents/PerformanceInsightsAgent.ts +117 -0
- package/front_end/panels/ai_assistance/agents/StylingAgent.test.ts +220 -418
- package/front_end/panels/ai_assistance/agents/StylingAgent.ts +245 -69
- package/front_end/panels/ai_assistance/ai_assistance-meta.ts +0 -14
- package/front_end/panels/ai_assistance/ai_assistance.ts +4 -0
- package/front_end/panels/ai_assistance/components/ChatView.ts +945 -772
- package/front_end/panels/ai_assistance/components/MarkdownRendererWithCodeBlock.ts +57 -0
- package/front_end/panels/ai_assistance/components/UserActionRow.test.ts +67 -29
- package/front_end/panels/ai_assistance/components/UserActionRow.ts +294 -244
- package/front_end/panels/ai_assistance/components/chatView.css +87 -22
- package/front_end/panels/ai_assistance/components/userActionRow.css +72 -78
- package/front_end/panels/ai_assistance/data_formatters/FileFormatter.test.ts +115 -0
- package/front_end/panels/ai_assistance/data_formatters/FileFormatter.ts +81 -0
- package/front_end/panels/ai_assistance/data_formatters/NetworkRequestFormatter.test.ts +87 -0
- package/front_end/panels/ai_assistance/data_formatters/NetworkRequestFormatter.ts +272 -0
- package/front_end/panels/ai_assistance/debug.ts +30 -0
- package/front_end/panels/animation/AnimationScreenshotPopover.ts +2 -1
- package/front_end/panels/animation/AnimationTimeline.test.ts +8 -8
- package/front_end/panels/animation/AnimationTimeline.ts +8 -3
- package/front_end/panels/animation/AnimationUI.ts +6 -6
- package/front_end/panels/animation/animationTimeline.css +1 -5
- package/front_end/panels/application/AppManifestView.test.ts +7 -5
- package/front_end/panels/application/AppManifestView.ts +16 -20
- package/front_end/panels/application/ApplicationPanelSidebar.test.ts +5 -3
- package/front_end/panels/application/ApplicationPanelSidebar.ts +94 -25
- package/front_end/panels/application/ApplicationPanelTreeElement.ts +34 -2
- package/front_end/panels/application/BackgroundServiceModel.ts +4 -4
- package/front_end/panels/application/BackgroundServiceView.test.ts +23 -2
- package/front_end/panels/application/BackgroundServiceView.ts +37 -33
- package/front_end/panels/application/CookieItemsView.ts +7 -6
- package/front_end/panels/application/DOMStorageItemsView.ts +38 -53
- package/front_end/panels/application/DOMStorageModel.ts +11 -11
- package/front_end/panels/application/ExtensionStorageItemsView.test.ts +18 -25
- package/front_end/panels/application/ExtensionStorageItemsView.ts +41 -96
- package/front_end/panels/application/ExtensionStorageModel.test.ts +4 -2
- package/front_end/panels/application/ExtensionStorageModel.ts +4 -4
- package/front_end/panels/application/IndexedDBModel.ts +8 -8
- package/front_end/panels/application/IndexedDBViews.ts +11 -14
- package/front_end/panels/application/InterestGroupStorageModel.ts +4 -4
- package/front_end/panels/application/InterestGroupStorageView.test.ts +9 -33
- package/front_end/panels/application/InterestGroupStorageView.ts +38 -33
- package/front_end/panels/application/KeyValueStorageItemsView.test.ts +122 -0
- package/front_end/panels/application/KeyValueStorageItemsView.ts +356 -0
- package/front_end/panels/application/OpenedWindowDetailsView.ts +4 -10
- package/front_end/panels/application/PreloadingTreeElement.ts +2 -2
- package/front_end/panels/application/ReportingApiReportsView.test.ts +1 -13
- package/front_end/panels/application/ReportingApiReportsView.ts +14 -19
- package/front_end/panels/application/ReportingApiView.test.ts +13 -0
- package/front_end/panels/application/ResourcesPanel.ts +11 -12
- package/front_end/panels/application/ServiceWorkerCacheTreeElement.ts +11 -1
- package/front_end/panels/application/ServiceWorkerCacheViews.ts +12 -5
- package/front_end/panels/application/ServiceWorkersView.ts +1 -6
- package/front_end/panels/application/SharedStorageEventsView.test.ts +4 -19
- package/front_end/panels/application/SharedStorageEventsView.ts +24 -28
- package/front_end/panels/application/SharedStorageItemsView.test.ts +1 -1
- package/front_end/panels/application/SharedStorageItemsView.ts +14 -10
- package/front_end/panels/application/SharedStorageModel.ts +9 -9
- package/front_end/panels/application/StorageBucketsTreeElement.ts +19 -3
- package/front_end/panels/application/StorageItemsView.ts +4 -2
- package/front_end/panels/application/StorageView.ts +4 -11
- package/front_end/panels/application/appManifestView.css +1 -1
- package/front_end/panels/application/application.ts +2 -0
- package/front_end/panels/application/components/BackForwardCacheView.ts +28 -25
- package/front_end/panels/application/components/BounceTrackingMitigationsView.test.ts +7 -8
- package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +24 -38
- package/front_end/panels/application/components/EndpointsGrid.test.ts +10 -9
- package/front_end/panels/application/components/EndpointsGrid.ts +40 -51
- package/front_end/panels/application/components/FrameDetailsView.ts +59 -56
- package/front_end/panels/application/components/InterestGroupAccessGrid.test.ts +3 -7
- package/front_end/panels/application/components/InterestGroupAccessGrid.ts +65 -73
- package/front_end/panels/application/components/OriginTrialTreeView.test.ts +1 -1
- package/front_end/panels/application/components/OriginTrialTreeView.ts +23 -15
- package/front_end/panels/application/components/PermissionsPolicySection.ts +17 -13
- package/front_end/panels/application/components/ProtocolHandlersView.test.ts +5 -3
- package/front_end/panels/application/components/ProtocolHandlersView.ts +16 -10
- package/front_end/panels/application/components/ReportsGrid.test.ts +10 -9
- package/front_end/panels/application/components/ReportsGrid.ts +67 -81
- package/front_end/panels/application/components/ServiceWorkerRouterView.ts +8 -4
- package/front_end/panels/application/components/SharedStorageAccessGrid.test.ts +6 -12
- package/front_end/panels/application/components/SharedStorageAccessGrid.ts +96 -97
- package/front_end/panels/application/components/SharedStorageMetadataView.ts +10 -6
- package/front_end/panels/application/components/StackTrace.test.ts +4 -3
- package/front_end/panels/application/components/StackTrace.ts +16 -10
- package/front_end/panels/application/components/StorageMetadataView.ts +18 -18
- package/front_end/panels/application/components/TrustTokensView.test.ts +7 -11
- package/front_end/panels/application/components/TrustTokensView.ts +75 -76
- package/front_end/panels/application/components/bounceTrackingMitigationsView.css +1 -2
- package/front_end/panels/application/components/interestGroupAccessGrid.css +3 -2
- package/front_end/panels/application/components/reportingApiGrid.css +3 -13
- package/front_end/panels/application/components/sharedStorageAccessGrid.css +3 -2
- package/front_end/panels/application/components/trustTokensView.css +3 -2
- package/front_end/panels/application/interestGroupStorageView.css +0 -13
- package/front_end/panels/application/preloading/PreloadingView.test.ts +19 -27
- package/front_end/panels/application/preloading/PreloadingView.ts +17 -26
- package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.test.ts +9 -12
- package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +63 -93
- package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.test.ts +75 -12
- package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +43 -25
- package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +18 -19
- package/front_end/panels/application/preloading/components/PreloadingGrid.test.ts +24 -20
- package/front_end/panels/application/preloading/components/PreloadingGrid.ts +57 -124
- package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.test.ts +4 -2
- package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.ts +31 -63
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +12 -8
- package/front_end/panels/application/preloading/components/RuleSetGrid.test.ts +10 -6
- package/front_end/panels/application/preloading/components/RuleSetGrid.ts +126 -219
- package/front_end/panels/application/preloading/components/UsedPreloadingView.test.ts +36 -34
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +20 -16
- package/front_end/panels/application/preloading/components/preloadingDetailsReportView.css +8 -0
- package/front_end/panels/application/preloading/components/preloadingDisabledInfobar.css +6 -19
- package/front_end/panels/application/preloading/components/preloadingGrid.css +2 -2
- package/front_end/panels/application/preloading/components/ruleSetGrid.css +2 -2
- package/front_end/panels/application/sharedStorageEventsView.css +0 -13
- package/front_end/panels/autofill/AutofillView.test.ts +14 -11
- package/front_end/panels/autofill/AutofillView.ts +56 -114
- package/front_end/panels/autofill/autofillView.css +5 -0
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +3 -6
- package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +22 -14
- package/front_end/panels/browser_debugger/ObjectEventListenersSidebarPane.ts +1 -1
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +2 -5
- package/front_end/panels/browser_debugger/domBreakpointsSidebarPane.css +4 -0
- package/front_end/panels/changes/ChangesSidebar.ts +6 -9
- package/front_end/panels/changes/ChangesView.ts +45 -22
- package/front_end/panels/changes/changesView.css +2 -2
- package/front_end/panels/console/ConsoleContextSelector.ts +1 -1
- package/front_end/panels/console/ConsoleFilter.ts +3 -3
- package/front_end/panels/console/ConsolePinPane.ts +6 -7
- package/front_end/panels/console/ConsolePrompt.ts +5 -8
- package/front_end/panels/console/ConsoleSidebar.ts +4 -8
- package/front_end/panels/console/ConsoleView.test.ts +31 -4
- package/front_end/panels/console/ConsoleView.ts +61 -59
- package/front_end/panels/console/ConsoleViewMessage.test.ts +5 -3
- package/front_end/panels/console/ConsoleViewMessage.ts +34 -1
- package/front_end/panels/console/ErrorStackParser.test.ts +13 -13
- package/front_end/panels/console/consoleSidebar.css +4 -0
- package/front_end/panels/console/consoleView.css +13 -5
- package/front_end/panels/console_counters/WarningErrorCounter.ts +1 -0
- package/front_end/panels/coverage/CoverageDecorationManager.test.ts +4 -3
- package/front_end/panels/coverage/CoverageListView.ts +2 -5
- package/front_end/panels/coverage/CoverageModel.ts +8 -8
- package/front_end/panels/coverage/CoverageView.ts +11 -7
- package/front_end/panels/coverage/coverageView.css +1 -2
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +5 -11
- package/front_end/panels/css_overview/CSSOverviewController.ts +8 -8
- package/front_end/panels/css_overview/CSSOverviewPanel.ts +1 -4
- package/front_end/panels/css_overview/CSSOverviewProcessingView.ts +1 -5
- package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +8 -9
- package/front_end/panels/css_overview/components/CSSOverviewStartView.ts +6 -4
- package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +151 -239
- package/front_end/panels/developer_resources/DeveloperResourcesView.test.ts +7 -6
- package/front_end/panels/developer_resources/DeveloperResourcesView.ts +15 -14
- package/front_end/panels/developer_resources/developerResourcesListView.css +4 -8
- package/front_end/panels/developer_resources/developerResourcesView.css +0 -1
- package/front_end/panels/elements/AccessibilityTreeUtils.ts +3 -3
- package/front_end/panels/elements/AccessibilityTreeView.test.ts +3 -1
- package/front_end/panels/elements/AccessibilityTreeView.ts +5 -1
- package/front_end/panels/elements/ClassesPaneWidget.ts +2 -2
- package/front_end/panels/elements/ColorSwatchPopoverIcon.test.ts +63 -0
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +44 -18
- package/front_end/panels/elements/ComputedStyleModel.ts +4 -4
- package/front_end/panels/elements/ComputedStyleWidget.test.ts +153 -0
- package/front_end/panels/elements/ComputedStyleWidget.ts +27 -13
- package/front_end/panels/elements/DOMLinkifier.ts +2 -2
- package/front_end/panels/elements/ElementStatePaneWidget.test.ts +8 -19
- package/front_end/panels/elements/ElementStatePaneWidget.ts +10 -2
- package/front_end/panels/elements/ElementsPanel.ts +2 -2
- package/front_end/panels/elements/ElementsSidebarPane.ts +6 -2
- package/front_end/panels/elements/ElementsTreeElement.ts +18 -20
- package/front_end/panels/elements/ElementsTreeOutline.test.ts +93 -0
- package/front_end/panels/elements/ElementsTreeOutline.ts +18 -7
- package/front_end/panels/elements/EventListenersWidget.ts +1 -1
- package/front_end/panels/elements/LayersWidget.ts +3 -3
- package/front_end/panels/elements/MetricsSidebarPane.ts +1 -4
- package/front_end/panels/elements/NodeStackTraceWidget.ts +1 -1
- package/front_end/panels/elements/PlatformFontsWidget.ts +4 -9
- package/front_end/panels/elements/PropertiesWidget.ts +4 -6
- package/front_end/panels/elements/PropertyRenderer.ts +31 -16
- package/front_end/panels/elements/StylePropertiesSection.test.ts +15 -49
- package/front_end/panels/elements/StylePropertiesSection.ts +19 -14
- package/front_end/panels/elements/StylePropertyHighlighter.test.ts +3 -0
- package/front_end/panels/elements/StylePropertyTreeElement.test.ts +171 -172
- package/front_end/panels/elements/StylePropertyTreeElement.ts +329 -177
- package/front_end/panels/elements/StylesSidebarPane.test.ts +423 -27
- package/front_end/panels/elements/StylesSidebarPane.ts +173 -30
- package/front_end/panels/elements/TopLayerContainer.ts +1 -2
- package/front_end/panels/elements/WebCustomData.test.ts +1 -1
- package/front_end/panels/elements/components/AccessibilityTreeNode.ts +7 -5
- package/front_end/panels/elements/components/AnchorFunctionLinkSwatch.ts +17 -13
- package/front_end/panels/elements/components/CSSHintDetailsView.ts +6 -4
- package/front_end/panels/elements/components/CSSPropertyDocsView.ts +8 -6
- package/front_end/panels/elements/components/CSSPropertyIconResolver.ts +31 -9
- package/front_end/panels/elements/components/CSSQuery.ts +14 -6
- package/front_end/panels/elements/components/CSSVariableValueView.ts +9 -5
- package/front_end/panels/elements/components/ComputedStyleProperty.ts +5 -3
- package/front_end/panels/elements/components/ComputedStyleTrace.ts +6 -4
- package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +12 -8
- package/front_end/panels/elements/components/ElementsTreeExpandButton.ts +6 -4
- package/front_end/panels/elements/components/LayoutPane.ts +15 -8
- package/front_end/panels/elements/components/QueryContainer.ts +17 -13
- package/front_end/panels/elements/components/StylePropertyEditor.ts +11 -7
- package/front_end/panels/elements/components/layoutPane.css +1 -1
- package/front_end/panels/elements/elements.ts +0 -2
- package/front_end/panels/elements/elementsTreeOutline.css +3 -5
- package/front_end/panels/elements/stylePropertiesTreeOutline.css +4 -0
- package/front_end/panels/emulation/DeviceModeToolbar.ts +28 -42
- package/front_end/panels/emulation/DeviceModeView.ts +2 -3
- package/front_end/panels/emulation/DeviceModeWrapper.ts +1 -1
- package/front_end/panels/emulation/InspectedPagePlaceholder.ts +5 -5
- package/front_end/panels/emulation/MediaQueryInspector.ts +1 -1
- package/front_end/panels/emulation/components/DeviceSizeInputElement.ts +3 -6
- package/front_end/panels/emulation/deviceModeView.css +17 -13
- package/front_end/panels/emulation/emulation-meta.ts +0 -1
- package/front_end/panels/event_listeners/EventListenersUtils.ts +4 -3
- package/front_end/panels/event_listeners/EventListenersView.ts +2 -5
- package/front_end/panels/explain/PromptBuilder.test.ts +39 -16
- package/front_end/panels/explain/PromptBuilder.ts +10 -11
- package/front_end/panels/explain/components/ConsoleInsight.test.ts +226 -0
- package/front_end/panels/explain/components/ConsoleInsight.ts +234 -47
- package/front_end/panels/explain/components/consoleInsight.css +55 -0
- package/front_end/panels/explain/components/consoleInsightSourcesList.css +2 -0
- package/front_end/panels/issues/AffectedBlockedByResponseView.ts +3 -3
- package/front_end/panels/issues/AffectedDescendantsWithinSelectElementView.ts +64 -0
- package/front_end/panels/issues/AffectedDirectivesView.ts +2 -2
- package/front_end/panels/issues/AffectedHeavyAdView.ts +1 -1
- package/front_end/panels/issues/AffectedSharedArrayBufferIssueDetailsView.ts +1 -1
- package/front_end/panels/issues/AffectedTrackingSitesView.ts +1 -0
- package/front_end/panels/issues/IssueAggregator.ts +17 -7
- package/front_end/panels/issues/IssueView.ts +2 -0
- package/front_end/panels/issues/IssuesPane.ts +9 -8
- package/front_end/panels/issues/components/ElementsPanelLink.ts +6 -4
- package/front_end/panels/issues/components/HideIssuesMenu.ts +6 -4
- package/front_end/panels/issues/issuesPane.css +1 -1
- package/front_end/panels/issues/issuesTree.css +7 -4
- package/front_end/panels/layer_viewer/LayerDetailsView.ts +12 -6
- package/front_end/panels/layer_viewer/LayerTreeOutline.ts +3 -3
- package/front_end/panels/layer_viewer/LayerViewHost.ts +0 -1
- package/front_end/panels/layer_viewer/Layers3DView.ts +7 -7
- package/front_end/panels/layer_viewer/PaintProfilerView.ts +5 -8
- package/front_end/panels/layer_viewer/TransformController.ts +8 -5
- package/front_end/panels/layer_viewer/layerDetailsView.css +4 -0
- package/front_end/panels/layer_viewer/layers3DView.css +1 -1
- package/front_end/panels/layers/LayerTreeModel.ts +5 -5
- package/front_end/panels/layers/LayersPanel.ts +1 -2
- package/front_end/panels/lighthouse/LighthouseController.ts +9 -9
- package/front_end/panels/lighthouse/LighthousePanel.ts +10 -9
- package/front_end/panels/lighthouse/LighthouseProtocolService.ts +1 -1
- package/front_end/panels/lighthouse/LighthouseReportSelector.ts +3 -7
- package/front_end/panels/lighthouse/LighthouseStartView.ts +5 -2
- package/front_end/panels/lighthouse/LighthouseStatusView.ts +1 -1
- package/front_end/panels/lighthouse/LighthouseTimespanView.ts +1 -1
- package/front_end/panels/lighthouse/lighthousePanel.css +2 -2
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.test.ts +1 -1
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +14 -14
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.test.ts +3 -3
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +3 -3
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +9 -5
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +26 -26
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +10 -6
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +9 -5
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryViewer.ts +15 -11
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +16 -9
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplayUtils.ts +4 -3
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +8 -4
- package/front_end/panels/linear_memory_inspector/components/valueInterpreterDisplay.css +1 -0
- package/front_end/panels/media/EventDisplayTable.ts +2 -5
- package/front_end/panels/media/EventTimelineView.ts +3 -3
- package/front_end/panels/media/MediaModel.ts +7 -7
- package/front_end/panels/media/PlayerListView.ts +1 -5
- package/front_end/panels/media/PlayerMessagesView.ts +5 -7
- package/front_end/panels/media/PlayerPropertiesView.ts +5 -8
- package/front_end/panels/mobile_throttling/CalibrationController.ts +368 -0
- package/front_end/panels/mobile_throttling/MobileThrottlingSelector.ts +5 -4
- package/front_end/panels/mobile_throttling/ThrottlingManager.test.ts +7 -9
- package/front_end/panels/mobile_throttling/ThrottlingManager.ts +63 -39
- package/front_end/panels/mobile_throttling/ThrottlingPresets.ts +40 -14
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +334 -11
- package/front_end/panels/mobile_throttling/mobile_throttling-meta.ts +1 -0
- package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +32 -0
- package/front_end/panels/network/BinaryResourceView.ts +7 -9
- package/front_end/panels/network/BlockedURLsPane.test.ts +4 -2
- package/front_end/panels/network/BlockedURLsPane.ts +9 -7
- package/front_end/panels/network/EventSourceMessagesView.ts +6 -5
- package/front_end/panels/network/NetworkConfigView.ts +3 -5
- package/front_end/panels/network/NetworkDataGridNode.test.ts +38 -58
- package/front_end/panels/network/NetworkDataGridNode.ts +4 -4
- package/front_end/panels/network/NetworkItemView.test.ts +26 -28
- package/front_end/panels/network/NetworkItemView.ts +9 -11
- package/front_end/panels/network/NetworkLogView.test.ts +24 -24
- package/front_end/panels/network/NetworkLogView.ts +9 -6
- package/front_end/panels/network/NetworkManageCustomHeadersView.ts +3 -3
- package/front_end/panels/network/NetworkOverview.ts +12 -12
- package/front_end/panels/network/NetworkPanel.test.ts +1 -2
- package/front_end/panels/network/NetworkPanel.ts +43 -46
- package/front_end/panels/network/NetworkSearchScope.test.ts +5 -5
- package/front_end/panels/network/NetworkTimeCalculator.ts +3 -3
- package/front_end/panels/network/NetworkWaterfallColumn.ts +5 -3
- package/front_end/panels/network/RequestCookiesView.test.ts +5 -4
- package/front_end/panels/network/RequestCookiesView.ts +4 -6
- package/front_end/panels/network/RequestHTMLView.ts +2 -1
- package/front_end/panels/network/RequestInitiatorView.ts +5 -5
- package/front_end/panels/network/RequestPayloadView.ts +20 -12
- package/front_end/panels/network/RequestPreviewView.test.ts +8 -9
- package/front_end/panels/network/RequestPreviewView.ts +5 -3
- package/front_end/panels/network/RequestResponseView.test.ts +8 -8
- package/front_end/panels/network/RequestResponseView.ts +8 -3
- package/front_end/panels/network/RequestTimingView.test.ts +5 -3
- package/front_end/panels/network/RequestTimingView.ts +1 -1
- package/front_end/panels/network/ResourceWebSocketFrameView.ts +11 -5
- package/front_end/panels/network/SignedExchangeInfoView.ts +6 -10
- package/front_end/panels/network/binaryResourceView.css +1 -1
- package/front_end/panels/network/components/EditableSpan.ts +5 -3
- package/front_end/panels/network/components/HeaderSectionRow.ts +25 -24
- package/front_end/panels/network/components/RequestHeaderSection.ts +9 -5
- package/front_end/panels/network/components/RequestHeadersView.test.ts +15 -20
- package/front_end/panels/network/components/RequestHeadersView.ts +28 -24
- package/front_end/panels/network/components/RequestTrustTokensView.ts +29 -19
- package/front_end/panels/network/components/ResponseHeaderSection.test.ts +25 -32
- package/front_end/panels/network/components/ResponseHeaderSection.ts +8 -8
- package/front_end/panels/network/components/WebBundleInfoView.css +8 -0
- package/front_end/panels/network/components/WebBundleInfoView.ts +32 -49
- package/front_end/panels/network/network-meta.ts +5 -2
- package/front_end/panels/network/networkConfigView.css +3 -3
- package/front_end/panels/network/networkLogView.css +1 -1
- package/front_end/panels/network/networkManageCustomHeadersView.css +7 -11
- package/front_end/panels/network/networkPanel.css +9 -12
- package/front_end/panels/network/requestInitiatorView.css +1 -1
- package/front_end/panels/network/webSocketFrameView.css +1 -1
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +4 -4
- package/front_end/panels/profiler/HeapDetachedElementsView.ts +5 -5
- package/front_end/panels/profiler/HeapProfileView.ts +7 -7
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +5 -5
- package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +15 -15
- package/front_end/panels/profiler/HeapSnapshotProxy.ts +3 -3
- package/front_end/panels/profiler/HeapSnapshotView.ts +36 -17
- package/front_end/panels/profiler/HeapTimelineOverview.ts +4 -4
- package/front_end/panels/profiler/IsolateSelector.ts +1 -1
- package/front_end/panels/profiler/LiveHeapProfileView.ts +5 -3
- package/front_end/panels/profiler/ProfileDataGrid.ts +1 -2
- package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +5 -5
- package/front_end/panels/profiler/ProfileHeader.ts +12 -12
- package/front_end/panels/profiler/ProfileLauncherView.ts +4 -7
- package/front_end/panels/profiler/ProfileView.ts +1 -1
- package/front_end/panels/profiler/ProfilesPanel.ts +12 -11
- package/front_end/panels/profiler/TopDownProfileDataGrid.ts +2 -2
- package/front_end/panels/profiler/liveHeapProfile.css +1 -1
- package/front_end/panels/profiler/profileLauncherView.css +1 -2
- package/front_end/panels/protocol_monitor/{components/JSONEditor.css → JSONEditor.css} +6 -1
- package/front_end/panels/protocol_monitor/{components/JSONEditor.test.ts → JSONEditor.test.ts} +90 -91
- package/front_end/panels/protocol_monitor/{components/JSONEditor.ts → JSONEditor.ts} +159 -81
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +293 -360
- package/front_end/panels/protocol_monitor/protocol_monitor.ts +2 -2
- package/front_end/panels/recorder/RecorderController.test.ts +0 -2
- package/front_end/panels/recorder/RecorderController.ts +48 -18
- package/front_end/panels/recorder/components/ControlButton.ts +7 -3
- package/front_end/panels/recorder/components/CreateRecordingView.ts +8 -6
- package/front_end/panels/recorder/components/ExtensionView.ts +8 -4
- package/front_end/panels/recorder/components/RecordingListView.ts +8 -4
- package/front_end/panels/recorder/components/RecordingView.ts +22 -18
- package/front_end/panels/recorder/components/ReplaySection.ts +3 -3
- package/front_end/panels/recorder/components/SelectButton.ts +14 -10
- package/front_end/panels/recorder/components/StepEditor.ts +18 -14
- package/front_end/panels/recorder/components/StepView.ts +20 -17
- package/front_end/panels/recorder/components/TimelineSection.ts +9 -5
- package/front_end/panels/recorder/components/components.ts +0 -2
- package/front_end/panels/recorder/controllers/SelectorPicker.ts +3 -4
- package/front_end/panels/recorder/converters/Converter.ts +1 -1
- package/front_end/panels/recorder/extensions/ExtensionManager.ts +3 -3
- package/front_end/panels/recorder/injected/injected.ts +2 -2
- package/front_end/panels/recorder/injected/selectors/CSSSelector.test.ts +0 -2
- package/front_end/panels/recorder/models/RecordingPlayer.ts +10 -13
- package/front_end/panels/recorder/models/RecordingSession.ts +31 -34
- package/front_end/panels/recorder/models/Schema.ts +1 -1
- package/front_end/panels/recorder/models/SchemaUtils.ts +4 -3
- package/front_end/panels/recorder/recorderController.css +2 -1
- package/front_end/panels/recorder/util/util.ts +1 -1
- package/front_end/panels/screencast/ScreencastView.ts +5 -21
- package/front_end/panels/search/SearchResultsPane.ts +1 -4
- package/front_end/panels/search/SearchView.ts +8 -5
- package/front_end/panels/security/CookieControlsTreeElement.ts +7 -4
- package/front_end/panels/security/CookieControlsView.test.ts +38 -1
- package/front_end/panels/security/CookieControlsView.ts +183 -68
- package/front_end/panels/security/CookieReportTreeElement.ts +7 -4
- package/front_end/panels/security/CookieReportView.test.ts +2 -2
- package/front_end/panels/security/CookieReportView.ts +87 -42
- package/front_end/panels/security/OriginTreeElement.ts +2 -3
- package/front_end/panels/security/SecurityModel.ts +3 -3
- package/front_end/panels/security/SecurityPanel.test.ts +43 -3
- package/front_end/panels/security/SecurityPanel.ts +48 -50
- package/front_end/panels/security/SecurityPanelSidebar.ts +82 -23
- package/front_end/panels/security/SecurityPanelSidebarTreeElement.ts +21 -2
- package/front_end/panels/security/cookieControlsView.css +29 -4
- package/front_end/panels/security/cookieReportView.css +4 -3
- package/front_end/panels/security/security-meta.ts +20 -7
- package/front_end/panels/sensors/LocationsSettingsTab.ts +18 -19
- package/front_end/panels/sensors/SensorsView.ts +3 -7
- package/front_end/panels/sensors/sensors.css +1 -1
- package/front_end/panels/settings/AISettingsTab.test.ts +3 -4
- package/front_end/panels/settings/AISettingsTab.ts +47 -29
- package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +18 -29
- package/front_end/panels/settings/KeybindsSettingsTab.ts +11 -12
- package/front_end/panels/settings/SettingsScreen.ts +9 -9
- package/front_end/panels/settings/components/SyncSection.ts +9 -6
- package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +11 -16
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +14 -10
- package/front_end/panels/settings/emulation/utils/UserAgentMetadata.ts +5 -5
- package/front_end/panels/settings/settingsScreen.css +1 -1
- package/front_end/panels/snippets/ScriptSnippetFileSystem.test.ts +4 -2
- package/front_end/panels/snippets/SnippetsQuickOpen.ts +9 -3
- package/front_end/panels/sources/AddSourceMapURLDialog.ts +1 -4
- package/front_end/panels/sources/BreakpointEditDialog.test.ts +2 -3
- package/front_end/panels/sources/BreakpointEditDialog.ts +6 -11
- package/front_end/panels/sources/CSSPlugin.test.ts +3 -2
- package/front_end/panels/sources/CallStackSidebarPane.ts +3 -6
- package/front_end/panels/sources/CoveragePlugin.test.ts +4 -2
- package/front_end/panels/sources/CoveragePlugin.ts +4 -0
- package/front_end/panels/sources/DebuggerPausedMessage.ts +1 -1
- package/front_end/panels/sources/DebuggerPlugin.test.ts +4 -2
- package/front_end/panels/sources/DebuggerPlugin.ts +19 -15
- package/front_end/panels/sources/FilePathScoreFunction.ts +39 -19
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.test.ts +3 -3
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +2 -1
- package/front_end/panels/sources/GoToLineQuickOpen.ts +16 -22
- package/front_end/panels/sources/NavigatorView.test.ts +9 -7
- package/front_end/panels/sources/NavigatorView.ts +34 -31
- package/front_end/panels/sources/OpenFileQuickOpen.ts +2 -2
- package/front_end/panels/sources/OutlineQuickOpen.ts +9 -6
- package/front_end/panels/sources/Plugin.ts +1 -1
- package/front_end/panels/sources/ProfilePlugin.ts +5 -1
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +2 -5
- package/front_end/panels/sources/SnippetsPlugin.ts +2 -2
- package/front_end/panels/sources/SourcesNavigator.test.ts +40 -38
- package/front_end/panels/sources/SourcesNavigator.ts +45 -49
- package/front_end/panels/sources/SourcesPanel.ts +13 -10
- package/front_end/panels/sources/SourcesView.test.ts +11 -10
- package/front_end/panels/sources/SourcesView.ts +39 -28
- package/front_end/panels/sources/TabbedEditorContainer.test.ts +12 -19
- package/front_end/panels/sources/TabbedEditorContainer.ts +6 -6
- package/front_end/panels/sources/ThreadsSidebarPane.ts +1 -4
- package/front_end/panels/sources/UISourceCodeFrame.ts +7 -3
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +5 -9
- package/front_end/panels/sources/components/BreakpointsView.test.ts +19 -18
- package/front_end/panels/sources/components/BreakpointsView.ts +15 -11
- package/front_end/panels/sources/components/BreakpointsViewUtils.test.ts +44 -42
- package/front_end/panels/sources/components/HeadersView.test.ts +4 -2
- package/front_end/panels/sources/components/HeadersView.ts +18 -18
- package/front_end/panels/sources/components/breakpointsView.css +7 -7
- package/front_end/panels/sources/dialog.css +1 -1
- package/front_end/panels/sources/sources-meta.ts +12 -5
- package/front_end/panels/sources/sourcesPanel.css +5 -0
- package/front_end/panels/sources/sourcesView.css +0 -4
- package/front_end/panels/timeline/AnimationsTrackAppender.ts +0 -5
- package/front_end/panels/timeline/AnnotationHelpers.test.ts +4 -4
- package/front_end/panels/timeline/AnnotationHelpers.ts +8 -9
- package/front_end/panels/timeline/AppenderUtils.ts +16 -13
- package/front_end/panels/timeline/BenchmarkEvents.ts +1 -1
- package/front_end/panels/timeline/Breadcrumbs.test.ts +29 -29
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +41 -58
- package/front_end/panels/timeline/CountersGraph.ts +3 -2
- package/front_end/panels/timeline/EntriesFilter.test.ts +12 -63
- package/front_end/panels/timeline/EntriesFilter.ts +18 -33
- package/front_end/panels/timeline/EventsTimelineTreeView.ts +5 -5
- package/front_end/panels/timeline/ExtensionTrackAppender.ts +2 -2
- package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +22 -19
- package/front_end/panels/timeline/ModificationsManager.test.ts +18 -18
- package/front_end/panels/timeline/ModificationsManager.ts +8 -9
- package/front_end/panels/timeline/NetworkTrackAppender.ts +8 -10
- package/front_end/panels/timeline/README.md +30 -0
- package/front_end/panels/timeline/ServerTimingsTrackAppender.ts +0 -4
- package/front_end/panels/timeline/ThirdPartyTreeView.test.ts +68 -0
- package/front_end/panels/timeline/ThirdPartyTreeView.ts +300 -0
- package/front_end/panels/timeline/ThreadAppender.ts +6 -13
- package/front_end/panels/timeline/TimelineController.ts +3 -4
- package/front_end/panels/timeline/TimelineDetailsView.test.ts +36 -13
- package/front_end/panels/timeline/TimelineDetailsView.ts +91 -31
- package/front_end/panels/timeline/TimelineEventOverview.ts +27 -27
- package/front_end/panels/timeline/TimelineFilters.test.ts +5 -7
- package/front_end/panels/timeline/TimelineFilters.ts +2 -2
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.test.ts +4 -3
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +85 -64
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.test.ts +7 -8
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +18 -20
- package/front_end/panels/timeline/TimelineFlameChartView.test.ts +75 -21
- package/front_end/panels/timeline/TimelineFlameChartView.ts +259 -74
- package/front_end/panels/timeline/TimelineHistoryManager.ts +4 -3
- package/front_end/panels/timeline/TimelineLayersView.ts +1 -1
- package/front_end/panels/timeline/TimelineLoader.ts +5 -5
- package/front_end/panels/timeline/TimelineMiniMap.test.ts +1 -1
- package/front_end/panels/timeline/TimelineMiniMap.ts +8 -12
- package/front_end/panels/timeline/TimelinePaintProfilerView.ts +2 -5
- package/front_end/panels/timeline/TimelinePanel.test.ts +140 -0
- package/front_end/panels/timeline/TimelinePanel.ts +160 -164
- package/front_end/panels/timeline/TimelineSelection.test.ts +1 -1
- package/front_end/panels/timeline/TimelineSelection.ts +9 -9
- package/front_end/panels/timeline/TimelineSelectorStatsView.ts +148 -186
- package/front_end/panels/timeline/TimelineTreeView.test.ts +24 -22
- package/front_end/panels/timeline/TimelineTreeView.ts +153 -46
- package/front_end/panels/timeline/TimelineUIUtils.test.ts +130 -101
- package/front_end/panels/timeline/TimelineUIUtils.ts +108 -200
- package/front_end/panels/timeline/TimingsTrackAppender.ts +9 -9
- package/front_end/panels/timeline/components/Breadcrumbs.ts +3 -3
- package/front_end/panels/timeline/components/BreadcrumbsUI.test.ts +6 -6
- package/front_end/panels/timeline/components/BreadcrumbsUI.ts +10 -6
- package/front_end/panels/timeline/components/CPUThrottlingSelector.test.ts +12 -4
- package/front_end/panels/timeline/components/CPUThrottlingSelector.ts +117 -44
- package/front_end/panels/timeline/components/DetailsView.ts +2 -2
- package/front_end/panels/timeline/components/FieldSettingsDialog.ts +13 -9
- package/front_end/panels/timeline/components/IgnoreListSetting.test.ts +43 -45
- package/front_end/panels/timeline/components/IgnoreListSetting.ts +35 -13
- package/front_end/panels/timeline/components/InteractionBreakdown.ts +8 -4
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +58 -38
- package/front_end/panels/timeline/components/LiveMetricsView.test.ts +2 -2
- package/front_end/panels/timeline/components/LiveMetricsView.ts +36 -28
- package/front_end/panels/timeline/components/MetricCard.ts +25 -45
- package/front_end/panels/timeline/components/NetworkRequestDetails.test.ts +4 -1
- package/front_end/panels/timeline/components/NetworkRequestDetails.ts +47 -27
- package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +18 -15
- package/front_end/panels/timeline/components/NetworkThrottlingSelector.ts +9 -5
- package/front_end/panels/timeline/components/OriginMap.ts +10 -10
- package/front_end/panels/timeline/components/RelatedInsightChips.ts +9 -5
- package/front_end/panels/timeline/components/Sidebar.test.ts +86 -8
- package/front_end/panels/timeline/components/Sidebar.ts +19 -24
- package/front_end/panels/timeline/components/SidebarAnnotationsTab.test.ts +6 -6
- package/front_end/panels/timeline/components/SidebarAnnotationsTab.ts +23 -15
- package/front_end/panels/timeline/components/SidebarInsightsTab.ts +30 -13
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.test.ts +29 -7
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +238 -48
- package/front_end/panels/timeline/components/TimelineSummary.test.ts +4 -2
- package/front_end/panels/timeline/components/TimelineSummary.ts +40 -36
- package/front_end/panels/timeline/components/Utils.test.ts +2 -2
- package/front_end/panels/timeline/components/Utils.ts +52 -5
- package/front_end/panels/timeline/components/fieldSettingsDialog.css +7 -4
- package/front_end/panels/timeline/components/ignoreListSetting.css +1 -2
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.test.ts +8 -6
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +47 -20
- package/front_end/panels/timeline/components/insights/CLSCulprits.ts +11 -101
- package/front_end/panels/timeline/components/insights/Checklist.ts +108 -0
- package/front_end/panels/timeline/components/insights/DOMSize.ts +83 -18
- package/front_end/panels/timeline/components/insights/DocumentLatency.ts +18 -101
- package/front_end/panels/timeline/components/insights/EventRef.ts +12 -8
- package/front_end/panels/timeline/components/insights/FontDisplay.ts +9 -18
- package/front_end/panels/timeline/components/insights/ForcedReflow.ts +105 -0
- package/front_end/panels/timeline/components/insights/ImageDelivery.ts +8 -26
- package/front_end/panels/timeline/components/insights/InteractionToNextPaint.ts +10 -40
- package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +25 -94
- package/front_end/panels/timeline/components/insights/LCPPhases.ts +17 -53
- package/front_end/panels/timeline/components/insights/LongCriticalNetworkTree.ts +53 -0
- package/front_end/panels/timeline/components/insights/NodeLink.ts +42 -27
- package/front_end/panels/timeline/components/insights/README.md +6 -8
- package/front_end/panels/timeline/components/insights/RenderBlocking.ts +9 -25
- package/front_end/panels/timeline/components/insights/SidebarInsight.ts +4 -4
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +15 -44
- package/front_end/panels/timeline/components/insights/Table.ts +21 -14
- package/front_end/panels/timeline/components/insights/ThirdParties.ts +11 -25
- package/front_end/panels/timeline/components/insights/Viewport.ts +16 -11
- package/front_end/panels/timeline/components/insights/baseInsightComponent.css +3 -39
- package/front_end/panels/timeline/components/insights/checklist.css +33 -0
- package/front_end/panels/timeline/components/insights/insights.ts +6 -0
- package/front_end/panels/timeline/components/insights/table.css +1 -0
- package/front_end/panels/timeline/components/layoutShiftDetails.css +1 -0
- package/front_end/panels/timeline/components/liveMetricsView.css +1 -1
- package/front_end/panels/timeline/components/sidebarAnnotationsTab.css +1 -1
- package/front_end/panels/timeline/components/sidebarSingleInsightSet.css +54 -3
- package/front_end/panels/timeline/components/timelineSummary.css +14 -7
- package/front_end/panels/timeline/docs/flame_chart_migration.md +1 -3
- package/front_end/panels/timeline/docs/sync_tracks.md +1 -1
- package/front_end/panels/timeline/enable-easter-egg.js +1 -0
- package/front_end/panels/timeline/fixtures/traces/README.md +18 -2
- package/front_end/panels/timeline/fixtures/traces/crux.json.gz +0 -0
- package/front_end/panels/timeline/fixtures/traces/dom-size-overlap.json.gz +0 -0
- package/front_end/panels/timeline/fixtures/traces/dom-size.json.gz +0 -0
- package/front_end/panels/timeline/fixtures/traces/forced-reflow.json.gz +0 -0
- package/front_end/panels/timeline/fixtures/traces/lcp-fetchpriority-high.json.gz +0 -0
- package/front_end/panels/timeline/fixtures/traces/lcp-late-paint-event.json.gz +0 -0
- package/front_end/panels/timeline/fixtures/traces/multi-frame-dom-stats.json.gz +0 -0
- package/front_end/panels/timeline/fixtures/traces/timings-track.json.gz +0 -0
- package/front_end/panels/timeline/fixtures/traces/web-dev-initial-url.json.gz +0 -0
- package/front_end/panels/timeline/fixtures/traces/web-dev-screenshot-source-ids.json.gz +0 -0
- package/front_end/panels/timeline/overlays/OverlaysImpl.test.ts +42 -7
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +125 -55
- package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +37 -35
- package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +9 -6
- package/front_end/panels/timeline/overlays/components/TimeRangeOverlay.ts +10 -7
- package/front_end/panels/timeline/overlays/components/TimespanBreakdownOverlay.ts +15 -11
- package/front_end/panels/timeline/timeline.ts +2 -0
- package/front_end/panels/timeline/timelineFlameChartView.css +2 -3
- package/front_end/panels/timeline/timelineFlamechartPopover.css +3 -0
- package/front_end/panels/timeline/timelinePanel.css +224 -21
- package/front_end/panels/timeline/timelineSelectorStatsView.css +9 -0
- package/front_end/panels/timeline/timelineStatusDialog.css +23 -11
- package/front_end/panels/timeline/track_appenders/AnimationsTrackAppender.test.ts +3 -4
- package/front_end/panels/timeline/track_appenders/AppenderUtils.test.ts +34 -35
- package/front_end/panels/timeline/track_appenders/ExtensionTrackAppender.test.ts +6 -7
- package/front_end/panels/timeline/track_appenders/GPUTrackAppender.test.ts +2 -3
- package/front_end/panels/timeline/track_appenders/InteractionsTrackAppender.test.ts +3 -4
- package/front_end/panels/timeline/track_appenders/LayoutShiftsTrackAppender.test.ts +9 -7
- package/front_end/panels/timeline/track_appenders/NetworkTrackAppender.test.ts +2 -3
- package/front_end/panels/timeline/track_appenders/ServerTimingsTrackAppender.test.ts +5 -9
- package/front_end/panels/timeline/track_appenders/ThreadAppender.test.ts +8 -7
- package/front_end/panels/timeline/track_appenders/TimingsTrackAppender.test.ts +7 -8
- package/front_end/panels/timeline/utils/AICallTree.test.ts +112 -11
- package/front_end/panels/timeline/utils/AICallTree.ts +57 -12
- package/front_end/panels/timeline/utils/EntityMapper.test.ts +1 -1
- package/front_end/panels/timeline/utils/EntityMapper.ts +1 -1
- package/front_end/panels/timeline/utils/EntryName.test.ts +15 -0
- package/front_end/panels/timeline/utils/EntryName.ts +13 -1
- package/front_end/panels/timeline/utils/EntryStyles.ts +11 -5
- package/front_end/panels/timeline/utils/Helpers.ts +15 -9
- package/front_end/panels/timeline/utils/IgnoreList.test.ts +5 -5
- package/front_end/panels/timeline/utils/ImageCache.test.ts +3 -2
- package/front_end/panels/timeline/utils/ImageCache.ts +12 -7
- package/front_end/panels/timeline/utils/InsightAIContext.ts +5 -0
- package/front_end/panels/timeline/utils/SourceMapsResolver.test.ts +6 -5
- package/front_end/panels/timeline/utils/SourceMapsResolver.ts +5 -5
- package/front_end/panels/timeline/utils/utils.ts +2 -2
- package/front_end/panels/utils/utils.test.ts +26 -32
- package/front_end/panels/web_audio/AudioContextContentBuilder.ts +1 -1
- package/front_end/panels/web_audio/AudioContextSelector.ts +4 -4
- package/front_end/panels/web_audio/WebAudioModel.ts +17 -17
- package/front_end/panels/web_audio/WebAudioView.ts +8 -4
- package/front_end/panels/web_audio/graph_visualizer/GraphView.ts +3 -3
- package/front_end/panels/webauthn/WebauthnPane.ts +13 -12
- package/front_end/panels/webauthn/webauthnPane.css +1 -1
- package/front_end/panels/whats_new/ReleaseNote.test.ts +4 -3
- package/front_end/panels/whats_new/ReleaseNoteText.ts +10 -10
- package/front_end/panels/whats_new/ReleaseNoteView.test.ts +6 -5
- package/front_end/panels/whats_new/ReleaseNoteView.ts +34 -37
- package/front_end/panels/whats_new/WhatsNewImpl.ts +2 -2
- package/front_end/panels/whats_new/releaseNoteView.css +9 -4
- package/front_end/panels/whats_new/resources/WNDT.md +6 -6
- package/front_end/panels/whats_new/whats_new-meta.ts +0 -1
- package/front_end/services/puppeteer/PuppeteerConnection.ts +0 -1
- package/front_end/services/trace_bounds/TraceBounds.test.ts +20 -20
- package/front_end/services/trace_bounds/TraceBounds.ts +10 -12
- package/front_end/testing/AiAssistanceHelpers.ts +142 -0
- package/front_end/testing/DOMHelpers.ts +31 -14
- package/front_end/testing/DataGridHelpers.ts +7 -76
- package/front_end/testing/EnvironmentHelpers.ts +27 -7
- package/front_end/testing/ExpectStubCall.ts +2 -3
- package/front_end/testing/LanguagePluginHelpers.ts +4 -2
- package/front_end/testing/MockConnection.ts +11 -16
- package/front_end/testing/MockExecutionContext.ts +4 -4
- package/front_end/testing/MutationHelpers.test.ts +5 -7
- package/front_end/testing/MutationHelpers.ts +1 -1
- package/front_end/testing/OverridesHelpers.ts +4 -2
- package/front_end/testing/RealConnection.ts +1 -1
- package/front_end/testing/ResourceTreeHelpers.ts +4 -2
- package/front_end/testing/StyleHelpers.ts +90 -0
- package/front_end/testing/TraceHelpers.ts +36 -38
- package/front_end/testing/TrackAsyncOperations.ts +15 -15
- package/front_end/testing/UISourceCodeHelpers.ts +5 -3
- package/front_end/testing/test_setup.ts +4 -3
- package/front_end/third_party/codemirror.next/package.json +1 -1
- package/front_end/third_party/i18n/localized-string-set.ts +2 -2
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +1 -1
- 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 +13 -14
- 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 +4 -4
- 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 +6 -6
- 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 +5 -5
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.js +4 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +13 -13
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js +11 -11
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +7 -7
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/CDPSession.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/CDPSession.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.d.ts +4 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Connection.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ExposedFunction.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ExposedFunction.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ExposedFunction.js +4 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ExposedFunction.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 +5 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +2 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Realm.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Realm.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +3 -3
- 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 +5 -12
- 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 +1 -5
- 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/CDPSession.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CDPSession.js +2 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CDPSession.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js +7 -7
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExecutionContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExecutionContext.js +2 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ExecutionContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.js +0 -5
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPRequest.js +1 -1
- 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.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/HTTPResponse.js +1 -3
- 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/IsolatedWorld.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/IsolatedWorld.js.map +1 -1
- 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 -7
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManageEvents.d.ts +34 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManageEvents.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManageEvents.js +8 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManageEvents.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.d.ts +14 -33
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.js +308 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts +0 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js +0 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +0 -5
- 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/PDFOptions.d.ts +15 -12
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/PDFOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/PDFOptions.js +47 -11
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/PDFOptions.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 +2 -2
- 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/util.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/util.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/util.js.map +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.d.ts.map +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/generated/version.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js +5 -9
- 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/node/FirefoxLauncher.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/FirefoxLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/FirefoxLauncher.js +4 -18
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/FirefoxLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts +2 -16
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +36 -63
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +411 -542
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +1 -1
- 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 +13 -14
- 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 +4 -4
- 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 +6 -6
- 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 +5 -5
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.js +4 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +13 -13
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js +11 -11
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +7 -7
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/CDPSession.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/CDPSession.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.d.ts +4 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Connection.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ExposedFunction.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ExposedFunction.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ExposedFunction.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ExposedFunction.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 +6 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +2 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Realm.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Realm.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Realm.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Realm.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +3 -3
- 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 +5 -12
- 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 +1 -5
- 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/CDPSession.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CDPSession.js +2 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CDPSession.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js +7 -7
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExecutionContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExecutionContext.js +2 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ExecutionContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.js +0 -5
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPRequest.js +1 -1
- 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.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/HTTPResponse.js +1 -3
- 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/IsolatedWorld.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/IsolatedWorld.js.map +1 -1
- 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 -7
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManageEvents.d.ts +34 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManageEvents.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManageEvents.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManageEvents.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.d.ts +14 -33
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.js +306 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts +0 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js +0 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +0 -5
- 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/PDFOptions.d.ts +15 -12
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.js +47 -11
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/PDFOptions.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 +2 -2
- 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/util.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/util.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/util.js.map +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.d.ts.map +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/generated/version.js.map +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 +5 -9
- 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/node/FirefoxLauncher.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/FirefoxLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/FirefoxLauncher.js +4 -18
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/FirefoxLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts +2 -16
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +36 -63
- package/front_end/third_party/puppeteer/package/package.json +14 -8
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +27 -27
- package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +6 -6
- package/front_end/third_party/puppeteer/package/src/api/Frame.ts +5 -5
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +13 -13
- package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +7 -7
- package/front_end/third_party/puppeteer/package/src/bidi/CDPSession.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/bidi/Connection.ts +5 -5
- package/front_end/third_party/puppeteer/package/src/bidi/ExposedFunction.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +12 -4
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +2 -1
- package/front_end/third_party/puppeteer/package/src/bidi/Realm.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/bidi/core/Realm.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +8 -21
- package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +0 -6
- package/front_end/third_party/puppeteer/package/src/cdp/CDPSession.ts +2 -1
- package/front_end/third_party/puppeteer/package/src/cdp/DeviceRequestPrompt.ts +7 -7
- package/front_end/third_party/puppeteer/package/src/cdp/ExecutionContext.ts +2 -3
- package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +0 -7
- package/front_end/third_party/puppeteer/package/src/cdp/FrameManager.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/HTTPRequest.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/HTTPResponse.ts +1 -3
- package/front_end/third_party/puppeteer/package/src/cdp/IsolatedWorld.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +4 -10
- package/front_end/third_party/puppeteer/package/src/cdp/TargetManageEvents.ts +38 -0
- package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +417 -35
- package/front_end/third_party/puppeteer/package/src/cdp/cdp.ts +0 -2
- package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +0 -6
- package/front_end/third_party/puppeteer/package/src/common/PDFOptions.ts +63 -25
- package/front_end/third_party/puppeteer/package/src/common/WaitTask.ts +2 -6
- package/front_end/third_party/puppeteer/package/src/common/util.ts +3 -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 +5 -14
- package/front_end/third_party/puppeteer/package/src/node/FirefoxLauncher.ts +3 -21
- package/front_end/third_party/puppeteer/package/src/node/LaunchOptions.ts +2 -19
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +1 -2
- package/front_end/third_party/third-party-web/README.chromium +2 -2
- package/front_end/third_party/third-party-web/lib/nostats-subset.js +1 -1
- package/front_end/third_party/third-party-web/package/README.md +586 -573
- package/front_end/third_party/third-party-web/package/dist/entities-httparchive-nostats.json +1 -1
- package/front_end/third_party/third-party-web/package/dist/entities-httparchive.json +1 -1
- package/front_end/third_party/third-party-web/package/dist/entities-nostats.json +1 -1
- package/front_end/third_party/third-party-web/package/dist/entities.json +1 -1
- package/front_end/third_party/third-party-web/package/facades.md +46 -0
- package/front_end/third_party/third-party-web/package/lib/__snapshots__/index.test.js.snap +1 -1
- package/front_end/third_party/third-party-web/package/lib/index.test.js +6 -6
- package/front_end/third_party/third-party-web/package/lib/markdown/faqs.partial.md +36 -0
- package/front_end/third_party/third-party-web/package/lib/markdown/goals.partial.md +9 -0
- package/front_end/third_party/third-party-web/package/lib/markdown/methodology.partial.md +5 -0
- package/front_end/third_party/third-party-web/package/lib/markdown/template.md +151 -0
- package/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-02-01.md +1 -0
- package/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-03-01.md +1 -0
- package/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-06.md +1 -0
- package/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-13.md +14 -0
- package/front_end/third_party/third-party-web/package/lib/markdown/updates/2021-01-01.md +1 -0
- package/front_end/third_party/third-party-web/package/lib/markdown/updates/2024-07-01.md +3 -0
- package/front_end/third_party/third-party-web/package/nostats-subset.d.ts +1 -0
- package/front_end/third_party/third-party-web/package/package.json +5 -4
- package/front_end/third_party/third-party-web/package.json +2 -1
- package/front_end/third_party/third-party-web/rebuild.sh +8 -0
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +9 -5
- package/front_end/ui/components/adorners/Adorner.ts +15 -17
- package/front_end/ui/components/buttons/Button.test.ts +26 -6
- package/front_end/ui/components/buttons/Button.ts +16 -34
- package/front_end/ui/components/buttons/button.css +8 -18
- package/front_end/ui/components/buttons/buttons.ts +2 -0
- package/front_end/ui/components/cards/Card.test.ts +81 -72
- package/front_end/ui/components/cards/Card.ts +85 -54
- package/front_end/ui/components/cards/card.css +40 -36
- package/front_end/ui/components/chrome_link/ChromeLink.test.ts +6 -6
- package/front_end/ui/components/chrome_link/ChromeLink.ts +4 -6
- package/front_end/ui/components/code_highlighter/code_highlighter.ts +2 -2
- package/front_end/ui/components/dialogs/ButtonDialog.ts +6 -4
- package/front_end/ui/components/dialogs/Dialog.ts +18 -13
- package/front_end/ui/components/dialogs/ShortcutDialog.ts +7 -5
- package/front_end/ui/components/dialogs/dialog.css +6 -1
- package/front_end/ui/components/dialogs/shortcutDialog.css +1 -22
- package/front_end/ui/components/diff_view/DiffView.ts +20 -14
- package/front_end/ui/components/docs/breadcrumbs_perf/initial-breadcrumb-perf.ts +4 -4
- package/front_end/ui/components/docs/breadcrumbs_perf/nested-breadcrumbs-perf.ts +8 -8
- package/front_end/ui/components/docs/building-ui-documentation/StylingComponents.md +5 -1
- package/front_end/ui/components/docs/{data_grid → combo_box}/basic.html +2 -11
- package/front_end/ui/components/docs/combo_box/basic.ts +49 -0
- package/front_end/ui/components/docs/create_breadcrumbs.ts +4 -4
- package/front_end/ui/components/docs/dialog/basic.ts +1 -1
- package/front_end/ui/components/docs/dialog/button_dialog.ts +1 -1
- package/front_end/ui/components/docs/dialog/shortcut_dialog.ts +1 -1
- package/front_end/ui/components/docs/elements_breadcrumbs/helpers.ts +1 -1
- package/front_end/ui/components/docs/expandable_list/basic.ts +2 -2
- package/front_end/ui/components/docs/icon_component/basic.ts +8 -34
- package/front_end/ui/components/docs/linkifier/simple-url.ts +1 -1
- package/front_end/ui/components/docs/panel_introduction_steps/basic.ts +3 -3
- package/front_end/ui/components/docs/performance_panel/flamechart.ts +8 -8
- package/front_end/ui/components/docs/performance_panel/network_request_details.ts +2 -1
- package/front_end/ui/components/docs/performance_panel/overview.ts +2 -2
- package/front_end/ui/components/docs/performance_panel/track_example.ts +4 -4
- package/front_end/ui/components/docs/recorder_control_button/basic.ts +1 -1
- package/front_end/ui/components/docs/recorder_create_recording_view/basic.ts +1 -1
- package/front_end/ui/components/docs/recorder_recording_list_view/basic.ts +1 -1
- package/front_end/ui/components/docs/recorder_recording_view/basic.ts +1 -1
- package/front_end/ui/components/docs/recorder_select_button/basic.ts +4 -4
- package/front_end/ui/components/docs/recorder_split_view/basic.ts +1 -1
- package/front_end/ui/components/docs/report/basic.ts +3 -3
- package/front_end/ui/components/docs/theme_colors/basic.ts +4 -4
- package/front_end/ui/components/docs/{data_grid_controller → tooltip}/basic.html +2 -12
- package/front_end/ui/components/docs/tooltip/basic.ts +64 -0
- package/front_end/ui/components/docs/tree_outline/custom-renderers.ts +4 -4
- package/front_end/ui/components/expandable_list/ExpandableList.test.ts +1 -3
- package/front_end/ui/components/expandable_list/ExpandableList.ts +11 -7
- package/front_end/ui/components/floating_button/FloatingButton.ts +8 -4
- package/front_end/ui/components/helpers/directives.ts +7 -7
- package/front_end/ui/components/helpers/helpers.test.ts +3 -5
- package/front_end/ui/components/highlighting/HighlightManager.ts +5 -1
- package/front_end/ui/components/icon_button/FileSourceIcon.ts +5 -6
- package/front_end/ui/components/icon_button/Icon.ts +5 -19
- package/front_end/ui/components/icon_button/IconButton.ts +9 -12
- package/front_end/ui/components/icon_button/iconButton.css +13 -9
- package/front_end/ui/components/input/input.ts +10 -2
- package/front_end/ui/components/issue_counter/IssueCounter.ts +3 -8
- package/front_end/ui/components/issue_counter/IssueLinkIcon.test.ts +1 -4
- package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +9 -5
- package/front_end/ui/components/legacy_wrapper/LegacyWrapper.ts +1 -1
- package/front_end/ui/components/linkifier/LinkifierImpl.test.ts +6 -4
- package/front_end/ui/components/linkifier/LinkifierImpl.ts +21 -6
- package/front_end/ui/components/linkifier/LinkifierUtils.ts +1 -1
- package/front_end/ui/components/markdown_view/CodeBlock.test.ts +12 -22
- package/front_end/ui/components/markdown_view/CodeBlock.ts +14 -15
- package/front_end/ui/components/markdown_view/MarkdownImage.ts +10 -6
- package/front_end/ui/components/markdown_view/MarkdownLink.test.ts +4 -2
- package/front_end/ui/components/markdown_view/MarkdownLink.ts +6 -4
- package/front_end/ui/components/markdown_view/MarkdownView.test.ts +19 -17
- package/front_end/ui/components/markdown_view/MarkdownView.ts +81 -35
- package/front_end/ui/components/markdown_view/markdownView.css +15 -0
- package/front_end/ui/components/menus/Menu.ts +39 -9
- package/front_end/ui/components/menus/README.md +10 -2
- package/front_end/ui/components/menus/SelectMenu.test.ts +1 -3
- package/front_end/ui/components/menus/SelectMenu.ts +20 -12
- package/front_end/ui/components/menus/menu.css +1 -1
- package/front_end/ui/components/menus/menuGroup.css +0 -1
- package/front_end/ui/components/menus/menuItem.css +11 -3
- package/front_end/ui/components/node_text/NodeText.ts +9 -5
- package/front_end/ui/components/panel_feedback/FeedbackButton.test.ts +5 -3
- package/front_end/ui/components/panel_feedback/FeedbackButton.ts +3 -7
- package/front_end/ui/components/panel_feedback/PanelFeedback.test.ts +5 -3
- package/front_end/ui/components/panel_feedback/PanelFeedback.ts +6 -4
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +5 -3
- package/front_end/ui/components/panel_introduction_steps/PanelIntroductionSteps.ts +7 -4
- package/front_end/ui/components/report_view/ReportView.test.ts +2 -4
- package/front_end/ui/components/report_view/ReportView.ts +37 -20
- package/front_end/ui/components/request_link_icon/RequestLinkIcon.test.ts +1 -4
- package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +11 -7
- package/front_end/ui/components/settings/SettingCheckbox.ts +10 -6
- package/front_end/ui/components/settings/SettingDeprecationWarning.ts +9 -5
- package/front_end/ui/components/spinners/Spinner.ts +6 -4
- package/front_end/ui/components/split_view/SplitView.ts +2 -4
- package/front_end/ui/components/srgb_overlay/SrgbOverlay.ts +11 -9
- package/front_end/ui/components/suggestion_input/SuggestionInput.ts +16 -9
- package/front_end/ui/components/survey_link/SurveyLink.ts +4 -10
- package/front_end/ui/components/switch/SwitchImpl.test.ts +0 -1
- package/front_end/ui/components/switch/SwitchImpl.ts +7 -5
- package/front_end/ui/components/switch/switch.css +18 -0
- package/front_end/ui/components/text_editor/TextEditor.test.ts +5 -3
- package/front_end/ui/components/text_editor/TextEditor.ts +2 -4
- package/front_end/ui/components/text_prompt/TextPrompt.ts +4 -9
- package/front_end/ui/components/text_prompt/textPrompt.css +6 -1
- package/front_end/ui/components/tooltip/Tooltip.test.ts +55 -0
- package/front_end/ui/components/tooltip/Tooltip.ts +146 -0
- package/front_end/ui/components/tooltip/tooltip.css +41 -0
- package/front_end/ui/components/tooltip/tooltips.ts +7 -0
- package/front_end/ui/components/tree_outline/TreeOutline.test.ts +2 -4
- package/front_end/ui/components/tree_outline/TreeOutline.ts +15 -14
- package/front_end/ui/components/tree_outline/TreeOutlineUtils.ts +8 -8
- package/front_end/ui/components/tree_outline/treeOutline.css +5 -3
- package/front_end/ui/legacy/ARIAUtils.ts +5 -5
- package/front_end/ui/legacy/ActionRegistration.ts +4 -4
- package/front_end/ui/legacy/Context.ts +3 -3
- package/front_end/ui/legacy/ContextMenu.ts +8 -2
- package/front_end/ui/legacy/Dialog.ts +4 -4
- package/front_end/ui/legacy/DockController.ts +5 -5
- package/front_end/ui/legacy/DropTarget.ts +1 -1
- package/front_end/ui/legacy/EmptyWidget.ts +16 -12
- package/front_end/ui/legacy/FilterBar.test.ts +3 -3
- package/front_end/ui/legacy/FilterBar.ts +29 -12
- package/front_end/ui/legacy/Geometry.ts +3 -11
- package/front_end/ui/legacy/GlassPane.ts +3 -7
- package/front_end/ui/legacy/Infobar.ts +5 -13
- package/front_end/ui/legacy/InspectorView.ts +15 -11
- package/front_end/ui/legacy/ListModel.ts +3 -3
- package/front_end/ui/legacy/ListWidget.ts +24 -15
- package/front_end/ui/legacy/PopoverHelper.ts +1 -1
- package/front_end/ui/legacy/ProgressIndicator.ts +8 -5
- package/front_end/ui/legacy/RemoteDebuggingTerminatedScreen.ts +1 -1
- package/front_end/ui/legacy/ReportView.ts +5 -5
- package/front_end/ui/legacy/ResizerWidget.ts +6 -6
- package/front_end/ui/legacy/RootView.ts +1 -1
- package/front_end/ui/legacy/SearchableView.ts +7 -5
- package/front_end/ui/legacy/SettingsUI.ts +8 -17
- package/front_end/ui/legacy/SoftContextMenu.ts +1 -1
- package/front_end/ui/legacy/SoftDropDown.ts +2 -2
- package/front_end/ui/legacy/SplitWidget.test.ts +1 -2
- package/front_end/ui/legacy/SplitWidget.ts +10 -5
- package/front_end/ui/legacy/SuggestBox.ts +1 -1
- package/front_end/ui/legacy/TabbedPane.ts +36 -16
- package/front_end/ui/legacy/TargetCrashedScreen.ts +1 -1
- package/front_end/ui/legacy/TextPrompt.ts +4 -4
- package/front_end/ui/legacy/ThrottledWidget.ts +7 -2
- package/front_end/ui/legacy/Toolbar.test.ts +100 -17
- package/front_end/ui/legacy/Toolbar.ts +141 -178
- package/front_end/ui/legacy/Treeoutline.ts +12 -14
- package/front_end/ui/legacy/UIUtils.test.ts +13 -17
- package/front_end/ui/legacy/UIUtils.ts +21 -36
- package/front_end/ui/legacy/ViewManager.ts +14 -11
- package/front_end/ui/legacy/Widget.test.ts +39 -29
- package/front_end/ui/legacy/Widget.ts +83 -30
- package/front_end/ui/legacy/XLink.test.ts +4 -6
- package/front_end/ui/legacy/XLink.ts +1 -3
- package/front_end/ui/legacy/ZoomManager.ts +3 -3
- package/front_end/ui/legacy/components/color_picker/ColorFormatSpec.ts +5 -5
- package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +7 -5
- package/front_end/ui/legacy/components/color_picker/ContrastInfo.ts +3 -3
- package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +5 -5
- package/front_end/ui/legacy/components/color_picker/Spectrum.ts +22 -18
- package/front_end/ui/legacy/components/color_picker/spectrum.css +3 -3
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +2 -5
- package/front_end/ui/legacy/components/data_grid/DataGrid.test.ts +1 -2
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +88 -38
- package/front_end/ui/legacy/components/data_grid/DataGridElement.test.ts +269 -0
- package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +470 -0
- package/front_end/ui/legacy/components/data_grid/SortableDataGrid.ts +6 -0
- package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +110 -15
- package/front_end/ui/legacy/components/data_grid/dataGrid.css +4 -2
- package/front_end/ui/legacy/components/data_grid/data_grid.ts +2 -2
- package/front_end/ui/legacy/components/inline_editor/AnimationTimingUI.ts +15 -15
- package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +4 -4
- package/front_end/ui/legacy/components/inline_editor/CSSAngle.ts +9 -5
- package/front_end/ui/legacy/components/inline_editor/CSSAngleEditor.ts +10 -6
- package/front_end/ui/legacy/components/inline_editor/CSSAngleSwatch.ts +8 -4
- package/front_end/ui/legacy/components/inline_editor/CSSLinearEasingModel.ts +9 -9
- package/front_end/ui/legacy/components/inline_editor/CSSShadowEditor.ts +5 -4
- package/front_end/ui/legacy/components/inline_editor/ColorMixSwatch.ts +7 -5
- package/front_end/ui/legacy/components/inline_editor/ColorSwatch.ts +10 -6
- package/front_end/ui/legacy/components/inline_editor/FontEditor.ts +8 -9
- package/front_end/ui/legacy/components/inline_editor/FontEditorUtils.ts +0 -13
- package/front_end/ui/legacy/components/inline_editor/LinkSwatch.ts +11 -7
- package/front_end/ui/legacy/components/inline_editor/SwatchPopoverHelper.ts +4 -4
- package/front_end/ui/legacy/components/inline_editor/Swatches.ts +11 -13
- package/front_end/ui/legacy/components/inline_editor/fontEditor.css +1 -1
- package/front_end/ui/legacy/components/inline_editor/inline_editor.ts +0 -2
- package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +1 -2
- package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +1 -1
- package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +3 -3
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +3 -3
- package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +3 -4
- package/front_end/ui/legacy/components/perf_ui/BrickBreaker.ts +7 -7
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +23 -15
- package/front_end/ui/legacy/components/perf_ui/FilmStripView.test.ts +26 -9
- package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +19 -17
- package/front_end/ui/legacy/components/perf_ui/FlameChart.test.ts +2 -2
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +158 -147
- package/front_end/ui/legacy/components/perf_ui/LineLevelProfile.ts +3 -3
- package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +7 -13
- package/front_end/ui/legacy/components/perf_ui/PieChart.ts +6 -4
- package/front_end/ui/legacy/components/perf_ui/TimelineGrid.test.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +1 -14
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.test.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.ts +17 -17
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +32 -37
- package/front_end/ui/legacy/components/perf_ui/overviewGrid.css +1 -1
- package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +31 -28
- package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +9 -7
- package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +8 -12
- package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +39 -54
- package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.test.ts +8 -7
- package/front_end/ui/legacy/components/source_frame/FontView.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/JSONView.ts +2 -2
- package/front_end/ui/legacy/components/source_frame/PreviewFactory.ts +7 -3
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.test.ts +4 -2
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +6 -4
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +5 -5
- package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/XMLView.ts +3 -3
- package/front_end/ui/legacy/components/source_frame/resourceSourceFrame.css +1 -1
- package/front_end/ui/legacy/components/utils/ImagePreview.ts +4 -7
- package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +1 -1
- package/front_end/ui/legacy/components/utils/Linkifier.test.ts +7 -7
- package/front_end/ui/legacy/components/utils/Linkifier.ts +6 -7
- package/front_end/ui/legacy/components/utils/TargetDetachedDialog.ts +3 -12
- package/front_end/ui/legacy/dialog.css +2 -1
- package/front_end/ui/legacy/emptyWidget.css +0 -21
- package/front_end/ui/legacy/filter.css +3 -1
- package/front_end/ui/legacy/infobar.css +14 -2
- package/front_end/ui/legacy/inspectorCommon.css +635 -144
- package/front_end/ui/legacy/inspectorViewTabbedPane.css +1 -1
- package/front_end/ui/legacy/reportView.css +1 -1
- package/front_end/ui/legacy/searchableView.css +1 -1
- package/front_end/ui/legacy/softContextMenu.css +1 -1
- package/front_end/ui/legacy/tabbedPane.css +118 -21
- package/front_end/ui/legacy/textPrompt.css +1 -0
- package/front_end/ui/legacy/theme_support/ThemeSupport.ts +0 -5
- package/front_end/ui/legacy/toolbar.css +11 -543
- package/front_end/ui/legacy/treeoutline.css +7 -7
- package/front_end/ui/legacy/viewContainers.css +3 -3
- package/front_end/ui/{lit-html → lit}/i18n-template.test.ts +5 -7
- package/front_end/ui/visual_logging/Debugging.ts +58 -33
- package/front_end/ui/visual_logging/KnownContextValues.ts +65 -10
- package/front_end/ui/visual_logging/visual_logging.ts +2 -2
- package/inspector_overlay/common.ts +0 -1
- package/inspector_overlay/css_grid_label_helpers.ts +1 -1
- package/inspector_overlay/drag_resize_handler.ts +4 -4
- package/inspector_overlay/highlight_common.ts +0 -1
- package/inspector_overlay/main.ts +12 -13
- package/inspector_overlay/resources.grd +1 -1
- package/inspector_overlay/testing/InspectorOverlayHelpers.ts +3 -3
- package/inspector_overlay/tool_highlight.css +2 -2
- package/inspector_overlay/tool_highlight.ts +0 -1
- package/inspector_overlay/tool_persistent.ts +7 -13
- package/inspector_overlay/tool_screenshot.ts +6 -6
- package/inspector_overlay/tool_source_order.ts +1 -2
- package/package.json +21 -24
- package/scripts/add_icon_paths.py +71 -0
- package/scripts/ai_assistance/README.md +4 -4
- package/scripts/ai_assistance/auto-run-helpers.js +82 -0
- package/scripts/ai_assistance/auto-run.js +349 -113
- package/scripts/ai_assistance/auto-run.test.js +88 -0
- package/scripts/ai_assistance/to_tsv.mjs +2 -3
- package/scripts/ai_assistance/tsconfig.json +15 -0
- package/scripts/ai_assistance/types.d.ts +2 -1
- package/scripts/build/compress_files.js +2 -2
- package/scripts/build/cross_reference_ninja_and_tsc.js +27 -16
- package/scripts/build/devtools_plugin.js +2 -2
- package/scripts/build/esbuild.js +2 -1
- package/scripts/build/generate_css_js_files.js +13 -57
- package/scripts/build/generate_deprecations.py +0 -2
- package/scripts/build/generate_devtools_grd.py +1 -2
- package/scripts/build/generate_html_entrypoint.js +1 -0
- package/scripts/build/generate_supported_css.py +1 -1
- package/scripts/build/ninja/copy-file.js +6 -4
- package/scripts/build/ninja/copy-files.js +1 -0
- package/scripts/build/ninja/generate-declaration.js +1 -0
- package/scripts/build/ninja/generate-tsconfig.js +0 -1
- package/scripts/build/ninja/generate_css.gni +1 -16
- package/scripts/build/ninja/minify-json-files.js +1 -0
- package/scripts/build/rollup.config.mjs +1 -1
- package/scripts/build/tests/generate_css_js_files_test.js +5 -56
- package/scripts/build/typescript/ts_library.py +24 -1
- package/scripts/check_esbuild_versions.js +1 -1
- package/scripts/check_experiments.js +10 -7
- package/scripts/component_server/server.js +4 -7
- package/scripts/devtools_paths.js +6 -6
- package/scripts/eslint_rules/README.md +5 -1
- package/scripts/eslint_rules/lib/canvas-context-tracking.js +3 -0
- package/scripts/eslint_rules/lib/check-css-import.js +7 -3
- package/scripts/eslint_rules/lib/check-enumerated-histograms.js +3 -0
- package/scripts/eslint_rules/lib/check-license-header.js +7 -2
- package/scripts/eslint_rules/lib/check-test-definitions.js +5 -1
- package/scripts/eslint_rules/lib/check-was-shown-methods.js +3 -0
- package/scripts/eslint_rules/lib/enforce-bound-render-for-schedule-render.js +3 -0
- package/scripts/eslint_rules/lib/enforce-custom-event-names.js +3 -0
- package/scripts/eslint_rules/lib/enforce-default-import-name.js +5 -1
- package/scripts/eslint_rules/lib/enforce-optional-properties-last.js +4 -1
- package/scripts/eslint_rules/lib/es-modules-import.js +26 -1
- package/scripts/eslint_rules/lib/html-tagged-template.js +8 -4
- package/scripts/eslint_rules/lib/inject-checkbox-styles.js +7 -2
- package/scripts/eslint_rules/lib/inline-type-imports.js +3 -0
- package/scripts/eslint_rules/lib/jslog-context-list.js +4 -1
- package/scripts/eslint_rules/lib/l10n-filename-matches.js +42 -23
- package/scripts/eslint_rules/lib/l10n-helper.js +5 -3
- package/scripts/eslint_rules/lib/l10n-i18nString-call-only-with-uistrings.js +3 -0
- package/scripts/eslint_rules/lib/l10n-no-i18nString-calls-module-instantiation.js +5 -1
- package/scripts/eslint_rules/lib/l10n-no-locked-or-placeholder-only-phrase.js +3 -0
- package/scripts/eslint_rules/lib/l10n-no-uistrings-export.js +14 -5
- package/scripts/eslint_rules/lib/l10n-no-unused-message.js +12 -2
- package/scripts/eslint_rules/lib/{lit-html-no-attribute-quotes.js → lit-no-attribute-quotes.js} +4 -1
- package/scripts/eslint_rules/lib/lit-template-result-or-nothing.js +44 -26
- package/scripts/eslint_rules/lib/{no-a-tags-in-lit-html.js → no-a-tags-in-lit.js} +3 -0
- package/scripts/eslint_rules/lib/no-assert-equal.js +3 -0
- package/scripts/eslint_rules/lib/no-assert-strict-equal-for-arrays-and-objects.js +3 -0
- package/scripts/eslint_rules/lib/no-bound-component-methods.js +4 -1
- package/scripts/eslint_rules/lib/no-commented-out-console.js +4 -1
- package/scripts/eslint_rules/lib/no-commented-out-import.js +4 -1
- package/scripts/eslint_rules/lib/no-customized-builtin-elements.js +3 -0
- package/scripts/eslint_rules/lib/no-importing-images-from-src.js +3 -0
- package/scripts/eslint_rules/lib/no-imports-in-directory.js +5 -1
- package/scripts/eslint_rules/lib/no-it-screenshot-only-or-repeat.js +3 -0
- package/scripts/eslint_rules/lib/no-new-lit-element-components.js +4 -2
- package/scripts/eslint_rules/lib/no-only-eslint-tests.js +4 -1
- package/scripts/eslint_rules/lib/no-screenshot-test-outside-perf-panel.js +8 -3
- package/scripts/eslint_rules/lib/no-self-closing-custom-element-tagnames.js +3 -0
- package/scripts/eslint_rules/lib/no-underscored-properties.js +3 -0
- package/scripts/eslint_rules/lib/prefer-private-class-members.js +12 -2
- package/scripts/eslint_rules/lib/prefer-url-string.js +95 -0
- package/scripts/eslint_rules/lib/screenshot-assertion-in-it-screenshot.js +3 -0
- package/scripts/eslint_rules/lib/set-data-type-reference.js +3 -0
- package/scripts/eslint_rules/lib/single-screenshot-assertion-per-test.js +3 -0
- package/scripts/eslint_rules/lib/static-custom-event-names.js +3 -0
- package/scripts/eslint_rules/lib/trace-engine-test-timeouts.js +3 -0
- package/scripts/eslint_rules/lib/utils.js +8 -8
- package/scripts/eslint_rules/tests/canvas-context-tracking.test.js +8 -6
- package/scripts/eslint_rules/tests/check-css-import.test.js +12 -21
- package/scripts/eslint_rules/tests/check-enumerated-histograms.test.js +16 -14
- package/scripts/eslint_rules/tests/check-license-header.test.js +9 -11
- package/scripts/eslint_rules/tests/check-test-definitions.test.js +11 -6
- package/scripts/eslint_rules/tests/check-was-shown-methods.test.js +9 -11
- package/scripts/eslint_rules/tests/enforce-bound-render-for-schedule-render.test.js +8 -6
- package/scripts/eslint_rules/tests/enforce-custom-event-names.test.js +9 -11
- package/scripts/eslint_rules/tests/enforce-default-import-name.test.js +23 -7
- package/scripts/eslint_rules/tests/enforce-optional-properties-last.test.js +3 -7
- package/scripts/eslint_rules/tests/es-modules-import.test.js +108 -65
- package/scripts/eslint_rules/tests/html-tagged-template.test.js +25 -26
- package/scripts/eslint_rules/tests/inject-checkbox-styles.test.js +25 -21
- package/scripts/eslint_rules/tests/inline-type-imports.test.js +3 -6
- package/scripts/eslint_rules/tests/jslog-context-list.test.js +46 -35
- package/scripts/eslint_rules/tests/l10n-filename-matches.test.js +92 -18
- package/scripts/eslint_rules/tests/l10n-i18nString-call-only-with-uistrings.test.js +6 -7
- package/scripts/eslint_rules/tests/l10n-no-i18nString-calls-module-instantiation.test.js +10 -8
- package/scripts/eslint_rules/tests/l10n-no-locked-or-placeholder-only-phrase.test.js +12 -7
- package/scripts/eslint_rules/tests/l10n-no-uistrings-export.test.js +13 -8
- package/scripts/eslint_rules/tests/l10n-no-unused-message.test.js +7 -7
- package/scripts/eslint_rules/tests/{lit-html-no-attribute-quotes.test.js → lit-no-attribute-quotes.test.js} +11 -12
- package/scripts/eslint_rules/tests/lit-template-result-or-nothing.test.js +32 -35
- package/scripts/eslint_rules/tests/no-a-tags-in-lit.test.js +69 -0
- package/scripts/eslint_rules/tests/no-assert-deep-strict-equal.test.js +2 -3
- package/scripts/eslint_rules/tests/no-assert-equal-boolean-null-undefined.test.js +2 -3
- package/scripts/eslint_rules/tests/no-assert-equal.test.js +2 -3
- package/scripts/eslint_rules/tests/no-assert-strict-equal-for-arrays-and-objects.test.js +3 -4
- package/scripts/eslint_rules/tests/no-bound-component-methods.test.js +24 -12
- package/scripts/eslint_rules/tests/no-commented-out-console.test.js +3 -6
- package/scripts/eslint_rules/tests/no-commented-out-import.test.js +3 -6
- package/scripts/eslint_rules/tests/no-customized-builtin-elements.test.js +2 -3
- package/scripts/eslint_rules/tests/no-importing-images-from-src.test.js +12 -11
- package/scripts/eslint_rules/tests/no-imports-in-directory.test.js +84 -22
- package/scripts/eslint_rules/tests/no-it-screenshot-only-or-repeat.test.js +3 -6
- package/scripts/eslint_rules/tests/no-new-lit-element-components.test.js +3 -6
- package/scripts/eslint_rules/tests/no-only-eslint-tests.test.js +11 -6
- package/scripts/eslint_rules/tests/no-screenshot-test-outside-perf-panel.test.js +3 -4
- package/scripts/eslint_rules/tests/no-self-closing-custom-element-tagnames.test.js +17 -20
- package/scripts/eslint_rules/tests/no-underscored-properties.test.js +19 -12
- package/scripts/eslint_rules/tests/prefer-assert-instance-of.test.js +2 -3
- package/scripts/eslint_rules/tests/prefer-assert-is-ok.test.js +2 -3
- package/scripts/eslint_rules/tests/prefer-assert-length-of.test.js +2 -3
- package/scripts/eslint_rules/tests/prefer-private-class-members.test.js +3 -6
- package/scripts/eslint_rules/tests/prefer-readonly-keyword.test.js +7 -10
- package/scripts/eslint_rules/tests/prefer-url-string.test.js +87 -0
- package/scripts/eslint_rules/tests/screenshot-assertion-in-it-screenshot.test.js +3 -6
- package/scripts/eslint_rules/tests/set-data-type-reference.test.js +18 -10
- package/scripts/eslint_rules/tests/single-screenshot-assertion-per-test.test.js +3 -6
- package/scripts/eslint_rules/tests/static-custom-event-names.test.js +13 -13
- package/scripts/eslint_rules/tests/trace-engine-test-timeouts.test.js +3 -5
- package/scripts/eslint_rules/tests/utils/utils.js +18 -0
- package/scripts/eslint_rules/tests/utils.test.js +9 -9
- package/scripts/javascript_natives/index.js +14 -6
- package/scripts/migration/web-tests-esm/rename-legacy-global.mjs +4 -4
- package/scripts/npm_test.js +1 -0
- package/scripts/reformat-clang-js-ts.js +1 -2
- package/scripts/run_on_target.mjs +1 -1
- package/scripts/search-trace-files.js +1 -1
- package/scripts/stylelint_rules/lib/use_theme_colors.mjs +25 -41
- package/scripts/stylelint_rules/tests/{use_theme_colors_test.js → use_theme_colors.test.js} +14 -2
- package/scripts/utils.js +23 -14
- package/scripts/watch_build.js +19 -76
- package/tsconfig.json +2 -1
- package/front_end/core/sdk/CPUProfileDataModel.ts +0 -17
- package/front_end/core/sdk/ProfileTreeModel.ts +0 -17
- package/front_end/panels/application/reportingApiReportsView.css +0 -18
- package/front_end/panels/emulation/deviceModeToolbar.css +0 -14
- package/front_end/panels/protocol_monitor/components/Toolbar.ts +0 -91
- package/front_end/panels/protocol_monitor/components/components.ts +0 -11
- package/front_end/panels/protocol_monitor/components/toolbar.css +0 -31
- package/front_end/panels/recorder/components/StartView.ts +0 -133
- package/front_end/panels/timeline/historyToolbarButton.css +0 -81
- package/front_end/panels/timeline/utils/NetworkRequest.ts +0 -40
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ChromeTargetManager.d.ts +0 -26
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ChromeTargetManager.d.ts.map +0 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ChromeTargetManager.js +0 -311
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ChromeTargetManager.js.map +0 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FirefoxTargetManager.d.ts +0 -36
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FirefoxTargetManager.d.ts.map +0 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FirefoxTargetManager.js +0 -154
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FirefoxTargetManager.js.map +0 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ChromeTargetManager.d.ts +0 -26
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ChromeTargetManager.d.ts.map +0 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ChromeTargetManager.js +0 -307
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ChromeTargetManager.js.map +0 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FirefoxTargetManager.d.ts +0 -36
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FirefoxTargetManager.d.ts.map +0 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FirefoxTargetManager.js +0 -150
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FirefoxTargetManager.js.map +0 -1
- package/front_end/third_party/puppeteer/package/src/cdp/ChromeTargetManager.ts +0 -438
- package/front_end/third_party/puppeteer/package/src/cdp/FirefoxTargetManager.ts +0 -214
- package/front_end/third_party/third-party-web/package/.prettierrc +0 -10
- package/front_end/ui/components/data_grid/DataGrid.test.ts +0 -1056
- package/front_end/ui/components/data_grid/DataGrid.ts +0 -963
- package/front_end/ui/components/data_grid/DataGridContextMenuUtils.ts +0 -67
- package/front_end/ui/components/data_grid/DataGridController.test.ts +0 -431
- package/front_end/ui/components/data_grid/DataGridController.ts +0 -302
- package/front_end/ui/components/data_grid/DataGridControllerIntegrator.ts +0 -49
- package/front_end/ui/components/data_grid/DataGridEvents.ts +0 -121
- package/front_end/ui/components/data_grid/DataGridRenderers.ts +0 -27
- package/front_end/ui/components/data_grid/DataGridUtils.ts +0 -259
- package/front_end/ui/components/data_grid/README.md +0 -118
- package/front_end/ui/components/data_grid/dataGrid.css +0 -188
- package/front_end/ui/components/data_grid/dataGridController.css +0 -11
- package/front_end/ui/components/data_grid/data_grid.ts +0 -18
- package/front_end/ui/components/docs/data_grid/adding-data.html +0 -35
- package/front_end/ui/components/docs/data_grid/adding-data.ts +0 -61
- package/front_end/ui/components/docs/data_grid/basic.ts +0 -27
- package/front_end/ui/components/docs/data_grid/empty.html +0 -31
- package/front_end/ui/components/docs/data_grid/empty.ts +0 -21
- package/front_end/ui/components/docs/data_grid/hide-cols.html +0 -35
- package/front_end/ui/components/docs/data_grid/hide-cols.ts +0 -59
- package/front_end/ui/components/docs/data_grid/large-data.html +0 -30
- package/front_end/ui/components/docs/data_grid/large-data.ts +0 -43
- package/front_end/ui/components/docs/data_grid/sticky-headers.html +0 -30
- package/front_end/ui/components/docs/data_grid/sticky-headers.ts +0 -44
- package/front_end/ui/components/docs/data_grid/three_columns.html +0 -29
- package/front_end/ui/components/docs/data_grid/three_columns.ts +0 -44
- package/front_end/ui/components/docs/data_grid_controller/basic.ts +0 -45
- package/front_end/ui/components/docs/data_grid_controller/custom-context-menu-items.html +0 -28
- package/front_end/ui/components/docs/data_grid_controller/custom-context-menu-items.ts +0 -34
- package/front_end/ui/components/docs/data_grid_controller/filter.html +0 -40
- package/front_end/ui/components/docs/data_grid_controller/filter.ts +0 -298
- package/front_end/ui/components/docs/recorder_start_view/basic.html +0 -20
- package/front_end/ui/components/docs/recorder_start_view/basic.ts +0 -13
- package/front_end/ui/legacy/applicationColorTokens.css +0 -61
- package/front_end/ui/legacy/components/data_grid/DataGridWithPreview.ts +0 -297
- package/front_end/ui/legacy/components/inline_editor/CSSLength.test.ts +0 -75
- package/front_end/ui/legacy/components/inline_editor/CSSLength.ts +0 -156
- package/front_end/ui/legacy/components/inline_editor/cssLength.css +0 -27
- package/front_end/ui/legacy/designTokens.css +0 -115
- package/front_end/ui/legacy/inspectorSyntaxHighlight.css +0 -131
- package/front_end/ui/legacy/themeColors.css +0 -796
- package/front_end/ui/legacy/tokens.css +0 -202
- package/scripts/check_enumerated_histograms.js +0 -101
- package/scripts/eslint_rules/lib/lit-html-host-this.js +0 -86
- package/scripts/eslint_rules/lib/no-style-tags-in-lit-html.js +0 -51
- package/scripts/eslint_rules/tests/lit-html-host-this.test.js +0 -48
- package/scripts/eslint_rules/tests/no-a-tags-in-lit-html.test.js +0 -64
- package/scripts/eslint_rules/tests/no-style-tags-in-lit-html.test.js +0 -61
- /package/front_end/ui/{legacy → components/buttons}/textButton.css +0 -0
- /package/front_end/ui/{lit-html → lit}/i18n-template.ts +0 -0
- /package/front_end/ui/{lit-html/lit-html.ts → lit/lit.ts} +0 -0
- /package/front_end/ui/{lit-html → lit}/visibility.gni +0 -0
@@ -3,7 +3,6 @@
|
|
3
3
|
// found in the LICENSE file.
|
4
4
|
|
5
5
|
import '../../../ui/components/spinners/spinners.js';
|
6
|
-
import './UserActionRow.js';
|
7
6
|
|
8
7
|
import * as Common from '../../../core/common/common.js';
|
9
8
|
import * as Host from '../../../core/host/host.js';
|
@@ -15,14 +14,19 @@ import * as Buttons from '../../../ui/components/buttons/buttons.js';
|
|
15
14
|
import type * as IconButton from '../../../ui/components/icon_button/icon_button.js';
|
16
15
|
import * as MarkdownView from '../../../ui/components/markdown_view/markdown_view.js';
|
17
16
|
import * as UI from '../../../ui/legacy/legacy.js';
|
18
|
-
import * as
|
17
|
+
import * as Lit from '../../../ui/lit/lit.js';
|
19
18
|
import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
|
20
19
|
import {AgentType, type ContextDetail, type ConversationContext, ErrorType} from '../agents/AiAgent.js';
|
21
20
|
|
22
|
-
import
|
23
|
-
import
|
21
|
+
import stylesRaw from './chatView.css.js';
|
22
|
+
import {MarkdownRendererWithCodeBlock} from './MarkdownRendererWithCodeBlock.js';
|
23
|
+
import {UserActionRow} from './UserActionRow.js';
|
24
24
|
|
25
|
-
|
25
|
+
// TODO(crbug.com/391381439): Fully migrate off of constructed style sheets.
|
26
|
+
const styles = new CSSStyleSheet();
|
27
|
+
styles.replaceSync(stylesRaw.cssContent);
|
28
|
+
|
29
|
+
const {html, Directives: {ifDefined, ref}} = Lit;
|
26
30
|
|
27
31
|
const UIStrings = {
|
28
32
|
/**
|
@@ -149,13 +153,17 @@ const UIStringsNotTranslate = {
|
|
149
153
|
*/
|
150
154
|
inputPlaceholderForPerformanceAgentNoContext: 'Select an item to ask a question',
|
151
155
|
/**
|
152
|
-
|
156
|
+
*@description Placeholder text for the chat UI input.
|
153
157
|
*/
|
154
|
-
|
158
|
+
inputPlaceholderForPerformanceInsightsAgent: 'Ask a question about the selected performance insight',
|
159
|
+
/**
|
160
|
+
*@description Placeholder text for the chat UI input.
|
161
|
+
*/
|
162
|
+
inputPlaceholderForPerformanceInsightsAgentNoContext: 'Select a performance insight to ask a question',
|
155
163
|
/**
|
156
164
|
* @description Placeholder text for the input shown when the conversation is blocked because a cross-origin context was selected.
|
157
165
|
*/
|
158
|
-
|
166
|
+
crossOriginError: 'To talk about data from another origin, start a new chat',
|
159
167
|
/**
|
160
168
|
*@description Title for the send icon button.
|
161
169
|
*/
|
@@ -253,6 +261,10 @@ const UIStringsNotTranslate = {
|
|
253
261
|
*@description Text displayed when the chat input is disabled due to reading past conversation.
|
254
262
|
*/
|
255
263
|
pastConversation: 'You\'re viewing a past conversation.',
|
264
|
+
/**
|
265
|
+
*@description Text displayed for showing change summary view.
|
266
|
+
*/
|
267
|
+
changeSummary: 'Change summary',
|
256
268
|
};
|
257
269
|
|
258
270
|
const str_ = i18n.i18n.registerUIStrings('panels/ai_assistance/components/ChatView.ts', UIStrings);
|
@@ -320,58 +332,8 @@ export interface Props {
|
|
320
332
|
agentType?: AgentType;
|
321
333
|
isReadOnly: boolean;
|
322
334
|
blockedByCrossOrigin: boolean;
|
323
|
-
requiresNewConversation?: boolean;
|
324
335
|
stripLinks: boolean;
|
325
|
-
|
326
|
-
|
327
|
-
// The model returns multiline code blocks in an erroneous way with the language being in new line.
|
328
|
-
// This renderer takes that into account and correctly updates the parsed multiline token with the language
|
329
|
-
// correctly identified and stripped from the content.
|
330
|
-
// Example:
|
331
|
-
// ```
|
332
|
-
// css <-- This should have been on the first line.
|
333
|
-
// * {
|
334
|
-
// color: red;
|
335
|
-
// }
|
336
|
-
// ```
|
337
|
-
class MarkdownRendererWithCodeBlock extends MarkdownView.MarkdownView.MarkdownInsightRenderer {
|
338
|
-
#stripLinks: boolean = false;
|
339
|
-
constructor(opts: {stripLinks?: boolean} = {}) {
|
340
|
-
super();
|
341
|
-
this.#stripLinks = Boolean(opts.stripLinks);
|
342
|
-
}
|
343
|
-
override templateForToken(token: Marked.Marked.MarkedToken): LitHtml.TemplateResult|null {
|
344
|
-
if (token.type === 'code') {
|
345
|
-
const lines = (token.text as string).split('\n');
|
346
|
-
if (lines[0]?.trim() === 'css') {
|
347
|
-
token.lang = 'css';
|
348
|
-
token.text = lines.slice(1).join('\n');
|
349
|
-
}
|
350
|
-
}
|
351
|
-
|
352
|
-
// Potentially remove links from the rendered result
|
353
|
-
if (this.#stripLinks && (token.type === 'link' || token.type === 'image')) {
|
354
|
-
// Insert an extra text node at the end after any link text. Show the link as plaintext (surrounded by parentheses)
|
355
|
-
const urlText = ` ( ${token.href} )`;
|
356
|
-
// 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
|
357
|
-
const childTokens = token.type === 'image' ? undefined : [
|
358
|
-
...token.tokens,
|
359
|
-
{type: 'text', text: urlText, raw: urlText},
|
360
|
-
];
|
361
|
-
|
362
|
-
token = {
|
363
|
-
...token,
|
364
|
-
// Marked doesn't read .text or .raw of a link, but we'll update anyway
|
365
|
-
// https://github.com/markedjs/marked/blob/035af38ab1e5aae95ece213dcc9a9c6d79cff46f/src/Renderer.ts#L178-L191
|
366
|
-
text: `${token.text}${urlText}`,
|
367
|
-
raw: `${token.text}${urlText}`,
|
368
|
-
type: 'text',
|
369
|
-
tokens: childTokens,
|
370
|
-
};
|
371
|
-
}
|
372
|
-
|
373
|
-
return super.templateForToken(token);
|
374
|
-
}
|
336
|
+
changeSummary?: string;
|
375
337
|
}
|
376
338
|
|
377
339
|
export class ChatView extends HTMLElement {
|
@@ -380,7 +342,7 @@ export class ChatView extends HTMLElement {
|
|
380
342
|
#scrollTop?: number;
|
381
343
|
#props: Props;
|
382
344
|
#messagesContainerElement?: Element;
|
383
|
-
#mainElementRef?:
|
345
|
+
#mainElementRef?: Lit.Directives.Ref<Element> = Lit.Directives.createRef();
|
384
346
|
#lastAnswerMarkdownView?: MarkdownView.MarkdownView.MarkdownView;
|
385
347
|
#messagesContainerResizeObserver = new ResizeObserver(() => this.#handleMessagesContainerResize());
|
386
348
|
/**
|
@@ -479,16 +441,11 @@ export class ChatView extends HTMLElement {
|
|
479
441
|
}
|
480
442
|
|
481
443
|
#isTextInputDisabled = (): boolean => {
|
482
|
-
if (this.#props.blockedByCrossOrigin
|
444
|
+
if (this.#props.blockedByCrossOrigin) {
|
483
445
|
return true;
|
484
446
|
}
|
485
447
|
const isAidaAvailable = this.#props.aidaAvailability === Host.AidaClient.AidaAccessPreconditions.AVAILABLE;
|
486
448
|
const isConsentView = this.#props.state === State.CONSENT_VIEW;
|
487
|
-
const showsSideEffects = this.#props.messages.some(message => {
|
488
|
-
return message.entity === ChatMessageEntity.MODEL && message.steps.some(step => {
|
489
|
-
return Boolean(step.sideEffect);
|
490
|
-
});
|
491
|
-
});
|
492
449
|
|
493
450
|
if (!isAidaAvailable || isConsentView || !this.#props.agentType) {
|
494
451
|
return true;
|
@@ -498,19 +455,7 @@ export class ChatView extends HTMLElement {
|
|
498
455
|
return true;
|
499
456
|
}
|
500
457
|
|
501
|
-
|
502
|
-
switch (this.#props.agentType) {
|
503
|
-
case AgentType.STYLING:
|
504
|
-
return showsSideEffects;
|
505
|
-
case AgentType.NETWORK:
|
506
|
-
return false;
|
507
|
-
case AgentType.FILE:
|
508
|
-
return false;
|
509
|
-
case AgentType.PERFORMANCE:
|
510
|
-
return false;
|
511
|
-
case AgentType.PATCH:
|
512
|
-
return false;
|
513
|
-
}
|
458
|
+
return false;
|
514
459
|
};
|
515
460
|
|
516
461
|
#handleMessageContainerRef(el: Element|undefined): void {
|
@@ -560,14 +505,14 @@ export class ChatView extends HTMLElement {
|
|
560
505
|
return;
|
561
506
|
}
|
562
507
|
|
508
|
+
// Go to a new line only when Shift + Enter is pressed.
|
563
509
|
if (ev.key === 'Enter' && !ev.shiftKey) {
|
564
|
-
// Do not go to a new line whenver Shift + Enter is pressed.
|
565
510
|
ev.preventDefault();
|
566
|
-
|
567
|
-
|
568
|
-
this.#props.onTextSubmit(ev.target.value);
|
569
|
-
ev.target.value = '';
|
511
|
+
if (!ev.target || !ev.target.value) {
|
512
|
+
return;
|
570
513
|
}
|
514
|
+
this.#props.onTextSubmit(ev.target.value);
|
515
|
+
ev.target.value = '';
|
571
516
|
}
|
572
517
|
};
|
573
518
|
|
@@ -587,435 +532,6 @@ export class ChatView extends HTMLElement {
|
|
587
532
|
Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiAssistanceDynamicSuggestionClicked);
|
588
533
|
};
|
589
534
|
|
590
|
-
#renderUserActionRow(rpcId?: Host.AidaClient.RpcGlobalId, suggestions?: [string, ...string[]]):
|
591
|
-
LitHtml.TemplateResult {
|
592
|
-
// clang-format off
|
593
|
-
return html`<devtools-user-action-row
|
594
|
-
.props=${{
|
595
|
-
showRateButtons: rpcId !== undefined,
|
596
|
-
onFeedbackSubmit: (rating, feedback) => {
|
597
|
-
if (!rpcId) {
|
598
|
-
return;
|
599
|
-
}
|
600
|
-
this.#props.onFeedbackSubmit(rpcId, rating, feedback);
|
601
|
-
},
|
602
|
-
suggestions,
|
603
|
-
handleSuggestionClick: this.#handleSuggestionClick,
|
604
|
-
canShowFeedbackForm: this.#props.canShowFeedbackForm,
|
605
|
-
} as UserActionRowProps}
|
606
|
-
></devtools-user-action-row>`;
|
607
|
-
// clang-format on
|
608
|
-
}
|
609
|
-
|
610
|
-
#renderTextAsMarkdown(text: string, {animate, ref: refFn}: {
|
611
|
-
animate?: boolean,
|
612
|
-
ref?: (element?: Element) => void,
|
613
|
-
} = {}): LitHtml.TemplateResult {
|
614
|
-
let tokens = [];
|
615
|
-
try {
|
616
|
-
tokens = Marked.Marked.lexer(text);
|
617
|
-
for (const token of tokens) {
|
618
|
-
// Try to render all the tokens to make sure that
|
619
|
-
// they all have a template defined for them. If there
|
620
|
-
// isn't any template defined for a token, we'll fallback
|
621
|
-
// to rendering the text as plain text instead of markdown.
|
622
|
-
this.#markdownRenderer.renderToken(token);
|
623
|
-
}
|
624
|
-
} catch (err) {
|
625
|
-
// The tokens were not parsed correctly or
|
626
|
-
// one of the tokens are not supported, so we
|
627
|
-
// continue to render this as text.
|
628
|
-
return html`${text}`;
|
629
|
-
}
|
630
|
-
|
631
|
-
// clang-format off
|
632
|
-
return html`<devtools-markdown-view
|
633
|
-
.data=${{tokens, renderer: this.#markdownRenderer, animationEnabled: animate} as MarkdownView.MarkdownView.MarkdownViewData}
|
634
|
-
${refFn ? ref(refFn) : LitHtml.nothing}>
|
635
|
-
</devtools-markdown-view>`;
|
636
|
-
// clang-format on
|
637
|
-
}
|
638
|
-
|
639
|
-
#renderTitle(step: Step): LitHtml.LitTemplate {
|
640
|
-
const paused = step.sideEffect ? html`<span class="paused">${lockedString(UIStringsNotTranslate.paused)}: </span>` :
|
641
|
-
LitHtml.nothing;
|
642
|
-
const actionTitle = step.title ?? `${lockedString(UIStringsNotTranslate.investigating)}…`;
|
643
|
-
|
644
|
-
return html`<span class="title">${paused}${actionTitle}</span>`;
|
645
|
-
}
|
646
|
-
|
647
|
-
#renderStepCode(step: Step): LitHtml.LitTemplate {
|
648
|
-
if (!step.code && !step.output) {
|
649
|
-
return LitHtml.nothing;
|
650
|
-
}
|
651
|
-
|
652
|
-
// If there is no "output" yet, it means we didn't execute the code yet (e.g. maybe it is still waiting for confirmation from the user)
|
653
|
-
// thus we show "Code to execute" text rather than "Code executed" text on the heading of the code block.
|
654
|
-
const codeHeadingText = (step.output && !step.canceled) ? lockedString(UIStringsNotTranslate.codeExecuted) :
|
655
|
-
lockedString(UIStringsNotTranslate.codeToExecute);
|
656
|
-
|
657
|
-
// If there is output, we don't show notice on this code block and instead show
|
658
|
-
// it in the data returned code block.
|
659
|
-
// clang-format off
|
660
|
-
const code = step.code ? html`<div class="action-result">
|
661
|
-
<devtools-code-block
|
662
|
-
.code=${step.code.trim()}
|
663
|
-
.codeLang=${'js'}
|
664
|
-
.displayNotice=${!Boolean(step.output)}
|
665
|
-
.header=${codeHeadingText}
|
666
|
-
.showCopyButton=${true}
|
667
|
-
></devtools-code-block>
|
668
|
-
</div>` :
|
669
|
-
LitHtml.nothing;
|
670
|
-
const output = step.output ? html`<div class="js-code-output">
|
671
|
-
<devtools-code-block
|
672
|
-
.code=${step.output}
|
673
|
-
.codeLang=${'js'}
|
674
|
-
.displayNotice=${true}
|
675
|
-
.header=${lockedString(UIStringsNotTranslate.dataReturned)}
|
676
|
-
.showCopyButton=${false}
|
677
|
-
></devtools-code-block>
|
678
|
-
</div>` :
|
679
|
-
LitHtml.nothing;
|
680
|
-
|
681
|
-
return html`<div class="step-code">${code}${output}</div>`;
|
682
|
-
// clang-format on
|
683
|
-
}
|
684
|
-
|
685
|
-
#renderStepDetails(step: Step, options: {isLast: boolean}): LitHtml.LitTemplate {
|
686
|
-
const sideEffects =
|
687
|
-
options.isLast && step.sideEffect ? this.#renderSideEffectConfirmationUi(step) : LitHtml.nothing;
|
688
|
-
const thought = step.thought ? html`<p>${this.#renderTextAsMarkdown(step.thought)}</p>` : LitHtml.nothing;
|
689
|
-
|
690
|
-
// clang-format off
|
691
|
-
const contextDetails = step.contextDetails ?
|
692
|
-
html`${LitHtml.Directives.repeat(
|
693
|
-
step.contextDetails,
|
694
|
-
contextDetail => {
|
695
|
-
return html`<div class="context-details">
|
696
|
-
<devtools-code-block
|
697
|
-
.code=${contextDetail.text}
|
698
|
-
.codeLang=${contextDetail.codeLang || ''}
|
699
|
-
.displayNotice=${false}
|
700
|
-
.header=${contextDetail.title}
|
701
|
-
.showCopyButton=${true}
|
702
|
-
></devtools-code-block>
|
703
|
-
</div>`;
|
704
|
-
},
|
705
|
-
)}` : LitHtml.nothing;
|
706
|
-
|
707
|
-
return html`<div class="step-details">
|
708
|
-
${thought}
|
709
|
-
${this.#renderStepCode(step)}
|
710
|
-
${sideEffects}
|
711
|
-
${contextDetails}
|
712
|
-
</div>`;
|
713
|
-
// clang-format on
|
714
|
-
}
|
715
|
-
|
716
|
-
#renderStepBadge(step: Step, options: {isLast: boolean}): LitHtml.LitTemplate {
|
717
|
-
if (this.#props.isLoading && options.isLast && !step.sideEffect) {
|
718
|
-
return html`<devtools-spinner></devtools-spinner>`;
|
719
|
-
}
|
720
|
-
|
721
|
-
let iconName: string = 'checkmark';
|
722
|
-
let ariaLabel: string|undefined = lockedString(UIStringsNotTranslate.completed);
|
723
|
-
let role: 'button'|undefined = 'button';
|
724
|
-
if (options.isLast && step.sideEffect) {
|
725
|
-
role = undefined;
|
726
|
-
ariaLabel = undefined;
|
727
|
-
iconName = 'pause-circle';
|
728
|
-
} else if (step.canceled) {
|
729
|
-
ariaLabel = lockedString(UIStringsNotTranslate.canceled);
|
730
|
-
iconName = 'cross';
|
731
|
-
}
|
732
|
-
|
733
|
-
return html`<devtools-icon
|
734
|
-
class="indicator"
|
735
|
-
role=${ifDefined(role)}
|
736
|
-
aria-label=${ifDefined(ariaLabel)}
|
737
|
-
.name=${iconName}
|
738
|
-
></devtools-icon>`;
|
739
|
-
}
|
740
|
-
|
741
|
-
#renderStep(step: Step, options: {isLast: boolean}): LitHtml.LitTemplate {
|
742
|
-
const stepClasses = LitHtml.Directives.classMap({
|
743
|
-
step: true,
|
744
|
-
empty: !step.thought && !step.code && !step.contextDetails,
|
745
|
-
paused: Boolean(step.sideEffect),
|
746
|
-
canceled: Boolean(step.canceled),
|
747
|
-
});
|
748
|
-
// clang-format off
|
749
|
-
return html`
|
750
|
-
<details class=${stepClasses}
|
751
|
-
jslog=${VisualLogging.section('step')}
|
752
|
-
.open=${Boolean(step.sideEffect)}>
|
753
|
-
<summary>
|
754
|
-
<div class="summary">
|
755
|
-
${this.#renderStepBadge(step, options)}
|
756
|
-
${this.#renderTitle(step)}
|
757
|
-
<devtools-icon
|
758
|
-
class="arrow"
|
759
|
-
.name=${'chevron-down'}
|
760
|
-
></devtools-icon>
|
761
|
-
</div>
|
762
|
-
</summary>
|
763
|
-
${this.#renderStepDetails(step, {
|
764
|
-
isLast: options.isLast,
|
765
|
-
})}
|
766
|
-
</details>`;
|
767
|
-
// clang-format on
|
768
|
-
}
|
769
|
-
|
770
|
-
#renderSideEffectConfirmationUi(step: Step): LitHtml.LitTemplate {
|
771
|
-
if (!step.sideEffect) {
|
772
|
-
return LitHtml.nothing;
|
773
|
-
}
|
774
|
-
|
775
|
-
const sideEffectAction = (answer: boolean): void => {
|
776
|
-
step.sideEffect?.onAnswer(answer);
|
777
|
-
step.sideEffect = undefined;
|
778
|
-
this.#render();
|
779
|
-
};
|
780
|
-
|
781
|
-
// clang-format off
|
782
|
-
return html`<div
|
783
|
-
class="side-effect-confirmation"
|
784
|
-
jslog=${VisualLogging.section('side-effect-confirmation')}
|
785
|
-
>
|
786
|
-
<p>${lockedString(UIStringsNotTranslate.sideEffectConfirmationDescription)}</p>
|
787
|
-
<div class="side-effect-buttons-container">
|
788
|
-
<devtools-button
|
789
|
-
.data=${
|
790
|
-
{
|
791
|
-
variant: Buttons.Button.Variant.OUTLINED,
|
792
|
-
jslogContext: 'decline-execute-code',
|
793
|
-
} as Buttons.Button.ButtonData
|
794
|
-
}
|
795
|
-
@click=${() => sideEffectAction(false)}
|
796
|
-
>${lockedString(
|
797
|
-
UIStringsNotTranslate.negativeSideEffectConfirmation,
|
798
|
-
)}</devtools-button>
|
799
|
-
<devtools-button
|
800
|
-
.data=${
|
801
|
-
{
|
802
|
-
variant: Buttons.Button.Variant.PRIMARY,
|
803
|
-
jslogContext: 'accept-execute-code',
|
804
|
-
iconName: 'play',
|
805
|
-
} as Buttons.Button.ButtonData
|
806
|
-
}
|
807
|
-
@click=${() => sideEffectAction(true)}
|
808
|
-
>${
|
809
|
-
lockedString(UIStringsNotTranslate.positiveSideEffectConfirmation)
|
810
|
-
}</devtools-button>
|
811
|
-
</div>
|
812
|
-
</div>`;
|
813
|
-
// clang-format on
|
814
|
-
}
|
815
|
-
|
816
|
-
#renderError(message: ModelChatMessage): LitHtml.LitTemplate {
|
817
|
-
if (message.error) {
|
818
|
-
let errorMessage;
|
819
|
-
switch (message.error) {
|
820
|
-
case ErrorType.UNKNOWN:
|
821
|
-
case ErrorType.BLOCK:
|
822
|
-
errorMessage = UIStringsNotTranslate.systemError;
|
823
|
-
break;
|
824
|
-
case ErrorType.MAX_STEPS:
|
825
|
-
errorMessage = UIStringsNotTranslate.maxStepsError;
|
826
|
-
break;
|
827
|
-
case ErrorType.ABORT:
|
828
|
-
return html`<p class="aborted" jslog=${VisualLogging.section('aborted')}>${
|
829
|
-
lockedString(UIStringsNotTranslate.stoppedResponse)}</p>`;
|
830
|
-
}
|
831
|
-
|
832
|
-
return html`<p class="error" jslog=${VisualLogging.section('error')}>${lockedString(errorMessage)}</p>`;
|
833
|
-
}
|
834
|
-
|
835
|
-
return LitHtml.nothing;
|
836
|
-
}
|
837
|
-
|
838
|
-
#renderChatMessage = (message: ChatMessage, {isLast}: {isLast: boolean}): LitHtml.TemplateResult => {
|
839
|
-
if (message.entity === ChatMessageEntity.USER) {
|
840
|
-
const name = this.#props.userInfo.accountFullName || lockedString(UIStringsNotTranslate.you);
|
841
|
-
const image = this.#props.userInfo.accountImage ?
|
842
|
-
html`<img src="data:image/png;base64, ${this.#props.userInfo.accountImage}" alt="Account avatar" />` :
|
843
|
-
html`<devtools-icon
|
844
|
-
.name=${'profile'}
|
845
|
-
></devtools-icon>`;
|
846
|
-
// clang-format off
|
847
|
-
return html`<section
|
848
|
-
class="chat-message query"
|
849
|
-
jslog=${VisualLogging.section('question')}
|
850
|
-
>
|
851
|
-
<div class="message-info">
|
852
|
-
${image}
|
853
|
-
<div class="message-name">
|
854
|
-
<h2>${name}</h2>
|
855
|
-
</div>
|
856
|
-
</div>
|
857
|
-
<div class="message-content">${this.#renderTextAsMarkdown(message.text)}</div>
|
858
|
-
</section>`;
|
859
|
-
// clang-format on
|
860
|
-
}
|
861
|
-
|
862
|
-
// clang-format off
|
863
|
-
return html`
|
864
|
-
<section
|
865
|
-
class="chat-message answer"
|
866
|
-
jslog=${VisualLogging.section('answer')}
|
867
|
-
>
|
868
|
-
<div class="message-info">
|
869
|
-
<devtools-icon name="smart-assistant"></devtools-icon>
|
870
|
-
<div class="message-name">
|
871
|
-
<h2>${lockedString(UIStringsNotTranslate.ai)}</h2>
|
872
|
-
</div>
|
873
|
-
</div>
|
874
|
-
${LitHtml.Directives.repeat(
|
875
|
-
message.steps,
|
876
|
-
(_, index) => index,
|
877
|
-
step => {
|
878
|
-
return this.#renderStep(step, {
|
879
|
-
isLast: [...message.steps.values()].at(-1) === step && isLast,
|
880
|
-
});
|
881
|
-
},
|
882
|
-
)}
|
883
|
-
${message.answer
|
884
|
-
? html`<p>${this.#renderTextAsMarkdown(message.answer, { animate: !this.#props.isReadOnly, ref: this.#handleLastAnswerMarkdownViewRef })}</p>`
|
885
|
-
: LitHtml.nothing}
|
886
|
-
${this.#renderError(message)}
|
887
|
-
<div class="actions">
|
888
|
-
${isLast && this.#props.isLoading
|
889
|
-
? LitHtml.nothing
|
890
|
-
: this.#renderUserActionRow(
|
891
|
-
message.rpcId,
|
892
|
-
isLast ? message.suggestions : undefined,
|
893
|
-
)}
|
894
|
-
</div>
|
895
|
-
</section>
|
896
|
-
`;
|
897
|
-
// clang-format on
|
898
|
-
};
|
899
|
-
|
900
|
-
#renderSelection(): LitHtml.LitTemplate {
|
901
|
-
if (!this.#props.agentType) {
|
902
|
-
return LitHtml.nothing;
|
903
|
-
}
|
904
|
-
return this.#renderContextSelector();
|
905
|
-
}
|
906
|
-
|
907
|
-
#renderContextSelector(): LitHtml.LitTemplate {
|
908
|
-
// TODO: currently the picker behavior is SDKNode specific.
|
909
|
-
const hasPickerBehavior = this.#props.agentType === AgentType.STYLING;
|
910
|
-
|
911
|
-
const resourceClass = LitHtml.Directives.classMap({
|
912
|
-
'not-selected': !this.#props.selectedContext,
|
913
|
-
'resource-link': true,
|
914
|
-
'allow-overflow': hasPickerBehavior,
|
915
|
-
});
|
916
|
-
|
917
|
-
if (!this.#props.selectedContext && !hasPickerBehavior) {
|
918
|
-
return LitHtml.nothing;
|
919
|
-
}
|
920
|
-
|
921
|
-
const icon = this.#props.selectedContext?.getIcon() ?? LitHtml.nothing;
|
922
|
-
|
923
|
-
const handleKeyDown = (ev: KeyboardEvent): void => {
|
924
|
-
if (ev.key === 'Enter') {
|
925
|
-
void this.#props.onContextClick();
|
926
|
-
}
|
927
|
-
};
|
928
|
-
|
929
|
-
// clang-format off
|
930
|
-
return html`<div class="select-element">
|
931
|
-
${
|
932
|
-
hasPickerBehavior ? html`
|
933
|
-
<devtools-button
|
934
|
-
.data=${{
|
935
|
-
variant: Buttons.Button.Variant.ICON_TOGGLE,
|
936
|
-
size: Buttons.Button.Size.REGULAR,
|
937
|
-
iconName: 'select-element',
|
938
|
-
toggledIconName: 'select-element',
|
939
|
-
toggleType: Buttons.Button.ToggleType.PRIMARY,
|
940
|
-
toggled: this.#props.inspectElementToggled,
|
941
|
-
title: lockedString(UIStringsNotTranslate.selectAnElement),
|
942
|
-
jslogContext: 'select-element',
|
943
|
-
} as Buttons.Button.ButtonData}
|
944
|
-
@click=${this.#props.onInspectElementClick}
|
945
|
-
></devtools-button>
|
946
|
-
` : LitHtml.nothing
|
947
|
-
}
|
948
|
-
<div
|
949
|
-
role=button
|
950
|
-
class=${resourceClass}
|
951
|
-
tabindex=${hasPickerBehavior ? '-1' : '0'}
|
952
|
-
@click=${this.#props.onContextClick}
|
953
|
-
@keydown=${handleKeyDown}
|
954
|
-
>
|
955
|
-
${icon}${this.#props.selectedContext?.getTitle() ?? html`<span>${
|
956
|
-
lockedString(UIStringsNotTranslate.noElementSelected)
|
957
|
-
}</span>`}
|
958
|
-
</div>
|
959
|
-
</div>`;
|
960
|
-
// clang-format on
|
961
|
-
}
|
962
|
-
|
963
|
-
#renderMessages = (): LitHtml.TemplateResult => {
|
964
|
-
// clang-format off
|
965
|
-
return html`
|
966
|
-
<div class="messages-container" ${ref(this.#handleMessageContainerRef)}>
|
967
|
-
${this.#props.messages.map((message, _, array) =>
|
968
|
-
this.#renderChatMessage(message, {
|
969
|
-
isLast: array.at(-1) === message,
|
970
|
-
}),
|
971
|
-
)}
|
972
|
-
</div>
|
973
|
-
`;
|
974
|
-
// clang-format on
|
975
|
-
};
|
976
|
-
|
977
|
-
#renderEmptyState = (): LitHtml.TemplateResult => {
|
978
|
-
const suggestions = this.#getEmptyStateSuggestions();
|
979
|
-
|
980
|
-
// clang-format off
|
981
|
-
return html`<div class="empty-state-container">
|
982
|
-
<div class="header">
|
983
|
-
<div class="icon">
|
984
|
-
<devtools-icon
|
985
|
-
name="smart-assistant"
|
986
|
-
></devtools-icon>
|
987
|
-
</div>
|
988
|
-
<h1>${lockedString(UIStringsNotTranslate.emptyStateText)}</h1>
|
989
|
-
</div>
|
990
|
-
<div class="empty-state-content">
|
991
|
-
${suggestions.map(suggestion => {
|
992
|
-
return html`<devtools-button
|
993
|
-
class="suggestion"
|
994
|
-
@click=${() => this.#handleSuggestionClick(suggestion)}
|
995
|
-
.data=${
|
996
|
-
{
|
997
|
-
variant: Buttons.Button.Variant.OUTLINED,
|
998
|
-
size: Buttons.Button.Size.REGULAR,
|
999
|
-
title: suggestion,
|
1000
|
-
jslogContext: 'suggestion',
|
1001
|
-
disabled: this.#isTextInputDisabled(),
|
1002
|
-
} as Buttons.Button.ButtonData
|
1003
|
-
}
|
1004
|
-
>${suggestion}</devtools-button>`;
|
1005
|
-
})}
|
1006
|
-
</div>
|
1007
|
-
</div>`;
|
1008
|
-
// clang-format on
|
1009
|
-
};
|
1010
|
-
|
1011
|
-
#onNewConversation(): void {
|
1012
|
-
this.#props.onNewConversation();
|
1013
|
-
}
|
1014
|
-
|
1015
|
-
#onCancelCrossOriginChat(): void {
|
1016
|
-
this.#props.onCancelCrossOriginChat?.();
|
1017
|
-
}
|
1018
|
-
|
1019
535
|
#getEmptyStateSuggestions = (): string[] => {
|
1020
536
|
if (!this.#props.agentType) {
|
1021
537
|
return [];
|
@@ -1045,6 +561,9 @@ export class ChatView extends HTMLElement {
|
|
1045
561
|
'Where is most of the time being spent in this call tree?',
|
1046
562
|
'How can I reduce the time of this call tree?',
|
1047
563
|
];
|
564
|
+
case AgentType.PERFORMANCE_INSIGHT:
|
565
|
+
// TODO(b/393061683): Define these.
|
566
|
+
return ['Placeholder', 'Suggestions', 'For now'];
|
1048
567
|
case AgentType.PATCH:
|
1049
568
|
return [
|
1050
569
|
'What can you help me with?',
|
@@ -1060,9 +579,6 @@ export class ChatView extends HTMLElement {
|
|
1060
579
|
if (state === State.CONSENT_VIEW || !agentType) {
|
1061
580
|
return i18nString(UIStrings.followTheSteps);
|
1062
581
|
}
|
1063
|
-
if (this.#props.requiresNewConversation) {
|
1064
|
-
return lockedString(UIStringsNotTranslate.newConversationError);
|
1065
|
-
}
|
1066
582
|
if (this.#props.blockedByCrossOrigin) {
|
1067
583
|
return lockedString(UIStringsNotTranslate.crossOriginError);
|
1068
584
|
}
|
@@ -1084,141 +600,13 @@ export class ChatView extends HTMLElement {
|
|
1084
600
|
return this.#props.selectedContext ?
|
1085
601
|
lockedString(UIStringsNotTranslate.inputPlaceholderForPerformanceAgent) :
|
1086
602
|
lockedString(UIStringsNotTranslate.inputPlaceholderForPerformanceAgentNoContext);
|
603
|
+
case AgentType.PERFORMANCE_INSIGHT:
|
604
|
+
return this.#props.selectedContext ?
|
605
|
+
lockedString(UIStringsNotTranslate.inputPlaceholderForPerformanceInsightsAgent) :
|
606
|
+
lockedString(UIStringsNotTranslate.inputPlaceholderForPerformanceInsightsAgentNoContext);
|
1087
607
|
}
|
1088
608
|
}
|
1089
609
|
|
1090
|
-
#renderReadOnlySection(): LitHtml.LitTemplate {
|
1091
|
-
if (!this.#props.agentType) {
|
1092
|
-
return LitHtml.nothing;
|
1093
|
-
}
|
1094
|
-
|
1095
|
-
// clang-format off
|
1096
|
-
return html`<div
|
1097
|
-
class="chat-readonly-container"
|
1098
|
-
jslog=${VisualLogging.section('read-only')}
|
1099
|
-
>
|
1100
|
-
<span>${lockedString(UIStringsNotTranslate.pastConversation)}</span>
|
1101
|
-
<devtools-button
|
1102
|
-
aria-label=${lockedString(UIStringsNotTranslate.startNewChat)}
|
1103
|
-
class="chat-inline-button"
|
1104
|
-
@click=${this.#onNewConversation}
|
1105
|
-
.data=${{
|
1106
|
-
variant: Buttons.Button.Variant.TEXT,
|
1107
|
-
title: lockedString(UIStringsNotTranslate.startNewChat),
|
1108
|
-
jslogContext: 'start-new-chat',
|
1109
|
-
} as Buttons.Button.ButtonData}
|
1110
|
-
>${lockedString(UIStringsNotTranslate.startNewChat)}</devtools-button>
|
1111
|
-
</div>`;
|
1112
|
-
// clang-format on
|
1113
|
-
}
|
1114
|
-
|
1115
|
-
#renderChatInputButtons(): LitHtml.TemplateResult {
|
1116
|
-
if (this.#props.isLoading) {
|
1117
|
-
// clang-format off
|
1118
|
-
return html`<devtools-button
|
1119
|
-
class="chat-input-button"
|
1120
|
-
aria-label=${lockedString(UIStringsNotTranslate.cancelButtonTitle)}
|
1121
|
-
@click=${this.#handleCancel}
|
1122
|
-
.data=${
|
1123
|
-
{
|
1124
|
-
variant: Buttons.Button.Variant.ICON,
|
1125
|
-
size: Buttons.Button.Size.REGULAR,
|
1126
|
-
iconName: 'record-stop',
|
1127
|
-
title: lockedString(UIStringsNotTranslate.cancelButtonTitle),
|
1128
|
-
jslogContext: 'stop',
|
1129
|
-
} as Buttons.Button.ButtonData
|
1130
|
-
}
|
1131
|
-
></devtools-button>`;
|
1132
|
-
// clang-format on
|
1133
|
-
}
|
1134
|
-
if (this.#props.blockedByCrossOrigin || this.#props.requiresNewConversation) {
|
1135
|
-
// clang-format off
|
1136
|
-
return html`
|
1137
|
-
${this.#props.blockedByCrossOrigin && Boolean(this.#props.onCancelCrossOriginChat) ? html`<devtools-button
|
1138
|
-
class="chat-cancel-context-button"
|
1139
|
-
@click=${this.#onCancelCrossOriginChat}
|
1140
|
-
.data=${
|
1141
|
-
{
|
1142
|
-
variant: Buttons.Button.Variant.TEXT,
|
1143
|
-
size: Buttons.Button.Size.REGULAR,
|
1144
|
-
jslogContext: 'cancel-cross-origin-context-chat',
|
1145
|
-
} as Buttons.Button.ButtonData
|
1146
|
-
}
|
1147
|
-
>${lockedString(UIStringsNotTranslate.cancelButtonTitle)}</devtools-button>` : LitHtml.nothing}
|
1148
|
-
<devtools-button
|
1149
|
-
class="chat-input-button"
|
1150
|
-
aria-label=${lockedString(UIStringsNotTranslate.startNewChat)}
|
1151
|
-
@click=${this.#onNewConversation}
|
1152
|
-
.data=${
|
1153
|
-
{
|
1154
|
-
variant: Buttons.Button.Variant.PRIMARY,
|
1155
|
-
size: Buttons.Button.Size.REGULAR,
|
1156
|
-
title: lockedString(UIStringsNotTranslate.startNewChat),
|
1157
|
-
jslogContext: 'start-new-chat',
|
1158
|
-
} as Buttons.Button.ButtonData
|
1159
|
-
}
|
1160
|
-
>${lockedString(UIStringsNotTranslate.startNewChat)}</devtools-button>
|
1161
|
-
`;
|
1162
|
-
// clang-format on
|
1163
|
-
}
|
1164
|
-
// clang-format off
|
1165
|
-
return html`<devtools-button
|
1166
|
-
class="chat-input-button"
|
1167
|
-
aria-label=${lockedString(UIStringsNotTranslate.sendButtonTitle)}
|
1168
|
-
.data=${
|
1169
|
-
{
|
1170
|
-
type: 'submit',
|
1171
|
-
variant: Buttons.Button.Variant.ICON,
|
1172
|
-
size: Buttons.Button.Size.REGULAR,
|
1173
|
-
disabled: this.#isTextInputDisabled(),
|
1174
|
-
iconName: 'send',
|
1175
|
-
title: lockedString(UIStringsNotTranslate.sendButtonTitle),
|
1176
|
-
jslogContext: 'send',
|
1177
|
-
} as Buttons.Button.ButtonData
|
1178
|
-
}
|
1179
|
-
></devtools-button>`;
|
1180
|
-
}
|
1181
|
-
|
1182
|
-
#renderChatInput = (): LitHtml.LitTemplate => {
|
1183
|
-
if (!this.#props.agentType) {
|
1184
|
-
return LitHtml.nothing;
|
1185
|
-
}
|
1186
|
-
|
1187
|
-
const cls = LitHtml.Directives.classMap({
|
1188
|
-
'chat-input': true,
|
1189
|
-
'one-big-button': Boolean(this.#props.requiresNewConversation),
|
1190
|
-
'two-big-buttons': this.#props.blockedByCrossOrigin,
|
1191
|
-
});
|
1192
|
-
|
1193
|
-
// clang-format off
|
1194
|
-
return html`
|
1195
|
-
<form class="input-form" @submit=${this.#handleSubmit}>
|
1196
|
-
<div class="input-form-shadow-container">
|
1197
|
-
<div class="input-form-shadow"></div>
|
1198
|
-
</div>
|
1199
|
-
${this.#props.state !== State.CONSENT_VIEW ? html`
|
1200
|
-
<div class="input-header">
|
1201
|
-
<div class="header-link-container">
|
1202
|
-
${this.#renderSelection()}
|
1203
|
-
</div>
|
1204
|
-
</div>
|
1205
|
-
` : LitHtml.nothing}
|
1206
|
-
<div class="chat-input-container">
|
1207
|
-
<textarea class=${cls}
|
1208
|
-
.disabled=${this.#isTextInputDisabled()}
|
1209
|
-
wrap="hard"
|
1210
|
-
@keydown=${this.#handleTextAreaKeyDown}
|
1211
|
-
placeholder=${this.#getInputPlaceholderString()}
|
1212
|
-
jslog=${VisualLogging.textField('query').track({ keydown: 'Enter' })}
|
1213
|
-
></textarea>
|
1214
|
-
<div class="chat-input-buttons">
|
1215
|
-
${this.#renderChatInputButtons()}
|
1216
|
-
</div>
|
1217
|
-
</div>
|
1218
|
-
</form>`;
|
1219
|
-
// clang-format on
|
1220
|
-
};
|
1221
|
-
|
1222
610
|
#getDisclaimerText = (): Platform.UIString.LocalizedString => {
|
1223
611
|
if (this.#props.state === State.CONSENT_VIEW || !this.#props.agentType || this.#props.isReadOnly) {
|
1224
612
|
return i18nString(UIStrings.inputDisclaimerForEmptyState);
|
@@ -1251,10 +639,16 @@ export class ChatView extends HTMLElement {
|
|
1251
639
|
return lockedString(UIStringsNotTranslate.inputDisclaimerForPerformanceAgentEnterpriseNoLogging);
|
1252
640
|
}
|
1253
641
|
return lockedString(UIStringsNotTranslate.inputDisclaimerForPerformanceAgent);
|
642
|
+
case AgentType.PERFORMANCE_INSIGHT:
|
643
|
+
// TODO(b/393061683): Define these rather than reuse the existing performance agent.
|
644
|
+
if (noLogging) {
|
645
|
+
return lockedString(UIStringsNotTranslate.inputDisclaimerForPerformanceAgentEnterpriseNoLogging);
|
646
|
+
}
|
647
|
+
return lockedString(UIStringsNotTranslate.inputDisclaimerForPerformanceAgent);
|
1254
648
|
}
|
1255
649
|
};
|
1256
650
|
|
1257
|
-
#getConsentViewContents():
|
651
|
+
#getConsentViewContents(): Lit.TemplateResult {
|
1258
652
|
const settingsLink = document.createElement('button');
|
1259
653
|
settingsLink.textContent = i18nString(UIStrings.settingsLink);
|
1260
654
|
settingsLink.classList.add('link');
|
@@ -1283,7 +677,7 @@ export class ChatView extends HTMLElement {
|
|
1283
677
|
#getUnavailableAidaAvailabilityContents(
|
1284
678
|
aidaAvailability:
|
1285
679
|
Exclude<Host.AidaClient.AidaAccessPreconditions, Host.AidaClient.AidaAccessPreconditions.AVAILABLE>):
|
1286
|
-
|
680
|
+
Lit.TemplateResult {
|
1287
681
|
switch (aidaAvailability) {
|
1288
682
|
case Host.AidaClient.AidaAccessPreconditions.NO_ACCOUNT_EMAIL:
|
1289
683
|
case Host.AidaClient.AidaAccessPreconditions.SYNC_IS_PAUSED: {
|
@@ -1295,132 +689,53 @@ export class ChatView extends HTMLElement {
|
|
1295
689
|
}
|
1296
690
|
}
|
1297
691
|
|
1298
|
-
#renderDisabledState(contents: LitHtml.TemplateResult): LitHtml.TemplateResult {
|
1299
|
-
// clang-format off
|
1300
|
-
return html`
|
1301
|
-
<div class="empty-state-container">
|
1302
|
-
<div class="disabled-view">
|
1303
|
-
<div class="disabled-view-icon-container">
|
1304
|
-
<devtools-icon .data=${{
|
1305
|
-
iconName: 'smart-assistant',
|
1306
|
-
width: 'var(--sys-size-8)',
|
1307
|
-
height: 'var(--sys-size-8)',
|
1308
|
-
} as IconButton.Icon.IconData}>
|
1309
|
-
</devtools-icon>
|
1310
|
-
</div>
|
1311
|
-
<div>
|
1312
|
-
${contents}
|
1313
|
-
</div>
|
1314
|
-
</div>
|
1315
|
-
</div>
|
1316
|
-
`;
|
1317
|
-
// clang-format on
|
1318
|
-
}
|
1319
|
-
|
1320
|
-
#renderNoAgentState(): LitHtml.TemplateResult {
|
1321
|
-
const config = Common.Settings.Settings.instance().getHostConfig();
|
1322
|
-
const featureCards: {
|
1323
|
-
icon: string,
|
1324
|
-
heading: string,
|
1325
|
-
content: LitHtml.TemplateResult,
|
1326
|
-
}[] =
|
1327
|
-
[
|
1328
|
-
...(config.devToolsFreestyler?.enabled ? [{
|
1329
|
-
icon: 'brush-2',
|
1330
|
-
heading: 'CSS styles',
|
1331
|
-
content: html`Open <button class="link" role="link" jslog=${
|
1332
|
-
VisualLogging.link('open-elements-panel').track({click: true})} @click=${() => {
|
1333
|
-
void UI.ViewManager.ViewManager.instance().showView('elements');
|
1334
|
-
}}>Elements</button> to ask about CSS styles`,
|
1335
|
-
}] :
|
1336
|
-
[]),
|
1337
|
-
...(config.devToolsAiAssistanceNetworkAgent?.enabled) ? [{
|
1338
|
-
icon: 'arrow-up-down',
|
1339
|
-
heading: 'Network',
|
1340
|
-
content: html`Open <button class="link" role="link" jslog=${
|
1341
|
-
VisualLogging.link('open-network-panel').track({click: true})} @click=${() => {
|
1342
|
-
void UI.ViewManager.ViewManager.instance().showView('network');
|
1343
|
-
}}>Network</button> to ask about a request's details`,
|
1344
|
-
}] :
|
1345
|
-
[],
|
1346
|
-
...(config.devToolsAiAssistanceFileAgent?.enabled) ? [{
|
1347
|
-
icon: 'document',
|
1348
|
-
heading: 'Files',
|
1349
|
-
content: html`Open <button class="link" role="link" jslog=${
|
1350
|
-
VisualLogging.link('open-sources-panel').track({click: true})} @click=${() => {
|
1351
|
-
void UI.ViewManager.ViewManager.instance().showView('sources');
|
1352
|
-
}}>Sources</button> to ask about a file's content`,
|
1353
|
-
}] :
|
1354
|
-
[],
|
1355
|
-
...(config.devToolsAiAssistancePerformanceAgent?.enabled ? [{
|
1356
|
-
icon: 'performance',
|
1357
|
-
heading: 'Performance',
|
1358
|
-
content: html`Open <button class="link" role="link" jslog=${
|
1359
|
-
VisualLogging.link('open-performance-panel').track({click: true})} @click=${() => {
|
1360
|
-
void UI.ViewManager.ViewManager.instance().showView('timeline');
|
1361
|
-
}}>Performance</button> to ask about a trace item`,
|
1362
|
-
}] :
|
1363
|
-
[]),
|
1364
|
-
];
|
1365
|
-
|
1366
|
-
// clang-format off
|
1367
|
-
return html`
|
1368
|
-
<div class="empty-state-container">
|
1369
|
-
<div class="header">
|
1370
|
-
<div class="icon">
|
1371
|
-
<devtools-icon
|
1372
|
-
name="smart-assistant"
|
1373
|
-
></devtools-icon>
|
1374
|
-
</div>
|
1375
|
-
<h1>${lockedString(UIStringsNotTranslate.noAgentStateText)}</h1>
|
1376
|
-
<p>To chat about an item, right-click and select <strong>Ask AI</strong></p>
|
1377
|
-
</div>
|
1378
|
-
<div class="empty-state-content">
|
1379
|
-
${featureCards.map(featureCard => html`
|
1380
|
-
<div class="feature-card">
|
1381
|
-
<div class="feature-card-icon">
|
1382
|
-
<devtools-icon name=${featureCard.icon}></devtools-icon>
|
1383
|
-
</div>
|
1384
|
-
<div class="feature-card-content">
|
1385
|
-
<h3>${featureCard.heading}</h3>
|
1386
|
-
<p>${featureCard.content}</p>
|
1387
|
-
</div>
|
1388
|
-
</div>
|
1389
|
-
`)}
|
1390
|
-
</div>
|
1391
|
-
</div>`;
|
1392
|
-
// clang-format on
|
1393
|
-
}
|
1394
|
-
|
1395
|
-
#renderMainContents(): LitHtml.TemplateResult {
|
1396
|
-
if (this.#props.state === State.CONSENT_VIEW) {
|
1397
|
-
return this.#renderDisabledState(this.#getConsentViewContents());
|
1398
|
-
}
|
1399
|
-
|
1400
|
-
if (this.#props.aidaAvailability !== Host.AidaClient.AidaAccessPreconditions.AVAILABLE) {
|
1401
|
-
return this.#renderDisabledState(this.#getUnavailableAidaAvailabilityContents(this.#props.aidaAvailability));
|
1402
|
-
}
|
1403
|
-
|
1404
|
-
if (!this.#props.agentType) {
|
1405
|
-
return this.#renderNoAgentState();
|
1406
|
-
}
|
1407
|
-
|
1408
|
-
if (this.#props.messages.length > 0) {
|
1409
|
-
return this.#renderMessages();
|
1410
|
-
}
|
1411
|
-
|
1412
|
-
return this.#renderEmptyState();
|
1413
|
-
}
|
1414
|
-
|
1415
692
|
#render(): void {
|
1416
693
|
// clang-format off
|
1417
|
-
|
694
|
+
Lit.render(html`
|
1418
695
|
<div class="chat-ui">
|
1419
696
|
<main @scroll=${this.#handleScroll} ${ref(this.#mainElementRef)}>
|
1420
|
-
${
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
697
|
+
${renderMainContents({
|
698
|
+
state: this.#props.state,
|
699
|
+
aidaAvailability: this.#props.aidaAvailability,
|
700
|
+
messages: this.#props.messages,
|
701
|
+
isLoading: this.#props.isLoading,
|
702
|
+
isReadOnly: this.#props.isReadOnly,
|
703
|
+
canShowFeedbackForm: this.#props.canShowFeedbackForm,
|
704
|
+
isTextInputDisabled: this.#isTextInputDisabled(),
|
705
|
+
suggestions: this.#getEmptyStateSuggestions(),
|
706
|
+
consentViewContents: this.#getConsentViewContents(),
|
707
|
+
userInfo: this.#props.userInfo,
|
708
|
+
markdownRenderer: this.#markdownRenderer,
|
709
|
+
agentType: this.#props.agentType,
|
710
|
+
getUnavailableAidaAvailabilityContents: this.#getUnavailableAidaAvailabilityContents,
|
711
|
+
onSuggestionClick: this.#handleSuggestionClick,
|
712
|
+
onFeedbackSubmit: this.#props.onFeedbackSubmit,
|
713
|
+
onLastAnswerMarkdownViewRef: this.#handleLastAnswerMarkdownViewRef,
|
714
|
+
onMessageContainerRef: this.#handleMessageContainerRef,
|
715
|
+
})}
|
716
|
+
${this.#props.isReadOnly
|
717
|
+
? renderReadOnlySection({
|
718
|
+
agentType: this.#props.agentType,
|
719
|
+
onNewConversation: this.#props.onNewConversation,
|
720
|
+
})
|
721
|
+
: renderChatInput({
|
722
|
+
isLoading: this.#props.isLoading,
|
723
|
+
blockedByCrossOrigin: this.#props.blockedByCrossOrigin,
|
724
|
+
isTextInputDisabled: this.#isTextInputDisabled(),
|
725
|
+
inputPlaceholderString: this.#getInputPlaceholderString(),
|
726
|
+
state: this.#props.state,
|
727
|
+
selectedContext: this.#props.selectedContext,
|
728
|
+
inspectElementToggled: this.#props.inspectElementToggled,
|
729
|
+
agentType: this.#props.agentType,
|
730
|
+
changeSummary: this.#props.changeSummary,
|
731
|
+
onContextClick: this.#props.onContextClick,
|
732
|
+
onInspectElementClick: this.#props.onInspectElementClick,
|
733
|
+
onSubmit: this.#handleSubmit,
|
734
|
+
onTextAreaKeyDown: this.#handleTextAreaKeyDown,
|
735
|
+
onCancel: this.#handleCancel,
|
736
|
+
onNewConversation: this.#props.onNewConversation,
|
737
|
+
onCancelCrossOriginChat: this.#props.onCancelCrossOriginChat,
|
738
|
+
})
|
1424
739
|
}
|
1425
740
|
</main>
|
1426
741
|
<footer class="disclaimer" jslog=${VisualLogging.section('footer')}>
|
@@ -1444,6 +759,864 @@ export class ChatView extends HTMLElement {
|
|
1444
759
|
}
|
1445
760
|
}
|
1446
761
|
|
762
|
+
function renderChangeSummary(changeSummary?: string): Lit.LitTemplate {
|
763
|
+
if (!changeSummary) {
|
764
|
+
return Lit.nothing;
|
765
|
+
}
|
766
|
+
|
767
|
+
return html`<details class="change-summary">
|
768
|
+
<summary>
|
769
|
+
<devtools-icon class="difference-icon" .name=${'difference'}
|
770
|
+
></devtools-icon>
|
771
|
+
<span class="header-text">
|
772
|
+
${lockedString(UIStringsNotTranslate.changeSummary)}
|
773
|
+
</span>
|
774
|
+
<devtools-icon
|
775
|
+
class="arrow"
|
776
|
+
.name=${'chevron-up'}
|
777
|
+
></devtools-icon>
|
778
|
+
</summary>
|
779
|
+
<devtools-code-block
|
780
|
+
.code=${changeSummary}
|
781
|
+
.codeLang=${'css'}
|
782
|
+
.displayNotice=${false}
|
783
|
+
></devtools-code-block>
|
784
|
+
</details>`;
|
785
|
+
}
|
786
|
+
|
787
|
+
function renderTextAsMarkdown(text: string, markdownRenderer: MarkdownRendererWithCodeBlock, {animate, ref: refFn}: {
|
788
|
+
animate?: boolean,
|
789
|
+
ref?: (element?: Element) => void,
|
790
|
+
} = {}): Lit.TemplateResult {
|
791
|
+
let tokens = [];
|
792
|
+
try {
|
793
|
+
tokens = Marked.Marked.lexer(text);
|
794
|
+
for (const token of tokens) {
|
795
|
+
// Try to render all the tokens to make sure that
|
796
|
+
// they all have a template defined for them. If there
|
797
|
+
// isn't any template defined for a token, we'll fallback
|
798
|
+
// to rendering the text as plain text instead of markdown.
|
799
|
+
markdownRenderer.renderToken(token);
|
800
|
+
}
|
801
|
+
} catch {
|
802
|
+
// The tokens were not parsed correctly or
|
803
|
+
// one of the tokens are not supported, so we
|
804
|
+
// continue to render this as text.
|
805
|
+
return html`${text}`;
|
806
|
+
}
|
807
|
+
|
808
|
+
// clang-format off
|
809
|
+
return html`<devtools-markdown-view
|
810
|
+
.data=${{tokens, renderer: markdownRenderer, animationEnabled: animate} as MarkdownView.MarkdownView.MarkdownViewData}
|
811
|
+
${refFn ? ref(refFn) : Lit.nothing}>
|
812
|
+
</devtools-markdown-view>`;
|
813
|
+
// clang-format on
|
814
|
+
}
|
815
|
+
|
816
|
+
function renderTitle(step: Step): Lit.LitTemplate {
|
817
|
+
const paused =
|
818
|
+
step.sideEffect ? html`<span class="paused">${lockedString(UIStringsNotTranslate.paused)}: </span>` : Lit.nothing;
|
819
|
+
const actionTitle = step.title ?? `${lockedString(UIStringsNotTranslate.investigating)}…`;
|
820
|
+
|
821
|
+
return html`<span class="title">${paused}${actionTitle}</span>`;
|
822
|
+
}
|
823
|
+
|
824
|
+
function renderStepCode(step: Step): Lit.LitTemplate {
|
825
|
+
if (!step.code && !step.output) {
|
826
|
+
return Lit.nothing;
|
827
|
+
}
|
828
|
+
|
829
|
+
// If there is no "output" yet, it means we didn't execute the code yet (e.g. maybe it is still waiting for confirmation from the user)
|
830
|
+
// thus we show "Code to execute" text rather than "Code executed" text on the heading of the code block.
|
831
|
+
const codeHeadingText = (step.output && !step.canceled) ? lockedString(UIStringsNotTranslate.codeExecuted) :
|
832
|
+
lockedString(UIStringsNotTranslate.codeToExecute);
|
833
|
+
|
834
|
+
// If there is output, we don't show notice on this code block and instead show
|
835
|
+
// it in the data returned code block.
|
836
|
+
// clang-format off
|
837
|
+
const code = step.code ? html`<div class="action-result">
|
838
|
+
<devtools-code-block
|
839
|
+
.code=${step.code.trim()}
|
840
|
+
.codeLang=${'js'}
|
841
|
+
.displayNotice=${!Boolean(step.output)}
|
842
|
+
.header=${codeHeadingText}
|
843
|
+
.showCopyButton=${true}
|
844
|
+
></devtools-code-block>
|
845
|
+
</div>` :
|
846
|
+
Lit.nothing;
|
847
|
+
const output = step.output ? html`<div class="js-code-output">
|
848
|
+
<devtools-code-block
|
849
|
+
.code=${step.output}
|
850
|
+
.codeLang=${'js'}
|
851
|
+
.displayNotice=${true}
|
852
|
+
.header=${lockedString(UIStringsNotTranslate.dataReturned)}
|
853
|
+
.showCopyButton=${false}
|
854
|
+
></devtools-code-block>
|
855
|
+
</div>` :
|
856
|
+
Lit.nothing;
|
857
|
+
|
858
|
+
return html`<div class="step-code">${code}${output}</div>`;
|
859
|
+
// clang-format on
|
860
|
+
}
|
861
|
+
|
862
|
+
function renderStepDetails({
|
863
|
+
step,
|
864
|
+
markdownRenderer,
|
865
|
+
isLast,
|
866
|
+
}: {
|
867
|
+
step: Step,
|
868
|
+
markdownRenderer: MarkdownRendererWithCodeBlock,
|
869
|
+
isLast: boolean,
|
870
|
+
}): Lit.LitTemplate {
|
871
|
+
const sideEffects = isLast && step.sideEffect ? renderSideEffectConfirmationUi(step) : Lit.nothing;
|
872
|
+
const thought = step.thought ? html`<p>${renderTextAsMarkdown(step.thought, markdownRenderer)}</p>` : Lit.nothing;
|
873
|
+
|
874
|
+
// clang-format off
|
875
|
+
const contextDetails = step.contextDetails ?
|
876
|
+
html`${Lit.Directives.repeat(
|
877
|
+
step.contextDetails,
|
878
|
+
contextDetail => {
|
879
|
+
return html`<div class="context-details">
|
880
|
+
<devtools-code-block
|
881
|
+
.code=${contextDetail.text}
|
882
|
+
.codeLang=${contextDetail.codeLang || ''}
|
883
|
+
.displayNotice=${false}
|
884
|
+
.header=${contextDetail.title}
|
885
|
+
.showCopyButton=${true}
|
886
|
+
></devtools-code-block>
|
887
|
+
</div>`;
|
888
|
+
},
|
889
|
+
)}` : Lit.nothing;
|
890
|
+
|
891
|
+
return html`<div class="step-details">
|
892
|
+
${thought}
|
893
|
+
${renderStepCode(step)}
|
894
|
+
${sideEffects}
|
895
|
+
${contextDetails}
|
896
|
+
</div>`;
|
897
|
+
// clang-format on
|
898
|
+
}
|
899
|
+
|
900
|
+
function renderStepBadge({step, isLoading, isLast}: {
|
901
|
+
step: Step,
|
902
|
+
isLoading: boolean,
|
903
|
+
isLast: boolean,
|
904
|
+
}): Lit.LitTemplate {
|
905
|
+
if (isLoading && isLast && !step.sideEffect) {
|
906
|
+
return html`<devtools-spinner></devtools-spinner>`;
|
907
|
+
}
|
908
|
+
|
909
|
+
let iconName: string = 'checkmark';
|
910
|
+
let ariaLabel: string|undefined = lockedString(UIStringsNotTranslate.completed);
|
911
|
+
let role: 'button'|undefined = 'button';
|
912
|
+
if (isLast && step.sideEffect) {
|
913
|
+
role = undefined;
|
914
|
+
ariaLabel = undefined;
|
915
|
+
iconName = 'pause-circle';
|
916
|
+
} else if (step.canceled) {
|
917
|
+
ariaLabel = lockedString(UIStringsNotTranslate.canceled);
|
918
|
+
iconName = 'cross';
|
919
|
+
}
|
920
|
+
|
921
|
+
return html`<devtools-icon
|
922
|
+
class="indicator"
|
923
|
+
role=${ifDefined(role)}
|
924
|
+
aria-label=${ifDefined(ariaLabel)}
|
925
|
+
.name=${iconName}
|
926
|
+
></devtools-icon>`;
|
927
|
+
}
|
928
|
+
|
929
|
+
function renderStep({step, isLoading, markdownRenderer, isLast}: {
|
930
|
+
step: Step,
|
931
|
+
isLoading: boolean,
|
932
|
+
markdownRenderer: MarkdownRendererWithCodeBlock,
|
933
|
+
isLast: boolean,
|
934
|
+
}): Lit.LitTemplate {
|
935
|
+
const stepClasses = Lit.Directives.classMap({
|
936
|
+
step: true,
|
937
|
+
empty: !step.thought && !step.code && !step.contextDetails,
|
938
|
+
paused: Boolean(step.sideEffect),
|
939
|
+
canceled: Boolean(step.canceled),
|
940
|
+
});
|
941
|
+
// clang-format off
|
942
|
+
return html`
|
943
|
+
<details class=${stepClasses}
|
944
|
+
jslog=${VisualLogging.section('step')}
|
945
|
+
.open=${Boolean(step.sideEffect)}>
|
946
|
+
<summary>
|
947
|
+
<div class="summary">
|
948
|
+
${renderStepBadge({ step, isLoading, isLast })}
|
949
|
+
${renderTitle(step)}
|
950
|
+
<devtools-icon
|
951
|
+
class="arrow"
|
952
|
+
.name=${'chevron-down'}
|
953
|
+
></devtools-icon>
|
954
|
+
</div>
|
955
|
+
</summary>
|
956
|
+
${renderStepDetails({step, markdownRenderer, isLast})}
|
957
|
+
</details>`;
|
958
|
+
// clang-format on
|
959
|
+
}
|
960
|
+
|
961
|
+
function renderSideEffectConfirmationUi(step: Step): Lit.LitTemplate {
|
962
|
+
if (!step.sideEffect) {
|
963
|
+
return Lit.nothing;
|
964
|
+
}
|
965
|
+
|
966
|
+
// clang-format off
|
967
|
+
return html`<div
|
968
|
+
class="side-effect-confirmation"
|
969
|
+
jslog=${VisualLogging.section('side-effect-confirmation')}
|
970
|
+
>
|
971
|
+
<p>${lockedString(UIStringsNotTranslate.sideEffectConfirmationDescription)}</p>
|
972
|
+
<div class="side-effect-buttons-container">
|
973
|
+
<devtools-button
|
974
|
+
.data=${
|
975
|
+
{
|
976
|
+
variant: Buttons.Button.Variant.OUTLINED,
|
977
|
+
jslogContext: 'decline-execute-code',
|
978
|
+
} as Buttons.Button.ButtonData
|
979
|
+
}
|
980
|
+
@click=${() => step.sideEffect?.onAnswer(false)}
|
981
|
+
>${lockedString(
|
982
|
+
UIStringsNotTranslate.negativeSideEffectConfirmation,
|
983
|
+
)}</devtools-button>
|
984
|
+
<devtools-button
|
985
|
+
.data=${
|
986
|
+
{
|
987
|
+
variant: Buttons.Button.Variant.PRIMARY,
|
988
|
+
jslogContext: 'accept-execute-code',
|
989
|
+
iconName: 'play',
|
990
|
+
} as Buttons.Button.ButtonData
|
991
|
+
}
|
992
|
+
@click=${() => step.sideEffect?.onAnswer(true)}
|
993
|
+
>${
|
994
|
+
lockedString(UIStringsNotTranslate.positiveSideEffectConfirmation)
|
995
|
+
}</devtools-button>
|
996
|
+
</div>
|
997
|
+
</div>`;
|
998
|
+
// clang-format on
|
999
|
+
}
|
1000
|
+
|
1001
|
+
function renderError(message: ModelChatMessage): Lit.LitTemplate {
|
1002
|
+
if (message.error) {
|
1003
|
+
let errorMessage;
|
1004
|
+
switch (message.error) {
|
1005
|
+
case ErrorType.UNKNOWN:
|
1006
|
+
case ErrorType.BLOCK:
|
1007
|
+
errorMessage = UIStringsNotTranslate.systemError;
|
1008
|
+
break;
|
1009
|
+
case ErrorType.MAX_STEPS:
|
1010
|
+
errorMessage = UIStringsNotTranslate.maxStepsError;
|
1011
|
+
break;
|
1012
|
+
case ErrorType.ABORT:
|
1013
|
+
return html`<p class="aborted" jslog=${VisualLogging.section('aborted')}>${
|
1014
|
+
lockedString(UIStringsNotTranslate.stoppedResponse)}</p>`;
|
1015
|
+
}
|
1016
|
+
|
1017
|
+
return html`<p class="error" jslog=${VisualLogging.section('error')}>${lockedString(errorMessage)}</p>`;
|
1018
|
+
}
|
1019
|
+
|
1020
|
+
return Lit.nothing;
|
1021
|
+
}
|
1022
|
+
|
1023
|
+
function renderChatMessage({
|
1024
|
+
message,
|
1025
|
+
isLoading,
|
1026
|
+
isReadOnly,
|
1027
|
+
canShowFeedbackForm,
|
1028
|
+
isLast,
|
1029
|
+
userInfo,
|
1030
|
+
markdownRenderer,
|
1031
|
+
onSuggestionClick,
|
1032
|
+
onFeedbackSubmit,
|
1033
|
+
onLastAnswerMarkdownViewRef,
|
1034
|
+
}: {
|
1035
|
+
message: ChatMessage,
|
1036
|
+
isLoading: boolean,
|
1037
|
+
isReadOnly: boolean,
|
1038
|
+
canShowFeedbackForm: boolean,
|
1039
|
+
isLast: boolean,
|
1040
|
+
userInfo: Pick<Host.InspectorFrontendHostAPI.SyncInformation, 'accountImage'|'accountFullName'>,
|
1041
|
+
markdownRenderer: MarkdownRendererWithCodeBlock,
|
1042
|
+
onSuggestionClick: (suggestion: string) => void,
|
1043
|
+
onFeedbackSubmit: (rpcId: Host.AidaClient.RpcGlobalId, rate: Host.AidaClient.Rating, feedback?: string) => void,
|
1044
|
+
onLastAnswerMarkdownViewRef: (el: Element|undefined) => void,
|
1045
|
+
}): Lit.TemplateResult {
|
1046
|
+
if (message.entity === ChatMessageEntity.USER) {
|
1047
|
+
const name = userInfo.accountFullName || lockedString(UIStringsNotTranslate.you);
|
1048
|
+
const image = userInfo.accountImage ?
|
1049
|
+
html`<img src="data:image/png;base64, ${userInfo.accountImage}" alt="Account avatar" />` :
|
1050
|
+
html`<devtools-icon
|
1051
|
+
.name=${'profile'}
|
1052
|
+
></devtools-icon>`;
|
1053
|
+
// clang-format off
|
1054
|
+
return html`<section
|
1055
|
+
class="chat-message query"
|
1056
|
+
jslog=${VisualLogging.section('question')}
|
1057
|
+
>
|
1058
|
+
<div class="message-info">
|
1059
|
+
${image}
|
1060
|
+
<div class="message-name">
|
1061
|
+
<h2>${name}</h2>
|
1062
|
+
</div>
|
1063
|
+
</div>
|
1064
|
+
<div class="message-content">${renderTextAsMarkdown(message.text, markdownRenderer)}</div>
|
1065
|
+
</section>`;
|
1066
|
+
// clang-format on
|
1067
|
+
}
|
1068
|
+
|
1069
|
+
// clang-format off
|
1070
|
+
return html`
|
1071
|
+
<section
|
1072
|
+
class="chat-message answer"
|
1073
|
+
jslog=${VisualLogging.section('answer')}
|
1074
|
+
>
|
1075
|
+
<div class="message-info">
|
1076
|
+
<devtools-icon name="smart-assistant"></devtools-icon>
|
1077
|
+
<div class="message-name">
|
1078
|
+
<h2>${lockedString(UIStringsNotTranslate.ai)}</h2>
|
1079
|
+
</div>
|
1080
|
+
</div>
|
1081
|
+
${Lit.Directives.repeat(
|
1082
|
+
message.steps,
|
1083
|
+
(_, index) => index,
|
1084
|
+
step => {
|
1085
|
+
return renderStep({
|
1086
|
+
step,
|
1087
|
+
isLoading,
|
1088
|
+
markdownRenderer,
|
1089
|
+
isLast: [...message.steps.values()].at(-1) === step && isLast,
|
1090
|
+
});
|
1091
|
+
},
|
1092
|
+
)}
|
1093
|
+
${message.answer
|
1094
|
+
? html`<p>${renderTextAsMarkdown(message.answer, markdownRenderer, { animate: !isReadOnly, ref: onLastAnswerMarkdownViewRef })}</p>`
|
1095
|
+
: Lit.nothing}
|
1096
|
+
${renderError(message)}
|
1097
|
+
${isLast && isLoading
|
1098
|
+
? Lit.nothing
|
1099
|
+
: html`<devtools-widget class="actions" .widgetConfig=${UI.Widget.widgetConfig(UserActionRow, {
|
1100
|
+
showRateButtons: message.rpcId !== undefined,
|
1101
|
+
onFeedbackSubmit: (rating: Host.AidaClient.Rating, feedback: string) => {
|
1102
|
+
if (!message.rpcId) {
|
1103
|
+
return;
|
1104
|
+
}
|
1105
|
+
onFeedbackSubmit(message.rpcId, rating, feedback);
|
1106
|
+
},
|
1107
|
+
suggestions: isLast ? message.suggestions : undefined,
|
1108
|
+
onSuggestionClick,
|
1109
|
+
canShowFeedbackForm,
|
1110
|
+
})}></devtools-widget>`
|
1111
|
+
}
|
1112
|
+
</section>
|
1113
|
+
`;
|
1114
|
+
// clang-format on
|
1115
|
+
}
|
1116
|
+
|
1117
|
+
function renderSelection({
|
1118
|
+
selectedContext,
|
1119
|
+
inspectElementToggled,
|
1120
|
+
agentType,
|
1121
|
+
onContextClick,
|
1122
|
+
onInspectElementClick,
|
1123
|
+
}: {
|
1124
|
+
selectedContext: ConversationContext<unknown>|null,
|
1125
|
+
inspectElementToggled: boolean,
|
1126
|
+
agentType?: AgentType, onContextClick: () => void | Promise<void>, onInspectElementClick: () => void,
|
1127
|
+
}): Lit.LitTemplate {
|
1128
|
+
if (!agentType) {
|
1129
|
+
return Lit.nothing;
|
1130
|
+
}
|
1131
|
+
|
1132
|
+
// TODO: currently the picker behavior is SDKNode specific.
|
1133
|
+
const hasPickerBehavior = agentType === AgentType.STYLING;
|
1134
|
+
|
1135
|
+
const resourceClass = Lit.Directives.classMap({
|
1136
|
+
'not-selected': !selectedContext,
|
1137
|
+
'resource-link': true,
|
1138
|
+
'allow-overflow': hasPickerBehavior,
|
1139
|
+
});
|
1140
|
+
|
1141
|
+
if (!selectedContext && !hasPickerBehavior) {
|
1142
|
+
return Lit.nothing;
|
1143
|
+
}
|
1144
|
+
|
1145
|
+
const icon = selectedContext?.getIcon() ?? Lit.nothing;
|
1146
|
+
|
1147
|
+
const handleKeyDown = (ev: KeyboardEvent): void => {
|
1148
|
+
if (ev.key === 'Enter') {
|
1149
|
+
void onContextClick();
|
1150
|
+
}
|
1151
|
+
};
|
1152
|
+
|
1153
|
+
// clang-format off
|
1154
|
+
return html`<div class="select-element">
|
1155
|
+
${
|
1156
|
+
hasPickerBehavior ? html`
|
1157
|
+
<devtools-button
|
1158
|
+
.data=${{
|
1159
|
+
variant: Buttons.Button.Variant.ICON_TOGGLE,
|
1160
|
+
size: Buttons.Button.Size.REGULAR,
|
1161
|
+
iconName: 'select-element',
|
1162
|
+
toggledIconName: 'select-element',
|
1163
|
+
toggleType: Buttons.Button.ToggleType.PRIMARY,
|
1164
|
+
toggled: inspectElementToggled,
|
1165
|
+
title: lockedString(UIStringsNotTranslate.selectAnElement),
|
1166
|
+
jslogContext: 'select-element',
|
1167
|
+
} as Buttons.Button.ButtonData}
|
1168
|
+
@click=${onInspectElementClick}
|
1169
|
+
></devtools-button>
|
1170
|
+
` : Lit.nothing
|
1171
|
+
}
|
1172
|
+
<div
|
1173
|
+
role=button
|
1174
|
+
class=${resourceClass}
|
1175
|
+
tabindex=${hasPickerBehavior ? '-1' : '0'}
|
1176
|
+
@click=${onContextClick}
|
1177
|
+
@keydown=${handleKeyDown}
|
1178
|
+
>
|
1179
|
+
${icon}${selectedContext?.getTitle() ?? html`<span>${
|
1180
|
+
lockedString(UIStringsNotTranslate.noElementSelected)
|
1181
|
+
}</span>`}
|
1182
|
+
</div>
|
1183
|
+
</div>`;
|
1184
|
+
// clang-format on
|
1185
|
+
}
|
1186
|
+
|
1187
|
+
function renderMessages({
|
1188
|
+
messages,
|
1189
|
+
isLoading,
|
1190
|
+
isReadOnly,
|
1191
|
+
canShowFeedbackForm,
|
1192
|
+
userInfo,
|
1193
|
+
markdownRenderer,
|
1194
|
+
onSuggestionClick,
|
1195
|
+
onFeedbackSubmit,
|
1196
|
+
onLastAnswerMarkdownViewRef,
|
1197
|
+
onMessageContainerRef,
|
1198
|
+
}: {
|
1199
|
+
messages: ChatMessage[],
|
1200
|
+
isLoading: boolean,
|
1201
|
+
isReadOnly: boolean,
|
1202
|
+
canShowFeedbackForm: boolean,
|
1203
|
+
userInfo: Pick<Host.InspectorFrontendHostAPI.SyncInformation, 'accountImage'|'accountFullName'>,
|
1204
|
+
markdownRenderer: MarkdownRendererWithCodeBlock,
|
1205
|
+
onSuggestionClick: (suggestion: string) => void,
|
1206
|
+
onFeedbackSubmit: (rpcId: Host.AidaClient.RpcGlobalId, rate: Host.AidaClient.Rating, feedback?: string) => void,
|
1207
|
+
onLastAnswerMarkdownViewRef: (el: Element|undefined) => void,
|
1208
|
+
onMessageContainerRef: (el: Element|undefined) => void,
|
1209
|
+
}): Lit.TemplateResult {
|
1210
|
+
// clang-format off
|
1211
|
+
return html`
|
1212
|
+
<div class="messages-container" ${ref(onMessageContainerRef)}>
|
1213
|
+
${messages.map((message, _, array) =>
|
1214
|
+
renderChatMessage({
|
1215
|
+
message,
|
1216
|
+
isLoading,
|
1217
|
+
isReadOnly,
|
1218
|
+
canShowFeedbackForm,
|
1219
|
+
isLast: array.at(-1) === message,
|
1220
|
+
userInfo,
|
1221
|
+
markdownRenderer,
|
1222
|
+
onSuggestionClick,
|
1223
|
+
onFeedbackSubmit,
|
1224
|
+
onLastAnswerMarkdownViewRef,
|
1225
|
+
}),
|
1226
|
+
)}
|
1227
|
+
</div>
|
1228
|
+
`;
|
1229
|
+
// clang-format on
|
1230
|
+
}
|
1231
|
+
|
1232
|
+
function renderEmptyState({isTextInputDisabled, suggestions, onSuggestionClick}: {
|
1233
|
+
isTextInputDisabled: boolean,
|
1234
|
+
suggestions: string[],
|
1235
|
+
onSuggestionClick: (suggestion: string) => void,
|
1236
|
+
}): Lit.TemplateResult {
|
1237
|
+
// clang-format off
|
1238
|
+
return html`<div class="empty-state-container">
|
1239
|
+
<div class="header">
|
1240
|
+
<div class="icon">
|
1241
|
+
<devtools-icon
|
1242
|
+
name="smart-assistant"
|
1243
|
+
></devtools-icon>
|
1244
|
+
</div>
|
1245
|
+
<h1>${lockedString(UIStringsNotTranslate.emptyStateText)}</h1>
|
1246
|
+
</div>
|
1247
|
+
<div class="empty-state-content">
|
1248
|
+
${suggestions.map(suggestion => {
|
1249
|
+
return html`<devtools-button
|
1250
|
+
class="suggestion"
|
1251
|
+
@click=${() => onSuggestionClick(suggestion)}
|
1252
|
+
.data=${
|
1253
|
+
{
|
1254
|
+
variant: Buttons.Button.Variant.OUTLINED,
|
1255
|
+
size: Buttons.Button.Size.REGULAR,
|
1256
|
+
title: suggestion,
|
1257
|
+
jslogContext: 'suggestion',
|
1258
|
+
disabled: isTextInputDisabled,
|
1259
|
+
} as Buttons.Button.ButtonData
|
1260
|
+
}
|
1261
|
+
>${suggestion}</devtools-button>`;
|
1262
|
+
})}
|
1263
|
+
</div>
|
1264
|
+
</div>`;
|
1265
|
+
// clang-format on
|
1266
|
+
}
|
1267
|
+
|
1268
|
+
function renderReadOnlySection({onNewConversation, agentType}: {
|
1269
|
+
onNewConversation: () => void,
|
1270
|
+
agentType?: AgentType,
|
1271
|
+
}): Lit.LitTemplate {
|
1272
|
+
if (!agentType) {
|
1273
|
+
return Lit.nothing;
|
1274
|
+
}
|
1275
|
+
|
1276
|
+
// clang-format off
|
1277
|
+
return html`<div
|
1278
|
+
class="chat-readonly-container"
|
1279
|
+
jslog=${VisualLogging.section('read-only')}
|
1280
|
+
>
|
1281
|
+
<span>${lockedString(UIStringsNotTranslate.pastConversation)}</span>
|
1282
|
+
<devtools-button
|
1283
|
+
aria-label=${lockedString(UIStringsNotTranslate.startNewChat)}
|
1284
|
+
class="chat-inline-button"
|
1285
|
+
@click=${onNewConversation}
|
1286
|
+
.data=${{
|
1287
|
+
variant: Buttons.Button.Variant.TEXT,
|
1288
|
+
title: lockedString(UIStringsNotTranslate.startNewChat),
|
1289
|
+
jslogContext: 'start-new-chat',
|
1290
|
+
} as Buttons.Button.ButtonData}
|
1291
|
+
>${lockedString(UIStringsNotTranslate.startNewChat)}</devtools-button>
|
1292
|
+
</div>`;
|
1293
|
+
// clang-format on
|
1294
|
+
}
|
1295
|
+
|
1296
|
+
function renderChatInputButtons(
|
1297
|
+
{isLoading, blockedByCrossOrigin, isTextInputDisabled, onCancel, onNewConversation, onCancelCrossOriginChat}: {
|
1298
|
+
isLoading: boolean,
|
1299
|
+
blockedByCrossOrigin: boolean,
|
1300
|
+
isTextInputDisabled: boolean,
|
1301
|
+
onCancel: (ev: SubmitEvent) => void,
|
1302
|
+
onNewConversation: () => void,
|
1303
|
+
onCancelCrossOriginChat?: () => void,
|
1304
|
+
}): Lit.TemplateResult {
|
1305
|
+
if (isLoading) {
|
1306
|
+
// clang-format off
|
1307
|
+
return html`<devtools-button
|
1308
|
+
class="chat-input-button"
|
1309
|
+
aria-label=${lockedString(UIStringsNotTranslate.cancelButtonTitle)}
|
1310
|
+
@click=${onCancel}
|
1311
|
+
.data=${
|
1312
|
+
{
|
1313
|
+
variant: Buttons.Button.Variant.ICON,
|
1314
|
+
size: Buttons.Button.Size.REGULAR,
|
1315
|
+
iconName: 'record-stop',
|
1316
|
+
title: lockedString(UIStringsNotTranslate.cancelButtonTitle),
|
1317
|
+
jslogContext: 'stop',
|
1318
|
+
} as Buttons.Button.ButtonData
|
1319
|
+
}
|
1320
|
+
></devtools-button>`;
|
1321
|
+
// clang-format on
|
1322
|
+
}
|
1323
|
+
if (blockedByCrossOrigin) {
|
1324
|
+
// clang-format off
|
1325
|
+
return html`
|
1326
|
+
${blockedByCrossOrigin && Boolean(onCancelCrossOriginChat) ? html`<devtools-button
|
1327
|
+
class="chat-cancel-context-button"
|
1328
|
+
@click=${onCancelCrossOriginChat}
|
1329
|
+
.data=${
|
1330
|
+
{
|
1331
|
+
variant: Buttons.Button.Variant.TEXT,
|
1332
|
+
size: Buttons.Button.Size.REGULAR,
|
1333
|
+
jslogContext: 'cancel-cross-origin-context-chat',
|
1334
|
+
} as Buttons.Button.ButtonData
|
1335
|
+
}
|
1336
|
+
>${lockedString(UIStringsNotTranslate.cancelButtonTitle)}</devtools-button>` : Lit.nothing}
|
1337
|
+
<devtools-button
|
1338
|
+
class="chat-input-button"
|
1339
|
+
aria-label=${lockedString(UIStringsNotTranslate.startNewChat)}
|
1340
|
+
@click=${onNewConversation}
|
1341
|
+
.data=${
|
1342
|
+
{
|
1343
|
+
variant: Buttons.Button.Variant.PRIMARY,
|
1344
|
+
size: Buttons.Button.Size.REGULAR,
|
1345
|
+
title: lockedString(UIStringsNotTranslate.startNewChat),
|
1346
|
+
jslogContext: 'start-new-chat',
|
1347
|
+
} as Buttons.Button.ButtonData
|
1348
|
+
}
|
1349
|
+
>${lockedString(UIStringsNotTranslate.startNewChat)}</devtools-button>
|
1350
|
+
`;
|
1351
|
+
// clang-format on
|
1352
|
+
}
|
1353
|
+
// clang-format off
|
1354
|
+
return html`<devtools-button
|
1355
|
+
class="chat-input-button"
|
1356
|
+
aria-label=${lockedString(UIStringsNotTranslate.sendButtonTitle)}
|
1357
|
+
.data=${
|
1358
|
+
{
|
1359
|
+
type: 'submit',
|
1360
|
+
variant: Buttons.Button.Variant.ICON,
|
1361
|
+
size: Buttons.Button.Size.REGULAR,
|
1362
|
+
disabled: isTextInputDisabled,
|
1363
|
+
iconName: 'send',
|
1364
|
+
title: lockedString(UIStringsNotTranslate.sendButtonTitle),
|
1365
|
+
jslogContext: 'send',
|
1366
|
+
} as Buttons.Button.ButtonData
|
1367
|
+
}
|
1368
|
+
></devtools-button>`;
|
1369
|
+
}
|
1370
|
+
|
1371
|
+
function renderChatInput({
|
1372
|
+
isLoading,
|
1373
|
+
blockedByCrossOrigin,
|
1374
|
+
isTextInputDisabled,
|
1375
|
+
inputPlaceholderString,
|
1376
|
+
state,
|
1377
|
+
selectedContext,
|
1378
|
+
inspectElementToggled,
|
1379
|
+
agentType,
|
1380
|
+
changeSummary,
|
1381
|
+
onContextClick,
|
1382
|
+
onInspectElementClick,
|
1383
|
+
onSubmit,
|
1384
|
+
onTextAreaKeyDown,
|
1385
|
+
onCancel,
|
1386
|
+
onNewConversation,
|
1387
|
+
onCancelCrossOriginChat,
|
1388
|
+
}: {
|
1389
|
+
isLoading: boolean,
|
1390
|
+
blockedByCrossOrigin: boolean,
|
1391
|
+
isTextInputDisabled: boolean,
|
1392
|
+
inputPlaceholderString: Platform.UIString.LocalizedString,
|
1393
|
+
state: State,
|
1394
|
+
selectedContext: ConversationContext<unknown> | null,
|
1395
|
+
inspectElementToggled: boolean,
|
1396
|
+
agentType?: AgentType,
|
1397
|
+
changeSummary?: string,
|
1398
|
+
onContextClick: () => void | Promise<void>,
|
1399
|
+
onInspectElementClick: () => void,
|
1400
|
+
onSubmit: (ev: SubmitEvent) => void,
|
1401
|
+
onTextAreaKeyDown: (ev: KeyboardEvent) => void,
|
1402
|
+
onCancel: (ev: SubmitEvent) => void,
|
1403
|
+
onNewConversation: () => void,
|
1404
|
+
onCancelCrossOriginChat?: () => void,
|
1405
|
+
}): Lit.LitTemplate {
|
1406
|
+
if (!agentType) {
|
1407
|
+
return Lit.nothing;
|
1408
|
+
}
|
1409
|
+
|
1410
|
+
const cls = Lit.Directives.classMap({
|
1411
|
+
'chat-input': true,
|
1412
|
+
'two-big-buttons': blockedByCrossOrigin,
|
1413
|
+
});
|
1414
|
+
|
1415
|
+
// clang-format off
|
1416
|
+
return html`
|
1417
|
+
<form class="input-form" @submit=${onSubmit}>
|
1418
|
+
<div class="input-form-shadow-container">
|
1419
|
+
<div class="input-form-shadow"></div>
|
1420
|
+
</div>
|
1421
|
+
${state !== State.CONSENT_VIEW ? html`
|
1422
|
+
<div class="input-header">
|
1423
|
+
<div class="header-link-container">
|
1424
|
+
${renderSelection({
|
1425
|
+
selectedContext,
|
1426
|
+
inspectElementToggled,
|
1427
|
+
agentType,
|
1428
|
+
onContextClick,
|
1429
|
+
onInspectElementClick,
|
1430
|
+
})}
|
1431
|
+
</div>
|
1432
|
+
${renderChangeSummary(changeSummary)}
|
1433
|
+
</div>
|
1434
|
+
` : Lit.nothing}
|
1435
|
+
<div class="chat-input-container">
|
1436
|
+
<textarea class=${cls}
|
1437
|
+
.disabled=${isTextInputDisabled}
|
1438
|
+
wrap="hard"
|
1439
|
+
maxlength="10000"
|
1440
|
+
@keydown=${onTextAreaKeyDown}
|
1441
|
+
placeholder=${inputPlaceholderString}
|
1442
|
+
jslog=${VisualLogging.textField('query').track({ keydown: 'Enter' })}
|
1443
|
+
></textarea>
|
1444
|
+
<div class="chat-input-buttons">
|
1445
|
+
${renderChatInputButtons({ isLoading, blockedByCrossOrigin, isTextInputDisabled, onCancel, onNewConversation, onCancelCrossOriginChat })}
|
1446
|
+
</div>
|
1447
|
+
</div>
|
1448
|
+
</form>`;
|
1449
|
+
// clang-format on
|
1450
|
+
}
|
1451
|
+
|
1452
|
+
function renderDisabledState(contents: Lit.TemplateResult): Lit.TemplateResult {
|
1453
|
+
// clang-format off
|
1454
|
+
return html`
|
1455
|
+
<div class="empty-state-container">
|
1456
|
+
<div class="disabled-view">
|
1457
|
+
<div class="disabled-view-icon-container">
|
1458
|
+
<devtools-icon .data=${{
|
1459
|
+
iconName: 'smart-assistant',
|
1460
|
+
width: 'var(--sys-size-8)',
|
1461
|
+
height: 'var(--sys-size-8)',
|
1462
|
+
} as IconButton.Icon.IconData}>
|
1463
|
+
</devtools-icon>
|
1464
|
+
</div>
|
1465
|
+
<div>
|
1466
|
+
${contents}
|
1467
|
+
</div>
|
1468
|
+
</div>
|
1469
|
+
</div>
|
1470
|
+
`;
|
1471
|
+
// clang-format on
|
1472
|
+
}
|
1473
|
+
|
1474
|
+
function renderNoAgentState(): Lit.TemplateResult {
|
1475
|
+
const config = Common.Settings.Settings.instance().getHostConfig();
|
1476
|
+
const featureCards: {
|
1477
|
+
icon: string,
|
1478
|
+
heading: string,
|
1479
|
+
content: Lit.TemplateResult,
|
1480
|
+
}[] =
|
1481
|
+
[
|
1482
|
+
...(config.devToolsFreestyler?.enabled ? [{
|
1483
|
+
icon: 'brush-2',
|
1484
|
+
heading: 'CSS styles',
|
1485
|
+
content: html`Open <button class="link" role="link" jslog=${
|
1486
|
+
VisualLogging.link('open-elements-panel').track({click: true})} @click=${() => {
|
1487
|
+
void UI.ViewManager.ViewManager.instance().showView('elements');
|
1488
|
+
}}>Elements</button> to ask about CSS styles`,
|
1489
|
+
}] :
|
1490
|
+
[]),
|
1491
|
+
...(config.devToolsAiAssistanceNetworkAgent?.enabled) ? [{
|
1492
|
+
icon: 'arrow-up-down',
|
1493
|
+
heading: 'Network',
|
1494
|
+
content: html`Open <button class="link" role="link" jslog=${
|
1495
|
+
VisualLogging.link('open-network-panel').track({click: true})} @click=${() => {
|
1496
|
+
void UI.ViewManager.ViewManager.instance().showView('network');
|
1497
|
+
}}>Network</button> to ask about a request's details`,
|
1498
|
+
}] :
|
1499
|
+
[],
|
1500
|
+
...(config.devToolsAiAssistanceFileAgent?.enabled) ? [{
|
1501
|
+
icon: 'document',
|
1502
|
+
heading: 'Files',
|
1503
|
+
content: html`Open <button class="link" role="link" jslog=${
|
1504
|
+
VisualLogging.link('open-sources-panel').track({click: true})} @click=${() => {
|
1505
|
+
void UI.ViewManager.ViewManager.instance().showView('sources');
|
1506
|
+
}}>Sources</button> to ask about a file's content`,
|
1507
|
+
}] :
|
1508
|
+
[],
|
1509
|
+
...(config.devToolsAiAssistancePerformanceAgent?.enabled ? [{
|
1510
|
+
icon: 'performance',
|
1511
|
+
heading: 'Performance',
|
1512
|
+
content: html`Open <button class="link" role="link" jslog=${
|
1513
|
+
VisualLogging.link('open-performance-panel').track({click: true})} @click=${() => {
|
1514
|
+
void UI.ViewManager.ViewManager.instance().showView('timeline');
|
1515
|
+
}}>Performance</button> to ask about a trace item`,
|
1516
|
+
}] :
|
1517
|
+
[]),
|
1518
|
+
];
|
1519
|
+
|
1520
|
+
// clang-format off
|
1521
|
+
return html`
|
1522
|
+
<div class="empty-state-container">
|
1523
|
+
<div class="header">
|
1524
|
+
<div class="icon">
|
1525
|
+
<devtools-icon
|
1526
|
+
name="smart-assistant"
|
1527
|
+
></devtools-icon>
|
1528
|
+
</div>
|
1529
|
+
<h1>${lockedString(UIStringsNotTranslate.noAgentStateText)}</h1>
|
1530
|
+
<p>To chat about an item, right-click and select <strong>Ask AI</strong></p>
|
1531
|
+
</div>
|
1532
|
+
<div class="empty-state-content">
|
1533
|
+
${featureCards.map(featureCard => html`
|
1534
|
+
<div class="feature-card">
|
1535
|
+
<div class="feature-card-icon">
|
1536
|
+
<devtools-icon name=${featureCard.icon}></devtools-icon>
|
1537
|
+
</div>
|
1538
|
+
<div class="feature-card-content">
|
1539
|
+
<h3>${featureCard.heading}</h3>
|
1540
|
+
<p>${featureCard.content}</p>
|
1541
|
+
</div>
|
1542
|
+
</div>
|
1543
|
+
`)}
|
1544
|
+
</div>
|
1545
|
+
</div>`;
|
1546
|
+
// clang-format on
|
1547
|
+
}
|
1548
|
+
|
1549
|
+
function renderMainContents({
|
1550
|
+
state,
|
1551
|
+
aidaAvailability,
|
1552
|
+
messages,
|
1553
|
+
isLoading,
|
1554
|
+
isReadOnly,
|
1555
|
+
canShowFeedbackForm,
|
1556
|
+
isTextInputDisabled,
|
1557
|
+
suggestions,
|
1558
|
+
consentViewContents,
|
1559
|
+
userInfo,
|
1560
|
+
markdownRenderer,
|
1561
|
+
agentType,
|
1562
|
+
getUnavailableAidaAvailabilityContents,
|
1563
|
+
onSuggestionClick,
|
1564
|
+
onFeedbackSubmit,
|
1565
|
+
onLastAnswerMarkdownViewRef,
|
1566
|
+
onMessageContainerRef,
|
1567
|
+
}: {
|
1568
|
+
state: State,
|
1569
|
+
aidaAvailability: Host.AidaClient.AidaAccessPreconditions,
|
1570
|
+
messages: ChatMessage[],
|
1571
|
+
isLoading: boolean,
|
1572
|
+
isReadOnly: boolean,
|
1573
|
+
canShowFeedbackForm: boolean,
|
1574
|
+
isTextInputDisabled: boolean,
|
1575
|
+
suggestions: string[],
|
1576
|
+
consentViewContents: Lit.TemplateResult,
|
1577
|
+
userInfo: Pick<Host.InspectorFrontendHostAPI.SyncInformation, 'accountImage'|'accountFullName'>,
|
1578
|
+
markdownRenderer: MarkdownRendererWithCodeBlock,
|
1579
|
+
agentType?: AgentType,
|
1580
|
+
getUnavailableAidaAvailabilityContents:
|
1581
|
+
(aidaAvailability: Exclude<
|
1582
|
+
Host.AidaClient.AidaAccessPreconditions, Host.AidaClient.AidaAccessPreconditions.AVAILABLE>) =>
|
1583
|
+
Lit.TemplateResult,
|
1584
|
+
onSuggestionClick: (suggestion: string) => void,
|
1585
|
+
onFeedbackSubmit: (rpcId: Host.AidaClient.RpcGlobalId, rate: Host.AidaClient.Rating, feedback?: string) =>
|
1586
|
+
void,
|
1587
|
+
onLastAnswerMarkdownViewRef: (el: Element|undefined) => void,
|
1588
|
+
onMessageContainerRef: (el: Element|undefined) => void,
|
1589
|
+
}): Lit.TemplateResult {
|
1590
|
+
if (state === State.CONSENT_VIEW) {
|
1591
|
+
return renderDisabledState(consentViewContents);
|
1592
|
+
}
|
1593
|
+
|
1594
|
+
if (aidaAvailability !== Host.AidaClient.AidaAccessPreconditions.AVAILABLE) {
|
1595
|
+
return renderDisabledState(getUnavailableAidaAvailabilityContents(aidaAvailability));
|
1596
|
+
}
|
1597
|
+
|
1598
|
+
if (!agentType) {
|
1599
|
+
return renderNoAgentState();
|
1600
|
+
}
|
1601
|
+
|
1602
|
+
if (messages.length > 0) {
|
1603
|
+
return renderMessages({
|
1604
|
+
messages,
|
1605
|
+
isLoading,
|
1606
|
+
isReadOnly,
|
1607
|
+
canShowFeedbackForm,
|
1608
|
+
userInfo,
|
1609
|
+
markdownRenderer,
|
1610
|
+
onSuggestionClick,
|
1611
|
+
onFeedbackSubmit,
|
1612
|
+
onLastAnswerMarkdownViewRef,
|
1613
|
+
onMessageContainerRef,
|
1614
|
+
});
|
1615
|
+
}
|
1616
|
+
|
1617
|
+
return renderEmptyState({isTextInputDisabled, suggestions, onSuggestionClick});
|
1618
|
+
}
|
1619
|
+
|
1447
1620
|
declare global {
|
1448
1621
|
interface HTMLElementTagNameMap {
|
1449
1622
|
'devtools-ai-chat-view': ChatView;
|