marko/components/taglib/component-tag.js
2017-02-20 16:17:40 -07:00

32 lines
958 B
JavaScript

'use strict';
var BIND_WIDGET_KEY = Symbol();
module.exports = function codeGenerator(el, codegen) {
var builder = codegen.builder;
var context = codegen.context;
var bodyFunc = builder.renderBodyFunction(el.body, [
builder.identifierOut(),
builder.identifier('widget'),
builder.identifier('state')
]);
var widgetProps = el.getAttributeValue('props');
var bindWidgetVar = context.addStaticVar('marko_bindWidget',
builder.require(
builder.literal('marko/widgets/taglib/helpers/bindWidget')));
if (context.data[BIND_WIDGET_KEY] == null) {
context.data[BIND_WIDGET_KEY] = 0;
}
var varName = context.addStaticVar(
'marko_bindWidget' + (context.data[BIND_WIDGET_KEY]++),
builder.functionCall(bindWidgetVar, [
widgetProps
]));
return builder.functionCall(varName, [bodyFunc, builder.identifierOut()]);
};