UNPKG

@schoolbelle/common

Version:

275 lines (269 loc) 7.69 kB
import { Subject, BehaviorSubject } from 'rxjs'; import { concatMap, switchMap, share, finalize, mergeMap, throttleTime } from 'rxjs/operators'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @enum {string} */ var QueueActions = { RESET: 'RESET', ADD: 'ADD', }; /** * @template T */ var /** * @template T */ ObservableCascadeQueue = /** @class */ (function () { function ObservableCascadeQueue() { var _this = this; this._commands = new Subject(); this._queues = new BehaviorSubject(new Subject()); this.queue$ = this._queues.asObservable().pipe(switchMap((/** * @param {?} queue * @return {?} */ function (queue) { return queue.pipe(concatMap((/** * @param {?} item * @return {?} */ function (item) { return item; }))); })), share()); this.sizeChangeEvent = new Subject(); this._size = 0; this._commands.asObservable().subscribe((/** * @param {?} command * @return {?} */ function (command) { switch (command && command.action) { case QueueActions.RESET: _this._queues.next(new Subject()); break; case QueueActions.ADD: _this._queues.value.next(command.payload); break; default: _this._queues.value.error("[ObservableQueue] unknown command: " + JSON.stringify(command)); } })); this.queue$.subscribe(); } Object.defineProperty(ObservableCascadeQueue.prototype, "size", { get: /** * @return {?} */ function () { return this._size; }, set: /** * @param {?} v * @return {?} */ function (v) { this._size = v; this.sizeChangeEvent.next(v); }, enumerable: true, configurable: true }); Object.defineProperty(ObservableCascadeQueue.prototype, "onSizeChange", { get: /** * @return {?} */ function () { return this.sizeChangeEvent.asObservable(); }, enumerable: true, configurable: true }); // add(item: ObservableInput<T>): this { // add(item: ObservableInput<T>): this { /** * @template THIS * @this {THIS} * @param {?} item * @return {THIS} */ ObservableCascadeQueue.prototype.add = // add(item: ObservableInput<T>): this { /** * @template THIS * @this {THIS} * @param {?} item * @return {THIS} */ function (item) { var _this = this; setTimeout((/** * @return {?} */ function () { (/** @type {?} */ (_this)).size++; item = item.pipe(finalize((/** * @return {?} */ function () { return (/** @type {?} */ (_this)).size--; }))); (/** @type {?} */ (_this))._commands.next({ action: QueueActions.ADD, payload: item }); })); return (/** @type {?} */ (this)); }; /** * @template THIS * @this {THIS} * @return {THIS} */ ObservableCascadeQueue.prototype.reset = /** * @template THIS * @this {THIS} * @return {THIS} */ function () { (/** @type {?} */ (this)).size = 0; (/** @type {?} */ (this))._commands.next({ action: QueueActions.RESET }); return (/** @type {?} */ (this)); }; /** * @return {?} */ ObservableCascadeQueue.prototype.destroy = /** * @return {?} */ function () { this._commands.complete(); this._queues.value.complete(); this._queues.complete(); }; /** * @return {?} */ ObservableCascadeQueue.prototype.asObservable = /** * @return {?} */ function () { return this.queue$; }; return ObservableCascadeQueue; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @enum {string} */ var QueueActions$1 = { RESET: 'RESET', ADD: 'ADD', }; /** * @template T */ var /** * @template T */ ObservableThottleQueue = /** @class */ (function () { function ObservableThottleQueue() { var _this = this; this._commands = new Subject(); this._queues = new BehaviorSubject(new Subject()); this.queue$ = this._queues.asObservable().pipe(switchMap((/** * @param {?} queue * @return {?} */ function (queue) { return queue.pipe(throttleTime(100), mergeMap((/** * @param {?} item * @return {?} */ function (item) { return item; }), 5) // tap(e=>console.log((<any>e).option.text, (<any>e).type, (<any>e).checking)) ); })), share()); this._commands.asObservable().subscribe((/** * @param {?} command * @return {?} */ function (command) { switch (command && command.action) { case QueueActions$1.RESET: _this._queues.next(new Subject()); break; case QueueActions$1.ADD: _this._queues.value.next(command.payload); break; default: _this._queues.value.error("[ObservableQueue] unknown command: " + JSON.stringify(command)); } })); this.queue$.subscribe(); } /** * @template THIS * @this {THIS} * @param {?} item * @return {THIS} */ ObservableThottleQueue.prototype.add = /** * @template THIS * @this {THIS} * @param {?} item * @return {THIS} */ function (item) { var _this = this; setTimeout((/** * @return {?} */ function () { return (/** @type {?} */ (_this))._commands.next({ action: QueueActions$1.ADD, payload: item }); })); // this._commands.next({action: QueueActions.ADD, payload: item}); return (/** @type {?} */ (this)); }; /** * @template THIS * @this {THIS} * @return {THIS} */ ObservableThottleQueue.prototype.reset = /** * @template THIS * @this {THIS} * @return {THIS} */ function () { (/** @type {?} */ (this))._commands.next({ action: QueueActions$1.RESET }); return (/** @type {?} */ (this)); }; /** * @return {?} */ ObservableThottleQueue.prototype.destroy = /** * @return {?} */ function () { this._commands.complete(); this._queues.value.complete(); this._queues.complete(); }; /** * @return {?} */ ObservableThottleQueue.prototype.asObservable = /** * @return {?} */ function () { return this.queue$; }; return ObservableThottleQueue; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { ObservableCascadeQueue, ObservableThottleQueue }; //# sourceMappingURL=schoolbelle-common-observable-queue.js.map