ultisuite-client/lib/drive/docs-edit-actions.ts
R3D347HR4Y 79bb6193fc
Some checks are pending
E2E / Playwright e2e (push) Waiting to run
menus1
2026-06-09 18:27:10 +02:00

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")
}