@codemirror/view 6.19.0 → 6.20.1

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ ## 6.20.1 (2023-09-22)
2
+
3
+ ### Bug fixes
4
+
5
+ Fix a crash in plugin event handlers after dynamic reconfiguration.
6
+
7
+ Fix an issue where, on Chrome, tooltips would no longer use fixed positioning.
8
+
9
+ ## 6.20.0 (2023-09-20)
10
+
11
+ ### Bug fixes
12
+
13
+ Fix an issue that caused `repositionTooltips` to crash when it was called on an editor without tooltips.
14
+
15
+ Fix an issue that caused the tooltip system to leave empty nodes in the DOM when an editor using the `parent` option to `tooltips` is destroyed.
16
+
17
+ Fix a bug that regression mouse interaction with the area of a fixed-size editor that isn't covered by the content.
18
+
19
+ Fix some issues with the way `moveVertically` behaved for positions on line wrap points.
20
+
21
+ Fix a bug that could cause the document DOM to be incorrectly updated on some types of viewport changes.
22
+
23
+ ### New features
24
+
25
+ The new `getDrawSelectionConfig` function returns the `drawSelection` configuration for a given state.
26
+
1
27
  ## 6.19.0 (2023-09-14)
2
28
 
3
29
  ### Bug fixes
package/dist/index.cjs CHANGED
@@ -581,7 +581,7 @@ function replaceRange(parent, fromI, fromOff, toI, toOff, insert, breakAtStart,
581
581
  if (toI < children.length) {
582
582
  let after = children[toI];
583
583
  // Make sure the end of the child after the update is preserved in `after`
584
- if (after && toOff < after.length) {
584
+ if (after && (toOff < after.length || after.breakAfter && (last === null || last === void 0 ? void 0 : last.breakAfter))) {
585
585
  // If we're splitting a child, separate part of it to avoid that
586
586
  // being mangled when updating the child before the update.
587
587
  if (fromI == toI) {
@@ -3544,7 +3544,7 @@ function moveVertically(view, start, forward, distance) {
3544
3544
  return state.EditorSelection.cursor(startPos, start.assoc);
3545
3545
  let goal = start.goalColumn, startY;
3546
3546
  let rect = view.contentDOM.getBoundingClientRect();
3547
- let startCoords = view.coordsAtPos(startPos), docTop = view.documentTop;
3547
+ let startCoords = view.coordsAtPos(startPos, start.assoc || -1), docTop = view.documentTop;
3548
3548
  if (startCoords) {
3549
3549
  if (goal == null)
3550
3550
  goal = startCoords.left - rect.left;
@@ -3561,8 +3561,11 @@ function moveVertically(view, start, forward, distance) {
3561
3561
  for (let extra = 0;; extra += 10) {
3562
3562
  let curY = startY + (dist + extra) * dir;
3563
3563
  let pos = posAtCoords(view, { x: resolvedGoal, y: curY }, false, dir);
3564
- if (curY < rect.top || curY > rect.bottom || (dir < 0 ? pos < startPos : pos > startPos))
3565
- return state.EditorSelection.cursor(pos, start.assoc, undefined, goal);
3564
+ if (curY < rect.top || curY > rect.bottom || (dir < 0 ? pos < startPos : pos > startPos)) {
3565
+ let charRect = view.docView.coordsForChar(pos);
3566
+ let assoc = !charRect || curY < charRect.top ? -1 : 1;
3567
+ return state.EditorSelection.cursor(pos, assoc, undefined, goal);
3568
+ }
3566
3569
  }
3567
3570
  }
3568
3571
  function skipAtomicRanges(atoms, pos, bias) {
@@ -3633,7 +3636,7 @@ class InputState {
3633
3636
  this.handleEvent = this.handleEvent.bind(this);
3634
3637
  view.scrollDOM.addEventListener("mousedown", (event) => {
3635
3638
  if (event.target == view.scrollDOM && event.clientY > view.contentDOM.getBoundingClientRect().bottom) {
3636
- this.handleEvent(event);
3639
+ this.runHandlers("mousedown", event);
3637
3640
  if (!event.defaultPrevented && event.button == 2) {
3638
3641
  // Make sure the content covers the entire scroller height, in order
3639
3642
  // to catch a native context menu click below it
@@ -3645,7 +3648,7 @@ class InputState {
3645
3648
  });
3646
3649
  view.scrollDOM.addEventListener("drop", (event) => {
3647
3650
  if (event.target == view.scrollDOM && event.clientY > view.contentDOM.getBoundingClientRect().bottom)
3648
- this.handleEvent(event);
3651
+ this.runHandlers("drop", event);
3649
3652
  });
3650
3653
  this.notifiedFocused = view.hasFocus;
3651
3654
  // On Safari adding an input event handler somehow prevents an
@@ -5332,9 +5335,9 @@ class ViewState {
5332
5335
  if (domRect.width && domRect.height) {
5333
5336
  let scaleX = domRect.width / dom.offsetWidth;
5334
5337
  let scaleY = domRect.height / dom.offsetHeight;
5335
- if (scaleX > 0.995 && scaleX < 1.005)
5338
+ if (scaleX > 0.995 && scaleX < 1.005 || !isFinite(scaleX))
5336
5339
  scaleX = 1;
5337
- if (scaleY > 0.995 && scaleY < 1.005)
5340
+ if (scaleY > 0.995 && scaleY < 1.005 || !isFinite(scaleY))
5338
5341
  scaleY = 1;
5339
5342
  if (this.scaleX != scaleX || this.scaleY != scaleY) {
5340
5343
  this.scaleX = scaleX;
@@ -7081,7 +7084,6 @@ class EditorView {
7081
7084
  plugin.destroy(this);
7082
7085
  this.plugins = newPlugins;
7083
7086
  this.pluginMap.clear();
7084
- this.inputState.ensureHandlers(this.plugins);
7085
7087
  }
7086
7088
  else {
7087
7089
  for (let p of this.plugins)
@@ -7089,6 +7091,8 @@ class EditorView {
7089
7091
  }
7090
7092
  for (let i = 0; i < this.plugins.length; i++)
7091
7093
  this.plugins[i].update(this);
7094
+ if (prevSpecs != specs)
7095
+ this.inputState.ensureHandlers(this.plugins);
7092
7096
  }
7093
7097
  /**
7094
7098
  @internal
@@ -8346,6 +8350,14 @@ function drawSelection(config = {}) {
8346
8350
  nativeSelectionHidden.of(true)
8347
8351
  ];
8348
8352
  }
8353
+ /**
8354
+ Retrieve the [`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) configuration
8355
+ for this state. (Note that this will return a set of defaults even
8356
+ if `drawSelection` isn't enabled.)
8357
+ */
8358
+ function getDrawSelectionConfig(state) {
8359
+ return state.facet(selectionConfig);
8360
+ }
8349
8361
  function configChanged(update) {
8350
8362
  return update.startState.facet(selectionConfig) != update.state.facet(selectionConfig);
8351
8363
  }
@@ -9170,19 +9182,21 @@ const tooltipPlugin = ViewPlugin.fromClass(class {
9170
9182
  tooltipView.dom.remove();
9171
9183
  (_a = tooltipView.destroy) === null || _a === void 0 ? void 0 : _a.call(tooltipView);
9172
9184
  }
9185
+ if (this.parent)
9186
+ this.container.remove();
9173
9187
  (_b = this.intersectionObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
9174
9188
  clearTimeout(this.measureTimeout);
9175
9189
  }
9176
9190
  readMeasure() {
9177
9191
  let editor = this.view.dom.getBoundingClientRect();
9178
9192
  let scaleX = 1, scaleY = 1, makeAbsolute = false;
9179
- if (this.position == "fixed") {
9180
- let views = this.manager.tooltipViews;
9181
- // When the dialog's offset parent isn't the body, we are
9182
- // probably in a transformed container, and should use absolute
9183
- // positioning instead, since fixed positioning inside a
9184
- // transform works in a very broken way.
9185
- makeAbsolute = views.length > 0 && views[0].dom.offsetParent != this.container.ownerDocument.body;
9193
+ if (this.position == "fixed" && this.manager.tooltipViews.length) {
9194
+ // When the dialog's offset parent isn't the body (Firefox) or
9195
+ // null (Webkit), we are probably in a transformed container,
9196
+ // and should use absolute positioning instead, since fixed
9197
+ // positioning inside a transform works in a very broken way.
9198
+ let { offsetParent } = this.manager.tooltipViews[0].dom;
9199
+ makeAbsolute = !!(offsetParent && offsetParent != this.container.ownerDocument.body);
9186
9200
  }
9187
9201
  if (makeAbsolute || this.position == "absolute") {
9188
9202
  if (this.parent) {
@@ -9611,8 +9625,9 @@ re-positioning or CSS change affecting the editor) that could
9611
9625
  invalidate the existing tooltip positions.
9612
9626
  */
9613
9627
  function repositionTooltips(view) {
9614
- var _a;
9615
- (_a = view.plugin(tooltipPlugin)) === null || _a === void 0 ? void 0 : _a.maybeMeasure();
9628
+ let plugin = view.plugin(tooltipPlugin);
9629
+ if (plugin)
9630
+ plugin.maybeMeasure();
9616
9631
  }
9617
9632
 
9618
9633
  const panelConfig = state.Facet.define({
@@ -10330,6 +10345,7 @@ exports.closeHoverTooltips = closeHoverTooltips;
10330
10345
  exports.crosshairCursor = crosshairCursor;
10331
10346
  exports.drawSelection = drawSelection;
10332
10347
  exports.dropCursor = dropCursor;
10348
+ exports.getDrawSelectionConfig = getDrawSelectionConfig;
10333
10349
  exports.getPanel = getPanel;
10334
10350
  exports.getTooltip = getTooltip;
10335
10351
  exports.gutter = gutter;
package/dist/index.d.cts CHANGED
@@ -1414,6 +1414,12 @@ layout information that's only available after laying out the
1414
1414
  content).
1415
1415
  */
1416
1416
  declare function drawSelection(config?: SelectionConfig): Extension;
1417
+ /**
1418
+ Retrieve the [`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) configuration
1419
+ for this state. (Note that this will return a set of defaults even
1420
+ if `drawSelection` isn't enabled.)
1421
+ */
1422
+ declare function getDrawSelectionConfig(state: EditorState): SelectionConfig;
1417
1423
 
1418
1424
  /**
1419
1425
  Draws a cursor at the current drop position when something is
@@ -2050,4 +2056,4 @@ trailing whitespace.
2050
2056
  */
2051
2057
  declare function highlightTrailingWhitespace(): Extension;
2052
2058
 
2053
- export { BidiSpan, BlockInfo, BlockType, Command, DOMEventHandlers, DOMEventMap, Decoration, DecorationSet, Direction, EditorView, EditorViewConfig, GutterMarker, KeyBinding, LayerMarker, MatchDecorator, MouseSelectionStyle, Panel, PanelConstructor, PluginSpec, PluginValue, Rect, RectangleMarker, Tooltip, TooltipView, ViewPlugin, ViewUpdate, WidgetType, closeHoverTooltips, crosshairCursor, drawSelection, dropCursor, getPanel, getTooltip, gutter, gutterLineClass, gutters, hasHoverTooltips, highlightActiveLine, highlightActiveLineGutter, highlightSpecialChars, highlightTrailingWhitespace, highlightWhitespace, hoverTooltip, keymap, layer, lineNumberMarkers, lineNumbers, logException, panels, placeholder, rectangularSelection, repositionTooltips, runScopeHandlers, scrollPastEnd, showPanel, showTooltip, tooltips };
2059
+ export { BidiSpan, BlockInfo, BlockType, Command, DOMEventHandlers, DOMEventMap, Decoration, DecorationSet, Direction, EditorView, EditorViewConfig, GutterMarker, KeyBinding, LayerMarker, MatchDecorator, MouseSelectionStyle, Panel, PanelConstructor, PluginSpec, PluginValue, Rect, RectangleMarker, Tooltip, TooltipView, ViewPlugin, ViewUpdate, WidgetType, closeHoverTooltips, crosshairCursor, drawSelection, dropCursor, getDrawSelectionConfig, getPanel, getTooltip, gutter, gutterLineClass, gutters, hasHoverTooltips, highlightActiveLine, highlightActiveLineGutter, highlightSpecialChars, highlightTrailingWhitespace, highlightWhitespace, hoverTooltip, keymap, layer, lineNumberMarkers, lineNumbers, logException, panels, placeholder, rectangularSelection, repositionTooltips, runScopeHandlers, scrollPastEnd, showPanel, showTooltip, tooltips };
package/dist/index.d.ts CHANGED
@@ -1414,6 +1414,12 @@ layout information that's only available after laying out the
1414
1414
  content).
1415
1415
  */
1416
1416
  declare function drawSelection(config?: SelectionConfig): Extension;
1417
+ /**
1418
+ Retrieve the [`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) configuration
1419
+ for this state. (Note that this will return a set of defaults even
1420
+ if `drawSelection` isn't enabled.)
1421
+ */
1422
+ declare function getDrawSelectionConfig(state: EditorState): SelectionConfig;
1417
1423
 
1418
1424
  /**
1419
1425
  Draws a cursor at the current drop position when something is
@@ -2050,4 +2056,4 @@ trailing whitespace.
2050
2056
  */
2051
2057
  declare function highlightTrailingWhitespace(): Extension;
2052
2058
 
2053
- export { BidiSpan, BlockInfo, BlockType, Command, DOMEventHandlers, DOMEventMap, Decoration, DecorationSet, Direction, EditorView, EditorViewConfig, GutterMarker, KeyBinding, LayerMarker, MatchDecorator, MouseSelectionStyle, Panel, PanelConstructor, PluginSpec, PluginValue, Rect, RectangleMarker, Tooltip, TooltipView, ViewPlugin, ViewUpdate, WidgetType, closeHoverTooltips, crosshairCursor, drawSelection, dropCursor, getPanel, getTooltip, gutter, gutterLineClass, gutters, hasHoverTooltips, highlightActiveLine, highlightActiveLineGutter, highlightSpecialChars, highlightTrailingWhitespace, highlightWhitespace, hoverTooltip, keymap, layer, lineNumberMarkers, lineNumbers, logException, panels, placeholder, rectangularSelection, repositionTooltips, runScopeHandlers, scrollPastEnd, showPanel, showTooltip, tooltips };
2059
+ export { BidiSpan, BlockInfo, BlockType, Command, DOMEventHandlers, DOMEventMap, Decoration, DecorationSet, Direction, EditorView, EditorViewConfig, GutterMarker, KeyBinding, LayerMarker, MatchDecorator, MouseSelectionStyle, Panel, PanelConstructor, PluginSpec, PluginValue, Rect, RectangleMarker, Tooltip, TooltipView, ViewPlugin, ViewUpdate, WidgetType, closeHoverTooltips, crosshairCursor, drawSelection, dropCursor, getDrawSelectionConfig, getPanel, getTooltip, gutter, gutterLineClass, gutters, hasHoverTooltips, highlightActiveLine, highlightActiveLineGutter, highlightSpecialChars, highlightTrailingWhitespace, highlightWhitespace, hoverTooltip, keymap, layer, lineNumberMarkers, lineNumbers, logException, panels, placeholder, rectangularSelection, repositionTooltips, runScopeHandlers, scrollPastEnd, showPanel, showTooltip, tooltips };
package/dist/index.js CHANGED
@@ -579,7 +579,7 @@ function replaceRange(parent, fromI, fromOff, toI, toOff, insert, breakAtStart,
579
579
  if (toI < children.length) {
580
580
  let after = children[toI];
581
581
  // Make sure the end of the child after the update is preserved in `after`
582
- if (after && toOff < after.length) {
582
+ if (after && (toOff < after.length || after.breakAfter && (last === null || last === void 0 ? void 0 : last.breakAfter))) {
583
583
  // If we're splitting a child, separate part of it to avoid that
584
584
  // being mangled when updating the child before the update.
585
585
  if (fromI == toI) {
@@ -3540,7 +3540,7 @@ function moveVertically(view, start, forward, distance) {
3540
3540
  return EditorSelection.cursor(startPos, start.assoc);
3541
3541
  let goal = start.goalColumn, startY;
3542
3542
  let rect = view.contentDOM.getBoundingClientRect();
3543
- let startCoords = view.coordsAtPos(startPos), docTop = view.documentTop;
3543
+ let startCoords = view.coordsAtPos(startPos, start.assoc || -1), docTop = view.documentTop;
3544
3544
  if (startCoords) {
3545
3545
  if (goal == null)
3546
3546
  goal = startCoords.left - rect.left;
@@ -3557,8 +3557,11 @@ function moveVertically(view, start, forward, distance) {
3557
3557
  for (let extra = 0;; extra += 10) {
3558
3558
  let curY = startY + (dist + extra) * dir;
3559
3559
  let pos = posAtCoords(view, { x: resolvedGoal, y: curY }, false, dir);
3560
- if (curY < rect.top || curY > rect.bottom || (dir < 0 ? pos < startPos : pos > startPos))
3561
- return EditorSelection.cursor(pos, start.assoc, undefined, goal);
3560
+ if (curY < rect.top || curY > rect.bottom || (dir < 0 ? pos < startPos : pos > startPos)) {
3561
+ let charRect = view.docView.coordsForChar(pos);
3562
+ let assoc = !charRect || curY < charRect.top ? -1 : 1;
3563
+ return EditorSelection.cursor(pos, assoc, undefined, goal);
3564
+ }
3562
3565
  }
3563
3566
  }
3564
3567
  function skipAtomicRanges(atoms, pos, bias) {
@@ -3629,7 +3632,7 @@ class InputState {
3629
3632
  this.handleEvent = this.handleEvent.bind(this);
3630
3633
  view.scrollDOM.addEventListener("mousedown", (event) => {
3631
3634
  if (event.target == view.scrollDOM && event.clientY > view.contentDOM.getBoundingClientRect().bottom) {
3632
- this.handleEvent(event);
3635
+ this.runHandlers("mousedown", event);
3633
3636
  if (!event.defaultPrevented && event.button == 2) {
3634
3637
  // Make sure the content covers the entire scroller height, in order
3635
3638
  // to catch a native context menu click below it
@@ -3641,7 +3644,7 @@ class InputState {
3641
3644
  });
3642
3645
  view.scrollDOM.addEventListener("drop", (event) => {
3643
3646
  if (event.target == view.scrollDOM && event.clientY > view.contentDOM.getBoundingClientRect().bottom)
3644
- this.handleEvent(event);
3647
+ this.runHandlers("drop", event);
3645
3648
  });
3646
3649
  this.notifiedFocused = view.hasFocus;
3647
3650
  // On Safari adding an input event handler somehow prevents an
@@ -5327,9 +5330,9 @@ class ViewState {
5327
5330
  if (domRect.width && domRect.height) {
5328
5331
  let scaleX = domRect.width / dom.offsetWidth;
5329
5332
  let scaleY = domRect.height / dom.offsetHeight;
5330
- if (scaleX > 0.995 && scaleX < 1.005)
5333
+ if (scaleX > 0.995 && scaleX < 1.005 || !isFinite(scaleX))
5331
5334
  scaleX = 1;
5332
- if (scaleY > 0.995 && scaleY < 1.005)
5335
+ if (scaleY > 0.995 && scaleY < 1.005 || !isFinite(scaleY))
5333
5336
  scaleY = 1;
5334
5337
  if (this.scaleX != scaleX || this.scaleY != scaleY) {
5335
5338
  this.scaleX = scaleX;
@@ -7076,7 +7079,6 @@ class EditorView {
7076
7079
  plugin.destroy(this);
7077
7080
  this.plugins = newPlugins;
7078
7081
  this.pluginMap.clear();
7079
- this.inputState.ensureHandlers(this.plugins);
7080
7082
  }
7081
7083
  else {
7082
7084
  for (let p of this.plugins)
@@ -7084,6 +7086,8 @@ class EditorView {
7084
7086
  }
7085
7087
  for (let i = 0; i < this.plugins.length; i++)
7086
7088
  this.plugins[i].update(this);
7089
+ if (prevSpecs != specs)
7090
+ this.inputState.ensureHandlers(this.plugins);
7087
7091
  }
7088
7092
  /**
7089
7093
  @internal
@@ -8341,6 +8345,14 @@ function drawSelection(config = {}) {
8341
8345
  nativeSelectionHidden.of(true)
8342
8346
  ];
8343
8347
  }
8348
+ /**
8349
+ Retrieve the [`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) configuration
8350
+ for this state. (Note that this will return a set of defaults even
8351
+ if `drawSelection` isn't enabled.)
8352
+ */
8353
+ function getDrawSelectionConfig(state) {
8354
+ return state.facet(selectionConfig);
8355
+ }
8344
8356
  function configChanged(update) {
8345
8357
  return update.startState.facet(selectionConfig) != update.state.facet(selectionConfig);
8346
8358
  }
@@ -9165,19 +9177,21 @@ const tooltipPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {
9165
9177
  tooltipView.dom.remove();
9166
9178
  (_a = tooltipView.destroy) === null || _a === void 0 ? void 0 : _a.call(tooltipView);
9167
9179
  }
9180
+ if (this.parent)
9181
+ this.container.remove();
9168
9182
  (_b = this.intersectionObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
9169
9183
  clearTimeout(this.measureTimeout);
9170
9184
  }
9171
9185
  readMeasure() {
9172
9186
  let editor = this.view.dom.getBoundingClientRect();
9173
9187
  let scaleX = 1, scaleY = 1, makeAbsolute = false;
9174
- if (this.position == "fixed") {
9175
- let views = this.manager.tooltipViews;
9176
- // When the dialog's offset parent isn't the body, we are
9177
- // probably in a transformed container, and should use absolute
9178
- // positioning instead, since fixed positioning inside a
9179
- // transform works in a very broken way.
9180
- makeAbsolute = views.length > 0 && views[0].dom.offsetParent != this.container.ownerDocument.body;
9188
+ if (this.position == "fixed" && this.manager.tooltipViews.length) {
9189
+ // When the dialog's offset parent isn't the body (Firefox) or
9190
+ // null (Webkit), we are probably in a transformed container,
9191
+ // and should use absolute positioning instead, since fixed
9192
+ // positioning inside a transform works in a very broken way.
9193
+ let { offsetParent } = this.manager.tooltipViews[0].dom;
9194
+ makeAbsolute = !!(offsetParent && offsetParent != this.container.ownerDocument.body);
9181
9195
  }
9182
9196
  if (makeAbsolute || this.position == "absolute") {
9183
9197
  if (this.parent) {
@@ -9606,8 +9620,9 @@ re-positioning or CSS change affecting the editor) that could
9606
9620
  invalidate the existing tooltip positions.
9607
9621
  */
9608
9622
  function repositionTooltips(view) {
9609
- var _a;
9610
- (_a = view.plugin(tooltipPlugin)) === null || _a === void 0 ? void 0 : _a.maybeMeasure();
9623
+ let plugin = view.plugin(tooltipPlugin);
9624
+ if (plugin)
9625
+ plugin.maybeMeasure();
9611
9626
  }
9612
9627
 
9613
9628
  const panelConfig = /*@__PURE__*/Facet.define({
@@ -10310,4 +10325,4 @@ function highlightTrailingWhitespace() {
10310
10325
  */
10311
10326
  const __test = { HeightMap, HeightOracle, MeasuredHeights, QueryType, ChangedRange, computeOrder, moveVisually };
10312
10327
 
10313
- export { BidiSpan, BlockInfo, BlockType, Decoration, Direction, EditorView, GutterMarker, MatchDecorator, RectangleMarker, ViewPlugin, ViewUpdate, WidgetType, __test, closeHoverTooltips, crosshairCursor, drawSelection, dropCursor, getPanel, getTooltip, gutter, gutterLineClass, gutters, hasHoverTooltips, highlightActiveLine, highlightActiveLineGutter, highlightSpecialChars, highlightTrailingWhitespace, highlightWhitespace, hoverTooltip, keymap, layer, lineNumberMarkers, lineNumbers, logException, panels, placeholder, rectangularSelection, repositionTooltips, runScopeHandlers, scrollPastEnd, showPanel, showTooltip, tooltips };
10328
+ export { BidiSpan, BlockInfo, BlockType, Decoration, Direction, EditorView, GutterMarker, MatchDecorator, RectangleMarker, ViewPlugin, ViewUpdate, WidgetType, __test, closeHoverTooltips, crosshairCursor, drawSelection, dropCursor, getDrawSelectionConfig, getPanel, getTooltip, gutter, gutterLineClass, gutters, hasHoverTooltips, highlightActiveLine, highlightActiveLineGutter, highlightSpecialChars, highlightTrailingWhitespace, highlightWhitespace, hoverTooltip, keymap, layer, lineNumberMarkers, lineNumbers, logException, panels, placeholder, rectangularSelection, repositionTooltips, runScopeHandlers, scrollPastEnd, showPanel, showTooltip, tooltips };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemirror/view",
3
- "version": "6.19.0",
3
+ "version": "6.20.1",
4
4
  "description": "DOM view component for the CodeMirror code editor",
5
5
  "scripts": {
6
6
  "test": "cm-runtests",