import { Extension } from "@tiptap/core"
import { Plugin, PluginKey } from "@tiptap/pm/state"
import { runGraphicKeyboardAction } from "@/lib/drive/docs-graphic-keyboard"

export const docsGraphicKeyboardKey = new PluginKey("docsGraphicKeyboard")

/**
 * Keyboard control for selected graphics:
 * - Arrows: move (Shift = 10px); in-flow (« Avec le texte »): ↑↓ reorder, ←→ cycle left/center/right
 * - Alt+Arrows: resize (Shift = 20px)
 * - [ / ]: rotate ±5° (Shift = ±15°)
 * - Mod+[ / Mod+]: send backward / bring forward
 */
export const DocsGraphicKeyboard = Extension.create({
  name: "docsGraphicKeyboard",
  priority: 1000,

  addProseMirrorPlugins() {
    const editor = this.editor
    return [
      new Plugin({
        key: docsGraphicKeyboardKey,
        props: {
          handleKeyDown(_view, event) {
            return runGraphicKeyboardAction(editor, event)
          },
        },
      }),
    ]
  },
})
