chrome-devtools-frontend 1.0.1689415 → 1.0.1690116

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 (197) hide show
  1. package/eslint.config.mjs +8 -2
  2. package/front_end/core/common/Object.ts +10 -4
  3. package/front_end/core/i18n/collect-ui-strings.js +5 -5
  4. package/front_end/core/i18n/generate-locales-js.js +1 -1
  5. package/front_end/core/i18n/i18n.ts +6 -0
  6. package/front_end/core/root/Runtime.ts +0 -5
  7. package/front_end/core/sdk/CSSMetadata.ts +3 -5
  8. package/front_end/core/sdk/DOMModel.ts +46 -11
  9. package/front_end/core/sdk/EmulationModel.ts +18 -0
  10. package/front_end/core/sdk/SDKSettings.ts +9 -0
  11. package/front_end/core/sdk/Script.ts +0 -1
  12. package/front_end/core/sdk/SecurityOrigin.ts +135 -25
  13. package/front_end/core/sdk/Target.ts +1 -5
  14. package/front_end/models/ai_assistance/AiUtils.ts +0 -10
  15. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +6 -10
  16. package/front_end/models/ai_assistance/agents/StylingAgent.ts +0 -1
  17. package/front_end/models/ai_assistance/injected.ts +0 -2
  18. package/front_end/models/javascript_metadata/NativeFunctions.ts +1 -1
  19. package/front_end/models/trace/insights/CLSCulprits.ts +1 -2
  20. package/front_end/models/trace/insights/Cache.ts +1 -3
  21. package/front_end/models/trace/insights/CharacterSet.ts +1 -3
  22. package/front_end/models/trace/insights/DOMSize.ts +1 -3
  23. package/front_end/models/trace/insights/DocumentLatency.ts +1 -3
  24. package/front_end/models/trace/insights/DuplicatedJavaScript.ts +1 -3
  25. package/front_end/models/trace/insights/FontDisplay.ts +1 -2
  26. package/front_end/models/trace/insights/ForcedReflow.ts +1 -2
  27. package/front_end/models/trace/insights/INPBreakdown.ts +1 -3
  28. package/front_end/models/trace/insights/ImageDelivery.ts +1 -3
  29. package/front_end/models/trace/insights/LCPBreakdown.ts +1 -3
  30. package/front_end/models/trace/insights/LCPDiscovery.ts +1 -3
  31. package/front_end/models/trace/insights/LegacyJavaScript.ts +1 -3
  32. package/front_end/models/trace/insights/ModernHTTP.ts +1 -2
  33. package/front_end/models/trace/insights/NetworkDependencyTree.ts +1 -2
  34. package/front_end/models/trace/insights/RenderBlocking.ts +1 -3
  35. package/front_end/models/trace/insights/SlowCSSSelector.ts +1 -3
  36. package/front_end/models/trace/insights/ThirdParties.ts +1 -3
  37. package/front_end/models/trace/insights/Viewport.ts +1 -2
  38. package/front_end/panels/accessibility/ARIAAttributesView.ts +1 -1
  39. package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +3 -3
  40. package/front_end/panels/accessibility/AccessibilityNodeView.ts +1 -2
  41. package/front_end/panels/accessibility/AccessibilityStrings.ts +7 -3
  42. package/front_end/panels/ai_assistance/components/AIv2MarkdownRenderer.ts +2 -2
  43. package/front_end/panels/ai_assistance/components/AccessibilityAgentMarkdownRenderer.ts +1 -3
  44. package/front_end/panels/animation/AnimationGroupPreviewUI.ts +1 -1
  45. package/front_end/panels/animation/AnimationTimeline.ts +1 -1
  46. package/front_end/panels/animation/AnimationUI.ts +1 -1
  47. package/front_end/panels/application/AppManifestView.ts +6 -2
  48. package/front_end/panels/application/ApplicationPanelSidebar.ts +2 -4
  49. package/front_end/panels/application/BounceTrackingMitigationsTreeElement.ts +1 -1
  50. package/front_end/panels/application/FrameDetailsView.ts +1 -1
  51. package/front_end/panels/application/IndexedDBViews.ts +3 -2
  52. package/front_end/panels/application/ReportingApiTreeElement.ts +1 -1
  53. package/front_end/panels/application/ReportingApiView.ts +2 -2
  54. package/front_end/panels/application/ServiceWorkerUpdateCycleView.ts +1 -1
  55. package/front_end/panels/application/ServiceWorkersView.ts +1 -1
  56. package/front_end/panels/application/StorageBucketsTreeElement.ts +1 -1
  57. package/front_end/panels/application/StorageItemsToolbar.ts +6 -2
  58. package/front_end/panels/application/StorageView.ts +9 -8
  59. package/front_end/panels/application/TrustTokensTreeElement.ts +1 -1
  60. package/front_end/panels/application/WebMCPView.ts +2 -1
  61. package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +1 -1
  62. package/front_end/panels/application/components/CrashReportContextGrid.ts +1 -1
  63. package/front_end/panels/application/components/EndpointsGrid.ts +1 -1
  64. package/front_end/panels/application/components/ReportsGrid.ts +1 -1
  65. package/front_end/panels/application/components/TrustTokensView.ts +1 -1
  66. package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +1 -1
  67. package/front_end/panels/application/preloading/components/PreloadingGrid.ts +1 -1
  68. package/front_end/panels/application/preloading/components/RuleSetGrid.ts +7 -2
  69. package/front_end/panels/application/serviceWorkerUpdateCycleView.css +2 -0
  70. package/front_end/panels/autofill/AutofillView.ts +2 -2
  71. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +2 -3
  72. package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +1 -1
  73. package/front_end/panels/changes/ChangesSidebar.ts +56 -15
  74. package/front_end/panels/changes/ChangesView.ts +1 -1
  75. package/front_end/panels/console/ConsolePrompt.ts +6 -2
  76. package/front_end/panels/console/ConsoleSidebar.ts +6 -2
  77. package/front_end/panels/elements/ElementsTreeElement.ts +12 -0
  78. package/front_end/panels/elements/ElementsTreeOutline.ts +400 -128
  79. package/front_end/panels/elements/PropertyRenderer.ts +22 -15
  80. package/front_end/panels/elements/StandaloneStylesContainer.ts +6 -2
  81. package/front_end/panels/elements/StylePropertyTreeElement.ts +75 -26
  82. package/front_end/panels/elements/StylesSidebarPane.ts +6 -2
  83. package/front_end/panels/elements/elementsTreeOutline.css +4 -0
  84. package/front_end/panels/emulation/DeviceModeView.ts +6 -1
  85. package/front_end/panels/emulation/InspectedPagePlaceholder.ts +6 -2
  86. package/front_end/panels/layer_viewer/LayerDetailsView.ts +6 -2
  87. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +7 -2
  88. package/front_end/panels/layer_viewer/Layers3DView.ts +8 -1
  89. package/front_end/panels/layer_viewer/PaintProfilerView.ts +6 -2
  90. package/front_end/panels/lighthouse/lighthousePanel.css +5 -5
  91. package/front_end/panels/lighthouse/lighthouseStartView.css +13 -13
  92. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +6 -2
  93. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +6 -2
  94. package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +6 -2
  95. package/front_end/panels/mobile_throttling/ThrottlingManager.ts +25 -54
  96. package/front_end/panels/network/NetworkLogView.ts +8 -3
  97. package/front_end/panels/network/components/RequestHeadersView.css +5 -0
  98. package/front_end/panels/network/networkLogView.css +4 -0
  99. package/front_end/panels/network/requestInitiatorViewTree.css +2 -0
  100. package/front_end/panels/performance_monitor/performanceMonitor.css +3 -3
  101. package/front_end/panels/profiler/HeapDetachedElementsView.ts +7 -2
  102. package/front_end/panels/profiler/HeapProfileView.ts +7 -2
  103. package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +8 -4
  104. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +8 -4
  105. package/front_end/panels/profiler/HeapSnapshotView.ts +15 -6
  106. package/front_end/panels/profiler/HeapTimelineOverview.ts +6 -2
  107. package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +12 -5
  108. package/front_end/panels/profiler/ProfileLauncherView.ts +6 -2
  109. package/front_end/panels/profiler/profilesPanel.css +8 -9
  110. package/front_end/panels/profiler/profilesSidebarTree.css +13 -13
  111. package/front_end/panels/protocol_monitor/JSONEditor.css +2 -2
  112. package/front_end/panels/protocol_monitor/JSONEditor.ts +6 -1
  113. package/front_end/panels/protocol_monitor/protocolMonitor.css +2 -2
  114. package/front_end/panels/sources/SourcesView.ts +7 -2
  115. package/front_end/panels/sources/TabbedEditorContainer.ts +6 -2
  116. package/front_end/panels/sources/UISourceCodeFrame.ts +10 -3
  117. package/front_end/panels/timeline/AnimationsTrackAppender.ts +1 -1
  118. package/front_end/panels/timeline/AnnotationHelpers.ts +9 -9
  119. package/front_end/panels/timeline/CountersGraph.ts +8 -8
  120. package/front_end/panels/timeline/EventsTimelineTreeView.ts +3 -3
  121. package/front_end/panels/timeline/ExtensionTrackAppender.ts +1 -1
  122. package/front_end/panels/timeline/GPUTrackAppender.ts +1 -1
  123. package/front_end/panels/timeline/InteractionsTrackAppender.ts +1 -1
  124. package/front_end/panels/timeline/IsolateSelector.ts +2 -2
  125. package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +3 -3
  126. package/front_end/panels/timeline/NetworkTrackAppender.ts +1 -1
  127. package/front_end/panels/timeline/StatusDialog.ts +5 -6
  128. package/front_end/panels/timeline/ThirdPartyTreeView.ts +4 -4
  129. package/front_end/panels/timeline/ThreadAppender.ts +12 -14
  130. package/front_end/panels/timeline/TimelineController.ts +5 -8
  131. package/front_end/panels/timeline/TimelineDetailsView.ts +13 -9
  132. package/front_end/panels/timeline/TimelineEventOverview.ts +4 -4
  133. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +17 -17
  134. package/front_end/panels/timeline/TimelineFlameChartView.ts +8 -3
  135. package/front_end/panels/timeline/TimelineHistoryManager.ts +8 -8
  136. package/front_end/panels/timeline/TimelineLoader.ts +1 -1
  137. package/front_end/panels/timeline/TimelineMiniMap.ts +7 -2
  138. package/front_end/panels/timeline/TimelinePanel.ts +57 -59
  139. package/front_end/panels/timeline/TimelineSelectorStatsView.ts +27 -27
  140. package/front_end/panels/timeline/TimelineTreeView.ts +46 -44
  141. package/front_end/panels/timeline/TimelineUIUtils.ts +142 -116
  142. package/front_end/panels/timeline/TimingsTrackAppender.ts +1 -1
  143. package/front_end/panels/timeline/TrackConfigBanner.ts +4 -4
  144. package/front_end/panels/timeline/UIDevtoolsUtils.ts +15 -15
  145. package/front_end/panels/timeline/components/insights/Table.ts +1 -1
  146. package/front_end/panels/timeline/enable-easter-egg.js +1 -1
  147. package/front_end/panels/timeline/timeline-meta.ts +30 -30
  148. package/front_end/panels/timeline/timelineFlameChartView.css +10 -10
  149. package/front_end/panels/timeline/timelineFlamechartPopover.css +5 -5
  150. package/front_end/panels/timeline/timelineHistoryManager.css +7 -7
  151. package/front_end/panels/timeline/timelinePaintProfiler.css +2 -2
  152. package/front_end/panels/timeline/utils/IgnoreList.ts +4 -4
  153. package/front_end/third_party/chromium/README.chromium +1 -1
  154. package/front_end/ui/comments/CommentAnchorResolver.ts +12 -3
  155. package/front_end/ui/comments/CommentOverlayManager.ts +9 -1
  156. package/front_end/ui/components/buttons/Button.docs.ts +1 -1
  157. package/front_end/ui/components/buttons/button.css +21 -0
  158. package/front_end/ui/components/report_view/ReportView.docs.ts +1 -1
  159. package/front_end/ui/components/snackbars/Snackbars.docs.ts +1 -1
  160. package/front_end/ui/components/spinners/Spinner.ts +1 -1
  161. package/front_end/ui/components/spinners/Spinners.docs.ts +1 -1
  162. package/front_end/ui/components/suggestion_input/SuggestionInput.ts +1 -2
  163. package/front_end/ui/components/switch/Switch.docs.ts +1 -1
  164. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +10 -8
  165. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +2 -1
  166. package/front_end/ui/components/text_editor/ExecutionPositionHighlighter.ts +2 -2
  167. package/front_end/ui/components/text_editor/TextEditor.ts +19 -0
  168. package/front_end/ui/components/text_editor/config.ts +109 -96
  169. package/front_end/ui/components/text_editor/cursor_tooltip.ts +1 -1
  170. package/front_end/ui/components/text_editor/theme.ts +1 -1
  171. package/front_end/ui/components/tooltips/Tooltip.docs.ts +1 -1
  172. package/front_end/ui/components/tooltips/Tooltip.ts +1 -1
  173. package/front_end/ui/components/tree_outline/TreeOutlineUtils.ts +4 -1
  174. package/front_end/ui/kit/cards/Card.ts +1 -1
  175. package/front_end/ui/kit/icons/Icon.ts +1 -1
  176. package/front_end/ui/kit/link/Link.docs.ts +1 -1
  177. package/front_end/ui/kit/link/Link.ts +1 -1
  178. package/front_end/ui/legacy/ContextMenu.docs.ts +1 -1
  179. package/front_end/ui/legacy/Dialog.ts +10 -2
  180. package/front_end/ui/legacy/FilterBar.ts +6 -1
  181. package/front_end/ui/legacy/RadioButton.docs.ts +1 -1
  182. package/front_end/ui/legacy/SelectMenu.docs.ts +1 -1
  183. package/front_end/ui/legacy/Slider.docs.ts +1 -1
  184. package/front_end/ui/legacy/SplitWidget.ts +5 -1
  185. package/front_end/ui/legacy/TabbedPane.ts +5 -1
  186. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +6 -1
  187. package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +6 -2
  188. package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +6 -1
  189. package/front_end/ui/legacy/components/inline_editor/CSSShadowEditor.ts +6 -2
  190. package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +2 -0
  191. package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +6 -1
  192. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +6 -2
  193. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +8 -4
  194. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +8 -3
  195. package/front_end/ui/legacy/components/quick_open/QuickOpen.ts +6 -1
  196. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +7 -2
  197. package/package.json +2 -2
