chrome-devtools-frontend 1.0.951410 → 1.0.951864

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 (41) hide show
  1. package/extension-api/ExtensionAPI.d.ts +1 -1
  2. package/front_end/Tests.js +10 -0
  3. package/front_end/core/common/App.ts +0 -3
  4. package/front_end/core/common/AppProvider.ts +0 -3
  5. package/front_end/core/common/JavaScriptMetaData.ts +0 -3
  6. package/front_end/core/common/QueryParamHandler.ts +0 -3
  7. package/front_end/core/common/Runnable.ts +0 -3
  8. package/front_end/core/common/SimpleHistoryManager.ts +0 -3
  9. package/front_end/core/sdk/OverlayPersistentHighlighter.ts +0 -12
  10. package/front_end/core/sdk/TracingManager.ts +0 -3
  11. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +1 -3
  12. package/front_end/models/bindings/CSSWorkspaceBinding.ts +0 -3
  13. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +0 -3
  14. package/front_end/models/bindings/FileUtils.ts +0 -3
  15. package/front_end/models/extensions/ExtensionAPI.ts +2 -1
  16. package/front_end/models/extensions/ExtensionTraceProvider.ts +0 -3
  17. package/front_end/models/timeline_model/TimelineModel.ts +1 -1
  18. package/front_end/panels/console/ConsoleViewMessage.ts +1 -25
  19. package/front_end/panels/console/consoleView.css +5 -0
  20. package/front_end/panels/elements/ElementsTreeElement.ts +2 -6
  21. package/front_end/panels/event_listeners/EventListenersUtils.ts +2 -1
  22. package/front_end/panels/search/SearchConfig.ts +0 -6
  23. package/front_end/panels/settings/KeybindsSettingsTab.ts +4 -0
  24. package/front_end/panels/sources/NavigatorView.ts +3 -9
  25. package/front_end/panels/sources/SourceMapNamesResolver.ts +3 -3
  26. package/front_end/panels/sources/SourcesPanel.ts +1 -3
  27. package/front_end/panels/sources/SourcesView.ts +0 -3
  28. package/front_end/panels/sources/TabbedEditorContainer.ts +0 -3
  29. package/front_end/panels/timeline/TimelineLoader.ts +0 -3
  30. package/front_end/third_party/codemirror.next/bundle.ts +3 -3
  31. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  32. package/front_end/third_party/codemirror.next/chunk/markdown.js +2 -1
  33. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +10 -1
  34. package/front_end/third_party/codemirror.next/codemirror.next.js +2 -1
  35. package/front_end/third_party/codemirror.next/package.json +3 -3
  36. package/front_end/ui/components/text_editor/cursor_tooltip.ts +7 -1
  37. package/front_end/ui/legacy/ContextFlavorListener.ts +0 -4
  38. package/front_end/ui/legacy/SuggestBox.ts +0 -3
  39. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +6 -6
  40. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +0 -3
  41. package/package.json +1 -1
@@ -4,7 +4,7 @@
4
4
 
