@fundamental-ngx/core 0.34.3-rc.41 → 0.34.3-rc.44

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 (129) 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/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/date-picker/package.json +1 -1
  16. package/datetime/package.json +1 -1
  17. package/datetime-picker/package.json +1 -1
  18. package/dialog/package.json +1 -1
  19. package/dynamic-page/package.json +1 -1
  20. package/dynamic-side-content/package.json +1 -1
  21. package/esm2020/nested-list/nested-content/nested-list-content.directive.mjs +12 -2
  22. package/esm2020/nested-list/nested-item/nested-item.directive.mjs +59 -12
  23. package/esm2020/nested-list/nested-link/nested-link.directive.mjs +16 -5
  24. package/esm2020/nested-list/nested-list/nested-list.directive.mjs +71 -6
  25. package/esm2020/nested-list/nested-list-directives.mjs +23 -6
  26. package/esm2020/nested-list/nested-list-keyboard.service.mjs +9 -5
  27. package/esm2020/nested-list/nested-list-popover/nested-list-popover.component.mjs +1 -1
  28. package/esm2020/nested-list/prepared-nested-list/prepared-nested-list.component.mjs +1 -1
  29. package/esm2020/radio/radio-button/radio-button.component.mjs +3 -3
  30. package/facets/package.json +1 -1
  31. package/feed-input/package.json +1 -1
  32. package/feed-list-item/package.json +1 -1
  33. package/fesm2015/fundamental-ngx-core-nested-list.mjs +185 -29
  34. package/fesm2015/fundamental-ngx-core-nested-list.mjs.map +1 -1
  35. package/fesm2015/fundamental-ngx-core-radio.mjs +2 -2
  36. package/fesm2015/fundamental-ngx-core-radio.mjs.map +1 -1
  37. package/fesm2020/fundamental-ngx-core-nested-list.mjs +181 -28
  38. package/fesm2020/fundamental-ngx-core-nested-list.mjs.map +1 -1
  39. package/fesm2020/fundamental-ngx-core-radio.mjs +2 -2
  40. package/fesm2020/fundamental-ngx-core-radio.mjs.map +1 -1
  41. package/file-uploader/package.json +1 -1
  42. package/fixed-card-layout/package.json +1 -1
  43. package/flexible-column-layout/package.json +1 -1
  44. package/form/package.json +1 -1
  45. package/formatted-text/package.json +1 -1
  46. package/grid-list/package.json +1 -1
  47. package/icon/package.json +1 -1
  48. package/illustrated-message/package.json +1 -1
  49. package/infinite-scroll/package.json +1 -1
  50. package/info-label/package.json +1 -1
  51. package/inline-help/package.json +1 -1
  52. package/input-group/package.json +1 -1
  53. package/layout-grid/package.json +1 -1
  54. package/layout-panel/package.json +1 -1
  55. package/link/package.json +1 -1
  56. package/list/package.json +1 -1
  57. package/menu/package.json +1 -1
  58. package/message-box/package.json +1 -1
  59. package/message-strip/package.json +1 -1
  60. package/message-toast/package.json +1 -1
  61. package/micro-process-flow/package.json +1 -1
  62. package/mobile-mode/package.json +1 -1
  63. package/multi-input/package.json +1 -1
  64. package/nested-list/esm2020/nested-content/nested-list-content.directive.mjs +12 -2
  65. package/nested-list/esm2020/nested-item/nested-item.directive.mjs +59 -12
  66. package/nested-list/esm2020/nested-link/nested-link.directive.mjs +16 -5
  67. package/nested-list/esm2020/nested-list/nested-list.directive.mjs +71 -6
  68. package/nested-list/esm2020/nested-list-directives.mjs +23 -6
  69. package/nested-list/esm2020/nested-list-keyboard.service.mjs +9 -5
  70. package/nested-list/esm2020/nested-list-popover/nested-list-popover.component.mjs +1 -1
  71. package/nested-list/esm2020/prepared-nested-list/prepared-nested-list.component.mjs +1 -1
  72. package/nested-list/fesm2015/fundamental-ngx-core-nested-list.mjs +185 -29
  73. package/nested-list/fesm2015/fundamental-ngx-core-nested-list.mjs.map +1 -1
  74. package/nested-list/fesm2020/fundamental-ngx-core-nested-list.mjs +181 -28
  75. package/nested-list/fesm2020/fundamental-ngx-core-nested-list.mjs.map +1 -1
  76. package/nested-list/nested-content/nested-list-content.directive.d.ts +4 -0
  77. package/nested-list/nested-item/nested-item.directive.d.ts +20 -3
  78. package/nested-list/nested-link/nested-link.directive.d.ts +9 -4
  79. package/nested-list/nested-list/nested-list.directive.d.ts +22 -2
  80. package/nested-list/nested-list-directives.d.ts +8 -1
  81. package/nested-list/package.json +1 -1
  82. package/notification/package.json +1 -1
  83. package/object-identifier/package.json +1 -1
  84. package/object-marker/package.json +1 -1
  85. package/object-number/package.json +1 -1
  86. package/object-status/package.json +1 -1
  87. package/package.json +1 -1
  88. package/pagination/package.json +1 -1
  89. package/panel/package.json +1 -1
  90. package/popover/package.json +1 -1
  91. package/product-switch/package.json +1 -1
  92. package/progress-indicator/package.json +1 -1
  93. package/quick-view/package.json +1 -1
  94. package/radio/esm2020/radio-button/radio-button.component.mjs +3 -3
  95. package/radio/fesm2015/fundamental-ngx-core-radio.mjs +2 -2
  96. package/radio/fesm2015/fundamental-ngx-core-radio.mjs.map +1 -1
  97. package/radio/fesm2020/fundamental-ngx-core-radio.mjs +2 -2
  98. package/radio/fesm2020/fundamental-ngx-core-radio.mjs.map +1 -1
  99. package/radio/package.json +1 -1
  100. package/rating-indicator/package.json +1 -1
  101. package/resizable-card-layout/package.json +1 -1
  102. package/scroll-spy/package.json +1 -1
  103. package/scrollbar/package.json +1 -1
  104. package/segmented-button/package.json +1 -1
  105. package/select/package.json +1 -1
  106. package/shared/package.json +1 -1
  107. package/shellbar/package.json +1 -1
  108. package/side-navigation/package.json +1 -1
  109. package/slider/package.json +1 -1
  110. package/split-button/package.json +1 -1
  111. package/splitter/package.json +1 -1
  112. package/status-indicator/package.json +1 -1
  113. package/step-input/package.json +1 -1
  114. package/switch/package.json +1 -1
  115. package/table/package.json +1 -1
  116. package/tabs/package.json +1 -1
  117. package/text/package.json +1 -1
  118. package/tile/package.json +1 -1
  119. package/time/package.json +1 -1
  120. package/time-picker/package.json +1 -1
  121. package/timeline/package.json +1 -1
  122. package/title/package.json +1 -1
  123. package/token/package.json +1 -1
  124. package/toolbar/package.json +1 -1
  125. package/tree/package.json +1 -1
  126. package/upload-collection/package.json +1 -1
  127. package/utils/package.json +1 -1
  128. package/vertical-navigation/package.json +1 -1
  129. package/wizard/package.json +1 -1
@@ -1,10 +1,11 @@
1
- import { ChangeDetectorRef, ContentChildren, Directive, ElementRef, forwardRef, HostBinding, Input, Optional, QueryList } from '@angular/core';
1
+ import { ChangeDetectorRef, ContentChild, ContentChildren, Directive, ElementRef, forwardRef, HostBinding, Input, Optional, QueryList } from '@angular/core';
2
+ import { Subscription } from 'rxjs';
3
+ import { ContentDensityService } from '@fundamental-ngx/core/utils';
2
4
  import { NestedListStateService } from '../nested-list-state.service';
3
5
  import { NestedItemDirective } from '../nested-item/nested-item.directive';
4
6
  import { NestedItemService } from '../nested-item/nested-item.service';
5
7
  import { NestedListKeyboardService } from '../nested-list-keyboard.service';
6
- import { Subscription } from 'rxjs';
7
- import { ContentDensityService } from '@fundamental-ngx/core/utils';
8
+ import { NestedListHeaderDirective } from '../nested-list-directives';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "../nested-item/nested-item.service";
10
11
  import * as i2 from "../nested-list-state.service";
@@ -21,12 +22,26 @@ export class NestedListDirective {
21
22
  this._contentDensityService = _contentDensityService;
22
23
  /** In case the user wants to no use icons for items in this list */
23
24
  this.textOnly = false;
25
+ /** Aria defines role description for the Nested List Tree. */
26
+ this.ariaRoledescriptionTree = 'Navigation List Tree';
27
+ /** Aria defines role description for the Nested List MenuBar. */
28
+ this.ariaRoledescriptionMenuBar = 'Navigation List Menu Bar';
29
+ /** Aria defines aria label for the selected item when the list with disabled selection. */
30
+ this.ariaLabelSelected = 'Selected';
24
31
  /** @hidden */
25
32
  this.fdNestedListItemClass = true;
26
33
  /** @hidden */
27
34
  this.hidden = false;
28
35
  /** @hidden */
29
36
  this._subscriptions = new Subscription();
37
+ /** @hidden */
38
+ this._role = 'tree';
39
+ /** @hidden */
40
+ this._ariaRoledescription = this.ariaRoledescriptionTree;
41
+ /** @hidden */
42
+ this._ariaHaspopup = null;
43
+ /** @hidden */
44
+ this._tabindex = '-1';
30
45
  if (this._nestedItemService) {
31
46
  this._nestedItemService.list = this;
32
47
  }
@@ -50,7 +65,12 @@ export class NestedListDirective {
50
65
  if (this._nestedListStateService.condensed) {
51
66
  nestedLevel = Math.min(...[nestedLevel, 2]);
52
67
  }
53
- this.nestedItems.changes.subscribe(() => this._nestedListKeyboardService.refresh$.next());
68
+ this._setAccessibilityProperties(nestedLevel);
69
+ this.nestedItems.changes.subscribe(() => {
70
+ this._nestedListKeyboardService.refresh$.next();
71
+ this._setAriaAttributes(nestedLevel);
72
+ });
73
+ this._setAriaAttributes(nestedLevel);
54
74
  this._handleNestedLevel(nestedLevel);
55
75
  }
56
76
  /** @hidden */
@@ -78,9 +98,33 @@ export class NestedListDirective {
78
98
  const filteredParentElements = parentElements.filter((_element) => _element.hasAttribute('fd-nested-list'));
79
99
  return filteredParentElements.length;
80
100
  }
101
+ /** @hidden */
102
+ _setAriaAttributes(level) {
103
+ this.nestedItems.forEach((item, i) => {
104
+ item._ariaLevel = level;
105
+ item.linkItem.ariaDescribedby = this._nestedListHeader && this._nestedListHeader.id;
106
+ item.linkItem._ariaLabel = `
107
+ Tree Item ${item.linkItem.getTitle()} ${i + 1} of ${this.nestedItems.length}
108
+ ${!this._nestedListStateService.selectable && item.linkItem.selected ? this.ariaLabelSelected : ''}`;
109
+ });
110
+ this._changeDetectionRef.detectChanges();
111
+ }
112
+ /** @hidden */
113
+ _setAccessibilityProperties(level) {
114
+ if (this._nestedListStateService.condensed && level === 1) {
115
+ this._ariaRoledescription = this.ariaRoledescriptionMenuBar;
116
+ }
117
+ if (level > 1 || (this._nestedItemService?.popover && !this._nestedListStateService.condensed)) {
118
+ this._role = 'group';
119
+ this._ariaRoledescription = null;
120
+ }
121
+ if (this._nestedItemService?.popover) {
122
+ this._ariaHaspopup = 'tree';
123
+ }
124
+ }
81
125
  }
