A file node can be a .canvas, so a .canvas can have nested canvases.
Obsidian's implementation of JSON Canvas supports this.