@@ -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 ) {
0 commit comments