import { Extension, isNodeSelection } from "@tiptap/react" import { Plugin, PluginKey } from "@tiptap/pm/state" import { Decoration, DecorationSet } from "@tiptap/pm/view" export const Selection = Extension.create({ name: "selection", addProseMirrorPlugins() { const { editor } = this return [ new Plugin({ key: new PluginKey("selection"), props: { decorations(state) { if (state.selection.empty) { return null } if (editor.isFocused === true || !editor.isEditable) { return null } if (isNodeSelection(state.selection)) { return null } return DecorationSet.create(state.doc, [ Decoration.inline(state.selection.from, state.selection.to, { class: "selection", }), ]) }, }, }), ] }, }) export default Selection