@orchestrator/core
Version:
> Core package of Orchestrator library.
57 lines • 8.52 kB
JavaScript
import { ComponentFactoryResolver, Injectable, Injector, } from '@angular/core';
import { COMPONENTS, } from '../component-map';
import { getDynamicComponentMeta } from '../metadata/dynamic-component';
import * as i0 from "@angular/core";
export class ComponentLocatorService {
constructor(injector, cfr) {
this.injector = injector;
this.cfr = cfr;
this.componentRegistry = this.injector.get(COMPONENTS);
this.componentArray = this.componentRegistry
.filter(isComponentArray)
.reduce((arr, reg) => [...arr, ...reg], []);
this.componentArrayMap = this.componentArray
.map(type => this.cfr.resolveComponentFactory(type))
.reduce((map, compFactory) => ({
...map,
[compFactory.selector]: compFactory.componentType,
}), Object.create(null));
this.componentMaps = this.componentRegistry.filter(isComponentMap);
this.componentMap = this.componentMaps.reduce((obj, map) => ({ ...obj, ...map }), this.componentArrayMap);
}
resolve(component) {
if (typeof component === 'function') {
return component;
}
return this.componentMap[component];
}
getDefaultConfig(component) {
const configType = this.getConfigType(component);
if (!configType) {
return null;
}
return this.injector.get(configType, null);
}
getConfigType(component) {
if (!component) {
return null;
}
const meta = getDynamicComponentMeta(component);
if (!meta) {
return null;
}
return meta.config;
}
}
/** @nocollapse */ /** @nocollapse */ ComponentLocatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ComponentLocatorService, deps: [{ token: i0.Injector }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ /** @nocollapse */ ComponentLocatorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ComponentLocatorService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: ComponentLocatorService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ComponentFactoryResolver }]; } });
function isComponentArray(reg) {
return Array.isArray(reg);
}
function isComponentMap(reg) {
return !!reg && !Array.isArray(reg);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWxvY2F0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NvbXBvbmVudC1sb2NhdG9yL2NvbXBvbmVudC1sb2NhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixVQUFVLEVBQ1YsUUFBUSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFHTCxVQUFVLEdBRVgsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFPeEUsTUFBTSxPQUFPLHVCQUF1QjtJQXVCbEMsWUFDVSxRQUFrQixFQUNsQixHQUE2QjtRQUQ3QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFFBQUcsR0FBSCxHQUFHLENBQTBCO1FBeEIvQixzQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRCxtQkFBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUI7YUFDNUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDO2FBQ3hCLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV0QyxzQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYzthQUM1QyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25ELE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckIsR0FBRyxHQUFHO1lBQ04sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsV0FBVyxDQUFDLGFBQWE7U0FDbEQsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFpQixDQUNwQyxDQUFDO1FBRUksa0JBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlELGlCQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzlDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFDbEMsSUFBSSxDQUFDLGlCQUFpQyxDQUN2QyxDQUFDO0lBS0MsQ0FBQztJQUVKLE9BQU8sQ0FDTCxTQUF1RDtRQUV2RCxJQUFJLE9BQU8sU0FBUyxLQUFLLFVBQVUsRUFBRTtZQUNuQyxPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsZ0JBQWdCLENBQ2QsU0FBOEM7UUFFOUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxhQUFhLENBQ1gsU0FBOEM7UUFFOUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLElBQUksR0FBRyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDOzswSkFoRVUsdUJBQXVCOzhKQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVTs7QUFvRVgsU0FBUyxnQkFBZ0IsQ0FDdkIsR0FBc0I7SUFFdEIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxHQUFzQjtJQUM1QyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIEluamVjdGFibGUsXG4gIEluamVjdG9yLFxuICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50TWFwLFxuICBDb21wb25lbnRSZWdpc3RyeSxcbiAgQ09NUE9ORU5UUyxcbiAgRGVmYXVsdER5bmFtaWNDb21wb25lbnQsXG59IGZyb20gJy4uL2NvbXBvbmVudC1tYXAnO1xuaW1wb3J0IHsgZ2V0RHluYW1pY0NvbXBvbmVudE1ldGEgfSBmcm9tICcuLi9tZXRhZGF0YS9keW5hbWljLWNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBHZXRPcmNoZXN0cmF0b3JEeW5hbWljQ29tcG9uZW50Q29uZmlnLFxuICBPcmNoZXN0cmF0b3JEeW5hbWljQ29tcG9uZW50VHlwZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50TG9jYXRvclNlcnZpY2Uge1xuICBwcml2YXRlIGNvbXBvbmVudFJlZ2lzdHJ5ID0gdGhpcy5pbmplY3Rvci5nZXQoQ09NUE9ORU5UUyk7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRBcnJheSA9IHRoaXMuY29tcG9uZW50UmVnaXN0cnlcbiAgICAuZmlsdGVyKGlzQ29tcG9uZW50QXJyYXkpXG4gICAgLnJlZHVjZSgoYXJyLCByZWcpID0+IFsuLi5hcnIsIC4uLnJlZ10sIFtdKTtcblxuICBwcml2YXRlIGNvbXBvbmVudEFycmF5TWFwID0gdGhpcy5jb21wb25lbnRBcnJheVxuICAgIC5tYXAodHlwZSA9PiB0aGlzLmNmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0eXBlKSlcbiAgICAucmVkdWNlKFxuICAgICAgKG1hcCwgY29tcEZhY3RvcnkpID0+ICh7XG4gICAgICAgIC4uLm1hcCxcbiAgICAgICAgW2NvbXBGYWN0b3J5LnNlbGVjdG9yXTogY29tcEZhY3RvcnkuY29tcG9uZW50VHlwZSxcbiAgICAgIH0pLFxuICAgICAgT2JqZWN0LmNyZWF0ZShudWxsKSBhcyBDb21wb25lbnRNYXAsXG4gICAgKTtcblxuICBwcml2YXRlIGNvbXBvbmVudE1hcHMgPSB0aGlzLmNvbXBvbmVudFJlZ2lzdHJ5LmZpbHRlcihpc0NvbXBvbmVudE1hcCk7XG4gIHByaXZhdGUgY29tcG9uZW50TWFwID0gdGhpcy5jb21wb25lbnRNYXBzLnJlZHVjZShcbiAgICAob2JqLCBtYXApID0+ICh7IC4uLm9iaiwgLi4ubWFwIH0pLFxuICAgIHRoaXMuY29tcG9uZW50QXJyYXlNYXAgYXMgQ29tcG9uZW50TWFwLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICkge31cblxuICByZXNvbHZlPFQsIEMgPSBHZXRPcmNoZXN0cmF0b3JEeW5hbWljQ29tcG9uZW50Q29uZmlnPFQ+PihcbiAgICBjb21wb25lbnQ6IHN0cmluZyB8IE9yY2hlc3RyYXRvckR5bmFtaWNDb21wb25lbnRUeXBlPEM+LFxuICApOiBPcmNoZXN0cmF0b3JEeW5hbWljQ29tcG9uZW50VHlwZTxDPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHR5cGVvZiBjb21wb25lbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwW2NvbXBvbmVudF07XG4gIH1cblxuICBnZXREZWZhdWx0Q29uZmlnPEM+KFxuICAgIGNvbXBvbmVudDogT3JjaGVzdHJhdG9yRHluYW1pY0NvbXBvbmVudFR5cGU8Qz4sXG4gICk6IEMgfCBudWxsIHtcbiAgICBjb25zdCBjb25maWdUeXBlID0gdGhpcy5nZXRDb25maWdUeXBlKGNvbXBvbmVudCk7XG5cbiAgICBpZiAoIWNvbmZpZ1R5cGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChjb25maWdUeXBlLCBudWxsKTtcbiAgfVxuXG4gIGdldENvbmZpZ1R5cGU8Qz4oXG4gICAgY29tcG9uZW50OiBPcmNoZXN0cmF0b3JEeW5hbWljQ29tcG9uZW50VHlwZTxDPixcbiAgKTogVHlwZTxDPiB8IG51bGwge1xuICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhID0gZ2V0RHluYW1pY0NvbXBvbmVudE1ldGEoY29tcG9uZW50KTtcblxuICAgIGlmICghbWV0YSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGEuY29uZmlnO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50QXJyYXkoXG4gIHJlZzogQ29tcG9uZW50UmVnaXN0cnksXG4pOiByZWcgaXMgRGVmYXVsdER5bmFtaWNDb21wb25lbnRbXSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHJlZyk7XG59XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50TWFwKHJlZzogQ29tcG9uZW50UmVnaXN0cnkpOiByZWcgaXMgQ29tcG9uZW50TWFwIHtcbiAgcmV0dXJuICEhcmVnICYmICFBcnJheS5pc0FycmF5KHJlZyk7XG59XG4iXX0=