prosemirror-view 1.42.3 → 1.42.4

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,11 @@
1
+ ## 1.42.4 (2026-09-18)
2
+
3
+ ### Bug fixes
4
+
5
+ Prevent uneditable elements rendered as part of node or mark view from blocking cursor motion.
6
+
7
+ Fix a bug that could break some types of composition input starting with a non-empty selection.
8
+
1
9
  ## 1.42.3 (2026-08-25)
2
10
 
3
11
  ### Bug fixes
package/dist/index.cjs CHANGED
@@ -2400,7 +2400,7 @@ function nodeLen(node) {
2400
2400
  }
2401
2401
  function isIgnorable(dom, dir) {
2402
2402
  var desc = dom.pmViewDesc;
2403
- return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != "BR");
2403
+ return desc ? desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != "BR") : dom.nodeType == 1 && dom.contentEditable == "false";
2404
2404
  }
2405
2405
  function skipIgnoredNodes(view, dir) {
2406
2406
  return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);
@@ -3387,7 +3387,7 @@ editHandlers.compositionstart = editHandlers.compositionupdate = function (view)
3387
3387
  view.domObserver.flush();
3388
3388
  var state = view.state,
3389
3389
  $pos = state.selection.$to;
3390
- if (state.selection instanceof prosemirrorState.TextSelection && (state.storedMarks || !$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(function (m) {
3390
+ if (state.selection instanceof prosemirrorState.TextSelection && state.selection.empty && (state.storedMarks || !$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(function (m) {
3391
3391
  return m.type.spec.inclusive === false;
3392
3392
  }) || chrome && windows && selectionBeforeUneditable(view))) {
3393
3393
  view.markCursor = view.state.storedMarks || $pos.marks();
package/dist/index.js CHANGED
@@ -2494,7 +2494,8 @@ function nodeLen(node) {
2494
2494
  }
2495
2495
  function isIgnorable(dom, dir) {
2496
2496
  let desc = dom.pmViewDesc;
2497
- return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != "BR");
2497
+ return desc ? desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != "BR")
2498
+ : dom.nodeType == 1 && dom.contentEditable == "false";
2498
2499
  }
2499
2500
  function skipIgnoredNodes(view, dir) {
2500
2501
  return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);
@@ -3569,7 +3570,7 @@ editHandlers.compositionstart = editHandlers.compositionupdate = view => {
3569
3570
  if (!view.composing) {
3570
3571
  view.domObserver.flush();
3571
3572
  let { state } = view, $pos = state.selection.$to;
3572
- if (state.selection instanceof TextSelection &&
3573
+ if (state.selection instanceof TextSelection && state.selection.empty &&
3573
3574
  (state.storedMarks ||
3574
3575
  (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)) ||
3575
3576
  chrome && windows && selectionBeforeUneditable(view))) { // Issue #1500
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prosemirror-view",
3
- "version": "1.42.3",
3
+ "version": "1.42.4",
4
4
  "description": "ProseMirror's view component",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -61,7 +61,8 @@ function nodeLen(node: Node) {
61
61
 
62
62
  function isIgnorable(dom: Node, dir: number) {
63
63
  let desc = dom.pmViewDesc
64
- return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != "BR")
64
+ return desc ? desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != "BR")
65
+ : dom.nodeType == 1 && (dom as HTMLElement).contentEditable == "false"
65
66
  }
66
67
 
67
68
  function skipIgnoredNodes(view: EditorView, dir: number) {
package/src/input.ts CHANGED
@@ -518,7 +518,7 @@ editHandlers.compositionstart = editHandlers.compositionupdate = view => {
518
518
  if (!view.composing) {
519
519
  view.domObserver.flush()
520
520
  let {state} = view, $pos = state.selection.$to
521
- if (state.selection instanceof TextSelection &&
521
+ if (state.selection instanceof TextSelection && state.selection.empty &&
522
522
  (state.storedMarks ||
523
523
  (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore!.marks.some(m => m.type.spec.inclusive === false)) ||
524
524
  browser.chrome && browser.windows && selectionBeforeUneditable(view))) { // Issue #1500