1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-30 10:36:35 +02:00
joplin/ReactNativeClient/lib/services/plugins/utils/mapEventHandlersToIds.ts

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;
}