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