@wizishop/angular-components 18.2.0 → 19.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/README.md +13 -76
  2. package/angular-components.scss +10684 -9433
  3. package/assets/images/upload/upload_images.svg +23 -0
  4. package/fesm2022/wizishop-angular-components.mjs +1294 -559
  5. package/fesm2022/wizishop-angular-components.mjs.map +1 -1
  6. package/lib/components/alert-popup/alert-popup.component.d.ts +3 -3
  7. package/lib/components/border-picker/border-picker.component.d.ts +29 -0
  8. package/lib/components/calendar/calendar.component.d.ts +5 -1
  9. package/lib/components/color-picker/color-picker.component.d.ts +23 -0
  10. package/lib/components/faq-section/faq-section-content.dto.d.ts +4 -0
  11. package/lib/components/faq-section/faq-section.component.d.ts +8 -0
  12. package/lib/components/faq-section/faq-section.dto.d.ts +5 -0
  13. package/lib/components/grid/grid.component.d.ts +13 -0
  14. package/lib/components/hn/h1/h1.component.d.ts +4 -1
  15. package/lib/components/hn/h2/h2.component.d.ts +4 -1
  16. package/lib/components/hn/h3/h3.component.d.ts +4 -1
  17. package/lib/components/hn/h4/h4.component.d.ts +4 -1
  18. package/lib/components/image-text-section/image-text-section.component.d.ts +11 -0
  19. package/lib/components/image-text-section/image-text-section.dto.d.ts +11 -0
  20. package/lib/components/info/info.component.d.ts +3 -1
  21. package/lib/components/menu-tile/menu-tile.component.d.ts +23 -0
  22. package/lib/components/mosaic/mosaic.component.d.ts +2 -2
  23. package/lib/components/multiple-search-plus/multiple-search-plus.component.d.ts +2 -1
  24. package/lib/components/pricing-section/pricing-section-table.dto.d.ts +6 -0
  25. package/lib/components/pricing-section/pricing-section.component.d.ts +8 -0
  26. package/lib/components/pricing-section/pricing-section.dto.d.ts +7 -0
  27. package/lib/components/radio-legacy/{radio-group.directive.d.ts → radio-group-legacy.directive.d.ts} +3 -3
  28. package/lib/components/radio-legacy/{radio-directive.d.ts → radio-legacy-directive.d.ts} +3 -3
  29. package/lib/components/reassurance-section/reassurance-section-content.dto.d.ts +4 -0
  30. package/lib/components/reassurance-section/reassurance-section.component.d.ts +8 -0
  31. package/lib/components/reassurance-section/reassurance-section.dto.d.ts +5 -0
  32. package/lib/components/row/row.component.d.ts +3 -1
  33. package/lib/components/select/option-group/option-group.component.d.ts +6 -0
  34. package/lib/components/select/select/select.component.d.ts +1 -1
  35. package/lib/components/shared-components.module.d.ts +119 -109
  36. package/lib/components/slide-in/slide-in.component.d.ts +32 -0
  37. package/lib/components/tabs/tabs.component.d.ts +2 -1
  38. package/lib/components/tag/tag.component.d.ts +2 -1
  39. package/lib/components/tag-input/tag-input.component.d.ts +25 -0
  40. package/lib/components/text/text.component.d.ts +4 -1
  41. package/lib/components/upload/upload.component.d.ts +8 -1
  42. package/lib/directives/shared-directives.module.d.ts +3 -3
  43. package/package.json +24 -29
  44. package/public-api.d.ts +20 -2
  45. package/esm2022/lib/animations/in-out/in-out-x.animation.mjs +0 -12
  46. package/esm2022/lib/animations/in-out/in-out-y.animation.mjs +0 -12
  47. package/esm2022/lib/animations/list/animate-list-from-bottom.animation.mjs +0 -18
  48. package/esm2022/lib/animations/list/animate-list-from-left.animation.mjs +0 -18
  49. package/esm2022/lib/animations/list/animate-list-from-right.animation.mjs +0 -18
  50. package/esm2022/lib/animations/list/animate-list-from-top.animation.mjs +0 -16
  51. package/esm2022/lib/animations/show/opacity.animation.mjs +0 -5
  52. package/esm2022/lib/animations/show/show-from-bottom.animation.mjs +0 -15
  53. package/esm2022/lib/animations/show/show-from-left.animation.mjs +0 -15
  54. package/esm2022/lib/animations/show/show-from-right.animation.mjs +0 -15
  55. package/esm2022/lib/animations/show/show-from-top.animation.mjs +0 -15
  56. package/esm2022/lib/animations/switch/switch-in-out.animation.mjs +0 -6
  57. package/esm2022/lib/components/ai-express/ai-express.component.mjs +0 -83
  58. package/esm2022/lib/components/alert/alert.component.mjs +0 -42
  59. package/esm2022/lib/components/alert-popup/alert-popup-module.mjs +0 -20
  60. package/esm2022/lib/components/alert-popup/alert-popup.component.mjs +0 -41
  61. package/esm2022/lib/components/alert-popup/alert-popup.service.mjs +0 -33
  62. package/esm2022/lib/components/back/back.component.mjs +0 -12
  63. package/esm2022/lib/components/block/block-title-legacy/block-title-legacy.component.mjs +0 -21
  64. package/esm2022/lib/components/block/block.component.mjs +0 -124
  65. package/esm2022/lib/components/block/separator/block-separator.component.mjs +0 -17
  66. package/esm2022/lib/components/block-with-checkbox/block-with-checkbox.component.mjs +0 -46
  67. package/esm2022/lib/components/breadcrumbs/breadcrumbs.component.mjs +0 -27
  68. package/esm2022/lib/components/breadcrumbs/breadcrumbs.dto.mjs +0 -2
  69. package/esm2022/lib/components/button/button.component.mjs +0 -200
  70. package/esm2022/lib/components/calendar/calendar.component.mjs +0 -237
  71. package/esm2022/lib/components/card-price/card-price.component.mjs +0 -76
  72. package/esm2022/lib/components/charging-bar/charging-bar.component.mjs +0 -19
  73. package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -78
  74. package/esm2022/lib/components/checkbox/checkbox.module.mjs +0 -25
  75. package/esm2022/lib/components/column/column.component.mjs +0 -11
  76. package/esm2022/lib/components/common/label/label.component.mjs +0 -16
  77. package/esm2022/lib/components/common/placeholder/placeholder.component.mjs +0 -16
  78. package/esm2022/lib/components/confirm-delete/confirm-delete.component.mjs +0 -64
  79. package/esm2022/lib/components/content-with-buttons/content-with-buttons.component.mjs +0 -72
  80. package/esm2022/lib/components/delete/delete.component.mjs +0 -12
  81. package/esm2022/lib/components/draganddrop-list/draganddrop-list.component.mjs +0 -61
  82. package/esm2022/lib/components/dropdown/dropdown.component.mjs +0 -26
  83. package/esm2022/lib/components/edit-in-place/edit-in-place.component.mjs +0 -202
  84. package/esm2022/lib/components/expanded-panel/expanded-panel.component.mjs +0 -24
  85. package/esm2022/lib/components/expansion/accordion/accordion-item.interface.mjs +0 -2
  86. package/esm2022/lib/components/expansion/accordion/accordion-item.token.mjs +0 -3
  87. package/esm2022/lib/components/expansion/accordion/accordion.component.mjs +0 -74
  88. package/esm2022/lib/components/expansion/expansion-panel/expansion-panel.component.mjs +0 -29
  89. package/esm2022/lib/components/expansion/expansion-panel/expansion-panel.directive.mjs +0 -88
  90. package/esm2022/lib/components/expansion/expansion-panel-header/expansion-panel-header.component.mjs +0 -27
  91. package/esm2022/lib/components/expansion/expansion-panel-header/expansion-panel-header.directive.mjs +0 -49
  92. package/esm2022/lib/components/expansion/expansion-panel-header/expansion-panel-header.interface.mjs +0 -2
  93. package/esm2022/lib/components/expansion/expansion-panel-header/expansion-panel-header.token.mjs +0 -3
  94. package/esm2022/lib/components/expansion/expansion.module.mjs +0 -48
  95. package/esm2022/lib/components/filters/filter-item.dto.mjs +0 -2
  96. package/esm2022/lib/components/filters/filters.component.mjs +0 -41
  97. package/esm2022/lib/components/free-popin/free-popin.component.mjs +0 -66
  98. package/esm2022/lib/components/google-preview/google-preview.component.mjs +0 -20
  99. package/esm2022/lib/components/header-page/header-page.component.mjs +0 -42
  100. package/esm2022/lib/components/hn/h1/h1.component.mjs +0 -26
  101. package/esm2022/lib/components/hn/h2/h2.component.mjs +0 -13
  102. package/esm2022/lib/components/hn/h3/h3.component.mjs +0 -18
  103. package/esm2022/lib/components/hn/h4/h4.component.mjs +0 -18
  104. package/esm2022/lib/components/image/image.component.mjs +0 -17
  105. package/esm2022/lib/components/info/info.component.mjs +0 -12
  106. package/esm2022/lib/components/inputs/input/input.component.mjs +0 -184
  107. package/esm2022/lib/components/inputs/input-search/input-search.component.mjs +0 -65
  108. package/esm2022/lib/components/inputs/input-with-select/input-with-select.component.mjs +0 -17
  109. package/esm2022/lib/components/inputs/input-with-select/option-item.dto.mjs +0 -2
  110. package/esm2022/lib/components/link/link.component.mjs +0 -57
  111. package/esm2022/lib/components/loader/loader.component.mjs +0 -21
  112. package/esm2022/lib/components/logo/logo.component.mjs +0 -20
  113. package/esm2022/lib/components/mosaic/mosaic.component.mjs +0 -81
  114. package/esm2022/lib/components/multiple-search/multiple-search.component.mjs +0 -115
  115. package/esm2022/lib/components/multiple-search-plus/multiple-search-plus.component.mjs +0 -97
  116. package/esm2022/lib/components/multiple-search-plus/shared/multiple-search-plus-option.model.mjs +0 -2
  117. package/esm2022/lib/components/multiple-search-plus/shared/multiple-search-plus-results.model.mjs +0 -2
  118. package/esm2022/lib/components/optional-disable-container/optional-disable-container.component.mjs +0 -17
  119. package/esm2022/lib/components/pagination/pagination.component.mjs +0 -50
  120. package/esm2022/lib/components/pagination/pagination.module.mjs +0 -33
  121. package/esm2022/lib/components/pagination/pipes/array-pages.pipe.mjs +0 -28
  122. package/esm2022/lib/components/pagination/pipes/custom-text.pipe.mjs +0 -34
  123. package/esm2022/lib/components/pagination/pipes/is-last-page.pipe.mjs +0 -25
  124. package/esm2022/lib/components/popin/popin.component.mjs +0 -73
  125. package/esm2022/lib/components/progress-bar/progress-bar.component.mjs +0 -75
  126. package/esm2022/lib/components/radio/option/option.component.mjs +0 -27
  127. package/esm2022/lib/components/radio/radio-group.directive.mjs +0 -40
  128. package/esm2022/lib/components/radio/radio.component.mjs +0 -38
  129. package/esm2022/lib/components/radio-legacy/radio-directive.mjs +0 -22
  130. package/esm2022/lib/components/radio-legacy/radio-group.directive.mjs +0 -34
  131. package/esm2022/lib/components/radio-legacy/radio.component.mjs +0 -58
  132. package/esm2022/lib/components/row/row.component.mjs +0 -144
  133. package/esm2022/lib/components/search/search.component.mjs +0 -86
  134. package/esm2022/lib/components/search/shared/search-option.model.mjs +0 -2
  135. package/esm2022/lib/components/select/call-to-action.model.mjs +0 -2
  136. package/esm2022/lib/components/select/option/option-selection-handler.interface.mjs +0 -2
  137. package/esm2022/lib/components/select/option/option-selection-handler.token.mjs +0 -3
  138. package/esm2022/lib/components/select/option/option.component.mjs +0 -28
  139. package/esm2022/lib/components/select/option/select-option.directive.mjs +0 -98
  140. package/esm2022/lib/components/select/option-call-to-action/option-call-to-action.component.mjs +0 -12
  141. package/esm2022/lib/components/select/select/select.component.mjs +0 -198
  142. package/esm2022/lib/components/select/select/select.directive.mjs +0 -175
  143. package/esm2022/lib/components/select/select/value-change.service.mjs +0 -190
  144. package/esm2022/lib/components/select/select-items.dto.mjs +0 -2
  145. package/esm2022/lib/components/select/select-search-trigger/select-search-trigger.component.mjs +0 -38
  146. package/esm2022/lib/components/select-in-text/select-in-text.component.mjs +0 -103
  147. package/esm2022/lib/components/selected-list/selected-list.component.mjs +0 -62
  148. package/esm2022/lib/components/selected-list/shared/selected-list-option.model.mjs +0 -2
  149. package/esm2022/lib/components/separator/separator.component.mjs +0 -17
  150. package/esm2022/lib/components/settings/settings.component.mjs +0 -12
  151. package/esm2022/lib/components/shared-components.module.mjs +0 -444
  152. package/esm2022/lib/components/snackbar/snackbar.component.mjs +0 -85
  153. package/esm2022/lib/components/state/state.component.mjs +0 -16
  154. package/esm2022/lib/components/summary/summary.component.mjs +0 -41
  155. package/esm2022/lib/components/switch/switch.component.mjs +0 -89
  156. package/esm2022/lib/components/table/directives/checkBoxRow.directive.mjs +0 -92
  157. package/esm2022/lib/components/table/directives/column.directive.mjs +0 -42
  158. package/esm2022/lib/components/table/directives/columnHeader.directive.mjs +0 -199
  159. package/esm2022/lib/components/table/directives/raw.directive.mjs +0 -30
  160. package/esm2022/lib/components/table/shared/distinct-until-table-filters-changed.mjs +0 -21
  161. package/esm2022/lib/components/table/shared/filters-table.service.mjs +0 -68
  162. package/esm2022/lib/components/table/shared/table-checkbox-id.service.mjs +0 -20
  163. package/esm2022/lib/components/table/shared/table-filters-group.model.mjs +0 -10
  164. package/esm2022/lib/components/table/shared/table-filters.model.mjs +0 -2
  165. package/esm2022/lib/components/table/table.component.mjs +0 -146
  166. package/esm2022/lib/components/table/table.module.mjs +0 -46
  167. package/esm2022/lib/components/tabs/tab/tab.component.mjs +0 -43
  168. package/esm2022/lib/components/tabs/tab-body/tab-body.component.mjs +0 -23
  169. package/esm2022/lib/components/tabs/tab-body/tab-body.directive.mjs +0 -36
  170. package/esm2022/lib/components/tabs/tabs.component.mjs +0 -99
  171. package/esm2022/lib/components/tag/tag.component.mjs +0 -38
  172. package/esm2022/lib/components/tag-dropdown/tag-dropdown.component.mjs +0 -45
  173. package/esm2022/lib/components/tag-label/tag-label.component.mjs +0 -34
  174. package/esm2022/lib/components/text/text.component.mjs +0 -13
  175. package/esm2022/lib/components/text-area/text-area.component.mjs +0 -99
  176. package/esm2022/lib/components/token-check/token-check.component.mjs +0 -21
  177. package/esm2022/lib/components/tooltip/tooltip.component.mjs +0 -30
  178. package/esm2022/lib/components/tooltip/tooltip.module.mjs +0 -25
  179. package/esm2022/lib/components/tree/tree.component.mjs +0 -25
  180. package/esm2022/lib/components/tree/tree.dto.mjs +0 -2
  181. package/esm2022/lib/components/tree/tree.module.mjs +0 -29
  182. package/esm2022/lib/components/upload/upload.component.mjs +0 -36
  183. package/esm2022/lib/components/wrapper/wrapper.component.mjs +0 -18
  184. package/esm2022/lib/components/wrapper-blocs/wrapper-blocs.component.mjs +0 -19
  185. package/esm2022/lib/components/wrapper-multiple-block/wrapper-multiple-block.component.mjs +0 -12
  186. package/esm2022/lib/components/wrapper-sidebar/wrapper-sidebar.component.mjs +0 -30
  187. package/esm2022/lib/directives/abstract-debounce/abstract-debounce.directive.mjs +0 -37
  188. package/esm2022/lib/directives/abstract-debounce/debounce-keyup.directive.mjs +0 -24
  189. package/esm2022/lib/directives/auto-hide/auto-hide.directive.mjs +0 -50
  190. package/esm2022/lib/directives/copy-to-clipboard/copy-to-clipboard.directive.mjs +0 -32
  191. package/esm2022/lib/directives/keyboard-events/keypress-enter.directive.mjs +0 -25
  192. package/esm2022/lib/directives/keyboard-events/only-numbers.directive.mjs +0 -45
  193. package/esm2022/lib/directives/keyboard-events/two-digital-decimal-number.directive.mjs +0 -36
  194. package/esm2022/lib/directives/ng-var.directive.mjs +0 -32
  195. package/esm2022/lib/directives/scroll-to/scroll-to.directive.mjs +0 -32
  196. package/esm2022/lib/directives/shared-directives.module.mjs +0 -72
  197. package/esm2022/lib/directives/watch-dom-tree/watch-dom-tree.directive.mjs +0 -30
  198. package/esm2022/lib/directives/zindex-toggle/zindex-toggle.directive.mjs +0 -44
  199. package/esm2022/lib/pipes/call-component-function.pipe.mjs +0 -24
  200. package/esm2022/lib/pipes/find-option-selected-field.pipe.mjs +0 -29
  201. package/esm2022/lib/pipes/select/filter-options.pipe.mjs +0 -19
  202. package/esm2022/lib/pipes/select/select-filters.pipe.mjs +0 -19
  203. package/esm2022/lib/pipes/selected-list/are-all-options-selected.pipe.mjs +0 -17
  204. package/esm2022/lib/pipes/shared-pipes.module.mjs +0 -43
  205. package/esm2022/lib/pipes/tree/format-object-to-recursif-tree.pipe.mjs +0 -41
  206. package/esm2022/lib/pipes/tree/format-object-to-simple-tree.pipe.mjs +0 -49
  207. package/esm2022/lib/services/dom.service.mjs +0 -59
  208. package/esm2022/lib/services/history.service.mjs +0 -53
  209. package/esm2022/lib/services/multiple-selection.service.mjs +0 -62
  210. package/esm2022/lib/utils/array.mjs +0 -2
  211. package/esm2022/lib/utils/html-container.class.mjs +0 -30
  212. package/esm2022/lib/utils/slection-item.interface.mjs +0 -2
  213. package/esm2022/lib/utils/uuid.mjs +0 -8
  214. package/esm2022/lib/wizi-components.module.mjs +0 -34
  215. package/esm2022/public-api.mjs +0 -156
  216. package/esm2022/wizishop-angular-components.mjs +0 -5
