chrome-devtools-frontend 1.0.1672557 → 1.0.1675430

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 (177) hide show
  1. package/.agents/skills/devtools-ux-writing-refactor/SKILL.md +26 -9
  2. package/front_end/core/common/ParsedURL.ts +5 -1
  3. package/front_end/core/common/SettingRegistration.ts +30 -34
  4. package/front_end/core/common/Settings.ts +4 -64
  5. package/front_end/core/host/UserMetrics.ts +127 -117
  6. package/front_end/core/protocol_client/PuppeteerDevToolsConnection.ts +42 -9
  7. package/front_end/core/root/Runtime.ts +14 -0
  8. package/front_end/core/sdk/NetworkManager.ts +0 -35
  9. package/front_end/core/sdk/SourceMap.ts +1 -19
  10. package/front_end/core/sdk/SourceMapManager.ts +75 -48
  11. package/front_end/core/sdk/SourceMapScopesInfo.ts +0 -62
  12. package/front_end/core/sdk/TargetManager.ts +18 -0
  13. package/front_end/devtools_compatibility.js +1 -1
  14. package/front_end/entrypoints/main/MainImpl.ts +1 -0
  15. package/front_end/foundation/Universe.ts +44 -29
  16. package/front_end/generated/InspectorBackendCommands.ts +4 -3
  17. package/front_end/generated/SupportedCSSProperties.ts +16 -1
  18. package/front_end/generated/protocol-mapping.d.ts +8 -0
  19. package/front_end/generated/protocol-proxy-api.d.ts +6 -0
  20. package/front_end/generated/protocol.ts +16 -2
  21. package/front_end/models/ai_assistance/AiSetting.ts +66 -3
  22. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +15 -5
  23. package/front_end/models/bindings/CompilerScriptMapping.ts +1 -1
  24. package/front_end/models/emulation/DeviceModeModel.ts +82 -102
  25. package/front_end/models/emulation/EmulatedDevices.ts +18 -66
  26. package/front_end/models/javascript_metadata/NativeFunctions.js +4 -4
  27. package/front_end/models/persistence/AutomaticFileSystemManager.ts +2 -2
  28. package/front_end/models/persistence/IsolatedFileSystemManager.ts +20 -29
  29. package/front_end/models/trace/ModelImpl.ts +5 -0
  30. package/front_end/models/trace/Processor.ts +5 -0
  31. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +7 -1
  32. package/front_end/models/trace/handlers/MetaHandler.ts +8 -4
  33. package/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +11 -0
  34. package/front_end/models/workspace/FileManager.ts +13 -6
  35. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +11 -10
  36. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +3 -45
  37. package/front_end/panels/application/BackgroundServiceView.ts +42 -40
  38. package/front_end/panels/application/KeyValueStorageItemsView.ts +1 -0
  39. package/front_end/panels/application/WebMCPView.ts +13 -5
  40. package/front_end/panels/application/components/AdsView.ts +24 -1
  41. package/front_end/panels/application/components/adsView.css +27 -21
  42. package/front_end/panels/autofill/AutofillView.ts +12 -12
  43. package/front_end/panels/autofill/autofill-meta.ts +2 -2
  44. package/front_end/panels/common/ExtensionServer.ts +7 -1
  45. package/front_end/panels/common/common.ts +0 -1
  46. package/front_end/panels/console/ConsoleInsightTeaser.ts +7 -6
  47. package/front_end/panels/console/ConsoleViewMessage.ts +1 -1
  48. package/front_end/panels/elements/ClassesPaneWidget.ts +2 -2
  49. package/front_end/panels/elements/ElementsTreeElement.ts +602 -327
  50. package/front_end/panels/elements/ElementsTreeOutline.ts +1 -1
  51. package/front_end/panels/elements/StylesSidebarPane.ts +1 -1
  52. package/front_end/panels/elements/components/AdornerManager.ts +1 -0
  53. package/front_end/panels/emulation/AdvancedApp.ts +3 -3
  54. package/front_end/panels/emulation/DeviceModeToolbar.ts +2 -11
  55. package/front_end/panels/emulation/DeviceModeView.ts +234 -75
  56. package/front_end/panels/emulation/InspectedPagePlaceholder.ts +1 -1
  57. package/front_end/panels/emulation/deviceModeView.css +4 -21
  58. package/front_end/panels/emulation/emulation-meta.ts +4 -30
  59. package/front_end/panels/emulation/emulation.ts +0 -3
  60. package/front_end/panels/explain/components/ConsoleInsight.ts +11 -7
  61. package/front_end/panels/js_timeline/js_timeline-meta.ts +8 -8
  62. package/front_end/panels/layer_viewer/LayerDetailsView.ts +30 -30
  63. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +6 -6
  64. package/front_end/panels/layer_viewer/LayerViewHost.ts +1 -1
  65. package/front_end/panels/layer_viewer/Layers3DView.ts +11 -11
  66. package/front_end/panels/layer_viewer/PaintProfilerView.ts +8 -8
  67. package/front_end/panels/layer_viewer/TransformController.ts +3 -3
  68. package/front_end/panels/layer_viewer/layer_viewer-meta.ts +11 -11
  69. package/front_end/panels/layers/LayersPanel.ts +2 -2
  70. package/front_end/panels/layers/layers-meta.ts +2 -2
  71. package/front_end/panels/lighthouse/LighthouseController.ts +3 -7
  72. package/front_end/panels/mobile_throttling/CPUThrottlingSelector.ts +313 -0
  73. package/front_end/panels/mobile_throttling/NetworkPanelIndicator.ts +0 -10
  74. package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +21 -10
  75. package/front_end/panels/mobile_throttling/ThrottlingManager.ts +1 -58
  76. package/front_end/panels/mobile_throttling/mobile_throttling.ts +2 -9
  77. package/front_end/panels/network/NetworkConfigView.ts +1 -71
  78. package/front_end/panels/network/networkConfigView.css +1 -2
  79. package/front_end/panels/profiler/HeapDetachedElementsDataGrid.ts +3 -3
  80. package/front_end/panels/profiler/HeapDetachedElementsView.ts +5 -5
  81. package/front_end/panels/profiler/HeapProfileView.ts +32 -32
  82. package/front_end/panels/profiler/HeapProfilerPanel.ts +2 -2
  83. package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +33 -37
  84. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +26 -27
  85. package/front_end/panels/profiler/HeapSnapshotView.ts +48 -48
  86. package/front_end/panels/profiler/IsolateSelector.ts +10 -10
  87. package/front_end/panels/profiler/ModuleUIStrings.ts +25 -25
  88. package/front_end/panels/profiler/ProfileLauncherView.ts +6 -6
  89. package/front_end/panels/profiler/ProfilesPanel.ts +6 -6
  90. package/front_end/panels/profiler/WritableProfileHeader.ts +6 -6
  91. package/front_end/panels/profiler/profiler-meta.ts +7 -7
  92. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +7 -0
  93. package/front_end/panels/recorder/RecorderPanel.ts +1 -1
  94. package/front_end/panels/settings/AISettingsTab.ts +27 -23
  95. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +1 -2
  96. package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +12 -17
  97. package/front_end/panels/timeline/TimelinePanel.ts +20 -35
  98. package/front_end/panels/timeline/components/LiveMetricsView.ts +27 -6
  99. package/front_end/panels/timeline/components/NetworkTrackWidget.ts +1 -1
  100. package/front_end/panels/timeline/components/components.ts +0 -4
  101. package/front_end/panels/timeline/components/liveMetricsView.css +7 -0
  102. package/front_end/third_party/chromium/README.chromium +1 -1
  103. package/front_end/third_party/source-map-scopes-codec/package/CONTRIBUTING.md +0 -0
  104. package/front_end/third_party/source-map-scopes-codec/package/LICENSE +0 -0
  105. package/front_end/third_party/source-map-scopes-codec/package/README.md +0 -0
  106. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/builder.d.ts +0 -0
  107. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/builder.d.ts.map +1 -1
  108. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/safe_builder.d.ts +0 -0
  109. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/builder/safe_builder.d.ts.map +0 -0
  110. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/decode/decode.d.ts +0 -0
  111. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/decode/decode.d.ts.map +0 -0
  112. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/encode/encode.d.ts +0 -0
  113. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/encode/encode.d.ts.map +0 -0
  114. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/mod.d.ts +0 -0
  115. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/mod.d.ts.map +0 -0
  116. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/scopes.d.ts +0 -0
  117. package/front_end/third_party/source-map-scopes-codec/package/_dist/src/scopes.d.ts.map +0 -0
  118. package/front_end/third_party/source-map-scopes-codec/package/deno.json +1 -1
  119. package/front_end/third_party/source-map-scopes-codec/package/package.json +1 -1
  120. package/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +2 -0
  121. package/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js.map +1 -1
  122. package/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.ts +2 -0
  123. package/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +0 -0
  124. package/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js.map +0 -0
  125. package/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.ts +0 -0
  126. package/front_end/third_party/source-map-scopes-codec/package/src/codec.js +0 -0
  127. package/front_end/third_party/source-map-scopes-codec/package/src/codec.js.map +0 -0
  128. package/front_end/third_party/source-map-scopes-codec/package/src/codec.ts +0 -0
  129. package/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +0 -0
  130. package/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js.map +0 -0
  131. package/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.ts +0 -0
  132. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +0 -0
  133. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js.map +0 -0
  134. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.ts +0 -0
  135. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +0 -0
  136. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js.map +0 -0
  137. package/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.ts +0 -0
  138. package/front_end/third_party/source-map-scopes-codec/package/src/mod.js +0 -0
  139. package/front_end/third_party/source-map-scopes-codec/package/src/mod.js.map +0 -0
  140. package/front_end/third_party/source-map-scopes-codec/package/src/mod.ts +0 -0
  141. package/front_end/third_party/source-map-scopes-codec/package/src/scopes.js +0 -0
  142. package/front_end/third_party/source-map-scopes-codec/package/src/scopes.js.map +0 -0
  143. package/front_end/third_party/source-map-scopes-codec/package/src/scopes.ts +0 -0
  144. package/front_end/third_party/source-map-scopes-codec/package/src/util.js +0 -0
  145. package/front_end/third_party/source-map-scopes-codec/package/src/util.js.map +0 -0
  146. package/front_end/third_party/source-map-scopes-codec/package/src/util.ts +0 -0
  147. package/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +0 -0
  148. package/front_end/third_party/source-map-scopes-codec/package/src/vlq.js.map +0 -0
  149. package/front_end/third_party/source-map-scopes-codec/package/src/vlq.ts +0 -0
  150. package/front_end/ui/comments/CommentAnchorResolver.ts +132 -0
  151. package/front_end/ui/comments/comments.ts +9 -0
  152. package/front_end/ui/components/dialogs/ShortcutDialog.ts +2 -0
  153. package/front_end/ui/components/settings/SettingCheckbox.ts +4 -12
  154. package/front_end/ui/components/settings/settingCheckbox.css +0 -7
  155. package/front_end/ui/legacy/Treeoutline.ts +14 -14
  156. package/front_end/ui/legacy/UIUtils.ts +2 -47
  157. package/front_end/ui/legacy/Widget.ts +10 -2
  158. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +40 -0
  159. package/front_end/ui/legacy/components/settings_ui/SettingsUI.ts +1 -1
  160. package/front_end/ui/legacy/components/utils/Linkifier.ts +1 -0
  161. package/front_end/ui/lit/Directives.ts +80 -0
  162. package/front_end/ui/lit/lit.ts +1 -0
  163. package/front_end/ui/lit/render.ts +8 -0
  164. package/front_end/ui/settings/SettingUIRegistration.ts +4 -0
  165. package/front_end/ui/visual_logging/Debugging.ts +1 -5
  166. package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
  167. package/front_end/ui/visual_logging/LoggingConfig.ts +21 -0
  168. package/front_end/ui/visual_logging/visual_logging.ts +9 -0
  169. package/mcp/mcp.ts +1 -0
  170. package/package.json +1 -1
  171. package/front_end/panels/common/ThrottlingUtils.ts +0 -51
  172. package/front_end/panels/emulation/DeviceModeWrapper.ts +0 -248
  173. package/front_end/panels/mobile_throttling/MobileThrottlingSelector.ts +0 -92
  174. package/front_end/panels/timeline/components/CPUThrottlingSelector.ts +0 -235
  175. package/front_end/panels/timeline/components/NetworkThrottlingSelector.ts +0 -245
  176. package/front_end/panels/timeline/components/cpuThrottlingSelector.css +0 -30
  177. package/front_end/panels/timeline/components/networkThrottlingSelector.css +0 -24
