@ks89/angular-modal-gallery 8.0.0-beta.5 → 9.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.
Files changed (161) hide show
  1. package/CHANGELOG.md +153 -0
  2. package/CONTRIBUTING.md +20 -38
  3. package/LICENSE +1 -1
  4. package/README.md +36 -42
  5. package/esm2020/ks89-angular-modal-gallery.mjs +5 -0
  6. package/esm2020/lib/components/accessibility-default.mjs +41 -0
  7. package/esm2020/lib/components/accessible.component.mjs +130 -0
  8. package/esm2020/lib/components/carousel/carousel-previews/carousel-previews.component.mjs +462 -0
  9. package/esm2020/lib/components/carousel/carousel.component.mjs +747 -0
  10. package/esm2020/lib/components/components.mjs +50 -0
  11. package/esm2020/lib/components/current-image/current-image.component.mjs +616 -0
  12. package/esm2020/lib/components/current-image/loading-spinner/loading-spinner.component.mjs +80 -0
  13. package/esm2020/lib/components/dots/dots.component.mjs +127 -0
  14. package/esm2020/lib/components/modal-gallery/modal-gallery-ref.mjs +103 -0
  15. package/esm2020/lib/components/modal-gallery/modal-gallery.component.mjs +523 -0
  16. package/esm2020/lib/components/modal-gallery/modal-gallery.service.mjs +187 -0
  17. package/esm2020/lib/components/modal-gallery/modal-gallery.tokens.mjs +26 -0
  18. package/esm2020/lib/components/plain-gallery/plain-gallery.component.mjs +249 -0
  19. package/esm2020/lib/components/previews/previews.component.mjs +332 -0
  20. package/esm2020/lib/components/upper-buttons/upper-buttons-default.mjs +76 -0
  21. package/esm2020/lib/components/upper-buttons/upper-buttons.component.mjs +249 -0
  22. package/esm2020/lib/directives/a-tag-bg-image.directive.mjs +78 -0
  23. package/esm2020/lib/directives/click-outside.directive.mjs +91 -0
  24. package/esm2020/lib/directives/description.directive.mjs +98 -0
  25. package/esm2020/lib/directives/direction.directive.mjs +73 -0
  26. package/esm2020/lib/directives/directives.mjs +49 -0
  27. package/esm2020/lib/directives/fallback-image.directive.mjs +59 -0
  28. package/esm2020/lib/directives/keyboard-navigation.directive.mjs +58 -0
  29. package/esm2020/lib/directives/margin.directive.mjs +84 -0
  30. package/esm2020/lib/directives/max-size.directive.mjs +75 -0
  31. package/esm2020/lib/directives/size.directive.mjs +76 -0
  32. package/{esm2015/lib/directives/size.directive.js → esm2020/lib/directives/wrap.directive.mjs} +23 -22
  33. package/esm2020/lib/modal-gallery.module.mjs +94 -0
  34. package/esm2020/lib/model/accessibility.interface.mjs +25 -0
  35. package/esm2020/lib/model/action.enum.mjs +36 -0
  36. package/esm2020/lib/model/buttons-config.interface.mjs +62 -0
  37. package/esm2020/lib/model/carousel-config.interface.mjs +25 -0
  38. package/esm2020/lib/model/carousel-image-config.interface.mjs +25 -0
  39. package/esm2020/lib/model/carousel-preview-config.interface.mjs +25 -0
  40. package/{esm2015/lib/model/keyboard-service-config.interface.js → esm2020/lib/model/current-image-config.interface.mjs} +2 -2
  41. package/esm2020/lib/model/description.interface.mjs +33 -0
  42. package/{esm2015/lib/model/preview-config.interface.js → esm2020/lib/model/dots-config.interface.mjs} +2 -2
  43. package/esm2020/lib/model/image-internal.class.mjs +35 -0
  44. package/esm2020/lib/model/image.class.mjs +54 -0
  45. package/esm2020/lib/model/interaction-event.interface.mjs +2 -0
  46. package/esm2020/lib/model/keyboard-config.interface.mjs +25 -0
  47. package/esm2020/lib/model/keyboard-service-config.interface.mjs +25 -0
  48. package/esm2020/lib/model/keyboard.enum.mjs +35 -0
  49. package/esm2020/lib/model/lib-config.interface.mjs +25 -0
  50. package/esm2020/lib/model/loading-config.interface.mjs +37 -0
  51. package/{esm2015/lib/model/dots-config.interface.js → esm2020/lib/model/max-size.interface.mjs} +2 -2
  52. package/{esm2015/lib/model/carousel-preview-config.interface.js → esm2020/lib/model/modal-gallery-config.interface.mjs} +2 -2
  53. package/esm2020/lib/model/plain-gallery-config.interface.mjs +55 -0
  54. package/{esm2015/lib/model/image-internal.class.js → esm2020/lib/model/play-config.interface.mjs} +3 -13
  55. package/esm2020/lib/model/preview-config.interface.mjs +25 -0
  56. package/esm2020/lib/model/size.interface.mjs +25 -0
  57. package/{esm2015/lib/model/carousel-config.interface.js → esm2020/lib/model/slide-config.interface.mjs} +2 -2
  58. package/esm2020/lib/services/config.service.mjs +396 -0
  59. package/esm2020/lib/services/id-validator.service.mjs +71 -0
  60. package/esm2020/lib/services/keyboard.service.mjs +111 -0
  61. package/esm2020/lib/utils/image.util.mjs +48 -0
  62. package/esm2020/lib/utils/user-input.util.mjs +104 -0
  63. package/esm2020/public-api.mjs +42 -0
  64. package/fesm2015/ks89-angular-modal-gallery.mjs +5782 -0
  65. package/fesm2015/ks89-angular-modal-gallery.mjs.map +1 -0
  66. package/{fesm2015/ks89-angular-modal-gallery.js → fesm2020/ks89-angular-modal-gallery.mjs} +3046 -2947
  67. package/fesm2020/ks89-angular-modal-gallery.mjs.map +1 -0
  68. package/ks89-angular-modal-gallery.d.ts +1 -24
  69. package/lib/components/accessible.component.d.ts +5 -2
  70. package/lib/components/carousel/carousel-previews/carousel-previews.component.d.ts +7 -11
  71. package/lib/components/carousel/carousel.component.d.ts +28 -67
  72. package/lib/components/current-image/current-image.component.d.ts +10 -4
  73. package/lib/components/current-image/loading-spinner/loading-spinner.component.d.ts +3 -0
  74. package/lib/components/dots/dots.component.d.ts +7 -0
  75. package/lib/components/modal-gallery/modal-gallery-ref.d.ts +35 -0
  76. package/lib/components/modal-gallery/modal-gallery.component.d.ts +58 -50
  77. package/lib/components/modal-gallery/modal-gallery.service.d.ts +60 -1
  78. package/lib/components/plain-gallery/plain-gallery.component.d.ts +18 -9
  79. package/lib/components/previews/previews.component.d.ts +9 -0
  80. package/lib/components/upper-buttons/upper-buttons.component.d.ts +8 -1
  81. package/lib/directives/a-tag-bg-image.directive.d.ts +3 -0
  82. package/lib/directives/click-outside.directive.d.ts +3 -0
  83. package/lib/directives/description.directive.d.ts +3 -0
  84. package/lib/directives/direction.directive.d.ts +3 -0
  85. package/lib/directives/fallback-image.directive.d.ts +6 -0
  86. package/lib/directives/keyboard-navigation.directive.d.ts +4 -1
  87. package/lib/directives/margin.directive.d.ts +3 -0
  88. package/lib/directives/max-size.directive.d.ts +3 -0
  89. package/lib/directives/size.directive.d.ts +5 -2
  90. package/lib/directives/wrap.directive.d.ts +4 -1
  91. package/lib/modal-gallery.module.d.ts +28 -0
  92. package/lib/model/carousel-config.interface.d.ts +0 -1
  93. package/lib/model/keyboard-config.interface.d.ts +4 -4
  94. package/lib/model/keyboard.enum.d.ts +11 -8
  95. package/lib/model/lib-config.interface.d.ts +20 -7
  96. package/lib/model/modal-gallery-config.interface.d.ts +2 -2
  97. package/lib/model/plain-gallery-config.interface.d.ts +1 -9
  98. package/lib/services/config.service.d.ts +3 -0
  99. package/lib/services/id-validator.service.d.ts +5 -1
  100. package/lib/services/keyboard.service.d.ts +5 -2
  101. package/lib/utils/user-input.util.d.ts +35 -26
  102. package/package.json +28 -16
  103. package/public-api.d.ts +2 -2
  104. package/bundles/ks89-angular-modal-gallery.umd.js +0 -5906
  105. package/bundles/ks89-angular-modal-gallery.umd.js.map +0 -1
  106. package/bundles/ks89-angular-modal-gallery.umd.min.js +0 -16
  107. package/bundles/ks89-angular-modal-gallery.umd.min.js.map +0 -1
  108. package/esm2015/ks89-angular-modal-gallery.js +0 -29
  109. package/esm2015/lib/components/accessibility-default.js +0 -41
  110. package/esm2015/lib/components/accessible.component.js +0 -127
  111. package/esm2015/lib/components/carousel/carousel-previews/carousel-previews.component.js +0 -466
  112. package/esm2015/lib/components/carousel/carousel.component.js +0 -772
  113. package/esm2015/lib/components/components.js +0 -50
  114. package/esm2015/lib/components/current-image/current-image.component.js +0 -590
  115. package/esm2015/lib/components/current-image/loading-spinner/loading-spinner.component.js +0 -80
  116. package/esm2015/lib/components/dots/dots.component.js +0 -127
  117. package/esm2015/lib/components/modal-gallery/modal-gallery-ref.js +0 -45
  118. package/esm2015/lib/components/modal-gallery/modal-gallery.component.js +0 -534
  119. package/esm2015/lib/components/modal-gallery/modal-gallery.service.js +0 -135
  120. package/esm2015/lib/components/modal-gallery/modal-gallery.tokens.js +0 -3
  121. package/esm2015/lib/components/plain-gallery/plain-gallery.component.js +0 -243
  122. package/esm2015/lib/components/previews/previews.component.js +0 -331
  123. package/esm2015/lib/components/upper-buttons/upper-buttons-default.js +0 -76
  124. package/esm2015/lib/components/upper-buttons/upper-buttons.component.js +0 -256
  125. package/esm2015/lib/directives/a-tag-bg-image.directive.js +0 -78
  126. package/esm2015/lib/directives/click-outside.directive.js +0 -85
  127. package/esm2015/lib/directives/description.directive.js +0 -99
  128. package/esm2015/lib/directives/direction.directive.js +0 -73
  129. package/esm2015/lib/directives/directives.js +0 -49
  130. package/esm2015/lib/directives/fallback-image.directive.js +0 -54
  131. package/esm2015/lib/directives/keyboard-navigation.directive.js +0 -52
  132. package/esm2015/lib/directives/margin.directive.js +0 -82
  133. package/esm2015/lib/directives/max-size.directive.js +0 -76
  134. package/esm2015/lib/directives/wrap.directive.js +0 -74
  135. package/esm2015/lib/modal-gallery.module.js +0 -64
  136. package/esm2015/lib/model/accessibility.interface.js +0 -25
  137. package/esm2015/lib/model/action.enum.js +0 -36
  138. package/esm2015/lib/model/buttons-config.interface.js +0 -66
  139. package/esm2015/lib/model/carousel-image-config.interface.js +0 -25
  140. package/esm2015/lib/model/current-image-config.interface.js +0 -25
  141. package/esm2015/lib/model/description.interface.js +0 -33
  142. package/esm2015/lib/model/image.class.js +0 -54
  143. package/esm2015/lib/model/interaction-event.interface.js +0 -2
  144. package/esm2015/lib/model/keyboard-config.interface.js +0 -25
  145. package/esm2015/lib/model/keyboard.enum.js +0 -35
  146. package/esm2015/lib/model/lib-config.interface.js +0 -25
  147. package/esm2015/lib/model/loading-config.interface.js +0 -37
  148. package/esm2015/lib/model/max-size.interface.js +0 -25
  149. package/esm2015/lib/model/modal-gallery-config.interface.js +0 -25
  150. package/esm2015/lib/model/plain-gallery-config.interface.js +0 -64
  151. package/esm2015/lib/model/play-config.interface.js +0 -25
  152. package/esm2015/lib/model/size.interface.js +0 -25
  153. package/esm2015/lib/model/slide-config.interface.js +0 -25
  154. package/esm2015/lib/services/config.service.js +0 -392
  155. package/esm2015/lib/services/id-validator.service.js +0 -71
  156. package/esm2015/lib/services/keyboard.service.js +0 -108
  157. package/esm2015/lib/utils/image.util.js +0 -48
  158. package/esm2015/lib/utils/user-input.util.js +0 -95
  159. package/esm2015/public-api.js +0 -46
  160. package/fesm2015/ks89-angular-modal-gallery.js.map +0 -1
  161. package/ks89-angular-modal-gallery.metadata.json +0 -1
