@fundamental-ngx/core 0.34.3-rc.35 → 0.34.3-rc.39

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 (168) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/busy-indicator.component.d.ts +1 -1
  9. package/busy-indicator/esm2020/busy-indicator.component.mjs +1 -1
  10. package/busy-indicator/fesm2015/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  11. package/busy-indicator/fesm2020/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  12. package/busy-indicator/package.json +1 -1
  13. package/button/package.json +1 -1
  14. package/calendar/esm2020/calendar-views/calendar-day-view/calendar-day-view.component.mjs +3 -3
  15. package/calendar/fesm2015/fundamental-ngx-core-calendar.mjs +2 -2
  16. package/calendar/fesm2015/fundamental-ngx-core-calendar.mjs.map +1 -1
  17. package/calendar/fesm2020/fundamental-ngx-core-calendar.mjs +2 -2
  18. package/calendar/fesm2020/fundamental-ngx-core-calendar.mjs.map +1 -1
  19. package/calendar/package.json +1 -1
  20. package/card/package.json +1 -1
  21. package/carousel/package.json +1 -1
  22. package/checkbox/package.json +1 -1
  23. package/combobox/esm2020/combobox.component.mjs +1 -1
  24. package/combobox/fesm2015/fundamental-ngx-core-combobox.mjs +1 -1
  25. package/combobox/fesm2020/fundamental-ngx-core-combobox.mjs +1 -1
  26. package/combobox/package.json +1 -1
  27. package/date-picker/package.json +1 -1
  28. package/datetime/package.json +1 -1
  29. package/datetime-picker/package.json +1 -1
  30. package/dialog/package.json +1 -1
  31. package/dynamic-page/package.json +1 -1
  32. package/dynamic-side-content/package.json +1 -1
  33. package/esm2020/busy-indicator/busy-indicator.component.mjs +1 -1
  34. package/esm2020/calendar/calendar-views/calendar-day-view/calendar-day-view.component.mjs +3 -3
  35. package/esm2020/combobox/combobox.component.mjs +1 -1
  36. package/esm2020/list/directives/list-group-header.directive.mjs +7 -16
  37. package/esm2020/list/directives/list-link.directive.mjs +11 -9
  38. package/esm2020/list/list-focus-item.model.mjs +44 -2
  39. package/esm2020/list/list-item/list-item.component.mjs +68 -22
  40. package/esm2020/list/list.component.mjs +32 -6
  41. package/esm2020/multi-input/multi-input.component.mjs +1 -1
  42. package/esm2020/product-switch/product-switch/product-switch.component.mjs +3 -3
  43. package/esm2020/time/time-column/time-column.component.mjs +3 -3
  44. package/esm2020/token/tokenizer.component.mjs +1 -1
  45. package/facets/package.json +1 -1
  46. package/feed-input/package.json +1 -1
  47. package/feed-list-item/package.json +1 -1
  48. package/fesm2015/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  49. package/fesm2015/fundamental-ngx-core-calendar.mjs +2 -2
  50. package/fesm2015/fundamental-ngx-core-calendar.mjs.map +1 -1
  51. package/fesm2015/fundamental-ngx-core-combobox.mjs +1 -1
  52. package/fesm2015/fundamental-ngx-core-list.mjs +200 -93
  53. package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
  54. package/fesm2015/fundamental-ngx-core-multi-input.mjs +1 -1
  55. package/fesm2015/fundamental-ngx-core-product-switch.mjs +2 -2
  56. package/fesm2015/fundamental-ngx-core-product-switch.mjs.map +1 -1
  57. package/fesm2015/fundamental-ngx-core-time.mjs +2 -2
  58. package/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  59. package/fesm2015/fundamental-ngx-core-token.mjs +1 -1
  60. package/fesm2020/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  61. package/fesm2020/fundamental-ngx-core-calendar.mjs +2 -2
  62. package/fesm2020/fundamental-ngx-core-calendar.mjs.map +1 -1
  63. package/fesm2020/fundamental-ngx-core-combobox.mjs +1 -1
  64. package/fesm2020/fundamental-ngx-core-list.mjs +197 -93
  65. package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
  66. package/fesm2020/fundamental-ngx-core-multi-input.mjs +1 -1
  67. package/fesm2020/fundamental-ngx-core-product-switch.mjs +2 -2
  68. package/fesm2020/fundamental-ngx-core-product-switch.mjs.map +1 -1
  69. package/fesm2020/fundamental-ngx-core-time.mjs +2 -2
  70. package/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  71. package/fesm2020/fundamental-ngx-core-token.mjs +1 -1
  72. package/file-uploader/package.json +1 -1
  73. package/fixed-card-layout/package.json +1 -1
  74. package/flexible-column-layout/package.json +1 -1
  75. package/form/package.json +1 -1
  76. package/formatted-text/package.json +1 -1
  77. package/grid-list/package.json +1 -1
  78. package/icon/package.json +1 -1
  79. package/illustrated-message/package.json +1 -1
  80. package/infinite-scroll/package.json +1 -1
  81. package/info-label/package.json +1 -1
  82. package/inline-help/package.json +1 -1
  83. package/input-group/package.json +1 -1
  84. package/layout-grid/package.json +1 -1
  85. package/layout-panel/package.json +1 -1
  86. package/link/package.json +1 -1
  87. package/list/directives/list-group-header.directive.d.ts +3 -8
  88. package/list/directives/list-link.directive.d.ts +8 -4
  89. package/list/esm2020/directives/list-group-header.directive.mjs +7 -16
  90. package/list/esm2020/directives/list-link.directive.mjs +11 -9
  91. package/list/esm2020/list-focus-item.model.mjs +44 -2
  92. package/list/esm2020/list-item/list-item.component.mjs +68 -22
  93. package/list/esm2020/list.component.mjs +32 -6
  94. package/list/fesm2015/fundamental-ngx-core-list.mjs +200 -93
  95. package/list/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
  96. package/list/fesm2020/fundamental-ngx-core-list.mjs +197 -93
  97. package/list/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
  98. package/list/list-focus-item.model.d.ts +22 -1
  99. package/list/list-item/list-item.component.d.ts +28 -10
  100. package/list/list.component.d.ts +5 -5
  101. package/list/package.json +1 -1
  102. package/menu/package.json +1 -1
  103. package/message-box/package.json +1 -1
  104. package/message-strip/package.json +1 -1
  105. package/message-toast/package.json +1 -1
  106. package/micro-process-flow/package.json +1 -1
  107. package/mobile-mode/package.json +1 -1
  108. package/multi-input/esm2020/multi-input.component.mjs +1 -1
  109. package/multi-input/fesm2015/fundamental-ngx-core-multi-input.mjs +1 -1
  110. package/multi-input/fesm2020/fundamental-ngx-core-multi-input.mjs +1 -1
  111. package/multi-input/package.json +1 -1
  112. package/nested-list/package.json +1 -1
  113. package/notification/package.json +1 -1
  114. package/object-identifier/package.json +1 -1
  115. package/object-marker/package.json +1 -1
  116. package/object-number/package.json +1 -1
  117. package/object-status/package.json +1 -1
  118. package/package.json +1 -1
  119. package/pagination/package.json +1 -1
  120. package/panel/package.json +1 -1
  121. package/popover/package.json +1 -1
  122. package/product-switch/esm2020/product-switch/product-switch.component.mjs +3 -3
  123. package/product-switch/fesm2015/fundamental-ngx-core-product-switch.mjs +2 -2
  124. package/product-switch/fesm2015/fundamental-ngx-core-product-switch.mjs.map +1 -1
  125. package/product-switch/fesm2020/fundamental-ngx-core-product-switch.mjs +2 -2
  126. package/product-switch/fesm2020/fundamental-ngx-core-product-switch.mjs.map +1 -1
  127. package/product-switch/package.json +1 -1
  128. package/progress-indicator/package.json +1 -1
  129. package/quick-view/package.json +1 -1
  130. package/radio/package.json +1 -1
  131. package/rating-indicator/package.json +1 -1
  132. package/resizable-card-layout/package.json +1 -1
  133. package/scroll-spy/package.json +1 -1
  134. package/scrollbar/package.json +1 -1
  135. package/segmented-button/package.json +1 -1
  136. package/select/package.json +1 -1
  137. package/shared/package.json +1 -1
  138. package/shellbar/package.json +1 -1
  139. package/side-navigation/package.json +1 -1
  140. package/slider/package.json +1 -1
  141. package/split-button/package.json +1 -1
  142. package/splitter/package.json +1 -1
  143. package/status-indicator/package.json +1 -1
  144. package/step-input/package.json +1 -1
  145. package/switch/package.json +1 -1
  146. package/table/package.json +1 -1
  147. package/tabs/package.json +1 -1
  148. package/text/package.json +1 -1
  149. package/tile/package.json +1 -1
  150. package/time/esm2020/time-column/time-column.component.mjs +3 -3
  151. package/time/fesm2015/fundamental-ngx-core-time.mjs +2 -2
  152. package/time/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  153. package/time/fesm2020/fundamental-ngx-core-time.mjs +2 -2
  154. package/time/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  155. package/time/package.json +1 -1
  156. package/time-picker/package.json +1 -1
  157. package/timeline/package.json +1 -1
  158. package/title/package.json +1 -1
  159. package/token/esm2020/tokenizer.component.mjs +1 -1
  160. package/token/fesm2015/fundamental-ngx-core-token.mjs +1 -1
  161. package/token/fesm2020/fundamental-ngx-core-token.mjs +1 -1
  162. package/token/package.json +1 -1
  163. package/toolbar/package.json +1 -1
  164. package/tree/package.json +1 -1
  165. package/upload-collection/package.json +1 -1
  166. package/utils/package.json +1 -1
  167. package/vertical-navigation/package.json +1 -1
  168. package/wizard/package.json +1 -1
