@ks89/angular-modal-gallery 8.0.1 → 9.1.0-beta.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.
Files changed (102) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/CONTRIBUTING.md +3 -3
  3. package/README.md +22 -26
  4. package/{esm2015/ks89-angular-modal-gallery.js → esm2020/ks89-angular-modal-gallery.mjs} +0 -0
  5. package/{esm2015/lib/components/accessibility-default.js → esm2020/lib/components/accessibility-default.mjs} +0 -0
  6. package/{esm2015/lib/components/accessible.component.js → esm2020/lib/components/accessible.component.mjs} +6 -6
  7. package/esm2020/lib/components/carousel/carousel-previews/carousel-previews.component.mjs +462 -0
  8. package/esm2020/lib/components/carousel/carousel.component.mjs +747 -0
  9. package/{esm2015/lib/components/components.js → esm2020/lib/components/components.mjs} +0 -0
  10. package/esm2020/lib/components/current-image/current-image.component.mjs +616 -0
  11. package/esm2020/lib/components/current-image/loading-spinner/loading-spinner.component.mjs +80 -0
  12. package/esm2020/lib/components/dots/dots.component.mjs +127 -0
  13. package/{esm2015/lib/components/modal-gallery/modal-gallery-ref.js → esm2020/lib/components/modal-gallery/modal-gallery-ref.mjs} +0 -0
  14. package/esm2020/lib/components/modal-gallery/modal-gallery.component.mjs +524 -0
  15. package/esm2020/lib/components/modal-gallery/modal-gallery.service.mjs +187 -0
  16. package/{esm2015/lib/components/modal-gallery/modal-gallery.tokens.js → esm2020/lib/components/modal-gallery/modal-gallery.tokens.mjs} +0 -0
  17. package/esm2020/lib/components/plain-gallery/plain-gallery.component.mjs +249 -0
  18. package/esm2020/lib/components/previews/previews.component.mjs +337 -0
  19. package/{esm2015/lib/components/upper-buttons/upper-buttons-default.js → esm2020/lib/components/upper-buttons/upper-buttons-default.mjs} +0 -0
  20. package/esm2020/lib/components/upper-buttons/upper-buttons.component.mjs +249 -0
  21. package/{esm2015/lib/directives/a-tag-bg-image.directive.js → esm2020/lib/directives/a-tag-bg-image.directive.mjs} +3 -3
  22. package/{esm2015/lib/directives/click-outside.directive.js → esm2020/lib/directives/click-outside.directive.mjs} +3 -3
  23. package/{esm2015/lib/directives/description.directive.js → esm2020/lib/directives/description.directive.mjs} +3 -3
  24. package/{esm2015/lib/directives/direction.directive.js → esm2020/lib/directives/direction.directive.mjs} +3 -3
  25. package/{esm2015/lib/directives/directives.js → esm2020/lib/directives/directives.mjs} +0 -0
  26. package/{esm2015/lib/directives/fallback-image.directive.js → esm2020/lib/directives/fallback-image.directive.mjs} +3 -3
  27. package/{esm2015/lib/directives/keyboard-navigation.directive.js → esm2020/lib/directives/keyboard-navigation.directive.mjs} +5 -5
  28. package/{esm2015/lib/directives/margin.directive.js → esm2020/lib/directives/margin.directive.mjs} +3 -3
  29. package/{esm2015/lib/directives/max-size.directive.js → esm2020/lib/directives/max-size.directive.mjs} +3 -3
  30. package/{esm2015/lib/directives/size.directive.js → esm2020/lib/directives/size.directive.mjs} +3 -3
  31. package/{esm2015/lib/directives/wrap.directive.js → esm2020/lib/directives/wrap.directive.mjs} +3 -3
  32. package/{esm2015/lib/modal-gallery.module.js → esm2020/lib/modal-gallery.module.mjs} +7 -7
  33. package/{esm2015/lib/model/accessibility.interface.js → esm2020/lib/model/accessibility.interface.mjs} +0 -0
  34. package/{esm2015/lib/model/action.enum.js → esm2020/lib/model/action.enum.mjs} +0 -0
  35. package/{esm2015/lib/model/buttons-config.interface.js → esm2020/lib/model/buttons-config.interface.mjs} +0 -0
  36. package/{esm2015/lib/model/carousel-config.interface.js → esm2020/lib/model/carousel-config.interface.mjs} +1 -1
  37. package/{esm2015/lib/model/carousel-image-config.interface.js → esm2020/lib/model/carousel-image-config.interface.mjs} +0 -0
  38. package/{esm2015/lib/model/carousel-preview-config.interface.js → esm2020/lib/model/carousel-preview-config.interface.mjs} +0 -0
  39. package/{esm2015/lib/model/current-image-config.interface.js → esm2020/lib/model/current-image-config.interface.mjs} +0 -0
  40. package/{esm2015/lib/model/description.interface.js → esm2020/lib/model/description.interface.mjs} +0 -0
  41. package/{esm2015/lib/model/dots-config.interface.js → esm2020/lib/model/dots-config.interface.mjs} +0 -0
  42. package/{esm2015/lib/model/image-internal.class.js → esm2020/lib/model/image-internal.class.mjs} +0 -0
  43. package/{esm2015/lib/model/image.class.js → esm2020/lib/model/image.class.mjs} +0 -0
  44. package/{esm2015/lib/model/interaction-event.interface.js → esm2020/lib/model/interaction-event.interface.mjs} +0 -0
  45. package/{esm2015/lib/model/keyboard-config.interface.js → esm2020/lib/model/keyboard-config.interface.mjs} +1 -1
  46. package/{esm2015/lib/model/keyboard-service-config.interface.js → esm2020/lib/model/keyboard-service-config.interface.mjs} +0 -0
  47. package/esm2020/lib/model/keyboard.enum.mjs +35 -0
  48. package/{esm2015/lib/model/lib-config.interface.js → esm2020/lib/model/lib-config.interface.mjs} +1 -1
  49. package/{esm2015/lib/model/loading-config.interface.js → esm2020/lib/model/loading-config.interface.mjs} +0 -0
  50. package/{esm2015/lib/model/max-size.interface.js → esm2020/lib/model/max-size.interface.mjs} +0 -0
  51. package/{esm2015/lib/model/modal-gallery-config.interface.js → esm2020/lib/model/modal-gallery-config.interface.mjs} +1 -1
  52. package/esm2020/lib/model/plain-gallery-config.interface.mjs +55 -0
  53. package/{esm2015/lib/model/play-config.interface.js → esm2020/lib/model/play-config.interface.mjs} +0 -0
  54. package/{esm2015/lib/model/preview-config.interface.js → esm2020/lib/model/preview-config.interface.mjs} +0 -0
  55. package/{esm2015/lib/model/size.interface.js → esm2020/lib/model/size.interface.mjs} +0 -0
  56. package/{esm2015/lib/model/slide-config.interface.js → esm2020/lib/model/slide-config.interface.mjs} +0 -0
  57. package/esm2020/lib/services/config.service.mjs +396 -0
  58. package/{esm2015/lib/services/id-validator.service.js → esm2020/lib/services/id-validator.service.mjs} +3 -3
  59. package/{esm2015/lib/services/keyboard.service.js → esm2020/lib/services/keyboard.service.mjs} +3 -3
  60. package/{esm2015/lib/utils/image.util.js → esm2020/lib/utils/image.util.mjs} +0 -0
  61. package/esm2020/lib/utils/user-input.util.mjs +104 -0
  62. package/esm2020/public-api.mjs +42 -0
  63. package/fesm2015/ks89-angular-modal-gallery.mjs +5788 -0
  64. package/fesm2015/ks89-angular-modal-gallery.mjs.map +1 -0
  65. package/{fesm2015/ks89-angular-modal-gallery.js → fesm2020/ks89-angular-modal-gallery.mjs} +270 -432
  66. package/fesm2020/ks89-angular-modal-gallery.mjs.map +1 -0
  67. package/lib/components/accessible.component.d.ts +2 -2
  68. package/lib/components/carousel/carousel-previews/carousel-previews.component.d.ts +0 -7
  69. package/lib/components/carousel/carousel.component.d.ts +25 -67
  70. package/lib/components/current-image/current-image.component.d.ts +3 -3
  71. package/lib/components/modal-gallery/modal-gallery.component.d.ts +8 -21
  72. package/lib/components/modal-gallery/modal-gallery.service.d.ts +1 -0
  73. package/lib/components/plain-gallery/plain-gallery.component.d.ts +6 -10
  74. package/lib/components/previews/previews.component.d.ts +9 -2
  75. package/lib/directives/keyboard-navigation.directive.d.ts +1 -1
  76. package/lib/model/carousel-config.interface.d.ts +0 -1
  77. package/lib/model/keyboard-config.interface.d.ts +4 -4
  78. package/lib/model/keyboard.enum.d.ts +11 -8
  79. package/lib/model/lib-config.interface.d.ts +20 -7
  80. package/lib/model/modal-gallery-config.interface.d.ts +10 -2
  81. package/lib/model/plain-gallery-config.interface.d.ts +1 -9
  82. package/lib/utils/user-input.util.d.ts +35 -26
  83. package/package.json +27 -14
  84. package/public-api.d.ts +2 -2
  85. package/bundles/ks89-angular-modal-gallery.umd.js +0 -6221
  86. package/bundles/ks89-angular-modal-gallery.umd.js.map +0 -1
  87. package/esm2015/lib/components/carousel/carousel-previews/carousel-previews.component.js +0 -480
  88. package/esm2015/lib/components/carousel/carousel.component.js +0 -800
  89. package/esm2015/lib/components/current-image/current-image.component.js +0 -621
  90. package/esm2015/lib/components/current-image/loading-spinner/loading-spinner.component.js +0 -93
  91. package/esm2015/lib/components/dots/dots.component.js +0 -132
  92. package/esm2015/lib/components/modal-gallery/modal-gallery.component.js +0 -576
  93. package/esm2015/lib/components/modal-gallery/modal-gallery.service.js +0 -186
  94. package/esm2015/lib/components/plain-gallery/plain-gallery.component.js +0 -259
  95. package/esm2015/lib/components/previews/previews.component.js +0 -337
  96. package/esm2015/lib/components/upper-buttons/upper-buttons.component.js +0 -254
  97. package/esm2015/lib/model/keyboard.enum.js +0 -35
  98. package/esm2015/lib/model/plain-gallery-config.interface.js +0 -64
  99. package/esm2015/lib/services/config.service.js +0 -395
  100. package/esm2015/lib/utils/user-input.util.js +0 -95
  101. package/esm2015/public-api.js +0 -42
  102. package/fesm2015/ks89-angular-modal-gallery.js.map +0 -1
