use ratatui::layout::{Constraint, Direction, Layout, Rect};
#[derive(Debug, Clone, Copy)]
pub struct Regions {
pub left: Rect,
pub right: Rect,
pub bottom: Rect,
pub overlay: Rect,
}
#[must_use]
pub fn split(area: Rect) -> Regions {
let canvas =
Layout::default().direction(Direction::Vertical).constraints([Constraint::Min(1)]).margin(1).split(area)[0];
let vertical = Layout::default()
.direction(Direction::Vertical)
.constraints([Constraint::Min(4), Constraint::Length(7)])
.split(canvas);
let top = vertical[0];
let bottom = vertical[1];
let horizontal = Layout::default()
.direction(Direction::Horizontal)
.constraints([Constraint::Percentage(40), Constraint::Percentage(60)])
.split(top);
Regions { left: horizontal[0], right: horizontal[1], bottom, overlay: centered_rect(60, 30, canvas) }
}
fn centered_rect(percent_x: u16, percent_y: u16, area: Rect) -> Rect {
let popup_layout = Layout::default()
.direction(Direction::Vertical)
.constraints([
Constraint::Percentage((100 - percent_y) / 2),
Constraint::Percentage(percent_y),
Constraint::Percentage((100 - percent_y) / 2),
])
.split(area);
Layout::default()
.direction(Direction::Horizontal)
.constraints([
Constraint::Percentage((100 - percent_x) / 2),
Constraint::Percentage(percent_x),
Constraint::Percentage((100 - percent_x) / 2),
])
.split(popup_layout[1])[1]
}