@libs-ui/components-gallery 0.2.10-6.2
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.
- package/README.md +3 -0
- package/esm2022/gallery.component.mjs +132 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/interfaces/functions-control-event.interface.mjs +2 -0
- package/esm2022/interfaces/zoom.interface.mjs +2 -0
- package/esm2022/libs-ui-components-gallery.mjs +5 -0
- package/esm2022/viewer/viewer.component.mjs +312 -0
- package/fesm2022/libs-ui-components-gallery-viewer.component-BWW_1gPm.mjs +315 -0
- package/fesm2022/libs-ui-components-gallery-viewer.component-BWW_1gPm.mjs.map +1 -0
- package/fesm2022/libs-ui-components-gallery.mjs +139 -0
- package/fesm2022/libs-ui-components-gallery.mjs.map +1 -0
- package/gallery.component.d.ts +28 -0
- package/index.d.ts +1 -0
- package/interfaces/functions-control-event.interface.d.ts +5 -0
- package/interfaces/zoom.interface.d.ts +3 -0
- package/package.json +25 -0
- package/viewer/viewer.component.d.ts +54 -0
package/README.md
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { AsyncPipe, NgComponentOutlet } from '@angular/common';
|
|
3
|
+
import { ChangeDetectionStrategy, Component, computed, effect, inject, input, model, output, signal, untracked } from '@angular/core';
|
|
4
|
+
import { LibsUiIconsGetIconComponentPipe } from '@libs-ui/icons';
|
|
5
|
+
import { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';
|
|
6
|
+
import { isEmbedFrame, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, uuid } from '@libs-ui/utils';
|
|
7
|
+
import dayjs from 'dayjs';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class LibsUiComponentsGalleryComponent {
|
|
10
|
+
/* PROPERTY */
|
|
11
|
+
imagesDisplay = computed(() => {
|
|
12
|
+
return this.images().slice(this.start(), this.end());
|
|
13
|
+
});
|
|
14
|
+
idOverlay = signal(uuid());
|
|
15
|
+
idInterval = signal(undefined);
|
|
16
|
+
viewerRef;
|
|
17
|
+
/* INPUT */
|
|
18
|
+
images = model.required();
|
|
19
|
+
start = input(0);
|
|
20
|
+
end = input(3);
|
|
21
|
+
zIndex = input(1200);
|
|
22
|
+
fieldDisplaySrcImage = input('url');
|
|
23
|
+
ignoreOverlayCountImage = input();
|
|
24
|
+
imageArrayStringConvert = input(); // sử dụng trong 1 số trường hợp images là Array<string>
|
|
25
|
+
/* OUTPUT */
|
|
26
|
+
outFunctionsControl = output();
|
|
27
|
+
outViewerEvent = output();
|
|
28
|
+
/* INJECT */
|
|
29
|
+
dynamicComponent = inject(LibsUiDynamicComponentService);
|
|
30
|
+
constructor() {
|
|
31
|
+
effect(() => {
|
|
32
|
+
const imgConvert = this.imageArrayStringConvert();
|
|
33
|
+
const fieldGetSrc = this.fieldDisplaySrcImage();
|
|
34
|
+
if (!imgConvert?.length || !fieldGetSrc) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
untracked(() => {
|
|
38
|
+
const convertedImages = imgConvert?.map(item => {
|
|
39
|
+
return {
|
|
40
|
+
[fieldGetSrc]: item
|
|
41
|
+
};
|
|
42
|
+
}) || [];
|
|
43
|
+
this.images.set(convertedImages);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
ngOnInit() {
|
|
48
|
+
this.outFunctionsControl.emit({
|
|
49
|
+
open: (imageSelected) => this.handlerSelectImage(undefined, imageSelected),
|
|
50
|
+
viewerRef: this.ViewerRef
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/* FUNCTIONS */
|
|
54
|
+
async handlerSelectImage(event, imageSelected) {
|
|
55
|
+
event?.stopPropagation();
|
|
56
|
+
if (this.viewerRef) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const viewerComponent = await import('./viewer/viewer.component').then(c => c.LibsUiComponentsGalleryViewerComponent);
|
|
60
|
+
this.viewerRef = this.dynamicComponent.resolveComponentFactory(viewerComponent);
|
|
61
|
+
this.outFunctionsControl.emit({ viewerRef: this.ViewerRef, open: (imageSelected) => this.handlerSelectImage(undefined, imageSelected) });
|
|
62
|
+
this.viewerRef.setInput('fieldDisplaySrcImage', this.fieldDisplaySrcImage());
|
|
63
|
+
this.viewerRef.setInput('images', this.images());
|
|
64
|
+
this.viewerRef.setInput('imageSelected', imageSelected);
|
|
65
|
+
this.viewerRef.setInput('zIndex', this.zIndex());
|
|
66
|
+
this.viewerRef.setInput('singleImage', this.images().length <= 1);
|
|
67
|
+
const sub = this.viewerRef.instance.outClose.subscribe(() => {
|
|
68
|
+
sub.unsubscribe();
|
|
69
|
+
this.closePopup();
|
|
70
|
+
});
|
|
71
|
+
this.dynamicComponent.addToBody(this.viewerRef);
|
|
72
|
+
this.outViewerEvent.emit('show');
|
|
73
|
+
if (isEmbedFrame()) {
|
|
74
|
+
const data = {
|
|
75
|
+
type: UtilsCommunicateMicroKeyGlobal.KEY_MESSAGE_MODAL,
|
|
76
|
+
response: {
|
|
77
|
+
message: 'open',
|
|
78
|
+
state: true,
|
|
79
|
+
idOverlay: this.idOverlay,
|
|
80
|
+
timeLiveUpdate: dayjs().unix()
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
UtilsCommunicateMicro.PostMessageToParent(data);
|
|
84
|
+
this.idInterval.set(setInterval(() => {
|
|
85
|
+
data.response.timeLiveUpdate = dayjs().unix();
|
|
86
|
+
UtilsCommunicateMicro.PostMessageToParent(data);
|
|
87
|
+
}, 2000));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
handlerImageError(e, image) {
|
|
91
|
+
const event = e;
|
|
92
|
+
event.stopPropagation();
|
|
93
|
+
image['isError'] = true;
|
|
94
|
+
}
|
|
95
|
+
closePopup() {
|
|
96
|
+
clearInterval(this.idInterval());
|
|
97
|
+
if (this.viewerRef) {
|
|
98
|
+
this.outViewerEvent.emit('remove');
|
|
99
|
+
if (isEmbedFrame()) {
|
|
100
|
+
const data = {
|
|
101
|
+
type: UtilsCommunicateMicroKeyGlobal.KEY_MESSAGE_MODAL,
|
|
102
|
+
response: {
|
|
103
|
+
message: 'close',
|
|
104
|
+
state: false,
|
|
105
|
+
idOverlay: this.idOverlay
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
UtilsCommunicateMicro.PostMessageToParent(data);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
this.dynamicComponent.remove(this.viewerRef);
|
|
112
|
+
this.viewerRef = undefined;
|
|
113
|
+
this.outFunctionsControl.emit({ viewerRef: this.ViewerRef, open: (imageSelected) => this.handlerSelectImage(undefined, imageSelected) });
|
|
114
|
+
}
|
|
115
|
+
get ViewerRef() {
|
|
116
|
+
return this.viewerRef;
|
|
117
|
+
}
|
|
118
|
+
ngOnDestroy() {
|
|
119
|
+
this.viewerRef?.destroy();
|
|
120
|
+
this.closePopup();
|
|
121
|
+
}
|
|
122
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsGalleryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
123
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", 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 nowrap w-100 h-100\">\n @for (image of imagesDisplay(); track $index; let last = $last) {\n <div class=\"w-full h-full libs-ui-border-general relative cursor-pointer\"\n [class.mr-[12px]]=\"!last\"\n (click)=\"handlerSelectImage($event, image)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n @if (!image['isError']) {\n <img [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex libs-uipercent-max-height-100 libs-uipercent-max-width-100 m-auto\"\n (error)='handlerImageError($event, image)' />\n }\n @if (image['isError']) {\n <div *ngComponentOutlet=\"'image-default' | LibsUiIconsGetIconComponentPipe | async\"></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-[#000] opacity-5\">\n </div>\n <div class=\"flex w-full h-full absolute top-0 left-0 items-center justify-center\">\n <span class=\"libs-ui-font-h3s libs-ui-font-size-20px text-[#ffffff]\">+ {{ 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 });
|
|
124
|
+
}
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsGalleryComponent, decorators: [{
|
|
126
|
+
type: Component,
|
|
127
|
+
args: [{ selector: 'libs_ui-components-gallery', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
128
|
+
NgComponentOutlet, AsyncPipe,
|
|
129
|
+
LibsUiIconsGetIconComponentPipe
|
|
130
|
+
], template: "@if (images()) {\n <div class=\"flex nowrap w-100 h-100\">\n @for (image of imagesDisplay(); track $index; let last = $last) {\n <div class=\"w-full h-full libs-ui-border-general relative cursor-pointer\"\n [class.mr-[12px]]=\"!last\"\n (click)=\"handlerSelectImage($event, image)\">\n <div class=\"flex items-center justify-center w-full h-full\">\n @if (!image['isError']) {\n <img [src]=\"image[fieldDisplaySrcImage()]\"\n class=\"flex libs-uipercent-max-height-100 libs-uipercent-max-width-100 m-auto\"\n (error)='handlerImageError($event, image)' />\n }\n @if (image['isError']) {\n <div *ngComponentOutlet=\"'image-default' | LibsUiIconsGetIconComponentPipe | async\"></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-[#000] opacity-5\">\n </div>\n <div class=\"flex w-full h-full absolute top-0 left-0 items-center justify-center\">\n <span class=\"libs-ui-font-h3s libs-ui-font-size-20px text-[#ffffff]\">+ {{ images().length - end() }}</span>\n </div>\n }\n </div>\n }\n </div>\n}\n" }]
|
|
131
|
+
}], ctorParameters: () => [] });
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZ2FsbGVyeS9zcmMvZ2FsbGVyeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZ2FsbGVyeS9zcmMvZ2FsbGVyeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWdCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZLLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsOEJBQThCLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDOztBQWdCMUIsTUFBTSxPQUFPLGdDQUFnQztJQUMzQyxjQUFjO0lBQ0osYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDdEMsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDLENBQUMsQ0FBQztJQUVLLFNBQVMsR0FBRyxNQUFNLENBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuQyxVQUFVLEdBQUcsTUFBTSxDQUFxQixT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QztJQUNoSyxDQUFDO0lBRUQsSUFBWSxTQUFTO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7d0dBMUlVLGdDQUFnQzs0RkFBaEMsZ0NBQWdDLHFyQ0N2QjdDLGl5Q0EyQkEsMEREUkksaUJBQWlCLCtPQUFFLFNBQVMseUNBQzVCLCtCQUErQjs7NEZBR3RCLGdDQUFnQztrQkFaNUMsU0FBUzsrQkFFRSw0QkFBNEIsY0FHMUIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLGlCQUFpQixFQUFFLFNBQVM7d0JBQzVCLCtCQUErQjtxQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbXBvbmVudFJlZiwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIE9uRGVzdHJveSwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlIH0gZnJvbSAnQGxpYnMtdWkvaWNvbnMnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBMaWJzVWlEeW5hbWljQ29tcG9uZW50U2VydmljZSB9IGZyb20gJ0BsaWJzLXVpL3NlcnZpY2VzLWR5bmFtaWMtY29tcG9uZW50JztcbmltcG9ydCB7IGlzRW1iZWRGcmFtZSwgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLCBVdGlsc0NvbW11bmljYXRlTWljcm9LZXlHbG9iYWwsIHV1aWQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgSUdhbGxlcnlGdW5jdGlvbnNDb250cm9sRXZlbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvZnVuY3Rpb25zLWNvbnRyb2wtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNHYWxsZXJ5Vmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXIvdmlld2VyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1nYWxsZXJ5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbGxlcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nYWxsZXJ5LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDb21wb25lbnRPdXRsZXQsIEFzeW5jUGlwZSxcbiAgICBMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0dhbGxlcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qIFBST1BFUlRZICovXG4gIHByb3RlY3RlZCBpbWFnZXNEaXNwbGF5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmltYWdlcygpLnNsaWNlKHRoaXMuc3RhcnQoKSwgdGhpcy5lbmQoKSk7XG4gIH0pO1xuXG4gIHByaXZhdGUgaWRPdmVybGF5ID0gc2lnbmFsPHN0cmluZz4odXVpZCgpKTtcbiAgcHJpdmF0ZSBpZEludGVydmFsID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSB2aWV3ZXJSZWY6IENvbXBvbmVudFJlZjxMaWJzVWlDb21wb25lbnRzR2FsbGVyeVZpZXdlckNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgLyogSU5QVVQgKi9cbiAgcmVhZG9ubHkgaW1hZ2VzID0gbW9kZWwucmVxdWlyZWQ8QXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4+KCk7XG4gIHJlYWRvbmx5IHN0YXJ0ID0gaW5wdXQ8bnVtYmVyPigwKTtcbiAgcmVhZG9ubHkgZW5kID0gaW5wdXQ8bnVtYmVyPigzKTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyPigxMjAwKTtcbiAgcmVhZG9ubHkgZmllbGREaXNwbGF5U3JjSW1hZ2UgPSBpbnB1dDxzdHJpbmc+KCd1cmwnKTtcbiAgcmVhZG9ubHkgaWdub3JlT3ZlcmxheUNvdW50SW1hZ2UgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpbWFnZUFycmF5U3RyaW5nQ29udmVydCA9IGlucHV0PEFycmF5PHN0cmluZz4+KCk7IC8vIHPhu60gZOG7pW5nIHRyb25nIDEgc+G7kSB0csaw4budbmcgaOG7o3AgaW1hZ2VzIGzDoCBBcnJheTxzdHJpbmc+XG5cbiAgLyogT1VUUFVUICovXG4gIHJlYWRvbmx5IG91dEZ1bmN0aW9uc0NvbnRyb2wgPSBvdXRwdXQ8SUdhbGxlcnlGdW5jdGlvbnNDb250cm9sRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG91dFZpZXdlckV2ZW50ID0gb3V0cHV0PCdzaG93JyB8ICdyZW1vdmUnPigpO1xuXG4gIC8qIElOSkVDVCAqL1xuICBwcml2YXRlIGR5bmFtaWNDb21wb25lbnQgPSBpbmplY3QoTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBpbWdDb252ZXJ0ID0gdGhpcy5pbWFnZUFycmF5U3RyaW5nQ29udmVydCgpO1xuICAgICAgY29uc3QgZmllbGRHZXRTcmMgPSB0aGlzLmZpZWxkRGlzcGxheVNyY0ltYWdlKCk7XG5cbiAgICAgIGlmICghaW1nQ29udmVydD8ubGVuZ3RoIHx8ICFmaWVsZEdldFNyYykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRJbWFnZXMgPSBpbWdDb252ZXJ0Py5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFtmaWVsZEdldFNyY106IGl0ZW1cbiAgICAgICAgICB9IGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICAgIH0pIHx8IFtdO1xuXG4gICAgICAgIHRoaXMuaW1hZ2VzLnNldChjb252ZXJ0ZWRJbWFnZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm91dEZ1bmN0aW9uc0NvbnRyb2wuZW1pdCh7XG4gICAgICBvcGVuOiAoaW1hZ2VTZWxlY3RlZDogUmVjb3JkPHN0cmluZywgYW55PikgPT4gdGhpcy5oYW5kbGVyU2VsZWN0SW1hZ2UodW5kZWZpbmVkLCBpbWFnZVNlbGVjdGVkKSxcbiAgICAgIHZpZXdlclJlZjogdGhpcy5WaWV3ZXJSZWZcbiAgICB9KVxuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyU2VsZWN0SW1hZ2UoZXZlbnQ6IE1vdXNlRXZlbnQgfCB1bmRlZmluZWQsIGltYWdlU2VsZWN0ZWQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy52aWV3ZXJSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2aWV3ZXJDb21wb25lbnQgPSBhd2FpdCBpbXBvcnQoJy4vdmlld2VyL3ZpZXdlci5jb21wb25lbnQnKS50aGVuKGMgPT4gYy5MaWJzVWlDb21wb25lbnRzR2FsbGVyeVZpZXdlckNvbXBvbmVudCk7XG5cbiAgICB0aGlzLnZpZXdlclJlZiA9IHRoaXMuZHluYW1pY0NvbXBvbmVudC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh2aWV3ZXJDb21wb25lbnQpO1xuICAgIHRoaXMub3V0RnVuY3Rpb25zQ29udHJvbC5lbWl0KHsgdmlld2VyUmVmOiB0aGlzLlZpZXdlclJlZiwgb3BlbjogKGltYWdlU2VsZWN0ZWQ6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHRoaXMuaGFuZGxlclNlbGVjdEltYWdlKHVuZGVmaW5lZCwgaW1hZ2VTZWxlY3RlZCkgfSk7XG5cbiAgICB0aGlzLnZpZXdlclJlZi5zZXRJbnB1dCgnZmllbGREaXNwbGF5U3JjSW1hZ2UnLCB0aGlzLmZpZWxkRGlzcGxheVNyY0ltYWdlKCkpO1xuICAgIHRoaXMudmlld2VyUmVmLnNldElucHV0KCdpbWFnZXMnLCB0aGlzLmltYWdlcygpKTtcbiAgICB0aGlzLnZpZXdlclJlZi5zZXRJbnB1dCgnaW1hZ2VTZWxlY3RlZCcsIGltYWdlU2VsZWN0ZWQpO1xuICAgIHRoaXMudmlld2VyUmVmLnNldElucHV0KCd6SW5kZXgnLCB0aGlzLnpJbmRleCgpKTtcbiAgICB0aGlzLnZpZXdlclJlZi5zZXRJbnB1dCgnc2luZ2xlSW1hZ2UnLCB0aGlzLmltYWdlcygpLmxlbmd0aCA8PSAxKTtcblxuICAgIGNvbnN0IHN1YiA9IHRoaXMudmlld2VyUmVmLmluc3RhbmNlLm91dENsb3NlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuY2xvc2VQb3B1cCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5keW5hbWljQ29tcG9uZW50LmFkZFRvQm9keSh0aGlzLnZpZXdlclJlZik7XG4gICAgdGhpcy5vdXRWaWV3ZXJFdmVudC5lbWl0KCdzaG93Jyk7XG5cbiAgICBpZiAoaXNFbWJlZEZyYW1lKCkpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIHR5cGU6IFV0aWxzQ29tbXVuaWNhdGVNaWNyb0tleUdsb2JhbC5LRVlfTUVTU0FHRV9NT0RBTCxcbiAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICBtZXNzYWdlOiAnb3BlbicsXG4gICAgICAgICAgc3RhdGU6IHRydWUsXG4gICAgICAgICAgaWRPdmVybGF5OiB0aGlzLmlkT3ZlcmxheSxcbiAgICAgICAgICB0aW1lTGl2ZVVwZGF0ZTogZGF5anMoKS51bml4KClcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLlBvc3RNZXNzYWdlVG9QYXJlbnQoZGF0YSk7XG5cbiAgICAgIHRoaXMuaWRJbnRlcnZhbC5zZXQoKHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgZGF0YS5yZXNwb25zZS50aW1lTGl2ZVVwZGF0ZSA9IGRheWpzKCkudW5peCgpO1xuXG4gICAgICAgIFV0aWxzQ29tbXVuaWNhdGVNaWNyby5Qb3N0TWVzc2FnZVRvUGFyZW50KGRhdGEpO1xuICAgICAgfSwgMjAwMCkgYXMgdW5rbm93bikgYXMgbnVtYmVyKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckltYWdlRXJyb3IoZTogRXJyb3JFdmVudCwgaW1hZ2U6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBjb25zdCBldmVudCA9IGUgYXMgSUV2ZW50O1xuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpbWFnZVsnaXNFcnJvciddID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VQb3B1cCgpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMuaWRJbnRlcnZhbCgpKTtcbiAgICBpZiAodGhpcy52aWV3ZXJSZWYpIHtcbiAgICAgIHRoaXMub3V0Vmlld2VyRXZlbnQuZW1pdCgncmVtb3ZlJyk7XG4gICAgICBpZiAoaXNFbWJlZEZyYW1lKCkpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICB0eXBlOiBVdGlsc0NvbW11bmljYXRlTWljcm9LZXlHbG9iYWwuS0VZX01FU1NBR0VfTU9EQUwsXG4gICAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdjbG9zZScsXG4gICAgICAgICAgICBzdGF0ZTogZmFsc2UsXG4gICAgICAgICAgICBpZE92ZXJsYXk6IHRoaXMuaWRPdmVybGF5XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFV0aWxzQ29tbXVuaWNhdGVNaWNyby5Qb3N0TWVzc2FnZVRvUGFyZW50KGRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmR5bmFtaWNDb21wb25lbnQucmVtb3ZlKHRoaXMudmlld2VyUmVmKTtcbiAgICB0aGlzLnZpZXdlclJlZiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm91dEZ1bmN0aW9uc0NvbnRyb2wuZW1pdCh7IHZpZXdlclJlZjogdGhpcy5WaWV3ZXJSZWYsIG9wZW46IChpbWFnZVNlbGVjdGVkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB0aGlzLmhhbmRsZXJTZWxlY3RJbWFnZSh1bmRlZmluZWQsIGltYWdlU2VsZWN0ZWQpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgVmlld2VyUmVmKCkge1xuICAgIHJldHVybiB0aGlzLnZpZXdlclJlZjtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudmlld2VyUmVmPy5kZXN0cm95KCk7XG4gICAgdGhpcy5jbG9zZVBvcHVwKCk7XG4gIH1cbn1cbiIsIkBpZiAoaW1hZ2VzKCkpIHtcbiAgPGRpdiBjbGFzcz1cImZsZXggbm93cmFwIHctMTAwIGgtMTAwXCI+XG4gICAgQGZvciAoaW1hZ2Ugb2YgaW1hZ2VzRGlzcGxheSgpOyB0cmFjayAkaW5kZXg7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGxpYnMtdWktYm9yZGVyLWdlbmVyYWwgcmVsYXRpdmUgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICBbY2xhc3MubXItWzEycHhdXT1cIiFsYXN0XCJcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZXJTZWxlY3RJbWFnZSgkZXZlbnQsIGltYWdlKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdy1mdWxsIGgtZnVsbFwiPlxuICAgICAgICAgIEBpZiAoIWltYWdlWydpc0Vycm9yJ10pIHtcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVtmaWVsZERpc3BsYXlTcmNJbWFnZSgpXVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBsaWJzLXVpcGVyY2VudC1tYXgtaGVpZ2h0LTEwMCBsaWJzLXVpcGVyY2VudC1tYXgtd2lkdGgtMTAwIG0tYXV0b1wiXG4gICAgICAgICAgICAgIChlcnJvcik9J2hhbmRsZXJJbWFnZUVycm9yKCRldmVudCwgaW1hZ2UpJyAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGltYWdlWydpc0Vycm9yJ10pIHtcbiAgICAgICAgICAgIDxkaXYgKm5nQ29tcG9uZW50T3V0bGV0PVwiJ2ltYWdlLWRlZmF1bHQnIHwgTGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZSB8IGFzeW5jXCI+PC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChsYXN0ICYmIGltYWdlcygpLmxlbmd0aCA+IGVuZCgpICYmICFpZ25vcmVPdmVybGF5Q291bnRJbWFnZSgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGgtZnVsbCBhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLVsjMDAwXSBvcGFjaXR5LTVcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwgaC1mdWxsIGFic29sdXRlIHRvcC0wIGxlZnQtMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlicy11aS1mb250LWgzcyBsaWJzLXVpLWZvbnQtc2l6ZS0yMHB4IHRleHQtWyNmZmZmZmZdXCI+KyB7eyBpbWFnZXMoKS5sZW5ndGggLSBlbmQoKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './gallery.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZ2FsbGVyeS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZ2FsbGVyeS5jb21wb25lbnQnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLWNvbnRyb2wtZXZlbnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2dhbGxlcnkvc3JjL2ludGVyZmFjZXMvZnVuY3Rpb25zLWNvbnRyb2wtZXZlbnQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElHYWxsZXJ5RnVuY3Rpb25zQ29udHJvbEV2ZW50IHtcbiAgb3BlbjogKGltYWdlU2VsZWN0ZWQ6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IFByb21pc2U8dm9pZD47XG4gIHZpZXdlclJlZjogQ29tcG9uZW50UmVmPGFueT4gfCB1bmRlZmluZWQ7XG59Il19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZ2FsbGVyeS9zcmMvaW50ZXJmYWNlcy96b29tLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJWm9vbURyYWdIVE1MRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgc3RvcERyYWdnYWJsZUJlaGF2aW9yPygpOiBJWm9vbURyYWdIVE1MRWxlbWVudCB8IG51bGw7XG59Il19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1jb21wb25lbnRzLWdhbGxlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZ2FsbGVyeS9zcmMvbGlicy11aS1jb21wb25lbnRzLWdhbGxlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|