textui/mod.ts

41 lines
961 B
TypeScript
Raw Normal View History

2021-05-19 13:00:52 +00:00
import { AnsiTerminalDisplay } from "./ansi.ts";
2021-06-28 18:21:32 +00:00
import { UIConfig } from "./config.ts";
import { Display } from "./display.ts";
import { TextUI } from "./ui.ts";
2021-07-19 22:48:00 +00:00
import {
CanvasTerminalDisplay,
DivTerminalDisplay,
PreTerminalDisplay,
} from "./web.ts";
export { TextUI };
2021-05-19 13:00:52 +00:00
2021-06-28 18:21:32 +00:00
export const UI_DISPLAY_TYPES = {
autodetect: undefined,
ansi: AnsiTerminalDisplay,
2021-03-05 23:02:04 +00:00
web_pre: PreTerminalDisplay,
2021-07-19 22:48:00 +00:00
web_div: DivTerminalDisplay,
web_canvas: CanvasTerminalDisplay,
2021-06-28 18:21:32 +00:00
dummy: Display,
} as const;
export async function createTextUI(
config: Partial<UIConfig>,
display_type: keyof typeof UI_DISPLAY_TYPES = "autodetect",
): Promise<TextUI> {
if (display_type == "autodetect") {
2021-03-05 23:02:04 +00:00
if (typeof (window as any).document != "undefined") {
2021-07-19 22:48:00 +00:00
display_type = "web_canvas";
2021-03-05 23:02:04 +00:00
} else {
display_type = "ansi";
}
2021-06-28 18:21:32 +00:00
}
var display = new UI_DISPLAY_TYPES[display_type]();
var ui = new TextUI(display, config);
await ui.init();
2021-06-24 23:09:05 +00:00
2021-05-19 13:00:52 +00:00
return ui;
}