'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.typeName = typeName;
exports.spaces = spaces;
exports.indent = indent;
exports.debugNode = debugNode;
exports.debugNodes = debugNodes;
var _ShallowTraversal = require('./ShallowTraversal');
var _Utils = require('./Utils');
var _underscore = require('underscore');
function typeName(node) {
return typeof node.type === 'function' ? node.type.displayName || 'Component' : node.type;
}
function spaces(n) {
return Array(n + 1).join(' ');
}
function indent(depth, string) {
return string.split('\n').map(function (x) {
return '' + spaces(depth) + x;
}).join('\n');
}
function propString(prop) {
switch (typeof prop) {
case 'function':
return '{[Function]}';
case 'string':
return '"' + prop + '"';
case 'number':
case 'boolean':
return '{' + prop + '}';
case 'object':
return '{{...}}';
default:
return '{[' + typeof prop + ']}';
}
}
function propsString(node) {
var props = (0, _Utils.propsOfNode)(node);
var keys = (0, _underscore.without)(Object.keys(props), 'children');
return keys.map(function (key) {
return key + '=' + propString(props[key]);
}).join(' ');
}
function debugNode(node) {
var indentLength = arguments.length <= 1 || arguments[1] === undefined ? 2 : arguments[1];
if (!node) return '';
if (typeof node === 'string') return (0, _underscore.escape)(node);
var children = (0, _underscore.compact)((0, _ShallowTraversal.childrenOfNode)(node).map(function (n) {
return debugNode(n, indentLength);
}));
var type = typeName(node);
var props = propsString(node);
var beforeProps = props ? ' ' : '';
var nodeClose = children.length ? '</' + type + '>' : '/>';
var afterProps = children.length ? '>' : ' ';
var childrenIndented = children.length ? '\n' + children.map(function (x) {
return indent(indentLength, x);
}).join('\n') + '\n' : '';
return '<' + type + beforeProps + props + afterProps + childrenIndented + nodeClose;
}
function debugNodes(nodes) {
return nodes.map(debugNode).join('\n\n\n');
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9sZWxhbmRfcmljaGFyZHNvbi9jb2RlL3JlYWdlbnQvc3JjL0RlYnVnLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O2dDQUVPLG9CQUFvQjs7cUJBR3BCLFNBQVM7OzBCQUN5QixZQUFZOztBQUU5QyxTQUFTLFFBQVEsQ0FBQyxJQUFJLEVBQUU7QUFDN0IsU0FBTyxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxHQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLEdBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUM7Q0FDZjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxDQUFDLEVBQUU7QUFDeEIsU0FBTyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUMvQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ3BDLFNBQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDO2dCQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0dBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUN2RTs7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUU7QUFDeEIsVUFBUSxPQUFPLElBQUk7QUFDbkIsU0FBSyxVQUFVO0FBQ2IsYUFBTyxjQUFjLENBQUM7QUFBQSxBQUN4QixTQUFLLFFBQVE7QUFDWCxtQkFBVyxJQUFJLE9BQUk7QUFBQSxBQUNyQixTQUFLLFFBQVEsQ0FBQztBQUNkLFNBQUssU0FBUztBQUNaLG1CQUFXLElBQUksT0FBSTtBQUFBLEFBQ3JCLFNBQUssUUFBUTtBQUNYLHVCQUFpQjtBQUFBLEFBQ25CO0FBQ0Usb0JBQVksT0FBTyxJQUFJLFFBQUs7QUFBQSxHQUM3QjtDQUNGOztBQUVELFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRTtBQUN6QixNQUFNLEtBQUssR0FBRyx3QkFBWSxJQUFJLENBQUMsQ0FBQztBQUNoQyxNQUFNLElBQUksR0FBRyx5QkFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ3JELFNBQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFBLEdBQUc7V0FBTyxHQUFHLFNBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDdEU7O0FBRU0sU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFvQjtNQUFsQixZQUFZLHlEQUFHLENBQUM7O0FBQzlDLE1BQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDckIsTUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsT0FBTyx3QkFBTyxJQUFJLENBQUMsQ0FBQzs7QUFFbEQsTUFBTSxRQUFRLEdBQUcseUJBQVEsc0NBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQztXQUFJLFNBQVMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDO0dBQUEsQ0FBQyxDQUFDLENBQUM7QUFDcEYsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQyxNQUFNLFdBQVcsR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNyQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxVQUFRLElBQUksU0FBTSxJQUFJLENBQUM7QUFDeEQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FDOUIsR0FBRyxHQUNILEdBQUcsQ0FBQztBQUNSLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FDcEMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDO1dBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7R0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksR0FDbkUsRUFBRSxDQUFDO0FBQ1AsZUFBVyxJQUFJLEdBQUcsV0FBVyxHQUFHLEtBQUssR0FBRyxVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsU0FBUyxDQUFHO0NBQ3JGOztBQUVNLFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRTtBQUNoQyxTQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0NBQzVDIiwiZmlsZSI6Ii9Vc2Vycy9sZWxhbmRfcmljaGFyZHNvbi9jb2RlL3JlYWdlbnQvc3JjL0RlYnVnLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY2hpbGRyZW5PZk5vZGUsXG59IGZyb20gJy4vU2hhbGxvd1RyYXZlcnNhbCc7XG5pbXBvcnQge1xuICBwcm9wc09mTm9kZSxcbn0gZnJvbSAnLi9VdGlscyc7XG5pbXBvcnQgeyB3aXRob3V0LCBlc2NhcGUsIGNvbXBhY3QgfSBmcm9tICd1bmRlcnNjb3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVOYW1lKG5vZGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBub2RlLnR5cGUgPT09ICdmdW5jdGlvbidcbiAgICA/IChub2RlLnR5cGUuZGlzcGxheU5hbWUgfHwgJ0NvbXBvbmVudCcpXG4gICAgOiBub2RlLnR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGFjZXMobikge1xuICByZXR1cm4gQXJyYXkobiArIDEpLmpvaW4oJyAnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluZGVudChkZXB0aCwgc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcuc3BsaXQoJ1xcbicpLm1hcCh4ID0+IGAke3NwYWNlcyhkZXB0aCl9JHt4fWApLmpvaW4oJ1xcbicpO1xufVxuXG5mdW5jdGlvbiBwcm9wU3RyaW5nKHByb3ApIHtcbiAgc3dpdGNoICh0eXBlb2YgcHJvcCkge1xuICBjYXNlICdmdW5jdGlvbic6XG4gICAgcmV0dXJuICd7W0Z1bmN0aW9uXX0nO1xuICBjYXNlICdzdHJpbmcnOlxuICAgIHJldHVybiBgXCIke3Byb3B9XCJgO1xuICBjYXNlICdudW1iZXInOlxuICBjYXNlICdib29sZWFuJzpcbiAgICByZXR1cm4gYHske3Byb3B9fWA7XG4gIGNhc2UgJ29iamVjdCc6XG4gICAgcmV0dXJuIGB7ey4uLn19YDtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gYHtbJHt0eXBlb2YgcHJvcH1dfWA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvcHNTdHJpbmcobm9kZSkge1xuICBjb25zdCBwcm9wcyA9IHByb3BzT2ZOb2RlKG5vZGUpO1xuICBjb25zdCBrZXlzID0gd2l0aG91dChPYmplY3Qua2V5cyhwcm9wcyksICdjaGlsZHJlbicpO1xuICByZXR1cm4ga2V5cy5tYXAoa2V5ID0+IGAke2tleX09JHtwcm9wU3RyaW5nKHByb3BzW2tleV0pfWApLmpvaW4oJyAnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnTm9kZShub2RlLCBpbmRlbnRMZW5ndGggPSAyKSB7XG4gIGlmICghbm9kZSkgcmV0dXJuICcnO1xuICBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnKSByZXR1cm4gZXNjYXBlKG5vZGUpO1xuXG4gIGNvbnN0IGNoaWxkcmVuID0gY29tcGFjdChjaGlsZHJlbk9mTm9kZShub2RlKS5tYXAobiA9PiBkZWJ1Z05vZGUobiwgaW5kZW50TGVuZ3RoKSkpO1xuICBjb25zdCB0eXBlID0gdHlwZU5hbWUobm9kZSk7XG4gIGNvbnN0IHByb3BzID0gcHJvcHNTdHJpbmcobm9kZSk7XG4gIGNvbnN0IGJlZm9yZVByb3BzID0gcHJvcHMgPyAnICcgOiAnJztcbiAgY29uc3Qgbm9kZUNsb3NlID0gY2hpbGRyZW4ubGVuZ3RoID8gYDwvJHt0eXBlfT5gIDogJy8+JztcbiAgY29uc3QgYWZ0ZXJQcm9wcyA9IGNoaWxkcmVuLmxlbmd0aFxuICAgID8gJz4nXG4gICAgOiAnICc7XG4gIGNvbnN0IGNoaWxkcmVuSW5kZW50ZWQgPSBjaGlsZHJlbi5sZW5ndGhcbiAgICA/ICdcXG4nICsgY2hpbGRyZW4ubWFwKHggPT4gaW5kZW50KGluZGVudExlbmd0aCwgeCkpLmpvaW4oJ1xcbicpICsgJ1xcbidcbiAgICA6ICcnO1xuICByZXR1cm4gYDwke3R5cGV9JHtiZWZvcmVQcm9wc30ke3Byb3BzfSR7YWZ0ZXJQcm9wc30ke2NoaWxkcmVuSW5kZW50ZWR9JHtub2RlQ2xvc2V9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnTm9kZXMobm9kZXMpIHtcbiAgcmV0dXJuIG5vZGVzLm1hcChkZWJ1Z05vZGUpLmpvaW4oJ1xcblxcblxcbicpO1xufVxuIl19 |