@sebgroup/green-angular 4.5.0 → 4.6.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 (203) hide show
  1. package/esm2022/index.mjs +1 -1
  2. package/esm2022/lib/shared/on-scroll.directive.mjs +2 -2
  3. package/esm2022/src/lib/shared/on-scroll.directive.mjs +2 -2
  4. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +287 -0
  5. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +17 -0
  6. package/esm2022/src/v-angular/base-control-value-accessor/index.mjs +3 -0
  7. package/esm2022/src/v-angular/base-control-value-accessor/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +5 -0
  8. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.component.mjs +25 -0
  9. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.module.mjs +20 -0
  10. package/esm2022/src/v-angular/breadcrumbs/index.mjs +3 -0
  11. package/esm2022/src/v-angular/breadcrumbs/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +5 -0
  12. package/esm2022/src/v-angular/button/button.component.mjs +108 -0
  13. package/esm2022/src/v-angular/button/button.module.mjs +20 -0
  14. package/esm2022/src/v-angular/button/index.mjs +3 -0
  15. package/esm2022/src/v-angular/button/sebgroup-green-angular-src-v-angular-button.mjs +5 -0
  16. package/esm2022/src/v-angular/card/card.component.mjs +11 -0
  17. package/esm2022/src/v-angular/card/card.module.mjs +18 -0
  18. package/esm2022/src/v-angular/card/index.mjs +3 -0
  19. package/esm2022/src/v-angular/card/sebgroup-green-angular-src-v-angular-card.mjs +5 -0
  20. package/esm2022/src/v-angular/character-countdown/character-countdown.directive.mjs +51 -0
  21. package/esm2022/src/v-angular/character-countdown/character-countdown.module.mjs +18 -0
  22. package/esm2022/src/v-angular/character-countdown/index.mjs +3 -0
  23. package/esm2022/src/v-angular/character-countdown/sebgroup-green-angular-src-v-angular-character-countdown.mjs +5 -0
  24. package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +72 -0
  25. package/esm2022/src/v-angular/checkbox/checkbox.module.mjs +19 -0
  26. package/esm2022/src/v-angular/checkbox/index.mjs +3 -0
  27. package/esm2022/src/v-angular/checkbox/sebgroup-green-angular-src-v-angular-checkbox.mjs +5 -0
  28. package/esm2022/src/v-angular/core/core.globals.mjs +20 -0
  29. package/esm2022/src/v-angular/core/core.utils.mjs +28 -0
  30. package/esm2022/src/v-angular/core/index.mjs +3 -0
  31. package/esm2022/src/v-angular/core/sebgroup-green-angular-src-v-angular-core.mjs +5 -0
  32. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +256 -0
  33. package/esm2022/src/v-angular/dropdown/dropdown-list/index.mjs +2 -0
  34. package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +239 -0
  35. package/esm2022/src/v-angular/dropdown/dropdown.module.mjs +22 -0
  36. package/esm2022/src/v-angular/dropdown/index.mjs +6 -0
  37. package/esm2022/src/v-angular/dropdown/sebgroup-green-angular-src-v-angular-dropdown.mjs +5 -0
  38. package/esm2022/src/v-angular/dropdown/typeahead/index.mjs +3 -0
  39. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +98 -0
  40. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +85 -0
  41. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +132 -0
  42. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.module.mjs +33 -0
  43. package/esm2022/src/v-angular/external-link/external-link.directive.mjs +37 -0
  44. package/esm2022/src/v-angular/external-link/external-link.module.mjs +18 -0
  45. package/esm2022/src/v-angular/external-link/index.mjs +3 -0
  46. package/esm2022/src/v-angular/external-link/sebgroup-green-angular-src-v-angular-external-link.mjs +5 -0
  47. package/esm2022/src/v-angular/i18n/i18n.json +12 -0
  48. package/esm2022/src/v-angular/i18n/i18n.module.mjs +83 -0
  49. package/esm2022/src/v-angular/i18n/i18n.test.module.mjs +89 -0
  50. package/esm2022/src/v-angular/i18n/index.mjs +3 -0
  51. package/esm2022/src/v-angular/i18n/sebgroup-green-angular-src-v-angular-i18n.mjs +5 -0
  52. package/esm2022/src/v-angular/info-circle/index.mjs +3 -0
  53. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +28 -0
  54. package/esm2022/src/v-angular/info-circle/info-circle.module.mjs +21 -0
  55. package/esm2022/src/v-angular/info-circle/sebgroup-green-angular-src-v-angular-info-circle.mjs +5 -0
  56. package/esm2022/src/v-angular/input/index.mjs +3 -0
  57. package/esm2022/src/v-angular/input/input.component.mjs +221 -0
  58. package/esm2022/src/v-angular/input/input.module.mjs +32 -0
  59. package/esm2022/src/v-angular/input/sebgroup-green-angular-src-v-angular-input.mjs +5 -0
  60. package/esm2022/src/v-angular/input-mask/config.mjs +9 -0
  61. package/esm2022/src/v-angular/input-mask/constants.mjs +2 -0
  62. package/esm2022/src/v-angular/input-mask/index.mjs +6 -0
  63. package/esm2022/src/v-angular/input-mask/input-mask-format.pipe.mjs +20 -0
  64. package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +165 -0
  65. package/esm2022/src/v-angular/input-mask/input-mask.module.mjs +35 -0
  66. package/esm2022/src/v-angular/input-mask/input-mask.types.mjs +2 -0
  67. package/esm2022/src/v-angular/input-mask/sebgroup-green-angular-src-v-angular-input-mask.mjs +5 -0
  68. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +190 -0
  69. package/esm2022/src/v-angular/modal/fold-out/fold-out.component.mjs +56 -0
  70. package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +19 -0
  71. package/esm2022/src/v-angular/modal/index.mjs +6 -0
  72. package/esm2022/src/v-angular/modal/modal.globals.mjs +20 -0
  73. package/esm2022/src/v-angular/modal/modal.module.mjs +40 -0
  74. package/esm2022/src/v-angular/modal/modal.types.mjs +2 -0
  75. package/esm2022/src/v-angular/modal/sebgroup-green-angular-src-v-angular-modal.mjs +5 -0
  76. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +229 -0
  77. package/esm2022/src/v-angular/radio/index.mjs +3 -0
  78. package/esm2022/src/v-angular/radio/radio.component.mjs +130 -0
  79. package/esm2022/src/v-angular/radio/radio.module.mjs +20 -0
  80. package/esm2022/src/v-angular/radio/sebgroup-green-angular-src-v-angular-radio.mjs +5 -0
  81. package/esm2022/src/v-angular/slug/index.mjs +3 -0
  82. package/esm2022/src/v-angular/slug/sebgroup-green-angular-src-v-angular-slug.mjs +5 -0
  83. package/esm2022/src/v-angular/slug/slug.module.mjs +18 -0
  84. package/esm2022/src/v-angular/slug/slug.pipe.mjs +27 -0
  85. package/esm2022/src/v-angular/textarea/index.mjs +3 -0
  86. package/esm2022/src/v-angular/textarea/sebgroup-green-angular-src-v-angular-textarea.mjs +5 -0
  87. package/esm2022/src/v-angular/textarea/textarea.component.mjs +101 -0
  88. package/esm2022/src/v-angular/textarea/textarea.module.mjs +18 -0
  89. package/esm2022/src/v-angular/tooltip/index.mjs +3 -0
  90. package/esm2022/src/v-angular/tooltip/sebgroup-green-angular-src-v-angular-tooltip.mjs +5 -0
  91. package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +273 -0
  92. package/esm2022/src/v-angular/tooltip/tooltip.module.mjs +18 -0
  93. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs +1 -1
  94. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs.map +1 -1
  95. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +308 -0
  96. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -0
  97. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +49 -0
  98. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -0
  99. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +131 -0
  100. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -0
  101. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +33 -0
  102. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -0
  103. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +73 -0
  104. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -0
  105. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +94 -0
  106. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -0
  107. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +54 -0
  108. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -0
  109. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +830 -0
  110. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -0
  111. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs +58 -0
  112. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs.map +1 -0
  113. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs +192 -0
  114. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs.map +1 -0
  115. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +53 -0
  116. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -0
  117. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +226 -0
  118. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -0
  119. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +256 -0
  120. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -0
  121. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +545 -0
  122. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -0
  123. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +153 -0
  124. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -0
  125. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs +49 -0
  126. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs.map +1 -0
  127. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +122 -0
  128. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -0
  129. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +295 -0
  130. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -0
  131. package/fesm2022/sebgroup-green-angular.mjs +1 -1
  132. package/fesm2022/sebgroup-green-angular.mjs.map +1 -1
  133. package/package.json +115 -4
  134. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +124 -0
  135. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +7 -0
  136. package/src/v-angular/base-control-value-accessor/index.d.ts +2 -0
  137. package/src/v-angular/breadcrumbs/breadcrumbs.component.d.ts +18 -0
  138. package/src/v-angular/breadcrumbs/breadcrumbs.module.d.ts +10 -0
  139. package/src/v-angular/breadcrumbs/index.d.ts +2 -0
  140. package/src/v-angular/button/button.component.d.ts +62 -0
  141. package/src/v-angular/button/button.module.d.ts +10 -0
  142. package/src/v-angular/button/index.d.ts +2 -0
  143. package/src/v-angular/card/card.component.d.ts +5 -0
  144. package/src/v-angular/card/card.module.d.ts +8 -0
  145. package/src/v-angular/card/index.d.ts +2 -0
  146. package/src/v-angular/character-countdown/character-countdown.directive.d.ts +17 -0
  147. package/src/v-angular/character-countdown/character-countdown.module.d.ts +8 -0
  148. package/src/v-angular/character-countdown/index.d.ts +2 -0
  149. package/src/v-angular/checkbox/checkbox.component.d.ts +27 -0
  150. package/src/v-angular/checkbox/checkbox.module.d.ts +9 -0
  151. package/src/v-angular/checkbox/index.d.ts +2 -0
  152. package/src/v-angular/core/core.globals.d.ts +13 -0
  153. package/src/v-angular/core/core.utils.d.ts +22 -0
  154. package/src/v-angular/core/index.d.ts +2 -0
  155. package/src/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +89 -0
  156. package/src/v-angular/dropdown/dropdown-list/index.d.ts +1 -0
  157. package/src/v-angular/dropdown/dropdown.component.d.ts +99 -0
  158. package/src/v-angular/dropdown/dropdown.module.d.ts +12 -0
  159. package/src/v-angular/dropdown/index.d.ts +5 -0
  160. package/src/v-angular/dropdown/typeahead/index.d.ts +2 -0
  161. package/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +34 -0
  162. package/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +34 -0
  163. package/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +59 -0
  164. package/src/v-angular/dropdown/typeahead/typeahead.module.d.ts +11 -0
  165. package/src/v-angular/external-link/external-link.directive.d.ts +17 -0
  166. package/src/v-angular/external-link/external-link.module.d.ts +8 -0
  167. package/src/v-angular/external-link/index.d.ts +2 -0
  168. package/src/v-angular/i18n/i18n.module.d.ts +15 -0
  169. package/src/v-angular/i18n/i18n.test.module.d.ts +27 -0
  170. package/src/v-angular/i18n/index.d.ts +2 -0
  171. package/src/v-angular/info-circle/index.d.ts +2 -0
  172. package/src/v-angular/info-circle/info-circle.component.d.ts +16 -0
  173. package/src/v-angular/info-circle/info-circle.module.d.ts +10 -0
  174. package/src/v-angular/input/index.d.ts +2 -0
  175. package/src/v-angular/input/input.component.d.ts +90 -0
  176. package/src/v-angular/input/input.module.d.ts +11 -0
  177. package/src/v-angular/input-mask/config.d.ts +6 -0
  178. package/src/v-angular/input-mask/constants.d.ts +2 -0
  179. package/src/v-angular/input-mask/index.d.ts +5 -0
  180. package/src/v-angular/input-mask/input-mask-format.pipe.d.ts +8 -0
  181. package/src/v-angular/input-mask/input-mask.directive.d.ts +39 -0
  182. package/src/v-angular/input-mask/input-mask.module.d.ts +11 -0
  183. package/src/v-angular/input-mask/input-mask.types.d.ts +20 -0
  184. package/src/v-angular/modal/dialog/dialog.component.d.ts +55 -0
  185. package/src/v-angular/modal/fold-out/fold-out.component.d.ts +24 -0
  186. package/src/v-angular/modal/fold-out/fold-out.directive.d.ts +6 -0
  187. package/src/v-angular/modal/index.d.ts +5 -0
  188. package/src/v-angular/modal/modal.globals.d.ts +13 -0
  189. package/src/v-angular/modal/modal.module.d.ts +13 -0
  190. package/src/v-angular/modal/modal.types.d.ts +5 -0
  191. package/src/v-angular/modal/slide-out/slide-out.component.d.ts +76 -0
  192. package/src/v-angular/radio/index.d.ts +2 -0
  193. package/src/v-angular/radio/radio.component.d.ts +48 -0
  194. package/src/v-angular/radio/radio.module.d.ts +9 -0
  195. package/src/v-angular/slug/index.d.ts +2 -0
  196. package/src/v-angular/slug/slug.module.d.ts +8 -0
  197. package/src/v-angular/slug/slug.pipe.d.ts +12 -0
  198. package/src/v-angular/textarea/index.d.ts +2 -0
  199. package/src/v-angular/textarea/textarea.component.d.ts +44 -0
  200. package/src/v-angular/textarea/textarea.module.d.ts +8 -0
  201. package/src/v-angular/tooltip/index.d.ts +2 -0
  202. package/src/v-angular/tooltip/tooltip.directive.d.ts +106 -0
  203. package/src/v-angular/tooltip/tooltip.module.d.ts +8 -0
