///
import { computed, NAME, pattern, UI } from "commontools";
interface Node {
label: string;
children: Node[];
}
const TREE: Node = {
label: "Root",
children: [
{
label: "A",
children: [
{ label: "A.1", children: [] },
{ label: "A.2", children: [{ label: "A.2.x", children: [] }] },
],
},
{
label: "B",
children: [{ label: "B.1", children: [] }],
},
],
};
function toMentionable(node: Node): any {
return {
[NAME]: node.label,
[UI]:
{node.label}
,
mentionable: computed(() => node.children.map(toMentionable)),
};
}
export default pattern>((_) => {
const mentionables = TREE.children.map(toMentionable);
return {
[NAME]: "Nested Mentionables Test",
[UI]: (
This pattern exports a recursive mentionable tree:
{JSON.stringify(TREE, null, 2)}
),
mentionable: computed(() => mentionables),
};
});