layouts.rs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. use std::collections::HashMap;
  2. use dioxus::prelude::*;
  3. fn main() {
  4. let mut dom = VirtualDom::new(app);
  5. dom.rebuild();
  6. let mut layout = stretch2::Stretch::new();
  7. let mut nodes = HashMap::new();
  8. rink::collect_layout(&mut layout, &mut nodes, &dom, dom.base_scope().root_node());
  9. let node = nodes
  10. .remove(&dom.base_scope().root_node().mounted_id())
  11. .unwrap();
  12. layout
  13. .compute_layout(node.layout, stretch2::geometry::Size::undefined())
  14. .unwrap();
  15. for (_id, node) in nodes.drain() {
  16. println!("{:?}", layout.layout(node.layout));
  17. }
  18. }
  19. fn app(cx: Scope) -> Element {
  20. cx.render(rsx! {
  21. div {
  22. width: "100%",
  23. height: "100%",
  24. flex_direction: "column",
  25. div {
  26. "hi"
  27. }
  28. div {
  29. "bi"
  30. "bi"
  31. }
  32. }
  33. })
  34. }
  35. // fn print_layout(mut nodes: HashMap<ElementId, TuiNode>, node: &VNode) {
  36. // match node {
  37. // VNode::Text(_) => todo!(),
  38. // VNode::Element(_) => todo!(),
  39. // VNode::Fragment(_) => todo!(),
  40. // VNode::Component(_) => todo!(),
  41. // VNode::Placeholder(_) => todo!(),
  42. // }
  43. // }