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;
|