{"version":3,"file":"pepperi-addons-ngx-lib-image.mjs","sources":["../../../projects/ngx-lib/image/image.service.ts","../../../projects/ngx-lib/image/image.component.ts","../../../projects/ngx-lib/image/image.component.html","../../../projects/ngx-lib/image/image.module.ts","../../../projects/ngx-lib/image/public-api.ts","../../../projects/ngx-lib/image/pepperi-addons-ngx-lib-image.ts"],"sourcesContent":["import { Injectable, TemplateRef } from '@angular/core';\r\nimport {\r\n    PepFileService,\r\n    PepCustomizationService,\r\n    IPepOption,\r\n} from '@pepperi-addons/ngx-lib';\r\nimport { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\r\nimport { PepImagesFilmstripComponent } from '@pepperi-addons/ngx-lib/images-filmstrip';\r\nimport { IPepFileChangeEvent } from '@pepperi-addons/ngx-lib/files-uploader';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class PepImageService {\r\n    constructor(\r\n        private dialogService: PepDialogService,\r\n        private customizationService: PepCustomizationService,\r\n        private fileService: PepFileService,\r\n    ) { }\r\n\r\n    openImageDialog(imageSrc: string, options: IPepOption[], title = ''): void {\r\n        const arr = [imageSrc].concat(\r\n            (options || []).map((opt) => opt.value)\r\n        );\r\n        const imagesValue = arr.join(';');\r\n\r\n        // Show image in modal.\r\n        const config = this.dialogService.getDialogConfig({}, 'inline');\r\n        config.maxWidth = '75vw';\r\n        config.height = '95vh';\r\n\r\n        this.dialogService.openDialog(\r\n            PepImagesFilmstripComponent,\r\n            {\r\n                currIndex: 0,\r\n                key: new Date().getDate(),\r\n                value: imagesValue,\r\n                label: title,\r\n                showFooter: false,\r\n                showClose: true,\r\n                uid: '',\r\n                showThumbnails: arr.length > 1,\r\n            },\r\n            config\r\n        );\r\n    }\r\n\r\n    openFromURI(event: IPepFileChangeEvent) {\r\n        if (event) {\r\n            const fileStrArr = event.fileStr.split(';');\r\n            if (fileStrArr.length === 2) {\r\n                const win = window.open('', '_blank');\r\n                const contentType = fileStrArr[0].split(':')[1];\r\n                const base64 = fileStrArr[1].split(',')[1];\r\n                const blob = this.fileService.convertFromb64toBlob(\r\n                    base64,\r\n                    contentType\r\n                );\r\n                const url = URL.createObjectURL(blob);\r\n                win.location.href = url;\r\n            }\r\n        }\r\n    }\r\n}\r\n","import {\n    Component,\n    OnInit,\n    OnChanges,\n    Input,\n    Output,\n    EventEmitter,\n    ChangeDetectorRef,\n    ChangeDetectionStrategy,\n    ElementRef,\n    OnDestroy,\n    Renderer2,\n    Optional,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n    PepFileService,\n    PepLayoutType,\n    PepCustomizationService,\n    PepHorizontalAlignment,\n    DEFAULT_HORIZONTAL_ALIGNMENT,\n    IPepFieldClickEvent,\n    IPepOption,\n    PepImageField,\n} from '@pepperi-addons/ngx-lib';\n\nimport { pepIconNoImage2 } from '@pepperi-addons/ngx-lib/icon';\nimport { PepImageService } from './image.service';\nimport { IPepFileChangeEvent } from '@pepperi-addons/ngx-lib/files-uploader';\n\n@Component({\n    selector: 'pep-image',\n    templateUrl: './image.component.html',\n    styleUrls: ['./image.component.scss', './image.component.theme.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepImageComponent implements OnChanges, OnInit, OnDestroy {\n    public static MENU_CLICKED = '[MenuClicked]';\n\n    @Input() key = '';\n    @Input() srcLarge = '';\n    @Input() src = '';\n    @Input() options: IPepOption[] = [];\n    @Input() label = '';\n    // @Input() type = 'image';\n    @Input() mandatory = false;\n    @Input() disabled = false;\n    @Input() readonly = false;\n    @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n    private _rowSpan = 1;\n    @Input()\n    set rowSpan(value) {\n        this._rowSpan = value;\n        this.setFieldHeight();\n    }\n    get rowSpan(): number {\n        return this._rowSpan;\n    }\n\n    @Input() indicatorsField: any = null;\n    @Input() menuField: any = null;\n    @Input() hasCampaignField: any = null;\n\n    private _visible = true;\n    @Input()\n    set visible(visible: boolean) {\n        this._visible = visible;\n        if (visible) {\n            this.renderer.removeClass(\n                this.element.nativeElement,\n                'hidden-element'\n            );\n        } else {\n            this.renderer.addClass(\n                this.element.nativeElement,\n                'hidden-element'\n            );\n        }\n    }\n    get visible(): boolean {\n        return this._visible;\n    }\n\n    controlType = 'image';\n\n    @Input() form: FormGroup = null;\n    @Input() uid = '';\n    @Input() showTitle = true;\n    @Input() renderTitle = true;\n\n    private _layoutType: PepLayoutType = 'form';\n    @Input()\n    set layoutType(value: PepLayoutType) {\n        this._layoutType = value;\n        this.setFieldHeight();\n    }\n    get layoutType(): PepLayoutType {\n        return this._layoutType;\n    }\n\n    @Input() isActive = false;\n    @Input() sizeLimitMB = 5;\n    @Input() acceptImagesType = 'bmp,jpg,jpeg,png,gif'; // \"image/bmp, image/jpg, image/jpeg, image/png, image/tif, image/tiff\";\n\n    @Output()\n    fileChange: EventEmitter<any> = new EventEmitter<any>();\n\n    @Output()\n    elementClick: EventEmitter<IPepFieldClickEvent> = new EventEmitter<IPepFieldClickEvent>();\n\n    fieldHeight = '';\n    standAlone = false;\n    dataURI = null;\n\n    constructor(\n        private imageService: PepImageService,\n        private customizationService: PepCustomizationService,\n        private fileService: PepFileService,\n        private renderer: Renderer2,\n        private element: ElementRef,\n        private translate: TranslateService\n    ) { }\n\n    ngOnInit(): void {\n        if (this.form === null) {\n            this.standAlone = true;\n            this.setFieldHeight();\n            this.setDefaultForm();\n\n            this.renderer.addClass(\n                this.element.nativeElement,\n                PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n            );\n\n            if (!this.renderTitle) {\n                this.renderer.addClass(\n                    this.element.nativeElement,\n                    PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME\n                );\n            }\n        }\n    }\n\n    private setFieldHeight(): void {\n        this.fieldHeight = this.customizationService.calculateFieldHeight(\n            this.layoutType,\n            this.rowSpan,\n            this.standAlone\n        );\n    }\n\n    private setDefaultForm(): void {\n        const pepField = new PepImageField({\n            key: this.key,\n            value: this.src,\n            mandatory: this.mandatory,\n            readonly: this.readonly,\n            disabled: this.disabled,\n        });\n        this.form = this.customizationService.getDefaultFromGroup(pepField);\n    }\n\n    private getOtherData() {\n        return {\n            imageSrc: this.srcLarge || this.src,\n            options: this.options,\n            title: this.label\n        };\n    }\n\n    ngOnChanges(changes: any): void {\n        if (this.standAlone) {\n            this.setDefaultForm();\n        }\n\n        if (changes.src?.currentValue?.length > 0) {\n            // Empty dataURI if there is change in the src.\n            this.dataURI = null;\n        }\n    }\n\n    ngOnDestroy(): void {\n        //\n    }\n\n    errorHandler(event: any): void {\n        event.target.src = this.fileService.getSvgAsImageSrc(\n            pepIconNoImage2.data\n        );\n        event.target.title = this.translate.instant('IMAGE.NO_IMAGE');\n    }\n\n    onImageLoad(event: any): void {\n        event.target.style.visibility = 'visible';\n        event.target.title =\n            event.target.title.length === 0\n                ? this.translate.instant('IMAGE.CLICK_TO_ENLARGE')\n                : event.target.title;\n    }\n\n    onMenuClick(event: any): void {\n        this.elementClick.emit({\n            key: this.key,\n            value: PepImageComponent.MENU_CLICKED,\n            controlType: this.controlType,\n            eventWhich: event.which,\n        });\n    }\n\n    onFileChanged(fileData: IPepFileChangeEvent): void {\n        this.dataURI = fileData;\n        this.src = this.srcLarge =\n            this.standAlone && this.dataURI ? this.dataURI.fileStr : '';\n\n        this.customizationService.updateFormFieldValue(\n            this.form,\n            this.key,\n            this.dataURI ? this.dataURI.fileExt : ''\n        );\n        // this.valueChange.emit({\n        //     key: this.key,\n        //     value,\n        // });\n\n        this.fileChange.emit(fileData);\n        // this.fileChange.emit(value.length > 0 ? JSON.parse(value) : value);\n    }\n\n    objectIdIsNotEmpty(): boolean {\n        return this.uid?.length > 0 && this.uid !== '0';\n    }\n\n    onFileClicked(event: IPepFieldClickEvent): void {\n        let hasParentImage = true;\n        if (\n            // this.objectIdIsNotEmpty() &&\n            this.src &&\n            this.src.indexOf('no-image') > -1\n        ) {\n            hasParentImage = false;\n        }\n\n        // Add the other data object for let the client open the image dialog eazy.\n        event.otherData = this.getOtherData();\n\n        this.elementClick.emit(event);\n    }\n\n    itemImageClick(event: any): void {\n        let hasParentImage = true;\n        const elemTarget = event.target || event.srcElement;\n        const nextElement = elemTarget.nextElementSibling || null;\n        const imageSRC = elemTarget.src || null;\n        const nextElementSRC =\n            nextElement && nextElement.src ? nextElement.src : null;\n\n        if (\n            (imageSRC && imageSRC.indexOf('no-image') > -1) ||\n            (nextElementSRC && nextElementSRC.src.indexOf('no-image') > -1)\n        ) {\n            hasParentImage = false;\n        }\n\n        // this.openImageModal(hasParentImage);\n        // if (this.dataURI) {\n        //     this.imageService.openFromURI(this.dataURI);\n        // } else {\n        //     this.imageService.openImageDialog(this.srcLarge || this.src, this.options, this.label);\n        // }\n        const eventToRaise: IPepFieldClickEvent = {\n            key: this.key,\n            controlType: this.controlType,\n            eventWhich: event.which\n        };\n        eventToRaise.otherData = this.getOtherData();\n        this.elementClick.emit(eventToRaise);\n    }\n\n    // openImageModal(hasParentImage: boolean): void {\n    //     if (this.dataURI) {\n    //         const fileStrArr = this.dataURI.fileStr.split(';');\n    //         if (fileStrArr.length === 2) {\n    //             const win = window.open('', '_blank');\n    //             const contentType = fileStrArr[0].split(':')[1];\n    //             const base64 = fileStrArr[1].split(',')[1];\n    //             const blob = this.fileService.convertFromb64toBlob(\n    //                 base64,\n    //                 contentType\n    //             );\n    //             const url = URL.createObjectURL(blob);\n    //             win.location.href = url;\n    //         }\n    //     } else {\n    //         const arr = [this.srcLarge || this.src].concat(\n    //             (this.options || []).map((opt) => opt.value)\n    //         );\n    //         const imagesValue = arr.join(';');\n\n    //         // Show image in modal.\n    //         const config = this.dialogService.getDialogConfig({}, 'inline');\n    //         config.maxWidth = '75vw';\n    //         config.height = '95vh';\n\n    //         this.dialogService.openDialog(\n    //             PepImagesFilmstripComponent,\n    //             {\n    //                 currIndex: 0,\n    //                 key: this.key,\n    //                 value: imagesValue,\n    //                 label: this.label,\n    //                 uid: this.uid,\n    //                 showThumbnails: arr.length > 1,\n    //             },\n    //             config\n    //         );\n    //     }\n    // }\n}\n","<ng-container [formGroup]=\"form\">\n    <ng-container>\n        <ng-template #readonlyTemplate>\n            <div class=\"img-wrapper\" [ngClass]=\"{\n                'left-alignment': xAlignment == 'left',\n                'right-alignment': xAlignment == 'right',\n                'center-alignment': xAlignment == 'center'\n            }\">\n                <img [id]=\"key\" [style.max-height]=\"fieldHeight\" class=\"pep-report-file\" [alt]=\"label\" [src]=\"src\"\n                    (click)=\"itemImageClick($event)\" (error)=\"errorHandler($event)\" (load)=\"onImageLoad($event)\" />\n            </div>\n        </ng-template>\n\n        <ng-container *ngIf=\"layoutType === 'form'\">\n            <pep-field-title *ngIf=\"renderTitle\" [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\"\n                [xAlignment]=\"xAlignment\" [showTitle]=\"showTitle\">\n            </pep-field-title>\n            <ng-container *ngIf=\"disabled || readonly; then disabledTemplate; else editableTemplate\"></ng-container>\n            <ng-template #disabledTemplate>\n                <div class=\"pep-file body-sm\" [style.height]=\"fieldHeight\" [ngClass]=\"{'one-row': rowSpan == 1}\">\n                    <ng-container *ngTemplateOutlet=\"readonlyTemplate\"></ng-container>\n                </div>\n            </ng-template>\n            <ng-template #editableTemplate>\n                <div class=\"pep-file-container image-container\" [ngClass]=\"{ 'one-row': rowSpan == 1}\">\n                    <pep-files-uploader [id]=\"key\" [key]=\"key\" [fieldHeight]=\"fieldHeight\" [layoutType]=\"layoutType\"\n                        [standAlone]=\"standAlone\" [src]=\"srcLarge || src\" [label]=\"label\" [mandatory]=\"mandatory\"\n                        [disabled]=\"disabled\" [xAlignment]=\"xAlignment\" [rowSpan]=\"rowSpan\" [controlType]=\"controlType\"\n                        [form]=\"form\" [acceptedExtensions]=\"acceptImagesType\" (fileChange)=\"onFileChanged($event)\"\n                        (elementClick)=\"onFileClicked($event)\" [sizeLimitMB]=\"sizeLimitMB\">\n                    </pep-files-uploader>\n                </div>\n            </ng-template>\n        </ng-container>\n\n        <ng-container *ngIf=\"layoutType === 'card'\">\n            <ng-container *ngTemplateOutlet=\"readonlyTemplate\"></ng-container>\n        </ng-container>\n\n        <ng-container *ngIf=\"layoutType === 'table'\">\n            <ng-container *ngTemplateOutlet=\"readonlyTemplate\"></ng-container>\n        </ng-container>\n    </ng-container>\n\n    <!-- Menu -->\n    <ng-container *ngIf=\"menuField\">\n        <button [id]=\"key\" (click)=\"onMenuClick($event)\" class=\"floating-field pep-button icon-button weak invert\"\n            [ngClass]=\"{\n                bottom: menuField?.Layout?.YAlignment == '2',\n                top: menuField?.Layout?.YAlignment == '1',\n                left: menuField?.Layout?.XAlignment == '1',\n                right: menuField?.Layout?.XAlignment == '2'\n            }\">\n            <mat-icon>\n                <pep-icon name=\"system_menu\"></pep-icon>\n            </mat-icon>\n        </button>\n    </ng-container>\n\n    <!-- Campaign -->\n    <ng-container *ngIf=\"hasCampaignField && hasCampaignField?.FormattedValue\">\n        <span [id]=\"key\" class=\"campaign floating-field\" title=\"{{ hasCampaignField?.FormattedValue }}\" [ngClass]=\"{\n                bottom: hasCampaignField?.Layout?.YAlignment == '2',\n                top: hasCampaignField?.Layout?.YAlignment == '1',\n                left: hasCampaignField?.Layout?.XAlignment == '1',\n                right: hasCampaignField?.Layout?.XAlignment == '2'\n            }\">\n            <mat-icon class=\"has-active-campaign\">\n                <pep-icon name=\"system_bolt\"></pep-icon>\n            </mat-icon>\n        </span>\n    </ng-container>\n\n    <!-- Indicators -->\n    <ng-container *ngIf=\"indicatorsField && indicatorsField?.FormattedValue != ''\">\n        <span [id]=\"key\" class=\"indicators-container floating-field\" [ngClass]=\"{\n                bottom: indicatorsField?.Layout?.YAlignment == '2',\n                top: indicatorsField?.Layout?.YAlignment == '1',\n                left: indicatorsField?.Layout?.XAlignment == '1',\n                right: indicatorsField?.Layout?.XAlignment == '2'\n            }\">\n            <mat-icon>\n                <ng-container *ngFor=\"let value of indicatorsField?.FormattedValue?.split(';')\">\n                    <pep-icon class=\"pull-left flip\" name=\"indicator_dot_placeholder\" [fill]=\"value\"></pep-icon>\n                </ng-container>\n                <ng-container *ngIf=\"indicatorsField?.FormattedValue?.split(';').length < 4\">\n                    <pep-icon class=\"pull-left flip\" name=\"indicator_dot_placeholder\"></pep-icon>\n                </ng-container>\n            </mat-icon>\n        </span>\n    </ng-container>\n</ng-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n    PepIconModule,\n    PepIconRegistry,\n    pepIconSystemMenu,\n    pepIconSystemBolt,\n    pepIconIndicatorDotPlaceholder,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\nimport { PepFilesUploaderModule } from '@pepperi-addons/ngx-lib/files-uploader';\nimport {\n    PepImagesFilmstripModule,\n    PepImagesFilmstripComponent,\n} from '@pepperi-addons/ngx-lib/images-filmstrip';\n\nimport { PepImageComponent } from './image.component';\nimport { PepImageService } from './image.service';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        // Material modules,\n        MatCommonModule,\n        MatFormFieldModule,\n        MatIconModule,\n        // ngx-lib modules\n        PepNgxLibModule,\n        PepIconModule,\n        PepFieldTitleModule,\n        PepImagesFilmstripModule,\n        PepFilesUploaderModule,\n    ],\n    exports: [PepImageComponent],\n    declarations: [PepImageComponent],\n    entryComponents: [PepImagesFilmstripComponent],\n    providers: [PepImageService]\n})\nexport class PepImageModule {\n    constructor(private pepIconRegistry: PepIconRegistry) {\n        this.pepIconRegistry.registerIcons([\n            pepIconSystemMenu,\n            pepIconSystemBolt,\n            pepIconIndicatorDotPlaceholder,\n        ]);\n    }\n}\n","/*\n * Public API Surface of ngx-lib/image\n */\nexport * from './image.module';\nexport * from './image.component';\nexport * from './image.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PepImageService","i7","i1"],"mappings":"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"}