@@ -5,6 +5,7 @@
5
5
  import '../../ui/legacy/legacy.js';
6
6
  import '../../ui/legacy/components/data_grid/data_grid.js';
7
7
 
8
+ import * as Common from '../../core/common/common.js';
8
9
  import * as i18n from '../../core/i18n/i18n.js';
9
10
  import * as Platform from '../../core/platform/platform.js';
10
11
  import * as ProtocolClient from '../../core/protocol_client/protocol_client.js';
@@ -24,6 +25,7 @@ import protocolMonitorStyles from './protocolMonitor.css.js';
24
25
 
25
26
  const {styleMap} = Directives;
26
27
  const {widget, widgetRef} = UI.Widget;
28
+
27
29
  const UIStrings = {
28
30
  /**
29
31
  * @description Table column header in the Protocol monitor data grid that displays the CDP method name (for example, Page.navigate or Network.enable).
@@ -180,6 +182,7 @@ export interface ViewInput {
180
182
  onTargetChange: (targetId: string) => void;
181
183
  onToggleSidebar: () => void;
182
184
  onEditorSubmit: (command: string, parameters: Record<string, unknown>, targetId?: string) => void;
185
+ columnsVisibilitySetting: Common.Settings.Setting<Record<string, {visible: boolean}>>;
183
186
  targets: SDK.Target.Target[];
184
187
  selectedTargetId: string;
185
188
  }
@@ -239,6 +242,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
239
242
  <devtools-data-grid
240
243
  striped
241
244
  slot="main"
245
+ .columnsVisibilitySetting=${input.columnsVisibilitySetting}
242
246
  .filters=${input.parseFilter(input.filter)}>
243
247
  <table>
244
248
  <tr>
@@ -372,6 +376,8 @@ export class ProtocolMonitorImpl extends UI.Panel.Panel implements SDK.TargetMan
372
376
  #filter = '';
373
377
  #editorWidget!: JSONEditor;
374
378
  #targetsBySessionId = new Map<string, SDK.Target.Target>();
379
+ #columnsVisibilitySetting = Common.Settings.Settings.instance().createSetting<Record<string, {visible: boolean}>>(
380
+ 'protocol-monitor-columns', {});
375
381
  constructor(view: View = DEFAULT_VIEW) {
376
382
  super('protocol-monitor', true);
377
383
  this.#view = view;
@@ -469,6 +475,7 @@ export class ProtocolMonitorImpl extends UI.Panel.Panel implements SDK.TargetMan
469
475
  onEditorSubmit: (command: string, parameters: Record<string, unknown>, targetId?: string) => {
470
476
  this.onCommandSend(command, parameters, targetId);
471
477
  },
478
+ columnsVisibilitySetting: this.#columnsVisibilitySetting,
472
479
  targets: SDK.TargetManager.TargetManager.instance().targets(),
473
480
  selectedTargetId: this.#selectedTargetId,
474
481
  };
@@ -1248,7 +1248,7 @@ export class RecorderPanel extends UI.Widget.VBox<DocumentFragment> {
1248
1248
  }
1249
1249
  } catch {
1250
1250
  // in the hosted mode, when the DeviceMode toolbar is not supported,
1251
- // Emulation.DeviceModeWrapper.DeviceModeWrapper.instance throws an exception.
1251
+ // Emulation.DeviceModeView.DeviceModeView.instance throws an exception.
1252
1252
  }
1253
1253
  }
1254
1254
 
@@ -250,7 +250,8 @@ interface SettingItem {
250
250
 
251
251
  interface AiSettingParams {
252
252
  settingName: Platform.UIString.LocalizedString;
253
- setting?: Common.Settings.Setting<boolean>;
253
+ setting?: Common.Settings.Setting<boolean>|AiAssistanceModel.AiSetting.AiSetting<boolean>;
254
+ disabledReasons?: Platform.UIString.LocalizedString[];
254
255
  iconName: string;
255
256
  settingDescription: Platform.UIString.LocalizedString;
256
257
  enableSettingText: Common.UIString.LocalizedString;
@@ -320,6 +321,9 @@ export const AI_SETTINGS_TAB_DEFAULT_VIEW: View = (input, _output, target): void
320
321
  open: settingData.settingExpandState.isSettingExpanded,
321
322
  };
322
323
  const tabindex = settingData.settingExpandState.isSettingExpanded ? '0' : '-1';
324
+ const isSettingDisabled = isDisabled ||
325
+ Boolean(settingData.disabledReasons?.length) ||
326
+ (settingData.setting instanceof AiAssistanceModel.AiSetting.AiSetting && settingData.setting.disabled);
323
327
  return html`
324
328
  <div class="accordion-header" @click=${input.expandSetting.bind(this, settingName)}>
325
329
  <div class="icon-container centered">
@@ -350,9 +354,9 @@ export const AI_SETTINGS_TAB_DEFAULT_VIEW: View = (input, _output, target): void
350
354
  @click=${settingData.setting ? input.toggleSetting.bind(this, settingName) : nothing}
351
355
  >
352
356
  <devtools-switch
353
- .checked=${isChecked && !isDisabled}
357
+ .checked=${isChecked && !isSettingDisabled}
354
358
  .jslogContext=${settingName}
355
- .disabled=${isDisabled || !settingData.setting}
359
+ .disabled=${isSettingDisabled || !settingData.setting}
356
360
  .label=${disabledReasonsJoined || settingData.enableSettingText}
357
361
  data-testid=${settingData.enableSettingText}
358
362
  @switchchange=${settingData.setting ? input.toggleSetting.bind(this, settingName) : nothing}
@@ -398,9 +402,9 @@ export const AI_SETTINGS_TAB_DEFAULT_VIEW: View = (input, _output, target): void
398
402
 
399
403
  export class AISettingsTab extends UI.Widget.VBox {
400
404
  #view: View;
401
- #consoleInsightsSetting?: Common.Settings.Setting<boolean>;
405
+ #consoleInsightsSetting: AiAssistanceModel.AiSetting.AiSetting<boolean>;
402
406
  #aiAnnotationsSetting?: Common.Settings.Setting<boolean>;
403
- #aiAssistanceSetting?: Common.Settings.Setting<boolean>;
407
+ #aiAssistanceSetting: AiAssistanceModel.AiSetting.AiSetting<boolean>;
404
408
  #aiCodeCompletionSetting?: Common.Settings.Setting<boolean>;
405
409
  #aidaAvailability = Host.AidaClient.AidaAccessPreconditions.NO_ACCOUNT_EMAIL;
406
410
  #boundOnAidaAvailabilityChange:
@@ -411,17 +415,16 @@ export class AISettingsTab extends UI.Widget.VBox {
411
415
 
412
416
  constructor(view?: View) {
413
417
  super();
414
- try {
415
- this.#consoleInsightsSetting =
416
- Common.Settings.Settings.instance().moduleSetting<boolean>('console-insights-enabled');
417
- } catch {
418
- this.#consoleInsightsSetting = undefined;
419
- }
420
- try {
421
- this.#aiAssistanceSetting = Common.Settings.Settings.instance().moduleSetting<boolean>('ai-assistance-enabled');
422
- } catch {
423
- this.#aiAssistanceSetting = undefined;
424
- }
418
+ this.#consoleInsightsSetting = new AiAssistanceModel.AiSetting.AiSetting(
419
+ AiAssistanceModel.AiUtils.consoleInsightsEnabledSettingDescriptor,
420
+ Host.AidaClient.HostConfigTracker.instance(),
421
+ Common.Settings.Settings.instance(),
422
+ );
423
+ this.#aiAssistanceSetting = new AiAssistanceModel.AiSetting.AiSetting(
424
+ AiAssistanceModel.AiUtils.aiAssistanceEnabledSettingDescriptor,
425
+ Host.AidaClient.HostConfigTracker.instance(),
426
+ Common.Settings.Settings.instance(),
427
+ );
425
428
 
426
429
  if (Root.Runtime.hostConfig.devToolsAiGeneratedTimelineLabels?.enabled) {
427
430
  // Get an existing setting or, if it does not exist, create a new one.
@@ -481,11 +484,10 @@ export class AISettingsTab extends UI.Widget.VBox {
481
484
  Platform.assertNever(precondition, `Unknown precondition: ${precondition}`);
482
485
  }
483
486
  }
484
- const availability =
485
- AiAssistanceModel.AiUtils.aiAssistanceEnabledSettingDescriptor.isAvailable(Root.Runtime.hostConfig);
486
- const settingDisabledReasons = availability.status === Common.Settings.SettingAvailability.DISABLED ?
487
- this.#mapSettingDisabledReasons(availability.reason) :
488
- [];
487
+ const settingDisabledReasons = Array.from(new Set([
488
+ ...this.#mapSettingDisabledReasons(this.#consoleInsightsSetting.disabledReasons),
489
+ ...this.#mapSettingDisabledReasons(this.#aiAssistanceSetting.disabledReasons),
490
+ ]));
489
491
  return [...mappedReasons, ...settingDisabledReasons];
490
492
  }
491
493
 
@@ -522,10 +524,11 @@ export class AISettingsTab extends UI.Widget.VBox {
522
524
  const noLogging = Root.Runtime.hostConfig.aidaAvailability?.enterprisePolicyValue ===
523
525
  Root.Runtime.GenAiEnterprisePolicyValue.ALLOW_WITHOUT_LOGGING;
524
526
 
525
- if (this.#consoleInsightsSetting) {
527
+ if (!this.#consoleInsightsSetting.unavailable) {
526
528
  const consoleInsightsData: AiSettingParams = {
527
529
  settingName: i18n.i18n.lockedString('Console Insights'),
528
530
  setting: this.#consoleInsightsSetting,
531
+ disabledReasons: this.#mapSettingDisabledReasons(this.#consoleInsightsSetting.disabledReasons),
529
532
  iconName: 'lightbulb-spark',
530
533
  settingDescription: i18nString(UIStrings.helpUnderstandConsole),
531
534
  enableSettingText: i18nString(UIStrings.enableConsoleInsights),
@@ -551,11 +554,12 @@ export class AISettingsTab extends UI.Widget.VBox {
551
554
  this.#settingToParams.set('console-insights-enabled', consoleInsightsData);
552
555
  }
553
556
 
554
- if (this.#aiAssistanceSetting) {
557
+ if (!this.#aiAssistanceSetting.unavailable) {
555
558
  const aiAssistanceData: AiSettingParams = {
556
559
  settingName: i18n.i18n.lockedString(AiAssistanceModel.AiUtils.isGeminiBranding() ? 'Gemini in Chrome DevTools' :
557
560
  'AI assistance'),
558
561
  setting: this.#aiAssistanceSetting,
562
+ disabledReasons: this.#mapSettingDisabledReasons(this.#aiAssistanceSetting.disabledReasons),
559
563
  iconName: AiAssistanceModel.AiUtils.getIconName(),
560
564
  settingDescription: this.#getAiAssistanceSettingDescription(),
561
565
  enableSettingText: i18nString(UIStrings.enableAiAssistance),
@@ -438,7 +438,6 @@ export class DevicesSettingsTab extends UI.Widget.VBox implements
438
438
  title: '',
439
439
  orientation: EmulationModel.EmulatedDevices.Vertical,
440
440
  insets: new EmulationModel.DeviceModeModel.Insets(0, 0, 0, 0),
441
- image: null,
442
441
  };
443
442
  const safeAreaInsets = this.safeAreaInsetsFromEditor(editor);
444
443
  if (safeAreaInsets) {
@@ -453,7 +452,7 @@ export class DevicesSettingsTab extends UI.Widget.VBox implements
453
452
  title: '',
454
453
  orientation: EmulationModel.EmulatedDevices.Horizontal,
455
454
  insets: new EmulationModel.DeviceModeModel.Insets(0, 0, 0, 0),
456
- image: null,
455
+
457
456
  };
458
457
  const landscapeSafeAreaInsets = this.safeAreaInsetsFromEditor(editor, 'landscape-');
459
458
  if (landscapeSafeAreaInsets) {
@@ -1,7 +1,6 @@
1
1
  // Copyright 2016 The Chromium Authors
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
- /* eslint-disable @devtools/no-lit-render-outside-of-view */
5
4
 
6
5
  import type * as Common from '../../core/common/common.js';
7
6
  import * as i18n from '../../core/i18n/i18n.js';
@@ -11,12 +10,11 @@ import * as Trace from '../../models/trace/trace.js';
11
10
  import * as PerfUI from '../../ui/legacy/components/perf_ui/perf_ui.js';
12
11
  import * as UI from '../../ui/legacy/legacy.js';
13
12
  import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
14
- import {html, render} from '../../ui/lit/lit.js';
13
+ import * as Lit from '../../ui/lit/lit.js';
15
14
 
16
15
  import * as TimelineComponents from './components/components.js';
17
16
  import {initiatorsDataToDrawForNetwork} from './Initiators.js';
18
17
  import {NetworkTrackAppender, type NetworkTrackEvent} from './NetworkTrackAppender.js';
19
- import timelineFlamechartPopoverStyles from './timelineFlamechartPopover.css.js';
20
18
  import {FlameChartStyle, Selection} from './TimelineFlameChartView.js';
21
19
  import {
22
20
  selectionFromEvent,
@@ -26,6 +24,8 @@ import {
26
24
  } from './TimelineSelection.js';
27
25
  import {buildPersistedConfig} from './TrackConfiguration.js';
28
26
 
27
+ const {html} = Lit;
28
+
29
29
  export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.FlameChartDataProvider {
30
30
  #minimumBoundary = 0;
31
31
  #timeSpan = 0;
@@ -396,23 +396,18 @@ export class TimelineFlameChartNetworkDataProvider implements PerfUI.FlameChart.
396
396
  return this.#networkTrackAppender?.webSocketIdToLevel.has(levelIndex) || false;
397
397
  }
398
398
 
399
- preparePopoverElement(index: number): Element|null {
399
+ preparePopoverElement(index: number): Lit.TemplateResult|null {
400
400
  const event = this.#events[index];
401
-
402
- if (Trace.Types.Events.isSyntheticNetworkRequest(event)) {
403
- const element = document.createElement('div');
404
- const root = UI.UIUtils.createShadowRootWithCoreStyles(element, {cssFile: timelineFlamechartPopoverStyles});
405
- // clang-format off
406
- render(html`
407
- <div class="timeline-flamechart-popover">
408
- ${TimelineComponents.NetworkRequestTooltip.NetworkRequestTooltip.createWidgetElement(
409
- event, this.#entityMapper || undefined)}
410
- </div>`, root);
411
- // clang-format on
412
- return element;
401
+ if (!event || !Trace.Types.Events.isSyntheticNetworkRequest(event)) {
402
+ return null;
413
403
  }
414
404
 
415
- return null;
405
+ return html`
406
+ <div class="timeline-flamechart-popover">
407
+ ${
408
+ TimelineComponents.NetworkRequestTooltip.NetworkRequestTooltip.createWidgetElement(
409
+ event, this.#entityMapper || undefined)}
410
+ </div>`;
416
411
  }
417
412
 
418
413
  /**
@@ -46,7 +46,6 @@ import * as TextUtils from '../../core/text_utils/text_utils.js';
46
46
  import * as Protocol from '../../generated/protocol.js';
47
47
  import * as AiAssistanceModel from '../../models/ai_assistance/ai_assistance.js';
48
48
  import * as Badges from '../../models/badges/badges.js';
49
- import * as CrUXManager from '../../models/crux-manager/crux-manager.js';
50
49
  import * as Trace from '../../models/trace/trace.js';
51
50
  import * as SourceMapsResolver from '../../models/trace_source_maps_resolver/trace_source_maps_resolver.js';
52
51
  import * as Workspace from '../../models/workspace/workspace.js';
@@ -60,7 +59,6 @@ import * as SettingsUI from '../../ui/legacy/components/settings_ui/settings_ui.
60
59
  import * as UI from '../../ui/legacy/legacy.js';
61
60
  import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
62
61
  import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
63
- import * as PanelsCommon from '../common/common.js';
64
62
  import * as MobileThrottling from '../mobile_throttling/mobile_throttling.js';
65
63
 
66
64
  import {ActiveFilters} from './ActiveFilters.js';
@@ -163,10 +161,6 @@ const UIStrings = {
163
161
  * @description Text in Timeline Panel of the Performance panel
164
162
  */
165
163
  cpu: 'CPU:',
166
- /**
167
- * @description Title of the 'Network conditions' tool in the bottom drawer
168
- */
169
- networkConditions: 'Network conditions',
170
164
  /**
171
165
  * @description Text in Timeline Panel of the Performance panel
172
166
  */
@@ -439,8 +433,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
439
433
  private loader?: TimelineLoader;
440
434
  private showScreenshotsToolbarCheckbox?: UI.Toolbar.ToolbarItem;
441
435
  private showMemoryToolbarCheckbox?: UI.Toolbar.ToolbarItem;
442
- private networkThrottlingSelect?: MobileThrottling.NetworkThrottlingSelector.NetworkThrottlingSelect;
443
- private cpuThrottlingSelect?: MobileThrottling.ThrottlingManager.CPUThrottlingSelectorWrapper;
436
+ private cpuThrottlingSelect?: MobileThrottling.CPUThrottlingSelector.CPUThrottlingSelector;
444
437
  private fileSelectorElement?: HTMLInputElement;
445
438
  private selection: TimelineSelection|null = null;
446
439
  private traceLoadStart!: Trace.Types.Timing.Milli|null;
@@ -553,6 +546,9 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
553
546
 
554
547
  this.#thirdPartyTracksSetting = TimelinePanel.extensionDataVisibilitySetting();
555
548
  this.#thirdPartyTracksSetting.addChangeListener(this.#extensionDataVisibilityChanged, this);
549
+ Common.Settings.Settings.instance()
550
+ .moduleSetting('timeline-enable-soft-navigations')
551
+ .addChangeListener(this.#onModelConfigurationChanged, this);
556
552
 
557
553
  const timelineToolbarContainer = this.element.createChild('div', 'timeline-toolbar-container');
558
554
  timelineToolbarContainer.setAttribute('jslog', `${VisualLogging.toolbar()}`);
@@ -763,14 +759,21 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
763
759
  timelinePanelInstance = undefined;
764
760
  }
765
761
 
766
- #instantiateNewModel(): Trace.TraceModel.Model {
762
+ #getModelConfig(): Trace.Types.Configuration.Configuration {
767
763
  const config = Trace.Types.Configuration.defaults();
768
764
  config.showAllEvents = Common.Settings.Settings.instance().moduleSetting('timeline-show-all-events').get();
769
765
  config.debugMode = Common.Settings.Settings.instance().moduleSetting('timeline-debug-mode').get() as boolean;
770
766
  config.enableSoftNavigation =
771
767
  Common.Settings.Settings.instance().moduleSetting('timeline-enable-soft-navigations').get() as boolean;
768
+ return config;
769
+ }
772
770
 
773
- const traceEngineModel = Trace.TraceModel.Model.createWithAllHandlers(config);
771
+ #onModelConfigurationChanged(): void {
772
+ this.#traceEngineModel.updateConfiguration(this.#getModelConfig());
773
+ }
774
+
775
+ #instantiateNewModel(): Trace.TraceModel.Model {
776
+ const traceEngineModel = Trace.TraceModel.Model.createWithAllHandlers(this.#getModelConfig());
774
777
 
775
778
  traceEngineModel.addEventListener(Trace.TraceModel.ModelUpdateEvent.eventName, e => {
776
779
  const updateEvent = e as Trace.TraceModel.ModelUpdateEvent;
@@ -806,26 +809,12 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
806
809
  // Record the performance tool load time.
807
810
  UI.UIUserMetrics.UIUserMetrics.instance().panelLoaded('timeline', 'DevTools.Launch.Timeline');
808
811
 
809
- const cruxManager = CrUXManager.CrUXManager.instance();
810
- cruxManager.addEventListener(CrUXManager.Events.FIELD_DATA_CHANGED, this.#onFieldDataChanged, this);
811
- this.#onFieldDataChanged();
812
812
  }
813
813
 
814
814
  override willHide(): void {
815
815
  super.willHide();
816
816
  UI.Context.Context.instance().setFlavor(TimelinePanel, null);
817
817
  this.#historyManager.cancelIfShowing();
818
-
819
- const cruxManager = CrUXManager.CrUXManager.instance();
820
- cruxManager.removeEventListener(CrUXManager.Events.FIELD_DATA_CHANGED, this.#onFieldDataChanged, this);
821
- }
822
-
823
- #onFieldDataChanged(): void {
824
- const recs = PanelsCommon.ThrottlingUtils.getThrottlingRecommendations();
825
- this.cpuThrottlingSelect?.updateRecommendedOption(recs.cpuOption);
826
- if (this.networkThrottlingSelect) {
827
- this.networkThrottlingSelect.recommendedConditions = recs.networkConditions;
828
- }
829
818
  }
830
819
 
831
820
  loadFromEvents(events: Trace.Types.Events.Event[]): void {
@@ -1333,8 +1322,8 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1333
1322
 
1334
1323
  const cpuThrottlingPane = this.settingsPane.createChild('div');
1335
1324
  cpuThrottlingPane.append(i18nString(UIStrings.cpu));
1336
- this.cpuThrottlingSelect = MobileThrottling.ThrottlingManager.throttlingManager().createCPUThrottlingSelector();
1337
- cpuThrottlingPane.append(this.cpuThrottlingSelect.control.element);
1325
+ this.cpuThrottlingSelect =
1326
+ MobileThrottling.CPUThrottlingSelector.CPUThrottlingSelector.createForGlobalConditions(cpuThrottlingPane);
1338
1327
 
1339
1328
  this.settingsPane.append(SettingsUI.SettingsUI.createSettingCheckbox(
1340
1329
  this.captureSelectorStatsSetting.title(), this.captureSelectorStatsSetting,
@@ -1342,7 +1331,10 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1342
1331
 
1343
1332
  const networkThrottlingPane = this.settingsPane.createChild('div');
1344
1333
  networkThrottlingPane.append(i18nString(UIStrings.network));
1345
- networkThrottlingPane.append(this.createNetworkConditionsSelectToolbarItem().element);
1334
+ MobileThrottling.NetworkThrottlingSelector.NetworkThrottlingSelect.createForGlobalConditions(
1335
+ networkThrottlingPane,
1336
+ i18nString(UIStrings.network),
1337
+ );
1346
1338
 
1347
1339
  this.settingsPane.append(SettingsUI.SettingsUI.createSettingCheckbox(
1348
1340
  this.captureLayersAndPicturesSetting.title(), this.captureLayersAndPicturesSetting,
@@ -1393,14 +1385,6 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
1393
1385
  this.updateSettingsPaneVisibility();
1394
1386
  }
1395
1387
 
1396
- private createNetworkConditionsSelectToolbarItem(): UI.Toolbar.ToolbarItem {
1397
- const toolbarItem = new UI.Toolbar.ToolbarItem(document.createElement('div'));
1398
- this.networkThrottlingSelect =
1399
- MobileThrottling.NetworkThrottlingSelector.NetworkThrottlingSelect.createForGlobalConditions(
1400
- toolbarItem.element, i18nString(UIStrings.networkConditions));
1401
- return toolbarItem;
1402
- }
1403
-
1404
1388
  private prepareToLoadTimeline(): void {
1405
1389
  console.assert(this.state === State.IDLE);
1406
1390
  this.setState(State.LOADING);
@@ -2908,6 +2892,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
2908
2892
  };
2909
2893
  }
2910
2894
 
2895
+ this.#traceEngineModel.updateConfiguration(this.#getModelConfig());
2911
2896
  await this.#traceEngineModel.parse(collectedEvents, config);
2912
2897
 
2913
2898
  // Store all source maps on the trace metadata.
@@ -5,7 +5,6 @@
5
5
  import '../../../ui/components/settings/settings.js';
6
6
  import '../../../ui/kit/kit.js';
7
7
  import './FieldSettingsDialog.js';
8
- import './NetworkThrottlingSelector.js';
9
8
  import '../../../ui/components/menus/menus.js';
10
9
  import './MetricCard.js';
11
10
 
@@ -27,8 +26,8 @@ import * as UI from '../../../ui/legacy/legacy.js';
27
26
  import * as Lit from '../../../ui/lit/lit.js';
28
27
  import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
29
28
  import * as PanelsCommon from '../../common/common.js';
29
+ import * as MobileThrottling from '../../mobile_throttling/mobile_throttling.js';
30
30
 
31
- import {CPUThrottlingSelector} from './CPUThrottlingSelector.js';
32
31
  import {md} from './insights/Helpers.js';
33
32
  import liveMetricsViewStyles from './liveMetricsView.css.js';
34
33
  import type {MetricCardData} from './MetricCard.js';
@@ -186,6 +185,10 @@ const UIStrings = {
186
185
  * @description Text label for a checkbox that controls if the network cache is disabled.
187
186
  */
188
187
  disableNetworkCache: 'Disable network cache',
188
+ /**
189
+ * @description Text label for a selection box showing which CPU throttling option is applied.
190
+ */
191
+ cpuThrottling: 'CPU:',
189
192
  /**
190
193
  * @description Text label for a link to the Largest Contentful Paint (LCP) related page element. This element represents the largest content on the page. "LCP" should not be translated.
191
194
  */
@@ -300,6 +303,14 @@ const UIStrings = {
300
303
  * @description Description of a view that can be used to analyze the performance of a Node process as a timeline. "Node" is a product name and should not be translated.
301
304
  */
302
305
  nodeClickToRecord: 'Record a performance timeline of the connected Node process.',
306
+ /**
307
+ * @description Text in Timeline Panel of the Performance panel for network throttling
308
+ */
309
+ networkThrottling: 'Network:',
310
+ /**
311
+ * @description Text for why user should change a throttling setting.
312
+ */
313
+ recommendedThrottlingReason: 'Consider changing setting to simulate real user environments',
303
314
  } as const;
304
315
 
305
316
  const str_ = i18n.i18n.registerUIStrings('panels/timeline/components/LiveMetricsView.ts', UIStrings);
@@ -619,8 +630,6 @@ function renderRecordingSettings(input: ViewInput): Lit.LitTemplate {
619
630
  const deviceRec = getDeviceRec(input.cruxManager) || i18nString(UIStrings.notEnoughData);
620
631
  const networkRec = getNetworkRecTitle(input.cruxManager) || i18nString(UIStrings.notEnoughData);
621
632
 
622
- const recs = PanelsCommon.ThrottlingUtils.getThrottlingRecommendations();
623
-
624
633
  // clang-format off
625
634
  return html`
626
635
  <h3 class="card-title">${i18nString(UIStrings.environmentSettings)}</h3>
@@ -632,10 +641,22 @@ function renderRecordingSettings(input: ViewInput): Lit.LitTemplate {
632
641
  </ul>
633
642
  ` : nothing}
634
643
  <div class="environment-option">
635
- ${widget(CPUThrottlingSelector, {recommendedOption: recs.cpuOption})}
644
+ <label class="environment-option-label">
645
+ ${i18nString(UIStrings.cpuThrottling)}
646
+ <select ${widget(MobileThrottling.CPUThrottlingSelector.CPUThrottlingSelector)}></select>
647
+ </label>
648
+ <devtools-icon title=${i18nString(UIStrings.recommendedThrottlingReason)} name="info"></devtools-icon>
636
649
  </div>
637
650
  <div class="environment-option">
638
- <devtools-network-throttling-selector .recommendedConditions=${recs.networkConditions}></devtools-network-throttling-selector>
651
+ <label class="environment-option-label">
652
+ ${i18nString(UIStrings.networkThrottling)}
653
+ <select
654
+ ${widget(MobileThrottling.NetworkThrottlingSelector.NetworkThrottlingSelect, {
655
+ bindToGlobalConditions: true,
656
+ })}
657
+ ></select>
658
+ </label>
659
+ <devtools-icon title=${i18nString(UIStrings.recommendedThrottlingReason)} name="info"></devtools-icon>
639
660
  </div>
640
661
  <div class="environment-option">
641
662
  <setting-checkbox
@@ -20,7 +20,7 @@ export interface NetworkDataProvider extends PerfUI.FlameChart.FlameChartDataPro
20
20
  setModel(parsedTrace: Trace.TraceModel.ParsedTrace, entityMapper: Trace.EntityMapper.EntityMapper): void;
21
21
  setWindowTimes(min: number, max: number): void;
22
22
  timelineData(): PerfUI.FlameChart.FlameChartTimelineData;
23
- preparePopoverElement(index: number): Element|null;
23
+ preparePopoverElement(index: number): Lit.TemplateResult|null;
24
24
  }
25
25
 
26
26
  export interface NetworkTrackWidgetData {
@@ -4,7 +4,6 @@
4
4
 
5
5
  import * as Breadcrumbs from './Breadcrumbs.js';
6
6
  import * as BreadcrumbsUI from './BreadcrumbsUI.js';
7
- import * as CPUThrottlingSelector from './CPUThrottlingSelector.js';
8
7
  import * as CWVMetrics from './CWVMetrics.js';
9
8
  import * as DetailsView from './DetailsView.js';
10
9
  import * as ExportTraceOptions from './ExportTraceOptions.js';
@@ -16,7 +15,6 @@ import * as LiveMetricsView from './LiveMetricsView.js';
16
15
  import * as MetricCard from './MetricCard.js';
17
16
  import * as NetworkRequestDetails from './NetworkRequestDetails.js';
18
17
  import * as NetworkRequestTooltip from './NetworkRequestTooltip.js';
19
- import * as NetworkThrottlingSelector from './NetworkThrottlingSelector.js';
20
18
  import * as NetworkTrackWidget from './NetworkTrackWidget.js';
21
19
  import * as OriginMap from './OriginMap.js';
22
20
  import * as RelatedInsightChips from './RelatedInsightChips.js';
@@ -31,7 +29,6 @@ import * as Utils from './Utils.js';
31
29
  export {
32
30
  Breadcrumbs,
33
31
  BreadcrumbsUI,
34
- CPUThrottlingSelector,
35
32
  CWVMetrics,
36
33
  DetailsView,
37
34
  ExportTraceOptions,
@@ -43,7 +40,6 @@ export {
43
40
  MetricCard,
44
41
  NetworkRequestDetails,
45
42
  NetworkRequestTooltip,
46
- NetworkThrottlingSelector,
47
43
  NetworkTrackWidget,
48
44
  OriginMap,
49
45
  RelatedInsightChips,
@@ -313,6 +313,13 @@ devtools-link {
313
313
  display: flex;
314
314
  align-items: center;
315
315
  margin-top: 8px;
316
+ gap: var(--sys-size-2);
317
+ }
318
+
319
+ .environment-option-label {
320
+ display: flex;
321
+ align-items: center;
322
+ gap: var(--sys-size-2);
316
323
  }
317
324
 
318
325
  .environment-recs-list {
@@ -1,7 +1,7 @@
1
1
  Name: Dependencies sourced from the upstream `chromium` repository
2
2
  URL: Internal
3
3
  Version: N/A
4
- Revision: c29529e3eb350cb4dd3a0afc7dff0a37b31c7137
4
+ Revision: cd73d963934f9330aa868dcc05bbce063513294b
5
5
  Update Mechanism: Manual (https://crbug.com/428069060)
6
6
  License: BSD-3-Clause
7
7
  License File: LICENSE
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sources":["../../../src/builder/builder.ts"],"names":[],"mappings":"AAIA,cACE,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,SAAS,uBACW;AAEtB;;;;;;;;;CASC,GACD,OAAO,cAAM;EAWX,gBAAgB,IAAI;EAKpB,WACE,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd;IACE,OAAO,MAAM;IACb,OAAO,MAAM;IACb,eAAe,OAAO;IACtB,YAAY,MAAM;IAClB,MAAM;GACP,GACA,IAAI;EAsBP,aAAa,MAAM,MAAM,GAAG,IAAI;EAMhC,aAAa,MAAM,MAAM,GAAG,IAAI;EAMhC,mBAAmB,cAAc,OAAO,GAAG,IAAI;EAM/C,kBAAkB,WAAW,MAAM,EAAE,GAAG,IAAI;EAO5C,SAAS,MAAM,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;EAgB5C;;GAEC,GACD,gBAAgB,gBAAgB,IAAI;EAIpC;;GAEC,GACD,aAAa,gBAAgB,IAAI;EAIjC;;;GAGC,GACD,WACE,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd;IACE,QAAQ;IACR,WAAW;IACX,eAAe,OAAO;IACtB,WAAW,OAAO;IAClB,SAAS;IACT,WAAW;GACZ,GACA,IAAI;EA6BP,wBAAwB,OAAO,aAAa,GAAG,IAAI;EAMnD,2BAA2B,UAAU,QAAQ,GAAG,IAAI;EAMpD,mBAAmB,cAAc,OAAO,GAAG,IAAI;EAO/C,eAAe,UAAU,OAAO,GAAG,IAAI;EAOvC,eAAe,QAAQ,SAAS,GAAG,IAAI;EAOvC,iBAAiB,UAAU,gBAAgB,GAAG,IAAI;EAOlD,SAAS,MAAM,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;EAe5C,SAAS;EAUT,cAAc,cAAc,cAAc;EAI1C,cAAc,cAAc,cAAc;EAI1C,UAAU,aAAa,OAAO,aAAa,GAAG,OAAO;EAIrD,UAAU,gBAAgB,KAAK,QAAQ,GAAG,OAAO;EAIjD,UAAU,mBAAmB,KAAK,QAAQ,GAAG;AAG/C;AAEA;;;;;CAKC,GACD,YAAY,WAAW,OAAO"}
1
+ {"version":3,"file":"builder.d.ts","sources":["../../../src/builder/builder.ts"],"names":[],"mappings":"AAIA,cACE,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,SAAS,uBACW;AAEtB;;;;;;;;;CASC,GACD,OAAO,cAAM;EAWX,gBAAgB,IAAI;EAKpB,WACE,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd;IACE,OAAO,MAAM;IACb,OAAO,MAAM;IACb,eAAe,OAAO;IACtB,YAAY,MAAM;IAClB,MAAM;GACP,GACA,IAAI;EAsBP,aAAa,MAAM,MAAM,GAAG,IAAI;EAMhC,aAAa,MAAM,MAAM,GAAG,IAAI;EAMhC,mBAAmB,cAAc,OAAO,GAAG,IAAI;EAM/C,kBAAkB,WAAW,MAAM,EAAE,GAAG,IAAI;EAO5C,SAAS,MAAM,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;EAgB5C;;GAEC,GACD,gBAAgB,gBAAgB,IAAI;EAIpC;;GAEC,GACD,aAAa,gBAAgB,IAAI;EAIjC;;;GAGC,GACD,WACE,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd;IACE,QAAQ;IACR,WAAW;IACX,eAAe,OAAO;IACtB,WAAW,OAAO;IAClB,SAAS;IACT,WAAW;GACZ,GACA,IAAI;EA6BP,wBAAwB,OAAO,aAAa,GAAG,IAAI;EAMnD,2BAA2B,UAAU,QAAQ,GAAG,IAAI;EAMpD,mBAAmB,cAAc,OAAO,GAAG,IAAI;EAO/C,eAAe,UAAU,OAAO,GAAG,IAAI;EAOvC,eAAe,QAAQ,SAAS,GAAG,IAAI;EAOvC,iBAAiB,UAAU,gBAAgB,GAAG,IAAI;EAOlD,SAAS,MAAM,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI;EAe5C,SAAS;EAYT,cAAc,cAAc,cAAc;EAI1C,cAAc,cAAc,cAAc;EAI1C,UAAU,aAAa,OAAO,aAAa,GAAG,OAAO;EAIrD,UAAU,gBAAgB,KAAK,QAAQ,GAAG,OAAO;EAIjD,UAAU,mBAAmB,KAAK,QAAQ,GAAG;AAG/C;AAEA;;;;;CAKC,GACD,YAAY,WAAW,OAAO"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chrome-devtools/source-map-scopes-codec",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "exports": "./src/mod.ts",
5
5
  "license": "BSD-3-Clause",
6
6
  "fmt": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsr/chrome-devtools__source-map-scopes-codec",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "homepage": "https://jsr.io/@chrome-devtools/source-map-scopes-codec",
5
5
  "type": "module",
6
6
  "dependencies": {},
@@ -175,6 +175,8 @@
175
175
  this.#scopes = [];
176
176
  this.#ranges = [];
177
177
  this.#knownScopes.clear();
178
+ this.#keyToScope.clear();
179
+ this.#lastScope = null;
178
180
  return info;
179
181
  }
180
182
  get scopeStack() {
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sources":["./builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sources":["./builder.ts"],"names":[],"mappings":"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"}