@@ -182,7 +182,7 @@ export default function ControlPanel({
182182 } else if ( a . element === ObjectType . TYPE ) {
183183 deleteType ( a . data . type . id , false ) ;
184184 } else if ( a . element === ObjectType . ENUM ) {
185- deleteEnum ( enums . length - 1 , false ) ;
185+ deleteEnum ( a . data . enum . id , false ) ;
186186 }
187187 setRedoStack ( ( prev ) => [ ...prev , a ] ) ;
188188 } else if ( a . action === Action . MOVE ) {
@@ -216,7 +216,7 @@ export default function ControlPanel({
216216 } else if ( a . element === ObjectType . TYPE ) {
217217 addType ( a . data , false ) ;
218218 } else if ( a . element === ObjectType . ENUM ) {
219- addEnum ( { id : a . id , ... a . data } , false ) ;
219+ addEnum ( a . data , false ) ;
220220 }
221221 setRedoStack ( ( prev ) => [ ...prev , a ] ) ;
222222 } else if ( a . action === Action . EDIT ) {
@@ -354,7 +354,7 @@ export default function ControlPanel({
354354 } else if ( a . element === ObjectType . TYPE ) {
355355 addType ( a . data , false ) ;
356356 } else if ( a . element === ObjectType . ENUM ) {
357- addEnum ( null , false ) ;
357+ addEnum ( a . data , false ) ;
358358 }
359359 setUndoStack ( ( prev ) => [ ...prev , a ] ) ;
360360 } else if ( a . action === Action . MOVE ) {
@@ -387,7 +387,7 @@ export default function ControlPanel({
387387 } else if ( a . element === ObjectType . TYPE ) {
388388 deleteType ( a . data . type . id , false ) ;
389389 } else if ( a . element === ObjectType . ENUM ) {
390- deleteEnum ( a . id , false ) ;
390+ deleteEnum ( a . data . enum . id , false ) ;
391391 }
392392 setUndoStack ( ( prev ) => [ ...prev , a ] ) ;
393393 } else if ( a . action === Action . EDIT ) {
@@ -822,11 +822,24 @@ export default function ControlPanel({
822822 setUndoStack ( [ ] ) ;
823823 setRedoStack ( [ ] ) ;
824824 if ( databases [ database ] . hasTypes ) {
825- setTypes ( diagram . types ?? [ ] ) ;
826- }
827- if ( databases [ database ] . hasEnums ) {
828- setEnums ( diagram . enums ?? [ ] ) ;
825+ setTypes (
826+ diagram . types . map ( ( t ) =>
827+ t . id
828+ ? t
829+ : {
830+ ...t ,
831+ id : nanoid ( ) ,
832+ fields : t . fields . map ( ( f ) =>
833+ f . id ? f : { ...f , id : nanoid ( ) } ,
834+ ) ,
835+ } ,
836+ ) ,
837+ ) ;
829838 }
839+ setEnums (
840+ diagram . enums . map ( ( e ) => ( ! e . id ? { ...e , id : nanoid ( ) } : e ) ) ??
841+ [ ] ,
842+ ) ;
830843 window . name = `d ${ diagram . id } ` ;
831844 } else {
832845 window . name = "" ;
0 commit comments