DocumentNode

DocumentNode 是整个 MasterGo 文件的根节点,它对应整个 MasterGo 文件,不存在真实的图层与之对应。所有页面节点和图层节点都需要通过 DocumentNode 根节点来访问。该节点的所有直接子节点一定是页面节点(即 PageNode)。可以通过 mg.document 来访问根节点:

const root = mg.document // DocumentNode
const pages = root.children // PageNode[]

Base node properties

id

  • Readonly: true
  • Type: number

当前文档的 ID。

type

  • Readonly: true
  • Type: 'DOCUMENT'

代表该节点的类型。

name

  • Readonly: true
  • Type: string

当前文件的名称。

currentPage

  • Type: PageNode

获取当前页面节点。

children

  • Readonly: true
  • Type: ReadonlyArray<PageNode>

当前节点的子节点。对于 DocumentNode 来说,它的所有子节点都是页面节点,即 PageNode

findAll

  • Type: findAll(callback?: (node: SceneNode) => boolean): ReadonlyArray<SceneNode>

查找整个节点树,对每个节点调用 callback 函数,并返回所有对于 callback 函数的返回值为 true 的节点。例如,查找所有矩形节点:

const rectNodes = mg.document.findAll((node) => node.type === 'RECTANGLE')

需要注意的是,对于 DocumentNode 来说,其 findAll 方法将不会查找页面节点。因为你总是可以用更快速的办法访问或查找特定的页面节点,例如:

mg.document.children // 所有页面节点
mg.document.children.filter(cb) // 过滤出特定的页面节点

findOne

  • Type: findOne(callback: (node: SceneNode) => boolean): SceneNode | null

查找整个节点树,对每个节点调用 callback 函数,并返回第一个对于 callback 函数的返回值为 true 的节点。例如,查找第一个遇到的矩形节点:

const rectNode = mg.document.findOne((node) => node.type === 'RECTANGLE')

WARNING

需要注意,与 findAll 方法一样,findOne 方法也不会对页面节点进行查找。

findAllWithCriteria

  • Type: findAllWithCriteria<T extends NodeType[]>(criteria: { types: T }): Array<{ type: T[number] } & SceneNode>

查找整个节点树,返回所有类型符合的节点。

const nodes = mg.document.findAllWithCriteria({types: ['FRAME', 'COMPONENT']})