@@ -1,24 +1,15 @@
1
1
  import { Directive, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, Output } from '@angular/core';
2
- import { coerceNumberProperty } from '@angular/cdk/coercion';
3
2
  import { ListFocusItem } from '../list-focus-item.model';
4
3
  import * as i0 from "@angular/core";
4
+ let uniqueId = 0;
5
5
  export class ListGroupHeaderDirective extends ListFocusItem {
6
6
  constructor(elementRef) {
7
7
  super(elementRef);
8
8
  this.elementRef = elementRef;
9
+ /** id of an element to be applied */
10
+ this.nativeElementId = `fd-list-group-header-${++uniqueId}`;
9
11
  /** @hidden Implementation of KeyboardSupportItemInterface */
10
12
  this.keyDown = new EventEmitter();
11
- /** @hidden */
12
- this.clicked = new EventEmitter();
13
- /** @hidden */
14
- this._tabIndex = -1;
15
- }
16
- /** tab index attribute */
17
- get tabindex() {
18
- return this._tabIndex;
19
- }
20
- set tabindex(value) {
21
- this._tabIndex = coerceNumberProperty(value, -1);
22
13
  }
23
14
  /** @hidden */
24
15
  keydownHandler(event) {
@@ -26,7 +17,7 @@ export class ListGroupHeaderDirective extends ListFocusItem {
26
17
  }
27
18
  }
28
19
  ListGroupHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ListGroupHeaderDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
29
- ListGroupHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: { tabindex: "tabindex" }, outputs: { keyDown: "keyDown" }, host: { listeners: { "keydown": "keydownHandler($event)" }, properties: { "style.outline": "\"none\"", "class.fd-list__item": "true", "class.fd-list__group-header": "true", "attr.tabindex": "this.tabindex" } }, providers: [
20
+ ListGroupHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: { nativeElementId: "nativeElementId" }, outputs: { keyDown: "keyDown" }, host: { listeners: { "keydown": "keydownHandler($event)" }, properties: { "style.outline": "\"none\"", "class.fd-list__item": "true", "class.fd-list__group-header": "true", "attr.id": "this.nativeElementId" } }, providers: [
30
21
  {
31
22
  provide: ListFocusItem,
32
23
  useExisting: forwardRef(() => ListGroupHeaderDirective)
@@ -48,15 +39,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
48
39
  }
49
40
  ]
50
41
  }]
