@bimeister/pupakit.tree
Version:
PupaKit Tree
39 lines • 6.19 kB
JavaScript
import '@angular/core';
import { isNil } from '@bimeister/utilities';
import { DEFAULT_TREE_ITEM_SIZE_PX } from '../constants/default-tree-item-size-px.const';
import { BehaviorSubject } from 'rxjs';
import { take } from 'rxjs/operators';
import '../interfaces/tree-data-display-collection-ref.interface';
import './flat-tree-item.class';
export class TreeDataDisplayCollection {
constructor() {
this.data$ = new BehaviorSubject([]);
this.selectedIdsList$ = new BehaviorSubject([]);
this.trackBy$ = new BehaviorSubject(TreeDataDisplayCollection.trackBy);
this.scrollBehavior$ = new BehaviorSubject('smooth');
this.expandedIdsList$ = new BehaviorSubject([]);
this.hasDragAndDrop$ = new BehaviorSubject(false);
this.treeItemSizePx$ = new BehaviorSubject(DEFAULT_TREE_ITEM_SIZE_PX);
this.isLoading$ = new BehaviorSubject(false);
}
setExpandedIdsList(value) {
this.expandedIdsList$.next(value);
}
setIsLoading(value) {
this.isLoading$.next(value);
}
setData(data) {
this.data$.next(data);
return this.data$.pipe(take(1));
}
setSelectedIdsList(value) {
this.selectedIdsList$.next(value);
}
}
TreeDataDisplayCollection.trackBy = (index, dataItem) => {
if (isNil(dataItem)) {
return `${index}__null`;
}
return `${index}__${JSON.stringify(dataItem)}`;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1kYXRhLWRpc3BsYXktY29sbGVjdGlvbi5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZWNsYXJhdGlvbnMvY2xhc3Nlcy90cmVlLWRhdGEtZGlzcGxheS1jb2xsZWN0aW9uLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQWdDLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBdUIsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQTZDLDBEQUEwRCxDQUFDO0FBQ3hHLE9BQTZCLHdCQUF3QixDQUFDO0FBRXRELE1BQU0sT0FBTyx5QkFBeUI7SUFBdEM7UUFDa0IsVUFBSyxHQUFvQyxJQUFJLGVBQWUsQ0FBaUIsRUFBRSxDQUFDLENBQUM7UUFDakYscUJBQWdCLEdBQThCLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXRFLGFBQVEsR0FBMkMsSUFBSSxlQUFlLENBQ3BGLHlCQUF5QixDQUFDLE9BQU8sQ0FDbEMsQ0FBQztRQUNjLG9CQUFlLEdBQW9DLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pGLHFCQUFnQixHQUE4QixJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RSxvQkFBZSxHQUE2QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RSxvQkFBZSxHQUE0QixJQUFJLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzFGLGVBQVUsR0FBNkIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUF5QnBGLENBQUM7SUF2QlEsa0JBQWtCLENBQUMsS0FBZTtRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBYztRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sT0FBTyxDQUFDLElBQW9CO1FBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLGtCQUFrQixDQUFDLEtBQWU7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDOztBQUVzQixpQ0FBTyxHQUF5QixDQUFJLEtBQWEsRUFBRSxRQUFXLEVBQVUsRUFBRTtJQUMvRixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUNuQixPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUM7S0FDekI7SUFDRCxPQUFPLEdBQUcsS0FBSyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUNqRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFja0J5RnVuY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnQGJpbWVpc3Rlci91dGlsaXRpZXMnO1xuaW1wb3J0IHsgREVGQVVMVF9UUkVFX0lURU1fU0laRV9QWCB9IGZyb20gJy4uL2NvbnN0YW50cy9kZWZhdWx0LXRyZWUtaXRlbS1zaXplLXB4LmNvbnN0JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRyZWVEYXRhRGlzcGxheUNvbGxlY3Rpb25SZWYgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RyZWUtZGF0YS1kaXNwbGF5LWNvbGxlY3Rpb24tcmVmLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGbGF0VHJlZUl0ZW0gfSBmcm9tICcuL2ZsYXQtdHJlZS1pdGVtLmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIFRyZWVEYXRhRGlzcGxheUNvbGxlY3Rpb24gaW1wbGVtZW50cyBUcmVlRGF0YURpc3BsYXlDb2xsZWN0aW9uUmVmIHtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGEkOiBCZWhhdmlvclN1YmplY3Q8RmxhdFRyZWVJdGVtW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGbGF0VHJlZUl0ZW1bXT4oW10pO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRJZHNMaXN0JDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuXG4gIHB1YmxpYyByZWFkb25seSB0cmFja0J5JDogU3ViamVjdDxUcmFja0J5RnVuY3Rpb248RmxhdFRyZWVJdGVtPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyYWNrQnlGdW5jdGlvbjxGbGF0VHJlZUl0ZW0+PihcbiAgICBUcmVlRGF0YURpc3BsYXlDb2xsZWN0aW9uLnRyYWNrQnlcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHNjcm9sbEJlaGF2aW9yJDogQmVoYXZpb3JTdWJqZWN0PFNjcm9sbEJlaGF2aW9yPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoJ3Ntb290aCcpO1xuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5kZWRJZHNMaXN0JDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuICBwdWJsaWMgcmVhZG9ubHkgaGFzRHJhZ0FuZERyb3AkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHRyZWVJdGVtU2l6ZVB4JDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KERFRkFVTFRfVFJFRV9JVEVNX1NJWkVfUFgpO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNMb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIHNldEV4cGFuZGVkSWRzTGlzdCh2YWx1ZTogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZGVkSWRzTGlzdCQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXNMb2FkaW5nKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0xvYWRpbmckLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHNldERhdGEoZGF0YTogRmxhdFRyZWVJdGVtW10pOiBPYnNlcnZhYmxlPEZsYXRUcmVlSXRlbVtdPiB7XG4gICAgdGhpcy5kYXRhJC5uZXh0KGRhdGEpO1xuICAgIHJldHVybiB0aGlzLmRhdGEkLnBpcGUodGFrZSgxKSk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2VsZWN0ZWRJZHNMaXN0KHZhbHVlOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJZHNMaXN0JC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHJhY2tCeTogVHJhY2tCeUZ1bmN0aW9uPGFueT4gPSA8VD4oaW5kZXg6IG51bWJlciwgZGF0YUl0ZW06IFQpOiBzdHJpbmcgPT4ge1xuICAgIGlmIChpc05pbChkYXRhSXRlbSkpIHtcbiAgICAgIHJldHVybiBgJHtpbmRleH1fX251bGxgO1xuICAgIH1cbiAgICByZXR1cm4gYCR7aW5kZXh9X18ke0pTT04uc3RyaW5naWZ5KGRhdGFJdGVtKX1gO1xuICB9O1xufVxuIl19