@tiptap/vue-2 2.6.2 → 3.0.0-next.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 (187) hide show
  1. package/dist/index.cjs +395 -346
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +97 -0
  4. package/dist/index.d.ts +97 -0
  5. package/dist/index.js +353 -330
  6. package/dist/index.js.map +1 -1
  7. package/package.json +10 -12
  8. package/src/BubbleMenu.ts +16 -5
  9. package/src/FloatingMenu.ts +9 -4
  10. package/dist/index.umd.js +0 -379
  11. package/dist/index.umd.js.map +0 -1
  12. package/dist/packages/core/src/CommandManager.d.ts +0 -20
  13. package/dist/packages/core/src/Editor.d.ts +0 -163
  14. package/dist/packages/core/src/EventEmitter.d.ts +0 -11
  15. package/dist/packages/core/src/Extension.d.ts +0 -344
  16. package/dist/packages/core/src/ExtensionManager.d.ts +0 -55
  17. package/dist/packages/core/src/InputRule.d.ts +0 -42
  18. package/dist/packages/core/src/Mark.d.ts +0 -452
  19. package/dist/packages/core/src/Node.d.ts +0 -612
  20. package/dist/packages/core/src/NodePos.d.ts +0 -44
  21. package/dist/packages/core/src/NodeView.d.ts +0 -31
  22. package/dist/packages/core/src/PasteRule.d.ts +0 -50
  23. package/dist/packages/core/src/Tracker.d.ts +0 -11
  24. package/dist/packages/core/src/commands/blur.d.ts +0 -13
  25. package/dist/packages/core/src/commands/clearContent.d.ts +0 -14
  26. package/dist/packages/core/src/commands/clearNodes.d.ts +0 -13
  27. package/dist/packages/core/src/commands/command.d.ts +0 -18
  28. package/dist/packages/core/src/commands/createParagraphNear.d.ts +0 -13
  29. package/dist/packages/core/src/commands/cut.d.ts +0 -20
  30. package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +0 -13
  31. package/dist/packages/core/src/commands/deleteNode.d.ts +0 -15
  32. package/dist/packages/core/src/commands/deleteRange.d.ts +0 -14
  33. package/dist/packages/core/src/commands/deleteSelection.d.ts +0 -13
  34. package/dist/packages/core/src/commands/enter.d.ts +0 -13
  35. package/dist/packages/core/src/commands/exitCode.d.ts +0 -13
  36. package/dist/packages/core/src/commands/extendMarkRange.d.ts +0 -25
  37. package/dist/packages/core/src/commands/first.d.ts +0 -14
  38. package/dist/packages/core/src/commands/focus.d.ts +0 -27
  39. package/dist/packages/core/src/commands/forEach.d.ts +0 -14
  40. package/dist/packages/core/src/commands/index.d.ts +0 -55
  41. package/dist/packages/core/src/commands/insertContent.d.ts +0 -34
  42. package/dist/packages/core/src/commands/insertContentAt.d.ts +0 -47
  43. package/dist/packages/core/src/commands/join.d.ts +0 -41
  44. package/dist/packages/core/src/commands/joinItemBackward.d.ts +0 -13
  45. package/dist/packages/core/src/commands/joinItemForward.d.ts +0 -13
  46. package/dist/packages/core/src/commands/joinTextblockBackward.d.ts +0 -12
  47. package/dist/packages/core/src/commands/joinTextblockForward.d.ts +0 -12
  48. package/dist/packages/core/src/commands/keyboardShortcut.d.ts +0 -14
  49. package/dist/packages/core/src/commands/lift.d.ts +0 -17
  50. package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +0 -13
  51. package/dist/packages/core/src/commands/liftListItem.d.ts +0 -15
  52. package/dist/packages/core/src/commands/newlineInCode.d.ts +0 -13
  53. package/dist/packages/core/src/commands/resetAttributes.d.ts +0 -16
  54. package/dist/packages/core/src/commands/scrollIntoView.d.ts +0 -13
  55. package/dist/packages/core/src/commands/selectAll.d.ts +0 -13
  56. package/dist/packages/core/src/commands/selectNodeBackward.d.ts +0 -13
  57. package/dist/packages/core/src/commands/selectNodeForward.d.ts +0 -13
  58. package/dist/packages/core/src/commands/selectParentNode.d.ts +0 -13
  59. package/dist/packages/core/src/commands/selectTextblockEnd.d.ts +0 -13
  60. package/dist/packages/core/src/commands/selectTextblockStart.d.ts +0 -13
  61. package/dist/packages/core/src/commands/setContent.d.ts +0 -40
  62. package/dist/packages/core/src/commands/setMark.d.ts +0 -15
  63. package/dist/packages/core/src/commands/setMeta.d.ts +0 -16
  64. package/dist/packages/core/src/commands/setNode.d.ts +0 -16
  65. package/dist/packages/core/src/commands/setNodeSelection.d.ts +0 -14
  66. package/dist/packages/core/src/commands/setTextSelection.d.ts +0 -14
  67. package/dist/packages/core/src/commands/sinkListItem.d.ts +0 -15
  68. package/dist/packages/core/src/commands/splitBlock.d.ts +0 -17
  69. package/dist/packages/core/src/commands/splitListItem.d.ts +0 -16
  70. package/dist/packages/core/src/commands/toggleList.d.ts +0 -18
  71. package/dist/packages/core/src/commands/toggleMark.d.ts +0 -30
  72. package/dist/packages/core/src/commands/toggleNode.d.ts +0 -17
  73. package/dist/packages/core/src/commands/toggleWrap.d.ts +0 -16
  74. package/dist/packages/core/src/commands/undoInputRule.d.ts +0 -13
  75. package/dist/packages/core/src/commands/unsetAllMarks.d.ts +0 -13
  76. package/dist/packages/core/src/commands/unsetMark.d.ts +0 -25
  77. package/dist/packages/core/src/commands/updateAttributes.d.ts +0 -24
  78. package/dist/packages/core/src/commands/wrapIn.d.ts +0 -16
  79. package/dist/packages/core/src/commands/wrapInList.d.ts +0 -16
  80. package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +0 -5
  81. package/dist/packages/core/src/extensions/commands.d.ts +0 -3
  82. package/dist/packages/core/src/extensions/editable.d.ts +0 -2
  83. package/dist/packages/core/src/extensions/focusEvents.d.ts +0 -2
  84. package/dist/packages/core/src/extensions/index.d.ts +0 -6
  85. package/dist/packages/core/src/extensions/keymap.d.ts +0 -2
  86. package/dist/packages/core/src/extensions/tabindex.d.ts +0 -2
  87. package/dist/packages/core/src/helpers/combineTransactionSteps.d.ts +0 -10
  88. package/dist/packages/core/src/helpers/createChainableState.d.ts +0 -10
  89. package/dist/packages/core/src/helpers/createDocument.d.ts +0 -12
  90. package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +0 -15
  91. package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +0 -7
  92. package/dist/packages/core/src/helpers/findChildren.d.ts +0 -9
  93. package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +0 -10
  94. package/dist/packages/core/src/helpers/findParentNode.d.ts +0 -16
  95. package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +0 -17
  96. package/dist/packages/core/src/helpers/generateHTML.d.ts +0 -8
  97. package/dist/packages/core/src/helpers/generateJSON.d.ts +0 -8
  98. package/dist/packages/core/src/helpers/generateText.d.ts +0 -12
  99. package/dist/packages/core/src/helpers/getAttributes.d.ts +0 -9
  100. package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +0 -6
  101. package/dist/packages/core/src/helpers/getChangedRanges.d.ts +0 -11
  102. package/dist/packages/core/src/helpers/getDebugJSON.d.ts +0 -8
  103. package/dist/packages/core/src/helpers/getExtensionField.d.ts +0 -9
  104. package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +0 -2
  105. package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +0 -3
  106. package/dist/packages/core/src/helpers/getMarkRange.d.ts +0 -3
  107. package/dist/packages/core/src/helpers/getMarkType.d.ts +0 -2
  108. package/dist/packages/core/src/helpers/getMarksBetween.d.ts +0 -3
  109. package/dist/packages/core/src/helpers/getNodeAtPosition.d.ts +0 -11
  110. package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +0 -3
  111. package/dist/packages/core/src/helpers/getNodeType.d.ts +0 -2
  112. package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +0 -3
  113. package/dist/packages/core/src/helpers/getSchema.d.ts +0 -4
  114. package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +0 -10
  115. package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +0 -8
  116. package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +0 -8
  117. package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +0 -9
  118. package/dist/packages/core/src/helpers/getText.d.ts +0 -15
  119. package/dist/packages/core/src/helpers/getTextBetween.d.ts +0 -14
  120. package/dist/packages/core/src/helpers/getTextContentFromNodes.d.ts +0 -8
  121. package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +0 -8
  122. package/dist/packages/core/src/helpers/index.d.ts +0 -50
  123. package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +0 -9
  124. package/dist/packages/core/src/helpers/isActive.d.ts +0 -2
  125. package/dist/packages/core/src/helpers/isAtEndOfNode.d.ts +0 -2
  126. package/dist/packages/core/src/helpers/isAtStartOfNode.d.ts +0 -2
  127. package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +0 -2
  128. package/dist/packages/core/src/helpers/isList.d.ts +0 -2
  129. package/dist/packages/core/src/helpers/isMarkActive.d.ts +0 -3
  130. package/dist/packages/core/src/helpers/isNodeActive.d.ts +0 -3
  131. package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +0 -14
  132. package/dist/packages/core/src/helpers/isNodeSelection.d.ts +0 -2
  133. package/dist/packages/core/src/helpers/isTextSelection.d.ts +0 -2
  134. package/dist/packages/core/src/helpers/posToDOMRect.d.ts +0 -2
  135. package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +0 -4
  136. package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +0 -2
  137. package/dist/packages/core/src/helpers/splitExtensions.d.ts +0 -9
  138. package/dist/packages/core/src/index.d.ts +0 -24
  139. package/dist/packages/core/src/inputRules/index.d.ts +0 -5
  140. package/dist/packages/core/src/inputRules/markInputRule.d.ts +0 -13
  141. package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +0 -23
  142. package/dist/packages/core/src/inputRules/textInputRule.d.ts +0 -10
  143. package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +0 -15
  144. package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +0 -28
  145. package/dist/packages/core/src/pasteRules/index.d.ts +0 -3
  146. package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +0 -13
  147. package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +0 -14
  148. package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +0 -10
  149. package/dist/packages/core/src/style.d.ts +0 -1
  150. package/dist/packages/core/src/types.d.ts +0 -253
  151. package/dist/packages/core/src/utilities/callOrReturn.d.ts +0 -9
  152. package/dist/packages/core/src/utilities/createStyleTag.d.ts +0 -1
  153. package/dist/packages/core/src/utilities/deleteProps.d.ts +0 -6
  154. package/dist/packages/core/src/utilities/elementFromString.d.ts +0 -1
  155. package/dist/packages/core/src/utilities/escapeForRegEx.d.ts +0 -1
  156. package/dist/packages/core/src/utilities/findDuplicates.d.ts +0 -1
  157. package/dist/packages/core/src/utilities/fromString.d.ts +0 -1
  158. package/dist/packages/core/src/utilities/index.d.ts +0 -20
  159. package/dist/packages/core/src/utilities/isAndroid.d.ts +0 -1
  160. package/dist/packages/core/src/utilities/isEmptyObject.d.ts +0 -1
  161. package/dist/packages/core/src/utilities/isFunction.d.ts +0 -1
  162. package/dist/packages/core/src/utilities/isMacOS.d.ts +0 -1
  163. package/dist/packages/core/src/utilities/isNumber.d.ts +0 -1
  164. package/dist/packages/core/src/utilities/isPlainObject.d.ts +0 -1
  165. package/dist/packages/core/src/utilities/isRegExp.d.ts +0 -1
  166. package/dist/packages/core/src/utilities/isString.d.ts +0 -1
  167. package/dist/packages/core/src/utilities/isiOS.d.ts +0 -1
  168. package/dist/packages/core/src/utilities/mergeAttributes.d.ts +0 -1
  169. package/dist/packages/core/src/utilities/mergeDeep.d.ts +0 -1
  170. package/dist/packages/core/src/utilities/minMax.d.ts +0 -1
  171. package/dist/packages/core/src/utilities/objectIncludes.d.ts +0 -8
  172. package/dist/packages/core/src/utilities/removeDuplicates.d.ts +0 -8
  173. package/dist/packages/extension-bubble-menu/src/bubble-menu-plugin.d.ts +0 -76
  174. package/dist/packages/extension-bubble-menu/src/bubble-menu.d.ts +0 -15
  175. package/dist/packages/extension-bubble-menu/src/index.d.ts +0 -4
  176. package/dist/packages/extension-floating-menu/src/floating-menu-plugin.d.ts +0 -66
  177. package/dist/packages/extension-floating-menu/src/floating-menu.d.ts +0 -15
  178. package/dist/packages/extension-floating-menu/src/index.d.ts +0 -4
  179. package/dist/packages/vue-2/src/BubbleMenu.d.ts +0 -10
  180. package/dist/packages/vue-2/src/Editor.d.ts +0 -5
  181. package/dist/packages/vue-2/src/EditorContent.d.ts +0 -6
  182. package/dist/packages/vue-2/src/FloatingMenu.d.ts +0 -9
  183. package/dist/packages/vue-2/src/NodeViewContent.d.ts +0 -5
  184. package/dist/packages/vue-2/src/NodeViewWrapper.d.ts +0 -9
  185. package/dist/packages/vue-2/src/VueNodeViewRenderer.d.ts +0 -37
  186. package/dist/packages/vue-2/src/VueRenderer.d.ts +0 -12
  187. package/dist/packages/vue-2/src/index.d.ts +0 -9
