UNPKG

zeplin-extension-style-kit

Version:

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

40 lines (30 loc) 1 kB
import { StyleDeclaration } from "./common.js"; const rules = Object.freeze({ FONT_FACE: "font-face" }); export class AtRule { identifier: string; private declarationMap: Record<string, StyleDeclaration>; constructor(identifier: string, declarations: StyleDeclaration[] = []) { this.identifier = identifier; this.declarationMap = {}; declarations.forEach(declaration => { this.declarationMap[declaration.name] = declaration; }); } static get Rule() { return rules; } get declarations(): StyleDeclaration[] { return Object.values(this.declarationMap); } 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]; } }