--- HotkeyMapper.lua
local obj = {}
obj.registry = {}

obj.chooser = hs.chooser.new(function(choice)
    if not choice then return end
end)

-- This is the function you'll use to log keys
function obj:register(mod, key, description, source)
    table.insert(self.registry, {
        text = string.format("%s + %s: %s", hs.inspect(mod):gsub('"', ''), key:upper(), description),
        subText = "Source: " .. (source or "Unknown")
    })
end

function obj:show()
    if #self.registry == 0 then
        hs.alert.show("No hotkeys registered in Mapper")
        return
    end
    table.sort(self.registry, function(a, b) return a.text < b.text end)
    obj.chooser:choices(self.registry)
    obj.chooser:show()
end

function obj:init(mod, key)
    hs.hotkey.bind(mod, key, function() self:show() end)
    return self
end

return obj