marko
Version:
UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.
44 lines (36 loc) • 1.06 kB
JavaScript
;
const copyProps = require("raptor-util/copyProps");
const constructorCache = new Map();
const BaseServerComponent = require("../../../runtime/components/ServerComponent");
function createServerComponentClass(renderingLogic) {
var renderingLogicProps =
typeof renderingLogic === "function" ?
renderingLogic.prototype :
renderingLogic;
class ServerComponent extends BaseServerComponent {}
copyProps(renderingLogicProps, ServerComponent.prototype);
return ServerComponent;
}
function createComponent(
renderingLogic,
id,
input,
out,
typeName,
customEvents,
scope)
{
let ServerComponent;
if (renderingLogic) {
ServerComponent = constructorCache.get(renderingLogic);
if (!ServerComponent) {
ServerComponent = createServerComponentClass(renderingLogic);
constructorCache.set(renderingLogic, ServerComponent);
}
} else {
ServerComponent = BaseServerComponent;
}
return new ServerComponent(id, input, out, typeName, customEvents, scope);
}
exports._L_ = true;
exports._I_ = createComponent;