@@ -27,7 +27,6 @@ export class TableRowMeta extends EmberObject {
27
27
*/
28
28
_cellMetaCache = new Map ( ) ;
29
29
_isCollapsed = false ;
30
- _lastKnownIndex = null ;
31
30
32
31
@computed ( '_rowValue.isCollapsed' )
33
32
get isCollapsed ( ) {
@@ -96,18 +95,6 @@ export class TableRowMeta extends EmberObject {
96
95
return parentMeta ? get ( parentMeta , 'depth' ) + 1 : 0 ;
97
96
}
98
97
99
- @computed ( '_lastKnownIndex' , '_prevSiblingMeta.index' )
100
- get index ( ) {
101
- let prevSiblingIndex = get ( this , '_prevSiblingMeta.index' ) ;
102
- let lastKnownIndex = get ( this , '_lastKnownIndex' ) ;
103
-
104
- if ( lastKnownIndex === prevSiblingIndex ) {
105
- return lastKnownIndex + 1 ;
106
- }
107
-
108
- return lastKnownIndex ;
109
- }
110
-
111
98
@computed ( '_tree.length' )
112
99
get first ( ) {
113
100
if ( get ( this , '_tree.length' ) === 0 ) {
@@ -125,18 +112,18 @@ export class TableRowMeta extends EmberObject {
125
112
@computed ( '_tree.length' )
126
113
get next ( ) {
127
114
let tree = get ( this , '_tree' ) ;
128
- if ( get ( this , '_lastKnownIndex ' ) + 1 >= get ( tree , 'length' ) ) {
115
+ if ( get ( this , 'index ' ) + 1 >= get ( tree , 'length' ) ) {
129
116
return null ;
130
117
}
131
- return tree . objectAt ( get ( this , '_lastKnownIndex ' ) + 1 ) ;
118
+ return tree . objectAt ( get ( this , 'index ' ) + 1 ) ;
132
119
}
133
120
134
121
@computed ( '_tree.length' )
135
122
get prev ( ) {
136
- if ( get ( this , '_lastKnownIndex ' ) === 0 ) {
123
+ if ( get ( this , 'index ' ) === 0 ) {
137
124
return null ;
138
125
}
139
- return get ( this , '_tree' ) . objectAt ( get ( this , '_lastKnownIndex ' ) - 1 ) ;
126
+ return get ( this , '_tree' ) . objectAt ( get ( this , 'index ' ) - 1 ) ;
140
127
}
141
128
142
129
toggleCollapse ( ) {
@@ -705,28 +692,18 @@ export default class CollapseTree extends EmberObject.extend(EmberArray) {
705
692
@return {{ value: object, parents: Array<object> } }
706
693
*/
707
694
objectAt ( index ) {
708
- let length = get ( this , 'length' ) ;
709
- if ( index >= length || index < 0 ) {
695
+ if ( index >= get ( this , 'length' ) || index < 0 ) {
710
696
return undefined ;
711
697
}
712
698
713
- let root = get ( this , 'root' ) ;
714
- let rowMetaCache = this . get ( 'rowMetaCache' ) ;
715
-
716
699
// We add a "fake" top level node to account for the root node
717
700
let normalizedIndex = index + 1 ;
718
- let result = root . objectAt ( normalizedIndex ) ;
719
- let meta = rowMetaCache . get ( result ) ;
701
+ let result = get ( this , ' root' ) . objectAt ( normalizedIndex ) ;
702
+ let meta = this . get ( ' rowMetaCache' ) . get ( result ) ;
720
703
721
- // Set the last known index on the meta and link the next siblings meta
722
- // so that its index can recompute in case it conflicts from shifting
723
- set ( meta , '_lastKnownIndex' , index ) ;
724
-
725
- if ( index < length - 1 ) {
726
- let nextSibling = root . objectAt ( normalizedIndex + 1 ) ;
727
- let nextMeta = rowMetaCache . get ( nextSibling ) ;
728
- set ( nextMeta , '_prevSiblingMeta' , meta ) ;
729
- }
704
+ // Set the perceived index on the meta. It should be safe to do this here, since
705
+ // the row will always be retrieved via `objectAt` before being used.
706
+ set ( meta , 'index' , index ) ;
730
707
731
708
return result ;
732
709
}
0 commit comments