@tiptap/vue-2 2.0.0-beta.21 → 2.0.0-beta.210

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.
@@ -1,335 +0,0 @@
1
- import { Editor as Editor$1, NodeView } from '@tiptap/core';
2
- export * from '@tiptap/core';
3
- import Vue from 'vue';
4
- import { BubbleMenuPlugin, BubbleMenuPluginKey } from '@tiptap/extension-bubble-menu';
5
- import { FloatingMenuPlugin, FloatingMenuPluginKey } from '@tiptap/extension-floating-menu';
6
-
7
- const BubbleMenu = Vue.extend({
8
- name: 'BubbleMenu',
9
- props: {
10
- editor: {
11
- type: Object,
12
- required: true,
13
- },
14
- tippyOptions: {
15
- type: Object,
16
- default: () => ({}),
17
- },
18
- },
19
- watch: {
20
- editor: {
21
- immediate: true,
22
- handler(editor) {
23
- if (!editor) {
24
- return;
25
- }
26
- this.$nextTick(() => {
27
- editor.registerPlugin(BubbleMenuPlugin({
28
- editor,
29
- element: this.$el,
30
- tippyOptions: this.tippyOptions,
31
- }));
32
- });
33
- },
34
- },
35
- },
36
- render(createElement) {
37
- return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default);
38
- },
39
- beforeDestroy() {
40
- this.editor.unregisterPlugin(BubbleMenuPluginKey);
41
- },
42
- });
43
-
44
- class Editor extends Editor$1 {
45
- constructor() {
46
- super(...arguments);
47
- this.contentComponent = null;
48
- }
49
- }
50
-
51
- const EditorContent = Vue.extend({
52
- name: 'EditorContent',
53
- props: {
54
- editor: {
55
- default: null,
56
- type: Object,
57
- },
58
- },
59
- watch: {
60
- editor: {
61
- immediate: true,
62
- handler(editor) {
63
- if (editor && editor.options.element) {
64
- this.$nextTick(() => {
65
- const element = this.$el;
66
- if (!element || !editor.options.element.firstChild) {
67
- return;
68
- }
69
- element.appendChild(editor.options.element.firstChild);
70
- editor.contentComponent = this;
71
- editor.setOptions({
72
- element,
73
- });
74
- editor.createNodeViews();
75
- });
76
- }
77
- },
78
- },
79
- },
80
- render(createElement) {
81
- return createElement('div');
82
- },
83
- beforeDestroy() {
84
- const { editor } = this;
85
- if (!editor.isDestroyed) {
86
- editor.view.setProps({
87
- nodeViews: {},
88
- });
89
- }
90
- editor.contentComponent = null;
91
- if (!editor.options.element.firstChild) {
92
- return;
93
- }
94
- const newElement = document.createElement('div');
95
- newElement.appendChild(editor.options.element.firstChild);
96
- editor.setOptions({
97
- element: newElement,
98
- });
99
- },
100
- });
101
-
102
- const FloatingMenu = Vue.extend({
103
- name: 'FloatingMenu',
104
- props: {
105
- editor: {
106
- type: Object,
107
- required: true,
108
- },
109
- tippyOptions: {
110
- type: Object,
111
- default: () => ({}),
112
- },
113
- },
114
- watch: {
115
- editor: {
116
- immediate: true,
117
- handler(editor) {
118
- if (!editor) {
119
- return;
120
- }
121
- this.$nextTick(() => {
122
- editor.registerPlugin(FloatingMenuPlugin({
123
- editor,
124
- element: this.$el,
125
- tippyOptions: this.tippyOptions,
126
- }));
127
- });
128
- },
129
- },
130
- },
131
- render(createElement) {
132
- return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default);
133
- },
134
- beforeDestroy() {
135
- this.editor.unregisterPlugin(FloatingMenuPluginKey);
136
- },
137
- });
138
-
139
- class VueRenderer {
140
- constructor(component, props) {
141
- const Component = Vue.extend(component);
142
- this.ref = new Component(props).$mount();
143
- }
144
- get element() {
145
- return this.ref.$el;
146
- }
147
- updateProps(props = {}) {
148
- if (!this.ref.$props) {
149
- return;
150
- }
151
- // prevents `Avoid mutating a prop directly` error message
152
- const originalSilent = Vue.config.silent;
153
- Vue.config.silent = true;
154
- Object
155
- .entries(props)
156
- .forEach(([key, value]) => {
157
- this.ref.$props[key] = value;
158
- });
159
- Vue.config.silent = originalSilent;
160
- }
161
- destroy() {
162
- this.ref.$destroy();
163
- }
164
- }
165
-
166
- const nodeViewProps = {
167
- editor: {
168
- type: Object,
169
- required: true,
170
- },
171
- node: {
172
- type: Object,
173
- required: true,
174
- },
175
- decorations: {
176
- type: Object,
177
- required: true,
178
- },
179
- selected: {
180
- type: Boolean,
181
- required: true,
182
- },
183
- extension: {
184
- type: Object,
185
- required: true,
186
- },
187
- getPos: {
188
- type: Function,
189
- required: true,
190
- },
191
- updateAttributes: {
192
- type: Function,
193
- required: true,
194
- },
195
- };
196
- class VueNodeView extends NodeView {
197
- mount() {
198
- const props = {
199
- editor: this.editor,
200
- node: this.node,
201
- decorations: this.decorations,
202
- selected: false,
203
- extension: this.extension,
204
- getPos: () => this.getPos(),
205
- updateAttributes: (attributes = {}) => this.updateAttributes(attributes),
206
- };
207
- const onDragStart = this.onDragStart.bind(this);
208
- this.decorationClasses = Vue.observable({
209
- value: this.getDecorationClasses(),
210
- });
211
- const Component = Vue
212
- .extend(this.component)
213
- .extend({
214
- props: Object.keys(props),
215
- provide: () => {
216
- return {
217
- onDragStart,
218
- decorationClasses: this.decorationClasses,
219
- };
220
- },
221
- });
222
- this.renderer = new VueRenderer(Component, {
223
- parent: this.editor.contentComponent,
224
- propsData: props,
225
- });
226
- }
227
- get dom() {
228
- if (!this.renderer.element.hasAttribute('data-node-view-wrapper')) {
229
- throw Error('Please use the NodeViewWrapper component for your node view.');
230
- }
231
- return this.renderer.element;
232
- }
233
- get contentDOM() {
234
- if (this.node.isLeaf) {
235
- return null;
236
- }
237
- const contentElement = this.dom.querySelector('[data-node-view-content]');
238
- return contentElement || this.dom;
239
- }
240
- update(node, decorations) {
241
- if (typeof this.options.update === 'function') {
242
- return this.options.update(node, decorations);
243
- }
244
- if (node.type !== this.node.type) {
245
- return false;
246
- }
247
- if (node === this.node && this.decorations === decorations) {
248
- return true;
249
- }
250
- this.node = node;
251
- this.decorations = decorations;
252
- this.decorationClasses.value = this.getDecorationClasses();
253
- this.renderer.updateProps({ node, decorations });
254
- return true;
255
- }
256
- selectNode() {
257
- this.renderer.updateProps({
258
- selected: true,
259
- });
260
- }
261
- deselectNode() {
262
- this.renderer.updateProps({
263
- selected: false,
264
- });
265
- }
266
- getDecorationClasses() {
267
- return this.decorations
268
- // @ts-ignore
269
- .map(item => item.type.attrs.class)
270
- .flat()
271
- .join(' ');
272
- }
273
- destroy() {
274
- this.renderer.destroy();
275
- }
276
- }
277
- function VueNodeViewRenderer(component, options) {
278
- return (props) => {
279
- // try to get the parent component
280
- // this is important for vue devtools to show the component hierarchy correctly
281
- // maybe it’s `undefined` because <editor-content> isn’t rendered yet
282
- if (!props.editor.contentComponent) {
283
- return {};
284
- }
285
- return new VueNodeView(component, props, options);
286
- };
287
- }
288
-
289
- const NodeViewWrapper = Vue.extend({
290
- props: {
291
- as: {
292
- type: String,
293
- default: 'div',
294
- },
295
- },
296
- inject: ['onDragStart', 'decorationClasses'],
297
- render(createElement) {
298
- return createElement(this.as, {
299
- // @ts-ignore
300
- class: this.decorationClasses.value,
301
- style: {
302
- whiteSpace: 'normal',
303
- },
304
- attrs: {
305
- 'data-node-view-wrapper': '',
306
- },
307
- on: {
308
- // @ts-ignore
309
- dragstart: this.onDragStart,
310
- },
311
- }, this.$slots.default);
312
- },
313
- });
314
-
315
- const NodeViewContent = Vue.extend({
316
- props: {
317
- as: {
318
- type: String,
319
- default: 'div',
320
- },
321
- },
322
- render(createElement) {
323
- return createElement(this.as, {
324
- style: {
325
- whiteSpace: 'pre-wrap',
326
- },
327
- attrs: {
328
- 'data-node-view-content': '',
329
- },
330
- });
331
- },
332
- });
333
-
334
- export { BubbleMenu, Editor, EditorContent, FloatingMenu, NodeViewContent, NodeViewWrapper, VueNodeViewRenderer, VueRenderer, nodeViewProps };
335
- //# sourceMappingURL=tiptap-vue-2.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tiptap-vue-2.esm.js","sources":["../src/BubbleMenu.ts","../src/Editor.ts","../src/EditorContent.ts","../src/FloatingMenu.ts","../src/VueRenderer.ts","../src/VueNodeViewRenderer.ts","../src/NodeViewWrapper.ts","../src/NodeViewContent.ts"],"sourcesContent":["import Vue, { PropType } from 'vue'\nimport { BubbleMenuPlugin, BubbleMenuPluginKey, BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu'\n\nexport const BubbleMenu = Vue.extend({\n name: 'BubbleMenu',\n\n props: {\n editor: {\n type: Object as PropType<BubbleMenuPluginProps['editor']>,\n required: true,\n },\n\n tippyOptions: {\n type: Object as PropType<BubbleMenuPluginProps['tippyOptions']>,\n default: () => ({}),\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(editor: BubbleMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(BubbleMenuPlugin({\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n }))\n })\n },\n },\n },\n\n render(createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy() {\n this.editor.unregisterPlugin(BubbleMenuPluginKey)\n },\n})\n","import { Editor as CoreEditor } from '@tiptap/core'\nimport Vue from 'vue'\n\nexport class Editor extends CoreEditor {\n public contentComponent: Vue | null = null\n}\n","import Vue, { PropType } from 'vue'\nimport { Editor } from './Editor'\n\nexport const EditorContent = Vue.extend({\n name: 'EditorContent',\n\n props: {\n editor: {\n default: null,\n type: Object as PropType<Editor>,\n },\n },\n\n watch: {\n editor: {\n immediate: true,\n handler(editor: Editor) {\n if (editor && editor.options.element) {\n this.$nextTick(() => {\n const element = this.$el\n\n if (!element || !editor.options.element.firstChild) {\n return\n }\n\n element.appendChild(editor.options.element.firstChild)\n\n editor.contentComponent = this\n\n editor.setOptions({\n element,\n })\n\n editor.createNodeViews()\n })\n }\n },\n },\n },\n\n render(createElement) {\n return createElement('div')\n },\n\n beforeDestroy() {\n const { editor } = this\n\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.appendChild(editor.options.element.firstChild)\n\n editor.setOptions({\n element: newElement,\n })\n },\n})\n","import Vue, { PropType } from 'vue'\nimport { FloatingMenuPlugin, FloatingMenuPluginKey, FloatingMenuPluginProps } from '@tiptap/extension-floating-menu'\n\nexport const FloatingMenu = Vue.extend({\n name: 'FloatingMenu',\n\n props: {\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\n watch: {\n editor: {\n immediate: true,\n handler(editor: FloatingMenuPluginProps['editor']) {\n if (!editor) {\n return\n }\n\n this.$nextTick(() => {\n editor.registerPlugin(FloatingMenuPlugin({\n editor,\n element: this.$el as HTMLElement,\n tippyOptions: this.tippyOptions,\n }))\n })\n },\n },\n },\n\n render(createElement) {\n return createElement('div', { style: { visibility: 'hidden' } }, this.$slots.default)\n },\n\n beforeDestroy() {\n this.editor.unregisterPlugin(FloatingMenuPluginKey)\n },\n})\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/umd'\n\nexport class VueRenderer {\n ref!: Vue\n\n constructor(component: Vue | VueConstructor, props: any) {\n const Component = Vue.extend(component)\n\n this.ref = new Component(props).$mount()\n }\n\n get element(): Element {\n return this.ref.$el\n }\n\n updateProps(props: Record<string, any> = {}): void {\n if (!this.ref.$props) {\n return\n }\n\n // prevents `Avoid mutating a prop directly` error message\n const originalSilent = Vue.config.silent\n Vue.config.silent = true\n\n Object\n .entries(props)\n .forEach(([key, value]) => {\n this.ref.$props[key] = value\n })\n\n Vue.config.silent = originalSilent\n }\n\n destroy(): void {\n this.ref.$destroy()\n }\n}\n","import {\n NodeView,\n NodeViewProps,\n NodeViewRenderer,\n NodeViewRendererProps,\n} from '@tiptap/core'\nimport { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport Vue from 'vue'\nimport { VueConstructor, PropType } from 'vue/types/umd'\nimport { Editor } from './Editor'\nimport { VueRenderer } from './VueRenderer'\n\nexport const nodeViewProps = {\n editor: {\n type: Object as PropType<NodeViewProps['editor']>,\n required: true,\n },\n node: {\n type: Object as PropType<NodeViewProps['node']>,\n required: true,\n },\n decorations: {\n type: Object as PropType<NodeViewProps['decorations']>,\n required: true,\n },\n selected: {\n type: Boolean as PropType<NodeViewProps['selected']>,\n required: true,\n },\n extension: {\n type: Object as PropType<NodeViewProps['extension']>,\n required: true,\n },\n getPos: {\n type: Function as PropType<NodeViewProps['getPos']>,\n required: true,\n },\n updateAttributes: {\n type: Function as PropType<NodeViewProps['updateAttributes']>,\n required: true,\n },\n}\n\ninterface VueNodeViewRendererOptions {\n stopEvent: ((event: Event) => boolean) | null,\n update: ((node: ProseMirrorNode, decorations: Decoration[]) => boolean) | null,\n}\n\nclass VueNodeView extends NodeView<(Vue | VueConstructor), Editor> {\n\n renderer!: VueRenderer\n\n decorationClasses!: {\n value: string\n }\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 }\n\n const onDragStart = this.onDragStart.bind(this)\n\n this.decorationClasses = Vue.observable({\n value: this.getDecorationClasses(),\n })\n\n const Component = Vue\n .extend(this.component)\n .extend({\n props: Object.keys(props),\n provide: () => {\n return {\n onDragStart,\n decorationClasses: this.decorationClasses,\n }\n },\n })\n\n this.renderer = new VueRenderer(Component, {\n parent: this.editor.contentComponent,\n propsData: 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\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\n }\n\n update(node: ProseMirrorNode, decorations: Decoration[]) {\n if (typeof this.options.update === 'function') {\n return this.options.update(node, decorations)\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 this.decorationClasses.value = this.getDecorationClasses()\n this.renderer.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 this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' ')\n }\n\n destroy() {\n this.renderer.destroy()\n }\n\n}\n\nexport function VueNodeViewRenderer(component: Vue | VueConstructor, options?: Partial<VueNodeViewRendererOptions>): 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 ProseMirrorNodeView\n }\n}\n","import Vue from 'vue'\n\nexport const NodeViewWrapper = Vue.extend({\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n inject: ['onDragStart', 'decorationClasses'],\n\n render(createElement) {\n return createElement(\n this.as, {\n // @ts-ignore\n class: this.decorationClasses.value,\n style: {\n whiteSpace: 'normal',\n },\n attrs: {\n 'data-node-view-wrapper': '',\n },\n on: {\n // @ts-ignore\n dragstart: this.onDragStart,\n },\n },\n this.$slots.default,\n )\n },\n})\n","import Vue from 'vue'\n\nexport const NodeViewContent = Vue.extend({\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n\n render(createElement) {\n return createElement(\n this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n attrs: {\n 'data-node-view-content': '',\n },\n },\n )\n },\n})\n"],"names":["CoreEditor"],"mappings":"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"}