ng-block-ui
Version:
Angular Block UI
71 lines • 9.77 kB
JavaScript
import { Injectable } from '@angular/core';
import { ReplaySubject } from 'rxjs';
import { BlockUIActions } from '../constants/block-ui-actions.constant';
import { BlockUIDefaultName } from '../constants/block-ui-default-name.constant';
import * as i0 from "@angular/core";
export class BlockUIInstanceService {
constructor() {
this.blockUISettings = {};
this.blockUIInstances = {};
this.blockUISubject = new ReplaySubject(1);
this.blockUIObservable = this.blockUISubject.asObservable();
this.blockUIObservable.subscribe(this.blockUIMiddleware.bind(this));
}
getSettings() {
return this.blockUISettings;
}
updateSettings(settings = {}) {
this.blockUISettings = { ...this.blockUISettings, ...settings };
}
decorate(name = BlockUIDefaultName) {
const blockUI = {
name,
isActive: false,
blockCount: 0,
start: this.dispatch(this.blockUISubject, BlockUIActions.START, name),
update: this.dispatch(this.blockUISubject, BlockUIActions.UPDATE, name),
stop: this.dispatch(this.blockUISubject, BlockUIActions.STOP, name),
reset: this.dispatch(this.blockUISubject, BlockUIActions.RESET, name),
resetGlobal: this.dispatch(this.blockUISubject, BlockUIActions.RESET_GLOBAL, name),
unsubscribe: this.dispatch(this.blockUISubject, BlockUIActions.UNSUBSCRIBE, name)
};
this.blockUIInstances[name] = this.blockUIInstances[name] || blockUI;
return blockUI;
}
observe() {
return this.blockUIObservable;
}
clearInstance(instanceName) {
this.dispatch(this.blockUISubject, BlockUIActions.RESET, instanceName);
}
blockUIMiddleware({ action, name }) {
let isActive = null;
switch (action) {
case (BlockUIActions.START):
isActive = true;
break;
case (BlockUIActions.STOP):
case (BlockUIActions.RESET):
isActive = false;
break;
}
if (isActive !== null) {
this.blockUIInstances[name].isActive = isActive;
}
}
dispatch(subject, action, name = BlockUIDefaultName) {
return (message) => {
subject.next({
name,
action,
message
});
};
}
}
BlockUIInstanceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BlockUIInstanceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
BlockUIInstanceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BlockUIInstanceService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BlockUIInstanceService, decorators: [{
type: Injectable
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stdWktaW5zdGFuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zZXJ2aWNlcy9ibG9jay11aS1pbnN0YW5jZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBT2pGLE1BQU0sT0FBTyxzQkFBc0I7SUFNakM7UUFMQSxvQkFBZSxHQUEwQixFQUFFLENBQUM7UUFDNUMscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBQ25CLG1CQUFjLEdBQXVCLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELHNCQUFpQixHQUFvQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRzlFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBa0MsRUFBRTtRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlLGtCQUFrQjtRQUN4QyxNQUFNLE9BQU8sR0FBRztZQUNkLElBQUk7WUFDSixRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVUsRUFBRSxDQUFDO1lBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztZQUNyRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1lBQ3ZFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7WUFDbkUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztZQUNyRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDO1lBQ2xGLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUM7U0FDckUsQ0FBQztRQUVmLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDO1FBRXJFLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxZQUFvQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8saUJBQWlCLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFnQjtRQUN0RCxJQUFJLFFBQVEsR0FBWSxJQUFJLENBQUM7UUFFN0IsUUFBUSxNQUFNLEVBQUU7WUFDZCxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztnQkFDekIsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDaEIsTUFBTTtZQUVSLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3pCLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ2pCLE1BQU07U0FDVDtRQUVELElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtZQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFFTyxRQUFRLENBQUMsT0FBMkIsRUFBRSxNQUFzQixFQUFFLE9BQWUsa0JBQWtCO1FBQ3JHLE9BQU8sQ0FBQyxPQUFhLEVBQVEsRUFBRTtZQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLElBQUk7Z0JBQ0osTUFBTTtnQkFDTixPQUFPO2FBQ1IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7bUhBdkVVLHNCQUFzQjt1SEFBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCbG9ja1VJQWN0aW9ucyB9IGZyb20gJy4uL2NvbnN0YW50cy9ibG9jay11aS1hY3Rpb25zLmNvbnN0YW50JztcbmltcG9ydCB7IEJsb2NrVUlEZWZhdWx0TmFtZSB9IGZyb20gJy4uL2NvbnN0YW50cy9ibG9jay11aS1kZWZhdWx0LW5hbWUuY29uc3RhbnQnO1xuaW1wb3J0IHsgTmdCbG9ja1VJIH0gZnJvbSAnLi4vbW9kZWxzL2Jsb2NrLXVpLm1vZGVsJztcbmltcG9ydCB7IEJsb2NrVUlTZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy9ibG9jay11aS1zZXR0aW5ncy5tb2RlbCc7XG5pbXBvcnQgeyBCbG9ja1VJRXZlbnQgfSBmcm9tICcuLi9tb2RlbHMvYmxvY2stdWktZXZlbnQubW9kZWwnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCbG9ja1VJSW5zdGFuY2VTZXJ2aWNlIHtcbiAgYmxvY2tVSVNldHRpbmdzOiBCbG9ja1VJU2V0dGluZ3MgfCBhbnkgPSB7fTtcbiAgYmxvY2tVSUluc3RhbmNlczogYW55ID0ge307XG4gIHByaXZhdGUgYmxvY2tVSVN1YmplY3Q6IFJlcGxheVN1YmplY3Q8YW55PiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICBwcml2YXRlIGJsb2NrVUlPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLmJsb2NrVUlTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYmxvY2tVSU9ic2VydmFibGUuc3Vic2NyaWJlKHRoaXMuYmxvY2tVSU1pZGRsZXdhcmUuYmluZCh0aGlzKSk7XG4gIH1cblxuICBnZXRTZXR0aW5ncygpOiBCbG9ja1VJU2V0dGluZ3MgfCBhbnkge1xuICAgIHJldHVybiB0aGlzLmJsb2NrVUlTZXR0aW5ncztcbiAgfVxuXG4gIHVwZGF0ZVNldHRpbmdzKHNldHRpbmdzOiBCbG9ja1VJU2V0dGluZ3MgfCBhbnkgPSB7fSk6IHZvaWQge1xuICAgIHRoaXMuYmxvY2tVSVNldHRpbmdzID0geyAuLi50aGlzLmJsb2NrVUlTZXR0aW5ncywgLi4uc2V0dGluZ3MgfTtcbiAgfVxuXG4gIGRlY29yYXRlKG5hbWU6IHN0cmluZyA9IEJsb2NrVUlEZWZhdWx0TmFtZSk6IE5nQmxvY2tVSSB7XG4gICAgY29uc3QgYmxvY2tVSSA9IHtcbiAgICAgIG5hbWUsXG4gICAgICBpc0FjdGl2ZTogZmFsc2UsXG4gICAgICBibG9ja0NvdW50OiAwLFxuICAgICAgc3RhcnQ6IHRoaXMuZGlzcGF0Y2godGhpcy5ibG9ja1VJU3ViamVjdCwgQmxvY2tVSUFjdGlvbnMuU1RBUlQsIG5hbWUpLFxuICAgICAgdXBkYXRlOiB0aGlzLmRpc3BhdGNoKHRoaXMuYmxvY2tVSVN1YmplY3QsIEJsb2NrVUlBY3Rpb25zLlVQREFURSwgbmFtZSksXG4gICAgICBzdG9wOiB0aGlzLmRpc3BhdGNoKHRoaXMuYmxvY2tVSVN1YmplY3QsIEJsb2NrVUlBY3Rpb25zLlNUT1AsIG5hbWUpLFxuICAgICAgcmVzZXQ6IHRoaXMuZGlzcGF0Y2godGhpcy5ibG9ja1VJU3ViamVjdCwgQmxvY2tVSUFjdGlvbnMuUkVTRVQsIG5hbWUpLFxuICAgICAgcmVzZXRHbG9iYWw6IHRoaXMuZGlzcGF0Y2godGhpcy5ibG9ja1VJU3ViamVjdCwgQmxvY2tVSUFjdGlvbnMuUkVTRVRfR0xPQkFMLCBuYW1lKSxcbiAgICAgIHVuc3Vic2NyaWJlOiB0aGlzLmRpc3BhdGNoKHRoaXMuYmxvY2tVSVN1YmplY3QsIEJsb2NrVUlBY3Rpb25zLlVOU1VCU0NSSUJFLCBuYW1lKVxuICAgIH0gYXMgTmdCbG9ja1VJO1xuXG4gICAgdGhpcy5ibG9ja1VJSW5zdGFuY2VzW25hbWVdID0gdGhpcy5ibG9ja1VJSW5zdGFuY2VzW25hbWVdIHx8IGJsb2NrVUk7XG5cbiAgICByZXR1cm4gYmxvY2tVSTtcbiAgfVxuXG4gIG9ic2VydmUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5ibG9ja1VJT2JzZXJ2YWJsZTtcbiAgfVxuXG4gIGNsZWFySW5zdGFuY2UoaW5zdGFuY2VOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc3BhdGNoKHRoaXMuYmxvY2tVSVN1YmplY3QsIEJsb2NrVUlBY3Rpb25zLlJFU0VULCBpbnN0YW5jZU5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBibG9ja1VJTWlkZGxld2FyZSh7IGFjdGlvbiwgbmFtZSB9OiBCbG9ja1VJRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgaXNBY3RpdmU6IGJvb2xlYW4gPSBudWxsO1xuXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgKEJsb2NrVUlBY3Rpb25zLlNUQVJUKTpcbiAgICAgICAgaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAoQmxvY2tVSUFjdGlvbnMuU1RPUCk6XG4gICAgICBjYXNlIChCbG9ja1VJQWN0aW9ucy5SRVNFVCk6XG4gICAgICAgIGlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChpc0FjdGl2ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5ibG9ja1VJSW5zdGFuY2VzW25hbWVdLmlzQWN0aXZlID0gaXNBY3RpdmU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaChzdWJqZWN0OiBSZXBsYXlTdWJqZWN0PGFueT4sIGFjdGlvbjogQmxvY2tVSUFjdGlvbnMsIG5hbWU6IHN0cmluZyA9IEJsb2NrVUlEZWZhdWx0TmFtZSk6IEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gKG1lc3NhZ2U/OiBhbnkpOiB2b2lkID0+IHtcbiAgICAgIHN1YmplY3QubmV4dCh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgbWVzc2FnZVxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufVxuIl19