less
Version:
Leaner CSS
38 lines (35 loc) • 870 B
JavaScript
var SetTreeVisibilityVisitor = function(visible) {
this.visible = visible;
};
SetTreeVisibilityVisitor.prototype.run = function(root) {
this.visit(root);
};
SetTreeVisibilityVisitor.prototype.visitArray = function(nodes) {
if (!nodes) {
return nodes;
}
var cnt = nodes.length, i;
for (i = 0; i < cnt; i++) {
this.visit(nodes[i]);
}
return nodes;
};
SetTreeVisibilityVisitor.prototype.visit = function(node) {
if (!node) {
return node;
}
if (node.constructor === Array) {
return this.visitArray(node);
}
if (!node.blocksVisibility || node.blocksVisibility()) {
return node;
}
if (this.visible) {
node.ensureVisibility();
} else {
node.ensureInvisibility();
}
node.accept(this);
return node;
};
module.exports = SetTreeVisibilityVisitor;