@@ -1,198 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { filter, takeUntil } from 'rxjs/operators';
4
- import { ValueChangeService } from './value-change.service';
5
- import { Subject } from 'rxjs';
6
- import { SelectSearchTriggerComponent } from '../select-search-trigger/select-search-trigger.component';
7
- import { DOWN_ARROW, ENTER, ESCAPE, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW, } from '@angular/cdk/keycodes';
8
- import { LabelComponent } from '../../common/label/label.component';
9
- import { SelectDirective } from './select.directive';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "./value-change.service";
12
- import * as i2 from "@angular/common";
13
- import * as i3 from "../../../directives/auto-hide/auto-hide.directive";
14
- import * as i4 from "../../../directives/zindex-toggle/zindex-toggle.directive";
15
- import * as i5 from "ngx-scrollbar";
16
- import * as i6 from "@ngx-translate/core";
17
- export class SelectComponent extends SelectDirective {
18
- /** Whether the component is required. */
19
- get required() {
20
- return this._required ?? false;
21
- }
22
- set required(value) {
23
- this._required = value;
24
- }
25
- get selectedOptionContent() {
26
- return this.valueChangeService.selectedOptionContent;
27
- }
28
- ;
29
- set keepPanelOpen(keepPanelOpen) {
30
- this.openPanel = keepPanelOpen;
31
- this._keepPanelOpen = keepPanelOpen;
32
- }
33
- get keepPanelOpen() {
34
- return this._keepPanelOpen;
35
- }
36
- set openPanel(openPanel) {
37
- const wasOpen = this._openPanel;
38
- this._openPanel = this.keepPanelOpen || openPanel;
39
- if (openPanel) {
40
- this.customSearchTrigger?.setFocus();
41
- }
42
- if (wasOpen) {
43
- this.onSelectTouch(this.value);
44
- }
45
- }
46
- get openPanel() {
47
- return this._openPanel;
48
- }
49
- constructor(valueChangeService) {
50
- super(valueChangeService);
51
- this.valueChangeService = valueChangeService;
52
- //! Refacto improve sroll on mobile, see with Pauline
53
- // angular material select https://github.com/angular/components/blob/main/src/material/select/select.ts
54
- this.role = 'combobox';
55
- this.small = false;
56
- this._openPanel = false;
57
- this.openPanelChange = new EventEmitter();
58
- this.tabIndex = -1;
59
- this._searchByTyping = true;
60
- this.isDestroyed$ = new Subject();
61
- this.isKeyBoardAction = false;
62
- this.skipIfTriggeredByKeyboardAction = () => {
63
- if (!this.isKeyBoardAction) {
64
- return true;
65
- }
66
- this.isKeyBoardAction = false;
67
- return false;
68
- };
69
- this.onSelectTouch = () => { };
70
- }
71
- ngOnInit() {
72
- super.ngOnInit();
73
- this.closeTabOnValueChange();
74
- }
75
- closeTabOnValueChange() {
76
- this.valueChangeService.valueChange$.pipe(takeUntil(this.isDestroyed$), filter(this.skipIfTriggeredByKeyboardAction)).subscribe(() => {
77
- this.onClosePanel();
78
- });
79
- }
80
- onTogglePanel() {
81
- this.openPanel = !this.openPanel;
82
- this.openPanelChange.emit(this.openPanel);
83
- }
84
- onClosePanel() {
85
- this.openPanel = false;
86
- this.openPanelChange.emit(this.openPanel);
87
- }
88
- onKeydown(event) {
89
- const keyCode = event.keyCode;
90
- if (event.keyCode === TAB) {
91
- // go to the next element with tabindex
92
- if (this.openPanel) {
93
- this.openPanel = false;
94
- }
95
- return;
96
- }
97
- if (this.disabled) {
98
- return;
99
- }
100
- const actionTriggered = this.openPanel ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);
101
- if (actionTriggered) {
102
- return;
103
- }
104
- this.isKeyBoardAction = true;
105
- super.onKeydown(event);
106
- }
107
- handleKeyboardActionWithSearch(event) {
108
- const keyCode = event.keyCode;
109
- if (keyCode === DOWN_ARROW) {
110
- this.isKeyBoardAction = true;
111
- this.valueChangeService.selectNextOption();
112
- return true;
113
- }
114
- if (keyCode === UP_ARROW) {
115
- this.isKeyBoardAction = true;
116
- this.valueChangeService.selectPreviousOption();
117
- return true;
118
- }
119
- return false;
120
- }
121
- /** Handles keyboard events while the select is closed. */
122
- _handleClosedKeydown(event) {
123
- const keyCode = event.keyCode;
124
- const isArrowKey = keyCode === DOWN_ARROW ||
125
- keyCode === UP_ARROW ||
126
- keyCode === LEFT_ARROW ||
127
- keyCode === RIGHT_ARROW;
128
- const isOpenKey = keyCode === ENTER;
129
- // Open the select on ALT + arrow key to match the native <select>
130
- if ((isOpenKey && !hasModifierKey(event)) ||
131
- (event.altKey && isArrowKey)) {
132
- this.openPanel = true;
133
- return true;
134
- }
135
- return false;
136
- }
137
- /** Handles keyboard events when the selected is open. */
138
- _handleOpenKeydown(event) {
139
- const keyCode = event.keyCode;
140
- const isArrowKey = keyCode === DOWN_ARROW ||
141
- keyCode === UP_ARROW ||
142
- keyCode === LEFT_ARROW ||
143
- keyCode === RIGHT_ARROW;
144
- const isEscapeKey = keyCode === ESCAPE || keyCode === ENTER || keyCode === TAB;
145
- if ((isArrowKey && event.altKey) || isEscapeKey) {
146
- // Close the select on ALT + arrow key to match the native <select>
147
- this.openPanel = false;
148
- if (this.customSearchTrigger && keyCode !== TAB) {
149
- // If a escape key is used with the search, the focus on the select is loosed. And we can not interact with the select anymore.
150
- this.selectHeader.nativeElement.focus();
151
- }
152
- return true;
153
- }
154
- return false;
155
- }
156
- registerOnTouched(fn) {
157
- this.onSelectTouch = fn;
158
- }
159
- ngOnDestroy() {
160
- this.isDestroyed$.next();
161
- this.isDestroyed$.complete();
162
- }
163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SelectComponent, deps: [{ token: i1.ValueChangeService }], target: i0.ɵɵFactoryTarget.Component }); }
164
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: SelectComponent, selector: "wac-select", inputs: { required: "required", small: "small", keepPanelOpen: "keepPanelOpen", openPanel: "openPanel" }, outputs: { openPanelChange: "openPanelChange" }, host: { properties: { "attr.role": "this.role" } }, providers: [
165
- { provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true },
166
- ValueChangeService
167
- ], queries: [{ propertyName: "customSearchTrigger", first: true, predicate: SelectSearchTriggerComponent, descendants: true }, { propertyName: "label", first: true, predicate: LabelComponent, descendants: true }], viewQueries: [{ propertyName: "selectHeader", first: true, predicate: ["selectHeader"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<p *ngIf=\"!!label\" class=\"wac-select__label\">\r\n <ng-content select=\"wac-label, .wac-label\" ></ng-content>\r\n</p>\r\n\r\n<div\r\n class=\"wac-select\"\r\n wzAutoHide\r\n (clickOutside)=\"onClosePanel()\"\r\n [triggerElement]=\"'wac-select__header__selection'\"\r\n [zIndexToggle]=\"openPanel\"\r\n [ngClass]=\"{'small': small}\"\r\n >\r\n\r\n <div #selectHeader class=\"wac-select__header\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && onTogglePanel()\" tabindex=\"0\">\r\n\r\n <ng-container [ngTemplateOutlet]=\"openPanel ? openPanelTrigger : closePanelTrigger\" >\r\n\r\n <ng-template #closePanelTrigger>\r\n <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template #openPanelTrigger>\r\n <ng-content *ngIf=\"!!customSearchTrigger; else defaultTrigger\" select=\"wac-select-search-trigger\" ></ng-content>\r\n </ng-template>\r\n\r\n <ng-template #defaultTrigger>\r\n <ng-content *ngIf=\"!selectedOptionContent\" select=\"wac-placeholder,[role=placeholder]\"></ng-content>\r\n <div\r\n class=\"wac-select__header__selection wac-option__placeholder\"\r\n *ngIf=\"!!selectedOptionContent\"\r\n [innerHtml]=\"selectedOptionContent\">\r\n </div>\r\n </ng-template>\r\n\r\n </ng-container>\r\n\r\n <span class=\"wac-select__header__chevron\"><i class=\"fas fa-chevron-down\"></i></span>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"wac-select__content\" *ngIf=\"!disabled\" [ngClass]=\"{ hidden: !openPanel, open: openPanel }\">\r\n\r\n <ng-scrollbar [visibility]=\"'hover'\" >\r\n <ng-content\r\n select=\"wac-option-call-to-action, wac-option, option, .option, [selectOption]\">\r\n </ng-content>\r\n </ng-scrollbar>\r\n\r\n <div *ngIf=\"!optionChildren?.length\" class=\"wac-select__content__empty\">\r\n <span>{{'wac.datatable.noresult' | translate}}</span>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: i4.ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "component", type: i5.NgScrollbar, selector: "ng-scrollbar", inputs: ["disabled", "sensorDisabled", "pointerEventsDisabled", "viewportPropagateMouseMove", "autoHeightDisabled", "autoWidthDisabled", "viewClass", "trackClass", "thumbClass", "minThumbSize", "trackClickScrollDuration", "pointerEventsMethod", "track", "visibility", "appearance", "position", "sensorDebounce", "scrollAuditTime"], outputs: ["updated"], exportAs: ["ngScrollbar"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
168
- }
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SelectComponent, decorators: [{
170
- type: Component,
171
- args: [{ selector: 'wac-select', providers: [
172
- { provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true },
173
- ValueChangeService
174
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, template: "<p *ngIf=\"!!label\" class=\"wac-select__label\">\r\n <ng-content select=\"wac-label, .wac-label\" ></ng-content>\r\n</p>\r\n\r\n<div\r\n class=\"wac-select\"\r\n wzAutoHide\r\n (clickOutside)=\"onClosePanel()\"\r\n [triggerElement]=\"'wac-select__header__selection'\"\r\n [zIndexToggle]=\"openPanel\"\r\n [ngClass]=\"{'small': small}\"\r\n >\r\n\r\n <div #selectHeader class=\"wac-select__header\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && onTogglePanel()\" tabindex=\"0\">\r\n\r\n <ng-container [ngTemplateOutlet]=\"openPanel ? openPanelTrigger : closePanelTrigger\" >\r\n\r\n <ng-template #closePanelTrigger>\r\n <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template #openPanelTrigger>\r\n <ng-content *ngIf=\"!!customSearchTrigger; else defaultTrigger\" select=\"wac-select-search-trigger\" ></ng-content>\r\n </ng-template>\r\n\r\n <ng-template #defaultTrigger>\r\n <ng-content *ngIf=\"!selectedOptionContent\" select=\"wac-placeholder,[role=placeholder]\"></ng-content>\r\n <div\r\n class=\"wac-select__header__selection wac-option__placeholder\"\r\n *ngIf=\"!!selectedOptionContent\"\r\n [innerHtml]=\"selectedOptionContent\">\r\n </div>\r\n </ng-template>\r\n\r\n </ng-container>\r\n\r\n <span class=\"wac-select__header__chevron\"><i class=\"fas fa-chevron-down\"></i></span>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"wac-select__content\" *ngIf=\"!disabled\" [ngClass]=\"{ hidden: !openPanel, open: openPanel }\">\r\n\r\n <ng-scrollbar [visibility]=\"'hover'\" >\r\n <ng-content\r\n select=\"wac-option-call-to-action, wac-option, option, .option, [selectOption]\">\r\n </ng-content>\r\n </ng-scrollbar>\r\n\r\n <div *ngIf=\"!optionChildren?.length\" class=\"wac-select__content__empty\">\r\n <span>{{'wac.datatable.noresult' | translate}}</span>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n" }]
175
- }], ctorParameters: () => [{ type: i1.ValueChangeService }], propDecorators: { role: [{
176
- type: HostBinding,
177
- args: ['attr.role']
178
- }], customSearchTrigger: [{
179
- type: ContentChild,
180
- args: [SelectSearchTriggerComponent]
181
- }], label: [{
182
- type: ContentChild,
183
- args: [LabelComponent]
184
- }], selectHeader: [{
185
- type: ViewChild,
186
- args: ['selectHeader']
187
- }], required: [{
188
- type: Input
189
- }], small: [{
190
- type: Input
191
- }], keepPanelOpen: [{
192
- type: Input
193
- }], openPanel: [{
194
- type: Input
195
- }], openPanelChange: [{
196
- type: Output
197
- }] } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2TCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDeEcsT0FBTyxFQUNMLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLGNBQWMsRUFDZCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEdBQUcsRUFDSCxRQUFRLEdBQ1QsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7OztBQWFyRCxNQUFNLE9BQU8sZUFBOEIsU0FBUSxlQUE2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QUlyQixRQUFRO3NCQURYLEtBQUs7Z0JBZUcsS0FBSztzQkFBYixLQUFLO2dCQUdGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBYUYsU0FBUztzQkFEWixLQUFLO2dCQW1CSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVmFsdWVDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi92YWx1ZS1jaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2VsZWN0U2VhcmNoVHJpZ2dlckNvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdC1zZWFyY2gtdHJpZ2dlci9zZWxlY3Qtc2VhcmNoLXRyaWdnZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBET1dOX0FSUk9XLFxyXG4gIEVOVEVSLFxyXG4gIEVTQ0FQRSxcclxuICBoYXNNb2RpZmllcktleSxcclxuICBMRUZUX0FSUk9XLFxyXG4gIFJJR0hUX0FSUk9XLFxyXG4gIFRBQixcclxuICBVUF9BUlJPVyxcclxufSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQgeyBMYWJlbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9sYWJlbC9sYWJlbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3REaXJlY3RpdmUgfSBmcm9tICcuL3NlbGVjdC5kaXJlY3RpdmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd2FjLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogU2VsZWN0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxyXG4gICAgVmFsdWVDaGFuZ2VTZXJ2aWNlXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudDxUT3B0aW9uVmFsdWU+IGV4dGVuZHMgU2VsZWN0RGlyZWN0aXZlPFRPcHRpb25WYWx1ZT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLy8hIFJlZmFjdG8gaW1wcm92ZSBzcm9sbCBvbiBtb2JpbGUsIHNlZSB3aXRoIFBhdWxpbmVcclxuICAvLyBhbmd1bGFyIG1hdGVyaWFsIHNlbGVjdCBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFpbi9zcmMvbWF0ZXJpYWwvc2VsZWN0L3NlbGVjdC50c1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnY29tYm9ib3gnO1xyXG5cclxuICBAQ29udGVudENoaWxkKFNlbGVjdFNlYXJjaFRyaWdnZXJDb21wb25lbnQpIGN1c3RvbVNlYXJjaFRyaWdnZXI6IFNlbGVjdFNlYXJjaFRyaWdnZXJDb21wb25lbnQ7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoTGFiZWxDb21wb25lbnQpIGxhYmVsOiBMYWJlbENvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2VsZWN0SGVhZGVyJykgc2VsZWN0SGVhZGVyOiBFbGVtZW50UmVmO1xyXG5cclxuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIHJlcXVpcmVkLiAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkID8/IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9yZXF1aXJlZCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIGdldCBzZWxlY3RlZE9wdGlvbkNvbnRlbnQoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlQ2hhbmdlU2VydmljZS5zZWxlY3RlZE9wdGlvbkNvbnRlbnQ7XHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgc21hbGwgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQga2VlcFBhbmVsT3BlbihrZWVwUGFuZWxPcGVuOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm9wZW5QYW5lbCA9IGtlZXBQYW5lbE9wZW47XHJcbiAgICB0aGlzLl9rZWVwUGFuZWxPcGVuID0ga2VlcFBhbmVsT3BlbjtcclxuICB9XHJcblxyXG4gIGdldCBrZWVwUGFuZWxPcGVuKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2tlZXBQYW5lbE9wZW4gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfa2VlcFBhbmVsT3BlbjogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgb3BlblBhbmVsKG9wZW5QYW5lbDogYm9vbGVhbikge1xyXG4gICAgY29uc3Qgd2FzT3BlbiA9IHRoaXMuX29wZW5QYW5lbDtcclxuICAgIHRoaXMuX29wZW5QYW5lbCA9IHRoaXMua2VlcFBhbmVsT3BlbiB8fCBvcGVuUGFuZWw7XHJcblxyXG4gICAgaWYgKG9wZW5QYW5lbCkge1xyXG4gICAgICB0aGlzLmN1c3RvbVNlYXJjaFRyaWdnZXI/LnNldEZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdhc09wZW4pIHtcclxuICAgICAgdGhpcy5vblNlbGVjdFRvdWNoKHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IG9wZW5QYW5lbCgpIDogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3BlblBhbmVsO1xyXG4gIH1cclxuICBfb3BlblBhbmVsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBvcGVuUGFuZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIG92ZXJyaWRlIHRhYkluZGV4OiBudW1iZXIgPSAtMTtcclxuXHJcbiAgb3ZlcnJpZGUgX3NlYXJjaEJ5VHlwaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgaXNEZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBpc0tleUJvYXJkQWN0aW9uID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHZhbHVlQ2hhbmdlU2VydmljZTogVmFsdWVDaGFuZ2VTZXJ2aWNlPFRPcHRpb25WYWx1ZT4sXHJcbiAgICApIHtcclxuICAgICAgc3VwZXIodmFsdWVDaGFuZ2VTZXJ2aWNlKTtcclxuICAgIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5jbG9zZVRhYk9uVmFsdWVDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvc2VUYWJPblZhbHVlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2UudmFsdWVDaGFuZ2UkLnBpcGUodGFrZVVudGlsKHRoaXMuaXNEZXN0cm95ZWQkKSwgZmlsdGVyKHRoaXMuc2tpcElmVHJpZ2dlcmVkQnlLZXlib2FyZEFjdGlvbikpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMub25DbG9zZVBhbmVsKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2tpcElmVHJpZ2dlcmVkQnlLZXlib2FyZEFjdGlvbiA9ICgpID0+IHtcclxuICAgIGlmKCF0aGlzLmlzS2V5Qm9hcmRBY3Rpb24pIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzS2V5Qm9hcmRBY3Rpb24gPSBmYWxzZTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlUGFuZWwoKSB7XHJcbiAgICB0aGlzLm9wZW5QYW5lbCA9ICF0aGlzLm9wZW5QYW5lbDtcclxuICAgIHRoaXMub3BlblBhbmVsQ2hhbmdlLmVtaXQodGhpcy5vcGVuUGFuZWwpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZVBhbmVsKCkge1xyXG4gICAgdGhpcy5vcGVuUGFuZWwgPSBmYWxzZTtcclxuICAgIHRoaXMub3BlblBhbmVsQ2hhbmdlLmVtaXQodGhpcy5vcGVuUGFuZWwpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcclxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSBUQUIpIHtcclxuICAgICAgLy8gZ28gdG8gdGhlIG5leHQgZWxlbWVudCB3aXRoIHRhYmluZGV4XHJcbiAgICAgIGlmICh0aGlzLm9wZW5QYW5lbCkge1xyXG4gICAgICAgIHRoaXMub3BlblBhbmVsID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFjdGlvblRyaWdnZXJlZCA9IHRoaXMub3BlblBhbmVsID8gdGhpcy5faGFuZGxlT3BlbktleWRvd24oZXZlbnQpIDogdGhpcy5faGFuZGxlQ2xvc2VkS2V5ZG93bihldmVudCk7XHJcblxyXG4gICAgaWYgKGFjdGlvblRyaWdnZXJlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzS2V5Qm9hcmRBY3Rpb24gPSB0cnVlO1xyXG4gICAgc3VwZXIub25LZXlkb3duKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUtleWJvYXJkQWN0aW9uV2l0aFNlYXJjaChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XHJcblxyXG4gICAgaWYgKGtleUNvZGUgPT09IERPV05fQVJST1cpIHtcclxuICAgICAgdGhpcy5pc0tleUJvYXJkQWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2Uuc2VsZWN0TmV4dE9wdGlvbigpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChrZXlDb2RlID09PSBVUF9BUlJPVykge1xyXG4gICAgICB0aGlzLmlzS2V5Qm9hcmRBY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlU2VydmljZS5zZWxlY3RQcmV2aW91c09wdGlvbigpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKiBIYW5kbGVzIGtleWJvYXJkIGV2ZW50cyB3aGlsZSB0aGUgc2VsZWN0IGlzIGNsb3NlZC4gKi9cclxuICBwcml2YXRlIF9oYW5kbGVDbG9zZWRLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcclxuICAgIGNvbnN0IGlzQXJyb3dLZXkgPVxyXG4gICAgICBrZXlDb2RlID09PSBET1dOX0FSUk9XIHx8XHJcbiAgICAgIGtleUNvZGUgPT09IFVQX0FSUk9XIHx8XHJcbiAgICAgIGtleUNvZGUgPT09IExFRlRfQVJST1cgfHxcclxuICAgICAga2V5Q29kZSA9PT0gUklHSFRfQVJST1c7XHJcbiAgICBjb25zdCBpc09wZW5LZXkgPSBrZXlDb2RlID09PSBFTlRFUjtcclxuICAgIC8vIE9wZW4gdGhlIHNlbGVjdCBvbiBBTFQgKyBhcnJvdyBrZXkgdG8gbWF0Y2ggdGhlIG5hdGl2ZSA8c2VsZWN0PlxyXG4gICAgaWYgKFxyXG4gICAgICAoaXNPcGVuS2V5ICYmICFoYXNNb2RpZmllcktleShldmVudCkpIHx8XHJcbiAgICAgIChldmVudC5hbHRLZXkgJiYgaXNBcnJvd0tleSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLm9wZW5QYW5lbCA9IHRydWU7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKiBIYW5kbGVzIGtleWJvYXJkIGV2ZW50cyB3aGVuIHRoZSBzZWxlY3RlZCBpcyBvcGVuLiAqL1xyXG4gIHByaXZhdGUgX2hhbmRsZU9wZW5LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcclxuICAgIGNvbnN0IGlzQXJyb3dLZXkgPVxyXG4gICAgICBrZXlDb2RlID09PSBET1dOX0FSUk9XIHx8XHJcbiAgICAgIGtleUNvZGUgPT09IFVQX0FSUk9XIHx8XHJcbiAgICAgIGtleUNvZGUgPT09IExFRlRfQVJST1cgfHxcclxuICAgICAga2V5Q29kZSA9PT0gUklHSFRfQVJST1c7XHJcbiAgICBjb25zdCBpc0VzY2FwZUtleSA9IGtleUNvZGUgPT09IEVTQ0FQRSB8fCBrZXlDb2RlID09PSBFTlRFUiB8fCBrZXlDb2RlID09PSBUQUI7XHJcblxyXG4gICAgaWYgKChpc0Fycm93S2V5ICYmIGV2ZW50LmFsdEtleSkgfHwgaXNFc2NhcGVLZXkpIHtcclxuICAgICAgLy8gQ2xvc2UgdGhlIHNlbGVjdCBvbiBBTFQgKyBhcnJvdyBrZXkgdG8gbWF0Y2ggdGhlIG5hdGl2ZSA8c2VsZWN0PlxyXG4gICAgICB0aGlzLm9wZW5QYW5lbCA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY3VzdG9tU2VhcmNoVHJpZ2dlciAmJiBrZXlDb2RlICE9PSBUQUIpIHtcclxuICAgICAgICAvLyBJZiBhIGVzY2FwZSBrZXkgaXMgdXNlZCB3aXRoIHRoZSBzZWFyY2gsIHRoZSBmb2N1cyBvbiB0aGUgc2VsZWN0IGlzIGxvb3NlZC4gQW5kIHdlIGNhbiBub3QgaW50ZXJhY3Qgd2l0aCB0aGUgc2VsZWN0IGFueW1vcmUuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RIZWFkZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0VG91Y2g6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gIG92ZXJyaWRlIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpe1xyXG4gICAgdGhpcy5vblNlbGVjdFRvdWNoID0gZm47XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuaXNEZXN0cm95ZWQkLm5leHQoKTtcclxuICAgIHRoaXMuaXNEZXN0cm95ZWQkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxwICpuZ0lmPVwiISFsYWJlbFwiIGNsYXNzPVwid2FjLXNlbGVjdF9fbGFiZWxcIj5cclxuICA8bmctY29udGVudCBzZWxlY3Q9XCJ3YWMtbGFiZWwsIC53YWMtbGFiZWxcIiA+PC9uZy1jb250ZW50PlxyXG48L3A+XHJcblxyXG48ZGl2XHJcbiAgY2xhc3M9XCJ3YWMtc2VsZWN0XCJcclxuICB3ekF1dG9IaWRlXHJcbiAgKGNsaWNrT3V0c2lkZSk9XCJvbkNsb3NlUGFuZWwoKVwiXHJcbiAgW3RyaWdnZXJFbGVtZW50XT1cIid3YWMtc2VsZWN0X19oZWFkZXJfX3NlbGVjdGlvbidcIlxyXG4gIFt6SW5kZXhUb2dnbGVdPVwib3BlblBhbmVsXCJcclxuICBbbmdDbGFzc109XCJ7J3NtYWxsJzogc21hbGx9XCJcclxuICA+XHJcblxyXG4gICAgPGRpdiAjc2VsZWN0SGVhZGVyIGNsYXNzPVwid2FjLXNlbGVjdF9faGVhZGVyXCIgW25nQ2xhc3NdPVwieyAnc2VsZWN0LWRpc2FibGVkJyA6IGRpc2FibGVkIH1cIiAoY2xpY2spPVwiIWRpc2FibGVkICYmIG9uVG9nZ2xlUGFuZWwoKVwiIHRhYmluZGV4PVwiMFwiPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJvcGVuUGFuZWwgPyBvcGVuUGFuZWxUcmlnZ2VyIDogY2xvc2VQYW5lbFRyaWdnZXJcIiA+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjY2xvc2VQYW5lbFRyaWdnZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRlZmF1bHRUcmlnZ2VyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNvcGVuUGFuZWxUcmlnZ2VyPlxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQgKm5nSWY9XCIhIWN1c3RvbVNlYXJjaFRyaWdnZXI7IGVsc2UgZGVmYXVsdFRyaWdnZXJcIiBzZWxlY3Q9XCJ3YWMtc2VsZWN0LXNlYXJjaC10cmlnZ2VyXCIgPjwvbmctY29udGVudD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUcmlnZ2VyPlxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQgKm5nSWY9XCIhc2VsZWN0ZWRPcHRpb25Db250ZW50XCIgc2VsZWN0PVwid2FjLXBsYWNlaG9sZGVyLFtyb2xlPXBsYWNlaG9sZGVyXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJ3YWMtc2VsZWN0X19oZWFkZXJfX3NlbGVjdGlvbiB3YWMtb3B0aW9uX19wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiISFzZWxlY3RlZE9wdGlvbkNvbnRlbnRcIlxyXG4gICAgICAgICAgICBbaW5uZXJIdG1sXT1cInNlbGVjdGVkT3B0aW9uQ29udGVudFwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ3YWMtc2VsZWN0X19oZWFkZXJfX2NoZXZyb25cIj48aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIj48L2k+PC9zcGFuPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwid2FjLXNlbGVjdF9fY29udGVudFwiICpuZ0lmPVwiIWRpc2FibGVkXCIgW25nQ2xhc3NdPVwieyBoaWRkZW46ICFvcGVuUGFuZWwsIG9wZW46IG9wZW5QYW5lbCB9XCI+XHJcblxyXG4gICAgICA8bmctc2Nyb2xsYmFyIFt2aXNpYmlsaXR5XT1cIidob3ZlcidcIiA+XHJcbiAgICAgICAgPG5nLWNvbnRlbnRcclxuICAgICAgICAgIHNlbGVjdD1cIndhYy1vcHRpb24tY2FsbC10by1hY3Rpb24sIHdhYy1vcHRpb24sIG9wdGlvbiwgLm9wdGlvbiwgW3NlbGVjdE9wdGlvbl1cIj5cclxuICAgICAgICA8L25nLWNvbnRlbnQ+XHJcbiAgICAgIDwvbmctc2Nyb2xsYmFyPlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFvcHRpb25DaGlsZHJlbj8ubGVuZ3RoXCIgY2xhc3M9XCJ3YWMtc2VsZWN0X19jb250ZW50X19lbXB0eVwiPlxyXG4gICAgICAgIDxzcGFuPnt7J3dhYy5kYXRhdGFibGUubm9yZXN1bHQnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -1,175 +0,0 @@
1
- import { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, A, Z, ZERO, NINE, TAB } from '@angular/cdk/keycodes';
2
- import { ContentChildren, Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { startWith, Subject, takeUntil } from 'rxjs';
5
- import { OPTION_SELECTION_HANDLER } from '../option/option-selection-handler.token';
6
- import { ValueChangeService } from './value-change.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "./value-change.service";
9
- export class SelectDirective {
10
- get tabindex() {
11
- return this.tabIndex;
12
- }
13
- get isSelectDisabled() {
14
- return this.disabled;
15
- }
16
- /** Handles all keydown events on the select. */
17
- onKeydown(event) {
18
- if (event.keyCode === TAB) {
19
- return;
20
- }
21
- if (this.disabled) {
22
- return;
23
- }
24
- this.handleKeyboardAction(event);
25
- }
26
- set value(value) {
27
- this._value = value;
28
- if (!this.optionChildren) {
29
- return;
30
- }
31
- this.valueChangeService.assignValue(value);
32
- }
33
- get value() {
34
- return this._value;
35
- }
36
- get multiple() {
37
- return this._multiple;
38
- }
39
- set multiple(value) {
40
- this._multiple = value;
41
- this.valueChangeService.setMultiple(value);
42
- }
43
- set disabled(disabled) {
44
- this._disabled = disabled;
45
- this.valueChangeService.setDisabledState(disabled);
46
- }
47
- get disabled() {
48
- return this._disabled;
49
- }
50
- get searchByTyping() {
51
- return this._searchByTyping;
52
- }
53
- set searchByTyping(value) {
54
- this._searchByTyping = value;
55
- }
56
- constructor(valueChangeService) {
57
- this.valueChangeService = valueChangeService;
58
- this.valueChange = new EventEmitter();
59
- this._multiple = false;
60
- this._disabled = false;
61
- this.tabIndex = 0;
62
- this._searchByTyping = false;
63
- this.isDestroyed$ = new Subject();
64
- // ControlValueAccessor methods
65
- this.onChange = () => { };
66
- this.onTouch = () => { };
67
- }
68
- ngOnInit() {
69
- this.handleValueChange();
70
- }
71
- ngAfterViewInit() {
72
- this.handleOptionChildren();
73
- }
74
- handleValueChange() {
75
- this.valueChangeService.valueChange$.pipe(takeUntil(this.isDestroyed$)).subscribe(value => {
76
- this._value = value;
77
- this.valueChange.emit(this.value);
78
- this.onChange(this.value);
79
- this.onTouch(this.value);
80
- });
81
- }
82
- handleOptionChildren() {
83
- this.optionChildren.changes.pipe(takeUntil(this.isDestroyed$), startWith(this.optionChildren)).subscribe(optionChildren => {
84
- this.valueChangeService.handleSelectOptionsChange(optionChildren, this.value);
85
- });
86
- }
87
- /** Handles keyboard events when the selected is open. */
88
- handleKeyboardAction(event) {
89
- if (!this.searchByTyping) {
90
- return;
91
- }
92
- const keyCode = event.keyCode;
93
- const isArrowKey = keyCode === DOWN_ARROW ||
94
- keyCode === UP_ARROW ||
95
- keyCode === LEFT_ARROW ||
96
- keyCode === RIGHT_ARROW;
97
- const isTyping = (keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE);
98
- if (isArrowKey) {
99
- event.preventDefault(); // prevents the page from scrolling
100
- // select the next option on arrow key down
101
- if (keyCode === DOWN_ARROW || keyCode === RIGHT_ARROW) {
102
- this.valueChangeService.selectNextOption();
103
- return;
104
- }
105
- this.valueChangeService.selectPreviousOption();
106
- return;
107
- }
108
- if (isTyping) {
109
- this.valueChangeService.searchOptionByFirstLetter(event.key);
110
- return;
111
- }
112
- }
113
- writeValue(value) {
114
- if (typeof value === 'undefined') {
115
- return;
116
- }
117
- this.value = value;
118
- }
119
- registerOnChange(fn) {
120
- this.onChange = fn;
121
- }
122
- registerOnTouched(fn) {
123
- this.onTouch = fn;
124
- }
125
- setDisabledState(isDisabled) {
126
- this.disabled = isDisabled;
127
- }
128
- ;
129
- ngOnDestroy() {
130
- this.isDestroyed$.next();
131
- this.isDestroyed$.complete();
132
- }
133
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SelectDirective, deps: [{ token: i1.ValueChangeService }], target: i0.ɵɵFactoryTarget.Directive }); }
134
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: SelectDirective, isStandalone: true, selector: "[wacSelect]", inputs: { value: "value", multiple: "multiple", disabled: "disabled", tabIndex: "tabIndex", searchByTyping: "searchByTyping" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "attr.tabindex": "this.tabindex", "class.wac-select-disabled": "this.isSelectDisabled" } }, providers: [
135
- { provide: NG_VALUE_ACCESSOR, useExisting: SelectDirective, multi: true },
136
- ValueChangeService
137
- ], queries: [{ propertyName: "optionChildren", predicate: OPTION_SELECTION_HANDLER, descendants: true }], exportAs: ["wacSelect"], ngImport: i0 }); }
138
- }
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SelectDirective, decorators: [{
140
- type: Directive,
141
- args: [{
142
- selector: '[wacSelect]',
143
- providers: [
144
- { provide: NG_VALUE_ACCESSOR, useExisting: SelectDirective, multi: true },
145
- ValueChangeService
146
- ],
147
- exportAs: 'wacSelect',
148
- standalone: true
149
- }]
150
- }], ctorParameters: () => [{ type: i1.ValueChangeService }], propDecorators: { tabindex: [{
151
- type: HostBinding,
152
- args: ['attr.tabindex']
153
- }], isSelectDisabled: [{
154
- type: HostBinding,
155
- args: ['class.wac-select-disabled']
156
- }], onKeydown: [{
157
- type: HostListener,
158
- args: ['keydown', ['$event']]
159
- }], optionChildren: [{
160
- type: ContentChildren,
161
- args: [OPTION_SELECTION_HANDLER, { descendants: true }]
162
- }], value: [{
163
- type: Input
164
- }], valueChange: [{
165
- type: Output
166
- }], multiple: [{
167
- type: Input
168
- }], disabled: [{
169
- type: Input
170
- }], tabIndex: [{
171
- type: Input
172
- }], searchByTyping: [{
173
- type: Input
174
- }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC9zZWxlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdHLE9BQU8sRUFBaUIsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNoSyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFZNUQsTUFBTSxPQUFPLGVBQWU7SUFFeEIsSUFBa0MsUUFBUTtRQUN4QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQThDLGdCQUFnQjtRQUM1RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELGdEQUFnRDtJQUNYLFNBQVMsQ0FBQyxLQUFvQjtRQUNqRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBSUQsSUFDSSxLQUFLLENBQUMsS0FBb0M7UUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBTUQsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUdELElBQ0ksUUFBUSxDQUFDLFFBQWlCO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFNRCxJQUNJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxLQUFjO1FBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFLRCxZQUFzQixrQkFBb0Q7UUFBcEQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFrQztRQXBDMUUsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBVTlCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFVbkMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUdsQixhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBUzlCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLGlCQUFZLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUEyRDVDLCtCQUErQjtRQUUvQixhQUFRLEdBQXlCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUUxQyxZQUFPLEdBQXlCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQTVEekMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxpQkFBaUI7UUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4RixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sb0JBQW9CO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDdEgsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QixDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQseURBQXlEO0lBQy9DLG9CQUFvQixDQUFDLEtBQW9CO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzlCLE1BQU0sVUFBVSxHQUNkLE9BQU8sS0FBSyxVQUFVO1lBQ3RCLE9BQU8sS0FBSyxRQUFRO1lBQ3BCLE9BQU8sS0FBSyxVQUFVO1lBQ3RCLE9BQU8sS0FBSyxXQUFXLENBQUM7UUFDMUIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3hGLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxtQ0FBbUM7WUFDM0QsMkNBQTJDO1lBQzNDLElBQUksT0FBTyxLQUFLLFVBQVUsSUFBSSxPQUFPLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMzQyxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQy9DLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0QsT0FBTztRQUNULENBQUM7SUFFSCxDQUFDO0lBUUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1AsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBQUEsQ0FBQztJQUVGLFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzs4R0FoS1EsZUFBZTtrR0FBZixlQUFlLG9ZQVBiO1lBQ1AsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3pFLGtCQUFrQjtTQUNuQix5REF5QmMsd0JBQStCOzsyRkFyQnZDLGVBQWU7a0JBVjNCLFNBQVM7bUJBQ1I7b0JBQ0UsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFNBQVMsRUFBRTt3QkFDUCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLGlCQUFpQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQ3pFLGtCQUFrQjtxQkFDbkI7b0JBQ0gsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjt1RkFHcUMsUUFBUTtzQkFBekMsV0FBVzt1QkFBQyxlQUFlO2dCQUlrQixnQkFBZ0I7c0JBQTdELFdBQVc7dUJBQUMsMkJBQTJCO2dCQUtILFNBQVM7c0JBQTdDLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVVzQyxjQUFjO3NCQUF0RixlQUFlO3VCQUFDLHdCQUErQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFHbkUsS0FBSztzQkFEUixLQUFLO2dCQWlCTixXQUFXO3NCQURWLE1BQU07Z0JBSUgsUUFBUTtzQkFEWCxLQUFLO2dCQVdGLFFBQVE7c0JBRFgsS0FBSztnQkFXRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdGLGNBQWM7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET1dOX0FSUk9XLCBVUF9BUlJPVywgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIEEsIFosIFpFUk8sIE5JTkUsIFRBQiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBzdGFydFdpdGgsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBPcHRpb25TZWxlY3Rpb25IYW5kbGVyIH0gZnJvbSAnLi4vb3B0aW9uL29wdGlvbi1zZWxlY3Rpb24taGFuZGxlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBPUFRJT05fU0VMRUNUSU9OX0hBTkRMRVIgfSBmcm9tICcuLi9vcHRpb24vb3B0aW9uLXNlbGVjdGlvbi1oYW5kbGVyLnRva2VuJztcclxuaW1wb3J0IHsgVmFsdWVDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi92YWx1ZS1jaGFuZ2Uuc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKFxyXG4gIHtcclxuICAgIHNlbGVjdG9yOiAnW3dhY1NlbGVjdF0nLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IFNlbGVjdERpcmVjdGl2ZSwgbXVsdGk6IHRydWUgfSxcclxuICAgICAgICBWYWx1ZUNoYW5nZVNlcnZpY2VcclxuICAgICAgXSxcclxuICAgIGV4cG9ydEFzOiAnd2FjU2VsZWN0JyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlbGVjdERpcmVjdGl2ZTxUT3B0aW9uVmFsdWU+IGltcGxlbWVudHMgIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JykgZ2V0IHRhYmluZGV4KCkge1xyXG4gICAgICByZXR1cm4gdGhpcy50YWJJbmRleDtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLndhYy1zZWxlY3QtZGlzYWJsZWQnKSBnZXQgaXNTZWxlY3REaXNhYmxlZCgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEhhbmRsZXMgYWxsIGtleWRvd24gZXZlbnRzIG9uIHRoZSBzZWxlY3QuICovXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBUQUIpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5oYW5kbGVLZXlib2FyZEFjdGlvbihldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihPUFRJT05fU0VMRUNUSU9OX0hBTkRMRVIgYXMgYW55LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIG9wdGlvbkNoaWxkcmVuITogUXVlcnlMaXN0PE9wdGlvblNlbGVjdGlvbkhhbmRsZXI8VE9wdGlvblZhbHVlPj47XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCB2YWx1ZSh2YWx1ZTogVE9wdGlvblZhbHVlIHwgVE9wdGlvblZhbHVlW10pIHtcclxuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5vcHRpb25DaGlsZHJlbikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2UuYXNzaWduVmFsdWUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWx1ZSgpIDogVE9wdGlvblZhbHVlIHwgVE9wdGlvblZhbHVlW10ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcbiAgICBfdmFsdWU6IFRPcHRpb25WYWx1ZSB8IFRPcHRpb25WYWx1ZVtdO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGU7XHJcbiAgICB9XHJcbiAgICBzZXQgbXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgdGhpcy5fbXVsdGlwbGUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2Uuc2V0TXVsdGlwbGUodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VTZXJ2aWNlLnNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQpO1xyXG4gICAgfVxyXG4gICAgZ2V0IGRpc2FibGVkKCkgOiBib29sZWFuIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gICAgfVxyXG4gICAgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICAgIEBJbnB1dCgpIHRhYkluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIEBJbnB1dCgpIFxyXG4gICAgZ2V0IHNlYXJjaEJ5VHlwaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fc2VhcmNoQnlUeXBpbmc7XHJcbiAgICB9XHJcbiAgICBzZXQgc2VhcmNoQnlUeXBpbmcodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgdGhpcy5fc2VhcmNoQnlUeXBpbmcgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIF9zZWFyY2hCeVR5cGluZyA9IGZhbHNlO1xyXG5cclxuICAgIGlzRGVzdHJveWVkJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHZhbHVlQ2hhbmdlU2VydmljZTogVmFsdWVDaGFuZ2VTZXJ2aWNlPFRPcHRpb25WYWx1ZT4pIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgdGhpcy5oYW5kbGVWYWx1ZUNoYW5nZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgdGhpcy5oYW5kbGVPcHRpb25DaGlsZHJlbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlVmFsdWVDaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2UudmFsdWVDaGFuZ2UkLnBpcGUodGFrZVVudGlsKHRoaXMuaXNEZXN0cm95ZWQkKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5vblRvdWNoKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlT3B0aW9uQ2hpbGRyZW4oKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25DaGlsZHJlbi5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuaXNEZXN0cm95ZWQkKSwgc3RhcnRXaXRoKHRoaXMub3B0aW9uQ2hpbGRyZW4pKS5zdWJzY3JpYmUob3B0aW9uQ2hpbGRyZW4gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU2VydmljZS5oYW5kbGVTZWxlY3RPcHRpb25zQ2hhbmdlKG9wdGlvbkNoaWxkcmVuLCB0aGlzLnZhbHVlKTtcclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEhhbmRsZXMga2V5Ym9hcmQgZXZlbnRzIHdoZW4gdGhlIHNlbGVjdGVkIGlzIG9wZW4uICovXHJcbiAgICBwcm90ZWN0ZWQgaGFuZGxlS2V5Ym9hcmRBY3Rpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgICAgaWYgKCF0aGlzLnNlYXJjaEJ5VHlwaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xyXG4gICAgICBjb25zdCBpc0Fycm93S2V5ID1cclxuICAgICAgICBrZXlDb2RlID09PSBET1dOX0FSUk9XIHx8XHJcbiAgICAgICAga2V5Q29kZSA9PT0gVVBfQVJST1cgfHxcclxuICAgICAgICBrZXlDb2RlID09PSBMRUZUX0FSUk9XIHx8XHJcbiAgICAgICAga2V5Q29kZSA9PT0gUklHSFRfQVJST1c7XHJcbiAgICAgIGNvbnN0IGlzVHlwaW5nID0gKGtleUNvZGUgPj0gQSAmJiBrZXlDb2RlIDw9IFopIHx8IChrZXlDb2RlID49IFpFUk8gJiYga2V5Q29kZSA8PSBOSU5FKTtcclxuICAgICAgaWYgKGlzQXJyb3dLZXkpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBwcmV2ZW50cyB0aGUgcGFnZSBmcm9tIHNjcm9sbGluZ1xyXG4gICAgICAgIC8vIHNlbGVjdCB0aGUgbmV4dCBvcHRpb24gb24gYXJyb3cga2V5IGRvd25cclxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gRE9XTl9BUlJPVyB8fCBrZXlDb2RlID09PSBSSUdIVF9BUlJPVykge1xyXG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2Uuc2VsZWN0TmV4dE9wdGlvbigpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU2VydmljZS5zZWxlY3RQcmV2aW91c09wdGlvbigpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlzVHlwaW5nKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2Uuc2VhcmNoT3B0aW9uQnlGaXJzdExldHRlcihldmVudC5rZXkpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBtZXRob2RzXHJcblxyXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gICAgb25Ub3VjaDogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpe1xyXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSl7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpe1xyXG4gICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICB0aGlzLmlzRGVzdHJveWVkJC5uZXh0KCk7XHJcbiAgICAgIHRoaXMuaXNEZXN0cm95ZWQkLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==