mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
45 lines
1.3 KiB
JavaScript
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; |