@handlewithcare/react-prosemirror 3.1.0-tiptap.40 → 3.1.0-tiptap.42

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 (142) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/ReactEditorView.js +71 -75
  3. package/dist/cjs/StaticEditorView.js +19 -22
  4. package/dist/cjs/browser.js +1 -3
  5. package/dist/cjs/commands/reorderSiblings.js +9 -13
  6. package/dist/cjs/components/ChildNodeViews.js +68 -71
  7. package/dist/cjs/components/CursorWrapper.js +26 -17
  8. package/dist/cjs/components/LayoutGroup.js +12 -16
  9. package/dist/cjs/components/NativeWidgetView.js +15 -19
  10. package/dist/cjs/components/OutputSpec.js +9 -13
  11. package/dist/cjs/components/ProseMirror.js +37 -27
  12. package/dist/cjs/components/ProseMirrorDoc.js +25 -18
  13. package/dist/cjs/components/SeparatorHackView.js +20 -21
  14. package/dist/cjs/components/TextNodeView.js +22 -20
  15. package/dist/cjs/components/TrailingHackView.js +13 -17
  16. package/dist/cjs/components/WidgetView.js +14 -18
  17. package/dist/cjs/components/marks/DefaultMarkView.js +27 -15
  18. package/dist/cjs/components/marks/MarkView.js +32 -23
  19. package/dist/cjs/components/marks/MarkViewConstructorView.js +38 -22
  20. package/dist/cjs/components/marks/ReactMarkView.js +27 -16
  21. package/dist/cjs/components/nodes/DefaultNodeView.js +27 -15
  22. package/dist/cjs/components/nodes/DocNodeView.js +12 -16
  23. package/dist/cjs/components/nodes/NodeView.js +33 -26
  24. package/dist/cjs/components/nodes/NodeViewConstructorView.js +45 -29
  25. package/dist/cjs/components/nodes/ReactNodeView.js +39 -27
  26. package/dist/cjs/constants.js +6 -10
  27. package/dist/cjs/contexts/ChildDescriptionsContext.js +1 -3
  28. package/dist/cjs/contexts/EditorContext.js +1 -3
  29. package/dist/cjs/contexts/EditorStateContext.js +1 -3
  30. package/dist/cjs/contexts/IgnoreMutationContext.js +1 -3
  31. package/dist/cjs/contexts/LayoutGroupContext.js +1 -3
  32. package/dist/cjs/contexts/NodeViewContext.js +1 -3
  33. package/dist/cjs/contexts/SelectNodeContext.js +1 -3
  34. package/dist/cjs/contexts/StopEventContext.js +1 -3
  35. package/dist/cjs/decorations/ReactWidgetType.js +13 -19
  36. package/dist/cjs/decorations/computeDocDeco.js +3 -5
  37. package/dist/cjs/decorations/iterDeco.js +17 -19
  38. package/dist/cjs/decorations/viewDecorations.js +12 -15
  39. package/dist/cjs/dom.js +13 -34
  40. package/dist/cjs/findDOMNode.js +5 -9
  41. package/dist/cjs/hooks/useClientLayoutEffect.js +1 -3
  42. package/dist/cjs/hooks/useComponentEventListeners.js +6 -7
  43. package/dist/cjs/hooks/useEditor.js +30 -28
  44. package/dist/cjs/hooks/useEditorEffect.js +7 -9
  45. package/dist/cjs/hooks/useEditorEventCallback.js +7 -9
  46. package/dist/cjs/hooks/useEditorEventListener.js +6 -8
  47. package/dist/cjs/hooks/useEditorState.js +3 -5
  48. package/dist/cjs/hooks/useEffectEvent.js +1 -3
  49. package/dist/cjs/hooks/useForceUpdate.js +1 -3
  50. package/dist/cjs/hooks/useIgnoreMutation.js +7 -9
  51. package/dist/cjs/hooks/useIsEditorStatic.js +5 -5
  52. package/dist/cjs/hooks/useIsNodeSelected.js +3 -5
  53. package/dist/cjs/hooks/useLayoutGroupEffect.js +5 -7
  54. package/dist/cjs/hooks/useMarkViewDescription.js +25 -24
  55. package/dist/cjs/hooks/useNodePos.js +5 -7
  56. package/dist/cjs/hooks/useNodeViewDescription.js +41 -28
  57. package/dist/cjs/hooks/useReactKeys.js +5 -7
  58. package/dist/cjs/hooks/useSelectNode.js +8 -10
  59. package/dist/cjs/hooks/useStopEvent.js +7 -9
  60. package/dist/cjs/index.js +34 -66
  61. package/dist/cjs/plugins/beforeInputPlugin.js +23 -20
  62. package/dist/cjs/plugins/componentEventListeners.js +6 -8
  63. package/dist/cjs/plugins/componentEventListenersPlugin.js +6 -8
  64. package/dist/cjs/plugins/reactKeys.js +10 -15
  65. package/dist/cjs/props.js +19 -23
  66. package/dist/cjs/refs.js +1 -3
  67. package/dist/cjs/testing/editorViewTestHelpers.js +47 -40
  68. package/dist/cjs/testing/setupProseMirrorView.js +4 -7
  69. package/dist/cjs/tiptap/ReactProseMirrorNodeView.js +6 -10
  70. package/dist/cjs/tiptap/TiptapEditor.js +14 -15
  71. package/dist/cjs/tiptap/TiptapEditorContent.js +28 -18
  72. package/dist/cjs/tiptap/TiptapEditorView.js +34 -23
  73. package/dist/cjs/tiptap/contexts/TiptapEditorContext.js +1 -3
  74. package/dist/cjs/tiptap/extensions/ReactProseMirror.js +6 -8
  75. package/dist/cjs/tiptap/extensions/ReactProseMirrorCommands.js +3 -5
  76. package/dist/cjs/tiptap/extensions/commands/updateAttributes.js +2 -4
  77. package/dist/cjs/tiptap/hooks/useIsInReactProseMirror.js +3 -5
  78. package/dist/cjs/tiptap/hooks/useTiptapEditor.js +14 -12
  79. package/dist/cjs/tiptap/hooks/useTiptapEditorEffect.js +10 -12
  80. package/dist/cjs/tiptap/hooks/useTiptapEditorEventCallback.js +4 -6
  81. package/dist/cjs/tiptap/index.js +18 -36
  82. package/dist/cjs/tiptap/tiptapNodeView.js +62 -48
  83. package/dist/cjs/viewdesc.js +95 -119
  84. package/dist/esm/ReactEditorView.js +67 -69
  85. package/dist/esm/StaticEditorView.js +18 -19
  86. package/dist/esm/commands/reorderSiblings.js +5 -5
  87. package/dist/esm/components/ChildNodeViews.js +36 -33
  88. package/dist/esm/components/CursorWrapper.js +18 -5
  89. package/dist/esm/components/LayoutGroup.js +1 -1
  90. package/dist/esm/components/NativeWidgetView.js +2 -2
  91. package/dist/esm/components/OutputSpec.js +1 -1
  92. package/dist/esm/components/ProseMirror.js +17 -3
  93. package/dist/esm/components/ProseMirrorDoc.js +19 -6
  94. package/dist/esm/components/SeparatorHackView.js +8 -5
  95. package/dist/esm/components/TextNodeView.js +10 -6
  96. package/dist/esm/components/TrailingHackView.js +2 -2
  97. package/dist/esm/components/WidgetView.js +3 -3
  98. package/dist/esm/components/marks/DefaultMarkView.js +22 -6
  99. package/dist/esm/components/marks/MarkView.js +24 -11
  100. package/dist/esm/components/marks/MarkViewConstructorView.js +27 -7
  101. package/dist/esm/components/marks/ReactMarkView.js +18 -3
  102. package/dist/esm/components/nodes/DefaultNodeView.js +22 -6
  103. package/dist/esm/components/nodes/DocNodeView.js +2 -2
  104. package/dist/esm/components/nodes/NodeView.js +24 -11
  105. package/dist/esm/components/nodes/NodeViewConstructorView.js +31 -11
  106. package/dist/esm/components/nodes/ReactNodeView.js +22 -6
  107. package/dist/esm/decorations/ReactWidgetType.js +8 -10
  108. package/dist/esm/decorations/iterDeco.js +13 -13
  109. package/dist/esm/decorations/viewDecorations.js +6 -7
  110. package/dist/esm/dom.js +2 -1
  111. package/dist/esm/findDOMNode.js +1 -1
  112. package/dist/esm/hooks/useComponentEventListeners.js +3 -2
  113. package/dist/esm/hooks/useEditor.js +9 -5
  114. package/dist/esm/hooks/useEditorEffect.js +1 -1
  115. package/dist/esm/hooks/useEditorEventCallback.js +1 -1
  116. package/dist/esm/hooks/useEditorEventListener.js +1 -1
  117. package/dist/esm/hooks/useIsEditorStatic.js +3 -1
  118. package/dist/esm/hooks/useMarkViewDescription.js +10 -7
  119. package/dist/esm/hooks/useNodeViewDescription.js +22 -7
  120. package/dist/esm/hooks/useReactKeys.js +1 -1
  121. package/dist/esm/plugins/beforeInputPlugin.js +17 -12
  122. package/dist/esm/plugins/reactKeys.js +4 -3
  123. package/dist/esm/props.js +15 -15
  124. package/dist/esm/testing/editorViewTestHelpers.js +31 -20
  125. package/dist/esm/testing/setupProseMirrorView.js +2 -1
  126. package/dist/esm/tiptap/ReactProseMirrorNodeView.js +5 -7
  127. package/dist/esm/tiptap/TiptapEditor.js +10 -9
  128. package/dist/esm/tiptap/TiptapEditorContent.js +18 -4
  129. package/dist/esm/tiptap/TiptapEditorView.js +23 -8
  130. package/dist/esm/tiptap/extensions/ReactProseMirror.js +1 -1
  131. package/dist/esm/tiptap/extensions/commands/updateAttributes.js +1 -1
  132. package/dist/esm/tiptap/hooks/useTiptapEditor.js +8 -4
  133. package/dist/esm/tiptap/hooks/useTiptapEditorEffect.js +4 -4
  134. package/dist/esm/tiptap/hooks/useTiptapEditorEventCallback.js +1 -1
  135. package/dist/esm/tiptap/tiptapNodeView.js +38 -20
  136. package/dist/esm/viewdesc.js +72 -74
  137. package/dist/tsconfig.tsbuildinfo +1 -1
  138. package/dist/types/ReactEditorView.d.ts +2 -2
  139. package/dist/types/StaticEditorView.d.ts +2 -1
  140. package/dist/types/props.d.ts +26 -26
  141. package/dist/types/viewdesc.d.ts +2 -0
  142. package/package.json +10 -6
