mod bridge_client;
mod helpers;
mod key_mapping;
mod overlays;
mod runtime;
mod service;
mod types;
use std::sync::{Arc, OnceLock};
pub use bridge_client::start_debug_client;
pub(crate) use helpers::{OriginWidgetName, resolve_debug_name};
pub(crate) use overlays::paint_debug_overlays;
pub use overlays::{clear_overlays, set_overlay_hex};
pub use runtime::{is_macro_recording, record_ui_event};
#[cfg(not(target_arch = "wasm32"))]
pub fn now_unix_ms() -> u64 {
std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap_or_default()
.as_millis() as u64
}
#[cfg(target_arch = "wasm32")]
#[inline]
pub fn now_unix_ms() -> u64 { js_sys::Date::now() as u64 }
use ribir_painter::PixelImage;
use tokio::sync::mpsc;
pub use types::*;
use crate::window::WindowId;
#[derive(Clone, Debug)]
pub struct FramePacket {
pub wnd_id: WindowId,
pub ts_unix_ms: u64,
pub seq: u64,
pub image: Arc<PixelImage>,
}
pub static FRAME_TX: OnceLock<mpsc::UnboundedSender<FramePacket>> = OnceLock::new();