@express-document-sdk / RectangleNode
A RectangleNode represents a rectangle shape in the scenegraph.
To create a new rectangle, see Editor.createRectangle.
• get addOnData(): AddOnData
Get AddOnData reference for managing the private metadata on this node for this add-on.
• get allChildren(): Readonly<Iterable<Node, any, any>>
Returns a read-only list of all children of the node. General-purpose content containers such as ArtboardNode or
GroupNode also provide a mutable ContainerNode.children list. Other nodes with a more specific structure can
hold children in various discrete “slots”; this allChildren list includes all such children and reflects their
overall display z-order.
The children of a Node are always other Node classes (never the more minimal BaseNode).
Readonly<Iterable<Node, any, any>>
• get blendMode(): BlendMode
Blend mode determines how a node is composited onto the content below it. The default value is BlendMode.normal for most nodes, and BlendMode.passThrough for GroupNodes.
• set blendMode(value): void
• value: BlendMode
• get bottomLeftRadius(): number
The radius of the bottom left corner, or 0 if the corner is not rounded.
The actual corner radius that is rendered is capped based on the size of the rectangle even if the radius value set here is higher.
• set bottomLeftRadius(value): void
• value: number
number
• get bottomRightRadius(): number
The radius of the bottom right corner, or 0 if the corner is not rounded.
The actual corner radius that is rendered is capped based on the size of the rectangle even if the radius value set here is higher.
• set bottomRightRadius(value): void
• value: number
number
• get boundsInParent(): Readonly<Rect>
An axis-aligned box in the parent’s coordinate space encompassing the node’s layout bounds (its boundsLocal, as transformed by its position and rotation relative to the parent). If the node has rotation, the top-left of its boundsLocal box (aligned to its own axes) is not necessarily located at the top-left of the boundsInParent box (since it’s aligned to the parent’s axes). This value is well-defined even for an orphan node with no parent.
Readonly<Rect>
• get boundsLocal(): Readonly<Rect>
The bounding box of the node, expressed in the node’s local coordinate space (which may be shifted or rotated relative to its parent). Generally matches the selection outline seen in the UI, encompassing the vector path “spine” of the shape as well as its stroke, but excluding effects such as shadows.
The top-left corner of the bounding box corresponds to the visual top-left corner of the node, but this value is not necessarily (0,0) – this is especially true for Text and Path nodes.
Readonly<Rect>
• get centerPointLocal(): Readonly<Point>
Position of the node’s centerpoint in its own local coordinate space, i.e. the center of the boundsLocal box.
Readonly<Point>
• get fill(): undefined | Readonly<Fill>
• set fill(fill): void
The fill applied to the shape, if any.
• fill: undefined | Fill
undefined | Readonly<Fill>
• get height(): number
The height of the node. Must be at least MIN_DIMENSION.
• set height(value): void
• value: number
number
• get id(): string
A unique identifier for this node that stays the same when the file is closed & reopened, or if the node is moved to a different part of the document.
string
• get locked(): boolean
The node’s lock/unlock state. Locked nodes are excluded from the selection (see Context.selection), and cannot be edited by the user in the UI unless they are unlocked first. Operations on locked nodes using the API are permitted. However, please consider if modifying a locked node would align with user expectations before using the API to make changes to locked nodes.
• set locked(locked): void
• locked: boolean
boolean
• get opacity(): number
The node’s opacity, from 0.0 to 1.0
• set opacity(opacity): void
• opacity: number
number
• get parent(): undefined | BaseNode
The node’s parent. The parent chain will eventually reach ExpressRootNode for all nodes that are part of the document content.
Nodes that have been deleted are “orphaned,” with a parent chain that terminates in undefined without reaching the
root node. Such nodes cannot be selected, so it is unlikely to encounter one unless you retain a reference to a node
that was part of the document content earlier. Deleted nodes can be reattached to the scenegraph, e.g. via Undo.
undefined | BaseNode
• get rotation(): number
The node’s local rotation angle in degrees, relative to its parent’s axes. Use setRotationInParent to
change rotation by rotating around a defined centerpoint.
number
• get rotationInScreen(): number
The node’s total rotation angle in degrees, relative to the overall global view of the document – including any cumulative rotation from the node’s parent containers.
number
• get stroke(): undefined | Readonly<Stroke>
• set stroke(stroke): void
The stroke applied to the shape, if any. Only SolidColorStroke values are supported by the setter, but the “type” field is optional for backward compatibility. Throws if another type is provided.
• stroke: undefined | SolidColorStrokeWithOptionalType
undefined | Readonly<Stroke>
• get topLeftLocal(): Readonly<Point>
Position of the node’s top-left corner in its own local coordinate space, equal to (boundsLocal.x, boundsLocal.y). If the node is rotated, this is not the same as the top-left corner of boundsInParent.
Readonly<Point>
• get topLeftRadius(): number
The radius of the top left corner, or 0 if the corner is not rounded.
The actual corner radius that is rendered is capped based on the size of the rectangle even if the radius value set here is higher.
• set topLeftRadius(value): void
• value: number
number
• get topRightRadius(): number
The radius of the top right corner, or 0 if the corner is not rounded.
The actual corner radius that is rendered is capped based on the size of the rectangle even if the radius value set here is higher.
• set topRightRadius(value): void
• value: number
number
• get transformMatrix(): mat2d
The node’s transform matrix relative to its parent.
• get translation(): Readonly<Point>
The translation of the node along its parent’s axes. This is identical to the translation component of
transformMatrix. It is often simpler to set a node’s position using setPositionInParent than by
setting translation directly.
• set translation(value): void
• value: Point
Readonly<Point>
• get type(): SceneNodeType
The node’s type.
• get visualRoot(): VisualNode
The highest ancestor that still has visual presence in the document. Typically an Artboard, but for orphaned content, it will be the root of the deleted content (which might be this node itself).
Nodes that are both in the same visualRoot subtree lie within the same “visual space” of the document’s structure. Nodes that are in different visual roots have no spatial relation to one another; there is no meaningful comparison or conversion between the bounds or coordinate spaces of such nodes.
• get width(): number
The width of the node. Must be at least MIN_DIMENSION.
• set width(value): void
• value: number
number
• boundsInNode(targetNode): Readonly<Rect>
Convert the node’s boundsLocal to an axis-aligned bounding box in the coordinate space of the target node. Both nodes must share the same visualRoot, but can lie anywhere within that subtree relative to one another (the target node need not be an ancestor of this node, nor vice versa).
• targetNode: VisualNode
Readonly<Rect>
• getUniformCornerRadius(): undefined | number
If all corners have the same rounding radius value, returns that value (or 0 if all corners are not rounded). If the corner radii differ, returns undefined.
undefined | number
• localPointInNode(localPoint, targetNode): Readonly<Point>
Convert a point given in the node’s local coordinate space to a point in the coordinate space of the target node. Both nodes must share the same visualRoot, but can lie anywhere within that subtree relative to one another (the target node need not be an ancestor of this node, nor vice versa).
• localPoint: Point
• targetNode: VisualNode
Readonly<Point>
• removeFromParent(): void
Removes the node from its parent - effectively deleting it, if the node is not re-added to another parent before the document is closed.
If parent is a basic ContainerNode, this is equivalent to node.parent.children.remove(node). For nodes with other
child “slots,” removes the child from whichever slot it resides in, if possible. Throws if the slot does not permit
removal. No-op if node is already an orphan.
void
• setPositionInParent(parentPoint, localRegistrationPoint): void
Move the node so the given localRegistrationPoint in its local coordinates is placed at the given
parentPoint in its parent’s coordinates (taking into account any rotation on this node, etc.).
• parentPoint: Point
Point in this node’s parent’s coordinate space to move localRegistrationPoint to
• localRegistrationPoint: Point
Point in this node’s local coordinate space to align with parentPoint
void
FillableNode.setPositionInParent
Center a rectangle within its parent artboard:
rectangle.setPositionInParent(
{ x: artboard.width / 2, y: artboard.height / 2 },
{ x: rectangle.width / 2, y: rectangle.height / 2 }
);
• setRotationInParent(angleInDegrees, localRotationPoint): void
Set the node’s rotation angle relative to its parent to exactly the given value, keeping the given point in the node’s local coordinate space at a fixed location within the parent. Disregards any rotation the node may already have had. The angle set here may not be the absolute rotation angle seen on screen, if the parent or other ancestors also have rotation of their own.
• angleInDegrees: number
Angle in degrees.
• localRotationPoint: Point
Point to rotate around, in node’s local coordinates.
void
FillableNode.setRotationInParent
Rotate the rectangle 45 degrees clockwise around its centerpoint:
rectangle.setRotationInParent(45, { x: rectangle.width / 2, y: rectangle.height / 2 });
• setUniformCornerRadius(radius): void
Set all corner radii to the same value. Set to 0 to make the corners non-rounded.
• radius: number
void
The actual corner radius that is rendered is capped based on the size of the rectangle even if the radius value set here is higher.