chrome-devtools-frontend 1.0.1559913 → 1.0.1561080

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.
Files changed (130) hide show
  1. package/front_end/core/host/InspectorFrontendHostStub.ts +0 -3
  2. package/front_end/core/platform/ArrayUtilities.ts +13 -0
  3. package/front_end/core/root/Runtime.ts +0 -5
  4. package/front_end/core/sdk/DOMModel.ts +8 -0
  5. package/front_end/core/sdk/NetworkManager.ts +4 -0
  6. package/front_end/core/sdk/NetworkRequest.ts +9 -0
  7. package/front_end/core/sdk/OverlayModel.ts +20 -9
  8. package/front_end/entrypoints/main/MainImpl.ts +2 -1
  9. package/front_end/generated/InspectorBackendCommands.ts +4 -2
  10. package/front_end/generated/protocol-mapping.d.ts +7 -0
  11. package/front_end/generated/protocol-proxy-api.d.ts +5 -0
  12. package/front_end/generated/protocol.ts +24 -0
  13. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +23 -22
  14. package/front_end/models/badges/UserBadges.ts +48 -16
  15. package/front_end/models/greendev/Prototypes.ts +6 -1
  16. package/front_end/models/trace/extras/TraceTree.ts +1 -1
  17. package/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +8 -3
  18. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +11 -142
  19. package/front_end/panels/ai_assistance/PatchWidget.ts +90 -72
  20. package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
  21. package/front_end/panels/ai_assistance/components/ChatInput.ts +701 -0
  22. package/front_end/panels/ai_assistance/components/ChatView.ts +71 -1268
  23. package/front_end/panels/ai_assistance/components/UserActionRow.ts +514 -31
  24. package/front_end/panels/ai_assistance/components/chatInput.css +387 -0
  25. package/front_end/panels/ai_assistance/components/chatView.css +38 -599
  26. package/front_end/panels/ai_assistance/components/userActionRow.css +230 -0
  27. package/front_end/panels/autofill/AutofillView.ts +2 -2
  28. package/front_end/panels/changes/ChangesView.ts +15 -1
  29. package/front_end/panels/changes/changesView.css +6 -0
  30. package/front_end/panels/common/BadgeNotification.ts +44 -58
  31. package/front_end/panels/common/CopyChangesToPrompt.ts +233 -0
  32. package/front_end/panels/common/common.ts +1 -0
  33. package/front_end/panels/elements/ElementsTreeElement.ts +183 -359
  34. package/front_end/panels/elements/ElementsTreeOutline.ts +0 -6
  35. package/front_end/panels/elements/ShortcutTreeElement.ts +57 -50
  36. package/front_end/panels/elements/StylePropertiesSection.ts +1 -3
  37. package/front_end/panels/elements/components/AdornerManager.ts +5 -149
  38. package/front_end/panels/issues/HiddenIssuesRow.ts +1 -2
  39. package/front_end/panels/issues/IssueKindView.ts +2 -4
  40. package/front_end/panels/issues/IssueView.ts +2 -4
  41. package/front_end/panels/network/NetworkDataGridNode.ts +65 -1
  42. package/front_end/panels/network/NetworkLogView.ts +2 -4
  43. package/front_end/panels/network/NetworkLogViewColumns.ts +9 -0
  44. package/front_end/panels/screencast/ScreencastApp.ts +1 -0
  45. package/front_end/panels/settings/SettingsScreen.ts +3 -2
  46. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +14 -1
  47. package/front_end/panels/timeline/ThirdPartyTreeView.ts +1 -4
  48. package/front_end/panels/timeline/TimelineController.ts +185 -3
  49. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +52 -25
  50. package/front_end/panels/timeline/TimelineFlameChartView.ts +1 -0
  51. package/front_end/panels/timeline/TimelinePanel.ts +17 -104
  52. package/front_end/panels/timeline/TimelineTreeView.ts +1 -0
  53. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -2
  54. package/front_end/panels/timeline/components/insights/Table.ts +3 -3
  55. package/front_end/panels/whats_new/ReleaseNoteText.ts +15 -9
  56. package/front_end/panels/whats_new/resources/WNDT.md +6 -6
  57. package/front_end/third_party/chromium/README.chromium +1 -1
  58. package/front_end/third_party/codemirror.next/rebuild.sh +1 -1
  59. package/front_end/third_party/lit/rebuild.sh +1 -1
  60. package/front_end/third_party/puppeteer/README.chromium +2 -2
  61. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +2 -3
  62. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  63. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  64. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  65. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js +9 -0
  66. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
  67. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.d.ts +3 -0
  68. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
  69. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.js +9 -0
  70. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.js.map +1 -1
  71. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.d.ts +3 -0
  72. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.d.ts.map +1 -1
  73. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.js +10 -0
  74. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.js.map +1 -1
  75. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  76. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +8 -4
  77. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  78. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
  79. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts.map +1 -1
  80. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js +1 -1
  81. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js.map +1 -1
  82. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  83. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  84. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  85. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  86. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  87. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  88. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  89. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +10 -1
  90. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +13 -7
  91. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +2 -3
  92. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  93. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  94. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  95. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js +9 -0
  96. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
  97. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.d.ts +3 -0
  98. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
  99. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.js +9 -0
  100. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.js.map +1 -1
  101. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.d.ts +3 -0
  102. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.d.ts.map +1 -1
  103. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.js +10 -0
  104. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.js.map +1 -1
  105. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  106. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +8 -4
  107. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  108. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
  109. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts.map +1 -1
  110. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js +1 -1
  111. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js.map +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  113. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  114. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  115. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  116. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  117. package/front_end/third_party/puppeteer/package/lib/types.d.ts +10 -1
  118. package/front_end/third_party/puppeteer/package/package.json +3 -3
  119. package/front_end/third_party/puppeteer/package/src/api/Page.ts +2 -3
  120. package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +13 -0
  121. package/front_end/third_party/puppeteer/package/src/bidi/HTTPResponse.ts +10 -0
  122. package/front_end/third_party/puppeteer/package/src/bidi/core/Request.ts +15 -0
  123. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +9 -4
  124. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  125. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  126. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  127. package/front_end/ui/components/adorners/Adorner.ts +8 -68
  128. package/front_end/ui/legacy/TabbedPane.ts +1 -1
  129. package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
  130. package/package.json +2 -1
