chrome-devtools-frontend 1.0.1724140 → 1.0.1726686
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/review-ui-widgets/SKILL.md +7 -7
- package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +12 -0
- package/.agents/skills/ui-eng-vision-widget-promoter/SKILL.md +3 -3
- package/.agents/skills/ui-widgets/SKILL.md +2 -1
- package/docs/cookbook/dependencies.md +6 -4
- package/front_end/core/i18n/i18nImpl.ts +1 -1
- package/front_end/core/root/Runtime.ts +1 -1
- package/front_end/core/sdk/ResourceTreeModel.ts +16 -0
- package/front_end/entrypoints/js_app/js_app.ts +2 -5
- package/front_end/entrypoints/node_app/node_app.ts +2 -3
- package/front_end/generated/InspectorBackendCommands.ts +1 -1
- package/front_end/generated/protocol.ts +1 -0
- package/front_end/models/ai_assistance/skills/lighthouse.md +2 -1
- package/front_end/models/ai_assistance/skills/network.md +1 -0
- package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +26 -2
- package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +1 -1
- package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +2 -7
- package/front_end/models/ai_assistance/tools/RunLighthouse.ts +2 -2
- package/front_end/models/comment_manager/CommentManager.ts +0 -6
- package/front_end/models/comment_manager/CommentThread.ts +23 -19
- package/front_end/models/elements/StyleChanges.ts +66 -0
- package/front_end/models/trace/EventsSerializer.ts +2 -7
- package/front_end/models/trace/ModelImpl.ts +0 -2
- package/front_end/models/trace/handlers/FlowsHandler.ts +37 -29
- package/front_end/models/trace/helpers/SyntheticEvents.ts +10 -37
- package/front_end/models/trace/insights/RenderBlocking.ts +3 -1
- package/front_end/models/trace/lantern/simulation/Simulator.ts +4 -0
- package/front_end/models/trace/lantern/types/Lantern.ts +1 -0
- package/front_end/panels/accessibility/SourceOrderView.ts +1 -1
- package/front_end/panels/application/ApplicationPanelSidebar.ts +90 -0
- package/front_end/panels/application/StorageView.ts +196 -174
- package/front_end/panels/application/SubAppsView.ts +2 -2
- package/front_end/panels/application/preloading/PreloadingView.ts +360 -336
- package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +2 -2
- package/front_end/panels/application/preloading/components/PreloadingGrid.ts +6 -3
- package/front_end/panels/application/preloading/components/RuleSetGrid.ts +17 -17
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +2 -2
- package/front_end/panels/application/preloading/preloadingView.css +12 -4
- package/front_end/panels/application/preloading/preloadingViewDropDown.css +1 -1
- package/front_end/panels/application/storageView.css +16 -21
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +2 -2
- package/front_end/panels/browser_debugger/browser_debugger-meta.ts +6 -8
- package/front_end/panels/comments/CommentsPane.ts +26 -9
- package/front_end/panels/comments/commentsPane.css +25 -6
- package/front_end/panels/common/CommentThreadWidget.ts +2 -2
- package/front_end/panels/common/CommentsOverlayWidget.ts +94 -35
- package/front_end/panels/common/commentThreadWidget.css +17 -0
- package/front_end/panels/common/commentsOverlay.css +5 -10
- package/front_end/panels/common/common-meta.ts +11 -1
- package/front_end/panels/elements/ClassesPaneWidget.ts +130 -88
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +7 -33
- package/front_end/panels/elements/DOMTreeWidget.ts +7 -3
- package/front_end/panels/elements/ElementStatePaneWidget.ts +11 -1
- package/front_end/panels/elements/PropertyRenderer.ts +3 -2
- package/front_end/panels/elements/StyleEditorWidget.ts +60 -41
- package/front_end/panels/elements/StylePropertiesSection.ts +32 -5
- package/front_end/panels/elements/StylePropertyTreeElement.ts +227 -162
- package/front_end/panels/event_listeners/EventListenersView.ts +11 -8
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -1
- package/front_end/panels/network/NetworkDataGridNode.ts +3 -1
- package/front_end/panels/network/RequestConditionsDrawer.ts +1 -1
- package/front_end/panels/network/RequestPayloadView.ts +12 -5
- package/front_end/panels/profiler/HeapProfileView.ts +28 -6
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +7 -3
- package/front_end/panels/protocol_monitor/JSONEditor.ts +0 -1
- package/front_end/panels/recorder/RecorderPanel.ts +2 -2
- package/front_end/panels/settings/SettingsScreen.ts +1 -1
- package/front_end/panels/sources/NavigatorView.ts +105 -45
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +8 -5
- package/front_end/panels/sources/SourcesNavigator.ts +421 -213
- package/front_end/panels/sources/SourcesPanel.ts +6 -4
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +10 -5
- package/front_end/panels/sources/sources-meta.ts +4 -15
- package/front_end/panels/sources/sourcesNavigator.css +5 -0
- package/front_end/panels/timeline/ModificationsManager.ts +0 -2
- package/front_end/panels/timeline/README.md +2 -0
- package/front_end/panels/timeline/TimelineCommentController.ts +132 -30
- package/front_end/panels/timeline/TimelinePanel.ts +4 -0
- package/front_end/panels/timeline/components/IgnoreListSetting.ts +1 -1
- package/front_end/panels/timeline/utils/Treemap.ts +8 -0
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/comments/CommentAnchorResolver.ts +3 -0
- package/front_end/ui/comments/CommentOverlayManager.ts +2 -4
- package/front_end/ui/components/lists/List.ts +14 -1
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +1 -1
- package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +23 -14
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +3 -0
- package/front_end/ui/legacy/Toolbar.ts +0 -1
- package/front_end/ui/legacy/Treeoutline.ts +7 -2
- package/front_end/ui/legacy/UIUtils.ts +4 -1
- package/front_end/ui/legacy/components/inline_editor/Swatches.ts +19 -6
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +20 -11
- package/front_end/ui/legacy/components/source_frame/XMLView.ts +27 -7
- package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
- package/package.json +1 -1
|
@@ -16,17 +16,22 @@ const {
|
|
|
16
16
|
html,
|
|
17
17
|
render,
|
|
18
18
|
nothing,
|
|
19
|
-
Directives: {repeat, styleMap},
|
|
19
|
+
Directives: {classMap, repeat, styleMap},
|
|
20
20
|
} = Lit;
|
|
21
21
|
|
|
22
22
|
export interface ViewInput {
|
|
23
23
|
pins: Comments.CommentOverlayManager.PinPositionData[];
|
|
24
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Highlight of the currently open thread. Null when no thread is open, so
|
|
26
|
+
* only pins are rendered.
|
|
27
|
+
*/
|
|
28
|
+
activeHighlight: Comments.CommentOverlayManager.HighlightRectData|null;
|
|
25
29
|
hoverHighlight: Comments.CommentOverlayManager.HoverHighlightData|null;
|
|
26
30
|
commentMode: boolean;
|
|
27
31
|
onPinClick: (threadId: string) => void;
|
|
28
32
|
activeThread: CommentManager.CommentManager.CommentThread|null;
|
|
29
33
|
activePin: Comments.CommentOverlayManager.PinPositionData|null;
|
|
34
|
+
fallbackPosition?: {left: number, top: number}|null;
|
|
30
35
|
title: Title;
|
|
31
36
|
onAddComment: (text: string) => void;
|
|
32
37
|
onDeleteQueuedComment: () => void;
|
|
@@ -46,8 +51,10 @@ const PIN_HEIGHT = 30;
|
|
|
46
51
|
const POPUP_WIDTH = 288;
|
|
47
52
|
const POPUP_HEIGHT = 220;
|
|
48
53
|
const AUTO_CLOSE_DELAY_MS = 2000;
|
|
54
|
+
const COMMENTS_VIEW_ID = 'comments';
|
|
49
55
|
|
|
50
56
|
const DEFAULT_VIEW: View = (input: ViewInput, _output: undefined, target: HTMLElement): void => {
|
|
57
|
+
const popupPosition = input.activePin ?? input.fallbackPosition;
|
|
51
58
|
// clang-format off
|
|
52
59
|
render(html`
|
|
53
60
|
<style>${commentsOverlayStyles}</style>
|
|
@@ -62,51 +69,54 @@ const DEFAULT_VIEW: View = (input: ViewInput, _output: undefined, target: HTMLEl
|
|
|
62
69
|
})}>
|
|
63
70
|
</div>
|
|
64
71
|
` : nothing}
|
|
65
|
-
${
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
)}
|
|
72
|
+
${input.activeHighlight?.visible && input.activeThread ? html`
|
|
73
|
+
<div
|
|
74
|
+
class=${classMap({
|
|
75
|
+
'comment-anchor-highlight': true,
|
|
76
|
+
resolved: input.activeThread.status === 'RESOLVED',
|
|
77
|
+
})}
|
|
78
|
+
style=${styleMap({
|
|
79
|
+
transform: `translate3d(${input.activeHighlight.left}px, ${input.activeHighlight.top}px, 0)`,
|
|
80
|
+
width: `${input.activeHighlight.width}px`,
|
|
81
|
+
height: `${input.activeHighlight.height}px`,
|
|
82
|
+
})}>
|
|
83
|
+
</div>
|
|
84
|
+
` : nothing}
|
|
79
85
|
${repeat(
|
|
80
86
|
input.pins.filter(p => p.visible),
|
|
81
87
|
p => p.id,
|
|
82
88
|
p => html`
|
|
83
89
|
<div
|
|
84
90
|
class="comment-pin"
|
|
91
|
+
aria-hidden="true"
|
|
85
92
|
style=${styleMap({
|
|
86
93
|
transform: `translate3d(${p.left}px, ${p.top}px, 0)`,
|
|
87
94
|
})}
|
|
88
95
|
@click=${() => input.onPinClick(p.id)}>
|
|
89
|
-
<div class="comment-cursor"
|
|
96
|
+
<div class="comment-cursor"></div>
|
|
90
97
|
</div>
|
|
91
98
|
`,
|
|
92
99
|
)}
|
|
93
|
-
${
|
|
94
|
-
[{
|
|
100
|
+
${popupPosition && input.activeThread ? repeat(
|
|
101
|
+
[{position: popupPosition, thread: input.activeThread}],
|
|
95
102
|
item => item.thread.id,
|
|
96
103
|
item => {
|
|
97
|
-
|
|
98
|
-
Math.max(POPUP_MARGIN, item.pin.top + PIN_HEIGHT),
|
|
99
|
-
Math.max(POPUP_MARGIN, target.clientHeight - POPUP_HEIGHT),
|
|
100
|
-
);
|
|
104
|
+
// Clamp horizontal position so the popup stays within the viewport with POPUP_MARGIN padding.
|
|
101
105
|
const popupLeft = Math.min(
|
|
102
|
-
Math.max(POPUP_MARGIN, item.
|
|
106
|
+
Math.max(POPUP_MARGIN, item.position.left),
|
|
103
107
|
Math.max(POPUP_MARGIN, target.clientWidth - POPUP_WIDTH - POPUP_MARGIN),
|
|
104
108
|
);
|
|
109
|
+
// When anchored to a pin (`activePin`), place the popup below the pin (`top + PIN_HEIGHT`).
|
|
110
|
+
// When unanchored (`fallbackPosition` from a drawer row), place the anchor point just above
|
|
111
|
+
// the row (`top - POPUP_MARGIN`) and shift the popup up by its own height via `translateY(-100%)`.
|
|
112
|
+
const topOffset = input.activePin ? item.position.top + PIN_HEIGHT : item.position.top - POPUP_MARGIN;
|
|
113
|
+
const maxTop = target.clientHeight - (input.activePin ? POPUP_HEIGHT : POPUP_MARGIN);
|
|
114
|
+
const popupTop = Math.min(Math.max(POPUP_MARGIN, topOffset), Math.max(POPUP_MARGIN, maxTop));
|
|
105
115
|
return html`
|
|
106
116
|
<div
|
|
107
117
|
class="comment-popup-widget"
|
|
108
118
|
style=${styleMap({
|
|
109
|
-
transform: `translate3d(${popupLeft}px, ${popupTop}px, 0)`,
|
|
119
|
+
transform: `translate3d(${popupLeft}px, ${popupTop}px, 0)${input.activePin ? '' : ' translateY(-100%)'}`,
|
|
110
120
|
})}>
|
|
111
121
|
${UI.Widget.widget(CommentThreadWidget, {
|
|
112
122
|
title: input.title,
|
|
@@ -127,6 +137,13 @@ const DEFAULT_VIEW: View = (input: ViewInput, _output: undefined, target: HTMLEl
|
|
|
127
137
|
// clang-format on
|
|
128
138
|
};
|
|
129
139
|
|
|
140
|
+
function isEventInsidePopupOrPin(event: Event): boolean {
|
|
141
|
+
const composedTarget = event.composedPath()[0];
|
|
142
|
+
const target = composedTarget instanceof Element ? composedTarget : event.target;
|
|
143
|
+
return target instanceof Element &&
|
|
144
|
+
Boolean(Comments.CommentAnchorResolver.closestAcrossShadow(target, '.comment-popup-widget, .comment-pin'));
|
|
145
|
+
}
|
|
146
|
+
|
|
130
147
|
export class CommentsOverlayWidget extends UI.Widget.Widget {
|
|
131
148
|
static override readonly INJECT: readonly[typeof CommentManager.CommentManager.CommentManager] =
|
|
132
149
|
[CommentManager.CommentManager.CommentManager] as const;
|
|
@@ -135,18 +152,22 @@ export class CommentsOverlayWidget extends UI.Widget.Widget {
|
|
|
135
152
|
readonly #commentManager: CommentManager.CommentManager.CommentManager;
|
|
136
153
|
#commentOverlayManager: Comments.CommentOverlayManager.CommentOverlayManager;
|
|
137
154
|
#activeThreadId: string|null = null;
|
|
155
|
+
#fallbackPosition: {left: number, top: number}|null = null;
|
|
138
156
|
#closeTimeoutId: number|null = null;
|
|
139
157
|
#cachedTitle: Title = {text: ''};
|
|
140
158
|
#cachedTitleAnchor: CommentManager.CommentManager.CommentAnchorSignature|null = null;
|
|
141
159
|
|
|
142
160
|
#setActiveThreadId(threadId: string|null): void {
|
|
161
|
+
this.#fallbackPosition = null;
|
|
143
162
|
if (this.#activeThreadId !== threadId) {
|
|
144
163
|
this.#clearCloseTimeout();
|
|
145
164
|
this.#activeThreadId = threadId;
|
|
146
165
|
if (threadId && this.isShowing()) {
|
|
147
166
|
document.documentElement.addEventListener('keydown', this.#onKeyDown);
|
|
167
|
+
document.documentElement.addEventListener('click', this.#onClickOutside, {capture: true});
|
|
148
168
|
} else {
|
|
149
169
|
document.documentElement.removeEventListener('keydown', this.#onKeyDown);
|
|
170
|
+
document.documentElement.removeEventListener('click', this.#onClickOutside, {capture: true});
|
|
150
171
|
}
|
|
151
172
|
}
|
|
152
173
|
}
|
|
@@ -199,6 +220,7 @@ export class CommentsOverlayWidget extends UI.Widget.Widget {
|
|
|
199
220
|
);
|
|
200
221
|
if (this.#activeThreadId) {
|
|
201
222
|
document.documentElement.addEventListener('keydown', this.#onKeyDown);
|
|
223
|
+
document.documentElement.addEventListener('click', this.#onClickOutside, {capture: true});
|
|
202
224
|
}
|
|
203
225
|
|
|
204
226
|
this.requestUpdate();
|
|
@@ -207,6 +229,7 @@ export class CommentsOverlayWidget extends UI.Widget.Widget {
|
|
|
207
229
|
override willHide(): void {
|
|
208
230
|
this.#clearCloseTimeout();
|
|
209
231
|
document.documentElement.removeEventListener('keydown', this.#onKeyDown);
|
|
232
|
+
document.documentElement.removeEventListener('click', this.#onClickOutside, {capture: true});
|
|
210
233
|
this.#commentOverlayManager.stop();
|
|
211
234
|
this.#commentOverlayManager.removeEventListener(
|
|
212
235
|
Comments.CommentOverlayManager.Events.POSITIONS_UPDATED,
|
|
@@ -364,11 +387,18 @@ export class CommentsOverlayWidget extends UI.Widget.Widget {
|
|
|
364
387
|
}
|
|
365
388
|
};
|
|
366
389
|
|
|
390
|
+
#onClickOutside = (event: MouseEvent): void => {
|
|
391
|
+
if (!this.#activeThreadId || isEventInsidePopupOrPin(event)) {
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
this.#handleCloseCommentThread();
|
|
395
|
+
};
|
|
396
|
+
|
|
367
397
|
#renderDisconnectedView(): void {
|
|
368
398
|
this.#view(
|
|
369
399
|
{
|
|
370
400
|
pins: [],
|
|
371
|
-
|
|
401
|
+
activeHighlight: null,
|
|
372
402
|
hoverHighlight: null,
|
|
373
403
|
commentMode: false,
|
|
374
404
|
onPinClick: this.#handlePinClick,
|
|
@@ -391,17 +421,19 @@ export class CommentsOverlayWidget extends UI.Widget.Widget {
|
|
|
391
421
|
title: Title,
|
|
392
422
|
): void {
|
|
393
423
|
const pins = this.#commentOverlayManager.getPinPositions();
|
|
394
|
-
const highlights = this.#commentOverlayManager.getHighlightRects();
|
|
395
424
|
const activePin = this.#activeThreadId ? pins.find(p => p.id === this.#activeThreadId) ?? null : null;
|
|
425
|
+
const activeHighlight =
|
|
426
|
+
this.#activeThreadId ? this.#commentOverlayManager.getHighlight(this.#activeThreadId) ?? null : null;
|
|
396
427
|
|
|
397
428
|
const viewInput: ViewInput = {
|
|
398
429
|
pins,
|
|
399
|
-
|
|
430
|
+
activeHighlight,
|
|
400
431
|
hoverHighlight: this.#commentOverlayManager.getHoverHighlight(),
|
|
401
432
|
commentMode: this.#commentManager.isCommentMode(),
|
|
402
433
|
onPinClick: this.#handlePinClick,
|
|
403
434
|
activeThread,
|
|
404
435
|
activePin,
|
|
436
|
+
fallbackPosition: this.#fallbackPosition,
|
|
405
437
|
title,
|
|
406
438
|
onAddComment: (text: string) => {
|
|
407
439
|
if (!activeThread) {
|
|
@@ -470,10 +502,11 @@ export class CommentsOverlayWidget extends UI.Widget.Widget {
|
|
|
470
502
|
this.#renderWithTitle(activeThread, title);
|
|
471
503
|
}
|
|
472
504
|
|
|
473
|
-
openThread(threadId: string): void {
|
|
505
|
+
openThread(threadId: string, fallbackPosition?: {left: number, top: number}): void {
|
|
474
506
|
this.#clearCloseTimeout();
|
|
475
507
|
this.#commentOverlayManager.clearDraftThreads();
|
|
476
508
|
this.#setActiveThreadId(threadId);
|
|
509
|
+
this.#fallbackPosition = fallbackPosition ?? null;
|
|
477
510
|
this.requestUpdate();
|
|
478
511
|
}
|
|
479
512
|
}
|
|
@@ -495,20 +528,21 @@ function getOrCreateOverlayWidget(
|
|
|
495
528
|
return widgetInstance;
|
|
496
529
|
}
|
|
497
530
|
|
|
498
|
-
export class ThreadRevealer implements Common.Revealer.Revealer<CommentManager.
|
|
499
|
-
async reveal(thread: CommentManager.
|
|
531
|
+
export class ThreadRevealer implements Common.Revealer.Revealer<CommentManager.CommentThread.RevealableThread> {
|
|
532
|
+
async reveal({thread, position}: CommentManager.CommentThread.RevealableThread): Promise<void> {
|
|
500
533
|
const panelId = Comments.CommentAnchorResolver.extractPanelId(thread.anchor.vePath);
|
|
501
534
|
if (panelId && UI.InspectorView.InspectorView.instance().hasPanel(panelId)) {
|
|
502
535
|
await UI.InspectorView.InspectorView.instance().showPanel(panelId);
|
|
503
536
|
}
|
|
504
537
|
|
|
505
538
|
const element = Comments.CommentAnchorResolver.rematchCommentAnchor(thread);
|
|
539
|
+
thread.setOrphaned(!element);
|
|
506
540
|
if (element) {
|
|
507
541
|
element.scrollIntoView({block: 'center', inline: 'nearest', behavior: 'smooth'});
|
|
508
542
|
}
|
|
509
543
|
|
|
510
544
|
const overlay = getOrCreateOverlayWidget();
|
|
511
|
-
overlay.openThread(thread.id);
|
|
545
|
+
overlay.openThread(thread.id, position);
|
|
512
546
|
}
|
|
513
547
|
}
|
|
514
548
|
|
|
@@ -528,14 +562,39 @@ export class ActionDelegate implements UI.ActionRegistration.ActionDelegate {
|
|
|
528
562
|
return false;
|
|
529
563
|
}
|
|
530
564
|
getOrCreateOverlayWidget(this.#commentManager);
|
|
531
|
-
this.#commentManager.
|
|
532
|
-
|
|
533
|
-
);
|
|
565
|
+
const enteringCommentMode = !this.#commentManager.isCommentMode();
|
|
566
|
+
this.#commentManager.setCommentMode(enteringCommentMode);
|
|
567
|
+
this.#revealCommentsView(enteringCommentMode);
|
|
534
568
|
return true;
|
|
535
569
|
}
|
|
536
570
|
return false;
|
|
537
571
|
}
|
|
538
572
|
|
|
573
|
+
/**
|
|
574
|
+
* When entering comment mode with the drawer open, add the Comments tab to
|
|
575
|
+
* the drawer without selecting it or moving focus away from the page being
|
|
576
|
+
* commented on. When leaving comment mode, always open the drawer on the
|
|
577
|
+
* Comments tab, as checking the responses is the likely next step.
|
|
578
|
+
*/
|
|
579
|
+
#revealCommentsView(enteringCommentMode: boolean): void {
|
|
580
|
+
const viewManager = UI.ViewManager.ViewManager.instance();
|
|
581
|
+
if (!viewManager.hasView(COMMENTS_VIEW_ID)) {
|
|
582
|
+
return;
|
|
583
|
+
}
|
|
584
|
+
if (enteringCommentMode) {
|
|
585
|
+
if (!UI.InspectorView.InspectorView.maybeGetInspectorViewInstance()?.drawerVisible()) {
|
|
586
|
+
return;
|
|
587
|
+
}
|
|
588
|
+
void viewManager.resolveLocation(viewManager.locationNameForViewId(COMMENTS_VIEW_ID)).then(location => {
|
|
589
|
+
return location?.showView(viewManager.view(COMMENTS_VIEW_ID), /* insertBefore */ undefined,
|
|
590
|
+
/* userGesture */ false,
|
|
591
|
+
/* omitFocus */ true, /* shouldSelectTab */ false);
|
|
592
|
+
});
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
595
|
+
void viewManager.showView(COMMENTS_VIEW_ID, /* userGesture */ true);
|
|
596
|
+
}
|
|
597
|
+
|
|
539
598
|
static resetForTest(): void {
|
|
540
599
|
if (widgetInstance) {
|
|
541
600
|
widgetInstance.detach();
|
|
@@ -68,6 +68,23 @@
|
|
|
68
68
|
min-width: 0;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
.thread-body {
|
|
72
|
+
display: flex;
|
|
73
|
+
flex-direction: column;
|
|
74
|
+
gap: var(--sys-size-4);
|
|
75
|
+
width: 100%;
|
|
76
|
+
max-height: min(var(--sys-size-32), 50vh);
|
|
77
|
+
overflow-y: auto;
|
|
78
|
+
overscroll-behavior: contain;
|
|
79
|
+
scrollbar-width: thin;
|
|
80
|
+
scrollbar-color: transparent transparent;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.thread-body:hover,
|
|
84
|
+
.thread-body:focus-within {
|
|
85
|
+
scrollbar-color: var(--sys-color-neutral-outline) transparent;
|
|
86
|
+
}
|
|
87
|
+
|
|
71
88
|
.comment-text {
|
|
72
89
|
width: 100%;
|
|
73
90
|
font-family: var(--default-font-family);
|
|
@@ -33,23 +33,14 @@
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
.comment-cursor {
|
|
36
|
-
display: flex;
|
|
37
36
|
width: var(--sys-size-9);
|
|
38
37
|
height: var(--sys-size-9);
|
|
39
38
|
box-sizing: border-box;
|
|
40
39
|
padding: 0;
|
|
41
|
-
flex-direction: column;
|
|
42
|
-
justify-content: center;
|
|
43
|
-
align-items: center;
|
|
44
40
|
flex-shrink: 0;
|
|
45
41
|
box-shadow: var(--sys-elevation-level2);
|
|
46
42
|
border-radius: 100px 100px 100px var(--sys-shape-corner-extra-small, 4px);
|
|
47
43
|
background: var(--sys-color-primary);
|
|
48
|
-
color: var(--sys-color-on-primary);
|
|
49
|
-
font-family: var(--default-font-family);
|
|
50
|
-
font-size: var(--sys-typescale-body5-size);
|
|
51
|
-
font-weight: var(--ref-typeface-weight-bold, 600);
|
|
52
|
-
line-height: 1;
|
|
53
44
|
transition: transform 0.1s ease;
|
|
54
45
|
transform-origin: center center;
|
|
55
46
|
}
|
|
@@ -59,12 +50,16 @@
|
|
|
59
50
|
top: 0;
|
|
60
51
|
left: 0;
|
|
61
52
|
pointer-events: none;
|
|
62
|
-
border: var(--sys-size-2)
|
|
53
|
+
border: var(--sys-size-2) solid var(--sys-color-primary);
|
|
63
54
|
background-color: color-mix(in srgb, var(--sys-color-primary), transparent 90%);
|
|
64
55
|
box-sizing: border-box;
|
|
65
56
|
will-change: transform;
|
|
66
57
|
}
|
|
67
58
|
|
|
59
|
+
.comment-anchor-highlight.resolved {
|
|
60
|
+
border-style: dashed;
|
|
61
|
+
}
|
|
62
|
+
|
|
68
63
|
.comment-hover-highlight {
|
|
69
64
|
position: absolute;
|
|
70
65
|
top: 0;
|
|
@@ -64,6 +64,16 @@ UI.ActionRegistration.registerActionExtension({
|
|
|
64
64
|
const CommonModule = await loadCommonModule();
|
|
65
65
|
return new CommonModule.CommentsOverlayWidget.ActionDelegate();
|
|
66
66
|
},
|
|
67
|
+
bindings: [
|
|
68
|
+
{
|
|
69
|
+
shortcut: 'Ctrl+Shift+K',
|
|
70
|
+
platform: UI.ActionRegistration.Platforms.WINDOWS_LINUX,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
shortcut: 'Meta+Shift+K',
|
|
74
|
+
platform: UI.ActionRegistration.Platforms.MAC,
|
|
75
|
+
},
|
|
76
|
+
],
|
|
67
77
|
});
|
|
68
78
|
|
|
69
79
|
UI.Toolbar.registerToolbarItem({
|
|
@@ -78,7 +88,7 @@ UI.Toolbar.registerToolbarItem({
|
|
|
78
88
|
|
|
79
89
|
Common.Revealer.registerRevealer({
|
|
80
90
|
contextTypes() {
|
|
81
|
-
return [CommentManager.
|
|
91
|
+
return [CommentManager.CommentThread.RevealableThread];
|
|
82
92
|
},
|
|
83
93
|
async loadRevealer() {
|
|
84
94
|
const CommonModule = await loadCommonModule();
|