@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
59 lines • 9.92 kB
JavaScript
import { Inject, Injectable, Injector, Optional } from '@angular/core';
import { flatten } from 'lodash-es';
import { forkJoin, of } from 'rxjs';
import { map, tap } from 'rxjs/operators';
import { toObservable } from '../common';
import { NavigatorNode } from '../navigator';
import { HOOK_DYNAMIC_PROVIDER_CONFIG } from './provider-configuration-hook';
import * as i0 from "@angular/core";
export class ProviderConfigurationNodeFactory {
constructor(config, injector) {
this.injector = injector;
this.config = flatten(config);
}
get() {
if (!this.config || !this.config.length) {
return;
}
if (!this.nodes) {
const canActivate = this.config
.map(this.getGuards.bind(this))
.map(this.checkCanActivate.bind(this));
return forkJoin(canActivate).pipe(map((canActivateResult) => this.config
.map((c, index) => canActivateResult[index] ? new NavigatorNode(c.navigation) : undefined)
.filter(el => !!el)), tap(nodes => (this.nodes = nodes)));
}
return this.nodes;
}
checkCanActivate(ca) {
if (!!ca && ca.length) {
const canActivateResult = ca
.map((canActivate) => canActivate.canActivate(undefined, undefined))
.map(toObservable);
return forkJoin(canActivateResult).pipe(map((caResult) => caResult.reduce((acc, curr) => acc && curr)));
}
return of(true);
}
getGuards(c) {
let result = [];
if (c.tab && c.tab.canActivate && c.tab.canActivate.length) {
result = [...result, ...c.tab.canActivate.map(ca => this.injector.get(ca))];
}
if (c.navigation.canActivate && c.navigation.canActivate.length) {
result = [...result, ...c.navigation.canActivate.map(ca => this.injector.get(ca))];
}
return result;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProviderConfigurationNodeFactory, deps: [{ token: HOOK_DYNAMIC_PROVIDER_CONFIG, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProviderConfigurationNodeFactory, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProviderConfigurationNodeFactory, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [HOOK_DYNAMIC_PROVIDER_CONFIG]
}] }, { type: i0.Injector }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItY29uZmlndXJhdGlvbi1ub2RlLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3Byb3ZpZGVyLWNvbmZpZ3VyYXRpb24vcHJvdmlkZXItY29uZmlndXJhdGlvbi1ub2RlLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUF3QixNQUFNLGNBQWMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFHN0UsTUFBTSxPQUFPLGdDQUFnQztJQUkzQyxZQUdFLE1BQWlDLEVBQ3pCLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELEdBQUc7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE1BQU0sV0FBVyxHQUErQixJQUFJLENBQUMsTUFBTTtpQkFDeEQsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFB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YWJsZSwgSW5qZWN0b3IsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUZuIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBOYXZpZ2F0b3JOb2RlLCBOYXZpZ2F0b3JOb2RlRmFjdG9yeSB9IGZyb20gJy4uL25hdmlnYXRvcic7XG5pbXBvcnQgeyBEeW5hbWljUHJvdmlkZXJDb25maWcgfSBmcm9tICcuL21vZGVsL2R5bmFtaWMtcHJvdmlkZXItY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IEhPT0tfRFlOQU1JQ19QUk9WSURFUl9DT05GSUcgfSBmcm9tICcuL3Byb3ZpZGVyLWNvbmZpZ3VyYXRpb24taG9vayc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUHJvdmlkZXJDb25maWd1cmF0aW9uTm9kZUZhY3RvcnkgaW1wbGVtZW50cyBOYXZpZ2F0b3JOb2RlRmFjdG9yeSB7XG4gIHByaXZhdGUgY29uZmlnOiBEeW5hbWljUHJvdmlkZXJDb25maWdbXTtcbiAgcHJpdmF0ZSBub2RlczogTmF2aWdhdG9yTm9kZVtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChIT09LX0RZTkFNSUNfUFJPVklERVJfQ09ORklHKVxuICAgIGNvbmZpZzogRHluYW1pY1Byb3ZpZGVyQ29uZmlnW11bXSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IGZsYXR0ZW4oY29uZmlnKTtcbiAgfVxuXG4gIGdldCgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnIHx8ICF0aGlzLmNvbmZpZy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubm9kZXMpIHtcbiAgICAgIGNvbnN0IGNhbkFjdGl2YXRlOiBBcnJheTxPYnNlcnZhYmxlPGJvb2xlYW4+PiA9IHRoaXMuY29uZmlnXG4gICAgICAgIC5tYXAodGhpcy5nZXRHdWFyZHMuYmluZCh0aGlzKSlcbiAgICAgICAgLm1hcCh0aGlzLmNoZWNrQ2FuQWN0aXZhdGUuYmluZCh0aGlzKSk7XG5cbiAgICAgIHJldHVybiBmb3JrSm9pbihjYW5BY3RpdmF0ZSkucGlwZShcbiAgICAgICAgbWFwKChjYW5BY3RpdmF0ZVJlc3VsdDogYm9vbGVhbltdKSA9PlxuICAgICAgICAgIHRoaXMuY29uZmlnXG4gICAgICAgICAgICAubWFwKChjLCBpbmRleCkgPT5cbiAgICAgICAgICAgICAgY2FuQWN0aXZhdGVSZXN1bHRbaW5kZXhdID8gbmV3IE5hdmlnYXRvck5vZGUoYy5uYXZpZ2F0aW9uKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZpbHRlcihlbCA9PiAhIWVsKVxuICAgICAgICApLFxuICAgICAgICB0YXAobm9kZXMgPT4gKHRoaXMubm9kZXMgPSBub2RlcykpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0NhbkFjdGl2YXRlKFxuICAgIGNhOiB7XG4gICAgICBjYW5BY3RpdmF0ZTogQ2FuQWN0aXZhdGVGbjtcbiAgICB9W11cbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKCEhY2EgJiYgY2EubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjYW5BY3RpdmF0ZVJlc3VsdDogQXJyYXk8T2JzZXJ2YWJsZTxib29sZWFuPj4gPSBjYVxuICAgICAgICAubWFwKChjYW5BY3RpdmF0ZTogeyBjYW5BY3RpdmF0ZTogQ2FuQWN0aXZhdGVGbiB9KSA9PlxuICAgICAgICAgIGNhbkFjdGl2YXRlLmNhbkFjdGl2YXRlKHVuZGVmaW5lZCwgdW5kZWZpbmVkKVxuICAgICAgICApXG4gICAgICAgIC5tYXAodG9PYnNlcnZhYmxlKSBhcyBBcnJheTxPYnNlcnZhYmxlPGJvb2xlYW4+PjtcblxuICAgICAgcmV0dXJuIGZvcmtKb2luKGNhbkFjdGl2YXRlUmVzdWx0KS5waXBlKFxuICAgICAgICBtYXAoKGNhUmVzdWx0OiBib29sZWFuW10pID0+IGNhUmVzdWx0LnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MgJiYgY3VycikpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldEd1YXJkcyhjKSB7XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gICAgaWYgKGMudGFiICYmIGMudGFiLmNhbkFjdGl2YXRlICYmIGMudGFiLmNhbkFjdGl2YXRlLmxlbmd0aCkge1xuICAgICAgcmVzdWx0ID0gWy4uLnJlc3VsdCwgLi4uYy50YWIuY2FuQWN0aXZhdGUubWFwKGNhID0+IHRoaXMuaW5qZWN0b3IuZ2V0KGNhKSldO1xuICAgIH1cblxuICAgIGlmIChjLm5hdmlnYXRpb24uY2FuQWN0aXZhdGUgJiYgYy5uYXZpZ2F0aW9uLmNhbkFjdGl2YXRlLmxlbmd0aCkge1xuICAgICAgcmVzdWx0ID0gWy4uLnJlc3VsdCwgLi4uYy5uYXZpZ2F0aW9uLmNhbkFjdGl2YXRlLm1hcChjYSA9PiB0aGlzLmluamVjdG9yLmdldChjYSkpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=