More improvements

This commit is contained in:
Ayaz Hafiz 2023-07-18 11:24:50 -05:00
parent 8388c93e62
commit 84165d21f4
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
10 changed files with 465 additions and 35 deletions

View file

@ -4,7 +4,7 @@ import { Engine } from "../engine/engine";
import EventList from "./EventList";
import VariablesGraph from "./Graph/VariablesGraph";
import { TypedEmitter } from "tiny-typed-emitter";
import { ToggleVariableHandler } from "./Events";
import { KeydownHandler, ToggleVariableHandler } from "./Events";
interface UiProps {
events: AllEvents;
@ -12,6 +12,7 @@ interface UiProps {
interface MessageEvents {
toggleVariable: ToggleVariableHandler;
keydown: KeydownHandler;
}
export default function Ui({ events }: UiProps): JSX.Element {
@ -19,15 +20,24 @@ export default function Ui({ events }: UiProps): JSX.Element {
const ee = new TypedEmitter<MessageEvents>();
const toggleVariableHandlers: ToggleVariableHandler[] = [];
const keydownHandlers: KeydownHandler[] = [];
ee.on("toggleVariable", (variable: Variable) => {
toggleVariableHandlers.forEach((handler) => handler(variable));
});
ee.on("keydown", (key: string) => {
keydownHandlers.forEach((handler) => handler(key));
});
engine.stepTo(engine.lastEventIndex());
const subs = engine.subs.snapshot();
return (
<div className="flex flex-col md:flex-row gap-0 w-full h-full">
<div
className="flex flex-col md:flex-row gap-0 w-full h-full"
onKeyDown={(e) => {
ee.emit("keydown", e.key);
}}
>
<div className="font-mono mt-2 text-lg md:flex-1 overflow-scroll">
<EventList
engine={engine}
@ -44,6 +54,9 @@ export default function Ui({ events }: UiProps): JSX.Element {
onVariable={(handler) => {
toggleVariableHandlers.push(handler);
}}
onKeydown={(handler) => {
keydownHandlers.push(handler);
}}
/>
</div>
</div>