package/dist/index.js CHANGED
@@ -1,364 +1,387 @@
1
- import { BubbleMenuPlugin } from '@tiptap/extension-bubble-menu';
2
- import { Editor as Editor$1, NodeView } from '@tiptap/core';
3
- export * from '@tiptap/core';
4
- import { FloatingMenuPlugin } from '@tiptap/extension-floating-menu';
5
- import Vue from 'vue';
6
- import { objectProp, booleanProp, functionProp } from 'vue-ts-types';
7
-
8
- const BubbleMenu = {
9
- name: 'BubbleMenu',
10
- props: {
11
- pluginKey: {
12
- type: [String, Object],
13
- default: 'bubbleMenu',
14
- },
15
- editor: {
16
- type: Object,
17
- required: true,
18
- },
19
- updateDelay: {
20
- type: Number,
21
- },
22
- tippyOptions: {
23
- type: Object,
24
- default: () => ({}),
25
- },
26
- shouldShow: {
27
- type: Function,
28
- default: null,
29
- },
1
+ // src/BubbleMenu.ts
2
+ import { BubbleMenuPlugin } from "@tiptap/extension-bubble-menu";
3
+ var BubbleMenu = {
4
+ name: "BubbleMenu",
5
+ props: {
6
+ pluginKey: {
7
+ type: [String, Object],
8
+ default: "bubbleMenu"
30
9
  },
31
- watch: {
32
- editor: {
33
- immediate: true,
34
- handler(editor) {
35
- if (!editor) {
36
- return;
37
- }
38
- this.$nextTick(() => {
39
- editor.registerPlugin(BubbleMenuPlugin({
40
- updateDelay: this.updateDelay,
41
- editor,
42
- element: this.$el,
43
- pluginKey: this.pluginKey,
44
- shouldShow: this.shouldShow,
45
- tippyOptions: this.tippyOptions,
46
- }));
47
- });
48
- },
49
- },
10
+ editor: {
11
+ type: Object,
12
+ required: true
50
13
  },
51
- render(createElement) {
52
- return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default);
14
+ updateDelay: {
15
+ type: Number
53
16
  },
54
- beforeDestroy() {
55
- this.editor.unregisterPlugin(this.pluginKey);
17
+ options: {
18
+ type: Object,
19
+ default: {}
56
20
  },
57
- };
58
-
59
- class Editor extends Editor$1 {
60
- constructor() {
61
- super(...arguments);
62
- this.contentComponent = null;
63
- }
64
- }
65
-
66
- const EditorContent = {
67
- name: 'EditorContent',
68
- props: {
69
- editor: {
70
- default: null,
71
- type: Object,
72
- },
73
- },
74
- watch: {
75
- editor: {
76
- immediate: true,
77
- handler(editor) {
78
- if (editor && editor.options.element) {
79
- this.$nextTick(() => {
80
- const element = this.$el;
81
- if (!element || !editor.options.element.firstChild) {
82
- return;
83
- }
84
- element.append(...editor.options.element.childNodes);
85
- editor.contentComponent = this;
86
- editor.setOptions({
87
- element,
88
- });
89
- editor.createNodeViews();
90
- });
91
- }
92
- },
93
- },
94
- },
95
- render(createElement) {
96
- return createElement('div');
21
+ resizeDelay: {
22
+ type: Number
97
23
  },
98
- beforeDestroy() {
99
- const { editor } = this;
24
+ shouldShow: {
25
+ type: Function,
26
+ default: null
27
+ }
28
+ },
29
+ watch: {
30
+ editor: {
31
+ immediate: true,
32
+ handler(editor) {
100
33
  if (!editor) {
101
- return;
102
- }
103
- if (!editor.isDestroyed) {
104
- editor.view.setProps({
105
- nodeViews: {},
106
- });
34
+ return;
107
35
  }
108
- editor.contentComponent = null;
109
- if (!editor.options.element.firstChild) {
110
- return;
111
- }
112
- const newElement = document.createElement('div');
113
- newElement.append(...editor.options.element.childNodes);
114
- editor.setOptions({
115
- element: newElement,
36
+ this.$el.style.visibility = "hidden";
37
+ this.$el.style.position = "absolute";
38
+ this.$el.remove();
39
+ this.$nextTick(() => {
40
+ editor.registerPlugin(BubbleMenuPlugin({
41
+ updateDelay: this.updateDelay,
42
+ resizeDelay: this.resizeDelay,
43
+ options: this.options,
44
+ editor,
45
+ element: this.$el,
46
+ pluginKey: this.pluginKey,
47
+ shouldShow: this.shouldShow
48
+ }));
116
49
  });
117
- },
50
+ }
51
+ }
52
+ },
53
+ render(createElement) {
54
+ return createElement("div", { style: { visibility: "hidden" } }, this.$slots.default);
55
+ },
56
+ beforeDestroy() {
57
+ this.editor.unregisterPlugin(this.pluginKey);
58
+ }
118
59
  };
119
60
 
120
- const FloatingMenu = {
121
- name: 'FloatingMenu',
122
- props: {
123
- pluginKey: {
124
- type: [String, Object],
125
- default: 'floatingMenu',
126
- },
127
- editor: {
128
- type: Object,
129
- required: true,
130
- },
131
- tippyOptions: {
132
- type: Object,
133
- default: () => ({}),
134
- },
135
- shouldShow: {
136
- type: Function,
137
- default: null,
138
- },
139
- },
140
- watch: {
141
- editor: {
142
- immediate: true,
143
- handler(editor) {
144
- if (!editor) {
145
- return;
146
- }
147
- this.$nextTick(() => {
148
- editor.registerPlugin(FloatingMenuPlugin({
149
- pluginKey: this.pluginKey,
150
- editor,
151
- element: this.$el,
152
- tippyOptions: this.tippyOptions,
153
- shouldShow: this.shouldShow,
154
- }));
155
- });
156
- },
157
- },
158
- },
159
- render(createElement) {
160
- return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default);
161
- },
162
- beforeDestroy() {
163
- this.editor.unregisterPlugin(this.pluginKey);
164
- },
61
+ // src/Editor.ts
62
+ import { Editor as CoreEditor } from "@tiptap/core";
63
+ var Editor = class extends CoreEditor {
64
+ constructor() {
65
+ super(...arguments);
66
+ this.contentComponent = null;
67
+ }
165
68
  };
166
69
 
167
- const NodeViewContent = {
168
- props: {
169
- as: {
170
- type: String,
171
- default: 'div',
172
- },
173
- },
174
- render(createElement) {
175
- return createElement(this.as, {
176
- style: {
177
- whiteSpace: 'pre-wrap',
178
- },
179
- attrs: {
180
- 'data-node-view-content': '',
181
- },
182
- });
183
- },
70
+ // src/EditorContent.ts
71
+ var EditorContent = {
72
+ name: "EditorContent",
73
+ props: {
74
+ editor: {
75
+ default: null,
76
+ type: Object
77
+ }
78
+ },
79
+ watch: {
80
+ editor: {
81
+ immediate: true,
82
+ handler(editor) {
83
+ if (editor && editor.options.element) {
84
+ this.$nextTick(() => {
85
+ const element = this.$el;
86
+ if (!element || !editor.options.element.firstChild) {
87
+ return;
88
+ }
89
+ element.append(...editor.options.element.childNodes);
90
+ editor.contentComponent = this;
91
+ editor.setOptions({
92
+ element
93
+ });
94
+ editor.createNodeViews();
95
+ });
96
+ }
97
+ }
98
+ }
99
+ },
100
+ render(createElement) {
101
+ return createElement("div");
102
+ },
103
+ beforeDestroy() {
104
+ const { editor } = this;
105
+ if (!editor) {
106
+ return;
107
+ }
108
+ if (!editor.isDestroyed) {
109
+ editor.view.setProps({
110
+ nodeViews: {}
111
+ });
112
+ }
113
+ editor.contentComponent = null;
114
+ if (!editor.options.element.firstChild) {
115
+ return;
116
+ }
117
+ const newElement = document.createElement("div");
118
+ newElement.append(...editor.options.element.childNodes);
119
+ editor.setOptions({
120
+ element: newElement
121
+ });
122
+ }
184
123
  };
185
124
 
186
- const NodeViewWrapper = {
187
- props: {
188
- as: {
189
- type: String,
190
- default: 'div',
191
- },
125
+ // src/FloatingMenu.ts
126
+ import { FloatingMenuPlugin } from "@tiptap/extension-floating-menu";
127
+ var FloatingMenu = {
128
+ name: "FloatingMenu",
129
+ props: {
130
+ pluginKey: {
131
+ type: [String, Object],
132
+ default: "floatingMenu"
192
133
  },
193
- inject: ['onDragStart', 'decorationClasses'],
194
- render(createElement) {
195
- return createElement(this.as, {
196
- class: this.decorationClasses.value,
197
- style: {
198
- whiteSpace: 'normal',
199
- },
200
- attrs: {
201
- 'data-node-view-wrapper': '',
202
- },
203
- on: {
204
- dragstart: this.onDragStart,
205
- },
206
- }, this.$slots.default);
134
+ editor: {
135
+ type: Object,
136
+ required: true
207
137
  },
208
- };
209
-
210
- /**
211
- * The VueRenderer class is responsible for rendering a Vue component as a ProseMirror node view.
212
- */
213
- class VueRenderer {
214
- constructor(component, props) {
215
- const Component = (typeof component === 'function') ? component : Vue.extend(component);
216
- this.ref = new Component(props).$mount();
217
- }
218
- get element() {
219
- return this.ref.$el;
138
+ options: {
139
+ type: Object,
140
+ default: () => ({})
141
+ },
142
+ shouldShow: {
143
+ type: Function,
144
+ default: null
220
145
  }
221
- updateProps(props = {}) {
222
- var _a, _b, _c;
223
- if (!this.ref.$props) {
224
- return;
146
+ },
147
+ watch: {
148
+ editor: {
149
+ immediate: true,
150
+ handler(editor) {
151
+ if (!editor) {
152
+ return;
225
153
  }
226
- // prevents `Avoid mutating a prop directly` error message
227
- // Fix: `VueNodeViewRenderer` change vue Constructor `config.silent` not working
228
- const currentVueConstructor = (_c = (_b = (_a = this.ref.$props.editor) === null || _a === void 0 ? void 0 : _a.contentComponent) === null || _b === void 0 ? void 0 : _b.$options._base) !== null && _c !== void 0 ? _c : Vue; // eslint-disable-line
229
- const originalSilent = currentVueConstructor.config.silent;
230
- currentVueConstructor.config.silent = true;
231
- Object
232
- .entries(props)
233
- .forEach(([key, value]) => {
234
- this.ref.$props[key] = value;
154
+ this.$el.style.visibility = "hidden";
155
+ this.$el.style.position = "absolute";
156
+ this.$el.remove();
157
+ this.$nextTick(() => {
158
+ editor.registerPlugin(FloatingMenuPlugin({
159
+ pluginKey: this.pluginKey,
160
+ editor,
161
+ element: this.$el,
162
+ options: this.options,
163
+ shouldShow: this.shouldShow
164
+ }));
235
165
  });
236
- currentVueConstructor.config.silent = originalSilent;
237
- }
238
- destroy() {
239
- this.ref.$destroy();
166
+ }
240
167
  }
241
- }
242
-
243
- const nodeViewProps = {
244
- editor: objectProp().required,
245
- node: objectProp().required,
246
- decorations: objectProp().required,
247
- selected: booleanProp().required,
248
- extension: objectProp().required,
249
- getPos: functionProp().required,
250
- updateAttributes: functionProp().required,
251
- deleteNode: functionProp().required,
168
+ },
169
+ render(createElement) {
170
+ return createElement("div", { style: { visibility: "hidden" } }, this.$slots.default);
171
+ },
172
+ beforeDestroy() {
173
+ this.editor.unregisterPlugin(this.pluginKey);
174
+ }
252
175
  };
253
- class VueNodeView extends NodeView {
254
- mount() {
255
- var _a, _b;
256
- const props = {
257
- editor: this.editor,
258
- node: this.node,
259
- decorations: this.decorations,
260
- selected: false,
261
- extension: this.extension,
262
- getPos: () => this.getPos(),
263
- updateAttributes: (attributes = {}) => this.updateAttributes(attributes),
264
- deleteNode: () => this.deleteNode(),
265
- };
266
- const onDragStart = this.onDragStart.bind(this);
267
- this.decorationClasses = Vue.observable({
268
- value: this.getDecorationClasses(),
269
- });
270
- // @ts-ignore
271
- const vue = (_b = (_a = this.editor.contentComponent) === null || _a === void 0 ? void 0 : _a.$options._base) !== null && _b !== void 0 ? _b : Vue; // eslint-disable-line
272
- const Component = vue.extend(this.component).extend({
273
- props: Object.keys(props),
274
- provide: () => {
275
- return {
276
- onDragStart,
277
- decorationClasses: this.decorationClasses,
278
- };
279
- },
280
- });
281
- this.renderer = new VueRenderer(Component, {
282
- parent: this.editor.contentComponent,
283
- propsData: props,
284
- });
176
+
177
+ // src/NodeViewContent.ts
178
+ var NodeViewContent = {
179
+ props: {
180
+ as: {
181
+ type: String,
182
+ default: "div"
285
183
  }
286
- get dom() {
287
- if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {
288
- throw Error('Please use the NodeViewWrapper component for your node view.');
289
- }
290
- return this.renderer.element;
184
+ },
185
+ render(createElement) {
186
+ return createElement(this.as, {
187
+ style: {
188
+ whiteSpace: "pre-wrap"
189
+ },
190
+ attrs: {
191
+ "data-node-view-content": ""
192
+ }
193
+ });
194
+ }
195
+ };
196
+
197
+ // src/NodeViewWrapper.ts
198
+ var NodeViewWrapper = {
199
+ props: {
200
+ as: {
201
+ type: String,
202
+ default: "div"
291
203
  }
292
- get contentDOM() {
293
- if (this.node.isLeaf) {
294
- return null;
204
+ },
205
+ inject: ["onDragStart", "decorationClasses"],
206
+ render(createElement) {
207
+ return createElement(
208
+ this.as,
209
+ {
210
+ class: this.decorationClasses.value,
211
+ style: {
212
+ whiteSpace: "normal"
213
+ },
214
+ attrs: {
215
+ "data-node-view-wrapper": ""
216
+ },
217
+ on: {
218
+ dragstart: this.onDragStart
295
219
  }
296
- const contentElement = this.dom.querySelector('[data-node-view-content]');
297
- return (contentElement || this.dom);
220
+ },
221
+ this.$slots.default
222
+ );
223
+ }
224
+ };
225
+
226
+ // src/VueNodeViewRenderer.ts
227
+ import {
228
+ NodeView
229
+ } from "@tiptap/core";
230
+ import Vue2 from "vue";
231
+ import { booleanProp, functionProp, objectProp } from "vue-ts-types";
232
+
233
+ // src/VueRenderer.ts
234
+ import Vue from "vue";
235
+ var VueRenderer = class {
236
+ constructor(component, props) {
237
+ const Component = typeof component === "function" ? component : Vue.extend(component);
238
+ this.ref = new Component(props).$mount();
239
+ }
240
+ get element() {
241
+ return this.ref.$el;
242
+ }
243
+ updateProps(props = {}) {
244
+ var _a, _b, _c;
245
+ if (!this.ref.$props) {
246
+ return;
298
247
  }
299
- update(node, decorations) {
300
- const updateProps = (props) => {
301
- this.decorationClasses.value = this.getDecorationClasses();
302
- this.renderer.updateProps(props);
248
+ const currentVueConstructor = (_c = (_b = (_a = this.ref.$props.editor) == null ? void 0 : _a.contentComponent) == null ? void 0 : _b.$options._base) != null ? _c : Vue;
249
+ const originalSilent = currentVueConstructor.config.silent;
250
+ currentVueConstructor.config.silent = true;
251
+ Object.entries(props).forEach(([key, value]) => {
252
+ this.ref.$props[key] = value;
253
+ });
254
+ currentVueConstructor.config.silent = originalSilent;
255
+ }
256
+ destroy() {
257
+ this.ref.$destroy();
258
+ }
259
+ };
260
+
261
+ // src/VueNodeViewRenderer.ts
262
+ var nodeViewProps = {
263
+ editor: objectProp().required,
264
+ node: objectProp().required,
265
+ decorations: objectProp().required,
266
+ selected: booleanProp().required,
267
+ extension: objectProp().required,
268
+ getPos: functionProp().required,
269
+ updateAttributes: functionProp().required,
270
+ deleteNode: functionProp().required
271
+ };
272
+ var VueNodeView = class extends NodeView {
273
+ mount() {
274
+ var _a, _b;
275
+ const props = {
276
+ editor: this.editor,
277
+ node: this.node,
278
+ decorations: this.decorations,
279
+ selected: false,
280
+ extension: this.extension,
281
+ getPos: () => this.getPos(),
282
+ updateAttributes: (attributes = {}) => this.updateAttributes(attributes),
283
+ deleteNode: () => this.deleteNode()
284
+ };
285
+ const onDragStart = this.onDragStart.bind(this);
286
+ this.decorationClasses = Vue2.observable({
287
+ value: this.getDecorationClasses()
288
+ });
289
+ const vue = (_b = (_a = this.editor.contentComponent) == null ? void 0 : _a.$options._base) != null ? _b : Vue2;
290
+ const Component = vue.extend(this.component).extend({
291
+ props: Object.keys(props),
292
+ provide: () => {
293
+ return {
294
+ onDragStart,
295
+ decorationClasses: this.decorationClasses
303
296
  };
304
- if (typeof this.options.update === 'function') {
305
- const oldNode = this.node;
306
- const oldDecorations = this.decorations;
307
- this.node = node;
308
- this.decorations = decorations;
309
- return this.options.update({
310
- oldNode,
311
- oldDecorations,
312
- newNode: node,
313
- newDecorations: decorations,
314
- updateProps: () => updateProps({ node, decorations }),
315
- });
316
- }
317
- if (node.type !== this.node.type) {
318
- return false;
319
- }
320
- if (node === this.node && this.decorations === decorations) {
321
- return true;
322
- }
323
- this.node = node;
324
- this.decorations = decorations;
325
- updateProps({ node, decorations });
326
- return true;
297
+ }
298
+ });
299
+ this.renderer = new VueRenderer(Component, {
300
+ parent: this.editor.contentComponent,
301
+ propsData: props
302
+ });
303
+ }
304
+ get dom() {
305
+ if (!this.renderer.element.hasAttribute("data-node-view-wrapper")) {
306
+ throw Error("Please use the NodeViewWrapper component for your node view.");
327
307
  }
328
- selectNode() {
329
- this.renderer.updateProps({
330
- selected: true,
331
- });
332
- this.renderer.element.classList.add('ProseMirror-selectednode');
308
+ return this.renderer.element;
309
+ }
310
+ get contentDOM() {
311
+ if (this.node.isLeaf) {
312
+ return null;
333
313
  }
334
- deselectNode() {
335
- this.renderer.updateProps({
336
- selected: false,
337
- });
338
- this.renderer.element.classList.remove('ProseMirror-selectednode');
314
+ const contentElement = this.dom.querySelector("[data-node-view-content]");
315
+ return contentElement || this.dom;
316
+ }
317
+ update(node, decorations) {
318
+ const updateProps = (props) => {
319
+ this.decorationClasses.value = this.getDecorationClasses();
320
+ this.renderer.updateProps(props);
321
+ };
322
+ if (typeof this.options.update === "function") {
323
+ const oldNode = this.node;
324
+ const oldDecorations = this.decorations;
325
+ this.node = node;
326
+ this.decorations = decorations;
327
+ return this.options.update({
328
+ oldNode,
329
+ oldDecorations,
330
+ newNode: node,
331
+ newDecorations: decorations,
332
+ updateProps: () => updateProps({ node, decorations })
333
+ });
339
334
  }
340
- getDecorationClasses() {
341
- return (this.decorations
342
- // @ts-ignore
343
- .map(item => item.type.attrs.class)
344
- .flat()
345
- .join(' '));
335
+ if (node.type !== this.node.type) {
336
+ return false;
346
337
  }
347
- destroy() {
348
- this.renderer.destroy();
338
+ if (node === this.node && this.decorations === decorations) {
339
+ return true;
349
340
  }
350
- }
341
+ this.node = node;
342
+ this.decorations = decorations;
343
+ updateProps({ node, decorations });
344
+ return true;
345
+ }
346
+ selectNode() {
347
+ this.renderer.updateProps({
348
+ selected: true
349
+ });
350
+ this.renderer.element.classList.add("ProseMirror-selectednode");
351
+ }
352
+ deselectNode() {
353
+ this.renderer.updateProps({
354
+ selected: false
355
+ });
356
+ this.renderer.element.classList.remove("ProseMirror-selectednode");
357
+ }
358
+ getDecorationClasses() {
359
+ return this.decorations.map((item) => item.type.attrs.class).flat().join(" ");
360
+ }
361
+ destroy() {
362
+ this.renderer.destroy();
363
+ }
364
+ };
351
365
  function VueNodeViewRenderer(component, options) {
352
- return (props) => {
353
- // try to get the parent component
354
- // this is important for vue devtools to show the component hierarchy correctly
355
- // maybe it’s `undefined` because <editor-content> isn’t rendered yet
356
- if (!props.editor.contentComponent) {
357
- return {};
358
- }
359
- return new VueNodeView(component, props, options);
360
- };
366
+ return (props) => {
367
+ if (!props.editor.contentComponent) {
368
+ return {};
369
+ }
370
+ return new VueNodeView(component, props, options);
371
+ };
361
372
  }
362
373
 
363
- export { BubbleMenu, Editor, EditorContent, FloatingMenu, NodeViewContent, NodeViewWrapper, VueNodeViewRenderer, VueRenderer, nodeViewProps };
364
- //# sourceMappingURL=index.js.map
374
+ // src/index.ts
375
+ export * from "@tiptap/core";
376
+ export {
377
+ BubbleMenu,
378
+ Editor,
379
+ EditorContent,
380
+ FloatingMenu,
381
+ NodeViewContent,
382
+ NodeViewWrapper,
383
+ VueNodeViewRenderer,
384
+ VueRenderer,
385
+ nodeViewProps
386
+ };
387
+ //# sourceMappingURL=index.js.map