plugin-typings icon indicating copy to clipboard operation
plugin-typings copied to clipboard

[Request] Add MinimalEffectsMixin interface for consistency

Open andreincu opened this issue 9 months ago • 4 comments

This is a feature request for adding MinimalEffectsMixin for being consistent with the rest, plus adding the ability to extract nodes that support effects.

Before:
interface BlendMixin extends MinimalBlendMixin {
  isMask: boolean
  maskType: MaskType
  effects: ReadonlyArray<Effect>
  effectStyleId: string
  setEffectStyleIdAsync(styleId: string): Promise<void>
}
After:
interface MinimalEffectsMixin {
  effects: ReadonlyArray<Effect>
  effectStyleId: string
  setEffectStyleIdAsync(styleId: string): Promise<void>
}
  
interface BlendMixin extends MinimalBlendMixin, MinimalEffectsMixin {
  isMask: boolean
  maskType: MaskType
}

This will allow doing the following:

type NodeWithEffects = Extract<SceneNode, MinimalBlendMixin>
// Output: type NodeWithEffects = FrameNode | GroupNode | ComponentSetNode | ComponentNode | InstanceNode | BooleanOperationNode | VectorNode | StarNode | LineNode | EllipseNode | PolygonNode | RectangleNode | TextNode | StampNode | HighlightNode | WashiTapeNode

https://github.com/figma/plugin-typings/blob/67cdb4a189db19caa1d4e5f87971e7a3931e273b/plugin-api.d.ts#L1626C1-L1627C24

andreincu avatar May 01 '24 19:05 andreincu