chrome-devtools-frontend 1.0.938150 → 1.0.938678

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.
@@ -30,7 +30,6 @@ all_devtools_files = [
30
30
  "front_end/legacy_test_runner/bindings_test_runner/IsolatedFilesystemTestRunner.js",
31
31
  "front_end/legacy_test_runner/bindings_test_runner/OverridesTestRunner.js",
32
32
  "front_end/legacy_test_runner/bindings_test_runner/PersistenceTestRunner.js",
33
- "front_end/panels/browser_debugger/module.json",
34
33
  "front_end/third_party/codemirror/codemirror.css",
35
34
  "front_end/legacy_test_runner/console_test_runner/console_test_runner.js",
36
35
  "front_end/legacy_test_runner/coverage_test_runner/coverage_test_runner.js",
@@ -340,7 +340,6 @@ grd_files_release_sources = [
340
340
  "front_end/panels/browser_debugger/browser_debugger-legacy.js",
341
341
  "front_end/panels/browser_debugger/browser_debugger-meta.js",
342
342
  "front_end/panels/browser_debugger/browser_debugger.js",
343
- "front_end/panels/browser_debugger/browser_debugger_module.js",
344
343
  "front_end/panels/changes/changes-legacy.js",
345
344
  "front_end/panels/changes/changes-meta.js",
346
345
  "front_end/panels/changes/changes.js",
Binary file
@@ -368,4 +368,5 @@ export enum EnumeratedHistogram {
368
368
  LinearMemoryInspectorTarget = 'DevTools.LinearMemoryInspector.Target',
369
369
  Language = 'DevTools.Language',
370
370
  ConsoleShowsCorsErrors = 'DevTools.ConsoleShowsCorsErrors',
371
+ SyncSetting = 'DevTools.SyncSetting',
371
372
  }
@@ -245,6 +245,22 @@ export class UserMetrics {
245
245
  InspectorFrontendHostInstance.recordEnumeratedHistogram(
246
246
  EnumeratedHistogram.ConsoleShowsCorsErrors, Number(show), 2);
247
247
  }
248
+
249
+ syncSetting(devtoolsSyncSettingEnabled: boolean): void {
250
+ const size = Object.keys(SyncSetting).length + 1;
251
+
252
+ InspectorFrontendHostInstance.getSyncInformation(syncInfo => {
253
+ let settingValue = SyncSetting.ChromeSyncDisabled;
254
+ if (syncInfo.isSyncActive && !syncInfo.arePreferencesSynced) {
255
+ settingValue = SyncSetting.ChromeSyncSettingsDisabled;
256
+ } else if (syncInfo.isSyncActive && syncInfo.arePreferencesSynced) {
257
+ settingValue = devtoolsSyncSettingEnabled ? SyncSetting.DevToolsSyncSettingEnabled :
258
+ SyncSetting.DevToolsSyncSettingDisabled;
259
+ }
260
+
261
+ InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.SyncSetting, settingValue, size);
262
+ });
263
+ }
248
264
  }
249
265
 
250
266
  // Codes below are used to collect UMA histograms in the Chromium port.
@@ -800,3 +816,12 @@ export const Language: Record<string, number> = {
800
816
  'zh-TW': 81,
801
817
  'zu': 82,
802
818
  };
819
+
820
+ // TODO(crbug.com/1167717): Make this a const enum again
821
+ // eslint-disable-next-line rulesdir/const_enum
822
+ export enum SyncSetting {
823
+ ChromeSyncDisabled = 1,
824
+ ChromeSyncSettingsDisabled = 2,
825
+ DevToolsSyncSettingDisabled = 3,
826
+ DevToolsSyncSettingEnabled = 4,
827
+ }
@@ -3,7 +3,6 @@
3
3
  { "name": "panels/emulation", "type": "autostart" },
4
4
 
5
5
  { "name": "panels/lighthouse" },
6
- { "name": "panels/browser_debugger" },
7
6
  { "name": "emulated_devices" },
8
7
  { "name": "panels/issues" },
