@libs-ui/components-gallery 0.2.356-9 → 0.2.357-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { NgComponentOutlet, AsyncPipe } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { computed, signal, model, input, output, inject, effect, untracked, ChangeDetectionStrategy, Component, viewChild, viewChildren, DestroyRef } from '@angular/core';
3
+ import { computed, signal, model, input, output, inject, effect, untracked, Component, ChangeDetectionStrategy, viewChild, viewChildren, DestroyRef } from '@angular/core';
4
4
  import { LibsUiIconsGetIconComponentPipe } from '@libs-ui/icons';
5
5
  import { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';
6
6
  import { uuid, isEmbedFrame, UtilsCommunicateMicroKeyGlobal, getDayjs, UtilsCommunicateMicro, viewDataNumberByLanguage } from '@libs-ui/utils';
@@ -132,11 +132,11 @@ class LibsUiComponentsGalleryComponent {
132
132
  this.closePopup();
133
133
  }
134
134
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsGalleryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
135
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsGalleryComponent, isStandalone: true, selector: "libs_ui-components-gallery", inputs: { images: { classPropertyName: "images", publicName: "images", isSignal: true, isRequired: true, transformFunction: null }, start: { classPropertyName: "start", publicName: "start", isSignal: true, isRequired: false, transformFunction: null }, end: { classPropertyName: "end", publicName: "end", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, fieldDisplaySrcImage: { classPropertyName: "fieldDisplaySrcImage", publicName: "fieldDisplaySrcImage", isSignal: true, isRequired: false, transformFunction: null }, ignoreOverlayCountImage: { classPropertyName: "ignoreOverlayCountImage", publicName: "ignoreOverlayCountImage", isSignal: true, isRequired: false, transformFunction: null }, imageArrayStringConvert: { classPropertyName: "imageArrayStringConvert", publicName: "imageArrayStringConvert", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { images: "imagesChange", outFunctionsControl: "outFunctionsControl", outViewerEvent: "outViewerEvent" }, ngImport: i0, template: "@if (images()) {\n <div class=\"flex w-full h-full\">\n @for (image of imagesDisplay(); track $index) {\n <div\n #itemRef\n class=\"w-full h-full rounded-[4px] overflow-hidden relative cursor-pointer\"\n [class.mr-[8px]]=\"!$last\"\n (click)=\"handlerSelectImage($event, image)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n @if (!image['isError']) {\n <img\n [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex max-w-full max-h-full m-auto\"\n (error)=\"handlerImageError($event, image)\" />\n }\n @if (image['isError']) {\n <div *ngComponentOutlet=\"'image-default' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: itemRef.clientWidth }\"></div>\n }\n </div>\n @if ($last && images().length > end() && !ignoreOverlayCountImage()) {\n <div class=\"flex w-full h-full absolute top-0 left-0 items-center justify-center bg-black/15\">\n <span class=\"libs-ui-font-h5m text-white\">+{{ images().length - end() }}</span>\n </div>\n }\n </div>\n }\n </div>\n}\n", styles: [""], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: LibsUiIconsGetIconComponentPipe, name: "LibsUiIconsGetIconComponentPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
135
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsGalleryComponent, isStandalone: true, selector: "libs_ui-components-gallery", inputs: { images: { classPropertyName: "images", publicName: "images", isSignal: true, isRequired: true, transformFunction: null }, start: { classPropertyName: "start", publicName: "start", isSignal: true, isRequired: false, transformFunction: null }, end: { classPropertyName: "end", publicName: "end", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, fieldDisplaySrcImage: { classPropertyName: "fieldDisplaySrcImage", publicName: "fieldDisplaySrcImage", isSignal: true, isRequired: false, transformFunction: null }, ignoreOverlayCountImage: { classPropertyName: "ignoreOverlayCountImage", publicName: "ignoreOverlayCountImage", isSignal: true, isRequired: false, transformFunction: null }, imageArrayStringConvert: { classPropertyName: "imageArrayStringConvert", publicName: "imageArrayStringConvert", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { images: "imagesChange", outFunctionsControl: "outFunctionsControl", outViewerEvent: "outViewerEvent" }, ngImport: i0, template: "@if (images()) {\n <div class=\"flex w-full h-full\">\n @for (image of imagesDisplay(); track $index) {\n <div\n #itemRef\n class=\"w-full h-full rounded-[4px] overflow-hidden relative cursor-pointer\"\n [class.mr-[8px]]=\"!$last\"\n (click)=\"handlerSelectImage($event, image)\"\n (keydown.enter)=\"handlerSelectImage($event, image)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n @if (!image['isError']) {\n <img\n [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex max-w-full max-h-full m-auto\"\n alt=\"\"\n (error)=\"handlerImageError($event, image)\" />\n }\n @if (image['isError']) {\n <div *ngComponentOutlet=\"'image-default' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: itemRef.clientWidth }\"></div>\n }\n </div>\n @if ($last && images().length > end() && !ignoreOverlayCountImage()) {\n <div class=\"flex w-full h-full absolute top-0 left-0 items-center justify-center bg-black/15\">\n <span class=\"libs-ui-font-h5m text-white\">+{{ images().length - end() }}</span>\n </div>\n }\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: LibsUiIconsGetIconComponentPipe, name: "LibsUiIconsGetIconComponentPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
136
136
  }
137
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsGalleryComponent, decorators: [{
138
138
  type: Component,
139
- args: [{ selector: 'libs_ui-components-gallery', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgComponentOutlet, AsyncPipe, LibsUiIconsGetIconComponentPipe], template: "@if (images()) {\n <div class=\"flex w-full h-full\">\n @for (image of imagesDisplay(); track $index) {\n <div\n #itemRef\n class=\"w-full h-full rounded-[4px] overflow-hidden relative cursor-pointer\"\n [class.mr-[8px]]=\"!$last\"\n (click)=\"handlerSelectImage($event, image)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n @if (!image['isError']) {\n <img\n [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex max-w-full max-h-full m-auto\"\n (error)=\"handlerImageError($event, image)\" />\n }\n @if (image['isError']) {\n <div *ngComponentOutlet=\"'image-default' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: itemRef.clientWidth }\"></div>\n }\n </div>\n @if ($last && images().length > end() && !ignoreOverlayCountImage()) {\n <div class=\"flex w-full h-full absolute top-0 left-0 items-center justify-center bg-black/15\">\n <span class=\"libs-ui-font-h5m text-white\">+{{ images().length - end() }}</span>\n </div>\n }\n </div>\n }\n </div>\n}\n" }]
139
+ args: [{ selector: 'libs_ui-components-gallery', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgComponentOutlet, AsyncPipe, LibsUiIconsGetIconComponentPipe], template: "@if (images()) {\n <div class=\"flex w-full h-full\">\n @for (image of imagesDisplay(); track $index) {\n <div\n #itemRef\n class=\"w-full h-full rounded-[4px] overflow-hidden relative cursor-pointer\"\n [class.mr-[8px]]=\"!$last\"\n (click)=\"handlerSelectImage($event, image)\"\n (keydown.enter)=\"handlerSelectImage($event, image)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n @if (!image['isError']) {\n <img\n [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex max-w-full max-h-full m-auto\"\n alt=\"\"\n (error)=\"handlerImageError($event, image)\" />\n }\n @if (image['isError']) {\n <div *ngComponentOutlet=\"'image-default' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: itemRef.clientWidth }\"></div>\n }\n </div>\n @if ($last && images().length > end() && !ignoreOverlayCountImage()) {\n <div class=\"flex w-full h-full absolute top-0 left-0 items-center justify-center bg-black/15\">\n <span class=\"libs-ui-font-h5m text-white\">+{{ images().length - end() }}</span>\n </div>\n }\n </div>\n }\n </div>\n}\n" }]
140
140
  }], ctorParameters: () => [] });
141
141
 
142
142
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -210,7 +210,6 @@ class LibsUiComponentsGalleryViewerComponent {
210
210
  }
211
211
  if (event.key === 'ArrowRight') {
212
212
  this.handlerNextImage(event);
213
- return;
214
213
  }
215
214
  });
216
215
  this.isFirstRender.set(true);
@@ -282,7 +281,7 @@ class LibsUiComponentsGalleryViewerComponent {
282
281
  }
283
282
  this.setWidthHeight(element);
284
283
  element.style.position = `absolute`;
285
- if (!this.canDrag() && this.draggableEl() && this.draggableEl()?.stopDraggableBehavior) {
284
+ if (!this.canDrag() && this.draggableEl()?.stopDraggableBehavior) {
286
285
  this.draggableEl()?.stopDraggableBehavior?.();
287
286
  }
288
287
  }
