@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
36 lines • 4.76 kB
JavaScript
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "./operator-resolver.service";
/**
* Stores, provides and creates {@link Operator} implementations to be used in the project as singleton objects.
* Passes reference to itself to all Operators it creates, so they can use it if they want to.
*/
export class OperatorService {
_operatorResolver;
_operators;
constructor(_operatorResolver) {
this._operatorResolver = _operatorResolver;
this._operators = new Map();
}
getOperator(operatorClass) {
this.createOperatorIfNotInMap(operatorClass);
return this._operators.get(operatorClass);
}
getFromMetadata(metadata) {
return this.getOperator(this._operatorResolver.toClass(metadata));
}
createOperatorIfNotInMap(operatorClass) {
if (!this._operators.has(operatorClass)) {
this._operators.set(operatorClass, new operatorClass(this));
}
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OperatorService, deps: [{ token: i1.OperatorResolverService }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OperatorService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OperatorService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.OperatorResolverService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvc2VhcmNoL29wZXJhdG9yLXNlcnZpY2Uvb3BlcmF0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFPLE1BQU0sZUFBZSxDQUFDOzs7QUFLL0M7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUFJRjtJQUZkLFVBQVUsQ0FBMEM7SUFFNUQsWUFBc0IsaUJBQTBDO1FBQTFDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBeUI7UUFDNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBc0MsQ0FBQztJQUNwRSxDQUFDO0lBRU0sV0FBVyxDQUFDLGFBQWtDO1FBQ2pELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxlQUFlLENBQUMsUUFBNEI7UUFDL0MsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU8sd0JBQXdCLENBQUMsYUFBa0M7UUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQy9EO0lBQ0wsQ0FBQzt3R0FyQlEsZUFBZTs0R0FBZixlQUFlLGNBRlosTUFBTTs7NEZBRVQsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPcGVyYXRvcn0gZnJvbSAnLi4vbW9kZWxzL29wZXJhdG9yL29wZXJhdG9yJztcbmltcG9ydCB7T3BlcmF0b3JzfSBmcm9tICcuLi9tb2RlbHMvb3BlcmF0b3Ivb3BlcmF0b3JzJztcbmltcG9ydCB7T3BlcmF0b3JSZXNvbHZlclNlcnZpY2V9IGZyb20gJy4vb3BlcmF0b3ItcmVzb2x2ZXIuc2VydmljZSc7XG5cbi8qKlxuICogU3RvcmVzLCBwcm92aWRlcyBhbmQgY3JlYXRlcyB7QGxpbmsgT3BlcmF0b3J9IGltcGxlbWVudGF0aW9ucyB0byBiZSB1c2VkIGluIHRoZSBwcm9qZWN0IGFzIHNpbmdsZXRvbiBvYmplY3RzLlxuICogUGFzc2VzIHJlZmVyZW5jZSB0byBpdHNlbGYgdG8gYWxsIE9wZXJhdG9ycyBpdCBjcmVhdGVzLCBzbyB0aGV5IGNhbiB1c2UgaXQgaWYgdGhleSB3YW50IHRvLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE9wZXJhdG9yU2VydmljZSB7XG5cbiAgICBwcml2YXRlIF9vcGVyYXRvcnM6IE1hcDxUeXBlPE9wZXJhdG9yPGFueT4+LCBPcGVyYXRvcjxhbnk+PjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfb3BlcmF0b3JSZXNvbHZlcjogT3BlcmF0b3JSZXNvbHZlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fb3BlcmF0b3JzID0gbmV3IE1hcDxUeXBlPE9wZXJhdG9yPGFueT4+LCBPcGVyYXRvcjxhbnk+PigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPcGVyYXRvcihvcGVyYXRvckNsYXNzOiBUeXBlPE9wZXJhdG9yPGFueT4+KTogT3BlcmF0b3I8YW55PiB7XG4gICAgICAgIHRoaXMuY3JlYXRlT3BlcmF0b3JJZk5vdEluTWFwKG9wZXJhdG9yQ2xhc3MpO1xuICAgICAgICByZXR1cm4gdGhpcy5fb3BlcmF0b3JzLmdldChvcGVyYXRvckNsYXNzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RnJvbU1ldGFkYXRhKG1ldGFkYXRhOiBPcGVyYXRvcnMgfCBzdHJpbmcpOiBPcGVyYXRvcjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3IodGhpcy5fb3BlcmF0b3JSZXNvbHZlci50b0NsYXNzKG1ldGFkYXRhKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVPcGVyYXRvcklmTm90SW5NYXAob3BlcmF0b3JDbGFzczogVHlwZTxPcGVyYXRvcjxhbnk+Pik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX29wZXJhdG9ycy5oYXMob3BlcmF0b3JDbGFzcykpIHtcbiAgICAgICAgICAgIHRoaXMuX29wZXJhdG9ycy5zZXQob3BlcmF0b3JDbGFzcywgbmV3IG9wZXJhdG9yQ2xhc3ModGhpcykpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19