@@ -22,26 +22,6 @@ const NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;
22
22
  // Superclass for the various kinds of descriptions. Defines their
23
23
  // basic structure and shared methods.
24
24
  export class ViewDesc {
25
- parent;
26
- children;
27
- getPos;
28
- dom;
29
- contentDOM;
30
- dirty;
31
- node;
32
- constructor(parent, children, getPos, dom, // This is the node that holds the child views. It may be null for
33
- // descs that don't have children.
34
- contentDOM){
35
- this.parent = parent;
36
- this.children = children;
37
- this.getPos = getPos;
38
- this.dom = dom;
39
- this.contentDOM = contentDOM;
40
- this.dirty = NOT_DIRTY;
41
- // An expando property on the DOM node provides a link back to its
42
- // description.
43
- dom.pmViewDesc = this;
44
- }
45
25
  // Used to check whether a given description corresponds to a
46
26
  // widget/mark/node.
47
27
  matchesWidget(_widget) {
@@ -121,15 +101,15 @@ export class ViewDesc {
121
101
  while(domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this))domBefore = domBefore.previousSibling;
122
102
  return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart;
123
103
  } else {
124
- let domAfter, desc;
104
+ let domAfter, desc1;
125
105
  if (dom == this.contentDOM) {
126
106
  domAfter = dom.childNodes[offset];
127
107
  } else {
128
108
  while(dom.parentNode != this.contentDOM)dom = dom.parentNode;
129
109
  domAfter = dom.nextSibling;
130
110
  }
131
- while(domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this))domAfter = domAfter.nextSibling;
132
- return domAfter ? this.posBeforeChild(desc) : this.posAtEnd;
111
+ while(domAfter && !((desc1 = domAfter.pmViewDesc) && desc1.parent == this))domAfter = domAfter.nextSibling;
112
+ return domAfter ? this.posBeforeChild(desc1) : this.posAtEnd;
133
113
  }
