import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
/**
 * Register for statically typed components that are part of relations
 */
export class StaticComponentsRegister {
    constructor() {
        //######################### protected fields #########################
        /**
         * Object storing defined types
         */
        this._definedTypes = this.getDefinedTypes();
    }
    //######################### public properties #########################
    /**
     * Gets available types that are used as static components
     */
    get types() {
        return Object.keys(this._definedTypes);
    }
    //######################### public methods #########################
    /**
     * Gets type by its name
     * @param name - Name of type that should be obtained
     */
    getType(name) {
        return this._definedTypes[name] ?? null;
    }
}
StaticComponentsRegister.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: StaticComponentsRegister, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
StaticComponentsRegister.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: StaticComponentsRegister });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: StaticComponentsRegister, decorators: [{
            type: Injectable
        }] });
//# sourceMappingURL=staticComponentsRegister.service.js.map