@ks89/angular-modal-gallery 10.0.0 → 11.0.0-rc.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/CHANGELOG.md +18 -0
- package/CONTRIBUTING.md +3 -3
- package/LICENSE +1 -1
- package/README.md +12 -14
- package/esm2022/lib/components/accessible.component.mjs +131 -0
- package/esm2022/lib/components/carousel/carousel-previews/carousel-previews.component.mjs +457 -0
- package/esm2022/lib/components/carousel/carousel.component.mjs +739 -0
- package/{esm2020 → esm2022}/lib/components/components.mjs +2 -2
- package/esm2022/lib/components/current-image/current-image.component.mjs +608 -0
- package/esm2022/lib/components/current-image/loading-spinner/loading-spinner.component.mjs +81 -0
- package/esm2022/lib/components/dots/dots.component.mjs +125 -0
- package/{esm2020 → esm2022}/lib/components/modal-gallery/modal-gallery-ref.mjs +2 -2
- package/esm2022/lib/components/modal-gallery/modal-gallery.component.mjs +500 -0
- package/esm2022/lib/components/modal-gallery/modal-gallery.service.mjs +188 -0
- package/{esm2020 → esm2022}/lib/components/modal-gallery/modal-gallery.tokens.mjs +2 -2
- package/esm2022/lib/components/plain-gallery/plain-gallery.component.mjs +250 -0
- package/esm2022/lib/components/previews/previews.component.mjs +264 -0
- package/esm2022/lib/components/upper-buttons/upper-buttons.component.mjs +244 -0
- package/esm2022/lib/directives/a-tag-bg-image.directive.mjs +79 -0
- package/esm2022/lib/directives/click-outside.directive.mjs +92 -0
- package/esm2022/lib/directives/description.directive.mjs +99 -0
- package/esm2022/lib/directives/direction.directive.mjs +74 -0
- package/esm2022/lib/directives/directives.mjs +51 -0
- package/esm2022/lib/directives/fallback-image.directive.mjs +60 -0
- package/esm2022/lib/directives/keyboard-navigation.directive.mjs +59 -0
- package/esm2022/lib/directives/margin.directive.mjs +85 -0
- package/esm2022/lib/directives/max-size.directive.mjs +76 -0
- package/esm2022/lib/directives/size.directive.mjs +77 -0
- package/esm2022/lib/directives/swipe.directive.mjs +115 -0
- package/esm2022/lib/directives/wrap.directive.mjs +75 -0
- package/esm2022/lib/modal-gallery.module.mjs +69 -0
- package/{esm2020 → esm2022}/lib/model/accessibility.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/action.enum.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/buttons-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/carousel-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/carousel-image-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/carousel-preview-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/current-image-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/description.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/dots-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/image-internal.class.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/image.class.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/keyboard-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/keyboard.enum.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/lib-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/loading-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/max-size.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/modal-gallery-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/plain-gallery-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/play-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/preview-config.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/size.interface.mjs +2 -2
- package/{esm2020 → esm2022}/lib/model/slide-config.interface.mjs +2 -2
- package/esm2022/lib/services/config.service.mjs +389 -0
- package/esm2022/lib/services/id-validator.service.mjs +72 -0
- package/{esm2020 → esm2022}/lib/utils/image.util.mjs +4 -4
- package/{esm2020 → esm2022}/lib/utils/user-input.util.mjs +2 -2
- package/{esm2020 → esm2022}/public-api.mjs +2 -2
- package/{fesm2020 → fesm2022}/ks89-angular-modal-gallery.mjs +382 -471
- package/fesm2022/ks89-angular-modal-gallery.mjs.map +1 -0
- package/lib/components/carousel/carousel-previews/carousel-previews.component.d.ts +4 -4
- package/lib/components/carousel/carousel.component.d.ts +5 -8
- package/lib/components/current-image/current-image.component.d.ts +6 -10
- package/lib/components/current-image/loading-spinner/loading-spinner.component.d.ts +3 -3
- package/lib/components/dots/dots.component.d.ts +5 -5
- package/lib/components/modal-gallery/modal-gallery.component.d.ts +11 -17
- package/lib/components/plain-gallery/plain-gallery.component.d.ts +3 -3
- package/lib/components/previews/previews.component.d.ts +6 -6
- package/lib/components/upper-buttons/upper-buttons.component.d.ts +4 -4
- package/lib/directives/a-tag-bg-image.directive.d.ts +3 -3
- package/lib/directives/click-outside.directive.d.ts +2 -2
- package/lib/directives/description.directive.d.ts +3 -3
- package/lib/directives/direction.directive.d.ts +3 -3
- package/lib/directives/directives.d.ts +2 -1
- package/lib/directives/fallback-image.directive.d.ts +1 -1
- package/lib/directives/keyboard-navigation.directive.d.ts +1 -1
- package/lib/directives/margin.directive.d.ts +3 -3
- package/lib/directives/max-size.directive.d.ts +3 -3
- package/lib/directives/size.directive.d.ts +1 -1
- package/lib/directives/swipe.directive.d.ts +33 -0
- package/lib/directives/wrap.directive.d.ts +3 -3
- package/lib/modal-gallery.module.d.ts +4 -10
- package/lib/model/keyboard.enum.d.ts +1 -1
- package/lib/model/lib-config.interface.d.ts +2 -6
- package/lib/services/config.service.d.ts +0 -2
- package/lib/utils/image.util.d.ts +2 -2
- package/package.json +10 -18
- package/esm2020/lib/components/accessible.component.mjs +0 -130
- package/esm2020/lib/components/carousel/carousel-previews/carousel-previews.component.mjs +0 -462
- package/esm2020/lib/components/carousel/carousel.component.mjs +0 -747
- package/esm2020/lib/components/current-image/current-image.component.mjs +0 -616
- package/esm2020/lib/components/current-image/loading-spinner/loading-spinner.component.mjs +0 -80
- package/esm2020/lib/components/dots/dots.component.mjs +0 -127
- package/esm2020/lib/components/modal-gallery/modal-gallery.component.mjs +0 -524
- package/esm2020/lib/components/modal-gallery/modal-gallery.service.mjs +0 -187
- package/esm2020/lib/components/plain-gallery/plain-gallery.component.mjs +0 -249
- package/esm2020/lib/components/previews/previews.component.mjs +0 -272
- package/esm2020/lib/components/upper-buttons/upper-buttons.component.mjs +0 -249
- package/esm2020/lib/directives/a-tag-bg-image.directive.mjs +0 -78
- package/esm2020/lib/directives/click-outside.directive.mjs +0 -91
- package/esm2020/lib/directives/description.directive.mjs +0 -98
- package/esm2020/lib/directives/direction.directive.mjs +0 -73
- package/esm2020/lib/directives/directives.mjs +0 -49
- package/esm2020/lib/directives/fallback-image.directive.mjs +0 -59
- package/esm2020/lib/directives/keyboard-navigation.directive.mjs +0 -58
- package/esm2020/lib/directives/margin.directive.mjs +0 -84
- package/esm2020/lib/directives/max-size.directive.mjs +0 -75
- package/esm2020/lib/directives/size.directive.mjs +0 -76
- package/esm2020/lib/directives/wrap.directive.mjs +0 -74
- package/esm2020/lib/modal-gallery.module.mjs +0 -94
- package/esm2020/lib/model/keyboard-service-config.interface.mjs +0 -25
- package/esm2020/lib/services/config.service.mjs +0 -396
- package/esm2020/lib/services/id-validator.service.mjs +0 -71
- package/esm2020/lib/services/keyboard.service.mjs +0 -111
- package/fesm2015/ks89-angular-modal-gallery.mjs +0 -5728
- package/fesm2015/ks89-angular-modal-gallery.mjs.map +0 -1
- package/fesm2020/ks89-angular-modal-gallery.mjs.map +0 -1
- package/lib/model/keyboard-service-config.interface.d.ts +0 -8
- package/lib/services/keyboard.service.d.ts +0 -26
- /package/{esm2020 → esm2022}/ks89-angular-modal-gallery.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/accessibility-default.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/upper-buttons/upper-buttons-default.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/interaction-event.interface.mjs +0 -0
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
The MIT License (MIT)
|
|
3
|
-
|
|
4
|
-
Copyright (c) 2017-2022 Stefano Cappa (Ks89)
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
in the Software without restriction, including without limitation the rights
|
|
9
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
furnished to do so, subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
25
|
-
import { AccessibleComponent } from '../accessible.component';
|
|
26
|
-
import { Action } from '../../model/action.enum';
|
|
27
|
-
import { ButtonsStrategy, ButtonType, WHITELIST_BUTTON_TYPES } from '../../model/buttons-config.interface';
|
|
28
|
-
import { KS_DEFAULT_BTN_CLOSE, KS_DEFAULT_BTN_DELETE, KS_DEFAULT_BTN_DOWNLOAD, KS_DEFAULT_BTN_EXTURL, KS_DEFAULT_BTN_FULL_SCREEN } from './upper-buttons-default';
|
|
29
|
-
import { NEXT } from '../../utils/user-input.util';
|
|
30
|
-
import * as i0 from "@angular/core";
|
|
31
|
-
import * as i1 from "../../services/config.service";
|
|
32
|
-
import * as i2 from "@angular/common";
|
|
33
|
-
import * as i3 from "../../directives/size.directive";
|
|
34
|
-
/**
|
|
35
|
-
* Component with all upper buttons.
|
|
36
|
-
* Also it emits click events as outputs.
|
|
37
|
-
*/
|
|
38
|
-
export class UpperButtonsComponent extends AccessibleComponent {
|
|
39
|
-
constructor(configService) {
|
|
40
|
-
super();
|
|
41
|
-
this.configService = configService;
|
|
42
|
-
/**
|
|
43
|
-
* Output to emit clicks on refresh button. The payload contains a `ButtonEvent`.
|
|
44
|
-
*/
|
|
45
|
-
this.refresh = new EventEmitter();
|
|
46
|
-
/**
|
|
47
|
-
* Output to emit clicks on delete button. The payload contains a `ButtonEvent`.
|
|
48
|
-
*/
|
|
49
|
-
this.delete = new EventEmitter();
|
|
50
|
-
/**
|
|
51
|
-
* Output to emit clicks on navigate button. The payload contains a `ButtonEvent`.
|
|
52
|
-
*/
|
|
53
|
-
this.navigate = new EventEmitter();
|
|
54
|
-
/**
|
|
55
|
-
* Output to emit clicks on download button. The payload contains a `ButtonEvent`.
|
|
56
|
-
*/
|
|
57
|
-
this.download = new EventEmitter();
|
|
58
|
-
/**
|
|
59
|
-
* Output to emit clicks on close button. The payload contains a `ButtonEvent`.
|
|
60
|
-
*/
|
|
61
|
-
this.closeButton = new EventEmitter();
|
|
62
|
-
/**
|
|
63
|
-
* Output to emit clicks on full-screen button. The payload contains a `ButtonEvent`.
|
|
64
|
-
*/
|
|
65
|
-
this.fullscreen = new EventEmitter();
|
|
66
|
-
/**
|
|
67
|
-
* Output to emit clicks on all custom buttons. The payload contains a `ButtonEvent`.
|
|
68
|
-
*/
|
|
69
|
-
this.customEmit = new EventEmitter();
|
|
70
|
-
/**
|
|
71
|
-
* Default buttons array for standard configuration
|
|
72
|
-
*/
|
|
73
|
-
this.defaultButtonsDefault = [KS_DEFAULT_BTN_CLOSE];
|
|
74
|
-
/**
|
|
75
|
-
* Default buttons array for simple configuration
|
|
76
|
-
*/
|
|
77
|
-
this.simpleButtonsDefault = [KS_DEFAULT_BTN_DOWNLOAD, ...this.defaultButtonsDefault];
|
|
78
|
-
/**
|
|
79
|
-
* Default buttons array for advanced configuration
|
|
80
|
-
*/
|
|
81
|
-
this.advancedButtonsDefault = [KS_DEFAULT_BTN_EXTURL, ...this.simpleButtonsDefault];
|
|
82
|
-
/**
|
|
83
|
-
* Default buttons array for full configuration
|
|
84
|
-
*/
|
|
85
|
-
this.fullButtonsDefault = [
|
|
86
|
-
KS_DEFAULT_BTN_FULL_SCREEN,
|
|
87
|
-
KS_DEFAULT_BTN_DELETE,
|
|
88
|
-
...this.advancedButtonsDefault
|
|
89
|
-
];
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Method ´ngOnInit´ to build `configButtons` applying a default value and also to
|
|
93
|
-
* init the `buttons` array.
|
|
94
|
-
* This is an Angular's lifecycle hook, so its called automatically by Angular itself.
|
|
95
|
-
* In particular, it's called only one time!!!
|
|
96
|
-
*/
|
|
97
|
-
ngOnInit() {
|
|
98
|
-
if (this.id === null || this.id === undefined) {
|
|
99
|
-
throw new Error('Internal library error - id must be defined');
|
|
100
|
-
}
|
|
101
|
-
const libConfig = this.configService.getConfig(this.id);
|
|
102
|
-
if (!libConfig || !libConfig.buttonsConfig) {
|
|
103
|
-
throw new Error('Internal library error - libConfig and buttonsConfig must be defined');
|
|
104
|
-
}
|
|
105
|
-
this.buttonsConfig = libConfig.buttonsConfig;
|
|
106
|
-
switch (this.buttonsConfig.strategy) {
|
|
107
|
-
case ButtonsStrategy.SIMPLE:
|
|
108
|
-
this.buttons = this.addButtonIds(this.simpleButtonsDefault);
|
|
109
|
-
break;
|
|
110
|
-
case ButtonsStrategy.ADVANCED:
|
|
111
|
-
this.buttons = this.addButtonIds(this.advancedButtonsDefault);
|
|
112
|
-
break;
|
|
113
|
-
case ButtonsStrategy.FULL:
|
|
114
|
-
this.buttons = this.addButtonIds(this.fullButtonsDefault);
|
|
115
|
-
break;
|
|
116
|
-
case ButtonsStrategy.CUSTOM:
|
|
117
|
-
this.buttons = this.addButtonIds(this.validateCustomButtons(this.buttonsConfig.buttons));
|
|
118
|
-
break;
|
|
119
|
-
case ButtonsStrategy.DEFAULT:
|
|
120
|
-
default:
|
|
121
|
-
this.buttons = this.addButtonIds(this.defaultButtonsDefault);
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Method called by events from both keyboard and mouse on a button.
|
|
127
|
-
* This will call a private method to trigger an output with the right payload.
|
|
128
|
-
* @param InternalButtonConfig button that called this method
|
|
129
|
-
* @param KeyboardEvent | MouseEvent event payload
|
|
130
|
-
* @param Action action that triggered the source event or `Action.CLICK` if not specified
|
|
131
|
-
* @throws an error if the button type is unknown
|
|
132
|
-
*/
|
|
133
|
-
onEvent(button, event, action = Action.CLICK) {
|
|
134
|
-
if (this.id === null || this.id === undefined) {
|
|
135
|
-
throw new Error('Internal library error - id must be defined');
|
|
136
|
-
}
|
|
137
|
-
if (!event) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
const dataToEmit = {
|
|
141
|
-
button,
|
|
142
|
-
// current image initialized as null
|
|
143
|
-
// (I'll fill this value inside the parent of this component
|
|
144
|
-
image: null,
|
|
145
|
-
action,
|
|
146
|
-
galleryId: this.id
|
|
147
|
-
};
|
|
148
|
-
switch (button.type) {
|
|
149
|
-
case ButtonType.DELETE:
|
|
150
|
-
this.triggerOnMouseAndKeyboard(this.delete, event, dataToEmit);
|
|
151
|
-
break;
|
|
152
|
-
case ButtonType.EXTURL:
|
|
153
|
-
if (!this.currentImage || !this.currentImage.modal || !this.currentImage.modal.extUrl) {
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
this.triggerOnMouseAndKeyboard(this.navigate, event, dataToEmit);
|
|
157
|
-
break;
|
|
158
|
-
case ButtonType.DOWNLOAD:
|
|
159
|
-
this.triggerOnMouseAndKeyboard(this.download, event, dataToEmit);
|
|
160
|
-
break;
|
|
161
|
-
case ButtonType.CLOSE:
|
|
162
|
-
this.triggerOnMouseAndKeyboard(this.closeButton, event, dataToEmit);
|
|
163
|
-
break;
|
|
164
|
-
case ButtonType.CUSTOM:
|
|
165
|
-
this.triggerOnMouseAndKeyboard(this.customEmit, event, dataToEmit);
|
|
166
|
-
break;
|
|
167
|
-
case ButtonType.FULLSCREEN:
|
|
168
|
-
this.triggerOnMouseAndKeyboard(this.fullscreen, event, dataToEmit);
|
|
169
|
-
break;
|
|
170
|
-
default:
|
|
171
|
-
throw new Error(`Unknown button's type into ButtonConfig`);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Method used in the template to track ids in ngFor.
|
|
176
|
-
* @param number index of the array
|
|
177
|
-
* @param Image item of the array
|
|
178
|
-
* @returns number the id of the item or undefined if the item is not valid
|
|
179
|
-
*/
|
|
180
|
-
trackById(index, item) {
|
|
181
|
-
return item ? item.id : undefined;
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Private method to emit an event using the specified output as an `EventEmitter`.
|
|
185
|
-
* @param EventEmitter<ButtonEvent> emitter is the output to emit the `ButtonEvent`
|
|
186
|
-
* @param KeyboardEvent | MouseEvent event is the source that triggered this method
|
|
187
|
-
* @param ButtonEvent dataToEmit payload to emit
|
|
188
|
-
*/
|
|
189
|
-
triggerOnMouseAndKeyboard(emitter, event, dataToEmit) {
|
|
190
|
-
if (!emitter) {
|
|
191
|
-
throw new Error(`UpperButtonsComponent unknown emitter in triggerOnMouseAndKeyboard`);
|
|
192
|
-
}
|
|
193
|
-
const result = super.handleImageEvent(event);
|
|
194
|
-
if (result === NEXT) {
|
|
195
|
-
emitter.emit(dataToEmit);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Private method to add ids to the array of buttons.
|
|
200
|
-
* It adds ids in a reverse way, to be sure that the last button will always have id = 0.
|
|
201
|
-
* This is really useful in unit testing to be sure that close button always have id = 0, download 1 and so on...
|
|
202
|
-
* It's totally transparent to the user.
|
|
203
|
-
* @param ButtonConfig[] buttons config array
|
|
204
|
-
* @returns ButtonConfig[] the input array with incremental numeric ids
|
|
205
|
-
*/
|
|
206
|
-
addButtonIds(buttons) {
|
|
207
|
-
return buttons.map((val, i) => Object.assign(val, { id: buttons.length - 1 - i }));
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Private method to validate custom buttons received as input.
|
|
211
|
-
* @param ButtonConfig[] buttons config array. [] by default.
|
|
212
|
-
* @returns ButtonConfig[] the same input buttons config array
|
|
213
|
-
* @throws an error is exists a button with an unknown type
|
|
214
|
-
*/
|
|
215
|
-
validateCustomButtons(buttons = []) {
|
|
216
|
-
buttons.forEach((val) => {
|
|
217
|
-
const indexOfButtonType = WHITELIST_BUTTON_TYPES.findIndex((type) => type === val.type);
|
|
218
|
-
if (indexOfButtonType === -1) {
|
|
219
|
-
throw new Error(`Unknown ButtonType. For custom types use ButtonType.CUSTOM`);
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
return buttons;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
UpperButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: UpperButtonsComponent, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
226
|
-
UpperButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: UpperButtonsComponent, selector: "ks-upper-buttons", inputs: { id: "id", currentImage: "currentImage" }, outputs: { refresh: "refresh", delete: "delete", navigate: "navigate", download: "download", closeButton: "closeButton", fullscreen: "fullscreen", customEmit: "customEmit" }, usesInheritance: true, ngImport: i0, template: "<header class=\"buttons-container\">\n\n <ng-container *ngIf=\"!buttonsConfig || buttonsConfig?.visible\">\n <a *ngFor=\"let btn of buttons; trackBy: trackById; let index = index\"\n class=\"upper-button\"\n ksSize [sizeConfig]=\"{width: btn.size?.width!, height: btn.size?.height!}\"\n [ngStyle]=\"{'font-size': btn.fontSize}\"\n [attr.aria-label]=\"btn.ariaLabel\"\n [tabIndex]=\"0\" role=\"button\"\n (click)=\"onEvent(btn, $event)\" (keyup)=\"onEvent(btn, $event)\">\n <div class=\"inside {{btn.className}}\" aria-hidden=\"true\" title=\"{{btn.title}}\"></div>\n </a>\n </ng-container>\n</header>\n", styles: [".buttons-container{display:flex;flex-direction:row;justify-content:flex-end}.buttons-container>.upper-button{align-self:center;margin-right:30px;margin-top:28px;font-size:50px;text-decoration:none;cursor:pointer;animation:animatezoom .6s;color:#fff}@keyframes animatezoom{0%{transform:scale(0)}to{transform:scale(1)}}.base-btn,.copy,.refresh-image,.close-image,.download-image,.ext-url-image,.delete-image,.fullscreen-image,.rotate-image{width:30px;height:30px;background-size:30px;opacity:.8;transition:all .5s}.base-btn:hover,.copy:hover,.refresh-image:hover,.close-image:hover,.download-image:hover,.ext-url-image:hover,.delete-image:hover,.fullscreen-image:hover,.rotate-image:hover{transform:scale(1.2)}.rotate-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDY0IDY0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA2NCA2NDsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCI+PGc+PGc+PHBhdGggZD0iTTMzLDJjNy43NDYsMCwxNS4wMjgsMy4wMTcsMjAuNTA1LDguNDk0YzEwLjEzOCwxMC4xMzcsMTEuMzEsMjYuMzk2LDIuNzQsMzcuODQ5TDUyLDUyLjU4OVY0NGgtMnYxMWwxLDFoMTF2LTJoLTguNTgyICAgIGw0LjI5Mi00LjI5M2wwLjA5Mi0wLjEwNmM5LjIxMS0xMi4yNDcsNy45NzItMjkuNjY3LTIuODgzLTQwLjUyMUM0OS4wNjQsMy4yMjUsNDEuMjgsMCwzMywwVjJ6IiBmaWxsPSIjRkZGRkZGIi8+PHBhdGggZD0iTTcuNzU1LDE1LjY1N0wxMiwxMS40MTFWMjBoMlY5bC0xLTFIMnYyaDguNTgyTDYuMjksMTQuMjkzbC0wLjA5MiwwLjEwNkMtMy4wMTMsMjYuNjQ2LTEuNzczLDQ0LjA2Niw5LjA4MSw1NC45MiAgICBDMTQuOTM2LDYwLjc3NSwyMi43Miw2NCwzMSw2NHYtMmMtNy43NDYsMC0xNS4wMjgtMy4wMTctMjAuNTA1LTguNDk0QzAuMzU3LDQzLjM2OS0wLjgxNCwyNy4xMSw3Ljc1NSwxNS42NTd6IiBmaWxsPSIjRkZGRkZGIi8+PC9nPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48L3N2Zz4=)}.fullscreen-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNTMgNTMiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUzIDUzOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48Zz48cGF0aCBkPSJNNTIuOTIzLDAuNjE4Yy0wLjEwMS0wLjI0NC0wLjI5Ni0wLjQzOS0wLjU0MS0wLjU0MUM1Mi4yNiwwLjAyNyw1Mi4xMywwLDUyLDBINDBjLTAuNTUyLDAtMSwwLjQ0OC0xLDFzMC40NDgsMSwxLDFoOS41ODYgICBMMzMuMjkzLDE4LjI5M2MtMC4zOTEsMC4zOTEtMC4zOTEsMS4wMjMsMCwxLjQxNEMzMy40ODgsMTkuOTAyLDMzLjc0NCwyMCwzNCwyMHMwLjUxMi0wLjA5OCwwLjcwNy0wLjI5M0w1MSwzLjQxNFYxMyAgIGMwLDAuNTUyLDAuNDQ4LDEsMSwxczEtMC40NDgsMS0xVjFDNTMsMC44Nyw1Mi45NzMsMC43NCw1Mi45MjMsMC42MTh6IiBmaWxsPSIjRkZGRkZGIi8+PHBhdGggZD0iTTE4LjI5MywzMy4yOTNMMiw0OS41ODZWNDBjMC0wLjU1Mi0wLjQ0OC0xLTEtMXMtMSwwLjQ0OC0xLDF2MTJjMCwwLjEzLDAuMDI3LDAuMjYsMC4wNzcsMC4zODIgICBjMC4xMDEsMC4yNDQsMC4yOTYsMC40MzksMC41NDEsMC41NDFDMC43NCw1Mi45NzMsMC44Nyw1MywxLDUzaDEyYzAuNTUyLDAsMS0wLjQ0OCwxLTFzLTAuNDQ4LTEtMS0xSDMuNDE0bDE2LjI5My0xNi4yOTMgICBjMC4zOTEtMC4zOTEsMC4zOTEtMS4wMjMsMC0xLjQxNFMxOC42ODQsMzIuOTAyLDE4LjI5MywzMy4yOTN6IiBmaWxsPSIjRkZGRkZGIi8+PHBhdGggZD0iTTEsMTRjMC41NTIsMCwxLTAuNDQ4LDEtMVYzLjQxNGwxNi4yOTIsMTYuMjkyYzAuMTk1LDAuMTk1LDAuNDUxLDAuMjkzLDAuNzA3LDAuMjkzczAuNTEyLTAuMDk4LDAuNzA3LTAuMjkzICAgYzAuMzkxLTAuMzkxLDAuMzkxLTEuMDIzLDAtMS40MTRMMy40MTQsMkgxM2MwLjU1MiwwLDEtMC40NDgsMS0xcy0wLjQ0OC0xLTEtMUgxQzAuODcsMCwwLjc0LDAuMDI3LDAuNjE4LDAuMDc3ICAgQzAuMzczLDAuMTc5LDAuMTc5LDAuMzczLDAuMDc3LDAuNjE4QzAuMDI3LDAuNzQsMCwwLjg3LDAsMXYxMkMwLDEzLjU1MiwwLjQ0OCwxNCwxLDE0eiIgZmlsbD0iI0ZGRkZGRiIvPjxwYXRoIGQ9Ik01MiwzOWMtMC41NTIsMC0xLDAuNDQ4LTEsMXY5LjU4NkwzNC43MDcsMzMuMjkyYy0wLjM5MS0wLjM5MS0xLjAyMy0wLjM5MS0xLjQxNCwwcy0wLjM5MSwxLjAyMywwLDEuNDE0TDQ5LjU4Niw1MUg0MCAgIGMtMC41NTIsMC0xLDAuNDQ4LTEsMXMwLjQ0OCwxLDEsMWgxMmMwLjEzLDAsMC4yNi0wLjAyNywwLjM4Mi0wLjA3N2MwLjI0NC0wLjEwMSwwLjQzOS0wLjI5NiwwLjU0MS0wLjU0MSAgIEM1Mi45NzMsNTIuMjYsNTMsNTIuMTMsNTMsNTJWNDBDNTMsMzkuNDQ4LDUyLjU1MiwzOSw1MiwzOXoiIGZpbGw9IiNGRkZGRkYiLz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+)}.delete-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4Ni40IDQ4Ni40IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0ODYuNCA0ODYuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCI+PGc+PGc+PHBhdGggZD0iTTQ0Niw3MEgzNDQuOFY1My41YzAtMjkuNS0yNC01My41LTUzLjUtNTMuNWgtOTYuMmMtMjkuNSwwLTUzLjUsMjQtNTMuNSw1My41VjcwSDQwLjRjLTcuNSwwLTEzLjUsNi0xMy41LDEzLjUgICAgUzMyLjksOTcsNDAuNCw5N2gyNC40djMxNy4yYzAsMzkuOCwzMi40LDcyLjIsNzIuMiw3Mi4yaDIxMi40YzM5LjgsMCw3Mi4yLTMyLjQsNzIuMi03Mi4yVjk3SDQ0NmM3LjUsMCwxMy41LTYsMTMuNS0xMy41ICAgIFM0NTMuNSw3MCw0NDYsNzB6IE0xNjguNiw1My41YzAtMTQuNiwxMS45LTI2LjUsMjYuNS0yNi41aDk2LjJjMTQuNiwwLDI2LjUsMTEuOSwyNi41LDI2LjVWNzBIMTY4LjZWNTMuNXogTTM5NC42LDQxNC4yICAgIGMwLDI0LjktMjAuMyw0NS4yLTQ1LjIsNDUuMkgxMzdjLTI0LjksMC00NS4yLTIwLjMtNDUuMi00NS4yVjk3aDMwMi45djMxNy4ySDM5NC42eiIgZmlsbD0iI0ZGRkZGRiIvPjxwYXRoIGQ9Ik0yNDMuMiw0MTFjNy41LDAsMTMuNS02LDEzLjUtMTMuNVYxNTguOWMwLTcuNS02LTEzLjUtMTMuNS0xMy41cy0xMy41LDYtMTMuNSwxMy41djIzOC41ICAgIEMyMjkuNyw0MDQuOSwyMzUuNyw0MTEsMjQzLjIsNDExeiIgZmlsbD0iI0ZGRkZGRiIvPjxwYXRoIGQ9Ik0xNTUuMSwzOTYuMWM3LjUsMCwxMy41LTYsMTMuNS0xMy41VjE3My43YzAtNy41LTYtMTMuNS0xMy41LTEzLjVzLTEzLjUsNi0xMy41LDEzLjV2MjA4LjkgICAgQzE0MS42LDM5MC4xLDE0Ny43LDM5Ni4xLDE1NS4xLDM5Ni4xeiIgZmlsbD0iI0ZGRkZGRiIvPjxwYXRoIGQ9Ik0zMzEuMywzOTYuMWM3LjUsMCwxMy41LTYsMTMuNS0xMy41VjE3My43YzAtNy41LTYtMTMuNS0xMy41LTEzLjVzLTEzLjUsNi0xMy41LDEzLjV2MjA4LjkgICAgQzMxNy44LDM5MC4xLDMyMy44LDM5Ni4xLDMzMS4zLDM5Ni4xeiIgZmlsbD0iI0ZGRkZGRiIvPjwvZz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+)}.ext-url-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiPjxnPjxnPjxnPjxwYXRoIGQ9Ik00ODAsMjg4djExMmMwLDQ0LjE4My0zNS44MTcsODAtODAsODBIMTEyYy00NC4xODMsMC04MC0zNS44MTctODAtODBWMTEyYzAtNDQuMTgzLDM1LjgxNy04MCw4MC04MGg5NlYwaC05NiAgICAgQzUwLjE0NCwwLDAsNTAuMTQ0LDAsMTEydjI4OGMwLDYxLjg1Niw1MC4xNDQsMTEyLDExMiwxMTJoMjg4YzYxLjg1NiwwLDExMi01MC4xNDQsMTEyLTExMlYyODhINDgweiIgZmlsbD0iI0ZGRkZGRiIvPjxwYXRoIGQ9Ik0xNzYsNDE2aDMyVjI4OGMwLTEyNS43NiwxMDcuNTItMTI4LDExMi0xMjhoMTA1LjQ0bC04NC42NCw4NC42NGwyMi41NiwyMi41NmwxMTItMTEyYzYuMjA0LTYuMjQxLDYuMjA0LTE2LjMxOSwwLTIyLjU2ICAgICBsLTExMi0xMTJsLTIyLjcyLDIyLjcybDg0LjgsODQuNjRIMzIwYy0xLjQ0LDAtMTQ0LDEuNzYtMTQ0LDE2MFY0MTZ6IiBmaWxsPSIjRkZGRkZGIi8+PC9nPjwvZz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+)}.download-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ3MS4yIDQ3MS4yIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NzEuMiA0NzEuMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCI+PGc+PGc+PHBhdGggZD0iTTQ1Ny43LDIzMC4xNWMtNy41LDAtMTMuNSw2LTEzLjUsMTMuNXYxMjIuOGMwLDMzLjQtMjcuMiw2MC41LTYwLjUsNjAuNUg4Ny41Yy0zMy40LDAtNjAuNS0yNy4yLTYwLjUtNjAuNXYtMTI0LjggICAgYzAtNy41LTYtMTMuNS0xMy41LTEzLjVzLTEzLjUsNi0xMy41LDEzLjV2MTI0LjhjMCw0OC4zLDM5LjMsODcuNSw4Ny41LDg3LjVoMjk2LjJjNDguMywwLDg3LjUtMzkuMyw4Ny41LTg3LjV2LTEyMi44ICAgIEM0NzEuMiwyMzYuMjUsNDY1LjIsMjMwLjE1LDQ1Ny43LDIzMC4xNXoiIGZpbGw9IiNGRkZGRkYiLz48cGF0aCBkPSJNMjI2LjEsMzQ2Ljc1YzIuNiwyLjYsNi4xLDQsOS41LDRzNi45LTEuMyw5LjUtNGw4NS44LTg1LjhjNS4zLTUuMyw1LjMtMTMuOCwwLTE5LjFjLTUuMy01LjMtMTMuOC01LjMtMTkuMSwwbC02Mi43LDYyLjggICAgVjMwLjc1YzAtNy41LTYtMTMuNS0xMy41LTEzLjVzLTEzLjUsNi0xMy41LDEzLjV2MjczLjlsLTYyLjgtNjIuOGMtNS4zLTUuMy0xMy44LTUuMy0xOS4xLDBjLTUuMyw1LjMtNS4zLDEzLjgsMCwxOS4xICAgIEwyMjYuMSwzNDYuNzV6IiBmaWxsPSIjRkZGRkZGIi8+PC9nPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48L3N2Zz4=)}.close-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ3NS4yIDQ3NS4yIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NzUuMiA0NzUuMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCI+PGc+PGc+PHBhdGggZD0iTTQwNS42LDY5LjZDMzYwLjcsMjQuNywzMDEuMSwwLDIzNy42LDBzLTEyMy4xLDI0LjctMTY4LDY5LjZTMCwxNzQuMSwwLDIzNy42czI0LjcsMTIzLjEsNjkuNiwxNjhzMTA0LjUsNjkuNiwxNjgsNjkuNiAgICBzMTIzLjEtMjQuNywxNjgtNjkuNnM2OS42LTEwNC41LDY5LjYtMTY4UzQ1MC41LDExNC41LDQwNS42LDY5LjZ6IE0zODYuNSwzODYuNWMtMzkuOCwzOS44LTkyLjcsNjEuNy0xNDguOSw2MS43ICAgIHMtMTA5LjEtMjEuOS0xNDguOS02MS43Yy04Mi4xLTgyLjEtODIuMS0yMTUuNywwLTI5Ny44QzEyOC41LDQ4LjksMTgxLjQsMjcsMjM3LjYsMjdzMTA5LjEsMjEuOSwxNDguOSw2MS43ICAgIEM0NjguNiwxNzAuOCw0NjguNiwzMDQuNCwzODYuNSwzODYuNXoiIGZpbGw9IiNGRkZGRkYiLz48cGF0aCBkPSJNMzQyLjMsMTMyLjljLTUuMy01LjMtMTMuOC01LjMtMTkuMSwwbC04NS42LDg1LjZMMTUyLDEzMi45Yy01LjMtNS4zLTEzLjgtNS4zLTE5LjEsMGMtNS4zLDUuMy01LjMsMTMuOCwwLDE5LjEgICAgbDg1LjYsODUuNmwtODUuNiw4NS42Yy01LjMsNS4zLTUuMywxMy44LDAsMTkuMWMyLjYsMi42LDYuMSw0LDkuNSw0czYuOS0xLjMsOS41LTRsODUuNi04NS42bDg1LjYsODUuNmMyLjYsMi42LDYuMSw0LDkuNSw0ICAgIGMzLjUsMCw2LjktMS4zLDkuNS00YzUuMy01LjMsNS4zLTEzLjgsMC0xOS4xbC04NS40LTg1LjZsODUuNi04NS42QzM0Ny42LDE0Ni43LDM0Ny42LDEzOC4yLDM0Mi4zLDEzMi45eiIgZmlsbD0iI0ZGRkZGRiIvPjwvZz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+)}.refresh-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4OS43MTEgNDg5LjcxMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDg5LjcxMSA0ODkuNzExOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48Zz48Zz48cGF0aCBkPSJNMTEyLjE1Niw5Ny4xMTFjNzIuMy02NS40LDE4MC41LTY2LjQsMjUzLjgtNi43bC01OC4xLDIuMmMtNy41LDAuMy0xMy4zLDYuNS0xMywxNGMwLjMsNy4zLDYuMywxMywxMy41LDEzICAgIGMwLjIsMCwwLjMsMCwwLjUsMGw4OS4yLTMuM2M3LjMtMC4zLDEzLTYuMiwxMy0xMy41di0xYzAtMC4yLDAtMC4zLDAtMC41di0wLjFsMCwwbC0zLjMtODguMmMtMC4zLTcuNS02LjYtMTMuMy0xNC0xMyAgICBjLTcuNSwwLjMtMTMuMyw2LjUtMTMsMTRsMi4xLDU1LjNjLTM2LjMtMjkuNy04MS00Ni45LTEyOC44LTQ5LjNjLTU5LjItMy0xMTYuMSwxNy4zLTE2MCw1Ny4xYy02MC40LDU0LjctODYsMTM3LjktNjYuOCwyMTcuMSAgICBjMS41LDYuMiw3LDEwLjMsMTMuMSwxMC4zYzEuMSwwLDIuMS0wLjEsMy4yLTAuNGM3LjItMS44LDExLjctOS4xLDkuOS0xNi4zQzM2LjY1NiwyMTguMjExLDU5LjA1NiwxNDUuMTExLDExMi4xNTYsOTcuMTExeiIgZmlsbD0iI0ZGRkZGRiIvPjxwYXRoIGQ9Ik00NjIuNDU2LDE5NS41MTFjLTEuOC03LjItOS4xLTExLjctMTYuMy05LjljLTcuMiwxLjgtMTEuNyw5LjEtOS45LDE2LjNjMTYuOSw2OS42LTUuNiwxNDIuNy01OC43LDE5MC43ICAgIGMtMzcuMywzMy43LTg0LjEsNTAuMy0xMzAuNyw1MC4zYy00NC41LDAtODguOS0xNS4xLTEyNC43LTQ0LjlsNTguOC01LjNjNy40LTAuNywxMi45LTcuMiwxMi4yLTE0LjdzLTcuMi0xMi45LTE0LjctMTIuMmwtODguOSw4ICAgIGMtNy40LDAuNy0xMi45LDcuMi0xMi4yLDE0LjdsOCw4OC45YzAuNiw3LDYuNSwxMi4zLDEzLjQsMTIuM2MwLjQsMCwwLjgsMCwxLjItMC4xYzcuNC0wLjcsMTIuOS03LjIsMTIuMi0xNC43bC00LjgtNTQuMSAgICBjMzYuMywyOS40LDgwLjgsNDYuNSwxMjguMyw0OC45YzMuOCwwLjIsNy42LDAuMywxMS4zLDAuM2M1NS4xLDAsMTA3LjUtMjAuMiwxNDguNy01Ny40ICAgIEM0NTYuMDU2LDM1Ny45MTEsNDgxLjY1NiwyNzQuODExLDQ2Mi40NTYsMTk1LjUxMXoiIGZpbGw9IiNGRkZGRkYiLz48L2c+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjwvc3ZnPg==)}.copy{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4OC4zIDQ4OC4zIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0ODguMyA0ODguMzsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCI+PGc+PGc+PHBhdGggZD0iTTMxNC4yNSw4NS40aC0yMjdjLTIxLjMsMC0zOC42LDE3LjMtMzguNiwzOC42djMyNS43YzAsMjEuMywxNy4zLDM4LjYsMzguNiwzOC42aDIyN2MyMS4zLDAsMzguNi0xNy4zLDM4LjYtMzguNlYxMjQgICAgQzM1Mi43NSwxMDIuNywzMzUuNDUsODUuNCwzMTQuMjUsODUuNHogTTMyNS43NSw0NDkuNmMwLDYuNC01LjIsMTEuNi0xMS42LDExLjZoLTIyN2MtNi40LDAtMTEuNi01LjItMTEuNi0xMS42VjEyNCAgICBjMC02LjQsNS4yLTExLjYsMTEuNi0xMS42aDIyN2M2LjQsMCwxMS42LDUuMiwxMS42LDExLjZWNDQ5LjZ6IiBmaWxsPSIjRkZGRkZGIi8+PHBhdGggZD0iTTQwMS4wNSwwaC0yMjdjLTIxLjMsMC0zOC42LDE3LjMtMzguNiwzOC42YzAsNy41LDYsMTMuNSwxMy41LDEzLjVzMTMuNS02LDEzLjUtMTMuNWMwLTYuNCw1LjItMTEuNiwxMS42LTExLjZoMjI3ICAgIGM2LjQsMCwxMS42LDUuMiwxMS42LDExLjZ2MzI1LjdjMCw2LjQtNS4yLDExLjYtMTEuNiwxMS42Yy03LjUsMC0xMy41LDYtMTMuNSwxMy41czYsMTMuNSwxMy41LDEzLjVjMjEuMywwLDM4LjYtMTcuMywzOC42LTM4LjYgICAgVjM4LjZDNDM5LjY1LDE3LjMsNDIyLjM1LDAsNDAxLjA1LDB6IiBmaWxsPSIjRkZGRkZGIi8+PC9nPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48L3N2Zz4=)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.SizeDirective, selector: "[ksSize]", inputs: ["sizeConfig"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
227
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: UpperButtonsComponent, decorators: [{
|
|
228
|
-
type: Component,
|
|
229
|
-
args: [{ selector: 'ks-upper-buttons', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"buttons-container\">\n\n <ng-container *ngIf=\"!buttonsConfig || buttonsConfig?.visible\">\n <a *ngFor=\"let btn of buttons; trackBy: trackById; let index = index\"\n class=\"upper-button\"\n ksSize [sizeConfig]=\"{width: btn.size?.width!, height: btn.size?.height!}\"\n [ngStyle]=\"{'font-size': btn.fontSize}\"\n [attr.aria-label]=\"btn.ariaLabel\"\n [tabIndex]=\"0\" role=\"button\"\n (click)=\"onEvent(btn, $event)\" (keyup)=\"onEvent(btn, $event)\">\n <div class=\"inside {{btn.className}}\" aria-hidden=\"true\" title=\"{{btn.title}}\"></div>\n </a>\n </ng-container>\n</header>\n", styles: [".buttons-container{display:flex;flex-direction:row;justify-content:flex-end}.buttons-container>.upper-button{align-self:center;margin-right:30px;margin-top:28px;font-size:50px;text-decoration:none;cursor:pointer;animation:animatezoom .6s;color:#fff}@keyframes animatezoom{0%{transform:scale(0)}to{transform:scale(1)}}.base-btn,.copy,.refresh-image,.close-image,.download-image,.ext-url-image,.delete-image,.fullscreen-image,.rotate-image{width:30px;height:30px;background-size:30px;opacity:.8;transition:all .5s}.base-btn:hover,.copy:hover,.refresh-image:hover,.close-image:hover,.download-image:hover,.ext-url-image:hover,.delete-image:hover,.fullscreen-image:hover,.rotate-image:hover{transform:scale(1.2)}.rotate-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDY0IDY0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA2NCA2NDsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCI+PGc+PGc+PHBhdGggZD0iTTMzLDJjNy43NDYsMCwxNS4wMjgsMy4wMTcsMjAuNTA1LDguNDk0YzEwLjEzOCwxMC4xMzcsMTEuMzEsMjYuMzk2LDIuNzQsMzcuODQ5TDUyLDUyLjU4OVY0NGgtMnYxMWwxLDFoMTF2LTJoLTguNTgyICAgIGw0LjI5Mi00LjI5M2wwLjA5Mi0wLjEwNmM5LjIxMS0xMi4yNDcsNy45NzItMjkuNjY3LTIuODgzLTQwLjUyMUM0OS4wNjQsMy4yMjUsNDEuMjgsMCwzMywwVjJ6IiBmaWxsPSIjRkZGRkZGIi8+PHBhdGggZD0iTTcuNzU1LDE1LjY1N0wxMiwxMS40MTFWMjBoMlY5bC0xLTFIMnYyaDguNTgyTDYuMjksMTQuMjkzbC0wLjA5MiwwLjEwNkMtMy4wMTMsMjYuNjQ2LTEuNzczLDQ0LjA2Niw5LjA4MSw1NC45MiAgICBDMTQuOTM2LDYwLjc3NSwyMi43Miw2NCwzMSw2NHYtMmMtNy43NDYsMC0xNS4wMjgtMy4wMTctMjAuNTA1LTguNDk0QzAuMzU3LDQzLjM2OS0wLjgxNCwyNy4xMSw3Ljc1NSwxNS42NTd6IiBmaWxsPSIjRkZGRkZGIi8+PC9nPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48L3N2Zz4=)}.fullscreen-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNTMgNTMiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUzIDUzOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48Zz48cGF0aCBkPSJNNTIuOTIzLDAuNjE4Yy0wLjEwMS0wLjI0NC0wLjI5Ni0wLjQzOS0wLjU0MS0wLjU0MUM1Mi4yNiwwLjAyNyw1Mi4xMywwLDUyLDBINDBjLTAuNTUyLDAtMSwwLjQ0OC0xLDFzMC40NDgsMSwxLDFoOS41ODYgICBMMzMuMjkzLDE4LjI5M2MtMC4zOTEsMC4zOTEtMC4zOTEsMS4wMjMsMCwxLjQxNEMzMy40ODgsMTkuOTAyLDMzLjc0NCwyMCwzNCwyMHMwLjUxMi0wLjA5OCwwLjcwNy0wLjI5M0w1MSwzLjQxNFYxMyAgIGMwLDAuNTUyLDAuNDQ4LDEsMSwxczEtMC40NDgsMS0xVjFDNTMsMC44Nyw1Mi45NzMsMC43NCw1Mi45MjMsMC42MTh6IiBmaWxsPSIjRkZGRkZGIi8+PHBhdGggZD0iTTE4LjI5MywzMy4yOTNMMiw0OS41ODZWNDBjMC0wLjU1Mi0wLjQ0OC0xLTEtMXMtMSwwLjQ0OC0xLDF2MTJjMCwwLjEzLDAuMDI3LDAuMjYsMC4wNzcsMC4zODIgICBjMC4xMDEsMC4yNDQsMC4yOTYsMC40MzksMC41NDEsMC41NDFDMC43NCw1Mi45NzMsMC44Nyw1MywxLDUzaDEyYzAuNTUyLDAsMS0wLjQ0OCwxLTFzLTAuNDQ4LTEtMS0xSDMuNDE0bDE2LjI5My0xNi4yOTMgICBjMC4zOTEtMC4zOTEsMC4zOTEtMS4wMjMsMC0xLjQxNFMxOC42ODQsMzIuOTAyLDE4LjI5MywzMy4yOTN6IiBmaWxsPSIjRkZGRkZGIi8+PHBhdGggZD0iTTEsMTRjMC41NTIsMCwxLTAuNDQ4LDEtMVYzLjQxNGwxNi4yOTIsMTYuMjkyYzAuMTk1LDAuMTk1LDAuNDUxLDAuMjkzLDAuNzA3LDAuMjkzczAuNTEyLTAuMDk4LDAuNzA3LTAuMjkzICAgYzAuMzkxLTAuMzkxLDAuMzkxLTEuMDIzLDAtMS40MTRMMy40MTQsMkgxM2MwLjU1MiwwLDEtMC40NDgsMS0xcy0wLjQ0OC0xLTEtMUgxQzAuODcsMCwwLjc0LDAuMDI3LDAuNjE4LDAuMDc3ICAgQzAuMzczLDAuMTc5LDAuMTc5LDAuMzczLDAuMDc3LDAuNjE4QzAuMDI3LDAuNzQsMCwwLjg3LDAsMXYxMkMwLDEzLjU1MiwwLjQ0OCwxNCwxLDE0eiIgZmlsbD0iI0ZGRkZGRiIvPjxwYXRoIGQ9Ik01MiwzOWMtMC41NTIsMC0xLDAuNDQ4LTEsMXY5LjU4NkwzNC43MDcsMzMuMjkyYy0wLjM5MS0wLjM5MS0xLjAyMy0wLjM5MS0xLjQxNCwwcy0wLjM5MSwxLjAyMywwLDEuNDE0TDQ5LjU4Niw1MUg0MCAgIGMtMC41NTIsMC0xLDAuNDQ4LTEsMXMwLjQ0OCwxLDEsMWgxMmMwLjEzLDAsMC4yNi0wLjAyNywwLjM4Mi0wLjA3N2MwLjI0NC0wLjEwMSwwLjQzOS0wLjI5NiwwLjU0MS0wLjU0MSAgIEM1Mi45NzMsNTIuMjYsNTMsNTIuMTMsNTMsNTJWNDBDNTMsMzkuNDQ4LDUyLjU1MiwzOSw1MiwzOXoiIGZpbGw9IiNGRkZGRkYiLz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+)}.delete-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4Ni40IDQ4Ni40IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0ODYuNCA0ODYuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCI+PGc+PGc+PHBhdGggZD0iTTQ0Niw3MEgzNDQuOFY1My41YzAtMjkuNS0yNC01My41LTUzLjUtNTMuNWgtOTYuMmMtMjkuNSwwLTUzLjUsMjQtNTMuNSw1My41VjcwSDQwLjRjLTcuNSwwLTEzLjUsNi0xMy41LDEzLjUgICAgUzMyLjksOTcsNDAuNCw5N2gyNC40djMxNy4yYzAsMzkuOCwzMi40LDcyLjIsNzIuMiw3Mi4yaDIxMi40YzM5LjgsMCw3Mi4yLTMyLjQsNzIuMi03Mi4yVjk3SDQ0NmM3LjUsMCwxMy41LTYsMTMuNS0xMy41ICAgIFM0NTMuNSw3MCw0NDYsNzB6IE0xNjguNiw1My41YzAtMTQuNiwxMS45LTI2LjUsMjYuNS0yNi41aDk2LjJjMTQuNiwwLDI2LjUsMTEuOSwyNi41LDI2LjVWNzBIMTY4LjZWNTMuNXogTTM5NC42LDQxNC4yICAgIGMwLDI0LjktMjAuMyw0NS4yLTQ1LjIsNDUuMkgxMzdjLTI0LjksMC00NS4yLTIwLjMtNDUuMi00NS4yVjk3aDMwMi45djMxNy4ySDM5NC42eiIgZmlsbD0iI0ZGRkZGRiIvPjxwYXRoIGQ9Ik0yNDMuMiw0MTFjNy41LDAsMTMuNS02LDEzLjUtMTMuNVYxNTguOWMwLTcuNS02LTEzLjUtMTMuNS0xMy41cy0xMy41LDYtMTMuNSwxMy41djIzOC41ICAgIEMyMjkuNyw0MDQuOSwyMzUuNyw0MTEsMjQzLjIsNDExeiIgZmlsbD0iI0ZGRkZGRiIvPjxwYXRoIGQ9Ik0xNTUuMSwzOTYuMWM3LjUsMCwxMy41LTYsMTMuNS0xMy41VjE3My43YzAtNy41LTYtMTMuNS0xMy41LTEzLjVzLTEzLjUsNi0xMy41LDEzLjV2MjA4LjkgICAgQzE0MS42LDM5MC4xLDE0Ny43LDM5Ni4xLDE1NS4xLDM5Ni4xeiIgZmlsbD0iI0ZGRkZGRiIvPjxwYXRoIGQ9Ik0zMzEuMywzOTYuMWM3LjUsMCwxMy41LTYsMTMuNS0xMy41VjE3My43YzAtNy41LTYtMTMuNS0xMy41LTEzLjVzLTEzLjUsNi0xMy41LDEzLjV2MjA4LjkgICAgQzMxNy44LDM5MC4xLDMyMy44LDM5Ni4xLDMzMS4zLDM5Ni4xeiIgZmlsbD0iI0ZGRkZGRiIvPjwvZz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+)}.ext-url-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiPjxnPjxnPjxnPjxwYXRoIGQ9Ik00ODAsMjg4djExMmMwLDQ0LjE4My0zNS44MTcsODAtODAsODBIMTEyYy00NC4xODMsMC04MC0zNS44MTctODAtODBWMTEyYzAtNDQuMTgzLDM1LjgxNy04MCw4MC04MGg5NlYwaC05NiAgICAgQzUwLjE0NCwwLDAsNTAuMTQ0LDAsMTEydjI4OGMwLDYxLjg1Niw1MC4xNDQsMTEyLDExMiwxMTJoMjg4YzYxLjg1NiwwLDExMi01MC4xNDQsMTEyLTExMlYyODhINDgweiIgZmlsbD0iI0ZGRkZGRiIvPjxwYXRoIGQ9Ik0xNzYsNDE2aDMyVjI4OGMwLTEyNS43NiwxMDcuNTItMTI4LDExMi0xMjhoMTA1LjQ0bC04NC42NCw4NC42NGwyMi41NiwyMi41NmwxMTItMTEyYzYuMjA0LTYuMjQxLDYuMjA0LTE2LjMxOSwwLTIyLjU2ICAgICBsLTExMi0xMTJsLTIyLjcyLDIyLjcybDg0LjgsODQuNjRIMzIwYy0xLjQ0LDAtMTQ0LDEuNzYtMTQ0LDE2MFY0MTZ6IiBmaWxsPSIjRkZGRkZGIi8+PC9nPjwvZz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+)}.download-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ3MS4yIDQ3MS4yIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NzEuMiA0NzEuMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCI+PGc+PGc+PHBhdGggZD0iTTQ1Ny43LDIzMC4xNWMtNy41LDAtMTMuNSw2LTEzLjUsMTMuNXYxMjIuOGMwLDMzLjQtMjcuMiw2MC41LTYwLjUsNjAuNUg4Ny41Yy0zMy40LDAtNjAuNS0yNy4yLTYwLjUtNjAuNXYtMTI0LjggICAgYzAtNy41LTYtMTMuNS0xMy41LTEzLjVzLTEzLjUsNi0xMy41LDEzLjV2MTI0LjhjMCw0OC4zLDM5LjMsODcuNSw4Ny41LDg3LjVoMjk2LjJjNDguMywwLDg3LjUtMzkuMyw4Ny41LTg3LjV2LTEyMi44ICAgIEM0NzEuMiwyMzYuMjUsNDY1LjIsMjMwLjE1LDQ1Ny43LDIzMC4xNXoiIGZpbGw9IiNGRkZGRkYiLz48cGF0aCBkPSJNMjI2LjEsMzQ2Ljc1YzIuNiwyLjYsNi4xLDQsOS41LDRzNi45LTEuMyw5LjUtNGw4NS44LTg1LjhjNS4zLTUuMyw1LjMtMTMuOCwwLTE5LjFjLTUuMy01LjMtMTMuOC01LjMtMTkuMSwwbC02Mi43LDYyLjggICAgVjMwLjc1YzAtNy41LTYtMTMuNS0xMy41LTEzLjVzLTEzLjUsNi0xMy41LDEzLjV2MjczLjlsLTYyLjgtNjIuOGMtNS4zLTUuMy0xMy44LTUuMy0xOS4xLDBjLTUuMyw1LjMtNS4zLDEzLjgsMCwxOS4xICAgIEwyMjYuMSwzNDYuNzV6IiBmaWxsPSIjRkZGRkZGIi8+PC9nPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48L3N2Zz4=)}.close-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ3NS4yIDQ3NS4yIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NzUuMiA0NzUuMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCI+PGc+PGc+PHBhdGggZD0iTTQwNS42LDY5LjZDMzYwLjcsMjQuNywzMDEuMSwwLDIzNy42LDBzLTEyMy4xLDI0LjctMTY4LDY5LjZTMCwxNzQuMSwwLDIzNy42czI0LjcsMTIzLjEsNjkuNiwxNjhzMTA0LjUsNjkuNiwxNjgsNjkuNiAgICBzMTIzLjEtMjQuNywxNjgtNjkuNnM2OS42LTEwNC41LDY5LjYtMTY4UzQ1MC41LDExNC41LDQwNS42LDY5LjZ6IE0zODYuNSwzODYuNWMtMzkuOCwzOS44LTkyLjcsNjEuNy0xNDguOSw2MS43ICAgIHMtMTA5LjEtMjEuOS0xNDguOS02MS43Yy04Mi4xLTgyLjEtODIuMS0yMTUuNywwLTI5Ny44QzEyOC41LDQ4LjksMTgxLjQsMjcsMjM3LjYsMjdzMTA5LjEsMjEuOSwxNDguOSw2MS43ICAgIEM0NjguNiwxNzAuOCw0NjguNiwzMDQuNCwzODYuNSwzODYuNXoiIGZpbGw9IiNGRkZGRkYiLz48cGF0aCBkPSJNMzQyLjMsMTMyLjljLTUuMy01LjMtMTMuOC01LjMtMTkuMSwwbC04NS42LDg1LjZMMTUyLDEzMi45Yy01LjMtNS4zLTEzLjgtNS4zLTE5LjEsMGMtNS4zLDUuMy01LjMsMTMuOCwwLDE5LjEgICAgbDg1LjYsODUuNmwtODUuNiw4NS42Yy01LjMsNS4zLTUuMywxMy44LDAsMTkuMWMyLjYsMi42LDYuMSw0LDkuNSw0czYuOS0xLjMsOS41LTRsODUuNi04NS42bDg1LjYsODUuNmMyLjYsMi42LDYuMSw0LDkuNSw0ICAgIGMzLjUsMCw2LjktMS4zLDkuNS00YzUuMy01LjMsNS4zLTEzLjgsMC0xOS4xbC04NS40LTg1LjZsODUuNi04NS42QzM0Ny42LDE0Ni43LDM0Ny42LDEzOC4yLDM0Mi4zLDEzMi45eiIgZmlsbD0iI0ZGRkZGRiIvPjwvZz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+)}.refresh-image{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4OS43MTEgNDg5LjcxMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDg5LjcxMSA0ODkuNzExOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4Ij48Zz48Zz48cGF0aCBkPSJNMTEyLjE1Niw5Ny4xMTFjNzIuMy02NS40LDE4MC41LTY2LjQsMjUzLjgtNi43bC01OC4xLDIuMmMtNy41LDAuMy0xMy4zLDYuNS0xMywxNGMwLjMsNy4zLDYuMywxMywxMy41LDEzICAgIGMwLjIsMCwwLjMsMCwwLjUsMGw4OS4yLTMuM2M3LjMtMC4zLDEzLTYuMiwxMy0xMy41di0xYzAtMC4yLDAtMC4zLDAtMC41di0wLjFsMCwwbC0zLjMtODguMmMtMC4zLTcuNS02LjYtMTMuMy0xNC0xMyAgICBjLTcuNSwwLjMtMTMuMyw2LjUtMTMsMTRsMi4xLDU1LjNjLTM2LjMtMjkuNy04MS00Ni45LTEyOC44LTQ5LjNjLTU5LjItMy0xMTYuMSwxNy4zLTE2MCw1Ny4xYy02MC40LDU0LjctODYsMTM3LjktNjYuOCwyMTcuMSAgICBjMS41LDYuMiw3LDEwLjMsMTMuMSwxMC4zYzEuMSwwLDIuMS0wLjEsMy4yLTAuNGM3LjItMS44LDExLjctOS4xLDkuOS0xNi4zQzM2LjY1NiwyMTguMjExLDU5LjA1NiwxNDUuMTExLDExMi4xNTYsOTcuMTExeiIgZmlsbD0iI0ZGRkZGRiIvPjxwYXRoIGQ9Ik00NjIuNDU2LDE5NS41MTFjLTEuOC03LjItOS4xLTExLjctMTYuMy05LjljLTcuMiwxLjgtMTEuNyw5LjEtOS45LDE2LjNjMTYuOSw2OS42LTUuNiwxNDIuNy01OC43LDE5MC43ICAgIGMtMzcuMywzMy43LTg0LjEsNTAuMy0xMzAuNyw1MC4zYy00NC41LDAtODguOS0xNS4xLTEyNC43LTQ0LjlsNTguOC01LjNjNy40LTAuNywxMi45LTcuMiwxMi4yLTE0LjdzLTcuMi0xMi45LTE0LjctMTIuMmwtODguOSw4ICAgIGMtNy40LDAuNy0xMi45LDcuMi0xMi4yLDE0LjdsOCw4OC45YzAuNiw3LDYuNSwxMi4zLDEzLjQsMTIuM2MwLjQsMCwwLjgsMCwxLjItMC4xYzcuNC0wLjcsMTIuOS03LjIsMTIuMi0xNC43bC00LjgtNTQuMSAgICBjMzYuMywyOS40LDgwLjgsNDYuNSwxMjguMyw0OC45YzMuOCwwLjIsNy42LDAuMywxMS4zLDAuM2M1NS4xLDAsMTA3LjUtMjAuMiwxNDguNy01Ny40ICAgIEM0NTYuMDU2LDM1Ny45MTEsNDgxLjY1NiwyNzQuODExLDQ2Mi40NTYsMTk1LjUxMXoiIGZpbGw9IiNGRkZGRkYiLz48L2c+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjwvc3ZnPg==)}.copy{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4OC4zIDQ4OC4zIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0ODguMyA0ODguMzsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSI1MTJweCIgaGVpZ2h0PSI1MTJweCI+PGc+PGc+PHBhdGggZD0iTTMxNC4yNSw4NS40aC0yMjdjLTIxLjMsMC0zOC42LDE3LjMtMzguNiwzOC42djMyNS43YzAsMjEuMywxNy4zLDM4LjYsMzguNiwzOC42aDIyN2MyMS4zLDAsMzguNi0xNy4zLDM4LjYtMzguNlYxMjQgICAgQzM1Mi43NSwxMDIuNywzMzUuNDUsODUuNCwzMTQuMjUsODUuNHogTTMyNS43NSw0NDkuNmMwLDYuNC01LjIsMTEuNi0xMS42LDExLjZoLTIyN2MtNi40LDAtMTEuNi01LjItMTEuNi0xMS42VjEyNCAgICBjMC02LjQsNS4yLTExLjYsMTEuNi0xMS42aDIyN2M2LjQsMCwxMS42LDUuMiwxMS42LDExLjZWNDQ5LjZ6IiBmaWxsPSIjRkZGRkZGIi8+PHBhdGggZD0iTTQwMS4wNSwwaC0yMjdjLTIxLjMsMC0zOC42LDE3LjMtMzguNiwzOC42YzAsNy41LDYsMTMuNSwxMy41LDEzLjVzMTMuNS02LDEzLjUtMTMuNWMwLTYuNCw1LjItMTEuNiwxMS42LTExLjZoMjI3ICAgIGM2LjQsMCwxMS42LDUuMiwxMS42LDExLjZ2MzI1LjdjMCw2LjQtNS4yLDExLjYtMTEuNiwxMS42Yy03LjUsMC0xMy41LDYtMTMuNSwxMy41czYsMTMuNSwxMy41LDEzLjVjMjEuMywwLDM4LjYtMTcuMywzOC42LTM4LjYgICAgVjM4LjZDNDM5LjY1LDE3LjMsNDIyLjM1LDAsNDAxLjA1LDB6IiBmaWxsPSIjRkZGRkZGIi8+PC9nPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48L3N2Zz4=)}\n"] }]
|
|
230
|
-
}], ctorParameters: function () { return [{ type: i1.ConfigService }]; }, propDecorators: { id: [{
|
|
231
|
-
type: Input
|
|
232
|
-
}], currentImage: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], refresh: [{
|
|
235
|
-
type: Output
|
|
236
|
-
}], delete: [{
|
|
237
|
-
type: Output
|
|
238
|
-
}], navigate: [{
|
|
239
|
-
type: Output
|
|
240
|
-
}], download: [{
|
|
241
|
-
type: Output
|
|
242
|
-
}], closeButton: [{
|
|
243
|
-
type: Output
|
|
244
|
-
}], fullscreen: [{
|
|
245
|
-
type: Output
|
|
246
|
-
}], customEmit: [{
|
|
247
|
-
type: Output
|
|
248
|
-
}] } });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBwZXItYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9zcmMvbGliL2NvbXBvbmVudHMvdXBwZXItYnV0dG9ucy91cHBlci1idXR0b25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvY29tcG9uZW50cy91cHBlci1idXR0b25zL3VwcGVyLWJ1dHRvbnMuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpELE9BQU8sRUFBNEMsZUFBZSxFQUFFLFVBQVUsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXJKLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzNCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7OztBQVduRDs7O0dBR0c7QUFPSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsbUJBQW1CO0lBaUY1RCxZQUFvQixhQUE0QjtRQUM5QyxLQUFLLEVBQUUsQ0FBQztRQURVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBcEVoRDs7V0FFRztRQUVILFlBQU8sR0FBOEIsSUFBSSxZQUFZLEVBQWUs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cEMsTUFBTSxpQkFBaUIsR0FBVyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVHLElBQUksaUJBQWlCLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQzthQUMvRTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7a0hBL05VLHFCQUFxQjtzR0FBckIscUJBQXFCLGtUQzdEbEMsNm9CQWNBOzJGRCtDYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07b0dBUS9DLEVBQUU7c0JBREQsS0FBSztnQkFNTixZQUFZO3NCQURYLEtBQUs7Z0JBT04sT0FBTztzQkFETixNQUFNO2dCQU1QLE1BQU07c0JBREwsTUFBTTtnQkFNUCxRQUFRO3NCQURQLE1BQU07Z0JBTVAsUUFBUTtzQkFEUCxNQUFNO2dCQU1QLFdBQVc7c0JBRFYsTUFBTTtnQkFNUCxVQUFVO3NCQURULE1BQU07Z0JBTVAsVUFBVTtzQkFEVCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcblxuIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFN0ZWZhbm8gQ2FwcGEgKEtzODkpXG5cbiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cbiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTiBJTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWNjZXNzaWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2FjY2Vzc2libGUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvYWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgSW1hZ2UgfSBmcm9tICcuLi8uLi9tb2RlbC9pbWFnZS5jbGFzcyc7XG5pbXBvcnQgeyBCdXR0b25Db25maWcsIEJ1dHRvbkV2ZW50LCBCdXR0b25zQ29uZmlnLCBCdXR0b25zU3RyYXRlZ3ksIEJ1dHRvblR5cGUsIFdISVRFTElTVF9CVVRUT05fVFlQRVMgfSBmcm9tICcuLi8uLi9tb2RlbC9idXR0b25zLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5pbXBvcnQge1xuICBLU19ERUZBVUxUX0JUTl9DTE9TRSxcbiAgS1NfREVGQVVMVF9CVE5fREVMRVRFLFxuICBLU19ERUZBVUxUX0JUTl9ET1dOTE9BRCxcbiAgS1NfREVGQVVMVF9CVE5fRVhUVVJMLFxuICBLU19ERUZBVUxUX0JUTl9GVUxMX1NDUkVFTlxufSBmcm9tICcuL3VwcGVyLWJ1dHRvbnMtZGVmYXVsdCc7XG5cbmltcG9ydCB7IE5FWFQgfSBmcm9tICcuLi8uLi91dGlscy91c2VyLWlucHV0LnV0aWwnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IExpYkNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2xpYi1jb25maWcuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBgQnV0dG9uQ29uZmlnYCB3aXRoIGFuIG9wdGlvbmFsIGBpZGAgZmllbGQsIHVzZWQgYnkgdHJhY2tJZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbEJ1dHRvbkNvbmZpZyBleHRlbmRzIEJ1dHRvbkNvbmZpZyB7XG4gIGlkPzogbnVtYmVyOyAvLyB1c2VmdWwgb25seSBmb3IgdHJhY2tCeUlkLCBub3QgbmVlZGVkIGJ5IHVzZXJzXG59XG5cbi8qKlxuICogQ29tcG9uZW50IHdpdGggYWxsIHVwcGVyIGJ1dHRvbnMuXG4gKiBBbHNvIGl0IGVtaXRzIGNsaWNrIGV2ZW50cyBhcyBvdXRwdXRzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrcy11cHBlci1idXR0b25zJyxcbiAgc3R5bGVVcmxzOiBbJ3VwcGVyLWJ1dHRvbnMuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJ3VwcGVyLWJ1dHRvbnMuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVwcGVyQnV0dG9uc0NvbXBvbmVudCBleHRlbmRzIEFjY2Vzc2libGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogVW5pcXVlIGlkICg+PTApIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoaXMgbGlicmFyeS4gVGhpcyBpcyByZXF1aXJlZCB3aGVuIHlvdSBhcmUgdXNpbmdcbiAgICogdGhlIHNlcnZpY2UgdG8gY2FsbCBtb2RhbCBnYWxsZXJ5LlxuICAgKi9cbiAgQElucHV0KClcbiAgaWQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBJbWFnZWAgdGhhdCByZXByZXNlbnQgdGhlIHZpc2libGUgaW1hZ2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBjdXJyZW50SW1hZ2U6IEltYWdlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBPdXRwdXQgdG8gZW1pdCBjbGlja3Mgb24gcmVmcmVzaCBidXR0b24uIFRoZSBwYXlsb2FkIGNvbnRhaW5zIGEgYEJ1dHRvbkV2ZW50YC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICByZWZyZXNoOiBFdmVudEVtaXR0ZXI8QnV0dG9uRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4oKTtcbiAgLyoqXG4gICAqIE91dHB1dCB0byBlbWl0IGNsaWNrcyBvbiBkZWxldGUgYnV0dG9uLiBUaGUgcGF5bG9hZCBjb250YWlucyBhIGBCdXR0b25FdmVudGAuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZGVsZXRlOiBFdmVudEVtaXR0ZXI8QnV0dG9uRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4oKTtcbiAgLyoqXG4gICAqIE91dHB1dCB0byBlbWl0IGNsaWNrcyBvbiBuYXZpZ2F0ZSBidXR0b24uIFRoZSBwYXlsb2FkIGNvbnRhaW5zIGEgYEJ1dHRvbkV2ZW50YC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBuYXZpZ2F0ZTogRXZlbnRFbWl0dGVyPEJ1dHRvbkV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QnV0dG9uRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBPdXRwdXQgdG8gZW1pdCBjbGlja3Mgb24gZG93bmxvYWQgYnV0dG9uLiBUaGUgcGF5bG9hZCBjb250YWlucyBhIGBCdXR0b25FdmVudGAuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZG93bmxvYWQ6IEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkV2ZW50PigpO1xuICAvKipcbiAgICogT3V0cHV0IHRvIGVtaXQgY2xpY2tzIG9uIGNsb3NlIGJ1dHRvbi4gVGhlIHBheWxvYWQgY29udGFpbnMgYSBgQnV0dG9uRXZlbnRgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGNsb3NlQnV0dG9uOiBFdmVudEVtaXR0ZXI8QnV0dG9uRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4oKTtcbiAgLyoqXG4gICAqIE91dHB1dCB0byBlbWl0IGNsaWNrcyBvbiBmdWxsLXNjcmVlbiBidXR0b24uIFRoZSBwYXlsb2FkIGNvbnRhaW5zIGEgYEJ1dHRvbkV2ZW50YC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBmdWxsc2NyZWVuOiBFdmVudEVtaXR0ZXI8QnV0dG9uRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4oKTtcbiAgLyoqXG4gICAqIE91dHB1dCB0byBlbWl0IGNsaWNrcyBvbiBhbGwgY3VzdG9tIGJ1dHRvbnMuIFRoZSBwYXlsb2FkIGNvbnRhaW5zIGEgYEJ1dHRvbkV2ZW50YC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBjdXN0b21FbWl0OiBFdmVudEVtaXR0ZXI8QnV0dG9uRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4oKTtcblxuICAvKipcbiAgICogT2JqZWN0IG9mIHR5cGUgYEJ1dHRvbnNDb25maWdgIHRvIGluaXQgVXBwZXJCdXR0b25zQ29tcG9uZW50J3MgZmVhdHVyZXMuXG4gICAqIEZvciBpbnN0YW5jZSwgaXQgY29udGFpbnMgYW4gYXJyYXkgb2YgYnV0dG9ucy5cbiAgICovXG4gIGJ1dHRvbnNDb25maWc6IEJ1dHRvbnNDb25maWcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBgSW50ZXJuYWxCdXR0b25Db25maWdgIGV4cG9zZWQgdG8gdGhlIHRlbXBsYXRlLiBUaGlzIGZpZWxkIGlzIGluaXRpYWxpemVkXG4gICAqIGFwcGx5aW5nIHRyYW5zZm9ybWF0aW9ucywgZGVmYXVsdCB2YWx1ZXMgYW5kIHNvIG9uIHRvIHRoZSBpbnB1dCBvZiB0aGUgc2FtZSB0eXBlLlxuICAgKi9cbiAgYnV0dG9uczogSW50ZXJuYWxCdXR0b25Db25maWdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRGVmYXVsdCBidXR0b25zIGFycmF5IGZvciBzdGFuZGFyZCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcml2YXRlIGRlZmF1bHRCdXR0b25zRGVmYXVsdDogQnV0dG9uQ29uZmlnW10gPSBbS1NfREVGQVVMVF9CVE5fQ0xPU0VdO1xuICAvKipcbiAgICogRGVmYXVsdCBidXR0b25zIGFycmF5IGZvciBzaW1wbGUgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBzaW1wbGVCdXR0b25zRGVmYXVsdDogQnV0dG9uQ29uZmlnW10gPSBbS1NfREVGQVVMVF9CVE5fRE9XTkxPQUQsIC4uLnRoaXMuZGVmYXVsdEJ1dHRvbnNEZWZhdWx0XTtcbiAgLyoqXG4gICAqIERlZmF1bHQgYnV0dG9ucyBhcnJheSBmb3IgYWR2YW5jZWQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBhZHZhbmNlZEJ1dHRvbnNEZWZhdWx0OiBCdXR0b25Db25maWdbXSA9IFtLU19ERUZBVUxUX0JUTl9FWFRVUkwsIC4uLnRoaXMuc2ltcGxlQnV0dG9uc0RlZmF1bHRdO1xuICAvKipcbiAgICogRGVmYXVsdCBidXR0b25zIGFycmF5IGZvciBmdWxsIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByaXZhdGUgZnVsbEJ1dHRvbnNEZWZhdWx0OiBCdXR0b25Db25maWdbXSA9IFtcbiAgICBLU19ERUZBVUxUX0JUTl9GVUxMX1NDUkVFTixcbiAgICBLU19ERUZBVUxUX0JUTl9ERUxFVEUsXG4gICAgLi4udGhpcy5hZHZhbmNlZEJ1dHRvbnNEZWZhdWx0XG4gIF07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgwrRuZ09uSW5pdMK0IHRvIGJ1aWxkIGBjb25maWdCdXR0b25zYCBhcHBseWluZyBhIGRlZmF1bHQgdmFsdWUgYW5kIGFsc28gdG9cbiAgICogaW5pdCB0aGUgYGJ1dHRvbnNgIGFycmF5LlxuICAgKiBUaGlzIGlzIGFuIEFuZ3VsYXIncyBsaWZlY3ljbGUgaG9vaywgc28gaXRzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGJ5IEFuZ3VsYXIgaXRzZWxmLlxuICAgKiBJbiBwYXJ0aWN1bGFyLCBpdCdzIGNhbGxlZCBvbmx5IG9uZSB0aW1lISEhXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pZCA9PT0gbnVsbCB8fCB0aGlzLmlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGlkIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBjb25zdCBsaWJDb25maWc6IExpYkNvbmZpZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcodGhpcy5pZCk7XG4gICAgaWYgKCFsaWJDb25maWcgfHwgIWxpYkNvbmZpZy5idXR0b25zQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBsaWJDb25maWcgYW5kIGJ1dHRvbnNDb25maWcgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuICAgIHRoaXMuYnV0dG9uc0NvbmZpZyA9IGxpYkNvbmZpZy5idXR0b25zQ29uZmlnO1xuICAgIHN3aXRjaCAodGhpcy5idXR0b25zQ29uZmlnLnN0cmF0ZWd5KSB7XG4gICAgICBjYXNlIEJ1dHRvbnNTdHJhdGVneS5TSU1QTEU6XG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IHRoaXMuYWRkQnV0dG9uSWRzKHRoaXMuc2ltcGxlQnV0dG9uc0RlZmF1bHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uc1N0cmF0ZWd5LkFEVkFOQ0VEOlxuICAgICAgICB0aGlzLmJ1dHRvbnMgPSB0aGlzLmFkZEJ1dHRvbklkcyh0aGlzLmFkdmFuY2VkQnV0dG9uc0RlZmF1bHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uc1N0cmF0ZWd5LkZVTEw6XG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IHRoaXMuYWRkQnV0dG9uSWRzKHRoaXMuZnVsbEJ1dHRvbnNEZWZhdWx0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvbnNTdHJhdGVneS5DVVNUT006XG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IHRoaXMuYWRkQnV0dG9uSWRzKHRoaXMudmFsaWRhdGVDdXN0b21CdXR0b25zKHRoaXMuYnV0dG9uc0NvbmZpZy5idXR0b25zKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25zU3RyYXRlZ3kuREVGQVVMVDpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IHRoaXMuYWRkQnV0dG9uSWRzKHRoaXMuZGVmYXVsdEJ1dHRvbnNEZWZhdWx0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgYnkgZXZlbnRzIGZyb20gYm90aCBrZXlib2FyZCBhbmQgbW91c2Ugb24gYSBidXR0b24uXG4gICAqIFRoaXMgd2lsbCBjYWxsIGEgcHJpdmF0ZSBtZXRob2QgdG8gdHJpZ2dlciBhbiBvdXRwdXQgd2l0aCB0aGUgcmlnaHQgcGF5bG9hZC5cbiAgICogQHBhcmFtIEludGVybmFsQnV0dG9uQ29uZmlnIGJ1dHRvbiB0aGF0IGNhbGxlZCB0aGlzIG1ldGhvZFxuICAgKiBAcGFyYW0gS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQgZXZlbnQgcGF5bG9hZFxuICAgKiBAcGFyYW0gQWN0aW9uIGFjdGlvbiB0aGF0IHRyaWdnZXJlZCB0aGUgc291cmNlIGV2ZW50IG9yIGBBY3Rpb24uQ0xJQ0tgIGlmIG5vdCBzcGVjaWZpZWRcbiAgICogQHRocm93cyBhbiBlcnJvciBpZiB0aGUgYnV0dG9uIHR5cGUgaXMgdW5rbm93blxuICAgKi9cbiAgb25FdmVudChidXR0b246IEludGVybmFsQnV0dG9uQ29uZmlnLCBldmVudDogS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQsIGFjdGlvbjogQWN0aW9uID0gQWN0aW9uLkNMSUNLKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaWQgPT09IG51bGwgfHwgdGhpcy5pZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludGVybmFsIGxpYnJhcnkgZXJyb3IgLSBpZCBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkYXRhVG9FbWl0OiBCdXR0b25FdmVudCA9IHtcbiAgICAgIGJ1dHRvbixcbiAgICAgIC8vIGN1cnJlbnQgaW1hZ2UgaW5pdGlhbGl6ZWQgYXMgbnVsbFxuICAgICAgLy8gKEknbGwgZmlsbCB0aGlzIHZhbHVlIGluc2lkZSB0aGUgcGFyZW50IG9mIHRoaXMgY29tcG9uZW50XG4gICAgICBpbWFnZTogbnVsbCxcbiAgICAgIGFjdGlvbixcbiAgICAgIGdhbGxlcnlJZDogdGhpcy5pZFxuICAgIH07XG4gICAgc3dpdGNoIChidXR0b24udHlwZSkge1xuICAgICAgY2FzZSBCdXR0b25UeXBlLkRFTEVURTpcbiAgICAgICAgdGhpcy50cmlnZ2VyT25Nb3VzZUFuZEtleWJvYXJkKHRoaXMuZGVsZXRlLCBldmVudCwgZGF0YVRvRW1pdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25UeXBlLkVYVFVSTDpcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRJbWFnZSB8fCAhdGhpcy5jdXJyZW50SW1hZ2UubW9kYWwgfHwgIXRoaXMuY3VycmVudEltYWdlLm1vZGFsLmV4dFVybCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRyaWdnZXJPbk1vdXNlQW5kS2V5Ym9hcmQodGhpcy5uYXZpZ2F0ZSwgZXZlbnQsIGRhdGFUb0VtaXQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uVHlwZS5ET1dOTE9BRDpcbiAgICAgICAgdGhpcy50cmlnZ2VyT25Nb3VzZUFuZEtleWJvYXJkKHRoaXMuZG93bmxvYWQsIGV2ZW50LCBkYXRhVG9FbWl0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvblR5cGUuQ0xPU0U6XG4gICAgICAgIHRoaXMudHJpZ2dlck9uTW91c2VBbmRLZXlib2FyZCh0aGlzLmNsb3NlQnV0dG9uLCBldmVudCwgZGF0YVRvRW1pdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25UeXBlLkNVU1RPTTpcbiAgICAgICAgdGhpcy50cmlnZ2VyT25Nb3VzZUFuZEtleWJvYXJkKHRoaXMuY3VzdG9tRW1pdCwgZXZlbnQsIGRhdGFUb0VtaXQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uVHlwZS5GVUxMU0NSRUVOOlxuICAgICAgICB0aGlzLnRyaWdnZXJPbk1vdXNlQW5kS2V5Ym9hcmQodGhpcy5mdWxsc2NyZWVuLCBldmVudCwgZGF0YVRvRW1pdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGJ1dHRvbidzIHR5cGUgaW50byBCdXR0b25Db25maWdgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgaW4gdGhlIHRlbXBsYXRlIHRvIHRyYWNrIGlkcyBpbiBuZ0Zvci5cbiAgICogQHBhcmFtIG51bWJlciBpbmRleCBvZiB0aGUgYXJyYXlcbiAgICogQHBhcmFtIEltYWdlIGl0ZW0gb2YgdGhlIGFycmF5XG4gICAqIEByZXR1cm5zIG51bWJlciB0aGUgaWQgb2YgdGhlIGl0ZW0gb3IgdW5kZWZpbmVkIGlmIHRoZSBpdGVtIGlzIG5vdCB2YWxpZFxuICAgKi9cbiAgdHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIGl0ZW06IEludGVybmFsQnV0dG9uQ29uZmlnKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0uaWQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogUHJpdmF0ZSBtZXRob2QgdG8gZW1pdCBhbiBldmVudCB1c2luZyB0aGUgc3BlY2lmaWVkIG91dHB1dCBhcyBhbiBgRXZlbnRFbWl0dGVyYC5cbiAgICogQHBhcmFtIEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4gZW1pdHRlciBpcyB0aGUgb3V0cHV0IHRvIGVtaXQgdGhlIGBCdXR0b25FdmVudGBcbiAgICogQHBhcmFtIEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50IGV2ZW50IGlzIHRoZSBzb3VyY2UgdGhhdCB0cmlnZ2VyZWQgdGhpcyBtZXRob2RcbiAgICogQHBhcmFtIEJ1dHRvbkV2ZW50IGRhdGFUb0VtaXQgcGF5bG9hZCB0byBlbWl0XG4gICAqL1xuICBwcml2YXRlIHRyaWdnZXJPbk1vdXNlQW5kS2V5Ym9hcmQoZW1pdHRlcjogRXZlbnRFbWl0dGVyPEJ1dHRvbkV2ZW50PiwgZXZlbnQ6IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50LCBkYXRhVG9FbWl0OiBCdXR0b25FdmVudCk6IHZvaWQge1xuICAgIGlmICghZW1pdHRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVcHBlckJ1dHRvbnNDb21wb25lbnQgdW5rbm93biBlbWl0dGVyIGluIHRyaWdnZXJPbk1vdXNlQW5kS2V5Ym9hcmRgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IG51bWJlciA9IHN1cGVyLmhhbmRsZUltYWdlRXZlbnQoZXZlbnQpO1xuICAgIGlmIChyZXN1bHQgPT09IE5FWFQpIHtcbiAgICAgIGVtaXR0ZXIuZW1pdChkYXRhVG9FbWl0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJpdmF0ZSBtZXRob2QgdG8gYWRkIGlkcyB0byB0aGUgYXJyYXkgb2YgYnV0dG9ucy5cbiAgICogSXQgYWRkcyBpZHMgaW4gYSByZXZlcnNlIHdheSwgdG8gYmUgc3VyZSB0aGF0IHRoZSBsYXN0IGJ1dHRvbiB3aWxsIGFsd2F5cyBoYXZlIGlkID0gMC5cbiAgICogVGhpcyBpcyByZWFsbHkgdXNlZnVsIGluIHVuaXQgdGVzdGluZyB0byBiZSBzdXJlIHRoYXQgY2xvc2UgYnV0dG9uIGFsd2F5cyBoYXZlIGlkID0gMCwgZG93bmxvYWQgMSBhbmQgc28gb24uLi5cbiAgICogSXQncyB0b3RhbGx5IHRyYW5zcGFyZW50IHRvIHRoZSB1c2VyLlxuICAgKiBAcGFyYW0gQnV0dG9uQ29uZmlnW10gYnV0dG9ucyBjb25maWcgYXJyYXlcbiAgICogQHJldHVybnMgQnV0dG9uQ29uZmlnW10gdGhlIGlucHV0IGFycmF5IHdpdGggaW5jcmVtZW50YWwgbnVtZXJpYyBpZHNcbiAgICovXG4gIHByaXZhdGUgYWRkQnV0dG9uSWRzKGJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdKTogQnV0dG9uQ29uZmlnW10ge1xuICAgIHJldHVybiBidXR0b25zLm1hcCgodmFsOiBCdXR0b25Db25maWcsIGk6IG51bWJlcikgPT4gT2JqZWN0LmFzc2lnbih2YWwsIHsgaWQ6IGJ1dHRvbnMubGVuZ3RoIC0gMSAtIGkgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgbWV0aG9kIHRvIHZhbGlkYXRlIGN1c3RvbSBidXR0b25zIHJlY2VpdmVkIGFzIGlucHV0LlxuICAgKiBAcGFyYW0gQnV0dG9uQ29uZmlnW10gYnV0dG9ucyBjb25maWcgYXJyYXkuIFtdIGJ5IGRlZmF1bHQuXG4gICAqIEByZXR1cm5zIEJ1dHRvbkNvbmZpZ1tdIHRoZSBzYW1lIGlucHV0IGJ1dHRvbnMgY29uZmlnIGFycmF5XG4gICAqIEB0aHJvd3MgYW4gZXJyb3IgaXMgZXhpc3RzIGEgYnV0dG9uIHdpdGggYW4gdW5rbm93biB0eXBlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQ3VzdG9tQnV0dG9ucyhidXR0b25zOiBCdXR0b25Db25maWdbXSA9IFtdKTogQnV0dG9uQ29uZmlnW10ge1xuICAgIGJ1dHRvbnMuZm9yRWFjaCgodmFsOiBCdXR0b25Db25maWcpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4T2ZCdXR0b25UeXBlOiBudW1iZXIgPSBXSElURUxJU1RfQlVUVE9OX1RZUEVTLmZpbmRJbmRleCgodHlwZTogQnV0dG9uVHlwZSkgPT4gdHlwZSA9PT0gdmFsLnR5cGUpO1xuICAgICAgaWYgKGluZGV4T2ZCdXR0b25UeXBlID09PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gQnV0dG9uVHlwZS4gRm9yIGN1c3RvbSB0eXBlcyB1c2UgQnV0dG9uVHlwZS5DVVNUT01gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYnV0dG9ucztcbiAgfVxufVxuIiwiPGhlYWRlciBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyXCI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFidXR0b25zQ29uZmlnIHx8IGJ1dHRvbnNDb25maWc/LnZpc2libGVcIj5cbiAgICA8YSAqbmdGb3I9XCJsZXQgYnRuIG9mIGJ1dHRvbnM7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgIGNsYXNzPVwidXBwZXItYnV0dG9uXCJcbiAgICAgICBrc1NpemUgW3NpemVDb25maWddPVwie3dpZHRoOiBidG4uc2l6ZT8ud2lkdGghLCBoZWlnaHQ6IGJ0bi5zaXplPy5oZWlnaHQhfVwiXG4gICAgICAgW25nU3R5bGVdPVwieydmb250LXNpemUnOiBidG4uZm9udFNpemV9XCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ0bi5hcmlhTGFiZWxcIlxuICAgICAgIFt0YWJJbmRleF09XCIwXCIgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgKGNsaWNrKT1cIm9uRXZlbnQoYnRuLCAkZXZlbnQpXCIgKGtleXVwKT1cIm9uRXZlbnQoYnRuLCAkZXZlbnQpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5zaWRlIHt7YnRuLmNsYXNzTmFtZX19XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJ7e2J0bi50aXRsZX19XCI+PC9kaXY+XG4gICAgPC9hPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvaGVhZGVyPlxuIl19
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
The MIT License (MIT)
|
|
3
|
-
|
|
4
|
-
Copyright (C) 2017-2022 Stefano Cappa (Ks89)
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
in the Software without restriction, including without limitation the rights
|
|
9
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
furnished to do so, subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
import { Directive, Input } from '@angular/core';
|
|
25
|
-
import * as i0 from "@angular/core";
|
|
26
|
-
/**
|
|
27
|
-
* Directive to add an image to an `<a>` tag with some additional custom properties.
|
|
28
|
-
*/
|
|
29
|
-
export class ATagBgImageDirective {
|
|
30
|
-
constructor(renderer, el) {
|
|
31
|
-
this.renderer = renderer;
|
|
32
|
-
this.el = el;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Method ´ngOnInit´ to apply the style of this directive.
|
|
36
|
-
* This is an Angular's lifecycle hook, so its called automatically by Angular itself.
|
|
37
|
-
* In particular, it's called only one time!!!
|
|
38
|
-
*/
|
|
39
|
-
ngOnInit() {
|
|
40
|
-
this.applyStyle();
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Method ´ngOnChanges´ to apply the style of this directive.
|
|
44
|
-
* This is an Angular's lifecycle hook, so its called automatically by Angular itself.
|
|
45
|
-
* In particular, it's called when any data-bound property of a directive changes!!!
|
|
46
|
-
*/
|
|
47
|
-
ngOnChanges() {
|
|
48
|
-
this.applyStyle();
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Private method to add an image as background of an `<a>` tag.
|
|
52
|
-
*/
|
|
53
|
-
applyStyle() {
|
|
54
|
-
if (!this.image || (!this.image.plain && !this.image.modal)) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const imgPath = this.image.plain && this.image.plain.img ? this.image.plain.img : this.image.modal.img;
|
|
58
|
-
let bg = `url("${imgPath}") ${this.style}`;
|
|
59
|
-
const fallbackImgPath = this.image.plain && this.image.plain.fallbackImg ? this.image.plain.fallbackImg : this.image.modal.fallbackImg;
|
|
60
|
-
if (!!fallbackImgPath) {
|
|
61
|
-
bg += `, url("${fallbackImgPath}") ${this.style}`;
|
|
62
|
-
}
|
|
63
|
-
this.renderer.setStyle(this.el.nativeElement, 'background', bg);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
ATagBgImageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: ATagBgImageDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
67
|
-
ATagBgImageDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0", type: ATagBgImageDirective, selector: "[ksATagBgImage]", inputs: { image: "image", style: "style" }, usesOnChanges: true, ngImport: i0 });
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: ATagBgImageDirective, decorators: [{
|
|
69
|
-
type: Directive,
|
|
70
|
-
args: [{
|
|
71
|
-
selector: '[ksATagBgImage]'
|
|
72
|
-
}]
|
|
73
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { image: [{
|
|
74
|
-
type: Input
|
|
75
|
-
}], style: [{
|
|
76
|
-
type: Input
|
|
77
|
-
}] } });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYS10YWctYmctaW1hZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3M4OS9hbmd1bGFyLW1vZGFsLWdhbGxlcnkvc3JjL2xpYi9kaXJlY3RpdmVzL2EtdGFnLWJnLWltYWdlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQzs7QUFLM0Y7O0dBRUc7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBYS9CLFlBQW9CLFFBQW1CLEVBQVUsRUFBYztRQUEzQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUFHLENBQUM7SUFFbkU7Ozs7T0FJRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNLLFVBQVU7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzRCxPQUFPO1NBQ1I7UUFFRCxNQUFNLE9BQU8sR0FBNkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUNqSSxJQUFJLEVBQUUsR0FBRyxRQUFRLE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFM0MsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDakgsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFFO1lBQ3JCLEVBQUUsSUFBSSxVQUFVLGVBQWUsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbkQ7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7aUhBbkRVLG9CQUFvQjtxR0FBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBSGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7eUhBTUMsS0FBSztzQkFESixLQUFLO2dCQU9OLEtBQUs7c0JBREosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMiBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSW1hZ2UgfSBmcm9tICcuLi9tb2RlbC9pbWFnZS5jbGFzcyc7XG5pbXBvcnQgeyBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgdG8gYWRkIGFuIGltYWdlIHRvIGFuIGA8YT5gIHRhZyB3aXRoIHNvbWUgYWRkaXRpb25hbCBjdXN0b20gcHJvcGVydGllcy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tzQVRhZ0JnSW1hZ2VdJ1xufSlcbmV4cG9ydCBjbGFzcyBBVGFnQmdJbWFnZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIE9iamVjdCBvZiB0eXBlIGBJbWFnZWAgdGhhdCByZXByZXNlbnRzIHRoZSBpbWFnZSB0byBhZGQgdG8gdGhlIGA8YT5gIHRhZy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGltYWdlOiBJbWFnZSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgc3R5bGUgdG8gY3VzdG9taXplIHRoZSBiYWNrZ3JvdW5kIGF0dHJpYnV0ZS5cbiAgICogRW1wdHkgc3RyaW5nIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBASW5wdXQoKVxuICBzdHlsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cblxuICAvKipcbiAgICogTWV0aG9kIMK0bmdPbkluaXTCtCB0byBhcHBseSB0aGUgc3R5bGUgb2YgdGhpcyBkaXJlY3RpdmUuXG4gICAqIFRoaXMgaXMgYW4gQW5ndWxhcidzIGxpZmVjeWNsZSBob29rLCBzbyBpdHMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkgQW5ndWxhciBpdHNlbGYuXG4gICAqIEluIHBhcnRpY3VsYXIsIGl0J3MgY2FsbGVkIG9ubHkgb25lIHRpbWUhISFcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHlTdHlsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCDCtG5nT25DaGFuZ2VzwrQgdG8gYXBwbHkgdGhlIHN0eWxlIG9mIHRoaXMgZGlyZWN0aXZlLlxuICAgKiBUaGlzIGlzIGFuIEFuZ3VsYXIncyBsaWZlY3ljbGUgaG9vaywgc28gaXRzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGJ5IEFuZ3VsYXIgaXRzZWxmLlxuICAgKiBJbiBwYXJ0aWN1bGFyLCBpdCdzIGNhbGxlZCB3aGVuIGFueSBkYXRhLWJvdW5kIHByb3BlcnR5IG9mIGEgZGlyZWN0aXZlIGNoYW5nZXMhISFcbiAgICovXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHlTdHlsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgbWV0aG9kIHRvIGFkZCBhbiBpbWFnZSBhcyBiYWNrZ3JvdW5kIG9mIGFuIGA8YT5gIHRhZy5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlTdHlsZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW1hZ2UgfHwgKCF0aGlzLmltYWdlLnBsYWluICYmICF0aGlzLmltYWdlLm1vZGFsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGltZ1BhdGg6IHN0cmluZyB8IFNhZmVSZXNvdXJjZVVybCA9IHRoaXMuaW1hZ2UucGxhaW4gJiYgdGhpcy5pbWFnZS5wbGFpbi5pbWcgPyB0aGlzLmltYWdlLnBsYWluLmltZyA6IHRoaXMuaW1hZ2UubW9kYWwuaW1nO1xuICAgIGxldCBiZyA9IGB1cmwoXCIke2ltZ1BhdGh9XCIpICR7dGhpcy5zdHlsZX1gO1xuXG4gICAgY29uc3QgZmFsbGJhY2tJbWdQYXRoOiBzdHJpbmcgfCBTYWZlUmVzb3VyY2VVcmwgfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy5pbWFnZS5wbGFpbiAmJiB0aGlzLmltYWdlLnBsYWluLmZhbGxiYWNrSW1nID8gdGhpcy5pbWFnZS5wbGFpbi5mYWxsYmFja0ltZyA6IHRoaXMuaW1hZ2UubW9kYWwuZmFsbGJhY2tJbWc7XG4gICAgaWYgKCEhZmFsbGJhY2tJbWdQYXRoKSB7XG4gICAgICBiZyArPSBgLCB1cmwoXCIke2ZhbGxiYWNrSW1nUGF0aH1cIikgJHt0aGlzLnN0eWxlfWA7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdiYWNrZ3JvdW5kJywgYmcpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
The MIT License (MIT)
|
|
3
|
-
|
|
4
|
-
Copyright (C) 2017-2022 Stefano Cappa (Ks89)
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
in the Software without restriction, including without limitation the rights
|
|
9
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
furnished to do so, subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
25
|
-
import * as i0 from "@angular/core";
|
|
26
|
-
/**
|
|
27
|
-
* Directive to close the modal gallery clicking on the semi-transparent background.
|
|
28
|
-
* In fact, it listens for a click on all elements that aren't 'inside' and it emits
|
|
29
|
-
* an event using `@Output clickOutside`.
|
|
30
|
-
*/
|
|
31
|
-
export class ClickOutsideDirective {
|
|
32
|
-
constructor() {
|
|
33
|
-
/**
|
|
34
|
-
* Output to emit an event if the clicked element class doesn't contain 'inside' or it is 'hidden'. The payload is a boolean.
|
|
35
|
-
*/
|
|
36
|
-
this.clickOutside = new EventEmitter();
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Method called by Angular itself every click thanks to `@HostListener`.
|
|
40
|
-
* @param MouseEvent event payload received evey click
|
|
41
|
-
*/
|
|
42
|
-
onClick(event) {
|
|
43
|
-
event.stopPropagation();
|
|
44
|
-
// tslint:disable-next-line:no-any
|
|
45
|
-
const target = event.target;
|
|
46
|
-
if (!this.clickOutsideEnable || !target) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
let isInside = false;
|
|
50
|
-
let isHidden = false;
|
|
51
|
-
if (typeof target.className !== 'string') {
|
|
52
|
-
// it happens with @fortawesome/fontawesome 5
|
|
53
|
-
// for some reasons className is an object with 2 empty properties inside
|
|
54
|
-
isInside = true;
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
// in normal scenarios, use classname, because it's a simple string
|
|
58
|
-
isInside = target.className && target.className.includes('inside');
|
|
59
|
-
isHidden = target.className.includes('hidden');
|
|
60
|
-
}
|
|
61
|
-
// if inside => don't close modal gallery
|
|
62
|
-
// if hidden => close modal gallery
|
|
63
|
-
/*
|
|
64
|
-
i i' h | close
|
|
65
|
-
0 1 0 | 1 => close modal gallery
|
|
66
|
-
0 1 1 | 1 => close modal gallery
|
|
67
|
-
1 0 0 | 0
|
|
68
|
-
1 0 1 | 1 => close modal gallery
|
|
69
|
-
*/
|
|
70
|
-
if (!isInside || isHidden) {
|
|
71
|
-
// close modal gallery
|
|
72
|
-
this.clickOutside.emit(true);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: ClickOutsideDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
77
|
-
ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0", type: ClickOutsideDirective, selector: "[ksClickOutside]", inputs: { clickOutsideEnable: "clickOutsideEnable" }, outputs: { clickOutside: "clickOutside" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 });
|
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: ClickOutsideDirective, decorators: [{
|
|
79
|
-
type: Directive,
|
|
80
|
-
args: [{
|
|
81
|
-
selector: '[ksClickOutside]'
|
|
82
|
-
}]
|
|
83
|
-
}], propDecorators: { clickOutsideEnable: [{
|
|
84
|
-
type: Input
|
|
85
|
-
}], clickOutside: [{
|
|
86
|
-
type: Output
|
|
87
|
-
}], onClick: [{
|
|
88
|
-
type: HostListener,
|
|
89
|
-
args: ['click', ['$event']]
|
|
90
|
-
}] } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFckY7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFIbEM7UUFTRTs7V0FFRztRQUVILGlCQUFZLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7S0E0Q25FO0lBMUNDOzs7T0FHRztJQUVILE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsa0NBQWtDO1FBQ2xDLE1BQU0sTUFBTSxHQUFRLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFFakMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN2QyxPQUFPO1NBQ1I7UUFFRCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXJCLElBQUksT0FBTyxNQUFNLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUN4Qyw2Q0FBNkM7WUFDN0MseUVBQXlFO1lBQ3pFLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDakI7YUFBTTtZQUNMLG1FQUFtRTtZQUNuRSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuRSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDaEQ7UUFFRCx5Q0FBeUM7UUFDekMsbUNBQW1DO1FBQ25DOzs7Ozs7V0FNRztRQUNILElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFO1lBQ3pCLHNCQUFzQjtZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7O2tIQXJEVSxxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCOzhCQU1DLGtCQUFrQjtzQkFEakIsS0FBSztnQkFNTixZQUFZO3NCQURYLE1BQU07Z0JBUVAsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMiBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgdG8gY2xvc2UgdGhlIG1vZGFsIGdhbGxlcnkgY2xpY2tpbmcgb24gdGhlIHNlbWktdHJhbnNwYXJlbnQgYmFja2dyb3VuZC5cbiAqIEluIGZhY3QsIGl0IGxpc3RlbnMgZm9yIGEgY2xpY2sgb24gYWxsIGVsZW1lbnRzIHRoYXQgYXJlbid0ICdpbnNpZGUnIGFuZCBpdCBlbWl0c1xuICogYW4gZXZlbnQgdXNpbmcgYEBPdXRwdXQgY2xpY2tPdXRzaWRlYC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tzQ2xpY2tPdXRzaWRlXSdcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIHtcbiAgLyoqXG4gICAqIEJvb2xlYW4gdG8gZW5hYmxlIHRoaXMgZGlyZWN0aXZlLlxuICAgKi9cbiAgQElucHV0KClcbiAgY2xpY2tPdXRzaWRlRW5hYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogT3V0cHV0IHRvIGVtaXQgYW4gZXZlbnQgaWYgdGhlIGNsaWNrZWQgZWxlbWVudCBjbGFzcyBkb2Vzbid0IGNvbnRhaW4gJ2luc2lkZScgb3IgaXQgaXMgJ2hpZGRlbicuIFRoZSBwYXlsb2FkIGlzIGEgYm9vbGVhbi5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBjbGlja091dHNpZGU6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSBBbmd1bGFyIGl0c2VsZiBldmVyeSBjbGljayB0aGFua3MgdG8gYEBIb3N0TGlzdGVuZXJgLlxuICAgKiBAcGFyYW0gTW91c2VFdmVudCBldmVudCBwYXlsb2FkIHJlY2VpdmVkIGV2ZXkgY2xpY2tcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgIGNvbnN0IHRhcmdldDogYW55ID0gZXZlbnQudGFyZ2V0O1xuXG4gICAgaWYgKCF0aGlzLmNsaWNrT3V0c2lkZUVuYWJsZSB8fCAhdGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGlzSW5zaWRlID0gZmFsc2U7XG4gICAgbGV0IGlzSGlkZGVuID0gZmFsc2U7XG5cbiAgICBpZiAodHlwZW9mIHRhcmdldC5jbGFzc05hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBpdCBoYXBwZW5zIHdpdGggQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lIDVcbiAgICAgIC8vIGZvciBzb21lIHJlYXNvbnMgY2xhc3NOYW1lIGlzIGFuIG9iamVjdCB3aXRoIDIgZW1wdHkgcHJvcGVydGllcyBpbnNpZGVcbiAgICAgIGlzSW5zaWRlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW4gbm9ybWFsIHNjZW5hcmlvcywgdXNlIGNsYXNzbmFtZSwgYmVjYXVzZSBpdCdzIGEgc2ltcGxlIHN0cmluZ1xuICAgICAgaXNJbnNpZGUgPSB0YXJnZXQuY2xhc3NOYW1lICYmIHRhcmdldC5jbGFzc05hbWUuaW5jbHVkZXMoJ2luc2lkZScpO1xuICAgICAgaXNIaWRkZW4gPSB0YXJnZXQuY2xhc3NOYW1lLmluY2x1ZGVzKCdoaWRkZW4nKTtcbiAgICB9XG5cbiAgICAvLyBpZiBpbnNpZGUgPT4gZG9uJ3QgY2xvc2UgbW9kYWwgZ2FsbGVyeVxuICAgIC8vIGlmIGhpZGRlbiA9PiBjbG9zZSBtb2RhbCBnYWxsZXJ5XG4gICAgLypcbiAgICAgICAgaSBpJyBoIHwgY2xvc2VcbiAgICAgICAgMCAxICAwIHwgICAxID0+IGNsb3NlIG1vZGFsIGdhbGxlcnlcbiAgICAgICAgMCAxICAxIHwgICAxID0+IGNsb3NlIG1vZGFsIGdhbGxlcnlcbiAgICAgICAgMSAwICAwIHwgICAwXG4gICAgICAgIDEgMCAgMSB8ICAgMSA9PiBjbG9zZSBtb2RhbCBnYWxsZXJ5XG4gICAgICovXG4gICAgaWYgKCFpc0luc2lkZSB8fCBpc0hpZGRlbikge1xuICAgICAgLy8gY2xvc2UgbW9kYWwgZ2FsbGVyeVxuICAgICAgdGhpcy5jbGlja091dHNpZGUuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|