marko
Version:
UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.
46 lines (41 loc) • 1.15 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_._Y_;
var ownerComponent = out._Z_.s_;
var referenceComponent = ownerComponent;
var key = out.a__;
var checkKey = key;
if (key[0] !== "@") {
var parentComponent = componentsContext.o_.s_;
if (ownerComponent !== parentComponent) {
referenceComponent = parentComponent;
checkKey += ":" + ownerComponent.id;
}
}
var isPreserved =
shouldPreserve && (
isComponent && isHydrate ||
referenceComponent.K_[checkKey]);
if (isComponent) {
out.bf(key, ownerComponent, shouldPreserve);
if (!isPreserved && input.renderBody) {
input.renderBody(out);
}
out.ef();
} else {
if (isPreserved) {
if (input.b) {
out.aa_.ab_ = true;
} else {
out.beginElement("", null, key, ownerComponent);
out.aa_.ac_ = true;
out.endElement();
}
} else if (input.renderBody) {
input.renderBody(out);
}
}
};