forked from coracle/flotilla
27 lines
614 B
TypeScript
27 lines
614 B
TypeScript
import type {NodeViewProps} from "@tiptap/core"
|
|
import {deriveProfileDisplay} from "@welshman/app"
|
|
|
|
export const MentionNodeView = ({node}: NodeViewProps) => {
|
|
const dom = document.createElement("span")
|
|
const display = deriveProfileDisplay(node.attrs.pubkey)
|
|
|
|
dom.classList.add("tiptap-object")
|
|
|
|
const unsubDisplay = display.subscribe($display => {
|
|
dom.textContent = "@" + $display
|
|
})
|
|
|
|
return {
|
|
dom,
|
|
destroy: () => {
|
|
unsubDisplay()
|
|
},
|
|
selectNode() {
|
|
dom.classList.add("tiptap-active")
|
|
},
|
|
deselectNode() {
|
|
dom.classList.remove("tiptap-active")
|
|
},
|
|
}
|
|
}
|