marko
Version:
UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.
46 lines (41 loc) • 1.16 kB
JavaScript
;module.exports = function render(input, out) {
var isComponent = !input.n;
var shouldPreserve = !("i" in input) || input.i;
var componentsContext = out.b_;
var isHydrate =
componentsContext && componentsContext.p_.aa_;
var ownerComponent = out.ab_.s_;
var referenceComponent = ownerComponent;
var key = out.ac_;
var checkKey = key;
if (key[0] !== "@") {
var parentComponent = componentsContext.o_.s_;
if (ownerComponent !== parentComponent) {
referenceComponent = parentComponent;
checkKey += ":" + ownerComponent.id;
}
}
var isPreserved =
shouldPreserve && (
isHydrate && (isComponent || input.b) ||
referenceComponent.L_[checkKey]);
if (isComponent) {
out.bf(key, ownerComponent, shouldPreserve);
if (!isPreserved && input.renderBody) {
input.renderBody(out);
}
out.ef();
} else {
if (isPreserved) {
if (input.b) {
out.ad_.ae_ = true;
} else {
out.beginElement("", null, key, ownerComponent);
out.ad_.af_ = true;
out.endElement();
}
} else if (input.renderBody) {
input.renderBody(out);
}
}
};