#[macro_export]
macro_rules! input {
	($cx:ident, $opt:expr) => {{
		use yazi_dds::Pubsub;
		use yazi_shim::strum::IntoStr;
		use yazi_widgets::input::{InputCallback, InputEvent, InputOpt};

		let (tx, rx) = ::tokio::sync::mpsc::unbounded_channel();
		let opt = $opt.with_cb(move |event| {
			$crate::log_if_err!(Pubsub::pub_after_input((&event).into_str(), event.value()));
			tx.send(event).ok();
		});

		match $crate::act!(input:show, $cx, opt) {
			Ok(_) => Ok(rx),
			Err(e) => Err(e)
		}
	}};
}
