flotilla/src/app/editor/MentionNodeView.ts

27 lines
602 B
TypeScript
Raw Normal View History

import type {NodeViewProps} from "@tiptap/core"
2026-07-28 16:16:26 +00:00
import {profiles} from "@app/core"
2026-07-28 16:16:26 +00:00
export const MentionNodeView = ({node}: NodeViewProps) => {
const dom = document.createElement("span")
const display = profiles.get().display(node.attrs.pubkey).$
2026-07-28 16:16:26 +00:00
dom.classList.add("tiptap-object")
2026-07-28 16:16:26 +00:00
const unsubDisplay = display.subscribe($display => {
dom.textContent = "@" + $display
})
2026-07-28 16:16:26 +00:00
return {
dom,
destroy: () => {
unsubDisplay()
},
selectNode() {
dom.classList.add("tiptap-active")
},
deselectNode() {
dom.classList.remove("tiptap-active")
},
}
2026-07-28 16:16:26 +00:00
}