@@ -29,66 +29,6 @@
29
29
  container-name: --chat-ui-container;
30
30
  }
31
31
 
32
- .input-form {
33
- display: flex;
34
- flex-direction: column;
35
- padding: 0 var(--sys-size-5) 0 var(--sys-size-5);
36
- max-width: var(--sys-size-36);
37
- background-color: var(--sys-color-cdt-base-container);
38
- width: 100%;
39
- position: sticky;
40
- z-index: 9999;
41
- bottom: 0;
42
- padding-bottom: var(--sys-size-5);
43
- /*
44
- The `box-shadow` is a workaround to hide the content appearing between the `.input-form`
45
- and the footer in some resolutions even though the `.input-form` has `bottom: 0`.
46
- */
47
- box-shadow: 0 1px var(--sys-color-cdt-base-container);
48
-
49
- /* Prevents the input form from jumping when the scrollbar is shown */
50
- /* 688px is the max width of the input form + left and right paddings: var(--sys-size-36) + 2 * var(--sys-size-5) */
51
- @container (width > 688px) {
52
- --half-scrollbar-width: calc((100cqw - 100%) / 2);
53
-
54
- margin-left: var(--half-scrollbar-width);
55
- margin-right: calc(-1 * var(--half-scrollbar-width));
56
- }
57
-
58
- /* when there isn't enough space to view the messages,
59
- do not overlay the input form on top of the messages */
60
- /* height < var(--sys-size-27) */
61
- @container (height < 224px) {
62
- margin-top: var(--sys-size-4);
63
- margin-bottom: var(--sys-size-4);
64
- position: static;
65
- }
66
-
67
- @container --chat-ui-container (width < 400px) {
68
- /*
69
- The footer already adds necessary paddings for this state.
70
- However, without the `padding-bottom` here, the outline in the bottom
71
- is rendered behind the footer. So, we add 1px space here to make sure
72
- that the outline is rendered fully.
73
- */
74
- padding-bottom: var(--sys-size-1);
75
- }
76
- }
77
-
78
- .chat-readonly-container {
79
- display: flex;
80
- width: 100%;
81
- max-width: var(--sys-size-36);
82
- justify-content: center;
83
- align-items: center;
84
- background-color: var(--sys-color-surface3);
85
- font: var(--sys-typescale-body4-regular);
86
- padding: var(--sys-size-5) 0;
87
- border-radius: var(--sys-shape-corner-medium-small);
88
- margin-bottom: var(--sys-size-5);
89
- color: var(--sys-color-on-surface-subtle);
90
- }
91
-
92
32
  .info-tooltip-container {
93
33
  max-width: var(--sys-size-28);
94
34
  padding: var(--sys-size-4) var(--sys-size-5);
@@ -101,208 +41,11 @@
101
41
  padding-left: 0;
102
42
  }
