yazi/yazi-plugin/preset/components/rail.lua
2024-10-30 19:06:06 +08:00

38 lines
950 B
Lua

Rail = {
_id = "rail",
_area = ui.Rect.default,
}
function Rail:new(chunks, tab)
local me = setmetatable({ _chunks = chunks, _tab = tab }, { __index = self })
me:build()
return me
end
function Rail:build()
self._base = {
ui.Bar(ui.Bar.RIGHT):area(self._chunks[1]):symbol(THEME.manager.border_symbol):style(THEME.manager.border_style),
ui.Bar(ui.Bar.LEFT):area(self._chunks[3]):symbol(THEME.manager.border_symbol):style(THEME.manager.border_style),
}
self._children = {
Marker:new(self._chunks[1], self._tab.parent),
Marker:new(self._chunks[2], self._tab.current),
}
end
function Rail:reflow() return { self } end
function Rail:redraw()
local elements = self._base or {}
for _, child in ipairs(self._children) do
elements = ya.list_merge(elements, ya.redraw_with(child))
end
return elements
end
-- Mouse events
function Rail:click(event, up) end
function Rail:scroll(event, step) end
function Rail:touch(event, step) end