@vived/app 2.44.0 → 2.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { ObservableEntity } from "./ObservableEntity";
|
|
2
2
|
export declare class ObservableEntityRepo<T extends ObservableEntity> extends ObservableEntity {
|
|
3
3
|
private entityLookup;
|
|
4
|
+
private onEntityAddedObservers;
|
|
5
|
+
addEntityAddedObserver: (observer: (addedEntity: T) => void) => void;
|
|
6
|
+
removeEntityAddedObserver: (observer: (addedEntity: T) => void) => void;
|
|
7
|
+
private onEntityRemovedObservers;
|
|
8
|
+
addEntityRemovedObserver: (observer: (removedEntity: T) => void) => void;
|
|
9
|
+
removeEntityRemovedObserver: (observer: (removedEntity: T) => void) => void;
|
|
4
10
|
has: (id: string) => boolean;
|
|
5
11
|
add: (id: string, entity: T) => void;
|
|
6
12
|
remove: (id: string) => void;
|
|
@@ -2,10 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ObservableEntityRepo = void 0;
|
|
4
4
|
const ObservableEntity_1 = require("./ObservableEntity");
|
|
5
|
+
const ObserverList_1 = require("./ObserverList");
|
|
5
6
|
class ObservableEntityRepo extends ObservableEntity_1.ObservableEntity {
|
|
6
7
|
constructor() {
|
|
7
8
|
super(...arguments);
|
|
8
9
|
this.entityLookup = new Map();
|
|
10
|
+
this.onEntityAddedObservers = new ObserverList_1.ObserverList();
|
|
11
|
+
this.addEntityAddedObserver = (observer) => {
|
|
12
|
+
this.onEntityAddedObservers.add(observer);
|
|
13
|
+
};
|
|
14
|
+
this.removeEntityAddedObserver = (observer) => {
|
|
15
|
+
this.onEntityAddedObservers.remove(observer);
|
|
16
|
+
};
|
|
17
|
+
this.onEntityRemovedObservers = new ObserverList_1.ObserverList();
|
|
18
|
+
this.addEntityRemovedObserver = (observer) => {
|
|
19
|
+
this.onEntityRemovedObservers.add(observer);
|
|
20
|
+
};
|
|
21
|
+
this.removeEntityRemovedObserver = (observer) => {
|
|
22
|
+
this.onEntityRemovedObservers.remove(observer);
|
|
23
|
+
};
|
|
9
24
|
this.has = (id) => {
|
|
10
25
|
return this.entityLookup.has(id);
|
|
11
26
|
};
|
|
@@ -17,6 +32,7 @@ class ObservableEntityRepo extends ObservableEntity_1.ObservableEntity {
|
|
|
17
32
|
this.entityLookup.set(id, entity);
|
|
18
33
|
entity.addObserver(this.notify);
|
|
19
34
|
this.notify();
|
|
35
|
+
this.onEntityAddedObservers.notify(entity);
|
|
20
36
|
};
|
|
21
37
|
this.remove = (id) => {
|
|
22
38
|
const existing = this.entityLookup.get(id);
|
|
@@ -25,12 +41,14 @@ class ObservableEntityRepo extends ObservableEntity_1.ObservableEntity {
|
|
|
25
41
|
this.entityLookup.delete(id);
|
|
26
42
|
existing.removeObserver(this.notify);
|
|
27
43
|
this.notify();
|
|
44
|
+
this.onEntityRemovedObservers.notify(existing);
|
|
28
45
|
};
|
|
29
46
|
this.clear = () => {
|
|
30
47
|
if (this.entityLookup.size === 0)
|
|
31
48
|
return;
|
|
32
49
|
this.entityLookup.forEach((entity) => {
|
|
33
50
|
entity.removeObserver(this.notify);
|
|
51
|
+
this.onEntityRemovedObservers.notify(entity);
|
|
34
52
|
});
|
|
35
53
|
this.entityLookup.clear();
|
|
36
54
|
this.notify();
|
|
@@ -47,11 +65,13 @@ class ObservableEntityRepo extends ObservableEntity_1.ObservableEntity {
|
|
|
47
65
|
}
|
|
48
66
|
this.entityLookup.forEach((entity) => {
|
|
49
67
|
entity.removeObserver(this.notify);
|
|
68
|
+
this.onEntityRemovedObservers.notify(entity);
|
|
50
69
|
});
|
|
51
70
|
this.entityLookup.clear();
|
|
52
71
|
entities.forEach((e) => {
|
|
53
72
|
this.entityLookup.set(e.id, e.entity);
|
|
54
73
|
e.entity.addObserver(this.notify);
|
|
74
|
+
this.onEntityAddedObservers.notify(e.entity);
|
|
55
75
|
});
|
|
56
76
|
this.notify();
|
|
57
77
|
};
|