diff options
Diffstat (limited to 'src/apps/index.ts')
| -rw-r--r-- | src/apps/index.ts | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/apps/index.ts b/src/apps/index.ts new file mode 100644 index 0000000..ab9453e --- /dev/null +++ b/src/apps/index.ts @@ -0,0 +1,34 @@ +import { Music } from "./music"; +import { Edit } from "./edit_rich"; + +import { JSX } from "preact"; +import { Source, SourceTypes } from "$/apps/source"; +import { Signal } from "@preact/signals"; +import { Browser } from "./browser"; +import { Image } from "./image"; +import { Video } from "./video"; +import { Audio } from "./audio"; + +type AppProps = { + source: Signal<Source>, + title: Signal<string | undefined>, + contentReady: Signal<boolean>, + sizingFinished: Signal<boolean> +} + +// *sigh* i'd like to make props *required*, but ts doesn't let me +// https://stackoverflow.com/questions/75481900/can-i-make-an-argument-required-in-a-typescript-function-type +export type App = (props: AppProps) => JSX.Element; + +type AppRegistry = { + [SourceType in SourceTypes]: App +} + +export const APP_REGISTRY: AppRegistry = Object.create({ + listen: Music, + text: Edit, + link: Browser, + image: Image, + video: Video, + audio: Audio +}); |
