chrome-devtools-frontend 1.0.1606789 → 1.0.1608868

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 (75) hide show
  1. package/docs/ui_engineering.md +2 -0
  2. package/eslint.config.mjs +2 -0
  3. package/front_end/core/common/VersionController.ts +18 -1
  4. package/front_end/core/host/UserMetrics.ts +0 -2
  5. package/front_end/core/platform/node/HostRuntime.ts +1 -1
  6. package/front_end/core/root/ExperimentNames.ts +0 -2
  7. package/front_end/core/sdk/AccessibilityModel.ts +13 -1
  8. package/front_end/core/sdk/ServiceWorkerCacheModel.ts +0 -13
  9. package/front_end/core/sdk/StorageBucketsModel.ts +0 -12
  10. package/front_end/entrypoints/main/MainImpl.ts +2 -11
  11. package/front_end/generated/InspectorBackendCommands.ts +3 -33
  12. package/front_end/generated/SupportedCSSProperties.js +8 -4
  13. package/front_end/generated/protocol-mapping.d.ts +7 -26
  14. package/front_end/generated/protocol-proxy-api.d.ts +5 -24
  15. package/front_end/generated/protocol.ts +2 -296
  16. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +2 -2
  17. package/front_end/models/ai_assistance/agents/BreakpointDebuggerAgent.ts +1 -1
  18. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +6 -6
  19. package/front_end/models/ai_assistance/agents/ConversationSummaryAgent.ts +2 -1
  20. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +46 -21
  21. package/front_end/{panels/profiler → models/heap_snapshot_model}/ChildrenProvider.ts +3 -4
  22. package/front_end/{panels/profiler → models/heap_snapshot_model}/HeapSnapshotProxy.ts +19 -36
  23. package/front_end/models/heap_snapshot_model/heap_snapshot_model.ts +4 -0
  24. package/front_end/models/javascript_metadata/NativeFunctions.js +0 -4
  25. package/front_end/panels/accessibility/AccessibilitySidebarView.ts +53 -10
  26. package/front_end/panels/accessibility/accessibility.ts +0 -2
  27. package/front_end/panels/accessibility/accessibilitySidebarView.css +10 -0
  28. package/front_end/panels/ai_assistance/components/ChatMessage.ts +6 -5
  29. package/front_end/panels/ai_assistance/components/WalkthroughView.ts +36 -17
  30. package/front_end/panels/ai_assistance/components/chatMessage.css +7 -0
  31. package/front_end/panels/ai_assistance/components/walkthroughView.css +39 -11
  32. package/front_end/panels/application/CrashReportContextView.ts +237 -0
  33. package/front_end/panels/application/IndexedDBModel.ts +0 -10
  34. package/front_end/panels/application/InterestGroupStorageModel.ts +0 -11
  35. package/front_end/panels/application/ReportingApiTreeElement.ts +40 -1
  36. package/front_end/panels/application/SharedStorageModel.ts +0 -11
  37. package/front_end/panels/application/WebMCPView.ts +389 -52
  38. package/front_end/panels/application/application.ts +4 -0
  39. package/front_end/panels/application/components/CrashReportContextGrid.ts +154 -0
  40. package/front_end/panels/application/components/components.ts +2 -0
  41. package/front_end/panels/application/webMCPView.css +107 -10
  42. package/front_end/panels/common/AiCodeCompletionDisclaimer.ts +12 -2
  43. package/front_end/panels/elements/AccessibilityTreeView.ts +10 -6
  44. package/front_end/panels/elements/ElementsPanel.ts +9 -50
  45. package/front_end/panels/elements/StylePropertiesSection.ts +1 -1
  46. package/front_end/panels/elements/elements-meta.ts +1 -0
  47. package/front_end/panels/elements/elementsPanel.css +4 -14
  48. package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +23 -13
  49. package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +30 -30
  50. package/front_end/panels/profiler/HeapSnapshotView.ts +16 -13
  51. package/front_end/panels/profiler/profiler.ts +0 -4
  52. package/front_end/panels/snippets/SnippetsQuickOpen.ts +5 -5
  53. package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +2 -2
  54. package/front_end/panels/sources/sources-meta.ts +7 -7
  55. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +1 -3
  56. package/front_end/panels/timeline/ThirdPartyTreeView.ts +6 -1
  57. package/front_end/panels/timeline/ThreadAppender.ts +1 -3
  58. package/front_end/panels/timeline/TimelineController.ts +2 -2
  59. package/front_end/panels/timeline/TimelinePanel.ts +2 -4
  60. package/front_end/panels/timeline/TimelineTreeView.ts +32 -2
  61. package/front_end/panels/timeline/components/LiveMetricsView.ts +75 -54
  62. package/front_end/panels/timeline/components/timelineRangeSummaryView.css +8 -0
  63. package/front_end/panels/timeline/thirdPartyTreeView.css +0 -1
  64. package/front_end/panels/timeline/timeline-meta.ts +13 -0
  65. package/front_end/third_party/chromium/README.chromium +1 -1
  66. package/front_end/ui/legacy/TabbedPane.ts +3 -1
  67. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +3 -3
  68. package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +2 -5
  69. package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +4 -4
  70. package/front_end/ui/legacy/components/quick_open/QuickOpen.ts +5 -1
  71. package/front_end/ui/legacy/components/utils/Linkifier.ts +2 -1
  72. package/front_end/ui/legacy/components/utils/imagePreview.css +1 -1
  73. package/front_end/ui/visual_logging/KnownContextValues.ts +2 -3
  74. package/package.json +1 -1
  75. package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +0 -653
