2020-12-14 10:40:06 +00:00
|
|
|
RED.plugins = (function() {
|
|
|
|
var plugins = {};
|
|
|
|
var pluginsByType = {};
|
|
|
|
|
|
|
|
function registerPlugin(id,definition) {
|
|
|
|
plugins[id] = definition;
|
|
|
|
if (definition.type) {
|
|
|
|
pluginsByType[definition.type] = pluginsByType[definition.type] || [];
|
|
|
|
pluginsByType[definition.type].push(definition);
|
|
|
|
}
|
2021-01-20 15:35:44 +00:00
|
|
|
if (RED._loadingModule) {
|
|
|
|
definition.module = RED._loadingModule;
|
|
|
|
definition["_"] = function() {
|
|
|
|
var args = Array.prototype.slice.call(arguments);
|
|
|
|
var originalKey = args[0];
|
|
|
|
if (!/:/.test(args[0])) {
|
|
|
|
args[0] = definition.module+":"+args[0];
|
|
|
|
}
|
|
|
|
var result = RED._.apply(null,args);
|
|
|
|
if (result === args[0]) {
|
|
|
|
return originalKey;
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
definition["_"] = RED["_"]
|
|
|
|
}
|
2020-12-14 10:40:06 +00:00
|
|
|
if (definition.onadd && typeof definition.onadd === 'function') {
|
|
|
|
definition.onadd();
|
|
|
|
}
|
|
|
|
RED.events.emit("registry:plugin-added",id);
|
|
|
|
}
|
|
|
|
|
|
|
|
function getPlugin(id) {
|
|
|
|
return plugins[id]
|
|
|
|
}
|
|
|
|
|
|
|
|
function getPluginsByType(type) {
|
|
|
|
return pluginsByType[type] || [];
|
|
|
|
}
|
|
|
|
return {
|
|
|
|
registerPlugin: registerPlugin,
|
|
|
|
getPlugin: getPlugin,
|
|
|
|
getPluginsByType: getPluginsByType
|
|
|
|
}
|
|
|
|
})();
|