manifold/common/util/tiptap-tweet.ts
2022-08-10 16:26:25 -07:00

38 lines
681 B
TypeScript

import { Node, mergeAttributes } from '@tiptap/core'
import { ReactNodeViewRenderer } from '@tiptap/react'
import WrappedTwitterTweetEmbed from './tweet-embed'
export interface TweetOptions {
tweetId: string
}
export default Node.create<TweetOptions>({
name: 'tiptapTweet',
group: 'block',
atom: true,
addAttributes() {
return {
tweetId: {
default: null,
},
}
},
parseHTML() {
return [
{
tag: 'tiptap-tweet',
},
]
},
renderHTML({ HTMLAttributes }) {
return ['tiptap-tweet', mergeAttributes(HTMLAttributes)]
},
addNodeView() {
return ReactNodeViewRenderer(WrappedTwitterTweetEmbed)
},
})