use crate::chart::{build_histogram_config, render_chart, Candle, ChartBuilder, HistogramBuilder};
use crate::event::{Event, KeyCode, KeyEventKind, KeyModifiers, MouseButton, MouseKind};
use crate::halfblock::HalfBlockImage;
use crate::layout::{BeginContainerArgs, BeginScrollableArgs, Command, Direction};
use crate::rect::Rect;
use crate::style::{
Align, Border, BorderSides, Breakpoint, Color, Constraints, ContainerStyle, Justify, Margin,
Modifiers, Padding, Spacing, Style, Theme, ThemeColor, WidgetColors, WidgetTheme,
};
use crate::widgets::{
color_hex_label, parse_hex_color, ApprovalAction, BreadcrumbResponse, ButtonVariant, CalDate,
CalendarSelect, CalendarState, ColorPickerState, CommandPaletteState, ContextItem,
FilePickerState, FormField, FormState, GaugeResponse, GridColumn, GutterResponse,
HighlightRange, ListState, MultiSelectState, NumberInputState, PaginatorState, PaginatorStyle,
PickerMode, RadioState, SchedKind, SchedulerSlot, SchedulerState, ScreenState, ScrollState,
SelectState, SpinnerState, SplitPaneResponse, SplitPaneState, StreamingTextState, TableState,
TabsState, TextInputState, TextareaState, ToastLevel, ToastState, ToolApprovalState, TreeState,
ValidateTrigger,
};
use crate::FrameState;
use unicode_segmentation::UnicodeSegmentation;
use unicode_width::{UnicodeWidthChar, UnicodeWidthStr};
#[allow(dead_code)]
fn slt_assert(condition: bool, msg: &str) {
if !condition {
panic!("[SLT] {}", msg);
}
}
#[cfg(debug_assertions)]
#[allow(dead_code, clippy::print_stderr)]
fn slt_warn(msg: &str) {
eprintln!("\x1b[33m[SLT warning]\x1b[0m {}", msg);
}
#[cfg(not(debug_assertions))]
#[allow(dead_code)]
fn slt_warn(_msg: &str) {}
mod widgets_display;
mod widgets_input;
mod widgets_interactive;
mod widgets_viz;
pub use widgets_display::{Anchor, Breadcrumb, CodeBlock, Gauge, GutterOpts, LineGauge};
pub use widgets_viz::TreemapItem;
mod state;
pub use state::*;
mod bars;
pub use bars::*;
mod widget;
pub use widget::*;
mod core;
pub use core::*;
mod container;
pub use container::*;
mod runtime;
#[cfg(feature = "async")]
mod async_tasks;
#[cfg(feature = "async")]
pub(crate) use async_tasks::AsyncTasks;
#[cfg(feature = "async")]
pub use async_tasks::TaskHandle;
mod helpers;
pub(crate) use helpers::*;
#[cfg(all(test, feature = "async"))]
mod async_tasks_tests;
#[cfg(test)]
mod tests;
#[cfg(test)]
mod scheduler_tests;