51
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { tabindex: [{
42
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { nativeElementId: [{
52
43
  type: Input
53
44
  }, {
54
45
  type: HostBinding,
55
- args: ['attr.tabindex']
46
+ args: ['attr.id']
56
47
  }], keyDown: [{
57
48
  type: Output
58
49
  }], keydownHandler: [{
59
50
  type: HostListener,
60
51
  args: ['keydown', ['$event']]
61
52
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1ncm91cC1oZWFkZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbGlzdC9kaXJlY3RpdmVzL2xpc3QtZ3JvdXAtaGVhZGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBZ0J6RCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsYUFBYTtJQW9CdkQsWUFBcUIsVUFBc0I7UUFDdkMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBREQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVYzQyw2REFBNkQ7UUFFN0QsWUFBTyxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUV6RSxjQUFjO1FBQ2QsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFFekMsY0FBYztRQUNOLGNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUl2QixDQUFDO0lBckJELDBCQUEwQjtJQUMxQixJQUVJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBZUQsY0FBYztJQUVkLGNBQWMsQ0FBQyxLQUFvQjtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOztxSEE1QlEsd0JBQXdCO3lHQUF4Qix3QkFBd0IsNFZBUHRCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsYUFBYTtZQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO1NBQzFEO0tBQ0o7MkZBRVEsd0JBQXdCO2tCQWRwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2Q0FBNkM7b0JBQ3ZELElBQUksRUFBRTt3QkFDRixpQkFBaUIsRUFBRSxRQUFRO3dCQUMzQix1QkFBdUIsRUFBRSxNQUFNO3dCQUMvQiwrQkFBK0IsRUFBRSxNQUFNO3FCQUMxQztvQkFDRCxTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDO3lCQUMxRDtxQkFDSjtpQkFDSjtpR0FLTyxRQUFRO3NCQUZYLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZUFBZTtnQkFTNUIsT0FBTztzQkFETixNQUFNO2dCQWVQLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmltcG9ydCB7IExpc3RGb2N1c0l0ZW0gfSBmcm9tICcuLi9saXN0LWZvY3VzLWl0ZW0ubW9kZWwnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZExpc3RHcm91cEhlYWRlcl0sIFtmZC1saXN0LWdyb3VwLWhlYWRlcl0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tzdHlsZS5vdXRsaW5lXSc6ICdcIm5vbmVcIicsXG4gICAgICAgICdbY2xhc3MuZmQtbGlzdF9faXRlbV0nOiAndHJ1ZScsXG4gICAgICAgICdbY2xhc3MuZmQtbGlzdF9fZ3JvdXAtaGVhZGVyXSc6ICd0cnVlJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExpc3RGb2N1c0l0ZW0sXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMaXN0R3JvdXBIZWFkZXJEaXJlY3RpdmUpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSBleHRlbmRzIExpc3RGb2N1c0l0ZW0ge1xuICAgIC8qKiB0YWIgaW5kZXggYXR0cmlidXRlICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIGdldCB0YWJpbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFiSW5kZXg7XG4gICAgfVxuICAgIHNldCB0YWJpbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3RhYkluZGV4ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIC0xKTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gSW1wbGVtZW50YXRpb24gb2YgS2V5Ym9hcmRTdXBwb3J0SXRlbUludGVyZmFjZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGtleURvd246IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGFiSW5kZXggPSAtMTtcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBrZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleURvd24uZW1pdChldmVudCk7XG4gICAgfVxufVxuIl19
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1ncm91cC1oZWFkZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbGlzdC9kaXJlY3RpdmVzL2xpc3QtZ3JvdXAtaGVhZGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRXpELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQWdCakIsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUFVdkQsWUFBcUIsVUFBc0I7UUFDdkMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBREQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVQzQyxxQ0FBcUM7UUFHckMsb0JBQWUsR0FBa0Isd0JBQXdCLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFFdEUsNkRBQTZEO1FBRTdELFlBQU8sR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUFJekUsQ0FBQztJQUVELGNBQWM7SUFFZCxjQUFjLENBQUMsS0FBb0I7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7cUhBbEJRLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLDJXQVB0QjtRQUNQO1lBQ0ksT0FBTyxFQUFFLGFBQWE7WUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztTQUMxRDtLQUNKOzJGQUVRLHdCQUF3QjtrQkFkcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNkNBQTZDO29CQUN2RCxJQUFJLEVBQUU7d0JBQ0YsaUJBQWlCLEVBQUUsUUFBUTt3QkFDM0IsdUJBQXVCLEVBQUUsTUFBTTt3QkFDL0IsK0JBQStCLEVBQUUsTUFBTTtxQkFDMUM7b0JBQ0QsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQzt5QkFDMUQ7cUJBQ0o7aUJBQ0o7aUdBS0csZUFBZTtzQkFGZCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLFNBQVM7Z0JBS3RCLE9BQU87c0JBRE4sTUFBTTtnQkFTUCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBMaXN0Rm9jdXNJdGVtIH0gZnJvbSAnLi4vbGlzdC1mb2N1cy1pdGVtLm1vZGVsJztcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRMaXN0R3JvdXBIZWFkZXJdLCBbZmQtbGlzdC1ncm91cC1oZWFkZXJdJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbc3R5bGUub3V0bGluZV0nOiAnXCJub25lXCInLFxuICAgICAgICAnW2NsYXNzLmZkLWxpc3RfX2l0ZW1dJzogJ3RydWUnLFxuICAgICAgICAnW2NsYXNzLmZkLWxpc3RfX2dyb3VwLWhlYWRlcl0nOiAndHJ1ZSdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBMaXN0Rm9jdXNJdGVtLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTGlzdEdyb3VwSGVhZGVyRGlyZWN0aXZlKVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0R3JvdXBIZWFkZXJEaXJlY3RpdmUgZXh0ZW5kcyBMaXN0Rm9jdXNJdGVtIHtcbiAgICAvKiogaWQgb2YgYW4gZWxlbWVudCB0byBiZSBhcHBsaWVkICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIG5hdGl2ZUVsZW1lbnRJZDogc3RyaW5nIHwgbnVsbCA9IGBmZC1saXN0LWdyb3VwLWhlYWRlci0keysrdW5pcXVlSWR9YDtcblxuICAgIC8qKiBAaGlkZGVuIEltcGxlbWVudGF0aW9uIG9mIEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2UgKi9cbiAgICBAT3V0cHV0KClcbiAgICBrZXlEb3duOiBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAga2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5rZXlEb3duLmVtaXQoZXZlbnQpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import { Directive, HostBinding, Input } from '@angular/core';
2
+ import { Subject } from 'rxjs';
2
3
  import * as i0 from "@angular/core";
3
4
  export class ListLinkDirective {
4
5
  constructor() {
@@ -6,14 +7,20 @@ export class ListLinkDirective {
6
7
  this.navigationIndicator = false;
7
8
  /** Defines if link should be treated as a navigated */
8
9
  this.navigated = false;
9
- /** Defines if item is selected */
10
- this.selected = false;
11
10
  /** @hidden */
12
11
  this.fdListLinkClass = true;
12
+ /** Emits when some of the properties, that should be read by screenreader, are changed */
13
+ this._onReadablePropertyChanged$ = new Subject();
14
+ }
15
+ /** @hidden */
16
+ ngOnChanges(changes) {
17
+ if (changes.navigationIndicator || changes.navigated) {
18
+ this._onReadablePropertyChanged$.next();
19
+ }
13
20
  }
14
21
  }
15
22
  ListLinkDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ListLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
16
- ListLinkDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: { navigationIndicator: "navigationIndicator", navigated: "navigated", selected: "selected" }, host: { properties: { "class.fd-list__link--navigation-indicator": "this.navigationIndicator", "class.is-navigated": "this.navigated", "class.is-selected": "this.selected", "class.fd-list__link": "this.fdListLinkClass" } }, ngImport: i0 });
23
+ ListLinkDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: { navigationIndicator: "navigationIndicator", navigated: "navigated" }, host: { properties: { "class.fd-list__link--navigation-indicator": "this.navigationIndicator", "class.is-navigated": "this.navigated", "class.fd-list__link": "this.fdListLinkClass" } }, usesOnChanges: true, ngImport: i0 });
17
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ListLinkDirective, decorators: [{
18
25
  type: Directive,
19
26
  args: [{
@@ -29,13 +36,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
29
36
  }, {
30
37
  type: HostBinding,
31
38
  args: ['class.is-navigated']
32
- }], selected: [{
33
- type: Input
34
- }, {
35
- type: HostBinding,
36
- args: ['class.is-selected']
37
39
  }], fdListLinkClass: [{
38
40
  type: HostBinding,
39
41
  args: ['class.fd-list__link']
40
42
  }] } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1saW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2xpc3QvZGlyZWN0aXZlcy9saXN0LWxpbmsuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLOUQsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUlJLGdGQUFnRjtRQUdoRix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFNUIsdURBQXVEO1FBR3ZELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsa0NBQWtDO1FBR2xDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsY0FBYztRQUVkLG9CQUFlLEdBQUcsSUFBSSxDQUFDO0tBQzFCOzs4R0FuQlksaUJBQWlCO2tHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFIN0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsOEJBQThCO2lCQUMzQzs4QkFLRyxtQkFBbUI7c0JBRmxCLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsMkNBQTJDO2dCQU14RCxTQUFTO3NCQUZSLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsb0JBQW9CO2dCQU1qQyxRQUFRO3NCQUZQLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsbUJBQW1CO2dCQUtoQyxlQUFlO3NCQURkLFdBQVc7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmQtbGlzdC1saW5rXSwgW2ZkTGlzdExpbmtdJ1xufSlcbmV4cG9ydCBjbGFzcyBMaXN0TGlua0RpcmVjdGl2ZSB7XG4gICAgLyoqIERlZmluZXMgaWYgbmF2aWdhdGlvbiBpbmRpY2F0b3IgYXJyb3cgc2hvdWxkIGJlIGluY2x1ZGVkIGluc2lkZSBsaXN0IGl0ZW0gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdF9fbGluay0tbmF2aWdhdGlvbi1pbmRpY2F0b3InKVxuICAgIG5hdmlnYXRpb25JbmRpY2F0b3IgPSBmYWxzZTtcblxuICAgIC8qKiBEZWZpbmVzIGlmIGxpbmsgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBuYXZpZ2F0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtbmF2aWdhdGVkJylcbiAgICBuYXZpZ2F0ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBEZWZpbmVzIGlmIGl0ZW0gaXMgc2VsZWN0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtc2VsZWN0ZWQnKVxuICAgIHNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdF9fbGluaycpXG4gICAgZmRMaXN0TGlua0NsYXNzID0gdHJ1ZTtcbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1saW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2xpc3QvZGlyZWN0aXZlcy9saXN0LWxpbmsuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLL0IsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUlJLGdGQUFnRjtRQUdoRix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFNUIsdURBQXVEO1FBR3ZELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsY0FBYztRQUVkLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRXZCLDBGQUEwRjtRQUNqRixnQ0FBMkIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBUTlEO0lBTkcsY0FBYztJQUNkLFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ2xELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMzQztJQUNMLENBQUM7OzhHQXZCUSxpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw4QkFBOEI7aUJBQzNDOzhCQUtHLG1CQUFtQjtzQkFGbEIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQywyQ0FBMkM7Z0JBTXhELFNBQVM7c0JBRlIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBS2pDLGVBQWU7c0JBRGQsV0FBVzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkLWxpc3QtbGlua10sIFtmZExpc3RMaW5rXSdcbn0pXG5leHBvcnQgY2xhc3MgTGlzdExpbmtEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIC8qKiBEZWZpbmVzIGlmIG5hdmlnYXRpb24gaW5kaWNhdG9yIGFycm93IHNob3VsZCBiZSBpbmNsdWRlZCBpbnNpZGUgbGlzdCBpdGVtICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWxpc3RfX2xpbmstLW5hdmlnYXRpb24taW5kaWNhdG9yJylcbiAgICBuYXZpZ2F0aW9uSW5kaWNhdG9yID0gZmFsc2U7XG5cbiAgICAvKiogRGVmaW5lcyBpZiBsaW5rIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgbmF2aWdhdGVkICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLW5hdmlnYXRlZCcpXG4gICAgbmF2aWdhdGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdF9fbGluaycpXG4gICAgZmRMaXN0TGlua0NsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIHNvbWUgb2YgdGhlIHByb3BlcnRpZXMsIHRoYXQgc2hvdWxkIGJlIHJlYWQgYnkgc2NyZWVucmVhZGVyLCBhcmUgY2hhbmdlZCAqL1xuICAgIHJlYWRvbmx5IF9vblJlYWRhYmxlUHJvcGVydHlDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMubmF2aWdhdGlvbkluZGljYXRvciB8fCBjaGFuZ2VzLm5hdmlnYXRlZCkge1xuICAgICAgICAgICAgdGhpcy5fb25SZWFkYWJsZVByb3BlcnR5Q2hhbmdlZCQubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,10 +1,35 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { coerceNumberProperty } from '@angular/cdk/coercion';
2
+ import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input } from '@angular/core';
3
+ import { Subject } from 'rxjs';
4
+ import * as i0 from "@angular/core";
2
5
  export class ListFocusItem {
3
6
  constructor(elementRef) {
4
7
  this.elementRef = elementRef;
8
+ /** @hidden */
9
+ this._focused$ = new Subject();
10
+ /** @hidden */
11
+ this._clicked$ = new Subject();
12
+ /** @hidden */
13
+ this._isFirstItem = false;
5
14
  /** @hidden Implementation of KeyboardSupportItemInterface */
6
15
  this.keyDown = new EventEmitter();
7
16
  }
17
+ /** tab index attribute */
18
+ get tabindex() {
19
+ if (this._isFirstItem && isNaN(this._tabIndex)) {
20
+ return 0;
21
+ }
22
+ return this._tabIndex ?? -1;
23
+ }
24
+ set tabindex(value) {
25
+ this._tabIndex = coerceNumberProperty(value, -1);
26
+ }
27
+ /** @hidden */
28
+ onFocus(event) {
29
+ this._focused$.next({
30
+ focusedWithin: event.target !== this.elementRef?.nativeElement
31
+ });
32
+ }
8
33
  /** @hidden */
9
34
  click() {
10
35
  this.elementRef?.nativeElement?.click();
@@ -13,5 +38,22 @@ export class ListFocusItem {
13
38
  focus() {
14
39
  this.elementRef?.nativeElement?.focus();
15
40
  }
41
+ /** @hidden */
42
+ setIsFirst(value) {
43
+ this._isFirstItem = value;
44
+ }
16
45
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1mb2N1cy1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbGlzdC9saXN0LWZvY3VzLWl0ZW0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxNQUFNLE9BQU8sYUFBYTtJQUl0QixZQUFxQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBSDNDLDZEQUE2RDtRQUM3RCxZQUFPLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO0lBRTNCLENBQUM7SUFFL0MsY0FBYztJQUNkLEtBQUs7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsY0FBYztJQUNkLEtBQUs7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgTGlzdEZvY3VzSXRlbSBpbXBsZW1lbnRzIEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2Uge1xuICAgIC8qKiBAaGlkZGVuIEltcGxlbWVudGF0aW9uIG9mIEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2UgKi9cbiAgICBrZXlEb3duOiBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5jbGljaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG59XG4iXX0=
46
+ ListFocusItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ListFocusItem, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
47
+ ListFocusItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: ListFocusItem, inputs: { tabindex: "tabindex" }, host: { listeners: { "focusin": "onFocus($event)" }, properties: { "attr.tabindex": "this.tabindex" } }, ngImport: i0 });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ListFocusItem, decorators: [{
49
+ type: Directive
50
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { tabindex: [{
51
+ type: Input
52
+ }, {
53
+ type: HostBinding,
54
+ args: ['attr.tabindex']
55
+ }], onFocus: [{
56
+ type: HostListener,
57
+ args: ['focusin', ['$event']]
58
+ }] } });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1mb2N1cy1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbGlzdC9saXN0LWZvY3VzLWl0ZW0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRy9CLE1BQU0sT0FBZ0IsYUFBYTtJQXFDL0IsWUFBcUIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXZCM0MsY0FBYztRQUNMLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBOEIsQ0FBQztRQUUvRCxjQUFjO1FBQ0wsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7UUFFL0MsY0FBYztRQUNKLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBSy9CLDZEQUE2RDtRQUM3RCxZQUFPLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO0lBVTNCLENBQUM7SUFwQy9DLDBCQUEwQjtJQUMxQixJQUVJLFFBQVE7UUFDUixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFtQixDQUFDLEVBQUU7WUFDdEQsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFpQkQsY0FBYztJQUVKLE9BQU8sQ0FBQyxLQUFpQjtRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNoQixhQUFhLEVBQUUsS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWE7U0FDakUsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUlELGNBQWM7SUFDZCxLQUFLO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGNBQWM7SUFDZCxLQUFLO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGNBQWM7SUFDZCxVQUFVLENBQUMsS0FBYztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDOzswR0FwRGlCLGFBQWE7OEZBQWIsYUFBYTsyRkFBYixhQUFhO2tCQURsQyxTQUFTO2lHQUtGLFFBQVE7c0JBRlgsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxlQUFlO2dCQTRCbEIsT0FBTztzQkFEaEIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMaXN0Rm9jdXNJdGVtIGltcGxlbWVudHMgS2V5Ym9hcmRTdXBwb3J0SXRlbUludGVyZmFjZSB7XG4gICAgLyoqIHRhYiBpbmRleCBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gICAgZ2V0IHRhYmluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLl9pc0ZpcnN0SXRlbSAmJiBpc05hTih0aGlzLl90YWJJbmRleCBhcyBudW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdGFiSW5kZXggPz8gLTE7XG4gICAgfVxuICAgIHNldCB0YWJpbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3RhYkluZGV4ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIC0xKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9mb2N1c2VkJCA9IG5ldyBTdWJqZWN0PHsgZm9jdXNlZFdpdGhpbjogYm9vbGVhbiB9PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfY2xpY2tlZCQgPSBuZXcgU3ViamVjdDxNb3VzZUV2ZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2lzRmlyc3RJdGVtID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfdGFiSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuIEltcGxlbWVudGF0aW9uIG9mIEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2UgKi9cbiAgICBrZXlEb3duOiBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzaW4nLCBbJyRldmVudCddKVxuICAgIHByb3RlY3RlZCBvbkZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWQkLm5leHQoe1xuICAgICAgICAgICAgZm9jdXNlZFdpdGhpbjogZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uY2xpY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRJc0ZpcnN0KHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzRmlyc3RJdGVtID0gdmFsdWU7XG4gICAgfVxufVxuIl19
@@ -1,9 +1,8 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, Output, QueryList, ViewEncapsulation } from '@angular/core';
2
- import { coerceNumberProperty } from '@angular/cdk/coercion';
3
2
  import { CheckboxComponent } from '@fundamental-ngx/core/checkbox';
4
3
  import { RadioButtonComponent } from '@fundamental-ngx/core/radio';
5
4
  import { ListLinkDirective } from '../directives/list-link.directive';
6
- import { Subject } from 'rxjs';
5
+ import { merge, Subject } from 'rxjs';
7
6
  import { startWith, takeUntil } from 'rxjs/operators';
8
7
  import { KeyUtil } from '@fundamental-ngx/core/utils';
9
8
  import { LIST_ITEM_COMPONENT } from '@fundamental-ngx/core/utils';
@@ -13,6 +12,7 @@ import { ButtonComponent } from '@fundamental-ngx/core/button';
13
12
  import * as i0 from "@angular/core";
14
13
  import * as i1 from "@fundamental-ngx/core/form";
15
14
  import * as i2 from "@angular/common";
15
+ let listItemUniqueId = 0;
16
16
  /**
17
17
  * The component that represents a list item.
18
18
  * The list item can contain plain text, links or actions.
@@ -38,19 +38,25 @@ export class ListItemComponent extends ListFocusItem {
38
38
  this.keyDown = new EventEmitter();
39
39
  /** Whether list item contains link */
40
40
  this.link = false;
41
- /** @hidden Implementation of KeyboardSupportItemInterface | TODO Revisit KeyboardSupportItemInterface*/
42
- this.clicked = new EventEmitter();
43
- /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */
41
+ /** @hidden An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */
44
42
  this._onDestroy$ = new Subject();
45
43
  /** @hidden */
46
- this._tabIndex = 0;
47
- }
48
- /** tab index attribute */
49
- get tabindex() {
50
- return this._tabIndex;
44
+ this._onLinkListChanged$ = new Subject();
45
+ /** @hidden */
46
+ this.screenReaderContent = '';
47
+ /** @hidden */
48
+ this._uniqueId = 'fdp-list-item-' + ++listItemUniqueId;
51
49
  }
52
- set tabindex(value) {
53
- this._tabIndex = coerceNumberProperty(value, -1);
50
+ /** @hidden */
51
+ get getCombinedAriaDescribedBy() {
52
+ let describedBy = this._uniqueId + '-screenReader-content';
53
+ if (this.ariaDescribedBy) {
54
+ describedBy += ' ' + this.ariaDescribedBy;
55
+ }
56
+ if (this._relatedGroupHeaderId) {
57
+ describedBy += ' ' + this._relatedGroupHeaderId;
58
+ }
59
+ return describedBy;
54
60
  }
55
61
  /** @hidden */
56
62
  ngAfterContentInit() {
@@ -58,6 +64,14 @@ export class ListItemComponent extends ListFocusItem {
58
64
  this._listenOnButtonQueryChange();
59
65
  }
60
66
  /** @hidden */
67
+ ngOnChanges(changes) {
68
+ if (changes.selectedListItemScreenReaderText ||
69
+ changes.navigatedListItemScreenReaderText ||
70
+ changes.navigatableListItemScreenReaderText) {
71
+ this._updateScreenReaderText();
72
+ }
73
+ }
74
+ /** @hidden */
61
75
  ngOnDestroy() {
62
76
  this._onDestroy$.next();
63
77
  this._onDestroy$.complete();
@@ -69,16 +83,21 @@ export class ListItemComponent extends ListFocusItem {
69
83
  this.checkbox.nextValue();
70
84
  this._muteEvent(event);
71
85
  }
72
- if (this.radio) {
86
+ else if (this.radio) {
73
87
  this.radio.labelClicked(event);
74
88
  this._muteEvent(event);
75
89
  }
90
+ else if (this.interactive) {
91
+ this.selected = !this.selected;
92
+ this._muteEvent(event);
93
+ return;
94
+ }
76
95
  }
77
96
  this.keyDown.emit(event);
78
97
  }
79
98
  /** Handler for mouse events */
80
99
  onClick(event) {
81
- this.clicked.emit(event);
100
+ this._clicked$.next(event);
82
101
  if (this.checkbox && !this.link) {
83
102
  if (!this.checkbox.elementRef.nativeElement.contains(event.target)) {
84
103
  // clicking on the checkbox is not suppressed
@@ -93,7 +112,13 @@ export class ListItemComponent extends ListFocusItem {
93
112
  /** @hidden */
94
113
  _listenOnLinkQueryChange() {
95
114
  this.linkDirectives.changes.pipe(takeUntil(this._onDestroy$), startWith(0)).subscribe(() => {
115
+ this._onLinkListChanged$.next();
96
116
  this.link = this.linkDirectives.length > 0;
117
+ if (this.link) {
118
+ merge(this.linkDirectives.toArray().map((d) => d._onReadablePropertyChanged$))
119
+ .pipe(takeUntil(merge(this._onDestroy$, this._onLinkListChanged$)))
120
+ .subscribe(() => this._updateScreenReaderText());
121
+ }
97
122
  this._changeDetectorRef.detectChanges();
98
123
  });
99
124
  }
@@ -114,9 +139,24 @@ export class ListItemComponent extends ListFocusItem {
114
139
  event.stopPropagation();
115
140
  event.preventDefault();
116
141
  }
142
+ /** @hidden */
143
+ _updateScreenReaderText() {
144
+ let content = '';
145
+ if (this.selected) {
146
+ content += `, ${this.selectedListItemScreenReaderText ?? 'selected'}`;
147
+ }
148
+ if (this.linkDirectives.some((d) => d.navigated)) {
149
+ content += `, ${this.navigatedListItemScreenReaderText ?? 'navigated'}`;
150
+ }
151
+ if (this.linkDirectives.some((d) => d.navigationIndicator)) {
152
+ content += `, ${this.navigatableListItemScreenReaderText ?? 'navigatable'}`;
153
+ }
154
+ this.screenReaderContent = content;
155
+ this._changeDetectorRef.markForCheck();
156
+ }
117
157
  }
118
158
  ListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ListItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
119
- ListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: { selected: "selected", tabindex: "tabindex", noData: "noData", action: "action", interactive: "interactive", growing: "growing", counter: "counter", unread: "unread" }, outputs: { keyDown: "keyDown" }, host: { attributes: { "role": "listitem" }, listeners: { "keydown": "keydownHandler($event)", "click": "onClick($event)" }, properties: { "attr.aria-selected": "this.selected", "class.is-selected": "this.selected", "attr.tabindex": "this.tabindex", "class.fd-list__item--no-data": "this.noData", "class.fd-list__item--action": "this.action", "class.fd-list__item--interractive": "this.interactive", "class.fd-list__item--growing": "this.growing", "class.fd-list__item--unread": "this.unread", "class.fd-list__item--link": "this.link" }, classAttribute: "fd-list__item" }, providers: [
159
+ ListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: { selected: "selected", ariaDescribedBy: "ariaDescribedBy", noData: "noData", action: "action", interactive: "interactive", growing: "growing", counter: "counter", unread: "unread", selectedListItemScreenReaderText: "selectedListItemScreenReaderText", navigatedListItemScreenReaderText: "navigatedListItemScreenReaderText", navigatableListItemScreenReaderText: "navigatableListItemScreenReaderText" }, outputs: { keyDown: "keyDown" }, host: { attributes: { "role": "listitem" }, listeners: { "keydown": "keydownHandler($event)", "click": "onClick($event)" }, properties: { "attr.aria-selected": "this.selected", "class.is-selected": "this.selected", "class.fd-list__item--no-data": "this.noData", "class.fd-list__item--action": "this.action", "class.fd-list__item--interractive": "this.interactive", "class.fd-list__item--growing": "this.growing", "class.fd-list__item--unread": "this.unread", "class.fd-list__item--link": "this.link", "attr.aria-describedBy": "this.getCombinedAriaDescribedBy" }, classAttribute: "fd-list__item" }, providers: [
120
160
  {
121
161
  provide: LIST_ITEM_COMPONENT,
122
162
  useExisting: forwardRef(() => ListItemComponent)
@@ -125,7 +165,7 @@ ListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
125
165
  provide: ListFocusItem,
126
166
  useExisting: forwardRef(() => ListItemComponent)
127
167
  }
128
- ], queries: [{ propertyName: "checkbox", first: true, predicate: CheckboxComponent, descendants: true }, { propertyName: "radio", first: true, predicate: RadioButtonComponent, descendants: true }, { propertyName: "linkDirectives", predicate: ListLinkDirective }, { propertyName: "buttons", predicate: ButtonComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"checkbox || radio\">\n <div fd-form-item class=\"fd-list__form-item\">\n <ng-content select=\"fd-checkbox\"></ng-content>\n <ng-content select=\"fd-radio-button\"></ng-content>\n </div>\n</ng-container>\n\n<ng-content></ng-content>\n\n<span *ngIf=\"counter || counter === 0\" class=\"fd-list__item-counter\">\n {{ counter.toString() | slice: 0:5 }}\n</span>\n", components: [{ type: i1.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "slice": i2.SlicePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
168
+ ], queries: [{ propertyName: "checkbox", first: true, predicate: CheckboxComponent, descendants: true }, { propertyName: "radio", first: true, predicate: RadioButtonComponent, descendants: true }, { propertyName: "linkDirectives", predicate: ListLinkDirective }, { propertyName: "buttons", predicate: ButtonComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"checkbox || radio\">\n <div fd-form-item class=\"fd-list__form-item\">\n <ng-content select=\"fd-checkbox\"></ng-content>\n <ng-content select=\"fd-radio-button\"></ng-content>\n </div>\n</ng-container>\n\n<ng-content></ng-content>\n\n<span *ngIf=\"counter || counter === 0\" class=\"fd-list__item-counter\">\n {{ counter | number: '1.0-2' }}\n</span>\n\n<span class=\"fd-screenreader-only\" aria-hidden=\"true\" [id]=\"_uniqueId + '-screenReader-content'\">{{\n screenReaderContent\n}}</span>\n", styles: [".fd-screenreader-only{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}\n"], components: [{ type: i1.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "number": i2.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
129
169
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ListItemComponent, decorators: [{
130
170
  type: Component,
131
171
  args: [{ selector: '[fdListItem] ,[fd-list-item]', host: {
@@ -140,7 +180,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
140
180
  provide: ListFocusItem,
141
181
  useExisting: forwardRef(() => ListItemComponent)
142
182
  }
143
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"checkbox || radio\">\n <div fd-form-item class=\"fd-list__form-item\">\n <ng-content select=\"fd-checkbox\"></ng-content>\n <ng-content select=\"fd-radio-button\"></ng-content>\n </div>\n</ng-container>\n\n<ng-content></ng-content>\n\n<span *ngIf=\"counter || counter === 0\" class=\"fd-list__item-counter\">\n {{ counter.toString() | slice: 0:5 }}\n</span>\n" }]
183
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"checkbox || radio\">\n <div fd-form-item class=\"fd-list__form-item\">\n <ng-content select=\"fd-checkbox\"></ng-content>\n <ng-content select=\"fd-radio-button\"></ng-content>\n </div>\n</ng-container>\n\n<ng-content></ng-content>\n\n<span *ngIf=\"counter || counter === 0\" class=\"fd-list__item-counter\">\n {{ counter | number: '1.0-2' }}\n</span>\n\n<span class=\"fd-screenreader-only\" aria-hidden=\"true\" [id]=\"_uniqueId + '-screenReader-content'\">{{\n screenReaderContent\n}}</span>\n", styles: [".fd-screenreader-only{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}\n"] }]
144
184
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { selected: [{
145
185
  type: Input
146
186
  }, {
@@ -149,11 +189,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
149
189
  }, {
150
190
  type: HostBinding,
151
191
  args: ['class.is-selected']
152
- }], tabindex: [{
192
+ }], ariaDescribedBy: [{
153
193
  type: Input
154
- }, {
155
- type: HostBinding,
156
- args: ['attr.tabindex']
157
194
  }], noData: [{
158
195
  type: Input
159
196
  }, {
@@ -181,6 +218,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
181
218
  }, {
182
219
  type: HostBinding,
183
220
  args: ['class.fd-list__item--unread']
221
+ }], selectedListItemScreenReaderText: [{
222
+ type: Input
223
+ }], navigatedListItemScreenReaderText: [{
224
+ type: Input
225
+ }], navigatableListItemScreenReaderText: [{
226
+ type: Input
184
227
  }], keyDown: [{
185
228
  type: Output
186
229
  }], link: [{
@@ -198,6 +241,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
198
241
  }], buttons: [{
199
242
  type: ContentChildren,
200
243
  args: [ButtonComponent, { descendants: true }]
244
+ }], getCombinedAriaDescribedBy: [{
245
+ type: HostBinding,
246
+ args: ['attr.aria-describedBy']
201
247
  }], keydownHandler: [{
202
248
  type: HostListener,
203
249
  args: ['keydown', ['$event']]
@@ -205,4 +251,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
205
251
  type: HostListener,
206
252
  args: ['click', ['$event']]
207
253
  }] } });
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2xpc3QvbGlzdC1pdGVtL2xpc3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9saXN0L2xpc3QtaXRlbS9saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFDckYsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxF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dUJBQUMsOEJBQThCO2dCQUszQyxPQUFPO3NCQUROLEtBQUs7Z0JBTU4sTUFBTTtzQkFGTCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLDZCQUE2QjtnQkFLMUMsT0FBTztzQkFETixNQUFNO2dCQUtQLElBQUk7c0JBREgsV0FBVzt1QkFBQywyQkFBMkI7Z0JBS3hDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBSy9CLEtBQUs7c0JBREosWUFBWTt1QkFBQyxvQkFBb0I7Z0JBS2xDLGNBQWM7c0JBRGIsZUFBZTt1QkFBQyxpQkFBaUI7Z0JBS2xDLE9BQU87c0JBRE4sZUFBZTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQThCdkQsY0FBYztzQkFEYixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFpQm5DLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7IFJhZGlvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3JhZGlvJztcbmltcG9ydCB7IExpc3RMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9saXN0LWxpbmsuZGlyZWN0aXZlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgS2V5VXRpbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBMSVNUX0lURU1fQ09NUE9ORU5ULCBMaXN0SXRlbUludGVyZmFjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBFTlRFUiwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgTGlzdEZvY3VzSXRlbSB9IGZyb20gJy4uL2xpc3QtZm9jdXMtaXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcblxuLyoqXG4gKiBUaGUgY29tcG9uZW50IHRoYXQgcmVwcmVzZW50cyBhIGxpc3QgaXRlbS5cbiAqIFRoZSBsaXN0IGl0ZW0gY2FuIGNvbnRhaW4gcGxhaW4gdGV4dCwgbGlua3Mgb3IgYWN0aW9ucy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZExpc3RJdGVtXSAsW2ZkLWxpc3QtaXRlbV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1saXN0X19pdGVtJyxcbiAgICAgICAgcm9sZTogJ2xpc3RpdGVtJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExJU1RfSVRFTV9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMaXN0SXRlbUNvbXBvbmVudClcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTGlzdEZvY3VzSXRlbSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExpc3RJdGVtQ29tcG9uZW50KVxuICAgICAgICB9XG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIExpc3RJdGVtQ29tcG9uZW50IGV4dGVuZHMgTGlzdEZvY3VzSXRlbSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgTGlzdEl0ZW1JbnRlcmZhY2Uge1xuICAgIC8qKiBXaGV0aGVyIGxpc3QgaXRlbSBpcyBzZWxlY3RlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2VsZWN0ZWQnKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtc2VsZWN0ZWQnKVxuICAgIHNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAvKiogdGFiIGluZGV4IGF0dHJpYnV0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBnZXQgdGFiaW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkluZGV4O1xuICAgIH1cbiAgICBzZXQgdGFiaW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl90YWJJbmRleCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCAtMSk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlcmUgaXMgbm8gZGF0YSBpbnNpZGUgbGlzdCBpdGVtICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWxpc3RfX2l0ZW0tLW5vLWRhdGEnKVxuICAgIG5vRGF0YSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlcmUgaXMgaXRlbSBwZXJmb3JtcyBzb21lIGFjdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1saXN0X19pdGVtLS1hY3Rpb24nKVxuICAgIGFjdGlvbiA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlcmUgaXMgaXRlbSBwZXJmb3JtcyBzb21lIGFjdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1saXN0X19pdGVtLS1pbnRlcnJhY3RpdmUnKVxuICAgIGludGVyYWN0aXZlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBsaXN0IGl0ZW0gY29udGFpbnMgYnVzeSBpbmRpY2F0b3IgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdF9faXRlbS0tZ3Jvd2luZycpXG4gICAgZ3Jvd2luZyA9IGZhbHNlO1xuXG4gICAgLyoqIENvdW50ZXIgb24gbGlzdCBpdGVtICovXG4gICAgQElucHV0KClcbiAgICBjb3VudGVyOiBudW1iZXI7XG5cbiAgICAvKiogV2hldGhlciBsaXN0IGl0ZW0gc2hvdWxkIGNvbnRhaW4gYWRkaXRpb25hbCB1blJlYWQgc3R5bGVzICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWxpc3RfX2l0ZW0tLXVucmVhZCcpXG4gICAgdW5yZWFkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiBJbXBsZW1lbnRhdGlvbiBvZiBLZXlib2FyZFN1cHBvcnRJdGVtSW50ZXJmYWNlIHwgVE9ETyBSZXZpc2l0IEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2UqL1xuICAgIEBPdXRwdXQoKVxuICAgIGtleURvd246IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIC8qKiBXaGV0aGVyIGxpc3QgaXRlbSBjb250YWlucyBsaW5rICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1saXN0X19pdGVtLS1saW5rJylcbiAgICBsaW5rID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoQ2hlY2tib3hDb21wb25lbnQpXG4gICAgY2hlY2tib3g6IENoZWNrYm94Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFJhZGlvQnV0dG9uQ29tcG9uZW50KVxuICAgIHJhZGlvOiBSYWRpb0J1dHRvbkNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihMaXN0TGlua0RpcmVjdGl2ZSlcbiAgICBsaW5rRGlyZWN0aXZlczogUXVlcnlMaXN0PExpc3RMaW5rRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihCdXR0b25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBidXR0b25zOiBRdWVyeUxpc3Q8QnV0dG9uQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuIEltcGxlbWVudGF0aW9uIG9mIEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2UgfCBUT0RPIFJldmlzaXQgS2V5Ym9hcmRTdXBwb3J0SXRlbUludGVyZmFjZSovXG4gICAgY2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90YWJJbmRleCA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5PbkxpbmtRdWVyeUNoYW5nZSgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PbkJ1dHRvblF1ZXJ5Q2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGtleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jaGVja2JveCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tib3gubmV4dFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbXV0ZUV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJhZGlvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yYWRpby5sYWJlbENsaWNrZWQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX211dGVFdmVudChldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5rZXlEb3duLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBIYW5kbGVyIGZvciBtb3VzZSBldmVudHMgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsaWNrZWQuZW1pdChldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrYm94ICYmICF0aGlzLmxpbmspIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jaGVja2JveC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgICAgICAgICAgLy8gY2xpY2tpbmcgb24gdGhlIGNoZWNrYm94IGlzIG5vdCBzdXBwcmVzc2VkXG4gICAgICAgICAgICAgICAgLy8gc28gd2Ugc2hvdWxkIG9ubHkgcHJvY2VzcyBjbGlja3MgaWYgY2xpY2tlZCBvbiB0aGUgbGlzdC1pdGVtLCBub3QgY2hlY2tib3ggaXRzZWxmXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja2JveC5uZXh0VmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yYWRpbyAmJiAhdGhpcy5saW5rKSB7XG4gICAgICAgICAgICB0aGlzLnJhZGlvLmxhYmVsQ2xpY2tlZChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uTGlua1F1ZXJ5Q2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpbmtEaXJlY3RpdmVzLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksIHN0YXJ0V2l0aCgwKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubGluayA9IHRoaXMubGlua0RpcmVjdGl2ZXMubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PbkJ1dHRvblF1ZXJ5Q2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1dHRvbnMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSwgc3RhcnRXaXRoKDApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5idXR0b25zLmZvckVhY2godGhpcy5fYWRkQ2xhc3NUb0J1dHRvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FkZENsYXNzVG9CdXR0b25zKGJ1dHRvbjogQnV0dG9uQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGJ1dHRvbi5jbGFzcyArPSAnZmQtbGlzdF9fYnV0dG9uJztcbiAgICAgICAgYnV0dG9uLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgYnV0dG9uLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX211dGVFdmVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoZWNrYm94IHx8IHJhZGlvXCI+XG4gICAgPGRpdiBmZC1mb3JtLWl0ZW0gY2xhc3M9XCJmZC1saXN0X19mb3JtLWl0ZW1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtY2hlY2tib3hcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXJhZGlvLWJ1dHRvblwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbjxzcGFuICpuZ0lmPVwiY291bnRlciB8fCBjb3VudGVyID09PSAwXCIgY2xhc3M9XCJmZC1saXN0X19pdGVtLWNvdW50ZXJcIj5cbiAgICB7eyBjb3VudGVyLnRvU3RyaW5nKCkgfCBzbGljZTogMDo1IH19XG48L3NwYW4+XG4iXX0=
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2xpc3QvbGlzdC1pdGVtL2xpc3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9saXN0L2xpc3QtaXRlbS9saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFFVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUUvRCxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUV6Qjs7O0dBR0c7QUF1QkgsTUFBTSxPQUFPLGlCQUNULFNBQVEsYUFBYTtJQTZHckIsWUFBbUIsVUFBc0IsRUFBVSxrQkFBcUM7UUFDcEYsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBREgsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUExR3hGLG9DQUFvQztRQUlwQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBU2pCLGdEQUFnRDtRQUdoRCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsaURBQWlEO1FBR2pELFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixpREFBaUQ7UUFHakQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsZ0RBQWdEO1FBR2hELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFNaEIsZ0VBQWdFO1FBR2hFLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFjZix3R0FBd0c7UUFFeEcsWUFBTyxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUV6RSxzQ0FBc0M7UUFFdEMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQWtCYiwrR0FBK0c7UUFDOUYsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVsRSxjQUFjO1FBQ0csd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUUzRCxjQUFjO1FBQ2Qsd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBa0J6QixjQUFjO1FBQ0wsY0FBUyxHQUFHLGdCQUFnQixHQUFHLEVBQUUsZ0JBQWdCLENBQUM7SUFJM0QsQ0FBQztJQWxCRCxjQUFjO0lBQ2QsSUFDSSwwQkFBMEI7UUFDMUIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQztRQUMzRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsV0FBVyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDNUIsV0FBVyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7U0FDbkQ7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBU0QsY0FBYztJQUNkLGtCQUFrQjtRQUNkLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQ0ksT0FBTyxDQUFDLGdDQUFnQztZQUN4QyxPQUFPLENBQUMsaUNBQWlDO1lBQ3pDLE9BQU8sQ0FBQyxtQ0FBbUMsRUFDN0M7WUFDRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsY0FBYztJQUVkLGNBQWMsQ0FBQyxLQUFvQjtRQUMvQixJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDMUI7aUJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxQjtpQkFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QixPQUFPO2FBQ1Y7U0FDSjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCwrQkFBK0I7SUFFL0IsT0FBTyxDQUFDLEtBQWlCO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQWMsQ0FBQyxFQUFFO2dCQUN4RSw2Q0FBNkM7Z0JBQzdDLG9GQUFvRjtnQkFDcEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUM3QjtTQUNKO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sd0JBQXdCO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdkYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDWCxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO3FCQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7cUJBQ2xFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO2FBQ3hEO1lBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDTiwwQkFBMEI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNoRixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ04sa0JBQWtCLENBQUMsTUFBdUI7UUFDOUMsTUFBTSxDQUFDLEtBQUssSUFBSSxpQkFBaUIsQ0FBQztRQUNsQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWM7SUFDTixVQUFVLENBQUMsS0FBWTtRQUMzQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjO0lBQ04sdUJBQXVCO1FBQzNCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPLElBQUksS0FBSyxJQUFJLENBQUMsZ0NBQWdDLElBQUksVUFBVSxFQUFFLENBQUM7U0FDekU7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDOUMsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLGlDQUFpQyxJQUFJLFdBQVcsRUFBRSxDQUFDO1NBQzNFO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDeEQsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLG1DQUFtQyxJQUFJLGFBQWEsRUFBRSxDQUFDO1NBQy9FO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQztRQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQzs7OEdBNU5RLGlCQUFpQjtrR0FBakIsaUJBQWlCLHdrQ0FiZjtRQUNQO1lBQ0ksT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1NBQ25EO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsYUFBYTtZQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1NBQ25EO0tBQ0osZ0VBdUVhLGlCQUFpQix3RUFJakIsb0JBQW9CLG9FQUlqQixpQkFBaUIsMENBSWpCLGVBQWUsNEZDM0lwQyxpaUJBZ0JBOzJGRDRDYSxpQkFBaUI7a0JBdEI3QixTQUFTOytCQUVJLDhCQUE4QixRQUVsQzt3QkFDRixLQUFLLEVBQUUsZUFBZTt3QkFDdEIsSUFBSSxFQUFFLFVBQVU7cUJBQ25CLGFBRVU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7eUJBQ25EO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQzt5QkFDbkQ7cUJBQ0osbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7aUlBVXJDLFFBQVE7c0JBSFAsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxvQkFBb0I7O3NCQUNoQyxXQUFXO3VCQUFDLG1CQUFtQjtnQkFRaEMsZUFBZTtzQkFEZCxLQUFLO2dCQU1OLE1BQU07c0JBRkwsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBTTNDLE1BQU07c0JBRkwsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyw2QkFBNkI7Z0JBTTFDLFdBQVc7c0JBRlYsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxtQ0FBbUM7Z0JBTWhELE9BQU87c0JBRk4sS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBSzNDLE9BQU87c0JBRE4sS0FBSztnQkFNTixNQUFNO3NCQUZMLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsNkJBQTZCO2dCQUsxQyxnQ0FBZ0M7c0JBRC9CLEtBQUs7Z0JBS04saUNBQWlDO3NCQURoQyxLQUFLO2dCQUtOLG1DQUFtQztzQkFEbEMsS0FBSztnQkFLTixPQUFPO3NCQUROLE1BQU07Z0JBS1AsSUFBSTtzQkFESCxXQUFXO3VCQUFDLDJCQUEyQjtnQkFLeEMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGlCQUFpQjtnQkFLL0IsS0FBSztzQkFESixZQUFZO3VCQUFDLG9CQUFvQjtnQkFLbEMsY0FBYztzQkFEYixlQUFlO3VCQUFDLGlCQUFpQjtnQkFLbEMsT0FBTztzQkFETixlQUFlO3VCQUFDLGVBQWUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBaUJuRCwwQkFBMEI7c0JBRDdCLFdBQVc7dUJBQUMsdUJBQXVCO2dCQTRDcEMsY0FBYztzQkFEYixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFvQm5DLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7IFJhZGlvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3JhZGlvJztcbmltcG9ydCB7IExpc3RMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9saXN0LWxpbmsuZGlyZWN0aXZlJztcbmltcG9ydCB7IG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEtleVV0aWwgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgTElTVF9JVEVNX0NPTVBPTkVOVCwgTGlzdEl0ZW1JbnRlcmZhY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRU5URVIsIFNQQUNFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IExpc3RGb2N1c0l0ZW0gfSBmcm9tICcuLi9saXN0LWZvY3VzLWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5cbmxldCBsaXN0SXRlbVVuaXF1ZUlkID0gMDtcblxuLyoqXG4gKiBUaGUgY29tcG9uZW50IHRoYXQgcmVwcmVzZW50cyBhIGxpc3QgaXRlbS5cbiAqIFRoZSBsaXN0IGl0ZW0gY2FuIGNvbnRhaW4gcGxhaW4gdGV4dCwgbGlua3Mgb3IgYWN0aW9ucy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZExpc3RJdGVtXSAsW2ZkLWxpc3QtaXRlbV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1saXN0X19pdGVtJyxcbiAgICAgICAgcm9sZTogJ2xpc3RpdGVtJ1xuICAgIH0sXG4gICAgc3R5bGVVcmxzOiBbJy4vbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExJU1RfSVRFTV9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMaXN0SXRlbUNvbXBvbmVudClcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTGlzdEZvY3VzSXRlbSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExpc3RJdGVtQ29tcG9uZW50KVxuICAgICAgICB9XG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIExpc3RJdGVtQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBMaXN0Rm9jdXNJdGVtXG4gICAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgTGlzdEl0ZW1JbnRlcmZhY2VcbntcbiAgICAvKiogV2hldGhlciBsaXN0IGl0ZW0gaXMgc2VsZWN0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXNlbGVjdGVkJylcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXNlbGVjdGVkJylcbiAgICBzZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyBhcmlhLWRlc2NyaWJlZGJ5IGF0dHJpYnV0ZSBmb3IgbGlzdCBpdGVtLlxuICAgICAqIE5vdGUsIHRoYXQgaXQgaXMgYmVpbmcgY29tYmluZWQgd2l0aCBpbnRlcm5hbCB2YWx1ZXMgZm9yIHRoaXMgY29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcmlhRGVzY3JpYmVkQnk6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRoZXJlIGlzIG5vIGRhdGEgaW5zaWRlIGxpc3QgaXRlbSAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1saXN0X19pdGVtLS1uby1kYXRhJylcbiAgICBub0RhdGEgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZXJlIGlzIGl0ZW0gcGVyZm9ybXMgc29tZSBhY3Rpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdF9faXRlbS0tYWN0aW9uJylcbiAgICBhY3Rpb24gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZXJlIGlzIGl0ZW0gcGVyZm9ybXMgc29tZSBhY3Rpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdF9faXRlbS0taW50ZXJyYWN0aXZlJylcbiAgICBpbnRlcmFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgbGlzdCBpdGVtIGNvbnRhaW5zIGJ1c3kgaW5kaWNhdG9yICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWxpc3RfX2l0ZW0tLWdyb3dpbmcnKVxuICAgIGdyb3dpbmcgPSBmYWxzZTtcblxuICAgIC8qKiBDb3VudGVyIG9uIGxpc3QgaXRlbSAqL1xuICAgIEBJbnB1dCgpXG4gICAgY291bnRlcjogbnVtYmVyO1xuXG4gICAgLyoqIFdoZXRoZXIgbGlzdCBpdGVtIHNob3VsZCBjb250YWluIGFkZGl0aW9uYWwgdW5SZWFkIHN0eWxlcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1saXN0X19pdGVtLS11bnJlYWQnKVxuICAgIHVucmVhZCA9IGZhbHNlO1xuXG4gICAgLyoqIFRleHQgdG8gYmUgcmVhZCBieSBzY3JlZW4gcmVhZGVyIGZvciBzZWxlY3RlZCBsaXN0IGl0ZW0gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkTGlzdEl0ZW1TY3JlZW5SZWFkZXJUZXh0OiBzdHJpbmc7XG5cbiAgICAvKiogVGV4dCB0byBiZSByZWFkIGJ5IHNjcmVlbiByZWFkZXIgZm9yIG5hdmlnYXRlZCBsaXN0IGl0ZW0gKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRlZExpc3RJdGVtU2NyZWVuUmVhZGVyVGV4dDogc3RyaW5nO1xuXG4gICAgLyoqIFRleHQgdG8gYmUgcmVhZCBieSBzY3JlZW4gcmVhZGVyIGZvciBuYXZpZ2F0YWJsZSBsaXN0IGl0ZW0gKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRhYmxlTGlzdEl0ZW1TY3JlZW5SZWFkZXJUZXh0OiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiBJbXBsZW1lbnRhdGlvbiBvZiBLZXlib2FyZFN1cHBvcnRJdGVtSW50ZXJmYWNlIHwgVE9ETyBSZXZpc2l0IEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2UqL1xuICAgIEBPdXRwdXQoKVxuICAgIGtleURvd246IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIC8qKiBXaGV0aGVyIGxpc3QgaXRlbSBjb250YWlucyBsaW5rICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1saXN0X19pdGVtLS1saW5rJylcbiAgICBsaW5rID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoQ2hlY2tib3hDb21wb25lbnQpXG4gICAgY2hlY2tib3g6IENoZWNrYm94Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFJhZGlvQnV0dG9uQ29tcG9uZW50KVxuICAgIHJhZGlvOiBSYWRpb0J1dHRvbkNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihMaXN0TGlua0RpcmVjdGl2ZSlcbiAgICBsaW5rRGlyZWN0aXZlczogUXVlcnlMaXN0PExpc3RMaW5rRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihCdXR0b25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBidXR0b25zOiBRdWVyeUxpc3Q8QnV0dG9uQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZykgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uTGlua0xpc3RDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNjcmVlblJlYWRlckNvbnRlbnQgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuIGdyb3VwIGhlYWRlciBpZCwgdGhhdCBpcyBiZWluZyBzZXQgYnkgcGFyZW50IGxpc3QgY29tcG9uZW50ICovXG4gICAgX3JlbGF0ZWRHcm91cEhlYWRlcklkOiBzdHJpbmcgfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRCeScpXG4gICAgZ2V0IGdldENvbWJpbmVkQXJpYURlc2NyaWJlZEJ5KCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBkZXNjcmliZWRCeSA9IHRoaXMuX3VuaXF1ZUlkICsgJy1zY3JlZW5SZWFkZXItY29udGVudCc7XG4gICAgICAgIGlmICh0aGlzLmFyaWFEZXNjcmliZWRCeSkge1xuICAgICAgICAgICAgZGVzY3JpYmVkQnkgKz0gJyAnICsgdGhpcy5hcmlhRGVzY3JpYmVkQnk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3JlbGF0ZWRHcm91cEhlYWRlcklkKSB7XG4gICAgICAgICAgICBkZXNjcmliZWRCeSArPSAnICcgKyB0aGlzLl9yZWxhdGVkR3JvdXBIZWFkZXJJZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVzY3JpYmVkQnk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfdW5pcXVlSWQgPSAnZmRwLWxpc3QtaXRlbS0nICsgKytsaXN0SXRlbVVuaXF1ZUlkO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25MaW5rUXVlcnlDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25CdXR0b25RdWVyeUNoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjaGFuZ2VzLnNlbGVjdGVkTGlzdEl0ZW1TY3JlZW5SZWFkZXJUZXh0IHx8XG4gICAgICAgICAgICBjaGFuZ2VzLm5hdmlnYXRlZExpc3RJdGVtU2NyZWVuUmVhZGVyVGV4dCB8fFxuICAgICAgICAgICAgY2hhbmdlcy5uYXZpZ2F0YWJsZUxpc3RJdGVtU2NyZWVuUmVhZGVyVGV4dFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNjcmVlblJlYWRlclRleHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBrZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgU1BBQ0VdKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tib3gpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrYm94Lm5leHRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX211dGVFdmVudChldmVudCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmFkaW8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJhZGlvLmxhYmVsQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbXV0ZUV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pbnRlcmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICB0aGlzLl9tdXRlRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmtleURvd24uZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZXIgZm9yIG1vdXNlIGV2ZW50cyAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NsaWNrZWQkLm5leHQoZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5jaGVja2JveCAmJiAhdGhpcy5saW5rKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tib3guZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG9uIHRoZSBjaGVja2JveCBpcyBub3Qgc3VwcHJlc3NlZFxuICAgICAgICAgICAgICAgIC8vIHNvIHdlIHNob3VsZCBvbmx5IHByb2Nlc3MgY2xpY2tzIGlmIGNsaWNrZWQgb24gdGhlIGxpc3QtaXRlbSwgbm90IGNoZWNrYm94IGl0c2VsZlxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tib3gubmV4dFZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmFkaW8gJiYgIXRoaXMubGluaykge1xuICAgICAgICAgICAgdGhpcy5yYWRpby5sYWJlbENsaWNrZWQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PbkxpbmtRdWVyeUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5saW5rRGlyZWN0aXZlcy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLCBzdGFydFdpdGgoMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9vbkxpbmtMaXN0Q2hhbmdlZCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5saW5rID0gdGhpcy5saW5rRGlyZWN0aXZlcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgaWYgKHRoaXMubGluaykge1xuICAgICAgICAgICAgICAgIG1lcmdlKHRoaXMubGlua0RpcmVjdGl2ZXMudG9BcnJheSgpLm1hcCgoZCkgPT4gZC5fb25SZWFkYWJsZVByb3BlcnR5Q2hhbmdlZCQpKVxuICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwobWVyZ2UodGhpcy5fb25EZXN0cm95JCwgdGhpcy5fb25MaW5rTGlzdENoYW5nZWQkKSkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fdXBkYXRlU2NyZWVuUmVhZGVyVGV4dCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PbkJ1dHRvblF1ZXJ5Q2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1dHRvbnMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSwgc3RhcnRXaXRoKDApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5idXR0b25zLmZvckVhY2godGhpcy5fYWRkQ2xhc3NUb0J1dHRvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FkZENsYXNzVG9CdXR0b25zKGJ1dHRvbjogQnV0dG9uQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGJ1dHRvbi5jbGFzcyArPSAnZmQtbGlzdF9fYnV0dG9uJztcbiAgICAgICAgYnV0dG9uLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgYnV0dG9uLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX211dGVFdmVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF91cGRhdGVTY3JlZW5SZWFkZXJUZXh0KCk6IHZvaWQge1xuICAgICAgICBsZXQgY29udGVudCA9ICcnO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgY29udGVudCArPSBgLCAke3RoaXMuc2VsZWN0ZWRMaXN0SXRlbVNjcmVlblJlYWRlclRleHQgPz8gJ3NlbGVjdGVkJ31gO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmxpbmtEaXJlY3RpdmVzLnNvbWUoKGQpID0+IGQubmF2aWdhdGVkKSkge1xuICAgICAgICAgICAgY29udGVudCArPSBgLCAke3RoaXMubmF2aWdhdGVkTGlzdEl0ZW1TY3JlZW5SZWFkZXJUZXh0ID8/ICduYXZpZ2F0ZWQnfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubGlua0RpcmVjdGl2ZXMuc29tZSgoZCkgPT4gZC5uYXZpZ2F0aW9uSW5kaWNhdG9yKSkge1xuICAgICAgICAgICAgY29udGVudCArPSBgLCAke3RoaXMubmF2aWdhdGFibGVMaXN0SXRlbVNjcmVlblJlYWRlclRleHQgPz8gJ25hdmlnYXRhYmxlJ31gO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2NyZWVuUmVhZGVyQ29udGVudCA9IGNvbnRlbnQ7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjaGVja2JveCB8fCByYWRpb1wiPlxuICAgIDxkaXYgZmQtZm9ybS1pdGVtIGNsYXNzPVwiZmQtbGlzdF9fZm9ybS1pdGVtXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLWNoZWNrYm94XCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmZC1yYWRpby1idXR0b25cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG48c3BhbiAqbmdJZj1cImNvdW50ZXIgfHwgY291bnRlciA9PT0gMFwiIGNsYXNzPVwiZmQtbGlzdF9faXRlbS1jb3VudGVyXCI+XG4gICAge3sgY291bnRlciB8IG51bWJlcjogJzEuMC0yJyB9fVxuPC9zcGFuPlxuXG48c3BhbiBjbGFzcz1cImZkLXNjcmVlbnJlYWRlci1vbmx5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgW2lkXT1cIl91bmlxdWVJZCArICctc2NyZWVuUmVhZGVyLWNvbnRlbnQnXCI+e3tcbiAgICBzY3JlZW5SZWFkZXJDb250ZW50XG59fTwvc3Bhbj5cbiJdfQ==