tela-engine 0.1.0

Runtime engine for Tela — React Native for terminals. QuickJS bridge, native APIs, and ratatui renderer.
Documentation
use ratatui::layout::Rect;
use ratatui::symbols;
use ratatui::widgets::LineGauge;
use ratatui::Frame;

use super::parse_style;
use crate::elements::Element;

pub fn render(frame: &mut Frame, area: Rect, element: &Element) {
    let ratio = element
        .props
        .get("ratio")
        .and_then(|v| v.as_f64())
        .unwrap_or(0.0)
        .clamp(0.0, 1.0);

    let mut lg = LineGauge::default().ratio(ratio);

    if let Some(label) = element.props.get("label").and_then(|v| v.as_str()) {
        lg = lg.label(label.to_string());
    }

    lg = lg.filled_style(parse_style(element));

    if let Some(ls) = element.props.get("lineSet").and_then(|v| v.as_str()) {
        lg = lg.line_set(match ls {
            "thick" => symbols::line::THICK,
            "double" => symbols::line::DOUBLE,
            _ => symbols::line::NORMAL,
        });
    }

    frame.render_widget(lg, area);
}