103
43
 
104
- .chat-input-container {
105
- width: 100%;
106
- display: flex;
107
- position: relative;
108
- flex-direction: column;
109
- border: 1px solid var(--sys-color-neutral-outline);
110
- border-radius: var(--sys-shape-corner-small);
111
-
112
- &:focus-within {
113
- outline: 1px solid var(--sys-color-primary);
114
- border-color: var(--sys-color-primary);
115
- }
116
-
117
- &.disabled {
118
- background-color: var(--sys-color-state-disabled-container);
119
- border-color: transparent;
120
-
121
- & .chat-input-disclaimer {
122
- border-color: var(--sys-color-state-disabled);
123
- }
124
- }
125
-
126
- &.single-line-layout {
127
- flex-direction: row;
128
- justify-content: space-between;
129
-
130
- .chat-input {
131
- flex-shrink: 1;
132
- padding: var(--sys-size-4);
133
- }
134
-
135
- .chat-input-actions {
136
- flex-shrink: 0;
137
- padding-block: 0;
138
- align-items: flex-end;
139
- padding-bottom: var(--sys-size-1);
140
- }
141
- }
142
-
143
- & .image-input-container {
144
- margin: var(--sys-size-3) var(--sys-size-4) 0;
145
- max-width: 100%;
146
- width: fit-content;
147
- position: relative;
148
-
149
- devtools-button {
150
- position: absolute;
151
- top: calc(-1 * var(--sys-size-2));
152
- right: calc(-1 * var(--sys-size-3));
153
- border-radius: var(--sys-shape-corner-full);
154
- border: 1px solid var(--sys-color-neutral-outline);
155
- background-color: var(--sys-color-cdt-base-container);
156
- }
157
-
158
- img {
159
- max-height: var(--sys-size-18);
160
- max-width: 100%;
161
- border: 1px solid var(--sys-color-neutral-outline);
162
- border-radius: var(--sys-shape-corner-small);
163
- }
164
-
165
- .loading {
166
- margin: var(--sys-size-4) 0;
167
- display: inline-flex;
168
- justify-content: center;
169
- align-items: center;
170
- height: var(--sys-size-18);
171
- width: var(--sys-size-19);
172
- background-color: var(--sys-color-surface3);
173
- border-radius: var(--sys-shape-corner-small);
174
- border: 1px solid var(--sys-color-neutral-outline);
175
-
176
- devtools-spinner {
177
- color: var(--sys-color-state-disabled);
178
- }
179
- }
180
- }
181
-
182
- & .chat-input-disclaimer-container {
183
- display: flex;
184
- align-items: center;
185
- padding-right: var(--sys-size-3);
186
- flex-shrink: 0;
187
- }
188
-
189
- & .chat-input-disclaimer {
190
- display: flex;
191
- justify-content: center;
192
- align-items: center;
193
- font: var(--sys-typescale-body5-regular);
194
- border-right: 1px solid var(--sys-color-divider);
195
- padding-right: 8px;
196
-
197
- &.hide-divider {
198
- border-right: none;
199
- }
200
- }
201
-
202
- /*
203
- Hide the inline disclaimer on narrow widths (< 400px) because space is limited
204
- and the disclaimer is shown in the footer instead for this case.
205
- */
206
- @container --chat-ui-container (width < 400px) {
207
- & .chat-input-disclaimer-container {
208
- display: none;
209
- }
210
- }
211
- }
212
-
213
- .chat-input {
214
- scrollbar-width: none;
215
- field-sizing: content;
216
- resize: none;
217
- width: 100%;
218
- max-height: 84px; /* 4 rows */
219
- border: 0;
220
- border-radius: var(--sys-shape-corner-small);
221
- font: var(--sys-typescale-body4-regular);
222
- line-height: 18px;
223
- min-height: var(--sys-size-11);
224
- color: var(--sys-color-on-surface);
225
- background-color: var(--sys-color-cdt-base-container);
226
- padding: var(--sys-size-4) var(--sys-size-4) var(--sys-size-3)
227
- var(--sys-size-4);
228
-
229
- &::placeholder {
230
- opacity: 60%;
231
- }
232
-
233
- &:focus-visible {
234
- outline: 0;
235
- }
236
-
237
- &:disabled {
238
- color: var(--sys-color-state-disabled);
239
- background-color: transparent;
240
- border-color: transparent;
241
-
242
- &::placeholder {
243
- color: var(--sys-color-on-surface-subtle);
244
- opacity: 100%;
245
- }
246
- }
247
- }
248
-
249
- .chat-input-actions {
250
- display: flex;
251
- flex-direction: row;
252
- align-items: center;
253
- justify-content: space-between;
254
- padding-left: var(--sys-size-4);
255
- padding-right: var(--sys-size-2);
256
- gap: var(--sys-size-6);
257
- padding-bottom: var(--sys-size-2);
258
-
259
- & .chat-input-actions-left {
260
- flex: 1 1 0;
261
- min-width: 0;
262
- }
263
-
264
- & .chat-input-actions-right {
265
- flex-shrink: 0;
266
- display: flex;
267
-
268
- & .start-new-chat-button {
269
- padding-bottom: var(--sys-size-2);
270
- padding-right: var(--sys-size-3);
271
- }
272
- }
273
- }
274
-
275
- .chat-inline-button {
276
- padding-left: 3px;
277
- }
278
-
279
44
  .chat-cancel-context-button {
280
45
  padding-bottom: 3px;
281
46
  padding-right: var(--sys-size-3);
282
47
  }
