marko/components/util.js
2017-02-20 16:30:16 -07:00

45 lines
1.3 KiB
JavaScript

var KEY = Symbol();
var isArray = Array.isArray;
function UniqueId(out) {
this.prefix = out.global.componentIdPrefix || 'w';
this.nextId = 0;
}
function nextComponentId(out) {
var global = out.global;
var idProvider = global[KEY] ||
(global[KEY] = new UniqueId(out));
return idProvider.prefix + (idProvider.nextId++);
}
function attachBubblingEvent(componentDef, handlerMethodName, extraArgs) {
if (handlerMethodName) {
if (extraArgs) {
var bubblingDomEvents = componentDef.$__bubblingDomEvents ||
( componentDef.$__bubblingDomEvents = [] );
var eventIndex = bubblingDomEvents.length;
if (extraArgs.length === 1) {
var firstArg = extraArgs[0];
if (isArray(firstArg)) {
bubblingDomEvents.push(extraArgs);
} else {
bubblingDomEvents.push(firstArg);
}
} else {
bubblingDomEvents.push(extraArgs);
}
return handlerMethodName + ' ' + componentDef.id + ' ' + eventIndex;
} else {
return handlerMethodName + ' ' + componentDef.id;
}
}
}
exports.$__nextComponentId = nextComponentId;
exports.$__server = true;
exports.$__attachBubblingEvent = attachBubblingEvent;