pub mod widget; use iced::advanced::graphics::futures::MaybeSend; use iced::advanced::renderer; use iced::advanced::widget::{operate, Id}; use iced::task::Task; use iced::{Element, Point, Rectangle}; use widget::droppable::*; use widget::operation::drop; pub fn droppable<'a, Message, Theme, Renderer>( content: impl Into>, ) -> Droppable<'a, Message, Theme, Renderer> where Message: Clone, Renderer: renderer::Renderer, { Droppable::new(content) } pub fn zones_on_point( msg: MF, point: Point, options: Option>, depth: Option, ) -> Task where T: Send + 'static, MF: Fn(Vec<(Id, Rectangle)>) -> T + MaybeSend + Sync + Clone + 'static, { operate(drop::find_zones( move |bounds| bounds.contains(point), options, depth, )) .map(move |id| msg(id)) } pub fn find_zones( msg: MF, filter: F, options: Option>, depth: Option, ) -> Task where Message: Send + 'static, MF: Fn(Vec<(Id, Rectangle)>) -> Message + MaybeSend + Sync + Clone + 'static, F: Fn(&Rectangle) -> bool + Send + 'static, { operate(drop::find_zones(filter, options, depth)).map(move |id| msg(id)) }