@handlewithcare/react-prosemirror 2.0.0 → 2.2.0

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 (44) hide show
  1. package/README.md +29 -5
  2. package/dist/cjs/components/CustomNodeView.js +80 -4
  3. package/dist/cjs/components/MarkView.js +6 -3
  4. package/dist/cjs/components/NodeView.js +13 -133
  5. package/dist/cjs/components/OutputSpec.js +1 -1
  6. package/dist/cjs/components/ReactNodeView.js +136 -0
  7. package/dist/cjs/components/TextNodeView.js +2 -2
  8. package/dist/cjs/findDOMNode.js +46 -0
  9. package/dist/cjs/hooks/useEditor.js +14 -3
  10. package/dist/cjs/hooks/useEditorEffect.js +5 -2
  11. package/dist/cjs/hooks/useIsNodeSelected.js +21 -0
  12. package/dist/cjs/index.js +4 -0
  13. package/dist/cjs/plugins/componentEventListeners.js +1 -1
  14. package/dist/cjs/plugins/reactKeys.js +1 -1
  15. package/dist/cjs/selection/SelectionDOMObserver.js +0 -3
  16. package/dist/cjs/selection/selectionToDOM.js +1 -1
  17. package/dist/cjs/viewdesc.js +18 -8
  18. package/dist/esm/components/CustomNodeView.js +82 -6
  19. package/dist/esm/components/MarkView.js +6 -3
  20. package/dist/esm/components/NodeView.js +14 -134
  21. package/dist/esm/components/OutputSpec.js +1 -1
  22. package/dist/esm/components/ReactNodeView.js +85 -0
  23. package/dist/esm/components/TextNodeView.js +1 -1
  24. package/dist/esm/findDOMNode.js +31 -0
  25. package/dist/esm/hooks/useEditor.js +14 -3
  26. package/dist/esm/hooks/useEditorEffect.js +5 -2
  27. package/dist/esm/hooks/useIsNodeSelected.js +11 -0
  28. package/dist/esm/index.js +1 -0
  29. package/dist/esm/plugins/componentEventListeners.js +1 -1
  30. package/dist/esm/plugins/reactKeys.js +1 -1
  31. package/dist/esm/selection/SelectionDOMObserver.js +0 -3
  32. package/dist/esm/selection/selectionToDOM.js +1 -1
  33. package/dist/esm/viewdesc.js +18 -8
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. package/dist/types/components/CustomNodeView.d.ts +3 -12
  36. package/dist/types/components/ReactNodeView.d.ts +11 -0
  37. package/dist/types/contexts/EditorContext.d.ts +2 -0
  38. package/dist/types/findDOMNode.d.ts +3 -0
  39. package/dist/types/hooks/useEditor.d.ts +1 -0
  40. package/dist/types/hooks/useIsNodeSelected.d.ts +1 -0
  41. package/dist/types/index.d.ts +1 -0
  42. package/dist/types/selection/SelectionDOMObserver.d.ts +0 -1
  43. package/dist/types/viewdesc.d.ts +19 -6
  44. package/package.json +19 -6
@@ -27,7 +27,6 @@ export declare class SelectionDOMObserver {
27
27
  updateSelection(): void;
28
28
  selectionToDOM(): void;
29
29
  flush(): void;
30
- selectionChanged(sel: DOMSelectionRange): boolean;
31
30
  forceFlush(): void;
32
31
  onSelectionChange(): void;
33
32
  }
@@ -1,6 +1,10 @@
1
1
  import { Mark, Node, TagParseRule } from "prosemirror-model";
2
2
  import { Decoration, DecorationSource, EditorView } from "prosemirror-view";
3
3
  import { DOMNode } from "./dom.js";
4
+ export type ViewMutationRecord = MutationRecord | {
5
+ type: "selection";
6
+ target: DOMNode;
7
+ };
4
8
  export declare function sortViewDescs(a: ViewDesc, b: ViewDesc): number;
5
9
  export declare class ViewDesc {
6
10
  parent: ViewDesc | undefined;
@@ -45,8 +49,8 @@ export declare class ViewDesc {
45
49
  };
46
50
  emptyChildAt(side: number): boolean;
47
51
  domAfterPos(pos: number): DOMNode;
48
- setSelection(anchor: number, head: number, root: Document | ShadowRoot, force?: boolean): void;
49
- ignoreMutation(mutation: MutationRecord): boolean;
52
+ setSelection(anchor: number, head: number, view: EditorView, force?: boolean): void;
53
+ ignoreMutation(mutation: ViewMutationRecord): boolean;
50
54
  get contentLost(): boolean | null;
51
55
  markDirty(from: number, to: number): void;
52
56
  markParentsDirty(): void;
@@ -61,7 +65,7 @@ export declare class WidgetViewDesc extends ViewDesc {
61
65
  ignore: boolean;
62
66
  };
63
67
  stopEvent(event: Event): any;
64
- ignoreMutation(mutation: MutationRecord): any;
68
+ ignoreMutation(mutation: ViewMutationRecord): any;
65
69
  get domAtom(): boolean;
66
70
  get side(): number;
67
71
  }
@@ -75,11 +79,18 @@ export declare class CompositionViewDesc extends ViewDesc {
75
79
  node: Text;
76
80
  offset: number;
77
81
  };
78
- ignoreMutation(mut: MutationRecord): boolean;
82
+ ignoreMutation(mut: ViewMutationRecord): boolean;
83
+ }
84
+ export interface MarkView {
85
+ dom: DOMNode;
86
+ contentDOM?: HTMLElement | null;
87
+ ignoreMutation?: (mutation: ViewMutationRecord) => boolean;
88
+ destroy?: () => void;
79
89
  }
