@@ -7,8 +7,9 @@ const calculateTreeData = edges => {
77 const tree = originalData . reduce ( ( accu , { node : { fields : { slug, title} } } ) => {
88 const parts = slug . split ( '/' ) ;
99 let { items : prevItems } = accu ;
10- for ( const part of parts . slice ( 1 , - 1 ) ) {
11- let tmp = prevItems . find ( ( { label} ) => label == part ) ;
10+ const slicedParts = config . gatsby && config . gatsby . trailingSlash ? parts . slice ( 1 , - 2 ) : parts . slice ( 1 , - 1 ) ;
11+ for ( const part of slicedParts ) {
12+ let tmp = prevItems && prevItems . find ( ( { label} ) => label == part ) ;
1213 if ( tmp ) {
1314 if ( ! tmp . items ) {
1415 tmp . items = [ ] ;
@@ -19,13 +20,14 @@ const calculateTreeData = edges => {
1920 }
2021 prevItems = tmp . items ;
2122 }
22- const existingItem = prevItems . find ( ( { label} ) => label === parts [ parts . length - 1 ] ) ;
23+ const slicedLength = config . gatsby && config . gatsby . trailingSlash ? parts . length - 2 : parts . length - 1 ;
24+ const existingItem = prevItems . find ( ( { label} ) => label === parts [ slicedLength ] ) ;
2325 if ( existingItem ) {
2426 existingItem . url = slug ;
2527 existingItem . title = title ;
2628 } else {
2729 prevItems . push ( {
28- label : parts [ parts . length - 1 ] ,
30+ label : parts [ slicedLength ] ,
2931 url : slug ,
3032 items : [ ] ,
3133 title
@@ -35,12 +37,15 @@ const calculateTreeData = edges => {
3537 } , { items : [ ] } ) ;
3638 const { sidebar : { forcedNavOrder = [ ] } } = config ;
3739 const tmp = [ ...forcedNavOrder ] ;
40+ if ( config . gatsby && config . gatsby . trailingSlash ) {
41+ }
3842 tmp . reverse ( ) ;
3943 return tmp . reduce ( ( accu , slug ) => {
4044 const parts = slug . split ( '/' ) ;
4145 let { items : prevItems } = accu ;
42- for ( const part of parts . slice ( 1 , - 1 ) ) {
43- let tmp = prevItems . find ( ( { label} ) => label == part ) ;
46+ const slicedParts = config . gatsby && config . gatsby . trailingSlash ? parts . slice ( 1 , - 2 ) : parts . slice ( 1 , - 1 ) ;
47+ for ( const part of slicedParts ) {
48+ let tmp = prevItems . find ( ( item ) => item && item . label == part ) ;
4449 if ( tmp ) {
4550 if ( ! tmp . items ) {
4651 tmp . items = [ ] ;
@@ -49,7 +54,9 @@ const calculateTreeData = edges => {
4954 tmp = { label : part , items : [ ] } ;
5055 prevItems . push ( tmp )
5156 }
52- prevItems = tmp . items ;
57+ if ( tmp && tmp . items ) {
58+ prevItems = tmp . items ;
59+ }
5360 }
5461 // sort items alphabetically.
5562 prevItems . map ( ( item ) => {
@@ -62,15 +69,17 @@ const calculateTreeData = edges => {
6269 return 0 ;
6370 } ) ;
6471 } )
65- const index = prevItems . findIndex ( ( { label} ) => label === parts [ parts . length - 1 ] ) ;
66- accu . items . unshift ( prevItems . splice ( index , 1 ) [ 0 ] ) ;
72+ const slicedLength = config . gatsby && config . gatsby . trailingSlash ? ( parts . length - 2 ) : ( parts . length - 1 ) ;
73+ const index = prevItems . findIndex ( ( { label} ) => label === parts [ slicedLength ] ) ;
74+ if ( prevItems . length ) {
75+ accu . items . unshift ( prevItems . splice ( index , 1 ) [ 0 ] ) ;
76+ }
6777 return accu ;
6878 } , tree ) ;
6979}
7080
71-
7281const Tree = ( { edges} ) => {
73- const [ treeData ] = useState ( ( ) => {
82+ let [ treeData ] = useState ( ( ) => {
7483 return calculateTreeData ( edges ) ;
7584 } ) ;
7685 const defaultCollapsed = { } ;
0 commit comments