@@ -1,8 +1,6 @@
1
1
  // Copyright 2024 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-imperative-dom-api */
5
- /* eslint-disable @devtools/no-lit-render-outside-of-view */
6
4
 
7
5
  import '../../../ui/components/settings/settings.js';
8
6
  import '../../../ui/kit/kit.js';
@@ -22,7 +20,6 @@ import * as LiveMetrics from '../../../models/live-metrics/live-metrics.js';
22
20
  import * as Trace from '../../../models/trace/trace.js';
23
21
  import * as Buttons from '../../../ui/components/buttons/buttons.js';
24
22
  import type * as Menus from '../../../ui/components/menus/menus.js';
25
- import * as RenderCoordinator from '../../../ui/components/render_coordinator/render_coordinator.js';
26
23
  import type * as Settings from '../../../ui/components/settings/settings.js';
27
24
  import * as uiI18n from '../../../ui/i18n/i18n.js';
28
25
  import * as UI from '../../../ui/legacy/legacy.js';
@@ -37,8 +34,8 @@ import type {MetricCardData} from './MetricCard.js';
37
34
  import metricValueStyles from './metricValueStyles.css.js';
38
35
  import {CLS_THRESHOLDS, INP_THRESHOLDS, renderMetricValue} from './Utils.js';
39
36
 
40
- const {html, nothing} = Lit;
41
- const {widget, widgetRef} = UI.Widget;
37
+ const {html, nothing, Directives: {live}} = Lit;
38
+ const {widget} = UI.Widget;
42
39
 
43
40
  type DeviceOption = CrUXManager.DeviceScope|'AUTO';
44
41
 
@@ -967,15 +964,10 @@ function renderLogSection(input: ViewInput, output: ViewOutput): Lit.LitTemplate
967
964
  class="logs-section"
968
965
  aria-label=${i18nString(UIStrings.eventLogs)}
969
966
  >
970
- <devtools-widget ${widget(LiveMetricsLogs)}
971
- ${widgetRef(LiveMetricsLogs, widget => {
972
- if (input.highlightedInteractionId) {
973
- widget.selectTab('interactions');
974
- } else if (input.highlightedLayoutShiftClusterIds?.size) {
975
- widget.selectTab('layout-shifts');
976
- }
977
- })}
978
- >
967
+ <devtools-widget ${widget(LiveMetricsLogs, {
968
+ selectedTab: input.highlightedInteractionId ? 'interactions'
969
+ : input.highlightedLayoutShiftClusterIds?.size ? 'layout-shifts'
970
+ : undefined})}>
979
971
  ${renderInteractionsLog(input, output)}
980
972
  ${renderLayoutShiftsLog(input, output)}
981
973
  </devtools-widget>
