UNPKG

@vindev/particle

Version:

Angular Component Library using Tailwind

73 lines 9.07 kB
import { Directive, Input, } from '@angular/core'; import { AtmDataSource } from '../utils/datasource'; import { Subject, BehaviorSubject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import * as i0 from "@angular/core"; export function DataSourceMixin(Base = class { }) { class DataSource extends Base { constructor() { super(...arguments); this._dataBehavior = new BehaviorSubject([]); this._onDestroy = new Subject(); this._loadSize = 1; } get dataSource() { return this._dataSource; } set dataSource(dataSource) { if (this._dataSource !== dataSource) { this._dataBehavior.next([]); if (this.dataSource) { this.dataSource.disconnect(); } if (this._renderChangeSubscription) { this._renderChangeSubscription.unsubscribe(); this._renderChangeSubscription = null; } this._dataSource = dataSource; this.dataSourceSwitched(); } } get data() { return this._dataBehavior.getValue(); } get loadSize() { return this._loadSize; } set loadSize(loadSize) { this._loadSize = loadSize; } ngOnDestroy() { this._onDestroy.next(); this._onDestroy.complete(); if (this.dataSource) { this.dataSource.disconnect(); } } ngAfterContentChecked() { if (!this.dataSource) { return; } if (!this._renderChangeSubscription) { const dataStream = this.dataSource.connect(); this._renderChangeSubscription = dataStream .pipe(takeUntil(this._onDestroy)) .subscribe((data) => { this._dataBehavior.next(this._dataBehavior.getValue().concat(data)); }); } } } DataSource.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DataSource, deps: null, target: i0.ɵɵFactoryTarget.Directive }); DataSource.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: DataSource, inputs: { dataSource: "dataSource", loadSize: "loadSize" }, usesInheritance: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DataSource, decorators: [{ type: Directive }], propDecorators: { dataSource: [{ type: Input }], loadSize: [{ type: Input }] } }); return DataSource; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UubWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BhcnRpY2xlLWxpYi9zcmMvbGliL3NoYXJlZC9taXhpbnMvZGF0YS1zb3VyY2UubWl4aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBZ0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTNDLE1BQU0sVUFBVSxlQUFlLENBQzdCLE9BQVU7Q0FBZTtJQUV6QixNQUNlLFVBQ2IsU0FBUSxJQUFJO1FBRmQ7O1lBTUUsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztZQUM3QyxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztZQW9DakMsY0FBUyxHQUFHLENBQUMsQ0FBQztTQWtDZjtRQXBFQyxJQUNJLFVBQVU7WUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLFVBQTRCO1lBQ3pDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUU1QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7aUJBQzlCO2dCQUVELElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO29CQUNsQyxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQzdDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7aUJBQ3ZDO2dCQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO2dCQUM5QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMzQjtRQUNILENBQUM7UUFFRCxJQUFJLElBQUk7WUFDTixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkMsQ0FBQztRQUVELElBQ0ksUUFBUTtZQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsUUFBZ0I7WUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDNUIsQ0FBQztRQUlELFdBQVc7WUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFM0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQzlCO1FBQ0gsQ0FBQztRQUVELHFCQUFxQjtZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsT0FBTzthQUNSO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtnQkFDbkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFFN0MsSUFBSSxDQUFDLHlCQUF5QixHQUFHLFVBQVU7cUJBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3FCQUNoQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDdEUsQ0FBQyxDQUFDLENBQUM7YUFDTjtRQUNILENBQUM7OzJHQW5FWSxVQUFVOytGQUFWLFVBQVU7K0ZBQVYsVUFBVTtzQkFEeEIsU0FBUztrQ0FVSixVQUFVOzBCQURiLEtBQUs7b0JBMkJGLFFBQVE7MEJBRFgsS0FBSzs7SUEyQ1IsT0FBTyxVQUFVLENBQUM7Q0FDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERpcmVjdGl2ZSxcclxuICBJbnB1dCxcclxuICBBZnRlckNvbnRlbnRDaGVja2VkLFxyXG4gIE9uRGVzdHJveSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tICcuLyc7XHJcbmltcG9ydCB7IEF0bURhdGFTb3VyY2UgfSBmcm9tICcuLi91dGlscy9kYXRhc291cmNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIERhdGFTb3VyY2VNaXhpbjxUIGV4dGVuZHMgQ29uc3RydWN0b3I8e30+LCBJPihcclxuICBCYXNlOiBUID0gY2xhc3Mge30gYXMgYW55XHJcbikge1xyXG4gIEBEaXJlY3RpdmUoKVxyXG4gIGFic3RyYWN0IGNsYXNzIERhdGFTb3VyY2VcclxuICAgIGV4dGVuZHMgQmFzZVxyXG4gICAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkRlc3Ryb3kge1xyXG4gICAgX2RhdGFTb3VyY2UhOiBBdG1EYXRhU291cmNlPEk+O1xyXG4gICAgX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbiB8IG51bGw7XHJcbiAgICBfZGF0YUJlaGF2aW9yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJW10+KFtdKTtcclxuICAgIF9vbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZGF0YVNvdXJjZSgpOiBBdG1EYXRhU291cmNlPEk+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2U7XHJcbiAgICB9XHJcbiAgICBzZXQgZGF0YVNvdXJjZShkYXRhU291cmNlOiBBdG1EYXRhU291cmNlPEk+KSB7XHJcbiAgICAgIGlmICh0aGlzLl9kYXRhU291cmNlICE9PSBkYXRhU291cmNlKSB7XHJcbiAgICAgICAgdGhpcy5fZGF0YUJlaGF2aW9yLm5leHQoW10pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB0aGlzLl9yZW5kZXJDaGFuZ2VTdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlU3dpdGNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBkYXRhKCk6IElbXSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9kYXRhQmVoYXZpb3IuZ2V0VmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGxvYWRTaXplKCk6IG51bWJlciB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9sb2FkU2l6ZTtcclxuICAgIH1cclxuICAgIHNldCBsb2FkU2l6ZShsb2FkU2l6ZTogbnVtYmVyKSB7XHJcbiAgICAgIHRoaXMuX2xvYWRTaXplID0gbG9hZFNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgX2xvYWRTaXplID0gMTtcclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgdGhpcy5fb25EZXN0cm95Lm5leHQoKTtcclxuICAgICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YVN0cmVhbSA9IHRoaXMuZGF0YVNvdXJjZS5jb25uZWN0KCk7XHJcblxyXG4gICAgICAgIHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbiA9IGRhdGFTdHJlYW1cclxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9kYXRhQmVoYXZpb3IubmV4dCh0aGlzLl9kYXRhQmVoYXZpb3IuZ2V0VmFsdWUoKS5jb25jYXQoZGF0YSkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIER1cmluZyBhIGRhdGEgc291cmNlIHN3aXRjaCB0aGVyZSBtYXkgYmUgYWRkaXRpb25hbFxyXG4gICAgICogb3BlcmF0aW9ucyB0aGF0IG1heSBuZWVkIHRvIGJlIHBlcmZvcm1lZC5cclxuICAgICAqIFRoaXMgYWJzdHJhY3QgbWV0aG9kIGlzIGNhbGxlZCBwcm9jZWVkaW5nIGFsbCBEU1xyXG4gICAgICogc3dpdGNoIGxvZ2ljLlxyXG4gICAgICovXHJcbiAgICBhYnN0cmFjdCBkYXRhU291cmNlU3dpdGNoZWQoKTogdm9pZDtcclxuICB9XHJcbiAgcmV0dXJuIERhdGFTb3VyY2U7XHJcbn1cclxuIl19