@@ -33,12 +33,14 @@ import {
3333} from '@/TreeOperations/shared' ;
3434
3535export const mutate = ( tree : ParserTree , allNodes : ParserField [ ] ) => {
36- const mutateParentIfField = ( node : ParserField ) => {
36+ const mutateParentIfField = ( node : ParserField , parentNode ?: string ) => {
3737 if ( node . data . type === TypeSystemDefinition . FieldDefinition ) {
38- const parentNode = allNodes . find ( ( an ) => an . args . some ( ( a ) => a . id === node . id ) ) ;
39- if ( ! parentNode ) throw new Error ( 'Invalid field definition' ) ;
40- const fieldIndex = parentNode . args . findIndex ( ( a ) => a . id == node . id ) ;
41- updateFieldOnNode ( parentNode , fieldIndex , node ) ;
38+ const findParentNode = parentNode
39+ ? allNodes . find ( ( n ) => n . id === parentNode )
40+ : allNodes . find ( ( an ) => an . args . some ( ( a ) => a . id === node . id ) ) ;
41+ if ( ! findParentNode ) throw new Error ( 'Invalid field definition' ) ;
42+ const fieldIndex = findParentNode . args . findIndex ( ( a ) => a . id == node . id ) ;
43+ updateFieldOnNode ( findParentNode , fieldIndex , node ) ;
4244 return ;
4345 }
4446 } ;
@@ -65,7 +67,7 @@ export const mutate = (tree: ParserTree, allNodes: ParserField[]) => {
6567 mutateParentIfField ( n ) ;
6668 } ;
6769
68- const updateFieldOnNode = ( node : ParserField , i : number , updatedField : ParserField ) => {
70+ const updateFieldOnNode = ( node : ParserField , i : number , updatedField : ParserField , parentNode ?: string ) => {
6971 regenerateId ( updatedField ) ;
7072 if ( node . data . type === TypeSystemDefinition . DirectiveDefinition ) {
7173 const oldField : ParserField = JSON . parse ( JSON . stringify ( node . args [ i ] ) ) ;
@@ -77,7 +79,7 @@ export const mutate = (tree: ParserTree, allNodes: ParserField[]) => {
7779 }
7880 node . args [ i ] = updatedField ;
7981 regenerateId ( node ) ;
80- mutateParentIfField ( node ) ;
82+ mutateParentIfField ( node , parentNode ) ;
8183 } ;
8284
8385 const addFieldToNode = ( node : ParserField , f : ParserField ) => {
0 commit comments