283
48
 
284
- footer.chat-view-footer {
285
- display: flex;
286
- justify-content: center;
287
- padding-block: var(--sys-size-3);
288
- font: var(--sys-typescale-body5-regular);
289
- border-top: 1px solid var(--sys-color-divider);
290
- text-wrap: balance;
291
- text-align: center;
292
-
293
- /*
294
- The footer (for active conversations) is hidden by default on wider screens
295
- because the disclaimer is shown inline within the chat input actions. Show it only on narrow widths (< 400px).
296
- */
297
- &:not(.is-read-only) {
298
- display: none;
299
- border: none;
300
-
301
- @container --chat-ui-container (width < 400px) {
302
- display: flex;
303
- }
304
- }
305
- }
306
49
 
307
50
  .messages-container {
308
51
  flex-grow: 1;
@@ -319,314 +62,7 @@ footer.chat-view-footer {
319
62
  }
320
63
  }
321
64
 
322
- .chat-message {
323
- user-select: text;
324
- cursor: initial;
325
- display: flex;
326
- flex-direction: column;
327
- gap: var(--sys-size-5);
328
- width: 100%;
329
- padding: var(--sys-size-7) var(--sys-size-5);
330
- font-size: 12px;
331
- word-break: normal;
332
- overflow-wrap: anywhere;
333
- border-bottom: var(--sys-size-1) solid var(--sys-color-divider);
334
-
335
- &:last-of-type {
336
- border-bottom: 0;
337
- }
338
-
339
- .message-info {
340
- display: flex;
341
- align-items: center;
342
- height: var(--sys-size-11);
343
- gap: var(--sys-size-4);
344
- font: var(--sys-typescale-body4-bold);
345
-
346
- img {
347
- border: 0;
348
- border-radius: var(--sys-shape-corner-full);
349
- display: block;
350
- height: var(--sys-size-9);
351
- width: var(--sys-size-9);
352
- }
353
-
354
- h2 {
355
- font: var(--sys-typescale-body4-bold);
356
- }
357
- }
358
-
359
- .actions {
360
- display: flex;
361
- flex-direction: column;
362
- gap: var(--sys-size-8);
363
- max-width: 100%;
364
- }
365
-
366
- .aborted {
367
- color: var(--sys-color-on-surface-subtle);
368
- }
369
-
370
- .image-link {
371
- width: fit-content;
372
- border-radius: var(--sys-shape-corner-small);
373
- outline-offset: var(--sys-size-2);
374
-
375
- img {
376
- max-height: var(--sys-size-20);
377
- max-width: 100%;
378
- border-radius: var(--sys-shape-corner-small);
379
- border: 1px solid var(--sys-color-neutral-outline);
380
- width: fit-content;
381
- vertical-align: bottom;
382
- }
383
- }
384
-
385
- .unavailable-image {
386
- margin: var(--sys-size-4) 0;
387
- display: inline-flex;
388
- justify-content: center;
389
- align-items: center;
390
- height: var(--sys-size-17);
391
- width: var(--sys-size-18);
392
- background-color: var(--sys-color-surface3);
393
- border-radius: var(--sys-shape-corner-small);
394
- border: 1px solid var(--sys-color-neutral-outline);
395
-
396
- devtools-icon {
397
- color: var(--sys-color-state-disabled);
398
- }
399
- }
400
- }
401
-
402
- .select-element {
403
- display: flex;
404
- gap: var(--sys-size-3);
405
- align-items: center;
406
-
407
- .resource-link,
408
- .resource-task {
409
- cursor: pointer;
410
- padding: var(--sys-size-2) var(--sys-size-3);
411
- font: var(--sys-typescale-body5-regular);
412
- border: var(--sys-size-1) solid var(--sys-color-divider);
413
- border-radius: var(--sys-shape-corner-extra-small);
414
- overflow: hidden;
415
- text-overflow: ellipsis;
416
- white-space: nowrap;
417
- /*
418
- Allow the link/task item to shrink below its intrinsic minimum width in the flex container,
419
- enabling text-overflow ellipsis to work correctly.
420
- */
421
- min-width: 0;
422
- line-height: 1;
423
-
424
- & .title {
425
- vertical-align: middle;
426
- font: var(--sys-typescale-body5-regular);
427
- }
428
-
429
- &.has-picker-behavior {
430
- overflow: visible;
431
- }
432
-
433
- &:focus-visible {
434
- outline: 2px solid var(--sys-color-state-focus-ring);
435
- }
436
-
437
- devtools-icon,
438
- devtools-file-source-icon {
439
- display: inline-flex;
440
- vertical-align: middle;
441
- width: var(--sys-size-7);
442
- height: var(--sys-size-7);
443
- }
444
-
445
- /*
446
- CSS styling for `network-override-marker` is similar to
447
- https://source.chromium.org/chromium/chromium/src/+/main:third_party/devtools-frontend/src/front_end/panels/network/networkLogView.css;l=379.
448
- There is a difference in `left` and `top` values to make sure
449
- it is placed correctly for the network icon in assistance panel.
450
- */
451
- .network-override-marker {
452
- position: relative;
453
- float: left;
454
- }
455
-
456
- .network-override-marker::before {
457
- content: var(--image-file-empty);
458
- width: var(--sys-size-4);
459
- height: var(--sys-size-4);
460
- border-radius: 50%;
461
- outline: var(--sys-size-1) solid var(--icon-gap-focus-selected);
462
- left: 11px;
463
- position: absolute;
464
- top: 13px;
465
- z-index: 1;
466
- background-color: var(--sys-color-purple-bright);
467
- }
468
-
469
- .image.icon {
470
- display: inline-flex;
471
- justify-content: center;
472
- align-items: center;
473
- vertical-align: middle;
474
- margin-right: var(--sys-size-3);
475
-
476
- img {
477
- max-width: var(--sys-size-7);
478
- max-height: var(--sys-size-7);
479
- }
480
- }
481
- }
482
-
483
- .resource-link.disabled,
484
- .resource-task.disabled,
485
- .resource-link.not-selected,
486
- .resource-task.not-selected {
487
- color: var(--sys-color-state-disabled);
488
- border-color: var(--sys-color-neutral-outline);
489
- }
490
-
491
- .resource-link.disabled,
492
- .resource-task.disabled {
493
- pointer-events: none;
494
- }
495
- }
496
-
497
- .indicator {
498
- color: var(--sys-color-green-bright);
499
- }
500
-
501
- .summary {
502
- display: grid;
503
- grid-template-columns: auto 1fr auto;
504
- padding: var(--sys-size-3);
505
- line-height: var(--sys-size-9);
506
- cursor: default;
507
- gap: var(--sys-size-3);
508
- justify-content: center;
509
- align-items: center;
510
-
511
- .title {
512
- text-overflow: ellipsis;
513
- white-space: nowrap;
514
- overflow: hidden;
515
- font: var(--sys-typescale-body4-regular);
516
-
517
- .paused {
518
- font: var(--sys-typescale-body4-bold);
519
- }
520
- }
521
- }
522
-
523
- .step-code {
524
- display: flex;
525
- flex-direction: column;
526
- gap: var(--sys-size-2);
527
- }
528
-
529
- .js-code-output {
530
- devtools-code-block {
531
- --code-block-max-code-height: 50px;
532
- }
533
- }
534
-
535
- .context-details {
536
- devtools-code-block {
537
- --code-block-max-code-height: 80px;
538
- }
539
- }
540
-
541
- .step {
542
- width: fit-content;
543
- background-color: var(--sys-color-surface3);
544
- border-radius: var(--sys-size-6);
545
- position: relative;
546
-
547
- &.empty {
548
- pointer-events: none;
549
-
550
- .arrow {
551
- display: none;
552
- }
553
- }
554
-
555
- &:not(&[open]):hover::after {
556
- content: '';
557
- height: 100%;
558
- width: 100%;
559
- border-radius: inherit;
560
- position: absolute;
561
- top: 0;
562
- left: 0;
563
- pointer-events: none;
564
- background-color: var(--sys-color-state-hover-on-subtle);
565
- }
566
-
567
- &.paused {
568
- .indicator {
569
- color: var(--sys-color-on-surface-subtle);
570
- }
571
- }
572
-
573
- &.canceled {
574
- .summary {
575
- color: var(--sys-color-state-disabled);
576
- text-decoration: line-through;
577
- }
578
65
 
579
- .indicator {
580
- color: var(--sys-color-state-disabled);
581
- }
582
- }
583
-
584
- devtools-markdown-view {
585
- --code-background-color: var(--sys-color-surface1);
586
- }
587
-
588
- devtools-icon {
589
- vertical-align: bottom;
590
- }
591
-
592
- devtools-spinner {
593
- width: var(--sys-size-9);
594
- height: var(--sys-size-9);
595
- padding: var(--sys-size-2);
596
- }
597
-
598
- &[open] {
599
- width: auto;
600
-
601
- .summary .title {
602
- white-space: normal;
603
- overflow: unset;
604
- }
605
-
606
- .summary .arrow {
607
- transform: rotate(180deg);
608
- }
609
- }
610
-
611
- summary::marker {
612
- content: '';
613
- }
614
-
615
- summary {
616
- border-radius: var(--sys-size-6);
617
- }
618
-
619
- .step-details {
620
- padding: 0 var(--sys-size-5) var(--sys-size-4) var(--sys-size-12);
621
- display: flex;
622
- flex-direction: column;
623
- gap: var(--sys-size-6);
624
-
625
- devtools-code-block {
626
- --code-block-background-color: var(--sys-color-surface1);
627
- }
628
- }
629
- }
630
66
 
