mirror of
https://github.com/linsa-io/linsa.git
synced 2026-01-12 12:20:23 +01:00
* wip * wip page * chore: style * wip pages * wip pages * chore: toggle * chore: link * feat: topic search * chore: page section * refactor: apply tailwind class ordering * fix: handle loggedIn user for guest route * feat: folder & image schema * chore: move utils to shared * refactor: tailwind class ordering * feat: img ext for editor * refactor: remove qa * fix: tanstack start * fix: wrong import * chore: use toast * chore: schema
37 lines
839 B
TypeScript
37 lines
839 B
TypeScript
import { Extension } from "@tiptap/core"
|
|
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) {
|
|
return null
|
|
}
|
|
|
|
return DecorationSet.create(state.doc, [
|
|
Decoration.inline(state.selection.from, state.selection.to, {
|
|
class: "selection",
|
|
}),
|
|
])
|
|
},
|
|
},
|
|
}),
|
|
]
|
|
},
|
|
})
|
|
|
|
export default Selection
|