|
@@ -586,56 +586,3 @@ impl Scope {
|
|
&self.frames.cur_frame().head_node
|
|
&self.frames.cur_frame().head_node
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
-// ==================================================================================
|
|
|
|
-// Supporting structs for the above abstractions
|
|
|
|
-// ==================================================================================
|
|
|
|
-
|
|
|
|
-// We actually allocate the properties for components in their parent's properties
|
|
|
|
-// We then expose a handle to use those props for render in the form of "OpaqueComponent"
|
|
|
|
-pub type OpaqueComponent = dyn for<'b> Fn(&'b Scope) -> VNode<'b>;
|
|
|
|
-
|
|
|
|
-#[derive(PartialEq, Debug, Clone, Default)]
|
|
|
|
-pub struct EventQueue(pub Rc<RefCell<Vec<HeightMarker>>>);
|
|
|
|
-
|
|
|
|
-impl EventQueue {
|
|
|
|
- pub fn new_channel(&self, height: u32, idx: ScopeIdx) -> Rc<dyn Fn()> {
|
|
|
|
- let inner = self.clone();
|
|
|
|
- let marker = HeightMarker { height, idx };
|
|
|
|
- Rc::new(move || {
|
|
|
|
- log::debug!("channel updated {:#?}", marker);
|
|
|
|
- inner.0.as_ref().borrow_mut().push(marker)
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/// A helper type that lets scopes be ordered by their height
|
|
|
|
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
|
|
-pub struct HeightMarker {
|
|
|
|
- pub idx: ScopeIdx,
|
|
|
|
- pub height: u32,
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-impl Ord for HeightMarker {
|
|
|
|
- fn cmp(&self, other: &Self) -> std::cmp::Ordering {
|
|
|
|
- self.height.cmp(&other.height)
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-impl PartialOrd for HeightMarker {
|
|
|
|
- fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
|
|
|
|
- Some(self.cmp(other))
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-#[derive(Debug, PartialEq, Hash)]
|
|
|
|
-pub struct ContextId {
|
|
|
|
- // Which component is the scope in
|
|
|
|
- original: ScopeIdx,
|
|
|
|
-
|
|
|
|
- // What's the height of the scope
|
|
|
|
- height: u32,
|
|
|
|
-
|
|
|
|
- // Which scope is it (in order)
|
|
|
|
- id: u32,
|
|
|
|
-}
|
|
|