summaryrefslogtreecommitdiff
path: root/preact-router/src/index.d.ts
diff options
context:
space:
mode:
Diffstat (limited to 'preact-router/src/index.d.ts')
-rw-r--r--preact-router/src/index.d.ts71
1 files changed, 71 insertions, 0 deletions
diff --git a/preact-router/src/index.d.ts b/preact-router/src/index.d.ts
new file mode 100644
index 0000000..fed2cf6
--- /dev/null
+++ b/preact-router/src/index.d.ts
@@ -0,0 +1,71 @@
+import * as preact from 'preact';
+
+export function route(url: string, replace?: boolean): boolean;
+export function route(options: { url: string; replace?: boolean }): boolean;
+
+export function getCurrentUrl(): string;
+
+export interface Location {
+ pathname: string;
+ search: string;
+}
+
+export interface CustomHistory {
+ listen(callback: (location: Location) => void): () => void;
+ location: Location;
+ push(path: string): void;
+ replace(path: string): void;
+}
+
+export interface RoutableProps {
+ path?: string;
+ default?: boolean;
+}
+
+export interface RouterOnChangeArgs {
+ router: Router;
+ url: string;
+ previous?: string;
+ active: preact.VNode[];
+ current: preact.VNode;
+}
+
+export interface RouterProps extends RoutableProps {
+ history?: CustomHistory;
+ static?: boolean;
+ url?: string;
+ onChange?: (args: RouterOnChangeArgs) => void;
+}
+
+export class Router extends preact.Component<RouterProps, {}> {
+ canRoute(url: string): boolean;
+ getMatchingChildren(
+ children: preact.VNode[],
+ url: string,
+ invoke: boolean
+ ): preact.VNode[];
+ routeTo(url: string): boolean;
+ render(props: RouterProps, {}): preact.VNode;
+}
+
+export const subscribers: Array<(url: string) => void>
+
+type AnyComponent<Props> =
+ | preact.FunctionalComponent<Props>
+ | preact.ComponentConstructor<Props, any>;
+
+export interface RouteProps<Props> extends RoutableProps {
+ component: AnyComponent<Props>;
+}
+
+export function Route<Props>(
+ props: RouteProps<Props> & Partial<Props>
+): preact.VNode;
+
+export function Link(props: {activeClassName?: string} & preact.JSX.HTMLAttributes): preact.VNode;
+
+declare module 'preact' {
+ export interface Attributes extends RoutableProps {}
+}
+
+export default Router;