client-side-router
Version:
A client-side router for vanilla JavaScript projects.
38 lines (31 loc) • 571 B
text/typescript
function Route({ path, component, name }: {
path: string;
component: Component;
name?: string;
}): I1 {
return {
name: name ?? "no-name",
component,
regex: RegExp(path)
};
}
function Router({ children }: {
children: I1[];
}) {
return new RouterOutlet(children);
}
class RouterOutlet extends HTMLElement {
private readonly i1: I1[];
public constructor(i1: I1[]) {
super();
this.i1 = i1;
}
connectedCallback(): void {
}
}
type Component = () => Node;
type I1 = {
name: string;
component: Component;
regex: RegExp;
};