80
90
  export declare class MarkViewDesc extends ViewDesc {
81
91
  mark: Mark;
82
- constructor(parent: ViewDesc | undefined, children: ViewDesc[], getPos: () => number, mark: Mark, dom: DOMNode, contentDOM: HTMLElement);
92
+ spec: MarkView;
93
+ constructor(parent: ViewDesc | undefined, children: ViewDesc[], getPos: () => number, mark: Mark, dom: DOMNode, contentDOM: HTMLElement, spec: MarkView);
83
94
  parseRule(): {
84
95
  mark: string;
85
96
  attrs: import("prosemirror-model").Attrs;
@@ -87,6 +98,8 @@ export declare class MarkViewDesc extends ViewDesc {
87
98
  } | null;
88
99
  matchesMark(mark: Mark): boolean;
89
100
  markDirty(from: number, to: number): void;
101
+ ignoreMutation(mutation: ViewMutationRecord): boolean;
102
+ destroy(): void;
90
103
  }
91
104
  export declare class NodeViewDesc extends ViewDesc {
92
105
  node: Node;
@@ -117,7 +130,7 @@ export declare class TextViewDesc extends NodeViewDesc {
117
130
  offset: number;
118
131
  };
119
132
  localPosFromDOM(dom: DOMNode, offset: number, bias: number): number;
120
- ignoreMutation(mutation: MutationRecord): boolean;
133
+ ignoreMutation(mutation: ViewMutationRecord): boolean;
121
134
  markDirty(from: number, to: number): void;
122
135
  get domAtom(): boolean;
123
136
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@handlewithcare/react-prosemirror",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "dist/cjs/index.js",
@@ -42,6 +42,11 @@
42
42
  "test": "yarn test:unit && yarn test:wdio"
43
43
  },
44
44
  "devDependencies": {
45
+ "@codemirror/commands": "^6.8.0",
46
+ "@codemirror/lang-javascript": "^6.2.2",
47
+ "@codemirror/state": "^6.5.1",
48
+ "@codemirror/view": "^6.36.2",
49
+ "@handlewithcare/remark-prosemirror": "^0.1.5",
45
50
  "@jest/globals": "^29.6.2",
46
51
  "@swc/cli": "^0.1.61",
47
52
  "@swc/core": "^1.3.32",
@@ -52,8 +57,10 @@
52
57
  "@types/jest": "^27.0.0",
53
58
  "@types/react": "^18.0.0",
54
59
  "@types/react-dom": "^18.0.0",
60
+ "@types/react-reconciler": "^0.28.9",
55
61
  "@typescript-eslint/eslint-plugin": "^5.51.0",
56
62
  "@typescript-eslint/parser": "^5.51.0",
63
+ "@uiw/react-codemirror": "^4.23.7",
57
64
  "@vitejs/plugin-react": "^4.3.1",
58
65
  "@wdio/browser-runner": "^9.0.9",
59
66
  "@wdio/cli": "^9.0.9",
@@ -76,9 +83,12 @@
76
83
  "jest-environment-jsdom": "^29.7.0",
77
84
  "lint-staged": "^13.1.0",
78
85
  "markdown-toc": "^1.2.0",
86
+ "mdast-util-gfm-table": "^2.0.0",
87
+ "micromark-extension-gfm-table": "^2.1.1",
79
88
  "prettier": "^2.8.3",
80
89
  "prosemirror-commands": "^1.5.0",
81
90
  "prosemirror-gapcursor": "^1.3.2",
91
+ "prosemirror-history": "^1.4.1",
82
92
  "prosemirror-inputrules": "^1.4.0",
83
93
  "prosemirror-keymap": "^1.2.1",
84
94
  "prosemirror-model": "^1.22.3",
@@ -87,27 +97,30 @@
87
97
  "prosemirror-tables": "^1.3.7",
88
98
  "prosemirror-test-builder": "^1.1.1",
89
99
  "prosemirror-transform": "^1.8.0",
90
- "prosemirror-view": "^1.34.2",
100
+ "prosemirror-view": "1.37.1",
91
101
  "react": "^18.2.0",
92
102
  "react-dom": "^18.2.0",
103
+ "remark-parse": "^11.0.0",
93
104
  "rimraf": "^3.0.2",
94
105
  "tsx": "^4.19.1",
95
106
  "typescript": "^4.9.5",
107
+ "unified": "^11.0.5",
96
108
  "vite": "^5.4.5",
97
109
  "webdriverio": "^9.0.9"
98
110
  },
99
111
  "peerDependencies": {
100
112
  "prosemirror-model": "^1.0.0",
101
113
  "prosemirror-state": "^1.0.0",
102
- "prosemirror-view": "1.34.2",
103
- "react": "17 - 19",
104
- "react-dom": "17 - 19"
114
+ "prosemirror-view": "1.37.1",
115
+ "react": ">=17 <=19.0.0",
116
+ "react-dom": ">=17 <=19.0.0"
105
117
  },
106
118
  "packageManager": "yarn@4.5.3",
107
119
  "engines": {
108
120
  "node": ">=16.9"
109
121
  },
110
122
  "dependencies": {
111
- "classnames": "^2.3.2"
123
+ "classnames": "^2.3.2",
124
+ "react-reconciler": "0.31.0"
112
125
  }
113
126
  }