631
67
  .link {
632
68
  color: var(--text-link);
@@ -729,21 +165,7 @@ main {
729
165
  }
730
166
  }
731
167
 
732
- .error-step {
733
- color: var(--sys-color-error);
734
- }
735
-
736
- .side-effect-confirmation {
737
- display: flex;
738
- flex-direction: column;
739
- gap: var(--sys-size-5);
740
- padding-bottom: var(--sys-size-4);
741
- }
742
168
 
743
- .side-effect-buttons-container {
744
- display: flex;
745
- gap: var(--sys-size-4);
746
- }
747
169
 
748
170
  .change-summary {
749
171
  background-color: var(--sys-color-surface3);
@@ -915,30 +337,47 @@ main {
915
337
  }
916
338
  }
917
339
 
918
- .floaty {
919
- margin: var(--sys-size-3) 0;
920
- padding: 0;
921
- list-style: none;
922
- display: flex;
923
- gap: var(--sys-size-4);
340
+ .sticky {
341
+ position: sticky;
342
+ bottom: 0;
343
+ z-index: 9999;
344
+ }
924
345
 
925
- li {
926
- border: var(--sys-size-1) solid var(--sys-color-divider);
927
- padding: var(--sys-size-2) var(--sys-size-3);
928
- max-width: 150px;
929
- display: flex;
930
- align-items: center;
931
- justify-content: flex-start;
346
+ .chat-input-widget {
347
+ width: 100%;
348
+ max-width: var(--sys-size-36);
349
+ background-color: var(--sys-color-cdt-base-container);
350
+ /*
351
+ The `box-shadow` is a workaround to hide the content appearing between the `.input-form`
352
+ and the footer in some resolutions even though the `.input-form` has `bottom: 0`.
353
+ */
354
+ box-shadow: 0 1px var(--sys-color-cdt-base-container);
932
355
 
933
- .context-item {
934
- max-width: 130px;
935
- overflow: hidden;
936
- text-overflow: ellipsis;
937
- flex-grow: 0;
938
- }
356
+ /* Prevents the input form from jumping when the scrollbar is shown */
357
+ /* 688px is the max width of the input form + left and right paddings: var(--sys-size-36) + 2 * var(--sys-size-5) */
358
+ @container (width > 688px) {
359
+ --half-scrollbar-width: calc((100cqw - 100%) / 2);
360
+
361
+ margin-left: var(--half-scrollbar-width);
362
+ margin-right: calc(-1 * var(--half-scrollbar-width));
363
+ }
364
+
365
+ /* when there isn't enough space to view the messages,
366
+ do not overlay the input form on top of the messages */
367
+ /* height < var(--sys-size-27) */
368
+ @container (height < 224px) {
369
+ margin-top: var(--sys-size-4);
370
+ margin-bottom: var(--sys-size-4);
371
+ position: static;
939
372
  }
940
373
 
941
- .open-floaty {
942
- margin-left: auto;
374
+ @container --chat-ui-container (width < 400px) {
375
+ /*
376
+ The footer already adds necessary paddings for this state.
377
+ However, without the `padding-bottom` here, the outline in the bottom
378
+ is rendered behind the footer. So, we add 1px space here to make sure
379
+ that the outline is rendered fully.
380
+ */
381
+ padding-bottom: var(--sys-size-1);
943
382
  }
944
383
  }