/// import { Default, pattern, SELF, UI, Writable } from "commontools"; interface Input { label: Default; parent: Default; registry: Writable>; } interface Output { label: string; parent: Output | null; children: Output[]; } const Node = pattern( ({ label, parent, registry, [SELF]: self }) => { const children = Writable.of([]); return { label, parent, children, [UI]: ( children.push(Node({ label: "Child", parent: self, registry }))} > Add Child registry.push(self)} > Add to Registry {parent ? : "No parent"} Registry: {registry.map((node) => )} Children: {children.map((node) => )} ), }; }, ); export default Node;