@handlewithcare/react-prosemirror 3.1.0-tiptap.50 → 3.1.0-tiptap.52
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/dist/cjs/ReactEditorView.js +0 -2
- package/dist/cjs/components/ChildNodeViews.js +7 -12
- package/dist/cjs/components/CursorWrapper.js +9 -8
- package/dist/cjs/components/TextNodeView.js +38 -112
- package/dist/cjs/components/WidgetView.js +1 -0
- package/dist/cjs/hooks/useComponentEventListeners.js +6 -14
- package/dist/cjs/hooks/useEditor.js +2 -13
- package/dist/cjs/hooks/useNodeViewDescription.js +15 -38
- package/dist/cjs/plugins/beforeInputPlugin.js +41 -47
- package/dist/cjs/plugins/componentEventListeners.js +2 -9
- package/dist/cjs/tiptap/utils/ssrJSDOMPatch.js +59 -0
- package/dist/cjs/viewdesc.js +3 -10
- package/dist/esm/ReactEditorView.js +0 -2
- package/dist/esm/components/ChildNodeViews.js +7 -12
- package/dist/esm/components/CursorWrapper.js +10 -9
- package/dist/esm/components/TextNodeView.js +38 -112
- package/dist/esm/components/WidgetView.js +1 -0
- package/dist/esm/hooks/useComponentEventListeners.js +6 -14
- package/dist/esm/hooks/useEditor.js +2 -13
- package/dist/esm/hooks/useNodeViewDescription.js +16 -39
- package/dist/esm/plugins/beforeInputPlugin.js +41 -47
- package/dist/esm/plugins/componentEventListeners.js +2 -9
- package/dist/esm/tiptap/hooks/useTiptapEditor.js +7 -1
- package/dist/esm/tiptap/utils/ssrJSDOMPatch.js +56 -0
- package/dist/esm/viewdesc.js +3 -10
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/ReactEditorView.d.ts +0 -4
- package/dist/types/components/CursorWrapper.d.ts +2 -4
- package/dist/types/components/TextNodeView.d.ts +4 -14
- package/dist/types/components/WidgetViewComponentProps.d.ts +4 -3
- package/dist/types/constants.d.ts +1 -1
- package/dist/types/hooks/useComponentEventListeners.d.ts +1 -1
- package/dist/types/plugins/componentEventListeners.d.ts +2 -3
- package/dist/types/props.d.ts +26 -26
- package/dist/types/tiptap/hooks/useTiptapEditor.d.ts +7 -0
- package/dist/types/tiptap/utils/ssrJSDOMPatch.d.ts +1 -0
- package/dist/types/viewdesc.d.ts +2 -2
- package/package.json +1 -2
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is used to patch global DOM variables in a NodeJS environment.
|
|
3
|
+
* This is needed for ProseMirror to work in a NodeJS environment.
|
|
4
|
+
*/ if (typeof window === "undefined") {
|
|
5
|
+
// Make sure to import JSDOM only in a NodeJS environment.
|
|
6
|
+
// The magic comments prevent bundlers from statically analyzing this require:
|
|
7
|
+
// - webpackIgnore: true → webpack / Next.js
|
|
8
|
+
// - @vite-ignore → Vite
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
10
|
+
const jsdom = require(/* webpackIgnore: true */ /* @vite-ignore */ "jsdom");
|
|
11
|
+
const html = `
|
|
12
|
+
<!DOCTYPE html>
|
|
13
|
+
<html>
|
|
14
|
+
<head>
|
|
15
|
+
<title>Testing</title>
|
|
16
|
+
</head>
|
|
17
|
+
<body></body>
|
|
18
|
+
</html>
|
|
19
|
+
`;
|
|
20
|
+
const { window: window1 } = new jsdom.JSDOM(html);
|
|
21
|
+
global.window = window1;
|
|
22
|
+
global.document = window1.document;
|
|
23
|
+
// Use Object.defineProperty for navigator since it's read-only in Node.js 22+
|
|
24
|
+
Object.defineProperty(global, "navigator", {
|
|
25
|
+
value: window1.navigator,
|
|
26
|
+
writable: true,
|
|
27
|
+
configurable: true
|
|
28
|
+
});
|
|
29
|
+
global.innerHeight = 0;
|
|
30
|
+
global.SVGElement = window1.SVGElement;
|
|
31
|
+
// @ts-expect-error stub getSelection for SSR
|
|
32
|
+
document.getSelection = ()=>({});
|
|
33
|
+
document.createRange = ()=>({
|
|
34
|
+
setStart () {},
|
|
35
|
+
setEnd () {},
|
|
36
|
+
// @ts-expect-error stub getBoundingClientRect for SSR
|
|
37
|
+
getClientRects () {
|
|
38
|
+
return {
|
|
39
|
+
left: 0,
|
|
40
|
+
top: 0,
|
|
41
|
+
right: 0,
|
|
42
|
+
bottom: 0
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
// @ts-expect-error stub getBoundingClientRect for SSR
|
|
46
|
+
getBoundingClientRect () {
|
|
47
|
+
return {
|
|
48
|
+
left: 0,
|
|
49
|
+
top: 0,
|
|
50
|
+
right: 0,
|
|
51
|
+
bottom: 0
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
export { };
|
package/dist/esm/viewdesc.js
CHANGED
|
@@ -235,9 +235,7 @@ export class ViewDesc {
|
|
|
235
235
|
prev = i ? this.children[i - 1] : null;
|
|
236
236
|
if (!prev || prev.dom.parentNode == this.contentDOM) break;
|
|
237
237
|
}
|
|
238
|
-
if (prev && side && enter && !prev.border && !prev.domAtom)
|
|
239
|
-
return prev.domFromPos(prev.size, side);
|
|
240
|
-
}
|
|
238
|
+
if (prev && side && enter && !prev.border && !prev.domAtom) return prev.domFromPos(prev.size, side);
|
|
241
239
|
return {
|
|
242
240
|
node: this.contentDOM,
|
|
243
241
|
offset: prev ? domIndex(prev.dom) + 1 : 0
|
|
@@ -372,9 +370,7 @@ export class ViewDesc {
|
|
|
372
370
|
const after = selRange.focusNode.childNodes[selRange.focusOffset];
|
|
373
371
|
if (after && after.contentEditable == "false") force = true;
|
|
374
372
|
}
|
|
375
|
-
if (!(force || brKludge && browser.safari) && isEquivalentPosition(anchorDOM.node, anchorDOM.offset, selRange.anchorNode, selRange.anchorOffset) && isEquivalentPosition(headDOM.node, headDOM.offset, selRange.focusNode, selRange.focusOffset))
|
|
376
|
-
return;
|
|
377
|
-
}
|
|
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;
|
|
378
374
|
// Selection.extend can be used to create an 'inverted' selection
|
|
379
375
|
// (one where the focus is before the anchor), but not all
|
|
380
376
|
// browsers support it yet.
|
|
@@ -649,10 +645,7 @@ export class TextViewDesc extends NodeViewDesc {
|
|
|
649
645
|
skip: skip || true
|
|
650
646
|
};
|
|
651
647
|
}
|
|
652
|
-
update(
|
|
653
|
-
if (this.dirty == NODE_DIRTY || this.dirty != NOT_DIRTY && !this.inParent() || !node.sameMarkup(this.node)) return false;
|
|
654
|
-
this.updateOuterDeco(outerDeco);
|
|
655
|
-
this.node = node;
|
|
648
|
+
update(_node, _outerDeco, _innerDeco, _view) {
|
|
656
649
|
this.dirty = NOT_DIRTY;
|
|
657
650
|
return true;
|
|
658
651
|
}
|