add nodeViewProps, fix #214

This commit is contained in:
Philipp Kühn
2021-03-17 21:43:45 +01:00
parent 7d52a3aad1
commit f0f6e79408
6 changed files with 74 additions and 26 deletions

View File

@@ -11,9 +11,11 @@
</template> </template>
<script> <script>
import { NodeViewWrapper, NodeViewContent } from '@tiptap/vue-2' import { NodeViewWrapper, NodeViewContent, nodeViewProps } from '@tiptap/vue-2'
export default { export default {
props: nodeViewProps,
components: { components: {
NodeViewWrapper, NodeViewWrapper,
NodeViewContent, NodeViewContent,

View File

@@ -14,19 +14,14 @@
</template> </template>
<script> <script>
import { NodeViewWrapper } from '@tiptap/vue-2' import { NodeViewWrapper, nodeViewProps } from '@tiptap/vue-2'
export default { export default {
components: { components: {
NodeViewWrapper, NodeViewWrapper,
}, },
props: { props: nodeViewProps,
editor: {
type: Object,
required: true,
},
},
data() { data() {
return { return {
@@ -58,10 +53,6 @@ export default {
} }
</script> </script>
<style>
</style>
<style lang="scss"> <style lang="scss">
/* Basic editor styles */ /* Basic editor styles */
.ProseMirror { .ProseMirror {

View File

@@ -11,24 +11,14 @@
</template> </template>
<script> <script>
import { NodeViewWrapper } from '@tiptap/vue-2' import { NodeViewWrapper, nodeViewProps } from '@tiptap/vue-2'
export default { export default {
components: { components: {
NodeViewWrapper, NodeViewWrapper,
}, },
props: { props: nodeViewProps,
updateAttributes: {
type: Function,
required: true,
},
node: {
type: Object,
required: true,
},
},
methods: { methods: {
increase() { increase() {

View File

@@ -7,13 +7,15 @@
</template> </template>
<script> <script>
import { NodeViewWrapper, NodeViewContent } from '@tiptap/vue-2' import { NodeViewWrapper, NodeViewContent, nodeViewProps } from '@tiptap/vue-2'
export default { export default {
components: { components: {
NodeViewWrapper, NodeViewWrapper,
NodeViewContent, NodeViewContent,
}, },
props: nodeViewProps,
} }
</script> </script>

View File

@@ -7,10 +7,41 @@ import {
import { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view' import { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'
import { Node as ProseMirrorNode } from 'prosemirror-model' import { Node as ProseMirrorNode } from 'prosemirror-model'
import Vue from 'vue' import Vue from 'vue'
import { VueConstructor } from 'vue/types/umd' import { VueConstructor, PropType } from 'vue/types/umd'
import { Editor } from './Editor' import { Editor } from './Editor'
import { VueRenderer } from './VueRenderer' import { VueRenderer } from './VueRenderer'
export const nodeViewProps = {
editor: {
type: Object as PropType<NodeViewProps['editor']>,
required: true,
},
node: {
type: Object as PropType<NodeViewProps['node']>,
required: true,
},
decorations: {
type: Object as PropType<NodeViewProps['decorations']>,
required: true,
},
selected: {
type: Boolean as PropType<NodeViewProps['selected']>,
required: true,
},
extension: {
type: Object as PropType<NodeViewProps['extension']>,
required: true,
},
getPos: {
type: Function as PropType<NodeViewProps['getPos']>,
required: true,
},
updateAttributes: {
type: Function as PropType<NodeViewProps['updateAttributes']>,
required: true,
},
}
interface VueNodeViewRendererOptions { interface VueNodeViewRendererOptions {
stopEvent: ((event: Event) => boolean) | null, stopEvent: ((event: Event) => boolean) | null,
update: ((node: ProseMirrorNode, decorations: Decoration[]) => boolean) | null, update: ((node: ProseMirrorNode, decorations: Decoration[]) => boolean) | null,

View File

@@ -7,6 +7,7 @@ import {
import { import {
ref, ref,
provide, provide,
PropType,
Component, Component,
defineComponent, defineComponent,
} from 'vue' } from 'vue'
@@ -15,6 +16,37 @@ import { Node as ProseMirrorNode } from 'prosemirror-model'
import { Editor } from './Editor' import { Editor } from './Editor'
import { VueRenderer } from './VueRenderer' import { VueRenderer } from './VueRenderer'
export const nodeViewProps = {
editor: {
type: Object as PropType<NodeViewProps['editor']>,
required: true,
},
node: {
type: Object as PropType<NodeViewProps['node']>,
required: true,
},
decorations: {
type: Object as PropType<NodeViewProps['decorations']>,
required: true,
},
selected: {
type: Boolean as PropType<NodeViewProps['selected']>,
required: true,
},
extension: {
type: Object as PropType<NodeViewProps['extension']>,
required: true,
},
getPos: {
type: Function as PropType<NodeViewProps['getPos']>,
required: true,
},
updateAttributes: {
type: Function as PropType<NodeViewProps['updateAttributes']>,
required: true,
},
}
interface VueNodeViewRendererOptions { interface VueNodeViewRendererOptions {
stopEvent: ((event: Event) => boolean) | null, stopEvent: ((event: Event) => boolean) | null,
update: ((node: ProseMirrorNode, decorations: Decoration[]) => boolean) | null, update: ((node: ProseMirrorNode, decorations: Decoration[]) => boolean) | null,