API reference / Common / Engine types / ShapeNode
Type Alias: ShapeNode
type ShapeNode =
| {
shape: Shape;
}
| {
group: ShapeGroup;
}
| {
picture: ShapePicture;
}
| {
connector: ShapeConnector;
}
| {
graphicFrame: ShapeGraphicFrame;
};An addressable shape-tree node — the EG_ShapeElement-style choice of what a shape tree holds, one variant per element kind.
Each kind is self-contained, the way DrawingML writes it: its stable [ShapeNodeId], its non-visual properties (a:nvSpPr, a:nvGrpSpPr, …) and its placement a:xfrm all live inside it. The placement sits in the kind's properties (a:spPr for a shape / picture / connector, a:grpSpPr for a group, and the frame's own a:xfrm for a graphic frame), so a placeholder shape resolves its whole spPr, placement included, as one unit down the layout → master chain. id, non_visual and transform reach them uniformly whatever the kind. A group's a:xfrm keeps its child coordinate mapping (a:chOff / a:chExt) beside the placement in the group's properties.
The DrawingML shape-tree elements (a:sp, a:grpSp, …) live in host namespaces (p:sp, xdr:sp, wps:wsp); every host imports to this one shared model. Host-specific non-visual data (the PresentationML placeholder, …) rides the shared [ShapeNonVisualProperties] superset, honored only by the hosts that use it — see that type.
Variants are boxed so the enum stays small relative to its largest variant ([Shape], which carries the full geometry).