11import { Nullish } from '@table-library/react-table-library/types/common' ;
2- import { Data , TableNode } from '@table-library/react-table-library/types/table' ;
2+ import { Data , TableNode , ExtendedNode } from '@table-library/react-table-library/types/table' ;
33
44import { hasLeaves } from './hasLeaves' ;
55
6- type ExtendedNode = {
7- treeXLevel : number ;
8- treeYLevel : number ;
9- parentNode : TableNode ;
10- ancestors : TableNode [ ] ;
11- } ;
12-
136export const fromTreeToList = < T extends TableNode > ( nodes : T [ ] | Nullish ) : T [ ] =>
147 ( nodes || [ ] ) . reduce ( ( acc : T [ ] , value : T ) => {
158 acc = acc . concat ( value ) ; // eslint-disable-line no-param-reassign
@@ -27,9 +20,9 @@ export const fromTreeToListExtended = (
2720 treeIds : string [ ] ,
2821 treeXLevel = 0 ,
2922 treeYLevel = 0 ,
30- parentNode : ( TableNode & ExtendedNode ) | Nullish ,
31- ) : ( TableNode & ExtendedNode ) [ ] =>
32- ( nodes || [ ] ) . reduce ( ( acc : ( TableNode & ExtendedNode ) [ ] , value : TableNode ) => {
23+ parentNode : ExtendedNode < TableNode > | Nullish ,
24+ ) : ExtendedNode < TableNode > [ ] =>
25+ ( nodes || [ ] ) . reduce ( ( acc : ExtendedNode < TableNode > [ ] , value : TableNode ) => {
3326 let listNode ;
3427
3528 if ( value . nodes ) {
@@ -41,14 +34,17 @@ export const fromTreeToListExtended = (
4134 const extendedNode = {
4235 treeXLevel,
4336 treeYLevel,
44- parentNode : parentNode || data ,
45- ancestors : parentNode ? [ parentNode , ...parentNode . ancestors ] : [ parentNode || data ] ,
46- } as ExtendedNode ;
37+ // TODO: data needs to be explicitly typed here for this edge case of root
38+ parentNode : ( parentNode || data ) as ExtendedNode < TableNode > ,
39+ ancestors : ( parentNode
40+ ? [ parentNode , ...( parentNode ?. ancestors ?? [ ] ) ]
41+ : [ parentNode || data ] ) as ExtendedNode < TableNode > [ ] ,
42+ } ;
4743
4844 listNode = {
4945 ...listNode ,
5046 ...extendedNode ,
51- } as TableNode & ExtendedNode ;
47+ } as ExtendedNode < TableNode > ;
5248
5349 acc = acc . concat ( listNode ) ; // eslint-disable-line no-param-reassign
5450
0 commit comments