44 *--------------------------------------------------------------------------------------------*/
55
66import { ISpliceable } from 'vs/base/common/sequence' ;
7- import { Iterator , ISequence } from 'vs/base/common/iterator' ;
7+ import { Iterable } from 'vs/base/common/iterator' ;
88import { Event } from 'vs/base/common/event' ;
99import { ITreeModel , ITreeNode , ITreeElement , ICollapseStateChangeEvent , ITreeModelSpliceEvent , TreeError , TreeFilterResult , TreeVisibility , WeakMapper } from 'vs/base/browser/ui/tree/tree' ;
1010import { IObjectTreeModelOptions , ObjectTreeModel , IObjectTreeModel } from 'vs/base/browser/ui/tree/objectTreeModel' ;
1111
1212// Exported only for test reasons, do not use directly
1313export interface ICompressedTreeElement < T > extends ITreeElement < T > {
14- readonly children ?: ISequence < ICompressedTreeElement < T > > ;
14+ readonly children ?: Iterable < ICompressedTreeElement < T > > ;
1515 readonly incompressible ?: boolean ;
1616}
1717
@@ -27,7 +27,7 @@ function noCompress<T>(element: ICompressedTreeElement<T>): ITreeElement<ICompre
2727
2828 return {
2929 element : { elements, incompressible } ,
30- children : Iterator . map ( Iterator . from ( element . children ) , noCompress ) ,
30+ children : Iterable . map ( Iterable . from ( element . children ) , noCompress ) ,
3131 collapsible : element . collapsible ,
3232 collapsed : element . collapsed
3333 } ;
@@ -38,12 +38,11 @@ export function compress<T>(element: ICompressedTreeElement<T>): ITreeElement<IC
3838 const elements = [ element . element ] ;
3939 const incompressible = element . incompressible || false ;
4040
41- let childrenIterator : Iterator < ITreeElement < T > > ;
41+ let childrenIterator : Iterable < ITreeElement < T > > ;
4242 let children : ITreeElement < T > [ ] ;
4343
4444 while ( true ) {
45- childrenIterator = Iterator . from ( element . children ) ;
46- children = Iterator . collect ( childrenIterator , 2 ) ;
45+ [ children , childrenIterator ] = Iterable . consume ( Iterable . from ( element . children ) , 2 ) ;
4746
4847 if ( children . length !== 1 ) {
4948 break ;
@@ -60,19 +59,19 @@ export function compress<T>(element: ICompressedTreeElement<T>): ITreeElement<IC
6059
6160 return {
6261 element : { elements, incompressible } ,
63- children : Iterator . map ( Iterator . concat ( Iterator . fromArray ( children ) , childrenIterator ) , compress ) ,
62+ children : Iterable . map ( Iterable . concat ( children , childrenIterator ) , compress ) ,
6463 collapsible : element . collapsible ,
6564 collapsed : element . collapsed
6665 } ;
6766}
6867
6968function _decompress < T > ( element : ITreeElement < ICompressedTreeNode < T > > , index = 0 ) : ICompressedTreeElement < T > {
70- let children : Iterator < ICompressedTreeElement < T > > ;
69+ let children : Iterable < ICompressedTreeElement < T > > ;
7170
7271 if ( index < element . element . elements . length - 1 ) {
73- children = Iterator . single ( _decompress ( element , index + 1 ) ) ;
72+ children = [ _decompress ( element , index + 1 ) ] ;
7473 } else {
75- children = Iterator . map ( Iterator . from ( element . children ) , el => _decompress ( el , 0 ) ) ;
74+ children = Iterable . map ( Iterable . from ( element . children ) , el => _decompress ( el , 0 ) ) ;
7675 }
7776
7877 if ( index === 0 && element . element . incompressible ) {
@@ -98,12 +97,12 @@ export function decompress<T>(element: ITreeElement<ICompressedTreeNode<T>>): IC
9897 return _decompress ( element , 0 ) ;
9998}
10099
101- function splice < T > ( treeElement : ICompressedTreeElement < T > , element : T , children : Iterator < ICompressedTreeElement < T > > ) : ICompressedTreeElement < T > {
100+ function splice < T > ( treeElement : ICompressedTreeElement < T > , element : T , children : Iterable < ICompressedTreeElement < T > > ) : ICompressedTreeElement < T > {
102101 if ( treeElement . element === element ) {
103102 return { ...treeElement , children } ;
104103 }
105104
106- return { ...treeElement , children : Iterator . map ( Iterator . from ( treeElement . children ) , e => splice ( e , element , children ) ) } ;
105+ return { ...treeElement , children : Iterable . map ( Iterable . from ( treeElement . children ) , e => splice ( e , element , children ) ) } ;
107106}
108107
109108interface ICompressedObjectTreeModelOptions < T , TFilterData > extends IObjectTreeModelOptions < ICompressedTreeNode < T > , TFilterData > {
@@ -136,10 +135,10 @@ export class CompressedObjectTreeModel<T extends NonNullable<any>, TFilterData e
136135
137136 setChildren (
138137 element : T | null ,
139- children : ISequence < ICompressedTreeElement < T > > | undefined
138+ children : Iterable < ICompressedTreeElement < T > > = Iterable . empty ( )
140139 ) : void {
141140 if ( element === null ) {
142- const compressedChildren = Iterator . map ( Iterator . from ( children ) , this . enabled ? compress : noCompress ) ;
141+ const compressedChildren = Iterable . map ( children , this . enabled ? compress : noCompress ) ;
143142 this . _setChildren ( null , compressedChildren ) ;
144143 return ;
145144 }
@@ -155,7 +154,7 @@ export class CompressedObjectTreeModel<T extends NonNullable<any>, TFilterData e
155154 const parent = this . model . getNode ( compressedParentNode ) as ITreeNode < ICompressedTreeNode < T > , TFilterData > ;
156155
157156 const decompressedElement = decompress ( node ) ;
158- const splicedElement = splice ( decompressedElement , element , Iterator . from ( children ) ) ;
157+ const splicedElement = splice ( decompressedElement , element , children ) ;
159158 const recompressedElement = ( this . enabled ? compress : noCompress ) ( splicedElement ) ;
160159
161160 const parentChildren = parent . children
@@ -176,15 +175,15 @@ export class CompressedObjectTreeModel<T extends NonNullable<any>, TFilterData e
176175 this . enabled = enabled ;
177176
178177 const root = this . model . getNode ( ) ;
179- const rootChildren = Iterator . from ( root . children as ITreeNode < ICompressedTreeNode < T > > [ ] ) ;
180- const decompressedRootChildren = Iterator . map ( rootChildren , decompress ) ;
181- const recompressedRootChildren = Iterator . map ( decompressedRootChildren , enabled ? compress : noCompress ) ;
178+ const rootChildren = root . children as ITreeNode < ICompressedTreeNode < T > > [ ] ;
179+ const decompressedRootChildren = Iterable . map ( rootChildren , decompress ) ;
180+ const recompressedRootChildren = Iterable . map ( decompressedRootChildren , enabled ? compress : noCompress ) ;
182181 this . _setChildren ( null , recompressedRootChildren ) ;
183182 }
184183
185184 private _setChildren (
186185 node : ICompressedTreeNode < T > | null ,
187- children : ISequence < ITreeElement < ICompressedTreeNode < T > > > | undefined
186+ children : Iterable < ITreeElement < ICompressedTreeNode < T > > >
188187 ) : void {
189188 const insertedElements = new Set < T | null > ( ) ;
190189 const _onDidCreateNode = ( node : ITreeNode < ICompressedTreeNode < T > , TFilterData > ) => {
@@ -413,7 +412,7 @@ export class CompressibleObjectTreeModel<T extends NonNullable<any>, TFilterData
413412 this . model = new CompressedObjectTreeModel ( user , mapList ( this . nodeMapper , list ) , mapOptions ( compressedNodeUnwrapper , options ) ) ;
414413 }
415414
416- setChildren ( element : T | null , children ?: ISequence < ICompressedTreeElement < T > > ) : void {
415+ setChildren ( element : T | null , children : Iterable < ICompressedTreeElement < T > > = Iterable . empty ( ) ) : void {
417416 this . model . setChildren ( element , children ) ;
418417 }
419418
0 commit comments