74 lines
1.8 KiB
TypeScript
74 lines
1.8 KiB
TypeScript
import type { Editor } from "@tiptap/react"
|
|
import { toast } from "sonner"
|
|
|
|
function focusEditorView(editor: Editor) {
|
|
editor.commands.focus()
|
|
editor.view.focus()
|
|
}
|
|
|
|
export function docsEditCanUndo(editor: Editor | null): boolean {
|
|
if (!editor) return false
|
|
return editor.can().chain().focus().undo().run()
|
|
}
|
|
|
|
export function docsEditCanRedo(editor: Editor | null): boolean {
|
|
if (!editor) return false
|
|
return editor.can().chain().focus().redo().run()
|
|
}
|
|
|
|
export function docsEditUndo(editor: Editor | null) {
|
|
if (!editor) return
|
|
editor.chain().focus().undo().run()
|
|
}
|
|
|
|
export function docsEditRedo(editor: Editor | null) {
|
|
if (!editor) return
|
|
editor.chain().focus().redo().run()
|
|
}
|
|
|
|
export function docsEditCut(editor: Editor | null) {
|
|
if (!editor) return
|
|
focusEditorView(editor)
|
|
document.execCommand("cut")
|
|
}
|
|
|
|
export function docsEditCopy(editor: Editor | null) {
|
|
if (!editor) return
|
|
focusEditorView(editor)
|
|
document.execCommand("copy")
|
|
}
|
|
|
|
export function docsEditPaste(editor: Editor | null) {
|
|
if (!editor) return
|
|
focusEditorView(editor)
|
|
document.execCommand("paste")
|
|
}
|
|
|
|
export async function docsEditPastePlain(editor: Editor | null) {
|
|
if (!editor) return
|
|
try {
|
|
const text = await navigator.clipboard.readText()
|
|
editor.chain().focus().deleteSelection().insertContent(text).run()
|
|
} catch {
|
|
toast.error("Impossible de coller le texte")
|
|
}
|
|
}
|
|
|
|
export function docsEditSelectAll(editor: Editor | null) {
|
|
if (!editor) return
|
|
editor.chain().focus().selectAll().run()
|
|
}
|
|
|
|
export function docsEditDeleteSelection(editor: Editor | null) {
|
|
if (!editor) return
|
|
if (!editor.state.selection.empty) {
|
|
editor.chain().focus().deleteSelection().run()
|
|
return
|
|
}
|
|
editor.chain().focus().deleteForward().run()
|
|
}
|
|
|
|
export function docsEditFindReplace(_editor: Editor | null) {
|
|
toast.info("Rechercher et remplacer — bientôt disponible")
|
|
}
|