UNPKG

xui

Version:

xUI Components for Angular

73 lines 10.3 kB
import { Inject, Injectable, Optional } from '@angular/core'; import { Subject } from 'rxjs'; import { filter, mapTo } from 'rxjs/operators'; import { XUI_CONFIG } from './config'; import * as i0 from "@angular/core"; const isDefined = function (value) { return value !== undefined; }; export class XuiConfigService { constructor(defaultConfig) { this.configUpdated$ = new Subject(); this.config = defaultConfig ? JSON.parse(JSON.stringify(defaultConfig)) : {}; } getConfigForComponent(componentName) { return this.config[componentName]; } getConfigChangeEventForComponent(componentName) { return this.configUpdated$.pipe(filter(n => n === componentName), mapTo(undefined)); } set(componentName, value) { this.config[componentName] = { ...this.config[componentName], ...value }; this.configUpdated$.next(componentName); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: XuiConfigService, deps: [{ token: XUI_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: XuiConfigService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: XuiConfigService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return [{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [XUI_CONFIG] }] }]; } }); export function WithConfig() { return function ConfigDecorator(target, propName, originalDescriptor) { const privatePropName = `$$__assignedValue__${propName}`; Object.defineProperty(target, privatePropName, { configurable: true, writable: true, enumerable: false }); return { get() { const originalValue = originalDescriptor?.get ? originalDescriptor.get.bind(this)() : this[privatePropName]; const assignedByUser = ((this.assignmentCount || {})[propName] || 0) > 1; if (assignedByUser && isDefined(originalValue)) { return originalValue; } const componentConfig = this.configService.getConfigForComponent(this._moduleName) || {}; const configValue = componentConfig[propName]; return isDefined(configValue) ? configValue : originalValue; }, set(value) { // If the value is assigned, we consider the newly assigned value as 'assigned by user'. this.assignmentCount = this.assignmentCount || {}; this.assignmentCount[propName] = (this.assignmentCount[propName] || 0) + 1; if (originalDescriptor?.set) { originalDescriptor.set.bind(this)(value); } else { this[privatePropName] = value; } }, configurable: true, enumerable: true }; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3h1aS9zcmMvY29uZmlnL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFhLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFJakQsTUFBTSxTQUFTLEdBQUcsVUFBVSxLQUFXO0lBQ3JDLE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUM3QixDQUFDLENBQUM7QUFLRixNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQTRDLGFBQXlCO1FBSDdELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFJbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDL0UsQ0FBQztJQUVELHFCQUFxQixDQUF5QixhQUFnQjtRQUM1RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGdDQUFnQyxDQUFDLGFBQTJCO1FBQzFELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQzdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxhQUFhLENBQUMsRUFDaEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVELEdBQUcsQ0FBeUIsYUFBZ0IsRUFBRSxLQUFtQjtRQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs4R0F0QlUsZ0JBQWdCLGtCQUlLLFVBQVU7a0hBSi9CLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUtjLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsVUFBVTs7QUFxQjVDLE1BQU0sVUFBVSxVQUFVO0lBQ3hCLE9BQU8sU0FBUyxlQUFlLENBQUMsTUFBVyxFQUFFLFFBQWEsRUFBRSxrQkFBK0M7UUFDekcsTUFBTSxlQUFlLEdBQUcsc0JBQXNCLFFBQVEsRUFBRSxDQUFDO1FBRXpELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRTtZQUM3QyxZQUFZLEVBQUUsSUFBSTtZQUNsQixRQUFRLEVBQUUsSUFBSTtZQUNkLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU87WUFDTCxHQUFHO2dCQUNELE1BQU0sYUFBYSxHQUFHLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzVHLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFekUsSUFBSSxjQUFjLElBQUksU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFO29CQUM5QyxPQUFPLGFBQWEsQ0FBQztpQkFDdEI7Z0JBRUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN6RixNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRTlDLE9BQU8sU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztZQUM5RCxDQUFDO1lBRUQsR0FBRyxDQUFDLEtBQVM7Z0JBQ1gsd0ZBQXdGO2dCQUN4RixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRTNFLElBQUksa0JBQWtCLEVBQUUsR0FBRyxFQUFFO29CQUMzQixrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQU0sQ0FBQyxDQUFDO2lCQUMzQztxQkFBTTtvQkFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSyxDQUFDO2lCQUMvQjtZQUNILENBQUM7WUFDRCxZQUFZLEVBQUUsSUFBSTtZQUNsQixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwVG8gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBYdWlDb25maWcsIFhVSV9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5cbmV4cG9ydCB0eXBlIFh1aUNvbmZpZ0tleSA9IGtleW9mIFh1aUNvbmZpZztcblxuY29uc3QgaXNEZWZpbmVkID0gZnVuY3Rpb24gKHZhbHVlPzogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkO1xufTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgWHVpQ29uZmlnU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnVXBkYXRlZCQgPSBuZXcgU3ViamVjdDxYdWlDb25maWdLZXk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBYdWlDb25maWc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChYVUlfQ09ORklHKSBkZWZhdWx0Q29uZmlnPzogWHVpQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBkZWZhdWx0Q29uZmlnID8gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkZWZhdWx0Q29uZmlnKSkgOiB7fTtcbiAgfVxuXG4gIGdldENvbmZpZ0ZvckNvbXBvbmVudDxUIGV4dGVuZHMgWHVpQ29uZmlnS2V5Pihjb21wb25lbnROYW1lOiBUKTogWHVpQ29uZmlnW1RdIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdbY29tcG9uZW50TmFtZV07XG4gIH1cblxuICBnZXRDb25maWdDaGFuZ2VFdmVudEZvckNvbXBvbmVudChjb21wb25lbnROYW1lOiBYdWlDb25maWdLZXkpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdVcGRhdGVkJC5waXBlKFxuICAgICAgZmlsdGVyKG4gPT4gbiA9PT0gY29tcG9uZW50TmFtZSksXG4gICAgICBtYXBUbyh1bmRlZmluZWQpXG4gICAgKTtcbiAgfVxuXG4gIHNldDxUIGV4dGVuZHMgWHVpQ29uZmlnS2V5Pihjb21wb25lbnROYW1lOiBULCB2YWx1ZTogWHVpQ29uZmlnW1RdKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWdbY29tcG9uZW50TmFtZV0gPSB7IC4uLnRoaXMuY29uZmlnW2NvbXBvbmVudE5hbWVdLCAuLi52YWx1ZSB9O1xuICAgIHRoaXMuY29uZmlnVXBkYXRlZCQubmV4dChjb21wb25lbnROYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gV2l0aENvbmZpZzxUPigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIENvbmZpZ0RlY29yYXRvcih0YXJnZXQ6IGFueSwgcHJvcE5hbWU6IGFueSwgb3JpZ2luYWxEZXNjcmlwdG9yPzogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8VD4pOiBhbnkge1xuICAgIGNvbnN0IHByaXZhdGVQcm9wTmFtZSA9IGAkJF9fYXNzaWduZWRWYWx1ZV9fJHtwcm9wTmFtZX1gO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJpdmF0ZVByb3BOYW1lLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0KCk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gb3JpZ2luYWxEZXNjcmlwdG9yPy5nZXQgPyBvcmlnaW5hbERlc2NyaXB0b3IuZ2V0LmJpbmQodGhpcykoKSA6IHRoaXNbcHJpdmF0ZVByb3BOYW1lXTtcbiAgICAgICAgY29uc3QgYXNzaWduZWRCeVVzZXIgPSAoKHRoaXMuYXNzaWdubWVudENvdW50IHx8IHt9KVtwcm9wTmFtZV0gfHwgMCkgPiAxO1xuXG4gICAgICAgIGlmIChhc3NpZ25lZEJ5VXNlciAmJiBpc0RlZmluZWQob3JpZ2luYWxWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gb3JpZ2luYWxWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudENvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWdGb3JDb21wb25lbnQodGhpcy5fbW9kdWxlTmFtZSkgfHwge307XG4gICAgICAgIGNvbnN0IGNvbmZpZ1ZhbHVlID0gY29tcG9uZW50Q29uZmlnW3Byb3BOYW1lXTtcblxuICAgICAgICByZXR1cm4gaXNEZWZpbmVkKGNvbmZpZ1ZhbHVlKSA/IGNvbmZpZ1ZhbHVlIDogb3JpZ2luYWxWYWx1ZTtcbiAgICAgIH0sXG5cbiAgICAgIHNldCh2YWx1ZT86IFQpOiB2b2lkIHtcbiAgICAgICAgLy8gSWYgdGhlIHZhbHVlIGlzIGFzc2lnbmVkLCB3ZSBjb25zaWRlciB0aGUgbmV3bHkgYXNzaWduZWQgdmFsdWUgYXMgJ2Fzc2lnbmVkIGJ5IHVzZXInLlxuICAgICAgICB0aGlzLmFzc2lnbm1lbnRDb3VudCA9IHRoaXMuYXNzaWdubWVudENvdW50IHx8IHt9O1xuICAgICAgICB0aGlzLmFzc2lnbm1lbnRDb3VudFtwcm9wTmFtZV0gPSAodGhpcy5hc3NpZ25tZW50Q291bnRbcHJvcE5hbWVdIHx8IDApICsgMTtcblxuICAgICAgICBpZiAob3JpZ2luYWxEZXNjcmlwdG9yPy5zZXQpIHtcbiAgICAgICAgICBvcmlnaW5hbERlc2NyaXB0b3Iuc2V0LmJpbmQodGhpcykodmFsdWUhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzW3ByaXZhdGVQcm9wTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICB9O1xuICB9O1xufVxuIl19