import type { ResidualNode } from "../types";
import "./ResidualNode.css";
export interface ResidualNodeProps {
node: ResidualNode;
}
function OperatorLabel({ children }: { children: string }) {
return {children};
}
function Wrapped({ node }: { node: ResidualNode }) {
return (
()
);
}
function ResidualNodeView({ node }: ResidualNodeProps) {
switch (node.op) {
case "true":
return true;
case "false":
return false;
case "predicate":
return (
pred
{node.name ? <>({node.name})> : null}
);
case "error":
return (
error
{node.message}
);
case "always":
case "now":
case "next":
case "not":
return (
{node.op}
);
case "eventually":
return (
eventually
{node.within ? (
within {node.within.amount} {node.within.unit}
) : null}
);
case "and":
case "or":
return (
{node.op}
);
case "implies":
return (
{"=>"}
);
}
}
export default function ResidualNodeRoot({ node }: ResidualNodeProps) {
return (
);
}