9
8
  { "name": "panels/layers" },
@@ -47,6 +47,7 @@ import * as Persistence from '../../models/persistence/persistence.js';
47
47
  import * as Workspace from '../../models/workspace/workspace.js';
48
48
  import * as Snippets from '../../panels/snippets/snippets.js';
49
49
  import * as Timeline from '../../panels/timeline/timeline.js';
50
+ import * as IconButton from '../../ui/components/icon_button/icon_button.js';
50
51
  import * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
51
52
  import * as Components from '../../ui/legacy/components/utils/utils.js';
52
53
  import * as UI from '../../ui/legacy/legacy.js';
@@ -147,6 +148,9 @@ export class MainImpl {
147
148
  console.timeStamp('Main._gotPreferences');
148
149
  this.createSettings(prefs);
149
150
  await this.requestAndRegisterLocaleData();
151
+
152
+ Host.userMetrics.syncSetting(Common.Settings.Settings.instance().moduleSetting<boolean>('sync_preferences').get());
153
+
150
154
  this.createAppUI();
151
155
  }
152
156
 
@@ -873,6 +877,16 @@ export class MainMenuItem implements UI.Toolbar.Provider {
873
877
  if (location !== 'drawer-view' && location !== 'panel') {
874
878
  continue;
875
879
  }
880
+
881
+ if (viewExtension.isPreviewFeature()) {
882
+ const previewIcon = new IconButton.Icon.Icon();
883
+ previewIcon.data = {iconName: 'ic_preview_feature', color: 'var(--icon-color)', width: '14px', height: '14px'};
884
+ moreTools.defaultSection().appendItem(title, () => {
885
+ UI.ViewManager.ViewManager.instance().showView(id, true, false);
886
+ }, /* disabled=*/ false, previewIcon);
887
+ continue;
888
+ }
889
+
876
890
  moreTools.defaultSection().appendItem(title, () => {
877
891
  UI.ViewManager.ViewManager.instance().showView(id, true, false);
878
892
  });
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "modules" : [
3
- { "name": "panels/browser_debugger" },
4
3
  { "name": "panels/issues" },
5
4
  { "name": "panels/layer_viewer" },
6
5
  { "name": "panels/network" },
@@ -59,15 +59,13 @@ export async function _executeTestScript() {
59
59
 
60
60
  // Auto-start unit tests
61
61
  self.test = async function() {
62
- // TODO(crbug.com/1011811): Remove eval when we use TypeScript which does support dynamic imports
63
- await eval(`import("${testScriptURL}")`);
62
+ await import(testScriptURL);
64
63
  };
65
64
  return;
66
65
  }
67
66
 
68
67
  try {
69
- // TODO(crbug.com/1011811): Remove eval when we use TypeScript which does support dynamic imports
70
- await eval(`import("${testScriptURL}")`);
68
+ await import(testScriptURL);
71
69
  } catch (err) {
72
70
  TestRunner.addResult('TEST ENDED EARLY DUE TO UNCAUGHT ERROR:');
73
71
  TestRunner.addResult(err && err.stack || err);
@@ -2,7 +2,6 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- import * as Root from '../../core/root/root.js';
6
5
  import * as SDK from '../../core/sdk/sdk.js';
7
6
  import * as UI from '../../ui/legacy/legacy.js';
8
7
 
@@ -83,8 +82,6 @@ let loadedBrowserDebuggerModule: (typeof BrowserDebugger|undefined);
83
82
 
84
83
  async function loadBrowserDebuggerModule(): Promise<typeof BrowserDebugger> {
85
84
  if (!loadedBrowserDebuggerModule) {
86
- // Side-effect import resources in module.json
87
- await Root.Runtime.Runtime.instance().loadModulePromise('panels/browser_debugger');
88
85
  loadedBrowserDebuggerModule = await import('./browser_debugger.js');
89
86
  }
90
87
  return loadedBrowserDebuggerModule;
@@ -35,6 +35,34 @@ function getLocalizedReleaseNoteURL(url: string): string {
35
35
  }
36
36
 
37
37
  export const releaseNoteText: ReleaseNote[] = [
38
+ {
39
+ version: 39,
40
+ header: 'Highlights from the Chrome 97 update',
41
+ highlights: [
42
+ {
43
+ title: 'New preview feature: Recorder panel',
44
+ subtitle: 'Record, replay and measure user flows with options to export to Puppeteer script and more.',
45
+ link: getLocalizedReleaseNoteURL('https://developer.chrome.com/blog/new-in-devtools-97/#recorder'),
46
+ },
47
+ {
48
+ title: 'Enhanced "Edit as HTML" with code completion',
49
+ subtitle: 'Edit as HTML in the Elements panel now supports code completion, syntax highlights and more.',
50
+ link: getLocalizedReleaseNoteURL('https://developer.chrome.com/blog/new-in-devtools-97/#code-completion'),
51
+ },
52
+ {
53
+ title: 'Refresh device list in Device Mode',
54
+ subtitle: 'New devices are added in the device list.',
55
+ link: getLocalizedReleaseNoteURL('https://developer.chrome.com/blog/new-in-devtools-97/#device'),
56
+ },
57
+ {
58
+ title: 'Improved code debugging experience',
59
+ subtitle:
60
+ 'Include column number in the Console stack trace, improved breakpoints display in the Sources panel and more.',
61
+ link: getLocalizedReleaseNoteURL('https://developer.chrome.com/blog/new-in-devtools-97/#debugging'),
62
+ },
63
+ ],
64
+ link: getLocalizedReleaseNoteURL('https://developer.chrome.com/blog/new-in-devtools-97'),
65
+ },
38
66
  {
39
67
  version: 38,
40
68
  header: 'Highlights from the Chrome 96 update',
@@ -10,8 +10,8 @@ import * as Bindings from '../../models/bindings/bindings.js';
10
10
  import * as TextUtils from '../../models/text_utils/text_utils.js';
11
11
  import * as Workspace from '../../models/workspace/workspace.js';
12
12
  import * as UI from '../../ui/legacy/legacy.js';
13
-
14
13
  import {LogpointPrefix} from './BreakpointEditDialog.js';
14
+
15
15
  import javaScriptBreakpointsSidebarPaneStyles from './javaScriptBreakpointsSidebarPane.css.js';
16
16
 
17
17
  const UIStrings = {
@@ -288,31 +288,38 @@ export class JavaScriptBreakpointsSidebarPane extends UI.ThrottledWidget.Throttl
288
288
  element.tabIndex = this.list.selectedItem() === item ? 0 : -1;
289
289
  element.addEventListener('contextmenu', this.breakpointContextMenu.bind(this), true);
290
290
  element.addEventListener('click', this.revealLocation.bind(this, element), false);
291
- const checkboxLabel = UI.UIUtils.CheckboxLabel.create('');
292
291
 
292
+ const hasLogpoint = item.locations.some(location => location.breakpoint.condition().includes(LogpointPrefix));
293
+ const hasConditional = item.locations.some(location => Boolean(location.breakpoint.condition()));
294
+ const lineElement = element.createChild('div', 'decoration-and-content');
295
+ if (hasLogpoint) {
296
+ lineElement.classList.add('logpoint');
297
+ } else if (hasConditional) {
298
+ lineElement.classList.add('breakpoint-conditional');
299
+ }
300
+
301
+ const checkboxLabel = UI.UIUtils.CheckboxLabel.create('');
293
302
  const uiLocation = item.locations[0].uiLocation;
294
303
  const hasEnabled = item.locations.some(location => location.breakpoint.enabled());
295
304
  const hasDisabled = item.locations.some(location => !location.breakpoint.enabled());
296
- const hasLogpoint = item.locations.some(location => location.breakpoint.condition().includes(LogpointPrefix));
297
- const hasConditional = item.locations.some(location => Boolean(location.breakpoint.condition()));
298
305
  checkboxLabel.textElement.textContent = uiLocation.linkText() +
299
306
  (item.showColumn && typeof uiLocation.columnNumber === 'number' ? ':' + (uiLocation.columnNumber + 1) : '');
300
307
  checkboxLabel.checkboxElement.checked = hasEnabled;
301
308
  checkboxLabel.checkboxElement.indeterminate = hasEnabled && hasDisabled;
302
309
  checkboxLabel.checkboxElement.tabIndex = -1;
303
310
  checkboxLabel.addEventListener('click', this.breakpointCheckboxClicked.bind(this), false);
304
- element.appendChild(checkboxLabel);
311
+ lineElement.appendChild(checkboxLabel);
305
312
  let checkedDescription: Common.UIString.LocalizedString =
306
313
  hasEnabled ? i18nString(UIStrings.checked) : i18nString(UIStrings.unchecked);
307
314
  if (hasEnabled && hasDisabled) {
308
315
  checkedDescription = i18nString(UIStrings.mixed);
309
316
  }
310
317
  if (item.isSelected) {
311
- UI.ARIAUtils.setDescription(element, i18nString(UIStrings.sBreakpointHit, {PH1: checkedDescription}));
318
+ UI.ARIAUtils.setDescription(lineElement, i18nString(UIStrings.sBreakpointHit, {PH1: checkedDescription}));
312
319
  element.classList.add('breakpoint-hit');
313
320
  this.setDefaultFocusedElement(element);
314
321
  } else {
315
- UI.ARIAUtils.setDescription(element, checkedDescription);
322
+ UI.ARIAUtils.setDescription(lineElement, checkedDescription);
316
323
  }
317
324
 
318
325
  element.addEventListener('keydown', event => {
@@ -322,16 +329,6 @@ export class JavaScriptBreakpointsSidebarPane extends UI.ThrottledWidget.Throttl
322
329
  }
323
330
  });
324
331
 
325
- const lineElement = element.createChild('div', 'decoration-and-source');
326
- const decorationElement = lineElement.createChild('span', 'breakpoint');
327
- if (hasDisabled) {
328
- decorationElement.classList.add('disabled');
329
- }
330
- if (hasLogpoint) {
331
- decorationElement.classList.add('logpoint');
332
- } else if (hasConditional) {
333
- decorationElement.classList.add('breakpoint-conditional');
334
- }
335
332
  const snippetElement = lineElement.createChild('div', 'source-text monospace');
336
333
  const lineNumber = uiLocation.lineNumber;
337
334
 
@@ -5,7 +5,7 @@
5
5
  */
6
6
 
7
7
  .breakpoint-entry {
8
- padding: 3px 8px 3px 8px;
8
+ padding: 3px 0;
9
9
  min-height: 18px;
10
10
  line-height: 15px;
11
11
  border-top: 1px solid var(--color-details-hairline-light);
@@ -18,68 +18,42 @@
18
18
  .breakpoint-entry [is=dt-checkbox] {
19
19
  max-width: 100%;
20
20
  white-space: nowrap;
21
+ border-left-width: 3px;
21
22
  }
22
23
 
23
24
  :not(.breakpoints-list-deactivated) > .breakpoint-entry:hover {
24
25
  background-color: var(--color-background-elevation-1);
25
26
  }
26
27
 
27
- .breakpoint-entry > .decoration-and-source {
28
- display: flex;
29
- }
30
-
31
- .breakpoint-entry .breakpoint {
32
- content: var(--inline-breakpoint-enabled);
33
- height: 12px;
34
- top: 1px;
35
- position: relative;
36
- width: 11px;
37
- margin-left: 3px;
38
- margin-right: 3px;
39
-
40
- --inline-breakpoint-enabled: url('data:image/svg+xml,<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.5 0.5H5.80139C6.29382 0.5 6.7549 0.741701 7.03503 1.14669L10.392 6L7.03503 10.8533C6.7549 11.2583 6.29382 11.5 5.80139 11.5H0.5V0.5Z" fill="%234285F4" stroke="%231A73E8"/></svg>');
41
- --inline-breakpoint-disabled: url('data:image/svg+xml,<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.5 0.5H5.80139C6.29382 0.5 6.7549 0.741701 7.03503 1.14669L10.392 6L7.03503 10.8533C6.7549 11.2583 6.29382 11.5 5.80139 11.5H0.5V0.5Z" fill="%234285F4" fill-opacity="0.2" stroke="%231A73E8"/></svg>');
42
- --inline-conditional-breakpoint-enabled: url('data:image/svg+xml,<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.5 0.5H5.80139C6.29382 0.5 6.75489 0.741701 7.03503 1.14669L10.392 6L7.03503 10.8533C6.75489 11.2583 6.29382 11.5 5.80138 11.5H0.5V0.5Z" fill="%23F29900" stroke="%23E37400"/><path d="M3.51074 7.75635H4.68408V9H3.51074V7.75635ZM4.68408 7.23779H3.51074V6.56104C3.51074 6.271 3.55615 6.02344 3.64697 5.81836C3.73779 5.61328 3.90039 5.39648 4.13477 5.16797L4.53027 4.77686C4.71484 4.59814 4.83936 4.4502 4.90381 4.33301C4.97119 4.21582 5.00488 4.09424 5.00488 3.96826C5.00488 3.77197 4.9375 3.62402 4.80273 3.52441C4.66797 3.4248 4.46582 3.375 4.19629 3.375C3.9502 3.375 3.69238 3.42773 3.42285 3.5332C3.15625 3.63574 2.88232 3.78955 2.60107 3.99463V2.81689C2.88818 2.65283 3.17822 2.52979 3.47119 2.44775C3.76709 2.36279 4.06299 2.32031 4.35889 2.32031C4.95068 2.32031 5.41504 2.45801 5.75195 2.7334C6.08887 3.00879 6.25732 3.38818 6.25732 3.87158C6.25732 4.09424 6.20752 4.30225 6.10791 4.49561C6.0083 4.68604 5.8208 4.91602 5.54541 5.18555L5.15869 5.56348C4.95947 5.75684 4.83203 5.91504 4.77637 6.03809C4.7207 6.16113 4.69287 6.31201 4.69287 6.49072C4.69287 6.51709 4.69141 6.54785 4.68848 6.58301C4.68848 6.61816 4.68701 6.65625 4.68408 6.69727V7.23779Z" fill="white"/></svg>');
43
- --inline-conditional-breakpoint-disabled: url('data:image/svg+xml,<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.5 0.5H5.80139C6.29382 0.5 6.75489 0.741701 7.03503 1.14669L10.392 6L7.03503 10.8533C6.75489 11.2583 6.29382 11.5 5.80138 11.5H0.5V0.5Z" fill="%23F9AB00" fill-opacity="0.2" stroke="%23E37400"/><path d="M3.51074 7.75635H4.68408V9H3.51074V7.75635ZM4.68408 7.23779H3.51074V6.56104C3.51074 6.271 3.55615 6.02344 3.64697 5.81836C3.73779 5.61328 3.90039 5.39648 4.13477 5.16797L4.53027 4.77686C4.71484 4.59814 4.83936 4.4502 4.90381 4.33301C4.97119 4.21582 5.00488 4.09424 5.00488 3.96826C5.00488 3.77197 4.9375 3.62402 4.80273 3.52441C4.66797 3.4248 4.46582 3.375 4.19629 3.375C3.9502 3.375 3.69238 3.42773 3.42285 3.5332C3.15625 3.63574 2.88232 3.78955 2.60107 3.99463V2.81689C2.88818 2.65283 3.17822 2.52979 3.47119 2.44775C3.76709 2.36279 4.06299 2.32031 4.35889 2.32031C4.95068 2.32031 5.41504 2.45801 5.75195 2.7334C6.08887 3.00879 6.25732 3.38818 6.25732 3.87158C6.25732 4.09424 6.20752 4.30225 6.10791 4.49561C6.0083 4.68604 5.8208 4.91602 5.54541 5.18555L5.15869 5.56348C4.95947 5.75684 4.83203 5.91504 4.77637 6.03809C4.7207 6.16113 4.69287 6.31201 4.69287 6.49072C4.69287 6.51709 4.69141 6.54785 4.68848 6.58301C4.68848 6.61816 4.68701 6.65625 4.68408 6.69727V7.23779Z" fill="%23E37400"/></svg>');
44
- --inline-logpoint-enabled: url('data:image/svg+xml,<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.5 0.5H5.80139C6.29382 0.5 6.7549 0.741701 7.03503 1.14669L10.392 6L7.03503 10.8533C6.7549 11.2583 6.29382 11.5 5.80139 11.5H0.5V0.5Z" fill="%23F439A0" stroke="%23D01884"/><circle cx="3" cy="6" r="1" fill="white"/><circle cx="7" cy="6" r="1" fill="white"/></svg>');
45
- --inline-logpoint-disabled: url('data:image/svg+xml,<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.5 0.5H5.80139C6.29382 0.5 6.7549 0.741701 7.03503 1.14669L10.392 6L7.03503 10.8533C6.7549 11.2583 6.29382 11.5 5.80139 11.5H0.5V0.5Z" fill="%23F439A0" fill-opacity="0.2" stroke="%23D01884"/><circle cx="3" cy="6" r="1" fill="%23D01884"/><circle cx="7" cy="6" r="1" fill="%23D01884"/></svg>');
46
- }
47
-
48
- .breakpoint-entry .breakpoint.disabled,
49
- .breakpoints-list-deactivated .breakpoint-entry .breakpoint {
50
- content: var(--inline-breakpoint-disabled);
51
- }
52
-
53
- :host-context(.-theme-with-dark-background) .breakpoint-entry .breakpoint {
54
- --inline-breakpoint-enabled: url('data:image/svg+xml,<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.5 0.5H5.80139C6.29382 0.5 6.7549 0.741701 7.03503 1.14669L10.392 6L7.03503 10.8533C6.7549 11.2583 6.29382 11.5 5.80139 11.5H0.5V0.5Z" fill="%235186EC" stroke="%231A73E8"/></svg>');
55
- --inline-conditional-breakpoint-enabled: url('data:image/svg+xml,<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.5 0.5H5.80139C6.29382 0.5 6.75489 0.741701 7.03503 1.14669L10.392 6L7.03503 10.8533C6.75489 11.2583 6.29382 11.5 5.80138 11.5H0.5V0.5Z" fill="%23e9a33a" stroke="%23E37400"/><path d="M3.51074 7.75635H4.68408V9H3.51074V7.75635ZM4.68408 7.23779H3.51074V6.56104C3.51074 6.271 3.55615 6.02344 3.64697 5.81836C3.73779 5.61328 3.90039 5.39648 4.13477 5.16797L4.53027 4.77686C4.71484 4.59814 4.83936 4.4502 4.90381 4.33301C4.97119 4.21582 5.00488 4.09424 5.00488 3.96826C5.00488 3.77197 4.9375 3.62402 4.80273 3.52441C4.66797 3.4248 4.46582 3.375 4.19629 3.375C3.9502 3.375 3.69238 3.42773 3.42285 3.5332C3.15625 3.63574 2.88232 3.78955 2.60107 3.99463V2.81689C2.88818 2.65283 3.17822 2.52979 3.47119 2.44775C3.76709 2.36279 4.06299 2.32031 4.35889 2.32031C4.95068 2.32031 5.41504 2.45801 5.75195 2.7334C6.08887 3.00879 6.25732 3.38818 6.25732 3.87158C6.25732 4.09424 6.20752 4.30225 6.10791 4.49561C6.0083 4.68604 5.8208 4.91602 5.54541 5.18555L5.15869 5.56348C4.95947 5.75684 4.83203 5.91504 4.77637 6.03809C4.7207 6.16113 4.69287 6.31201 4.69287 6.49072C4.69287 6.51709 4.69141 6.54785 4.68848 6.58301C4.68848 6.61816 4.68701 6.65625 4.68408 6.69727V7.23779Z" fill="white"/></svg>');
56
- --inline-logpoint-enabled: url('data:image/svg+xml,<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.5 0.5H5.80139C6.29382 0.5 6.7549 0.741701 7.03503 1.14669L10.392 6L7.03503 10.8533C6.7549 11.2583 6.29382 11.5 5.80139 11.5H0.5V0.5Z" fill="%23E54D9B" stroke="%23D01884"/><circle cx="3" cy="6" r="1" fill="white"/><circle cx="7" cy="6" r="1" fill="white"/></svg>');
57
- }
28
+ .decoration-and-content {
29
+ --override-color-breakpoint-conditional: #f29900;
30
+ --override-color-logpoint: #f439a0;
58
31
 
59
- .breakpoint-entry .breakpoint-conditional {
60
- content: var(--inline-conditional-breakpoint-enabled);
32
+ padding: 0 8px;
33
+ border-left: 4px solid;
34
+ border-color: transparent;
61
35
  }
62
36
 
63
- .breakpoint-entry .breakpoint-conditional.disabled,
64
- .breakpoints-list-deactivated .breakpoint-entry .breakpoint-conditional {
65
- content: var(--inline-conditional-breakpoint-disabled);
37
+ .-theme-with-dark-background .decoration-and-content,
38
+ :host-context(.-theme-with-dark-background) .decoration-and-content {
39
+ --override-color-breakpoint-conditional: #e9a33a;
40
+ --override-color-logpoint: #e54d9b;
66
41
  }
67
42
 
68
- .breakpoint-entry .logpoint {
69
- content: var(--inline-logpoint-enabled);
43
+ .decoration-and-content.breakpoint-conditional {
44
+ border-color: var(--override-color-breakpoint-conditional);
70
45
  }
71
46
 
72
- .breakpoint-entry .logpoint.disabled,
73
- .breakpoints-list-deactivated .breakpoint-entry .logpoint {
74
- content: var(--inline-logpoint-disabled);
47
+ .decoration-and-content.logpoint {
48
+ border-color: var(--override-color-logpoint);
75
49
  }
76
50
 
77
- .breakpoint-entry .source-text {
51
+ .decoration-and-content > .source-text {
78
52
  cursor: pointer;
79
53
  text-overflow: ellipsis;
80
54
  overflow: hidden;
81
55
  white-space: nowrap;
82
- margin-left: 4px;
56
+ margin-left: 22px;
83
57
  }
84
58
 
85
59
  .breakpoints-list-deactivated {
@@ -24,3 +24,8 @@ label {
24
24
  p {
25
25
  margin: 12px 0;
26
26
  }
27
+
28
+ /* Preserve look of legacy checkboxes in dark mode */
29
+ :host-context(.-theme-with-dark-background) input[type="checkbox"]:not(.-theme-preserve) {
30
+ accent-color: var(--color-checkbox-accent-color);
31
+ }
@@ -137,8 +137,11 @@ export class Section {
137
137
  this.items = [];
138
138
  }
139
139
 
140
- appendItem(label: string, handler: () => void, disabled?: boolean): Item {
140
+ appendItem(label: string, handler: () => void, disabled?: boolean, additionalElement?: Element): Item {
141
141
  const item = new Item(this.contextMenu, 'item', label, disabled);
142
+ if (additionalElement) {
143
+ item.customElement = additionalElement;
144
+ }
142
145
  this.items.push(item);
143
146
  if (this.contextMenu) {
144
147
  this.contextMenu.setHandler(item.id(), handler);
@@ -147,7 +150,7 @@ export class Section {
147
150
  }
148
151
 
149
152
  appendCustomItem(element: Element): Item {
150
- const item = new Item(this.contextMenu, 'item', '<custom>');
153
+ const item = new Item(this.contextMenu, 'item');
151
154
  item.customElement = element;
152
155
  this.items.push(item);
153
156
  return item;
@@ -193,7 +193,7 @@ export class SoftContextMenu {
193
193
  subMenuTimer: undefined,
194
194
  };
195
195
 
196
- if (item.element) {
196
+ if (item.element && !item.label) {
197
197
  const wrapper = menuItemElement.createChild('div', 'soft-context-menu-custom-item');
198
198
  wrapper.appendChild(item.element);
199
199
  detailsForElement.customElement = (item.element as HTMLElement);
@@ -205,6 +205,9 @@ export class SoftContextMenu {
205
205
  menuItemElement.classList.add('soft-context-menu-disabled');
206
206
  }
207
207
  createTextChild(menuItemElement, item.label || '');
208
+ if (item.element) {
209
+ menuItemElement.appendChild(item.element);
210
+ }
208
211
  menuItemElement.createChild('span', 'soft-context-menu-shortcut').textContent = item.shortcut || '';
209
212
 
210
213
  menuItemElement.addEventListener('mousedown', this.menuItemMouseDown.bind(this), false);
@@ -60,6 +60,10 @@ input.dt-checkbox-themed:checked::after {
60
60
  background-color: var(--color-background-inverted);
61
61
  }
62
62
 
63
+ :host-context(.-theme-with-dark-background) input:not(.dt-checkbox-themed) {
64
+ accent-color: var(--color-checkbox-accent-color);
65
+ }
66
+
63
67
  .dt-checkbox-text {
64
68
  margin-left: 3px;
65
69
  overflow: hidden;
@@ -287,6 +287,10 @@ input::placeholder {
287
287
  --override-input-placeholder-color: rgb(230 230 230 / 54%);
288
288
  }
289
289
 
290
+ :host-context(.-theme-with-dark-background) input[type="checkbox"]:not(.-theme-preserve) {
291
+ accent-color: var(--color-checkbox-accent-color);
292
+ }
293
+
290
294
  .harmony-input:not([type]),
291
295
  .harmony-input[type=number],
292
296
  .harmony-input[type=text] {
@@ -44,6 +44,12 @@
44
44
  white-space: nowrap;
45
45
  }
46
46
 
47
+ .soft-context-menu-item devtools-icon {
48
+ --icon-color: var(--color-text-secondary);
49
+
50
+ pointer-events: none;
51
+ }
52
+
47
53
  .soft-context-menu-disabled {
48
54
  color: var(--color-text-disabled);
49
55
  pointer-events: none;
@@ -66,6 +72,10 @@
66
72
  color: var(--override-context-menu-hover-text-color);
67
73
  }
68
74
 
75
+ .soft-context-menu-item-mouse-over devtools-icon {
76
+ --icon-color: var(--override-context-menu-hover-text-color);
77
+ }
78
+
69
79
  .-theme-with-dark-background .soft-context-menu-item-mouse-over,
70
80
  :host-context(.-theme-with-dark-background) .soft-context-menu-item-mouse-over {
71
81
  --override-dark-mode-focus-color: #1a73e8;
@@ -233,6 +233,7 @@
233
233
  --color-error-text: hsl(0deg 100% 75%);
234
234
  --color-error-border: rgb(92 0 0);
235
235
  --color-error-background: hsl(0deg 100% 8%);
236
+ --color-checkbox-accent-color: rgb(255 165 0);
236
237
  /* Colors for styling inputs */
237
238
  --color-input-outline: rgb(189 193 198);
238
239
  --color-input-outline-active: rgb(138 180 248);
package/package.json CHANGED
@@ -55,5 +55,5 @@
55
55
  "unittest": "scripts/test/run_unittests.py --no-text-coverage",
56
56
  "watch": "third_party/node/node.py --output scripts/watch_build.js"
57
57
  },
58
- "version": "1.0.938150"
58
+ "version": "1.0.938678"
59
59
  }
@@ -1,3 +0,0 @@
1
- {
2
- "dependencies": []
3
- }