UNPKG

zeplin-extension-style-kit

Version:

Models and utilities to generate CSS-like style code in Zeplin extensions.

32 lines (24 loc) 920 B
import { StyleDeclaration } from "./common.js"; export class RuleSet { selector: string; private declarationMap: Record<string, StyleDeclaration>; constructor(selector: string, declarations: StyleDeclaration[] = []) { this.selector = selector; this.declarationMap = {}; declarations.forEach(declaration => { this.declarationMap[declaration.name] = declaration; }); } get declarations(): StyleDeclaration[] { return Object.keys(this.declarationMap).map(name => this.declarationMap[name]); } hasProperty(property: string): boolean { return property in this.declarationMap; } addDeclaration(declaration: StyleDeclaration): void { this.declarationMap[declaration.name] = declaration; } removeDeclaration(declaration: StyleDeclaration): void { delete this.declarationMap[declaration.name]; } }