@libs-ui/components-gallery 0.1.1-1
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 +131 -0
- package/esm2022/index.mjs +4 -0
- package/esm2022/interfaces/functions-control-event.interface.mjs +2 -0
- package/esm2022/interfaces/index.mjs +3 -0
- package/esm2022/interfaces/zoom.interface.mjs +2 -0
- package/esm2022/libs-ui-components-gallery.mjs +5 -0
- package/esm2022/viewer/viewer.component.mjs +320 -0
- package/fesm2022/libs-ui-components-gallery.mjs +460 -0
- package/fesm2022/libs-ui-components-gallery.mjs.map +1 -0
- package/gallery.component.d.ts +29 -0
- package/index.d.ts +3 -0
- package/interfaces/functions-control-event.interface.d.ts +5 -0
- package/interfaces/index.d.ts +2 -0
- package/interfaces/zoom.interface.d.ts +3 -0
- package/package.json +33 -0
- package/viewer/viewer.component.d.ts +56 -0
package/README.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
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 { getDayjs, isEmbedFrame, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, uuid } from '@libs-ui/utils';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class LibsUiComponentsGalleryComponent {
|
|
9
|
+
// #region PROPERTY
|
|
10
|
+
imagesDisplay = computed(() => {
|
|
11
|
+
return this.images().slice(this.start(), this.end());
|
|
12
|
+
});
|
|
13
|
+
idOverlay = signal(uuid());
|
|
14
|
+
idInterval = signal(undefined);
|
|
15
|
+
viewerRef;
|
|
16
|
+
// #region INPUT
|
|
17
|
+
images = model.required();
|
|
18
|
+
start = input(0);
|
|
19
|
+
end = input(3);
|
|
20
|
+
zIndex = input(1200);
|
|
21
|
+
fieldDisplaySrcImage = input('url');
|
|
22
|
+
ignoreOverlayCountImage = input();
|
|
23
|
+
imageArrayStringConvert = input(); // sử dụng trong 1 số trường hợp images là Array<string>
|
|
24
|
+
// #region OUTPUT
|
|
25
|
+
outFunctionsControl = output();
|
|
26
|
+
outViewerEvent = output();
|
|
27
|
+
// #region INJECT
|
|
28
|
+
dynamicComponent = inject(LibsUiDynamicComponentService);
|
|
29
|
+
constructor() {
|
|
30
|
+
effect(() => {
|
|
31
|
+
const imgConvert = this.imageArrayStringConvert();
|
|
32
|
+
const fieldGetSrc = this.fieldDisplaySrcImage();
|
|
33
|
+
if (!imgConvert?.length || !fieldGetSrc) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
untracked(() => {
|
|
37
|
+
const convertedImages = imgConvert?.map((item) => {
|
|
38
|
+
return {
|
|
39
|
+
[fieldGetSrc]: item,
|
|
40
|
+
};
|
|
41
|
+
}) || [];
|
|
42
|
+
this.images.set(convertedImages);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
ngOnInit() {
|
|
47
|
+
this.outFunctionsControl.emit(this.FunctionsControl);
|
|
48
|
+
}
|
|
49
|
+
/* FUNCTIONS */
|
|
50
|
+
get FunctionsControl() {
|
|
51
|
+
return {
|
|
52
|
+
open: (imageSelected) => this.handlerSelectImage(undefined, imageSelected),
|
|
53
|
+
viewerRef: this.ViewerRef,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
async handlerSelectImage(event, imageSelected) {
|
|
57
|
+
event?.stopPropagation();
|
|
58
|
+
if (this.viewerRef) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const viewerComponent = await import('./viewer/viewer.component').then((c) => c.LibsUiComponentsGalleryViewerComponent);
|
|
62
|
+
this.viewerRef = this.dynamicComponent.resolveComponentFactory(viewerComponent);
|
|
63
|
+
this.outFunctionsControl.emit({ viewerRef: this.ViewerRef, open: (imageSelected) => this.handlerSelectImage(undefined, imageSelected) });
|
|
64
|
+
this.viewerRef.setInput('fieldDisplaySrcImage', this.fieldDisplaySrcImage());
|
|
65
|
+
this.viewerRef.setInput('images', this.images());
|
|
66
|
+
this.viewerRef.setInput('imageSelected', imageSelected);
|
|
67
|
+
this.viewerRef.setInput('zIndex', this.zIndex());
|
|
68
|
+
this.viewerRef.setInput('singleImage', this.images().length <= 1);
|
|
69
|
+
const sub = this.viewerRef.instance.outClose.subscribe(() => {
|
|
70
|
+
sub.unsubscribe();
|
|
71
|
+
this.closePopup();
|
|
72
|
+
});
|
|
73
|
+
this.dynamicComponent.addToBody(this.viewerRef);
|
|
74
|
+
this.outViewerEvent.emit('show');
|
|
75
|
+
if (isEmbedFrame()) {
|
|
76
|
+
const data = {
|
|
77
|
+
type: UtilsCommunicateMicroKeyGlobal.KEY_MESSAGE_MODAL,
|
|
78
|
+
response: {
|
|
79
|
+
message: 'open',
|
|
80
|
+
state: true,
|
|
81
|
+
idOverlay: this.idOverlay,
|
|
82
|
+
timeLiveUpdate: getDayjs().unix(),
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
UtilsCommunicateMicro.PostMessageToParent(data);
|
|
86
|
+
this.idInterval.set(setInterval(() => {
|
|
87
|
+
data.response.timeLiveUpdate = getDayjs().unix();
|
|
88
|
+
UtilsCommunicateMicro.PostMessageToParent(data);
|
|
89
|
+
}, 2000));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
handlerImageError(e, image) {
|
|
93
|
+
const event = e;
|
|
94
|
+
event.stopPropagation();
|
|
95
|
+
image['isError'] = true;
|
|
96
|
+
}
|
|
97
|
+
closePopup() {
|
|
98
|
+
clearInterval(this.idInterval());
|
|
99
|
+
if (this.viewerRef) {
|
|
100
|
+
this.outViewerEvent.emit('remove');
|
|
101
|
+
if (isEmbedFrame()) {
|
|
102
|
+
const data = {
|
|
103
|
+
type: UtilsCommunicateMicroKeyGlobal.KEY_MESSAGE_MODAL,
|
|
104
|
+
response: {
|
|
105
|
+
message: 'close',
|
|
106
|
+
state: false,
|
|
107
|
+
idOverlay: this.idOverlay,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
UtilsCommunicateMicro.PostMessageToParent(data);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
this.dynamicComponent.remove(this.viewerRef);
|
|
114
|
+
this.viewerRef = undefined;
|
|
115
|
+
this.outFunctionsControl.emit({ viewerRef: this.ViewerRef, open: (imageSelected) => this.handlerSelectImage(undefined, imageSelected) });
|
|
116
|
+
}
|
|
117
|
+
get ViewerRef() {
|
|
118
|
+
return this.viewerRef;
|
|
119
|
+
}
|
|
120
|
+
ngOnDestroy() {
|
|
121
|
+
this.viewerRef?.destroy();
|
|
122
|
+
this.closePopup();
|
|
123
|
+
}
|
|
124
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsGalleryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
125
|
+
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 });
|
|
126
|
+
}
|
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsGalleryComponent, decorators: [{
|
|
128
|
+
type: Component,
|
|
129
|
+
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" }]
|
|
130
|
+
}], ctorParameters: () => [] });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZ2FsbGVyeS9zcmMvZ2FsbGVyeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZ2FsbGVyeS9zcmMvZ2FsbGVyeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWdCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZLLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLDhCQUE4QixFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWNySCxNQUFNLE9BQU8sZ0NBQWdDO0lBQzNDLG1CQUFtQjtJQUNULGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFFSyxTQUFTLEdBQUcsTUFBTSxDQUFTLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkMsVUFBVSxHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFDbkQs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QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoSyxDQUFDO0lBRUQsSUFBWSxTQUFTO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7d0dBakpVLGdDQUFnQzs0RkFBaEMsZ0NBQWdDLHFyQ0NwQjdDLDBxQ0E0QkEsMEREVlksaUJBQWlCLCtPQUFFLFNBQVMseUNBQUUsK0JBQStCOzs0RkFFNUQsZ0NBQWdDO2tCQVQ1QyxTQUFTOytCQUVFLDRCQUE0QixjQUcxQixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbXBvbmVudFJlZiwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIE9uRGVzdHJveSwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlIH0gZnJvbSAnQGxpYnMtdWkvaWNvbnMnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBMaWJzVWlEeW5hbWljQ29tcG9uZW50U2VydmljZSB9IGZyb20gJ0BsaWJzLXVpL3NlcnZpY2VzLWR5bmFtaWMtY29tcG9uZW50JztcbmltcG9ydCB7IGdldERheWpzLCBpc0VtYmVkRnJhbWUsIFV0aWxzQ29tbXVuaWNhdGVNaWNybywgVXRpbHNDb21tdW5pY2F0ZU1pY3JvS2V5R2xvYmFsLCB1dWlkIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgRGF5anMgfSBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBJR2FsbGVyeUZ1bmN0aW9uc0NvbnRyb2xFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9mdW5jdGlvbnMtY29udHJvbC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0dhbGxlcnlWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci92aWV3ZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWdhbGxlcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2FsbGVyeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dhbGxlcnkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtOZ0NvbXBvbmVudE91dGxldCwgQXN5bmNQaXBlLCBMaWJzVWlJY29uc0dldEljb25Db21wb25lbnRQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0dhbGxlcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIGltYWdlc0Rpc3BsYXkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaW1hZ2VzKCkuc2xpY2UodGhpcy5zdGFydCgpLCB0aGlzLmVuZCgpKTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBpZE92ZXJsYXkgPSBzaWduYWw8c3RyaW5nPih1dWlkKCkpO1xuICBwcml2YXRlIGlkSW50ZXJ2YWwgPSBzaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHZpZXdlclJlZjogQ29tcG9uZW50UmVmPExpYnNVaUNvbXBvbmVudHNHYWxsZXJ5Vmlld2VyQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIHJlYWRvbmx5IGltYWdlcyA9IG1vZGVsLnJlcXVpcmVkPEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+PigpO1xuICByZWFkb25seSBzdGFydCA9IGlucHV0PG51bWJlcj4oMCk7XG4gIHJlYWRvbmx5IGVuZCA9IGlucHV0PG51bWJlcj4oMyk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlcj4oMTIwMCk7XG4gIHJlYWRvbmx5IGZpZWxkRGlzcGxheVNyY0ltYWdlID0gaW5wdXQ8c3RyaW5nPigndXJsJyk7XG4gIHJlYWRvbmx5IGlnbm9yZU92ZXJsYXlDb3VudEltYWdlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaW1hZ2VBcnJheVN0cmluZ0NvbnZlcnQgPSBpbnB1dDxBcnJheTxzdHJpbmc+PigpOyAvLyBz4butIGThu6VuZyB0cm9uZyAxIHPhu5EgdHLGsOG7nW5nIGjhu6NwIGltYWdlcyBsw6AgQXJyYXk8c3RyaW5nPlxuXG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dEZ1bmN0aW9uc0NvbnRyb2wgPSBvdXRwdXQ8SUdhbGxlcnlGdW5jdGlvbnNDb250cm9sRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG91dFZpZXdlckV2ZW50ID0gb3V0cHV0PCdzaG93JyB8ICdyZW1vdmUnPigpO1xuXG4gIC8vICNyZWdpb24gSU5KRUNUXG4gIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudCA9IGluamVjdChMaWJzVWlEeW5hbWljQ29tcG9uZW50U2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGltZ0NvbnZlcnQgPSB0aGlzLmltYWdlQXJyYXlTdHJpbmdDb252ZXJ0KCk7XG4gICAgICBjb25zdCBmaWVsZEdldFNyYyA9IHRoaXMuZmllbGREaXNwbGF5U3JjSW1hZ2UoKTtcblxuICAgICAgaWYgKCFpbWdDb252ZXJ0Py5sZW5ndGggfHwgIWZpZWxkR2V0U3JjKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZEltYWdlcyA9XG4gICAgICAgICAgaW1nQ29udmVydD8ubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBbZmllbGRHZXRTcmNdOiBpdGVtLFxuICAgICAgICAgICAgfSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgICAgICAgIH0pIHx8IFtdO1xuXG4gICAgICAgIHRoaXMuaW1hZ2VzLnNldChjb252ZXJ0ZWRJbWFnZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm91dEZ1bmN0aW9uc0NvbnRyb2wuZW1pdCh0aGlzLkZ1bmN0aW9uc0NvbnRyb2wpO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHB1YmxpYyBnZXQgRnVuY3Rpb25zQ29udHJvbCgpOiBJR2FsbGVyeUZ1bmN0aW9uc0NvbnRyb2xFdmVudCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9wZW46IChpbWFnZVNlbGVjdGVkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB0aGlzLmhhbmRsZXJTZWxlY3RJbWFnZSh1bmRlZmluZWQsIGltYWdlU2VsZWN0ZWQpLFxuICAgICAgdmlld2VyUmVmOiB0aGlzLlZpZXdlclJlZixcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJTZWxlY3RJbWFnZShldmVudDogTW91c2VFdmVudCB8IHVuZGVmaW5lZCwgaW1hZ2VTZWxlY3RlZDogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLnZpZXdlclJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZpZXdlckNvbXBvbmVudCA9IGF3YWl0IGltcG9ydCgnLi92aWV3ZXIvdmlld2VyLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuTGlic1VpQ29tcG9uZW50c0dhbGxlcnlWaWV3ZXJDb21wb25lbnQpO1xuXG4gICAgdGhpcy52aWV3ZXJSZWYgPSB0aGlzLmR5bmFtaWNDb21wb25lbnQucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnkodmlld2VyQ29tcG9uZW50KTtcbiAgICB0aGlzLm91dEZ1bmN0aW9uc0NvbnRyb2wuZW1pdCh7IHZpZXdlclJlZjogdGhpcy5WaWV3ZXJSZWYsIG9wZW46IChpbWFnZVNlbGVjdGVkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB0aGlzLmhhbmRsZXJTZWxlY3RJbWFnZSh1bmRlZmluZWQsIGltYWdlU2VsZWN0ZWQpIH0pO1xuXG4gICAgdGhpcy52aWV3ZXJSZWYuc2V0SW5wdXQoJ2ZpZWxkRGlzcGxheVNyY0ltYWdlJywgdGhpcy5maWVsZERpc3BsYXlTcmNJbWFnZSgpKTtcbiAgICB0aGlzLnZpZXdlclJlZi5zZXRJbnB1dCgnaW1hZ2VzJywgdGhpcy5pbWFnZXMoKSk7XG4gICAgdGhpcy52aWV3ZXJSZWYuc2V0SW5wdXQoJ2ltYWdlU2VsZWN0ZWQnLCBpbWFnZVNlbGVjdGVkKTtcbiAgICB0aGlzLnZpZXdlclJlZi5zZXRJbnB1dCgnekluZGV4JywgdGhpcy56SW5kZXgoKSk7XG4gICAgdGhpcy52aWV3ZXJSZWYuc2V0SW5wdXQoJ3NpbmdsZUltYWdlJywgdGhpcy5pbWFnZXMoKS5sZW5ndGggPD0gMSk7XG5cbiAgICBjb25zdCBzdWIgPSB0aGlzLnZpZXdlclJlZi5pbnN0YW5jZS5vdXRDbG9zZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmNsb3NlUG9wdXAoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZHluYW1pY0NvbXBvbmVudC5hZGRUb0JvZHkodGhpcy52aWV3ZXJSZWYpO1xuICAgIHRoaXMub3V0Vmlld2VyRXZlbnQuZW1pdCgnc2hvdycpO1xuXG4gICAgaWYgKGlzRW1iZWRGcmFtZSgpKSB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICB0eXBlOiBVdGlsc0NvbW11bmljYXRlTWljcm9LZXlHbG9iYWwuS0VZX01FU1NBR0VfTU9EQUwsXG4gICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgbWVzc2FnZTogJ29wZW4nLFxuICAgICAgICAgIHN0YXRlOiB0cnVlLFxuICAgICAgICAgIGlkT3ZlcmxheTogdGhpcy5pZE92ZXJsYXksXG4gICAgICAgICAgdGltZUxpdmVVcGRhdGU6IGdldERheWpzKCkudW5peCgpLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLlBvc3RNZXNzYWdlVG9QYXJlbnQoZGF0YSk7XG5cbiAgICAgIHRoaXMuaWRJbnRlcnZhbC5zZXQoXG4gICAgICAgIHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICBkYXRhLnJlc3BvbnNlLnRpbWVMaXZlVXBkYXRlID0gZ2V0RGF5anMoKS51bml4KCk7XG5cbiAgICAgICAgICBVdGlsc0NvbW11bmljYXRlTWljcm8uUG9zdE1lc3NhZ2VUb1BhcmVudChkYXRhKTtcbiAgICAgICAgfSwgMjAwMCkgYXMgdW5rbm93biBhcyBudW1iZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJJbWFnZUVycm9yKGU6IEVycm9yRXZlbnQsIGltYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgY29uc3QgZXZlbnQgPSBlIGFzIElFdmVudDtcblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaW1hZ2VbJ2lzRXJyb3InXSA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlUG9wdXAoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmlkSW50ZXJ2YWwoKSk7XG4gICAgaWYgKHRoaXMudmlld2VyUmVmKSB7XG4gICAgICB0aGlzLm91dFZpZXdlckV2ZW50LmVtaXQoJ3JlbW92ZScpO1xuICAgICAgaWYgKGlzRW1iZWRGcmFtZSgpKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgdHlwZTogVXRpbHNDb21tdW5pY2F0ZU1pY3JvS2V5R2xvYmFsLktFWV9NRVNTQUdFX01PREFMLFxuICAgICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnY2xvc2UnLFxuICAgICAgICAgICAgc3RhdGU6IGZhbHNlLFxuICAgICAgICAgICAgaWRPdmVybGF5OiB0aGlzLmlkT3ZlcmxheSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIFV0aWxzQ29tbXVuaWNhdGVNaWNyby5Qb3N0TWVzc2FnZVRvUGFyZW50KGRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmR5bmFtaWNDb21wb25lbnQucmVtb3ZlKHRoaXMudmlld2VyUmVmKTtcbiAgICB0aGlzLnZpZXdlclJlZiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm91dEZ1bmN0aW9uc0NvbnRyb2wuZW1pdCh7IHZpZXdlclJlZjogdGhpcy5WaWV3ZXJSZWYsIG9wZW46IChpbWFnZVNlbGVjdGVkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB0aGlzLmhhbmRsZXJTZWxlY3RJbWFnZSh1bmRlZmluZWQsIGltYWdlU2VsZWN0ZWQpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgVmlld2VyUmVmKCkge1xuICAgIHJldHVybiB0aGlzLnZpZXdlclJlZjtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudmlld2VyUmVmPy5kZXN0cm95KCk7XG4gICAgdGhpcy5jbG9zZVBvcHVwKCk7XG4gIH1cbn1cbiIsIkBpZiAoaW1hZ2VzKCkpIHtcbiAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGgtZnVsbFwiPlxuICAgIEBmb3IgKGltYWdlIG9mIGltYWdlc0Rpc3BsYXkoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8ZGl2XG4gICAgICAgICNpdGVtUmVmXG4gICAgICAgIGNsYXNzPVwidy1mdWxsIGgtZnVsbCByb3VuZGVkLVs0cHhdIG92ZXJmbG93LWhpZGRlbiByZWxhdGl2ZSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgIFtjbGFzcy5tci1bOHB4XV09XCIhJGxhc3RcIlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlclNlbGVjdEltYWdlKCRldmVudCwgaW1hZ2UpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LWZ1bGwgaC1mdWxsXCI+XG4gICAgICAgICAgQGlmICghaW1hZ2VbJ2lzRXJyb3InXSkge1xuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBbc3JjXT1cImltYWdlW2ZpZWxkRGlzcGxheVNyY0ltYWdlKCldXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IG1heC13LWZ1bGwgbWF4LWgtZnVsbCBtLWF1dG9cIlxuICAgICAgICAgICAgICAoZXJyb3IpPVwiaGFuZGxlckltYWdlRXJyb3IoJGV2ZW50LCBpbWFnZSlcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGltYWdlWydpc0Vycm9yJ10pIHtcbiAgICAgICAgICAgIDxkaXYgKm5nQ29tcG9uZW50T3V0bGV0PVwiJ2ltYWdlLWRlZmF1bHQnIHwgTGlic1VpSWNvbnNHZXRJY29uQ29tcG9uZW50UGlwZSB8IGFzeW5jOyBpbnB1dHM6IHsgc2l6ZTogaXRlbVJlZi5jbGllbnRXaWR0aCB9XCI+PC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmICgkbGFzdCAmJiBpbWFnZXMoKS5sZW5ndGggPiBlbmQoKSAmJiAhaWdub3JlT3ZlcmxheUNvdW50SW1hZ2UoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbCBoLWZ1bGwgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibGFjay8xNVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVtIHRleHQtd2hpdGVcIj4re3sgaW1hZ2VzKCkubGVuZ3RoIC0gZW5kKCkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './gallery.component';
|
|
2
|
+
export * from './interfaces';
|
|
3
|
+
export * from './viewer/viewer.component';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZ2FsbGVyeS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nYWxsZXJ5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3ZXIvdmlld2VyLmNvbXBvbmVudCc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLWNvbnRyb2wtZXZlbnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2dhbGxlcnkvc3JjL2ludGVyZmFjZXMvZnVuY3Rpb25zLWNvbnRyb2wtZXZlbnQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBJR2FsbGVyeUZ1bmN0aW9uc0NvbnRyb2xFdmVudCB7XG4gIG9wZW46IChpbWFnZVNlbGVjdGVkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBQcm9taXNlPHZvaWQ+O1xuICB2aWV3ZXJSZWY6IENvbXBvbmVudFJlZjxhbnk+IHwgdW5kZWZpbmVkO1xufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './functions-control-event.interface';
|
|
2
|
+
export * from './zoom.interface';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZ2FsbGVyeS9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Z1bmN0aW9ucy1jb250cm9sLWV2ZW50LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3pvb20uaW50ZXJmYWNlJztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZ2FsbGVyeS9zcmMvaW50ZXJmYWNlcy96b29tLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJWm9vbURyYWdIVE1MRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgc3RvcERyYWdnYWJsZUJlaGF2aW9yPygpOiBJWm9vbURyYWdIVE1MRWxlbWVudCB8IG51bGw7XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1jb21wb25lbnRzLWdhbGxlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZ2FsbGVyeS9zcmMvbGlicy11aS1jb21wb25lbnRzLWdhbGxlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|