134
114
  }
135
115
  // Otherwise, use various heuristics, falling back on the bias
@@ -148,12 +128,12 @@ export class ViewDesc {
148
128
  }
149
129
  if (search.previousSibling) break;
150
130
  }
151
- if (atEnd == null && offset == dom.childNodes.length) for(let search = dom;; search = search.parentNode){
152
- if (search == this.dom) {
131
+ if (atEnd == null && offset == dom.childNodes.length) for(let search1 = dom;; search1 = search1.parentNode){
132
+ if (search1 == this.dom) {
153
133
  atEnd = true;
154
134
  break;
155
135
  }
156
- if (search.nextSibling) break;
136
+ if (search1.nextSibling) break;
157
137
  }
158
138
  }
159
139
  return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart;
@@ -191,8 +171,8 @@ export class ViewDesc {
191
171
  const end = offset + child.size;
192
172
  if (offset == pos && end != offset) {
193
173
  while(!child.border && child.children.length){
194
- for(let i = 0; i < child.children.length; i++){
195
- const inner = child.children[i];
174
+ for(let i1 = 0; i1 < child.children.length; i1++){
175
+ const inner = child.children[i1];
196
176
  if (inner.size) {
197
177
  child = inner;
198
178
  break;
@@ -230,23 +210,23 @@ export class ViewDesc {
230
210
  }
231
211
  // Scan towards the first useable node
232
212
  if (side <= 0) {
233
- let prev, enter = true;
213
+ let prev1, enter = true;
234
214
  for(;; i--, enter = false){
235
- prev = i ? this.children[i - 1] : null;
236
- if (!prev || prev.dom.parentNode == this.contentDOM) break;
215
+ prev1 = i ? this.children[i - 1] : null;
216
+ if (!prev1 || prev1.dom.parentNode == this.contentDOM) break;
237
217
  }
238
- if (prev && side && enter && !prev.border && !prev.domAtom) return prev.domFromPos(prev.size, side);
218
+ if (prev1 && side && enter && !prev1.border && !prev1.domAtom) return prev1.domFromPos(prev1.size, side);
239
219
  return {
240
220
  node: this.contentDOM,
241
- offset: prev ? domIndex(prev.dom) + 1 : 0
221
+ offset: prev1 ? domIndex(prev1.dom) + 1 : 0
242
222
  };
243
223
  } else {
244
- let next, enter = true;
245
- for(;; i++, enter = false){
224
+ let next, enter1 = true;
225
+ for(;; i++, enter1 = false){
246
226
  next = i < this.children.length ? this.children[i] : null;
247
227
  if (!next || next.dom.parentNode == this.contentDOM) break;
248
228
  }
249
- if (next && enter && !next.border && !next.domAtom) return next.domFromPos(0, side);
229
+ if (next && enter1 && !next.border && !next.domAtom) return next.domFromPos(0, side);
250
230
  return {
251
231
  node: this.contentDOM,
252
232
  offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length
@@ -284,8 +264,8 @@ export class ViewDesc {
284
264
  }
285
265
  if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {
286
266
  to = end;
287
- for(let j = i + 1; j < this.children.length; j++){
288
- const next = this.children[j];
267
+ for(let j1 = i + 1; j1 < this.children.length; j1++){
268
+ const next = this.children[j1];
289
269
  if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {
290
270
  toOffset = domIndex(next.dom);
291
271
  break;
@@ -312,7 +292,7 @@ export class ViewDesc {
312
292
  return child.size == 0 || child.emptyChildAt(side);
313
293
  }
314
294
  domAfterPos(pos) {
315
- const { node, offset } = this.domFromPos(pos, 0);
295
+ const { node , offset } = this.domFromPos(pos, 0);
316
296
  if (node.nodeType != 1 || offset == node.childNodes.length) throw new RangeError("No node after pos " + pos);
317
297
  // @ts-expect-error ...
318
298
  return node.childNodes[offset];
@@ -341,11 +321,12 @@ export class ViewDesc {
341
321
  // the cursor sometimes inexplicable visually lags behind its
342
322
  // reported position in such situations (#1092).
343
323
  if ((browser.gecko || browser.safari) && anchor == head) {
344
- const { node, offset } = anchorDOM;
324
+ const { node , offset: offset1 } = anchorDOM;
345
325
  if (node.nodeType == 3) {
346
- brKludge = !!(offset && node.nodeValue?.[offset - 1] == "\n");
326
+ var ref;
327
+ brKludge = !!(offset1 && ((ref = node.nodeValue) === null || ref === void 0 ? void 0 : ref[offset1 - 1]) == "\n");
347
328
  // Issue #1128
348
- if (brKludge && offset == node.nodeValue.length) {
329
+ if (brKludge && offset1 == node.nodeValue.length) {
349
330
  for(let scan = node, after; scan; scan = scan.parentNode){
350
331
  if (after = scan.nextSibling) {
351
332
  if (after.nodeName == "BR") anchorDOM = headDOM = {
@@ -359,7 +340,7 @@ export class ViewDesc {
359
340
  }
360
341
  }
361
342
  } else {
362
- const prev = node.childNodes[offset - 1];
343
+ const prev = node.childNodes[offset1 - 1];
363
344
  // @ts-expect-error ...
364
345
  brKludge = prev && (prev.nodeName == "BR" || prev.contentEditable == "false");
365
346
  }
@@ -367,8 +348,8 @@ export class ViewDesc {
367
348
  // Firefox can act strangely when the selection is in front of an
368
349
  // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536
369
350
  if (browser.gecko && selRange.focusNode && selRange.focusNode != headDOM.node && selRange.focusNode.nodeType == 1) {
370
- const after = selRange.focusNode.childNodes[selRange.focusOffset];
371
- if (after && after.contentEditable == "false") force = true;
351
+ const after1 = selRange.focusNode.childNodes[selRange.focusOffset];
352
+ if (after1 && after1.contentEditable == "false") force = true;
372
353
  }
373
354
  if (!(force || brKludge && browser.safari) && isEquivalentPosition(anchorDOM.node, anchorDOM.offset, selRange.anchorNode, selRange.anchorOffset) && isEquivalentPosition(headDOM.node, headDOM.offset, selRange.focusNode, selRange.focusOffset)) return;
374
355
  // Selection.extend can be used to create an 'inverted' selection
@@ -444,15 +425,24 @@ export class ViewDesc {
444
425
  get ignoreForSelection() {
445
426
  return false;
446
427
  }
428
+ isText(_text) {
429
+ return false;
430
+ }
431
+ constructor(parent, children, getPos, dom, contentDOM){
432
+ this.parent = parent;
433
+ this.children = children;
434
+ this.getPos = getPos;
435
+ this.dom = dom;
436
+ this.contentDOM = contentDOM;
437
+ this.dirty = NOT_DIRTY;
438
+ // An expando property on the DOM node provides a link back to its
439
+ // description.
440
+ dom.pmViewDesc = this;
441
+ }
447
442
  }
448
443
  // A widget desc represents a widget decoration, which is a DOM node
449
444
  // drawn between the document nodes.
450
445
  export class WidgetViewDesc extends ViewDesc {
451
- widget;
452
- constructor(parent, getPos, widget, dom){
453
- super(parent, [], getPos, dom, null), this.widget = widget;
454
- this.widget = widget;
455
- }
456
446
  matchesWidget(widget) {
457
447
  return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type);
458
448
  }
@@ -477,13 +467,13 @@ export class WidgetViewDesc extends ViewDesc {
477
467
  get side() {
478
468
  return this.widget.type.side;
479
469
  }
470
+ constructor(parent, getPos, widget, dom){
471
+ super(parent, [], getPos, dom, null);
472
+ this.widget = widget;
473
+ this.widget = widget;
474
+ }
480
475
  }
481
476
  export class CompositionViewDesc extends ViewDesc {
482
- textDOM;
483
- text;
484
- constructor(parent, getPos, dom, textDOM, text){
485
- super(parent, [], getPos, dom, null), this.textDOM = textDOM, this.text = text;
486
- }
487
477
  get size() {
488
478
  return this.text.length;
489
479
  }
@@ -500,6 +490,11 @@ export class CompositionViewDesc extends ViewDesc {
500
490
  ignoreMutation(mut) {
501
491
  return mut.type === "characterData" && mut.target.nodeValue == mut.oldValue;
502
492
  }
493
+ constructor(parent, getPos, dom, textDOM, text){
494
+ super(parent, [], getPos, dom, null);
495
+ this.textDOM = textDOM;
496
+ this.text = text;
497
+ }
503
498
  }
504
499
  // A mark desc represents a mark. May have multiple children,
505
500
  // depending on how the mark is split. Note that marks are drawn using
@@ -507,11 +502,6 @@ export class CompositionViewDesc extends ViewDesc {
507
502
  // some cases they will be split more often than would appear
508
503
  // necessary.
509
504
  export class MarkViewDesc extends ViewDesc {
510
- mark;
511
- spec;
512
- constructor(parent, children, getPos, mark, dom, contentDOM, spec){
513
- super(parent, children, getPos, dom, contentDOM), this.mark = mark, this.spec = spec;
514
- }
515
505
  parseRule() {
516
506
  if (this.dirty & NODE_DIRTY || this.mark.type.spec.reparseInView) return null;
517
507
  return {
@@ -540,18 +530,16 @@ export class MarkViewDesc extends ViewDesc {
540
530
  if (this.spec.destroy) this.spec.destroy();
541
531
  super.destroy();
542
532
  }
533
+ constructor(parent, children, getPos, mark, dom, contentDOM, spec){
534
+ super(parent, children, getPos, dom, contentDOM);
535
+ this.mark = mark;
536
+ this.spec = spec;
537
+ }
543
538
  }
544
539
  // Node view descs are the main, most common type of view desc, and
545
540
  // correspond to an actual node in the document. Unlike mark descs,
546
541
  // they populate their child array themselves.
547
542
  export class NodeViewDesc extends ViewDesc {
548
- node;
549
- outerDeco;
550
- innerDeco;
551
- nodeDOM;
552
- constructor(parent, children, getPos, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM){
553
- super(parent, children, getPos, dom, contentDOM), this.node = node, this.outerDeco = outerDeco, this.innerDeco = innerDeco, this.nodeDOM = nodeDOM;
554
- }
555
543
  parseRule() {
556
544
  // Experimental kludge to allow opt-in re-parsing of nodes
557
545
  if (this.node.type.spec.reparseInView) return null;
@@ -630,11 +618,15 @@ export class NodeViewDesc extends ViewDesc {
630
618
  get domAtom() {
631
619
  return this.node.isAtom;
632
620
  }
621
+ constructor(parent, children, getPos, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM){
622
+ super(parent, children, getPos, dom, contentDOM);
623
+ this.node = node;
624
+ this.outerDeco = outerDeco;
625
+ this.innerDeco = innerDeco;
626
+ this.nodeDOM = nodeDOM;
627
+ }
633
628
  }
634
629
  export class TextViewDesc extends NodeViewDesc {
635
- constructor(parent, children, getPos, node, outerDeco, innerDeco, dom, nodeDOM){
636
- super(parent, children, getPos, node, outerDeco, innerDeco, dom, null, nodeDOM);
637
- }
638
630
  parseRule() {
639
631
  let skip = this.nodeDOM.parentNode;
640
632
  while(skip && skip != this.dom && !skip.pmIsDeco)skip = skip.parentNode;
@@ -668,6 +660,12 @@ export class TextViewDesc extends NodeViewDesc {
668
660
  get domAtom() {
669
661
  return false;
670
662
  }
663
+ isText(text) {
664
+ return this.node.text == text;
665
+ }
666
+ constructor(parent, children, getPos, node, outerDeco, innerDeco, dom, nodeDOM){
667
+ super(parent, children, getPos, node, outerDeco, innerDeco, dom, null, nodeDOM);
668
+ }
671
669
  }
672
670
  // A dummy desc used to tag trailing BR or IMG nodes created to work
673
671
  // around contentEditable terribleness.
@@ -691,10 +689,6 @@ export class TrailingHackViewDesc extends ViewDesc {
691
689
  // extra checks only have to be made for nodes that are actually
692
690
  // customized.
693
691
  let CustomNodeViewDesc = class CustomNodeViewDesc extends NodeViewDesc {
694
- spec;
695
- constructor(parent, children, getPos, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec){
696
- super(parent, children, getPos, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM), this.spec = spec;
697
- }
698
692
  // A custom `update` method gets to decide whether the update goes
699
693
  // through. If it does, and there's a `contentDOM` node, our logic
700
694
  // updates the children.
@@ -729,6 +723,10 @@ let CustomNodeViewDesc = class CustomNodeViewDesc extends NodeViewDesc {
729
723
  ignoreMutation(mutation) {
730
724
  return this.spec.ignoreMutation ? this.spec.ignoreMutation.call(this, mutation) : super.ignoreMutation(mutation);
731
725
  }
726
+ constructor(parent, children, getPos, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec){
727
+ super(parent, children, getPos, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM);
728
+ this.spec = spec;
729
+ }
732
730
  };
733
731
  export class ReactMarkViewDesc extends MarkViewDesc {
734
732
  destroy() {