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