@tiptap/vue-2 3.0.0-next.0 → 3.0.0-next.2

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 (186) hide show
  1. package/dist/index.cjs +446 -354
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +99 -0
  4. package/dist/index.d.ts +99 -0
  5. package/dist/index.js +404 -338
  6. package/dist/index.js.map +1 -1
  7. package/package.json +11 -13
  8. package/src/VueNodeViewRenderer.ts +85 -21
  9. package/dist/index.umd.js +0 -389
  10. package/dist/index.umd.js.map +0 -1
  11. package/dist/packages/core/src/CommandManager.d.ts +0 -20
  12. package/dist/packages/core/src/Editor.d.ts +0 -159
  13. package/dist/packages/core/src/EventEmitter.d.ts +0 -11
  14. package/dist/packages/core/src/Extension.d.ts +0 -343
  15. package/dist/packages/core/src/ExtensionManager.d.ts +0 -55
  16. package/dist/packages/core/src/InputRule.d.ts +0 -42
  17. package/dist/packages/core/src/Mark.d.ts +0 -451
  18. package/dist/packages/core/src/Node.d.ts +0 -611
  19. package/dist/packages/core/src/NodePos.d.ts +0 -44
  20. package/dist/packages/core/src/NodeView.d.ts +0 -31
  21. package/dist/packages/core/src/PasteRule.d.ts +0 -50
  22. package/dist/packages/core/src/Tracker.d.ts +0 -11
  23. package/dist/packages/core/src/commands/blur.d.ts +0 -13
  24. package/dist/packages/core/src/commands/clearContent.d.ts +0 -14
  25. package/dist/packages/core/src/commands/clearNodes.d.ts +0 -13
  26. package/dist/packages/core/src/commands/command.d.ts +0 -18
  27. package/dist/packages/core/src/commands/createParagraphNear.d.ts +0 -13
  28. package/dist/packages/core/src/commands/cut.d.ts +0 -20
  29. package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +0 -13
  30. package/dist/packages/core/src/commands/deleteNode.d.ts +0 -15
  31. package/dist/packages/core/src/commands/deleteRange.d.ts +0 -14
  32. package/dist/packages/core/src/commands/deleteSelection.d.ts +0 -13
  33. package/dist/packages/core/src/commands/enter.d.ts +0 -13
  34. package/dist/packages/core/src/commands/exitCode.d.ts +0 -13
  35. package/dist/packages/core/src/commands/extendMarkRange.d.ts +0 -25
  36. package/dist/packages/core/src/commands/first.d.ts +0 -14
  37. package/dist/packages/core/src/commands/focus.d.ts +0 -27
  38. package/dist/packages/core/src/commands/forEach.d.ts +0 -14
  39. package/dist/packages/core/src/commands/index.d.ts +0 -55
  40. package/dist/packages/core/src/commands/insertContent.d.ts +0 -34
  41. package/dist/packages/core/src/commands/insertContentAt.d.ts +0 -47
  42. package/dist/packages/core/src/commands/join.d.ts +0 -41
  43. package/dist/packages/core/src/commands/joinItemBackward.d.ts +0 -13
  44. package/dist/packages/core/src/commands/joinItemForward.d.ts +0 -13
  45. package/dist/packages/core/src/commands/joinTextblockBackward.d.ts +0 -12
  46. package/dist/packages/core/src/commands/joinTextblockForward.d.ts +0 -12
  47. package/dist/packages/core/src/commands/keyboardShortcut.d.ts +0 -14
  48. package/dist/packages/core/src/commands/lift.d.ts +0 -17
  49. package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +0 -13
  50. package/dist/packages/core/src/commands/liftListItem.d.ts +0 -15
  51. package/dist/packages/core/src/commands/newlineInCode.d.ts +0 -13
  52. package/dist/packages/core/src/commands/resetAttributes.d.ts +0 -16
  53. package/dist/packages/core/src/commands/scrollIntoView.d.ts +0 -13
  54. package/dist/packages/core/src/commands/selectAll.d.ts +0 -13
  55. package/dist/packages/core/src/commands/selectNodeBackward.d.ts +0 -13
  56. package/dist/packages/core/src/commands/selectNodeForward.d.ts +0 -13
  57. package/dist/packages/core/src/commands/selectParentNode.d.ts +0 -13
  58. package/dist/packages/core/src/commands/selectTextblockEnd.d.ts +0 -13
  59. package/dist/packages/core/src/commands/selectTextblockStart.d.ts +0 -13
  60. package/dist/packages/core/src/commands/setContent.d.ts +0 -40
  61. package/dist/packages/core/src/commands/setMark.d.ts +0 -15
  62. package/dist/packages/core/src/commands/setMeta.d.ts +0 -15
  63. package/dist/packages/core/src/commands/setNode.d.ts +0 -16
  64. package/dist/packages/core/src/commands/setNodeSelection.d.ts +0 -14
  65. package/dist/packages/core/src/commands/setTextSelection.d.ts +0 -14
  66. package/dist/packages/core/src/commands/sinkListItem.d.ts +0 -15
  67. package/dist/packages/core/src/commands/splitBlock.d.ts +0 -17
  68. package/dist/packages/core/src/commands/splitListItem.d.ts +0 -15
  69. package/dist/packages/core/src/commands/toggleList.d.ts +0 -18
  70. package/dist/packages/core/src/commands/toggleMark.d.ts +0 -30
  71. package/dist/packages/core/src/commands/toggleNode.d.ts +0 -17
  72. package/dist/packages/core/src/commands/toggleWrap.d.ts +0 -16
  73. package/dist/packages/core/src/commands/undoInputRule.d.ts +0 -13
  74. package/dist/packages/core/src/commands/unsetAllMarks.d.ts +0 -13
  75. package/dist/packages/core/src/commands/unsetMark.d.ts +0 -25
  76. package/dist/packages/core/src/commands/updateAttributes.d.ts +0 -24
  77. package/dist/packages/core/src/commands/wrapIn.d.ts +0 -16
  78. package/dist/packages/core/src/commands/wrapInList.d.ts +0 -16
  79. package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +0 -5
  80. package/dist/packages/core/src/extensions/commands.d.ts +0 -3
  81. package/dist/packages/core/src/extensions/editable.d.ts +0 -2
  82. package/dist/packages/core/src/extensions/focusEvents.d.ts +0 -2
  83. package/dist/packages/core/src/extensions/index.d.ts +0 -6
  84. package/dist/packages/core/src/extensions/keymap.d.ts +0 -2
  85. package/dist/packages/core/src/extensions/tabindex.d.ts +0 -2
  86. package/dist/packages/core/src/helpers/combineTransactionSteps.d.ts +0 -10
  87. package/dist/packages/core/src/helpers/createChainableState.d.ts +0 -10
  88. package/dist/packages/core/src/helpers/createDocument.d.ts +0 -12
  89. package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +0 -15
  90. package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +0 -7
  91. package/dist/packages/core/src/helpers/findChildren.d.ts +0 -9
  92. package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +0 -10
  93. package/dist/packages/core/src/helpers/findParentNode.d.ts +0 -16
  94. package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +0 -17
  95. package/dist/packages/core/src/helpers/generateHTML.d.ts +0 -8
  96. package/dist/packages/core/src/helpers/generateJSON.d.ts +0 -8
  97. package/dist/packages/core/src/helpers/generateText.d.ts +0 -12
  98. package/dist/packages/core/src/helpers/getAttributes.d.ts +0 -9
  99. package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +0 -6
  100. package/dist/packages/core/src/helpers/getChangedRanges.d.ts +0 -11
  101. package/dist/packages/core/src/helpers/getDebugJSON.d.ts +0 -8
  102. package/dist/packages/core/src/helpers/getExtensionField.d.ts +0 -9
  103. package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +0 -2
  104. package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +0 -3
  105. package/dist/packages/core/src/helpers/getMarkRange.d.ts +0 -3
  106. package/dist/packages/core/src/helpers/getMarkType.d.ts +0 -2
  107. package/dist/packages/core/src/helpers/getMarksBetween.d.ts +0 -3
  108. package/dist/packages/core/src/helpers/getNodeAtPosition.d.ts +0 -11
  109. package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +0 -3
  110. package/dist/packages/core/src/helpers/getNodeType.d.ts +0 -2
  111. package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +0 -3
  112. package/dist/packages/core/src/helpers/getSchema.d.ts +0 -4
  113. package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +0 -10
  114. package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +0 -8
  115. package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +0 -8
  116. package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +0 -9
  117. package/dist/packages/core/src/helpers/getText.d.ts +0 -15
  118. package/dist/packages/core/src/helpers/getTextBetween.d.ts +0 -14
  119. package/dist/packages/core/src/helpers/getTextContentFromNodes.d.ts +0 -8
  120. package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +0 -8
  121. package/dist/packages/core/src/helpers/index.d.ts +0 -50
  122. package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +0 -9
  123. package/dist/packages/core/src/helpers/isActive.d.ts +0 -2
  124. package/dist/packages/core/src/helpers/isAtEndOfNode.d.ts +0 -2
  125. package/dist/packages/core/src/helpers/isAtStartOfNode.d.ts +0 -2
  126. package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +0 -2
  127. package/dist/packages/core/src/helpers/isList.d.ts +0 -2
  128. package/dist/packages/core/src/helpers/isMarkActive.d.ts +0 -3
  129. package/dist/packages/core/src/helpers/isNodeActive.d.ts +0 -3
  130. package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +0 -8
  131. package/dist/packages/core/src/helpers/isNodeSelection.d.ts +0 -2
  132. package/dist/packages/core/src/helpers/isTextSelection.d.ts +0 -2
  133. package/dist/packages/core/src/helpers/posToDOMRect.d.ts +0 -2
  134. package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +0 -4
  135. package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +0 -2
  136. package/dist/packages/core/src/helpers/splitExtensions.d.ts +0 -9
  137. package/dist/packages/core/src/index.d.ts +0 -24
  138. package/dist/packages/core/src/inputRules/index.d.ts +0 -5
  139. package/dist/packages/core/src/inputRules/markInputRule.d.ts +0 -13
  140. package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +0 -23
  141. package/dist/packages/core/src/inputRules/textInputRule.d.ts +0 -10
  142. package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +0 -15
  143. package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +0 -28
  144. package/dist/packages/core/src/pasteRules/index.d.ts +0 -3
  145. package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +0 -13
  146. package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +0 -13
  147. package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +0 -10
  148. package/dist/packages/core/src/style.d.ts +0 -1
  149. package/dist/packages/core/src/types.d.ts +0 -253
  150. package/dist/packages/core/src/utilities/callOrReturn.d.ts +0 -9
  151. package/dist/packages/core/src/utilities/createStyleTag.d.ts +0 -1
  152. package/dist/packages/core/src/utilities/deleteProps.d.ts +0 -6
  153. package/dist/packages/core/src/utilities/elementFromString.d.ts +0 -1
  154. package/dist/packages/core/src/utilities/escapeForRegEx.d.ts +0 -1
  155. package/dist/packages/core/src/utilities/findDuplicates.d.ts +0 -1
  156. package/dist/packages/core/src/utilities/fromString.d.ts +0 -1
  157. package/dist/packages/core/src/utilities/index.d.ts +0 -20
  158. package/dist/packages/core/src/utilities/isAndroid.d.ts +0 -1
  159. package/dist/packages/core/src/utilities/isEmptyObject.d.ts +0 -1
  160. package/dist/packages/core/src/utilities/isFunction.d.ts +0 -1
  161. package/dist/packages/core/src/utilities/isMacOS.d.ts +0 -1
  162. package/dist/packages/core/src/utilities/isNumber.d.ts +0 -1
  163. package/dist/packages/core/src/utilities/isPlainObject.d.ts +0 -1
  164. package/dist/packages/core/src/utilities/isRegExp.d.ts +0 -1
  165. package/dist/packages/core/src/utilities/isString.d.ts +0 -1
  166. package/dist/packages/core/src/utilities/isiOS.d.ts +0 -1
  167. package/dist/packages/core/src/utilities/mergeAttributes.d.ts +0 -1
  168. package/dist/packages/core/src/utilities/mergeDeep.d.ts +0 -1
  169. package/dist/packages/core/src/utilities/minMax.d.ts +0 -1
  170. package/dist/packages/core/src/utilities/objectIncludes.d.ts +0 -8
  171. package/dist/packages/core/src/utilities/removeDuplicates.d.ts +0 -8
  172. package/dist/packages/extension-bubble-menu/src/bubble-menu-plugin.d.ts +0 -99
  173. package/dist/packages/extension-bubble-menu/src/bubble-menu.d.ts +0 -15
  174. package/dist/packages/extension-bubble-menu/src/index.d.ts +0 -4
  175. package/dist/packages/extension-floating-menu/src/floating-menu-plugin.d.ts +0 -81
  176. package/dist/packages/extension-floating-menu/src/floating-menu.d.ts +0 -15
  177. package/dist/packages/extension-floating-menu/src/index.d.ts +0 -4
  178. package/dist/packages/vue-2/src/BubbleMenu.d.ts +0 -11
  179. package/dist/packages/vue-2/src/Editor.d.ts +0 -5
  180. package/dist/packages/vue-2/src/EditorContent.d.ts +0 -6
  181. package/dist/packages/vue-2/src/FloatingMenu.d.ts +0 -9
  182. package/dist/packages/vue-2/src/NodeViewContent.d.ts +0 -5
  183. package/dist/packages/vue-2/src/NodeViewWrapper.d.ts +0 -9
  184. package/dist/packages/vue-2/src/VueNodeViewRenderer.d.ts +0 -37
  185. package/dist/packages/vue-2/src/VueRenderer.d.ts +0 -12
  186. package/dist/packages/vue-2/src/index.d.ts +0 -9
