MCPcopy Create free account
hub / github.com/GrapesJS/react / initPlugins

Function initPlugins

packages/grapesjs-react/src/utils/plugins.ts:41–78  ·  view source on GitHub ↗
(plugins: PluginTypeToLoad[])

Source from the content-addressed store, hash-verified

39}
40
41export const initPlugins = async (plugins: PluginTypeToLoad[]) => {
42 const pluginsToInit = [...plugins];
43 const pluginOptions: PluginToLoad['options'] = {};
44
45 if (pluginsToInit.length) {
46 const pluginToLoadMap: Record<string, { index: number; loaded?: boolean }> = {};
47 const pluginsToLoad: PluginToLoad[] = [];
48
49 pluginsToInit.forEach((plugin, index) => {
50 if (isPluginToLoad(plugin)) {
51 pluginToLoadMap[plugin.id] = { index };
52 pluginsToLoad.push(plugin);
53 }
54 });
55
56 if (pluginsToLoad.length) {
57 const { loaded } = await loadPlugins(pluginsToLoad);
58 loaded.forEach(({ id, options }) => {
59 pluginToLoadMap[id].loaded = true;
60 pluginOptions[id] = options || {};
61 });
62 }
63
64 Object.keys(pluginToLoadMap).forEach(id => {
65 const plugin = pluginToLoadMap[id];
66 if (plugin.loaded) {
67 pluginsToInit[plugin.index] = id;
68 } else {
69 pluginsToInit[plugin.index] = false;
70 }
71 });
72 }
73
74 return {
75 plugins: pluginsToInit.filter(Boolean) as GrapesPlugins[],
76 pluginOptions
77 };
78};

Callers 1

initFunction · 0.90

Calls 2

isPluginToLoadFunction · 0.85
loadPluginsFunction · 0.85

Tested by

no test coverage detected