UNPKG

1.19 kBPlain TextView Raw
1import { assert } from '@ember/debug';
2import { guidFor } from '@ember/object/internals';
3import EmberOrderedSet from '@ember/ordered-set';
4
5export default class EmberDataOrderedSet<T> extends EmberOrderedSet<T> {
6 static create() {
7 return new this();
8 }
9
10 addWithIndex(obj: T, idx?: number) {
11 let guid = guidFor(obj);
12 let presenceSet = this.presenceSet;
13 let list = this.list;
14
15 if (presenceSet[guid] === true) {
16 return;
17 }
18
19 presenceSet[guid] = true;
20
21 if (idx === undefined || idx === null) {
22 list.push(obj);
23 } else {
24 list.splice(idx, 0, obj);
25 }
26
27 this.size += 1;
28
29 return this;
30 }
31
32 deleteWithIndex(obj: T | null, idx?: number): boolean {
33 let guid = guidFor(obj);
34 let presenceSet = this.presenceSet;
35 let list = this.list;
36
37 if (presenceSet[guid] === true) {
38 delete presenceSet[guid];
39
40 assert('object is not present at specified index', idx === undefined || list[idx] === obj);
41
42 let index = idx !== undefined ? idx : list.indexOf(obj);
43 if (index > -1) {
44 list.splice(index, 1);
45 }
46 this.size = list.length;
47 return true;
48 } else {
49 return false;
50 }
51 }
52}