package/dist/index.cjs CHANGED
@@ -1,393 +1,485 @@
1
- 'use strict';
2
-
3
- var extensionBubbleMenu = require('@tiptap/extension-bubble-menu');
4
- var core = require('@tiptap/core');
5
- var extensionFloatingMenu = require('@tiptap/extension-floating-menu');
6
- var Vue = require('vue');
7
- var vueTsTypes = require('vue-ts-types');
8
-
9
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
10
30
 
11
- var Vue__default = /*#__PURE__*/_interopDefaultCompat(Vue);
31
+ // src/index.ts
32
+ var src_exports = {};
33
+ __export(src_exports, {
34
+ BubbleMenu: () => BubbleMenu,
35
+ Editor: () => Editor,
36
+ EditorContent: () => EditorContent,
37
+ FloatingMenu: () => FloatingMenu,
38
+ NodeViewContent: () => NodeViewContent,
39
+ NodeViewWrapper: () => NodeViewWrapper,
40
+ VueNodeViewRenderer: () => VueNodeViewRenderer,
41
+ VueRenderer: () => VueRenderer,
42
+ nodeViewProps: () => nodeViewProps
43
+ });
44
+ module.exports = __toCommonJS(src_exports);
12
45
 
13
- const BubbleMenu = {
14
- name: 'BubbleMenu',
15
- props: {
16
- pluginKey: {
17
- type: [String, Object],
18
- default: 'bubbleMenu',
19
- },
20
- editor: {
21
- type: Object,
22
- required: true,
23
- },
24
- updateDelay: {
25
- type: Number,
26
- },
27
- options: {
28
- type: Object,
29
- default: {},
30
- },
31
- resizeDelay: {
32
- type: Number,
33
- },
34
- shouldShow: {
35
- type: Function,
36
- default: null,
37
- },
46
+ // src/BubbleMenu.ts
47
+ var import_extension_bubble_menu = require("@tiptap/extension-bubble-menu");
48
+ var BubbleMenu = {
49
+ name: "BubbleMenu",
50
+ props: {
51
+ pluginKey: {
52
+ type: [String, Object],
53
+ default: "bubbleMenu"
38
54
  },
39
- watch: {
40
- editor: {
41
- immediate: true,
42
- handler(editor) {
43
- if (!editor) {
44
- return;
45
- }
46
- this.$el.style.visibility = 'hidden';
47
- this.$el.style.position = 'absolute';
48
- this.$el.remove();
49
- this.$nextTick(() => {
50
- editor.registerPlugin(extensionBubbleMenu.BubbleMenuPlugin({
51
- updateDelay: this.updateDelay,
52
- resizeDelay: this.resizeDelay,
53
- options: this.options,
54
- editor,
55
- element: this.$el,
56
- pluginKey: this.pluginKey,
57
- shouldShow: this.shouldShow,
58
- }));
59
- });
60
- },
61
- },
55
+ editor: {
56
+ type: Object,
57
+ required: true
58
+ },
59
+ updateDelay: {
60
+ type: Number
62
61
  },
63
- render(createElement) {
64
- return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default);
62
+ options: {
63
+ type: Object,
64
+ default: {}
65
65
  },
66
- beforeDestroy() {
67
- this.editor.unregisterPlugin(this.pluginKey);
66
+ resizeDelay: {
67
+ type: Number
68
68
  },
69
+ shouldShow: {
70
+ type: Function,
71
+ default: null
72
+ }
73
+ },
74
+ watch: {
75
+ editor: {
76
+ immediate: true,
77
+ handler(editor) {
78
+ if (!editor) {
79
+ return;
80
+ }
81
+ this.$el.style.visibility = "hidden";
82
+ this.$el.style.position = "absolute";
83
+ this.$el.remove();
84
+ this.$nextTick(() => {
85
+ editor.registerPlugin((0, import_extension_bubble_menu.BubbleMenuPlugin)({
86
+ updateDelay: this.updateDelay,
87
+ resizeDelay: this.resizeDelay,
88
+ options: this.options,
89
+ editor,
90
+ element: this.$el,
91
+ pluginKey: this.pluginKey,
92
+ shouldShow: this.shouldShow
93
+ }));
94
+ });
95
+ }
96
+ }
97
+ },
98
+ render(createElement) {
99
+ return createElement("div", { style: { visibility: "hidden" } }, this.$slots.default);
100
+ },
101
+ beforeDestroy() {
102
+ this.editor.unregisterPlugin(this.pluginKey);
103
+ }
69
104
  };
70
105
 
71
- class Editor extends core.Editor {
72
- constructor() {
73
- super(...arguments);
74
- this.contentComponent = null;
106
+ // src/Editor.ts
107
+ var import_core = require("@tiptap/core");
108
+ var Editor = class extends import_core.Editor {
109
+ constructor() {
110
+ super(...arguments);
111
+ this.contentComponent = null;
112
+ }
113
+ };
114
+
115
+ // src/EditorContent.ts
116
+ var EditorContent = {
117
+ name: "EditorContent",
118
+ props: {
119
+ editor: {
120
+ default: null,
121
+ type: Object
75
122
  }
76
- }
123
+ },
124
+ watch: {
125
+ editor: {
126
+ immediate: true,
127
+ handler(editor) {
128
+ if (editor && editor.options.element) {
129
+ this.$nextTick(() => {
130
+ const element = this.$el;
131
+ if (!element || !editor.options.element.firstChild) {
132
+ return;
133
+ }
134
+ element.append(...editor.options.element.childNodes);
135
+ editor.contentComponent = this;
136
+ editor.setOptions({
137
+ element
138
+ });
139
+ editor.createNodeViews();
140
+ });
141
+ }
142
+ }
143
+ }
144
+ },
145
+ render(createElement) {
146
+ return createElement("div");
147
+ },
148
+ beforeDestroy() {
149
+ const { editor } = this;
150
+ if (!editor) {
151
+ return;
152
+ }
153
+ if (!editor.isDestroyed) {
154
+ editor.view.setProps({
155
+ nodeViews: {}
156
+ });
157
+ }
158
+ editor.contentComponent = null;
159
+ if (!editor.options.element.firstChild) {
160
+ return;
161
+ }
162
+ const newElement = document.createElement("div");
163
+ newElement.append(...editor.options.element.childNodes);
164
+ editor.setOptions({
165
+ element: newElement
166
+ });
167
+ }
168
+ };
77
169
 
78
- const EditorContent = {
79
- name: 'EditorContent',
80
- props: {
81
- editor: {
82
- default: null,
83
- type: Object,
84
- },
170
+ // src/FloatingMenu.ts
171
+ var import_extension_floating_menu = require("@tiptap/extension-floating-menu");
172
+ var FloatingMenu = {
173
+ name: "FloatingMenu",
174
+ props: {
175
+ pluginKey: {
176
+ type: [String, Object],
177
+ default: "floatingMenu"
85
178
  },
86
- watch: {
87
- editor: {
88
- immediate: true,
89
- handler(editor) {
90
- if (editor && editor.options.element) {
91
- this.$nextTick(() => {
92
- const element = this.$el;
93
- if (!element || !editor.options.element.firstChild) {
94
- return;
95
- }
96
- element.append(...editor.options.element.childNodes);
97
- editor.contentComponent = this;
98
- editor.setOptions({
99
- element,
100
- });
101
- editor.createNodeViews();
102
- });
103
- }
104
- },
105
- },
179
+ editor: {
180
+ type: Object,
181
+ required: true
106
182
  },
107
- render(createElement) {
108
- return createElement('div');
183
+ options: {
184
+ type: Object,
185
+ default: () => ({})
109
186
  },
110
- beforeDestroy() {
111
- const { editor } = this;
187
+ shouldShow: {
188
+ type: Function,
189
+ default: null
190
+ }
191
+ },
192
+ watch: {
193
+ editor: {
194
+ immediate: true,
195
+ handler(editor) {
112
196
  if (!editor) {
113
- return;
197
+ return;
114
198
  }
115
- if (!editor.isDestroyed) {
116
- editor.view.setProps({
117
- nodeViews: {},
118
- });
119
- }
120
- editor.contentComponent = null;
121
- if (!editor.options.element.firstChild) {
122
- return;
123
- }
124
- const newElement = document.createElement('div');
125
- newElement.append(...editor.options.element.childNodes);
126
- editor.setOptions({
127
- element: newElement,
199
+ this.$el.style.visibility = "hidden";
200
+ this.$el.style.position = "absolute";
201
+ this.$el.remove();
202
+ this.$nextTick(() => {
203
+ editor.registerPlugin((0, import_extension_floating_menu.FloatingMenuPlugin)({
204
+ pluginKey: this.pluginKey,
205
+ editor,
206
+ element: this.$el,
207
+ options: this.options,
208
+ shouldShow: this.shouldShow
209
+ }));
128
210
  });
129
- },
211
+ }
212
+ }
213
+ },
214
+ render(createElement) {
215
+ return createElement("div", { style: { visibility: "hidden" } }, this.$slots.default);
216
+ },
217
+ beforeDestroy() {
218
+ this.editor.unregisterPlugin(this.pluginKey);
219
+ }
130
220
  };
131
221
 
132
- const FloatingMenu = {
133
- name: 'FloatingMenu',
134
- props: {
135
- pluginKey: {
136
- type: [String, Object],
137
- default: 'floatingMenu',
138
- },
139
- editor: {
140
- type: Object,
141
- required: true,
142
- },
143
- options: {
144
- type: Object,
145
- default: () => ({}),
146
- },
147
- shouldShow: {
148
- type: Function,
149
- default: null,
150
- },
151
- },
152
- watch: {
153
- editor: {
154
- immediate: true,
155
- handler(editor) {
156
- if (!editor) {
157
- return;
158
- }
159
- this.$el.style.visibility = 'hidden';
160
- this.$el.style.position = 'absolute';
161
- this.$el.remove();
162
- this.$nextTick(() => {
163
- editor.registerPlugin(extensionFloatingMenu.FloatingMenuPlugin({
164
- pluginKey: this.pluginKey,
165
- editor,
166
- element: this.$el,
167
- options: this.options,
168
- shouldShow: this.shouldShow,
169
- }));
170
- });
171
- },
172
- },
173
- },
174
- render(createElement) {
175
- return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default);
176
- },
177
- beforeDestroy() {
178
- this.editor.unregisterPlugin(this.pluginKey);
179
- },
222
+ // src/NodeViewContent.ts
223
+ var NodeViewContent = {
224
+ props: {
225
+ as: {
226
+ type: String,
227
+ default: "div"
228
+ }
229
+ },
230
+ render(createElement) {
231
+ return createElement(this.as, {
232
+ style: {
233
+ whiteSpace: "pre-wrap"
234
+ },
235
+ attrs: {
236
+ "data-node-view-content": ""
237
+ }
238
+ });
239
+ }
180
240
  };
181
241
 
182
- const NodeViewContent = {
183
- props: {
184
- as: {
185
- type: String,
186
- default: 'div',
242
+ // src/NodeViewWrapper.ts
243
+ var NodeViewWrapper = {
244
+ props: {
245
+ as: {
246
+ type: String,
247
+ default: "div"
248
+ }
249
+ },
250
+ inject: ["onDragStart", "decorationClasses"],
251
+ render(createElement) {
252
+ return createElement(
253
+ this.as,
254
+ {
255
+ class: this.decorationClasses.value,
256
+ style: {
257
+ whiteSpace: "normal"
187
258
  },
188
- },
189
- render(createElement) {
190
- return createElement(this.as, {
191
- style: {
192
- whiteSpace: 'pre-wrap',
193
- },
194
- attrs: {
195
- 'data-node-view-content': '',
196
- },
197
- });
198
- },
199
- };
200
-
201
- const NodeViewWrapper = {
202
- props: {
203
- as: {
204
- type: String,
205
- default: 'div',
259
+ attrs: {
260
+ "data-node-view-wrapper": ""
206
261
  },
207
- },
208
- inject: ['onDragStart', 'decorationClasses'],
209
- render(createElement) {
210
- return createElement(this.as, {
211
- class: this.decorationClasses.value,
212
- style: {
213
- whiteSpace: 'normal',
214
- },
215
- attrs: {
216
- 'data-node-view-wrapper': '',
217
- },
218
- on: {
219
- dragstart: this.onDragStart,
220
- },
221
- }, this.$slots.default);
222
- },
262
+ on: {
263
+ dragstart: this.onDragStart
264
+ }
265
+ },
266
+ this.$slots.default
267
+ );
268
+ }
223
269
  };
224
270
 
225
- /**
226
- * The VueRenderer class is responsible for rendering a Vue component as a ProseMirror node view.
227
- */
228
- class VueRenderer {
229
- constructor(component, props) {
230
- const Component = (typeof component === 'function') ? component : Vue__default.default.extend(component);
231
- this.ref = new Component(props).$mount();
232
- }
233
- get element() {
234
- return this.ref.$el;
235
- }
236
- updateProps(props = {}) {
237
- var _a, _b, _c;
238
- if (!this.ref.$props) {
239
- return;
240
- }
241
- // prevents `Avoid mutating a prop directly` error message
242
- // Fix: `VueNodeViewRenderer` change vue Constructor `config.silent` not working
243
- 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__default.default; // eslint-disable-line
244
- const originalSilent = currentVueConstructor.config.silent;
245
- currentVueConstructor.config.silent = true;
246
- Object
247
- .entries(props)
248
- .forEach(([key, value]) => {
249
- this.ref.$props[key] = value;
250
- });
251
- currentVueConstructor.config.silent = originalSilent;
252
- }
253
- destroy() {
254
- this.ref.$destroy();
271
+ // src/VueNodeViewRenderer.ts
272
+ var import_core2 = require("@tiptap/core");
273
+ var import_vue2 = __toESM(require("vue"), 1);
274
+ var import_vue_ts_types = require("vue-ts-types");
275
+
276
+ // src/VueRenderer.ts
277
+ var import_vue = __toESM(require("vue"), 1);
278
+ var VueRenderer = class {
279
+ constructor(component, props) {
280
+ const Component = typeof component === "function" ? component : import_vue.default.extend(component);
281
+ this.ref = new Component(props).$mount();
282
+ }
283
+ get element() {
284
+ return this.ref.$el;
285
+ }
286
+ updateProps(props = {}) {
287
+ var _a, _b, _c;
288
+ if (!this.ref.$props) {
289
+ return;
255
290
  }
256
- }
291
+ const currentVueConstructor = (_c = (_b = (_a = this.ref.$props.editor) == null ? void 0 : _a.contentComponent) == null ? void 0 : _b.$options._base) != null ? _c : import_vue.default;
292
+ const originalSilent = currentVueConstructor.config.silent;
293
+ currentVueConstructor.config.silent = true;
294
+ Object.entries(props).forEach(([key, value]) => {
295
+ this.ref.$props[key] = value;
296
+ });
297
+ currentVueConstructor.config.silent = originalSilent;
298
+ }
299
+ destroy() {
300
+ this.ref.$destroy();
301
+ }
302
+ };
257
303
 
258
- const nodeViewProps = {
259
- editor: vueTsTypes.objectProp().required,
260
- node: vueTsTypes.objectProp().required,
261
- decorations: vueTsTypes.objectProp().required,
262
- selected: vueTsTypes.booleanProp().required,
263
- extension: vueTsTypes.objectProp().required,
264
- getPos: vueTsTypes.functionProp().required,
265
- updateAttributes: vueTsTypes.functionProp().required,
266
- deleteNode: vueTsTypes.functionProp().required,
304
+ // src/VueNodeViewRenderer.ts
305
+ var nodeViewProps = {
306
+ editor: (0, import_vue_ts_types.objectProp)().required,
307
+ node: (0, import_vue_ts_types.objectProp)().required,
308
+ decorations: (0, import_vue_ts_types.objectProp)().required,
309
+ selected: (0, import_vue_ts_types.booleanProp)().required,
310
+ extension: (0, import_vue_ts_types.objectProp)().required,
311
+ getPos: (0, import_vue_ts_types.functionProp)().required,
312
+ updateAttributes: (0, import_vue_ts_types.functionProp)().required,
313
+ deleteNode: (0, import_vue_ts_types.functionProp)().required
267
314
  };
268
- class VueNodeView extends core.NodeView {
269
- mount() {
270
- var _a, _b;
271
- const props = {
272
- editor: this.editor,
273
- node: this.node,
274
- decorations: this.decorations,
275
- selected: false,
276
- extension: this.extension,
277
- getPos: () => this.getPos(),
278
- updateAttributes: (attributes = {}) => this.updateAttributes(attributes),
279
- deleteNode: () => this.deleteNode(),
315
+ var VueNodeView = class extends import_core2.NodeView {
316
+ mount() {
317
+ var _a, _b;
318
+ const props = {
319
+ editor: this.editor,
320
+ node: this.node,
321
+ decorations: this.decorations,
322
+ innerDecorations: this.innerDecorations,
323
+ view: this.view,
324
+ selected: false,
325
+ extension: this.extension,
326
+ HTMLAttributes: this.HTMLAttributes,
327
+ getPos: () => this.getPos(),
328
+ updateAttributes: (attributes = {}) => this.updateAttributes(attributes),
329
+ deleteNode: () => this.deleteNode()
330
+ };
331
+ const onDragStart = this.onDragStart.bind(this);
332
+ this.decorationClasses = import_vue2.default.observable({
333
+ value: this.getDecorationClasses()
334
+ });
335
+ const vue = (_b = (_a = this.editor.contentComponent) == null ? void 0 : _a.$options._base) != null ? _b : import_vue2.default;
336
+ const Component = vue.extend(this.component).extend({
337
+ props: Object.keys(props),
338
+ provide: () => {
339
+ return {
340
+ onDragStart,
341
+ decorationClasses: this.decorationClasses
280
342
  };
281
- const onDragStart = this.onDragStart.bind(this);
282
- this.decorationClasses = Vue__default.default.observable({
283
- value: this.getDecorationClasses(),
284
- });
285
- // @ts-ignore
286
- const vue = (_b = (_a = this.editor.contentComponent) === null || _a === void 0 ? void 0 : _a.$options._base) !== null && _b !== void 0 ? _b : Vue__default.default; // eslint-disable-line
287
- const Component = vue.extend(this.component).extend({
288
- props: Object.keys(props),
289
- provide: () => {
290
- return {
291
- onDragStart,
292
- decorationClasses: this.decorationClasses,
293
- };
294
- },
295
- });
296
- this.renderer = new VueRenderer(Component, {
297
- parent: this.editor.contentComponent,
298
- propsData: props,
299
- });
300
- }
301
- get dom() {
302
- if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {
303
- throw Error('Please use the NodeViewWrapper component for your node view.');
304
- }
305
- return this.renderer.element;
343
+ }
344
+ });
345
+ this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);
346
+ this.editor.on("selectionUpdate", this.handleSelectionUpdate);
347
+ this.renderer = new VueRenderer(Component, {
348
+ parent: this.editor.contentComponent,
349
+ propsData: props
350
+ });
351
+ }
352
+ /**
353
+ * Return the DOM element.
354
+ * This is the element that will be used to display the node view.
355
+ */
356
+ get dom() {
357
+ if (!this.renderer.element.hasAttribute("data-node-view-wrapper")) {
358
+ throw Error("Please use the NodeViewWrapper component for your node view.");
306
359
  }
307
- get contentDOM() {
308
- if (this.node.isLeaf) {
309
- return null;
310
- }
311
- const contentElement = this.dom.querySelector('[data-node-view-content]');
312
- return (contentElement || this.dom);
360
+ return this.renderer.element;
361
+ }
362
+ /**
363
+ * Return the content DOM element.
364
+ * This is the element that will be used to display the rich-text content of the node.
365
+ */
366
+ get contentDOM() {
367
+ if (this.node.isLeaf) {
368
+ return null;
313
369
  }
314
- update(node, decorations) {
315
- const updateProps = (props) => {
316
- this.decorationClasses.value = this.getDecorationClasses();
317
- this.renderer.updateProps(props);
318
- };
319
- if (typeof this.options.update === 'function') {
320
- const oldNode = this.node;
321
- const oldDecorations = this.decorations;
322
- this.node = node;
323
- this.decorations = decorations;
324
- return this.options.update({
325
- oldNode,
326
- oldDecorations,
327
- newNode: node,
328
- newDecorations: decorations,
329
- updateProps: () => updateProps({ node, decorations }),
330
- });
331
- }
332
- if (node.type !== this.node.type) {
333
- return false;
334
- }
335
- if (node === this.node && this.decorations === decorations) {
336
- return true;
337
- }
338
- this.node = node;
339
- this.decorations = decorations;
340
- updateProps({ node, decorations });
341
- return true;
370
+ const contentElement = this.dom.querySelector("[data-node-view-content]");
371
+ return contentElement || this.dom;
372
+ }
373
+ /**
374
+ * On editor selection update, check if the node is selected.
375
+ * If it is, call `selectNode`, otherwise call `deselectNode`.
376
+ */
377
+ handleSelectionUpdate() {
378
+ const { from, to } = this.editor.state.selection;
379
+ const pos = this.getPos();
380
+ if (typeof pos !== "number") {
381
+ return;
342
382
  }
343
- selectNode() {
344
- this.renderer.updateProps({
345
- selected: true,
346
- });
347
- this.renderer.element.classList.add('ProseMirror-selectednode');
383
+ if (from <= pos && to >= pos + this.node.nodeSize) {
384
+ if (this.renderer.ref.$props.selected) {
385
+ return;
386
+ }
387
+ this.selectNode();
388
+ } else {
389
+ if (!this.renderer.ref.$props.selected) {
390
+ return;
391
+ }
392
+ this.deselectNode();
348
393
  }
349
- deselectNode() {
350
- this.renderer.updateProps({
351
- selected: false,
352
- });
353
- this.renderer.element.classList.remove('ProseMirror-selectednode');
394
+ }
395
+ /**
396
+ * On update, update the React component.
397
+ * To prevent unnecessary updates, the `update` option can be used.
398
+ */
399
+ update(node, decorations, innerDecorations) {
400
+ const rerenderComponent = (props) => {
401
+ this.decorationClasses.value = this.getDecorationClasses();
402
+ this.renderer.updateProps(props);
403
+ };
404
+ if (typeof this.options.update === "function") {
405
+ const oldNode = this.node;
406
+ const oldDecorations = this.decorations;
407
+ const oldInnerDecorations = this.innerDecorations;
408
+ this.node = node;
409
+ this.decorations = decorations;
410
+ this.innerDecorations = innerDecorations;
411
+ return this.options.update({
412
+ oldNode,
413
+ oldDecorations,
414
+ newNode: node,
415
+ newDecorations: decorations,
416
+ oldInnerDecorations,
417
+ innerDecorations,
418
+ updateProps: () => rerenderComponent({ node, decorations, innerDecorations })
419
+ });
354
420
  }
355
- getDecorationClasses() {
356
- return (this.decorations
357
- // @ts-ignore
358
- .map(item => item.type.attrs.class)
359
- .flat()
360
- .join(' '));
421
+ if (node.type !== this.node.type) {
422
+ return false;
361
423
  }
362
- destroy() {
363
- this.renderer.destroy();
424
+ if (node === this.node && this.decorations === decorations && this.innerDecorations === innerDecorations) {
425
+ return true;
364
426
  }
365
- }
427
+ this.node = node;
428
+ this.decorations = decorations;
429
+ this.innerDecorations = innerDecorations;
430
+ rerenderComponent({ node, decorations, innerDecorations });
431
+ return true;
432
+ }
433
+ /**
434
+ * Select the node.
435
+ * Add the `selected` prop and the `ProseMirror-selectednode` class.
436
+ */
437
+ selectNode() {
438
+ this.renderer.updateProps({
439
+ selected: true
440
+ });
441
+ this.renderer.element.classList.add("ProseMirror-selectednode");
442
+ }
443
+ /**
444
+ * Deselect the node.
445
+ * Remove the `selected` prop and the `ProseMirror-selectednode` class.
446
+ */
447
+ deselectNode() {
448
+ this.renderer.updateProps({
449
+ selected: false
450
+ });
451
+ this.renderer.element.classList.remove("ProseMirror-selectednode");
452
+ }
453
+ getDecorationClasses() {
454
+ return this.decorations.map((item) => item.type.attrs.class).flat().join(" ");
455
+ }
456
+ destroy() {
457
+ this.renderer.destroy();
458
+ this.editor.off("selectionUpdate", this.handleSelectionUpdate);
459
+ }
460
+ };
366
461
  function VueNodeViewRenderer(component, options) {
367
- return (props) => {
368
- // try to get the parent component
369
- // this is important for vue devtools to show the component hierarchy correctly
370
- // maybe it’s `undefined` because <editor-content> isn’t rendered yet
371
- if (!props.editor.contentComponent) {
372
- return {};
373
- }
374
- return new VueNodeView(component, props, options);
375
- };
462
+ return (props) => {
463
+ if (!props.editor.contentComponent) {
464
+ return {};
465
+ }
466
+ return new VueNodeView(component, props, options);
467
+ };
376
468
  }
377
469
 
378
- exports.BubbleMenu = BubbleMenu;
379
- exports.Editor = Editor;
380
- exports.EditorContent = EditorContent;
381
- exports.FloatingMenu = FloatingMenu;
382
- exports.NodeViewContent = NodeViewContent;
383
- exports.NodeViewWrapper = NodeViewWrapper;
384
- exports.VueNodeViewRenderer = VueNodeViewRenderer;
385
- exports.VueRenderer = VueRenderer;
386
- exports.nodeViewProps = nodeViewProps;
387
- Object.keys(core).forEach(function (k) {
388
- if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
389
- enumerable: true,
390
- get: function () { return core[k]; }
391
- });
470
+ // src/index.ts
471
+ __reExport(src_exports, require("@tiptap/core"), module.exports);
472
+ // Annotate the CommonJS export names for ESM import in node:
473
+ 0 && (module.exports = {
474
+ BubbleMenu,
475
+ Editor,
476
+ EditorContent,
477
+ FloatingMenu,
478
+ NodeViewContent,
479
+ NodeViewWrapper,
480
+ VueNodeViewRenderer,
481
+ VueRenderer,
482
+ nodeViewProps,
483
+ ...require("@tiptap/core")
392
484
  });
393
- //# sourceMappingURL=index.cjs.map
485
+ //# sourceMappingURL=index.cjs.map