@@ -393,9 +392,10 @@ class LibsUiComponentsGalleryViewerComponent {
393
392
  if (!element) {
394
393
  return;
395
394
  }
396
- const scaleValue = (this.viewPort()?.width || 0) / this.widthDefault() < ((this.viewPort()?.height || 0) - (this.singleImage() ? 0 : 40)) / this.heightDefault()
397
- ? (this.viewPort()?.width || 0) / this.widthDefault()
398
- : ((this.viewPort()?.height || 0) - (this.singleImage() ? 0 : 40)) / this.heightDefault();
395
+ const widthRatio = (this.viewPort()?.width || 0) / this.widthDefault();
396
+ const heightOffset = (this.viewPort()?.height || 0) - (this.singleImage() ? 0 : 40);
397
+ const heightRatio = heightOffset / this.heightDefault();
398
+ const scaleValue = widthRatio < heightRatio ? widthRatio : heightRatio;
399
399
  this.scaleValue.set(scaleValue);
400
400
  if (this.scaleValue() > 1 && (reset || this.isFirstRender()) && !this.fullScreen()) {
401
401
  this.scaleValue.set(1);
@@ -403,7 +403,6 @@ class LibsUiComponentsGalleryViewerComponent {
403
403
  this.setWidthHeight(element);
404
404
  if (this.fullScreen()) {
405
405
  element.style.position = `unset`;
406
- return;
407
406
  }
408
407
  }
409
408
  setWidthHeight(element) {
@@ -444,11 +443,11 @@ class LibsUiComponentsGalleryViewerComponent {
444
443
  this.timeouts().forEach((item) => clearTimeout(item));
445
444
  }
446
445
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsGalleryViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
447
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsGalleryViewerComponent, isStandalone: true, selector: "libs_ui-components-gallery-viewer", inputs: { images: { classPropertyName: "images", publicName: "images", isSignal: true, isRequired: true, transformFunction: null }, fieldDisplaySrcImage: { classPropertyName: "fieldDisplaySrcImage", publicName: "fieldDisplaySrcImage", isSignal: true, isRequired: true, transformFunction: null }, imageSelected: { classPropertyName: "imageSelected", publicName: "imageSelected", isSignal: true, isRequired: false, transformFunction: null }, removeBackdrop: { classPropertyName: "removeBackdrop", publicName: "removeBackdrop", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, singleImage: { classPropertyName: "singleImage", publicName: "singleImage", isSignal: true, isRequired: false, transformFunction: null }, classContainerInclude: { classPropertyName: "classContainerInclude", publicName: "classContainerInclude", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { imageSelected: "imageSelectedChange", outClose: "outClose" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, isSignal: true }, { propertyName: "singleImageRef", first: true, predicate: ["singleImageRef"], descendants: true, isSignal: true }, { propertyName: "elementRatioRef", first: true, predicate: ["elementRatioRef"], descendants: true, isSignal: true }, { propertyName: "fullContainerRef", first: true, predicate: ["fullContainerRef"], descendants: true, isSignal: true }, { propertyName: "imagesRef", predicate: ["imagesRef"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (images() || singleImage()) {\n <div\n class=\"libs-ui-gallery-img-popup libs-ui-gallery-img-popup-backdrop\"\n [class.!bg-[transparent]]=\"removeBackdrop()\"\n [style.zIndex]=\"zIndex()\">\n <div\n #fullContainerRef\n class=\"libs-ui-gallery-img-popup-container {{ classContainerInclude() || '' }}\">\n <div class=\"flex w-full justify-end mb-[16px] z-10\">\n <i\n class=\"libs-ui-icon-close text-[24px] p-[4px] rounded-[4px] text-[#ffffff] cursor-pointer bg-[#030B184D] hover:bg-[#030B1826]\"\n (click)=\"handlerClosePopup($event)\"></i>\n </div>\n <div class=\"relative w-full h-full\">\n <div class=\"flex flex-col w-full h-full justify-between\">\n <div class=\"libs-ui-gallery-img-popup-container-preview w-full h-full\">\n <div\n class=\"flex flex-col w-full h-full relative\"\n (mouseenter)=\"handlerShowButton(true)\"\n (mouseleave)=\"handlerShowButton(false)\">\n <div\n #containerRef\n class=\"flex w-full h-full relative\">\n <div\n class=\"absolute flex items-center justify-center w-full h-full overflow-hidden\"\n (mouseenter)=\"handlerMouseEvent($event, true)\"\n (mouseleave)=\"handlerMouseEvent($event, false)\">\n @if (fieldDisplaySrcImage() && imageSelected(); as imageSelected) {\n <img\n #singleImageRef\n [src]=\"imageSelected[fieldDisplaySrcImage()]\"\n class=\"flex m-[auto]\"\n (error)=\"handlerImageError($event, imageSelected)\" />\n }\n <div\n #elementRatioRef\n class=\"libs-ui-gallery-img-popup-container-preview-ratio flex items-center justify-center libs-ui-font-h5m text-[#e6e7ea] w-[80px] h-[34px] rounded-[4px] absolute top-[50%] left-[50%]\">\n {{ ratio() }}\n </div>\n </div>\n </div>\n @if (!imageSelected()?.['error']) {\n <div\n class=\"relative w-full\"\n (mouseenter)=\"handlerMouseEvent($event, true)\"\n [class.hidden]=\"!hoverContentViewImage()\">\n <div class=\"flex w-full justify-center libs-ui-font-h5r absolute z-10 top-[-44px]\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_zoom_out', direction: 'top', zIndex: zIndex() + 100 }\">\n <i\n class=\"libs-ui-gallery-img-popup-container-preview-button rounded-l-[8px] libs-ui-icon-zoom-out before:text-[16px]\"\n (click)=\"handlerZoom($event, 'out')\"></i>\n </libs_ui-components-popover>\n <libs_ui-components-popover [config]=\"{ content: 'i18n_zoom_in', direction: 'top', zIndex: zIndex() + 100 }\">\n <i\n class=\"libs-ui-gallery-img-popup-container-preview-button libs-ui-icon-zoom-in before:text-[16px]\"\n (click)=\"handlerZoom($event, 'in')\"></i>\n </libs_ui-components-popover>\n <libs_ui-components-popover [config]=\"{ content: fullScreen() ? 'i18n_action_exit_full_screen' : 'i18n_action_view_full_screen', direction: 'top', zIndex: zIndex() + 100 }\">\n <div\n class=\"libs-ui-gallery-img-popup-container-preview-button\"\n (click)=\"handlerFullScreen()\">\n <i class=\"{{ fullScreen() ? 'libs-ui-icon-fullscreen-exit' : 'libs-ui-icon-fullscreen-open' }} text-[#ffffff] text-[16px]\"></i>\n </div>\n </libs_ui-components-popover>\n <div\n class=\"libs-ui-gallery-img-popup-container-preview-button rounded-r-[8px] border-l border-l-1 border-[#5d636b] flex items-center\"\n (click)=\"handlerReset()\">\n <i\n class=\"libs-ui-icon-refresh text-16px mr-[8px]\"\n [class.text-[#ffffff]]=\"!disable()\"\n [class.text-[#6a7383]]=\"disable()\"></i>\n <div\n class=\"libs-ui-font-h5r libs-ui-gallery-text-restore\"\n [class.text-[#ffffff]]=\"!disable()\"\n [class.text-[#6a7383]]=\"disable()\">\n {{ 'i18n_restore' | translate }}\n </div>\n </div>\n </div>\n </div>\n }\n @if (!singleImage()) {\n <div class=\"flex justify-center libs-ui-font-h5r text-[#ffffff] mt-[12px]\">\n @if (fullScreen()) {\n <div class=\"mr-[16px] flex items-center\">\n <div\n class=\"rotate-180\"\n [class.cursor-pointer]=\"indexSelected() !== 0\"\n [class.pointer-events-none]=\"indexSelected() === 0\"\n (click)=\"handlerPreviousImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === 0\"></i>\n </div>\n </div>\n }\n <div class=\"flex items-center\">{{ indexSelected() + 1 }}/{{ images().length }}</div>\n\n @if (fullScreen()) {\n <div class=\"ml-[16px] flex items-center\">\n <div\n [class.cursor-pointer]=\"indexSelected() !== images().length - 1\"\n [class.pointer-events-none]=\"indexSelected() === images().length - 1\"\n (click)=\"handlerNextImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === images().length - 1\"></i>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n @if (!singleImage()) {\n <div\n class=\"libs-ui-gallery-img-popup-container-list px-[32px] mt-[24px] flex\"\n [class.!hidden]=\"fullScreen()\">\n <div class=\"mr-[24px] flex items-center\">\n <div\n class=\"rotate-180\"\n [class.cursor-pointer]=\"indexSelected() !== 0\"\n [class.pointer-events-none]=\"indexSelected() === 0\"\n (click)=\"handlerPreviousImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === 0\"></i>\n </div>\n </div>\n\n <div class=\"flex max-w-[80%] relative overflow-hidden\">\n <div class=\"flex h-full overflow-hidden\">\n @for (image of images(); track index; let index = $index; let last = $last) {\n <div\n #imagesRef\n class=\"libs-ui-gallery-img-popup-container-list-item\"\n [class.mr-[12px]]=\"!last\"\n [style.width.px]=\"imagesRef.offsetHeight\"\n [attr.active]=\"image[fieldDisplaySrcImage()] === imageSelected()?.[fieldDisplaySrcImage()]\">\n <div\n class=\"flex w-full h-full justify-center items-center\"\n (click)=\"handlerSelectImage($event, image, index)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n <img\n [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex max-h-full max-w-full m-[auto]\"\n (error)=\"handlerImageError($event, image)\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"ml-[24px] flex items-center\">\n <div\n [class.cursor-pointer]=\"indexSelected() !== images().length - 1\"\n [class.pointer-events-none]=\"indexSelected() === images().length - 1\"\n (click)=\"handlerNextImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === images().length - 1\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n}\n", styles: [".libs-ui-gallery-img-popup{display:flex;width:100%;height:100%;position:fixed;top:0;left:0;z-index:1000;justify-content:center}.libs-ui-gallery-img-popup-backdrop{background-color:#030b1850;backdrop-filter:blur(3px)}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container{position:relative;width:80%;height:90%;display:flex;flex-direction:column;margin:auto}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview{display:flex;position:relative}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-ratio{background:#071631;opacity:.65}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-button{height:32px;background:#071631;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:8px;color:#fff}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-button:hover{background:#5d636b}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-button:hover .libs-ui-gallery-text-restore{color:#fff}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-list{display:flex;flex-shrink:0;justify-content:center;height:15%}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-list .libs-ui-gallery-img-popup-container-list-item{cursor:pointer;height:100%;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:1px solid #e6e7ea;border-radius:8px;padding:2px;max-width:118px!important;max-height:118px!important}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-list .libs-ui-gallery-img-popup-container-list-item[active=true]{border:1px solid var(--libs-ui-color-default, #226ff5)}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
446
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsGalleryViewerComponent, isStandalone: true, selector: "libs_ui-components-gallery-viewer", inputs: { images: { classPropertyName: "images", publicName: "images", isSignal: true, isRequired: true, transformFunction: null }, fieldDisplaySrcImage: { classPropertyName: "fieldDisplaySrcImage", publicName: "fieldDisplaySrcImage", isSignal: true, isRequired: true, transformFunction: null }, imageSelected: { classPropertyName: "imageSelected", publicName: "imageSelected", isSignal: true, isRequired: false, transformFunction: null }, removeBackdrop: { classPropertyName: "removeBackdrop", publicName: "removeBackdrop", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, singleImage: { classPropertyName: "singleImage", publicName: "singleImage", isSignal: true, isRequired: false, transformFunction: null }, classContainerInclude: { classPropertyName: "classContainerInclude", publicName: "classContainerInclude", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { imageSelected: "imageSelectedChange", outClose: "outClose" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true, isSignal: true }, { propertyName: "singleImageRef", first: true, predicate: ["singleImageRef"], descendants: true, isSignal: true }, { propertyName: "elementRatioRef", first: true, predicate: ["elementRatioRef"], descendants: true, isSignal: true }, { propertyName: "fullContainerRef", first: true, predicate: ["fullContainerRef"], descendants: true, isSignal: true }, { propertyName: "imagesRef", predicate: ["imagesRef"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (images() || singleImage()) {\n <div\n class=\"libs-ui-gallery-img-popup libs-ui-gallery-img-popup-backdrop\"\n [class.!bg-[transparent]]=\"removeBackdrop()\"\n [style.zIndex]=\"zIndex()\">\n <div\n #fullContainerRef\n class=\"libs-ui-gallery-img-popup-container {{ classContainerInclude() || '' }}\">\n <div class=\"flex w-full justify-end mb-[16px] z-10\">\n <i\n class=\"libs-ui-icon-close text-[24px] p-[4px] rounded-[4px] text-[#ffffff] cursor-pointer bg-[#030B184D] hover:bg-[#030B1826]\"\n (click)=\"handlerClosePopup($event)\"\n (keydown.enter)=\"handlerClosePopup($event)\"></i>\n </div>\n <div class=\"relative w-full h-full\">\n <div class=\"flex flex-col w-full h-full justify-between\">\n <div class=\"libs-ui-gallery-img-popup-container-preview w-full h-full\">\n <div\n class=\"flex flex-col w-full h-full relative\"\n (mouseenter)=\"handlerShowButton(true)\"\n (mouseleave)=\"handlerShowButton(false)\">\n <div\n #containerRef\n class=\"flex w-full h-full relative\">\n <div\n class=\"absolute flex items-center justify-center w-full h-full overflow-hidden\"\n (mouseenter)=\"handlerMouseEvent($event, true)\"\n (mouseleave)=\"handlerMouseEvent($event, false)\">\n @if (fieldDisplaySrcImage() && imageSelected(); as imageSelected) {\n <img\n #singleImageRef\n [src]=\"imageSelected[fieldDisplaySrcImage()]\"\n class=\"flex m-[auto]\"\n alt=\"\"\n (error)=\"handlerImageError($event, imageSelected)\" />\n }\n <div\n #elementRatioRef\n class=\"libs-ui-gallery-img-popup-container-preview-ratio flex items-center justify-center libs-ui-font-h5m text-[#e6e7ea] w-[80px] h-[34px] rounded-[4px] absolute top-[50%] left-[50%]\">\n {{ ratio() }}\n </div>\n </div>\n </div>\n @if (!imageSelected()?.['error']) {\n <div\n class=\"relative w-full\"\n (mouseenter)=\"handlerMouseEvent($event, true)\"\n [class.hidden]=\"!hoverContentViewImage()\">\n <div class=\"flex w-full justify-center libs-ui-font-h5r absolute z-10 top-[-44px]\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_zoom_out', direction: 'top', zIndex: zIndex() + 100 }\">\n <i\n class=\"libs-ui-gallery-img-popup-container-preview-button rounded-l-[8px] libs-ui-icon-zoom-out before:text-[16px]\"\n (click)=\"handlerZoom($event, 'out')\"\n (keydown.enter)=\"handlerZoom($any($event), 'out')\"></i>\n </libs_ui-components-popover>\n <libs_ui-components-popover [config]=\"{ content: 'i18n_zoom_in', direction: 'top', zIndex: zIndex() + 100 }\">\n <i\n class=\"libs-ui-gallery-img-popup-container-preview-button libs-ui-icon-zoom-in before:text-[16px]\"\n (click)=\"handlerZoom($event, 'in')\"\n (keydown.enter)=\"handlerZoom($any($event), 'in')\"></i>\n </libs_ui-components-popover>\n <libs_ui-components-popover [config]=\"{ content: fullScreen() ? 'i18n_action_exit_full_screen' : 'i18n_action_view_full_screen', direction: 'top', zIndex: zIndex() + 100 }\">\n <div\n class=\"libs-ui-gallery-img-popup-container-preview-button\"\n (click)=\"handlerFullScreen()\"\n (keydown.enter)=\"handlerFullScreen()\">\n <i class=\"{{ fullScreen() ? 'libs-ui-icon-fullscreen-exit' : 'libs-ui-icon-fullscreen-open' }} text-[#ffffff] text-[16px]\"></i>\n </div>\n </libs_ui-components-popover>\n <div\n class=\"libs-ui-gallery-img-popup-container-preview-button rounded-r-[8px] border-l border-l-1 border-[#5d636b] flex items-center\"\n (click)=\"handlerReset()\"\n (keydown.enter)=\"handlerReset()\">\n <i\n class=\"libs-ui-icon-refresh text-16px mr-[8px]\"\n [class.text-[#ffffff]]=\"!disable()\"\n [class.text-[#6a7383]]=\"disable()\"></i>\n <div\n class=\"libs-ui-font-h5r libs-ui-gallery-text-restore\"\n [class.text-[#ffffff]]=\"!disable()\"\n [class.text-[#6a7383]]=\"disable()\">\n {{ 'i18n_restore' | translate }}\n </div>\n </div>\n </div>\n </div>\n }\n @if (!singleImage()) {\n <div class=\"flex justify-center libs-ui-font-h5r text-[#ffffff] mt-[12px]\">\n @if (fullScreen()) {\n <div class=\"mr-[16px] flex items-center\">\n <div\n class=\"rotate-180\"\n [class.cursor-pointer]=\"indexSelected() !== 0\"\n [class.pointer-events-none]=\"indexSelected() === 0\"\n (click)=\"handlerPreviousImage($event)\"\n (keydown.enter)=\"handlerPreviousImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === 0\"></i>\n </div>\n </div>\n }\n <div class=\"flex items-center\">{{ indexSelected() + 1 }}/{{ images().length }}</div>\n\n @if (fullScreen()) {\n <div class=\"ml-[16px] flex items-center\">\n <div\n [class.cursor-pointer]=\"indexSelected() !== images().length - 1\"\n [class.pointer-events-none]=\"indexSelected() === images().length - 1\"\n (click)=\"handlerNextImage($event)\"\n (keydown.enter)=\"handlerNextImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === images().length - 1\"></i>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n @if (!singleImage()) {\n <div\n class=\"libs-ui-gallery-img-popup-container-list px-[32px] mt-[24px] flex\"\n [class.!hidden]=\"fullScreen()\">\n <div class=\"mr-[24px] flex items-center\">\n <div\n class=\"rotate-180\"\n [class.cursor-pointer]=\"indexSelected() !== 0\"\n [class.pointer-events-none]=\"indexSelected() === 0\"\n (click)=\"handlerPreviousImage($event)\"\n (keydown.enter)=\"handlerPreviousImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === 0\"></i>\n </div>\n </div>\n\n <div class=\"flex max-w-[80%] relative overflow-hidden\">\n <div class=\"flex h-full overflow-hidden\">\n @for (image of images(); track index; let index = $index; let last = $last) {\n <div\n #imagesRef\n class=\"libs-ui-gallery-img-popup-container-list-item\"\n [class.mr-[12px]]=\"!last\"\n [style.width.px]=\"imagesRef.offsetHeight\"\n [attr.active]=\"image[fieldDisplaySrcImage()] === imageSelected()?.[fieldDisplaySrcImage()]\">\n <div\n class=\"flex w-full h-full justify-center items-center\"\n (click)=\"handlerSelectImage($event, image, index)\"\n (keydown.enter)=\"handlerSelectImage($event, image, index)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n <img\n [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex max-h-full max-w-full m-[auto]\"\n alt=\"\"\n (error)=\"handlerImageError($event, image)\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"ml-[24px] flex items-center\">\n <div\n [class.cursor-pointer]=\"indexSelected() !== images().length - 1\"\n [class.pointer-events-none]=\"indexSelected() === images().length - 1\"\n (click)=\"handlerNextImage($event)\"\n (keydown.enter)=\"handlerNextImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === images().length - 1\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n}\n", styles: [".libs-ui-gallery-img-popup{display:flex;width:100%;height:100%;position:fixed;top:0;left:0;z-index:1000;justify-content:center}.libs-ui-gallery-img-popup-backdrop{background-color:#030b1850;backdrop-filter:blur(3px)}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container{position:relative;width:80%;height:90%;display:flex;flex-direction:column;margin:auto}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview{display:flex;position:relative}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-ratio{background:#071631;opacity:.65}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-button{height:32px;background:#071631;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:8px;color:#fff}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-button:hover{background:#5d636b}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-button:hover .libs-ui-gallery-text-restore{color:#fff}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-list{display:flex;flex-shrink:0;justify-content:center;height:15%}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-list .libs-ui-gallery-img-popup-container-list-item{cursor:pointer;height:100%;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:1px solid #e6e7ea;border-radius:8px;padding:2px;max-width:118px!important;max-height:118px!important}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-list .libs-ui-gallery-img-popup-container-list-item[active=true]{border:1px solid var(--libs-ui-color-default, #226ff5)}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
448
447
  }
449
448
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsGalleryViewerComponent, decorators: [{
450
449
  type: Component,
451
- args: [{ selector: 'libs_ui-components-gallery-viewer', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, LibsUiComponentsPopoverComponent], template: "@if (images() || singleImage()) {\n <div\n class=\"libs-ui-gallery-img-popup libs-ui-gallery-img-popup-backdrop\"\n [class.!bg-[transparent]]=\"removeBackdrop()\"\n [style.zIndex]=\"zIndex()\">\n <div\n #fullContainerRef\n class=\"libs-ui-gallery-img-popup-container {{ classContainerInclude() || '' }}\">\n <div class=\"flex w-full justify-end mb-[16px] z-10\">\n <i\n class=\"libs-ui-icon-close text-[24px] p-[4px] rounded-[4px] text-[#ffffff] cursor-pointer bg-[#030B184D] hover:bg-[#030B1826]\"\n (click)=\"handlerClosePopup($event)\"></i>\n </div>\n <div class=\"relative w-full h-full\">\n <div class=\"flex flex-col w-full h-full justify-between\">\n <div class=\"libs-ui-gallery-img-popup-container-preview w-full h-full\">\n <div\n class=\"flex flex-col w-full h-full relative\"\n (mouseenter)=\"handlerShowButton(true)\"\n (mouseleave)=\"handlerShowButton(false)\">\n <div\n #containerRef\n class=\"flex w-full h-full relative\">\n <div\n class=\"absolute flex items-center justify-center w-full h-full overflow-hidden\"\n (mouseenter)=\"handlerMouseEvent($event, true)\"\n (mouseleave)=\"handlerMouseEvent($event, false)\">\n @if (fieldDisplaySrcImage() && imageSelected(); as imageSelected) {\n <img\n #singleImageRef\n [src]=\"imageSelected[fieldDisplaySrcImage()]\"\n class=\"flex m-[auto]\"\n (error)=\"handlerImageError($event, imageSelected)\" />\n }\n <div\n #elementRatioRef\n class=\"libs-ui-gallery-img-popup-container-preview-ratio flex items-center justify-center libs-ui-font-h5m text-[#e6e7ea] w-[80px] h-[34px] rounded-[4px] absolute top-[50%] left-[50%]\">\n {{ ratio() }}\n </div>\n </div>\n </div>\n @if (!imageSelected()?.['error']) {\n <div\n class=\"relative w-full\"\n (mouseenter)=\"handlerMouseEvent($event, true)\"\n [class.hidden]=\"!hoverContentViewImage()\">\n <div class=\"flex w-full justify-center libs-ui-font-h5r absolute z-10 top-[-44px]\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_zoom_out', direction: 'top', zIndex: zIndex() + 100 }\">\n <i\n class=\"libs-ui-gallery-img-popup-container-preview-button rounded-l-[8px] libs-ui-icon-zoom-out before:text-[16px]\"\n (click)=\"handlerZoom($event, 'out')\"></i>\n </libs_ui-components-popover>\n <libs_ui-components-popover [config]=\"{ content: 'i18n_zoom_in', direction: 'top', zIndex: zIndex() + 100 }\">\n <i\n class=\"libs-ui-gallery-img-popup-container-preview-button libs-ui-icon-zoom-in before:text-[16px]\"\n (click)=\"handlerZoom($event, 'in')\"></i>\n </libs_ui-components-popover>\n <libs_ui-components-popover [config]=\"{ content: fullScreen() ? 'i18n_action_exit_full_screen' : 'i18n_action_view_full_screen', direction: 'top', zIndex: zIndex() + 100 }\">\n <div\n class=\"libs-ui-gallery-img-popup-container-preview-button\"\n (click)=\"handlerFullScreen()\">\n <i class=\"{{ fullScreen() ? 'libs-ui-icon-fullscreen-exit' : 'libs-ui-icon-fullscreen-open' }} text-[#ffffff] text-[16px]\"></i>\n </div>\n </libs_ui-components-popover>\n <div\n class=\"libs-ui-gallery-img-popup-container-preview-button rounded-r-[8px] border-l border-l-1 border-[#5d636b] flex items-center\"\n (click)=\"handlerReset()\">\n <i\n class=\"libs-ui-icon-refresh text-16px mr-[8px]\"\n [class.text-[#ffffff]]=\"!disable()\"\n [class.text-[#6a7383]]=\"disable()\"></i>\n <div\n class=\"libs-ui-font-h5r libs-ui-gallery-text-restore\"\n [class.text-[#ffffff]]=\"!disable()\"\n [class.text-[#6a7383]]=\"disable()\">\n {{ 'i18n_restore' | translate }}\n </div>\n </div>\n </div>\n </div>\n }\n @if (!singleImage()) {\n <div class=\"flex justify-center libs-ui-font-h5r text-[#ffffff] mt-[12px]\">\n @if (fullScreen()) {\n <div class=\"mr-[16px] flex items-center\">\n <div\n class=\"rotate-180\"\n [class.cursor-pointer]=\"indexSelected() !== 0\"\n [class.pointer-events-none]=\"indexSelected() === 0\"\n (click)=\"handlerPreviousImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === 0\"></i>\n </div>\n </div>\n }\n <div class=\"flex items-center\">{{ indexSelected() + 1 }}/{{ images().length }}</div>\n\n @if (fullScreen()) {\n <div class=\"ml-[16px] flex items-center\">\n <div\n [class.cursor-pointer]=\"indexSelected() !== images().length - 1\"\n [class.pointer-events-none]=\"indexSelected() === images().length - 1\"\n (click)=\"handlerNextImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === images().length - 1\"></i>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n @if (!singleImage()) {\n <div\n class=\"libs-ui-gallery-img-popup-container-list px-[32px] mt-[24px] flex\"\n [class.!hidden]=\"fullScreen()\">\n <div class=\"mr-[24px] flex items-center\">\n <div\n class=\"rotate-180\"\n [class.cursor-pointer]=\"indexSelected() !== 0\"\n [class.pointer-events-none]=\"indexSelected() === 0\"\n (click)=\"handlerPreviousImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === 0\"></i>\n </div>\n </div>\n\n <div class=\"flex max-w-[80%] relative overflow-hidden\">\n <div class=\"flex h-full overflow-hidden\">\n @for (image of images(); track index; let index = $index; let last = $last) {\n <div\n #imagesRef\n class=\"libs-ui-gallery-img-popup-container-list-item\"\n [class.mr-[12px]]=\"!last\"\n [style.width.px]=\"imagesRef.offsetHeight\"\n [attr.active]=\"image[fieldDisplaySrcImage()] === imageSelected()?.[fieldDisplaySrcImage()]\">\n <div\n class=\"flex w-full h-full justify-center items-center\"\n (click)=\"handlerSelectImage($event, image, index)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n <img\n [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex max-h-full max-w-full m-[auto]\"\n (error)=\"handlerImageError($event, image)\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"ml-[24px] flex items-center\">\n <div\n [class.cursor-pointer]=\"indexSelected() !== images().length - 1\"\n [class.pointer-events-none]=\"indexSelected() === images().length - 1\"\n (click)=\"handlerNextImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === images().length - 1\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n}\n", styles: [".libs-ui-gallery-img-popup{display:flex;width:100%;height:100%;position:fixed;top:0;left:0;z-index:1000;justify-content:center}.libs-ui-gallery-img-popup-backdrop{background-color:#030b1850;backdrop-filter:blur(3px)}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container{position:relative;width:80%;height:90%;display:flex;flex-direction:column;margin:auto}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview{display:flex;position:relative}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-ratio{background:#071631;opacity:.65}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-button{height:32px;background:#071631;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:8px;color:#fff}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-button:hover{background:#5d636b}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-button:hover .libs-ui-gallery-text-restore{color:#fff}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-list{display:flex;flex-shrink:0;justify-content:center;height:15%}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-list .libs-ui-gallery-img-popup-container-list-item{cursor:pointer;height:100%;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:1px solid #e6e7ea;border-radius:8px;padding:2px;max-width:118px!important;max-height:118px!important}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-list .libs-ui-gallery-img-popup-container-list-item[active=true]{border:1px solid var(--libs-ui-color-default, #226ff5)}\n"] }]
450
+ args: [{ selector: 'libs_ui-components-gallery-viewer', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, LibsUiComponentsPopoverComponent], template: "@if (images() || singleImage()) {\n <div\n class=\"libs-ui-gallery-img-popup libs-ui-gallery-img-popup-backdrop\"\n [class.!bg-[transparent]]=\"removeBackdrop()\"\n [style.zIndex]=\"zIndex()\">\n <div\n #fullContainerRef\n class=\"libs-ui-gallery-img-popup-container {{ classContainerInclude() || '' }}\">\n <div class=\"flex w-full justify-end mb-[16px] z-10\">\n <i\n class=\"libs-ui-icon-close text-[24px] p-[4px] rounded-[4px] text-[#ffffff] cursor-pointer bg-[#030B184D] hover:bg-[#030B1826]\"\n (click)=\"handlerClosePopup($event)\"\n (keydown.enter)=\"handlerClosePopup($event)\"></i>\n </div>\n <div class=\"relative w-full h-full\">\n <div class=\"flex flex-col w-full h-full justify-between\">\n <div class=\"libs-ui-gallery-img-popup-container-preview w-full h-full\">\n <div\n class=\"flex flex-col w-full h-full relative\"\n (mouseenter)=\"handlerShowButton(true)\"\n (mouseleave)=\"handlerShowButton(false)\">\n <div\n #containerRef\n class=\"flex w-full h-full relative\">\n <div\n class=\"absolute flex items-center justify-center w-full h-full overflow-hidden\"\n (mouseenter)=\"handlerMouseEvent($event, true)\"\n (mouseleave)=\"handlerMouseEvent($event, false)\">\n @if (fieldDisplaySrcImage() && imageSelected(); as imageSelected) {\n <img\n #singleImageRef\n [src]=\"imageSelected[fieldDisplaySrcImage()]\"\n class=\"flex m-[auto]\"\n alt=\"\"\n (error)=\"handlerImageError($event, imageSelected)\" />\n }\n <div\n #elementRatioRef\n class=\"libs-ui-gallery-img-popup-container-preview-ratio flex items-center justify-center libs-ui-font-h5m text-[#e6e7ea] w-[80px] h-[34px] rounded-[4px] absolute top-[50%] left-[50%]\">\n {{ ratio() }}\n </div>\n </div>\n </div>\n @if (!imageSelected()?.['error']) {\n <div\n class=\"relative w-full\"\n (mouseenter)=\"handlerMouseEvent($event, true)\"\n [class.hidden]=\"!hoverContentViewImage()\">\n <div class=\"flex w-full justify-center libs-ui-font-h5r absolute z-10 top-[-44px]\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_zoom_out', direction: 'top', zIndex: zIndex() + 100 }\">\n <i\n class=\"libs-ui-gallery-img-popup-container-preview-button rounded-l-[8px] libs-ui-icon-zoom-out before:text-[16px]\"\n (click)=\"handlerZoom($event, 'out')\"\n (keydown.enter)=\"handlerZoom($any($event), 'out')\"></i>\n </libs_ui-components-popover>\n <libs_ui-components-popover [config]=\"{ content: 'i18n_zoom_in', direction: 'top', zIndex: zIndex() + 100 }\">\n <i\n class=\"libs-ui-gallery-img-popup-container-preview-button libs-ui-icon-zoom-in before:text-[16px]\"\n (click)=\"handlerZoom($event, 'in')\"\n (keydown.enter)=\"handlerZoom($any($event), 'in')\"></i>\n </libs_ui-components-popover>\n <libs_ui-components-popover [config]=\"{ content: fullScreen() ? 'i18n_action_exit_full_screen' : 'i18n_action_view_full_screen', direction: 'top', zIndex: zIndex() + 100 }\">\n <div\n class=\"libs-ui-gallery-img-popup-container-preview-button\"\n (click)=\"handlerFullScreen()\"\n (keydown.enter)=\"handlerFullScreen()\">\n <i class=\"{{ fullScreen() ? 'libs-ui-icon-fullscreen-exit' : 'libs-ui-icon-fullscreen-open' }} text-[#ffffff] text-[16px]\"></i>\n </div>\n </libs_ui-components-popover>\n <div\n class=\"libs-ui-gallery-img-popup-container-preview-button rounded-r-[8px] border-l border-l-1 border-[#5d636b] flex items-center\"\n (click)=\"handlerReset()\"\n (keydown.enter)=\"handlerReset()\">\n <i\n class=\"libs-ui-icon-refresh text-16px mr-[8px]\"\n [class.text-[#ffffff]]=\"!disable()\"\n [class.text-[#6a7383]]=\"disable()\"></i>\n <div\n class=\"libs-ui-font-h5r libs-ui-gallery-text-restore\"\n [class.text-[#ffffff]]=\"!disable()\"\n [class.text-[#6a7383]]=\"disable()\">\n {{ 'i18n_restore' | translate }}\n </div>\n </div>\n </div>\n </div>\n }\n @if (!singleImage()) {\n <div class=\"flex justify-center libs-ui-font-h5r text-[#ffffff] mt-[12px]\">\n @if (fullScreen()) {\n <div class=\"mr-[16px] flex items-center\">\n <div\n class=\"rotate-180\"\n [class.cursor-pointer]=\"indexSelected() !== 0\"\n [class.pointer-events-none]=\"indexSelected() === 0\"\n (click)=\"handlerPreviousImage($event)\"\n (keydown.enter)=\"handlerPreviousImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === 0\"></i>\n </div>\n </div>\n }\n <div class=\"flex items-center\">{{ indexSelected() + 1 }}/{{ images().length }}</div>\n\n @if (fullScreen()) {\n <div class=\"ml-[16px] flex items-center\">\n <div\n [class.cursor-pointer]=\"indexSelected() !== images().length - 1\"\n [class.pointer-events-none]=\"indexSelected() === images().length - 1\"\n (click)=\"handlerNextImage($event)\"\n (keydown.enter)=\"handlerNextImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === images().length - 1\"></i>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n @if (!singleImage()) {\n <div\n class=\"libs-ui-gallery-img-popup-container-list px-[32px] mt-[24px] flex\"\n [class.!hidden]=\"fullScreen()\">\n <div class=\"mr-[24px] flex items-center\">\n <div\n class=\"rotate-180\"\n [class.cursor-pointer]=\"indexSelected() !== 0\"\n [class.pointer-events-none]=\"indexSelected() === 0\"\n (click)=\"handlerPreviousImage($event)\"\n (keydown.enter)=\"handlerPreviousImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === 0\"></i>\n </div>\n </div>\n\n <div class=\"flex max-w-[80%] relative overflow-hidden\">\n <div class=\"flex h-full overflow-hidden\">\n @for (image of images(); track index; let index = $index; let last = $last) {\n <div\n #imagesRef\n class=\"libs-ui-gallery-img-popup-container-list-item\"\n [class.mr-[12px]]=\"!last\"\n [style.width.px]=\"imagesRef.offsetHeight\"\n [attr.active]=\"image[fieldDisplaySrcImage()] === imageSelected()?.[fieldDisplaySrcImage()]\">\n <div\n class=\"flex w-full h-full justify-center items-center\"\n (click)=\"handlerSelectImage($event, image, index)\"\n (keydown.enter)=\"handlerSelectImage($event, image, index)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n <img\n [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex max-h-full max-w-full m-[auto]\"\n alt=\"\"\n (error)=\"handlerImageError($event, image)\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"ml-[24px] flex items-center\">\n <div\n [class.cursor-pointer]=\"indexSelected() !== images().length - 1\"\n [class.pointer-events-none]=\"indexSelected() === images().length - 1\"\n (click)=\"handlerNextImage($event)\"\n (keydown.enter)=\"handlerNextImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === images().length - 1\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n}\n", styles: [".libs-ui-gallery-img-popup{display:flex;width:100%;height:100%;position:fixed;top:0;left:0;z-index:1000;justify-content:center}.libs-ui-gallery-img-popup-backdrop{background-color:#030b1850;backdrop-filter:blur(3px)}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container{position:relative;width:80%;height:90%;display:flex;flex-direction:column;margin:auto}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview{display:flex;position:relative}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-ratio{background:#071631;opacity:.65}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-button{height:32px;background:#071631;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:8px;color:#fff}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-button:hover{background:#5d636b}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-preview .libs-ui-gallery-img-popup-container-preview-button:hover .libs-ui-gallery-text-restore{color:#fff}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-list{display:flex;flex-shrink:0;justify-content:center;height:15%}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-list .libs-ui-gallery-img-popup-container-list-item{cursor:pointer;height:100%;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:1px solid #e6e7ea;border-radius:8px;padding:2px;max-width:118px!important;max-height:118px!important}.libs-ui-gallery-img-popup .libs-ui-gallery-img-popup-container .libs-ui-gallery-img-popup-container-list .libs-ui-gallery-img-popup-container-list-item[active=true]{border:1px solid var(--libs-ui-color-default, #226ff5)}\n"] }]
452
451
  }], ctorParameters: () => [] });
453
452
 
454
453
  var viewer_component = /*#__PURE__*/Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-gallery.mjs","sources":["../../../../../libs-ui/components/gallery/src/gallery.component.ts","../../../../../libs-ui/components/gallery/src/gallery.component.html","../../../../../libs-ui/components/gallery/src/viewer/viewer.component.ts","../../../../../libs-ui/components/gallery/src/viewer/viewer.component.html","../../../../../libs-ui/components/gallery/src/libs-ui-components-gallery.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AsyncPipe, NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ComponentRef, computed, effect, inject, input, model, OnDestroy, OnInit, output, signal, untracked } from '@angular/core';\nimport { LibsUiIconsGetIconComponentPipe } from '@libs-ui/icons';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { getDayjs, isEmbedFrame, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, uuid } from '@libs-ui/utils';\nimport { IGalleryFunctionsControlEvent } from './interfaces/functions-control-event.interface';\nimport { LibsUiComponentsGalleryViewerComponent } from './viewer/viewer.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-gallery',\n templateUrl: './gallery.component.html',\n styleUrls: ['./gallery.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgComponentOutlet, AsyncPipe, LibsUiIconsGetIconComponentPipe],\n})\nexport class LibsUiComponentsGalleryComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected imagesDisplay = computed(() => {\n return this.images().slice(this.start(), this.end());\n });\n\n private idOverlay = signal<string>(uuid());\n private idInterval = signal<number | undefined>(undefined);\n private viewerRef: ComponentRef<LibsUiComponentsGalleryViewerComponent> | undefined;\n\n // #region INPUT\n readonly images = model.required<Array<Record<string, any>>>();\n readonly start = input<number>(0);\n readonly end = input<number>(3);\n readonly zIndex = input<number>(1200);\n readonly fieldDisplaySrcImage = input<string>('url');\n readonly ignoreOverlayCountImage = input<boolean>();\n readonly imageArrayStringConvert = input<Array<string>>(); // sử dụng trong 1 số trường hợp images là Array<string>\n\n // #region OUTPUT\n readonly outFunctionsControl = output<IGalleryFunctionsControlEvent>();\n readonly outViewerEvent = output<'show' | 'remove'>();\n\n // #region INJECT\n private dynamicComponent = inject(LibsUiDynamicComponentService);\n\n constructor() {\n effect(() => {\n const imgConvert = this.imageArrayStringConvert();\n const fieldGetSrc = this.fieldDisplaySrcImage();\n\n if (!imgConvert?.length || !fieldGetSrc) {\n return;\n }\n untracked(() => {\n const convertedImages =\n imgConvert?.map((item) => {\n return {\n [fieldGetSrc]: item,\n } as Record<string, any>;\n }) || [];\n\n this.images.set(convertedImages);\n });\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit(this.FunctionsControl);\n }\n\n /* FUNCTIONS */\n public get FunctionsControl(): IGalleryFunctionsControlEvent {\n return {\n open: (imageSelected: Record<string, any>) => this.handlerSelectImage(undefined, imageSelected),\n viewerRef: this.ViewerRef,\n };\n }\n\n protected async handlerSelectImage(event: MouseEvent | undefined, imageSelected: Record<string, any>) {\n event?.stopPropagation();\n\n if (this.viewerRef) {\n return;\n }\n\n const viewerComponent = await import('./viewer/viewer.component').then((c) => c.LibsUiComponentsGalleryViewerComponent);\n\n this.viewerRef = this.dynamicComponent.resolveComponentFactory(viewerComponent);\n this.outFunctionsControl.emit({ viewerRef: this.ViewerRef, open: (imageSelected: Record<string, any>) => this.handlerSelectImage(undefined, imageSelected) });\n\n this.viewerRef.setInput('fieldDisplaySrcImage', this.fieldDisplaySrcImage());\n this.viewerRef.setInput('images', this.images());\n this.viewerRef.setInput('imageSelected', imageSelected);\n this.viewerRef.setInput('zIndex', this.zIndex());\n this.viewerRef.setInput('singleImage', this.images().length <= 1);\n\n const sub = this.viewerRef.instance.outClose.subscribe(() => {\n sub.unsubscribe();\n this.closePopup();\n });\n\n this.dynamicComponent.addToBody(this.viewerRef);\n this.outViewerEvent.emit('show');\n\n if (isEmbedFrame()) {\n const data = {\n type: UtilsCommunicateMicroKeyGlobal.KEY_MESSAGE_MODAL,\n response: {\n message: 'open',\n state: true,\n idOverlay: this.idOverlay,\n timeLiveUpdate: getDayjs().unix(),\n ignoreIntervalUpdateTimeLiveEvent: UtilsCommunicateMicroKeyGlobal.IGNORE_INTERVAL_UPDATE_TIME_LIVE_EVENT_MODAL,\n },\n };\n\n UtilsCommunicateMicro.PostMessageToParent(data);\n if (UtilsCommunicateMicroKeyGlobal.IGNORE_INTERVAL_UPDATE_TIME_LIVE_EVENT_MODAL) {\n return;\n }\n\n this.idInterval.set(\n setInterval(() => {\n data.response.timeLiveUpdate = getDayjs().unix();\n\n UtilsCommunicateMicro.PostMessageToParent(data);\n }, 2000) as unknown as number\n );\n }\n }\n\n protected handlerImageError(e: ErrorEvent, image: Record<string, any>) {\n const event = e as IEvent;\n\n event.stopPropagation();\n\n image['isError'] = true;\n }\n\n private closePopup() {\n clearInterval(this.idInterval());\n if (this.viewerRef) {\n this.outViewerEvent.emit('remove');\n if (isEmbedFrame()) {\n const data = {\n type: UtilsCommunicateMicroKeyGlobal.KEY_MESSAGE_MODAL,\n response: {\n message: 'close',\n state: false,\n idOverlay: this.idOverlay,\n },\n };\n\n UtilsCommunicateMicro.PostMessageToParent(data);\n }\n }\n this.dynamicComponent.remove(this.viewerRef);\n this.viewerRef = undefined;\n this.outFunctionsControl.emit({ viewerRef: this.ViewerRef, open: (imageSelected: Record<string, any>) => this.handlerSelectImage(undefined, imageSelected) });\n }\n\n private get ViewerRef() {\n return this.viewerRef;\n }\n\n ngOnDestroy() {\n this.viewerRef?.destroy();\n this.closePopup();\n }\n}\n","@if (images()) {\n <div class=\"flex w-full h-full\">\n @for (image of imagesDisplay(); track $index) {\n <div\n #itemRef\n class=\"w-full h-full rounded-[4px] overflow-hidden relative cursor-pointer\"\n [class.mr-[8px]]=\"!$last\"\n (click)=\"handlerSelectImage($event, image)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n @if (!image['isError']) {\n <img\n [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex max-w-full max-h-full m-auto\"\n (error)=\"handlerImageError($event, image)\" />\n }\n @if (image['isError']) {\n <div *ngComponentOutlet=\"'image-default' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: itemRef.clientWidth }\"></div>\n }\n </div>\n @if ($last && images().length > end() && !ignoreOverlayCountImage()) {\n <div class=\"flex w-full h-full absolute top-0 left-0 items-center justify-center bg-black/15\">\n <span class=\"libs-ui-font-h5m text-white\">+{{ images().length - end() }}</span>\n </div>\n }\n </div>\n }\n </div>\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, effect, ElementRef, inject, input, model, OnDestroy, output, signal, untracked, viewChild, viewChildren } from '@angular/core';\nimport { IBoundingClientRect, IEvent } from '@libs-ui/interfaces-types';\nimport { IZoomDragHTMLElement } from '../interfaces/zoom.interface';\nimport { fromEvent } from 'rxjs';\nimport { viewDataNumberByLanguage } from '@libs-ui/utils';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-gallery-viewer',\n templateUrl: './viewer.component.html',\n styleUrls: ['./viewer.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, LibsUiComponentsPopoverComponent],\n})\nexport class LibsUiComponentsGalleryViewerComponent implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n protected indexSelected = signal<number>(0);\n protected scaleValue = signal<number>(1);\n protected ratio = signal<string>('100%');\n protected fullScreen = signal<boolean>(false);\n protected isShowButton = signal<boolean>(false);\n protected disable = signal<boolean>(true);\n protected hoverContentViewImage = signal<boolean>(false);\n\n private step = signal<number>(0.1);\n private draggableEl = signal<IZoomDragHTMLElement | null>(null);\n private widthDefault = signal<number>(0);\n private heightDefault = signal<number>(0);\n private viewPort = signal<IBoundingClientRect | undefined>(undefined);\n private canDrag = signal<boolean>(false);\n private widthImage = signal<number>(0);\n private isFirstRender = signal<boolean>(false);\n private timeouts = signal<Array<number>>([]);\n\n // #region INPUT\n readonly images = input.required<Array<Record<string, any>>>();\n readonly fieldDisplaySrcImage = input.required<string>();\n readonly imageSelected = model<Record<string, any>>();\n readonly removeBackdrop = input<boolean>();\n readonly zIndex = input<number, number | undefined>(1200, { transform: (val) => val ?? 1200 });\n readonly singleImage = input<boolean>(false);\n readonly classContainerInclude = input<string>();\n\n // #region OUTPUT\n readonly outClose = output<void>();\n\n // #region VIEW CHILD\n protected containerRef = viewChild<ElementRef>('containerRef');\n protected singleImageRef = viewChild<ElementRef>('singleImageRef');\n protected elementRatioRef = viewChild<ElementRef>('elementRatioRef');\n protected fullContainerRef = viewChild<ElementRef>('fullContainerRef');\n protected imagesRef = viewChildren<ElementRef>('imagesRef');\n\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n effect(() => {\n if (this.singleImage()) {\n if (this.images().length) {\n untracked(() => {\n this.imageSelected.set(this.images()[0]);\n });\n }\n return;\n }\n\n untracked(() => {\n const indexSelected = this.images().findIndex((item) => item[this.fieldDisplaySrcImage()] === this.imageSelected()?.[this.fieldDisplaySrcImage()]);\n\n this.indexSelected.set(indexSelected);\n\n this.createTimeout((id) => {\n this.clearTimeout(id);\n this.imagesRef()[this.indexSelected()].nativeElement.scrollIntoView();\n }, 100);\n });\n });\n }\n\n ngAfterViewInit() {\n fromEvent<KeyboardEvent>(document, 'keyup')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n event.stopPropagation();\n if (event.key === 'Escape') {\n this.handlerClosePopup(event);\n\n return;\n }\n if (event.key === 'ArrowLeft') {\n this.handlerPreviousImage(event);\n\n return;\n }\n if (event.key === 'ArrowRight') {\n this.handlerNextImage(event);\n\n return;\n }\n });\n this.isFirstRender.set(true);\n fromEvent(window, 'resize').pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.setWidthImages.bind(this));\n\n this.createTimeout((id) => {\n this.clearTimeout(id);\n this.setWidthImages();\n }, 300);\n }\n\n /* FUNCTIONS */\n\n private setWidthImages() {\n const singleImageRef = this.singleImageRef();\n if (singleImageRef) {\n singleImageRef.nativeElement.style.width = '';\n singleImageRef.nativeElement.style.height = '';\n }\n this.viewPort.set(this.containerRef()?.nativeElement.getBoundingClientRect());\n const img = new Image();\n\n img.src = this.imageSelected()?.[this.fieldDisplaySrcImage()] as string;\n img.onload = () => {\n this.widthDefault.set(img.naturalWidth);\n this.heightDefault.set(img.naturalHeight);\n this.widthImage.set(this.singleImageRef()?.nativeElement.width);\n\n this.setStyleSelectImage();\n };\n }\n\n protected handlerImageError(e: ErrorEvent, image: Record<string, any>) {\n const event = e as IEvent;\n\n event.stopPropagation();\n\n image['isError'] = true;\n }\n\n protected handlerShowButton(isShow: boolean) {\n this.isShowButton.set(isShow);\n }\n\n protected handlerMouseEvent(event: Event, status: boolean) {\n event.stopPropagation();\n this.hoverContentViewImage.set(status);\n }\n\n protected handlerClosePopup(e: Event) {\n e.stopPropagation();\n this.outClose.emit();\n }\n\n protected handlerZoom(event: MouseEvent, type: 'in' | 'out') {\n event.stopPropagation();\n this.isFirstRender.set(false);\n this.disable.set(false);\n const element = this.singleImageRef()?.nativeElement;\n\n if (!element) {\n return;\n }\n const draggableEl = this.makeElementDraggable({\n element: element,\n isOverflowHiddenDesired: true,\n });\n\n this.draggableEl.set(draggableEl);\n\n if (((this.scaleValue() * this.widthDefault()) / this.widthImage()) * 100 < 1) {\n this.scaleValue.set(((1 / 100) * this.widthImage()) / this.widthDefault());\n }\n if (((this.scaleValue() * this.widthDefault()) / this.widthImage()) * 100 > 5000 * 0.9) {\n this.scaleValue.set((((5000 * 0.9) / 100) * this.widthImage()) / this.widthDefault());\n }\n if (type === 'in') {\n const scaleValue = this.scaleValue() * (1 + this.step());\n this.scaleValue.set(scaleValue);\n }\n if (type === 'out') {\n const scaleValue = this.scaleValue() / (1 + this.step());\n this.scaleValue.set(scaleValue);\n }\n this.setWidthHeight(element);\n element.style.position = `absolute`;\n if (!this.canDrag() && this.draggableEl() && this.draggableEl()?.stopDraggableBehavior) {\n this.draggableEl()?.stopDraggableBehavior?.();\n }\n }\n\n protected handlerNextImage(e: Event) {\n const indexSelected = this.indexSelected() + 1;\n\n this.handlerSelectImage(e, this.images()[indexSelected], indexSelected);\n }\n\n protected handlerPreviousImage(e: Event) {\n const indexSelected = this.indexSelected() - 1;\n\n this.handlerSelectImage(e, this.images()[indexSelected], indexSelected);\n }\n\n protected handlerSelectImage(e: Event, imageSelected: Record<string, any>, indexSelected: number) {\n e.stopPropagation();\n if (!imageSelected) {\n return;\n }\n this.isFirstRender.set(true);\n const elementRatio = this.elementRatioRef()?.nativeElement;\n\n if (elementRatio) {\n elementRatio.style.display = 'none';\n }\n this.imageSelected.set(imageSelected);\n this.indexSelected.set(indexSelected);\n this.scaleValue.set(1);\n this.imagesRef()[indexSelected].nativeElement.scrollIntoView();\n this.setWidthImages();\n }\n\n protected handlerFullScreen() {\n this.createTimeout((id) => {\n this.clearTimeout(id);\n this.disable.set(true);\n const element = this.singleImageRef()?.nativeElement;\n const fullElement = this.fullContainerRef()?.nativeElement;\n\n this.fullScreen.set(!this.fullScreen());\n\n if (!fullElement) {\n return;\n }\n if (this.fullScreen()) {\n fullElement.style.width = '95%';\n fullElement.style.height = '95%';\n }\n if (!this.fullScreen()) {\n fullElement.style.width = '80%';\n fullElement.style.height = '90%';\n }\n this.viewPort.set(this.containerRef()?.nativeElement.getBoundingClientRect());\n if (!element) {\n return;\n }\n this.setStyleSelectImage(true);\n element.style.left = `unset`;\n element.style.top = `unset`;\n }, 0);\n }\n\n protected handlerReset() {\n this.disable.set(true);\n this.setStyleSelectImage(true);\n }\n\n private makeElementDraggable = ({ element, DRAGGABLE_CSS_CLASS = 'draggable-element' }: { element: HTMLElement | null; isOverflowHiddenDesired?: boolean; DRAGGABLE_CSS_CLASS?: string }): IZoomDragHTMLElement | null => {\n if (!element) {\n return null;\n }\n const isTheRequiredCSSAlreadyInPlace = !!Array.from(element.ownerDocument.getElementsByTagName('style')).filter((styleEl) => styleEl?.textContent?.includes(`.${DRAGGABLE_CSS_CLASS}`))?.[0];\n\n if (!isTheRequiredCSSAlreadyInPlace) {\n element.ownerDocument.body.appendChild(\n Object.assign(element.ownerDocument.createElement('style'), {\n textContent: `\n .${DRAGGABLE_CSS_CLASS} {\n position: absolute;\n cursor: grabbing !important;\n }\n `,\n })\n );\n }\n\n if (!element.classList.contains(DRAGGABLE_CSS_CLASS)) {\n element.classList.add(DRAGGABLE_CSS_CLASS);\n }\n element.onmousedown = (mouseDownEvent) => {\n mouseDownEvent.preventDefault();\n element.onmousemove = (mouseMoveEvent) => {\n mouseMoveEvent.preventDefault();\n const rectElement = element.getBoundingClientRect();\n\n if (rectElement.left + rectElement.width + mouseMoveEvent.movementX > (this.viewPort()?.width || 0) + (this.viewPort()?.left || 0) && rectElement.left + mouseMoveEvent.movementX < (this.viewPort()?.left || 0)) {\n element.style.left = `${element.offsetLeft + mouseMoveEvent.movementX}px`;\n }\n if (rectElement.top + rectElement.height + mouseMoveEvent.movementY > (this.viewPort()?.height || 0) + (this.viewPort()?.top || 0) && rectElement.top + mouseMoveEvent.movementY < (this.viewPort()?.top || 0)) {\n element.style.top = `${element.offsetTop + mouseMoveEvent.movementY}px`;\n }\n };\n };\n element.ownerDocument.onmouseup = (mouseUpEvent) => {\n mouseUpEvent.preventDefault();\n element.onmousemove = null;\n };\n\n return Object.assign(element, {\n stopDraggableBehavior() {\n element.classList.remove(DRAGGABLE_CSS_CLASS);\n element.onmousedown = null;\n element.onmousemove = null;\n element.onmouseup = null;\n element.style.left = 'unset';\n element.style.top = 'unset';\n\n return element;\n },\n });\n };\n\n private setStyleSelectImage(reset?: boolean) {\n const element = this.singleImageRef()?.nativeElement;\n\n if (!element) {\n return;\n }\n const scaleValue =\n (this.viewPort()?.width || 0) / this.widthDefault() < ((this.viewPort()?.height || 0) - (this.singleImage() ? 0 : 40)) / this.heightDefault()\n ? (this.viewPort()?.width || 0) / this.widthDefault()\n : ((this.viewPort()?.height || 0) - (this.singleImage() ? 0 : 40)) / this.heightDefault();\n\n this.scaleValue.set(scaleValue);\n\n if (this.scaleValue() > 1 && (reset || this.isFirstRender()) && !this.fullScreen()) {\n this.scaleValue.set(1);\n }\n this.setWidthHeight(element);\n if (this.fullScreen()) {\n element.style.position = `unset`;\n\n return;\n }\n }\n\n private setWidthHeight(element: HTMLElement) {\n element.style.width = `${this.scaleValue() * this.widthDefault()}px`;\n element.style.height = `${this.scaleValue() * this.heightDefault()}px`;\n this.canDrag.set(false);\n const rectElement = element.getBoundingClientRect();\n\n if (rectElement.width > (this.viewPort()?.width || 0) || rectElement.height > (this.viewPort()?.height || 0)) {\n this.canDrag.set(true);\n }\n if (rectElement.left + rectElement.width < (this.viewPort()?.width || 0) + (this.viewPort()?.left || 0) || rectElement.left > (this.viewPort()?.left || 0)) {\n element.style.left = `unset`;\n }\n if (rectElement.top + rectElement.height < (this.viewPort()?.top || 0) + (this.viewPort()?.height || 0) || rectElement.top > (this.viewPort()?.top || 0)) {\n element.style.top = `unset`;\n }\n\n this.setDisplayRatio();\n }\n\n private setDisplayRatio() {\n const element = this.singleImageRef()?.nativeElement;\n\n this.ratio.set(`${viewDataNumberByLanguage((element.width / this.widthDefault()) * 100, false, 0)}%`);\n const elementRatio = this.elementRatioRef()?.nativeElement;\n\n elementRatio.style.display = 'flex';\n this.createTimeout((id) => {\n this.clearTimeout(id);\n elementRatio.style.display = 'none';\n }, 1000);\n }\n\n private createTimeout(callback: (id: number) => void, delay: number) {\n const timeoutId = setTimeout(() => callback(timeoutId), delay) as unknown as number;\n this.timeouts.update((ids) => [...ids, timeoutId]);\n }\n\n private clearTimeout(id: number) {\n clearTimeout(id);\n\n this.timeouts.update((ids) => ids.filter((idStore) => idStore !== id));\n }\n\n ngOnDestroy() {\n this.timeouts().forEach((item) => clearTimeout(item));\n }\n}\n","@if (images() || singleImage()) {\n <div\n class=\"libs-ui-gallery-img-popup libs-ui-gallery-img-popup-backdrop\"\n [class.!bg-[transparent]]=\"removeBackdrop()\"\n [style.zIndex]=\"zIndex()\">\n <div\n #fullContainerRef\n class=\"libs-ui-gallery-img-popup-container {{ classContainerInclude() || '' }}\">\n <div class=\"flex w-full justify-end mb-[16px] z-10\">\n <i\n class=\"libs-ui-icon-close text-[24px] p-[4px] rounded-[4px] text-[#ffffff] cursor-pointer bg-[#030B184D] hover:bg-[#030B1826]\"\n (click)=\"handlerClosePopup($event)\"></i>\n </div>\n <div class=\"relative w-full h-full\">\n <div class=\"flex flex-col w-full h-full justify-between\">\n <div class=\"libs-ui-gallery-img-popup-container-preview w-full h-full\">\n <div\n class=\"flex flex-col w-full h-full relative\"\n (mouseenter)=\"handlerShowButton(true)\"\n (mouseleave)=\"handlerShowButton(false)\">\n <div\n #containerRef\n class=\"flex w-full h-full relative\">\n <div\n class=\"absolute flex items-center justify-center w-full h-full overflow-hidden\"\n (mouseenter)=\"handlerMouseEvent($event, true)\"\n (mouseleave)=\"handlerMouseEvent($event, false)\">\n @if (fieldDisplaySrcImage() && imageSelected(); as imageSelected) {\n <img\n #singleImageRef\n [src]=\"imageSelected[fieldDisplaySrcImage()]\"\n class=\"flex m-[auto]\"\n (error)=\"handlerImageError($event, imageSelected)\" />\n }\n <div\n #elementRatioRef\n class=\"libs-ui-gallery-img-popup-container-preview-ratio flex items-center justify-center libs-ui-font-h5m text-[#e6e7ea] w-[80px] h-[34px] rounded-[4px] absolute top-[50%] left-[50%]\">\n {{ ratio() }}\n </div>\n </div>\n </div>\n @if (!imageSelected()?.['error']) {\n <div\n class=\"relative w-full\"\n (mouseenter)=\"handlerMouseEvent($event, true)\"\n [class.hidden]=\"!hoverContentViewImage()\">\n <div class=\"flex w-full justify-center libs-ui-font-h5r absolute z-10 top-[-44px]\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_zoom_out', direction: 'top', zIndex: zIndex() + 100 }\">\n <i\n class=\"libs-ui-gallery-img-popup-container-preview-button rounded-l-[8px] libs-ui-icon-zoom-out before:text-[16px]\"\n (click)=\"handlerZoom($event, 'out')\"></i>\n </libs_ui-components-popover>\n <libs_ui-components-popover [config]=\"{ content: 'i18n_zoom_in', direction: 'top', zIndex: zIndex() + 100 }\">\n <i\n class=\"libs-ui-gallery-img-popup-container-preview-button libs-ui-icon-zoom-in before:text-[16px]\"\n (click)=\"handlerZoom($event, 'in')\"></i>\n </libs_ui-components-popover>\n <libs_ui-components-popover [config]=\"{ content: fullScreen() ? 'i18n_action_exit_full_screen' : 'i18n_action_view_full_screen', direction: 'top', zIndex: zIndex() + 100 }\">\n <div\n class=\"libs-ui-gallery-img-popup-container-preview-button\"\n (click)=\"handlerFullScreen()\">\n <i class=\"{{ fullScreen() ? 'libs-ui-icon-fullscreen-exit' : 'libs-ui-icon-fullscreen-open' }} text-[#ffffff] text-[16px]\"></i>\n </div>\n </libs_ui-components-popover>\n <div\n class=\"libs-ui-gallery-img-popup-container-preview-button rounded-r-[8px] border-l border-l-1 border-[#5d636b] flex items-center\"\n (click)=\"handlerReset()\">\n <i\n class=\"libs-ui-icon-refresh text-16px mr-[8px]\"\n [class.text-[#ffffff]]=\"!disable()\"\n [class.text-[#6a7383]]=\"disable()\"></i>\n <div\n class=\"libs-ui-font-h5r libs-ui-gallery-text-restore\"\n [class.text-[#ffffff]]=\"!disable()\"\n [class.text-[#6a7383]]=\"disable()\">\n {{ 'i18n_restore' | translate }}\n </div>\n </div>\n </div>\n </div>\n }\n @if (!singleImage()) {\n <div class=\"flex justify-center libs-ui-font-h5r text-[#ffffff] mt-[12px]\">\n @if (fullScreen()) {\n <div class=\"mr-[16px] flex items-center\">\n <div\n class=\"rotate-180\"\n [class.cursor-pointer]=\"indexSelected() !== 0\"\n [class.pointer-events-none]=\"indexSelected() === 0\"\n (click)=\"handlerPreviousImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === 0\"></i>\n </div>\n </div>\n }\n <div class=\"flex items-center\">{{ indexSelected() + 1 }}/{{ images().length }}</div>\n\n @if (fullScreen()) {\n <div class=\"ml-[16px] flex items-center\">\n <div\n [class.cursor-pointer]=\"indexSelected() !== images().length - 1\"\n [class.pointer-events-none]=\"indexSelected() === images().length - 1\"\n (click)=\"handlerNextImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === images().length - 1\"></i>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n @if (!singleImage()) {\n <div\n class=\"libs-ui-gallery-img-popup-container-list px-[32px] mt-[24px] flex\"\n [class.!hidden]=\"fullScreen()\">\n <div class=\"mr-[24px] flex items-center\">\n <div\n class=\"rotate-180\"\n [class.cursor-pointer]=\"indexSelected() !== 0\"\n [class.pointer-events-none]=\"indexSelected() === 0\"\n (click)=\"handlerPreviousImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === 0\"></i>\n </div>\n </div>\n\n <div class=\"flex max-w-[80%] relative overflow-hidden\">\n <div class=\"flex h-full overflow-hidden\">\n @for (image of images(); track index; let index = $index; let last = $last) {\n <div\n #imagesRef\n class=\"libs-ui-gallery-img-popup-container-list-item\"\n [class.mr-[12px]]=\"!last\"\n [style.width.px]=\"imagesRef.offsetHeight\"\n [attr.active]=\"image[fieldDisplaySrcImage()] === imageSelected()?.[fieldDisplaySrcImage()]\">\n <div\n class=\"flex w-full h-full justify-center items-center\"\n (click)=\"handlerSelectImage($event, image, index)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n <img\n [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex max-h-full max-w-full m-[auto]\"\n (error)=\"handlerImageError($event, image)\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"ml-[24px] flex items-center\">\n <div\n [class.cursor-pointer]=\"indexSelected() !== images().length - 1\"\n [class.pointer-events-none]=\"indexSelected() === images().length - 1\"\n (click)=\"handlerNextImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === images().length - 1\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;MAmBa,gCAAgC,CAAA;;AAEjC,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACtD,IAAA,CAAC,CAAC;AAEM,IAAA,SAAS,GAAG,MAAM,CAAS,IAAI,EAAE,CAAC;AAClC,IAAA,UAAU,GAAG,MAAM,CAAqB,SAAS,CAAC;AAClD,IAAA,SAAS;;AAGR,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAA8B;AACrD,IAAA,KAAK,GAAG,KAAK,CAAS,CAAC,CAAC;AACxB,IAAA,GAAG,GAAG,KAAK,CAAS,CAAC,CAAC;AACtB,IAAA,MAAM,GAAG,KAAK,CAAS,IAAI,CAAC;AAC5B,IAAA,oBAAoB,GAAG,KAAK,CAAS,KAAK,CAAC;IAC3C,uBAAuB,GAAG,KAAK,EAAW;AAC1C,IAAA,uBAAuB,GAAG,KAAK,EAAiB,CAAC;;IAGjD,mBAAmB,GAAG,MAAM,EAAiC;IAC7D,cAAc,GAAG,MAAM,EAAqB;;AAG7C,IAAA,gBAAgB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAEhE,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,EAAE;AACjD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE;YAE/C,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;gBACvC;YACF;YACA,SAAS,CAAC,MAAK;gBACb,MAAM,eAAe,GACnB,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,KAAI;oBACvB,OAAO;wBACL,CAAC,WAAW,GAAG,IAAI;qBACG;gBAC1B,CAAC,CAAC,IAAI,EAAE;AAEV,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;AAClC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACtD;;AAGA,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO;AACL,YAAA,IAAI,EAAE,CAAC,aAAkC,KAAK,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC;YAC/F,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B;IACH;AAEU,IAAA,MAAM,kBAAkB,CAAC,KAA6B,EAAE,aAAkC,EAAA;QAClG,KAAK,EAAE,eAAe,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,eAAe,GAAG,MAAM,gEAAmC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,sCAAsC,CAAC;QAEvH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,eAAe,CAAC;AAC/E,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,aAAkC,KAAK,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;AAE7J,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5E,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;AACvD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;AAEjE,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAK;YAC1D,GAAG,CAAC,WAAW,EAAE;YACjB,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;QAEhC,IAAI,YAAY,EAAE,EAAE;AAClB,YAAA,MAAM,IAAI,GAAG;gBACX,IAAI,EAAE,8BAA8B,CAAC,iBAAiB;AACtD,gBAAA,QAAQ,EAAE;AACR,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,KAAK,EAAE,IAAI;oBACX,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,oBAAA,cAAc,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE;oBACjC,iCAAiC,EAAE,8BAA8B,CAAC,4CAA4C;AAC/G,iBAAA;aACF;AAED,YAAA,qBAAqB,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC/C,YAAA,IAAI,8BAA8B,CAAC,4CAA4C,EAAE;gBAC/E;YACF;YAEA,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,WAAW,CAAC,MAAK;gBACf,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAAE,CAAC,IAAI,EAAE;AAEhD,gBAAA,qBAAqB,CAAC,mBAAmB,CAAC,IAAI,CAAC;AACjD,YAAA,CAAC,EAAE,IAAI,CAAsB,CAC9B;QACH;IACF;IAEU,iBAAiB,CAAC,CAAa,EAAE,KAA0B,EAAA;QACnE,MAAM,KAAK,GAAG,CAAW;QAEzB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;IACzB;IAEQ,UAAU,GAAA;AAChB,QAAA,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;YAClC,IAAI,YAAY,EAAE,EAAE;AAClB,gBAAA,MAAM,IAAI,GAAG;oBACX,IAAI,EAAE,8BAA8B,CAAC,iBAAiB;AACtD,oBAAA,QAAQ,EAAE;AACR,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,KAAK,EAAE,KAAK;wBACZ,SAAS,EAAE,IAAI,CAAC,SAAS;AAC1B,qBAAA;iBACF;AAED,gBAAA,qBAAqB,CAAC,mBAAmB,CAAC,IAAI,CAAC;YACjD;QACF;QACA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,aAAkC,KAAK,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;IAC/J;AAEA,IAAA,IAAY,SAAS,GAAA;QACnB,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;QACzB,IAAI,CAAC,UAAU,EAAE;IACnB;wGArJW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,qrCCnB7C,0qCA4BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDXY,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,yCAAE,+BAA+B,EAAA,IAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAE5D,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAT5C,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAAA,UAAA,EAG1B,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,iBAAiB,EAAE,SAAS,EAAE,+BAA+B,CAAC,EAAA,QAAA,EAAA,0qCAAA,EAAA;;;AEjB1E;MAmBa,sCAAsC,CAAA;;AAEvC,IAAA,aAAa,GAAG,MAAM,CAAS,CAAC,CAAC;AACjC,IAAA,UAAU,GAAG,MAAM,CAAS,CAAC,CAAC;AAC9B,IAAA,KAAK,GAAG,MAAM,CAAS,MAAM,CAAC;AAC9B,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC;AACnC,IAAA,YAAY,GAAG,MAAM,CAAU,KAAK,CAAC;AACrC,IAAA,OAAO,GAAG,MAAM,CAAU,IAAI,CAAC;AAC/B,IAAA,qBAAqB,GAAG,MAAM,CAAU,KAAK,CAAC;AAEhD,IAAA,IAAI,GAAG,MAAM,CAAS,GAAG,CAAC;AAC1B,IAAA,WAAW,GAAG,MAAM,CAA8B,IAAI,CAAC;AACvD,IAAA,YAAY,GAAG,MAAM,CAAS,CAAC,CAAC;AAChC,IAAA,aAAa,GAAG,MAAM,CAAS,CAAC,CAAC;AACjC,IAAA,QAAQ,GAAG,MAAM,CAAkC,SAAS,CAAC;AAC7D,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC;AAChC,IAAA,UAAU,GAAG,MAAM,CAAS,CAAC,CAAC;AAC9B,IAAA,aAAa,GAAG,MAAM,CAAU,KAAK,CAAC;AACtC,IAAA,QAAQ,GAAG,MAAM,CAAgB,EAAE,CAAC;;AAGnC,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAA8B;AACrD,IAAA,oBAAoB,GAAG,KAAK,CAAC,QAAQ,EAAU;IAC/C,aAAa,GAAG,KAAK,EAAuB;IAC5C,cAAc,GAAG,KAAK,EAAW;AACjC,IAAA,MAAM,GAAG,KAAK,CAA6B,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACrF,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,CAAC;IACnC,qBAAqB,GAAG,KAAK,EAAU;;IAGvC,QAAQ,GAAG,MAAM,EAAQ;;AAGxB,IAAA,YAAY,GAAG,SAAS,CAAa,cAAc,CAAC;AACpD,IAAA,cAAc,GAAG,SAAS,CAAa,gBAAgB,CAAC;AACxD,IAAA,eAAe,GAAG,SAAS,CAAa,iBAAiB,CAAC;AAC1D,IAAA,gBAAgB,GAAG,SAAS,CAAa,kBAAkB,CAAC;AAC5D,IAAA,SAAS,GAAG,YAAY,CAAa,WAAW,CAAC;AAEnD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;oBACxB,SAAS,CAAC,MAAK;AACb,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,oBAAA,CAAC,CAAC;gBACJ;gBACA;YACF;YAEA,SAAS,CAAC,MAAK;AACb,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAElJ,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;AAErC,gBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,KAAI;AACxB,oBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,oBAAA,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,cAAc,EAAE;gBACvE,CAAC,EAAE,GAAG,CAAC;AACT,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,SAAS,CAAgB,QAAQ,EAAE,OAAO;AACvC,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACnB,KAAK,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAE7B;YACF;AACA,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AAC7B,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;gBAEhC;YACF;AACA,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE;AAC9B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBAE5B;YACF;AACF,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE/G,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,KAAI;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,cAAc,EAAE;QACvB,CAAC,EAAE,GAAG,CAAC;IACT;;IAIQ,cAAc,GAAA;AACpB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;QAC5C,IAAI,cAAc,EAAE;YAClB,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;YAC7C,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;QAChD;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAC7E,QAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE;AAEvB,QAAA,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAW;AACvE,QAAA,GAAG,CAAC,MAAM,GAAG,MAAK;YAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC;AACzC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC;YAE/D,IAAI,CAAC,mBAAmB,EAAE;AAC5B,QAAA,CAAC;IACH;IAEU,iBAAiB,CAAC,CAAa,EAAE,KAA0B,EAAA;QACnE,MAAM,KAAK,GAAG,CAAW;QAEzB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;IACzB;AAEU,IAAA,iBAAiB,CAAC,MAAe,EAAA;AACzC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;IAC/B;IAEU,iBAAiB,CAAC,KAAY,EAAE,MAAe,EAAA;QACvD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC;IACxC;AAEU,IAAA,iBAAiB,CAAC,CAAQ,EAAA;QAClC,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACtB;IAEU,WAAW,CAAC,KAAiB,EAAE,IAAkB,EAAA;QACzD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa;QAEpD,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AACA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC5C,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,uBAAuB,EAAE,IAAI;AAC9B,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;QAEjC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,EAAE;YAC7E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5E;QACA,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE;YACtF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACvF;AACA,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC;AACA,QAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAC5B,QAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,qBAAqB,EAAE;AACtF,YAAA,IAAI,CAAC,WAAW,EAAE,EAAE,qBAAqB,IAAI;QAC/C;IACF;AAEU,IAAA,gBAAgB,CAAC,CAAQ,EAAA;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC;AAE9C,QAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACzE;AAEU,IAAA,oBAAoB,CAAC,CAAQ,EAAA;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC;AAE9C,QAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACzE;AAEU,IAAA,kBAAkB,CAAC,CAAQ,EAAE,aAAkC,EAAE,aAAqB,EAAA;QAC9F,CAAC,CAAC,eAAe,EAAE;QACnB,IAAI,CAAC,aAAa,EAAE;YAClB;QACF;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa;QAE1D,IAAI,YAAY,EAAE;AAChB,YAAA,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;QACrC;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;AACrC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,cAAc,EAAE;QAC9D,IAAI,CAAC,cAAc,EAAE;IACvB;IAEU,iBAAiB,GAAA;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,KAAI;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa;YACpD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,aAAa;YAE1D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAEvC,IAAI,CAAC,WAAW,EAAE;gBAChB;YACF;AACA,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,gBAAA,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK;AAC/B,gBAAA,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK;YAClC;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,gBAAA,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK;AAC/B,gBAAA,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK;YAClC;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAC7E,IAAI,CAAC,OAAO,EAAE;gBACZ;YACF;AACA,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC9B,YAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO;QAC7B,CAAC,EAAE,CAAC,CAAC;IACP;IAEU,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;IAChC;IAEQ,oBAAoB,GAAG,CAAC,EAAE,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,EAAoG,KAAiC;QACvN,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA,CAAA,EAAI,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAE5L,IAAI,CAAC,8BAA8B,EAAE;AACnC,YAAA,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CACpC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AAC1D,gBAAA,WAAW,EAAE;aACV,mBAAmB,CAAA;;;;AAIrB,UAAA,CAAA;AACF,aAAA,CAAC,CACH;QACH;QAEA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AACpD,YAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAC5C;AACA,QAAA,OAAO,CAAC,WAAW,GAAG,CAAC,cAAc,KAAI;YACvC,cAAc,CAAC,cAAc,EAAE;AAC/B,YAAA,OAAO,CAAC,WAAW,GAAG,CAAC,cAAc,KAAI;gBACvC,cAAc,CAAC,cAAc,EAAE;AAC/B,gBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE;gBAEnD,IAAI,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,cAAc,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,GAAG,cAAc,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE;AAChN,oBAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC,SAAS,IAAI;gBAC3E;gBACA,IAAI,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,cAAc,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,GAAG,cAAc,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE;AAC9M,oBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,IAAI;gBACzE;AACF,YAAA,CAAC;AACH,QAAA,CAAC;QACD,OAAO,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,YAAY,KAAI;YACjD,YAAY,CAAC,cAAc,EAAE;AAC7B,YAAA,OAAO,CAAC,WAAW,GAAG,IAAI;AAC5B,QAAA,CAAC;AAED,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;YAC5B,qBAAqB,GAAA;AACnB,gBAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC;AAC7C,gBAAA,OAAO,CAAC,WAAW,GAAG,IAAI;AAC1B,gBAAA,OAAO,CAAC,WAAW,GAAG,IAAI;AAC1B,gBAAA,OAAO,CAAC,SAAS,GAAG,IAAI;AACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO;AAC5B,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO;AAE3B,gBAAA,OAAO,OAAO;YAChB,CAAC;AACF,SAAA,CAAC;AACJ,IAAA,CAAC;AAEO,IAAA,mBAAmB,CAAC,KAAe,EAAA;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa;QAEpD,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;QACA,MAAM,UAAU,GACd,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa;AACzI,cAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY;AACnD,cAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAE7F,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;QAE/B,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AAClF,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;YAEhC;QACF;IACF;AAEQ,IAAA,cAAc,CAAC,OAAoB,EAAA;AACzC,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI;AACpE,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI;AACtE,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAEnD,QAAA,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE;AAC5G,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB;QACA,IAAI,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE;AAC1J,YAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO;QAC9B;QACA,IAAI,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE;AACxJ,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO;QAC7B;QAEA,IAAI,CAAC,eAAe,EAAE;IACxB;IAEQ,eAAe,GAAA;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa;QAEpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,EAAG,wBAAwB,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC;QACrG,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa;AAE1D,QAAA,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,KAAI;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AACrB,YAAA,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;QACrC,CAAC,EAAE,IAAI,CAAC;IACV;IAEQ,aAAa,CAAC,QAA8B,EAAE,KAAa,EAAA;AACjE,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAsB;AACnF,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,SAAS,CAAC,CAAC;IACpD;AAEQ,IAAA,YAAY,CAAC,EAAU,EAAA;QAC7B,YAAY,CAAC,EAAE,CAAC;QAEhB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,KAAK,EAAE,CAAC,CAAC;IACxE;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IACvD;wGA5WW,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBnD,ygSA2KA,EAAA,MAAA,EAAA,CAAA,6kEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1JY,eAAe,4FAAE,gCAAgC,EAAA,QAAA,EAAA,+DAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,6BAAA,EAAA,cAAA,EAAA,0CAAA,EAAA,4BAAA,EAAA,kCAAA,EAAA,8BAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAEhD,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBATlD,SAAS;+BAEE,mCAAmC,EAAA,UAAA,EAGjC,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,eAAe,EAAE,gCAAgC,CAAC,EAAA,QAAA,EAAA,ygSAAA,EAAA,MAAA,EAAA,CAAA,6kEAAA,CAAA,EAAA;;;;;;;;AEjB9D;;AAEG;;;;"}
1
+ {"version":3,"file":"libs-ui-components-gallery.mjs","sources":["../../../../../libs-ui/components/gallery/src/gallery.component.ts","../../../../../libs-ui/components/gallery/src/gallery.component.html","../../../../../libs-ui/components/gallery/src/viewer/viewer.component.ts","../../../../../libs-ui/components/gallery/src/viewer/viewer.component.html","../../../../../libs-ui/components/gallery/src/libs-ui-components-gallery.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AsyncPipe, NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ComponentRef, computed, effect, inject, input, model, OnDestroy, OnInit, output, signal, untracked } from '@angular/core';\nimport { LibsUiIconsGetIconComponentPipe } from '@libs-ui/icons';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { getDayjs, isEmbedFrame, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, uuid } from '@libs-ui/utils';\nimport { IGalleryFunctionsControlEvent } from './interfaces/functions-control-event.interface';\nimport { LibsUiComponentsGalleryViewerComponent } from './viewer/viewer.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-gallery',\n templateUrl: './gallery.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgComponentOutlet, AsyncPipe, LibsUiIconsGetIconComponentPipe],\n})\nexport class LibsUiComponentsGalleryComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected imagesDisplay = computed(() => {\n return this.images().slice(this.start(), this.end());\n });\n\n private readonly idOverlay = signal<string>(uuid());\n private readonly idInterval = signal<number | undefined>(undefined);\n private viewerRef: ComponentRef<LibsUiComponentsGalleryViewerComponent> | undefined;\n\n // #region INPUT\n readonly images = model.required<Array<Record<string, any>>>();\n readonly start = input<number>(0);\n readonly end = input<number>(3);\n readonly zIndex = input<number>(1200);\n readonly fieldDisplaySrcImage = input<string>('url');\n readonly ignoreOverlayCountImage = input<boolean>();\n readonly imageArrayStringConvert = input<Array<string>>(); // sử dụng trong 1 số trường hợp images là Array<string>\n\n // #region OUTPUT\n readonly outFunctionsControl = output<IGalleryFunctionsControlEvent>();\n readonly outViewerEvent = output<'show' | 'remove'>();\n\n // #region INJECT\n private readonly dynamicComponent = inject(LibsUiDynamicComponentService);\n\n constructor() {\n effect(() => {\n const imgConvert = this.imageArrayStringConvert();\n const fieldGetSrc = this.fieldDisplaySrcImage();\n\n if (!imgConvert?.length || !fieldGetSrc) {\n return;\n }\n untracked(() => {\n const convertedImages =\n imgConvert?.map((item) => {\n return {\n [fieldGetSrc]: item,\n } as Record<string, any>;\n }) || [];\n\n this.images.set(convertedImages);\n });\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit(this.FunctionsControl);\n }\n\n /* FUNCTIONS */\n public get FunctionsControl(): IGalleryFunctionsControlEvent {\n return {\n open: (imageSelected: Record<string, any>) => this.handlerSelectImage(undefined, imageSelected),\n viewerRef: this.ViewerRef,\n };\n }\n\n protected async handlerSelectImage(event: Event | undefined, imageSelected: Record<string, any>) {\n event?.stopPropagation();\n\n if (this.viewerRef) {\n return;\n }\n\n const viewerComponent = await import('./viewer/viewer.component').then((c) => c.LibsUiComponentsGalleryViewerComponent);\n\n this.viewerRef = this.dynamicComponent.resolveComponentFactory(viewerComponent);\n this.outFunctionsControl.emit({ viewerRef: this.ViewerRef, open: (imageSelected: Record<string, any>) => this.handlerSelectImage(undefined, imageSelected) });\n\n this.viewerRef.setInput('fieldDisplaySrcImage', this.fieldDisplaySrcImage());\n this.viewerRef.setInput('images', this.images());\n this.viewerRef.setInput('imageSelected', imageSelected);\n this.viewerRef.setInput('zIndex', this.zIndex());\n this.viewerRef.setInput('singleImage', this.images().length <= 1);\n\n const sub = this.viewerRef.instance.outClose.subscribe(() => {\n sub.unsubscribe();\n this.closePopup();\n });\n\n this.dynamicComponent.addToBody(this.viewerRef);\n this.outViewerEvent.emit('show');\n\n if (isEmbedFrame()) {\n const data = {\n type: UtilsCommunicateMicroKeyGlobal.KEY_MESSAGE_MODAL,\n response: {\n message: 'open',\n state: true,\n idOverlay: this.idOverlay,\n timeLiveUpdate: getDayjs().unix(),\n ignoreIntervalUpdateTimeLiveEvent: UtilsCommunicateMicroKeyGlobal.IGNORE_INTERVAL_UPDATE_TIME_LIVE_EVENT_MODAL,\n },\n };\n\n UtilsCommunicateMicro.PostMessageToParent(data);\n if (UtilsCommunicateMicroKeyGlobal.IGNORE_INTERVAL_UPDATE_TIME_LIVE_EVENT_MODAL) {\n return;\n }\n\n this.idInterval.set(\n setInterval(() => {\n data.response.timeLiveUpdate = getDayjs().unix();\n\n UtilsCommunicateMicro.PostMessageToParent(data);\n }, 2000) as unknown as number\n );\n }\n }\n\n protected handlerImageError(e: ErrorEvent, image: Record<string, any>) {\n const event = e as IEvent;\n\n event.stopPropagation();\n\n image['isError'] = true;\n }\n\n private closePopup() {\n clearInterval(this.idInterval());\n if (this.viewerRef) {\n this.outViewerEvent.emit('remove');\n if (isEmbedFrame()) {\n const data = {\n type: UtilsCommunicateMicroKeyGlobal.KEY_MESSAGE_MODAL,\n response: {\n message: 'close',\n state: false,\n idOverlay: this.idOverlay,\n },\n };\n\n UtilsCommunicateMicro.PostMessageToParent(data);\n }\n }\n this.dynamicComponent.remove(this.viewerRef);\n this.viewerRef = undefined;\n this.outFunctionsControl.emit({ viewerRef: this.ViewerRef, open: (imageSelected: Record<string, any>) => this.handlerSelectImage(undefined, imageSelected) });\n }\n\n private get ViewerRef() {\n return this.viewerRef;\n }\n\n ngOnDestroy() {\n this.viewerRef?.destroy();\n this.closePopup();\n }\n}\n","@if (images()) {\n <div class=\"flex w-full h-full\">\n @for (image of imagesDisplay(); track $index) {\n <div\n #itemRef\n class=\"w-full h-full rounded-[4px] overflow-hidden relative cursor-pointer\"\n [class.mr-[8px]]=\"!$last\"\n (click)=\"handlerSelectImage($event, image)\"\n (keydown.enter)=\"handlerSelectImage($event, image)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n @if (!image['isError']) {\n <img\n [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex max-w-full max-h-full m-auto\"\n alt=\"\"\n (error)=\"handlerImageError($event, image)\" />\n }\n @if (image['isError']) {\n <div *ngComponentOutlet=\"'image-default' | LibsUiIconsGetIconComponentPipe | async; inputs: { size: itemRef.clientWidth }\"></div>\n }\n </div>\n @if ($last && images().length > end() && !ignoreOverlayCountImage()) {\n <div class=\"flex w-full h-full absolute top-0 left-0 items-center justify-center bg-black/15\">\n <span class=\"libs-ui-font-h5m text-white\">+{{ images().length - end() }}</span>\n </div>\n }\n </div>\n }\n </div>\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, effect, ElementRef, inject, input, model, OnDestroy, output, signal, untracked, viewChild, viewChildren } from '@angular/core';\nimport { IBoundingClientRect, IEvent } from '@libs-ui/interfaces-types';\nimport { IZoomDragHTMLElement } from '../interfaces/zoom.interface';\nimport { fromEvent } from 'rxjs';\nimport { viewDataNumberByLanguage } from '@libs-ui/utils';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-gallery-viewer',\n templateUrl: './viewer.component.html',\n styleUrls: ['./viewer.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, LibsUiComponentsPopoverComponent],\n})\nexport class LibsUiComponentsGalleryViewerComponent implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n protected indexSelected = signal<number>(0);\n protected scaleValue = signal<number>(1);\n protected ratio = signal<string>('100%');\n protected fullScreen = signal<boolean>(false);\n protected isShowButton = signal<boolean>(false);\n protected disable = signal<boolean>(true);\n protected hoverContentViewImage = signal<boolean>(false);\n\n private readonly step = signal<number>(0.1);\n private readonly draggableEl = signal<IZoomDragHTMLElement | null>(null);\n private readonly widthDefault = signal<number>(0);\n private readonly heightDefault = signal<number>(0);\n private readonly viewPort = signal<IBoundingClientRect | undefined>(undefined);\n private readonly canDrag = signal<boolean>(false);\n private readonly widthImage = signal<number>(0);\n private readonly isFirstRender = signal<boolean>(false);\n private readonly timeouts = signal<Array<number>>([]);\n\n // #region INPUT\n readonly images = input.required<Array<Record<string, any>>>();\n readonly fieldDisplaySrcImage = input.required<string>();\n readonly imageSelected = model<Record<string, any>>();\n readonly removeBackdrop = input<boolean>();\n readonly zIndex = input<number, number | undefined>(1200, { transform: (val) => val ?? 1200 });\n readonly singleImage = input<boolean>(false);\n readonly classContainerInclude = input<string>();\n\n // #region OUTPUT\n readonly outClose = output<void>();\n\n // #region VIEW CHILD\n protected containerRef = viewChild<ElementRef>('containerRef');\n protected singleImageRef = viewChild<ElementRef>('singleImageRef');\n protected elementRatioRef = viewChild<ElementRef>('elementRatioRef');\n protected fullContainerRef = viewChild<ElementRef>('fullContainerRef');\n protected imagesRef = viewChildren<ElementRef>('imagesRef');\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n effect(() => {\n if (this.singleImage()) {\n if (this.images().length) {\n untracked(() => {\n this.imageSelected.set(this.images()[0]);\n });\n }\n return;\n }\n\n untracked(() => {\n const indexSelected = this.images().findIndex((item) => item[this.fieldDisplaySrcImage()] === this.imageSelected()?.[this.fieldDisplaySrcImage()]);\n\n this.indexSelected.set(indexSelected);\n\n this.createTimeout((id) => {\n this.clearTimeout(id);\n this.imagesRef()[this.indexSelected()].nativeElement.scrollIntoView();\n }, 100);\n });\n });\n }\n\n ngAfterViewInit() {\n fromEvent<KeyboardEvent>(document, 'keyup')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n event.stopPropagation();\n if (event.key === 'Escape') {\n this.handlerClosePopup(event);\n\n return;\n }\n if (event.key === 'ArrowLeft') {\n this.handlerPreviousImage(event);\n\n return;\n }\n if (event.key === 'ArrowRight') {\n this.handlerNextImage(event);\n }\n });\n this.isFirstRender.set(true);\n fromEvent(window, 'resize').pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.setWidthImages.bind(this));\n\n this.createTimeout((id) => {\n this.clearTimeout(id);\n this.setWidthImages();\n }, 300);\n }\n\n /* FUNCTIONS */\n\n private setWidthImages() {\n const singleImageRef = this.singleImageRef();\n if (singleImageRef) {\n singleImageRef.nativeElement.style.width = '';\n singleImageRef.nativeElement.style.height = '';\n }\n this.viewPort.set(this.containerRef()?.nativeElement.getBoundingClientRect());\n const img = new Image();\n\n img.src = this.imageSelected()?.[this.fieldDisplaySrcImage()] as string;\n img.onload = () => {\n this.widthDefault.set(img.naturalWidth);\n this.heightDefault.set(img.naturalHeight);\n this.widthImage.set(this.singleImageRef()?.nativeElement.width);\n\n this.setStyleSelectImage();\n };\n }\n\n protected handlerImageError(e: ErrorEvent, image: Record<string, any>) {\n const event = e as IEvent;\n\n event.stopPropagation();\n\n image['isError'] = true;\n }\n\n protected handlerShowButton(isShow: boolean) {\n this.isShowButton.set(isShow);\n }\n\n protected handlerMouseEvent(event: Event, status: boolean) {\n event.stopPropagation();\n this.hoverContentViewImage.set(status);\n }\n\n protected handlerClosePopup(e: Event) {\n e.stopPropagation();\n this.outClose.emit();\n }\n\n protected handlerZoom(event: MouseEvent, type: 'in' | 'out') {\n event.stopPropagation();\n this.isFirstRender.set(false);\n this.disable.set(false);\n const element = this.singleImageRef()?.nativeElement;\n\n if (!element) {\n return;\n }\n const draggableEl = this.makeElementDraggable({\n element: element,\n isOverflowHiddenDesired: true,\n });\n\n this.draggableEl.set(draggableEl);\n\n if (((this.scaleValue() * this.widthDefault()) / this.widthImage()) * 100 < 1) {\n this.scaleValue.set(((1 / 100) * this.widthImage()) / this.widthDefault());\n }\n if (((this.scaleValue() * this.widthDefault()) / this.widthImage()) * 100 > 5000 * 0.9) {\n this.scaleValue.set((((5000 * 0.9) / 100) * this.widthImage()) / this.widthDefault());\n }\n if (type === 'in') {\n const scaleValue = this.scaleValue() * (1 + this.step());\n this.scaleValue.set(scaleValue);\n }\n if (type === 'out') {\n const scaleValue = this.scaleValue() / (1 + this.step());\n this.scaleValue.set(scaleValue);\n }\n this.setWidthHeight(element);\n element.style.position = `absolute`;\n if (!this.canDrag() && this.draggableEl()?.stopDraggableBehavior) {\n this.draggableEl()?.stopDraggableBehavior?.();\n }\n }\n\n protected handlerNextImage(e: Event) {\n const indexSelected = this.indexSelected() + 1;\n\n this.handlerSelectImage(e, this.images()[indexSelected], indexSelected);\n }\n\n protected handlerPreviousImage(e: Event) {\n const indexSelected = this.indexSelected() - 1;\n\n this.handlerSelectImage(e, this.images()[indexSelected], indexSelected);\n }\n\n protected handlerSelectImage(e: Event, imageSelected: Record<string, any>, indexSelected: number) {\n e.stopPropagation();\n if (!imageSelected) {\n return;\n }\n this.isFirstRender.set(true);\n const elementRatio = this.elementRatioRef()?.nativeElement;\n\n if (elementRatio) {\n elementRatio.style.display = 'none';\n }\n this.imageSelected.set(imageSelected);\n this.indexSelected.set(indexSelected);\n this.scaleValue.set(1);\n this.imagesRef()[indexSelected].nativeElement.scrollIntoView();\n this.setWidthImages();\n }\n\n protected handlerFullScreen() {\n this.createTimeout((id) => {\n this.clearTimeout(id);\n this.disable.set(true);\n const element = this.singleImageRef()?.nativeElement;\n const fullElement = this.fullContainerRef()?.nativeElement;\n\n this.fullScreen.set(!this.fullScreen());\n\n if (!fullElement) {\n return;\n }\n if (this.fullScreen()) {\n fullElement.style.width = '95%';\n fullElement.style.height = '95%';\n }\n if (!this.fullScreen()) {\n fullElement.style.width = '80%';\n fullElement.style.height = '90%';\n }\n this.viewPort.set(this.containerRef()?.nativeElement.getBoundingClientRect());\n if (!element) {\n return;\n }\n this.setStyleSelectImage(true);\n element.style.left = `unset`;\n element.style.top = `unset`;\n }, 0);\n }\n\n protected handlerReset() {\n this.disable.set(true);\n this.setStyleSelectImage(true);\n }\n\n private readonly makeElementDraggable = ({ element, DRAGGABLE_CSS_CLASS = 'draggable-element' }: { element: HTMLElement | null; isOverflowHiddenDesired?: boolean; DRAGGABLE_CSS_CLASS?: string }): IZoomDragHTMLElement | null => {\n if (!element) {\n return null;\n }\n const isTheRequiredCSSAlreadyInPlace = !!Array.from(element.ownerDocument.getElementsByTagName('style')).filter((styleEl) => styleEl?.textContent?.includes(`.${DRAGGABLE_CSS_CLASS}`))?.[0];\n\n if (!isTheRequiredCSSAlreadyInPlace) {\n element.ownerDocument.body.appendChild(\n Object.assign(element.ownerDocument.createElement('style'), {\n textContent: `\n .${DRAGGABLE_CSS_CLASS} {\n position: absolute;\n cursor: grabbing !important;\n }\n `,\n })\n );\n }\n\n if (!element.classList.contains(DRAGGABLE_CSS_CLASS)) {\n element.classList.add(DRAGGABLE_CSS_CLASS);\n }\n element.onmousedown = (mouseDownEvent) => {\n mouseDownEvent.preventDefault();\n element.onmousemove = (mouseMoveEvent) => {\n mouseMoveEvent.preventDefault();\n const rectElement = element.getBoundingClientRect();\n\n if (rectElement.left + rectElement.width + mouseMoveEvent.movementX > (this.viewPort()?.width || 0) + (this.viewPort()?.left || 0) && rectElement.left + mouseMoveEvent.movementX < (this.viewPort()?.left || 0)) {\n element.style.left = `${element.offsetLeft + mouseMoveEvent.movementX}px`;\n }\n if (rectElement.top + rectElement.height + mouseMoveEvent.movementY > (this.viewPort()?.height || 0) + (this.viewPort()?.top || 0) && rectElement.top + mouseMoveEvent.movementY < (this.viewPort()?.top || 0)) {\n element.style.top = `${element.offsetTop + mouseMoveEvent.movementY}px`;\n }\n };\n };\n element.ownerDocument.onmouseup = (mouseUpEvent) => {\n mouseUpEvent.preventDefault();\n element.onmousemove = null;\n };\n\n return Object.assign(element, {\n stopDraggableBehavior() {\n element.classList.remove(DRAGGABLE_CSS_CLASS);\n element.onmousedown = null;\n element.onmousemove = null;\n element.onmouseup = null;\n element.style.left = 'unset';\n element.style.top = 'unset';\n\n return element;\n },\n });\n };\n\n private setStyleSelectImage(reset?: boolean) {\n const element = this.singleImageRef()?.nativeElement;\n\n if (!element) {\n return;\n }\n const widthRatio = (this.viewPort()?.width || 0) / this.widthDefault();\n const heightOffset = (this.viewPort()?.height || 0) - (this.singleImage() ? 0 : 40);\n const heightRatio = heightOffset / this.heightDefault();\n const scaleValue = widthRatio < heightRatio ? widthRatio : heightRatio;\n\n this.scaleValue.set(scaleValue);\n\n if (this.scaleValue() > 1 && (reset || this.isFirstRender()) && !this.fullScreen()) {\n this.scaleValue.set(1);\n }\n this.setWidthHeight(element);\n if (this.fullScreen()) {\n element.style.position = `unset`;\n }\n }\n\n private setWidthHeight(element: HTMLElement) {\n element.style.width = `${this.scaleValue() * this.widthDefault()}px`;\n element.style.height = `${this.scaleValue() * this.heightDefault()}px`;\n this.canDrag.set(false);\n const rectElement = element.getBoundingClientRect();\n\n if (rectElement.width > (this.viewPort()?.width || 0) || rectElement.height > (this.viewPort()?.height || 0)) {\n this.canDrag.set(true);\n }\n if (rectElement.left + rectElement.width < (this.viewPort()?.width || 0) + (this.viewPort()?.left || 0) || rectElement.left > (this.viewPort()?.left || 0)) {\n element.style.left = `unset`;\n }\n if (rectElement.top + rectElement.height < (this.viewPort()?.top || 0) + (this.viewPort()?.height || 0) || rectElement.top > (this.viewPort()?.top || 0)) {\n element.style.top = `unset`;\n }\n\n this.setDisplayRatio();\n }\n\n private setDisplayRatio() {\n const element = this.singleImageRef()?.nativeElement;\n\n this.ratio.set(`${viewDataNumberByLanguage((element.width / this.widthDefault()) * 100, false, 0)}%`);\n const elementRatio = this.elementRatioRef()?.nativeElement;\n\n elementRatio.style.display = 'flex';\n this.createTimeout((id) => {\n this.clearTimeout(id);\n elementRatio.style.display = 'none';\n }, 1000);\n }\n\n private createTimeout(callback: (id: number) => void, delay: number) {\n const timeoutId = setTimeout(() => callback(timeoutId), delay) as unknown as number;\n this.timeouts.update((ids) => [...ids, timeoutId]);\n }\n\n private clearTimeout(id: number) {\n clearTimeout(id);\n\n this.timeouts.update((ids) => ids.filter((idStore) => idStore !== id));\n }\n\n ngOnDestroy() {\n this.timeouts().forEach((item) => clearTimeout(item));\n }\n}\n","@if (images() || singleImage()) {\n <div\n class=\"libs-ui-gallery-img-popup libs-ui-gallery-img-popup-backdrop\"\n [class.!bg-[transparent]]=\"removeBackdrop()\"\n [style.zIndex]=\"zIndex()\">\n <div\n #fullContainerRef\n class=\"libs-ui-gallery-img-popup-container {{ classContainerInclude() || '' }}\">\n <div class=\"flex w-full justify-end mb-[16px] z-10\">\n <i\n class=\"libs-ui-icon-close text-[24px] p-[4px] rounded-[4px] text-[#ffffff] cursor-pointer bg-[#030B184D] hover:bg-[#030B1826]\"\n (click)=\"handlerClosePopup($event)\"\n (keydown.enter)=\"handlerClosePopup($event)\"></i>\n </div>\n <div class=\"relative w-full h-full\">\n <div class=\"flex flex-col w-full h-full justify-between\">\n <div class=\"libs-ui-gallery-img-popup-container-preview w-full h-full\">\n <div\n class=\"flex flex-col w-full h-full relative\"\n (mouseenter)=\"handlerShowButton(true)\"\n (mouseleave)=\"handlerShowButton(false)\">\n <div\n #containerRef\n class=\"flex w-full h-full relative\">\n <div\n class=\"absolute flex items-center justify-center w-full h-full overflow-hidden\"\n (mouseenter)=\"handlerMouseEvent($event, true)\"\n (mouseleave)=\"handlerMouseEvent($event, false)\">\n @if (fieldDisplaySrcImage() && imageSelected(); as imageSelected) {\n <img\n #singleImageRef\n [src]=\"imageSelected[fieldDisplaySrcImage()]\"\n class=\"flex m-[auto]\"\n alt=\"\"\n (error)=\"handlerImageError($event, imageSelected)\" />\n }\n <div\n #elementRatioRef\n class=\"libs-ui-gallery-img-popup-container-preview-ratio flex items-center justify-center libs-ui-font-h5m text-[#e6e7ea] w-[80px] h-[34px] rounded-[4px] absolute top-[50%] left-[50%]\">\n {{ ratio() }}\n </div>\n </div>\n </div>\n @if (!imageSelected()?.['error']) {\n <div\n class=\"relative w-full\"\n (mouseenter)=\"handlerMouseEvent($event, true)\"\n [class.hidden]=\"!hoverContentViewImage()\">\n <div class=\"flex w-full justify-center libs-ui-font-h5r absolute z-10 top-[-44px]\">\n <libs_ui-components-popover [config]=\"{ content: 'i18n_zoom_out', direction: 'top', zIndex: zIndex() + 100 }\">\n <i\n class=\"libs-ui-gallery-img-popup-container-preview-button rounded-l-[8px] libs-ui-icon-zoom-out before:text-[16px]\"\n (click)=\"handlerZoom($event, 'out')\"\n (keydown.enter)=\"handlerZoom($any($event), 'out')\"></i>\n </libs_ui-components-popover>\n <libs_ui-components-popover [config]=\"{ content: 'i18n_zoom_in', direction: 'top', zIndex: zIndex() + 100 }\">\n <i\n class=\"libs-ui-gallery-img-popup-container-preview-button libs-ui-icon-zoom-in before:text-[16px]\"\n (click)=\"handlerZoom($event, 'in')\"\n (keydown.enter)=\"handlerZoom($any($event), 'in')\"></i>\n </libs_ui-components-popover>\n <libs_ui-components-popover [config]=\"{ content: fullScreen() ? 'i18n_action_exit_full_screen' : 'i18n_action_view_full_screen', direction: 'top', zIndex: zIndex() + 100 }\">\n <div\n class=\"libs-ui-gallery-img-popup-container-preview-button\"\n (click)=\"handlerFullScreen()\"\n (keydown.enter)=\"handlerFullScreen()\">\n <i class=\"{{ fullScreen() ? 'libs-ui-icon-fullscreen-exit' : 'libs-ui-icon-fullscreen-open' }} text-[#ffffff] text-[16px]\"></i>\n </div>\n </libs_ui-components-popover>\n <div\n class=\"libs-ui-gallery-img-popup-container-preview-button rounded-r-[8px] border-l border-l-1 border-[#5d636b] flex items-center\"\n (click)=\"handlerReset()\"\n (keydown.enter)=\"handlerReset()\">\n <i\n class=\"libs-ui-icon-refresh text-16px mr-[8px]\"\n [class.text-[#ffffff]]=\"!disable()\"\n [class.text-[#6a7383]]=\"disable()\"></i>\n <div\n class=\"libs-ui-font-h5r libs-ui-gallery-text-restore\"\n [class.text-[#ffffff]]=\"!disable()\"\n [class.text-[#6a7383]]=\"disable()\">\n {{ 'i18n_restore' | translate }}\n </div>\n </div>\n </div>\n </div>\n }\n @if (!singleImage()) {\n <div class=\"flex justify-center libs-ui-font-h5r text-[#ffffff] mt-[12px]\">\n @if (fullScreen()) {\n <div class=\"mr-[16px] flex items-center\">\n <div\n class=\"rotate-180\"\n [class.cursor-pointer]=\"indexSelected() !== 0\"\n [class.pointer-events-none]=\"indexSelected() === 0\"\n (click)=\"handlerPreviousImage($event)\"\n (keydown.enter)=\"handlerPreviousImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === 0\"></i>\n </div>\n </div>\n }\n <div class=\"flex items-center\">{{ indexSelected() + 1 }}/{{ images().length }}</div>\n\n @if (fullScreen()) {\n <div class=\"ml-[16px] flex items-center\">\n <div\n [class.cursor-pointer]=\"indexSelected() !== images().length - 1\"\n [class.pointer-events-none]=\"indexSelected() === images().length - 1\"\n (click)=\"handlerNextImage($event)\"\n (keydown.enter)=\"handlerNextImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === images().length - 1\"></i>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n @if (!singleImage()) {\n <div\n class=\"libs-ui-gallery-img-popup-container-list px-[32px] mt-[24px] flex\"\n [class.!hidden]=\"fullScreen()\">\n <div class=\"mr-[24px] flex items-center\">\n <div\n class=\"rotate-180\"\n [class.cursor-pointer]=\"indexSelected() !== 0\"\n [class.pointer-events-none]=\"indexSelected() === 0\"\n (click)=\"handlerPreviousImage($event)\"\n (keydown.enter)=\"handlerPreviousImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === 0\"></i>\n </div>\n </div>\n\n <div class=\"flex max-w-[80%] relative overflow-hidden\">\n <div class=\"flex h-full overflow-hidden\">\n @for (image of images(); track index; let index = $index; let last = $last) {\n <div\n #imagesRef\n class=\"libs-ui-gallery-img-popup-container-list-item\"\n [class.mr-[12px]]=\"!last\"\n [style.width.px]=\"imagesRef.offsetHeight\"\n [attr.active]=\"image[fieldDisplaySrcImage()] === imageSelected()?.[fieldDisplaySrcImage()]\">\n <div\n class=\"flex w-full h-full justify-center items-center\"\n (click)=\"handlerSelectImage($event, image, index)\"\n (keydown.enter)=\"handlerSelectImage($event, image, index)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n <img\n [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex max-h-full max-w-full m-[auto]\"\n alt=\"\"\n (error)=\"handlerImageError($event, image)\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"ml-[24px] flex items-center\">\n <div\n [class.cursor-pointer]=\"indexSelected() !== images().length - 1\"\n [class.pointer-events-none]=\"indexSelected() === images().length - 1\"\n (click)=\"handlerNextImage($event)\"\n (keydown.enter)=\"handlerNextImage($event)\">\n <i\n class=\"text-[24px] cursor-pointer text-[#ffffff] libs-ui-icon-chevron-right\"\n [class.libs-ui-disable]=\"indexSelected() === images().length - 1\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@ import { IGalleryFunctionsControlEvent } from './interfaces/functions-control-ev
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class LibsUiComponentsGalleryComponent implements OnInit, OnDestroy {
5
5
  protected imagesDisplay: import("@angular/core").Signal<Record<string, any>[]>;
6
- private idOverlay;
7
- private idInterval;
6
+ private readonly idOverlay;
7
+ private readonly idInterval;
8
8
  private viewerRef;
9
9
  readonly images: import("@angular/core").ModelSignal<Record<string, any>[]>;
10
10
  readonly start: import("@angular/core").InputSignal<number>;
@@ -15,11 +15,11 @@ export declare class LibsUiComponentsGalleryComponent implements OnInit, OnDestr
15
15
  readonly imageArrayStringConvert: import("@angular/core").InputSignal<string[] | undefined>;
16
16
  readonly outFunctionsControl: import("@angular/core").OutputEmitterRef<IGalleryFunctionsControlEvent>;
17
17
  readonly outViewerEvent: import("@angular/core").OutputEmitterRef<"show" | "remove">;
18
- private dynamicComponent;
18
+ private readonly dynamicComponent;
19
19
  constructor();
20
20
  ngOnInit(): void;
21
21
  get FunctionsControl(): IGalleryFunctionsControlEvent;
22
- protected handlerSelectImage(event: MouseEvent | undefined, imageSelected: Record<string, any>): Promise<void>;
22
+ protected handlerSelectImage(event: Event | undefined, imageSelected: Record<string, any>): Promise<void>;
23
23
  protected handlerImageError(e: ErrorEvent, image: Record<string, any>): void;
24
24
  private closePopup;
25
25
  private get ViewerRef();
package/package.json CHANGED
@@ -1,16 +1,15 @@
1
1
  {
2
2
  "name": "@libs-ui/components-gallery",
3
- "version": "0.2.356-9",
3
+ "version": "0.2.357-0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=18.0.0",
6
6
  "@angular/core": ">=18.0.0",
7
- "@libs-ui/icons": "0.2.356-9",
8
- "@libs-ui/interfaces-types": "0.2.356-9",
9
- "@libs-ui/services-dynamic-component": "0.2.356-9",
10
- "@libs-ui/utils": "0.2.356-9",
11
- "dayjs": "1.11.5",
7
+ "@libs-ui/icons": "0.2.357-0",
8
+ "@libs-ui/interfaces-types": "0.2.357-0",
9
+ "@libs-ui/services-dynamic-component": "0.2.357-0",
10
+ "@libs-ui/utils": "0.2.357-0",
12
11
  "rxjs": "~7.8.0",
13
- "@libs-ui/components-popover": "0.2.356-9",
12
+ "@libs-ui/components-popover": "0.2.357-0",
14
13
  "@ngx-translate/core": "^15.0.0"
15
14
  },
16
15
  "sideEffects": false,
@@ -8,15 +8,15 @@ export declare class LibsUiComponentsGalleryViewerComponent implements AfterView
8
8
  protected isShowButton: import("@angular/core").WritableSignal<boolean>;
9
9
  protected disable: import("@angular/core").WritableSignal<boolean>;
10
10
  protected hoverContentViewImage: import("@angular/core").WritableSignal<boolean>;
11
- private step;
12
- private draggableEl;
13
- private widthDefault;
14
- private heightDefault;
15
- private viewPort;
16
- private canDrag;
17
- private widthImage;
18
- private isFirstRender;
19
- private timeouts;
11
+ private readonly step;
12
+ private readonly draggableEl;
13
+ private readonly widthDefault;
14
+ private readonly heightDefault;
15
+ private readonly viewPort;
16
+ private readonly canDrag;
17
+ private readonly widthImage;
18
+ private readonly isFirstRender;
19
+ private readonly timeouts;
20
20
  readonly images: import("@angular/core").InputSignal<Record<string, any>[]>;
21
21
  readonly fieldDisplaySrcImage: import("@angular/core").InputSignal<string>;
22
22
  readonly imageSelected: import("@angular/core").ModelSignal<Record<string, any> | undefined>;
@@ -30,7 +30,7 @@ export declare class LibsUiComponentsGalleryViewerComponent implements AfterView
30
30
  protected elementRatioRef: import("@angular/core").Signal<ElementRef<any> | undefined>;
31
31
  protected fullContainerRef: import("@angular/core").Signal<ElementRef<any> | undefined>;
32
32
  protected imagesRef: import("@angular/core").Signal<readonly ElementRef<any>[]>;
33
- private destroyRef;
33
+ private readonly destroyRef;
34
34
  constructor();
35
35
  ngAfterViewInit(): void;
36
36
  private setWidthImages;
@@ -44,7 +44,7 @@ export declare class LibsUiComponentsGalleryViewerComponent implements AfterView
44
44
  protected handlerSelectImage(e: Event, imageSelected: Record<string, any>, indexSelected: number): void;
45
45
  protected handlerFullScreen(): void;
46
46
  protected handlerReset(): void;
47
- private makeElementDraggable;
47
+ private readonly makeElementDraggable;
48
48
  private setStyleSelectImage;
49
49
  private setWidthHeight;
50
50
  private setDisplayRatio;