local M = {
  "jbyuki/venn.nvim", -- draw ascii diagrams
  dependencies = {
    "anuvyklack/hydra.nvim",
  },
  keys = { "<leader>V" },
}

local venn_hint_old = [[
 ^^^Draw arrow^^^   Select region with <C-v>
 ^ ^ _K_ ^ ^   _f_: surround it with box
 _H_ ^ ^ _L_
 ^ ^ _J_ ^ ^                      _<Esc>_
]]

local H = require("my.plugins.hydra").hint

local venn_hint = H.concat_many_h({
  H.add_title("Draw arrows", H.directional("H", "J", "K", "L", 3)),
  H.add_title(
    "Actions",
    H.concat_many_w({
      H.concat_h("<C-v>", ": select region"),
      H.concat_h(H.pad_right(H.highlight("f"), 5), ": surround with box"),
      H.concat_h(H.pad_right(H.highlight("<Esc>"), 5), ": quit"),
    }, { justify = "left" })
  ),
}, 3).value

function M.config()
  -- local r = "<leader>V"
  -- vim.keymap.set("n", r .. "H", "<C-v>h:VBox<CR>", { desc = "left" })
  -- vim.keymap.set("n", r .. "J", "<C-v>j:VBox<CR>", { desc = "down" })
  -- vim.keymap.set("n", r .. "K", "<C-v>k:VBox<CR>", { desc = "up" })
  -- vim.keymap.set("n", r .. "L", "<C-v>l:VBox<CR>", { desc = "right" })
  -- vim.keymap.set("v", r .. "f", ":VBox<CR>", { desc = "box" })

  local Hydra = require("hydra")

  Hydra({
    name = "Draw Diagram",
    hint = venn_hint,
    config = {
      color = "pink",
      invoke_on_body = true,
      hint = {
        border = "single",
      },
      on_enter = function()
        vim.opt.virtualedit = "all"
        vim.g.inside_venn = true
      end,
      on_exit = function()
        vim.opt.virtualedit = ""
      end,
      desc = "[V]enn mode",
    },
    mode = "n",
    body = "<leader>V",
    heads = {
      { "H", "<C-v>h<esc><cmd>silent VBox<cr>", { silent = true } },
      { "J", "<C-v>j<esc><cmd>silent VBox<cr>", { silent = true } },
      { "K", "<C-v>k<esc><cmd>silent VBox<cr>", { silent = true } },
      { "L", "<C-v>l<esc><cmd>silent VBox<cr>", { silent = true } },
      { "f", "<cmd>VBox<cr>", { mode = "v" } },
      { "<Esc>", nil, { exit = true } },
    },
  })

  -- vim.keymap.set("n", "w", "<C-v>h:VBox<cr>", { silent = true })
end

function M.init()
  -- require("which-key").register({
  --   ["<leader>V"] = { name = "[V]enn mode" },
  -- })
end

return M