use std::fmt;
use crate::pos::{X, Y};
pub use crossterm::event::{KeyCode, MouseButton};
mod event;
pub use event::Event;
mod state;
pub use state::{InputState, Keys, StateEvent};
#[expect(private_bounds)] pub trait FrameInput: fmt::Debug + Clone + crate::Sealed {
fn split_h(self, mid: X) -> (Self, Self);
fn split_v(self, mid: Y) -> (Self, Self);
}
#[derive(Clone, Copy, Debug)]
pub struct Nop;
crate::seal!(Nop);
impl FrameInput for Nop {
fn split_h(self, _: X) -> (Self, Self) {
(Self, Self)
}
fn split_v(self, _: Y) -> (Self, Self) {
(Self, Self)
}
}