@@ -3,7 +3,7 @@ import type { Tree } from './types'
3
3
import type { WrappedTreeWithLayout } from './layouts'
4
4
export { computeNaiveLayout , computeSmartLayout } from './layouts'
5
5
6
- export type CssClassesInferrer = (
6
+ export type CssClassesGetter = (
7
7
data ?: Readonly < Record < string , unknown > > | undefined ,
8
8
) => string [ ]
9
9
@@ -18,18 +18,18 @@ export interface BeautifulTreeProps {
18
18
readonly computeLayout : (
19
19
tree : Readonly < Tree > ,
20
20
) => Readonly < WrappedTreeWithLayout >
21
- readonly nodeClassesInferrer ?: CssClassesInferrer | undefined
22
- readonly edgeClassesInferrer ?: CssClassesInferrer | undefined
21
+ readonly getNodeClass ?: CssClassesGetter | undefined
22
+ readonly getEdgeClass ?: CssClassesGetter | undefined
23
23
}
24
24
25
- function runClassesInferrer (
26
- classesInferrer ?: CssClassesInferrer | undefined ,
25
+ function runClassesGetter (
26
+ classesGetter ?: CssClassesGetter | undefined ,
27
27
data ?: Readonly < Record < string , unknown > > | undefined ,
28
28
) : string {
29
- if ( classesInferrer === undefined ) {
29
+ if ( classesGetter === undefined ) {
30
30
return ''
31
31
}
32
- const cssClasses = classesInferrer ( data )
32
+ const cssClasses = classesGetter ( data )
33
33
if ( cssClasses . length === 0 ) {
34
34
return ''
35
35
}
@@ -41,8 +41,8 @@ export function BeautifulTree({
41
41
svgProps,
42
42
tree,
43
43
computeLayout,
44
- nodeClassesInferrer,
45
- edgeClassesInferrer,
44
+ getNodeClass : nodeClassesInferrer ,
45
+ getEdgeClass : edgeClassesInferrer ,
46
46
} : Readonly < BeautifulTreeProps > ) : JSX . Element {
47
47
const { tree : treeWithLayout , maxX, maxY } = computeLayout ( tree )
48
48
const { width, height, sizeUnit = 'px' } = svgProps
@@ -68,12 +68,11 @@ export function BeautifulTree({
68
68
line { stroke: black; }
69
69
circle { stroke: black; fill: white; }
70
70
` } </ style >
71
- { /* TODO: introduce edge "styles" (straight, cornered, curved..., plus CSS styles) */ }
72
71
{ Array . from ( edgesIterator ( treeWithLayout ) , ( edge , idx ) => {
73
72
return (
74
73
< line
75
74
key = { `${ id } -edge-${ idx } ` }
76
- className = { `beautiful-tree-edge${ runClassesInferrer (
75
+ className = { `beautiful-tree-edge${ runClassesGetter (
77
76
edgeClassesInferrer ,
78
77
edge . edgeData ,
79
78
) } `}
@@ -85,18 +84,18 @@ export function BeautifulTree({
85
84
)
86
85
} ) }
87
86
{ Array . from ( postOrderIterator ( treeWithLayout ) , ( node , idx ) => {
88
- const aX = node . meta . pos . x
89
- const aY = node . meta . pos . y
87
+ const nm = node . meta
90
88
return (
91
89
< circle
92
90
key = { `${ id } -node-${ idx } ` }
93
91
className = { `beautiful-tree-node${
94
- node . meta . isRoot ? ' beautiful-tree-root' : ''
95
- } ${
96
- node . meta . isLeaf ? ' beautiful-tree-leaf' : ''
97
- } ${ runClassesInferrer ( nodeClassesInferrer , node . data ) } `}
98
- cx = { ( aX + 1 ) * xCoef }
99
- cy = { ( aY + 1 ) * yCoef }
92
+ nm . isRoot ? ' beautiful-tree-root' : ''
93
+ } ${ nm . isLeaf ? ' beautiful-tree-leaf' : '' } ${ runClassesGetter (
94
+ nodeClassesInferrer ,
95
+ node . data ,
96
+ ) } `}
97
+ cx = { ( nm . pos . x + 1 ) * xCoef }
98
+ cy = { ( nm . pos . y + 1 ) * yCoef }
100
99
r = { maxNodeRadius }
101
100
/>
102
101
)
0 commit comments