@@ -26,43 +26,30 @@ export function GridStackProvider({
2626 } ) ;
2727
2828 const addWidget = useCallback (
29- ( fn : ( id : string ) => Omit < GridStackWidget , "id" > ) => {
30- const newId = `widget-${ Math . random ( ) . toString ( 36 ) . substring ( 2 , 15 ) } ` ;
31- const widget = fn ( newId ) ;
32- gridStack ?. addWidget ( { ...widget , id : newId } ) ;
29+ ( widget : GridStackWidget & { id : Required < GridStackWidget > [ "id" ] } ) => {
30+ gridStack ?. addWidget ( widget ) ;
3331 setRawWidgetMetaMap ( ( prev ) => {
3432 const newMap = new Map < string , GridStackWidget > ( prev ) ;
35- newMap . set ( newId , widget ) ;
33+ newMap . set ( widget . id , widget ) ;
3634 return newMap ;
3735 } ) ;
3836 } ,
3937 [ gridStack ]
4038 ) ;
4139
4240 const addSubGrid = useCallback (
43- (
44- fn : (
45- id : string ,
46- withWidget : ( w : Omit < GridStackWidget , "id" > ) => GridStackWidget
47- ) => Omit < GridStackWidget , "id" >
48- ) => {
49- const newId = `sub-grid-${ Math . random ( ) . toString ( 36 ) . substring ( 2 , 15 ) } ` ;
50- const subWidgetIdMap = new Map < string , GridStackWidget > ( ) ;
51-
52- const widget = fn ( newId , ( w ) => {
53- const subWidgetId = `widget-${ Math . random ( )
54- . toString ( 36 )
55- . substring ( 2 , 15 ) } `;
56- subWidgetIdMap . set ( subWidgetId , w ) ;
57- return { ...w , id : subWidgetId } ;
58- } ) ;
59-
60- gridStack ?. addWidget ( { ...widget , id : newId } ) ;
41+ ( subGrid : GridStackWidget & {
42+ id : Required < GridStackWidget > [ "id" ] ;
43+ subGridOpts : Required < GridStackWidget > [ "subGridOpts" ] & {
44+ children : Array < GridStackWidget & { id : Required < GridStackWidget > [ "id" ] } >
45+ }
46+ } ) => {
47+ gridStack ?. addWidget ( subGrid ) ;
6148
6249 setRawWidgetMetaMap ( ( prev ) => {
6350 const newMap = new Map < string , GridStackWidget > ( prev ) ;
64- subWidgetIdMap . forEach ( ( meta , id ) => {
65- newMap . set ( id , meta ) ;
51+ subGrid . subGridOpts ?. children ?. forEach ( ( meta : GridStackWidget & { id : Required < GridStackWidget > [ "id" ] } ) => {
52+ newMap . set ( meta . id , meta ) ;
6653 } ) ;
6754 return newMap ;
6855 } ) ;
0 commit comments