@tiptap/vue-3 2.0.0-beta.22 → 2.0.0-beta.220
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.
- package/README.md +2 -2
- package/dist/{tiptap-vue-3.cjs.js → index.cjs} +130 -66
- package/dist/index.cjs.map +1 -0
- package/dist/{tiptap-vue-3.esm.js → index.js} +130 -64
- package/dist/index.js.map +1 -0
- package/dist/{tiptap-vue-3.umd.js → index.umd.js} +133 -69
- package/dist/index.umd.js.map +1 -0
- package/dist/packages/vue-3/src/BubbleMenu.d.ts +58 -4
- package/dist/packages/vue-3/src/Editor.d.ts +4 -2
- package/dist/packages/vue-3/src/EditorContent.d.ts +7 -4
- package/dist/packages/vue-3/src/FloatingMenu.d.ts +43 -4
- package/dist/packages/vue-3/src/NodeViewContent.d.ts +6 -3
- package/dist/packages/vue-3/src/NodeViewWrapper.d.ts +6 -3
- package/dist/packages/vue-3/src/VueNodeViewRenderer.d.ts +26 -20
- package/dist/packages/vue-3/src/VueRenderer.d.ts +6 -6
- package/dist/packages/vue-3/src/index.d.ts +4 -4
- package/dist/packages/vue-3/src/useEditor.d.ts +1 -1
- package/package.json +32 -12
- package/src/BubbleMenu.ts +35 -11
- package/src/Editor.ts +20 -10
- package/src/EditorContent.ts +15 -10
- package/src/FloatingMenu.ts +30 -11
- package/src/NodeViewContent.ts +6 -8
- package/src/NodeViewWrapper.ts +5 -4
- package/src/VueNodeViewRenderer.ts +80 -34
- package/src/VueRenderer.ts +10 -9
- package/src/index.ts +4 -4
- package/src/useEditor.ts +3 -2
- package/CHANGELOG.md +0 -191
- package/LICENSE.md +0 -21
- package/dist/tiptap-vue-3.bundle.umd.min.js +0 -2
- package/dist/tiptap-vue-3.bundle.umd.min.js.map +0 -1
- package/dist/tiptap-vue-3.cjs.js.map +0 -1
- package/dist/tiptap-vue-3.esm.js.map +0 -1
- package/dist/tiptap-vue-3.umd.js.map +0 -1
package/README.md
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
## Introduction
|
|
8
8
|
tiptap is a headless wrapper around [ProseMirror](https://ProseMirror.net) – a toolkit for building rich text WYSIWYG editors, which is already in use at many well-known companies such as *New York Times*, *The Guardian* or *Atlassian*.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Official Documentation
|
|
11
11
|
Documentation can be found on the [tiptap website](https://tiptap.dev).
|
|
12
12
|
|
|
13
13
|
## License
|
|
14
|
-
tiptap is open sourced software licensed under the [MIT license](https://github.com/ueberdosis/tiptap
|
|
14
|
+
tiptap is open sourced software licensed under the [MIT license](https://github.com/ueberdosis/tiptap/blob/main/LICENSE.md).
|
|
@@ -2,34 +2,51 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var core = require('@tiptap/core');
|
|
6
|
-
var vue = require('vue');
|
|
7
5
|
var extensionBubbleMenu = require('@tiptap/extension-bubble-menu');
|
|
6
|
+
var vue = require('vue');
|
|
7
|
+
var core = require('@tiptap/core');
|
|
8
8
|
var extensionFloatingMenu = require('@tiptap/extension-floating-menu');
|
|
9
9
|
|
|
10
10
|
const BubbleMenu = vue.defineComponent({
|
|
11
11
|
name: 'BubbleMenu',
|
|
12
12
|
props: {
|
|
13
|
+
pluginKey: {
|
|
14
|
+
type: [String, Object],
|
|
15
|
+
default: 'bubbleMenu',
|
|
16
|
+
},
|
|
13
17
|
editor: {
|
|
14
18
|
type: Object,
|
|
15
19
|
required: true,
|
|
16
20
|
},
|
|
21
|
+
updateDelay: {
|
|
22
|
+
type: Number,
|
|
23
|
+
default: undefined,
|
|
24
|
+
},
|
|
17
25
|
tippyOptions: {
|
|
18
26
|
type: Object,
|
|
19
27
|
default: () => ({}),
|
|
20
28
|
},
|
|
29
|
+
shouldShow: {
|
|
30
|
+
type: Function,
|
|
31
|
+
default: null,
|
|
32
|
+
},
|
|
21
33
|
},
|
|
22
|
-
setup(
|
|
34
|
+
setup(props, { slots }) {
|
|
23
35
|
const root = vue.ref(null);
|
|
24
36
|
vue.onMounted(() => {
|
|
37
|
+
const { updateDelay, editor, pluginKey, shouldShow, tippyOptions, } = props;
|
|
25
38
|
editor.registerPlugin(extensionBubbleMenu.BubbleMenuPlugin({
|
|
39
|
+
updateDelay,
|
|
26
40
|
editor,
|
|
27
41
|
element: root.value,
|
|
42
|
+
pluginKey,
|
|
43
|
+
shouldShow,
|
|
28
44
|
tippyOptions,
|
|
29
45
|
}));
|
|
30
46
|
});
|
|
31
47
|
vue.onBeforeUnmount(() => {
|
|
32
|
-
editor
|
|
48
|
+
const { pluginKey, editor } = props;
|
|
49
|
+
editor.unregisterPlugin(pluginKey);
|
|
33
50
|
});
|
|
34
51
|
return () => { var _a; return vue.h('div', { ref: root }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };
|
|
35
52
|
},
|
|
@@ -61,15 +78,18 @@ class Editor extends core.Editor {
|
|
|
61
78
|
this.vueRenderers = vue.reactive(new Map());
|
|
62
79
|
this.contentComponent = null;
|
|
63
80
|
this.reactiveState = useDebouncedRef(this.view.state);
|
|
81
|
+
this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage);
|
|
64
82
|
this.on('transaction', () => {
|
|
65
83
|
this.reactiveState.value = this.view.state;
|
|
84
|
+
this.reactiveExtensionStorage.value = this.extensionStorage;
|
|
66
85
|
});
|
|
67
|
-
return vue.markRaw(this);
|
|
86
|
+
return vue.markRaw(this); // eslint-disable-line
|
|
68
87
|
}
|
|
69
88
|
get state() {
|
|
70
|
-
return this.reactiveState
|
|
71
|
-
|
|
72
|
-
|
|
89
|
+
return this.reactiveState ? this.reactiveState.value : this.view.state;
|
|
90
|
+
}
|
|
91
|
+
get storage() {
|
|
92
|
+
return this.reactiveExtensionStorage ? this.reactiveExtensionStorage.value : super.storage;
|
|
73
93
|
}
|
|
74
94
|
/**
|
|
75
95
|
* Register a ProseMirror plugin.
|
|
@@ -106,7 +126,7 @@ const EditorContent = vue.defineComponent({
|
|
|
106
126
|
return;
|
|
107
127
|
}
|
|
108
128
|
const element = vue.unref(rootEl.value);
|
|
109
|
-
rootEl.value.
|
|
129
|
+
rootEl.value.append(...editor.options.element.childNodes);
|
|
110
130
|
// @ts-ignore
|
|
111
131
|
editor.contentComponent = instance.ctx._;
|
|
112
132
|
editor.setOptions({
|
|
@@ -118,6 +138,9 @@ const EditorContent = vue.defineComponent({
|
|
|
118
138
|
});
|
|
119
139
|
vue.onBeforeUnmount(() => {
|
|
120
140
|
const editor = props.editor;
|
|
141
|
+
if (!editor) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
121
144
|
// destroy nodeviews before vue removes dom element
|
|
122
145
|
if (!editor.isDestroyed) {
|
|
123
146
|
editor.view.setProps({
|
|
@@ -129,7 +152,7 @@ const EditorContent = vue.defineComponent({
|
|
|
129
152
|
return;
|
|
130
153
|
}
|
|
131
154
|
const newElement = document.createElement('div');
|
|
132
|
-
newElement.
|
|
155
|
+
newElement.append(...editor.options.element.childNodes);
|
|
133
156
|
editor.setOptions({
|
|
134
157
|
element: newElement,
|
|
135
158
|
});
|
|
@@ -159,6 +182,12 @@ const EditorContent = vue.defineComponent({
|
|
|
159
182
|
const FloatingMenu = vue.defineComponent({
|
|
160
183
|
name: 'FloatingMenu',
|
|
161
184
|
props: {
|
|
185
|
+
pluginKey: {
|
|
186
|
+
// TODO: TypeScript breaks :(
|
|
187
|
+
// type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],
|
|
188
|
+
type: null,
|
|
189
|
+
default: 'floatingMenu',
|
|
190
|
+
},
|
|
162
191
|
editor: {
|
|
163
192
|
type: Object,
|
|
164
193
|
required: true,
|
|
@@ -167,25 +196,73 @@ const FloatingMenu = vue.defineComponent({
|
|
|
167
196
|
type: Object,
|
|
168
197
|
default: () => ({}),
|
|
169
198
|
},
|
|
199
|
+
shouldShow: {
|
|
200
|
+
type: Function,
|
|
201
|
+
default: null,
|
|
202
|
+
},
|
|
170
203
|
},
|
|
171
|
-
setup(
|
|
204
|
+
setup(props, { slots }) {
|
|
172
205
|
const root = vue.ref(null);
|
|
173
206
|
vue.onMounted(() => {
|
|
207
|
+
const { pluginKey, editor, tippyOptions, shouldShow, } = props;
|
|
174
208
|
editor.registerPlugin(extensionFloatingMenu.FloatingMenuPlugin({
|
|
209
|
+
pluginKey,
|
|
175
210
|
editor,
|
|
176
211
|
element: root.value,
|
|
177
212
|
tippyOptions,
|
|
213
|
+
shouldShow,
|
|
178
214
|
}));
|
|
179
215
|
});
|
|
180
216
|
vue.onBeforeUnmount(() => {
|
|
181
|
-
editor
|
|
217
|
+
const { pluginKey, editor } = props;
|
|
218
|
+
editor.unregisterPlugin(pluginKey);
|
|
182
219
|
});
|
|
183
220
|
return () => { var _a; return vue.h('div', { ref: root }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };
|
|
184
221
|
},
|
|
185
222
|
});
|
|
186
223
|
|
|
224
|
+
const NodeViewContent = vue.defineComponent({
|
|
225
|
+
props: {
|
|
226
|
+
as: {
|
|
227
|
+
type: String,
|
|
228
|
+
default: 'div',
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
render() {
|
|
232
|
+
return vue.h(this.as, {
|
|
233
|
+
style: {
|
|
234
|
+
whiteSpace: 'pre-wrap',
|
|
235
|
+
},
|
|
236
|
+
'data-node-view-content': '',
|
|
237
|
+
});
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
const NodeViewWrapper = vue.defineComponent({
|
|
242
|
+
props: {
|
|
243
|
+
as: {
|
|
244
|
+
type: String,
|
|
245
|
+
default: 'div',
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
inject: ['onDragStart', 'decorationClasses'],
|
|
249
|
+
render() {
|
|
250
|
+
var _a, _b;
|
|
251
|
+
return vue.h(this.as, {
|
|
252
|
+
// @ts-ignore
|
|
253
|
+
class: this.decorationClasses,
|
|
254
|
+
style: {
|
|
255
|
+
whiteSpace: 'normal',
|
|
256
|
+
},
|
|
257
|
+
'data-node-view-wrapper': '',
|
|
258
|
+
// @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)
|
|
259
|
+
onDragstart: this.onDragStart,
|
|
260
|
+
}, (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a));
|
|
261
|
+
},
|
|
262
|
+
});
|
|
263
|
+
|
|
187
264
|
const useEditor = (options = {}) => {
|
|
188
|
-
const editor = vue.
|
|
265
|
+
const editor = vue.shallowRef();
|
|
189
266
|
vue.onMounted(() => {
|
|
190
267
|
editor.value = new Editor(options);
|
|
191
268
|
});
|
|
@@ -215,7 +292,7 @@ class VueRenderer {
|
|
|
215
292
|
}
|
|
216
293
|
get ref() {
|
|
217
294
|
var _a;
|
|
218
|
-
return (_a = this.editor.contentComponent) === null || _a === void 0 ? void 0 : _a.
|
|
295
|
+
return (_a = this.editor.contentComponent) === null || _a === void 0 ? void 0 : _a.refs[this.id];
|
|
219
296
|
}
|
|
220
297
|
updateProps(props = {}) {
|
|
221
298
|
Object
|
|
@@ -258,6 +335,10 @@ const nodeViewProps = {
|
|
|
258
335
|
type: Function,
|
|
259
336
|
required: true,
|
|
260
337
|
},
|
|
338
|
+
deleteNode: {
|
|
339
|
+
type: Function,
|
|
340
|
+
required: true,
|
|
341
|
+
},
|
|
261
342
|
};
|
|
262
343
|
class VueNodeView extends core.NodeView {
|
|
263
344
|
mount() {
|
|
@@ -269,18 +350,30 @@ class VueNodeView extends core.NodeView {
|
|
|
269
350
|
extension: this.extension,
|
|
270
351
|
getPos: () => this.getPos(),
|
|
271
352
|
updateAttributes: (attributes = {}) => this.updateAttributes(attributes),
|
|
353
|
+
deleteNode: () => this.deleteNode(),
|
|
272
354
|
};
|
|
273
355
|
const onDragStart = this.onDragStart.bind(this);
|
|
274
356
|
this.decorationClasses = vue.ref(this.getDecorationClasses());
|
|
275
357
|
const extendedComponent = vue.defineComponent({
|
|
276
358
|
extends: { ...this.component },
|
|
277
359
|
props: Object.keys(props),
|
|
278
|
-
|
|
360
|
+
template: this.component.template,
|
|
361
|
+
setup: reactiveProps => {
|
|
279
362
|
var _a, _b;
|
|
280
363
|
vue.provide('onDragStart', onDragStart);
|
|
281
364
|
vue.provide('decorationClasses', this.decorationClasses);
|
|
282
|
-
return (_b = (_a = this.component).setup) === null || _b === void 0 ? void 0 : _b.call(_a,
|
|
365
|
+
return (_b = (_a = this.component).setup) === null || _b === void 0 ? void 0 : _b.call(_a, reactiveProps, {
|
|
366
|
+
expose: () => undefined,
|
|
367
|
+
});
|
|
283
368
|
},
|
|
369
|
+
// add support for scoped styles
|
|
370
|
+
// @ts-ignore
|
|
371
|
+
// eslint-disable-next-line
|
|
372
|
+
__scopeId: this.component.__scopeId,
|
|
373
|
+
// add support for CSS Modules
|
|
374
|
+
// @ts-ignore
|
|
375
|
+
// eslint-disable-next-line
|
|
376
|
+
__cssModules: this.component.__cssModules,
|
|
284
377
|
});
|
|
285
378
|
this.renderer = new VueRenderer(extendedComponent, {
|
|
286
379
|
editor: this.editor,
|
|
@@ -298,11 +391,25 @@ class VueNodeView extends core.NodeView {
|
|
|
298
391
|
return null;
|
|
299
392
|
}
|
|
300
393
|
const contentElement = this.dom.querySelector('[data-node-view-content]');
|
|
301
|
-
return contentElement || this.dom;
|
|
394
|
+
return (contentElement || this.dom);
|
|
302
395
|
}
|
|
303
396
|
update(node, decorations) {
|
|
397
|
+
const updateProps = (props) => {
|
|
398
|
+
this.decorationClasses.value = this.getDecorationClasses();
|
|
399
|
+
this.renderer.updateProps(props);
|
|
400
|
+
};
|
|
304
401
|
if (typeof this.options.update === 'function') {
|
|
305
|
-
|
|
402
|
+
const oldNode = this.node;
|
|
403
|
+
const oldDecorations = this.decorations;
|
|
404
|
+
this.node = node;
|
|
405
|
+
this.decorations = decorations;
|
|
406
|
+
return this.options.update({
|
|
407
|
+
oldNode,
|
|
408
|
+
oldDecorations,
|
|
409
|
+
newNode: node,
|
|
410
|
+
newDecorations: decorations,
|
|
411
|
+
updateProps: () => updateProps({ node, decorations }),
|
|
412
|
+
});
|
|
306
413
|
}
|
|
307
414
|
if (node.type !== this.node.type) {
|
|
308
415
|
return false;
|
|
@@ -312,8 +419,7 @@ class VueNodeView extends core.NodeView {
|
|
|
312
419
|
}
|
|
313
420
|
this.node = node;
|
|
314
421
|
this.decorations = decorations;
|
|
315
|
-
|
|
316
|
-
this.renderer.updateProps({ node, decorations });
|
|
422
|
+
updateProps({ node, decorations });
|
|
317
423
|
return true;
|
|
318
424
|
}
|
|
319
425
|
selectNode() {
|
|
@@ -327,11 +433,11 @@ class VueNodeView extends core.NodeView {
|
|
|
327
433
|
});
|
|
328
434
|
}
|
|
329
435
|
getDecorationClasses() {
|
|
330
|
-
return this.decorations
|
|
436
|
+
return (this.decorations
|
|
331
437
|
// @ts-ignore
|
|
332
438
|
.map(item => item.type.attrs.class)
|
|
333
439
|
.flat()
|
|
334
|
-
.join(' ');
|
|
440
|
+
.join(' '));
|
|
335
441
|
}
|
|
336
442
|
destroy() {
|
|
337
443
|
this.renderer.destroy();
|
|
@@ -349,46 +455,6 @@ function VueNodeViewRenderer(component, options) {
|
|
|
349
455
|
};
|
|
350
456
|
}
|
|
351
457
|
|
|
352
|
-
const NodeViewWrapper = vue.defineComponent({
|
|
353
|
-
props: {
|
|
354
|
-
as: {
|
|
355
|
-
type: String,
|
|
356
|
-
default: 'div',
|
|
357
|
-
},
|
|
358
|
-
},
|
|
359
|
-
inject: ['onDragStart', 'decorationClasses'],
|
|
360
|
-
render() {
|
|
361
|
-
var _a, _b;
|
|
362
|
-
return vue.h(this.as, {
|
|
363
|
-
// @ts-ignore
|
|
364
|
-
class: this.decorationClasses.value,
|
|
365
|
-
style: {
|
|
366
|
-
whiteSpace: 'normal',
|
|
367
|
-
},
|
|
368
|
-
'data-node-view-wrapper': '',
|
|
369
|
-
// @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)
|
|
370
|
-
onDragStart: this.onDragStart,
|
|
371
|
-
}, (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a));
|
|
372
|
-
},
|
|
373
|
-
});
|
|
374
|
-
|
|
375
|
-
const NodeViewContent = vue.defineComponent({
|
|
376
|
-
props: {
|
|
377
|
-
as: {
|
|
378
|
-
type: String,
|
|
379
|
-
default: 'div',
|
|
380
|
-
},
|
|
381
|
-
},
|
|
382
|
-
render() {
|
|
383
|
-
return vue.h(this.as, {
|
|
384
|
-
style: {
|
|
385
|
-
whiteSpace: 'pre-wrap',
|
|
386
|
-
},
|
|
387
|
-
'data-node-view-content': '',
|
|
388
|
-
});
|
|
389
|
-
},
|
|
390
|
-
});
|
|
391
|
-
|
|
392
458
|
exports.BubbleMenu = BubbleMenu;
|
|
393
459
|
exports.Editor = Editor;
|
|
394
460
|
exports.EditorContent = EditorContent;
|
|
@@ -402,9 +468,7 @@ exports.useEditor = useEditor;
|
|
|
402
468
|
Object.keys(core).forEach(function (k) {
|
|
403
469
|
if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
|
|
404
470
|
enumerable: true,
|
|
405
|
-
get: function () {
|
|
406
|
-
return core[k];
|
|
407
|
-
}
|
|
471
|
+
get: function () { return core[k]; }
|
|
408
472
|
});
|
|
409
473
|
});
|
|
410
|
-
//# sourceMappingURL=
|
|
474
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/NodeViewContent.ts","../src/NodeViewWrapper.ts","../src/useEditor.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts"],"sourcesContent":["import { BubbleMenuPlugin, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const BubbleMenu = defineComponent({\n name: 'BubbleMenu',\n\n props: {\n pluginKey: {\n type: [String, Object] as PropType<BubbleMenuPluginProps['pluginKey']>,\n default: 'bubbleMenu',\n },\n\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n updateDelay: {\n type: Number as PropType<BubbleMenuPluginProps['updateDelay']>,\n default: undefined,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<Required<BubbleMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n updateDelay,\n editor,\n pluginKey,\n shouldShow,\n tippyOptions,\n } = props\n\n editor.registerPlugin(BubbleMenuPlugin({\n updateDelay,\n editor,\n element: root.value as HTMLElement,\n pluginKey,\n shouldShow,\n tippyOptions,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { Editor as CoreEditor, EditorOptions } from '@tiptap/core'\nimport { EditorState, Plugin, PluginKey } from '@tiptap/pm/state'\nimport {\n ComponentInternalInstance,\n ComponentPublicInstance,\n customRef,\n markRaw,\n reactive,\n Ref,\n} from 'vue'\n\nimport { VueRenderer } from './VueRenderer'\n\nfunction useDebouncedRef<T>(value: T) {\n return customRef<T>((track, trigger) => {\n return {\n get() {\n track()\n return value\n },\n set(newValue) {\n // update state\n value = newValue\n\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger()\n })\n })\n },\n }\n })\n}\n\nexport type ContentComponent = ComponentInternalInstance & {\n ctx: ComponentPublicInstance\n}\n\nexport class Editor extends CoreEditor {\n private reactiveState: Ref<EditorState>\n\n private reactiveExtensionStorage: Ref<Record<string, any>>\n\n public vueRenderers = reactive<Map<string, VueRenderer>>(new Map())\n\n public contentComponent: ContentComponent | null = null\n\n constructor(options: Partial<EditorOptions> = {}) {\n super(options)\n\n this.reactiveState = useDebouncedRef(this.view.state)\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage)\n\n this.on('transaction', () => {\n this.reactiveState.value = this.view.state\n this.reactiveExtensionStorage.value = this.extensionStorage\n })\n\n return markRaw(this) // eslint-disable-line\n }\n\n get state() {\n return this.reactiveState ? this.reactiveState.value : this.view.state\n }\n\n get storage() {\n return this.reactiveExtensionStorage ? this.reactiveExtensionStorage.value : super.storage\n }\n\n /**\n * Register a ProseMirror plugin.\n */\n public registerPlugin(\n plugin: Plugin,\n handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[],\n ): void {\n super.registerPlugin(plugin, handlePlugins)\n this.reactiveState.value = this.view.state\n }\n\n /**\n * Unregister a ProseMirror plugin.\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n super.unregisterPlugin(nameOrPluginKey)\n this.reactiveState.value = this.view.state\n }\n}\n","import {\n DefineComponent,\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onBeforeUnmount,\n PropType,\n Ref,\n ref,\n Teleport,\n unref,\n watchEffect,\n} from 'vue'\n\nimport { Editor } from './Editor'\n\nexport const EditorContent = defineComponent({\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n setup(props) {\n const rootEl: Ref<Element | undefined> = ref()\n const instance = getCurrentInstance()\n\n watchEffect(() => {\n const editor = props.editor\n\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return\n }\n\n const element = unref(rootEl.value)\n\n rootEl.value.append(...editor.options.element.childNodes)\n\n // @ts-ignore\n editor.contentComponent = instance.ctx._\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n })\n\n onBeforeUnmount(() => {\n const editor = props.editor\n\n if (!editor) {\n return\n }\n\n // destroy nodeviews before vue removes dom element\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n })\n }\n\n editor.contentComponent = null\n\n if (!editor.options.element.firstChild) {\n return\n }\n\n const newElement = document.createElement('div')\n\n newElement.append(...editor.options.element.childNodes)\n\n editor.setOptions({\n element: newElement,\n })\n })\n\n return { rootEl }\n },\n\n render() {\n const vueRenderers: any[] = []\n\n if (this.editor) {\n this.editor.vueRenderers.forEach(vueRenderer => {\n const node = h(\n Teleport,\n {\n to: vueRenderer.teleportElement,\n key: vueRenderer.id,\n },\n h(\n vueRenderer.component as DefineComponent,\n {\n ref: vueRenderer.id,\n ...vueRenderer.props,\n },\n ),\n )\n\n vueRenderers.push(node)\n })\n }\n\n return h(\n 'div',\n {\n ref: (el: any) => { this.rootEl = el },\n },\n ...vueRenderers,\n )\n },\n})\n","import { FloatingMenuPlugin, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\nimport {\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n PropType,\n ref,\n} from 'vue'\n\nexport const FloatingMenu = defineComponent({\n name: 'FloatingMenu',\n\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n type: null,\n default: 'floatingMenu',\n },\n\n editor: {\n type: Object as PropType<FloatingMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<FloatingMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n\n shouldShow: {\n type: Function as PropType<Exclude<Required<FloatingMenuPluginProps>['shouldShow'], null>>,\n default: null,\n },\n },\n\n setup(props, { slots }) {\n const root = ref<HTMLElement | null>(null)\n\n onMounted(() => {\n const {\n pluginKey,\n editor,\n tippyOptions,\n shouldShow,\n } = props\n\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey,\n editor,\n element: root.value as HTMLElement,\n tippyOptions,\n shouldShow,\n }))\n })\n\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props\n\n editor.unregisterPlugin(pluginKey)\n })\n\n return () => h('div', { ref: root }, slots.default?.())\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewContent = defineComponent({\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render() {\n return h(this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n 'data-node-view-content': '',\n })\n },\n})\n","import { defineComponent, h } from 'vue'\n\nexport const NodeViewWrapper = defineComponent({\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n inject: ['onDragStart', 'decorationClasses'],\n\n render() {\n return h(\n this.as,\n {\n // @ts-ignore\n class: this.decorationClasses,\n style: {\n whiteSpace: 'normal',\n },\n 'data-node-view-wrapper': '',\n // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)\n onDragstart: this.onDragStart,\n },\n this.$slots.default?.(),\n )\n },\n})\n","import { EditorOptions } from '@tiptap/core'\nimport { onBeforeUnmount, onMounted, shallowRef } from 'vue'\n\nimport { Editor } from './Editor'\n\nexport const useEditor = (options: Partial<EditorOptions> = {}) => {\n const editor = shallowRef<Editor>()\n\n onMounted(() => {\n editor.value = new Editor(options)\n })\n\n onBeforeUnmount(() => {\n editor.value?.destroy()\n })\n\n return editor\n}\n","import { Editor } from '@tiptap/core'\nimport { Component, markRaw, reactive } from 'vue'\n\nimport { Editor as ExtendedEditor } from './Editor'\n\nexport interface VueRendererOptions {\n editor: Editor,\n props?: Record<string, any>,\n}\n\nexport class VueRenderer {\n id: string\n\n editor: ExtendedEditor\n\n component: Component\n\n teleportElement: Element\n\n element: Element\n\n props: Record<string, any>\n\n constructor(component: Component, { props = {}, editor }: VueRendererOptions) {\n this.id = Math.floor(Math.random() * 0xFFFFFFFF).toString()\n this.editor = editor as ExtendedEditor\n this.component = markRaw(component)\n this.teleportElement = document.createElement('div')\n this.element = this.teleportElement\n this.props = reactive(props)\n this.editor.vueRenderers.set(this.id, this)\n\n if (this.editor.contentComponent) {\n this.editor.contentComponent.update()\n\n if (this.teleportElement.children.length !== 1) {\n throw Error('VueRenderer doesn’t support multiple child elements.')\n }\n\n this.element = this.teleportElement.firstElementChild as Element\n }\n }\n\n get ref(): any {\n return this.editor.contentComponent?.refs[this.id]\n }\n\n updateProps(props: Record<string, any> = {}): void {\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.props[key] = value\n })\n }\n\n destroy(): void {\n this.editor.vueRenderers.delete(this.id)\n }\n}\n","import {\n DecorationWithType,\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererOptions,\n NodeViewRendererProps,\n} from '@tiptap/core'\nimport { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport {\n Component,\n defineComponent,\n PropType,\n provide,\n Ref,\n ref,\n} from 'vue'\n\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true as const,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true as const,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true as const,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true as const,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true as const,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true as const,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true as const,\n },\n deleteNode: {\n type: Function as PropType<NodeViewProps['deleteNode']>,\n required: true as const,\n },\n}\n\nexport interface VueNodeViewRendererOptions extends NodeViewRendererOptions {\n update:\n | ((props: {\n oldNode: ProseMirrorNode\n oldDecorations: Decoration[]\n newNode: ProseMirrorNode\n newDecorations: Decoration[]\n updateProps: () => void\n }) => boolean)\n | null\n}\n\nclass VueNodeView extends NodeView<Component, Editor, VueNodeViewRendererOptions> {\n renderer!: VueRenderer\n\n decorationClasses!: Ref<string>\n\n mount() {\n const props: NodeViewProps = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = ref(this.getDecorationClasses())\n\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: (this.component as any).template,\n setup: reactiveProps => {\n provide('onDragStart', onDragStart)\n provide('decorationClasses', this.decorationClasses)\n\n return (this.component as any).setup?.(reactiveProps, {\n expose: () => undefined,\n })\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n // add support for CSS Modules\n // @ts-ignore\n // eslint-disable-next-line\n __cssModules: this.component.__cssModules,\n })\n\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n })\n }\n\n get dom() {\n if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.')\n }\n\n return this.renderer.element as HTMLElement\n }\n\n get contentDOM() {\n if (this.node.isLeaf) {\n return null\n }\n\n const contentElement = this.dom.querySelector('[data-node-view-content]')\n\n return (contentElement || this.dom) as HTMLElement | null\n }\n\n update(node: ProseMirrorNode, decorations: DecorationWithType[]) {\n const updateProps = (props?: Record<string, any>) => {\n this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.updateProps(props)\n }\n\n if (typeof this.options.update === 'function') {\n const oldNode = this.node\n const oldDecorations = this.decorations\n\n this.node = node\n this.decorations = decorations\n\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n })\n }\n\n if (node.type !== this.node.type) {\n return false\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true\n }\n\n this.node = node\n this.decorations = decorations\n\n updateProps({ node, decorations })\n\n return true\n }\n\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n })\n }\n\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n })\n }\n\n getDecorationClasses() {\n return (\n this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n )\n }\n\n destroy() {\n this.renderer.destroy()\n }\n}\n\nexport function VueNodeViewRenderer(\n component: Component,\n options?: Partial<VueNodeViewRendererOptions>,\n): NodeViewRenderer {\n return (props: NodeViewRendererProps) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!(props.editor as Editor).contentComponent) {\n return {}\n }\n\n return new VueNodeView(component, props, options) as unknown as ProseMirrorNodeView\n }\n}\n"],"names":["defineComponent","ref","onMounted","BubbleMenuPlugin","onBeforeUnmount","h","customRef","CoreEditor","reactive","markRaw","getCurrentInstance","watchEffect","nextTick","unref","Teleport","FloatingMenuPlugin","shallowRef","NodeView","provide"],"mappings":"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"}
|