@ks89/angular-modal-gallery 10.0.1 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -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
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# 11.0.0
|
|
2
|
+
|
|
3
|
+
**Migrate from 10.0.0 to 11.0.0 - Check the official guide [HERE](https://ks89.github.io/angular-modal-gallery-2023-v11.github.io/)**
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- remove `hammerjs` dependency (because deprecated) to mange swipe events preferring a custom directive #218 **(BREAKING CHANGE)**
|
|
8
|
+
- remove `mousetrap` dependency to manage ctrl+s/meta+s event to save the current image in modal-gallery component.
|
|
9
|
+
This in a very important change, because from now you won't be able to customize ctrl+s/meta+s shortcuts #237 **(BREAKING CHANGE)**
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# 11.0.0-rc.1
|
|
13
|
+
|
|
14
|
+
**Migrate from 10.0.0 to 11.0.0 - Check the official guide [HERE](https://ks89.github.io/angular-modal-gallery-2023-v11.github.io/)**
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
- remove `hammerjs` dependency (because deprecated) to mange swipe events preferring a custom directive #218 **(BREAKING CHANGE)**
|
|
19
|
+
- remove `mousetrap` dependency to manage ctrl+s/meta+s event to save the current image in modal-gallery component.
|
|
20
|
+
This in a very important change, because from now you won't be able to customize ctrl+s/meta+s shortcuts #237 **(BREAKING CHANGE)**
|
|
21
|
+
|
|
22
|
+
|
|
1
23
|
# 10.0.1
|
|
2
24
|
|
|
3
25
|
### Bugfixes
|
package/CONTRIBUTING.md
CHANGED
|
@@ -10,7 +10,7 @@ Every time you'll run `npm install` inside an example's folder, you must rebuild
|
|
|
10
10
|
2. remove all `node_modules` and temp folders with compiled files (if necessary)
|
|
11
11
|
3. `npm install` (from the root of this project)
|
|
12
12
|
4. `npm run clean:all`
|
|
13
|
-
5. `cd examples/angular-cli-
|
|
13
|
+
5. `cd examples/angular-cli-16`
|
|
14
14
|
6. `npm install`
|
|
15
15
|
7. `cd ../..`
|
|
16
16
|
8. `cd examples/universal`
|
|
@@ -31,8 +31,8 @@ Every time you'll run `npm install` inside an example's folder, you must rebuild
|
|
|
31
31
|
6. `cd dist/angular-modal-gallery && lite-server` => if everything is ok (also in browser's console), kill the process and go to the next step
|
|
32
32
|
7. `cd ../..`
|
|
33
33
|
|
|
34
|
-
# C. Run angular-cli-
|
|
35
|
-
1. `cd examples/angular-cli-
|
|
34
|
+
# C. Run angular-cli-16 example
|
|
35
|
+
1. `cd examples/angular-cli-16`
|
|
36
36
|
2. `npm start` => if everything is ok (also in browser's console), kill the process and go to the next step
|
|
37
37
|
3. `npm run build:dev`
|
|
38
38
|
4. `cd dist/angular-cli && lite-server` => if everything is ok (also in browser's console), kill the process and go to the next step
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -120,7 +120,6 @@ Despite its name, this library is more than for modal galleries, because I'm int
|
|
|
120
120
|
- **Server Side Rendering** support with angular-universal
|
|
121
121
|
- Web Accessibility features, like ARIA support and [toptal.com](https://www.toptal.com/designers/colorfilter) criteria (tested with `Sim Daltonism` for macOS)
|
|
122
122
|
- image **download** with buttons or keyboard shortcuts
|
|
123
|
-
- advanced **keyboard shortcuts** with `mousetrap` (both local and global)
|
|
124
123
|
- fully configurable default buttons to either close, download, navigate to an external url or delete images and so on
|
|
125
124
|
- support custom buttons with both pre and after hooks
|
|
126
125
|
- **click outside feature** to close the modal gallery clicking on the background
|
|
@@ -129,18 +128,18 @@ Despite its name, this library is more than for modal galleries, because I'm int
|
|
|
129
128
|
- configurable side-previews (visible only on bigger screen)
|
|
130
129
|
- configurable dots navigation (visible only on bigger screen)
|
|
131
130
|
- configurable previews (visible only on bigger screen)
|
|
132
|
-
- and many more... (check the official documentation [HERE](https://ks89.github.io/angular-modal-gallery-
|
|
131
|
+
- and many more... (check the official documentation [HERE](https://ks89.github.io/angular-modal-gallery-2023-v11.github.io/))
|
|
133
132
|
|
|
134
133
|
<br>
|
|
135
134
|
|
|
136
135
|
## :package: Installation :package:
|
|
137
136
|
|
|
138
137
|
- `npm install --save @ks89/angular-modal-gallery`
|
|
139
|
-
- `npm install --save
|
|
140
|
-
- `npm install --save-dev @types/mousetrap @types/hammerjs`
|
|
138
|
+
- `npm install --save @angular/cdk`
|
|
141
139
|
|
|
142
140
|
From version @ks89/angular-modal-gallery >= 5.0.0, **font-awesome isn't a mandatory dependency**.
|
|
143
|
-
You can use all default features without font-awesome. For more info, check official [documentation website](https://ks89.github.io/angular-modal-gallery-
|
|
141
|
+
You can use all default features without font-awesome. For more info, check official [documentation website](https://ks89.github.io/angular-modal-gallery-2023-v11.github.io/).
|
|
142
|
+
From version @ks89/angular-modal-gallery >= 11.0.0, **mousetrap and hammerjs have been removed as dependencies**.
|
|
144
143
|
|
|
145
144
|
<br>
|
|
146
145
|
|
|
@@ -148,7 +147,7 @@ You can use all default features without font-awesome. For more info, check offi
|
|
|
148
147
|
|
|
149
148
|
*Image loading could be slow, because this website is hosted on Github pages*
|
|
150
149
|
|
|
151
|
-
[OFFICIAL DOCUMENTATION WEBSITE](https://ks89.github.io/angular-modal-gallery-
|
|
150
|
+
[OFFICIAL DOCUMENTATION WEBSITE](https://ks89.github.io/angular-modal-gallery-2023-v11.github.io/)
|
|
152
151
|
|
|
153
152
|
<br>
|
|
154
153
|
|
|
@@ -170,10 +169,12 @@ You can use all default features without font-awesome. For more info, check offi
|
|
|
170
169
|
| Angular 13 | >= 9.0.0 | optional |
|
|
171
170
|
| Angular 14 | >= 9.0.0 | optional |
|
|
172
171
|
| Angular 15 | >= 10.0.0 | optional |
|
|
172
|
+
| Angular 16 | >= 11.0.0 | optional |
|
|
173
173
|
|
|
174
174
|
*Version 8.0.0 requires at least Angular 12.*
|
|
175
175
|
*Version 9.0.0 requires at least Angular 13.*
|
|
176
176
|
*Version 10.0.0 requires at least Angular 15.*
|
|
177
|
+
*Version 11.0.0 requires at least Angular 16.*
|
|
177
178
|
|
|
178
179
|
<br>
|
|
179
180
|
|
|
@@ -181,6 +182,8 @@ You can use all default features without font-awesome. For more info, check offi
|
|
|
181
182
|
|
|
182
183
|
**More than 100 releases in two years**, and more to come... :)
|
|
183
184
|
|
|
185
|
+
- 07/08/2023 - 11.0.0 - @ks89/angular-modal-gallery - [HERE](https://github.com/Ks89/angular-modal-gallery/releases)
|
|
186
|
+
- 06/01/2023 - 11.0.0-rc.1 - @ks89/angular-modal-gallery - [HERE](https://github.com/Ks89/angular-modal-gallery/releases)
|
|
184
187
|
- 11/18/2022 - 10.0.1 - @ks89/angular-modal-gallery - [HERE](https://github.com/Ks89/angular-modal-gallery/releases)
|
|
185
188
|
- 11/17/2022 - 10.0.0 - @ks89/angular-modal-gallery - [HERE](https://github.com/Ks89/angular-modal-gallery/releases)
|
|
186
189
|
- 08/03/2022 - 10.0.0-rc.1 - @ks89/angular-modal-gallery - [HERE](https://github.com/Ks89/angular-modal-gallery/releases)
|
|
@@ -216,15 +219,10 @@ You can use all default features without font-awesome. For more info, check offi
|
|
|
216
219
|
|
|
217
220
|
## :question: FAQS :question:
|
|
218
221
|
|
|
219
|
-
1. Question: **
|
|
220
|
-
**Answer**: Simply run `npm i --save-dev @types/mousetrap`
|
|
221
|
-
2. Question: **I have this error: `Error: No provider for KeyboardService`. What can I do?**<br>
|
|
222
|
-
**Answer**: You forgot to add .forRoot(), so KeyboardService will be never available as a service. Please read section "Installation" [HERE](https://ks89.github.io/angular-modal-gallery-2022-v10.github.io/gettingStarted).
|
|
223
|
-
This is a common design pattern for Angular libraries. For more info check also [this issue](https://github.com/Ks89/angular-modal-gallery/issues/94).
|
|
224
|
-
3. Question: **How can I remove images using DELETE button without issues?**<br>
|
|
222
|
+
1. Question: **How can I remove images using DELETE button without issues?**<br>
|
|
225
223
|
**Answer**: **You cannot change the input image array. Instead, you should reassign it with a newer array** without the deleted element.
|
|
226
224
|
In other words, **you must think in a functional way**, without changing the input array of images.
|
|
227
|
-
For more information check this official demo [HERE](https://ks89.github.io/angular-modal-gallery-
|
|
225
|
+
For more information check this official demo [HERE](https://ks89.github.io/angular-modal-gallery-2023-v11.github.io/demo/buttons-strategies).
|
|
228
226
|
|
|
229
227
|
<br>
|
|
230
228
|
|
|
@@ -262,7 +260,7 @@ In this way, [prettier](https://prettier.io/) will run using my configuration, a
|
|
|
262
260
|
|
|
263
261
|
The MIT License (MIT)
|
|
264
262
|
|
|
265
|
-
Copyright (c) 2017-
|
|
263
|
+
Copyright (c) 2017-2023 Stefano Cappa (Ks89)
|
|
266
264
|
|
|
267
265
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
268
266
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/*
|
|
2
|
+
The MIT License (MIT)
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2017-2023 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 } from '@angular/core';
|
|
25
|
+
import { DIRECTION_RIGHT, MOUSE_MAIN_BUTTON_CLICK, NEXT, NOTHING, PREV, ENTER_CODE, SPACE_CODE } from '../utils/user-input.util';
|
|
26
|
+
import * as i0 from "@angular/core";
|
|
27
|
+
/**
|
|
28
|
+
* Provides some useful methods to add accessibility features to subclasses.
|
|
29
|
+
* In particular, it exposes a method to handle navigation event with both Keyboard and Mouse
|
|
30
|
+
* and another with also the direction (right or left).
|
|
31
|
+
*/
|
|
32
|
+
class AccessibleComponent {
|
|
33
|
+
constructor() { }
|
|
34
|
+
/**
|
|
35
|
+
* Method to handle navigation events with both Keyboard and Mouse.
|
|
36
|
+
* @param string direction of the navigation that can be either 'next' or 'prev'
|
|
37
|
+
* @param KeyboardEvent | MouseEvent event payload
|
|
38
|
+
* @returns number -1 for PREV, 1 for NEXT and 0 for NOTHING
|
|
39
|
+
*/
|
|
40
|
+
handleNavigationEvent(direction, event) {
|
|
41
|
+
if (!event) {
|
|
42
|
+
return NOTHING;
|
|
43
|
+
}
|
|
44
|
+
if (event instanceof KeyboardEvent) {
|
|
45
|
+
return this.handleKeyboardNavigationEvent(direction, event);
|
|
46
|
+
}
|
|
47
|
+
else if (event instanceof MouseEvent) {
|
|
48
|
+
return this.handleMouseNavigationEvent(direction, event);
|
|
49
|
+
}
|
|
50
|
+
return NOTHING;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Method to handle events over an image, for instance a keypress with the Keyboard or a Mouse click.
|
|
54
|
+
* @param event KeyboardEvent | MouseEvent payload
|
|
55
|
+
* @returns number 1 for NEXT and 0 for NOTHING
|
|
56
|
+
*/
|
|
57
|
+
handleImageEvent(event) {
|
|
58
|
+
if (!event) {
|
|
59
|
+
return NOTHING;
|
|
60
|
+
}
|
|
61
|
+
if (event instanceof KeyboardEvent) {
|
|
62
|
+
return this.handleImageKeyboardEvent(event);
|
|
63
|
+
}
|
|
64
|
+
else if (event instanceof MouseEvent) {
|
|
65
|
+
return this.handleImageMouseEvent(event);
|
|
66
|
+
}
|
|
67
|
+
return NOTHING;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Private method to handle keyboard events over an image.
|
|
71
|
+
* @param event KeyboardEvent payload
|
|
72
|
+
* @returns number 1 for NEXT and 0 for NOTHING
|
|
73
|
+
*/
|
|
74
|
+
handleImageKeyboardEvent(event) {
|
|
75
|
+
const key = event.code;
|
|
76
|
+
if (key === SPACE_CODE || key === ENTER_CODE) {
|
|
77
|
+
return NEXT;
|
|
78
|
+
}
|
|
79
|
+
return NOTHING;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Private method to handle mouse events over an image.
|
|
83
|
+
* @param MouseEvent event payload
|
|
84
|
+
* @returns number 1 for NEXT and 0 for NOTHING
|
|
85
|
+
*/
|
|
86
|
+
handleImageMouseEvent(event) {
|
|
87
|
+
const mouseBtn = event.button;
|
|
88
|
+
if (mouseBtn === MOUSE_MAIN_BUTTON_CLICK) {
|
|
89
|
+
return NEXT;
|
|
90
|
+
}
|
|
91
|
+
return NOTHING;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Method to handle events over an image, for instance a keypress with the Keyboard or a Mouse click.
|
|
95
|
+
* @param string direction of the navigation that can be either 'next' or 'prev'
|
|
96
|
+
* @param KeyboardEvent event payload
|
|
97
|
+
* @returns number -1 for PREV, 1 for NEXT and 0 for NOTHING
|
|
98
|
+
*/
|
|
99
|
+
handleKeyboardNavigationEvent(direction, event) {
|
|
100
|
+
const key = event.code;
|
|
101
|
+
if (key === SPACE_CODE || key === ENTER_CODE) {
|
|
102
|
+
return direction === DIRECTION_RIGHT ? NEXT : PREV;
|
|
103
|
+
}
|
|
104
|
+
return NOTHING;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Method to handle events over an image, for instance a keypress with the Keyboard or a Mouse click.
|
|
108
|
+
* @param string direction of the navigation that can be either 'next' or 'prev'
|
|
109
|
+
* @param MouseEvent event payload
|
|
110
|
+
* @returns number -1 for PREV, 1 for NEXT and 0 for NOTHING
|
|
111
|
+
*/
|
|
112
|
+
handleMouseNavigationEvent(direction, event) {
|
|
113
|
+
const mouseBtn = event.button;
|
|
114
|
+
if (mouseBtn === MOUSE_MAIN_BUTTON_CLICK) {
|
|
115
|
+
return direction === DIRECTION_RIGHT ? NEXT : PREV;
|
|
116
|
+
}
|
|
117
|
+
return NOTHING;
|
|
118
|
+
}
|
|
119
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AccessibleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
120
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: AccessibleComponent, selector: "ks-accessible", ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
121
|
+
}
|
|
122
|
+
export { AccessibleComponent };
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AccessibleComponent, decorators: [{
|
|
124
|
+
type: Component,
|
|
125
|
+
args: [{
|
|
126
|
+
selector: 'ks-accessible',
|
|
127
|
+
template: ``,
|
|
128
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
129
|
+
}]
|
|
130
|
+
}], ctorParameters: function () { return []; } });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzaWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9zcmMvbGliL2NvbXBvbmVudHMvYWNjZXNzaWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUVqSTs7OztHQUlHO0FBQ0gsTUFLYSxtQkFBbUI7SUFDOUIsZ0JBQWUsQ0FBQztJQUVoQjs7Ozs7T0FLRztJQUNILHFCQUFxQixDQUFDLFNBQWlCLEVBQUUsS0FBaUM7UUFDeEUsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxLQUFLLFlBQVksYUFBYSxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM3RDthQUFNLElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLEtBQWlDO1FBQ2hELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUNELElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRTtZQUNsQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QzthQUFNLElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssd0JBQXdCLENBQUMsS0FBb0I7UUFDbkQsTUFBTSxHQUFHLEdBQVcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUMvQixJQUFJLEdBQUcsS0FBSyxVQUFVLElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRTtZQUM1QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxxQkFBcUIsQ0FBQyxLQUFpQjtRQUM3QyxNQUFNLFFBQVEsR0FBVyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3RDLElBQUksUUFBUSxLQUFLLHVCQUF1QixFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyw2QkFBNkIsQ0FBQyxTQUFpQixFQUFFLEtBQW9CO1FBQzNFLE1BQU0sR0FBRyxHQUFXLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDL0IsSUFBSSxHQUFHLEtBQUssVUFBVSxJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUU7WUFDNUMsT0FBTyxTQUFTLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUNwRDtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLDBCQUEwQixDQUFDLFNBQWlCLEVBQUUsS0FBaUI7UUFDckUsTUFBTSxRQUFRLEdBQVcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUN0QyxJQUFJLFFBQVEsS0FBSyx1QkFBdUIsRUFBRTtZQUN4QyxPQUFPLFNBQVMsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3BEO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs4R0ExRlUsbUJBQW1CO2tHQUFuQixtQkFBbUIscURBSHBCLEVBQUU7O1NBR0QsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMyBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRElSRUNUSU9OX1JJR0hULCBNT1VTRV9NQUlOX0JVVFRPTl9DTElDSywgTkVYVCwgTk9USElORywgUFJFViwgRU5URVJfQ09ERSwgU1BBQ0VfQ09ERSB9IGZyb20gJy4uL3V0aWxzL3VzZXItaW5wdXQudXRpbCc7XG5cbi8qKlxuICogUHJvdmlkZXMgc29tZSB1c2VmdWwgbWV0aG9kcyB0byBhZGQgYWNjZXNzaWJpbGl0eSBmZWF0dXJlcyB0byBzdWJjbGFzc2VzLlxuICogSW4gcGFydGljdWxhciwgaXQgZXhwb3NlcyBhIG1ldGhvZCB0byBoYW5kbGUgbmF2aWdhdGlvbiBldmVudCB3aXRoIGJvdGggS2V5Ym9hcmQgYW5kIE1vdXNlXG4gKiBhbmQgYW5vdGhlciB3aXRoIGFsc28gdGhlIGRpcmVjdGlvbiAocmlnaHQgb3IgbGVmdCkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tzLWFjY2Vzc2libGUnLFxuICB0ZW1wbGF0ZTogYGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFjY2Vzc2libGVDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBoYW5kbGUgbmF2aWdhdGlvbiBldmVudHMgd2l0aCBib3RoIEtleWJvYXJkIGFuZCBNb3VzZS5cbiAgICogQHBhcmFtIHN0cmluZyBkaXJlY3Rpb24gb2YgdGhlIG5hdmlnYXRpb24gdGhhdCBjYW4gYmUgZWl0aGVyICduZXh0JyBvciAncHJldidcbiAgICogQHBhcmFtIEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50IGV2ZW50IHBheWxvYWRcbiAgICogQHJldHVybnMgbnVtYmVyIC0xIGZvciBQUkVWLCAxIGZvciBORVhUIGFuZCAwIGZvciBOT1RISU5HXG4gICAqL1xuICBoYW5kbGVOYXZpZ2F0aW9uRXZlbnQoZGlyZWN0aW9uOiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50IHwgTW91c2VFdmVudCk6IG51bWJlciB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuIE5PVEhJTkc7XG4gICAgfVxuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUtleWJvYXJkTmF2aWdhdGlvbkV2ZW50KGRpcmVjdGlvbiwgZXZlbnQpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVNb3VzZU5hdmlnYXRpb25FdmVudChkaXJlY3Rpb24sIGV2ZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIE5PVEhJTkc7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGhhbmRsZSBldmVudHMgb3ZlciBhbiBpbWFnZSwgZm9yIGluc3RhbmNlIGEga2V5cHJlc3Mgd2l0aCB0aGUgS2V5Ym9hcmQgb3IgYSBNb3VzZSBjbGljay5cbiAgICogQHBhcmFtIGV2ZW50IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50IHBheWxvYWRcbiAgICogQHJldHVybnMgbnVtYmVyIDEgZm9yIE5FWFQgYW5kIDAgZm9yIE5PVEhJTkdcbiAgICovXG4gIGhhbmRsZUltYWdlRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50KTogbnVtYmVyIHtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICByZXR1cm4gTk9USElORztcbiAgICB9XG4gICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlSW1hZ2VLZXlib2FyZEV2ZW50KGV2ZW50KTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlSW1hZ2VNb3VzZUV2ZW50KGV2ZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIE5PVEhJTkc7XG4gIH1cblxuICAvKipcbiAgICogUHJpdmF0ZSBtZXRob2QgdG8gaGFuZGxlIGtleWJvYXJkIGV2ZW50cyBvdmVyIGFuIGltYWdlLlxuICAgKiBAcGFyYW0gZXZlbnQgS2V5Ym9hcmRFdmVudCBwYXlsb2FkXG4gICAqIEByZXR1cm5zIG51bWJlciAxIGZvciBORVhUIGFuZCAwIGZvciBOT1RISU5HXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZUltYWdlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IG51bWJlciB7XG4gICAgY29uc3Qga2V5OiBzdHJpbmcgPSBldmVudC5jb2RlO1xuICAgIGlmIChrZXkgPT09IFNQQUNFX0NPREUgfHwga2V5ID09PSBFTlRFUl9DT0RFKSB7XG4gICAgICByZXR1cm4gTkVYVDtcbiAgICB9XG4gICAgcmV0dXJuIE5PVEhJTkc7XG4gIH1cblxuICAvKipcbiAgICogUHJpdmF0ZSBtZXRob2QgdG8gaGFuZGxlIG1vdXNlIGV2ZW50cyBvdmVyIGFuIGltYWdlLlxuICAgKiBAcGFyYW0gTW91c2VFdmVudCBldmVudCBwYXlsb2FkXG4gICAqIEByZXR1cm5zIG51bWJlciAxIGZvciBORVhUIGFuZCAwIGZvciBOT1RISU5HXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZUltYWdlTW91c2VFdmVudChldmVudDogTW91c2VFdmVudCk6IG51bWJlciB7XG4gICAgY29uc3QgbW91c2VCdG46IG51bWJlciA9IGV2ZW50LmJ1dHRvbjtcbiAgICBpZiAobW91c2VCdG4gPT09IE1PVVNFX01BSU5fQlVUVE9OX0NMSUNLKSB7XG4gICAgICByZXR1cm4gTkVYVDtcbiAgICB9XG4gICAgcmV0dXJuIE5PVEhJTkc7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGhhbmRsZSBldmVudHMgb3ZlciBhbiBpbWFnZSwgZm9yIGluc3RhbmNlIGEga2V5cHJlc3Mgd2l0aCB0aGUgS2V5Ym9hcmQgb3IgYSBNb3VzZSBjbGljay5cbiAgICogQHBhcmFtIHN0cmluZyBkaXJlY3Rpb24gb2YgdGhlIG5hdmlnYXRpb24gdGhhdCBjYW4gYmUgZWl0aGVyICduZXh0JyBvciAncHJldidcbiAgICogQHBhcmFtIEtleWJvYXJkRXZlbnQgZXZlbnQgcGF5bG9hZFxuICAgKiBAcmV0dXJucyBudW1iZXIgLTEgZm9yIFBSRVYsIDEgZm9yIE5FWFQgYW5kIDAgZm9yIE5PVEhJTkdcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlS2V5Ym9hcmROYXZpZ2F0aW9uRXZlbnQoZGlyZWN0aW9uOiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogbnVtYmVyIHtcbiAgICBjb25zdCBrZXk6IHN0cmluZyA9IGV2ZW50LmNvZGU7XG4gICAgaWYgKGtleSA9PT0gU1BBQ0VfQ09ERSB8fCBrZXkgPT09IEVOVEVSX0NPREUpIHtcbiAgICAgIHJldHVybiBkaXJlY3Rpb24gPT09IERJUkVDVElPTl9SSUdIVCA/IE5FWFQgOiBQUkVWO1xuICAgIH1cbiAgICByZXR1cm4gTk9USElORztcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gaGFuZGxlIGV2ZW50cyBvdmVyIGFuIGltYWdlLCBmb3IgaW5zdGFuY2UgYSBrZXlwcmVzcyB3aXRoIHRoZSBLZXlib2FyZCBvciBhIE1vdXNlIGNsaWNrLlxuICAgKiBAcGFyYW0gc3RyaW5nIGRpcmVjdGlvbiBvZiB0aGUgbmF2aWdhdGlvbiB0aGF0IGNhbiBiZSBlaXRoZXIgJ25leHQnIG9yICdwcmV2J1xuICAgKiBAcGFyYW0gTW91c2VFdmVudCBldmVudCBwYXlsb2FkXG4gICAqIEByZXR1cm5zIG51bWJlciAtMSBmb3IgUFJFViwgMSBmb3IgTkVYVCBhbmQgMCBmb3IgTk9USElOR1xuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVNb3VzZU5hdmlnYXRpb25FdmVudChkaXJlY3Rpb246IHN0cmluZywgZXZlbnQ6IE1vdXNlRXZlbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IG1vdXNlQnRuOiBudW1iZXIgPSBldmVudC5idXR0b247XG4gICAgaWYgKG1vdXNlQnRuID09PSBNT1VTRV9NQUlOX0JVVFRPTl9DTElDSykge1xuICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gRElSRUNUSU9OX1JJR0hUID8gTkVYVCA6IFBSRVY7XG4gICAgfVxuICAgIHJldHVybiBOT1RISU5HO1xuICB9XG59XG4iXX0=
|