@handlewithcare/react-prosemirror 2.4.12 → 2.5.1

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 (149) hide show
  1. package/dist/cjs/AbstractEditorView.js +4 -0
  2. package/dist/cjs/ReactEditorView.js +156 -0
  3. package/dist/cjs/StaticEditorView.js +86 -0
  4. package/dist/cjs/components/ChildNodeViews.js +58 -29
  5. package/dist/cjs/components/CustomNodeView.js +77 -137
  6. package/dist/cjs/{hooks/useNodePos.js → components/DefaultNodeView.js} +24 -26
  7. package/dist/cjs/components/DocNodeView.js +33 -41
  8. package/dist/cjs/components/MarkView.js +1 -2
  9. package/dist/cjs/components/NativeWidgetView.js +2 -3
  10. package/dist/cjs/components/NodeView.js +31 -21
  11. package/dist/cjs/components/ProseMirror.js +25 -17
  12. package/dist/cjs/components/ProseMirrorDoc.js +7 -27
  13. package/dist/cjs/components/ReactNodeView.js +98 -61
  14. package/dist/cjs/components/SeparatorHackView.js +1 -2
  15. package/dist/cjs/components/TextNodeView.js +4 -5
  16. package/dist/cjs/components/TrailingHackView.js +1 -2
  17. package/dist/cjs/components/WidgetView.js +2 -4
  18. package/dist/cjs/constants.js +33 -0
  19. package/dist/cjs/hooks/useEditor.js +33 -229
  20. package/dist/cjs/hooks/useEditorEffect.js +2 -2
  21. package/dist/cjs/hooks/useEditorEventCallback.js +8 -5
  22. package/dist/cjs/hooks/useIgnoreMutation.js +1 -1
  23. package/dist/cjs/hooks/useNodeViewDescriptor.js +123 -80
  24. package/dist/cjs/hooks/useReactKeys.js +1 -1
  25. package/dist/cjs/hooks/useSelectNode.js +9 -7
  26. package/dist/cjs/hooks/useStopEvent.js +1 -1
  27. package/dist/cjs/plugins/beforeInputPlugin.js +12 -0
  28. package/dist/cjs/testing/editorViewTestHelpers.js +0 -2
  29. package/dist/cjs/viewdesc.js +104 -25
  30. package/dist/esm/AbstractEditorView.js +1 -0
  31. package/dist/esm/ReactEditorView.js +156 -0
  32. package/dist/esm/StaticEditorView.js +76 -0
  33. package/dist/esm/components/ChildNodeViews.js +59 -31
  34. package/dist/esm/components/CustomNodeView.js +78 -138
  35. package/dist/esm/components/DefaultNodeView.js +16 -0
  36. package/dist/esm/components/DocNodeView.js +33 -41
  37. package/dist/esm/components/MarkView.js +1 -2
  38. package/dist/esm/components/NativeWidgetView.js +2 -3
  39. package/dist/esm/components/NodeView.js +32 -22
  40. package/dist/esm/components/ProseMirror.js +25 -17
  41. package/dist/esm/components/ProseMirrorDoc.js +7 -28
  42. package/dist/esm/components/ReactNodeView.js +99 -62
  43. package/dist/esm/components/SeparatorHackView.js +1 -2
  44. package/dist/esm/components/TextNodeView.js +4 -5
  45. package/dist/esm/components/TrailingHackView.js +1 -2
  46. package/dist/esm/components/WidgetView.js +2 -4
  47. package/dist/esm/constants.js +15 -0
  48. package/dist/esm/hooks/useEditor.js +29 -218
  49. package/dist/esm/hooks/useEditorEffect.js +2 -2
  50. package/dist/esm/hooks/useEditorEventCallback.js +8 -5
  51. package/dist/esm/hooks/useIgnoreMutation.js +1 -1
  52. package/dist/esm/hooks/useNodeViewDescriptor.js +125 -82
  53. package/dist/esm/hooks/useReactKeys.js +1 -1
  54. package/dist/esm/hooks/useSelectNode.js +9 -7
  55. package/dist/esm/hooks/useStopEvent.js +1 -1
  56. package/dist/esm/plugins/beforeInputPlugin.js +12 -0
  57. package/dist/esm/testing/editorViewTestHelpers.js +0 -2
  58. package/dist/esm/viewdesc.js +94 -18
  59. package/dist/tsconfig.tsbuildinfo +1 -1
  60. package/dist/types/AbstractEditorView.d.ts +27 -0
  61. package/dist/types/ReactEditorView.d.ts +80 -0
  62. package/dist/types/StaticEditorView.d.ts +24 -0
  63. package/dist/types/components/ChildNodeViews.d.ts +2 -2
  64. package/dist/types/components/CustomNodeView.d.ts +3 -3
  65. package/dist/types/components/DefaultNodeView.d.ts +3 -0
  66. package/dist/types/components/DocNodeView.d.ts +9 -17
  67. package/dist/types/components/MarkView.d.ts +2 -2
  68. package/dist/types/components/NativeWidgetView.d.ts +2 -2
  69. package/dist/types/components/NodeView.d.ts +5 -5
  70. package/dist/types/components/NodeViewComponentProps.d.ts +3 -4
  71. package/dist/types/components/ProseMirrorDoc.d.ts +14 -8
  72. package/dist/types/components/ReactNodeView.d.ts +4 -2
  73. package/dist/types/components/SeparatorHackView.d.ts +2 -2
  74. package/dist/types/components/TextNodeView.d.ts +4 -3
  75. package/dist/types/components/TrailingHackView.d.ts +2 -2
  76. package/dist/types/components/WidgetView.d.ts +2 -2
  77. package/dist/types/constants.d.ts +4 -0
  78. package/dist/types/contexts/EditorContext.d.ts +6 -4
  79. package/dist/types/contexts/IgnoreMutationContext.d.ts +2 -1
  80. package/dist/types/contexts/NodeViewContext.d.ts +3 -1
  81. package/dist/types/contexts/SelectNodeContext.d.ts +3 -1
  82. package/dist/types/contexts/StopEventContext.d.ts +2 -1
  83. package/dist/types/decorations/computeDocDeco.d.ts +3 -2
  84. package/dist/types/decorations/viewDecorations.d.ts +3 -2
  85. package/dist/types/hooks/useEditor.d.ts +5 -46
  86. package/dist/types/hooks/useNodeViewDescriptor.d.ts +18 -10
  87. package/dist/types/hooks/useReactKeys.d.ts +1 -1
  88. package/dist/types/hooks/useSelectNode.d.ts +2 -1
  89. package/dist/types/props.d.ts +3 -3
  90. package/dist/types/viewdesc.d.ts +29 -11
  91. package/package.json +7 -3
  92. package/dist/cjs/components/Editor.js +0 -28
  93. package/dist/cjs/components/NodeViews.js +0 -73
  94. package/dist/cjs/components/__tests__/LayoutGroup.test.js +0 -141
  95. package/dist/cjs/components/__tests__/ProseMirror.test.js +0 -255
  96. package/dist/cjs/contexts/NodeViewsContext.js +0 -10
  97. package/dist/cjs/hooks/__tests__/useEditorViewLayoutEffect.test.js +0 -107
  98. package/dist/cjs/hooks/__tests__/useNodeViews.test.js +0 -159
  99. package/dist/cjs/hooks/useClientOnly.js +0 -19
  100. package/dist/cjs/hooks/useEditorView.js +0 -100
  101. package/dist/cjs/hooks/useNodeViews.js +0 -100
  102. package/dist/cjs/nodeViews/createReactNodeViewConstructor.js +0 -244
  103. package/dist/cjs/nodeViews/phrasingContentTags.js +0 -57
  104. package/dist/cjs/plugins/__tests__/react.test.js +0 -139
  105. package/dist/cjs/plugins/react.js +0 -71
  106. package/dist/cjs/selection/SelectionDOMObserver.js +0 -171
  107. package/dist/cjs/selection/hasFocusAndSelection.js +0 -35
  108. package/dist/cjs/selection/selectionFromDOM.js +0 -77
  109. package/dist/cjs/selection/selectionToDOM.js +0 -226
  110. package/dist/cjs/ssr.js +0 -85
  111. package/dist/esm/components/Editor.js +0 -15
  112. package/dist/esm/components/NodeViews.js +0 -26
  113. package/dist/esm/components/__tests__/LayoutGroup.test.js +0 -98
  114. package/dist/esm/components/__tests__/ProseMirror.test.js +0 -207
  115. package/dist/esm/contexts/NodeViewsContext.js +0 -9
  116. package/dist/esm/hooks/__tests__/useEditorViewLayoutEffect.test.js +0 -98
  117. package/dist/esm/hooks/__tests__/useNodeViews.test.js +0 -116
  118. package/dist/esm/hooks/useClientOnly.js +0 -9
  119. package/dist/esm/hooks/useEditorView.js +0 -99
  120. package/dist/esm/hooks/useNodePos.js +0 -16
  121. package/dist/esm/hooks/useNodeViews.js +0 -53
  122. package/dist/esm/nodeViews/createReactNodeViewConstructor.js +0 -214
  123. package/dist/esm/nodeViews/phrasingContentTags.js +0 -49
  124. package/dist/esm/plugins/__tests__/react.test.js +0 -135
  125. package/dist/esm/plugins/react.js +0 -64
  126. package/dist/esm/selection/SelectionDOMObserver.js +0 -161
  127. package/dist/esm/selection/hasFocusAndSelection.js +0 -17
  128. package/dist/esm/selection/selectionFromDOM.js +0 -59
  129. package/dist/esm/selection/selectionToDOM.js +0 -196
  130. package/dist/esm/ssr.js +0 -82
  131. package/dist/types/components/Editor.d.ts +0 -7
  132. package/dist/types/components/NodeViews.d.ts +0 -6
  133. package/dist/types/components/__tests__/LayoutGroup.test.d.ts +0 -1
  134. package/dist/types/contexts/NodeViewsContext.d.ts +0 -19
  135. package/dist/types/hooks/__tests__/useEditorViewLayoutEffect.test.d.ts +0 -1
  136. package/dist/types/hooks/__tests__/useNodeViews.test.d.ts +0 -1
  137. package/dist/types/hooks/useClientOnly.d.ts +0 -1
  138. package/dist/types/hooks/useEditorView.d.ts +0 -23
  139. package/dist/types/hooks/useNodePos.d.ts +0 -9
  140. package/dist/types/hooks/useNodeViews.d.ts +0 -5
  141. package/dist/types/nodeViews/createReactNodeViewConstructor.d.ts +0 -48
  142. package/dist/types/nodeViews/phrasingContentTags.d.ts +0 -1
  143. package/dist/types/plugins/__tests__/react.test.d.ts +0 -1
  144. package/dist/types/plugins/react.d.ts +0 -21
  145. package/dist/types/selection/SelectionDOMObserver.d.ts +0 -33
  146. package/dist/types/selection/hasFocusAndSelection.d.ts +0 -3
  147. package/dist/types/selection/selectionFromDOM.d.ts +0 -4
  148. package/dist/types/selection/selectionToDOM.d.ts +0 -9
  149. package/dist/types/ssr.d.ts +0 -19