@@ -36,8 +36,12 @@ let inspectorInstance: LinearMemoryInspectorPane;
36
36
  const MEMORY_INSPECTOR_EXPLANATION_URL =
37
37
  'https://developer.chrome.com/docs/devtools/memory-inspector' as Platform.DevToolsPath.UrlString;
38
38
 
39
- export class LinearMemoryInspectorPane extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(
40
- UI.Widget.VBox) {
39
+ const LinearMemoryInspectorPaneBase: Common.ObjectWrapper.EventMixin<EventTypes, typeof UI.Widget.VBox> =
40
+ Common.ObjectWrapper.eventMixin(
41
+ UI.Widget.VBox,
42
+ );
43
+
44
+ export class LinearMemoryInspectorPane extends LinearMemoryInspectorPaneBase {
41
45
  readonly #tabbedPane: UI.TabbedPane.TabbedPane;
42
46
 
43
47
  constructor() {
@@ -242,8 +242,12 @@ function getSmallestEnclosingMemoryHighlight(highlightedMemoryAreas: HighlightIn
242
242
 
243
243
  export type View = typeof DEFAULT_VIEW;
244
244
 
245
- export class LinearMemoryInspector extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.Widget>(
246
- UI.Widget.Widget) {
245
+ const LinearMemoryInspectorBase: Common.ObjectWrapper.EventMixin<EventTypes, typeof UI.Widget.Widget> =
246
+ Common.ObjectWrapper.eventMixin(
247
+ UI.Widget.Widget,
248
+ );
249
+
250
+ export class LinearMemoryInspector extends LinearMemoryInspectorBase {
247
251
  readonly #history = new Common.SimpleHistoryManager.SimpleHistoryManager(10);
248
252
 
249
253
  #memory = new Uint8Array();
@@ -176,8 +176,12 @@ export function getRecommendedNetworkConditions(roundTripTimeMetricData?: CrUXMa
176
176
  return null;
177
177
  }
178
178
 
179
- export class NetworkThrottlingSelect extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.Widget>(
180
- UI.Widget.Widget) {
179
+ const NetworkThrottlingSelectBase: Common.ObjectWrapper.EventMixin<EventTypes, typeof UI.Widget.Widget> =
180
+ Common.ObjectWrapper.eventMixin(
181
+ UI.Widget.Widget,
182
+ );
183
+
184
+ export class NetworkThrottlingSelect extends NetworkThrottlingSelectBase {
181
185
  readonly #settings: Common.Settings.Settings;
182
186
  #recommendedConditions: SDK.NetworkManager.Conditions|null = null;
183
187
  #jslogContext?: string;
@@ -88,17 +88,7 @@ const str_ = i18n.i18n.registerUIStrings('panels/mobile_throttling/ThrottlingMan
88
88
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
89
89
  let throttlingManagerInstance: ThrottlingManager;
90
90
 
91
- class PromiseQueue<T> {
92
- #promise = Promise.resolve();
93
-
94
- push(promise: Promise<T>): Promise<T> {
95
- return new Promise(r => {
96
- this.#promise = this.#promise.then(async () => r(await promise));
97
- });
98
- }
99
- }
100
-
101
- export class ThrottlingManager extends Common.ObjectWrapper.ObjectWrapper<ThrottlingManager.EventTypes> {
91
+ export class ThrottlingManager extends Common.ObjectWrapper.ObjectWrapper<void> {
102
92
  private readonly cpuThrottlingControls: Set<UI.Toolbar.ToolbarComboBox>;
103
93
  private readonly cpuThrottlingOptions: PanelsCommon.CPUThrottlingOption.CPUThrottlingOption[];
104
94
  private readonly customNetworkConditionsSetting: Common.Settings.Setting<SDK.NetworkManager.Conditions[]>;
@@ -111,7 +101,6 @@ export class ThrottlingManager extends Common.ObjectWrapper.ObjectWrapper<Thrott
111
101
  #hardwareConcurrencyOverrideEnabled = false;
112
102
  #currentCPUThrottlingOption: PanelsCommon.CPUThrottlingOption.CPUThrottlingOption =
113
103
  PanelsCommon.CPUThrottlingOption.NoThrottlingOption;
114
- readonly #emulationQueue = new PromiseQueue<void>();
115
104
  get hardwareConcurrencyOverrideEnabled(): boolean {
116
105
  return this.#hardwareConcurrencyOverrideEnabled;
117
106
  }
@@ -302,19 +291,6 @@ export class ThrottlingManager extends Common.ObjectWrapper.ObjectWrapper<Thrott
302
291
  };
303
292
  }
304
293
 
305
- setSaveDataOverride(selectedIndex: number): void {
306
- let override = SDK.EmulationModel.DataSaverOverride.UNSET;
307
- if (selectedIndex === 1) {
308
- override = SDK.EmulationModel.DataSaverOverride.ENABLED;
309
- } else if (selectedIndex === 2) {
310
- override = SDK.EmulationModel.DataSaverOverride.DISABLED;
311
- }
312
- for (const emulationModel of SDK.TargetManager.TargetManager.instance().models(SDK.EmulationModel.EmulationModel)) {
313
- void this.#emulationQueue.push(emulationModel.setDataSaverOverride(override));
314
- }
315
- this.dispatchEventToListeners(ThrottlingManager.Events.SAVE_DATA_OVERRIDE_CHANGED, selectedIndex);
316
- }
317
-
318
294
  createSaveDataOverrideSelector(className?: string): HTMLSelectElement {
319
295
  const select = document.createElement('select');
320
296
  select.title = i18nString(UIStrings.saveDataSettingTooltip);
@@ -408,8 +384,8 @@ export class ThrottlingManager extends Common.ObjectWrapper.ObjectWrapper<Thrott
408
384
  }
409
385
 
410
386
  export interface SaveDataOverrideViewInput {
411
- selectedIndex: number;
412
- onSelect: (index: number) => void;
387
+ selectedOption: SDK.EmulationModel.DataSaverOverride;
388
+ onSelect: (selectedOption: SDK.EmulationModel.DataSaverOverride) => void;
413
389
  }
414
390
 
415
391
  export type SaveDataOverrideViewFunction =
@@ -418,48 +394,43 @@ export type SaveDataOverrideViewFunction =
418
394
  export const DEFAULT_SAVE_DATA_VIEW: SaveDataOverrideViewFunction = (input, _output, target) => {
419
395
  // clang-format off
420
396
  render(html`
421
- <option value="unset" ?selected=${input.selectedIndex === 0}>${i18nString(UIStrings.noSaveDataOverride)}</option>
422
- <option value="enabled" ?selected=${input.selectedIndex === 1}>${i18nString(UIStrings.saveDataOn)}</option>
423
- <option value="disabled" ?selected=${input.selectedIndex === 2}>${i18nString(UIStrings.saveDataOff)}</option>
424
- `, target, {container: {listeners: {change: (e: Event) => input.onSelect((e.target as HTMLSelectElement).selectedIndex)}}});
397
+ <option value=${SDK.EmulationModel.DataSaverOverride.UNSET} ?selected=${input.selectedOption === SDK.EmulationModel.DataSaverOverride.UNSET}>${i18nString(UIStrings.noSaveDataOverride)}</option>
398
+ <option value=${SDK.EmulationModel.DataSaverOverride.ENABLED} ?selected=${input.selectedOption === SDK.EmulationModel.DataSaverOverride.ENABLED}>${i18nString(UIStrings.saveDataOn)}</option>
399
+ <option value=${SDK.EmulationModel.DataSaverOverride.DISABLED} ?selected=${input.selectedOption === SDK.EmulationModel.DataSaverOverride.DISABLED}>${i18nString(UIStrings.saveDataOff)}</option>
400
+ `, target, {container: {listeners: {change: (e: Event) => input.onSelect((e.target as HTMLSelectElement).value as SDK.EmulationModel.DataSaverOverride)}}});
425
401
  // clang-format on
426
402
  };
427
403
 
428
- export class SaveDataOverrideSelect extends
429
- Common.ObjectWrapper.eventMixin<ThrottlingManager.EventTypes, typeof UI.Widget.Widget<HTMLSelectElement>>(
430
- UI.Widget.Widget) {
431
- #selectedIndex = 0;
404
+ export class SaveDataOverrideSelect extends UI.Widget.Widget<HTMLSelectElement> {
405
+ readonly #setting: Common.Settings.Setting<SDK.EmulationModel.DataSaverOverride>;
432
406
  readonly #view: SaveDataOverrideViewFunction;
433
407
 
434
408
  constructor(element: HTMLElement, view = DEFAULT_SAVE_DATA_VIEW) {
435
409
  super(element);
436
410
  this.#view = view;
437
- ThrottlingManager.instance().addEventListener(ThrottlingManager.Events.SAVE_DATA_OVERRIDE_CHANGED, ({data}) => {
438
- this.#selectedIndex = data;
439
- this.requestUpdate();
440
- });
411
+ this.#setting = Common.Settings.Settings.instance().resolve(SDK.SDKSettings.dataSaverSettingDescriptor);
441
412
  this.performUpdate();
442
413
  }
443
414
 
444
- override performUpdate(): void {
445
- this.#view(
446
- {
447
- selectedIndex: this.#selectedIndex,
448
- onSelect: index => {
449
- ThrottlingManager.instance().setSaveDataOverride(index);
450
- },
451
- },
452
- undefined, this.contentElement);
415
+ override wasShown(): void {
416
+ super.wasShown();
417
+ this.#setting.addChangeListener(this.requestUpdate, this);
418
+ this.requestUpdate();
453
419
  }
454
- }
455
420
 
456
- export namespace ThrottlingManager {
457
- export const enum Events {
458
- SAVE_DATA_OVERRIDE_CHANGED = 'SaveDataOverrideChanged',
421
+ override willHide(): void {
422
+ super.willHide();
423
+ this.#setting.removeChangeListener(this.requestUpdate, this);
459
424
  }
460
425
 
461
- export interface EventTypes {
462
- [Events.SAVE_DATA_OVERRIDE_CHANGED]: number;
426
+ override performUpdate(): void {
427
+ this.#view({
428
+ selectedOption: this.#setting.get(),
429
+ onSelect: selectedOption => {
430
+ this.#setting.set(selectedOption);
431
+ },
432
+ },
433
+ undefined, this.contentElement);
463
434
  }
464
435
  }
465
436
 
@@ -553,8 +553,13 @@ const enum FetchStyle {
553
553
  NODE_JS = 1,
554
554
  }
555
555
 
556
- export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(UI.Widget.VBox)
557
- implements SDK.TargetManager.SDKModelObserver<SDK.NetworkManager.NetworkManager>, NetworkLogViewInterface {
556
+ const NetworkLogViewBase: Common.ObjectWrapper.EventMixin<EventTypes, typeof UI.Widget.VBox> =
557
+ Common.ObjectWrapper.eventMixin(
558
+ UI.Widget.VBox,
559
+ );
560
+
561
+ export class NetworkLogView extends NetworkLogViewBase implements
562
+ SDK.TargetManager.SDKModelObserver<SDK.NetworkManager.NetworkManager>, NetworkLogViewInterface {
558
563
  private readonly networkInvertFilterSetting: Common.Settings.Setting<boolean>;
559
564
  private readonly networkHideDataURLSetting: Common.Settings.Setting<boolean>;
560
565
  private readonly networkHideChromeExtensions: Common.Settings.Setting<boolean>;
@@ -1146,7 +1151,7 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes,
1146
1151
  jslogContext: actionName,
1147
1152
  variant: Buttons.Button.Variant.TONAL,
1148
1153
  });
1149
- this.recordingHint.contentElement.appendChild(button);
1154
+ this.recordingHint.element.appendChild(button);
1150
1155
  }
1151
1156
 
1152
1157
  this.recordingHint.show(this.element);
@@ -21,6 +21,11 @@
21
21
  background-color: var(--sys-color-state-header-hover);
22
22
  }
23
23
 
24
+ .header:focus-visible {
25
+ outline: var(--sys-size-2) solid var(--sys-color-state-focus-ring);
26
+ outline-offset: calc(-1 * var(--sys-size-2));
27
+ }
28
+
24
29
  details[open] .header-count {
25
30
  display: none;
26
31
  }
@@ -416,6 +416,10 @@ td.time-column {
416
416
  z-index: 1;
417
417
  }
418
418
 
419
+ .empty-widget-container devtools-button {
420
+ margin-top: var(--sys-size-7);
421
+ }
422
+
419
423
  @media (forced-colors: active) {
420
424
  .initiator-column .devtools-link {
421
425
  color: linktext;
@@ -24,6 +24,8 @@
24
24
 
25
25
  .request-initiator-view-section-title:focus-visible {
26
26
  background-color: var(--sys-color-state-focus-highlight);
27
+ outline: var(--sys-size-2) solid var(--sys-color-state-focus-ring);
28
+ outline-offset: calc(-1 * var(--sys-size-2));
27
29
  }
28
30
 
29
31
  @media (forced-colors: active) {
@@ -46,14 +46,14 @@
46
46
  display: flex;
47
47
  flex: initial;
48
48
  flex-direction: column;
49
- padding: 6px 0;
49
+ padding: var(--sys-size-4) 0;
50
50
  overflow: hidden auto;
51
51
  }
52
52
 
53
53
  .perfmon-chart-container {
54
54
  display: flex;
55
55
  flex: 1 1;
56
- border-left: 1px solid var(--sys-color-divider);
56
+ border-left: var(--sys-size-1) solid var(--sys-color-divider);
57
57
  overflow-y: auto;
58
58
  }
59
59
 
@@ -63,7 +63,7 @@
63
63
 
64
64
  .perfmon-indicator {
65
65
  padding: 3px 9px;
66
- margin: -1px 0;
66
+ margin: calc(-1 * var(--sys-size-1)) 0;
67
67
  display: flex;
68
68
  flex-shrink: 0;
69
69
  width: 210px;
@@ -91,8 +91,13 @@ export class DetachedElementsProfileView extends UI.View.SimpleView implements D
91
91
  }
92
92
  }
93
93
 
94
- export class DetachedElementsProfileType extends
95
- Common.ObjectWrapper.eventMixin<DetachedElementsProfileType.EventTypes, typeof ProfileType>(ProfileType) {
94
+ const DetachedElementsProfileTypeBase:
95
+ Common.ObjectWrapper.EventMixin<DetachedElementsProfileType.EventTypes, typeof ProfileType> =
96
+ Common.ObjectWrapper.eventMixin(
97
+ ProfileType,
98
+ );
99
+
100
+ export class DetachedElementsProfileType extends DetachedElementsProfileTypeBase {
96
101
  constructor(typeId?: string, description?: string) {
97
102
  super(
98
103
  typeId || i18nString(UIStrings.detachedElementsTitle),
@@ -924,8 +924,13 @@ export class HeapProfileView extends UI.View.SimpleView implements UI.Searchable
924
924
  }
925
925
  }
926
926
 
927
- export class SamplingHeapProfileTypeBase extends
928
- Common.ObjectWrapper.eventMixin<SamplingHeapProfileType.EventTypes, typeof ProfileType>(ProfileType) {
927
+ const SamplingHeapProfileTypeBaseBase:
928
+ Common.ObjectWrapper.EventMixin<SamplingHeapProfileType.EventTypes, typeof ProfileType> =
929
+ Common.ObjectWrapper.eventMixin(
930
+ ProfileType,
931
+ );
932
+
933
+ export class SamplingHeapProfileTypeBase extends SamplingHeapProfileTypeBaseBase {
929
934
  recording: boolean;
930
935
  clearedDuringRecording: boolean;
931
936
 
@@ -122,11 +122,15 @@ const str_ = i18n.i18n.registerUIStrings('panels/profiler/HeapSnapshotDataGrids.
122
122
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
123
123
  const adjacencyMap = new WeakMap<DataGrid.DataGrid.DataGridNode<HeapSnapshotGridNode>, HeapSnapshotGridNode[]>();
124
124
 
125
- class HeapSnapshotSortableDataGridBase extends DataGrid.DataGrid.DataGridImpl<HeapSnapshotGridNode> {}
125
+ class HeapSnapshotSortableDataGridRawBase extends DataGrid.DataGrid.DataGridImpl<HeapSnapshotGridNode> {}
126
126
 
127
- export class HeapSnapshotSortableDataGrid extends Common.ObjectWrapper
128
- .eventMixin<EventTypes, typeof HeapSnapshotSortableDataGridBase>(
129
- HeapSnapshotSortableDataGridBase) {
127
+ const HeapSnapshotSortableDataGridBase:
128
+ Common.ObjectWrapper.EventMixin<EventTypes, typeof HeapSnapshotSortableDataGridRawBase> =
129
+ Common.ObjectWrapper.eventMixin(
130
+ HeapSnapshotSortableDataGridRawBase,
131
+ );
132
+
133
+ export class HeapSnapshotSortableDataGrid extends HeapSnapshotSortableDataGridBase {
130
134
  snapshot: HeapSnapshotModel.HeapSnapshotProxy.HeapSnapshotProxy|null = null;
131
135
  override selectedNode: HeapSnapshotGridNode|null = null;
132
136
  readonly heapProfilerModelInternal: SDK.HeapProfilerModel.HeapProfilerModel|null;
@@ -129,11 +129,15 @@ const UIStrings = {
129
129
  const str_ = i18n.i18n.registerUIStrings('panels/profiler/HeapSnapshotGridNodes.ts', UIStrings);
130
130
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
131
131
 
132
- class HeapSnapshotGridNodeBase extends DataGrid.DataGrid.DataGridNode<HeapSnapshotGridNode> {}
132
+ class HeapSnapshotGridNodeRawBase extends DataGrid.DataGrid.DataGridNode<HeapSnapshotGridNode> {}
133
133
 
134
- export class HeapSnapshotGridNode extends
135
- Common.ObjectWrapper.eventMixin<HeapSnapshotGridNode.EventTypes, typeof HeapSnapshotGridNodeBase>(
136
- HeapSnapshotGridNodeBase) {
134
+ const HeapSnapshotGridNodeBase:
135
+ Common.ObjectWrapper.EventMixin<HeapSnapshotGridNode.EventTypes, typeof HeapSnapshotGridNodeRawBase> =
136
+ Common.ObjectWrapper.eventMixin(
137
+ HeapSnapshotGridNodeRawBase,
138
+ );
139
+
140
+ export class HeapSnapshotGridNode extends HeapSnapshotGridNodeBase {
137
141
  dataGridInternal: HeapSnapshotSortableDataGrid;
138
142
  instanceCount = 0;
139
143
  readonly savedChildren = new Map<number, HeapSnapshotGridNode>();
@@ -1391,9 +1391,14 @@ export class StatisticsPerspective extends Perspective {
1391
1391
  }
1392
1392
  }
1393
1393
 
1394
- export class HeapSnapshotProfileType extends
1395
- Common.ObjectWrapper.eventMixin<HeapSnapshotProfileTypeEventTypes, typeof ProfileType>(ProfileType)
1396
- implements SDK.TargetManager.SDKModelObserver<SDK.HeapProfilerModel.HeapProfilerModel> {
1394
+ const HeapSnapshotProfileTypeBase:
1395
+ Common.ObjectWrapper.EventMixin<HeapSnapshotProfileTypeEventTypes, typeof ProfileType> =
1396
+ Common.ObjectWrapper.eventMixin(
1397
+ ProfileType,
1398
+ );
1399
+
1400
+ export class HeapSnapshotProfileType extends HeapSnapshotProfileTypeBase implements
1401
+ SDK.TargetManager.SDKModelObserver<SDK.HeapProfilerModel.HeapProfilerModel> {
1397
1402
  customContentInternal: UI.UIUtils.CheckboxLabel|null;
1398
1403
  constructor(id?: string, title?: string) {
1399
1404
  super(id || HeapSnapshotProfileType.TypeId, title || i18nString(UIStrings.heapSnapshot));
@@ -1531,9 +1536,13 @@ export interface HeapSnapshotProfileTypeEventTypes {
1531
1536
  [HeapSnapshotProfileTypeEvents.SNAPSHOT_RECEIVED]: ProfileHeader;
1532
1537
  }
1533
1538
 
1534
- export class TrackingHeapSnapshotProfileType extends
1535
- Common.ObjectWrapper.eventMixin<TrackingHeapSnapshotProfileTypeEventTypes, typeof HeapSnapshotProfileType>(
1536
- HeapSnapshotProfileType) {
1539
+ const TrackingHeapSnapshotProfileTypeBase:
1540
+ Common.ObjectWrapper.EventMixin<TrackingHeapSnapshotProfileTypeEventTypes, typeof HeapSnapshotProfileType> =
1541
+ Common.ObjectWrapper.eventMixin(
1542
+ HeapSnapshotProfileType,
1543
+ );
1544
+
1545
+ export class TrackingHeapSnapshotProfileType extends TrackingHeapSnapshotProfileTypeBase {
1537
1546
  readonly recordAllocationStacksSettingInternal: Common.Settings.Setting<boolean>;
1538
1547
  override customContentInternal: UI.UIUtils.CheckboxLabel|null;
1539
1548
  recording: boolean;
@@ -12,8 +12,12 @@ import * as UI from '../../ui/legacy/legacy.js';
12
12
  import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
13
13
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
14
14
 
15
- export class HeapTimelineOverview extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(
16
- UI.Widget.VBox) {
15
+ const HeapTimelineOverviewBase: Common.ObjectWrapper.EventMixin<EventTypes, typeof UI.Widget.VBox> =
16
+ Common.ObjectWrapper.eventMixin(
17
+ UI.Widget.VBox,
18
+ );
19
+
20
+ export class HeapTimelineOverview extends HeapTimelineOverviewBase {
17
21
  readonly overviewCalculator: OverviewCalculator;
18
22
  overviewContainer: HTMLElement;
19
23
  overviewGrid: PerfUI.OverviewGrid.OverviewGrid;
@@ -131,9 +131,12 @@ export class ProfileFlameChartDataProvider implements PerfUI.FlameChart.FlameCha
131
131
  }
132
132
  }
133
133
 
134
- export class ProfileFlameChart extends
135
- Common.ObjectWrapper.eventMixin<PerfUI.FlameChart.EventTypes, typeof UI.Widget.VBox>(UI.Widget.VBox)
136
- implements UI.SearchableView.Searchable {
134
+ const ProfileFlameChartBase: Common.ObjectWrapper.EventMixin<PerfUI.FlameChart.EventTypes, typeof UI.Widget.VBox> =
135
+ Common.ObjectWrapper.eventMixin(
136
+ UI.Widget.VBox,
137
+ );
138
+
139
+ export class ProfileFlameChart extends ProfileFlameChartBase implements UI.SearchableView.Searchable {
137
140
  readonly searchableView: UI.SearchableView.SearchableView;
138
141
  readonly overviewPane: OverviewPane;
139
142
  readonly mainPane: PerfUI.FlameChart.FlameChart;
@@ -311,8 +314,12 @@ export class OverviewCalculator implements NetworkTimeCalculator.Calculator {
311
314
  }
312
315
  }
313
316
 
314
- export class OverviewPane extends Common.ObjectWrapper.eventMixin<OverviewPaneEventTypes, typeof UI.Widget.VBox>(
315
- UI.Widget.VBox) implements PerfUI.FlameChart.FlameChartDelegate {
317
+ const OverviewPaneBase: Common.ObjectWrapper.EventMixin<OverviewPaneEventTypes, typeof UI.Widget.VBox> =
318
+ Common.ObjectWrapper.eventMixin(
319
+ UI.Widget.VBox,
320
+ );
321
+
322
+ export class OverviewPane extends OverviewPaneBase implements PerfUI.FlameChart.FlameChartDelegate {
316
323
  overviewContainer: HTMLElement;
317
324
  readonly overviewCalculator: OverviewCalculator;
318
325
  readonly overviewGrid: PerfUI.OverviewGrid.OverviewGrid;
@@ -133,8 +133,12 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
133
133
  };
134
134
  // clang-format on
135
135
 
136
- export class ProfileLauncherView extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(
137
- UI.Widget.VBox) {
136
+ const ProfileLauncherViewBase: Common.ObjectWrapper.EventMixin<EventTypes, typeof UI.Widget.VBox> =
137
+ Common.ObjectWrapper.eventMixin(
138
+ UI.Widget.VBox,
139
+ );
140
+
141
+ export class ProfileLauncherView extends ProfileLauncherViewBase {
138
142
  readonly panel: ProfilesPanel;
139
143
  readonly selectedProfileTypeSetting: Common.Settings.Setting<string>;
140
144
  readonly #view: View;
@@ -26,7 +26,6 @@
26
26
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
27
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  */
29
- /* Profiler Style */
30
29
 
31
30
  #profile-views {
32
31
  flex: auto;
@@ -61,7 +60,7 @@
61
60
 
62
61
  .profiles-toolbar {
63
62
  background-color: var(--sys-color-cdt-base-container);
64
- border-bottom: 1px solid var(--sys-color-divider);
63
+ border-bottom: var(--sys-size-1) solid var(--sys-color-divider);
65
64
  flex-shrink: 0;
66
65
  }
67
66
 
@@ -95,8 +94,8 @@
95
94
  }
96
95
 
97
96
  .profile-warn-marker {
98
- vertical-align: -1px;
99
- margin-right: 2px;
97
+ vertical-align: calc(-1 * var(--sys-size-1));
98
+ margin-right: var(--sys-size-2);
100
99
  }
101
100
 
102
101
  .cpu-profile-flame-chart-overview-container {
@@ -104,17 +103,17 @@
104
103
  position: absolute;
105
104
  top: 0;
106
105
  width: 100%;
107
- height: 80px;
106
+ height: var(--sys-size-19);
108
107
  }
109
108
 
110
109
  #cpu-profile-flame-chart-overview-container {
111
- border-bottom: 1px solid var(--sys-color-divider);
110
+ border-bottom: var(--sys-size-1) solid var(--sys-color-divider);
112
111
  overflow: hidden;
113
112
  }
114
113
 
115
114
  .cpu-profile-flame-chart-overview-canvas {
116
115
  position: absolute;
117
- inset: 20px 0 0;
116
+ inset: var(--sys-size-9) 0 0;
118
117
  }
119
118
 
120
119
  #cpu-profile-flame-chart-overview-grid .resources-dividers-label-bar {
@@ -122,7 +121,7 @@
122
121
  }
123
122
 
124
123
  .cpu-profile-flame-chart-overview-pane {
125
- flex: 0 0 80px !important; /* stylelint-disable-line declaration-no-important */
124
+ flex: 0 0 var(--sys-size-19) !important; /* stylelint-disable-line declaration-no-important */
126
125
  }
127
126
 
128
127
  .profile-text-view {
@@ -139,7 +138,7 @@
139
138
  justify-content: center;
140
139
  align-items: center;
141
140
  overflow: auto;
142
- font-size: 16px;
141
+ font-size: var(--sys-typescale-body1-size);
143
142
  color: var(--sys-color-token-subtle);
144
143
  padding: 50px;
145
144
  }
@@ -13,8 +13,8 @@
13
13
 
14
14
  /* Icon-related changes */
15
15
  li .icon {
16
- width: 20px;
17
- height: 20px;
16
+ width: var(--sys-size-9);
17
+ height: var(--sys-size-9);
18
18
  margin-right: var(--sys-size-6);
19
19
  flex: none;
20
20
  }
@@ -32,8 +32,8 @@ li .icon {
32
32
  }
33
33
 
34
34
  li.small .icon {
35
- width: 16px;
36
- height: 16px;
35
+ width: var(--sys-size-8);
36
+ height: var(--sys-size-8);
37
37
  }
38
38
 
39
39
  li.wait .icon {
@@ -86,13 +86,13 @@ ol.tree-outline {
86
86
  }
87
87
 
88
88
  & .selection {
89
- border-radius: 0 100px 100px 0;
89
+ border-radius: 0 var(--sys-shape-corner-full) var(--sys-shape-corner-full) 0;
90
90
  }
91
91
  }
92
92
 
93
93
  .tree-outline .profile-launcher-view-tree-item,
94
94
  .tree-outline li.profiles-tree-section + .children > li {
95
- border-radius: 0 100px 100px 0;
95
+ border-radius: 0 var(--sys-shape-corner-full) var(--sys-shape-corner-full) 0;
96
96
  position: relative;
97
97
 
98
98
  &.selected {
@@ -121,7 +121,7 @@ ol.tree-outline {
121
121
  }
122
122
 
123
123
  &:focus-visible {
124
- box-shadow: inset 0 0 0 2px var(--sys-color-state-focus-ring);
124
+ box-shadow: inset 0 0 0 var(--sys-size-2) var(--sys-color-state-focus-ring);
125
125
  }
126
126
  }
127
127
 
@@ -146,17 +146,17 @@ ol.tree-outline {
146
146
  /* Generic items styling */
147
147
 
148
148
  li.wait .spinner::before {
149
- --dimension: 20px;
149
+ --dimension: var(--sys-size-9);
150
150
 
151
151
  margin: 0;
152
152
  }
153
153
 
154
154
  li.wait.small .spinner::before {
155
- --dimension: 14px;
155
+ --dimension: var(--sys-size-7);
156
156
  --clip-size: 9px;
157
- --override-spinner-size: 2px;
157
+ --override-spinner-size: var(--sys-size-2);
158
158
 
159
- margin: 1px;
159
+ margin: var(--sys-size-1);
160
160
  }
161
161
 
162
162
  li.wait.selected .spinner::before {
@@ -174,7 +174,7 @@ li.wait.selected .spinner::before {
174
174
  }
175
175
 
176
176
  li.small {
177
- height: 20px;
177
+ height: var(--sys-size-9);
178
178
  }
179
179
 
180
180
  li .titles {
@@ -199,7 +199,7 @@ li .titles > .title-container .title.editing {
199
199
  }
200
200
 
201
201
  li.small .titles {
202
- top: 2px;
202
+ top: var(--sys-size-2);
203
203
  line-height: normal;
204
204
  }
205
205
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  .warning-icon {
25
25
  margin-left: -18px;
26
- margin-right: 4px;
26
+ margin-right: var(--sys-size-3);
27
27
  }
28
28
 
29
29
  .row {
@@ -104,5 +104,5 @@ ul {
104
104
  }
105
105
 
106
106
  .protocol-monitor-sidebar-toolbar {
107
- border-top: 1px solid var(--sys-color-divider);
107
+ border-top: var(--sys-size-1) solid var(--sys-color-divider);
108
108
  }
@@ -177,7 +177,12 @@ export interface EventTypes {
177
177
  [Events.SUBMIT_EDITOR]: Command;
178
178
  }
179
179
 
180
- export class JSONEditor extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(UI.Widget.VBox) {
180
+ const JSONEditorBase: Common.ObjectWrapper.EventMixin<EventTypes, typeof UI.Widget.VBox> =
181
+ Common.ObjectWrapper.eventMixin(
182
+ UI.Widget.VBox,
183
+ );
184
+
185
+ export class JSONEditor extends JSONEditorBase {
181
186
  #metadataByCommand = new Map<string, {parameters: Parameter[], description: string, replyArgs: string[]}>();
182
187
  #typesByName = new Map<string, Parameter[]>();
183
188
  #enumsByName = new Map<string, Record<string, string>>();
@@ -5,11 +5,11 @@
5
5
  */
6
6
  @scope to (devtools-widget > *) {
7
7
  .protocol-monitor-toolbar {
8
- border-bottom: 1px solid var(--sys-color-divider);
8
+ border-bottom: var(--sys-size-1) solid var(--sys-color-divider);
9
9
  }
10
10
 
11
11
  .protocol-monitor-bottom-toolbar {
12
- border-top: 1px solid var(--sys-color-divider);
12
+ border-top: var(--sys-size-1) solid var(--sys-color-divider);
13
13
  }
14
14
 
15
15
  .target-selector {
@@ -117,8 +117,13 @@ export const DEFAULT_VIEW: View = (input, output, target): void => {
117
117
  // clang-format on
118
118
  };
119
119
 
120
- export class SourcesView extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(UI.Widget.VBox)
121
- implements UI.SearchableView.Searchable, UI.SearchableView.Replaceable {
120
+ const SourcesViewBase: Common.ObjectWrapper.EventMixin<EventTypes, typeof UI.Widget.VBox> =
121
+ Common.ObjectWrapper.eventMixin(
122
+ UI.Widget.VBox,
123
+ );
124
+
125
+ export class SourcesView extends SourcesViewBase implements UI.SearchableView.Searchable,
126
+ UI.SearchableView.Replaceable {
122
127
  #searchableView!: UI.SearchableView.SearchableView;
123
128
  editorContainer?: TabbedEditorContainer;
124
129
  #uiSourceCodes = new Set<Workspace.UISourceCode.UISourceCode>();