5
5
  export namespace Chrome {
6
6
  export namespace DevTools {
7
- export interface EventSink<ListenerT extends(...args: any) => any> {
7
+ export interface EventSink<ListenerT extends(...args: any) => void> {
8
8
  addListener(listener: ListenerT): void;
9
9
  }
10
10
 
@@ -1562,6 +1562,16 @@
1562
1562
  return names.join(',');
1563
1563
  };
1564
1564
 
1565
+ TestSuite.prototype.testSourceMapsFromExtension = function(extensionId) {
1566
+ this.takeControl();
1567
+ const debuggerModel = self.SDK.targetManager.mainTarget().model(SDK.DebuggerModel);
1568
+ debuggerModel.sourceMapManager().addEventListener(
1569
+ SDK.SourceMapManager.Events.SourceMapAttached, this.releaseControl.bind(this));
1570
+
1571
+ this.evaluateInConsole_(
1572
+ `console.log(1) //# sourceMappingURL=chrome-extension://${extensionId}/source.map`, () => {});
1573
+ };
1574
+
1565
1575
  /**
1566
1576
  * Returns all loaded non anonymous uiSourceCodes.
1567
1577
  * @return {!Array.<!Workspace.UISourceCode>}
@@ -2,9 +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
- /**
6
- * @interface
7
- */
8
5
  export interface App {
9
6
  presentUI(document: Document): void;
10
7
  }
@@ -6,9 +6,6 @@ import * as Root from '../root/root.js';
6
6
 
7
7
  import type {App} from './App.js';
8
8
 
9
- /**
10
- * @interface
11
- */
12
9
  export interface AppProvider {
13
10
  createApp(): App;
14
11
  }
@@ -2,9 +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
- /**
6
- * @interface
7
- */
8
5
  export interface JavaScriptMetaData {
9
6
  signaturesForNativeFunction(name: string): string[][]|null;
10
7
 
@@ -2,9 +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
- /**
6
- * @interface
7
- */
8
5
  export interface QueryParamHandler {
9
6
  handleQueryParam(value: string): void;
10
7
  }
@@ -2,9 +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
- /**
6
- * @interface
7
- */
8
5
  export interface Runnable {
9
6
  run(): Promise<void>;
10
7
  }
@@ -28,9 +28,6 @@
28
28
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
29
  */
30
30
 
31
- /**
32
- * @interface
33
- */
34
31
  export interface HistoryEntry {
35
32
  valid(): boolean;
36
33
 
@@ -360,15 +360,9 @@ export class OverlayPersistentHighlighter {
360
360
  }
361
361
  }
362
362
 
363
- /**
364
- * @interface
365
- */
366
363
  export interface DOMModel {
367
364
  nodeForId(nodeId: Protocol.DOM.NodeId): void;
368
365
  }
369
- /**
370
- * @interface
371
- */
372
366
  export interface OverlayAgent {
373
367
  // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
374
368
  // eslint-disable-next-line @typescript-eslint/naming-convention
@@ -415,16 +409,10 @@ export interface OverlayAgent {
415
409
  }): void;
416
410
  }
417
411
 
418
- /**
419
- * @interface
420
- */
421
412
  export interface Target {
422
413
  overlayAgent(): OverlayAgent;
423
414
  }
424
415
 
425
- /**
426
- * @interface
427
- */
428
416
  export interface OverlayModel {
429
417
  getDOMModel(): DOMModel;
430
418
 
@@ -94,9 +94,6 @@ export class TracingManager extends SDKModel<void> {
94
94
  }
95
95
  }
96
96
 
97
- /**
98
- * @interface
99
- */
100
97
  export interface TracingManagerClient {
101
98
  traceEventsCollected(events: EventPayload[]): void;
102
99
 
@@ -2280,9 +2280,7 @@ export class HeapSnapshotNodesProvider extends HeapSnapshotItemProvider {
2280
2280
  const ascending1 = comparator.ascending1 ? 1 : -1;
2281
2281
  const ascending2 = comparator.ascending2 ? 1 : -1;
2282
2282
 
2283
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
2284
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
2285
- function sortByNodeField(fieldAccessor: () => any, ascending: number): number {
2283
+ function sortByNodeField(fieldAccessor: () => void, ascending: number): number {
2286
2284
  const valueA = fieldAccessor.call(nodeA);
2287
2285
  const valueB = fieldAccessor.call(nodeB);
2288
2286
  return valueA < valueB ? -ascending : (valueA > valueB ? ascending : 0);
@@ -152,9 +152,6 @@ export class CSSWorkspaceBinding implements SDK.TargetManager.SDKModelObserver<S
152
152
  }
153
153
  }
154
154
 
155
- /**
156
- * @interface
157
- */
158
155
  export interface SourceMapping {
159
156
  rawLocationToUILocation(rawLocation: SDK.CSSModel.CSSLocation): Workspace.UISourceCode.UILocation|null;
160
157
 
@@ -561,9 +561,6 @@ export interface RawLocationRange {
561
561
  end: SDK.DebuggerModel.Location;
562
562
  }
563
563
 
564
- /**
565
- * @interface
566
- */
567
564
  export interface DebuggerSourceMapping {
568
565
  rawLocationToUILocation(rawLocation: SDK.DebuggerModel.Location): Workspace.UISourceCode.UILocation|null;
569
566
 
@@ -31,9 +31,6 @@
31
31
  import type * as Common from '../../core/common/common.js';
32
32
  import * as Workspace from '../workspace/workspace.js';
33
33
 
34
- /**
35
- * @interface
36
- */
37
34
  export interface ChunkedReader {
38
35
  fileSize(): number;
39
36
 
@@ -304,8 +304,9 @@ namespace APIImpl {
304
304
  // We cannot use the stronger `unknown` type in place of `any` in the following type definition. The type is used as
305
305
  // the right-hand side of `extends` in a few places, which doesn't narrow `unknown`. Without narrowing, overload
306
306
  // resolution and meaningful type inference of arguments break, for example.
307
+ // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
307
308
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
308
- export type Callable = (...args: any) => any;
309
+ export type Callable = (...args: any) => void;
309
310
 
310
311
  export interface EventSink<ListenerT extends Callable> extends PublicAPI.Chrome.DevTools.EventSink<ListenerT> {
311
312
  _type: string;
@@ -42,9 +42,6 @@ export class ExtensionTraceProvider {
42
42
  // eslint-disable-next-line @typescript-eslint/naming-convention
43
43
  let _lastSessionId = 0;
44
44
 
45
- /**
46
- * @interface
47
- */
48
45
  export interface TracingSession {
49
46
  complete(url: string, timeOffsetMicroseconds: number): void;
50
47
  }
@@ -122,7 +122,7 @@ export class TimelineModelImpl {
122
122
  static forEachEvent(
123
123
  events: SDK.TracingModel.Event[], onStartEvent: (arg0: SDK.TracingModel.Event) => void,
124
124
  onEndEvent: (arg0: SDK.TracingModel.Event) => void,
125
- onInstantEvent?: ((arg0: SDK.TracingModel.Event, arg1: SDK.TracingModel.Event|null) => any), startTime?: number,
125
+ onInstantEvent?: ((arg0: SDK.TracingModel.Event, arg1: SDK.TracingModel.Event|null) => void), startTime?: number,
126
126
  endTime?: number, filter?: ((arg0: SDK.TracingModel.Event) => boolean)): void {
127
127
  startTime = startTime || 0;
128
128
  endTime = endTime || Infinity;
@@ -49,7 +49,6 @@ import * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
49
49
  import * as ObjectUI from '../../ui/legacy/components/object_ui/object_ui.js';
50
50
  import * as Components from '../../ui/legacy/components/utils/utils.js';
51
51
  import * as UI from '../../ui/legacy/legacy.js';
52
- import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
53
52
  // eslint-disable-next-line rulesdir/es_modules_import
54
53
  import objectValueStyles from '../../ui/legacy/components/object_ui/objectValue.css.js';
55
54
  import type {Chrome} from '../../../extension-api/ExtensionAPI.js'; // eslint-disable-line rulesdir/es_modules_import
@@ -1006,11 +1005,7 @@ export class ConsoleViewMessage implements ConsoleViewportElement {
1006
1005
  wrapper.style.setProperty('max-width', '100%');
1007
1006
  wrapper.appendChild(lineFragment);
1008
1007
  applyCurrentStyle(wrapper);
1009
- for (const child of wrapper.children) {
1010
- if (child.classList.contains('devtools-link') && child instanceof HTMLElement) {
1011
- this.applyForcedVisibleStyle(child);
1012
- }
1013
- }
1008
+
1014
1009
  a.appendChild(wrapper);
1015
1010
  if (i < lines.length - 1) {
1016
1011
  a.appendChild(document.createElement('br'));
@@ -1032,25 +1027,6 @@ export class ConsoleViewMessage implements ConsoleViewportElement {
1032
1027
  return Platform.StringUtilities.format(format, parameters, formatters, formattedResult, append.bind(this));
1033
1028
  }
1034
1029
 
1035
- private applyForcedVisibleStyle(element: HTMLElement): void {
1036
- element.style.setProperty('-webkit-text-stroke', '0', 'important');
1037
- element.style.setProperty('text-decoration', 'underline', 'important');
1038
-
1039
- const themedColor = ThemeSupport.ThemeSupport.instance().patchColorText(
1040
- 'rgb(33%, 33%, 33%)', ThemeSupport.ThemeSupport.ColorUsage.Foreground);
1041
- element.style.setProperty('color', themedColor, 'important');
1042
-
1043
- let backgroundColor = 'hsl(0, 0%, 100%)';
1044
- if (this.message.level === Protocol.Log.LogEntryLevel.Error) {
1045
- backgroundColor = 'hsl(0, 100%, 97%)';
1046
- } else if (this.message.level === Protocol.Log.LogEntryLevel.Warning || this.shouldRenderAsWarning()) {
1047
- backgroundColor = 'hsl(50, 100%, 95%)';
1048
- }
1049
- const themedBackgroundColor = ThemeSupport.ThemeSupport.instance().patchColorText(
1050
- backgroundColor, ThemeSupport.ThemeSupport.ColorUsage.Background);
1051
- element.style.setProperty('background-color', themedBackgroundColor, 'important');
1052
- }
1053
-
1054
1030
  matchesFilterRegex(regexObject: RegExp): boolean {
1055
1031
  regexObject.lastIndex = 0;
1056
1032
  const contentElement = this.contentElement();
@@ -49,6 +49,7 @@
49
49
  --override-focused-message-background-color: hsl(214deg 19% 20%);
50
50
  --override-console-warning-background-color: hsl(50deg 100% 10%);
51
51
  --override-console-warning-text-color: hsl(39deg 89% 55%);
52
+ --override-console-link-color: var(--color-background-inverted);
52
53
  }
53
54
 
54
55
  .console-toolbar-container {
@@ -460,6 +461,10 @@
460
461
  height: 0;
461
462
  }
462
463
 
464
+ .-theme-with-dark-background #console-messages .console-message-text .devtools-link {
465
+ color: var(--override-console-link-color);
466
+ }
467
+
463
468
  @media (forced-colors: active) {
464
469
  .console-message-expand-icon,
465
470
  .console-warning-level [is="ui-icon"].icon-mask.expand-group-icon {
@@ -1811,9 +1811,7 @@ export class ElementsTreeElement extends UI.TreeOutline.TreeElement {
1811
1811
  this.nodeInternal.removeNode();
1812
1812
  }
1813
1813
 
1814
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
1815
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1816
- toggleEditAsHTML(callback?: ((arg0: boolean) => any), startEditing?: boolean): void {
1814
+ toggleEditAsHTML(callback?: ((arg0: boolean) => void), startEditing?: boolean): void {
1817
1815
  if (this.editing && this.htmlEditElement) {
1818
1816
  this.editing.commit();
1819
1817
  return;
@@ -2220,7 +2218,5 @@ export interface EditorHandles {
2220
2218
  commit: () => void;
2221
2219
  cancel: () => void;
2222
2220
  editor?: TextEditor.TextEditor.TextEditor;
2223
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
2224
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
2225
- resize: () => any;
2221
+ resize: () => void;
2226
2222
  }
@@ -347,8 +347,9 @@ export function frameworkEventListeners(object: SDK.RemoteObject.RemoteObject):
347
347
  }
348
348
  }
349
349
 
350
+ // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
350
351
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
351
- function checkInternalHandler(handler: any): (() => any)|null {
352
+ function checkInternalHandler(handler: any): (() => void)|null {
352
353
  if (handler && (typeof handler === 'function')) {
353
354
  return handler;
354
355
  }
@@ -159,9 +159,6 @@ export class QueryTerm {
159
159
  }
160
160
  }
161
161
 
162
- /**
163
- * @interface
164
- */
165
162
  export interface SearchResult {
166
163
  label(): string;
167
164
 
@@ -176,9 +173,6 @@ export interface SearchResult {
176
173
  matchRevealable(index: number): Object;
177
174
  }
178
175
 
179
- /**
180
- * @interface
181
- */
182
176
  export interface SearchScope {
183
177
  performSearch(
184
178
  searchConfig: SearchConfig, progress: Common.Progress.Progress,
@@ -249,6 +249,10 @@ export class KeybindsSettingsTab extends UI.Widget.VBox implements UI.ListContro
249
249
 
250
250
  let currentCategory: string;
251
251
  actions.forEach(action => {
252
+ if (action.id() === 'elements.toggle-element-search') {
253
+ return;
254
+ }
255
+
252
256
  if (currentCategory !== action.category()) {
253
257
  items.push(action.category());
254
258
  }
@@ -982,15 +982,11 @@ const boostOrderForNode = new WeakSet<UI.TreeOutline.TreeElement>();
982
982
  export class NavigatorFolderTreeElement extends UI.TreeOutline.TreeElement {
983
983
  private readonly nodeType: string;
984
984
  private readonly navigatorView: NavigatorView;
985
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
986
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
987
- private hoverCallback: ((arg0: boolean) => any)|undefined;
985
+ private hoverCallback: ((arg0: boolean) => void)|undefined;
988
986
  node!: NavigatorTreeNode;
989
987
  private hovered?: boolean;
990
988
 
991
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
992
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
993
- constructor(navigatorView: NavigatorView, type: string, title: string, hoverCallback?: ((arg0: boolean) => any)) {
989
+ constructor(navigatorView: NavigatorView, type: string, title: string, hoverCallback?: ((arg0: boolean) => void)) {
994
990
  super('', true);
995
991
  this.listItemElement.classList.add('navigator-' + type + '-tree-item', 'navigator-folder-tree-item');
996
992
  UI.ARIAUtils.setAccessibleName(this.listItemElement, `${title}, ${type}`);
@@ -1392,9 +1388,7 @@ export class NavigatorUISourceCodeTreeNode extends NavigatorTreeNode {
1392
1388
  }
1393
1389
  }
1394
1390
 
1395
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
1396
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1397
- rename(callback?: ((arg0: boolean) => any)): void {
1391
+ rename(callback?: ((arg0: boolean) => void)): void {
1398
1392
  if (!this.treeElement) {
1399
1393
  return;
1400
1394
  }
@@ -390,16 +390,16 @@ export class RemoteObject extends SDK.RemoteObject.RemoteObject {
390
390
 
391
391
  // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
392
392
  // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any
393
- let _scopeResolvedForTest: (...arg0: any[]) => any = function(): void {};
393
+ let _scopeResolvedForTest: (...arg0: any[]) => void = function(): void {};
394
394
 
395
395
  // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
396
396
  // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any
397
- export const getScopeResolvedForTest = (): (...arg0: any[]) => any => {
397
+ export const getScopeResolvedForTest = (): (...arg0: any[]) => void => {
398
398
  return _scopeResolvedForTest;
399
399
  };
400
400
 
401
401
  // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
402
402
  // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any
403
- export const setScopeResolvedForTest = (scope: (...arg0: any[]) => any): void => {
403
+ export const setScopeResolvedForTest = (scope: (...arg0: any[]) => void): void => {
404
404
  _scopeResolvedForTest = scope;
405
405
  };
@@ -956,9 +956,7 @@ export class SourcesPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
956
956
  return;
957
957
  }
958
958
  const openText = i18nString(UIStrings.openInSourcesPanel);
959
- // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration)
960
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
961
- const callback: () => any = this.showUILocation.bind(this, uiSourceCode.uiLocation(0, 0));
959
+ const callback: () => void = this.showUILocation.bind(this, uiSourceCode.uiLocation(0, 0));
962
960
  contextMenu.revealSection().appendItem(openText, callback);
963
961
  }
964
962
 
@@ -596,9 +596,6 @@ export type EventTypes = {
596
596
  [Events.EditorSelected]: Workspace.UISourceCode.UISourceCode,
597
597
  };
598
598
 
599
- /**
600
- * @interface
601
- */
602
599
  export interface EditorAction {
603
600
  getOrCreateButton(sourcesView: SourcesView): UI.Toolbar.ToolbarButton;
604
601
  }
@@ -60,9 +60,6 @@ const UIStrings = {
60
60
  };
61
61
  const str_ = i18n.i18n.registerUIStrings('panels/sources/TabbedEditorContainer.ts', UIStrings);
62
62
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
63
- /**
64
- * @interface
65
- */
66
63
  export interface TabbedEditorContainerDelegate {
67
64
  viewForFile(uiSourceCode: Workspace.UISourceCode.UISourceCode): UI.Widget.Widget;
68
65
 
@@ -256,9 +256,6 @@ export class TimelineLoader implements Common.StringOutputStream.OutputStream {
256
256
 
257
257
  export const TransferChunkLengthBytes = 5000000;
258
258
 
259
- /**
260
- * @interface
261
- */
262
259
  export interface Client {
263
260
  loadingStarted(): void;
264
261
 
@@ -33,10 +33,10 @@ export {Range, RangeSet, RangeSetBuilder} from '@codemirror/rangeset';
33
33
  export {selectNextOccurrence} from '@codemirror/search';
34
34
  export {
35
35
  Annotation, AnnotationType, ChangeDesc, ChangeSet, ChangeSpec, Compartment,
36
- EditorSelection, EditorState, EditorStateConfig, Extension, Facet, Prec,
36
+ EditorSelection, EditorState, EditorStateConfig, Extension, Facet, MapMode
37
+ , Prec,
37
38
  SelectionRange, StateEffect, StateEffectType, StateField, Transaction,
38
- TransactionSpec
39
- } from '@codemirror/state';
39
+ TransactionSpec} from '@codemirror/state';
40
40
  export {StreamLanguage, StreamParser, StringStream} from '@codemirror/stream-parser';
41
41
  export {Line, Text, TextIterator} from '@codemirror/text';
42
42
  export { repositionTooltips,showTooltip, Tooltip, tooltips, TooltipView} from '@codemirror/tooltip';