Docs

Mental model

You always have a current structure and a selection inside it. Nested work is changing which node is current.

root (usually a List or Dictionary)
├── cell → scalar | formula string | structure | checkbox | file
│            ├── Grid       { rows, cols, cells{} }
│            ├── Table      { headers, fieldAxis, colFormula|rowFormula, colStruct*|rowStruct*, … }
│            ├── List       { indexes 1…n, cells{}, indexKind: "unnamed" }
│            ├── Dictionary { indexes as field names, cells{}, indexKind: "named" }  // same shape as list
│            └── Pivot      { sourceId, groupBy, values, filters, … }
└── names: defined name → { structure id, r, c }