@bimeister/pupakit.tree
Version:
PupaKit Tree
25 lines • 3.89 kB
JavaScript
import { DataSource } from '@angular/cdk/collections';
import { isNil, shareReplayWithRefCount } from '@bimeister/utilities';
import { BehaviorSubject, combineLatest } from 'rxjs';
import { filter, map } from 'rxjs/operators';
import './flat-tree-item.class';
export class TreeRangedDataSource extends DataSource {
constructor(data$) {
super();
this.data$ = data$;
this.range$ = new BehaviorSubject(null);
}
setRange(range) {
this.range$.next(range);
}
connect() {
return combineLatest([this.data$, this.range$]).pipe(filter(([data, range]) => Array.isArray(data) && !isNil(range)), map(([data, range]) => {
const { start, end } = range;
return data.slice(start, end);
}), shareReplayWithRefCount());
}
disconnect() {
return;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1yYW5nZWQtZGF0YS1zb3VyY2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVjbGFyYXRpb25zL2NsYXNzZXMvdHJlZS1yYW5nZWQtZGF0YS1zb3VyY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQTZCLHdCQUF3QixDQUFDO0FBRXRELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUF3QjtJQUdoRSxZQUE2QixLQUFpQztRQUM1RCxLQUFLLEVBQUUsQ0FBQztRQURtQixVQUFLLEdBQUwsS0FBSyxDQUE0QjtRQUY3QyxXQUFNLEdBQStCLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBSWhGLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBZ0I7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNsRCxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQThCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDNUYsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUE4QixFQUFFLEVBQUU7WUFDakQsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBYyxLQUFLLENBQUM7WUFDeEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsRUFDRix1QkFBdUIsRUFBRSxDQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPO0lBQ1QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSwgTGlzdFJhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IGlzTmlsLCBzaGFyZVJlcGxheVdpdGhSZWZDb3VudCB9IGZyb20gJ0BiaW1laXN0ZXIvdXRpbGl0aWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGbGF0VHJlZUl0ZW0gfSBmcm9tICcuL2ZsYXQtdHJlZS1pdGVtLmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIFRyZWVSYW5nZWREYXRhU291cmNlIGV4dGVuZHMgRGF0YVNvdXJjZTxGbGF0VHJlZUl0ZW0+IHtcbiAgcHJpdmF0ZSByZWFkb25seSByYW5nZSQ6IEJlaGF2aW9yU3ViamVjdDxMaXN0UmFuZ2U+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPEZsYXRUcmVlSXRlbVtdPikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0UmFuZ2UocmFuZ2U6IExpc3RSYW5nZSk6IHZvaWQge1xuICAgIHRoaXMucmFuZ2UkLm5leHQocmFuZ2UpO1xuICB9XG5cbiAgcHVibGljIGNvbm5lY3QoKTogT2JzZXJ2YWJsZTxGbGF0VHJlZUl0ZW1bXT4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmRhdGEkLCB0aGlzLnJhbmdlJF0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtkYXRhLCByYW5nZV06IFtGbGF0VHJlZUl0ZW1bXSwgTGlzdFJhbmdlXSkgPT4gQXJyYXkuaXNBcnJheShkYXRhKSAmJiAhaXNOaWwocmFuZ2UpKSxcbiAgICAgIG1hcCgoW2RhdGEsIHJhbmdlXTogW0ZsYXRUcmVlSXRlbVtdLCBMaXN0UmFuZ2VdKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9OiBMaXN0UmFuZ2UgPSByYW5nZTtcbiAgICAgICAgcmV0dXJuIGRhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5V2l0aFJlZkNvdW50KClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRpc2Nvbm5lY3QoKTogdm9pZCB7XG4gICAgcmV0dXJuO1xuICB9XG59XG4iXX0=