chrome-devtools-frontend 1.0.1571007 → 1.0.1572937
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents/prompts/README.md +18 -0
- package/agents/prompts/devtools-imports.md +47 -0
- package/agents/prompts/verification.md +27 -0
- package/front_end/Images/geminiInDevTools.png +0 -0
- package/front_end/Images/geminiInDevTools_2x.png +0 -0
- package/front_end/Images/src/database-off.svg +1 -0
- package/front_end/Images/src/lock-person.svg +1 -1
- package/front_end/core/common/Debouncer.ts +10 -1
- package/front_end/core/common/SettingRegistration.ts +1 -1
- package/front_end/core/host/AidaClient.ts +8 -0
- package/front_end/core/host/InspectorFrontendHostAPI.ts +0 -6
- package/front_end/core/host/UserMetrics.ts +1 -31
- package/front_end/core/root/ExperimentNames.ts +30 -0
- package/front_end/core/root/Runtime.ts +47 -48
- package/front_end/core/root/root.ts +2 -0
- package/front_end/core/sdk/CSSModel.ts +36 -13
- package/front_end/core/sdk/CSSProperty.ts +1 -1
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +9 -0
- package/front_end/core/sdk/CookieModel.ts +2 -1
- package/front_end/core/sdk/DOMModel.ts +1 -1
- package/front_end/core/sdk/DebuggerModel.ts +1 -1
- package/front_end/core/sdk/OverlayModel.ts +3 -2
- package/front_end/core/sdk/SourceMap.ts +1 -1
- package/front_end/devtools_compatibility.js +0 -6
- package/front_end/entrypoints/main/MainImpl.ts +44 -24
- package/front_end/entrypoints/main/main-meta.ts +1 -1
- package/front_end/generated/SupportedCSSProperties.js +6 -14
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +0 -180
- package/front_end/models/ai_assistance/ai_assistance.ts +0 -2
- package/front_end/models/breakpoints/BreakpointManager.ts +3 -3
- package/front_end/models/issues_manager/ContrastCheckTrigger.ts +2 -2
- package/front_end/models/javascript_metadata/NativeFunctions.js +8 -0
- package/front_end/models/source_map_scopes/NamesResolver.ts +1 -1
- package/front_end/models/trace/EventsSerializer.ts +5 -1
- package/front_end/models/trace/ModelImpl.ts +0 -4
- package/front_end/models/trace/types/TraceEvents.ts +4 -0
- package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +1 -1
- package/front_end/panels/accessibility/AccessibilitySidebarView.ts +1 -1
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +8 -63
- package/front_end/panels/ai_assistance/PatchWidget.ts +10 -15
- package/front_end/panels/ai_assistance/SelectWorkspaceDialog.ts +5 -4
- package/front_end/panels/ai_assistance/aiAssistancePanel.css +0 -16
- package/front_end/panels/ai_assistance/ai_assistance.ts +0 -1
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +3 -2
- package/front_end/panels/ai_assistance/components/ChatView.ts +123 -108
- package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +1 -145
- package/front_end/panels/application/DeviceBoundSessionsModel.ts +23 -1
- package/front_end/panels/application/DeviceBoundSessionsTreeElement.ts +23 -0
- package/front_end/panels/application/FrameDetailsView.ts +12 -10
- package/front_end/panels/application/components/BackForwardCacheView.ts +6 -8
- package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +4 -3
- package/front_end/panels/application/components/ProtocolHandlersView.ts +5 -6
- package/front_end/panels/application/components/ReportsGrid.ts +9 -9
- package/front_end/panels/application/components/SharedStorageAccessGrid.ts +5 -4
- package/front_end/panels/application/components/TrustTokensView.ts +4 -6
- package/front_end/panels/application/preloading/PreloadingView.ts +9 -8
- package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +237 -230
- package/front_end/panels/application/preloading/components/PreloadingGrid.ts +3 -2
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +6 -10
- package/front_end/panels/application/resourcesSidebar.css +8 -0
- package/front_end/panels/autofill/AutofillView.ts +4 -3
- package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +3 -5
- package/front_end/panels/common/AiCodeCompletionTeaser.ts +5 -5
- package/front_end/panels/common/AiCodeGenerationTeaser.ts +35 -4
- package/front_end/panels/common/BadgeNotification.ts +17 -14
- package/front_end/panels/common/GdpSignUpDialog.ts +5 -6
- package/front_end/panels/common/GeminiRebrandPromoDialog.ts +192 -0
- package/front_end/panels/common/aiCodeGenerationTeaser.css +16 -1
- package/front_end/panels/common/common.ts +1 -0
- package/front_end/panels/common/geminiRebrandPromoDialog.css +47 -0
- package/front_end/panels/console/ConsoleInsightTeaser.ts +10 -11
- package/front_end/panels/console/ErrorStackParser.ts +11 -16
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +2 -2
- package/front_end/panels/css_overview/CSSOverviewModel.ts +1 -1
- package/front_end/panels/elements/ComputedStyleModel.ts +16 -65
- package/front_end/panels/elements/ComputedStyleWidget.ts +3 -3
- package/front_end/panels/elements/ElementsPanel.ts +35 -5
- package/front_end/panels/elements/ElementsSidebarPane.ts +1 -1
- package/front_end/panels/elements/ElementsTreeOutline.ts +1 -1
- package/front_end/panels/elements/PlatformFontsWidget.ts +1 -1
- package/front_end/panels/elements/StylePropertiesSection.ts +16 -8
- package/front_end/panels/elements/StylePropertyTreeElement.ts +67 -32
- package/front_end/panels/elements/StylesSidebarPane.ts +28 -11
- package/front_end/panels/elements/components/CSSHintDetailsView.ts +3 -2
- package/front_end/panels/elements/components/CSSPropertyDocsView.ts +3 -2
- package/front_end/panels/elements/elements-meta.ts +1 -1
- package/front_end/panels/emulation/DeviceModeWrapper.ts +101 -62
- package/front_end/panels/explain/components/ConsoleInsight.ts +27 -23
- package/front_end/panels/explain/components/consoleInsight.css +1 -1
- package/front_end/panels/issues/IssueView.ts +6 -6
- package/front_end/panels/network/RequestConditionsDrawer.ts +4 -3
- package/front_end/panels/network/RequestCookiesView.ts +3 -4
- package/front_end/panels/network/RequestTimingView.ts +6 -10
- package/front_end/panels/network/components/HeaderSectionRow.ts +3 -2
- package/front_end/panels/network/components/RequestHeaderSection.ts +3 -1
- package/front_end/panels/network/components/RequestHeadersView.css +2 -2
- package/front_end/panels/network/components/RequestHeadersView.ts +7 -6
- package/front_end/panels/profiler/HeapProfileView.ts +3 -3
- package/front_end/panels/profiler/HeapSnapshotView.ts +2 -2
- package/front_end/panels/profiler/profiler-meta.ts +3 -3
- package/front_end/panels/protocol_monitor/protocol_monitor-meta.ts +1 -1
- package/front_end/panels/recorder/RecorderController.ts +7 -13
- package/front_end/panels/recorder/components/CreateRecordingView.ts +6 -6
- package/front_end/panels/recorder/components/RecordingView.ts +0 -38
- package/front_end/panels/recorder/components/ReplaySection.ts +0 -14
- package/front_end/panels/recorder/components/StepEditor.ts +2 -40
- package/front_end/panels/recorder/recorderController.css +4 -4
- package/front_end/panels/security/CookieControlsView.ts +2 -2
- package/front_end/panels/security/CookieReportView.ts +21 -21
- package/front_end/panels/security/cookieControlsView.css +1 -1
- package/front_end/panels/security/cookieReportView.css +1 -1
- package/front_end/panels/settings/AISettingsTab.ts +13 -15
- package/front_end/panels/settings/components/SyncSection.ts +4 -3
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +4 -12
- package/front_end/panels/settings/settings-meta.ts +1 -1
- package/front_end/panels/sources/BreakpointEditDialog.ts +4 -3
- package/front_end/panels/sources/CallStackSidebarPane.ts +4 -1
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +1 -1
- package/front_end/panels/sources/NavigatorView.ts +4 -4
- package/front_end/panels/sources/SourcesPanel.ts +7 -4
- package/front_end/panels/sources/components/HeadersView.ts +2 -2
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +3 -2
- package/front_end/panels/timeline/ThreadAppender.ts +2 -1
- package/front_end/panels/timeline/TimelineController.ts +4 -3
- package/front_end/panels/timeline/TimelinePanel.ts +7 -4
- package/front_end/panels/timeline/TimelineUIUtils.ts +2 -2
- package/front_end/panels/timeline/components/ExportTraceOptions.ts +4 -4
- package/front_end/panels/timeline/components/FieldSettingsDialog.ts +13 -6
- package/front_end/panels/timeline/components/LiveMetricsView.ts +13 -9
- package/front_end/panels/timeline/components/exportTraceOptions.css +1 -1
- package/front_end/panels/timeline/components/fieldSettingsDialog.css +1 -1
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -19
- package/front_end/panels/timeline/components/insights/InsightRenderer.ts +3 -4
- package/front_end/panels/timeline/components/insights/baseInsightComponent.css +0 -5
- package/front_end/panels/timeline/components/liveMetricsView.css +1 -1
- package/front_end/panels/whats_new/ReleaseNoteView.ts +4 -3
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/components/buttons/button.css +4 -0
- package/front_end/ui/components/markdown_view/CodeBlock.ts +3 -6
- package/front_end/ui/components/markdown_view/MarkdownLink.ts +3 -4
- package/front_end/ui/components/panel_feedback/PanelFeedback.ts +3 -4
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +10 -7
- package/front_end/ui/components/panel_feedback/panelFeedback.css +2 -2
- package/front_end/ui/components/panel_feedback/previewToggle.css +2 -2
- package/front_end/ui/components/text_editor/AiCodeGenerationParser.ts +27 -8
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +36 -6
- package/front_end/ui/kit/link/Link.ts +1 -14
- package/front_end/ui/legacy/ActionRegistration.ts +1 -1
- package/front_end/ui/legacy/ContextMenu.ts +2 -2
- package/front_end/ui/legacy/EmptyWidget.ts +3 -3
- package/front_end/ui/legacy/LinkContextMenuProvider.ts +42 -0
- package/front_end/ui/legacy/ViewRegistration.ts +1 -1
- package/front_end/ui/legacy/XLink.ts +0 -27
- package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +1 -1
- package/front_end/ui/legacy/components/color_picker/ContrastOverlay.ts +5 -4
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +2 -2
- package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +1 -1
- package/front_end/ui/legacy/inspectorCommon.css +2 -1
- package/front_end/ui/legacy/legacy.ts +3 -1
- package/front_end/ui/visual_logging/KnownContextValues.ts +4 -1
- package/front_end/ui/visual_logging/LoggingDriver.ts +3 -0
- package/package.json +1 -1
- package/front_end/models/ai_assistance/ArtifactsManager.ts +0 -67
- package/front_end/panels/ai_assistance/components/ArtifactsViewer.ts +0 -183
- package/front_end/panels/ai_assistance/components/CollapsibleAssistanceContentWidget.ts +0 -89
- package/front_end/panels/ai_assistance/components/PerformanceAgentFlameChart.ts +0 -133
- package/front_end/panels/ai_assistance/components/artifactsViewer.css +0 -15
- package/front_end/panels/ai_assistance/components/collapsibleAssistanceContentWidget.css +0 -32
|
@@ -151,7 +151,8 @@ export class ThreadAppender implements TrackAppender {
|
|
|
151
151
|
#headerAppended = false;
|
|
152
152
|
readonly threadType: Trace.Handlers.Threads.ThreadType = Trace.Handlers.Threads.ThreadType.MAIN_THREAD;
|
|
153
153
|
readonly isOnMainFrame: boolean;
|
|
154
|
-
#showAllEventsEnabled =
|
|
154
|
+
#showAllEventsEnabled =
|
|
155
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS);
|
|
155
156
|
#url = '';
|
|
156
157
|
#headerNestingLevel: number|null = null;
|
|
157
158
|
constructor(
|
|
@@ -229,7 +229,7 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
|
|
|
229
229
|
// 'disabled-by-default-v8.cpu_profiler'
|
|
230
230
|
// └ default: on, option: enableJSSampling
|
|
231
231
|
const categoriesArray = [
|
|
232
|
-
Root.Runtime.experiments.isEnabled(
|
|
232
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS) ? '*' : '-*',
|
|
233
233
|
Trace.Types.Events.Categories.Console,
|
|
234
234
|
Trace.Types.Events.Categories.Loading,
|
|
235
235
|
Trace.Types.Events.Categories.UserTiming,
|
|
@@ -251,13 +251,14 @@ export class TimelineController implements Tracing.TracingManager.TracingManager
|
|
|
251
251
|
'navigation,rail',
|
|
252
252
|
];
|
|
253
253
|
|
|
254
|
-
if (Root.Runtime.experiments.isEnabled(
|
|
254
|
+
if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_V8_RUNTIME_CALL_STATS) &&
|
|
255
|
+
options.enableJSSampling) {
|
|
255
256
|
categoriesArray.push(disabledByDefault('v8.runtime_stats_sampling'));
|
|
256
257
|
}
|
|
257
258
|
if (options.enableJSSampling) {
|
|
258
259
|
categoriesArray.push(disabledByDefault('v8.cpu_profiler'));
|
|
259
260
|
}
|
|
260
|
-
if (Root.Runtime.experiments.isEnabled(
|
|
261
|
+
if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_INVALIDATION_TRACKING)) {
|
|
261
262
|
categoriesArray.push(disabledByDefault('devtools.timeline.invalidationTracking'));
|
|
262
263
|
}
|
|
263
264
|
if (options.capturePictures) {
|
|
@@ -732,9 +732,11 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
732
732
|
|
|
733
733
|
#instantiateNewModel(): Trace.TraceModel.Model {
|
|
734
734
|
const config = Trace.Types.Configuration.defaults();
|
|
735
|
-
config.showAllEvents =
|
|
736
|
-
|
|
737
|
-
config.
|
|
735
|
+
config.showAllEvents =
|
|
736
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS);
|
|
737
|
+
config.includeRuntimeCallStats =
|
|
738
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_V8_RUNTIME_CALL_STATS);
|
|
739
|
+
config.debugMode = Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_DEBUG_MODE);
|
|
738
740
|
|
|
739
741
|
const traceEngineModel = Trace.TraceModel.Model.createWithAllHandlers(config);
|
|
740
742
|
|
|
@@ -2089,7 +2091,8 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
2089
2091
|
|
|
2090
2092
|
#applyActiveFilters(traceIsGeneric: boolean, exclusiveFilter: Trace.Extras.TraceFilter.TraceFilter|null = null):
|
|
2091
2093
|
void {
|
|
2092
|
-
if (traceIsGeneric ||
|
|
2094
|
+
if (traceIsGeneric ||
|
|
2095
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_SHOW_ALL_EVENTS)) {
|
|
2093
2096
|
return;
|
|
2094
2097
|
}
|
|
2095
2098
|
|
|
@@ -505,7 +505,7 @@ export class TimelineUIUtils {
|
|
|
505
505
|
static getGetDebugModeEnabled(): boolean {
|
|
506
506
|
if (TimelineUIUtils.debugModeEnabled === undefined) {
|
|
507
507
|
TimelineUIUtils.debugModeEnabled =
|
|
508
|
-
Root.Runtime.experiments.isEnabled(Root.
|
|
508
|
+
Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_DEBUG_MODE);
|
|
509
509
|
}
|
|
510
510
|
return TimelineUIUtils.debugModeEnabled;
|
|
511
511
|
}
|
|
@@ -1527,7 +1527,7 @@ export class TimelineUIUtils {
|
|
|
1527
1527
|
await TimelineUIUtils.generateCauses(event, contentHelper, parsedTrace);
|
|
1528
1528
|
}
|
|
1529
1529
|
|
|
1530
|
-
if (Root.Runtime.experiments.isEnabled(Root.
|
|
1530
|
+
if (Root.Runtime.experiments.isEnabled(Root.ExperimentNames.ExperimentName.TIMELINE_DEBUG_MODE)) {
|
|
1531
1531
|
TimelineUIUtils.renderEventJson(event, contentHelper);
|
|
1532
1532
|
}
|
|
1533
1533
|
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
/* eslint-disable @devtools/no-lit-render-outside-of-view */
|
|
5
5
|
|
|
6
|
+
import '../../../ui/kit/kit.js';
|
|
6
7
|
import '../../../ui/components/tooltips/tooltips.js';
|
|
7
8
|
import '../../../ui/components/buttons/buttons.js';
|
|
8
9
|
|
|
@@ -14,7 +15,6 @@ import * as Dialogs from '../../../ui/components/dialogs/dialogs.js';
|
|
|
14
15
|
import * as ComponentHelpers from '../../../ui/components/helpers/helpers.js';
|
|
15
16
|
import * as UI from '../../../ui/legacy/legacy.js';
|
|
16
17
|
import * as Lit from '../../../ui/lit/lit.js';
|
|
17
|
-
import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
|
|
18
18
|
|
|
19
19
|
import exportTraceOptionsStyles from './exportTraceOptions.css.js';
|
|
20
20
|
|
|
@@ -299,12 +299,12 @@ export class ExportTraceOptions extends HTMLElement {
|
|
|
299
299
|
${this.#renderCheckbox('compress-with-gzip', this.#shouldCompressCheckbox, i18nString(UIStrings.shouldCompress), this.#state.shouldCompress)}
|
|
300
300
|
<div class='export-trace-options-row export-trace-options-row-last'>
|
|
301
301
|
<div class="export-trace-explanation">
|
|
302
|
-
<
|
|
302
|
+
<devtools-link
|
|
303
303
|
href="https://developer.chrome.com/docs/devtools/performance/save-trace"
|
|
304
304
|
class=devtools-link
|
|
305
|
-
|
|
305
|
+
.jslogContext=${'save-trace-explanation'}>
|
|
306
306
|
${i18nString(UIStrings.explanation)}
|
|
307
|
-
</
|
|
307
|
+
</devtools-link>
|
|
308
308
|
</div>
|
|
309
309
|
<devtools-button
|
|
310
310
|
class="setup-button"
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
/* eslint-disable @devtools/no-lit-render-outside-of-view */
|
|
5
5
|
|
|
6
|
+
import '../../../ui/kit/kit.js';
|
|
6
7
|
import './OriginMap.js';
|
|
7
8
|
|
|
8
9
|
import * as i18n from '../../../core/i18n/i18n.js';
|
|
@@ -12,7 +13,6 @@ import * as Dialogs from '../../../ui/components/dialogs/dialogs.js';
|
|
|
12
13
|
import * as ComponentHelpers from '../../../ui/components/helpers/helpers.js';
|
|
13
14
|
import * as Input from '../../../ui/components/input/input.js';
|
|
14
15
|
import * as uiI18n from '../../../ui/i18n/i18n.js';
|
|
15
|
-
import * as UI from '../../../ui/legacy/legacy.js';
|
|
16
16
|
import * as Lit from '../../../ui/lit/lit.js';
|
|
17
17
|
import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
|
|
18
18
|
|
|
@@ -332,10 +332,6 @@ export class FieldSettingsDialog extends HTMLElement {
|
|
|
332
332
|
}
|
|
333
333
|
|
|
334
334
|
#render = (): void => {
|
|
335
|
-
const linkEl =
|
|
336
|
-
UI.XLink.XLink.create('https://developer.chrome.com/docs/crux', i18n.i18n.lockedString('Chrome UX Report'));
|
|
337
|
-
const descriptionEl = uiI18n.getFormatLocalizedString(str_, UIStrings.fetchAggregated, {PH1: linkEl});
|
|
338
|
-
|
|
339
335
|
// clang-format off
|
|
340
336
|
const output = html`
|
|
341
337
|
<style>${fieldSettingsDialogStyles}</style>
|
|
@@ -356,7 +352,18 @@ export class FieldSettingsDialog extends HTMLElement {
|
|
|
356
352
|
})}
|
|
357
353
|
>
|
|
358
354
|
<div class="content">
|
|
359
|
-
<div
|
|
355
|
+
<div>
|
|
356
|
+
${uiI18n.getFormatLocalizedStringTemplate(
|
|
357
|
+
str_,
|
|
358
|
+
UIStrings.fetchAggregated,
|
|
359
|
+
{
|
|
360
|
+
PH1: html`<devtools-link
|
|
361
|
+
href="https://developer.chrome.com/docs/crux"
|
|
362
|
+
>${i18n.i18n.lockedString('Chrome UX Report')}</devtools-link
|
|
363
|
+
>`,
|
|
364
|
+
},
|
|
365
|
+
)}
|
|
366
|
+
</div>
|
|
360
367
|
<div class="privacy-disclosure">
|
|
361
368
|
<h3 class="section-title">${i18nString(UIStrings.privacyDisclosure)}</h3>
|
|
362
369
|
<div>${i18nString(UIStrings.whenPerformanceIsShown)}</div>
|
|
@@ -867,10 +867,10 @@ export class LiveMetricsView extends LegacyWrapper.LegacyWrapper.WrappableCompon
|
|
|
867
867
|
tmp.searchParams.set('device', device);
|
|
868
868
|
const cruxVis = `${tmp.origin}/#/${tmp.search}`;
|
|
869
869
|
return html`
|
|
870
|
-
(<
|
|
870
|
+
(<devtools-link href=${cruxVis}
|
|
871
871
|
class="local-field-link"
|
|
872
872
|
title=${i18nString(UIStrings.fieldDataHistoryTooltip)}
|
|
873
|
-
>${i18nString(UIStrings.fieldDataHistoryLink)}</
|
|
873
|
+
>${i18nString(UIStrings.fieldDataHistoryLink)}</devtools-link>)
|
|
874
874
|
`;
|
|
875
875
|
}
|
|
876
876
|
|
|
@@ -904,13 +904,17 @@ export class LiveMetricsView extends LegacyWrapper.LegacyWrapper.WrappableCompon
|
|
|
904
904
|
return this.#renderCollectionPeriod();
|
|
905
905
|
}
|
|
906
906
|
|
|
907
|
-
|
|
908
|
-
UI.XLink.XLink.create('https://developer.chrome.com/docs/crux', i18n.i18n.lockedString('Chrome UX Report'));
|
|
909
|
-
const messageEl = uiI18n.getFormatLocalizedString(str_, UIStrings.seeHowYourLocalMetricsCompare, {PH1: linkEl});
|
|
910
|
-
|
|
907
|
+
// clang-format off
|
|
911
908
|
return html`
|
|
912
|
-
<div class="field-data-message"
|
|
909
|
+
<div class="field-data-message">
|
|
910
|
+
${uiI18n.getFormatLocalizedStringTemplate(
|
|
911
|
+
str_,
|
|
912
|
+
UIStrings.seeHowYourLocalMetricsCompare,
|
|
913
|
+
{ PH1: html`<devtools-link href="https://developer.chrome.com/docs/crux">${i18n.i18n.lockedString('Chrome UX Report')}</devtools-link>` },
|
|
914
|
+
)}
|
|
915
|
+
</div>
|
|
913
916
|
`;
|
|
917
|
+
// clang-format on
|
|
914
918
|
}
|
|
915
919
|
|
|
916
920
|
#renderLogSection(): Lit.LitTemplate {
|
|
@@ -1174,11 +1178,11 @@ export class LiveMetricsView extends LegacyWrapper.LegacyWrapper.WrappableCompon
|
|
|
1174
1178
|
${this.#renderInpCard()}
|
|
1175
1179
|
</div>
|
|
1176
1180
|
</div>
|
|
1177
|
-
<
|
|
1181
|
+
<devtools-link
|
|
1178
1182
|
href=${helpLink}
|
|
1179
1183
|
class="local-field-link"
|
|
1180
1184
|
title=${i18nString(UIStrings.localFieldLearnMoreTooltip)}
|
|
1181
|
-
>${i18nString(UIStrings.localFieldLearnMoreLink)}</
|
|
1185
|
+
>${i18nString(UIStrings.localFieldLearnMoreLink)}</devtools-link>
|
|
1182
1186
|
${this.#renderLogSection()}
|
|
1183
1187
|
</main>
|
|
1184
1188
|
<aside class="next-steps" aria-labelledby="next-steps-section-title">
|
|
@@ -69,7 +69,6 @@ interface ViewInput {
|
|
|
69
69
|
internalName: string;
|
|
70
70
|
model: InsightModel;
|
|
71
71
|
selected: boolean;
|
|
72
|
-
isAIAssistanceContext: boolean;
|
|
73
72
|
showAskAI: boolean;
|
|
74
73
|
estimatedSavingsString: string|null;
|
|
75
74
|
estimatedSavingsAriaLabel: string|null;
|
|
@@ -88,7 +87,6 @@ const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
88
87
|
selected,
|
|
89
88
|
estimatedSavingsString,
|
|
90
89
|
estimatedSavingsAriaLabel,
|
|
91
|
-
isAIAssistanceContext,
|
|
92
90
|
showAskAI,
|
|
93
91
|
dispatchInsightToggle,
|
|
94
92
|
renderContent,
|
|
@@ -98,8 +96,7 @@ const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
98
96
|
|
|
99
97
|
const containerClasses = Lit.Directives.classMap({
|
|
100
98
|
insight: true,
|
|
101
|
-
closed: !selected
|
|
102
|
-
'ai-assistance-context': isAIAssistanceContext,
|
|
99
|
+
closed: !selected,
|
|
103
100
|
});
|
|
104
101
|
|
|
105
102
|
let ariaLabel = `${i18nString(UIStrings.viewDetails, {PH1: model.title})}`;
|
|
@@ -139,10 +136,6 @@ const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
139
136
|
}
|
|
140
137
|
|
|
141
138
|
function renderHoverIcon(): Lit.LitTemplate {
|
|
142
|
-
if (isAIAssistanceContext) {
|
|
143
|
-
return Lit.nothing;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
139
|
const containerClasses = Lit.Directives.classMap({
|
|
147
140
|
'insight-hover-icon': true,
|
|
148
141
|
active: selected,
|
|
@@ -205,10 +198,6 @@ export interface BaseInsightData {
|
|
|
205
198
|
export abstract class BaseInsightComponent<T extends InsightModel> extends UI.Widget.Widget {
|
|
206
199
|
#view: View;
|
|
207
200
|
abstract internalName: string;
|
|
208
|
-
|
|
209
|
-
// Tracks if this component is rendered withing the AI assistance panel.
|
|
210
|
-
// Currently only relevant to GreenDev.
|
|
211
|
-
#isAIAssistanceContext = false;
|
|
212
201
|
#selected = false;
|
|
213
202
|
#model: T|null = null;
|
|
214
203
|
#agentFocus: AIAssistance.AIContext.AgentFocus|null = null;
|
|
@@ -243,11 +232,6 @@ export abstract class BaseInsightComponent<T extends InsightModel> extends UI.Wi
|
|
|
243
232
|
return false;
|
|
244
233
|
}
|
|
245
234
|
|
|
246
|
-
set isAIAssistanceContext(isAIAssistanceContext: boolean) {
|
|
247
|
-
this.#isAIAssistanceContext = isAIAssistanceContext;
|
|
248
|
-
this.requestUpdate();
|
|
249
|
-
}
|
|
250
|
-
|
|
251
235
|
set selected(selected: boolean) {
|
|
252
236
|
if (!this.#selected && selected) {
|
|
253
237
|
const options = this.getOverlayOptionsForInitialOverlays();
|
|
@@ -408,7 +392,6 @@ export abstract class BaseInsightComponent<T extends InsightModel> extends UI.Wi
|
|
|
408
392
|
selected: this.#selected,
|
|
409
393
|
estimatedSavingsString: this.getEstimatedSavingsString(),
|
|
410
394
|
estimatedSavingsAriaLabel: this.#getEstimatedSavingsAriaLabel(),
|
|
411
|
-
isAIAssistanceContext: this.#isAIAssistanceContext,
|
|
412
395
|
showAskAI: this.#canShowAskAI(),
|
|
413
396
|
dispatchInsightToggle: () => this.#dispatchInsightToggle(),
|
|
414
397
|
renderContent: () => this.renderContent(),
|
|
@@ -514,7 +497,7 @@ export abstract class BaseInsightComponent<T extends InsightModel> extends UI.Wi
|
|
|
514
497
|
}
|
|
515
498
|
|
|
516
499
|
#canShowAskAI(): boolean {
|
|
517
|
-
if (
|
|
500
|
+
if (!this.hasAskAiSupport()) {
|
|
518
501
|
return false;
|
|
519
502
|
}
|
|
520
503
|
|
|
@@ -61,9 +61,9 @@ export class InsightRenderer {
|
|
|
61
61
|
renderInsightToWidgetElement(
|
|
62
62
|
parsedTrace: Trace.TraceModel.ParsedTrace, insightSet: Trace.Insights.Types.InsightSet,
|
|
63
63
|
model: Trace.Insights.Types.InsightModel, insightName: string,
|
|
64
|
-
options: Partial<
|
|
65
|
-
BaseInsightComponent<Trace.Insights.Types.InsightModel>,
|
|
66
|
-
|
|
64
|
+
options: Partial<
|
|
65
|
+
Pick<BaseInsightComponent<Trace.Insights.Types.InsightModel>, 'selected'|'agentFocus'|'fieldMetrics'>>):
|
|
66
|
+
InsightWidgetElement {
|
|
67
67
|
let widgetElement = this.#insightWidgetCache.get(model);
|
|
68
68
|
if (!widgetElement) {
|
|
69
69
|
widgetElement = document.createElement('devtools-widget') as InsightWidgetElement;
|
|
@@ -85,7 +85,6 @@ export class InsightRenderer {
|
|
|
85
85
|
insightSetKey: insightSet.id,
|
|
86
86
|
agentFocus: options.agentFocus ?? null,
|
|
87
87
|
fieldMetrics: options.fieldMetrics ?? null,
|
|
88
|
-
isAIAssistanceContext: options.isAIAssistanceContext ?? false,
|
|
89
88
|
});
|
|
90
89
|
|
|
91
90
|
return widgetElement;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
5
|
import '../../ui/components/markdown_view/markdown_view.js';
|
|
6
|
+
import '../../ui/kit/kit.js';
|
|
6
7
|
|
|
7
8
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
8
9
|
import type * as Platform from '../../core/platform/platform.js';
|
|
@@ -87,14 +88,14 @@ export class ReleaseNoteView extends UI.Panel.Panel {
|
|
|
87
88
|
<div class="video-container">
|
|
88
89
|
${releaseNote.videoLinks.map((value: {description: string, link: Platform.DevToolsPath.UrlString, type?: VideoType}) => {
|
|
89
90
|
return html`
|
|
90
|
-
<
|
|
91
|
+
<devtools-link
|
|
91
92
|
href=${value.link}
|
|
92
|
-
|
|
93
|
+
.jslogContext=${'learn-more'}>
|
|
93
94
|
<div class="video">
|
|
94
95
|
<img class="thumbnail" src=${input.getThumbnailPath(value.type ?? VideoType.WHATS_NEW)}>
|
|
95
96
|
<div class="thumbnail-description"><span>${value.description}</span></div>
|
|
96
97
|
</div>
|
|
97
|
-
</
|
|
98
|
+
</devtools-link>
|
|
98
99
|
`;
|
|
99
100
|
})}
|
|
100
101
|
</div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Name: Dependencies sourced from the upstream `chromium` repository
|
|
2
2
|
URL: https://chromium.googlesource.com/chromium/src
|
|
3
3
|
Version: N/A
|
|
4
|
-
Revision:
|
|
4
|
+
Revision: 1eaa7f85927d5066cf8a8c7dfc076e8b2b3665d6
|
|
5
5
|
Update Mechanism: Manual (https://crbug.com/428069060)
|
|
6
6
|
License: BSD-3-Clause
|
|
7
7
|
License File: LICENSE
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
/* eslint-disable @devtools/no-lit-render-outside-of-view, @devtools/enforce-custom-element-definitions-location */
|
|
5
5
|
|
|
6
|
-
import '../../../ui/
|
|
6
|
+
import '../../../ui/kit/kit.js';
|
|
7
7
|
|
|
8
8
|
import * as i18n from '../../../core/i18n/i18n.js';
|
|
9
9
|
import * as CodeMirror from '../../../third_party/codemirror.next/codemirror.next.js';
|
|
@@ -204,12 +204,9 @@ export class CodeBlock extends HTMLElement {
|
|
|
204
204
|
#renderNotice(): Lit.TemplateResult {
|
|
205
205
|
// clang-format off
|
|
206
206
|
return html`<p class="notice">
|
|
207
|
-
<
|
|
208
|
-
VisualLogging.link('code-disclaimer').track({
|
|
209
|
-
click: true,
|
|
210
|
-
})}>
|
|
207
|
+
<devtools-link class="link" href="https://support.google.com/legal/answer/13505487" .jslogContext=${'code-disclaimer'}>
|
|
211
208
|
${i18nString(UIStrings.disclaimer)}
|
|
212
|
-
</
|
|
209
|
+
</devtools-link>
|
|
213
210
|
</p>`;
|
|
214
211
|
// clang-format on
|
|
215
212
|
}
|
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
/* eslint-disable @devtools/no-lit-render-outside-of-view, @devtools/enforce-custom-element-definitions-location */
|
|
5
5
|
|
|
6
|
-
import '../../
|
|
6
|
+
import '../../kit/kit.js';
|
|
7
7
|
|
|
8
8
|
import {html, render} from '../../lit/lit.js';
|
|
9
|
-
import * as VisualLogging from '../../visual_logging/visual_logging.js';
|
|
10
9
|
|
|
11
10
|
import markdownLinkStyles from './markdownLink.css.js';
|
|
12
11
|
import {getMarkdownLink} from './MarkdownLinksMap.js';
|
|
@@ -38,8 +37,8 @@ export class MarkdownLink extends HTMLElement {
|
|
|
38
37
|
// clang-format off
|
|
39
38
|
const output = html`
|
|
40
39
|
<style>${markdownLinkStyles}</style>
|
|
41
|
-
<
|
|
42
|
-
>${this.#linkText}</
|
|
40
|
+
<devtools-link class="devtools-link" href=${this.#linkUrl}
|
|
41
|
+
>${this.#linkText}</devtools-link>`;
|
|
43
42
|
render(output, this.#shadow, {host: this});
|
|
44
43
|
// clang-format on
|
|
45
44
|
}
|
|
@@ -3,13 +3,12 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
/* eslint-disable @devtools/no-lit-render-outside-of-view, @devtools/enforce-custom-element-definitions-location */
|
|
5
5
|
|
|
6
|
-
import '../../
|
|
6
|
+
import '../../kit/kit.js';
|
|
7
7
|
|
|
8
8
|
import * as i18n from '../../../core/i18n/i18n.js';
|
|
9
9
|
import * as Platform from '../../../core/platform/platform.js';
|
|
10
10
|
import * as ComponentHelpers from '../../components/helpers/helpers.js';
|
|
11
11
|
import {html, render} from '../../lit/lit.js';
|
|
12
|
-
import * as VisualLogging from '../../visual_logging/visual_logging.js';
|
|
13
12
|
|
|
14
13
|
import panelFeedbackStyles from './panelFeedback.css.js';
|
|
15
14
|
|
|
@@ -68,14 +67,14 @@ export class PanelFeedback extends HTMLElement {
|
|
|
68
67
|
<h2 class="flex">
|
|
69
68
|
<devtools-icon name="experiment" class="extra-large" style="color: var(--icon-primary);"></devtools-icon> ${i18nString(UIStrings.previewFeature)}
|
|
70
69
|
</h2>
|
|
71
|
-
<p>${i18nString(UIStrings.previewText)} <
|
|
70
|
+
<p>${i18nString(UIStrings.previewText)} <devtools-link href=${this.#props.feedbackUrl} .jslogContext=${'feedback'}>${i18nString(UIStrings.previewTextFeedbackLink)}</devtools-link></p>
|
|
72
71
|
<div class="video">
|
|
73
72
|
<div class="thumbnail">
|
|
74
73
|
<img src=${videoThumbnailUrl} role="presentation" />
|
|
75
74
|
</div>
|
|
76
75
|
<div class="video-description">
|
|
77
76
|
<h3>${i18nString(UIStrings.videoAndDocumentation)}</h3>
|
|
78
|
-
<
|
|
77
|
+
<devtools-link class="quick-start-link" href=${this.#props.quickStartUrl} .jslogContext=${'css-overview.quick-start'}>${this.#props.quickStartLinkText}</devtools-link>
|
|
79
78
|
</div>
|
|
80
79
|
</div>
|
|
81
80
|
</div>
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
/* eslint-disable @devtools/no-lit-render-outside-of-view, @devtools/enforce-custom-element-definitions-location */
|
|
5
5
|
|
|
6
6
|
import '../../../ui/legacy/legacy.js';
|
|
7
|
+
import '../../../ui/kit/kit.js';
|
|
7
8
|
|
|
8
9
|
import * as i18n from '../../../core/i18n/i18n.js';
|
|
9
10
|
import * as Root from '../../../core/root/root.js';
|
|
@@ -15,7 +16,7 @@ export interface PreviewToggleData {
|
|
|
15
16
|
name: string;
|
|
16
17
|
helperText: string|null;
|
|
17
18
|
feedbackURL: string|null;
|
|
18
|
-
experiment: Root.
|
|
19
|
+
experiment: Root.ExperimentNames.ExperimentName;
|
|
19
20
|
learnMoreURL?: string;
|
|
20
21
|
onChangeCallback?: (checked: boolean) => void;
|
|
21
22
|
}
|
|
@@ -45,7 +46,7 @@ export class PreviewToggle extends HTMLElement {
|
|
|
45
46
|
#helperText: string|null = null;
|
|
46
47
|
#feedbackURL: string|null = null;
|
|
47
48
|
#learnMoreURL: string|undefined;
|
|
48
|
-
#experiment = '';
|
|
49
|
+
#experiment: Root.ExperimentNames.ExperimentName|'' = '';
|
|
49
50
|
#onChangeCallback?: (checked: boolean) => void;
|
|
50
51
|
|
|
51
52
|
set data(data: PreviewToggleData) {
|
|
@@ -59,7 +60,7 @@ export class PreviewToggle extends HTMLElement {
|
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
#render(): void {
|
|
62
|
-
const checked = Root.Runtime.experiments.isEnabled(this.#experiment);
|
|
63
|
+
const checked = this.#experiment && Root.Runtime.experiments.isEnabled(this.#experiment);
|
|
63
64
|
// Disabled until https://crbug.com/1079231 is fixed.
|
|
64
65
|
// clang-format off
|
|
65
66
|
render(
|
|
@@ -75,14 +76,14 @@ export class PreviewToggle extends HTMLElement {
|
|
|
75
76
|
</devtools-checkbox>
|
|
76
77
|
<div class="spacer"></div>
|
|
77
78
|
${this.#feedbackURL && !this.#helperText
|
|
78
|
-
? html`<div class="feedback"><
|
|
79
|
+
? html`<div class="feedback"><devtools-link class="devtools-link" href=${this.#feedbackURL} jslogContext=${'feedback'}>${i18nString(UIStrings.shortFeedbackLink)}</devtools-link></div>`
|
|
79
80
|
: nothing}
|
|
80
81
|
${this.#learnMoreURL
|
|
81
|
-
? html`<div class="learn-more"><
|
|
82
|
+
? html`<div class="learn-more"><devtools-link class="devtools-link" href=${this.#learnMoreURL} jslogContext=${'learn-more'}>${i18nString(UIStrings.learnMoreLink)}</devtools-link></div>`
|
|
82
83
|
: nothing}
|
|
83
84
|
<div class="helper">
|
|
84
85
|
${this.#helperText && this.#feedbackURL
|
|
85
|
-
? html`<p>${this.#helperText} <
|
|
86
|
+
? html`<p>${this.#helperText} <devtools-link class="devtools-link" href=${this.#feedbackURL} jslogContext=${'feedback'}>${i18nString(UIStrings.previewTextFeedbackLink)}</devtools-link></p>`
|
|
86
87
|
: nothing}
|
|
87
88
|
</div>
|
|
88
89
|
</div>`,
|
|
@@ -95,7 +96,9 @@ export class PreviewToggle extends HTMLElement {
|
|
|
95
96
|
|
|
96
97
|
#checkboxChanged(event: Event): void {
|
|
97
98
|
const checked = (event.target as HTMLInputElement).checked;
|
|
98
|
-
|
|
99
|
+
if (this.#experiment) {
|
|
100
|
+
Root.Runtime.experiments.setEnabled(this.#experiment, checked);
|
|
101
|
+
}
|
|
99
102
|
this.#onChangeCallback?.(checked);
|
|
100
103
|
}
|
|
101
104
|
}
|
|
@@ -54,7 +54,7 @@ h3 {
|
|
|
54
54
|
gap: 20px;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
devtools-link {
|
|
58
58
|
color: var(--sys-color-primary);
|
|
59
59
|
text-decoration-line: underline;
|
|
60
60
|
}
|
|
@@ -72,7 +72,7 @@ x-link.quick-start-link {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
@media (forced-colors: active) {
|
|
75
|
-
|
|
75
|
+
devtools-link {
|
|
76
76
|
color: linktext;
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
flex: 1;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
.
|
|
33
|
+
.devtools-link {
|
|
34
34
|
color: var(--sys-color-primary);
|
|
35
35
|
text-decoration-line: underline;
|
|
36
36
|
margin: 0 4px;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
.feedback .
|
|
39
|
+
.feedback .devtools-link {
|
|
40
40
|
color: var(--sys-color-token-subtle);
|
|
41
41
|
}
|
|
@@ -9,6 +9,11 @@ const BLOCK_COMMENT_START_PATTERN = /^\/\*+\s*/;
|
|
|
9
9
|
const BLOCK_COMMENT_END_PATTERN = /\s*\*+\/$/;
|
|
10
10
|
const BLOCK_COMMENT_LINE_PREFIX_PATTERN = /^\s*\*\s?/;
|
|
11
11
|
|
|
12
|
+
export interface CommentNodeInfo {
|
|
13
|
+
text: string;
|
|
14
|
+
to: number;
|
|
15
|
+
}
|
|
16
|
+
|
|
12
17
|
function findLastNonWhitespacePos(state: CodeMirror.EditorState, cursorPosition: number): number {
|
|
13
18
|
const line = state.doc.lineAt(cursorPosition);
|
|
14
19
|
const textBefore = line.text.substring(0, cursorPosition - line.from);
|
|
@@ -23,8 +28,8 @@ function resolveCommentNode(state: CodeMirror.EditorState, cursorPosition: numbe
|
|
|
23
28
|
// The bias of -1 makes it check the character to the left of the position.
|
|
24
29
|
const node = tree.resolveInner(lookupPos, -1);
|
|
25
30
|
const nodeType = node.type.name;
|
|
26
|
-
// Check if the node type is a comment
|
|
27
|
-
if (nodeType.includes('Comment')
|
|
31
|
+
// Check if the node type is a comment
|
|
32
|
+
if (nodeType.includes('Comment')) {
|
|
28
33
|
if (!nodeType.includes('BlockComment')) {
|
|
29
34
|
return node;
|
|
30
35
|
}
|
|
@@ -48,7 +53,14 @@ function resolveCommentNode(state: CodeMirror.EditorState, cursorPosition: numbe
|
|
|
48
53
|
|
|
49
54
|
function extractBlockComment(rawText: string): string|undefined {
|
|
50
55
|
// Remove /* and */, whitespace, and common leading asterisks on new lines
|
|
51
|
-
|
|
56
|
+
if (!rawText.match(BLOCK_COMMENT_START_PATTERN)) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
let cleaned = rawText.replace(BLOCK_COMMENT_START_PATTERN, '');
|
|
60
|
+
if (!cleaned.match(BLOCK_COMMENT_END_PATTERN)) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
cleaned = cleaned.replace(BLOCK_COMMENT_END_PATTERN, '');
|
|
52
64
|
// Remove leading " * " from multi-line block comments
|
|
53
65
|
cleaned = cleaned.split('\n').map(line => line.replace(BLOCK_COMMENT_LINE_PREFIX_PATTERN, '')).join('\n').trim();
|
|
54
66
|
return cleaned;
|
|
@@ -59,19 +71,26 @@ function extractLineComment(rawText: string): string {
|
|
|
59
71
|
}
|
|
60
72
|
|
|
61
73
|
export class AiCodeGenerationParser {
|
|
62
|
-
static
|
|
74
|
+
static extractCommentNodeInfo(state: CodeMirror.EditorState, cursorPosition: number): CommentNodeInfo|undefined {
|
|
63
75
|
const node = resolveCommentNode(state, cursorPosition);
|
|
64
76
|
if (!node) {
|
|
65
77
|
return;
|
|
66
78
|
}
|
|
67
79
|
const nodeType = node.type.name;
|
|
68
80
|
const rawText = state.doc.sliceString(node.from, node.to);
|
|
81
|
+
let text = '';
|
|
69
82
|
if (nodeType.includes('LineComment')) {
|
|
70
|
-
|
|
83
|
+
text = extractLineComment(rawText);
|
|
84
|
+
} else if (nodeType.includes('BlockComment')) {
|
|
85
|
+
text = extractBlockComment(rawText) ?? '';
|
|
86
|
+
} else {
|
|
87
|
+
text = rawText;
|
|
71
88
|
}
|
|
72
|
-
|
|
73
|
-
|
|
89
|
+
|
|
90
|
+
if (!Boolean(text)) {
|
|
91
|
+
return;
|
|
74
92
|
}
|
|
75
|
-
|
|
93
|
+
|
|
94
|
+
return {text, to: node.to};
|
|
76
95
|
}
|
|
77
96
|
}
|