@@ -1,254 +0,0 @@
1
- /*
2
- The MIT License (MIT)
3
-
4
- Copyright (c) 2017 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: "12.1.1", ngImport: i0, type: UpperButtonsComponent, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
226
- UpperButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", 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,.close-image,.copy,.delete-image,.download-image,.ext-url-image,.fullscreen-image,.refresh-image,.rotate-image{width:30px;height:30px;background-size:30px;opacity:.8;transition:all .5s}.base-btn:hover,.close-image:hover,.copy:hover,.delete-image:hover,.download-image:hover,.ext-url-image:hover,.fullscreen-image:hover,.refresh-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=\")}"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.SizeDirective, selector: "[ksSize]", inputs: ["sizeConfig"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: UpperButtonsComponent, decorators: [{
228
- type: Component,
229
- args: [{
230
- selector: 'ks-upper-buttons',
231
- styleUrls: ['upper-buttons.scss'],
232
- templateUrl: 'upper-buttons.html',
233
- changeDetection: ChangeDetectionStrategy.OnPush
234
- }]
235
- }], ctorParameters: function () { return [{ type: i1.ConfigService }]; }, propDecorators: { id: [{
236
- type: Input
237
- }], currentImage: [{
238
- type: Input
239
- }], refresh: [{
240
- type: Output
241
- }], delete: [{
242
- type: Output
243
- }], navigate: [{
244
- type: Output
245
- }], download: [{
246
- type: Output
247
- }], closeButton: [{
248
- type: Output
249
- }], fullscreen: [{
250
- type: Output
251
- }], customEmit: [{
252
- type: Output
253
- }] } });
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBwZXItYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9zcmMvbGliL2NvbXBvbmVudHMvdXBwZXItYnV0dG9ucy91cHBlci1idXR0b25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvY29tcG9uZW50cy91cHBlci1idXR0b25zL3VwcGVyLWJ1dHRvbnMuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpELE9BQU8sRUFBNEMsZUFBZSxFQUFFLFVBQVUsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXJKLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzNCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7OztBQVduRDs7O0dBR0c7QUFPSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsbUJBQW1CO0lBaUY1RCxZQUFvQixhQUE0QjtRQUM5QyxLQUFLLEVBQUUsQ0FBQztRQURVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBcEVoRDs7V0FFRztRQUVILFlBQU8sR0FBOEIsSUFBSSxZQUFZLEVBQWUs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cEMsTUFBTSxpQkFBaUIsR0FBVyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVHLElBQUksaUJBQWlCLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQzthQUMvRTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7a0hBL05VLHFCQUFxQjtzR0FBckIscUJBQXFCLGtUQzdEbEMsNm9CQWNBOzJGRCtDYSxxQkFBcUI7a0JBTmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsU0FBUyxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQ2pDLFdBQVcsRUFBRSxvQkFBb0I7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDtvR0FPQyxFQUFFO3NCQURELEtBQUs7Z0JBTU4sWUFBWTtzQkFEWCxLQUFLO2dCQU9OLE9BQU87c0JBRE4sTUFBTTtnQkFNUCxNQUFNO3NCQURMLE1BQU07Z0JBTVAsUUFBUTtzQkFEUCxNQUFNO2dCQU1QLFFBQVE7c0JBRFAsTUFBTTtnQkFNUCxXQUFXO3NCQURWLE1BQU07Z0JBTVAsVUFBVTtzQkFEVCxNQUFNO2dCQU1QLFVBQVU7c0JBRFQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKGMpIDIwMTcgU3RlZmFubyBDYXBwYSAoS3M4OSlcblxuIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OIElORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBY2Nlc3NpYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vYWNjZXNzaWJsZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9hY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gJy4uLy4uL21vZGVsL2ltYWdlLmNsYXNzJztcbmltcG9ydCB7IEJ1dHRvbkNvbmZpZywgQnV0dG9uRXZlbnQsIEJ1dHRvbnNDb25maWcsIEJ1dHRvbnNTdHJhdGVneSwgQnV0dG9uVHlwZSwgV0hJVEVMSVNUX0JVVFRPTl9UWVBFUyB9IGZyb20gJy4uLy4uL21vZGVsL2J1dHRvbnMtY29uZmlnLmludGVyZmFjZSc7XG5cbmltcG9ydCB7XG4gIEtTX0RFRkFVTFRfQlROX0NMT1NFLFxuICBLU19ERUZBVUxUX0JUTl9ERUxFVEUsXG4gIEtTX0RFRkFVTFRfQlROX0RPV05MT0FELFxuICBLU19ERUZBVUxUX0JUTl9FWFRVUkwsXG4gIEtTX0RFRkFVTFRfQlROX0ZVTExfU0NSRUVOXG59IGZyb20gJy4vdXBwZXItYnV0dG9ucy1kZWZhdWx0JztcblxuaW1wb3J0IHsgTkVYVCB9IGZyb20gJy4uLy4uL3V0aWxzL3VzZXItaW5wdXQudXRpbCc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGliQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvbGliLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGBCdXR0b25Db25maWdgIHdpdGggYW4gb3B0aW9uYWwgYGlkYCBmaWVsZCwgdXNlZCBieSB0cmFja0lkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsQnV0dG9uQ29uZmlnIGV4dGVuZHMgQnV0dG9uQ29uZmlnIHtcbiAgaWQ/OiBudW1iZXI7IC8vIHVzZWZ1bCBvbmx5IGZvciB0cmFja0J5SWQsIG5vdCBuZWVkZWQgYnkgdXNlcnNcbn1cblxuLyoqXG4gKiBDb21wb25lbnQgd2l0aCBhbGwgdXBwZXIgYnV0dG9ucy5cbiAqIEFsc28gaXQgZW1pdHMgY2xpY2sgZXZlbnRzIGFzIG91dHB1dHMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tzLXVwcGVyLWJ1dHRvbnMnLFxuICBzdHlsZVVybHM6IFsndXBwZXItYnV0dG9ucy5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAndXBwZXItYnV0dG9ucy5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVXBwZXJCdXR0b25zQ29tcG9uZW50IGV4dGVuZHMgQWNjZXNzaWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBVbmlxdWUgaWQgKD49MCkgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhpcyBsaWJyYXJ5LiBUaGlzIGlzIHJlcXVpcmVkIHdoZW4geW91IGFyZSB1c2luZ1xuICAgKiB0aGUgc2VydmljZSB0byBjYWxsIG1vZGFsIGdhbGxlcnkuXG4gICAqL1xuICBASW5wdXQoKVxuICBpZDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogT2JqZWN0IG9mIHR5cGUgYEltYWdlYCB0aGF0IHJlcHJlc2VudCB0aGUgdmlzaWJsZSBpbWFnZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGN1cnJlbnRJbWFnZTogSW1hZ2UgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIE91dHB1dCB0byBlbWl0IGNsaWNrcyBvbiByZWZyZXNoIGJ1dHRvbi4gVGhlIHBheWxvYWQgY29udGFpbnMgYSBgQnV0dG9uRXZlbnRgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHJlZnJlc2g6IEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkV2ZW50PigpO1xuICAvKipcbiAgICogT3V0cHV0IHRvIGVtaXQgY2xpY2tzIG9uIGRlbGV0ZSBidXR0b24uIFRoZSBwYXlsb2FkIGNvbnRhaW5zIGEgYEJ1dHRvbkV2ZW50YC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBkZWxldGU6IEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkV2ZW50PigpO1xuICAvKipcbiAgICogT3V0cHV0IHRvIGVtaXQgY2xpY2tzIG9uIG5hdmlnYXRlIGJ1dHRvbi4gVGhlIHBheWxvYWQgY29udGFpbnMgYSBgQnV0dG9uRXZlbnRgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG5hdmlnYXRlOiBFdmVudEVtaXR0ZXI8QnV0dG9uRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4oKTtcbiAgLyoqXG4gICAqIE91dHB1dCB0byBlbWl0IGNsaWNrcyBvbiBkb3dubG9hZCBidXR0b24uIFRoZSBwYXlsb2FkIGNvbnRhaW5zIGEgYEJ1dHRvbkV2ZW50YC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBkb3dubG9hZDogRXZlbnRFbWl0dGVyPEJ1dHRvbkV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QnV0dG9uRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBPdXRwdXQgdG8gZW1pdCBjbGlja3Mgb24gY2xvc2UgYnV0dG9uLiBUaGUgcGF5bG9hZCBjb250YWlucyBhIGBCdXR0b25FdmVudGAuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgY2xvc2VCdXR0b246IEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkV2ZW50PigpO1xuICAvKipcbiAgICogT3V0cHV0IHRvIGVtaXQgY2xpY2tzIG9uIGZ1bGwtc2NyZWVuIGJ1dHRvbi4gVGhlIHBheWxvYWQgY29udGFpbnMgYSBgQnV0dG9uRXZlbnRgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGZ1bGxzY3JlZW46IEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkV2ZW50PigpO1xuICAvKipcbiAgICogT3V0cHV0IHRvIGVtaXQgY2xpY2tzIG9uIGFsbCBjdXN0b20gYnV0dG9ucy4gVGhlIHBheWxvYWQgY29udGFpbnMgYSBgQnV0dG9uRXZlbnRgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGN1c3RvbUVtaXQ6IEV2ZW50RW1pdHRlcjxCdXR0b25FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBPYmplY3Qgb2YgdHlwZSBgQnV0dG9uc0NvbmZpZ2AgdG8gaW5pdCBVcHBlckJ1dHRvbnNDb21wb25lbnQncyBmZWF0dXJlcy5cbiAgICogRm9yIGluc3RhbmNlLCBpdCBjb250YWlucyBhbiBhcnJheSBvZiBidXR0b25zLlxuICAgKi9cbiAgYnV0dG9uc0NvbmZpZzogQnV0dG9uc0NvbmZpZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEFycmF5IG9mIGBJbnRlcm5hbEJ1dHRvbkNvbmZpZ2AgZXhwb3NlZCB0byB0aGUgdGVtcGxhdGUuIFRoaXMgZmllbGQgaXMgaW5pdGlhbGl6ZWRcbiAgICogYXBwbHlpbmcgdHJhbnNmb3JtYXRpb25zLCBkZWZhdWx0IHZhbHVlcyBhbmQgc28gb24gdG8gdGhlIGlucHV0IG9mIHRoZSBzYW1lIHR5cGUuXG4gICAqL1xuICBidXR0b25zOiBJbnRlcm5hbEJ1dHRvbkNvbmZpZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGJ1dHRvbnMgYXJyYXkgZm9yIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByaXZhdGUgZGVmYXVsdEJ1dHRvbnNEZWZhdWx0OiBCdXR0b25Db25maWdbXSA9IFtLU19ERUZBVUxUX0JUTl9DTE9TRV07XG4gIC8qKlxuICAgKiBEZWZhdWx0IGJ1dHRvbnMgYXJyYXkgZm9yIHNpbXBsZSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcml2YXRlIHNpbXBsZUJ1dHRvbnNEZWZhdWx0OiBCdXR0b25Db25maWdbXSA9IFtLU19ERUZBVUxUX0JUTl9ET1dOTE9BRCwgLi4udGhpcy5kZWZhdWx0QnV0dG9uc0RlZmF1bHRdO1xuICAvKipcbiAgICogRGVmYXVsdCBidXR0b25zIGFycmF5IGZvciBhZHZhbmNlZCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcml2YXRlIGFkdmFuY2VkQnV0dG9uc0RlZmF1bHQ6IEJ1dHRvbkNvbmZpZ1tdID0gW0tTX0RFRkFVTFRfQlROX0VYVFVSTCwgLi4udGhpcy5zaW1wbGVCdXR0b25zRGVmYXVsdF07XG4gIC8qKlxuICAgKiBEZWZhdWx0IGJ1dHRvbnMgYXJyYXkgZm9yIGZ1bGwgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBmdWxsQnV0dG9uc0RlZmF1bHQ6IEJ1dHRvbkNvbmZpZ1tdID0gW1xuICAgIEtTX0RFRkFVTFRfQlROX0ZVTExfU0NSRUVOLFxuICAgIEtTX0RFRkFVTFRfQlROX0RFTEVURSxcbiAgICAuLi50aGlzLmFkdmFuY2VkQnV0dG9uc0RlZmF1bHRcbiAgXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCDCtG5nT25Jbml0wrQgdG8gYnVpbGQgYGNvbmZpZ0J1dHRvbnNgIGFwcGx5aW5nIGEgZGVmYXVsdCB2YWx1ZSBhbmQgYWxzbyB0b1xuICAgKiBpbml0IHRoZSBgYnV0dG9uc2AgYXJyYXkuXG4gICAqIFRoaXMgaXMgYW4gQW5ndWxhcidzIGxpZmVjeWNsZSBob29rLCBzbyBpdHMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkgQW5ndWxhciBpdHNlbGYuXG4gICAqIEluIHBhcnRpY3VsYXIsIGl0J3MgY2FsbGVkIG9ubHkgb25lIHRpbWUhISFcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlkID09PSBudWxsIHx8IHRoaXMuaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIC0gaWQgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGNvbnN0IGxpYkNvbmZpZzogTGliQ29uZmlnIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZyh0aGlzLmlkKTtcbiAgICBpZiAoIWxpYkNvbmZpZyB8fCAhbGliQ29uZmlnLmJ1dHRvbnNDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGxpYkNvbmZpZyBhbmQgYnV0dG9uc0NvbmZpZyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICB9XG4gICAgdGhpcy5idXR0b25zQ29uZmlnID0gbGliQ29uZmlnLmJ1dHRvbnNDb25maWc7XG4gICAgc3dpdGNoICh0aGlzLmJ1dHRvbnNDb25maWcuc3RyYXRlZ3kpIHtcbiAgICAgIGNhc2UgQnV0dG9uc1N0cmF0ZWd5LlNJTVBMRTpcbiAgICAgICAgdGhpcy5idXR0b25zID0gdGhpcy5hZGRCdXR0b25JZHModGhpcy5zaW1wbGVCdXR0b25zRGVmYXVsdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25zU3RyYXRlZ3kuQURWQU5DRUQ6XG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IHRoaXMuYWRkQnV0dG9uSWRzKHRoaXMuYWR2YW5jZWRCdXR0b25zRGVmYXVsdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25zU3RyYXRlZ3kuRlVMTDpcbiAgICAgICAgdGhpcy5idXR0b25zID0gdGhpcy5hZGRCdXR0b25JZHModGhpcy5mdWxsQnV0dG9uc0RlZmF1bHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uc1N0cmF0ZWd5LkNVU1RPTTpcbiAgICAgICAgdGhpcy5idXR0b25zID0gdGhpcy5hZGRCdXR0b25JZHModGhpcy52YWxpZGF0ZUN1c3RvbUJ1dHRvbnModGhpcy5idXR0b25zQ29uZmlnLmJ1dHRvbnMpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvbnNTdHJhdGVneS5ERUZBVUxUOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5idXR0b25zID0gdGhpcy5hZGRCdXR0b25JZHModGhpcy5kZWZhdWx0QnV0dG9uc0RlZmF1bHQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBieSBldmVudHMgZnJvbSBib3RoIGtleWJvYXJkIGFuZCBtb3VzZSBvbiBhIGJ1dHRvbi5cbiAgICogVGhpcyB3aWxsIGNhbGwgYSBwcml2YXRlIG1ldGhvZCB0byB0cmlnZ2VyIGFuIG91dHB1dCB3aXRoIHRoZSByaWdodCBwYXlsb2FkLlxuICAgKiBAcGFyYW0gSW50ZXJuYWxCdXR0b25Db25maWcgYnV0dG9uIHRoYXQgY2FsbGVkIHRoaXMgbWV0aG9kXG4gICAqIEBwYXJhbSBLZXlib2FyZEV2ZW50IHwgTW91c2VFdmVudCBldmVudCBwYXlsb2FkXG4gICAqIEBwYXJhbSBBY3Rpb24gYWN0aW9uIHRoYXQgdHJpZ2dlcmVkIHRoZSBzb3VyY2UgZXZlbnQgb3IgYEFjdGlvbi5DTElDS2AgaWYgbm90IHNwZWNpZmllZFxuICAgKiBAdGhyb3dzIGFuIGVycm9yIGlmIHRoZSBidXR0b24gdHlwZSBpcyB1bmtub3duXG4gICAqL1xuICBvbkV2ZW50KGJ1dHRvbjogSW50ZXJuYWxCdXR0b25Db25maWcsIGV2ZW50OiBLZXlib2FyZEV2ZW50IHwgTW91c2VFdmVudCwgYWN0aW9uOiBBY3Rpb24gPSBBY3Rpb24uQ0xJQ0spOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pZCA9PT0gbnVsbCB8fCB0aGlzLmlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgbGlicmFyeSBlcnJvciAtIGlkIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRhdGFUb0VtaXQ6IEJ1dHRvbkV2ZW50ID0ge1xuICAgICAgYnV0dG9uLFxuICAgICAgLy8gY3VycmVudCBpbWFnZSBpbml0aWFsaXplZCBhcyBudWxsXG4gICAgICAvLyAoSSdsbCBmaWxsIHRoaXMgdmFsdWUgaW5zaWRlIHRoZSBwYXJlbnQgb2YgdGhpcyBjb21wb25lbnRcbiAgICAgIGltYWdlOiBudWxsLFxuICAgICAgYWN0aW9uLFxuICAgICAgZ2FsbGVyeUlkOiB0aGlzLmlkXG4gICAgfTtcbiAgICBzd2l0Y2ggKGJ1dHRvbi50eXBlKSB7XG4gICAgICBjYXNlIEJ1dHRvblR5cGUuREVMRVRFOlxuICAgICAgICB0aGlzLnRyaWdnZXJPbk1vdXNlQW5kS2V5Ym9hcmQodGhpcy5kZWxldGUsIGV2ZW50LCBkYXRhVG9FbWl0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvblR5cGUuRVhUVVJMOlxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudEltYWdlIHx8ICF0aGlzLmN1cnJlbnRJbWFnZS5tb2RhbCB8fCAhdGhpcy5jdXJyZW50SW1hZ2UubW9kYWwuZXh0VXJsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHJpZ2dlck9uTW91c2VBbmRLZXlib2FyZCh0aGlzLm5hdmlnYXRlLCBldmVudCwgZGF0YVRvRW1pdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25UeXBlLkRPV05MT0FEOlxuICAgICAgICB0aGlzLnRyaWdnZXJPbk1vdXNlQW5kS2V5Ym9hcmQodGhpcy5kb3dubG9hZCwgZXZlbnQsIGRhdGFUb0VtaXQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnV0dG9uVHlwZS5DTE9TRTpcbiAgICAgICAgdGhpcy50cmlnZ2VyT25Nb3VzZUFuZEtleWJvYXJkKHRoaXMuY2xvc2VCdXR0b24sIGV2ZW50LCBkYXRhVG9FbWl0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1dHRvblR5cGUuQ1VTVE9NOlxuICAgICAgICB0aGlzLnRyaWdnZXJPbk1vdXNlQW5kS2V5Ym9hcmQodGhpcy5jdXN0b21FbWl0LCBldmVudCwgZGF0YVRvRW1pdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdXR0b25UeXBlLkZVTExTQ1JFRU46XG4gICAgICAgIHRoaXMudHJpZ2dlck9uTW91c2VBbmRLZXlib2FyZCh0aGlzLmZ1bGxzY3JlZW4sIGV2ZW50LCBkYXRhVG9FbWl0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYnV0dG9uJ3MgdHlwZSBpbnRvIEJ1dHRvbkNvbmZpZ2ApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdXNlZCBpbiB0aGUgdGVtcGxhdGUgdG8gdHJhY2sgaWRzIGluIG5nRm9yLlxuICAgKiBAcGFyYW0gbnVtYmVyIGluZGV4IG9mIHRoZSBhcnJheVxuICAgKiBAcGFyYW0gSW1hZ2UgaXRlbSBvZiB0aGUgYXJyYXlcbiAgICogQHJldHVybnMgbnVtYmVyIHRoZSBpZCBvZiB0aGUgaXRlbSBvciB1bmRlZmluZWQgaWYgdGhlIGl0ZW0gaXMgbm90IHZhbGlkXG4gICAqL1xuICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgaXRlbTogSW50ZXJuYWxCdXR0b25Db25maWcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBpdGVtID8gaXRlbS5pZCA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcml2YXRlIG1ldGhvZCB0byBlbWl0IGFuIGV2ZW50IHVzaW5nIHRoZSBzcGVjaWZpZWQgb3V0cHV0IGFzIGFuIGBFdmVudEVtaXR0ZXJgLlxuICAgKiBAcGFyYW0gRXZlbnRFbWl0dGVyPEJ1dHRvbkV2ZW50PiBlbWl0dGVyIGlzIHRoZSBvdXRwdXQgdG8gZW1pdCB0aGUgYEJ1dHRvbkV2ZW50YFxuICAgKiBAcGFyYW0gS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQgZXZlbnQgaXMgdGhlIHNvdXJjZSB0aGF0IHRyaWdnZXJlZCB0aGlzIG1ldGhvZFxuICAgKiBAcGFyYW0gQnV0dG9uRXZlbnQgZGF0YVRvRW1pdCBwYXlsb2FkIHRvIGVtaXRcbiAgICovXG4gIHByaXZhdGUgdHJpZ2dlck9uTW91c2VBbmRLZXlib2FyZChlbWl0dGVyOiBFdmVudEVtaXR0ZXI8QnV0dG9uRXZlbnQ+LCBldmVudDogS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQsIGRhdGFUb0VtaXQ6IEJ1dHRvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCFlbWl0dGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVwcGVyQnV0dG9uc0NvbXBvbmVudCB1bmtub3duIGVtaXR0ZXIgaW4gdHJpZ2dlck9uTW91c2VBbmRLZXlib2FyZGApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogbnVtYmVyID0gc3VwZXIuaGFuZGxlSW1hZ2VFdmVudChldmVudCk7XG4gICAgaWYgKHJlc3VsdCA9PT0gTkVYVCkge1xuICAgICAgZW1pdHRlci5lbWl0KGRhdGFUb0VtaXQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcml2YXRlIG1ldGhvZCB0byBhZGQgaWRzIHRvIHRoZSBhcnJheSBvZiBidXR0b25zLlxuICAgKiBJdCBhZGRzIGlkcyBpbiBhIHJldmVyc2Ugd2F5LCB0byBiZSBzdXJlIHRoYXQgdGhlIGxhc3QgYnV0dG9uIHdpbGwgYWx3YXlzIGhhdmUgaWQgPSAwLlxuICAgKiBUaGlzIGlzIHJlYWxseSB1c2VmdWwgaW4gdW5pdCB0ZXN0aW5nIHRvIGJlIHN1cmUgdGhhdCBjbG9zZSBidXR0b24gYWx3YXlzIGhhdmUgaWQgPSAwLCBkb3dubG9hZCAxIGFuZCBzbyBvbi4uLlxuICAgKiBJdCdzIHRvdGFsbHkgdHJhbnNwYXJlbnQgdG8gdGhlIHVzZXIuXG4gICAqIEBwYXJhbSBCdXR0b25Db25maWdbXSBidXR0b25zIGNvbmZpZyBhcnJheVxuICAgKiBAcmV0dXJucyBCdXR0b25Db25maWdbXSB0aGUgaW5wdXQgYXJyYXkgd2l0aCBpbmNyZW1lbnRhbCBudW1lcmljIGlkc1xuICAgKi9cbiAgcHJpdmF0ZSBhZGRCdXR0b25JZHMoYnV0dG9uczogQnV0dG9uQ29uZmlnW10pOiBCdXR0b25Db25maWdbXSB7XG4gICAgcmV0dXJuIGJ1dHRvbnMubWFwKCh2YWw6IEJ1dHRvbkNvbmZpZywgaTogbnVtYmVyKSA9PiBPYmplY3QuYXNzaWduKHZhbCwgeyBpZDogYnV0dG9ucy5sZW5ndGggLSAxIC0gaSB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUHJpdmF0ZSBtZXRob2QgdG8gdmFsaWRhdGUgY3VzdG9tIGJ1dHRvbnMgcmVjZWl2ZWQgYXMgaW5wdXQuXG4gICAqIEBwYXJhbSBCdXR0b25Db25maWdbXSBidXR0b25zIGNvbmZpZyBhcnJheS4gW10gYnkgZGVmYXVsdC5cbiAgICogQHJldHVybnMgQnV0dG9uQ29uZmlnW10gdGhlIHNhbWUgaW5wdXQgYnV0dG9ucyBjb25maWcgYXJyYXlcbiAgICogQHRocm93cyBhbiBlcnJvciBpcyBleGlzdHMgYSBidXR0b24gd2l0aCBhbiB1bmtub3duIHR5cGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVDdXN0b21CdXR0b25zKGJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW10pOiBCdXR0b25Db25maWdbXSB7XG4gICAgYnV0dG9ucy5mb3JFYWNoKCh2YWw6IEJ1dHRvbkNvbmZpZykgPT4ge1xuICAgICAgY29uc3QgaW5kZXhPZkJ1dHRvblR5cGU6IG51bWJlciA9IFdISVRFTElTVF9CVVRUT05fVFlQRVMuZmluZEluZGV4KCh0eXBlOiBCdXR0b25UeXBlKSA9PiB0eXBlID09PSB2YWwudHlwZSk7XG4gICAgICBpZiAoaW5kZXhPZkJ1dHRvblR5cGUgPT09IC0xKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBCdXR0b25UeXBlLiBGb3IgY3VzdG9tIHR5cGVzIHVzZSBCdXR0b25UeXBlLkNVU1RPTWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBidXR0b25zO1xuICB9XG59XG4iLCI8aGVhZGVyIGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWJ1dHRvbnNDb25maWcgfHwgYnV0dG9uc0NvbmZpZz8udmlzaWJsZVwiPlxuICAgIDxhICpuZ0Zvcj1cImxldCBidG4gb2YgYnV0dG9uczsgdHJhY2tCeTogdHJhY2tCeUlkOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgY2xhc3M9XCJ1cHBlci1idXR0b25cIlxuICAgICAgIGtzU2l6ZSBbc2l6ZUNvbmZpZ109XCJ7d2lkdGg6IGJ0bi5zaXplPy53aWR0aCEsIGhlaWdodDogYnRuLnNpemU/LmhlaWdodCF9XCJcbiAgICAgICBbbmdTdHlsZV09XCJ7J2ZvbnQtc2l6ZSc6IGJ0bi5mb250U2l6ZX1cIlxuICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuLmFyaWFMYWJlbFwiXG4gICAgICAgW3RhYkluZGV4XT1cIjBcIiByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAoY2xpY2spPVwib25FdmVudChidG4sICRldmVudClcIiAoa2V5dXApPVwib25FdmVudChidG4sICRldmVudClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnNpZGUge3tidG4uY2xhc3NOYW1lfX1cIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cInt7YnRuLnRpdGxlfX1cIj48L2Rpdj5cbiAgICA8L2E+XG4gIDwvbmctY29udGFpbmVyPlxuPC9oZWFkZXI+XG4iXX0=
@@ -1,35 +0,0 @@
1
- /*
2
- The MIT License (MIT)
3
-
4
- Copyright (C) 2017-2021 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
- /**
25
- * Enum `Keyboard` with keys and their relative key codes.
26
- */
27
- export var Keyboard;
28
- (function (Keyboard) {
29
- Keyboard[Keyboard["ESC"] = 27] = "ESC";
30
- Keyboard[Keyboard["LEFT_ARROW"] = 37] = "LEFT_ARROW";
31
- Keyboard[Keyboard["RIGHT_ARROW"] = 39] = "RIGHT_ARROW";
32
- Keyboard[Keyboard["UP_ARROW"] = 38] = "UP_ARROW";
33
- Keyboard[Keyboard["DOWN_ARROW"] = 40] = "DOWN_ARROW";
34
- })(Keyboard || (Keyboard = {}));
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvbW9kZWwva2V5Ym9hcmQuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVIOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksUUFNWDtBQU5ELFdBQVksUUFBUTtJQUNsQixzQ0FBUSxDQUFBO0lBQ1Isb0RBQWUsQ0FBQTtJQUNmLHNEQUFnQixDQUFBO0lBQ2hCLGdEQUFhLENBQUE7SUFDYixvREFBZSxDQUFBO0FBQ2pCLENBQUMsRUFOVyxRQUFRLEtBQVIsUUFBUSxRQU1uQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbi8qKlxuICogRW51bSBgS2V5Ym9hcmRgIHdpdGgga2V5cyBhbmQgdGhlaXIgcmVsYXRpdmUga2V5IGNvZGVzLlxuICovXG5leHBvcnQgZW51bSBLZXlib2FyZCB7XG4gIEVTQyA9IDI3LFxuICBMRUZUX0FSUk9XID0gMzcsXG4gIFJJR0hUX0FSUk9XID0gMzksXG4gIFVQX0FSUk9XID0gMzgsXG4gIERPV05fQVJST1cgPSA0MFxufVxuIl19
@@ -1,64 +0,0 @@
1
- /*
2
- The MIT License (MIT)
3
-
4
- Copyright (C) 2017-2021 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
- /**
25
- * Class `LineLayout` to configure a linear plain gallery.
26
- */
27
- export class LineLayout {
28
- constructor(size, breakConfig, justify) {
29
- this.size = size;
30
- this.breakConfig = breakConfig;
31
- this.justify = justify;
32
- }
33
- }
34
- /**
35
- * Class `GridLayout` to configure a grid plain gallery.
36
- */
37
- export class GridLayout {
38
- constructor(size, breakConfig) {
39
- this.size = size;
40
- this.breakConfig = breakConfig;
41
- }
42
- }
43
- /**
44
- * Class `AdvancedLayout` to configure a fully custom plain gallery.
45
- */
46
- export class AdvancedLayout {
47
- constructor(modalOpenerByIndex, hideDefaultPlainGallery) {
48
- this.modalOpenerByIndex = modalOpenerByIndex;
49
- this.hideDefaultPlainGallery = hideDefaultPlainGallery;
50
- }
51
- }
52
- /**
53
- * Enum `PlainGalleryStrategy` to choose the behaviour of the plain gallery.
54
- */
55
- export var PlainGalleryStrategy;
56
- (function (PlainGalleryStrategy) {
57
- // don't use 0 here
58
- // the first index is 1 and all of the following members are auto-incremented from that point on
59
- PlainGalleryStrategy[PlainGalleryStrategy["ROW"] = 1] = "ROW";
60
- PlainGalleryStrategy[PlainGalleryStrategy["COLUMN"] = 2] = "COLUMN";
61
- PlainGalleryStrategy[PlainGalleryStrategy["GRID"] = 3] = "GRID";
62
- PlainGalleryStrategy[PlainGalleryStrategy["CUSTOM"] = 4] = "CUSTOM"; // full custom strategy
63
- })(PlainGalleryStrategy || (PlainGalleryStrategy = {}));
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaW4tZ2FsbGVyeS1jb25maWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3M4OS9hbmd1bGFyLW1vZGFsLWdhbGxlcnkvc3JjL2xpYi9tb2RlbC9wbGFpbi1nYWxsZXJ5LWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFvQkg7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUtyQixZQUFZLElBQVUsRUFBRSxXQUF3QixFQUFFLE9BQWU7UUFDL0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUlyQixZQUFZLElBQVUsRUFBRSxXQUF3QjtRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQVksa0JBQTBCLEVBQUUsdUJBQWdDO1FBQ3RFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxvQkFPWDtBQVBELFdBQVksb0JBQW9CO0lBQzlCLG1CQUFtQjtJQUNuQixnR0FBZ0c7SUFDaEcsNkRBQU8sQ0FBQTtJQUNQLG1FQUFNLENBQUE7SUFDTiwrREFBSSxDQUFBO0lBQ0osbUVBQU0sQ0FBQSxDQUFDLHVCQUF1QjtBQUNoQyxDQUFDLEVBUFcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQU8vQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IFNpemUgfSBmcm9tICcuL3NpemUuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgYFBsYWluR2FsbGVyeUNvbmZpZ2AgdG8gY29uZmlndXJlIHBsYWluLWdhbGxlcnkgZmVhdHVyZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaW5HYWxsZXJ5Q29uZmlnIHtcbiAgc3RyYXRlZ3k6IFBsYWluR2FsbGVyeVN0cmF0ZWd5O1xuICBsYXlvdXQ6IFBsYWluR2FsbGVyeUxheW91dDtcbiAgYWR2YW5jZWQ/OiBBZHZhbmNlZENvbmZpZztcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgYFBsYWluR2FsbGVyeUxheW91dGAgdG8gY29uZmlndXJlIHRoZSBsYXlvdXQuIFRoaXMgaW50ZXJmYWNlIGlzbid0IHVzZWQgZGlyZWN0bHksIGluc3RlYWRcbiAqIHJlZmVycyB0byBlaXRoZXIgYExpbmVMYXlvdXRgLCBgR3JpZExheW91dGAgb3IgYEFkdmFuY2VkTGF5b3V0YC5cbiAqL1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBQbGFpbkdhbGxlcnlMYXlvdXQge31cblxuLyoqXG4gKiBDbGFzcyBgTGluZUxheW91dGAgdG8gY29uZmlndXJlIGEgbGluZWFyIHBsYWluIGdhbGxlcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBMaW5lTGF5b3V0IGltcGxlbWVudHMgUGxhaW5HYWxsZXJ5TGF5b3V0IHtcbiAgYnJlYWtDb25maWc6IEJyZWFrQ29uZmlnO1xuICBqdXN0aWZ5OiBzdHJpbmc7XG4gIHNpemU6IFNpemU7XG5cbiAgY29uc3RydWN0b3Ioc2l6ZTogU2l6ZSwgYnJlYWtDb25maWc6IEJyZWFrQ29uZmlnLCBqdXN0aWZ5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNpemUgPSBzaXplO1xuICAgIHRoaXMuYnJlYWtDb25maWcgPSBicmVha0NvbmZpZztcbiAgICB0aGlzLmp1c3RpZnkgPSBqdXN0aWZ5O1xuICB9XG59XG5cbi8qKlxuICogQ2xhc3MgYEdyaWRMYXlvdXRgIHRvIGNvbmZpZ3VyZSBhIGdyaWQgcGxhaW4gZ2FsbGVyeS5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyaWRMYXlvdXQgaW1wbGVtZW50cyBQbGFpbkdhbGxlcnlMYXlvdXQge1xuICBicmVha0NvbmZpZzogQnJlYWtDb25maWc7XG4gIHNpemU6IFNpemU7XG5cbiAgY29uc3RydWN0b3Ioc2l6ZTogU2l6ZSwgYnJlYWtDb25maWc6IEJyZWFrQ29uZmlnKSB7XG4gICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICB0aGlzLmJyZWFrQ29uZmlnID0gYnJlYWtDb25maWc7XG4gIH1cbn1cblxuLyoqXG4gKiBDbGFzcyBgQWR2YW5jZWRMYXlvdXRgIHRvIGNvbmZpZ3VyZSBhIGZ1bGx5IGN1c3RvbSBwbGFpbiBnYWxsZXJ5LlxuICovXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRMYXlvdXQgaW1wbGVtZW50cyBQbGFpbkdhbGxlcnlMYXlvdXQge1xuICBtb2RhbE9wZW5lckJ5SW5kZXg6IG51bWJlcjtcbiAgaGlkZURlZmF1bHRQbGFpbkdhbGxlcnk6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IobW9kYWxPcGVuZXJCeUluZGV4OiBudW1iZXIsIGhpZGVEZWZhdWx0UGxhaW5HYWxsZXJ5OiBib29sZWFuKSB7XG4gICAgdGhpcy5tb2RhbE9wZW5lckJ5SW5kZXggPSBtb2RhbE9wZW5lckJ5SW5kZXg7XG4gICAgdGhpcy5oaWRlRGVmYXVsdFBsYWluR2FsbGVyeSA9IGhpZGVEZWZhdWx0UGxhaW5HYWxsZXJ5O1xuICB9XG59XG5cbi8qKlxuICogRW51bSBgUGxhaW5HYWxsZXJ5U3RyYXRlZ3lgIHRvIGNob29zZSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBwbGFpbiBnYWxsZXJ5LlxuICovXG5leHBvcnQgZW51bSBQbGFpbkdhbGxlcnlTdHJhdGVneSB7XG4gIC8vIGRvbid0IHVzZSAwIGhlcmVcbiAgLy8gdGhlIGZpcnN0IGluZGV4IGlzIDEgYW5kIGFsbCBvZiB0aGUgZm9sbG93aW5nIG1lbWJlcnMgYXJlIGF1dG8taW5jcmVtZW50ZWQgZnJvbSB0aGF0IHBvaW50IG9uXG4gIFJPVyA9IDEsXG4gIENPTFVNTixcbiAgR1JJRCxcbiAgQ1VTVE9NIC8vIGZ1bGwgY3VzdG9tIHN0cmF0ZWd5XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGBCcmVha0NvbmZpZ2AgdG8gbGltaXQgdGhlIG51bWJlciBvZiBpdGVtcyBvZiB0aGUgcGxhaW4gZ2FsbGVyeSBvciB0byBmb3JjZSBpdCB0byBmaWxsIG90aGVyIGxpbmVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJyZWFrQ29uZmlnIHtcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIHdyYXA6IGJvb2xlYW47XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGBBZHZhbmNlZENvbmZpZ2AgdG8gdXNlIGA8YT5gIHRhZ3MgaW5zdGVhZCBvZiBgPGltZz5gLlxuICogSXQgYWxzbyBjb250YWlucyBhIHN0cmluZyBwcm9wZXJ0eSB0byBjdXN0b21pemUgdGhlIGNzcyBiYWNrZ3JvdW5kIHByb3BlcnR5LlxuICogRm9yIG1vcmUgaW5mbyBjaGVjayBoZXJlIGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vY3NzcmVmL2NzczNfcHJfYmFja2dyb3VuZC5hc3BcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZHZhbmNlZENvbmZpZyB7XG4gIGFUYWdzOiBib29sZWFuO1xuICBhZGRpdGlvbmFsQmFja2dyb3VuZDogc3RyaW5nO1xufVxuIl19