@@ -0,0 +1,111 @@
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
+ import { Injectable, Inject, PLATFORM_ID } from '@angular/core';
25
+ import { isPlatformBrowser } from '@angular/common';
26
+ import * as i0 from "@angular/core";
27
+ /**
28
+ * Service to intercept ctrl+s (or cmd+s on macOS) using a third-party library, called Mousetrap.
29
+ */
30
+ export class KeyboardService {
31
+ // tslint:disable-next-line:no-any
32
+ constructor(platformId) {
33
+ this.platformId = platformId;
34
+ }
35
+ init(config) {
36
+ return new Promise((resolve, reject) => {
37
+ // temporary workaround to fix this issue: https://github.com/Ks89/angular-modal-gallery/issues/142
38
+ if (config.keyboardServiceConfig && !config.keyboardServiceConfig.disableSsrWorkaround) {
39
+ // To prevent issues with angular-universal on server-side
40
+ if (isPlatformBrowser(this.platformId)) {
41
+ import('mousetrap')
42
+ // tslint:disable-next-line:no-any
43
+ .then((loaded) => {
44
+ // in this case, the .default is required for Typescript Dynamic Imports
45
+ this.mousetrapInstance = loaded.default;
46
+ resolve();
47
+ return;
48
+ })
49
+ .catch(err => {
50
+ reject(err);
51
+ return;
52
+ });
53
+ }
54
+ else {
55
+ resolve();
56
+ return;
57
+ }
58
+ }
59
+ else {
60
+ resolve();
61
+ return;
62
+ }
63
+ });
64
+ }
65
+ /**
66
+ * Method to add a lister for ctrl+s/cmd+s keyboard events.
67
+ * @param (e: KeyboardEvent, combo: string) => any onBind callback function to add shortcuts
68
+ */
69
+ // tslint:disable-next-line:no-any
70
+ add(onBind, config) {
71
+ // temporary workaround to fix this issue: https://github.com/Ks89/angular-modal-gallery/issues/142
72
+ if (config.keyboardServiceConfig && !config.keyboardServiceConfig.disableSsrWorkaround) {
73
+ // To prevent issues with angular-universal on server-side
74
+ if (isPlatformBrowser(this.platformId)) {
75
+ this.mousetrapInstance.bind(config.keyboardServiceConfig.shortcuts, (event, combo) => {
76
+ if (event.preventDefault) {
77
+ event.preventDefault();
78
+ }
79
+ else {
80
+ // internet explorer
81
+ event.returnValue = false;
82
+ }
83
+ onBind(event, combo);
84
+ });
85
+ }
86
+ }
87
+ }
88
+ /**
89
+ * Method to reset all listeners. Please, call this function when needed
90
+ * to free resources ad prevent leaks.
91
+ */
92
+ reset(config) {
93
+ // temporary workaround to fix this issue: https://github.com/Ks89/angular-modal-gallery/issues/142
94
+ if (config.keyboardServiceConfig && !config.keyboardServiceConfig.disableSsrWorkaround) {
95
+ // To prevent issues with angular-universal on server-side
96
+ if (isPlatformBrowser(this.platformId)) {
97
+ this.mousetrapInstance.reset();
98
+ }
99
+ }
100
+ }
101
+ }
102
+ KeyboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyboardService, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
103
+ KeyboardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyboardService, providedIn: 'root' });
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: KeyboardService, decorators: [{
105
+ type: Injectable,
106
+ args: [{ providedIn: 'root' }]
107
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
108
+ type: Inject,
109
+ args: [PLATFORM_ID]
110
+ }] }]; } });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvc2VydmljZXMva2V5Ym9hcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFJcEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQU8xQixrQ0FBa0M7SUFDbEMsWUFBeUMsVUFBZTtRQUFmLGVBQVUsR0FBVixVQUFVLENBQUs7SUFBRyxDQUFDO0lBRTVELElBQUksQ0FBQyxNQUFpQjtRQUNwQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLG1HQUFtRztZQUNuRyxJQUFJLE1BQU0sQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsRUFBRTtnQkFDdEYsMERBQTBEO2dCQUMxRCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtvQkFDdEMsTUFBTSxDQUFDLFdBQVcsQ0FBQzt3QkFDakIsa0NBQWtDO3lCQUNqQyxJQUFJLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTt3QkFDcEIsd0VBQXdFO3dCQUN4RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQzt3QkFDeEMsT0FBTyxFQUFFLENBQUM7d0JBQ1YsT0FBTztvQkFDVCxDQUFDLENBQUM7eUJBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO3dCQUNYLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDWixPQUFPO29CQUNULENBQUMsQ0FBQyxDQUFDO2lCQUNOO3FCQUFNO29CQUNMLE9BQU8sRUFBRSxDQUFDO29CQUNWLE9BQU87aUJBQ1I7YUFDRjtpQkFBTTtnQkFDTCxPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPO2FBQ1I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQ0FBa0M7SUFDbEMsR0FBRyxDQUFDLE1BQWdELEVBQUUsTUFBaUI7UUFDckUsbUdBQW1HO1FBQ25HLElBQUksTUFBTSxDQUFDLHFCQUFxQixJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixFQUFFO1lBQ3RGLDBEQUEwRDtZQUMxRCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBb0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtvQkFDMUcsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFO3dCQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7cUJBQ3hCO3lCQUFNO3dCQUNMLG9CQUFvQjt3QkFDcEIsS0FBSyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7cUJBQzNCO29CQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBaUI7UUFDckIsbUdBQW1HO1FBQ25HLElBQUksTUFBTSxDQUFDLHFCQUFxQixJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixFQUFFO1lBQ3RGLDBEQUEwRDtZQUMxRCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2hDO1NBQ0Y7SUFDSCxDQUFDOzs0R0ExRVUsZUFBZSxrQkFRTixXQUFXO2dIQVJwQixlQUFlLGNBREYsTUFBTTsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVNuQixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuXG4gQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgU3RlZmFubyBDYXBwYSAoS3M4OSlcblxuIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OIElORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IExpYkNvbmZpZyB9IGZyb20gJy4uL21vZGVsL2xpYi1jb25maWcuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRvIGludGVyY2VwdCBjdHJsK3MgKG9yIGNtZCtzIG9uIG1hY09TKSB1c2luZyBhIHRoaXJkLXBhcnR5IGxpYnJhcnksIGNhbGxlZCBNb3VzZXRyYXAuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgS2V5Ym9hcmRTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFByaXZhdGUgTW91c2V0cmFwIHZhcmlhYmxlIHRvIHN0b3JlIHRoZSBpbnN0YW5jZS5cbiAgICovXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgcHJpdmF0ZSBtb3VzZXRyYXBJbnN0YW5jZTogYW55O1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkpIHt9XG5cbiAgaW5pdChjb25maWc6IExpYkNvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB0byBmaXggdGhpcyBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL0tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L2lzc3Vlcy8xNDJcbiAgICAgIGlmIChjb25maWcua2V5Ym9hcmRTZXJ2aWNlQ29uZmlnICYmICFjb25maWcua2V5Ym9hcmRTZXJ2aWNlQ29uZmlnLmRpc2FibGVTc3JXb3JrYXJvdW5kKSB7XG4gICAgICAgIC8vIFRvIHByZXZlbnQgaXNzdWVzIHdpdGggYW5ndWxhci11bml2ZXJzYWwgb24gc2VydmVyLXNpZGVcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICBpbXBvcnQoJ21vdXNldHJhcCcpXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgICAgICAudGhlbigobG9hZGVkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgLy8gaW4gdGhpcyBjYXNlLCB0aGUgLmRlZmF1bHQgaXMgcmVxdWlyZWQgZm9yIFR5cGVzY3JpcHQgRHluYW1pYyBJbXBvcnRzXG4gICAgICAgICAgICAgIHRoaXMubW91c2V0cmFwSW5zdGFuY2UgPSBsb2FkZWQuZGVmYXVsdDtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gYWRkIGEgbGlzdGVyIGZvciBjdHJsK3MvY21kK3Mga2V5Ym9hcmQgZXZlbnRzLlxuICAgKiBAcGFyYW0gKGU6IEtleWJvYXJkRXZlbnQsIGNvbWJvOiBzdHJpbmcpID0+IGFueSBvbkJpbmQgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYWRkIHNob3J0Y3V0c1xuICAgKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBhZGQob25CaW5kOiAoZTogS2V5Ym9hcmRFdmVudCwgY29tYm86IHN0cmluZykgPT4gYW55LCBjb25maWc6IExpYkNvbmZpZyk6IHZvaWQge1xuICAgIC8vIHRlbXBvcmFyeSB3b3JrYXJvdW5kIHRvIGZpeCB0aGlzIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vS3M4OS9hbmd1bGFyLW1vZGFsLWdhbGxlcnkvaXNzdWVzLzE0MlxuICAgIGlmIChjb25maWcua2V5Ym9hcmRTZXJ2aWNlQ29uZmlnICYmICFjb25maWcua2V5Ym9hcmRTZXJ2aWNlQ29uZmlnLmRpc2FibGVTc3JXb3JrYXJvdW5kKSB7XG4gICAgICAvLyBUbyBwcmV2ZW50IGlzc3VlcyB3aXRoIGFuZ3VsYXItdW5pdmVyc2FsIG9uIHNlcnZlci1zaWRlXG4gICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICB0aGlzLm1vdXNldHJhcEluc3RhbmNlLmJpbmQoY29uZmlnLmtleWJvYXJkU2VydmljZUNvbmZpZy5zaG9ydGN1dHMsIChldmVudDogS2V5Ym9hcmRFdmVudCwgY29tYm86IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaW50ZXJuZXQgZXhwbG9yZXJcbiAgICAgICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9uQmluZChldmVudCwgY29tYm8pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIHJlc2V0IGFsbCBsaXN0ZW5lcnMuIFBsZWFzZSwgY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4gbmVlZGVkXG4gICAqIHRvIGZyZWUgcmVzb3VyY2VzIGFkIHByZXZlbnQgbGVha3MuXG4gICAqL1xuICByZXNldChjb25maWc6IExpYkNvbmZpZyk6IHZvaWQge1xuICAgIC8vIHRlbXBvcmFyeSB3b3JrYXJvdW5kIHRvIGZpeCB0aGlzIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vS3M4OS9hbmd1bGFyLW1vZGFsLWdhbGxlcnkvaXNzdWVzLzE0MlxuICAgIGlmIChjb25maWcua2V5Ym9hcmRTZXJ2aWNlQ29uZmlnICYmICFjb25maWcua2V5Ym9hcmRTZXJ2aWNlQ29uZmlnLmRpc2FibGVTc3JXb3JrYXJvdW5kKSB7XG4gICAgICAvLyBUbyBwcmV2ZW50IGlzc3VlcyB3aXRoIGFuZ3VsYXItdW5pdmVyc2FsIG9uIHNlcnZlci1zaWRlXG4gICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICB0aGlzLm1vdXNldHJhcEluc3RhbmNlLnJlc2V0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,48 @@
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
+ * Utility function to get the index of the input `image` from `arrayOfImages`
26
+ * @param Image image to get the index. The image 'id' must be a number >= 0
27
+ * @param Image[] arrayOfImages to search the image within it
28
+ * @returns number the index of the image. -1 if not found.
29
+ * @throws an Error if either image or arrayOfImages are not valid,
30
+ * or if the input image doesn't contain an 'id', or the 'id' is < 0
31
+ */
32
+ export function getIndex(image, arrayOfImages) {
33
+ if (!image) {
34
+ throw new Error('image must be a valid Image object');
35
+ }
36
+ if (!arrayOfImages) {
37
+ throw new Error('arrayOfImages must be a valid Image[]');
38
+ }
39
+ if (!image.id && image.id !== 0) {
40
+ // id = 0 is admitted
41
+ throw new Error(`A numeric Image 'id' is mandatory`);
42
+ }
43
+ if (image.id < 0) {
44
+ throw new Error(`Image 'id' must be >= 0`);
45
+ }
46
+ return arrayOfImages.findIndex((val) => val.id === image.id);
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9saWIvdXRpbHMvaW1hZ2UudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUlIOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQVksRUFBRSxhQUFzQjtJQUMzRCxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0tBQ3ZEO0lBRUQsSUFBSSxDQUFDLGFBQWEsRUFBRTtRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7S0FDMUQ7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtRQUMvQixxQkFBcUI7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0tBQ3REO0lBRUQsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7S0FDNUM7SUFFRCxPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuXG4gQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgU3RlZmFubyBDYXBwYSAoS3M4OSlcblxuIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OIElORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gJy4uL21vZGVsL2ltYWdlLmNsYXNzJztcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGlucHV0IGBpbWFnZWAgZnJvbSBgYXJyYXlPZkltYWdlc2BcbiAqIEBwYXJhbSBJbWFnZSBpbWFnZSB0byBnZXQgdGhlIGluZGV4LiBUaGUgaW1hZ2UgJ2lkJyBtdXN0IGJlIGEgbnVtYmVyID49IDBcbiAqIEBwYXJhbSBJbWFnZVtdIGFycmF5T2ZJbWFnZXMgdG8gc2VhcmNoIHRoZSBpbWFnZSB3aXRoaW4gaXRcbiAqIEByZXR1cm5zIG51bWJlciB0aGUgaW5kZXggb2YgdGhlIGltYWdlLiAtMSBpZiBub3QgZm91bmQuXG4gKiBAdGhyb3dzIGFuIEVycm9yIGlmIGVpdGhlciBpbWFnZSBvciBhcnJheU9mSW1hZ2VzIGFyZSBub3QgdmFsaWQsXG4gKiAgb3IgaWYgdGhlIGlucHV0IGltYWdlIGRvZXNuJ3QgY29udGFpbiBhbiAnaWQnLCBvciB0aGUgJ2lkJyBpcyA8IDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluZGV4KGltYWdlOiBJbWFnZSwgYXJyYXlPZkltYWdlczogSW1hZ2VbXSk6IG51bWJlciB7XG4gIGlmICghaW1hZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ltYWdlIG11c3QgYmUgYSB2YWxpZCBJbWFnZSBvYmplY3QnKTtcbiAgfVxuXG4gIGlmICghYXJyYXlPZkltYWdlcykge1xuICAgIHRocm93IG5ldyBFcnJvcignYXJyYXlPZkltYWdlcyBtdXN0IGJlIGEgdmFsaWQgSW1hZ2VbXScpO1xuICB9XG5cbiAgaWYgKCFpbWFnZS5pZCAmJiBpbWFnZS5pZCAhPT0gMCkge1xuICAgIC8vIGlkID0gMCBpcyBhZG1pdHRlZFxuICAgIHRocm93IG5ldyBFcnJvcihgQSBudW1lcmljIEltYWdlICdpZCcgaXMgbWFuZGF0b3J5YCk7XG4gIH1cblxuICBpZiAoaW1hZ2UuaWQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbWFnZSAnaWQnIG11c3QgYmUgPj0gMGApO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5T2ZJbWFnZXMuZmluZEluZGV4KCh2YWw6IEltYWdlKSA9PiB2YWwuaWQgPT09IGltYWdlLmlkKTtcbn1cbiJdfQ==
@@ -0,0 +1,104 @@
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
+ * Key of the keyboard's key `enter`
26
+ */
27
+ export const ENTER_KEY = 'Enter';
28
+ /**
29
+ * Code of the keyboard's key `enter`
30
+ */
31
+ export const ENTER_CODE = 'Enter';
32
+ /**
33
+ * Key of the keyboard's key `esc`
34
+ */
35
+ export const ESC_KEY = 'Escape';
36
+ /**
37
+ * Code of the keyboard's key `esc`
38
+ */
39
+ export const ESC_CODE = 'Escape';
40
+ /**
41
+ * Key of the keyboard's key 'right arrow'
42
+ */
43
+ export const RIGHT_ARROW_KEY = 'ArrowRight';
44
+ /**
45
+ * Code of the keyboard's key 'right arrow'
46
+ */
47
+ export const RIGHT_ARROW_CODE = 'ArrowRight';
48
+ /**
49
+ * Key of the keyboard's key 'left arrow'
50
+ */
51
+ export const LEFT_ARROW_KEY = 'ArrowLeft';
52
+ /**
53
+ * Code of the keyboard's key 'left arrow'
54
+ */
55
+ export const LEFT_ARROW_CODE = 'ArrowLeft';
56
+ /**
57
+ * Key of the keyboard's key 'left arrow'
58
+ */
59
+ export const UP_ARROW_KEY = 'ArrowUp';
60
+ /**
61
+ * Code of the keyboard's key 'left arrow'
62
+ */
63
+ export const UP_ARROW_CODE = 'ArrowUp';
64
+ /**
65
+ * Key of the keyboard's key 'left arrow'
66
+ */
67
+ export const DOWN_ARROW_KEY = 'ArrowDown';
68
+ /**
69
+ * Code of the keyboard's key 'left arrow'
70
+ */
71
+ export const DOWN_ARROW_CODE = 'ArrowDown';
72
+ /**
73
+ * Key of the keyboard's key `space`
74
+ */
75
+ export const SPACE_KEY = '';
76
+ /**
77
+ * Code of the keyboard's key `space`
78
+ */
79
+ export const SPACE_CODE = 'Space';
80
+ /**
81
+ * Const to represent the right direction
82
+ */
83
+ export const DIRECTION_RIGHT = 'right';
84
+ /**
85
+ * Const to represent the left direction
86
+ */
87
+ export const DIRECTION_LEFT = 'left';
88
+ /**
89
+ * Keycode of the main mouse button
90
+ */
91
+ export const MOUSE_MAIN_BUTTON_CLICK = 0;
92
+ /**
93
+ * Const NEXT
94
+ */
95
+ export const NEXT = 1;
96
+ /**
97
+ * Const PREV
98
+ */
99
+ export const PREV = -1;
100
+ /**
101
+ * Const NOTHING to represents a situation when it isn't both NEXT and PREV
102
+ */
103
+ export const NOTHING = 0;
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pbnB1dC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3M4OS9hbmd1bGFyLW1vZGFsLWdhbGxlcnkvc3JjL2xpYi91dGlscy91c2VyLWlucHV0LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBVyxPQUFPLENBQUM7QUFDekM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQVcsT0FBTyxDQUFDO0FBRTFDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFXLFFBQVEsQ0FBQztBQUN4Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBVyxRQUFRLENBQUM7QUFDekM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQVcsWUFBWSxDQUFDO0FBQ3BEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQVcsWUFBWSxDQUFDO0FBQ3JEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFXLFdBQVcsQ0FBQztBQUNsRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBVyxXQUFXLENBQUM7QUFDbkQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQVcsU0FBUyxDQUFDO0FBQzlDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFXLFNBQVMsQ0FBQztBQUMvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBVyxXQUFXLENBQUM7QUFDbEQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQVcsV0FBVyxDQUFDO0FBQ25EOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFXLEVBQUUsQ0FBQztBQUNwQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBVyxPQUFPLENBQUM7QUFFMUM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQVcsT0FBTyxDQUFDO0FBQy9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFXLE1BQU0sQ0FBQztBQUc3Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBQztBQUV6Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUM7QUFDdEI7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkI7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcblxuIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIFN0ZWZhbm8gQ2FwcGEgKEtzODkpXG5cbiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cbiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTiBJTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gU09GVFdBUkUuXG4gKi9cblxuLyoqXG4gKiBLZXkgb2YgdGhlIGtleWJvYXJkJ3Mga2V5IGBlbnRlcmBcbiAqL1xuZXhwb3J0IGNvbnN0IEVOVEVSX0tFWTogc3RyaW5nID0gJ0VudGVyJztcbi8qKlxuICogQ29kZSBvZiB0aGUga2V5Ym9hcmQncyBrZXkgYGVudGVyYFxuICovXG5leHBvcnQgY29uc3QgRU5URVJfQ09ERTogc3RyaW5nID0gJ0VudGVyJztcblxuLyoqXG4gKiBLZXkgb2YgdGhlIGtleWJvYXJkJ3Mga2V5IGBlc2NgXG4gKi9cbmV4cG9ydCBjb25zdCBFU0NfS0VZOiBzdHJpbmcgPSAnRXNjYXBlJztcbi8qKlxuICogQ29kZSBvZiB0aGUga2V5Ym9hcmQncyBrZXkgYGVzY2BcbiAqL1xuZXhwb3J0IGNvbnN0IEVTQ19DT0RFOiBzdHJpbmcgPSAnRXNjYXBlJztcbi8qKlxuICogS2V5IG9mIHRoZSBrZXlib2FyZCdzIGtleSAncmlnaHQgYXJyb3cnXG4gKi9cbmV4cG9ydCBjb25zdCBSSUdIVF9BUlJPV19LRVk6IHN0cmluZyA9ICdBcnJvd1JpZ2h0Jztcbi8qKlxuICogQ29kZSBvZiB0aGUga2V5Ym9hcmQncyBrZXkgJ3JpZ2h0IGFycm93J1xuICovXG5leHBvcnQgY29uc3QgUklHSFRfQVJST1dfQ09ERTogc3RyaW5nID0gJ0Fycm93UmlnaHQnO1xuLyoqXG4gKiBLZXkgb2YgdGhlIGtleWJvYXJkJ3Mga2V5ICdsZWZ0IGFycm93J1xuICovXG5leHBvcnQgY29uc3QgTEVGVF9BUlJPV19LRVk6IHN0cmluZyA9ICdBcnJvd0xlZnQnO1xuLyoqXG4gKiBDb2RlIG9mIHRoZSBrZXlib2FyZCdzIGtleSAnbGVmdCBhcnJvdydcbiAqL1xuZXhwb3J0IGNvbnN0IExFRlRfQVJST1dfQ09ERTogc3RyaW5nID0gJ0Fycm93TGVmdCc7XG4vKipcbiAqIEtleSBvZiB0aGUga2V5Ym9hcmQncyBrZXkgJ2xlZnQgYXJyb3cnXG4gKi9cbmV4cG9ydCBjb25zdCBVUF9BUlJPV19LRVk6IHN0cmluZyA9ICdBcnJvd1VwJztcbi8qKlxuICogQ29kZSBvZiB0aGUga2V5Ym9hcmQncyBrZXkgJ2xlZnQgYXJyb3cnXG4gKi9cbmV4cG9ydCBjb25zdCBVUF9BUlJPV19DT0RFOiBzdHJpbmcgPSAnQXJyb3dVcCc7XG4vKipcbiAqIEtleSBvZiB0aGUga2V5Ym9hcmQncyBrZXkgJ2xlZnQgYXJyb3cnXG4gKi9cbmV4cG9ydCBjb25zdCBET1dOX0FSUk9XX0tFWTogc3RyaW5nID0gJ0Fycm93RG93bic7XG4vKipcbiAqIENvZGUgb2YgdGhlIGtleWJvYXJkJ3Mga2V5ICdsZWZ0IGFycm93J1xuICovXG5leHBvcnQgY29uc3QgRE9XTl9BUlJPV19DT0RFOiBzdHJpbmcgPSAnQXJyb3dEb3duJztcbi8qKlxuICogS2V5IG9mIHRoZSBrZXlib2FyZCdzIGtleSBgc3BhY2VgXG4gKi9cbmV4cG9ydCBjb25zdCBTUEFDRV9LRVkgOiBzdHJpbmc9ICcnO1xuLyoqXG4gKiBDb2RlIG9mIHRoZSBrZXlib2FyZCdzIGtleSBgc3BhY2VgXG4gKi9cbmV4cG9ydCBjb25zdCBTUEFDRV9DT0RFOiBzdHJpbmcgPSAnU3BhY2UnO1xuXG4vKipcbiAqIENvbnN0IHRvIHJlcHJlc2VudCB0aGUgcmlnaHQgZGlyZWN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBESVJFQ1RJT05fUklHSFQ6IHN0cmluZyA9ICdyaWdodCc7XG4vKipcbiAqIENvbnN0IHRvIHJlcHJlc2VudCB0aGUgbGVmdCBkaXJlY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IERJUkVDVElPTl9MRUZUOiBzdHJpbmcgPSAnbGVmdCc7XG5cblxuLyoqXG4gKiBLZXljb2RlIG9mIHRoZSBtYWluIG1vdXNlIGJ1dHRvblxuICovXG5leHBvcnQgY29uc3QgTU9VU0VfTUFJTl9CVVRUT05fQ0xJQ0sgPSAwO1xuXG4vKipcbiAqIENvbnN0IE5FWFRcbiAqL1xuZXhwb3J0IGNvbnN0IE5FWFQgPSAxO1xuLyoqXG4gKiBDb25zdCBQUkVWXG4gKi9cbmV4cG9ydCBjb25zdCBQUkVWID0gLTE7XG4vKipcbiAqIENvbnN0IE5PVEhJTkcgdG8gcmVwcmVzZW50cyBhIHNpdHVhdGlvbiB3aGVuIGl0IGlzbid0IGJvdGggTkVYVCBhbmQgUFJFVlxuICovXG5leHBvcnQgY29uc3QgTk9USElORyA9IDA7XG4iXX0=
@@ -0,0 +1,42 @@
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
+ * Index file to export all interfaces, enums, classes and so on.
26
+ * This file represents the public apis.
27
+ */
28
+ export { GalleryModule } from './lib/modal-gallery.module';
29
+ export { Action } from './lib/model/action.enum';
30
+ export { Image, ImageEvent, ImageModalEvent } from './lib/model/image.class';
31
+ export { DescriptionStrategy } from './lib/model/description.interface';
32
+ export { ButtonsStrategy, ButtonType } from './lib/model/buttons-config.interface';
33
+ export { LoadingType } from './lib/model/loading-config.interface';
34
+ export { KS_DEFAULT_ACCESSIBILITY_CONFIG } from './lib/components/accessibility-default';
35
+ export { KS_DEFAULT_BTN_FULL_SCREEN, KS_DEFAULT_BTN_CLOSE, KS_DEFAULT_BTN_DELETE, KS_DEFAULT_BTN_DOWNLOAD, KS_DEFAULT_BTN_EXTURL, KS_DEFAULT_SIZE } from './lib/components/upper-buttons/upper-buttons-default';
36
+ export { LineLayout, GridLayout, PlainGalleryStrategy } from './lib/model/plain-gallery-config.interface';
37
+ export { ModalGalleryComponent } from './lib/components/modal-gallery/modal-gallery.component';
38
+ export { PlainGalleryComponent } from './lib/components/plain-gallery/plain-gallery.component';
39
+ export { CarouselComponent } from './lib/components/carousel/carousel.component';
40
+ export { ModalGalleryService } from './lib/components/modal-gallery/modal-gallery.service';
41
+ export { ModalGalleryRef } from './lib/components/modal-gallery/modal-gallery-ref';
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUg7OztHQUdHO0FBRUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUEwQixVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckcsT0FBTyxFQUFlLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFhckYsT0FBTyxFQUFpQixlQUFlLEVBQUUsVUFBVSxFQUFlLE1BQU0sc0NBQXNDLENBQUM7QUFRL0csT0FBTyxFQUFpQixXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUlsRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RixPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixlQUFlLEVBQ2hCLE1BQU0sc0RBQXNELENBQUM7QUFFOUQsT0FBTyxFQUdMLFVBQVUsRUFDVixVQUFVLEVBQ1Ysb0JBQW9CLEVBRXJCLE1BQU0sNENBQTRDLENBQUM7QUFFcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDL0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDM0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtEQUFrRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcblxuIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIFN0ZWZhbm8gQ2FwcGEgKEtzODkpXG5cbiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cbiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTiBJTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gU09GVFdBUkUuXG4gKi9cblxuLyoqXG4gKiBJbmRleCBmaWxlIHRvIGV4cG9ydCBhbGwgaW50ZXJmYWNlcywgZW51bXMsIGNsYXNzZXMgYW5kIHNvIG9uLlxuICogVGhpcyBmaWxlIHJlcHJlc2VudHMgdGhlIHB1YmxpYyBhcGlzLlxuICovXG5cbmV4cG9ydCB7IEdhbGxlcnlNb2R1bGUgfSBmcm9tICcuL2xpYi9tb2RhbC1nYWxsZXJ5Lm1vZHVsZSc7XG5cbmV4cG9ydCB7IEFjdGlvbiB9IGZyb20gJy4vbGliL21vZGVsL2FjdGlvbi5lbnVtJztcbmV4cG9ydCB7IEltYWdlLCBQbGFpbkltYWdlLCBNb2RhbEltYWdlLCBJbWFnZUV2ZW50LCBJbWFnZU1vZGFsRXZlbnQgfSBmcm9tICcuL2xpYi9tb2RlbC9pbWFnZS5jbGFzcyc7XG5leHBvcnQgeyBEZXNjcmlwdGlvbiwgRGVzY3JpcHRpb25TdHJhdGVneSB9IGZyb20gJy4vbGliL21vZGVsL2Rlc2NyaXB0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgeyBLZXlib2FyZENvbmZpZyB9IGZyb20gJy4vbGliL21vZGVsL2tleWJvYXJkLWNvbmZpZy5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgRG90c0NvbmZpZyB9IGZyb20gJy4vbGliL21vZGVsL2RvdHMtY29uZmlnLmludGVyZmFjZSc7XG5leHBvcnQgeyBQcmV2aWV3Q29uZmlnIH0gZnJvbSAnLi9saWIvbW9kZWwvcHJldmlldy1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCB7IEFjY2Vzc2liaWxpdHlDb25maWcgfSBmcm9tICcuL2xpYi9tb2RlbC9hY2Nlc3NpYmlsaXR5LmludGVyZmFjZSc7XG5cbmV4cG9ydCB7IEJyZWFrcG9pbnRzQ29uZmlnLCBDYXJvdXNlbFByZXZpZXdDb25maWcgfSBmcm9tICcuL2xpYi9tb2RlbC9jYXJvdXNlbC1wcmV2aWV3LWNvbmZpZy5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgQ2Fyb3VzZWxDb25maWcgfSBmcm9tICcuL2xpYi9tb2RlbC9jYXJvdXNlbC1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCB7IFBsYXlDb25maWcgfSBmcm9tICcuL2xpYi9tb2RlbC9wbGF5LWNvbmZpZy5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgQ2Fyb3VzZWxJbWFnZUNvbmZpZyB9IGZyb20gJy4vbGliL21vZGVsL2Nhcm91c2VsLWltYWdlLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgeyBTaXplIH0gZnJvbSAnLi9saWIvbW9kZWwvc2l6ZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgeyBCdXR0b25zQ29uZmlnLCBCdXR0b25zU3RyYXRlZ3ksIEJ1dHRvblR5cGUsIEJ1dHRvbkV2ZW50IH0gZnJvbSAnLi9saWIvbW9kZWwvYnV0dG9ucy1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgTW9kYWxMaWJDb25maWcsIFBsYWluTGliQ29uZmlnLCBDYXJvdXNlbExpYkNvbmZpZyB9IGZyb20gJy4vbGliL21vZGVsL2xpYi1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgTW9kYWxHYWxsZXJ5Q29uZmlnIH0gZnJvbSAnLi9saWIvbW9kZWwvbW9kYWwtZ2FsbGVyeS1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgQ3VycmVudEltYWdlQ29uZmlnIH0gZnJvbSAnLi9saWIvbW9kZWwvY3VycmVudC1pbWFnZS1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgTG9hZGluZ0NvbmZpZywgTG9hZGluZ1R5cGUgfSBmcm9tICcuL2xpYi9tb2RlbC9sb2FkaW5nLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgeyBJbnRlcmFjdGlvbkV2ZW50IH0gZnJvbSAnLi9saWIvbW9kZWwvaW50ZXJhY3Rpb24tZXZlbnQuaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgS1NfREVGQVVMVF9BQ0NFU1NJQklMSVRZX0NPTkZJRyB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWNjZXNzaWJpbGl0eS1kZWZhdWx0JztcbmV4cG9ydCB7XG4gIEtTX0RFRkFVTFRfQlROX0ZVTExfU0NSRUVOLFxuICBLU19ERUZBVUxUX0JUTl9DTE9TRSxcbiAgS1NfREVGQVVMVF9CVE5fREVMRVRFLFxuICBLU19ERUZBVUxUX0JUTl9ET1dOTE9BRCxcbiAgS1NfREVGQVVMVF9CVE5fRVhUVVJMLFxuICBLU19ERUZBVUxUX1NJWkVcbn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy91cHBlci1idXR0b25zL3VwcGVyLWJ1dHRvbnMtZGVmYXVsdCc7XG5cbmV4cG9ydCB7XG4gIFBsYWluR2FsbGVyeUNvbmZpZyxcbiAgUGxhaW5HYWxsZXJ5TGF5b3V0LFxuICBMaW5lTGF5b3V0LFxuICBHcmlkTGF5b3V0LFxuICBQbGFpbkdhbGxlcnlTdHJhdGVneSxcbiAgQnJlYWtDb25maWdcbn0gZnJvbSAnLi9saWIvbW9kZWwvcGxhaW4tZ2FsbGVyeS1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgTW9kYWxHYWxsZXJ5Q29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2RhbC1nYWxsZXJ5L21vZGFsLWdhbGxlcnkuY29tcG9uZW50JztcbmV4cG9ydCB7IFBsYWluR2FsbGVyeUNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGxhaW4tZ2FsbGVyeS9wbGFpbi1nYWxsZXJ5LmNvbXBvbmVudCc7XG5leHBvcnQgeyBDYXJvdXNlbENvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50JztcblxuZXhwb3J0IHsgTW9kYWxHYWxsZXJ5U2VydmljZSB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9kYWwtZ2FsbGVyeS9tb2RhbC1nYWxsZXJ5LnNlcnZpY2UnO1xuZXhwb3J0IHsgTW9kYWxHYWxsZXJ5UmVmIH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2RhbC1nYWxsZXJ5L21vZGFsLWdhbGxlcnktcmVmJztcbiJdfQ==