import Attributor from './attributor'; function camelize(name: string): string { let parts = name.split('-'); let rest = parts .slice(1) .map(function(part: string) { return part[0].toUpperCase() + part.slice(1); }) .join(''); return parts[0] + rest; } class StyleAttributor extends Attributor { static keys(node: Element): string[] { return (node.getAttribute('style') || '').split(';').map(function(value) { let arr = value.split(':'); return arr[0].trim(); }); } add(node: HTMLElement, value: string): boolean { if (!this.canAdd(node, value)) return false; // @ts-ignore node.style[camelize(this.keyName)] = value; return true; } remove(node: HTMLElement): void { // @ts-ignore node.style[camelize(this.keyName)] = ''; if (!node.getAttribute('style')) { node.removeAttribute('style'); } } value(node: HTMLElement): string { // @ts-ignore let value = node.style[camelize(this.keyName)]; return this.canAdd(node, value) ? value : ''; } } export default StyleAttributor;