Skip to content

Commit 10d8cd3

Browse files
committed
move SimpleSequence
1 parent a5c1dde commit 10d8cd3

2 files changed

Lines changed: 25 additions & 24 deletions

File tree

src/vs/base/common/sequence.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { Event, Emitter } from 'vs/base/common/event';
7+
import { IDisposable } from 'vs/base/common/lifecycle';
78

89
export interface ISplice<T> {
910
readonly start: number;
@@ -32,3 +33,26 @@ export class Sequence<T> implements ISequence<T>, ISpliceable<T> {
3233
this._onDidSplice.fire({ start, deleteCount, toInsert });
3334
}
3435
}
36+
37+
export class SimpleSequence<T> implements ISequence<T> {
38+
39+
private _elements: T[];
40+
get elements(): T[] { return this._elements; }
41+
42+
readonly onDidSplice: Event<ISplice<T>>;
43+
private disposable: IDisposable;
44+
45+
constructor(elements: T[], onDidAdd: Event<T>, onDidRemove: Event<T>) {
46+
this._elements = [...elements];
47+
this.onDidSplice = Event.any(
48+
Event.map(onDidAdd, e => ({ start: this.elements.length, deleteCount: 0, toInsert: [e] })),
49+
Event.map(Event.filter(Event.map(onDidRemove, e => this.elements.indexOf(e)), i => i > -1), i => ({ start: i, deleteCount: 1, toInsert: [] }))
50+
);
51+
52+
this.disposable = this.onDidSplice(({ start, deleteCount, toInsert }) => this._elements.splice(start, deleteCount, ...toInsert));
53+
}
54+
55+
dispose(): void {
56+
this.disposable.dispose();
57+
}
58+
}

src/vs/workbench/contrib/scm/browser/scmViewPane.ts

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import { disposableTimeout, ThrottledDelayer } from 'vs/base/common/async';
3333
import { INotificationService } from 'vs/platform/notification/common/notification';
3434
import { ITreeNode, ITreeFilter, ITreeSorter, ITreeContextMenuEvent } from 'vs/base/browser/ui/tree/tree';
3535
import { ResourceTree, IResourceNode } from 'vs/base/common/resourceTree';
36-
import { ISequence, ISplice } from 'vs/base/common/sequence';
36+
import { ISequence, ISplice, SimpleSequence } from 'vs/base/common/sequence';
3737
import { ICompressibleTreeRenderer, ICompressibleKeyboardNavigationLabelProvider } from 'vs/base/browser/ui/tree/objectTree';
3838
import { Iterable } from 'vs/base/common/iterator';
3939
import { ICompressedTreeNode, ICompressedTreeElement } from 'vs/base/browser/ui/tree/compressedObjectTreeModel';
@@ -888,29 +888,6 @@ class ViewModel {
888888
}
889889
}
890890

891-
class SimpleSequence<T> implements ISequence<T> {
892-
893-
private _elements: T[];
894-
get elements(): T[] { return this._elements; }
895-
896-
readonly onDidSplice: Event<ISplice<T>>;
897-
private disposable: IDisposable;
898-
899-
constructor(elements: T[], onDidAdd: Event<T>, onDidRemove: Event<T>) {
900-
this._elements = [...elements];
901-
this.onDidSplice = Event.any(
902-
Event.map(onDidAdd, e => ({ start: this.elements.length, deleteCount: 0, toInsert: [e] })),
903-
Event.map(Event.filter(Event.map(onDidRemove, e => this.elements.indexOf(e)), i => i > -1), i => ({ start: i, deleteCount: 1, toInsert: [] }))
904-
);
905-
906-
this.disposable = this.onDidSplice(({ start, deleteCount, toInsert }) => this._elements.splice(start, deleteCount, ...toInsert));
907-
}
908-
909-
dispose(): void {
910-
this.disposable.dispose();
911-
}
912-
}
913-
914891
class SCMViewSubMenuAction extends ContextSubMenu {
915892
constructor(viewModel: ViewModel) {
916893
super(localize('sortAction', "View & Sort"),

0 commit comments

Comments
 (0)