DocumentNode
The document node is the root node. There can only be one document node per browser tab, and each of its children must be a PageNode
.
Most plugins will not need to use this node unless they are creating new pages or performing a document-wide operation. In the latter case, it's recommended to only read and not write, as the user may not see the modifications made on a different page.
Document properties
type: 'DOCUMENT' [readonly]
The type of this node, represented by the string literal "DOCUMENT"
children: ReadonlyArray<PageNode> [readonly]
The list of children. For DocumentNode
s, children are always PageNode
s.
appendChild(child: PageNode): void
Adds a new page to the end of the children
array.
insertChild(index: number, child: PageNode): void
Adds a new page at the specified index in the children
array.
findChildren(callback?: (node: PageNode) => boolean): Array<PageNode>
Searches the immediate children of this node (i.e. all page nodes, not including their children). Returns all pages for which callback
returns true.
findChild(callback: (node: PageNode) => boolean): PageNode | null
Searches the immediate children of this node (i.e. all page nodes, not including their children). Returns the first page for which callback
returns true.
findAll(callback?: (node: PageNode | SceneNode) => boolean): Array<PageNode | SceneNode>
Searches the entire document tree. Returns all nodes for which callback
returns true.
findOne(callback: (node: PageNode | SceneNode) => boolean): PageNode | SceneNode | null
Searches this entire page (this node's children, its children's children, etc.). Returns the first node for which callback
returns true.
findAllWithCriteria<T extends NodeType[]>(criteria: { types: T }): Array<{ type: T[number] } & (PageNode | SceneNode)>
Searches the entire document tree. Returns all nodes that satisfy any of the types defined in the criteria.
View more →Base node properties
id: string [readonly]
An internal identifier for a node. Plugins typically don't need to use this since you can usually just access a node directly.
View more →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.
View more →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.
View more →remove(): void
Removes this node and all of its children from the document.
View more →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 {}
.
info
In Figma, 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
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.
View more →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.
View more →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.