UNPKG

marko

Version:

UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.

47 lines (41 loc) 1.31 kB
module.exports = function render(input, out) { var isComponent = !input.n; var shouldPreserve = !("i" in input) || input.i; var componentsContext = out.___components; var isHydrate = componentsContext && componentsContext.___globalContext.___isHydrate; var ownerComponent = out.___assignedComponentDef.___component; var referenceComponent = ownerComponent; var key = out.___assignedKey; var checkKey = key; if (key[0] !== "@") { var parentComponent = componentsContext.___componentDef.___component; if (ownerComponent !== parentComponent) { referenceComponent = parentComponent; checkKey += ":" + ownerComponent.id; } } var isPreserved = shouldPreserve && ((isHydrate && (isComponent || input.b)) || referenceComponent.___keyedElements[checkKey]); if (isComponent) { out.bf(key, ownerComponent, shouldPreserve); if (!isPreserved && input.renderBody) { input.renderBody(out); } out.ef(); } else { if (isPreserved) { if (input.b) { out.___parent.___preserveBody = true; } else { out.beginElement("", null, key, ownerComponent); out.___parent.___preserve = true; out.endElement(); } } else if (input.renderBody) { input.renderBody(out); } } };