@@ -0,0 +1,19 @@
1
+ import { Directive, HostBinding } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NgvFoldOutOptionDirective {
4
+ constructor() {
5
+ this.baseClass = true;
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvFoldOutOptionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NgvFoldOutOptionDirective, selector: "[ngvOption]", host: { properties: { "class.sdv-field-dropdown__options__label": "this.baseClass" } }, ngImport: i0 }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvFoldOutOptionDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[ngvOption]',
14
+ }]
15
+ }], propDecorators: { baseClass: [{
16
+ type: HostBinding,
17
+ args: ['class.sdv-field-dropdown__options__label']
18
+ }] } });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sZC1vdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwvZm9sZC1vdXQvZm9sZC1vdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBOztBQUt0RCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBSTJELGNBQVMsR0FBRyxJQUFJLENBQUE7S0FDMUU7K0dBRlkseUJBQXlCO21HQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBSHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCOzhCQUUwRCxTQUFTO3NCQUFqRSxXQUFXO3VCQUFDLDBDQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmd2T3B0aW9uXScsXG59KVxuZXhwb3J0IGNsYXNzIE5ndkZvbGRPdXRPcHRpb25EaXJlY3RpdmUge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNkdi1maWVsZC1kcm9wZG93bl9fb3B0aW9uc19fbGFiZWwnKSBiYXNlQ2xhc3MgPSB0cnVlXG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * from './modal.module';
2
+ export * from './dialog/dialog.component';
3
+ export * from './slide-out/slide-out.component';
4
+ export * from './fold-out/fold-out.component';
5
+ export * from './fold-out/fold-out.directive';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9tb2RhbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYyxpQ0FBaUMsQ0FBQTtBQUMvQyxjQUFjLCtCQUErQixDQUFBO0FBQzdDLGNBQWMsK0JBQStCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZGFsLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL3NsaWRlLW91dC9zbGlkZS1vdXQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9mb2xkLW91dC9mb2xkLW91dC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2ZvbGQtb3V0L2ZvbGQtb3V0LmRpcmVjdGl2ZSdcbiJdfQ==
@@ -0,0 +1,20 @@
1
+ ;
2
+ (() => {
3
+ // Make sure there is an incremental ID each component can use
4
+ if (typeof window !== 'undefined' && !window.ngv) {
5
+ window.ngv = {
6
+ ids: { default: -1 },
7
+ nextId(namespace = 'default') {
8
+ let id = this.ids[namespace] || 0;
9
+ if (typeof this.ids[namespace] === 'number')
10
+ id++;
11
+ this.ids[namespace] = id;
12
+ return namespace === 'default'
13
+ ? `nggv-${id}`
14
+ : `nggv-${namespace}-${id}`;
15
+ },
16
+ };
17
+ }
18
+ })();
19
+ export {};
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuZ2xvYmFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL21vZGFsL21vZGFsLmdsb2JhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0EsQ0FBQztBQUFBLENBQUMsR0FBRyxFQUFFO0lBQ0wsOERBQThEO0lBQzlELElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUNoRCxNQUFNLENBQUMsR0FBRyxHQUFHO1lBQ1gsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUztnQkFDMUIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ2pDLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLFFBQVE7b0JBQUUsRUFBRSxFQUFFLENBQUE7Z0JBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFBO2dCQUN4QixPQUFPLFNBQVMsS0FBSyxTQUFTO29CQUM1QixDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ2QsQ0FBQyxDQUFDLFFBQVEsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFBO1lBQy9CLENBQUM7U0FDRixDQUFBO0tBQ0Y7QUFDSCxDQUFDLENBQUMsRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gV2UgbXVzdCBmb3JjZSB0c2MgdG8gaW50ZXJwcmV0IHRoaXMgZmlsZSBhcyBhIG1vZHVsZSwgcmVzb2x2ZXNcbi8vIFwiQXVnbWVudGF0aW9ucyBmb3IgdGhlIGdsb2JhbCBzY29wZSBjYW4gb25seSBiZSBkaXJlY3RseSBuZXN0ZWQgaW4gZXh0ZXJuYWwgbW9kdWxlcyBvciBhbWJpZW50IG1vZHVsZSBkZWNsYXJhdGlvbnMuXCJcbmV4cG9ydCB7fVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIC8qKiBDb3VudGVyIGZvciB1bmlxdWUgaWRlbnRpZmllcnMgKi9cbiAgICBuZ3Y6IHtcbiAgICAgIGlkczogeyBbbmFtZXNwYWNlOiBzdHJpbmddOiBudW1iZXI7IGRlZmF1bHQ6IG51bWJlciB9XG4gICAgICBuZXh0SWQ6IChuYW1lc3BhY2U/OiBzdHJpbmcpID0+IHN0cmluZ1xuICAgIH1cbiAgfVxufVxuXG47KCgpID0+IHtcbiAgLy8gTWFrZSBzdXJlIHRoZXJlIGlzIGFuIGluY3JlbWVudGFsIElEIGVhY2ggY29tcG9uZW50IGNhbiB1c2VcbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICF3aW5kb3cubmd2KSB7XG4gICAgd2luZG93Lm5ndiA9IHtcbiAgICAgIGlkczogeyBkZWZhdWx0OiAtMSB9LFxuICAgICAgbmV4dElkKG5hbWVzcGFjZSA9ICdkZWZhdWx0Jyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBpZCA9IHRoaXMuaWRzW25hbWVzcGFjZV0gfHwgMFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWRzW25hbWVzcGFjZV0gPT09ICdudW1iZXInKSBpZCsrXG4gICAgICAgIHRoaXMuaWRzW25hbWVzcGFjZV0gPSBpZFxuICAgICAgICByZXR1cm4gbmFtZXNwYWNlID09PSAnZGVmYXVsdCdcbiAgICAgICAgICA/IGBuZ2d2LSR7aWR9YFxuICAgICAgICAgIDogYG5nZ3YtJHtuYW1lc3BhY2V9LSR7aWR9YFxuICAgICAgfSxcbiAgICB9XG4gIH1cbn0pKClcbiJdfQ==
@@ -0,0 +1,40 @@
1
+ import './modal.globals';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
4
+ import { NgvDialogComponent } from './dialog/dialog.component';
5
+ import { NgvFoldOutComponent } from './fold-out/fold-out.component';
6
+ import { NgvFoldOutOptionDirective } from './fold-out/fold-out.directive';
7
+ import { NgvSlideOutComponent } from './slide-out/slide-out.component';
8
+ import { NgvButtonModule } from '@sebgroup/green-angular/src/v-angular/button';
9
+ import * as i0 from "@angular/core";
10
+ export class NgvModalModule {
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvModalModule, declarations: [NgvDialogComponent,
13
+ NgvSlideOutComponent,
14
+ NgvFoldOutComponent,
15
+ NgvFoldOutOptionDirective], imports: [CommonModule, NgvButtonModule], exports: [NgvDialogComponent,
16
+ NgvSlideOutComponent,
17
+ NgvFoldOutComponent,
18
+ NgvFoldOutOptionDirective] }); }
19
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvModalModule, imports: [CommonModule, NgvButtonModule] }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvModalModule, decorators: [{
22
+ type: NgModule,
23
+ args: [{
24
+ imports: [CommonModule, NgvButtonModule],
25
+ declarations: [
26
+ NgvDialogComponent,
27
+ NgvSlideOutComponent,
28
+ NgvFoldOutComponent,
29
+ NgvFoldOutOptionDirective,
30
+ ],
31
+ exports: [
32
+ NgvDialogComponent,
33
+ NgvSlideOutComponent,
34
+ NgvFoldOutComponent,
35
+ NgvFoldOutOptionDirective,
36
+ ],
37
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
38
+ }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwvbW9kYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8saUJBQWlCLENBQUE7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDbkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhDQUE4QyxDQUFBOztBQWtCOUUsTUFBTSxPQUFPLGNBQWM7K0dBQWQsY0FBYztnSEFBZCxjQUFjLGlCQWJ2QixrQkFBa0I7WUFDbEIsb0JBQW9CO1lBQ3BCLG1CQUFtQjtZQUNuQix5QkFBeUIsYUFMakIsWUFBWSxFQUFFLGVBQWUsYUFRckMsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQixtQkFBbUI7WUFDbkIseUJBQXlCO2dIQUloQixjQUFjLFlBZmYsWUFBWSxFQUFFLGVBQWU7OzRGQWU1QixjQUFjO2tCQWhCMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDO29CQUN4QyxZQUFZLEVBQUU7d0JBQ1osa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vbW9kYWwuZ2xvYmFscydcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IE5nTW9kdWxlLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE5ndkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnXG5pbXBvcnQgeyBOZ3ZGb2xkT3V0Q29tcG9uZW50IH0gZnJvbSAnLi9mb2xkLW91dC9mb2xkLW91dC5jb21wb25lbnQnXG5pbXBvcnQgeyBOZ3ZGb2xkT3V0T3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9mb2xkLW91dC9mb2xkLW91dC5kaXJlY3RpdmUnXG5pbXBvcnQgeyBOZ3ZTbGlkZU91dENvbXBvbmVudCB9IGZyb20gJy4vc2xpZGUtb3V0L3NsaWRlLW91dC5jb21wb25lbnQnXG5pbXBvcnQgeyBOZ3ZCdXR0b25Nb2R1bGUgfSBmcm9tICdAc2ViZ3JvdXAvZ3JlZW4tYW5ndWxhci9zcmMvdi1hbmd1bGFyL2J1dHRvbidcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmd2QnV0dG9uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTmd2RGlhbG9nQ29tcG9uZW50LFxuICAgIE5ndlNsaWRlT3V0Q29tcG9uZW50LFxuICAgIE5ndkZvbGRPdXRDb21wb25lbnQsXG4gICAgTmd2Rm9sZE91dE9wdGlvbkRpcmVjdGl2ZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE5ndkRpYWxvZ0NvbXBvbmVudCxcbiAgICBOZ3ZTbGlkZU91dENvbXBvbmVudCxcbiAgICBOZ3ZGb2xkT3V0Q29tcG9uZW50LFxuICAgIE5ndkZvbGRPdXRPcHRpb25EaXJlY3RpdmUsXG4gIF0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd2TW9kYWxNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9tb2RhbC9tb2RhbC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEaWFsb2dCdXR0b25zIHtcbiAgcG9zaXRpdmU/OiBzdHJpbmcgfCBudWxsO1xuICBuZXV0cmFsPzogc3RyaW5nIHwgbnVsbDtcbiAgbmVnYXRpdmU/OiBzdHJpbmcgfCBudWxsO1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ViZ3JvdXAtZ3JlZW4tYW5ndWxhci1zcmMtdi1hbmd1bGFyLW1vZGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwvc2ViZ3JvdXAtZ3JlZW4tYW5ndWxhci1zcmMtdi1hbmd1bGFyLW1vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,229 @@
1
+ import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, } from '@angular/core';
2
+ import { trigger, query, style, animate, transition, group, } from '@angular/animations';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ /** Modal slide-out component based on vanilla pattern library design.
6
+ * The modal title can be set using the @Input heading, and will automatically be translated if
7
+ * the string matches a cms key.
8
+ * Content can be injected into the body of the slide-out by either setting the @Input content to any type of
9
+ * markdown, or using content projection (adding content between the `nggv-slideout-modal`-start and end tag).
10
+ * If the content needs to stretch outside the normal padded area, add the attribute `slot="outside-content"` to the
11
+ * projected content main element.
12
+ * Test hooks:
13
+ * The modal hook defaults to 'slideout' but is customizeable.
14
+ * The closing button can be selected using 'slideout-close'.
15
+ * The backdrop is selectable using 'slideout-backdrop'.
16
+ */
17
+ export class NgvSlideOutComponent {
18
+ /** @internal */
19
+ get fromLeft() {
20
+ return this.side === 'left';
21
+ }
22
+ /** Buttons are defined as a key-value pair where key is one of "positive|neutral|negative" and value is the button label. */
23
+ set buttons(buttons) {
24
+ this._buttons = buttons;
25
+ }
26
+ constructor(host) {
27
+ this.host = host;
28
+ /** Sets from which side the modal should open. */
29
+ this.side = 'right';
30
+ /** Defines the default visibility state of the slide-out. */
31
+ this.shown = false;
32
+ /** Defines the default visibility state of the modal. */
33
+ this.initiallyShown = false;
34
+ /** Sets whether it is possible to close the modal from the top right corner. */
35
+ this.closable = true;
36
+ /** Allows the modal content to decide the width of the modal. */
37
+ this.autoWidth = false;
38
+ /** Special property used for selecting DOM elements during automated UI testing. */
39
+ this.thook = 'slideout';
40
+ /** Will emit true on closing event. */
41
+ this.ngvCloseEvent = new EventEmitter();
42
+ this.ngvPositiveEvent = new EventEmitter();
43
+ this.ngvNeutralEvent = new EventEmitter();
44
+ this.ngvNegativeEvent = new EventEmitter();
45
+ // appends methods for opening and closing modal to native element
46
+ this.host.nativeElement.open = this.open.bind(this);
47
+ this.host.nativeElement.close = this.close.bind(this);
48
+ }
49
+ ngOnInit() {
50
+ this.shown = this.initiallyShown;
51
+ if (this.shown)
52
+ this.limitFocusable();
53
+ }
54
+ onAction(event, action) {
55
+ event.preventDefault();
56
+ switch (action) {
57
+ case 'positive':
58
+ this.ngvPositiveEvent.emit();
59
+ break;
60
+ case 'neutral':
61
+ this.ngvNeutralEvent.emit();
62
+ break;
63
+ case 'negative':
64
+ this.ngvNegativeEvent.emit();
65
+ break;
66
+ }
67
+ this.close(event, 'action');
68
+ }
69
+ /**
70
+ * Called on a modal element. Opens the modal and sets focus to the last focusable element in the modal.
71
+ *
72
+ * @param opener - reference to last focused element before opening modal
73
+ * @returns - true
74
+ */
75
+ open(opener) {
76
+ this.shown = true;
77
+ this.previous = opener || document.activeElement;
78
+ this.limitFocusable();
79
+ return true;
80
+ }
81
+ /**
82
+ * Called on a modal element. Closes the modal and emits a `ngvCloseEvent`. Sets focus to the lats focused element if an element was sent in to open function.
83
+ *
84
+ * @param event
85
+ * @param initiator
86
+ */
87
+ close(event, initiator) {
88
+ if (initiator === 'host' &&
89
+ event instanceof MouseEvent &&
90
+ event.target !== event.currentTarget)
91
+ return;
92
+ if (this.shown && this.closable) {
93
+ this.ngvCloseEvent.emit(this.shown);
94
+ this.shown = false;
95
+ window.setTimeout(() => {
96
+ if (this.previous)
97
+ this.previous.focus();
98
+ this.previous = undefined;
99
+ });
100
+ }
101
+ }
102
+ /** @internal */
103
+ focusTrap(event) {
104
+ if (event.key !== 'Tab')
105
+ return;
106
+ if (event.shiftKey) {
107
+ // shift + tab
108
+ if (this.lastFocusable &&
109
+ document.activeElement === this.firstFocusable) {
110
+ this.lastFocusable.focus();
111
+ event.preventDefault();
112
+ }
113
+ }
114
+ else {
115
+ // tab
116
+ if (this.firstFocusable &&
117
+ document.activeElement === this.lastFocusable) {
118
+ this.firstFocusable.focus();
119
+ event.preventDefault();
120
+ }
121
+ }
122
+ }
123
+ limitFocusable() {
124
+ window.setTimeout(() => {
125
+ if (!this.slideOutRef)
126
+ return;
127
+ const focusable = this.slideOutRef.nativeElement.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
128
+ this.firstFocusable = focusable[0];
129
+ this.lastFocusable = focusable[focusable.length - 1];
130
+ if (this.lastFocusable)
131
+ this.lastFocusable.focus();
132
+ });
133
+ }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvSlideOutComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
135
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvSlideOutComponent, selector: "nggv-slideout-modal", inputs: { side: "side", shown: "shown", initiallyShown: "initiallyShown", heading: "heading", title: "title", content: "content", closable: "closable", autoWidth: "autoWidth", thook: "thook", buttons: "buttons" }, outputs: { ngvCloseEvent: "ngvCloseEvent", ngvPositiveEvent: "ngvPositiveEvent", ngvNeutralEvent: "ngvNeutralEvent", ngvNegativeEvent: "ngvNegativeEvent" }, host: { listeners: { "click": "close($event,\"host\")", "document:keydown.escape": "close($event)", "keydown": "focusTrap($event)" } }, viewQueries: [{ propertyName: "slideOutRef", first: true, predicate: ["slideOut"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"shown\">\n <div\n [ngClass]=\"{\n 'gds-slide-out--left': fromLeft,\n 'gds-slide-out--right': !fromLeft\n }\"\n *transloco=\"let t\"\n [class.-active]=\"shown\"\n [attr.data-thook]=\"thook\"\n [attr.aria-hidden]=\"!shown\"\n [@modalAnimation]\n >\n <div\n #slideOut\n class=\"gds-slide-out\"\n [class.auto-width]=\"autoWidth\"\n [class.entered]=\"shown\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"sdv-modal-title\"\n aria-describedby=\"sdv-modal-body\"\n >\n <header class=\"gds-slide-out__header\">\n <h3 class=\"gds-slide-out__heading\" id=\"sdv-modal-title\">\n {{ heading || title || '' }}\n </h3>\n <button\n data-testid=\"modal-close-button\"\n class=\"close\"\n (click)=\"this.close()\"\n >\n <span className=\"sr-only\">Close</span>\n <i></i>\n </button>\n </header>\n\n <section id=\"sdv-modal-body\">\n <div class=\"gds-slide-out__content hide-if-empty\">\n <div *ngIf=\"content\" [innerHtml]=\"content\"></div>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"[slot='outside-content']\"></ng-content>\n </section>\n\n <footer class=\"sdv-modal-dialog__actions\">\n <button\n class=\"danger\"\n type=\"reset\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.negative || 'negative')\"\n (click)=\"onAction($event, 'negative')\"\n (keydown.enter)=\"onAction($event, 'negative')\"\n *ngIf=\"_buttons && _buttons.negative\"\n >\n {{ t(_buttons.negative) }}\n </button>\n\n <button\n class=\"secondary\"\n type=\"button\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.neutral || 'neutral')\"\n (click)=\"onAction($event, 'neutral')\"\n (keydown.enter)=\"onAction($event, 'neutral')\"\n *ngIf=\"_buttons && _buttons.neutral\"\n >\n {{ t(_buttons.neutral) }}\n </button>\n\n <button\n type=\"submit\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.positive || 'positive')\"\n (click)=\"onAction($event, 'positive')\"\n (keydown.enter)=\"onAction($event, 'positive')\"\n *ngIf=\"_buttons && _buttons.positive\"\n >\n {{ t(_buttons.positive) }}\n </button>\n </footer>\n </div>\n\n <div\n class=\"gds-backdrop\"\n data-thook=\"slideout-backdrop\"\n (click)=\"close()\"\n ></div>\n </div>\n</ng-container>\n", styles: [":host .gds-slide-out{background:var(--sg-modal-background);display:flex;flex-direction:column;box-shadow:var(--sg-modal-box-shadow);position:absolute;width:100%;z-index:var(--sg-z-index-modal);position:fixed;height:100dvh;max-width:512px;min-height:-webkit-fill-available;min-height:-moz-available;min-height:stretch;right:0;top:0;transition:transform .35s cubic-bezier(.33,1,.68,1);transform:translate(100%);z-index:1050}:host .gds-slide-out>.header,:host .gds-slide-out>header{padding:1rem;border-bottom:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);display:inline-flex;justify-content:space-between;align-items:center;width:100%}:host .gds-slide-out>.header h3,:host .gds-slide-out>.header .h3,:host .gds-slide-out>header h3,:host .gds-slide-out>header .h3{margin-bottom:0;margin-top:0}:host .gds-slide-out>.header h3+.close,:host .gds-slide-out>.header .h3+.close,:host .gds-slide-out>header h3+.close,:host .gds-slide-out>header .h3+.close{margin:-7px}:host .gds-slide-out>.body{padding:1rem;overflow:auto;width:100%}:host .gds-slide-out>.body p{margin-bottom:0;margin-top:0}:host .gds-slide-out>.footer,:host .gds-slide-out>footer{padding:1rem;width:100%}@media (min-width: 36em){:host .gds-slide-out>.footer,:host .gds-slide-out>footer{display:flex;justify-content:flex-end}}@media (max-width: 35.98em){:host .gds-slide-out>.footer button+button,:host .gds-slide-out>.footer button+.button,:host .gds-slide-out>.footer .button+button,:host .gds-slide-out>.footer .button+.button,:host .gds-slide-out>footer button+button,:host .gds-slide-out>footer button+.button,:host .gds-slide-out>footer .button+button,:host .gds-slide-out>footer .button+.button{margin-top:.75rem}}@media (min-width: 36em){:host .gds-slide-out>.footer button+button,:host .gds-slide-out>.footer button+.button,:host .gds-slide-out>.footer .button+button,:host .gds-slide-out>.footer .button+.button,:host .gds-slide-out>footer button+button,:host .gds-slide-out>footer button+.button,:host .gds-slide-out>footer .button+button,:host .gds-slide-out>footer .button+.button{margin-left:.75rem}}:host .gds-slide-out.is-entering,:host .gds-slide-out.entered{transform:translate(0)}:host .gds-slide-out.is-exiting{transform:translate(100%)}:host .gds-slide-out.large{max-width:720px}:host .gds-slide-out>.body{flex:1 0}:host .gds-slide-out.left{left:0}:host .gds-slide-out.gds-slide-out--768{max-width:48rem}:host .gds-slide-out.gds-slide-out--960{max-width:60rem}:host .gds-slide-out.gds-slide-out--768 header,:host .gds-slide-out.gds-slide-out--960 header{padding:1.5rem 2rem 1rem}:host .gds-slide-out.gds-slide-out--768 .body,:host .gds-slide-out.gds-slide-out--960 .body{padding:2rem 2rem 1rem}:host .gds-slide-out.gds-slide-out--768 footer,:host .gds-slide-out.gds-slide-out--960 footer{padding:1rem 2rem 2rem}:host .gds-slide-out.auto-width{width:auto;max-width:initial}:host .hide-if-empty:empty{display:none}:host .gds-backdrop{background:#00000059;inset:0;position:fixed;z-index:1040;display:block;transition:opacity .5s cubic-bezier(.33,1,.68,1)}:host .gds-backdrop--transparent{opacity:0}:host .gds-backdrop--transparent.entered,:host .gds-backdrop--transparent.is-entering{opacity:1}:host .gds-backdrop--transparent.is-exiting{opacity:0}:host .gds-slide-out__content{padding:1rem;overflow:auto;width:100%}:host .gds-slide-out__content p{margin-bottom:0;margin-top:0}:host #sdv-modal-body{flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
136
+ trigger('modalAnimation', [
137
+ transition(':enter', [
138
+ query('.gds-slide-out', style({ transform: 'translateX(100%)' }), {
139
+ optional: true,
140
+ }),
141
+ query('.gds-backdrop, [role=dialog]', style({ opacity: '0' }), {
142
+ optional: true,
143
+ }),
144
+ group([
145
+ query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(0)' })), { optional: true }),
146
+ query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '1' })), { optional: true }),
147
+ ]),
148
+ ]),
149
+ transition(':leave', [
150
+ query('.gds-slide-out', style({ transform: 'translateX(0)' }), {
151
+ optional: true,
152
+ }),
153
+ group([
154
+ query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(100%)' })), { optional: true }),
155
+ query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '0' })), { optional: true }),
156
+ ]),
157
+ ]),
158
+ ]),
159
+ ] }); }
160
+ }
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvSlideOutComponent, decorators: [{
162
+ type: Component,
163
+ args: [{ selector: 'nggv-slideout-modal', animations: [
164
+ trigger('modalAnimation', [
165
+ transition(':enter', [
166
+ query('.gds-slide-out', style({ transform: 'translateX(100%)' }), {
167
+ optional: true,
168
+ }),
169
+ query('.gds-backdrop, [role=dialog]', style({ opacity: '0' }), {
170
+ optional: true,
171
+ }),
172
+ group([
173
+ query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(0)' })), { optional: true }),
174
+ query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '1' })), { optional: true }),
175
+ ]),
176
+ ]),
177
+ transition(':leave', [
178
+ query('.gds-slide-out', style({ transform: 'translateX(0)' }), {
179
+ optional: true,
180
+ }),
181
+ group([
182
+ query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(100%)' })), { optional: true }),
183
+ query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '0' })), { optional: true }),
184
+ ]),
185
+ ]),
186
+ ]),
187
+ ], template: "<ng-container *ngIf=\"shown\">\n <div\n [ngClass]=\"{\n 'gds-slide-out--left': fromLeft,\n 'gds-slide-out--right': !fromLeft\n }\"\n *transloco=\"let t\"\n [class.-active]=\"shown\"\n [attr.data-thook]=\"thook\"\n [attr.aria-hidden]=\"!shown\"\n [@modalAnimation]\n >\n <div\n #slideOut\n class=\"gds-slide-out\"\n [class.auto-width]=\"autoWidth\"\n [class.entered]=\"shown\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"sdv-modal-title\"\n aria-describedby=\"sdv-modal-body\"\n >\n <header class=\"gds-slide-out__header\">\n <h3 class=\"gds-slide-out__heading\" id=\"sdv-modal-title\">\n {{ heading || title || '' }}\n </h3>\n <button\n data-testid=\"modal-close-button\"\n class=\"close\"\n (click)=\"this.close()\"\n >\n <span className=\"sr-only\">Close</span>\n <i></i>\n </button>\n </header>\n\n <section id=\"sdv-modal-body\">\n <div class=\"gds-slide-out__content hide-if-empty\">\n <div *ngIf=\"content\" [innerHtml]=\"content\"></div>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"[slot='outside-content']\"></ng-content>\n </section>\n\n <footer class=\"sdv-modal-dialog__actions\">\n <button\n class=\"danger\"\n type=\"reset\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.negative || 'negative')\"\n (click)=\"onAction($event, 'negative')\"\n (keydown.enter)=\"onAction($event, 'negative')\"\n *ngIf=\"_buttons && _buttons.negative\"\n >\n {{ t(_buttons.negative) }}\n </button>\n\n <button\n class=\"secondary\"\n type=\"button\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.neutral || 'neutral')\"\n (click)=\"onAction($event, 'neutral')\"\n (keydown.enter)=\"onAction($event, 'neutral')\"\n *ngIf=\"_buttons && _buttons.neutral\"\n >\n {{ t(_buttons.neutral) }}\n </button>\n\n <button\n type=\"submit\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.positive || 'positive')\"\n (click)=\"onAction($event, 'positive')\"\n (keydown.enter)=\"onAction($event, 'positive')\"\n *ngIf=\"_buttons && _buttons.positive\"\n >\n {{ t(_buttons.positive) }}\n </button>\n </footer>\n </div>\n\n <div\n class=\"gds-backdrop\"\n data-thook=\"slideout-backdrop\"\n (click)=\"close()\"\n ></div>\n </div>\n</ng-container>\n", styles: [":host .gds-slide-out{background:var(--sg-modal-background);display:flex;flex-direction:column;box-shadow:var(--sg-modal-box-shadow);position:absolute;width:100%;z-index:var(--sg-z-index-modal);position:fixed;height:100dvh;max-width:512px;min-height:-webkit-fill-available;min-height:-moz-available;min-height:stretch;right:0;top:0;transition:transform .35s cubic-bezier(.33,1,.68,1);transform:translate(100%);z-index:1050}:host .gds-slide-out>.header,:host .gds-slide-out>header{padding:1rem;border-bottom:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);display:inline-flex;justify-content:space-between;align-items:center;width:100%}:host .gds-slide-out>.header h3,:host .gds-slide-out>.header .h3,:host .gds-slide-out>header h3,:host .gds-slide-out>header .h3{margin-bottom:0;margin-top:0}:host .gds-slide-out>.header h3+.close,:host .gds-slide-out>.header .h3+.close,:host .gds-slide-out>header h3+.close,:host .gds-slide-out>header .h3+.close{margin:-7px}:host .gds-slide-out>.body{padding:1rem;overflow:auto;width:100%}:host .gds-slide-out>.body p{margin-bottom:0;margin-top:0}:host .gds-slide-out>.footer,:host .gds-slide-out>footer{padding:1rem;width:100%}@media (min-width: 36em){:host .gds-slide-out>.footer,:host .gds-slide-out>footer{display:flex;justify-content:flex-end}}@media (max-width: 35.98em){:host .gds-slide-out>.footer button+button,:host .gds-slide-out>.footer button+.button,:host .gds-slide-out>.footer .button+button,:host .gds-slide-out>.footer .button+.button,:host .gds-slide-out>footer button+button,:host .gds-slide-out>footer button+.button,:host .gds-slide-out>footer .button+button,:host .gds-slide-out>footer .button+.button{margin-top:.75rem}}@media (min-width: 36em){:host .gds-slide-out>.footer button+button,:host .gds-slide-out>.footer button+.button,:host .gds-slide-out>.footer .button+button,:host .gds-slide-out>.footer .button+.button,:host .gds-slide-out>footer button+button,:host .gds-slide-out>footer button+.button,:host .gds-slide-out>footer .button+button,:host .gds-slide-out>footer .button+.button{margin-left:.75rem}}:host .gds-slide-out.is-entering,:host .gds-slide-out.entered{transform:translate(0)}:host .gds-slide-out.is-exiting{transform:translate(100%)}:host .gds-slide-out.large{max-width:720px}:host .gds-slide-out>.body{flex:1 0}:host .gds-slide-out.left{left:0}:host .gds-slide-out.gds-slide-out--768{max-width:48rem}:host .gds-slide-out.gds-slide-out--960{max-width:60rem}:host .gds-slide-out.gds-slide-out--768 header,:host .gds-slide-out.gds-slide-out--960 header{padding:1.5rem 2rem 1rem}:host .gds-slide-out.gds-slide-out--768 .body,:host .gds-slide-out.gds-slide-out--960 .body{padding:2rem 2rem 1rem}:host .gds-slide-out.gds-slide-out--768 footer,:host .gds-slide-out.gds-slide-out--960 footer{padding:1rem 2rem 2rem}:host .gds-slide-out.auto-width{width:auto;max-width:initial}:host .hide-if-empty:empty{display:none}:host .gds-backdrop{background:#00000059;inset:0;position:fixed;z-index:1040;display:block;transition:opacity .5s cubic-bezier(.33,1,.68,1)}:host .gds-backdrop--transparent{opacity:0}:host .gds-backdrop--transparent.entered,:host .gds-backdrop--transparent.is-entering{opacity:1}:host .gds-backdrop--transparent.is-exiting{opacity:0}:host .gds-slide-out__content{padding:1rem;overflow:auto;width:100%}:host .gds-slide-out__content p{margin-bottom:0;margin-top:0}:host #sdv-modal-body{flex:1}\n"] }]
188
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { slideOutRef: [{
189
+ type: ViewChild,
190
+ args: ['slideOut']
191
+ }], side: [{
192
+ type: Input
193
+ }], shown: [{
194
+ type: Input
195
+ }], initiallyShown: [{
196
+ type: Input
197
+ }], heading: [{
198
+ type: Input
199
+ }], title: [{
200
+ type: Input
201
+ }], content: [{
202
+ type: Input
203
+ }], closable: [{
204
+ type: Input
205
+ }], autoWidth: [{
206
+ type: Input
207
+ }], thook: [{
208
+ type: Input
209
+ }], buttons: [{
210
+ type: Input
211
+ }], ngvCloseEvent: [{
212
+ type: Output
213
+ }], ngvPositiveEvent: [{
214
+ type: Output
215
+ }], ngvNeutralEvent: [{
216
+ type: Output
217
+ }], ngvNegativeEvent: [{
218
+ type: Output
219
+ }], close: [{
220
+ type: HostListener,
221
+ args: ['click', ['$event', '"host"']]
222
+ }, {
223
+ type: HostListener,
224
+ args: ['document:keydown.escape', ['$event']]
225
+ }], focusTrap: [{
226
+ type: HostListener,
227
+ args: ['keydown', ['$event']]
228
+ }] } });
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGUtb3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL21vZGFsL3NsaWRlLW91dC9zbGlkZS1vdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwvc2xpZGUtb3V0L3NsaWRlLW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxPQUFPLEVBQ1AsVUFBVSxFQUNWLEtBQUssR0FDTixNQUFNLHFCQUFxQixDQUFBOzs7QUFNNUI7Ozs7Ozs7Ozs7O0dBV0c7QUEyREgsTUFBTSxPQUFPLG9CQUFvQjtJQTJCL0IsZ0JBQWdCO0lBQ2hCLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUE7SUFDN0IsQ0FBQztJQU1ELDZIQUE2SDtJQUM3SCxJQUFhLE9BQU8sQ0FBQyxPQUFzQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQTtJQUN6QixDQUFDO0lBWUQsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQS9DcEMsa0RBQWtEO1FBQ3pDLFNBQUksR0FBcUIsT0FBTyxDQUFBO1FBQ3pDLDZEQUE2RDtRQUNwRCxVQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ3RCLHlEQUF5RDtRQUNoRCxtQkFBYyxHQUFHLEtBQUssQ0FBQTtRQVUvQixnRkFBZ0Y7UUFDdkUsYUFBUSxHQUFHLElBQUksQ0FBQTtRQUN4QixpRUFB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RSxDQUFDLENBQ3hCLEVBQ0QsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQ25CO2lDQUNGLENBQUM7NkJBQ0gsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIO2lHQUlzQixXQUFXO3NCQUFqQyxTQUFTO3VCQUFDLFVBQVU7Z0JBR1osSUFBSTtzQkFBWixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBWU8sT0FBTztzQkFBbkIsS0FBSztnQkFLSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFzRFAsS0FBSztzQkFGSixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7O3NCQUMxQyxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9CbkQsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQge1xuICB0cmlnZ2VyLFxuICBxdWVyeSxcbiAgc3R5bGUsXG4gIGFuaW1hdGUsXG4gIHRyYW5zaXRpb24sXG4gIGdyb3VwLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJ1xuXG4vLyBpbXBvcnQgeyBmYVRpbWVzIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3Byby1yZWd1bGFyLXN2Zy1pY29ucyc7XG5cbmltcG9ydCB7IERpYWxvZ0J1dHRvbnMgfSBmcm9tICcuLi9tb2RhbC50eXBlcydcblxuLyoqIE1vZGFsIHNsaWRlLW91dCBjb21wb25lbnQgYmFzZWQgb24gdmFuaWxsYSBwYXR0ZXJuIGxpYnJhcnkgZGVzaWduLlxuICogVGhlIG1vZGFsIHRpdGxlIGNhbiBiZSBzZXQgdXNpbmcgdGhlIEBJbnB1dCBoZWFkaW5nLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHRyYW5zbGF0ZWQgaWZcbiAqIHRoZSBzdHJpbmcgbWF0Y2hlcyBhIGNtcyBrZXkuXG4gKiBDb250ZW50IGNhbiBiZSBpbmplY3RlZCBpbnRvIHRoZSBib2R5IG9mIHRoZSBzbGlkZS1vdXQgYnkgZWl0aGVyIHNldHRpbmcgdGhlIEBJbnB1dCBjb250ZW50IHRvIGFueSB0eXBlIG9mXG4gKiBtYXJrZG93biwgb3IgdXNpbmcgY29udGVudCBwcm9qZWN0aW9uIChhZGRpbmcgY29udGVudCBiZXR3ZWVuIHRoZSBgbmdndi1zbGlkZW91dC1tb2RhbGAtc3RhcnQgYW5kIGVuZCB0YWcpLlxuICogSWYgdGhlIGNvbnRlbnQgbmVlZHMgdG8gc3RyZXRjaCBvdXRzaWRlIHRoZSBub3JtYWwgcGFkZGVkIGFyZWEsIGFkZCB0aGUgYXR0cmlidXRlIGBzbG90PVwib3V0c2lkZS1jb250ZW50XCJgIHRvIHRoZVxuICogcHJvamVjdGVkIGNvbnRlbnQgbWFpbiBlbGVtZW50LlxuICogVGVzdCBob29rczpcbiAqIFRoZSBtb2RhbCBob29rIGRlZmF1bHRzIHRvICdzbGlkZW91dCcgYnV0IGlzIGN1c3RvbWl6ZWFibGUuXG4gKiBUaGUgY2xvc2luZyBidXR0b24gY2FuIGJlIHNlbGVjdGVkIHVzaW5nICdzbGlkZW91dC1jbG9zZScuXG4gKiBUaGUgYmFja2Ryb3AgaXMgc2VsZWN0YWJsZSB1c2luZyAnc2xpZGVvdXQtYmFja2Ryb3AnLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2d2LXNsaWRlb3V0LW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlLW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NsaWRlLW91dC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignbW9kYWxBbmltYXRpb24nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHF1ZXJ5KCcuZ2RzLXNsaWRlLW91dCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKScgfSksIHtcbiAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICAgIHF1ZXJ5KCcuZ2RzLWJhY2tkcm9wLCBbcm9sZT1kaWFsb2ddJywgc3R5bGUoeyBvcGFjaXR5OiAnMCcgfSksIHtcbiAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwKFtcbiAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICcuZ2RzLXNsaWRlLW91dCcsXG4gICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAnMzUwbXMgY3ViaWMtYmV6aWVyKDAuMzMsIDEsIDAuNjgsIDEpJyxcbiAgICAgICAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB7IG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICcuZ2RzLWJhY2tkcm9wLCBbcm9sZT1kaWFsb2ddJyxcbiAgICAgICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgICAgICczNTBtcyBjdWJpYy1iZXppZXIoMC4zMywgMSwgMC42OCwgMSknLFxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6ICcxJyB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB7IG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgXSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgcXVlcnkoJy5nZHMtc2xpZGUtb3V0Jywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSwge1xuICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXAoW1xuICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgJy5nZHMtc2xpZGUtb3V0JyxcbiAgICAgICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgICAgICczNTBtcyBjdWJpYy1iZXppZXIoMC4zMywgMSwgMC42OCwgMSknLFxuICAgICAgICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHsgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgJy5nZHMtYmFja2Ryb3AsIFtyb2xlPWRpYWxvZ10nLFxuICAgICAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAgICAgJzM1MG1zIGN1YmljLWJlemllcigwLjMzLCAxLCAwLjY4LCAxKScsXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogJzAnIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHsgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgICAgICApLFxuICAgICAgICBdKSxcbiAgICAgIF0pLFxuICAgIF0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3ZTbGlkZU91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQFZpZXdDaGlsZCgnc2xpZGVPdXQnKSBzbGlkZU91dFJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZFxuXG4gIC8qKiBTZXRzIGZyb20gd2hpY2ggc2lkZSB0aGUgbW9kYWwgc2hvdWxkIG9wZW4uICovXG4gIEBJbnB1dCgpIHNpZGU6ICdsZWZ0JyB8ICdyaWdodCcgPSAncmlnaHQnXG4gIC8qKiBEZWZpbmVzIHRoZSBkZWZhdWx0IHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIHNsaWRlLW91dC4gKi9cbiAgQElucHV0KCkgc2hvd24gPSBmYWxzZVxuICAvKiogRGVmaW5lcyB0aGUgZGVmYXVsdCB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSBtb2RhbC4gKi9cbiAgQElucHV0KCkgaW5pdGlhbGx5U2hvd24gPSBmYWxzZVxuICAvKiogU2V0cyBtb2RhbCBoZWFkaW5nLiBXaWxsIGJlIHRyYW5zbGF0ZWQgKHVzaW5nIHRyYW5zbG9jbykgaWYgdGhlIHN0cmluZyBtYXRjaGVzIGEgY21zIGtleS4gKi9cbiAgQElucHV0KCkgaGVhZGluZyE6IHN0cmluZ1xuICAvKipcbiAgICogU2V0cyBtb2RhbCB0aXRsZS4gV2lsbCBiZSB0cmFuc2xhdGVkICh1c2luZyB0cmFuc2xvY28pIGlmIHRoZSBzdHJpbmcgbWF0Y2hlcyBhIGNtcyBrZXkuXG4gICAqIEBkZXByZWNhdGVkIC0gdXNlIEBJbnB1dCgpIGhlYWRpbmcgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpIHRpdGxlITogc3RyaW5nXG4gIC8qKiBTZXRzIGNvbnRlbnQgYm9keSBvZiB0aGUgbW9kYWwgYW5kIGNhbiBjb250YWluIGh0bWwgY29kZS4gVGhlIGNvbnRlbnQgYm9keSBjYW4gYWxzbyBiZSBzZXQgYnkgbmVzdGluZyBjaGlsZHJlbiB0byB0aGUgbW9kYWwgdGFnLiAqL1xuICBASW5wdXQoKSBjb250ZW50Pzogc3RyaW5nXG4gIC8qKiBTZXRzIHdoZXRoZXIgaXQgaXMgcG9zc2libGUgdG8gY2xvc2UgdGhlIG1vZGFsIGZyb20gdGhlIHRvcCByaWdodCBjb3JuZXIuICovXG4gIEBJbnB1dCgpIGNsb3NhYmxlID0gdHJ1ZVxuICAvKiogQWxsb3dzIHRoZSBtb2RhbCBjb250ZW50IHRvIGRlY2lkZSB0aGUgd2lkdGggb2YgdGhlIG1vZGFsLiAqL1xuICBASW5wdXQoKSBhdXRvV2lkdGggPSBmYWxzZVxuXG4gIC8qKiBTcGVjaWFsIHByb3BlcnR5IHVzZWQgZm9yIHNlbGVjdGluZyBET00gZWxlbWVudHMgZHVyaW5nIGF1dG9tYXRlZCBVSSB0ZXN0aW5nLiAqL1xuICBASW5wdXQoKSB0aG9vayA9ICdzbGlkZW91dCdcblxuICAvKiogQGludGVybmFsICovXG4gIGdldCBmcm9tTGVmdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaWRlID09PSAnbGVmdCdcbiAgfVxuXG4gIC8vIC8qKiBAaW50ZXJuYWwgKi9cbiAgLy8gY2xvc2VJY29uID0gZmFUaW1lcztcblxuICBfYnV0dG9uczogRGlhbG9nQnV0dG9ucyB8IHVuZGVmaW5lZFxuICAvKiogQnV0dG9ucyBhcmUgZGVmaW5lZCBhcyBhIGtleS12YWx1ZSBwYWlyIHdoZXJlIGtleSBpcyBvbmUgb2YgXCJwb3NpdGl2ZXxuZXV0cmFsfG5lZ2F0aXZlXCIgYW5kIHZhbHVlIGlzIHRoZSBidXR0b24gbGFiZWwuICovXG4gIEBJbnB1dCgpIHNldCBidXR0b25zKGJ1dHRvbnM6IERpYWxvZ0J1dHRvbnMpIHtcbiAgICB0aGlzLl9idXR0b25zID0gYnV0dG9uc1xuICB9XG5cbiAgLyoqIFdpbGwgZW1pdCB0cnVlIG9uIGNsb3NpbmcgZXZlbnQuICovXG4gIEBPdXRwdXQoKSBuZ3ZDbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG4gIEBPdXRwdXQoKSBuZ3ZQb3NpdGl2ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG4gIEBPdXRwdXQoKSBuZ3ZOZXV0cmFsRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcbiAgQE91dHB1dCgpIG5ndk5lZ2F0aXZlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcblxuICBwcml2YXRlIHByZXZpb3VzOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZFxuICBwcml2YXRlIGZpcnN0Rm9jdXNhYmxlOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZFxuICBwcml2YXRlIGxhc3RGb2N1c2FibGU6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmKSB7XG4gICAgLy8gYXBwZW5kcyBtZXRob2RzIGZvciBvcGVuaW5nIGFuZCBjbG9zaW5nIG1vZGFsIHRvIG5hdGl2ZSBlbGVtZW50XG4gICAgdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQub3BlbiA9IHRoaXMub3Blbi5iaW5kKHRoaXMpXG4gICAgdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuY2xvc2UgPSB0aGlzLmNsb3NlLmJpbmQodGhpcylcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2hvd24gPSB0aGlzLmluaXRpYWxseVNob3duXG4gICAgaWYgKHRoaXMuc2hvd24pIHRoaXMubGltaXRGb2N1c2FibGUoKVxuICB9XG5cbiAgcHVibGljIG9uQWN0aW9uKGV2ZW50OiBFdmVudCwgYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgJ3Bvc2l0aXZlJzpcbiAgICAgICAgdGhpcy5uZ3ZQb3NpdGl2ZUV2ZW50LmVtaXQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbmV1dHJhbCc6XG4gICAgICAgIHRoaXMubmd2TmV1dHJhbEV2ZW50LmVtaXQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbmVnYXRpdmUnOlxuICAgICAgICB0aGlzLm5ndk5lZ2F0aXZlRXZlbnQuZW1pdCgpXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIHRoaXMuY2xvc2UoZXZlbnQsICdhY3Rpb24nKVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBhIG1vZGFsIGVsZW1lbnQuIE9wZW5zIHRoZSBtb2RhbCBhbmQgc2V0cyBmb2N1cyB0byB0aGUgbGFzdCBmb2N1c2FibGUgZWxlbWVudCBpbiB0aGUgbW9kYWwuXG4gICAqXG4gICAqIEBwYXJhbSBvcGVuZXIgLSByZWZlcmVuY2UgdG8gbGFzdCBmb2N1c2VkIGVsZW1lbnQgYmVmb3JlIG9wZW5pbmcgbW9kYWxcbiAgICogQHJldHVybnMgLSB0cnVlXG4gICAqL1xuICBvcGVuKG9wZW5lcj86IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgdGhpcy5zaG93biA9IHRydWVcbiAgICB0aGlzLnByZXZpb3VzID0gb3BlbmVyIHx8IChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KVxuICAgIHRoaXMubGltaXRGb2N1c2FibGUoKVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIG9uIGEgbW9kYWwgZWxlbWVudC4gQ2xvc2VzIHRoZSBtb2RhbCBhbmQgZW1pdHMgYSBgbmd2Q2xvc2VFdmVudGAuIFNldHMgZm9jdXMgdG8gdGhlIGxhdHMgZm9jdXNlZCBlbGVtZW50IGlmIGFuIGVsZW1lbnQgd2FzIHNlbnQgaW4gdG8gb3BlbiBmdW5jdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSBpbml0aWF0b3JcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnLCAnXCJob3N0XCInXSlcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICBjbG9zZShldmVudD86IEV2ZW50LCBpbml0aWF0b3I/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBpbml0aWF0b3IgPT09ICdob3N0JyAmJlxuICAgICAgZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50ICYmXG4gICAgICBldmVudC50YXJnZXQgIT09IGV2ZW50LmN1cnJlbnRUYXJnZXRcbiAgICApXG4gICAgICByZXR1cm5cbiAgICBpZiAodGhpcy5zaG93biAmJiB0aGlzLmNsb3NhYmxlKSB7XG4gICAgICB0aGlzLm5ndkNsb3NlRXZlbnQuZW1pdCh0aGlzLnNob3duKVxuICAgICAgdGhpcy5zaG93biA9IGZhbHNlXG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpb3VzKSB0aGlzLnByZXZpb3VzLmZvY3VzKClcbiAgICAgICAgdGhpcy5wcmV2aW91cyA9IHVuZGVmaW5lZFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBmb2N1c1RyYXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnVGFiJykgcmV0dXJuXG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAvLyBzaGlmdCArIHRhYlxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmxhc3RGb2N1c2FibGUgJiZcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5maXJzdEZvY3VzYWJsZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubGFzdEZvY3VzYWJsZS5mb2N1cygpXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdGFiXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuZmlyc3RGb2N1c2FibGUgJiZcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5sYXN0Rm9jdXNhYmxlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5maXJzdEZvY3VzYWJsZS5mb2N1cygpXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpbWl0Rm9jdXNhYmxlKCkge1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5zbGlkZU91dFJlZikgcmV0dXJuXG4gICAgICBjb25zdCBmb2N1c2FibGUgPSB0aGlzLnNsaWRlT3V0UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJ2J1dHRvbiwgW2hyZWZdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJyxcbiAgICAgIClcbiAgICAgIHRoaXMuZmlyc3RGb2N1c2FibGUgPSBmb2N1c2FibGVbMF1cbiAgICAgIHRoaXMubGFzdEZvY3VzYWJsZSA9IGZvY3VzYWJsZVtmb2N1c2FibGUubGVuZ3RoIC0gMV1cbiAgICAgIGlmICh0aGlzLmxhc3RGb2N1c2FibGUpIHRoaXMubGFzdEZvY3VzYWJsZS5mb2N1cygpXG4gICAgfSlcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3duXCI+XG4gIDxkaXZcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnZ2RzLXNsaWRlLW91dC0tbGVmdCc6IGZyb21MZWZ0LFxuICAgICAgJ2dkcy1zbGlkZS1vdXQtLXJpZ2h0JzogIWZyb21MZWZ0XG4gICAgfVwiXG4gICAgKnRyYW5zbG9jbz1cImxldCB0XCJcbiAgICBbY2xhc3MuLWFjdGl2ZV09XCJzaG93blwiXG4gICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9va1wiXG4gICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIXNob3duXCJcbiAgICBbQG1vZGFsQW5pbWF0aW9uXVxuICA+XG4gICAgPGRpdlxuICAgICAgI3NsaWRlT3V0XG4gICAgICBjbGFzcz1cImdkcy1zbGlkZS1vdXRcIlxuICAgICAgW2NsYXNzLmF1dG8td2lkdGhdPVwiYXV0b1dpZHRoXCJcbiAgICAgIFtjbGFzcy5lbnRlcmVkXT1cInNob3duXCJcbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwic2R2LW1vZGFsLXRpdGxlXCJcbiAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJzZHYtbW9kYWwtYm9keVwiXG4gICAgPlxuICAgICAgPGhlYWRlciBjbGFzcz1cImdkcy1zbGlkZS1vdXRfX2hlYWRlclwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJnZHMtc2xpZGUtb3V0X19oZWFkaW5nXCIgaWQ9XCJzZHYtbW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICB7eyBoZWFkaW5nIHx8IHRpdGxlIHx8ICcnIH19XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm1vZGFsLWNsb3NlLWJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJjbG9zZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRoaXMuY2xvc2UoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgICAgPGk+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICA8c2VjdGlvbiBpZD1cInNkdi1tb2RhbC1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnZHMtc2xpZGUtb3V0X19jb250ZW50IGhpZGUtaWYtZW1wdHlcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudFwiIFtpbm5lckh0bWxdPVwiY29udGVudFwiPjwvZGl2PlxuICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PSdvdXRzaWRlLWNvbnRlbnQnXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgPGZvb3RlciBjbGFzcz1cInNkdi1tb2RhbC1kaWFsb2dfX2FjdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiZGFuZ2VyXCJcbiAgICAgICAgICB0eXBlPVwicmVzZXRcIlxuICAgICAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwiJ2RpYWxvZy0nICsgKF9idXR0b25zPy5uZWdhdGl2ZSB8fCAnbmVnYXRpdmUnKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKCRldmVudCwgJ25lZ2F0aXZlJylcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uQWN0aW9uKCRldmVudCwgJ25lZ2F0aXZlJylcIlxuICAgICAgICAgICpuZ0lmPVwiX2J1dHRvbnMgJiYgX2J1dHRvbnMubmVnYXRpdmVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgdChfYnV0dG9ucy5uZWdhdGl2ZSkgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cIidkaWFsb2ctJyArIChfYnV0dG9ucz8ubmV1dHJhbCB8fCAnbmV1dHJhbCcpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb24oJGV2ZW50LCAnbmV1dHJhbCcpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkFjdGlvbigkZXZlbnQsICduZXV0cmFsJylcIlxuICAgICAgICAgICpuZ0lmPVwiX2J1dHRvbnMgJiYgX2J1dHRvbnMubmV1dHJhbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyB0KF9idXR0b25zLm5ldXRyYWwpIH19XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cIidkaWFsb2ctJyArIChfYnV0dG9ucz8ucG9zaXRpdmUgfHwgJ3Bvc2l0aXZlJylcIlxuICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbigkZXZlbnQsICdwb3NpdGl2ZScpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkFjdGlvbigkZXZlbnQsICdwb3NpdGl2ZScpXCJcbiAgICAgICAgICAqbmdJZj1cIl9idXR0b25zICYmIF9idXR0b25zLnBvc2l0aXZlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHQoX2J1dHRvbnMucG9zaXRpdmUpIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImdkcy1iYWNrZHJvcFwiXG4gICAgICBkYXRhLXRob29rPVwic2xpZGVvdXQtYmFja2Ryb3BcIlxuICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgID48L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './radio.component';
2
+ export * from './radio.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9yYWRpby9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JhZGlvLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vcmFkaW8ubW9kdWxlJ1xuIl19
@@ -0,0 +1,130 @@
1
+ import { ChangeDetectorRef, Component, HostBinding, Inject, Injectable, Input, Optional, Self, } from '@angular/core';
2
+ import { NgControl } from '@angular/forms';
3
+ import { TRANSLOCO_SCOPE } from '@ngneat/transloco';
4
+ import { NgvBaseControlValueAccessorComponent } from '@sebgroup/green-angular/src/v-angular/base-control-value-accessor';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "@angular/common";
8
+ import * as i3 from "@ngneat/transloco";
9
+ /** @internal Internal class used to uncheck radio buttons with the matching name. */
10
+ export class NgvRadioControlRegistry {
11
+ constructor() {
12
+ this._radios = [];
13
+ }
14
+ add(control, radio) {
15
+ this._radios.push([control, radio]);
16
+ }
17
+ remove(radio) {
18
+ for (let i = this._radios.length - 1; i >= 0; --i) {
19
+ if (this._radios[i][1] === radio) {
20
+ this._radios.splice(i, 1);
21
+ return;
22
+ }
23
+ }
24
+ }
25
+ select(radio) {
26
+ this._radios.forEach((controlPair) => {
27
+ if (this._isSameGroup(controlPair, radio) && controlPair[1] !== radio) {
28
+ controlPair[1].writeValue(radio.value);
29
+ }
30
+ });
31
+ }
32
+ _isSameGroup(controlPair, radio) {
33
+ if (!controlPair[0].control)
34
+ return false;
35
+ return (
36
+ //@ts-expect-error internal properties not exposed
37
+ controlPair[0]._parent === radio.ngControl._parent &&
38
+ controlPair[1].name === radio.name);
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
41
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioControlRegistry }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioControlRegistry, decorators: [{
44
+ type: Injectable
45
+ }] });
46
+ /**
47
+ * Use radio buttons when users must select one option in a list with exclusive options out of a set of two or more options.
48
+ * https://designlibrary.sebgroup.com/components/component-radiobutton
49
+ */
50
+ export class NgvRadioComponent extends NgvBaseControlValueAccessorComponent {
51
+ /**
52
+ * Creates a new RadioComponent
53
+ * @param ngControl optional FormControl provided when component is used in a form, through dependency injection.
54
+ * @param registry internal registry used to uncheck radio buttons with the matching name, through dependency injection.
55
+ * @param cdr change detection reference for rendering purposes.
56
+ */
57
+ constructor(ngControl, translocoScope, registry, cdr) {
58
+ super(ngControl, translocoScope, cdr);
59
+ this.ngControl = ngControl;
60
+ this.translocoScope = translocoScope;
61
+ this.registry = registry;
62
+ this.cdr = cdr;
63
+ /** Special property used for selecting DOM elements during automated UI testing. */
64
+ this.thook = 'radio';
65
+ }
66
+ ngOnInit() {
67
+ super.ngOnInit();
68
+ this._checkName();
69
+ this.registry.add(this.ngControl, this);
70
+ }
71
+ ngOnDestroy() {
72
+ this.registry.remove(this);
73
+ }
74
+ /** @internal */
75
+ onInputChange(event) {
76
+ event.stopPropagation();
77
+ if (this.disabled)
78
+ return;
79
+ this.onChange(this.state);
80
+ }
81
+ /** Writes a new value of true or false based on if argument matches this components value property. */
82
+ writeValue(value) {
83
+ // Phantom null value on first load https://github.com/angular/angular/pull/38140
84
+ super.writeValue(value === this.value);
85
+ }
86
+ /** Registers a callback function that is called when the child input element's value changes. */
87
+ registerOnChange(fn) {
88
+ // Override default to update registry
89
+ this.onChange = () => {
90
+ fn(this.value);
91
+ this.registry.select(this);
92
+ };
93
+ }
94
+ /** Checks that the name properties match and updates name property if only formControlName is given. */
95
+ _checkName() {
96
+ if (this.name &&
97
+ this.formControlName &&
98
+ this.name !== this.formControlName) {
99
+ throw new Error(`
100
+ If you define both a name and a formControlName attribute on your radio button, their values
101
+ must match. Ex: <input type="radio" formControlName="food" name="food">
102
+ `);
103
+ }
104
+ if (!this.name && this.formControlName)
105
+ this.name = this.formControlName;
106
+ }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: NgvRadioControlRegistry }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvRadioComponent, selector: "nggv-radio", inputs: { thook: "thook", formControlName: "formControlName" }, host: { properties: { "attr.data-thook": "this.thook" } }, providers: [NgvRadioControlRegistry], usesInheritance: true, ngImport: i0, template: "<!-- LOCKED INPUT -->\n<div *ngIf=\"locked && state\" class=\"sdv-field-radio-wrap\">\n <div\n [id]=\"id + '-radio'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n >\n {{ label }}\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl ?? null; context: { $implicit: value }\"\n ></ng-template>\n </div>\n</div>\n\n<!-- INPUT WRAPPER -->\n<ng-container *ngIf=\"!locked\">\n <div class=\"sdv-field-radio-wrap\">\n <!-- RADIO BUTTON FIELD -->\n <label [attr.for]=\"id + '-radio'\" class=\"form-control\">\n <input\n #input\n type=\"radio\"\n [attr.id]=\"id + '-radio'\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [attr.aria-label]=\"description\"\n [checked]=\"state\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <!-- LABEL -->\n {{ label }}\n <ng-template\n *ngTemplateOutlet=\"\n labelContentTpl ?? null;\n context: { $implicit: value }\n \"\n ></ng-template>\n <i></i>\n </label>\n </div>\n\n <!-- ERRORS -->\n <ng-container *transloco=\"let t; read: scope\">\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-radio'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n </ng-container>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n</ng-container>\n", styles: [":host .nggv-field--locked{display:inline-block;border-radius:.25em;position:relative;min-height:2em;padding:.5em .75em .5em 0}:host .form-control{padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none}:host .form-control:has(input:disabled){cursor:not-allowed}:host label.form-control input[type=radio]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}:host label.form-control:has(input[type=radio]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}:host label.form-control:has(input[type=radio]:focus-visible):focus,:host label.form-control:has(input[type=radio]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host label.form-control input[type=radio]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;position:relative;border-radius:var(--gds-comp-radio-border-radius);display:flex;height:var(--gds-comp-radio-container-height);width:var(--gds-comp-radio-container-width);box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border)}:host label.form-control input[type=radio]~i:after{content:\"\";width:100%;height:100%;border-radius:var(--gds-comp-radio-border-radius);background-color:var(--gds-comp-radio-dot);transform:scale(.5)}:host label.form-control:hover input[type=radio]:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-hover)}:host label.form-control:hover input[type=radio]:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-hover)}:host label.form-control input[type=radio]:checked:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-checked)}:host label.form-control input[type=radio]:checked:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-checked)}:host label.form-control:hover input[type=radio]:checked:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-checked-hover)}:host label.form-control:hover input[type=radio]:checked:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-checked-hover)}:host .was-validated label.form-control input[type=radio]:not(.is-invalid):valid~i,:host label.form-control input[type=radio].is-valid~i{--border-color: var(--intent-success-background);--sg-border-color: var(--intent-success-background)}:host .was-validated label.form-control input[type=radio]:not(.is-valid):invalid~i,:host label.form-control input[type=radio].is-invalid~i{--border-color: var(--intent-danger-background);--sg-border-color: var(--intent-danger-background)}:host label.form-control input[type=radio]:disabled~i,:host label.form-control input[type=radio].disabled~i{background-color:var(--gds-comp-radio-container-background-disabled);box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-disabled)}:host label.form-control input[type=radio]:disabled~span,:host label.form-control input[type=radio].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}:host label.form-control input[type=radio]:disabled~span::placeholder,:host label.form-control input[type=radio].disabled~span::placeholder{color:var(--text-disabled-color)}:host label.form-control input[type=radio]:disabled:checked~i:after,:host label.form-control input[type=radio]:checked.disabled~i:after{background-color:var(--gds-comp-radio-dot-disabled)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioComponent, decorators: [{
111
+ type: Component,
112
+ args: [{ selector: 'nggv-radio', providers: [NgvRadioControlRegistry], template: "<!-- LOCKED INPUT -->\n<div *ngIf=\"locked && state\" class=\"sdv-field-radio-wrap\">\n <div\n [id]=\"id + '-radio'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n >\n {{ label }}\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl ?? null; context: { $implicit: value }\"\n ></ng-template>\n </div>\n</div>\n\n<!-- INPUT WRAPPER -->\n<ng-container *ngIf=\"!locked\">\n <div class=\"sdv-field-radio-wrap\">\n <!-- RADIO BUTTON FIELD -->\n <label [attr.for]=\"id + '-radio'\" class=\"form-control\">\n <input\n #input\n type=\"radio\"\n [attr.id]=\"id + '-radio'\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [attr.aria-label]=\"description\"\n [checked]=\"state\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <!-- LABEL -->\n {{ label }}\n <ng-template\n *ngTemplateOutlet=\"\n labelContentTpl ?? null;\n context: { $implicit: value }\n \"\n ></ng-template>\n <i></i>\n </label>\n </div>\n\n <!-- ERRORS -->\n <ng-container *transloco=\"let t; read: scope\">\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-radio'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n </ng-container>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n</ng-container>\n", styles: [":host .nggv-field--locked{display:inline-block;border-radius:.25em;position:relative;min-height:2em;padding:.5em .75em .5em 0}:host .form-control{padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none}:host .form-control:has(input:disabled){cursor:not-allowed}:host label.form-control input[type=radio]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}:host label.form-control:has(input[type=radio]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}:host label.form-control:has(input[type=radio]:focus-visible):focus,:host label.form-control:has(input[type=radio]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host label.form-control input[type=radio]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;position:relative;border-radius:var(--gds-comp-radio-border-radius);display:flex;height:var(--gds-comp-radio-container-height);width:var(--gds-comp-radio-container-width);box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border)}:host label.form-control input[type=radio]~i:after{content:\"\";width:100%;height:100%;border-radius:var(--gds-comp-radio-border-radius);background-color:var(--gds-comp-radio-dot);transform:scale(.5)}:host label.form-control:hover input[type=radio]:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-hover)}:host label.form-control:hover input[type=radio]:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-hover)}:host label.form-control input[type=radio]:checked:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-checked)}:host label.form-control input[type=radio]:checked:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-checked)}:host label.form-control:hover input[type=radio]:checked:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-checked-hover)}:host label.form-control:hover input[type=radio]:checked:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-checked-hover)}:host .was-validated label.form-control input[type=radio]:not(.is-invalid):valid~i,:host label.form-control input[type=radio].is-valid~i{--border-color: var(--intent-success-background);--sg-border-color: var(--intent-success-background)}:host .was-validated label.form-control input[type=radio]:not(.is-valid):invalid~i,:host label.form-control input[type=radio].is-invalid~i{--border-color: var(--intent-danger-background);--sg-border-color: var(--intent-danger-background)}:host label.form-control input[type=radio]:disabled~i,:host label.form-control input[type=radio].disabled~i{background-color:var(--gds-comp-radio-container-background-disabled);box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-disabled)}:host label.form-control input[type=radio]:disabled~span,:host label.form-control input[type=radio].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}:host label.form-control input[type=radio]:disabled~span::placeholder,:host label.form-control input[type=radio].disabled~span::placeholder{color:var(--text-disabled-color)}:host label.form-control input[type=radio]:disabled:checked~i:after,:host label.form-control input[type=radio]:checked.disabled~i:after{background-color:var(--gds-comp-radio-dot-disabled)}\n"] }]
113
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
114
+ type: Self
115
+ }, {
116
+ type: Optional
117
+ }] }, { type: undefined, decorators: [{
118
+ type: Optional
119
+ }, {
120
+ type: Inject,
121
+ args: [TRANSLOCO_SCOPE]
122
+ }] }, { type: NgvRadioControlRegistry }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { thook: [{
123
+ type: HostBinding,
124
+ args: ['attr.data-thook']
125
+ }, {
126
+ type: Input
127
+ }], formControlName: [{
128
+ type: Input
129
+ }] } });
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvcmFkaW8vcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvcmFkaW8vcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixJQUFJLEdBQ0wsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQWtCLE1BQU0sbUJBQW1CLENBQUE7QUFFbkUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sbUVBQW1FLENBQUE7Ozs7O0FBRXhILHFGQUFxRjtBQUVyRixNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRVUsWUFBTyxHQUFVLEVBQUUsQ0FBQTtLQWtDNUI7SUFoQ0MsR0FBRyxDQUFDLE9BQWtCLEVBQUUsS0FBd0I7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQXdCO1FBQzdCLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDakQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRTtnQkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FB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ZSxFQUNsQztZQUNBLE1BQU0sSUFBSSxLQUFLLENBQUM7OztLQUdqQixDQUFDLENBQUE7U0FDRDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFBO0lBQzFFLENBQUM7K0dBeEVVLGlCQUFpQix1RUFtQmxCLGVBQWU7bUdBbkJkLGlCQUFpQixnS0FGakIsQ0FBQyx1QkFBdUIsQ0FBQyxpRENqRXRDLHUzREFvRUE7OzRGRERhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxZQUFZLGFBR1gsQ0FBQyx1QkFBdUIsQ0FBQzs7MEJBbUJqQyxJQUFJOzswQkFBSSxRQUFROzswQkFDaEIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxlQUFlOytHQWRnQixLQUFLO3NCQUE3QyxXQUFXO3VCQUFDLGlCQUFpQjs7c0JBQUcsS0FBSztnQkFHN0IsZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcblxuaW1wb3J0IHsgVFJBTlNMT0NPX1NDT1BFLCBUcmFuc2xvY29TY29wZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJ1xuXG5pbXBvcnQgeyBOZ3ZCYXNlQ29udHJvbFZhbHVlQWNjZXNzb3JDb21wb25lbnQgfSBmcm9tICdAc2ViZ3JvdXAvZ3JlZW4tYW5ndWxhci9zcmMvdi1hbmd1bGFyL2Jhc2UtY29udHJvbC12YWx1ZS1hY2Nlc3NvcidcblxuLyoqIEBpbnRlcm5hbCBJbnRlcm5hbCBjbGFzcyB1c2VkIHRvIHVuY2hlY2sgcmFkaW8gYnV0dG9ucyB3aXRoIHRoZSBtYXRjaGluZyBuYW1lLiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5ndlJhZGlvQ29udHJvbFJlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBfcmFkaW9zOiBhbnlbXSA9IFtdXG5cbiAgYWRkKGNvbnRyb2w6IE5nQ29udHJvbCwgcmFkaW86IE5ndlJhZGlvQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fcmFkaW9zLnB1c2goW2NvbnRyb2wsIHJhZGlvXSlcbiAgfVxuXG4gIHJlbW92ZShyYWRpbzogTmd2UmFkaW9Db21wb25lbnQpIHtcbiAgICBmb3IgKGxldCBpID0gdGhpcy5fcmFkaW9zLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICBpZiAodGhpcy5fcmFkaW9zW2ldWzFdID09PSByYWRpbykge1xuICAgICAgICB0aGlzLl9yYWRpb3Muc3BsaWNlKGksIDEpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdChyYWRpbzogTmd2UmFkaW9Db21wb25lbnQpIHtcbiAgICB0aGlzLl9yYWRpb3MuZm9yRWFjaCgoY29udHJvbFBhaXIpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc1NhbWVHcm91cChjb250cm9sUGFpciwgcmFkaW8pICYmIGNvbnRyb2xQYWlyWzFdICE9PSByYWRpbykge1xuICAgICAgICBjb250cm9sUGFpclsxXS53cml0ZVZhbHVlKHJhZGlvLnZhbHVlKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIF9pc1NhbWVHcm91cChcbiAgICBjb250cm9sUGFpcjogW05nQ29udHJvbCwgTmd2UmFkaW9Db21wb25lbnRdLFxuICAgIHJhZGlvOiBOZ3ZSYWRpb0NvbXBvbmVudCxcbiAgKSB7XG4gICAgaWYgKCFjb250cm9sUGFpclswXS5jb250cm9sKSByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gKFxuICAgICAgLy9AdHMtZXhwZWN0LWVycm9yIGludGVybmFsIHByb3BlcnRpZXMgbm90IGV4cG9zZWRcbiAgICAgIGNvbnRyb2xQYWlyWzBdLl9wYXJlbnQgPT09IHJhZGlvLm5nQ29udHJvbC5fcGFyZW50ICYmXG4gICAgICBjb250cm9sUGFpclsxXS5uYW1lID09PSByYWRpby5uYW1lXG4gICAgKVxuICB9XG59XG5cbi8qKlxuICogVXNlIHJhZGlvIGJ1dHRvbnMgd2hlbiB1c2VycyBtdXN0IHNlbGVjdCBvbmUgb3B0aW9uIGluIGEgbGlzdCB3aXRoIGV4Y2x1c2l2ZSBvcHRpb25zIG91dCBvZiBhIHNldCBvZiB0d28gb3IgbW9yZSBvcHRpb25zLlxuICogaHR0cHM6Ly9kZXNpZ25saWJyYXJ5LnNlYmdyb3VwLmNvbS9jb21wb25lbnRzL2NvbXBvbmVudC1yYWRpb2J1dHRvblxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2d2LXJhZGlvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFkaW8uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbTmd2UmFkaW9Db250cm9sUmVnaXN0cnldLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3ZSYWRpb0NvbXBvbmVudFxuICBleHRlbmRzIE5ndkJhc2VDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIC8qKiBTcGVjaWFsIHByb3BlcnR5IHVzZWQgZm9yIHNlbGVjdGluZyBET00gZWxlbWVudHMgZHVyaW5nIGF1dG9tYXRlZCBVSSB0ZXN0aW5nLiAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10aG9vaycpIEBJbnB1dCgpIHRob29rID0gJ3JhZGlvJ1xuXG4gIC8qKiBTeW5jcyBhIEZvcm1Db250cm9sIGluIGFuIGV4aXN0aW5nIEZvcm1Hcm91cCB0byBhIGZvcm0gY29udHJvbCBlbGVtZW50IGJ5IG5hbWUuICovXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZT86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFJhZGlvQ29tcG9uZW50XG4gICAqIEBwYXJhbSBuZ0NvbnRyb2wgb3B0aW9uYWwgRm9ybUNvbnRyb2wgcHJvdmlkZWQgd2hlbiBjb21wb25lbnQgaXMgdXNlZCBpbiBhIGZvcm0sIHRocm91Z2ggZGVwZW5kZW5jeSBpbmplY3Rpb24uXG4gICAqIEBwYXJhbSByZWdpc3RyeSBpbnRlcm5hbCByZWdpc3RyeSB1c2VkIHRvIHVuY2hlY2sgcmFkaW8gYnV0dG9ucyB3aXRoIHRoZSBtYXRjaGluZyBuYW1lLCB0aHJvdWdoIGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuICAgKiBAcGFyYW0gY2RyIGNoYW5nZSBkZXRlY3Rpb24gcmVmZXJlbmNlIGZvciByZW5kZXJpbmcgcHVycG9zZXMuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoVFJBTlNMT0NPX1NDT1BFKVxuICAgIHByb3RlY3RlZCB0cmFuc2xvY29TY29wZTogVHJhbnNsb2NvU2NvcGUsXG4gICAgcHJvdGVjdGVkIHJlZ2lzdHJ5OiBOZ3ZSYWRpb0NvbnRyb2xSZWdpc3RyeSxcbiAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgc3VwZXIobmdDb250cm9sLCB0cmFuc2xvY29TY29wZSwgY2RyKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKVxuICAgIHRoaXMuX2NoZWNrTmFtZSgpXG4gICAgdGhpcy5yZWdpc3RyeS5hZGQodGhpcy5uZ0NvbnRyb2wsIHRoaXMpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlZ2lzdHJ5LnJlbW92ZSh0aGlzKVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVyblxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zdGF0ZSlcbiAgfVxuXG4gIC8qKiBXcml0ZXMgYSBuZXcgdmFsdWUgb2YgdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBhcmd1bWVudCBtYXRjaGVzIHRoaXMgY29tcG9uZW50cyB2YWx1ZSBwcm9wZXJ0eS4gKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgLy8gUGhhbnRvbSBudWxsIHZhbHVlIG9uIGZpcnN0IGxvYWQgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9wdWxsLzM4MTQwXG4gICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSA9PT0gdGhpcy52YWx1ZSlcbiAgfVxuXG4gIC8qKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50J3MgdmFsdWUgY2hhbmdlcy4gKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IGFueSkge1xuICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgdG8gdXBkYXRlIHJlZ2lzdHJ5XG4gICAgdGhpcy5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGZuKHRoaXMudmFsdWUpXG4gICAgICB0aGlzLnJlZ2lzdHJ5LnNlbGVjdCh0aGlzKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBDaGVja3MgdGhhdCB0aGUgbmFtZSBwcm9wZXJ0aWVzIG1hdGNoIGFuZCB1cGRhdGVzIG5hbWUgcHJvcGVydHkgaWYgb25seSBmb3JtQ29udHJvbE5hbWUgaXMgZ2l2ZW4uICovXG4gIHByaXZhdGUgX2NoZWNrTmFtZSgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLm5hbWUgJiZcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmXG4gICAgICB0aGlzLm5hbWUgIT09IHRoaXMuZm9ybUNvbnRyb2xOYW1lXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgSWYgeW91IGRlZmluZSBib3RoIGEgbmFtZSBhbmQgYSBmb3JtQ29udHJvbE5hbWUgYXR0cmlidXRlIG9uIHlvdXIgcmFkaW8gYnV0dG9uLCB0aGVpciB2YWx1ZXNcbiAgICAgIG11c3QgbWF0Y2guIEV4OiA8aW5wdXQgdHlwZT1cInJhZGlvXCIgZm9ybUNvbnRyb2xOYW1lPVwiZm9vZFwiIG5hbWU9XCJmb29kXCI+XG4gICAgYClcbiAgICB9XG4gICAgaWYgKCF0aGlzLm5hbWUgJiYgdGhpcy5mb3JtQ29udHJvbE5hbWUpIHRoaXMubmFtZSA9IHRoaXMuZm9ybUNvbnRyb2xOYW1lXG4gIH1cbn1cbiIsIjwhLS0gTE9DS0VEIElOUFVUIC0tPlxuPGRpdiAqbmdJZj1cImxvY2tlZCAmJiBzdGF0ZVwiIGNsYXNzPVwic2R2LWZpZWxkLXJhZGlvLXdyYXBcIj5cbiAgPGRpdlxuICAgIFtpZF09XCJpZCArICctcmFkaW8nXCJcbiAgICBjbGFzcz1cIm5nZ3YtZmllbGQtLWxvY2tlZFwiXG4gICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICBbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiXG4gID5cbiAgICB7eyBsYWJlbCB9fVxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbENvbnRlbnRUcGwgPz8gbnVsbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZhbHVlIH1cIlxuICAgID48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIElOUFVUIFdSQVBQRVIgLS0+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIWxvY2tlZFwiPlxuICA8ZGl2IGNsYXNzPVwic2R2LWZpZWxkLXJhZGlvLXdyYXBcIj5cbiAgICA8IS0tIFJBRElPIEJVVFRPTiBGSUVMRCAtLT5cbiAgICA8bGFiZWwgW2F0dHIuZm9yXT1cImlkICsgJy1yYWRpbydcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICBbYXR0ci5pZF09XCJpZCArICctcmFkaW8nXCJcbiAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgW2F0dHIudmFsdWVdPVwidmFsdWVcIlxuICAgICAgICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIFtjaGVja2VkXT1cInN0YXRlXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAgIC8+XG5cbiAgICAgIDwhLS0gTEFCRUwgLS0+XG4gICAgICB7eyBsYWJlbCB9fVxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgbGFiZWxDb250ZW50VHBsID8/IG51bGw7XG4gICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHZhbHVlIH1cbiAgICAgICAgXCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgPGk+PC9pPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRVJST1JTIC0tPlxuICA8bmctY29udGFpbmVyICp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogc2NvcGVcIj5cbiAgICA8bGFiZWxcbiAgICAgIGNsYXNzPVwic2R2LWZpZWxkLW5vdGljZSBzZHYtZmllbGQtbm90aWNlLS1lcnJvclwiXG4gICAgICBbYXR0ci5mb3JdPVwiaWQgKyAnLXJhZGlvJ1wiXG4gICAgICAqbmdJZj1cImludmFsaWQgJiYgKGVycm9yIHx8IG5nQ29udHJvbD8uaW52YWxpZClcIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZXJyb3I7IGVsc2UgZXJyb3JzUmVmXCI+e3sgZXJyb3IgfX08L3NwYW4+XG4gICAgICA8bmctdGVtcGxhdGUgI2Vycm9yc1JlZj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJmaXJzdEVycm9yIGFzIGVycm9yXCI+XG4gICAgICAgICAge3sgdCgnZXJyb3IuZmllbGQnICsgZXJyb3I/LmNvZGUsIGVycm9yPy5wYXJhbXMpIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9sYWJlbD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBDSElMRFJFTiAtLT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy1jb250YWluZXI+XG4iXX0=