1 | import { ReplaySubject, Subscription } from 'rxjs';
|
2 | export class ChangeFilterV2 {
|
3 | constructor() {
|
4 | this.subject = new ReplaySubject(1);
|
5 | this.subscriptions = new Subscription();
|
6 | }
|
7 | doFilter(changes) {
|
8 | this.subject.next(changes);
|
9 | }
|
10 | dispose() {
|
11 | this.subscriptions.unsubscribe();
|
12 | }
|
13 | notEmpty(key, handler) {
|
14 | this.subscriptions.add(this.subject.subscribe(changes => {
|
15 | if (changes[key]) {
|
16 | const value = changes[key].currentValue;
|
17 | if (value !== undefined && value !== null) {
|
18 | handler(value);
|
19 | }
|
20 | }
|
21 | }));
|
22 | }
|
23 | has(key, handler) {
|
24 | this.subscriptions.add(this.subject.subscribe(changes => {
|
25 | if (changes[key]) {
|
26 | const value = changes[key].currentValue;
|
27 | handler(value);
|
28 | }
|
29 | }));
|
30 | }
|
31 | notFirst(key, handler) {
|
32 | this.subscriptions.add(this.subject.subscribe(changes => {
|
33 | if (changes[key] && !changes[key].isFirstChange()) {
|
34 | const value = changes[key].currentValue;
|
35 | handler(value);
|
36 | }
|
37 | }));
|
38 | }
|
39 | notFirstAndEmpty(key, handler) {
|
40 | this.subscriptions.add(this.subject.subscribe(changes => {
|
41 | if (changes[key] && !changes[key].isFirstChange()) {
|
42 | const value = changes[key].currentValue;
|
43 | if (value !== undefined && value !== null) {
|
44 | handler(value);
|
45 | }
|
46 | }
|
47 | }));
|
48 | }
|
49 | }
|
50 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWZpbHRlci12Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lY2hhcnRzL3NyYy9saWIvY2hhbmdlLWZpbHRlci12Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuRCxNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUNVLFlBQU8sR0FBRyxJQUFJLGFBQWEsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDOUMsa0JBQWEsR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQXlEM0QsQ0FBQztJQXZEQyxRQUFRLENBQUMsT0FBc0I7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxRQUFRLENBQUksR0FBVyxFQUFFLE9BQXVCO1FBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMvQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEIsTUFBTSxLQUFLLEdBQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDM0MsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7b0JBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDaEI7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsR0FBRyxDQUFJLEdBQVcsRUFBRSxPQUF1QjtRQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2hCLE1BQU0sS0FBSyxHQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUM7Z0JBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNoQjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUSxDQUFJLEdBQVcsRUFBRSxPQUF1QjtRQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pELE1BQU0sS0FBSyxHQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUM7Z0JBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNoQjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUksR0FBVyxFQUFFLE9BQXVCO1FBQ3RELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMvQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDakQsTUFBTSxLQUFLLEdBQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDM0MsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7b0JBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDaEI7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIENoYW5nZUZpbHRlclYyIHtcbiAgcHJpdmF0ZSBzdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8U2ltcGxlQ2hhbmdlcz4oMSk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGRvRmlsdGVyKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLnN1YmplY3QubmV4dChjaGFuZ2VzKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBub3RFbXB0eTxUPihrZXk6IHN0cmluZywgaGFuZGxlcjogKHQ6IFQpID0+IHZvaWQpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdWJqZWN0LnN1YnNjcmliZShjaGFuZ2VzID0+IHtcbiAgICAgICAgaWYgKGNoYW5nZXNba2V5XSkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlOiBUID0gY2hhbmdlc1trZXldLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGFuZGxlcih2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBoYXM8VD4oa2V5OiBzdHJpbmcsIGhhbmRsZXI6ICh0OiBUKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3ViamVjdC5zdWJzY3JpYmUoY2hhbmdlcyA9PiB7XG4gICAgICAgIGlmIChjaGFuZ2VzW2tleV0pIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZTogVCA9IGNoYW5nZXNba2V5XS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgaGFuZGxlcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5vdEZpcnN0PFQ+KGtleTogc3RyaW5nLCBoYW5kbGVyOiAodDogVCkgPT4gdm9pZCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN1YmplY3Quc3Vic2NyaWJlKGNoYW5nZXMgPT4ge1xuICAgICAgICBpZiAoY2hhbmdlc1trZXldICYmICFjaGFuZ2VzW2tleV0uaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWU6IFQgPSBjaGFuZ2VzW2tleV0uY3VycmVudFZhbHVlO1xuICAgICAgICAgIGhhbmRsZXIodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBub3RGaXJzdEFuZEVtcHR5PFQ+KGtleTogc3RyaW5nLCBoYW5kbGVyOiAodDogVCkgPT4gdm9pZCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN1YmplY3Quc3Vic2NyaWJlKGNoYW5nZXMgPT4ge1xuICAgICAgICBpZiAoY2hhbmdlc1trZXldICYmICFjaGFuZ2VzW2tleV0uaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWU6IFQgPSBjaGFuZ2VzW2tleV0uY3VycmVudFZhbHVlO1xuICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoYW5kbGVyKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19 |
\ | No newline at end of file |