chrome-devtools-frontend 1.0.921565 → 1.0.922782

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 (172) hide show
  1. package/front_end/core/common/Settings.ts +8 -1
  2. package/front_end/core/i18n/locales/af.json +53 -32
  3. package/front_end/core/i18n/locales/am.json +56 -35
  4. package/front_end/core/i18n/locales/ar.json +53 -32
  5. package/front_end/core/i18n/locales/as.json +63 -42
  6. package/front_end/core/i18n/locales/az.json +53 -32
  7. package/front_end/core/i18n/locales/be.json +52 -31
  8. package/front_end/core/i18n/locales/bg.json +51 -30
  9. package/front_end/core/i18n/locales/bn.json +63 -42
  10. package/front_end/core/i18n/locales/bs.json +57 -36
  11. package/front_end/core/i18n/locales/ca.json +55 -34
  12. package/front_end/core/i18n/locales/cs.json +51 -30
  13. package/front_end/core/i18n/locales/cy.json +63 -42
  14. package/front_end/core/i18n/locales/da.json +55 -34
  15. package/front_end/core/i18n/locales/de.json +52 -31
  16. package/front_end/core/i18n/locales/el.json +58 -37
  17. package/front_end/core/i18n/locales/en-GB.json +51 -30
  18. package/front_end/core/i18n/locales/es-419.json +53 -32
  19. package/front_end/core/i18n/locales/es.json +52 -31
  20. package/front_end/core/i18n/locales/et.json +54 -33
  21. package/front_end/core/i18n/locales/eu.json +71 -50
  22. package/front_end/core/i18n/locales/fa.json +54 -33
  23. package/front_end/core/i18n/locales/fi.json +55 -34
  24. package/front_end/core/i18n/locales/fil.json +59 -38
  25. package/front_end/core/i18n/locales/fr-CA.json +52 -31
  26. package/front_end/core/i18n/locales/fr.json +54 -33
  27. package/front_end/core/i18n/locales/gl.json +57 -36
  28. package/front_end/core/i18n/locales/gu.json +65 -44
  29. package/front_end/core/i18n/locales/he.json +56 -35
  30. package/front_end/core/i18n/locales/hi.json +61 -40
  31. package/front_end/core/i18n/locales/hr.json +55 -34
  32. package/front_end/core/i18n/locales/hu.json +53 -32
  33. package/front_end/core/i18n/locales/hy.json +54 -33
  34. package/front_end/core/i18n/locales/id.json +59 -38
  35. package/front_end/core/i18n/locales/is.json +51 -30
  36. package/front_end/core/i18n/locales/it.json +51 -30
  37. package/front_end/core/i18n/locales/ja.json +52 -31
  38. package/front_end/core/i18n/locales/ka.json +51 -30
  39. package/front_end/core/i18n/locales/kk.json +56 -35
  40. package/front_end/core/i18n/locales/km.json +59 -38
  41. package/front_end/core/i18n/locales/kn.json +63 -42
  42. package/front_end/core/i18n/locales/ko.json +59 -38
  43. package/front_end/core/i18n/locales/ky.json +54 -33
  44. package/front_end/core/i18n/locales/lo.json +59 -38
  45. package/front_end/core/i18n/locales/lt.json +52 -31
  46. package/front_end/core/i18n/locales/lv.json +60 -39
  47. package/front_end/core/i18n/locales/mk.json +51 -30
  48. package/front_end/core/i18n/locales/ml.json +65 -44
  49. package/front_end/core/i18n/locales/mn.json +59 -38
  50. package/front_end/core/i18n/locales/mr.json +61 -40
  51. package/front_end/core/i18n/locales/ms.json +59 -38
  52. package/front_end/core/i18n/locales/my.json +59 -38
  53. package/front_end/core/i18n/locales/ne.json +63 -42
  54. package/front_end/core/i18n/locales/nl.json +55 -34
  55. package/front_end/core/i18n/locales/no.json +54 -33
  56. package/front_end/core/i18n/locales/or.json +63 -42
  57. package/front_end/core/i18n/locales/pa.json +61 -40
  58. package/front_end/core/i18n/locales/pl.json +51 -30
  59. package/front_end/core/i18n/locales/pt-PT.json +52 -31
  60. package/front_end/core/i18n/locales/pt.json +59 -38
  61. package/front_end/core/i18n/locales/ro.json +52 -31
  62. package/front_end/core/i18n/locales/ru.json +52 -31
  63. package/front_end/core/i18n/locales/si.json +59 -38
  64. package/front_end/core/i18n/locales/sk.json +52 -31
  65. package/front_end/core/i18n/locales/sl.json +52 -31
  66. package/front_end/core/i18n/locales/sq.json +51 -30
  67. package/front_end/core/i18n/locales/sr-Latn.json +52 -31
  68. package/front_end/core/i18n/locales/sr.json +52 -31
  69. package/front_end/core/i18n/locales/sv.json +52 -31
  70. package/front_end/core/i18n/locales/sw.json +60 -39
  71. package/front_end/core/i18n/locales/ta.json +67 -46
  72. package/front_end/core/i18n/locales/te.json +62 -41
  73. package/front_end/core/i18n/locales/th.json +52 -31
  74. package/front_end/core/i18n/locales/tr.json +55 -34
  75. package/front_end/core/i18n/locales/uk.json +55 -34
  76. package/front_end/core/i18n/locales/ur.json +60 -39
  77. package/front_end/core/i18n/locales/uz.json +52 -31
  78. package/front_end/core/i18n/locales/vi.json +54 -33
  79. package/front_end/core/i18n/locales/zh-HK.json +52 -31
  80. package/front_end/core/i18n/locales/zh-TW.json +57 -36
  81. package/front_end/core/i18n/locales/zh.json +56 -35
  82. package/front_end/core/i18n/locales/zu.json +59 -38
  83. package/front_end/core/sdk/FrameManager.ts +2 -2
  84. package/front_end/entrypoints/inspector_main/InspectorMain.ts +1 -1
  85. package/front_end/entrypoints/js_app/JsMain.ts +1 -1
  86. package/front_end/entrypoints/node_main/NodeMain.ts +1 -1
  87. package/front_end/entrypoints/worker_app/WorkerMain.ts +1 -1
  88. package/front_end/models/emulation/DeviceModeModel.ts +1 -1
  89. package/front_end/models/timeline_model/TimelineModel.ts +5 -1
  90. package/front_end/panels/application/ApplicationPanelSidebar.ts +8 -7
  91. package/front_end/panels/application/DatabaseQueryView.ts +7 -1
  92. package/front_end/panels/application/ServiceWorkerCacheViews.ts +1 -1
  93. package/front_end/panels/changes/ChangesSidebar.ts +6 -1
  94. package/front_end/panels/console/ConsolePrompt.ts +6 -1
  95. package/front_end/panels/console/ConsoleSidebar.ts +5 -1
  96. package/front_end/panels/console/ConsoleViewMessage.ts +2 -2
  97. package/front_end/panels/coverage/CoverageView.ts +5 -4
  98. package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +59 -48
  99. package/front_end/panels/css_overview/CSSOverviewController.ts +48 -8
  100. package/front_end/panels/css_overview/CSSOverviewPanel.ts +1 -1
  101. package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +8 -1
  102. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +14 -12
  103. package/front_end/panels/elements/ElementsPanel.ts +10 -8
  104. package/front_end/panels/elements/ElementsTreeOutline.ts +8 -1
  105. package/front_end/panels/elements/StylesSidebarPane.ts +12 -2
  106. package/front_end/panels/emulation/AdvancedApp.ts +2 -12
  107. package/front_end/panels/emulation/InspectedPagePlaceholder.ts +14 -1
  108. package/front_end/panels/layer_viewer/LayerDetailsView.ts +7 -1
  109. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +4 -4
  110. package/front_end/panels/layer_viewer/Layers3DView.ts +7 -1
  111. package/front_end/panels/layer_viewer/PaintProfilerView.ts +7 -1
  112. package/front_end/panels/layers/LayersPanel.ts +1 -1
  113. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +1 -2
  114. package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +4 -0
  115. package/front_end/panels/network/NetworkDataGridNode.ts +46 -104
  116. package/front_end/panels/network/NetworkItemView.ts +2 -6
  117. package/front_end/panels/network/NetworkLogView.ts +4 -4
  118. package/front_end/panels/network/NetworkPanel.ts +12 -18
  119. package/front_end/panels/profiler/CPUProfileFlameChart.ts +26 -11
  120. package/front_end/panels/profiler/HeapProfileView.ts +5 -6
  121. package/front_end/panels/profiler/HeapSnapshotView.ts +6 -6
  122. package/front_end/panels/profiler/HeapTimelineOverview.ts +17 -3
  123. package/front_end/panels/profiler/ProfileLauncherView.ts +6 -1
  124. package/front_end/panels/profiler/ProfileView.ts +1 -1
  125. package/front_end/panels/profiler/ProfilesPanel.ts +2 -2
  126. package/front_end/panels/settings/SettingsScreen.ts +2 -2
  127. package/front_end/panels/sources/CSSPlugin.ts +6 -6
  128. package/front_end/panels/sources/DebuggerPlugin.ts +4 -5
  129. package/front_end/panels/sources/EditingLocationHistoryManager.ts +7 -5
  130. package/front_end/panels/sources/InplaceFormatterEditorAction.ts +5 -5
  131. package/front_end/panels/sources/OutlineQuickOpen.ts +7 -2
  132. package/front_end/panels/sources/ScriptFormatterEditorAction.ts +5 -6
  133. package/front_end/panels/sources/SourcesPanel.ts +2 -2
  134. package/front_end/panels/sources/SourcesView.ts +16 -3
  135. package/front_end/panels/sources/TabbedEditorContainer.ts +8 -13
  136. package/front_end/panels/sources/UISourceCodeFrame.ts +7 -1
  137. package/front_end/panels/sources/watchExpressionsSidebarPane.css +2 -7
  138. package/front_end/panels/timeline/TimelineDetailsView.ts +1 -1
  139. package/front_end/panels/timeline/TimelineFlameChartView.ts +4 -4
  140. package/front_end/panels/timeline/TimelineLayersView.ts +7 -7
  141. package/front_end/panels/timeline/TimelinePanel.ts +2 -1
  142. package/front_end/panels/timeline/TimelineTreeView.ts +6 -1
  143. package/front_end/ui/components/docs/toggle_fonts.ts +28 -1
  144. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorController.ts +4 -5
  145. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorPane.ts +14 -5
  146. package/front_end/ui/legacy/Dialog.ts +12 -2
  147. package/front_end/ui/legacy/FilterBar.ts +12 -8
  148. package/front_end/ui/legacy/InspectorView.ts +3 -3
  149. package/front_end/ui/legacy/SplitWidget.ts +6 -1
  150. package/front_end/ui/legacy/TabbedPane.ts +9 -1
  151. package/front_end/ui/legacy/TextEditor.ts +12 -1
  152. package/front_end/ui/legacy/Treeoutline.ts +19 -11
  153. package/front_end/ui/legacy/ViewManager.ts +8 -7
  154. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +6 -1
  155. package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +6 -1
  156. package/front_end/ui/legacy/components/inline_editor/CSSShadowEditor.ts +7 -1
  157. package/front_end/ui/legacy/components/inline_editor/FontEditor.ts +12 -1
  158. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +6 -6
  159. package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +8 -1
  160. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +9 -1
  161. package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +13 -3
  162. package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +14 -3
  163. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +11 -4
  164. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +13 -3
  165. package/front_end/ui/legacy/components/quick_open/QuickInput.ts +4 -5
  166. package/front_end/ui/legacy/components/quick_open/QuickPick.ts +4 -5
  167. package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +29 -19
  168. package/front_end/ui/legacy/components/source_frame/SourcesTextEditor.ts +18 -2
  169. package/front_end/ui/legacy/components/text_editor/CodeMirrorTextEditor.ts +3 -1
  170. package/front_end/ui/legacy/splitWidget.css +2 -2
  171. package/package.json +1 -1
  172. package/scripts/build/generate_css_js_files.js +1 -0