@@ -1,107 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-empty-function */ "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _react = require("@testing-library/react");
6
- const _react1 = /*#__PURE__*/ _interopRequireDefault(require("react"));
7
- const _layoutGroupJs = require("../../components/LayoutGroup.js");
8
- const _editorContextJs = require("../../contexts/EditorContext.js");
9
- const _useEditorEffectJs = require("../useEditorEffect.js");
10
- function _interopRequireDefault(obj) {
11
- return obj && obj.__esModule ? obj : {
12
- default: obj
13
- };
14
- }
15
- function TestComponent(param) {
16
- let { effect , dependencies =[] } = param;
17
- (0, _useEditorEffectJs.useEditorEffect)(effect, [
18
- effect,
19
- ...dependencies
20
- ]);
21
- return null;
22
- }
23
- describe("useEditorViewLayoutEffect", ()=>{
24
- it("should run the effect", ()=>{
25
- const effect = jest.fn();
26
- const editorView = {};
27
- const editorState = {};
28
- const registerEventListener = ()=>{};
29
- const unregisterEventListener = ()=>{};
30
- (0, _react.render)(/*#__PURE__*/ _react1.default.createElement(_layoutGroupJs.LayoutGroup, null, /*#__PURE__*/ _react1.default.createElement(_editorContextJs.EditorContext.Provider, {
31
- value: {
32
- editorView,
33
- editorState,
34
- registerEventListener,
35
- unregisterEventListener
36
- }
37
- }, /*#__PURE__*/ _react1.default.createElement(TestComponent, {
38
- effect: effect
39
- }))));
40
- expect(effect).toHaveBeenCalled();
41
- expect(effect).toHaveBeenCalledWith(editorView);
42
- });
43
- it("should not re-run the effect if no dependencies change", ()=>{
44
- const effect = jest.fn();
45
- const editorView = {};
46
- const editorState = {};
47
- const registerEventListener = ()=>{};
48
- const unregisterEventListener = ()=>{};
49
- const { rerender } = (0, _react.render)(/*#__PURE__*/ _react1.default.createElement(_layoutGroupJs.LayoutGroup, null, /*#__PURE__*/ _react1.default.createElement(_editorContextJs.EditorContext.Provider, {
50
- value: {
51
- editorView,
52
- editorState,
53
- registerEventListener,
54
- unregisterEventListener
55
- }
56
- }, /*#__PURE__*/ _react1.default.createElement(TestComponent, {
57
- effect: effect,
58
- dependencies: []
59
- }))));
60
- rerender(/*#__PURE__*/ _react1.default.createElement(_layoutGroupJs.LayoutGroup, null, /*#__PURE__*/ _react1.default.createElement(_editorContextJs.EditorContext.Provider, {
61
- value: {
62
- editorView,
63
- editorState,
64
- registerEventListener,
65
- unregisterEventListener
66
- }
67
- }, /*#__PURE__*/ _react1.default.createElement(TestComponent, {
68
- effect: effect,
69
- dependencies: []
70
- }))));
71
- expect(effect).toHaveBeenCalledTimes(1);
72
- });
73
- it("should re-run the effect if dependencies change", ()=>{
74
- const effect = jest.fn();
75
- const editorView = {};
76
- const editorState = {};
77
- const registerEventListener = ()=>{};
78
- const unregisterEventListener = ()=>{};
79
- const { rerender } = (0, _react.render)(/*#__PURE__*/ _react1.default.createElement(_layoutGroupJs.LayoutGroup, null, /*#__PURE__*/ _react1.default.createElement(_editorContextJs.EditorContext.Provider, {
80
- value: {
81
- editorView,
82
- editorState,
83
- registerEventListener,
84
- unregisterEventListener
85
- }
86
- }, /*#__PURE__*/ _react1.default.createElement(TestComponent, {
87
- effect: effect,
88
- dependencies: [
89
- "one"
90
- ]
91
- }))));
92
- rerender(/*#__PURE__*/ _react1.default.createElement(_layoutGroupJs.LayoutGroup, null, /*#__PURE__*/ _react1.default.createElement(_editorContextJs.EditorContext.Provider, {
93
- value: {
94
- editorView,
95
- editorState,
96
- registerEventListener,
97
- unregisterEventListener
98
- }
99
- }, /*#__PURE__*/ _react1.default.createElement(TestComponent, {
100
- effect: effect,
101
- dependencies: [
102
- "two"
103
- ]
104
- }))));
105
- expect(effect).toHaveBeenCalledTimes(2);
106
- });
107
- });
@@ -1,159 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _react = require("@testing-library/react");
6
- const _prosemirrorModel = require("prosemirror-model");
7
- const _prosemirrorState = require("prosemirror-state");
8
- const _react1 = /*#__PURE__*/ _interopRequireWildcard(require("react"));
9
- const _proseMirrorJs = require("../../components/ProseMirror.js");
10
- const _reactJs = require("../../plugins/react.js");
11
- function _getRequireWildcardCache(nodeInterop) {
12
- if (typeof WeakMap !== "function") return null;
13
- var cacheBabelInterop = new WeakMap();
14
- var cacheNodeInterop = new WeakMap();
15
- return (_getRequireWildcardCache = function(nodeInterop) {
16
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
17
- })(nodeInterop);
18
- }
19
- function _interopRequireWildcard(obj, nodeInterop) {
20
- if (!nodeInterop && obj && obj.__esModule) {
21
- return obj;
22
- }
23
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
24
- return {
25
- default: obj
26
- };
27
- }
28
- var cache = _getRequireWildcardCache(nodeInterop);
29
- if (cache && cache.has(obj)) {
30
- return cache.get(obj);
31
- }
32
- var newObj = {};
33
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
34
- for(var key in obj){
35
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
36
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
37
- if (desc && (desc.get || desc.set)) {
38
- Object.defineProperty(newObj, key, desc);
39
- } else {
40
- newObj[key] = obj[key];
41
- }
42
- }
43
- }
44
- newObj.default = obj;
45
- if (cache) {
46
- cache.set(obj, newObj);
47
- }
48
- return newObj;
49
- }
50
- // Mock `ReactDOM.flushSync` to call `act` to flush updates from DOM mutations.
51
- jest.mock("react-dom", ()=>({
52
- ...jest.requireActual("react-dom"),
53
- flushSync: (fn)=>(0, _react.act)(fn)
54
- }));
55
- const schema = new _prosemirrorModel.Schema({
56
- nodes: {
57
- doc: {
58
- content: "block+"
59
- },
60
- list: {
61
- group: "block",
62
- content: "list_item+"
63
- },
64
- list_item: {
65
- content: "inline*"
66
- },
67
- text: {
68
- group: "inline"
69
- }
70
- }
71
- });
72
- const state = _prosemirrorState.EditorState.create({
73
- doc: schema.topNodeType.create(null, schema.nodes.list.createAndFill()),
74
- schema,
75
- plugins: [
76
- (0, _reactJs.react)()
77
- ]
78
- });
79
- describe("useNodeViews", ()=>{
80
- it("should render node views", ()=>{
81
- function List(param) {
82
- let { children } = param;
83
- return /*#__PURE__*/ _react1.default.createElement(_react1.default.Fragment, null, /*#__PURE__*/ _react1.default.createElement("span", {
84
- contentEditable: false
85
- }, "list"), /*#__PURE__*/ _react1.default.createElement("ul", null, children));
86
- }
87
- function ListItem(param) {
88
- let { children } = param;
89
- return /*#__PURE__*/ _react1.default.createElement(_react1.default.Fragment, null, /*#__PURE__*/ _react1.default.createElement("span", {
90
- contentEditable: false
91
- }, "list item"), /*#__PURE__*/ _react1.default.createElement("li", null, children));
92
- }
93
- const nodeViews = {
94
- list: ()=>({
95
- component: List,
96
- dom: document.createElement("div"),
97
- contentDOM: document.createElement("div")
98
- }),
99
- list_item: ()=>({
100
- component: ListItem,
101
- dom: document.createElement("div"),
102
- contentDOM: document.createElement("div")
103
- })
104
- };
105
- function TestEditor() {
106
- const [mount, setMount] = (0, _react1.useState)(null);
107
- return /*#__PURE__*/ _react1.default.createElement(_proseMirrorJs.ProseMirror, {
108
- mount: mount,
109
- nodeViews: nodeViews,
110
- defaultState: state
111
- }, /*#__PURE__*/ _react1.default.createElement("div", {
112
- ref: setMount
113
- }));
114
- }
115
- (0, _react.render)(/*#__PURE__*/ _react1.default.createElement(TestEditor, null));
116
- expect(_react.screen.getByText("list")).toBeTruthy();
117
- expect(_react.screen.getByText("list item")).toBeTruthy();
118
- });
119
- it("should render child node views as children of their parents", ()=>{
120
- const TestContext = /*#__PURE__*/ (0, _react1.createContext)("default");
121
- function List(param) {
122
- let { children } = param;
123
- return /*#__PURE__*/ _react1.default.createElement(TestContext.Provider, {
124
- value: "overriden"
125
- }, /*#__PURE__*/ _react1.default.createElement("ul", null, children));
126
- }
127
- function ListItem(param) {
128
- let { children } = param;
129
- const testContextValue = (0, _react1.useContext)(TestContext);
130
- return /*#__PURE__*/ _react1.default.createElement(_react1.default.Fragment, null, /*#__PURE__*/ _react1.default.createElement("span", {
131
- contentEditable: false
132
- }, testContextValue), /*#__PURE__*/ _react1.default.createElement("li", null, children));
133
- }
134
- const nodeViews = {
135
- list: ()=>({
136
- component: List,
137
- dom: document.createElement("div"),
138
- contentDOM: document.createElement("div")
139
- }),
140
- list_item: ()=>({
141
- component: ListItem,
142
- dom: document.createElement("div"),
143
- contentDOM: document.createElement("div")
144
- })
145
- };
146
- function TestEditor() {
147
- const [mount, setMount] = (0, _react1.useState)(null);
148
- return /*#__PURE__*/ _react1.default.createElement(_proseMirrorJs.ProseMirror, {
149
- mount: mount,
150
- nodeViews: nodeViews,
151
- defaultState: state
152
- }, /*#__PURE__*/ _react1.default.createElement("div", {
153
- ref: setMount
154
- }));
155
- }
156
- (0, _react.render)(/*#__PURE__*/ _react1.default.createElement(TestEditor, null));
157
- expect(_react.screen.getByText("overriden")).toBeTruthy();
158
- });
159
- });
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "useClientOnly", {
6
- enumerable: true,
7
- get: function() {
8
- return useClientOnly;
9
- }
10
- });
11
- const _react = require("react");
12
- // eslint-disable-next-line @typescript-eslint/no-empty-function
13
- function unsubscribe() {}
14
- function subscribe() {
15
- return unsubscribe;
16
- }
17
- function useClientOnly() {
18
- return (0, _react.useSyncExternalStore)(subscribe, ()=>true, ()=>false);
19
- }
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "useEditorView", {
6
- enumerable: true,
7
- get: ()=>useEditorView
8
- });
9
- const _prosemirrorModel = require("prosemirror-model");
10
- const _prosemirrorState = require("prosemirror-state");
11
- const _prosemirrorView = require("prosemirror-view");
12
- const _react = require("react");
13
- const _reactDom = require("react-dom");
14
- const _useComponentEventListenersJs = require("./useComponentEventListeners.js");
15
- const EMPTY_SCHEMA = new _prosemirrorModel.Schema({
16
- nodes: {
17
- doc: {
18
- content: "text*"
19
- },
20
- text: {
21
- inline: true
22
- }
23
- }
24
- });
25
- const EMPTY_STATE = _prosemirrorState.EditorState.create({
26
- schema: EMPTY_SCHEMA
27
- });
28
- let didWarnValueDefaultValue = false;
29
- function useEditorView(mount, options) {
30
- if (process.env.NODE_ENV !== "production") {
31
- if (options.defaultState !== undefined && options.state !== undefined && !didWarnValueDefaultValue) {
32
- console.error("A component contains a ProseMirror editor with both value and defaultValue props. " + "ProseMirror editors must be either controlled or uncontrolled " + "(specify either the state prop, or the defaultState prop, but not both). " + "Decide between using a controlled or uncontrolled ProseMirror editor " + "and remove one of these props. More info: " + "https://reactjs.org/link/controlled-components");
33
- didWarnValueDefaultValue = true;
34
- }
35
- }
36
- const defaultState = options.defaultState ?? EMPTY_STATE;
37
- const [_state, setState] = (0, _react.useState)(defaultState);
38
- const state = options.state ?? _state;
39
- const { componentEventListenersPlugin , registerEventListener , unregisterEventListener } = (0, _useComponentEventListenersJs.useComponentEventListeners)();
40
- const plugins = (0, _react.useMemo)(()=>[
41
- ...options.plugins ?? [],
42
- componentEventListenersPlugin
43
- ], [
44
- options.plugins,
45
- componentEventListenersPlugin
46
- ]);
47
- function dispatchTransaction(tr) {
48
- (0, _reactDom.flushSync)(()=>{
49
- if (!options.state) {
50
- setState((s)=>s.apply(tr));
51
- }
52
- if (options.dispatchTransaction) {
53
- options.dispatchTransaction.call(this, tr);
54
- }
55
- });
56
- }
57
- const directEditorProps = {
58
- ...options,
59
- state,
60
- plugins,
61
- dispatchTransaction
62
- };
63
- const [_view, setView] = (0, _react.useState)(null);
64
- const view = options.view ?? _view;
65
- (0, _react.useLayoutEffect)(()=>{
66
- return ()=>{
67
- if (_view) {
68
- _view.destroy();
69
- }
70
- };
71
- }, [
72
- _view
73
- ]);
74
- // This effect runs on every render and handles the view lifecycle.
75
- // eslint-disable-next-line react-hooks/exhaustive-deps
76
- (0, _react.useLayoutEffect)(()=>{
77
- if (_view) {
78
- if (_view.dom === mount) {
79
- _view.setProps(directEditorProps);
80
- } else {
81
- setView(null);
82
- }
83
- } else if (mount) {
84
- setView(new _prosemirrorView.EditorView({
85
- mount
86
- }, directEditorProps));
87
- }
88
- });
89
- return (0, _react.useMemo)(()=>({
90
- editorState: state,
91
- editorView: view,
92
- registerEventListener,
93
- unregisterEventListener
94
- }), [
95
- state,
96
- _view,
97
- registerEventListener,
98
- unregisterEventListener
99
- ]);
100
- }
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "useNodeViews", {
6
- enumerable: true,
7
- get: ()=>useNodeViews
8
- });
9
- const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
10
- const _nodeViewsJs = require("../components/NodeViews.js");
11
- const _createReactNodeViewConstructorJs = require("../nodeViews/createReactNodeViewConstructor.js");
12
- function _getRequireWildcardCache(nodeInterop) {
13
- if (typeof WeakMap !== "function") return null;
14
- var cacheBabelInterop = new WeakMap();
15
- var cacheNodeInterop = new WeakMap();
16
- return (_getRequireWildcardCache = function(nodeInterop) {
17
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
18
- })(nodeInterop);
19
- }
20
- function _interopRequireWildcard(obj, nodeInterop) {
21
- if (!nodeInterop && obj && obj.__esModule) {
22
- return obj;
23
- }
24
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
25
- return {
26
- default: obj
27
- };
28
- }
29
- var cache = _getRequireWildcardCache(nodeInterop);
30
- if (cache && cache.has(obj)) {
31
- return cache.get(obj);
32
- }
33
- var newObj = {};
34
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
35
- for(var key in obj){
36
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
37
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
38
- if (desc && (desc.get || desc.set)) {
39
- Object.defineProperty(newObj, key, desc);
40
- } else {
41
- newObj[key] = obj[key];
42
- }
43
- }
44
- }
45
- newObj.default = obj;
46
- if (cache) {
47
- cache.set(obj, newObj);
48
- }
49
- return newObj;
50
- }
51
- function useNodeViews(nodeViews) {
52
- const [portals, setPortals] = (0, _react.useState)({});
53
- const registerPortal = (0, _react.useCallback)((view, getPos, portal)=>{
54
- const nearestAncestorKey = (0, _createReactNodeViewConstructorJs.findNodeKeyUp)(view, getPos());
55
- setPortals((oldPortals)=>{
56
- const oldChildPortals = oldPortals[nearestAncestorKey] ?? [];
57
- const newChildPortals = oldChildPortals.concat({
58
- getPos,
59
- portal
60
- });
61
- return {
62
- ...oldPortals,
63
- [nearestAncestorKey]: newChildPortals
64
- };
65
- });
66
- return ()=>{
67
- setPortals((oldPortals)=>{
68
- const oldChildPortals = oldPortals[nearestAncestorKey] ?? [];
69
- const newChildPortals = oldChildPortals.filter((param)=>{
70
- let { portal: p } = param;
71
- return p !== portal;
72
- });
73
- return {
74
- ...oldPortals,
75
- [nearestAncestorKey]: newChildPortals
76
- };
77
- });
78
- };
79
- }, []);
80
- const wrappedNodeViews = (0, _react.useMemo)(()=>{
81
- const nodeViewEntries = Object.entries(nodeViews ?? {});
82
- const wrappedNodeViewEntries = nodeViewEntries.map((param)=>{
83
- let [name, constructor] = param;
84
- return [
85
- name,
86
- (0, _createReactNodeViewConstructorJs.createReactNodeViewConstructor)(constructor, registerPortal)
87
- ];
88
- });
89
- return Object.fromEntries(wrappedNodeViewEntries);
90
- }, [
91
- nodeViews,
92
- registerPortal
93
- ]);
94
- return {
95
- nodeViews: wrappedNodeViews,
96
- nodeViewsComponent: /*#__PURE__*/ _react.default.createElement(_nodeViewsJs.NodeViews, {
97
- portals: portals
98
- })
99
- };
100
- }