ng2-tree-viewer
Version:
Angular 2 runtime console debugger
89 lines (88 loc) • 2.76 kB
JavaScript
;
var LogGroup = (function () {
function LogGroup(name) {
this.name = name;
this.messages = [];
this.inner = [];
}
LogGroup.prototype.child = function (name) {
var newChild = new LogGroup(name);
this.inner.push(newChild);
return newChild;
};
LogGroup.prototype.addMessage = function (msg) {
this.messages.push(msg);
return this;
};
LogGroup.prototype.emit = function () {
console.group(this.name);
this.messages.forEach(function (msg) {
console.log(msg);
});
this.inner.forEach(function (child) {
child.emit();
});
console.groupEnd();
};
return LogGroup;
}());
// global context
var context = window;
var Angular2TreeTool = (function () {
function Angular2TreeTool() {
}
Angular2TreeTool.prototype.buildTree = function () {
var _this = this;
var rootNodes;
if ("getAllAngularRootElements" in context) {
rootNodes = context.getAllAngularRootElements().map(function (el) { return ng.probe(el); });
}
else {
rootNodes = [this.findRoot()];
}
if (!rootNodes || rootNodes.length === 0) {
throw "Cannot find rootNodes ng2 element!";
}
var logger = new LogGroup("/");
rootNodes.forEach(function (rootNode) {
_this.walk(rootNode, logger);
logger.emit();
});
};
Angular2TreeTool.prototype.walk = function (el, logger) {
var _this = this;
if (!el) {
return;
}
var _logger = logger;
if (el.componentInstance) {
var name_1 = el.name || el.nativeElement.localName;
var cmpName = el.providerTokens[0].name;
_logger = logger.child("/" + name_1 + ": " + cmpName);
_logger.addMessage(el.nativeElement);
Object.keys(el.componentInstance).forEach(function (key) {
_logger.addMessage(key + ": " + el.componentInstance[key]);
});
}
el.children.forEach(function (child) {
_this.walk(child, _logger);
});
};
Angular2TreeTool.prototype.findRoot = function () {
var elements = document.body.children;
for (var i = 0; i < elements.length; i++) {
var el = ng.probe(elements.item(i));
if (el && el.componentInstance) {
return el;
}
}
};
return Angular2TreeTool;
}());
function enableNg2Tree() {
console.log("Let's execute `ng2tree();`");
context.ng2tree = function () {
new Angular2TreeTool().buildTree();
};
}
exports.enableNg2Tree = enableNg2Tree;