import cssesc from 'cssesc';
import {ensureObject} from '../util';
import Node from './node';
export default class Namespace extends Node {
get namespace () {
return this._namespace;
}
set namespace (namespace) {
if (namespace === true || namespace === "*" || namespace === "&") {
this._namespace = namespace;
if (this.raws) {
delete this.raws.namespace;
}
return;
}
let escaped = cssesc(namespace, {isIdentifier: true});
this._namespace = namespace;
if (escaped !== namespace) {
ensureObject(this, "raws");
this.raws.namespace = escaped;
} else if (this.raws) {
delete this.raws.namespace;
}
}
get ns () {
return this._namespace;
}
set ns (namespace) {
this.namespace = namespace;
}
get namespaceString () {
if (this.namespace) {
let ns = this.stringifyProperty("namespace");
if (ns === true) {
return '';
} else {
return ns;
}
} else {
return '';
}
}
qualifiedName (value) {
if (this.namespace) {
return `${this.namespaceString}|${value}`;
} else {
return value;
}
}
valueToString () {
return this.qualifiedName(super.valueToString());
}
};