snabbdom
Version:
A virtual DOM library with focus on simplicity, modularity, powerful features and performance.
44 lines • 1.64 kB
JavaScript
;
var vnode_1 = require("./vnode");
var htmldomapi_1 = require("./htmldomapi");
function toVNode(node, domApi) {
var api = domApi !== undefined ? domApi : htmldomapi_1.default;
var text;
if (api.isElement(node)) {
var id = node.id ? '#' + node.id : '';
var cn = node.getAttribute('class');
var c = cn ? '.' + cn.split(' ').join('.') : '';
var sel = api.tagName(node).toLowerCase() + id + c;
var attrs = {};
var children = [];
var name_1;
var i = void 0, n = void 0;
var elmAttrs = node.attributes;
var elmChildren = node.childNodes;
for (i = 0, n = elmAttrs.length; i < n; i++) {
name_1 = elmAttrs[i].nodeName;
if (name_1 !== 'id' && name_1 !== 'class') {
attrs[name_1] = elmAttrs[i].nodeValue;
}
}
for (i = 0, n = elmChildren.length; i < n; i++) {
children.push(toVNode(elmChildren[i]));
}
return vnode_1.default(sel, { attrs: attrs }, children, undefined, node);
}
else if (api.isText(node)) {
text = api.getTextContent(node);
return vnode_1.default(undefined, undefined, undefined, text, undefined);
}
else if (api.isComment(node)) {
text = api.getTextContent(node);
return vnode_1.default('!', undefined, undefined, text, undefined);
}
else {
return vnode_1.default('', {}, [], undefined, undefined);
}
}
exports.toVNode = toVNode;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = toVNode;
//# sourceMappingURL=tovnode.js.map