Make deprecated use router (#1260)

* make router props expansion better

* fix router data fields

* make a deprecated use_router hook
This commit is contained in:
ealmloff authored and GitHub committed 2023-07-27 10:32:23 -07:00
1 parent 5e3451a6f2
commit cfd62e274e
12 files changed
+82 -149

No files matched your search

+3 -25
View File
@@ -1,5 +1,5 @@
use proc_macro2::TokenStream;
use quote::{format_ident, quote};
use quote::quote;
use syn::Path;
use crate::nest::{Nest, NestId};
@@ -10,25 +10,20 @@ pub struct LayoutId(pub usize);
#[derive(Debug)]
pub struct Layout {
pub comp: Path,
pub props_name: Path,
pub active_nests: Vec<NestId>,
}
impl Layout {
pub fn routable_match(&self, nests: &[Nest]) -> TokenStream {
let props_name = &self.props_name;
let comp_name = &self.comp;
let name_str = self.comp.segments.last().unwrap().ident.to_string();
let dynamic_segments = self
.active_nests
.iter()
.flat_map(|id| nests[id.0].dynamic_segments());
quote! {
let comp = #props_name { #(#dynamic_segments,)* };
let dynamic = cx.component(#comp_name, comp, #name_str);
render! {
dynamic
#comp_name { #(#dynamic_segments: #dynamic_segments,)* }
}
}
}
@@ -40,23 +35,6 @@ impl Layout {
let _ = input.parse::<syn::Token![,]>();
let comp: Path = input.parse()?;
// Then parse the props name
let _ = input.parse::<syn::Token![,]>();
let props_name = input.parse::<Path>().unwrap_or_else(|_| {
let last = format_ident!("{}Props", comp.segments.last().unwrap().ident.to_string());
let mut segments = comp.segments.clone();
segments.pop();
segments.push(last.into());
Path {
leading_colon: None,
segments,
}
});
Ok(Self {
comp,
props_name,
active_nests,
})
Ok(Self { comp, active_nests })
}
}