UNPKG

@tokens-studio/graph-engine-nodes-figma

Version:

Figma-specific nodes for the graph engine

66 lines 2.29 kB
import { Node } from '@tokens-studio/graph-engine'; import { TokenSchema } from '@tokens-studio/graph-engine-nodes-design-tokens/schemas/index.js'; import { mergeTokenExtensions } from '../utils/tokenMerge.js'; export default class NodeDefinition extends Node { static title = 'Scope By Type'; static type = 'studio.tokens.figma.scopeByType'; static description = 'Automatically sets Figma scopes based on token type'; constructor(props) { super(props); this.addInput('token', { type: { ...TokenSchema, description: 'The design token to automatically scope' } }); this.addOutput('token', { type: TokenSchema }); } getScopesByType(token) { switch (token.type) { case 'color': return ['ALL_FILLS', 'STROKE_COLOR', 'EFFECT_COLOR']; case 'dimension': return [ 'GAP', 'WIDTH_HEIGHT', 'CORNER_RADIUS', 'STROKE_FLOAT', 'EFFECT_FLOAT', 'PARAGRAPH_INDENT' ]; case 'spacing': return ['GAP', 'WIDTH_HEIGHT']; case 'borderRadius': return ['CORNER_RADIUS']; case 'fontFamilies': return ['FONT_FAMILY']; case 'fontWeights': return ['FONT_WEIGHT']; case 'fontSizes': return ['FONT_SIZE']; case 'lineHeights': return ['LINE_HEIGHT']; case 'letterSpacing': return ['LETTER_SPACING']; case 'paragraphSpacing': return ['PARAGRAPH_SPACING']; case 'opacity': return ['OPACITY']; case 'sizing': return ['WIDTH_HEIGHT']; default: return []; } } execute() { const { token } = this.getAllInputs(); const newScopes = this.getScopesByType(token); const modifiedToken = mergeTokenExtensions(token, { scopes: newScopes }); this.outputs.token.set(modifiedToken); } } //# sourceMappingURL=scopeByType.js.map