@@ -28,6 +28,7 @@
28
28
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
29
  */
30
30
 
31
+ import * as Common from '../../core/common/common.js';
31
32
  import * as i18n from '../../core/i18n/i18n.js';
32
33
  import * as Platform from '../../core/platform/platform.js';
33
34
  import * as SDK from '../../core/sdk/sdk.js';
@@ -155,7 +156,8 @@ const UIStrings = {
155
156
  const str_ = i18n.i18n.registerUIStrings('panels/layer_viewer/LayerDetailsView.ts', UIStrings);
156
157
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
157
158
  const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
158
- export class LayerDetailsView extends UI.Widget.Widget implements LayerView {
159
+ export class LayerDetailsView extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.Widget>(
160
+ UI.Widget.Widget) implements LayerView {
159
161
  private readonly layerViewHost: LayerViewHost;
160
162
  private readonly emptyWidget: UI.EmptyWidget.EmptyWidget;
161
163
  private layerSnapshotMap: Map<SDK.LayerTreeBase.Layer, SnapshotSelection>;
@@ -470,6 +472,10 @@ export enum Events {
470
472
  PaintProfilerRequested = 'PaintProfilerRequested',
471
473
  }
472
474
 
475
+ export type EventTypes = {
476
+ [Events.PaintProfilerRequested]: Selection,
477
+ };
478
+
473
479
  export const slowScrollRectNames = new Map([
474
480
  [SDK.LayerTreeBase.Layer.ScrollRectType.NonFastScrollable, i18nLazyString(UIStrings.nonFastScrollable)],
475
481
  [SDK.LayerTreeBase.Layer.ScrollRectType.TouchEventHandler, i18nLazyString(UIStrings.touchEventHandler)],
@@ -28,7 +28,7 @@
28
28
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
29
  */
30
30
 
31
- import type * as Common from '../../core/common/common.js';
31
+ import * as Common from '../../core/common/common.js';
32
32
  import * as i18n from '../../core/i18n/i18n.js';
33
33
  import type * as SDK from '../../core/sdk/sdk.js';
34
34
  import * as UI from '../../ui/legacy/legacy.js';
@@ -54,8 +54,8 @@ const UIStrings = {
54
54
  };
55
55
  const str_ = i18n.i18n.registerUIStrings('panels/layer_viewer/LayerTreeOutline.ts', UIStrings);
56
56
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
57
- export class LayerTreeOutline extends UI.TreeOutline.TreeOutline implements Common.EventTarget.EventTarget<EventTypes>,
58
- LayerView {
57
+ export class LayerTreeOutline extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.TreeOutline.TreeOutline>(
58
+ UI.TreeOutline.TreeOutline) implements Common.EventTarget.EventTarget<EventTypes>, LayerView {
59
59
  private layerViewHost: LayerViewHost;
60
60
  private treeOutline: UI.TreeOutline.TreeOutlineInShadow;
61
61
  private lastHoveredNode: LayerTreeElement|null;
@@ -220,7 +220,7 @@ export class LayerTreeOutline extends UI.TreeOutline.TreeOutline implements Comm
220
220
  if (this.layerSnapshotMap.has(layer)) {
221
221
  contextMenu.defaultSection().appendItem(
222
222
  i18nString(UIStrings.showPaintProfiler),
223
- () => this.dispatchEventToListeners(Events.PaintProfilerRequested, selection), false);
223
+ () => this.dispatchEventToListeners(Events.PaintProfilerRequested, selection as Selection), false);
224
224
  }
225
225
  }
226
226
  this.layerViewHost.showContextMenu(contextMenu, selection);
@@ -99,7 +99,8 @@ const uniformSamplerLocations = new Map<WebGLProgram, WebGLUniformLocation|null>
99
99
 
100
100
  const imageForTexture = new Map<WebGLTexture, HTMLImageElement>();
101
101
 
102
- export class Layers3DView extends UI.Widget.VBox implements LayerView {
102
+ export class Layers3DView extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(UI.Widget.VBox)
103
+ implements LayerView {
103
104
  private readonly failBanner: UI.Widget.VBox;
104
105
  private readonly layerViewHost: LayerViewHost;
105
106
  private transformController: TransformController;
@@ -892,6 +893,11 @@ export enum Events {
892
893
  ScaleChanged = 'ScaleChanged',
893
894
  }
894
895
 
896
+ export type EventTypes = {
897
+ [Events.PaintProfilerRequested]: Selection,
898
+ [Events.ScaleChanged]: void,
899
+ };
900
+
895
901
  export const enum ChromeTexture {
896
902
  Left = 0,
897
903
  Middle = 1,
@@ -28,6 +28,7 @@
28
28
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
29
  */
30
30
 
31
+ import * as Common from '../../core/common/common.js';
31
32
  import * as i18n from '../../core/i18n/i18n.js';
32
33
  import * as Platform from '../../core/platform/platform.js';
33
34
  import * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
@@ -75,7 +76,8 @@ let categories: {[x: string]: PaintProfilerCategory}|null = null;
75
76
 
76
77
  let logItemCategoriesMap: {[x: string]: PaintProfilerCategory}|null = null;
77
78
 
78
- export class PaintProfilerView extends UI.Widget.HBox {
79
+ export class PaintProfilerView extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.HBox>(
80
+ UI.Widget.HBox) {
79
81
  private canvasContainer: HTMLElement;
80
82
  private readonly progressBanner: HTMLElement;
81
83
  private pieChart: PerfUI.PieChart.PieChart;
@@ -422,6 +424,10 @@ export enum Events {
422
424
  WindowChanged = 'WindowChanged',
423
425
  }
424
426
 
427
+ export type EventTypes = {
428
+ [Events.WindowChanged]: void,
429
+ };
430
+
425
431
  export class PaintProfilerCommandLogView extends UI.ThrottledWidget.ThrottledWidget {
426
432
  private readonly treeOutline: UI.TreeOutline.TreeOutlineInShadow;
427
433
  private log: SDK.PaintProfiler.PaintProfilerLogItem[];
@@ -197,7 +197,7 @@ export class LayersPanel extends UI.Panel.PanelWithSidebar implements SDK.Target
197
197
  });
198
198
  }
199
199
 
200
- private onTabClosed(event: Common.EventTarget.EventTargetEvent): void {
200
+ private onTabClosed(event: Common.EventTarget.EventTargetEvent<UI.TabbedPane.EventData>): void {
201
201
  if (event.data.tabId !== DetailsViewTabs.Profiler || !this.layerBeingProfiled) {
202
202
  return;
203
203
  }
@@ -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 Common from '../../core/common/common.js';
6
5
  import * as i18n from '../../core/i18n/i18n.js';
7
6
  import type * as ProtocolClient from '../../core/protocol_client/protocol_client.js';
8
7
  import * as SDK from '../../core/sdk/sdk.js';
@@ -12,7 +11,7 @@ import type * as ReportRenderer from './LighthouseReporterTypes.js';
12
11
 
13
12
  let lastId = 1;
14
13
 
15
- export class ProtocolService extends Common.ObjectWrapper.ObjectWrapper {
14
+ export class ProtocolService {
16
15
  private rawConnection?: ProtocolClient.InspectorBackend.Connection;
17
16
  private lighthouseWorkerPromise?: Promise<Worker>;
18
17
  private lighthouseMessageUpdateCallback?: ((arg0: string) => void);
@@ -53,6 +53,10 @@
53
53
  text-align: left;
54
54
  }
55
55
 
56
+ .conditions-edit-row .conditions-list-text:last-child {
57
+ text-align: right;
58
+ }
59
+
56
60
  .conditions-list-title {
57
61
  text-align: start;
58
62
  display: flex;
@@ -245,100 +245,49 @@ export enum Events {
245
245
  RequestActivated = 'RequestActivated',
246
246
  }
247
247
 
248
- export abstract class NetworkLogViewInterface {
249
- async onLoadFromFile(file: File): Promise<void> {
250
- }
251
-
252
- abstract nodeForRequest(request: SDK.NetworkRequest.NetworkRequest): NetworkRequestNode|null;
253
-
254
- abstract headerHeight(): number;
255
-
256
- setRecording(recording: boolean): void {
257
- }
258
-
259
- setWindow(start: number, end: number): void {
260
- }
261
-
262
- resetFocus(): void {
263
- }
264
-
265
- columnExtensionResolved(): void {
266
- }
267
-
268
- hoveredNode(): NetworkNode|null {
269
- throw new Error('not implemented');
270
- }
271
-
272
- scheduleRefresh(): void {
273
- }
274
-
275
- addFilmStripFrames(times: number[]): void {
276
- }
277
-
278
- selectFilmStripFrame(time: number): void {
279
- }
280
-
281
- clearFilmStripFrame(): void {
282
- }
283
- timeCalculator(): NetworkTimeCalculator {
284
- throw new Error('not implemented');
285
- }
286
-
287
- calculator(): NetworkTimeCalculator {
288
- throw new Error('not implemented');
289
- }
290
-
291
- setCalculator(x: NetworkTimeCalculator): void {
292
- }
293
-
294
- flatNodesList(): NetworkNode[] {
295
- throw new Error('not implemented');
296
- }
297
-
298
- updateNodeBackground(): void {
299
- }
300
-
301
- updateNodeSelectedClass(isSelected: boolean): void {
302
- }
303
-
304
- stylesChanged(): void {
305
- }
306
-
307
- setTextFilterValue(filterString: string): void {
308
- }
309
-
310
- rowHeight(): number {
311
- throw new Error('not implemented');
312
- }
248
+ export interface RequestActivatedEvent {
249
+ showPanel: boolean;
250
+ takeFocus?: boolean;
251
+ tab?: NetworkForward.UIRequestLocation.UIRequestTabs;
252
+ }
313
253
 
314
- switchViewMode(gridMode: boolean): void {
315
- }
254
+ export type EventTypes = {
255
+ [Events.RequestSelected]: SDK.NetworkRequest.NetworkRequest,
256
+ [Events.RequestActivated]: RequestActivatedEvent,
257
+ };
316
258
 
259
+ export interface NetworkLogViewInterface extends Common.EventTarget.EventTarget<EventTypes> {
260
+ onLoadFromFile(file: File): Promise<void>;
261
+ nodeForRequest(request: SDK.NetworkRequest.NetworkRequest): NetworkRequestNode|null;
262
+ headerHeight(): number;
263
+ setRecording(recording: boolean): void;
264
+ setWindow(start: number, end: number): void;
265
+ resetFocus(): void;
266
+ columnExtensionResolved(): void;
267
+ hoveredNode(): NetworkNode|null;
268
+ scheduleRefresh(): void;
269
+ addFilmStripFrames(times: number[]): void;
270
+ selectFilmStripFrame(time: number): void;
271
+ clearFilmStripFrame(): void;
272
+ timeCalculator(): NetworkTimeCalculator;
273
+ calculator(): NetworkTimeCalculator;
274
+ setCalculator(x: NetworkTimeCalculator): void;
275
+ flatNodesList(): NetworkNode[];
276
+ updateNodeBackground(): void;
277
+ updateNodeSelectedClass(isSelected: boolean): void;
278
+ stylesChanged(): void;
279
+ setTextFilterValue(filterString: string): void;
280
+ rowHeight(): number;
281
+ switchViewMode(gridMode: boolean): void;
317
282
  handleContextMenuForRequest(contextMenu: UI.ContextMenu.ContextMenu, request: SDK.NetworkRequest.NetworkRequest):
318
- void {
319
- }
320
-
321
- async exportAll(): Promise<void> {
322
- }
323
-
324
- revealAndHighlightRequest(request: SDK.NetworkRequest.NetworkRequest): void {
325
- }
326
-
327
- selectRequest(request: SDK.NetworkRequest.NetworkRequest): void {
328
- }
329
-
330
- removeAllNodeHighlights(): void {
331
- }
332
-
333
- modelAdded(model: SDK.NetworkManager.NetworkManager): void {
334
- }
335
-
336
- modelRemoved(model: SDK.NetworkManager.NetworkManager): void {
337
- }
338
-
339
- linkifier(): Components.Linkifier.Linkifier {
340
- throw new Error('not implemented');
341
- }
283
+ void;
284
+ exportAll(): Promise<void>;
285
+ revealAndHighlightRequest(request: SDK.NetworkRequest.NetworkRequest): void;
286
+ selectRequest(request: SDK.NetworkRequest.NetworkRequest): void;
287
+ removeAllNodeHighlights(): void;
288
+ modelAdded(model: SDK.NetworkManager.NetworkManager): void;
289
+ modelRemoved(model: SDK.NetworkManager.NetworkManager): void;
290
+ linkifier(): Components.Linkifier.Linkifier;
342
291
  }
343
292
 
344
293
  export class NetworkNode extends DataGrid.SortableDataGrid.SortableDataGridNode<NetworkNode> {
@@ -1003,9 +952,7 @@ export class NetworkRequestNode extends NetworkNode {
1003
952
 
1004
953
  select(supressSelectedEvent?: boolean): void {
1005
954
  super.select(supressSelectedEvent);
1006
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
1007
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1008
- (this.parentView() as any).dispatchEventToListeners(Events.RequestSelected, this.requestInternal);
955
+ this.parentView().dispatchEventToListeners(Events.RequestSelected, this.requestInternal);
1009
956
  }
1010
957
 
1011
958
  highlightMatchedSubstring(regexp: RegExp|null): Object[] {
@@ -1056,9 +1003,7 @@ export class NetworkRequestNode extends NetworkNode {
1056
1003
  this.nameCell = cell;
1057
1004
  cell.addEventListener('dblclick', this.openInNewTab.bind(this), false);
1058
1005
  cell.addEventListener('click', () => {
1059
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
1060
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1061
- (this.parentView() as any).dispatchEventToListeners(Events.RequestActivated, {showPanel: true});
1006
+ this.parentView().dispatchEventToListeners(Events.RequestActivated, {showPanel: true});
1062
1007
  });
1063
1008
  let iconElement;
1064
1009
  if (this.requestInternal.resourceType() === Common.ResourceType.resourceTypes.Image) {
@@ -1190,9 +1135,7 @@ export class NetworkRequestNode extends NetworkNode {
1190
1135
  if (displayShowHeadersLink) {
1191
1136
  this.setTextAndTitleAsLink(
1192
1137
  cell, i18nString(UIStrings.blockeds, {PH1: reason}), i18nString(UIStrings.blockedTooltip), () => {
1193
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
1194
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1195
- (this.parentView() as any).dispatchEventToListeners(Events.RequestActivated, {
1138
+ this.parentView().dispatchEventToListeners(Events.RequestActivated, {
1196
1139
  showPanel: true,
1197
1140
  tab: NetworkForward.UIRequestLocation.UIRequestTabs.Headers,
1198
1141
  });
@@ -1398,10 +1341,9 @@ export class NetworkGroupNode extends NetworkNode {
1398
1341
  select(supressSelectedEvent?: boolean): void {
1399
1342
  super.select(supressSelectedEvent);
1400
1343
  const firstChildNode = (this.traverseNextNode(false, undefined, true) as NetworkNode);
1401
- if (firstChildNode && firstChildNode.request()) {
1402
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
1403
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1404
- (this.parentView() as any).dispatchEventToListeners(Events.RequestSelected, firstChildNode.request());
1344
+ const request = firstChildNode?.request();
1345
+ if (request) {
1346
+ this.parentView().dispatchEventToListeners(Events.RequestSelected, request);
1405
1347
  }
1406
1348
  }
1407
1349
  }
@@ -274,15 +274,11 @@ export class NetworkItemView extends UI.TabbedPane.TabbedPane {
274
274
  }
275
275
  }
276
276
 
277
- private tabSelected(event: {
278
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
279
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
280
- data: any,
281
- }): void {
277
+ private tabSelected(event: Common.EventTarget.EventTargetEvent<UI.TabbedPane.EventData>): void {
282
278
  if (!event.data.isUserGesture) {
283
279
  return;
284
280
  }
285
- this.resourceViewTabSetting.set(event.data.tabId);
281
+ this.resourceViewTabSetting.set(event.data.tabId as NetworkForward.UIRequestLocation.UIRequestTabs);
286
282
  }
287
283
 
288
284
  request(): SDK.NetworkRequest.NetworkRequest {
@@ -52,7 +52,7 @@ import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
52
52
 
53
53
  import networkLogViewStyles from './networkLogView.css.js';
54
54
 
55
- import type {NetworkLogViewInterface, NetworkNode} from './NetworkDataGridNode.js';
55
+ import type {NetworkLogViewInterface, NetworkNode, EventTypes} from './NetworkDataGridNode.js';
56
56
  import {Events, NetworkGroupNode, NetworkRequestNode} from './NetworkDataGridNode.js';
57
57
  import {NetworkFrameGrouper} from './NetworkFrameGrouper.js';
58
58
  import {NetworkLogViewColumns} from './NetworkLogViewColumns.js';
@@ -351,8 +351,8 @@ const enum FetchStyle {
351
351
  NodeJs = 1,
352
352
  }
353
353
 
354
- export class NetworkLogView extends UI.Widget.VBox implements
355
- SDK.TargetManager.SDKModelObserver<SDK.NetworkManager.NetworkManager>, NetworkLogViewInterface {
354
+ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(UI.Widget.VBox)
355
+ implements SDK.TargetManager.SDKModelObserver<SDK.NetworkManager.NetworkManager>, NetworkLogViewInterface {
356
356
  private readonly networkInvertFilterSetting: Common.Settings.Setting<boolean>;
357
357
  private readonly networkHideDataURLSetting: Common.Settings.Setting<boolean>;
358
358
  private readonly networkShowIssuesOnlySetting: Common.Settings.Setting<boolean>;
@@ -864,7 +864,7 @@ export class NetworkLogView extends UI.Widget.VBox implements
864
864
  this.textFilterUI.setSuggestionProvider(this.suggestionBuilder.completions.bind(this.suggestionBuilder));
865
865
  }
866
866
 
867
- private filterChanged(_event: Common.EventTarget.EventTargetEvent): void {
867
+ private filterChanged(): void {
868
868
  this.removeAllNodeHighlights();
869
869
  this.parseFilterQuery(this.textFilterUI.value(), this.invertFilterUI.checked());
870
870
  this.filterRequests();
@@ -48,6 +48,7 @@ import * as MobileThrottling from '../mobile_throttling/mobile_throttling.js';
48
48
  import * as Search from '../search/search.js';
49
49
 
50
50
  import {BlockedURLsPane} from './BlockedURLsPane.js';
51
+ import type {RequestActivatedEvent} from './NetworkDataGridNode.js';
51
52
  import {Events} from './NetworkDataGridNode.js';
52
53
  import {NetworkItemView} from './NetworkItemView.js';
53
54
  import {NetworkLogView} from './NetworkLogView.js';
@@ -369,7 +370,8 @@ export class NetworkPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
369
370
  return this.throttlingSelect;
370
371
  }
371
372
 
372
- private onWindowChanged(event: Common.EventTarget.EventTargetEvent): void {
373
+ private onWindowChanged(event: Common.EventTarget.EventTargetEvent<PerfUI.TimelineOverviewPane.WindowChangedEvent>):
374
+ void {
373
375
  const startTime = Math.max(this.calculator.minimumBoundary(), event.data.startTime / 1000);
374
376
  const endTime = Math.min(this.calculator.maximumBoundary(), event.data.endTime / 1000);
375
377
  this.networkLogView.setWindow(startTime, endTime);
@@ -649,18 +651,10 @@ export class NetworkPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
649
651
  this.updateNetworkItemView();
650
652
  }
651
653
 
652
- private onRequestActivated(event: {
653
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
654
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
655
- data: any,
656
- }): void {
657
- const eventData = (event.data as {
658
- showPanel: boolean,
659
- tab: NetworkForward.UIRequestLocation.UIRequestTabs,
660
- takeFocus: (boolean | undefined),
661
- });
662
- if (eventData.showPanel) {
663
- this.showRequestPanel(eventData.tab, /* takeFocus */ eventData.takeFocus);
654
+ private onRequestActivated(event: Common.EventTarget.EventTargetEvent<RequestActivatedEvent>): void {
655
+ const {showPanel, tab, takeFocus} = event.data;
656
+ if (showPanel) {
657
+ this.showRequestPanel(tab, takeFocus);
664
658
  } else {
665
659
  this.hideRequestPanel();
666
660
  }
@@ -766,18 +760,18 @@ export class NetworkPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
766
760
  appendRevealItem.call(this, request);
767
761
  }
768
762
 
769
- private onFilmFrameSelected(event: Common.EventTarget.EventTargetEvent): void {
770
- const timestamp = (event.data as number);
763
+ private onFilmFrameSelected(event: Common.EventTarget.EventTargetEvent<number>): void {
764
+ const timestamp = event.data;
771
765
  this.overviewPane.setWindowTimes(0, timestamp);
772
766
  }
773
767
 
774
- private onFilmFrameEnter(event: Common.EventTarget.EventTargetEvent): void {
775
- const timestamp = (event.data as number);
768
+ private onFilmFrameEnter(event: Common.EventTarget.EventTargetEvent<number>): void {
769
+ const timestamp = event.data;
776
770
  this.networkOverview.selectFilmStripFrame(timestamp);
777
771
  this.networkLogView.selectFilmStripFrame(timestamp / 1000);
778
772
  }
779
773
 
780
- private onFilmFrameExit(_event: Common.EventTarget.EventTargetEvent): void {
774
+ private onFilmFrameExit(): void {
781
775
  this.networkOverview.clearFilmStripFrame();
782
776
  this.networkLogView.clearFilmStripFrame();
783
777
  }
@@ -171,7 +171,7 @@ export class CPUProfileFlameChart extends UI.Widget.VBox implements UI.Searchabl
171
171
  this.mainPane.addEventListener(PerfUI.FlameChart.Events.EntryInvoked, this.onEntryInvoked, this);
172
172
  this.entrySelected = false;
173
173
  this.mainPane.addEventListener(PerfUI.FlameChart.Events.CanvasFocused, this.onEntrySelected, this);
174
- this.overviewPane.addEventListener(PerfUI.OverviewGrid.Events.WindowChanged, this.onWindowChanged, this);
174
+ this.overviewPane.addEventListener(OverviewPaneEvents.WindowChanged, this.onWindowChanged, this);
175
175
  this.dataProvider = dataProvider;
176
176
  this.searchResults = [];
177
177
  }
@@ -180,9 +180,8 @@ export class CPUProfileFlameChart extends UI.Widget.VBox implements UI.Searchabl
180
180
  this.mainPane.focus();
181
181
  }
182
182
 
183
- onWindowChanged(event: Common.EventTarget.EventTargetEvent): void {
184
- const windowLeft = event.data.windowTimeLeft;
185
- const windowRight = event.data.windowTimeRight;
183
+ onWindowChanged(event: Common.EventTarget.EventTargetEvent<OverviewPaneWindowChangedEvent>): void {
184
+ const {windowTimeLeft: windowLeft, windowTimeRight: windowRight} = event.data;
186
185
  this.mainPane.setWindowTimes(windowLeft, windowRight, /* animate */ true);
187
186
  }
188
187
 
@@ -190,9 +189,9 @@ export class CPUProfileFlameChart extends UI.Widget.VBox implements UI.Searchabl
190
189
  this.overviewPane.selectRange(timeLeft, timeRight);
191
190
  }
192
191
 
193
- onEntrySelected(event: Common.EventTarget.EventTargetEvent): void {
192
+ onEntrySelected(event: Common.EventTarget.EventTargetEvent<void|number>): void {
194
193
  if (event.data) {
195
- const eventIndex = Number(event.data);
194
+ const eventIndex = event.data;
196
195
  this.mainPane.setSelectedEntry(eventIndex);
197
196
  if (eventIndex === -1) {
198
197
  this.entrySelected = false;
@@ -205,7 +204,7 @@ export class CPUProfileFlameChart extends UI.Widget.VBox implements UI.Searchabl
205
204
  }
206
205
  }
207
206
 
208
- onEntryInvoked(event: Common.EventTarget.EventTargetEvent): void {
207
+ onEntryInvoked(event: Common.EventTarget.EventTargetEvent<number>): void {
209
208
  this.onEntrySelected(event);
210
209
  this.dispatchEventToListeners(PerfUI.FlameChart.Events.EntryInvoked, event.data);
211
210
  }
@@ -308,7 +307,8 @@ export class OverviewCalculator implements PerfUI.TimelineGrid.Calculator {
308
307
  }
309
308
  }
310
309
 
311
- export class OverviewPane extends UI.Widget.VBox implements PerfUI.FlameChart.FlameChartDelegate {
310
+ export class OverviewPane extends Common.ObjectWrapper.eventMixin<OverviewPaneEvents, typeof UI.Widget.VBox>(
311
+ UI.Widget.VBox) implements PerfUI.FlameChart.FlameChartDelegate {
312
312
  overviewContainer: HTMLElement;
313
313
  readonly overviewCalculator: OverviewCalculator;
314
314
  readonly overviewGrid: PerfUI.OverviewGrid.OverviewGrid;
@@ -329,7 +329,8 @@ export class OverviewPane extends UI.Widget.VBox implements PerfUI.FlameChart.Fl
329
329
  (this.overviewContainer.createChild('canvas', 'cpu-profile-flame-chart-overview-canvas') as HTMLCanvasElement);
330
330
  this.overviewContainer.appendChild(this.overviewGrid.element);
331
331
  this.dataProvider = dataProvider;
332
- this.overviewGrid.addEventListener(PerfUI.OverviewGrid.Events.WindowChanged, this.onWindowChanged, this);
332
+ this.overviewGrid.addEventListener(
333
+ PerfUI.OverviewGrid.Events.WindowChangedWithPosition, this.onWindowChanged, this);
333
334
  }
334
335
 
335
336
  windowChanged(windowStartTime: number, windowEndTime: number): void {
@@ -348,12 +349,13 @@ export class OverviewPane extends UI.Widget.VBox implements PerfUI.FlameChart.Fl
348
349
  this.overviewGrid.setWindow((timeLeft - startTime) / totalTime, (timeRight - startTime) / totalTime);
349
350
  }
350
351
 
351
- onWindowChanged(event: Common.EventTarget.EventTargetEvent): void {
352
+ onWindowChanged(event: Common.EventTarget.EventTargetEvent<PerfUI.OverviewGrid.WindowChangedWithPositionEvent>):
353
+ void {
352
354
  const windowPosition = {windowTimeLeft: event.data.rawStartValue, windowTimeRight: event.data.rawEndValue};
353
355
  this.windowTimeLeft = windowPosition.windowTimeLeft;
354
356
  this.windowTimeRight = windowPosition.windowTimeRight;
355
357
 
356
- this.dispatchEventToListeners(PerfUI.OverviewGrid.Events.WindowChanged, windowPosition);
358
+ this.dispatchEventToListeners(OverviewPaneEvents.WindowChanged, windowPosition);
357
359
  }
358
360
 
359
361
  timelineData(): PerfUI.FlameChart.TimelineData|null {
@@ -445,3 +447,16 @@ export class OverviewPane extends UI.Widget.VBox implements PerfUI.FlameChart.Fl
445
447
  this.overviewCanvas.style.height = height + 'px';
446
448
  }
447
449
  }
450
+
451
+ export const enum OverviewPaneEvents {
452
+ WindowChanged = 'WindowChanged',
453
+ }
454
+
455
+ export interface OverviewPaneWindowChangedEvent {
456
+ windowTimeLeft: number;
457
+ windowTimeRight: number;
458
+ }
459
+
460
+ export type OVerviewPaneEventTypes = {
461
+ [OverviewPaneEvents.WindowChanged]: OverviewPaneWindowChangedEvent,
462
+ };
@@ -14,8 +14,8 @@ import type * as Protocol from '../../generated/protocol.js';
14
14
 
15
15
  import {ProfileFlameChartDataProvider} from './CPUProfileFlameChart.js';
16
16
 
17
- import type {Samples} from './HeapTimelineOverview.js';
18
- import {HeapTimelineOverview, IdsRangeChanged} from './HeapTimelineOverview.js';
17
+ import type {Samples, IdsRangeChangedEvent} from './HeapTimelineOverview.js';
18
+ import {Events, HeapTimelineOverview} from './HeapTimelineOverview.js';
19
19
  import type {Formatter, ProfileDataGridNode} from './ProfileDataGrid.js';
20
20
  import type {ProfileHeader} from './ProfileHeader.js';
21
21
  import {ProfileType, ProfileEvents} from './ProfileHeader.js';
@@ -155,7 +155,7 @@ export class HeapProfileView extends ProfileView implements UI.SearchableView.Se
155
155
  this.timelineOverview = new HeapTimelineOverview();
156
156
 
157
157
  if (Root.Runtime.experiments.isEnabled('samplingHeapProfilerTimeline')) {
158
- this.timelineOverview.addEventListener(IdsRangeChanged, this.onIdsRangeChanged.bind(this));
158
+ this.timelineOverview.addEventListener(Events.IdsRangeChanged, this.onIdsRangeChanged.bind(this));
159
159
  this.timelineOverview.show(this.element, this.element.firstChild);
160
160
  this.timelineOverview.start();
161
161
 
@@ -172,9 +172,8 @@ export class HeapProfileView extends ProfileView implements UI.SearchableView.Se
172
172
  return [...await super.toolbarItems(), this.selectedSizeText];
173
173
  }
174
174
 
175
- onIdsRangeChanged(event: Common.EventTarget.EventTargetEvent): void {
176
- const minId = (event.data.minId as number);
177
- const maxId = (event.data.maxId as number);
175
+ onIdsRangeChanged(event: Common.EventTarget.EventTargetEvent<IdsRangeChangedEvent>): void {
176
+ const {minId, maxId} = event.data;
178
177
  this.selectedSizeText.setText(
179
178
  i18nString(UIStrings.selectedSizeS, {PH1: Platform.NumberUtilities.bytesToString(event.data.size)}));
180
179
  this.setSelectionRange(minId, maxId);
@@ -49,7 +49,8 @@ import type {AllocationGridNode, HeapSnapshotGridNode} from './HeapSnapshotGridN
49
49
  import {HeapSnapshotGenericObjectNode} from './HeapSnapshotGridNodes.js';
50
50
  import type {HeapSnapshotProxy} from './HeapSnapshotProxy.js';
51
51
  import {HeapSnapshotWorkerProxy} from './HeapSnapshotProxy.js';
52
- import {HeapTimelineOverview, IdsRangeChanged, Samples} from './HeapTimelineOverview.js';
52
+ import type {IdsRangeChangedEvent} from './HeapTimelineOverview.js';
53
+ import {HeapTimelineOverview, Events, Samples} from './HeapTimelineOverview.js';
53
54
  import * as ModuleUIStrings from './ModuleUIStrings.js';
54
55
  import type {DataDisplayDelegate} from './ProfileHeader.js';
55
56
  import {Events as ProfileHeaderEvents, ProfileEvents as ProfileTypeEvents, ProfileHeader, ProfileType} from './ProfileHeader.js';
@@ -441,7 +442,7 @@ export class HeapSnapshotView extends UI.View.SimpleView implements DataDisplayD
441
442
  createOverview(): void {
442
443
  const profileType = this.profile.profileType();
443
444
  this.trackingOverviewGrid = new HeapTimelineOverview();
444
- this.trackingOverviewGrid.addEventListener(IdsRangeChanged, this.onIdsRangeChanged.bind(this));
445
+ this.trackingOverviewGrid.addEventListener(Events.IdsRangeChanged, this.onIdsRangeChanged.bind(this));
445
446
  if (!this.profile.fromFile() && profileType.profileBeingRecorded() === this.profile) {
446
447
  profileType.addEventListener(TrackingHeapSnapshotProfileType.HeapStatsUpdate, this.onHeapStatsUpdate, this);
447
448
  profileType.addEventListener(TrackingHeapSnapshotProfileType.TrackingStopped, this.onStopTracking, this);
@@ -550,9 +551,8 @@ export class HeapSnapshotView extends UI.View.SimpleView implements DataDisplayD
550
551
  return statistics;
551
552
  }
552
553
 
553
- onIdsRangeChanged(event: Common.EventTarget.EventTargetEvent): void {
554
- const minId = event.data.minId;
555
- const maxId = event.data.maxId;
554
+ onIdsRangeChanged(event: Common.EventTarget.EventTargetEvent<IdsRangeChangedEvent>): void {
555
+ const {minId, maxId} = event.data;
556
556
  this.selectedSizeText.setText(
557
557
  i18nString(UIStrings.selectedSizeS, {PH1: Platform.NumberUtilities.bytesToString(event.data.size)}));
558
558
  if (this.constructorsDataGrid.snapshot) {
@@ -988,7 +988,7 @@ export class HeapSnapshotView extends UI.View.SimpleView implements DataDisplayD
988
988
  }
989
989
  this.onStopTracking();
990
990
  if (this.trackingOverviewGrid) {
991
- this.trackingOverviewGrid.removeEventListener(IdsRangeChanged, this.onIdsRangeChanged.bind(this));
991
+ this.trackingOverviewGrid.removeEventListener(Events.IdsRangeChanged, this.onIdsRangeChanged.bind(this));
992
992
  }
993
993
  }
994
994
  }
@@ -2,12 +2,14 @@
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 Common from '../../core/common/common.js';
5
6
  import * as i18n from '../../core/i18n/i18n.js';
6
7
  import * as Platform from '../../core/platform/platform.js';
7
8
  import * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
8
9
  import * as UI from '../../ui/legacy/legacy.js';
9
10
 
10
- export class HeapTimelineOverview extends UI.Widget.VBox {
11
+ export class HeapTimelineOverview extends Common.ObjectWrapper.eventMixin<EventTypes, typeof UI.Widget.VBox>(
12
+ UI.Widget.VBox) {
11
13
  readonly overviewCalculator: OverviewCalculator;
12
14
  overviewContainer: HTMLElement;
13
15
  overviewGrid: PerfUI.OverviewGrid.OverviewGrid;
@@ -246,11 +248,23 @@ export class HeapTimelineOverview extends UI.Widget.VBox {
246
248
  const minId = minIndex > 0 ? ids[minIndex - 1] : 0;
247
249
  const maxId = maxIndex < ids.length ? ids[maxIndex] : Infinity;
248
250
 
249
- this.dispatchEventToListeners(IdsRangeChanged, {minId, maxId, size});
251
+ this.dispatchEventToListeners(Events.IdsRangeChanged, {minId, maxId, size});
250
252
  }
251
253
  }
252
254
 
253
- export const IdsRangeChanged = Symbol('IdsRangeChanged');
255
+ export const enum Events {
256
+ IdsRangeChanged = 'IdsRangeChanged',
257
+ }
258
+
259
+ export interface IdsRangeChangedEvent {
260
+ minId: number;
261
+ maxId: number;
262
+ size: number;
263
+ }
264
+
265
+ export type EventTypes = {
266
+ [Events.IdsRangeChanged]: IdsRangeChangedEvent,
267
+ };
254
268
 
255
269
  export class SmoothScale {
256
270
  lastUpdate: number;