UNPKG

kwikui

Version:

KwikID's UI Component Library in Angular

108 lines 14.3 kB
import { Component, EventEmitter, Input, Output } from "@angular/core"; import { throwErrorMessage } from "../../../helpers/kwikui.common.helpers"; import { DEFAULT_VALUES, VALIDATE_KEY_VALUES } from "./image.constants"; import { EKwikUIImageType } from "./image.definitions"; import { isValidKeyValue } from "./image.validation"; import * as i0 from "@angular/core"; import * as i1 from "@angular/platform-browser"; import * as i2 from "../../../pipes/safe-html/safe-html.pipe"; export class KwikUIImageComponent { constructor(domSanitizer) { this.domSanitizer = domSanitizer; this.altText = DEFAULT_VALUES.altText; this.class = DEFAULT_VALUES.class; this.html = DEFAULT_VALUES.html; this.id = DEFAULT_VALUES.id; this.imageSrc = DEFAULT_VALUES.imageSrc; this.imageType = DEFAULT_VALUES.imageType; this.loadingType = DEFAULT_VALUES.loadingType; this.styles = DEFAULT_VALUES.styles; this.onClick = new EventEmitter(); } ngOnInit() { this.handleImageBasedOnImageType(); } ngOnChanges(changes) { const verifyChange = (key) => { return changes.hasOwnProperty(key) && !changes[key].firstChange; }; for (const change of Object.entries(changes)) { const key = change[0]; const value = change[1].currentValue; this.validateInputProperty(key, value); } if (verifyChange("imageSrc")) { this.imageSrc = changes.imageSrc.currentValue; this.handleImageBasedOnImageType(); } if (verifyChange("altText")) { this.altText = changes.altText.currentValue; } if (verifyChange("imageType")) { this.imageType = changes.imageType.currentValue; this.handleImageBasedOnImageType(); } if (verifyChange("loadingType")) { this.loadingType = changes.loadingType.currentValue; } } validateInputProperty(key, value) { if (VALIDATE_KEY_VALUES[key] && !isValidKeyValue(key, value)) { this[key] = DEFAULT_VALUES[key]; throwErrorMessage("kwikui-image", this.id, key, value, DEFAULT_VALUES[key]); } } handleOnClick(e) { this.onClick.emit(e); } cleanImageSrc() { this.imageSrc = this.imageSrc.trim(); } sanitizeImage() { this.safeImageSrc = this.domSanitizer.bypassSecurityTrustResourceUrl(this.imageSrc); } handleImageBasedOnImageType() { this.cleanImageSrc(); switch (this.imageType) { case EKwikUIImageType.BASE64: if (!this.imageSrc.startsWith("data:image")) { this.imageSrc = `data:image/png;base64,${this.imageSrc}`; } break; case EKwikUIImageType.URL: break; default: break; } this.sanitizeImage(); } } /** @nocollapse */ KwikUIImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUIImageComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ KwikUIImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikUIImageComponent, selector: "kwikui-image", inputs: { altText: "altText", class: "class", html: "html", id: "id", imageSrc: "imageSrc", imageType: "imageType", loadingType: "loadingType", styles: "styles" }, outputs: { onClick: "onClick" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"image-container\">\n <div [innerHtml]=\"html?.before ?? '' | kwikuiSafeHtml\"></div>\n <img\n [attr.alt]=\"altText\"\n [attr.id]=\"id\"\n [attr.loading]=\"loadingType\"\n [attr.src]=\"safeImageSrc\"\n [class]=\"class\"\n [style]=\"styles\"\n (click)=\"handleOnClick($event)\"\n />\n <div [innerHtml]=\"html?.after ?? '' | kwikuiSafeHtml\"></div>\n</div>\n", styles: [".image-container{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:space-between;grid-gap:.5rem;gap:.5rem}img{max-width:100%;height:auto}\n"], pipes: { "kwikuiSafeHtml": i2.KwikUISafeHtmlPipe } }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUIImageComponent, decorators: [{ type: Component, args: [{ selector: "kwikui-image", templateUrl: "./image.component.html", styleUrls: ["./image.component.scss"] }] }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { altText: [{ type: Input }], class: [{ type: Input }], html: [{ type: Input }], id: [{ type: Input }], imageSrc: [{ type: Input }], imageType: [{ type: Input }], loadingType: [{ type: Input }], styles: [{ type: Input }], onClick: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa3VpL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2ltYWdlL2ltYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWt1aS9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9pbWFnZS9pbWFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RSxPQUFPLEVBQTJCLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBT3JELE1BQU0sT0FBTyxvQkFBb0I7SUFxQi9CLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBcEJyQyxZQUFPLEdBQVcsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUV6QyxVQUFLLEdBQVcsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUVyQyxTQUFJLEdBQVEsY0FBYyxDQUFDLElBQUksQ0FBQztRQUVoQyxPQUFFLEdBQVcsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUUvQixhQUFRLEdBQVcsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUUzQyxjQUFTLEdBQXFCLGNBQWMsQ0FBQyxTQUFTLENBQUM7UUFFdkQsZ0JBQVcsR0FBNEIsY0FBYyxDQUFDLFdBQVcsQ0FBQztRQUVsRSxXQUFNLEdBQVcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUV0QyxZ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LENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7cUlBcEdVLG9CQUFvQjt5SEFBcEIsb0JBQW9CLDhRQ3BCakMsd1lBYUE7NEZET2Esb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixXQUFXLEVBQUUsd0JBQXdCO29CQUNyQyxTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDdEM7bUdBRVUsT0FBTztzQkFBZixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsRUFBRTtzQkFBVixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgdGhyb3dFcnJvck1lc3NhZ2UgfSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9rd2lrdWkuY29tbW9uLmhlbHBlcnNcIjtcbmltcG9ydCB7IERFRkFVTFRfVkFMVUVTLCBWQUxJREFURV9LRVlfVkFMVUVTIH0gZnJvbSBcIi4vaW1hZ2UuY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBFS3dpa1VJSW1hZ2VMb2FkaW5nVHlwZSwgRUt3aWtVSUltYWdlVHlwZSB9IGZyb20gXCIuL2ltYWdlLmRlZmluaXRpb25zXCI7XG5pbXBvcnQgeyBpc1ZhbGlkS2V5VmFsdWUgfSBmcm9tIFwiLi9pbWFnZS52YWxpZGF0aW9uXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lrdWktaW1hZ2VcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbWFnZS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vaW1hZ2UuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa1VJSW1hZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGFsdFRleHQ6IHN0cmluZyA9IERFRkFVTFRfVkFMVUVTLmFsdFRleHQ7XG5cbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9IERFRkFVTFRfVkFMVUVTLmNsYXNzO1xuXG4gIEBJbnB1dCgpIGh0bWw6IGFueSA9IERFRkFVTFRfVkFMVUVTLmh0bWw7XG5cbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9IERFRkFVTFRfVkFMVUVTLmlkO1xuXG4gIEBJbnB1dCgpIGltYWdlU3JjOiBzdHJpbmcgPSBERUZBVUxUX1ZBTFVFUy5pbWFnZVNyYztcblxuICBASW5wdXQoKSBpbWFnZVR5cGU6IEVLd2lrVUlJbWFnZVR5cGUgPSBERUZBVUxUX1ZBTFVFUy5pbWFnZVR5cGU7XG5cbiAgQElucHV0KCkgbG9hZGluZ1R5cGU6IEVLd2lrVUlJbWFnZUxvYWRpbmdUeXBlID0gREVGQVVMVF9WQUxVRVMubG9hZGluZ1R5cGU7XG5cbiAgQElucHV0KCkgc3R5bGVzOiBzdHJpbmcgPSBERUZBVUxUX1ZBTFVFUy5zdHlsZXM7XG5cbiAgQE91dHB1dCgpIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzYWZlSW1hZ2VTcmM6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlSW1hZ2VCYXNlZE9uSW1hZ2VUeXBlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgdmVyaWZ5Q2hhbmdlID0gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmICFjaGFuZ2VzW2tleV0uZmlyc3RDaGFuZ2U7XG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgY2hhbmdlIG9mIE9iamVjdC5lbnRyaWVzKGNoYW5nZXMpKSB7XG4gICAgICBjb25zdCBrZXk6IHN0cmluZyA9IGNoYW5nZVswXTtcbiAgICAgIGNvbnN0IHZhbHVlOiBhbnkgPSBjaGFuZ2VbMV0uY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy52YWxpZGF0ZUlucHV0UHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImltYWdlU3JjXCIpKSB7XG4gICAgICB0aGlzLmltYWdlU3JjID0gY2hhbmdlcy5pbWFnZVNyYy5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLmhhbmRsZUltYWdlQmFzZWRPbkltYWdlVHlwZSgpO1xuICAgIH1cblxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJhbHRUZXh0XCIpKSB7XG4gICAgICB0aGlzLmFsdFRleHQgPSBjaGFuZ2VzLmFsdFRleHQuY3VycmVudFZhbHVlO1xuICAgIH1cblxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJpbWFnZVR5cGVcIikpIHtcbiAgICAgIHRoaXMuaW1hZ2VUeXBlID0gY2hhbmdlcy5pbWFnZVR5cGUuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5oYW5kbGVJbWFnZUJhc2VkT25JbWFnZVR5cGUoKTtcbiAgICB9XG5cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwibG9hZGluZ1R5cGVcIikpIHtcbiAgICAgIHRoaXMubG9hZGluZ1R5cGUgPSBjaGFuZ2VzLmxvYWRpbmdUeXBlLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlSW5wdXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmIChWQUxJREFURV9LRVlfVkFMVUVTW2tleV0gJiYgIWlzVmFsaWRLZXlWYWx1ZShrZXksIHZhbHVlKSkge1xuICAgICAgdGhpc1trZXldID0gREVGQVVMVF9WQUxVRVNba2V5XTtcbiAgICAgIHRocm93RXJyb3JNZXNzYWdlKFxuICAgICAgICBcImt3aWt1aS1pbWFnZVwiLFxuICAgICAgICB0aGlzLmlkLFxuICAgICAgICBrZXksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBERUZBVUxUX1ZBTFVFU1trZXldXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2soZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoZSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuSW1hZ2VTcmMoKTogdm9pZCB7XG4gICAgdGhpcy5pbWFnZVNyYyA9IHRoaXMuaW1hZ2VTcmMudHJpbSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYW5pdGl6ZUltYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuc2FmZUltYWdlU3JjID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKFxuICAgICAgdGhpcy5pbWFnZVNyY1xuICAgICk7XG4gIH1cblxuICBoYW5kbGVJbWFnZUJhc2VkT25JbWFnZVR5cGUoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbkltYWdlU3JjKCk7XG5cbiAgICBzd2l0Y2ggKHRoaXMuaW1hZ2VUeXBlKSB7XG4gICAgICBjYXNlIEVLd2lrVUlJbWFnZVR5cGUuQkFTRTY0OlxuICAgICAgICBpZiAoIXRoaXMuaW1hZ2VTcmMuc3RhcnRzV2l0aChcImRhdGE6aW1hZ2VcIikpIHtcbiAgICAgICAgICB0aGlzLmltYWdlU3JjID0gYGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwke3RoaXMuaW1hZ2VTcmN9YDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRUt3aWtVSUltYWdlVHlwZS5VUkw6XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5zYW5pdGl6ZUltYWdlKCk7XG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJpbWFnZS1jb250YWluZXJcIj5cbiAgPGRpdiBbaW5uZXJIdG1sXT1cImh0bWw/LmJlZm9yZSA/PyAnJyB8IGt3aWt1aVNhZmVIdG1sXCI+PC9kaXY+XG4gIDxpbWdcbiAgICBbYXR0ci5hbHRdPVwiYWx0VGV4dFwiXG4gICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgIFthdHRyLmxvYWRpbmddPVwibG9hZGluZ1R5cGVcIlxuICAgIFthdHRyLnNyY109XCJzYWZlSW1hZ2VTcmNcIlxuICAgIFtjbGFzc109XCJjbGFzc1wiXG4gICAgW3N0eWxlXT1cInN0eWxlc1wiXG4gICAgKGNsaWNrKT1cImhhbmRsZU9uQ2xpY2soJGV2ZW50KVwiXG4gIC8+XG4gIDxkaXYgW2lubmVySHRtbF09XCJodG1sPy5hZnRlciA/PyAnJyB8IGt3aWt1aVNhZmVIdG1sXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==