local api = vim.api
local conf = require('Trans').conf
local buffer = require('Trans.buffer')()

local node = require("Trans.node")
local t = node.text
local it = node.item
local f = node.format


local engine_map = {
    baidu   = '百度',
    youdao  = '有道',
    iciba   = 'iciba',
    offline = '本地',
}

local function set_tag_hl(name, status)
    -- local hl = conf.float.tag[status]
    -- m_window:set_hl(name, {
    --     fg = '#000000',
    --     bg = hl,
    -- })

    -- m_window:set_hl(name .. 'round', {
    --     fg = hl,
    -- })
end

local function set_title()
    -- local title = m_window:new_content()
    -- local github = '  https://github.com/JuanZoran/Trans.nvim'

    -- title:addline(
    --     title:center(it(github, '@text.uri'))
    -- )

    -- local f = '%s(%d)'

    -- local tags = {}
    -- local load_tag = function(engine, index)
    --     set_tag_hl(engine, 'wait')
    --     local round = engine .. 'round'
    --     table.insert(tags, t(
    --         it('', round),
    --         it(f:format(engine_map[engine], index), engine),
    --         it('', round)
    --     ))
    -- end
    -- load_tag('offline', 1)
    -- title:addline(unpack(tags))
    -- title:newline('')
end

local action = {
    quit = function()
        -- m_window:try_close()
    end,
}

local exist = function(str)
    return str and str ~= ''
end

local function process()
    -- TODO :
    -- local icon = conf.icon
    -- m_content:addline(m_content:format {
    --     nodes = {
    --         it(m_result.word, 'TransWord'),
    --         t(
    --             it('['),
    --             it(exist(m_result.phonetic) and m_result.phonetic or icon.notfound, 'TransPhonetic'),
    --             it(']')
    --         ),
    --         it(m_result.collins and icon.star:rep(m_result.collins) or icon.notfound, 'TransCollins'),
    --         it(m_result.oxford == 1 and icon.yes or icon.no)
    --     },
    --     width = math.floor(m_window.width * 0.5)
    -- })
    -- m_content:addline(it('该窗口还属于实验性功能 .... '))
end

return function(word)
    buffer:init()
    -- TODO :online query
    -- local float = conf.float
    vim.notify([[
[注意]: 
float窗口目前还待开发
如果需要input查询功能, 请将窗口改成hover]])
    -- local opt = {
    --     relative  = 'editor',
    --     width     = float.width,
    --     height    = float.height,
    --     border    = float.border,
    --     title     = float.title,
    --     animation = float.animation,
    --     row       = bit.rshift((vim.o.lines - float.height), 1),
    --     col       = bit.rshift((vim.o.columns - float.width), 1),
    --     zindex    = 20,
    -- }
    -- m_window = require('Trans.window')(true, opt)
    -- set_title()
    -- m_content = m_window:new_content()
    -- m_result = require('Trans.query.offline')(word)
    -- if m_result then
    --     set_tag_hl('offline', 'success')
    --     process()
    -- else
    --     set_tag_hl('offline', 'fail')
    -- end

    -- m_window:open()
    -- m_window:bufset('bufhidden', 'wipe')

    -- for act, key in pairs(float.keymap) do
    --     m_window:map(key, action[act])
    -- end
end