Dependencies
///|
enum RootRoute {
Home
Team(String, SubRouteTeam?)
Search(String)
Invalid(String)
} derive(Default, ToJson, @json.FromJson, Show, Eq)
///|
impl RespoRouterRule for RootRoute with parse(s : String) {
let xs = @respo_router.split_route(s)
match xs {
["team", team_id, .. rest] =>
Team(
team_id,
if rest.length() == 0 {
None
} else {
Some(RespoRouterRule::parse(rest.to_array().join("/")))
},
)
["search", query] => Search(query)
[] => Home
_ => Invalid(s)
}
}
///|
impl RespoRouterRule for RootRoute with format(self) {
match self {
Home => "/"
Team(team_id, sub_route) => {
let p = "/team/\{team_id}"
if sub_route is Some(sub_route) {
"\{p}" + RespoRouterRule::format(sub_route)
} else {
p
}
}
Search(query) => "/search/\{query}"
Invalid(route) => route
}
}@respo_router.set_router_mode(Hash)@respo_router.render_url(app.store.val.router)@respo_router.listen_route(window, fn(route) {
app.store.val.update(Route(RootRoute::parse(route)))
@respo.mark_need_rerender()
})moon build --target js --debug --watch
yarn
yarn vitemoon build --target js
yarn
yarn vite build --base ./Install
Download zipDependencies