@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
42 lines • 5.19 kB
JavaScript
import { Type } from '@angular/core';
/**
* Holds information about views in the application. Can be used to resolve view component class objects from their names.
*/
export class ViewService {
_router;
_logger;
/**
* @ignore
* Stores a mapping of component names to their classes
*/
_nameToClass;
/**
* @param componentClasses Class objects of view components that should be dynamically routed
* @param configService application's ConfigurationService
* @param _router the application's Router
* @param _logger application's logging service
*/
constructor(componentClasses,
// TODO 29.4.2021 - remove unused class attributes
configService, _router, _logger) {
this._router = _router;
this._logger = _logger;
this._nameToClass = new Map();
componentClasses.forEach(component => {
if (component instanceof Type) {
this._nameToClass.set(component.name, component);
}
else {
this._nameToClass.set(component.id, component.class);
}
});
}
/**
* @param componentClassName class name of a view component
* @returns the Class object with the provided name or `null` if such name is not registered
*/
resolveNameToClass(componentClassName) {
return this._nameToClass.get(componentClassName);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9yb3V0aW5nL3ZpZXctc2VydmljZS92aWV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU1uQzs7R0FFRztBQUNILE1BQU0sT0FBZ0IsV0FBVztJQWlCRztJQUNBO0lBaEJoQzs7O09BR0c7SUFDSyxZQUFZLENBQXlCO0lBRTdDOzs7OztPQUtHO0lBQ0gsWUFBc0IsZ0JBQThDO0lBQzlDLGtEQUFrRDtJQUNsRCxhQUFtQyxFQUN6QixPQUFlLEVBQ2YsT0FBc0I7UUFEdEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztRQUNqRCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDakMsSUFBSSxTQUFTLFlBQVksSUFBSSxFQUFFO2dCQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQ3BEO2lCQUFNO2dCQUNILElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksa0JBQWtCLENBQUMsa0JBQTBCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1ZpZXdFbnRyeX0gZnJvbSAnLi9tb2RlbC92aWV3LWVudHJ5JztcblxuLyoqXG4gKiBIb2xkcyBpbmZvcm1hdGlvbiBhYm91dCB2aWV3cyBpbiB0aGUgYXBwbGljYXRpb24uIENhbiBiZSB1c2VkIHRvIHJlc29sdmUgdmlldyBjb21wb25lbnQgY2xhc3Mgb2JqZWN0cyBmcm9tIHRoZWlyIG5hbWVzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVmlld1NlcnZpY2Uge1xuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqIFN0b3JlcyBhIG1hcHBpbmcgb2YgY29tcG9uZW50IG5hbWVzIHRvIHRoZWlyIGNsYXNzZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIF9uYW1lVG9DbGFzczogTWFwPHN0cmluZywgVHlwZTxhbnk+PjtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjb21wb25lbnRDbGFzc2VzIENsYXNzIG9iamVjdHMgb2YgdmlldyBjb21wb25lbnRzIHRoYXQgc2hvdWxkIGJlIGR5bmFtaWNhbGx5IHJvdXRlZFxuICAgICAqIEBwYXJhbSBjb25maWdTZXJ2aWNlIGFwcGxpY2F0aW9uJ3MgQ29uZmlndXJhdGlvblNlcnZpY2VcbiAgICAgKiBAcGFyYW0gX3JvdXRlciB0aGUgYXBwbGljYXRpb24ncyBSb3V0ZXJcbiAgICAgKiBAcGFyYW0gX2xvZ2dlciBhcHBsaWNhdGlvbidzIGxvZ2dpbmcgc2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihjb21wb25lbnRDbGFzc2VzOiBBcnJheTxUeXBlPGFueT4gfCBWaWV3RW50cnk+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIDI5LjQuMjAyMSAtIHJlbW92ZSB1bnVzZWQgY2xhc3MgYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdTZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9yb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2dnZXI6IExvZ2dlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fbmFtZVRvQ2xhc3MgPSBuZXcgTWFwPHN0cmluZywgVHlwZTxhbnk+PigpO1xuICAgICAgICBjb21wb25lbnRDbGFzc2VzLmZvckVhY2goY29tcG9uZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgaW5zdGFuY2VvZiBUeXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmFtZVRvQ2xhc3Muc2V0KGNvbXBvbmVudC5uYW1lLCBjb21wb25lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9uYW1lVG9DbGFzcy5zZXQoY29tcG9uZW50LmlkLCBjb21wb25lbnQuY2xhc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50Q2xhc3NOYW1lIGNsYXNzIG5hbWUgb2YgYSB2aWV3IGNvbXBvbmVudFxuICAgICAqIEByZXR1cm5zIHRoZSBDbGFzcyBvYmplY3Qgd2l0aCB0aGUgcHJvdmlkZWQgbmFtZSBvciBgbnVsbGAgaWYgc3VjaCBuYW1lIGlzIG5vdCByZWdpc3RlcmVkXG4gICAgICovXG4gICAgcHVibGljIHJlc29sdmVOYW1lVG9DbGFzcyhjb21wb25lbnRDbGFzc05hbWU6IHN0cmluZyk6IFR5cGU8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uYW1lVG9DbGFzcy5nZXQoY29tcG9uZW50Q2xhc3NOYW1lKTtcbiAgICB9XG59XG4iXX0=