@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
47 lines • 8.8 kB
JavaScript
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, Input, TemplateRef, Type } from '@angular/core';
import { CellRendererContext } from './cell-renderer';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "../../common/component-outlet.directive";
import * as i3 from "../../common/stringify-object.pipe";
export class CellRendererComponent {
set _spec(spec) {
this.spec = spec;
}
constructor(injector, cd) {
this.injector = injector;
this.cd = cd;
}
ngOnChanges() {
if (!this.prevSpec) {
this.prevSpec = this.spec;
}
const { renderer } = this.spec;
if (renderer instanceof TemplateRef) {
this.rendererType = 'TEMPLATE';
}
else if (renderer instanceof Type) {
this.rendererType = 'COMPONENT';
this.rendererInjector = Injector.create({
providers: [{ provide: CellRendererContext, useValue: this.spec.context }],
parent: this.injector
});
}
}
ngDoCheck() {
if (!this.spec.context.value === this.prevSpec.context.value) {
this.prevSpec = this.spec;
this.cd.markForCheck();
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellRendererComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CellRendererComponent, selector: "c8y-cell-renderer", inputs: { _spec: ["spec", "_spec"] }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"spec.renderer\">\n <ng-container\n *ngIf=\"rendererType === 'TEMPLATE'\"\n [ngTemplateOutlet]=\"spec.renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: spec.context }\"\n ></ng-container>\n\n <ng-container\n *ngIf=\"rendererType === 'COMPONENT'\"\n [c8yComponentOutlet]=\"spec.renderer\"\n [c8yComponentOutletInjector]=\"rendererInjector\"\n ></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"!spec.renderer\">\n <span title=\"{{ spec.context.value | stringifyObject }}\">\n {{ spec.context.value | stringifyObject }}\n </span>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "pipe", type: i3.StringifyObjectPipe, name: "stringifyObject" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellRendererComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-cell-renderer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"spec.renderer\">\n <ng-container\n *ngIf=\"rendererType === 'TEMPLATE'\"\n [ngTemplateOutlet]=\"spec.renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: spec.context }\"\n ></ng-container>\n\n <ng-container\n *ngIf=\"rendererType === 'COMPONENT'\"\n [c8yComponentOutlet]=\"spec.renderer\"\n [c8yComponentOutletInjector]=\"rendererInjector\"\n ></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"!spec.renderer\">\n <span title=\"{{ spec.context.value | stringifyObject }}\">\n {{ spec.context.value | stringifyObject }}\n </span>\n</ng-container>\n" }]
}], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { _spec: [{
type: Input,
args: ['spec']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb3JlL2RhdGEtZ3JpZC9jb2x1bW4vY2VsbC1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb3JlL2RhdGEtZ3JpZC9jb2x1bW4vY2VsbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsUUFBUSxFQUNSLEtBQUssRUFFTCxXQUFXLEVBQ1gsSUFBSSxFQUNMLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFPeEUsTUFBTSxPQUFPLHFCQUFxQjtJQUVoQyxJQUNJLEtBQUssQ0FBQyxJQUFzQjtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBTUQsWUFBb0IsUUFBa0IsRUFBVSxFQUFxQjtRQUFqRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7SUFBRyxDQUFDO0lBRXpFLFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QixDQUFDO1FBRUQsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFL0IsSUFBSSxRQUFRLFlBQVksV0FBVyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7UUFDakMsQ0FBQzthQUFNLElBQUksUUFBUSxZQUFZLElBQUksRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1lBRWhDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUN0QyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDMUUsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3RCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7K0dBckNVLHFCQUFxQjttR0FBckIscUJBQXFCLG9IQ25CbEMsZ21CQW1CQTs7NEZEQWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQixtQkFFWix1QkFBdUIsQ0FBQyxNQUFNOzZHQUszQyxLQUFLO3NCQURSLEtBQUs7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEb0NoZWNrLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENlbGxSZW5kZXJlckNvbnRleHQsIENlbGxSZW5kZXJlclNwZWMgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY2VsbC1yZW5kZXJlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jZWxsLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ2VsbFJlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBEb0NoZWNrIHtcbiAgc3BlYzogQ2VsbFJlbmRlcmVyU3BlYztcbiAgQElucHV0KCdzcGVjJylcbiAgc2V0IF9zcGVjKHNwZWM6IENlbGxSZW5kZXJlclNwZWMpIHtcbiAgICB0aGlzLnNwZWMgPSBzcGVjO1xuICB9XG4gIHByZXZTcGVjOiBDZWxsUmVuZGVyZXJTcGVjO1xuXG4gIHJlbmRlcmVyVHlwZTogJ1RFTVBMQVRFJyB8ICdDT01QT05FTlQnO1xuICByZW5kZXJlckluamVjdG9yOiBJbmplY3RvcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKCF0aGlzLnByZXZTcGVjKSB7XG4gICAgICB0aGlzLnByZXZTcGVjID0gdGhpcy5zcGVjO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcmVuZGVyZXIgfSA9IHRoaXMuc3BlYztcblxuICAgIGlmIChyZW5kZXJlciBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyVHlwZSA9ICdURU1QTEFURSc7XG4gICAgfSBlbHNlIGlmIChyZW5kZXJlciBpbnN0YW5jZW9mIFR5cGUpIHtcbiAgICAgIHRoaXMucmVuZGVyZXJUeXBlID0gJ0NPTVBPTkVOVCc7XG5cbiAgICAgIHRoaXMucmVuZGVyZXJJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ2VsbFJlbmRlcmVyQ29udGV4dCwgdXNlVmFsdWU6IHRoaXMuc3BlYy5jb250ZXh0IH1dLFxuICAgICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3JcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAoIXRoaXMuc3BlYy5jb250ZXh0LnZhbHVlID09PSB0aGlzLnByZXZTcGVjLmNvbnRleHQudmFsdWUpIHtcbiAgICAgIHRoaXMucHJldlNwZWMgPSB0aGlzLnNwZWM7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInNwZWMucmVuZGVyZXJcIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwicmVuZGVyZXJUeXBlID09PSAnVEVNUExBVEUnXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzcGVjLnJlbmRlcmVyXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHNwZWMuY29udGV4dCB9XCJcbiAgPjwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cInJlbmRlcmVyVHlwZSA9PT0gJ0NPTVBPTkVOVCdcIlxuICAgIFtjOHlDb21wb25lbnRPdXRsZXRdPVwic3BlYy5yZW5kZXJlclwiXG4gICAgW2M4eUNvbXBvbmVudE91dGxldEluamVjdG9yXT1cInJlbmRlcmVySW5qZWN0b3JcIlxuICA+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzcGVjLnJlbmRlcmVyXCI+XG4gIDxzcGFuIHRpdGxlPVwie3sgc3BlYy5jb250ZXh0LnZhbHVlIHwgc3RyaW5naWZ5T2JqZWN0IH19XCI+XG4gICAge3sgc3BlYy5jb250ZXh0LnZhbHVlIHwgc3RyaW5naWZ5T2JqZWN0IH19XG4gIDwvc3Bhbj5cbjwvbmctY29udGFpbmVyPlxuIl19