@@ -167,7 +167,7 @@ export default function ControlPanel({
167167 } else if ( a . element === ObjectType . TYPE ) {
168168 deleteType ( a . data . type . id , false ) ;
169169 } else if ( a . element === ObjectType . ENUM ) {
170- deleteEnum ( enums . length - 1 , false ) ;
170+ deleteEnum ( a . data . enum . id , false ) ;
171171 }
172172 setRedoStack ( ( prev ) => [ ...prev , a ] ) ;
173173 } else if ( a . action === Action . MOVE ) {
@@ -201,7 +201,7 @@ export default function ControlPanel({
201201 } else if ( a . element === ObjectType . TYPE ) {
202202 addType ( a . data , false ) ;
203203 } else if ( a . element === ObjectType . ENUM ) {
204- addEnum ( { id : a . id , ... a . data } , false ) ;
204+ addEnum ( a . data , false ) ;
205205 }
206206 setRedoStack ( ( prev ) => [ ...prev , a ] ) ;
207207 } else if ( a . action === Action . EDIT ) {
@@ -339,7 +339,7 @@ export default function ControlPanel({
339339 } else if ( a . element === ObjectType . TYPE ) {
340340 addType ( a . data , false ) ;
341341 } else if ( a . element === ObjectType . ENUM ) {
342- addEnum ( null , false ) ;
342+ addEnum ( a . data , false ) ;
343343 }
344344 setUndoStack ( ( prev ) => [ ...prev , a ] ) ;
345345 } else if ( a . action === Action . MOVE ) {
@@ -372,7 +372,7 @@ export default function ControlPanel({
372372 } else if ( a . element === ObjectType . TYPE ) {
373373 deleteType ( a . data . type . id , false ) ;
374374 } else if ( a . element === ObjectType . ENUM ) {
375- deleteEnum ( a . id , false ) ;
375+ deleteEnum ( a . data . enum . id , false ) ;
376376 }
377377 setUndoStack ( ( prev ) => [ ...prev , a ] ) ;
378378 } else if ( a . action === Action . EDIT ) {
@@ -781,11 +781,24 @@ export default function ControlPanel({
781781 setUndoStack ( [ ] ) ;
782782 setRedoStack ( [ ] ) ;
783783 if ( databases [ database ] . hasTypes ) {
784- setTypes ( diagram . types ?? [ ] ) ;
785- }
786- if ( databases [ database ] . hasEnums ) {
787- setEnums ( diagram . enums ?? [ ] ) ;
784+ setTypes (
785+ diagram . types . map ( ( t ) =>
786+ t . id
787+ ? t
788+ : {
789+ ...t ,
790+ id : nanoid ( ) ,
791+ fields : t . fields . map ( ( f ) =>
792+ f . id ? f : { ...f , id : nanoid ( ) } ,
793+ ) ,
794+ } ,
795+ ) ,
796+ ) ;
788797 }
798+ setEnums (
799+ diagram . enums . map ( ( e ) => ( ! e . id ? { ...e , id : nanoid ( ) } : e ) ) ??
800+ [ ] ,
801+ ) ;
789802 window . name = `d ${ diagram . id } ` ;
790803 } else {
791804 window . name = "" ;
0 commit comments