zeplin-extension-style-kit
Version:
Models and utilities to generate CSS-like style code in Zeplin extensions.
32 lines (24 loc) • 920 B
text/typescript
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];
}
}