@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.
Files changed (38) hide show
  1. package/dist/cjs/ReactEditorView.js +0 -2
  2. package/dist/cjs/components/ChildNodeViews.js +7 -12
  3. package/dist/cjs/components/CursorWrapper.js +9 -8
  4. package/dist/cjs/components/TextNodeView.js +38 -112
  5. package/dist/cjs/components/WidgetView.js +1 -0
  6. package/dist/cjs/hooks/useComponentEventListeners.js +6 -14
  7. package/dist/cjs/hooks/useEditor.js +2 -13
  8. package/dist/cjs/hooks/useNodeViewDescription.js +15 -38
  9. package/dist/cjs/plugins/beforeInputPlugin.js +41 -47
  10. package/dist/cjs/plugins/componentEventListeners.js +2 -9
  11. package/dist/cjs/tiptap/utils/ssrJSDOMPatch.js +59 -0
  12. package/dist/cjs/viewdesc.js +3 -10
  13. package/dist/esm/ReactEditorView.js +0 -2
  14. package/dist/esm/components/ChildNodeViews.js +7 -12
  15. package/dist/esm/components/CursorWrapper.js +10 -9
  16. package/dist/esm/components/TextNodeView.js +38 -112
  17. package/dist/esm/components/WidgetView.js +1 -0
  18. package/dist/esm/hooks/useComponentEventListeners.js +6 -14
  19. package/dist/esm/hooks/useEditor.js +2 -13
  20. package/dist/esm/hooks/useNodeViewDescription.js +16 -39
  21. package/dist/esm/plugins/beforeInputPlugin.js +41 -47
  22. package/dist/esm/plugins/componentEventListeners.js +2 -9
  23. package/dist/esm/tiptap/hooks/useTiptapEditor.js +7 -1
  24. package/dist/esm/tiptap/utils/ssrJSDOMPatch.js +56 -0
  25. package/dist/esm/viewdesc.js +3 -10
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/dist/types/ReactEditorView.d.ts +0 -4
  28. package/dist/types/components/CursorWrapper.d.ts +2 -4
  29. package/dist/types/components/TextNodeView.d.ts +4 -14
  30. package/dist/types/components/WidgetViewComponentProps.d.ts +4 -3
  31. package/dist/types/constants.d.ts +1 -1
  32. package/dist/types/hooks/useComponentEventListeners.d.ts +1 -1
  33. package/dist/types/plugins/componentEventListeners.d.ts +2 -3
  34. package/dist/types/props.d.ts +26 -26
  35. package/dist/types/tiptap/hooks/useTiptapEditor.d.ts +7 -0
  36. package/dist/types/tiptap/utils/ssrJSDOMPatch.d.ts +1 -0
  37. package/dist/types/viewdesc.d.ts +2 -2
  38. 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 { };
@@ -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(node, outerDeco, _innerDeco, _view) {
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
  }