mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-12 08:54:00 +02:00
30 lines
720 B
TypeScript
30 lines
720 B
TypeScript
|
let eventHandlerIndex_ = 1;
|
||
|
|
||
|
export interface EventHandlers {
|
||
|
[key:string]: Function;
|
||
|
}
|
||
|
|
||
|
export default function mapEventHandlersToIds(arg:any, eventHandlers:EventHandlers) {
|
||
|
if (Array.isArray(arg)) {
|
||
|
for (let i = 0; i < arg.length; i++) {
|
||
|
arg[i] = mapEventHandlersToIds(arg[i], eventHandlers);
|
||
|
}
|
||
|
return arg;
|
||
|
} else if (typeof arg === 'function') {
|
||
|
const id = `___plugin_event_${eventHandlerIndex_}`;
|
||
|
eventHandlerIndex_++;
|
||
|
eventHandlers[id] = arg;
|
||
|
return id;
|
||
|
} else if (arg === null) {
|
||
|
return null;
|
||
|
} else if (arg === undefined) {
|
||
|
return undefined;
|
||
|
} else if (typeof arg === 'object') {
|
||
|
for (const n in arg) {
|
||
|
arg[n] = mapEventHandlersToIds(arg[n], eventHandlers);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return arg;
|
||
|
}
|