82
126
  NestedListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: NestedListDirective, deps: [{ token: i1.NestedItemService, optional: true }, { token: i2.NestedListStateService }, { token: i3.NestedListKeyboardService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i4.ContentDensityService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
83
- NestedListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: NestedListDirective, selector: "[fdNestedList], [fd-nested-list]", inputs: { textOnly: "textOnly", compact: "compact" }, host: { properties: { "class.fd-nested-list--text-only": "this.textOnly", "class.fd-nested-list--compact": "this.compact", "class.fd-nested-list": "this.fdNestedListItemClass", "attr.aria-hidden": "this.hidden" } }, queries: [{ propertyName: "nestedItems", predicate: i0.forwardRef(function () { return NestedItemDirective; }) }], ngImport: i0 });
127
+ NestedListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: NestedListDirective, selector: "[fdNestedList], [fd-nested-list]", inputs: { textOnly: "textOnly", compact: "compact", ariaRoledescriptionTree: "ariaRoledescriptionTree", ariaRoledescriptionMenuBar: "ariaRoledescriptionMenuBar", ariaLabelSelected: "ariaLabelSelected" }, host: { properties: { "class.fd-nested-list--text-only": "this.textOnly", "class.fd-nested-list--compact": "this.compact", "class.fd-nested-list": "this.fdNestedListItemClass", "attr.aria-hidden": "this.hidden", "attr.role": "this._role", "attr.aria-roledescription": "this._ariaRoledescription", "attr.aria-haspopup": "this._ariaHaspopup", "attr.tabindex": "this._tabindex" } }, queries: [{ propertyName: "_nestedListHeader", first: true, predicate: NestedListHeaderDirective, descendants: true }, { propertyName: "nestedItems", predicate: i0.forwardRef(function () { return NestedItemDirective; }) }], ngImport: i0 });
84
128
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: NestedListDirective, decorators: [{
85
129
  type: Directive,
86
130
  args: [{
@@ -100,6 +144,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
100
144
  }, {
101
145
  type: HostBinding,
102
146
  args: ['class.fd-nested-list--compact']
147
+ }], ariaRoledescriptionTree: [{
148
+ type: Input
149
+ }], ariaRoledescriptionMenuBar: [{
150
+ type: Input
151
+ }], ariaLabelSelected: [{
152
+ type: Input
103
153
  }], fdNestedListItemClass: [{
104
154
  type: HostBinding,
105
155
  args: ['class.fd-nested-list']
@@ -109,5 +159,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
109
159
  }], nestedItems: [{
110
160
  type: ContentChildren,
111
161
  args: [forwardRef(() => NestedItemDirective)]
162
+ }], _nestedListHeader: [{
163
+ type: ContentChild,
164
+ args: [NestedListHeaderDirective]
165
+ }], _role: [{
166
+ type: HostBinding,
167
+ args: ['attr.role']
168
+ }], _ariaRoledescription: [{
169
+ type: HostBinding,
170
+ args: ['attr.aria-roledescription']
171
+ }], _ariaHaspopup: [{
172
+ type: HostBinding,
173
+ args: ['attr.aria-haspopup']
174
+ }], _tabindex: [{
175
+ type: HostBinding,
176
+ args: ['attr.tabindex']
112
177
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbmVzdGVkLWxpc3QvbmVzdGVkLWxpc3QvbmVzdGVkLWxpc3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7QUFNcEUsTUFBTSxPQUFPLG1CQUFtQjtJQThCNUIsY0FBYztJQUNkLFlBQ3dCLGtCQUFxQyxFQUNqRCx1QkFBK0MsRUFDL0MsMEJBQXFELEVBQ3JELFdBQXVCLEVBQ3ZCLG1CQUFzQyxFQUMxQixzQkFBNkM7UUFMN0MsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNqRCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBQy9DLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBMkI7UUFDckQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFtQjtRQUMxQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBcENyRSxvRUFBb0U7UUFH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QVc7dUJBQUMsc0JBQXNCO2dCQUtuQyxNQUFNO3NCQURMLFdBQVc7dUJBQUMsa0JBQWtCO2dCQVMvQixXQUFXO3NCQURWLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmVzdGVkTGlzdFN0YXRlU2VydmljZSB9IGZyb20gJy4uL25lc3RlZC1saXN0LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmVzdGVkSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uL25lc3RlZC1pdGVtL25lc3RlZC1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZXN0ZWRJdGVtU2VydmljZSB9IGZyb20gJy4uL25lc3RlZC1pdGVtL25lc3RlZC1pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmVzdGVkTGlzdEtleWJvYXJkU2VydmljZSB9IGZyb20gJy4uL25lc3RlZC1saXN0LWtleWJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmVzdGVkTGlzdEludGVyZmFjZSB9IGZyb20gJy4vbmVzdGVkLWxpc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkTmVzdGVkTGlzdF0sIFtmZC1uZXN0ZWQtbGlzdF0nXG59KVxuZXhwb3J0IGNsYXNzIE5lc3RlZExpc3REaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBOZXN0ZWRMaXN0SW50ZXJmYWNlLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIEluIGNhc2UgdGhlIHVzZXIgd2FudHMgdG8gbm8gdXNlIGljb25zIGZvciBpdGVtcyBpbiB0aGlzIGxpc3QgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbmVzdGVkLWxpc3QtLXRleHQtb25seScpXG4gICAgdGV4dE9ubHkgPSBmYWxzZTtcblxuICAgIC8qKiBJbiBjYXNlIHRoZSB1c2VyIHdhbnRzIHB1dCBjb21wYWN0IG1vZGUgaW4gdGhpcyBsaXN0ICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLW5lc3RlZC1saXN0LS1jb21wYWN0JylcbiAgICBjb21wYWN0OiBOdWxsYWJsZTxib29sZWFuPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1uZXN0ZWQtbGlzdCcpXG4gICAgZmROZXN0ZWRMaXN0SXRlbUNsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGlkZGVuJylcbiAgICBoaWRkZW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUaGlzIHZhcmlhYmxlIGlzIG1vc3RseSB0byBrZWVwIHRyYWNrIG9mIHRoaXMgbGlzdCdzIGNoaWxkcmVuLiBUaGVyZSBpcyBub3QgdXNhZ2Ugb2YgaXQgaW5zaWRlIHRoaXMgZGlyZWN0aXZlLFxuICAgICAqIGJ1dCBpdCdzIHVzZWQgYnkgc2VydmljZXMgYW5kIE5lc3RlZEl0ZW1EaXJlY3RpdmUgYnkgaXRzZWxmLFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBOZXN0ZWRJdGVtRGlyZWN0aXZlKSlcbiAgICBuZXN0ZWRJdGVtczogUXVlcnlMaXN0PE5lc3RlZEl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfbmVzdGVkSXRlbVNlcnZpY2U6IE5lc3RlZEl0ZW1TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9uZXN0ZWRMaXN0U3RhdGVTZXJ2aWNlOiBOZXN0ZWRMaXN0U3RhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9uZXN0ZWRMaXN0S2V5Ym9hcmRTZXJ2aWNlOiBOZXN0ZWRMaXN0S2V5Ym9hcmRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3Rpb25SZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9jb250ZW50RGVuc2l0eVNlcnZpY2U6IENvbnRlbnREZW5zaXR5U2VydmljZVxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5fbmVzdGVkSXRlbVNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX25lc3RlZEl0ZW1TZXJ2aWNlLmxpc3QgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcGFjdCA9PT0gdW5kZWZpbmVkICYmIHRoaXMuX2NvbnRlbnREZW5zaXR5U2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5fY29udGVudERlbnNpdHlTZXJ2aWNlLl9pc0NvbXBhY3REZW5zaXR5LnN1YnNjcmliZSgoaXNDb21wYWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGFjdCA9IGlzQ29tcGFjdDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgbGV0IG5lc3RlZExldmVsOiBudW1iZXIgPSB0aGlzLl9nZXROZXN0ZWRMZXZlbCgpO1xuICAgICAgICAvKiogSWYgdGhlcmUgaXMgY29uZGVuc2VkIG1vZGUsIG1heGltdW0gMm5kIGxldmVsIGNsYXNzIG9mIG5lc3QgY2FuIGJlIGFkZGVkICovXG4gICAgICAgIGlmICh0aGlzLl9uZXN0ZWRMaXN0U3RhdGVTZXJ2aWNlLmNvbmRlbnNlZCkge1xuICAgICAgICAgICAgbmVzdGVkTGV2ZWwgPSBNYXRoLm1pbiguLi5bbmVzdGVkTGV2ZWwsIDJdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5lc3RlZEl0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuX25lc3RlZExpc3RLZXlib2FyZFNlcnZpY2UucmVmcmVzaCQubmV4dCgpKTtcbiAgICAgICAgdGhpcy5faGFuZGxlTmVzdGVkTGV2ZWwobmVzdGVkTGV2ZWwpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0aW9uUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlTmVzdGVkTGV2ZWwobGV2ZWw6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvKiogQWRkaW5nIGNsYXNzIHdpdGggdGhlIG5lc3RlZCBsZXZlbCAqL1xuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbGV2ZWwtJyArIGxldmVsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kLCB0aGF0IGNoZWNrcyBob3cgZGVlcCBpcyB0aGUgbGlzdCBlbGVtZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0TmVzdGVkTGV2ZWwoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnRzOiBFbGVtZW50W10gPSBbXTtcblxuICAgICAgICAvKiogTWV0aG9kIHRoYXQgZ2F0aGVycyBhbGwgb2YgdGhlIHBhcmVudE5vZGUgZWxlbWVudHMgb2YgY3VycmVudCBOZXN0ZWRMaXN0RGlyZWN0aXZlIGVsZW1lbnQgKi9cbiAgICAgICAgd2hpbGUgKGVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgcGFyZW50RWxlbWVudHMudW5zaGlmdChlbGVtZW50KTtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICAvKiogRmlsdGVyIG9ubHkgZWxlbWVudHMsIHRoYXQgaGFzIGBmZC1uZXN0ZWQtbGlzdGAgZGlyZWN0aXZlIGF0dHJpYnV0ZSAqL1xuICAgICAgICBjb25zdCBmaWx0ZXJlZFBhcmVudEVsZW1lbnRzID0gcGFyZW50RWxlbWVudHMuZmlsdGVyKChfZWxlbWVudCkgPT4gX2VsZW1lbnQuaGFzQXR0cmlidXRlKCdmZC1uZXN0ZWQtbGlzdCcpKTtcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkUGFyZW50RWxlbWVudHMubGVuZ3RoO1xuICAgIH1cbn1cbiJdfQ==
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbmVzdGVkLWxpc3QvbmVzdGVkLWxpc3QvbmVzdGVkLWxpc3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBTXRFLE1BQU0sT0FBTyxtQkFBbUI7SUE4RDVCLGNBQWM7SUFDZCxZQUN3QixrQkFBcUMsRUFDakQsdUJBQStDLEVBQy9DLDBCQUFxRCxFQUNyRCxXQUF1QixFQUN2QixtQkFBc0MsRUFDMUIsc0JBQTZDO1FBTDdDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDakQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF3QjtRQUMvQywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTJCO1FBQ3JELGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLHdCQUFtQixHQUFuQixtQkFBbUIs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QUFhO3NCQURwQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFLekIsU0FBUztzQkFEaEIsV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eVNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuXG5pbXBvcnQgeyBOZXN0ZWRMaXN0U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vbmVzdGVkLWxpc3Qtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBOZXN0ZWRJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vbmVzdGVkLWl0ZW0vbmVzdGVkLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IE5lc3RlZEl0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vbmVzdGVkLWl0ZW0vbmVzdGVkLWl0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBOZXN0ZWRMaXN0S2V5Ym9hcmRTZXJ2aWNlIH0gZnJvbSAnLi4vbmVzdGVkLWxpc3Qta2V5Ym9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBOZXN0ZWRMaXN0SW50ZXJmYWNlIH0gZnJvbSAnLi9uZXN0ZWQtbGlzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTmVzdGVkTGlzdEhlYWRlckRpcmVjdGl2ZSB9IGZyb20gJy4uL25lc3RlZC1saXN0LWRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmROZXN0ZWRMaXN0XSwgW2ZkLW5lc3RlZC1saXN0XSdcbn0pXG5leHBvcnQgY2xhc3MgTmVzdGVkTGlzdERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE5lc3RlZExpc3RJbnRlcmZhY2UsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogSW4gY2FzZSB0aGUgdXNlciB3YW50cyB0byBubyB1c2UgaWNvbnMgZm9yIGl0ZW1zIGluIHRoaXMgbGlzdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1uZXN0ZWQtbGlzdC0tdGV4dC1vbmx5JylcbiAgICB0ZXh0T25seSA9IGZhbHNlO1xuXG4gICAgLyoqIEluIGNhc2UgdGhlIHVzZXIgd2FudHMgcHV0IGNvbXBhY3QgbW9kZSBpbiB0aGlzIGxpc3QgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbmVzdGVkLWxpc3QtLWNvbXBhY3QnKVxuICAgIGNvbXBhY3Q6IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgLyoqIEFyaWEgZGVmaW5lcyByb2xlIGRlc2NyaXB0aW9uIGZvciB0aGUgTmVzdGVkIExpc3QgVHJlZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFSb2xlZGVzY3JpcHRpb25UcmVlID0gJ05hdmlnYXRpb24gTGlzdCBUcmVlJztcblxuICAgIC8qKiBBcmlhIGRlZmluZXMgcm9sZSBkZXNjcmlwdGlvbiBmb3IgdGhlIE5lc3RlZCBMaXN0IE1lbnVCYXIuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhUm9sZWRlc2NyaXB0aW9uTWVudUJhciA9ICdOYXZpZ2F0aW9uIExpc3QgTWVudSBCYXInO1xuXG4gICAgLyoqIEFyaWEgZGVmaW5lcyBhcmlhIGxhYmVsIGZvciB0aGUgc2VsZWN0ZWQgaXRlbSB3aGVuIHRoZSBsaXN0IHdpdGggZGlzYWJsZWQgc2VsZWN0aW9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsU2VsZWN0ZWQgPSAnU2VsZWN0ZWQnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLW5lc3RlZC1saXN0JylcbiAgICBmZE5lc3RlZExpc3RJdGVtQ2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1oaWRkZW4nKVxuICAgIGhpZGRlbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRoaXMgdmFyaWFibGUgaXMgbW9zdGx5IHRvIGtlZXAgdHJhY2sgb2YgdGhpcyBsaXN0J3MgY2hpbGRyZW4uIFRoZXJlIGlzIG5vdCB1c2FnZSBvZiBpdCBpbnNpZGUgdGhpcyBkaXJlY3RpdmUsXG4gICAgICogYnV0IGl0J3MgdXNlZCBieSBzZXJ2aWNlcyBhbmQgTmVzdGVkSXRlbURpcmVjdGl2ZSBieSBpdHNlbGYsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IE5lc3RlZEl0ZW1EaXJlY3RpdmUpKVxuICAgIG5lc3RlZEl0ZW1zOiBRdWVyeUxpc3Q8TmVzdGVkSXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoTmVzdGVkTGlzdEhlYWRlckRpcmVjdGl2ZSlcbiAgICBwcml2YXRlIF9uZXN0ZWRMaXN0SGVhZGVyOiBOZXN0ZWRMaXN0SGVhZGVyRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgcHJpdmF0ZSBfcm9sZSA9ICd0cmVlJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcm9sZWRlc2NyaXB0aW9uJylcbiAgICBwcml2YXRlIF9hcmlhUm9sZWRlc2NyaXB0aW9uOiBOdWxsYWJsZTxzdHJpbmc+ID0gdGhpcy5hcmlhUm9sZWRlc2NyaXB0aW9uVHJlZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGFzcG9wdXAnKVxuICAgIHByaXZhdGUgX2FyaWFIYXNwb3B1cDogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gICAgcHJpdmF0ZSBfdGFiaW5kZXggPSAnLTEnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfbmVzdGVkSXRlbVNlcnZpY2U6IE5lc3RlZEl0ZW1TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9uZXN0ZWRMaXN0U3RhdGVTZXJ2aWNlOiBOZXN0ZWRMaXN0U3RhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9uZXN0ZWRMaXN0S2V5Ym9hcmRTZXJ2aWNlOiBOZXN0ZWRMaXN0S2V5Ym9hcmRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3Rpb25SZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9jb250ZW50RGVuc2l0eVNlcnZpY2U6IENvbnRlbnREZW5zaXR5U2VydmljZVxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5fbmVzdGVkSXRlbVNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX25lc3RlZEl0ZW1TZXJ2aWNlLmxpc3QgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcGFjdCA9PT0gdW5kZWZpbmVkICYmIHRoaXMuX2NvbnRlbnREZW5zaXR5U2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5fY29udGVudERlbnNpdHlTZXJ2aWNlLl9pc0NvbXBhY3REZW5zaXR5LnN1YnNjcmliZSgoaXNDb21wYWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGFjdCA9IGlzQ29tcGFjdDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgbGV0IG5lc3RlZExldmVsOiBudW1iZXIgPSB0aGlzLl9nZXROZXN0ZWRMZXZlbCgpO1xuICAgICAgICAvKiogSWYgdGhlcmUgaXMgY29uZGVuc2VkIG1vZGUsIG1heGltdW0gMm5kIGxldmVsIGNsYXNzIG9mIG5lc3QgY2FuIGJlIGFkZGVkICovXG4gICAgICAgIGlmICh0aGlzLl9uZXN0ZWRMaXN0U3RhdGVTZXJ2aWNlLmNvbmRlbnNlZCkge1xuICAgICAgICAgICAgbmVzdGVkTGV2ZWwgPSBNYXRoLm1pbiguLi5bbmVzdGVkTGV2ZWwsIDJdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKG5lc3RlZExldmVsKTtcblxuICAgICAgICB0aGlzLm5lc3RlZEl0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX25lc3RlZExpc3RLZXlib2FyZFNlcnZpY2UucmVmcmVzaCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5fc2V0QXJpYUF0dHJpYnV0ZXMobmVzdGVkTGV2ZWwpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9zZXRBcmlhQXR0cmlidXRlcyhuZXN0ZWRMZXZlbCk7XG4gICAgICAgIHRoaXMuX2hhbmRsZU5lc3RlZExldmVsKG5lc3RlZExldmVsKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdGlvblJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZU5lc3RlZExldmVsKGxldmVsOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLyoqIEFkZGluZyBjbGFzcyB3aXRoIHRoZSBuZXN0ZWQgbGV2ZWwgKi9cbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2xldmVsLScgKyBsZXZlbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCwgdGhhdCBjaGVja3MgaG93IGRlZXAgaXMgdGhlIGxpc3QgZWxlbWVudFxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldE5lc3RlZExldmVsKCk6IG51bWJlciB7XG4gICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50czogRWxlbWVudFtdID0gW107XG5cbiAgICAgICAgLyoqIE1ldGhvZCB0aGF0IGdhdGhlcnMgYWxsIG9mIHRoZSBwYXJlbnROb2RlIGVsZW1lbnRzIG9mIGN1cnJlbnQgTmVzdGVkTGlzdERpcmVjdGl2ZSBlbGVtZW50ICovXG4gICAgICAgIHdoaWxlIChlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnRzLnVuc2hpZnQoZWxlbWVudCk7XG4gICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqIEZpbHRlciBvbmx5IGVsZW1lbnRzLCB0aGF0IGhhcyBgZmQtbmVzdGVkLWxpc3RgIGRpcmVjdGl2ZSBhdHRyaWJ1dGUgKi9cbiAgICAgICAgY29uc3QgZmlsdGVyZWRQYXJlbnRFbGVtZW50cyA9IHBhcmVudEVsZW1lbnRzLmZpbHRlcigoX2VsZW1lbnQpID0+IF9lbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZmQtbmVzdGVkLWxpc3QnKSk7XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZFBhcmVudEVsZW1lbnRzLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEFyaWFBdHRyaWJ1dGVzKGxldmVsOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZXN0ZWRJdGVtcy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICBpdGVtLl9hcmlhTGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgICAgIGl0ZW0ubGlua0l0ZW0uYXJpYURlc2NyaWJlZGJ5ID0gdGhpcy5fbmVzdGVkTGlzdEhlYWRlciAmJiB0aGlzLl9uZXN0ZWRMaXN0SGVhZGVyLmlkO1xuICAgICAgICAgICAgaXRlbS5saW5rSXRlbS5fYXJpYUxhYmVsID0gYFxuICAgICAgICAgICAgICAgICBUcmVlIEl0ZW0gJHtpdGVtLmxpbmtJdGVtLmdldFRpdGxlKCl9ICR7aSArIDF9IG9mICR7dGhpcy5uZXN0ZWRJdGVtcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICR7IXRoaXMuX25lc3RlZExpc3RTdGF0ZVNlcnZpY2Uuc2VsZWN0YWJsZSAmJiBpdGVtLmxpbmtJdGVtLnNlbGVjdGVkID8gdGhpcy5hcmlhTGFiZWxTZWxlY3RlZCA6ICcnfWA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdGlvblJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhsZXZlbDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9uZXN0ZWRMaXN0U3RhdGVTZXJ2aWNlLmNvbmRlbnNlZCAmJiBsZXZlbCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5fYXJpYVJvbGVkZXNjcmlwdGlvbiA9IHRoaXMuYXJpYVJvbGVkZXNjcmlwdGlvbk1lbnVCYXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGV2ZWwgPiAxIHx8ICh0aGlzLl9uZXN0ZWRJdGVtU2VydmljZT8ucG9wb3ZlciAmJiAhdGhpcy5fbmVzdGVkTGlzdFN0YXRlU2VydmljZS5jb25kZW5zZWQpKSB7XG4gICAgICAgICAgICB0aGlzLl9yb2xlID0gJ2dyb3VwJztcbiAgICAgICAgICAgIHRoaXMuX2FyaWFSb2xlZGVzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX25lc3RlZEl0ZW1TZXJ2aWNlPy5wb3BvdmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9hcmlhSGFzcG9wdXAgPSAndHJlZSc7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -10,20 +10,32 @@ import * as i1 from "./nested-item/nested-item.service";
10
10
  import * as i2 from "@fundamental-ngx/core/utils";
11
11
  import * as i3 from "@fundamental-ngx/core/icon";
12
12
  import * as i4 from "@angular/common";
13
+ let uniqueId = 0;
13
14
  export class NestedListHeaderDirective {
14
- constructor() {
15
+ constructor(_elementRef) {
16
+ this._elementRef = _elementRef;
17
+ this.id = `fd-nested-list-group-header-${++uniqueId}`;
15
18
  /** @hidden */
16
19
  this.fdNestedListHeaderClass = true;
17
20
  }
21
+ /** Get the header title */
22
+ get title() {
23
+ return this._elementRef.nativeElement.textContent;
24
+ }
18
25
  }
19
- NestedListHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: NestedListHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
20
- NestedListHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: NestedListHeaderDirective, selector: "[fdNestedDirectivesHeader], [fd-nested-list-header]", host: { properties: { "class.fd-nested-list__group-header": "this.fdNestedListHeaderClass" } }, ngImport: i0 });
26
+ NestedListHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: NestedListHeaderDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
27
+ NestedListHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: NestedListHeaderDirective, selector: "[fdNestedDirectivesHeader], [fd-nested-list-header]", inputs: { id: "id" }, host: { properties: { "attr.id": "this.id", "class.fd-nested-list__group-header": "this.fdNestedListHeaderClass" } }, ngImport: i0 });
21
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: NestedListHeaderDirective, decorators: [{
22
29
  type: Directive,
23
30
  args: [{
24
31
  selector: '[fdNestedDirectivesHeader], [fd-nested-list-header]'
25
32
  }]
26
- }], propDecorators: { fdNestedListHeaderClass: [{
33
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { id: [{
34
+ type: Input
35
+ }, {
36
+ type: HostBinding,
37
+ args: ['attr.id']
38
+ }], fdNestedListHeaderClass: [{
27
39
  type: HostBinding,
28
40
  args: ['class.fd-nested-list__group-header']
29
41
  }] } });
@@ -120,6 +132,8 @@ export class NestedListExpandIconComponent {
120
132
  * Attribute controlled by the parent `NestedItemDirective`
121
133
  */
122
134
  this.expanded = false;
135
+ /** @hidden */
136
+ this.ariaHidden = true;
123
137
  this._listenOnTextDirection();
124
138
  }
125
139
  /** Mouse event handler */
@@ -145,7 +159,7 @@ export class NestedListExpandIconComponent {
145
159
  }
146
160
  }
147
161
  NestedListExpandIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: NestedListExpandIconComponent, deps: [{ token: i1.NestedItemService }, { token: i0.ChangeDetectorRef }, { token: i2.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
148
- NestedListExpandIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: NestedListExpandIconComponent, selector: "[fdNestedListExpandIcon], [fd-nested-list-expand-icon]", host: { attributes: { "aria-haspopup": "true", "tabindex": "-1" }, listeners: { "click": "onClick($event)", "focus": "onFocus()" }, properties: { "class.fd-nested-list__button": "this.fdNestedListTitleClass", "class.fd-button": "this.fdButtonClass", "class.is-expanded": "this.expanded", "attr.aria-expanded": "this.expanded" } }, ngImport: i0, template: `
162
+ NestedListExpandIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: NestedListExpandIconComponent, selector: "[fdNestedListExpandIcon], [fd-nested-list-expand-icon]", host: { attributes: { "aria-haspopup": "true", "tabindex": "-1" }, listeners: { "click": "onClick($event)", "focus": "onFocus()" }, properties: { "class.fd-nested-list__button": "this.fdNestedListTitleClass", "class.fd-button": "this.fdButtonClass", "class.is-expanded": "this.expanded", "attr.aria-expanded": "this.expanded", "attr.aria-hidden": "this.ariaHidden" } }, ngImport: i0, template: `
149
163
  <ng-content></ng-content>
150
164
  <fd-icon [glyph]="expanded ? 'navigation-down-arrow' : (sideArrowIcon$ | async)"></fd-icon>
151
165
  `, isInline: true, components: [{ type: i3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
@@ -179,6 +193,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
179
193
  }, {
180
194
  type: HostBinding,
181
195
  args: ['attr.aria-expanded']
196
+ }], ariaHidden: [{
197
+ type: HostBinding,
198
+ args: ['attr.aria-hidden']
182
199
  }], onClick: [{
183
200
  type: HostListener,
184
201
  args: ['click', ['$event']]
@@ -186,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
186
203
  type: HostListener,
187
204
  args: ['focus']
188
205
  }] } });
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWxpc3QtZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL25lc3RlZC1saXN0L25lc3RlZC1saXN0LWRpcmVjdGl2ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBS3RDLE1BQU0sT0FBTyx5QkFBeUI7SUFIdEM7UUFJSSxjQUFjO1FBRWQsNEJBQXVCLEdBQUcsSUFBSSxDQUFDO0tBQ2xDOztzSEFKWSx5QkFBeUI7MEdBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxREFBcUQ7aUJBQ2xFOzhCQUlHLHVCQUF1QjtzQkFEdEIsV0FBVzt1QkFBQyxvQ0FBb0M7O0FBT3JELE1BQU0sT0FBTyx1QkFBdUI7SUFvQmhDLGNBQWM7SUFDZCxZQUFvQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXBCM0MsOERBQThEO1FBRTlELFVBQUssR0FBRyxFQUFFLENBQUM7UUFRWCxxQkFBcUI7UUFHckIsU0FBSSxHQUFHLGNBQWMsQ0FBQztRQUV0QixjQUFj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LENBQUMsV0FBVztZQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7WUFDekcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OzBIQXJEUSw2QkFBNkI7OEdBQTdCLDZCQUE2Qix5YUFYNUI7OztLQUdUOzJGQVFRLDZCQUE2QjtrQkFkekMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSx3REFBd0Q7b0JBQ2xFLFFBQVEsRUFBRTs7O0tBR1Q7b0JBQ0QsSUFBSSxFQUFFO3dCQUNGLGVBQWUsRUFBRSxNQUFNO3dCQUN2QixRQUFRLEVBQUUsSUFBSTtxQkFDakI7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUN4Qzs7MEJBd0JRLFFBQVE7NENBcEJiLHNCQUFzQjtzQkFEckIsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBSzNDLGFBQWE7c0JBRFosV0FBVzt1QkFBQyxpQkFBaUI7Z0JBUzlCLFFBQVE7c0JBRlAsV0FBVzt1QkFBQyxtQkFBbUI7O3NCQUMvQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFnQmpDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU2pDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZXN0ZWRJdGVtU2VydmljZSB9IGZyb20gJy4vbmVzdGVkLWl0ZW0vbmVzdGVkLWl0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBhcHBseUNzc0NsYXNzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IENzc0NsYXNzQnVpbGRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkTmVzdGVkRGlyZWN0aXZlc0hlYWRlcl0sIFtmZC1uZXN0ZWQtbGlzdC1oZWFkZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBOZXN0ZWRMaXN0SGVhZGVyRGlyZWN0aXZlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbmVzdGVkLWxpc3RfX2dyb3VwLWhlYWRlcicpXG4gICAgZmROZXN0ZWRMaXN0SGVhZGVyQ2xhc3MgPSB0cnVlO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZE5lc3RlZERpcmVjdGl2ZXNJY29uXSwgW2ZkLW5lc3RlZC1saXN0LWljb25dJ1xufSlcbmV4cG9ydCBjbGFzcyBOZXN0ZWRMaXN0SWNvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIENzc0NsYXNzQnVpbGRlciwgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIC8qKiBUaGUgcHJvcGVydHkgYWxsb3dzIHVzZXIgdG8gcGFzcyBhZGRpdGlvbmFsIGNzcyBjbGFzc2VzICovXG4gICAgQElucHV0KClcbiAgICBjbGFzcyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGljb24gbmFtZSB0byBkaXNwbGF5LiBTZWUgdGhlIGljb24gcGFnZSBmb3IgdGhlIGxpc3Qgb2YgaWNvbnNcbiAgICAgKiBoZXJlOiBodHRwczovL3NhcC5naXRodWIuaW8vZnVuZGFtZW50YWwtbmd4L2ljb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBnbHlwaDogc3RyaW5nO1xuXG4gICAgLyoqIFJvbGUgYXR0cmlidXRlICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgcm9sZSA9ICdwcmVzZW50YXRpb24nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLW5lc3RlZC1saXN0X19pY29uJylcbiAgICBmZE5lc3RlZExpc3RJY29uQ2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICAvKiogQ3NzQ2xhc3NCdWlsZGVyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbiAqL1xuICAgIGJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gWydmZC1uZXN0ZWQtbGlzdF9faWNvbicsIHRoaXMuZ2x5cGggPyBgc2FwLWljb24tLSR7dGhpcy5nbHlwaH1gIDogJycsIHRoaXMuY2xhc3NdO1xuICAgIH1cblxuICAgIC8qKiBIYXNFbGVtZW50UmVmIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbiAqL1xuICAgIGVsZW1lbnRSZWYoKTogRWxlbWVudFJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWY7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZE5lc3RlZERpcmVjdGl2ZXNUaXRsZV0sIFtmZC1uZXN0ZWQtbGlzdC10aXRsZV0nXG59KVxuZXhwb3J0IGNsYXNzIE5lc3RlZExpc3RUaXRsZURpcmVjdGl2ZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLW5lc3RlZC1saXN0X190aXRsZScpXG4gICAgZmROZXN0ZWRMaXN0VGl0bGVDbGFzcyA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICAgIC8qKiBSZXR1cm5zIGVsZW1lbnQncyBJbm5lclRleHQgKi9cbiAgICBnZXRJbm5lclRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZiAmJiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lclRleHQ7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZkTmVzdGVkTGlzdEV4cGFuZEljb25dLCBbZmQtbmVzdGVkLWxpc3QtZXhwYW5kLWljb25dJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJleHBhbmRlZCA/ICduYXZpZ2F0aW9uLWRvd24tYXJyb3cnIDogKHNpZGVBcnJvd0ljb24kIHwgYXN5bmMpXCI+PC9mZC1pY29uPlxuICAgIGAsXG4gICAgaG9zdDoge1xuICAgICAgICAnYXJpYS1oYXNwb3B1cCc6ICd0cnVlJyxcbiAgICAgICAgdGFiaW5kZXg6ICctMSdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTmVzdGVkTGlzdEV4cGFuZEljb25Db21wb25lbnQge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1uZXN0ZWQtbGlzdF9fYnV0dG9uJylcbiAgICBmZE5lc3RlZExpc3RUaXRsZUNsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1idXR0b24nKVxuICAgIGZkQnV0dG9uQ2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEF0dHJpYnV0ZSBjb250cm9sbGVkIGJ5IHRoZSBwYXJlbnQgYE5lc3RlZEl0ZW1EaXJlY3RpdmVgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1leHBhbmRlZCcpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKVxuICAgIGV4cGFuZGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNpZGVBcnJvd0ljb24kOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfaXRlbVNlcnZpY2U6IE5lc3RlZEl0ZW1TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uVGV4dERpcmVjdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBNb3VzZSBldmVudCBoYW5kbGVyICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xuICAgICAgICB0aGlzLl9pdGVtU2VydmljZS50b2dnbGUubmV4dCh0aGlzLmV4cGFuZGVkKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZXIgZm9yIGZvY3VzIGV2ZW50cyAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgICBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pdGVtU2VydmljZS5mb2N1cy5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjaGFuZ2VFeHBhbmRlZFN0YXRlKGV4cGFuZGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSBleHBhbmRlZDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTZXRzIGV4cGFuZCBhcnJvdyBkZXBlbmRpbmcgb24gdGV4dCBkaXJlY3Rpb24gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblRleHREaXJlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2lkZUFycm93SWNvbiQgPSB0aGlzLl9ydGxTZXJ2aWNlXG4gICAgICAgICAgICA/IHRoaXMuX3J0bFNlcnZpY2UucnRsLnBpcGUobWFwKChpc1J0bCkgPT4gKGlzUnRsID8gJ25hdmlnYXRpb24tbGVmdC1hcnJvdycgOiAnbmF2aWdhdGlvbi1yaWdodC1hcnJvdycpKSlcbiAgICAgICAgICAgIDogb2YoJ25hdmlnYXRpb24tcmlnaHQtYXJyb3cnKTtcbiAgICB9XG59XG4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWxpc3QtZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL25lc3RlZC1saXN0L25lc3RlZC1saXN0LWRpcmVjdGl2ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBRXRDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQUtqQixNQUFNLE9BQU8seUJBQXlCO0lBU2xDLFlBQW9CLFdBQXVCO1FBQXZCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBTjNDLE9BQUUsR0FBa0IsK0JBQStCLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFFaEUsY0FBYztRQUVkLDRCQUF1QixHQUFHLElBQUksQ0FBQztJQUVlLENBQUM7SUFFL0MsMkJBQTJCO0lBQzNCLElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQ3RELENBQUM7O3NIQWRRLHlCQUF5QjswR0FBekIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBSHJDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFEQUFxRDtpQkFD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Vzt1QkFBQyxtQkFBbUI7O3NCQUMvQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFLakMsVUFBVTtzQkFEVCxXQUFXO3VCQUFDLGtCQUFrQjtnQkFnQi9CLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU2pDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZXN0ZWRJdGVtU2VydmljZSB9IGZyb20gJy4vbmVzdGVkLWl0ZW0vbmVzdGVkLWl0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBhcHBseUNzc0NsYXNzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IENzc0NsYXNzQnVpbGRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmxldCB1bmlxdWVJZCA9IDA7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkTmVzdGVkRGlyZWN0aXZlc0hlYWRlcl0sIFtmZC1uZXN0ZWQtbGlzdC1oZWFkZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBOZXN0ZWRMaXN0SGVhZGVyRGlyZWN0aXZlIHtcbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgaWQ6IHN0cmluZyB8IG51bGwgPSBgZmQtbmVzdGVkLWxpc3QtZ3JvdXAtaGVhZGVyLSR7Kyt1bmlxdWVJZH1gO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLW5lc3RlZC1saXN0X19ncm91cC1oZWFkZXInKVxuICAgIGZkTmVzdGVkTGlzdEhlYWRlckNsYXNzID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICAvKiogR2V0IHRoZSBoZWFkZXIgdGl0bGUgKi9cbiAgICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkTmVzdGVkRGlyZWN0aXZlc0ljb25dLCBbZmQtbmVzdGVkLWxpc3QtaWNvbl0nXG59KVxuZXhwb3J0IGNsYXNzIE5lc3RlZExpc3RJY29uRGlyZWN0aXZlIGltcGxlbWVudHMgQ3NzQ2xhc3NCdWlsZGVyLCBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gICAgLyoqIFRoZSBwcm9wZXJ0eSBhbGxvd3MgdXNlciB0byBwYXNzIGFkZGl0aW9uYWwgY3NzIGNsYXNzZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaWNvbiBuYW1lIHRvIGRpc3BsYXkuIFNlZSB0aGUgaWNvbiBwYWdlIGZvciB0aGUgbGlzdCBvZiBpY29uc1xuICAgICAqIGhlcmU6IGh0dHBzOi8vc2FwLmdpdGh1Yi5pby9mdW5kYW1lbnRhbC1uZ3gvaWNvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIGdseXBoOiBzdHJpbmc7XG5cbiAgICAvKiogUm9sZSBhdHRyaWJ1dGUgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICByb2xlID0gJ3ByZXNlbnRhdGlvbic7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbmVzdGVkLWxpc3RfX2ljb24nKVxuICAgIGZkTmVzdGVkTGlzdEljb25DbGFzcyA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICBAYXBwbHlDc3NDbGFzc1xuICAgIC8qKiBDc3NDbGFzc0J1aWxkZXIgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uICovXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbJ2ZkLW5lc3RlZC1saXN0X19pY29uJywgdGhpcy5nbHlwaCA/IGBzYXAtaWNvbi0tJHt0aGlzLmdseXBofWAgOiAnJywgdGhpcy5jbGFzc107XG4gICAgfVxuXG4gICAgLyoqIEhhc0VsZW1lbnRSZWYgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uICovXG4gICAgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZjtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkTmVzdGVkRGlyZWN0aXZlc1RpdGxlXSwgW2ZkLW5lc3RlZC1saXN0LXRpdGxlXSdcbn0pXG5leHBvcnQgY2xhc3MgTmVzdGVkTGlzdFRpdGxlRGlyZWN0aXZlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbmVzdGVkLWxpc3RfX3RpdGxlJylcbiAgICBmZE5lc3RlZExpc3RUaXRsZUNsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqIFJldHVybnMgZWxlbWVudCdzIElubmVyVGV4dCAqL1xuICAgIGdldElubmVyVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmICYmIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVyVGV4dDtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmROZXN0ZWRMaXN0RXhwYW5kSWNvbl0sIFtmZC1uZXN0ZWQtbGlzdC1leHBhbmQtaWNvbl0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPGZkLWljb24gW2dseXBoXT1cImV4cGFuZGVkID8gJ25hdmlnYXRpb24tZG93bi1hcnJvdycgOiAoc2lkZUFycm93SWNvbiQgfCBhc3luYylcIj48L2ZkLWljb24+XG4gICAgYCxcbiAgICBob3N0OiB7XG4gICAgICAgICdhcmlhLWhhc3BvcHVwJzogJ3RydWUnLFxuICAgICAgICB0YWJpbmRleDogJy0xJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBOZXN0ZWRMaXN0RXhwYW5kSWNvbkNvbXBvbmVudCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLW5lc3RlZC1saXN0X19idXR0b24nKVxuICAgIGZkTmVzdGVkTGlzdFRpdGxlQ2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWJ1dHRvbicpXG4gICAgZmRCdXR0b25DbGFzcyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQXR0cmlidXRlIGNvbnRyb2xsZWQgYnkgdGhlIHBhcmVudCBgTmVzdGVkSXRlbURpcmVjdGl2ZWBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLWV4cGFuZGVkJylcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpXG4gICAgZXhwYW5kZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGlkZGVuJylcbiAgICBhcmlhSGlkZGVuID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2lkZUFycm93SWNvbiQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9pdGVtU2VydmljZTogTmVzdGVkSXRlbVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25UZXh0RGlyZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIE1vdXNlIGV2ZW50IGhhbmRsZXIgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG4gICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLnRvZ2dsZS5uZXh0KHRoaXMuZXhwYW5kZWQpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogSGFuZGxlciBmb3IgZm9jdXMgZXZlbnRzICovXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmZvY3VzLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNoYW5nZUV4cGFuZGVkU3RhdGUoZXhwYW5kZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9IGV4cGFuZGVkO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNldHMgZXhwYW5kIGFycm93IGRlcGVuZGluZyBvbiB0ZXh0IGRpcmVjdGlvbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVGV4dERpcmVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaWRlQXJyb3dJY29uJCA9IHRoaXMuX3J0bFNlcnZpY2VcbiAgICAgICAgICAgID8gdGhpcy5fcnRsU2VydmljZS5ydGwucGlwZShtYXAoKGlzUnRsKSA9PiAoaXNSdGwgPyAnbmF2aWdhdGlvbi1sZWZ0LWFycm93JyA6ICduYXZpZ2F0aW9uLXJpZ2h0LWFycm93JykpKVxuICAgICAgICAgICAgOiBvZignbmF2aWdhdGlvbi1yaWdodC1hcnJvdycpO1xuICAgIH1cbn1cbiJdfQ==
@@ -3,7 +3,7 @@ import { MenuKeyboardService } from '@fundamental-ngx/core/menu';
3
3
  import { Inject, Injectable } from '@angular/core';
4
4
  import { takeUntil } from 'rxjs/operators';
5
5
  import { KeyUtil } from '@fundamental-ngx/core/utils';
6
- import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';
6
+ import { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@fundamental-ngx/core/menu";
9
9
  /**
@@ -67,15 +67,19 @@ export class NestedListKeyboardService {
67
67
  }
68
68
  keyboardEvent.preventDefault();
69
69
  }
70
- else if (KeyUtil.isKeyCode(keyboardEvent, LEFT_ARROW)) {
70
+ if (KeyUtil.isKeyCode(keyboardEvent, LEFT_ARROW)) {
71
71
  if (item.expanded && item.hasChildren) {
72
72
  item.triggerClose();
73
73
  }
74
74
  keyboardEvent.preventDefault();
75
75
  }
76
- else {
77
- this.keyboardService.keyDownHandler(keyboardEvent, index, items);
76
+ if (KeyUtil.isKeyCode(keyboardEvent, [ENTER, SPACE])) {
77
+ if (item.hasChildren) {
78
+ items[index].click();
79
+ }
80
+ keyboardEvent.preventDefault();
78
81
  }
82
+ this.keyboardService.keyDownHandler(keyboardEvent, index, items);
79
83
  }
80
84
  }
81
85
  NestedListKeyboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: NestedListKeyboardService, deps: [{ token: MenuKeyboardService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -86,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
86
90
  type: Inject,
87
91
  args: [MenuKeyboardService]
88
92
  }] }]; } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWxpc3Qta2V5Ym9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL25lc3RlZC1saXN0L25lc3RlZC1saXN0LWtleWJvYXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQUVoRTs7O0dBR0c7QUFFSCxNQUFNLE9BQU8seUJBQXlCO0lBT2xDLFlBQWlELGVBQW9DO1FBQXBDLG9CQUFlLEdBQWYsZUFBZSxDQUFxQjtRQU5yRjs7O1dBR0c7UUFDTSxhQUFRLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7SUFFaUMsQ0FBQztJQUV6Rjs7O09BR0c7SUFDSCxZQUFZLENBQUMsS0FBNEI7UUFDckMsTUFBTSxLQUFLLEdBQTBCLEVBQUUsQ0FBQztRQUV4QyxpQ0FBaUM7UUFDakMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEUsaUVBQWlFO1FBQ2pFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQjtpQkFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzlCLFNBQVMsQ0FBQyxDQUFDLGFBQTRCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGlGQUFpRjtJQUN6RSxTQUFTLENBQUMsSUFBeUI7UUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakUsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUN2QixDQUFDLFdBQWtDLEVBQUUsUUFBNkIsRUFBRSxFQUFFLENBQUM7WUFDbkUsR0FBRyxXQUFXO1lBQ2QsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztTQUM5QixFQUNELENBQUMsSUFBSSxDQUFDLENBQ1QsQ0FBQztJQUNOLENBQUM7SUFFRCwwR0FBMEc7SUFDbEcsZ0JBQWdCLENBQUMsSUFBeUI7UUFDOUMsTUFBTSxNQUFNLEdBQTBCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssY0FBYyxDQUFDLGFBQTRCLEVBQUUsS0FBYSxFQUFFLEtBQTRCO1FBQzVGLE1BQU0sSUFBSSxHQUF3QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0MsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDdEI7WUFDRCxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDbEM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxFQUFFO1lBQ3JELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDdkI7WUFDRCxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDbEM7YUFBTTtZQUNILElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDcEU7SUFDTCxDQUFDOztzSEF6RVEseUJBQXlCLGtCQU9kLG1CQUFtQjswSEFQOUIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVU7OzBCQVFNLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVudUtleWJvYXJkU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tZW51JztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTmVzdGVkSXRlbUludGVyZmFjZSB9IGZyb20gJy4vbmVzdGVkLWl0ZW0vbmVzdGVkLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IE5lc3RlZExpc3RJbnRlcmZhY2UgfSBmcm9tICcuL25lc3RlZC1saXN0L25lc3RlZC1saXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBLZXlVdGlsIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IExFRlRfQVJST1csIFJJR0hUX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuLyoqXG4gKiBOZXN0ZWQgbGlzdCBrZXlib2FyZCBzZXJ2aWNlLCB3aGljaCB1c2VzIE1lbnVLZXlib2FyZFNlcnZpY2UsIHRvIGRlYWwgd2l0aCBBcnJvd1VwLCBBcnJvd0Rvd24sIFNwYWNlLCBFbnRlci5cbiAqIEFsc28gaGFzIG93biBoYW5kbGluZyBvZiBBcnJvd0xlZnQgYW5kIEFycm93UmlnaHQsIHRvIG9wZW4vY2xvc2UgdGhlIG1lbnUgaWYgaXQgaGFzIGFueSBjaGlsZHJlbi5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5lc3RlZExpc3RLZXlib2FyZFNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIEV2ZW50LCB0aGF0IGlzIHRocm93biBhbHdheXMsIHdoZW4gdGhlIG9wZW4vY2xvc2UgaSBiZWluZyBjYWxsZWQgb24gaXRlbSBjb21wb25lbnRzLlxuICAgICAqIEFsc28gdHJpZ2dlcnMgY2hhbmdpbmcgb2YgZWxlbWVudHMsIHRvIHJlbW92ZSBjbG9zZWQvaGlkZGVuIGVsZW1lbnRzXG4gICAgICovXG4gICAgcmVhZG9ubHkgcmVmcmVzaCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChNZW51S2V5Ym9hcmRTZXJ2aWNlKSBwcml2YXRlIGtleWJvYXJkU2VydmljZTogTWVudUtleWJvYXJkU2VydmljZSkge31cblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIGNhbGxlZCBhZnRlciByZWZyZXNoJCBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAgICogUmVmcmVzaCB0aGUgbGlzdCBvZiBOZXN0ZWRJdGVtcywgdGhhdCB0aGUga2V5Ym9hcmQgc3VwcG9ydCBzaG91bGQgYmUgcHJvdmlkZWQgZm9yXG4gICAgICovXG4gICAgcmVmcmVzaEl0ZW1zKGxpc3RzOiBOZXN0ZWRMaXN0SW50ZXJmYWNlW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbXM6IE5lc3RlZEl0ZW1JbnRlcmZhY2VbXSA9IFtdO1xuXG4gICAgICAgIC8qKiBHYXRoZXJpbmcgYWxsIG9mIHRoZSBpdGVtcyAqL1xuICAgICAgICBsaXN0cy5mb3JFYWNoKChsaXN0KSA9PiBpdGVtcy5wdXNoKC4uLnRoaXMuX2dldEFsbExpc3RJdGVtcyhsaXN0KSkpO1xuICAgICAgICAvKiogUHV0dGluZyB0aGUga2V5Ym9hcmQgc3VwcG9ydCBmdW5jdGlvbiB0byBlYWNoIG9mIHRoZSBpdGVtcyAqL1xuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaXRlbS5rZXlib2FyZFRyaWdnZXJlZFxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnJlZnJlc2gkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChrZXlib2FyZEV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGtleWJvYXJkRXZlbnQsIGluZGV4LCBpdGVtcykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogUmVjdXJzaXZlIGZ1bmN0aW9uIHRvIGdldCBhbGwgb2YgdGhlIE5lc3RlZEl0ZW0gZWxlbWVudHMgaW4gY29ycmVjdCBvcmRlci4gKi9cbiAgICBwcml2YXRlIF9nZXRJdGVtcyhpdGVtOiBOZXN0ZWRJdGVtSW50ZXJmYWNlKTogTmVzdGVkSXRlbUludGVyZmFjZVtdIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5JdGVtcyA9IGl0ZW0uZXhwYW5kZWQgPyBpdGVtLmFsbENoaWxkcmVuSXRlbXMgOiBbXTtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuSXRlbXMucmVkdWNlKFxuICAgICAgICAgICAgKGFjdHVhbEFycmF5OiBOZXN0ZWRJdGVtSW50ZXJmYWNlW10sIG5leHRJdGVtOiBOZXN0ZWRJdGVtSW50ZXJmYWNlKSA9PiBbXG4gICAgICAgICAgICAgICAgLi4uYWN0dWFsQXJyYXksXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZ2V0SXRlbXMobmV4dEl0ZW0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW2l0ZW1dXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0aGF0IGNhbGxzIHRoZSByZWN1cnNpdmUgZnVuY3Rpb24sIGdldEl0ZW1zKCkgYW5kIGdhdGhlcnMgYWxsIG9mIHRoZSBpdGVtcyBpbiB0aGUgTmVzdGVkTGlzdCAqL1xuICAgIHByaXZhdGUgX2dldEFsbExpc3RJdGVtcyhsaXN0OiBOZXN0ZWRMaXN0SW50ZXJmYWNlKTogTmVzdGVkSXRlbUludGVyZmFjZVtdIHtcbiAgICAgICAgY29uc3QgX2l0ZW1zOiBOZXN0ZWRJdGVtSW50ZXJmYWNlW10gPSBbXTtcbiAgICAgICAgaWYgKGxpc3QgJiYgbGlzdC5uZXN0ZWRJdGVtcyAmJiBsaXN0Lm5lc3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxpc3QubmVzdGVkSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIF9pdGVtcy5wdXNoKC4uLnRoaXMuX2dldEl0ZW1zKGl0ZW0pKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIF9pdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBoYW5kbGUgZnVuY3Rpb24uIFVzZXMga2V5Ym9hcmQgc3VwcG9ydCBzZXJ2aWNlIGZyb20gTWVudUNvbXBvbmVudCwgdG8gZGVhbCB3aXRoIEFycm93VXAsIEFycm93RG93biwgU3BhY2UsIEVudGVyLlxuICAgICAqIEZvciBBcnJvd1JpZ2h0LCBpZiBpdGVtIGlzIG5vdCBleHBhbmRlZCBhbmQgaGFzIGNoaWxkcmVuIChsaXN0IG9yIHBvcHVwKSwgdGhlIG9wZW4gZnVuY3Rpb24gaXMgdHJpZ2dlcmVkLlxuICAgICAqIE90aGVyd2lzZSBpdCBmb2xsb3dzIEFycm93RG93biBmdW5jdGlvbmFsaXR5LlxuICAgICAqIEZvciBBcnJvd0xlZnQsIGlmIGl0ZW0gaXMgZXhwYW5kZWQgYW5kIGhhcyBjaGlsZHJlbiAobGlzdCBvciBwb3B1cCksIHRoZSBjbG9zZSBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQuXG4gICAgICogT3RoZXJ3aXNlIGl0IGZvbGxvd3MgQXJyb3dVcCBmdW5jdGlvbmFsaXR5XG4gICAgICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlS2V5RG93bihrZXlib2FyZEV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyLCBpdGVtczogTmVzdGVkSXRlbUludGVyZmFjZVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW06IE5lc3RlZEl0ZW1JbnRlcmZhY2UgPSBpdGVtc1tpbmRleF07XG5cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGtleWJvYXJkRXZlbnQsIFJJR0hUX0FSUk9XKSkge1xuICAgICAgICAgICAgaWYgKCFpdGVtLmV4cGFuZGVkICYmIGl0ZW0uaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBpdGVtLnRyaWdnZXJPcGVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrZXlib2FyZEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoa2V5Ym9hcmRFdmVudCwgTEVGVF9BUlJPVykpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmV4cGFuZGVkICYmIGl0ZW0uaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBpdGVtLnRyaWdnZXJDbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAga2V5Ym9hcmRFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5rZXlib2FyZFNlcnZpY2Uua2V5RG93bkhhbmRsZXIoa2V5Ym9hcmRFdmVudCwgaW5kZXgsIGl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWxpc3Qta2V5Ym9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL25lc3RlZC1saXN0L25lc3RlZC1saXN0LWtleWJvYXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRTlFOzs7R0FHRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFPbEMsWUFBaUQsZUFBb0M7UUFBcEMsb0JBQWUsR0FBZixlQUFlLENBQXFCO1FBTnJGOzs7V0FHRztRQUNNLGFBQVEsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVpQyxDQUFDO0lBRXpGOzs7T0FHRztJQUNILFlBQVksQ0FBQyxLQUE0QjtRQUNyQyxNQUFNLEtBQUssR0FBMEIsRUFBRSxDQUFDO1FBRXhDLGlDQUFpQztRQUNqQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRSxpRUFBaUU7UUFDakUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCO2lCQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDOUIsU0FBUyxDQUFDLENBQUMsYUFBNEIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUZBQWlGO0lBQ3pFLFNBQVMsQ0FBQyxJQUF5QjtRQUN2QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQ3ZCLENBQUMsV0FBa0MsRUFBRSxRQUE2QixFQUFFLEVBQUUsQ0FBQztZQUNuRSxHQUFHLFdBQVc7WUFDZCxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1NBQzlCLEVBQ0QsQ0FBQyxJQUFJLENBQUMsQ0FDVCxDQUFDO0lBQ04sQ0FBQztJQUVELDBHQUEwRztJQUNsRyxnQkFBZ0IsQ0FBQyxJQUF5QjtRQUM5QyxNQUFNLE1BQU0sR0FBMEIsRUFBRSxDQUFDO1FBQ3pDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxjQUFjLENBQUMsYUFBNEIsRUFBRSxLQUFhLEVBQUUsS0FBNEI7UUFDNUYsTUFBTSxJQUFJLEdBQXdCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN0QjtZQUNELGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNsQztRQUVELElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN2QjtZQUNELGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNsQztRQUVELElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNsRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2xCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUN4QjtZQUNELGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNsQztRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQzs7c0hBbEZRLHlCQUF5QixrQkFPZCxtQkFBbUI7MEhBUDlCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVOzswQkFRTSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1lbnVLZXlib2FyZFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVudSc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE5lc3RlZEl0ZW1JbnRlcmZhY2UgfSBmcm9tICcuL25lc3RlZC1pdGVtL25lc3RlZC1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOZXN0ZWRMaXN0SW50ZXJmYWNlIH0gZnJvbSAnLi9uZXN0ZWQtbGlzdC9uZXN0ZWQtbGlzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS2V5VXRpbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBFTlRFUiwgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFNQQUNFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuLyoqXG4gKiBOZXN0ZWQgbGlzdCBrZXlib2FyZCBzZXJ2aWNlLCB3aGljaCB1c2VzIE1lbnVLZXlib2FyZFNlcnZpY2UsIHRvIGRlYWwgd2l0aCBBcnJvd1VwLCBBcnJvd0Rvd24sIFNwYWNlLCBFbnRlci5cbiAqIEFsc28gaGFzIG93biBoYW5kbGluZyBvZiBBcnJvd0xlZnQgYW5kIEFycm93UmlnaHQsIHRvIG9wZW4vY2xvc2UgdGhlIG1lbnUgaWYgaXQgaGFzIGFueSBjaGlsZHJlbi5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5lc3RlZExpc3RLZXlib2FyZFNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIEV2ZW50LCB0aGF0IGlzIHRocm93biBhbHdheXMsIHdoZW4gdGhlIG9wZW4vY2xvc2UgaSBiZWluZyBjYWxsZWQgb24gaXRlbSBjb21wb25lbnRzLlxuICAgICAqIEFsc28gdHJpZ2dlcnMgY2hhbmdpbmcgb2YgZWxlbWVudHMsIHRvIHJlbW92ZSBjbG9zZWQvaGlkZGVuIGVsZW1lbnRzXG4gICAgICovXG4gICAgcmVhZG9ubHkgcmVmcmVzaCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChNZW51S2V5Ym9hcmRTZXJ2aWNlKSBwcml2YXRlIGtleWJvYXJkU2VydmljZTogTWVudUtleWJvYXJkU2VydmljZSkge31cblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIGNhbGxlZCBhZnRlciByZWZyZXNoJCBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAgICogUmVmcmVzaCB0aGUgbGlzdCBvZiBOZXN0ZWRJdGVtcywgdGhhdCB0aGUga2V5Ym9hcmQgc3VwcG9ydCBzaG91bGQgYmUgcHJvdmlkZWQgZm9yXG4gICAgICovXG4gICAgcmVmcmVzaEl0ZW1zKGxpc3RzOiBOZXN0ZWRMaXN0SW50ZXJmYWNlW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbXM6IE5lc3RlZEl0ZW1JbnRlcmZhY2VbXSA9IFtdO1xuXG4gICAgICAgIC8qKiBHYXRoZXJpbmcgYWxsIG9mIHRoZSBpdGVtcyAqL1xuICAgICAgICBsaXN0cy5mb3JFYWNoKChsaXN0KSA9PiBpdGVtcy5wdXNoKC4uLnRoaXMuX2dldEFsbExpc3RJdGVtcyhsaXN0KSkpO1xuICAgICAgICAvKiogUHV0dGluZyB0aGUga2V5Ym9hcmQgc3VwcG9ydCBmdW5jdGlvbiB0byBlYWNoIG9mIHRoZSBpdGVtcyAqL1xuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaXRlbS5rZXlib2FyZFRyaWdnZXJlZFxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnJlZnJlc2gkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChrZXlib2FyZEV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGtleWJvYXJkRXZlbnQsIGluZGV4LCBpdGVtcykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogUmVjdXJzaXZlIGZ1bmN0aW9uIHRvIGdldCBhbGwgb2YgdGhlIE5lc3RlZEl0ZW0gZWxlbWVudHMgaW4gY29ycmVjdCBvcmRlci4gKi9cbiAgICBwcml2YXRlIF9nZXRJdGVtcyhpdGVtOiBOZXN0ZWRJdGVtSW50ZXJmYWNlKTogTmVzdGVkSXRlbUludGVyZmFjZVtdIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5JdGVtcyA9IGl0ZW0uZXhwYW5kZWQgPyBpdGVtLmFsbENoaWxkcmVuSXRlbXMgOiBbXTtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuSXRlbXMucmVkdWNlKFxuICAgICAgICAgICAgKGFjdHVhbEFycmF5OiBOZXN0ZWRJdGVtSW50ZXJmYWNlW10sIG5leHRJdGVtOiBOZXN0ZWRJdGVtSW50ZXJmYWNlKSA9PiBbXG4gICAgICAgICAgICAgICAgLi4uYWN0dWFsQXJyYXksXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZ2V0SXRlbXMobmV4dEl0ZW0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW2l0ZW1dXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0aGF0IGNhbGxzIHRoZSByZWN1cnNpdmUgZnVuY3Rpb24sIGdldEl0ZW1zKCkgYW5kIGdhdGhlcnMgYWxsIG9mIHRoZSBpdGVtcyBpbiB0aGUgTmVzdGVkTGlzdCAqL1xuICAgIHByaXZhdGUgX2dldEFsbExpc3RJdGVtcyhsaXN0OiBOZXN0ZWRMaXN0SW50ZXJmYWNlKTogTmVzdGVkSXRlbUludGVyZmFjZVtdIHtcbiAgICAgICAgY29uc3QgX2l0ZW1zOiBOZXN0ZWRJdGVtSW50ZXJmYWNlW10gPSBbXTtcbiAgICAgICAgaWYgKGxpc3QgJiYgbGlzdC5uZXN0ZWRJdGVtcyAmJiBsaXN0Lm5lc3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxpc3QubmVzdGVkSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIF9pdGVtcy5wdXNoKC4uLnRoaXMuX2dldEl0ZW1zKGl0ZW0pKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIF9pdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBoYW5kbGUgZnVuY3Rpb24uIFVzZXMga2V5Ym9hcmQgc3VwcG9ydCBzZXJ2aWNlIGZyb20gTWVudUNvbXBvbmVudCwgdG8gZGVhbCB3aXRoIEFycm93VXAsIEFycm93RG93biwgU3BhY2UsIEVudGVyLlxuICAgICAqIEZvciBBcnJvd1JpZ2h0LCBpZiBpdGVtIGlzIG5vdCBleHBhbmRlZCBhbmQgaGFzIGNoaWxkcmVuIChsaXN0IG9yIHBvcHVwKSwgdGhlIG9wZW4gZnVuY3Rpb24gaXMgdHJpZ2dlcmVkLlxuICAgICAqIE90aGVyd2lzZSBpdCBmb2xsb3dzIEFycm93RG93biBmdW5jdGlvbmFsaXR5LlxuICAgICAqIEZvciBBcnJvd0xlZnQsIGlmIGl0ZW0gaXMgZXhwYW5kZWQgYW5kIGhhcyBjaGlsZHJlbiAobGlzdCBvciBwb3B1cCksIHRoZSBjbG9zZSBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQuXG4gICAgICogT3RoZXJ3aXNlIGl0IGZvbGxvd3MgQXJyb3dVcCBmdW5jdGlvbmFsaXR5XG4gICAgICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlS2V5RG93bihrZXlib2FyZEV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyLCBpdGVtczogTmVzdGVkSXRlbUludGVyZmFjZVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW06IE5lc3RlZEl0ZW1JbnRlcmZhY2UgPSBpdGVtc1tpbmRleF07XG5cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGtleWJvYXJkRXZlbnQsIFJJR0hUX0FSUk9XKSkge1xuICAgICAgICAgICAgaWYgKCFpdGVtLmV4cGFuZGVkICYmIGl0ZW0uaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBpdGVtLnRyaWdnZXJPcGVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrZXlib2FyZEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoa2V5Ym9hcmRFdmVudCwgTEVGVF9BUlJPVykpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmV4cGFuZGVkICYmIGl0ZW0uaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBpdGVtLnRyaWdnZXJDbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAga2V5Ym9hcmRFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGtleWJvYXJkRXZlbnQsIFtFTlRFUiwgU1BBQ0VdKSkge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBpdGVtc1tpbmRleF0uY2xpY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMua2V5Ym9hcmRTZXJ2aWNlLmtleURvd25IYW5kbGVyKGtleWJvYXJkRXZlbnQsIGluZGV4LCBpdGVtcyk7XG4gICAgfVxufVxuIl19
@@ -81,7 +81,7 @@ export class NestedListPopoverComponent {
81
81
  }
82
82
  }
83
83
  NestedListPopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: NestedListPopoverComponent, deps: [{ token: i1.NestedListKeyboardService }, { token: i2.NestedItemService, optional: true }, { token: i3.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
84
- NestedListPopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: NestedListPopoverComponent, selector: "fd-nested-list-popover", inputs: { title: "title" }, host: { properties: { "class.fd-nested-list__popover": "this.popoverClass" } }, queries: [{ propertyName: "linkDirective", first: true, predicate: NestedLinkDirective, descendants: true }, { propertyName: "contentDirective", first: true, predicate: NestedListContentDirective, descendants: true }], viewQueries: [{ propertyName: "popoverComponent", first: true, predicate: PopoverComponent, descendants: true }], ngImport: i0, template: "<fd-popover\n [placement]=\"placement$ | async\"\n [triggers]=\"['click']\"\n [noArrow]=\"false\"\n [isOpen]=\"open\"\n (isOpenChange)=\"handleOpenChange($event)\"\n>\n <fd-popover-control>\n <ng-content select=\"[fd-nested-list-link]\"></ng-content>\n <ng-content select=\"[fd-nested-list-content]\"></ng-content>\n </fd-popover-control>\n <fd-popover-body class=\"fd-nested-list--text-only\">\n <a fd-nested-list-link class=\"fd-nested-list__popover-header\">\n <span fd-nested-list-title>{{ title }}</span>\n </a>\n <ng-content select=\"[fd-nested-list]\"></ng-content>\n <ng-content select=\"fd-prepared-nested-list\"></ng-content>\n </fd-popover-body>\n</fd-popover>\n", styles: [".fd-side-nav--condensed .fd-popover-container-custom .fd-nested-list__title{display:inline-flex}.fd-side-nav--condensed .fd-nested-list__popover-header{box-shadow:0 0 .25rem #00000026,inset 0 -.0625rem #d9d9d9}.fd-side-nav--condensed .fd-popover-custom{display:block}[dir=rtl] .fd-side-nav--condensed .fd-popover-container-custom .fd-nested-list__link,.fd-side-nav--condensed[dir=rtl] .fd-popover-container-custom .fd-nested-list__link{padding-left:1rem}\n"], components: [{ type: i4.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { type: i4.PopoverControlComponent, selector: "fd-popover-control" }, { type: i4.PopoverBodyComponent, selector: "fd-popover-body" }], directives: [{ type: i5.NestedLinkDirective, selector: "[fdNestedLink], [fd-nested-list-link]", inputs: ["onClickCallback", "selected"], outputs: ["selectedChange"] }, { type: i6.NestedListTitleDirective, selector: "[fdNestedDirectivesTitle], [fd-nested-list-title]" }], pipes: { "async": i7.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
84
+ NestedListPopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: NestedListPopoverComponent, selector: "fd-nested-list-popover", inputs: { title: "title" }, host: { properties: { "class.fd-nested-list__popover": "this.popoverClass" } }, queries: [{ propertyName: "linkDirective", first: true, predicate: NestedLinkDirective, descendants: true }, { propertyName: "contentDirective", first: true, predicate: NestedListContentDirective, descendants: true }], viewQueries: [{ propertyName: "popoverComponent", first: true, predicate: PopoverComponent, descendants: true }], ngImport: i0, template: "<fd-popover\n [placement]=\"placement$ | async\"\n [triggers]=\"['click']\"\n [noArrow]=\"false\"\n [isOpen]=\"open\"\n (isOpenChange)=\"handleOpenChange($event)\"\n>\n <fd-popover-control>\n <ng-content select=\"[fd-nested-list-link]\"></ng-content>\n <ng-content select=\"[fd-nested-list-content]\"></ng-content>\n </fd-popover-control>\n <fd-popover-body class=\"fd-nested-list--text-only\">\n <a fd-nested-list-link class=\"fd-nested-list__popover-header\">\n <span fd-nested-list-title>{{ title }}</span>\n </a>\n <ng-content select=\"[fd-nested-list]\"></ng-content>\n <ng-content select=\"fd-prepared-nested-list\"></ng-content>\n </fd-popover-body>\n</fd-popover>\n", styles: [".fd-side-nav--condensed .fd-popover-container-custom .fd-nested-list__title{display:inline-flex}.fd-side-nav--condensed .fd-nested-list__popover-header{box-shadow:0 0 .25rem #00000026,inset 0 -.0625rem #d9d9d9}.fd-side-nav--condensed .fd-popover-custom{display:block}[dir=rtl] .fd-side-nav--condensed .fd-popover-container-custom .fd-nested-list__link,.fd-side-nav--condensed[dir=rtl] .fd-popover-container-custom .fd-nested-list__link{padding-left:1rem}\n"], components: [{ type: i4.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { type: i4.PopoverControlComponent, selector: "fd-popover-control" }, { type: i4.PopoverBodyComponent, selector: "fd-popover-body" }], directives: [{ type: i5.NestedLinkDirective, selector: "[fdNestedLink], [fd-nested-list-link]", inputs: ["onClickCallback", "selected", "ariaDescribedby"], outputs: ["selectedChange"] }, { type: i6.NestedListTitleDirective, selector: "[fdNestedDirectivesTitle], [fd-nested-list-title]" }], pipes: { "async": i7.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
85
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: NestedListPopoverComponent, decorators: [{
86
86
  type: Component,
87
87
  args: [{ selector: 'fd-nested-list-popover', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-popover\n [placement]=\"placement$ | async\"\n [triggers]=\"['click']\"\n [noArrow]=\"false\"\n [isOpen]=\"open\"\n (isOpenChange)=\"handleOpenChange($event)\"\n>\n <fd-popover-control>\n <ng-content select=\"[fd-nested-list-link]\"></ng-content>\n <ng-content select=\"[fd-nested-list-content]\"></ng-content>\n </fd-popover-control>\n <fd-popover-body class=\"fd-nested-list--text-only\">\n <a fd-nested-list-link class=\"fd-nested-list__popover-header\">\n <span fd-nested-list-title>{{ title }}</span>\n </a>\n <ng-content select=\"[fd-nested-list]\"></ng-content>\n <ng-content select=\"fd-prepared-nested-list\"></ng-content>\n </fd-popover-body>\n</fd-popover>\n", styles: [".fd-side-nav--condensed .fd-popover-container-custom .fd-nested-list__title{display:inline-flex}.fd-side-nav--condensed .fd-nested-list__popover-header{box-shadow:0 0 .25rem #00000026,inset 0 -.0625rem #d9d9d9}.fd-side-nav--condensed .fd-popover-custom{display:block}[dir=rtl] .fd-side-nav--condensed .fd-popover-container-custom .fd-nested-list__link,.fd-side-nav--condensed[dir=rtl] .fd-popover-container-custom .fd-nested-list__link{padding-left:1rem}\n"] }]
@@ -36,7 +36,7 @@ export class PreparedNestedListComponent {
36
36
  }
37
37
  }
38
38
  PreparedNestedListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PreparedNestedListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
- PreparedNestedListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: PreparedNestedListComponent, selector: "fd-prepared-nested-list", inputs: { first: "first", condensed: "condensed", list: "list" }, viewQueries: [{ propertyName: "_nestedListDirective", first: true, predicate: i0.forwardRef(function () { return NestedListDirective; }), descendants: true }], ngImport: i0, template: "<ul fd-nested-list [textOnly]=\"!!list?.textOnly\">\n <ng-container *ngFor=\"let item of list?.items\">\n <li *ngIf=\"item.headerTitle\" fd-nested-list-header>\n {{ item.headerTitle }}\n </li>\n <li\n *ngIf=\"!item.headerTitle\"\n fd-nested-list-item\n [expanded]=\"!!item.expanded\"\n (expandedChange)=\"_expandedChange($event, item)\"\n >\n <fd-nested-list-popover *ngIf=\"condensed && first && item.list\" [title]=\"item.link?.title || ''\">\n <div fd-nested-list-content [selected]=\"!!item.link?.selected\">\n <ng-container [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\n <button fd-nested-list-expand-icon></button>\n </div>\n <fd-prepared-nested-list [first]=\"false\" *ngIf=\"item.list\" [list]=\"item.list\"></fd-prepared-nested-list>\n </fd-nested-list-popover>\n\n <ng-container *ngIf=\"!item.list\">\n <ng-container [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"(!condensed || !first) && item.list\">\n <div fd-nested-list-content>\n <ng-container [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\n <button fd-nested-list-expand-icon></button>\n </div>\n <fd-prepared-nested-list [first]=\"false\" *ngIf=\"item.list\" [list]=\"item.list\"></fd-prepared-nested-list>\n </ng-container>\n\n <ng-template let-item=\"item\" #link>\n <a\n fd-nested-list-link\n *ngIf=\"item.link\"\n [onClickCallback]=\"item.link.callback\"\n [(selected)]=\"!item.list && item.link.selected\"\n [attr.href]=\"item.link.href ? item.link.href : null\"\n [routerLink]=\"item.link.routerLink ? item.link.routerLink : []\"\n >\n <span fd-nested-list-icon *ngIf=\"item.link.icon\" [glyph]=\"item.link.icon\"></span>\n <span fd-nested-list-title>{{ item.link.title }}</span>\n </a>\n </ng-template>\n </li>\n </ng-container>\n</ul>\n", styles: [""], components: [{ type: i1.NestedListPopoverComponent, selector: "fd-nested-list-popover", inputs: ["title"] }, { type: i2.NestedListExpandIconComponent, selector: "[fdNestedListExpandIcon], [fd-nested-list-expand-icon]" }, { type: PreparedNestedListComponent, selector: "fd-prepared-nested-list", inputs: ["first", "condensed", "list"] }], directives: [{ type: i3.NestedListDirective, selector: "[fdNestedList], [fd-nested-list]", inputs: ["textOnly", "compact"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NestedListHeaderDirective, selector: "[fdNestedDirectivesHeader], [fd-nested-list-header]" }, { type: i5.NestedItemDirective, selector: "[fdNestedItem], [fd-nested-list-item]", inputs: ["expanded"], outputs: ["expandedChange", "keyboardTriggered"] }, { type: i6.NestedListContentDirective, selector: "[fdNestedListContent], [fd-nested-list-content]", inputs: ["selected"], outputs: ["selectedChange", "keyboardTriggered", "clicked"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i8.NestedLinkDirective, selector: "[fdNestedLink], [fd-nested-list-link]", inputs: ["onClickCallback", "selected"], outputs: ["selectedChange"] }, { type: i2.NestedListIconDirective, selector: "[fdNestedDirectivesIcon], [fd-nested-list-icon]", inputs: ["class", "glyph", "role"] }, { type: i2.NestedListTitleDirective, selector: "[fdNestedDirectivesTitle], [fd-nested-list-title]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
39
+ PreparedNestedListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: PreparedNestedListComponent, selector: "fd-prepared-nested-list", inputs: { first: "first", condensed: "condensed", list: "list" }, viewQueries: [{ propertyName: "_nestedListDirective", first: true, predicate: i0.forwardRef(function () { return NestedListDirective; }), descendants: true }], ngImport: i0, template: "<ul fd-nested-list [textOnly]=\"!!list?.textOnly\">\n <ng-container *ngFor=\"let item of list?.items\">\n <li *ngIf=\"item.headerTitle\" fd-nested-list-header>\n {{ item.headerTitle }}\n </li>\n <li\n *ngIf=\"!item.headerTitle\"\n fd-nested-list-item\n [expanded]=\"!!item.expanded\"\n (expandedChange)=\"_expandedChange($event, item)\"\n >\n <fd-nested-list-popover *ngIf=\"condensed && first && item.list\" [title]=\"item.link?.title || ''\">\n <div fd-nested-list-content [selected]=\"!!item.link?.selected\">\n <ng-container [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\n <button fd-nested-list-expand-icon></button>\n </div>\n <fd-prepared-nested-list [first]=\"false\" *ngIf=\"item.list\" [list]=\"item.list\"></fd-prepared-nested-list>\n </fd-nested-list-popover>\n\n <ng-container *ngIf=\"!item.list\">\n <ng-container [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"(!condensed || !first) && item.list\">\n <div fd-nested-list-content>\n <ng-container [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\n <button fd-nested-list-expand-icon></button>\n </div>\n <fd-prepared-nested-list [first]=\"false\" *ngIf=\"item.list\" [list]=\"item.list\"></fd-prepared-nested-list>\n </ng-container>\n\n <ng-template let-item=\"item\" #link>\n <a\n fd-nested-list-link\n *ngIf=\"item.link\"\n [onClickCallback]=\"item.link.callback\"\n [(selected)]=\"!item.list && item.link.selected\"\n [attr.href]=\"item.link.href ? item.link.href : null\"\n [routerLink]=\"item.link.routerLink ? item.link.routerLink : []\"\n >\n <span fd-nested-list-icon *ngIf=\"item.link.icon\" [glyph]=\"item.link.icon\"></span>\n <span fd-nested-list-title>{{ item.link.title }}</span>\n </a>\n </ng-template>\n </li>\n </ng-container>\n</ul>\n", styles: [""], components: [{ type: i1.NestedListPopoverComponent, selector: "fd-nested-list-popover", inputs: ["title"] }, { type: i2.NestedListExpandIconComponent, selector: "[fdNestedListExpandIcon], [fd-nested-list-expand-icon]" }, { type: PreparedNestedListComponent, selector: "fd-prepared-nested-list", inputs: ["first", "condensed", "list"] }], directives: [{ type: i3.NestedListDirective, selector: "[fdNestedList], [fd-nested-list]", inputs: ["textOnly", "compact", "ariaRoledescriptionTree", "ariaRoledescriptionMenuBar", "ariaLabelSelected"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NestedListHeaderDirective, selector: "[fdNestedDirectivesHeader], [fd-nested-list-header]", inputs: ["id"] }, { type: i5.NestedItemDirective, selector: "[fdNestedItem], [fd-nested-list-item]", inputs: ["expanded"], outputs: ["expandedChange", "keyboardTriggered"] }, { type: i6.NestedListContentDirective, selector: "[fdNestedListContent], [fd-nested-list-content]", inputs: ["selected"], outputs: ["selectedChange", "keyboardTriggered", "clicked"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i8.NestedLinkDirective, selector: "[fdNestedLink], [fd-nested-list-link]", inputs: ["onClickCallback", "selected", "ariaDescribedby"], outputs: ["selectedChange"] }, { type: i2.NestedListIconDirective, selector: "[fdNestedDirectivesIcon], [fd-nested-list-icon]", inputs: ["class", "glyph", "role"] }, { type: i2.NestedListTitleDirective, selector: "[fdNestedDirectivesTitle], [fd-nested-list-title]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: PreparedNestedListComponent, decorators: [{
41
41
  type: Component,
42
42
  args: [{ selector: 'fd-prepared-nested-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ul fd-nested-list [textOnly]=\"!!list?.textOnly\">\n <ng-container *ngFor=\"let item of list?.items\">\n <li *ngIf=\"item.headerTitle\" fd-nested-list-header>\n {{ item.headerTitle }}\n </li>\n <li\n *ngIf=\"!item.headerTitle\"\n fd-nested-list-item\n [expanded]=\"!!item.expanded\"\n (expandedChange)=\"_expandedChange($event, item)\"\n >\n <fd-nested-list-popover *ngIf=\"condensed && first && item.list\" [title]=\"item.link?.title || ''\">\n <div fd-nested-list-content [selected]=\"!!item.link?.selected\">\n <ng-container [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\n <button fd-nested-list-expand-icon></button>\n </div>\n <fd-prepared-nested-list [first]=\"false\" *ngIf=\"item.list\" [list]=\"item.list\"></fd-prepared-nested-list>\n </fd-nested-list-popover>\n\n <ng-container *ngIf=\"!item.list\">\n <ng-container [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"(!condensed || !first) && item.list\">\n <div fd-nested-list-content>\n <ng-container [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\n <button fd-nested-list-expand-icon></button>\n </div>\n <fd-prepared-nested-list [first]=\"false\" *ngIf=\"item.list\" [list]=\"item.list\"></fd-prepared-nested-list>\n </ng-container>\n\n <ng-template let-item=\"item\" #link>\n <a\n fd-nested-list-link\n *ngIf=\"item.link\"\n [onClickCallback]=\"item.link.callback\"\n [(selected)]=\"!item.list && item.link.selected\"\n [attr.href]=\"item.link.href ? item.link.href : null\"\n [routerLink]=\"item.link.routerLink ? item.link.routerLink : []\"\n >\n <span fd-nested-list-icon *ngIf=\"item.link.icon\" [glyph]=\"item.link.icon\"></span>\n <span fd-nested-list-title>{{ item.link.title }}</span>\n </a>\n </ng-template>\n </li>\n </ng-container>\n</ul>\n", styles: [""] }]