ComponentSetNode
A component set contains the variants of a component. It behaves much like a normal frame would, but all of its children are ComponentNode
s.
Be aware that some component sets reflect items in the team library that are used within this file. Those component sets and their children are read-only, though you may create new instances of the ComponentNode
s that are inside them.
In Figma, component sets must always have children. A component set with no children will delete itself.
Component set properties
type: 'COMPONENT_SET' [readonly]
The type of this node, represented by the string literal "COMPONENT_SET"
clone(): ComponentSetNode
Duplicates the component set as a new component set. Its children will be duplicated as new components with no instances of them. By default, the duplicate will be parented under figma.currentPage.
defaultVariant: ComponentNode [readonly]
The default variant of this component set, which is the top-left-most variant, spatially. This corresponds to the variant that would be inserted when dragging in a component set from the team library in the Figma UI.
variantGroupProperties: { [property: string]: { values: string[] } } [readonly]
DEPRECATED: Use componentPropertyDefinitions
instead.
Publishable properties
description: string
The plain-text annotation entered by the user for this style/component.
descriptionMarkdown: string
The rich-text annotation entered by the user for this style/component.
documentationLinks: ReadonlyArray<DocumentationLink>
The documentation links for this style/component.
remote: boolean [readonly]
Whether this style/component is a remote style/component that doesn't live in the file (i.e. is from the team library). Remote components are read-only: attempts to change their properties will throw.
key: string [readonly]
The key to use with figma.importComponentByKeyAsync
, figma.importComponentSetByKeyAsync
and figma.importStyleByKeyAsync
. Note that while this key is present on local and published components, you can only import components that are already published.
getPublishStatusAsync(): Promise<PublishStatus>
Gets the status of this style/component in the team library.
Base node properties
id: string [readonly]
The unique identifier of a node. For example, 1:3
. The node id can be used with methods such as figma.getNodeByIdAsync
, but plugins typically don't need to use this since you can usually just access a node directly.
parent: (BaseNode & ChildrenMixin) | null [readonly]
Returns the parent of this node, if any. This property is not meant to be directly edited. To reparent, see appendChild
.
name: string
The name of the layer that appears in the layers panel. Calling figma.root.name
will return the name, read-only, of the current file.
removed: boolean [readonly]
Returns true if this node has been removed since it was first accessed. If your plugin stays open for a while and stores references to nodes, you should write your code defensively and check that the nodes haven't been removed by the user.
toString(): string
Returns a string representation of the node. For debugging purposes only, do not rely on the exact output of this string in production code.
remove(): void
Removes this node and all of its children from the document.
setRelaunchData(data: { [command: string]: string }): void
Sets state on the node to show a button and description when the node is selected. Clears the button and description when relaunchData
is {}
.
In Figma and Dev Mode, this shows up in the properties panel. In FigJam, this shows up in the property menu. See here for examples.
getRelaunchData(): { [command: string]: string }
Retreives the reluanch data stored on this node using setRelaunchData
isAsset: boolean [readonly]
Returns true if Figma detects that a node is an asset, otherwise returns false. An asset is is either an icon or a raster image.
This property is useful if you're building a plugin for code generation.
This property uses a set of heuristics to determine if a node is an asset. At a high level an icon is a small vector graphic and an image is a node with an image fill.
getCSSAsync(): Promise<{ [key: string]: string }>
Resolves to a JSON object of CSS properties of the node. This is the same CSS that Figma shows in the inspect panel and is helpful if you are building a plugin for code generation.
getTopLevelFrame(): FrameNode | undefined
Returns the top-most frame that contains this node. If the node is not inside a frame, this will return undefined.
This function will only work in Figma Design and will throw an error if called in FigJam or Slides.
Plugin data properties
getPluginData(key: string): string
Retrieves custom information that was stored on this node or style using setPluginData
. If there is no data stored for the provided key, an empty string is returned.
setPluginData(key: string, value: string): void
Lets you store custom information on any node or style, private to your plugin. The total size of your entry (pluginId
, key
, value
) cannot exceed 100 kB.
getPluginDataKeys(): string[]
Retrieves a list of all keys stored on this node or style using using setPluginData
. This enables iterating through all data stored privately on a node or style by your plugin.
getSharedPluginData(namespace: string, key: string): string
Retrieves custom information that was stored on this node or style using setSharedPluginData
. If there is no data stored for the provided namespace and key, an empty string is returned.
setSharedPluginData(namespace: string, key: string, value: string): void
Lets you store custom information on any node or style, public to all plugins. The total size of your entry (namespace
, key
, value
) cannot exceed 100 kB.
getSharedPluginDataKeys(namespace: string): string[]
Retrieves a list of all keys stored on this node or style using setSharedPluginData
. This enables iterating through all data stored in a given namespace.
Dev resource properties
getDevResourcesAsync(options?: { includeChildren: boolean }): Promise<DevResourceWithNodeId[]>
Gets all of the dev resources on a node. This includes any inherited dev resources from components and component sets.
addDevResourceAsync(url: string, name?: string): Promise<void>
Adds a dev resource to a node. This will fail if the node already has a dev resource with the same url.
editDevResourceAsync(currentUrl: string, newValue: { name: string; url: string }): Promise<void>
Edits a dev resource on a node. This will fail if the node does not have a dev resource with the same url.
deleteDevResourceAsync(url: string): Promise<void>
Deletes a dev resource on a node. This will fail if the node does not have a dev resource with the same url.
setDevResourcePreviewAsync(url: string, preview: PlainTextElement): Promise<void>
This is a private API only available to Figma partners
Scene node properties
visible: boolean
Whether the node is visible or not. Does not affect a plugin's ability to access the node.
locked: boolean
Whether the node is locked or not, preventing certain user interactions on the canvas such as selecting and dragging. Does not affect a plugin's ability to write to those properties.
stuckNodes: SceneNode[] [readonly]
An array of nodes that are "stuck" to this node. In FigJam, stamps, highlights, and some widgets can "stick" to other nodes if they are dragged on top of another node.
attachedConnectors: ConnectorNode[] [readonly]
An array of ConnectorNode
s that are attached to a node.
componentPropertyReferences: { [nodeProperty in 'visible' | 'characters' | 'mainComponent']?: string} | null
All component properties that are attached on this node. A node can only have componentPropertyReferences
if it is a component sublayer or an instance sublayer. It will be null
otherwise. The value in the key-value pair refers to the component property name as returned by componentPropertyDefinitions
on the containing component, component set or main component (for instances).
boundVariables?: { readonly [field in VariableBindableNodeField]?: VariableAlias} & { readonly [field in VariableBindableTextField]?: VariableAlias[]} & { fills: VariableAlias[]; strokes: VariableAlias[]; effects: VariableAlias[]; layoutGrids: VariableAlias[]; componentProperties: { [propertyName: string]: VariableAlias }; textRangeFills: VariableAlias[] } [readonly]
The variables bound to a particular field on this node. Please see the Working with Variables guide for how to get and set variable bindings.
setBoundVariable(field: VariableBindableNodeField | VariableBindableTextField, variable: Variable | null): void
Binds the provided field
on this node to the given variable. Please see the Working with Variables guide for how to get and set variable bindings.
If null
is provided as the variable, the given field
will be unbound from any variables.
inferredVariables?: { readonly [field in VariableBindableNodeField]?: VariableAlias[]} & { fills: VariableAlias[][]; strokes: VariableAlias[][] } [readonly]
An object, keyed by field, returning any variables that match the raw value of that field for the mode of the node (or the default variable value if no mode is set)
resolvedVariableModes: { [collectionId: string]: string }
The resolved mode for this node for each variable collection in this file.
explicitVariableModes: { [collectionId: string]: string }
The explicitly set modes for this node.
For SceneNodes
, represents a subset of resolvedVariableModes
.
Note that this does not include workspace and team-default modes.
clearExplicitVariableModeForCollection(collection: VariableCollection): void
Clears an explicit mode for the given collection on this node
setExplicitVariableModeForCollection(collection: VariableCollection, modeId: string): void
Sets an explicit mode for the given collection on this node
Children-related properties
children: ReadonlyArray<SceneNode> [readonly]
The list of children, sorted back-to-front. That is, the first child in the array is the bottommost layer on the screen, and the last child in the array is the topmost layer.
If the manifest contains "documentAccess": "dynamic-page"
, and the node is a PageNode
, you must first call loadAsync
to access this property.
appendChild(child: SceneNode): void
Adds a new child to the end of the children
array. That is, visually on top of all other children.
If the manifest contains "documentAccess": "dynamic-page"
, and the node is a PageNode
, you must first call loadAsync
to access this function.
insertChild(index: number, child: SceneNode): void
Adds a new child at the specified index in the children
array.
If the manifest contains "documentAccess": "dynamic-page"
, and the node is a PageNode
, you must first call loadAsync
to access this function.
findChildren(callback?: (node: SceneNode) => boolean): SceneNode[]
Searches the immediate children of this node (i.e. not including the children's children). Returns all nodes for which callback
returns true.
If the manifest contains "documentAccess": "dynamic-page"
, and the node is a PageNode
, you must first call loadAsync
to access this function.
findChild(callback: (node: SceneNode) => boolean): SceneNode | null
Searches the immediate children of this node (i.e. not including the children's children). Returns the first node for which callback
returns true.
If the manifest contains "documentAccess": "dynamic-page"
, and the node is a PageNode
, you must first call loadAsync
to access this function.
findAll(callback?: (node: SceneNode) => boolean): SceneNode[]
Searches this entire subtree (this node's children, its children's children, etc). Returns all nodes for which callback
returns true.
If the manifest contains "documentAccess": "dynamic-page"
, and the node is a PageNode
, you must first call loadAsync
to access this function.
findOne(callback: (node: SceneNode) => boolean): SceneNode | null
Searches this entire subtree (this node's children, its children's children, etc). Returns the first node for which callback
returns true.
If the manifest contains "documentAccess": "dynamic-page"
, and the node is a PageNode
, you must first call loadAsync
to access this function.
findAllWithCriteria<T extends NodeType[]>(criteria: FindAllCriteria<T>): Array<{ type: T[number] } & SceneNode>
Searches this entire subtree (this node's children, its children's children, etc). Returns all nodes that satisfy all of specified criteria.
If the manifest contains "documentAccess": "dynamic-page"
, and the node is a PageNode
, you must first call loadAsync
to access this function.
findWidgetNodesByWidgetId(widgetId: string): Array<WidgetNode>
Searches this entire subtree (this node's children, its children's children, etc). Returns all widget nodes that match the provided widgetId
.
If the manifest contains "documentAccess": "dynamic-page"
, and the node is a PageNode
, you must first call loadAsync
to access this function.
Frame-related properties
detachedInfo: DetachedInfo | null [readonly]
Includes the id (for local components) or key (for library components) of the component the given node was detached from, if any. If the node isn't a detached instance, it will be null. If the node is a component or instance, it will be null.
layoutGrids: ReadonlyArray<LayoutGrid>
Array of LayoutGrid
objects used as layout grids on this node. For help on how to change this value, see Editing Properties.
gridStyleId: string
The id of the GridStyle
object that the layoutGrids
property of this node is linked to.
If the manifest contains"documentAccess": "dynamic-page"
, this property is read-only. Use setGridStyleIdAsync
to update the style.
setGridStyleIdAsync(styleId: string): Promise<void>
Set the GridStyle
that the layoutGrids
property of this node is linked to.
clipsContent: boolean
Whether the frame clips its contents. That is, whether layers inside the frame are visible outside the bounds of the frame.
guides: ReadonlyArray<Guide>
Array of Guide
used inside the frame. Note that each frame has its own guides, separate from the canvas-wide guides. For help on how to change this value, see Editing Properties.
inferredAutoLayout: InferredAutoLayoutResult | null
Returns inferred auto layout properties of a FrameNode
if applicable. Otherwise, returns null
.
This is what Figma uses to power Dev Mode’s code snippets feature, as it makes sure the generated code is more useful.
This method uses a heuristic to infer the auto layout properties.
layoutMode: 'NONE' | 'HORIZONTAL' | 'VERTICAL' | 'GRID'
Determines whether this layer uses auto-layout to position its children. Defaults to "NONE".
paddingLeft: number
Applicable only on auto-layout frames. Determines the left padding between the border of the frame and its children.
paddingRight: number
Applicable only on auto-layout frames. Determines the right padding between the border of the frame and its children.
paddingTop: number
Applicable only on auto-layout frames. Determines the top padding between the border of the frame and its children.
paddingBottom: number
Applicable only on auto-layout frames. Determines the bottom padding between the border of the frame and its children.
horizontalPadding: number
DEPRECATED: Use paddingLeft
and paddingRight
instead.
verticalPadding: number
DEPRECATED: Use paddingTop
and paddingBottom
instead.
primaryAxisSizingMode: 'FIXED' | 'AUTO'
Applicable only on auto-layout frames. Determines whether the primary axis has a fixed length (determined by the user) or an automatic length (determined by the layout engine).
counterAxisSizingMode: 'FIXED' | 'AUTO'
Applicable only on auto-layout frames. Determines whether the counter axis has a fixed length (determined by the user) or an automatic length (determined by the layout engine).
strokesIncludedInLayout: boolean
Applicable only on auto-layout frames. Determines whether strokes are included in layout calculations. When true, auto-layout frames behave like css box-sizing: border-box
.
layoutWrap: 'NO_WRAP' | 'WRAP'
Determines whether this layer should use wrapping auto-layout. Defaults to "NO_WRAP"
.
primaryAxisAlignItems: 'MIN' | 'MAX' | 'CENTER' | 'SPACE_BETWEEN'
Applicable only on "HORIZONTAL" or "VERTICAL" auto-layout frames. Determines how the auto-layout frame’s children should be aligned in the primary axis direction.
counterAxisAlignItems: 'MIN' | 'MAX' | 'CENTER' | 'BASELINE'
Applicable only on "HORIZONTAL" or "VERTICAL" auto-layout frames. Determines how the auto-layout frame’s children should be aligned in the counter axis direction.
counterAxisAlignContent: 'AUTO' | 'SPACE_BETWEEN'
Applicable only on auto-layout frames with layoutWrap
set to "WRAP"
. Determines how the wrapped tracks are spaced out inside of the auto-layout frame.
itemSpacing: number
Applicable only on "HORIZONTAL" or "VERTICAL" auto-layout frames. Determines distance between children of the frame.
counterAxisSpacing: number | null
Applicable only on "HORIZONTAL" or "VERTICAL" auto-layout frames with layoutWrap
set to "WRAP"
. Determines the distance between wrapped tracks. The value must be positive.
itemReverseZIndex: boolean
Applicable only on "HORIZONTAL" or "VERTICAL" auto-layout frames. Determines the canvas stacking order of layers in this frame. When true, the first layer will be draw on top.
gridRowCount: number
Applicable only on auto-layout frames with layoutMode
set to "GRID"
. Determines the number of rows in the grid.
gridColumnCount: number
Applicable only on auto-layout frames with layoutMode
set to "GRID"
. Determines the number of columns in the grid.
gridRowGap: number
Applicable only on auto-layout frames with layoutMode
set to "GRID"
. Determines the gap between rows in the grid.
gridColumnGap: number
Applicable only on auto-layout frames with layoutMode
set to "GRID"
. Determines the gap between columns in the grid.
gridRowSizes: Array<GridTrackSize>
Only applicable on auto-layout frames with layoutMode
set to "GRID"
.
Returns an array of GridTrackSize
objects representing the rows in the grid in order.
gridColumnSizes: Array<GridTrackSize>
Only applicable on auto-layout frames with layoutMode
set to "GRID"
.
Returns an array of GridTrackSize
objects representing the columns in the grid in order.
appendChildAt(node: SceneNode, rowIndex: number, columnIndex: number): void
Applicable only on auto-layout frames with layoutMode
set to "GRID"
.
Appends a node to the grid at the specified row and column index.
devStatus: DevStatus
Whether the node is marked ready for development or completed.
There are some restrictions on how devStatus
can be set:
- Can only be set on a node directly under a page or section
- Cannot be set on a node that is inside another node that already has a
devStatus
Annotation properties
annotations: ReadonlyArray<Annotation>
Annotations on the node.
Learn more about annotations in the Help Center or see the Annotation type for usage examples.
Container-related properties
expanded: boolean
Whether this container is shown as expanded in the layers panel.
backgrounds: ReadonlyArray<Paint>
DEPRECATED: Use fills
instead.
backgroundStyleId: string
DEPRECATED: Use fillStyleId
instead. This property is read-only if the manifest contains "documentAccess": "dynamic-page"
.
Geometry-related properties
fills: ReadonlyArray<Paint> | figma.mixed
The paints used to fill the area of the shape. For help on how to change this value, see Editing Properties.
fillStyleId: string | figma.mixed
The id of the PaintStyle
object that the fills
property of this node is linked to.
If the manifest contains"documentAccess": "dynamic-page"
, this property is read-only. Use setFillStyleIdAsync
to update the style.
setFillStyleIdAsync(styleId: string): Promise<void>
Sets the PaintStyle
that the fills
property of this node is linked to.
strokes: ReadonlyArray<Paint>
The paints used to fill the area of the shape's strokes. For help on how to change this value, see Editing Properties.
strokeStyleId: string
The id of the PaintStyle
object that the strokes
property of this node is linked to.
If the manifest contains"documentAccess": "dynamic-page"
, this property is read-only. Use setStrokeStyleIdAsync
to update the style.
setStrokeStyleIdAsync(styleId: string): Promise<void>
Set the PaintStyle
that the strokes
property of this node is linked to.
strokeWeight: number | figma.mixed
The thickness of the stroke, in pixels. This value must be non-negative and can be fractional.
For rectangle nodes or frame-like nodes using different individual stroke weights, this property will return figma.mixed
.
For rectangle nodes or frame-like nodes, individual stroke weights can be set for each side using the following properties:
strokeJoin: StrokeJoin | figma.mixed
The decoration applied to vertices which have two or more connected segments.
strokeAlign: 'CENTER' | 'INSIDE' | 'OUTSIDE'
The alignment of the stroke with respect to the boundaries of the shape.
dashPattern: ReadonlyArray<number>
A list of numbers specifying alternating dash and gap lengths, in pixels.
strokeGeometry: VectorPaths [readonly]
An array of paths representing the object strokes relative to the node.
StrokeGeometry is always from the center regardless of the nodes strokeAlign
.
strokeCap: StrokeCap | figma.mixed
The decoration applied to vertices which have only one connected segment.
strokeMiterLimit: number
The miter limit on the stroke. This is the same as the SVG miter limit.
outlineStroke(): VectorNode | null
This method performs an action similar to using the "Outline Stroke" function in the editor from the right-click menu. However, this method creates and returns a new node while leaving the original intact. Returns null
if the node has no strokes.
fillGeometry: VectorPaths [readonly]
An array of paths representing the object fills relative to the node.
Corner-related properties
cornerRadius: number | figma.mixed
The number of pixels to round the corners of the object by.
cornerSmoothing: number
A value that lets you control how "smooth" the corners are. Ranges from 0 to 1.
topLeftRadius: number
topRightRadius: number
bottomLeftRadius: number
bottomRightRadius: number
You can set individual corner radius of each of the four corners of a rectangle node or frame-like node. Similar to cornerRadius
, these value must be non-negative and can be fractional. If an edge length is less than twice the corner radius, the corner radius for each vertex of the edge will be clamped to half the edge length.
Setting cornerRadius
sets the property for all four corners. Setting these corners to different values makes cornerRadius
return mixed
.
Individual strokes-related properties
You can set individual stroke weights for each of the four sides of a rectangle node or frame-like node. Similar to strokeWeight, these values must be non-negative and can be fractional. To hide a side, set the value to 0.
Setting strokeWeight sets the same value for all four sides.
strokeTopWeight: number
Determines the top stroke weight on a rectangle node or frame-like node. Must be non-negative and can be fractional.
strokeBottomWeight: number
Determines the bottom stroke weight on a rectangle node or frame-like node. Must be non-negative and can be fractional.
strokeLeftWeight: number
Determines the left stroke weight on a rectangle node or frame-like node. Must be non-negative and can be fractional.
strokeRightWeight: number
Determines the right stroke weight on a rectangle node or frame-like node. Must be non-negative and can be fractional.
Blend-related properties
opacity: number
Opacity of the node, as shown in the Layer panel. Must be between 0 and 1.
blendMode: BlendMode
Blend mode of this node, as shown in the Layer panel. In addition to the blend modes that paints & effects support, the layer blend mode can also have the value PASS_THROUGH.
isMask: boolean
Whether this node is a mask. A mask node masks its subsequent siblings.
maskType: MaskType
Type of masking to use if this node is a mask. Defaults to "ALPHA"
. You must check isMask
to verify that this is a mask; changing maskType
does not automatically turn on isMask
, and a node that is not a mask can still have a maskType
.
effects: ReadonlyArray<Effect>
Array of effects. See Effect
type. For help on how to change this value, see Editing Properties.
effectStyleId: string
The id of the EffectStyle
object that the properties of this node are linked to.
If the manifest contains"documentAccess": "dynamic-page"
, this property is read-only. Use setEffectStyleIdAsync
to update the style.
setEffectStyleIdAsync(styleId: string): Promise<void>
Set the EffectStyle
that the properties of this node are linked to.
Layout-related properties
x: number
The position of the node. Identical to relativeTransform[0][2]
.
y: number
The position of the node. Identical to relativeTransform[1][2]
.
width: number [readonly]
The width of the node. Use a resizing method to change this value.
height: number [readonly]
The height of the node. Use a resizing method to change this value.
minWidth: number | null
Applicable only to auto-layout frames and their direct children. Value must be positive. Set to null
to remove minWidth
.
maxWidth: number | null
Applicable only to auto-layout frames and their direct children. Value must be positive. Set to null
to remove maxWidth
.
minHeight: number | null
Applicable only to auto-layout frames and their direct children. Value must be positive. Set to null to remove minHeight
.
maxHeight: number | null
Applicable only to auto-layout frames and their direct children. Value must be positive. Set to null
to remove maxHeight
.
relativeTransform: Transform
The position of a node relative to its containing parent as a Transform
matrix. Not used for scaling, see width
and height
instead. Read the details page to understand the nuances of this property.
absoluteTransform: Transform [readonly]
The position of a node relative to its containing page as a Transform
matrix.
absoluteBoundingBox: Rect | null [readonly]
The bounds of the node that does not include rendered properties like drop shadows or strokes. The x
and y
inside this property represent the absolute position of the node on the page.
layoutAlign: 'MIN' | 'CENTER' | 'MAX' | 'STRETCH' | 'INHERIT'
Applicable only on direct children of auto-layout frames. Determines if the layer should stretch along the parent’s counter axis. Defaults to “INHERIT”
.
layoutGrow: number
This property is applicable only for direct children of auto-layout frames. Determines whether a layer should stretch along the parent’s primary axis. 0 corresponds to a fixed size and 1 corresponds to stretch.
layoutPositioning: 'AUTO' | 'ABSOLUTE'
This property is applicable only for direct children of auto-layout frames. Determines whether a layer's size and position should be dermined by auto-layout settings or manually adjustable.
setGridChildPosition(rowIndex: number, columnIndex: number): void
Applicable only on direct children of 'GRID' auto-layout frames. Sets the position of the node
gridRowAnchorIndex: number [readonly]
Applicable only on direct children of grid auto-layout frames. Determines the starting row index for this node within the parent grid.
gridColumnAnchorIndex: number [readonly]
Applicable only on direct children of grid auto-layout frames. Determines the starting column index for this node within the parent grid.
gridRowSpan: number
Applicable only on direct children of grid auto-layout frames. Determines the number of rows this node will span within the parent grid.
gridColumnSpan: number
Applicable only on direct children of grid auto-layout frames. Determines the number of columns this node will span within the parent grid.
gridChildHorizontalAlign: 'MIN' | 'CENTER' | 'MAX' | 'AUTO'
Applicable only on direct children of grid auto-layout frames. Controls the horizontal alignment of the node within its grid cell.
gridChildVerticalAlign: 'MIN' | 'CENTER' | 'MAX' | 'AUTO'
Applicable only on direct children of grid auto-layout frames. Controls the vertical alignment of the node within its grid cell.
absoluteRenderBounds: Rect | null [readonly]
The actual bounds of a node accounting for drop shadows, thick strokes, and anything else that may fall outside the node's regular bounding box defined in x
, y
, width
, and height
. The x
and y
inside this property represent the absolute position of the node on the page. This value will be null
if the node is invisible.
constrainProportions: boolean
DEPRECATED: Use targetAspectRatio
, lockAspectRatio
, and unlockAspectRatio
instead.
When toggled, causes the layer to keep its proportions when the user resizes it via the properties panel.
rotation: number
The rotation of the node in degrees. Returns values from -180 to 180. Identical to Math.atan2(-m10, m00)
in the relativeTransform
matrix. When setting rotation
, it will also set m00
, m01
, m10
, m11
.
layoutSizingHorizontal: 'FIXED' | 'HUG' | 'FILL'
Applicable only on auto-layout frames, their children, and text nodes. This is a shorthand for setting layoutGrow
, layoutAlign
, primaryAxisSizingMode
, and counterAxisSizingMode
. This field maps directly to the "Horizontal sizing" dropdown in the Figma UI.
layoutSizingVertical: 'FIXED' | 'HUG' | 'FILL'
Applicable only on auto-layout frames, their children, and text nodes. This is a shorthand for setting layoutGrow
, layoutAlign
, primaryAxisSizingMode
, and counterAxisSizingMode
. This field maps directly to the "Vertical sizing" dropdown in the Figma UI.
resize(width: number, height: number): void
Resizes the node. If the node contains children with constraints, it applies those constraints during resizing. If the parent has auto-layout, causes the parent to be resized.
resizeWithoutConstraints(width: number, height: number): void
Resizes the node. Children of the node are never resized, even if those children have constraints. If the parent has auto-layout, causes the parent to be resized (this constraint cannot be ignored).
rescale(scale: number): void
Rescales the node. This API function is the equivalent of using the Scale Tool from the toolbar.
constraints: Constraints
Constraints of this node relative to its containing FrameNode
, if any.
Lock aspect ratio properties
targetAspectRatio: Vector | null [readonly]
When toggled, causes the layer to keep its proportions when the user resizes it via auto layout, constraints, the properties panel, or on-canvas. If not set, the node does NOT resize toward a specific targetAspectRatio.
lockAspectRatio(): void
Locks the node's targetAspectRatio
to the current ratio of its width and height.
unlockAspectRatio(): void
Unlocks the node's targetAspectRatio
.
Export-related properties
exportSettings: ReadonlyArray<ExportSettings>
List of export settings stored on the node. For help on how to change this value, see Editing Properties.
exportAsync(settings?: ExportSettings): Promise<Uint8Array>
exportAsync(settings: ExportSettingsSVGString): Promise<string>
exportAsync(settings: ExportSettingsREST): Promise<Object>
Exports the node as an encoded image.
If the manifest contains "documentAccess": "dynamic-page"
, and the node is a PageNode
, you must first call loadAsync
to access this function.
Component properties-related properties
componentPropertyDefinitions: ComponentPropertyDefinitions [readonly]
All component properties and their default values that exist on this component set. 'VARIANT'
properties will also have a list of all variant options. 'BOOLEAN'
, 'TEXT'
, and 'INSTANCE_SWAP'
properties will have their names suffixed by a unique identifier starting with '#'
, which is helpful for quickly distinguishing multiple component properties that have the same name in the Figma UI. The entire property name should be used for all Component property-related API methods and properties.
addComponentProperty(propertyName: string, type: ComponentPropertyType, defaultValue: string | boolean | VariableAlias, options?: ComponentPropertyOptions): string
Adds a new component property to this node and returns the property name with its unique identifier suffixed. This function supports properties with type 'BOOLEAN'
, 'TEXT'
, 'INSTANCE_SWAP'
or 'VARIANT'
.
editComponentProperty(propertyName: string, newValue: { name: string; defaultValue: string | boolean | VariableAlias; preferredValues: InstanceSwapPreferredValue[] }): string
Modifies the name, default value, or preferred values of an existing component property on this node and returns the property name with its unique identifier suffixed.
This function supports properties with type 'BOOLEAN'
, 'TEXT'
, 'INSTANCE_SWAP'
, or 'VARIANT'
with the following restrictions:
name
is supported for all propertiesdefaultValue
is supported for'BOOLEAN'
,'TEXT'
, and'INSTANCE_SWAP'
properties, but not for'VARIANT'
propertiespreferredValues
is only supported for'INSTANCE_SWAP'
properties
deleteComponentProperty(propertyName: string): void
Deletes an existing component property on this node. This function only supports properties with type 'BOOLEAN'
, 'TEXT'
, or 'INSTANCE_SWAP'
.