local M = {}

M.run = function()
  local Popup = require("nui.popup")
  local event = require("nui.utils.autocmd").event

  -- Buat popup untuk menampilkan keymapping
  local popup = Popup({
    enter = true,
    focusable = true,
    border = {
      style = "rounded",
      text = {
        top = " Key Mappings ",
      },
    },
    position = "50%",
    size = {
      width = "80%",
      height = "80%",
    },
  })

  -- Daftar keymapping yang akan ditampilkan dalam dua kolom dengan section header
  -- stylua: ignore
  local key_mappings = {
    { "<leader>a  ", "Toggle Dashboard  ", "<leader>e ", "Toggle Explorer                     "},
    { "<leader>c  ", "Chat AI           ", "<leader>bb", ":Telescope buffers<CR>              "},
    { "           ", "                  ", "<leader>bd", ":bdelete<CR>                        "},
    { "           ", "                  ", "          ", "                                    "},
    { "Terminal   ", "                  ", "          ", "                                    "},
    { "<leader>tt ", ":ToggleTerm<CR>   ", "<leader>tn", ":ToggleTerm direction=horizontal<CR>"},
  }

  -- Fungsi untuk mengubah daftar keymapping menjadi format string
  local function format_key_mappings(mappings)
    local formatted = {}
    for _, mapping in ipairs(mappings) do
      table.insert(formatted, string.format("%-20s %-20s %-20s %s", mapping[1], mapping[2], mapping[3], mapping[4]))
    end
    return formatted
  end

  -- Set konten popup dengan daftar keymapping yang diformat
  vim.api.nvim_buf_set_lines(popup.bufnr, 0, -1, false, format_key_mappings(key_mappings))

  -- Mount popup
  popup:mount()

  -- Unmount popup ketika cursor meninggalkan buffer
  popup:on(event.BufLeave, function()
    popup:unmount()
  end)
end

return M