silverbullet/webapp/src/types.ts

41 lines
963 B
TypeScript

import { CommandDef } from "./plugins/types";
export type PageMeta = {
name: string;
lastModified: Date;
created?: boolean;
};
export type AppCommand = {
command: CommandDef;
run: (arg: any) => Promise<any>;
};
export type AppViewState = {
currentPage?: PageMeta;
isSaved: boolean;
showPageNavigator: boolean;
showCommandPalette: boolean;
allPages: PageMeta[];
commands: Map<string, AppCommand>;
};
export const initialViewState: AppViewState = {
isSaved: false,
showPageNavigator: false,
showCommandPalette: false,
allPages: [],
commands: new Map(),
};
export type Action =
| { type: "page-loaded"; meta: PageMeta }
| { type: "page-saved"; meta: PageMeta }
| { type: "page-updated" }
| { type: "pages-listed"; pages: PageMeta[] }
| { type: "start-navigate" }
| { type: "stop-navigate" }
| { type: "update-commands"; commands: Map<string, AppCommand> }
| { type: "show-palette" }
| { type: "hide-palette" };