alimentar/tui/mod.rs
1//! TUI Dataset Viewer Module
2//!
3//! Provides terminal-based visualization of Arrow datasets.
4//! Designed for pure WASM compatibility with zero JavaScript dependencies.
5//!
6//! # Architecture
7//!
8//! The TUI module follows the presentar-terminal architecture:
9//! - `DatasetAdapter` - Uniform access to Arrow datasets
10//! - `DatasetViewer` - Scrollable table widget
11//! - `SchemaInspector` - Schema display widget
12//! - `RowDetailView` - Expanded row view widget
13//!
14//! # WASM Compatibility
15//!
16//! All components are designed for `wasm32-unknown-unknown`:
17//! - No panic paths (no unwrap/expect)
18//! - No filesystem access in WASM mode
19//! - No threading (single-threaded model)
20//! - Zero JavaScript dependencies
21//!
22//! # Example
23//!
24//! ```ignore
25//! use alimentar::tui::{DatasetAdapter, DatasetViewer};
26//! use alimentar::ArrowDataset;
27//!
28//! // Load dataset
29//! let dataset = ArrowDataset::from_parquet("data.parquet")?;
30//! let adapter = DatasetAdapter::from_dataset(&dataset)?;
31//!
32//! // Create viewer
33//! let viewer = DatasetViewer::new(adapter);
34//!
35//! // Render to canvas
36//! viewer.paint(&mut canvas);
37//! ```
38
39mod adapter;
40mod error;
41mod format;
42mod row_detail;
43mod schema_inspector;
44mod scroll;
45mod viewer;
46
47// Public exports
48pub use adapter::DatasetAdapter;
49pub use error::{TuiError, TuiResult};
50pub use format::{display_width, format_array_value, truncate_string};
51pub use row_detail::RowDetailView;
52pub use schema_inspector::SchemaInspector;
53pub use scroll::ScrollState;
54pub use viewer::DatasetViewer;