Skip to content

Commit 5066104

Browse files
Copilothotlong
andcommitted
Add plugin-dashboard dependency and fix PluginLoader dynamic imports
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent 3c6962e commit 5066104

3 files changed

Lines changed: 46 additions & 22 deletions

File tree

apps/site/app/components/PluginLoader.tsx

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,6 @@ interface PluginLoaderProps {
2323
children: React.ReactNode;
2424
}
2525

26-
const pluginImports: Record<PluginName, () => Promise<any>> = {
27-
aggrid: () => import('@object-ui/plugin-aggrid'),
28-
editor: () => import('@object-ui/plugin-editor'),
29-
charts: () => import('@object-ui/plugin-charts'),
30-
dashboard: () => import('@object-ui/plugin-dashboard'),
31-
kanban: () => import('@object-ui/plugin-kanban'),
32-
markdown: () => import('@object-ui/plugin-markdown'),
33-
timeline: () => import('@object-ui/plugin-timeline'),
34-
calendar: () => import('@object-ui/plugin-calendar'),
35-
gantt: () => import('@object-ui/plugin-gantt'),
36-
map: () => import('@object-ui/plugin-map'),
37-
chatbot: () => import('@object-ui/plugin-chatbot'),
38-
form: () => import('@object-ui/plugin-form'),
39-
grid: () => import('@object-ui/plugin-grid'),
40-
view: () => import('@object-ui/plugin-view'),
41-
};
42-
4326
/**
4427
* PluginLoader component - Loads specific plugins on-demand
4528
*
@@ -60,14 +43,51 @@ export function PluginLoader({ plugins, children }: PluginLoaderProps) {
6043
return;
6144
}
6245

63-
Promise.all(plugins.map(plugin => pluginImports[plugin]()))
64-
.then(() => {
46+
const loadPlugins = async () => {
47+
try {
48+
// Dynamically import plugins based on the list
49+
const imports = plugins.map(async (plugin) => {
50+
switch (plugin) {
51+
case 'aggrid':
52+
return import('@object-ui/plugin-aggrid');
53+
case 'editor':
54+
return import('@object-ui/plugin-editor');
55+
case 'charts':
56+
return import('@object-ui/plugin-charts');
57+
case 'dashboard':
58+
return import('@object-ui/plugin-dashboard');
59+
case 'kanban':
60+
return import('@object-ui/plugin-kanban');
61+
case 'markdown':
62+
return import('@object-ui/plugin-markdown');
63+
case 'timeline':
64+
return import('@object-ui/plugin-timeline');
65+
case 'calendar':
66+
return import('@object-ui/plugin-calendar');
67+
case 'gantt':
68+
return import('@object-ui/plugin-gantt');
69+
case 'map':
70+
return import('@object-ui/plugin-map');
71+
case 'chatbot':
72+
return import('@object-ui/plugin-chatbot');
73+
case 'form':
74+
return import('@object-ui/plugin-form');
75+
case 'grid':
76+
return import('@object-ui/plugin-grid');
77+
case 'view':
78+
return import('@object-ui/plugin-view');
79+
}
80+
});
81+
82+
await Promise.all(imports);
6583
setLoaded(true);
66-
})
67-
.catch((error) => {
84+
} catch (error) {
6885
console.error('Failed to load plugins:', error);
6986
setLoaded(true); // Still render children even if plugin loading fails
70-
});
87+
}
88+
};
89+
90+
loadPlugins();
7191
}, [plugins]);
7292

7393
if (!loaded) {

apps/site/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"@object-ui/plugin-calendar": "workspace:*",
1818
"@object-ui/plugin-charts": "workspace:*",
1919
"@object-ui/plugin-chatbot": "workspace:*",
20+
"@object-ui/plugin-dashboard": "workspace:*",
2021
"@object-ui/plugin-editor": "workspace:*",
2122
"@object-ui/plugin-gantt": "workspace:*",
2223
"@object-ui/plugin-kanban": "workspace:*",

pnpm-lock.yaml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)