UNPKG

marko

Version:

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

60 lines (46 loc) 1.75 kB
"use strict"; var GlobalComponentsContext = require("./GlobalComponentsContext"); function ComponentsContext(out, parentComponentsContext) { var globalComponentsContext; var componentDef; if (parentComponentsContext) { globalComponentsContext = parentComponentsContext.___globalContext; componentDef = parentComponentsContext.___componentDef; var nestedContextsForParent; if ( !(nestedContextsForParent = parentComponentsContext.___nestedContexts) ) { nestedContextsForParent = parentComponentsContext.___nestedContexts = []; } nestedContextsForParent.push(this); } else { globalComponentsContext = out.global.___components; if (globalComponentsContext === undefined) { out.global.___components = globalComponentsContext = new GlobalComponentsContext(out); } } this.___globalContext = globalComponentsContext; this.___components = []; this.___out = out; this.___componentDef = componentDef; this.___nestedContexts = undefined; this.___isPreserved = parentComponentsContext && parentComponentsContext.___isPreserved; } ComponentsContext.prototype = { ___initComponents: function (host) { var componentDefs = this.___components; ComponentsContext.___initClientRendered(componentDefs, host); this.___out.emit("___componentsInitialized"); // Reset things stored in global since global is retained for // future renders this.___out.global.___components = undefined; return componentDefs; }, }; function getComponentsContext(out) { return out.___components || (out.___components = new ComponentsContext(out)); } module.exports = exports = ComponentsContext; exports.___getComponentsContext = getComponentsContext;