@@ -1000,7 +992,7 @@ function renderNodeView(input: ViewInput): Lit.LitTemplate {
1000
992
 
1001
993
  export const DEFAULT_VIEW: View = (input, output, target) => {
1002
994
  if (input.isNode) {
1003
- Lit.render(renderNodeView(input), target, {host: input});
995
+ Lit.render(renderNodeView(input), target);
1004
996
  return;
1005
997
  }
1006
998
 
@@ -1061,12 +1053,13 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
1061
1053
  </div>
1062
1054
  </div>
1063
1055
  `;
1064
- Lit.render(outputTemplate, target, {host: input});
1056
+ // clang-format on
1057
+ Lit.render(outputTemplate, target);
1065
1058
 
1066
1059
  if (input.highlightedInteractionId) {
1067
1060
  const interactionEl = target.querySelector<HTMLElement>('#' + CSS.escape(input.highlightedInteractionId));
1068
1061
  if (interactionEl) {
1069
- void RenderCoordinator.write(() => {
1062
+ requestAnimationFrame(() => {
1070
1063
  interactionEl.scrollIntoView({
1071
1064
  block: 'center',
1072
1065
  });
@@ -1086,7 +1079,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
1086
1079
  }
1087
1080
 
1088
1081
  if (layoutShiftEls.length) {
1089
- void RenderCoordinator.write(() => {
1082
+ requestAnimationFrame(() => {
1090
1083
  layoutShiftEls[0].scrollIntoView({
1091
1084
  block: 'start',
1092
1085
  });
@@ -1262,20 +1255,61 @@ export class LiveMetricsView extends UI.Widget.Widget {
1262
1255
  }
1263
1256
  }
1264
1257
 
1258
+ interface LiveMetricsLogsViewInput {
1259
+ onClear: () => void;
1260
+ selectedTab?: string;
1261
+ onTabSelected: (tabId: string) => void;
1262
+ }
1263
+
1264
+ type LiveMetricsLogsView = (input: LiveMetricsLogsViewInput, output: undefined, target: HTMLElement) => void;
1265
+
1266
+ const LIVE_METRICS_LOGS_VIEW: LiveMetricsLogsView = (input, output, target) => {
1267
+ // clang-format off
1268
+ Lit.render(html`
1269
+ <style>
1270
+ /* Any children of the root element will be matched to the slots defined within the container
1271
+ widget's shadow DOM. */
1272
+ :host,
1273
+ .widget {
1274
+ display: contents;
1275
+ }
1276
+ </style>
1277
+ <devtools-tabbed-pane @select=${(event: Event) => input.onTabSelected((event as CustomEvent).detail.tabId)}>
1278
+ <devtools-toolbar slot="right">
1279
+ <devtools-button .iconName=${'clear'} .variant=${Buttons.Button.Variant.TOOLBAR}
1280
+ title=${i18nString(UIStrings.clearCurrentLog)} @click=${input.onClear}
1281
+ .jslogContext=${'timeline.landing.clear-log'}>
1282
+ </devtools-button>
1283
+ </devtools-toolbar>
1284
+ <!-- Taking advantage of web component slots allows us to render updates in the lit templates defined in the
1285
+ main component. This should be more performant and doesn't require us to inject live metrics styles twice. -->
1286
+ <slot name="interactions-log-content" id="interactions" ?selected=${live(input.selectedTab === 'interactions')}
1287
+ title=${i18nString(UIStrings.interactions)} jslogcontext="timeline.landing.interactions-log">
1288
+ </slot>
1289
+ <slot name="layout-shifts-log-content" id="layout-shifts" ?selected=${live(input.selectedTab === 'layout-shifts')}
1290
+ title=${i18nString(UIStrings.layoutShifts)} jslogcontext="timeline.landing.layout-shifts-log">
1291
+ </slot>
1292
+ </devtools-tabbed-pane>
1293
+ `, target);
1294
+ // clang-format on
1295
+ };
1296
+
1265
1297
  class LiveMetricsLogs extends UI.Widget.Widget {
1266
- #tabbedPane: UI.TabbedPane.TabbedPane;
1298
+ #view: LiveMetricsLogsView;
1299
+ #selectedTab = 'interactions';
1267
1300
 
1268
- /**
1269
- * Returns `true` if selecting the tab was successful.
1270
- */
1271
- selectTab(tabId: string): boolean {
1272
- return this.#tabbedPane.selectTab(tabId);
1301
+ set selectedTab(tabId: string|undefined) {
1302
+ if (!tabId || this.#selectedTab === tabId) {
1303
+ return;
1304
+ }
1305
+ this.#selectedTab = tabId;
1306
+ this.requestUpdate();
1273
1307
  }
1274
1308
 
1275
1309
  #clearCurrentLog(): void {
1276
1310
  const liveMetrics = LiveMetrics.LiveMetrics.instance();
1277
1311
 
1278
- switch (this.#tabbedPane.selectedTabId) {
1312
+ switch (this.#selectedTab) {
1279
1313
  case 'interactions':
1280
1314
  liveMetrics.clearInteractions();
1281
1315
  break;
@@ -1284,35 +1318,22 @@ class LiveMetricsLogs extends UI.Widget.Widget {
1284
1318
  break;
1285
1319
  }
1286
1320
  }
1287
- constructor(element: HTMLElement) {
1321
+ constructor(element: HTMLElement, view: LiveMetricsLogsView = LIVE_METRICS_LOGS_VIEW) {
1288
1322
  super(element, {useShadowDom: true});
1289
- this.element.style.display = 'contents';
1290
- // Any children of the root element `this` will be matched to the slots defined within the container
1291
- // widget's shadow DOM.
1292
- this.contentElement.style.display = 'contents';
1293
-
1294
- this.#tabbedPane = new UI.TabbedPane.TabbedPane();
1295
-
1296
- // Taking advantage of web component slots allows us to render updates in the lit templates defined in the
1297
- // main component. This should be more performant and doesn't require us to inject live metrics styles twice.
1298
- const interactionsSlot = document.createElement('slot');
1299
- interactionsSlot.name = 'interactions-log-content';
1300
- const interactionsTab = UI.Widget.Widget.getOrCreateWidget(interactionsSlot);
1301
- this.#tabbedPane.appendTab(
1302
- 'interactions', i18nString(UIStrings.interactions), interactionsTab, undefined, undefined, undefined, undefined,
1303
- undefined, 'timeline.landing.interactions-log');
1304
-
1305
- const layoutShiftsSlot = document.createElement('slot');
1306
- layoutShiftsSlot.name = 'layout-shifts-log-content';
1307
- const layoutShiftsTab = UI.Widget.Widget.getOrCreateWidget(layoutShiftsSlot);
1308
- this.#tabbedPane.appendTab(
1309
- 'layout-shifts', i18nString(UIStrings.layoutShifts), layoutShiftsTab, undefined, undefined, undefined,
1310
- undefined, undefined, 'timeline.landing.layout-shifts-log');
1311
-
1312
- const clearButton = new UI.Toolbar.ToolbarButton(
1313
- i18nString(UIStrings.clearCurrentLog), 'clear', undefined, 'timeline.landing.clear-log');
1314
- clearButton.addEventListener(UI.Toolbar.ToolbarButton.Events.CLICK, this.#clearCurrentLog, this);
1315
- this.#tabbedPane.rightToolbar().appendToolbarItem(clearButton);
1316
- this.#tabbedPane.show(this.contentElement);
1323
+ this.#view = view;
1324
+
1325
+ this.requestUpdate();
1326
+ }
1327
+
1328
+ override performUpdate(): void {
1329
+ const viewInput: LiveMetricsLogsViewInput = {
1330
+ onClear: this.#clearCurrentLog.bind(this),
1331
+ selectedTab: this.#selectedTab,
1332
+ onTabSelected: (tabId: string) => {
1333
+ this.selectedTab = tabId;
1334
+ },
1335
+ };
1336
+
1337
+ this.#view(viewInput, undefined, this.contentElement);
1317
1338
  }
1318
1339
  }
@@ -16,6 +16,10 @@
16
16
  height: 100%;
17
17
  }
18
18
 
19
+ .timeline-tree-view {
20
+ border-left: var(--sys-size-1) solid var(--sys-color-divider);
21
+ }
22
+
19
23
  @container (max-width: 450px) {
20
24
  .timeline-details-range-summary {
21
25
  display: grid;
@@ -27,6 +31,10 @@
27
31
  .timeline-summary {
28
32
  width: 100%;
29
33
  }
34
+
35
+ .timeline-tree-view {
36
+ border-left: none;
37
+ }
30
38
  }
31
39
 
32
40
  .timeline-summary {
@@ -82,7 +82,6 @@
82
82
  max-width: min(100%, 550px);
83
83
  min-width: 350px; /* Lower than this, there's not enough room for the entity name */
84
84
  padding: 0 0 0 var(--sys-size-6);
85
- border-left: var(--sys-size-1) solid var(--sys-color-divider);
86
85
  }
87
86
 
88
87
  .has-max-rows {
@@ -62,6 +62,10 @@ const UIStrings = {
62
62
  * @description Title of a setting under the Performance category in Settings
63
63
  */
64
64
  chromeFrameInLayersView: 'Chrome frame in Layers view',
65
+ /**
66
+ * @description Title of a setting under the Performance category in Settings
67
+ */
68
+ timelineShowAllEvents: 'Show all events',
65
69
  } as const;
66
70
  const str_ = i18n.i18n.registerUIStrings('panels/timeline/timeline-meta.ts', UIStrings);
67
71
  const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
@@ -314,6 +318,15 @@ Common.Settings.registerSettingExtension({
314
318
  defaultValue: true,
315
319
  });
316
320
 
321
+ Common.Settings.registerSettingExtension({
322
+ category: Common.Settings.SettingCategory.PERFORMANCE,
323
+ storageType: Common.Settings.SettingStorageType.SYNCED,
324
+ title: i18nLazyString(UIStrings.timelineShowAllEvents),
325
+ settingName: 'timeline-show-all-events',
326
+ settingType: Common.Settings.SettingType.BOOLEAN,
327
+ defaultValue: false,
328
+ });
329
+
317
330
  // IMPORTANT: if you are updating this, you should also update the setting in
318
331
  // js_timeline-meta.
319
332
  Common.Settings.registerSettingExtension({
@@ -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: ed66cb5e93e6205f5231c1dcfac9b91b2aa4ffd6
4
+ Revision: f6aa8926592f9b5bd54bf4b6430d3abb4bc480f6
5
5
  Update Mechanism: Manual (https://crbug.com/428069060)
6
6
  License: BSD-3-Clause
7
7
  License File: LICENSE
@@ -900,7 +900,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
900
900
  // Perform measurement
901
901
  for (const [measuringTabElement, tab] of measuringTabElements) {
902
902
  const width = measuringTabElement.getBoundingClientRect().width;
903
- tab.measuredWidth = Math.ceil(width);
903
+ tab.measuredWidth = Math.ceil(width) || undefined; // Don't cache 0
904
904
  }
905
905
 
906
906
  // Nuke elements from the UI
@@ -1670,6 +1670,7 @@ export class TabbedPaneElement extends WidgetElement<TabbedPane> {
1670
1670
  child.removeAttribute('selected');
1671
1671
  }
1672
1672
  }
1673
+ this.dispatchEvent(new CustomEvent('select', {detail: {tabId: widget.selectedTabId}}));
1673
1674
  });
1674
1675
  this.#syncTabs(widget);
1675
1676
  return widget;
@@ -1716,6 +1717,7 @@ export class TabbedPaneElement extends WidgetElement<TabbedPane> {
1716
1717
  view.setHideOnDetach();
1717
1718
  if (widget.selectedTabId !== id) {
1718
1719
  view.hideWidget();
1720
+ child.classList.add('hidden');
1719
1721
  } else {
1720
1722
  view.showWidget();
1721
1723
  }
@@ -273,8 +273,8 @@ export const enum PanelOrDrawer {
273
273
  export class CommandMenuProvider extends Provider {
274
274
  private commands: Command[];
275
275
 
276
- constructor(jslogContext: string, commandsForTest: Command[] = []) {
277
- super(jslogContext);
276
+ constructor(commandsForTest: Command[] = []) {
277
+ super();
278
278
  this.commands = commandsForTest;
279
279
  }
280
280
 
@@ -453,7 +453,7 @@ export class ShowActionDelegate implements UI.ActionRegistration.ActionDelegate
453
453
  registerProvider({
454
454
  prefix: '>',
455
455
  iconName: 'chevron-right',
456
- provider: (jslogContext: string) => Promise.resolve(new CommandMenuProvider(jslogContext)),
456
+ provider: () => Promise.resolve(new CommandMenuProvider()),
457
457
  helpTitle: () => i18nString(UIStrings.runCommand),
458
458
  titlePrefix: () => i18nString(UIStrings.run),
459
459
  titleSuggestion: () => i18nString(UIStrings.command),
@@ -590,10 +590,7 @@ export interface EventTypes {
590
590
 
591
591
  export class Provider {
592
592
  private refreshCallback!: () => void;
593
- jslogContext: string;
594
- constructor(jslogContext: string) {
595
- this.jslogContext = jslogContext;
596
- }
593
+ jslogContext = '';
597
594
 
598
595
  setRefreshCallback(refreshCallback: () => void): void {
599
596
  this.refreshCallback = refreshCallback;
@@ -657,7 +654,7 @@ export function getRegisteredProviders(): ProviderRegistration[] {
657
654
  export interface ProviderRegistration {
658
655
  prefix: string;
659
656
  iconName: string;
660
- provider: (jslogContext: string) => Promise<Provider>;
657
+ provider: () => Promise<Provider>;
661
658
  helpTitle: (() => string);
662
659
  titlePrefix: (() => string);
663
660
  titleSuggestion?: (() => string);
@@ -17,8 +17,8 @@ export class HelpQuickOpen extends Provider {
17
17
  jslogContext: string,
18
18
  }>;
19
19
 
20
- constructor(jslogContext: string) {
21
- super(jslogContext);
20
+ constructor() {
21
+ super();
22
22
  this.providers = [];
23
23
  getRegisteredProviders().forEach(this.addProvider.bind(this));
24
24
  }
@@ -74,8 +74,8 @@ export class HelpQuickOpen extends Provider {
74
74
  registerProvider({
75
75
  prefix: '?',
76
76
  iconName: 'help',
77
- provider: jslogContext => Promise.resolve(new HelpQuickOpen(jslogContext)),
77
+ provider: () => Promise.resolve(new HelpQuickOpen()),
78
78
  helpTitle: () => 'Help',
79
79
  titlePrefix: () => 'Help',
80
- jslogContext: 'help'
80
+ jslogContext: 'help',
81
81
  });
@@ -54,7 +54,11 @@ export class QuickOpenImpl {
54
54
  }
55
55
  this.prefixes.push(prefix);
56
56
  this.providers.set(prefix, {
57
- provider: () => extension.provider(extension.jslogContext),
57
+ provider: async () => {
58
+ const provider = await extension.provider();
59
+ provider.jslogContext = extension.jslogContext;
60
+ return provider;
61
+ },
58
62
  titlePrefix: extension.titlePrefix,
59
63
  titleSuggestion: extension.titleSuggestion,
60
64
  });
@@ -611,7 +611,8 @@ export class Linkifier extends Common.ObjectWrapper.ObjectWrapper<EventTypes> im
611
611
  jslogContext: options.jslogContext || 'url',
612
612
  lineNumber,
613
613
  columnNumber,
614
- userMetric: options?.userMetric
614
+ userMetric: options?.userMetric,
615
+ onRef: options.onRef,
615
616
  };
616
617
  return Linkifier.renderLink(linkText, className, linkOptions);
617
618
  }
@@ -12,7 +12,7 @@
12
12
 
13
13
  .image-preview-container img {
14
14
  margin: 6px 0;
15
- max-width: 100px;
15
+ width: auto;
16
16
  max-height: 100px;
17
17
  background-image: var(--image-file-checker);
18
18
  user-select: text;
@@ -1013,6 +1013,7 @@ export const knownContextValues = new Set([
1013
1013
  'copy-full-xpath',
1014
1014
  'copy-initiator-url',
1015
1015
  'copy-js-path',
1016
+ 'copy-key',
1016
1017
  'copy-link-address',
1017
1018
  'copy-object',
1018
1019
  'copy-outer-html',
@@ -1089,6 +1090,7 @@ export const knownContextValues = new Set([
1089
1090
  'cpu-throttling',
1090
1091
  'cpu-throttling-selector',
1091
1092
  'cpu-throttling-selector-calibrate',
1093
+ 'crash-report-context',
1092
1094
  'create-new-snippet',
1093
1095
  'create-profile',
1094
1096
  'create-recording',
@@ -1768,9 +1770,6 @@ export const knownContextValues = new Set([
1768
1770
  'freestyler.settings',
1769
1771
  'freestyler.style-tab-context',
1770
1772
  'full-accessibility',
1771
- 'full-accessibility-tree',
1772
- 'full-accessibility-tree-documentation',
1773
- 'full-accessibility-tree-feedback',
1774
1773
  'full-version',
1775
1774
  'function',
1776
1775
  'galaxy-z-fold-5',
package/package.json CHANGED
@@ -105,5 +105,5 @@
105
105
  "flat-cache": "6.1.12"
106
106
  }
107
107
  },
108
- "version": "1.0.1606789"
108
+ "version": "1.0.1608868"
109
109
  }