@ifsworld/granite-components 15.0.0 → 15.0.2

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 (165) hide show
  1. package/README.md +1 -1
  2. package/date-picker/lib/date-picker-base.d.ts +3 -3
  3. package/date-picker/lib/date-picker.module.d.ts +2 -2
  4. package/esm2022/carousel/ifsworld-granite-components-carousel.mjs +5 -0
  5. package/esm2022/carousel/index.mjs +3 -0
  6. package/esm2022/carousel/lib/carousel.component.mjs +156 -0
  7. package/esm2022/carousel/lib/carousel.module.mjs +31 -0
  8. package/esm2022/date-picker/ifsworld-granite-components-date-picker.mjs +5 -0
  9. package/esm2022/date-picker/index.mjs +5 -0
  10. package/esm2022/date-picker/lib/date-picker-base.mjs +53 -0
  11. package/esm2022/date-picker/lib/date-picker-trigger-for.directive.mjs +228 -0
  12. package/esm2022/date-picker/lib/date-picker.component.mjs +30 -0
  13. package/esm2022/date-picker/lib/date-picker.module.mjs +58 -0
  14. package/esm2022/date-picker/lib/date-range-picker.component.mjs +46 -0
  15. package/esm2022/file-upload/ifsworld-granite-components-file-upload.mjs +5 -0
  16. package/esm2022/file-upload/index.mjs +3 -0
  17. package/esm2022/file-upload/lib/directives/file-drag-and-drop.directive.mjs +102 -0
  18. package/esm2022/file-upload/lib/file-upload.component.mjs +182 -0
  19. package/esm2022/file-upload/lib/file-upload.constants.mjs +45 -0
  20. package/esm2022/file-upload/lib/file-upload.module.mjs +32 -0
  21. package/esm2022/file-upload/lib/file-upload.utils.mjs +13 -0
  22. package/esm2022/ifsworld-granite-components.mjs +5 -0
  23. package/esm2022/index.mjs +90 -0
  24. package/esm2022/lib/arrange-grid/arrange-grid-item.component.mjs +44 -0
  25. package/esm2022/lib/arrange-grid/arrange-grid.component.mjs +125 -0
  26. package/esm2022/lib/arrange-grid/arrange-grid.module.mjs +19 -0
  27. package/esm2022/lib/avatar/avatar-default-status/avatar-default-status.component.mjs +36 -0
  28. package/esm2022/lib/avatar/avatar.component.mjs +68 -0
  29. package/esm2022/lib/avatar/avatar.component.public-types.mjs +7 -0
  30. package/esm2022/lib/avatar/avatar.module.mjs +37 -0
  31. package/esm2022/lib/avatar/custom-avatar-status.directive.mjs +18 -0
  32. package/esm2022/lib/avatar/empty-avatar/empty-avatar.component.mjs +37 -0
  33. package/esm2022/lib/badge/badge.component.mjs +39 -0
  34. package/esm2022/lib/badge/badge.module.mjs +18 -0
  35. package/esm2022/lib/badge/testing/badge.harness.mjs +25 -0
  36. package/esm2022/lib/button/button.component.mjs +87 -0
  37. package/esm2022/lib/button/button.module.mjs +16 -0
  38. package/esm2022/lib/card-list/card/card-avatar.component.mjs +11 -0
  39. package/esm2022/lib/card-list/card/card-content/card-actions.component.mjs +11 -0
  40. package/esm2022/lib/card-list/card/card-content/card-body.component.mjs +11 -0
  41. package/esm2022/lib/card-list/card/card-content/card-content.component.mjs +11 -0
  42. package/esm2022/lib/card-list/card/card-content/card-footer.component.mjs +11 -0
  43. package/esm2022/lib/card-list/card/card-content/card-header-subtitle.component.mjs +11 -0
  44. package/esm2022/lib/card-list/card/card-content/card-header-title.component.mjs +11 -0
  45. package/esm2022/lib/card-list/card/card-content/card-header.component.mjs +11 -0
  46. package/esm2022/lib/card-list/card/card.component.mjs +11 -0
  47. package/esm2022/lib/card-list/card-list.component.mjs +24 -0
  48. package/esm2022/lib/card-list/card-list.module.mjs +68 -0
  49. package/esm2022/lib/checkbox/checkbox-group.component.mjs +17 -0
  50. package/esm2022/lib/checkbox/checkbox.component.mjs +99 -0
  51. package/esm2022/lib/checkbox/checkbox.module.mjs +17 -0
  52. package/esm2022/lib/chips/chip-input.mjs +195 -0
  53. package/esm2022/lib/chips/chip-list.component.mjs +567 -0
  54. package/esm2022/lib/chips/chip.component.mjs +288 -0
  55. package/esm2022/lib/chips/chips.module.mjs +31 -0
  56. package/esm2022/lib/collapsible-group/collapsible-group-body.directive.mjs +17 -0
  57. package/esm2022/lib/collapsible-group/collapsible-group-header.directive.mjs +17 -0
  58. package/esm2022/lib/collapsible-group/collapsible-group.component.mjs +46 -0
  59. package/esm2022/lib/collapsible-group/collapsible-group.module.mjs +33 -0
  60. package/esm2022/lib/contacts/contact-item/contact-item.component.mjs +27 -0
  61. package/esm2022/lib/contacts/contact-item-default-status/contact-item-default-status.component.mjs +20 -0
  62. package/esm2022/lib/contacts/contact-item-title/contact-item-title.component.mjs +15 -0
  63. package/esm2022/lib/contacts/contacts-profile/contacts-profile.component.mjs +18 -0
  64. package/esm2022/lib/contacts/contacts-trigger/contacts-trigger-data.mjs +24 -0
  65. package/esm2022/lib/contacts/contacts-trigger/contacts-trigger-for.directive.mjs +231 -0
  66. package/esm2022/lib/contacts/contacts-types/contacts.component.private-types.mjs +2 -0
  67. package/esm2022/lib/contacts/contacts-types/contacts.component.public-types.mjs +9 -0
  68. package/esm2022/lib/contacts/contacts.component.mjs +92 -0
  69. package/esm2022/lib/contacts/contacts.module.mjs +53 -0
  70. package/esm2022/lib/contacts/custom-profile.directive.mjs +16 -0
  71. package/esm2022/lib/contacts/custom-status.directive.mjs +18 -0
  72. package/esm2022/lib/core/animation.mjs +34 -0
  73. package/esm2022/lib/core/client-environment.mjs +20 -0
  74. package/esm2022/lib/core/common-behaviors/disabled.mjs +27 -0
  75. package/esm2022/lib/core/core.module.mjs +44 -0
  76. package/esm2022/lib/core/devices/client-input-desktop.directive.mjs +29 -0
  77. package/esm2022/lib/core/devices/client-input-touch.directive.mjs +29 -0
  78. package/esm2022/lib/core/devices/client-output-desktop.directive.mjs +29 -0
  79. package/esm2022/lib/core/devices/client-output-touch.directive.mjs +29 -0
  80. package/esm2022/lib/core/hide-on-overflow.directive.mjs +83 -0
  81. package/esm2022/lib/core/overlay-base.mjs +18 -0
  82. package/esm2022/lib/core/overlay-position-config.mjs +2 -0
  83. package/esm2022/lib/core/overlay-trigger-for-base.directive.mjs +121 -0
  84. package/esm2022/lib/core/overlay.service.mjs +90 -0
  85. package/esm2022/lib/core/pipes/pure-pipes.module.mjs +16 -0
  86. package/esm2022/lib/core/pipes/title.pipe.mjs +21 -0
  87. package/esm2022/lib/core/radio-checkbox-base.mjs +19 -0
  88. package/esm2022/lib/core/services/names-utils-service.mjs +51 -0
  89. package/esm2022/lib/core/theme.library.mjs +59 -0
  90. package/esm2022/lib/core/types.mjs +2 -0
  91. package/esm2022/lib/grid/grid.component.mjs +128 -0
  92. package/esm2022/lib/grid/grid.module.mjs +18 -0
  93. package/esm2022/lib/icon/icon.component.mjs +43 -0
  94. package/esm2022/lib/icon/icon.module.mjs +16 -0
  95. package/esm2022/lib/input-field/input-field.component.mjs +167 -0
  96. package/esm2022/lib/input-field/input-field.module.mjs +20 -0
  97. package/esm2022/lib/label/label.component.mjs +31 -0
  98. package/esm2022/lib/label/label.module.mjs +18 -0
  99. package/esm2022/lib/menu/divider.directive.mjs +23 -0
  100. package/esm2022/lib/menu/menu-base.mjs +364 -0
  101. package/esm2022/lib/menu/menu-desktop-animations.mjs +23 -0
  102. package/esm2022/lib/menu/menu-errors.mjs +37 -0
  103. package/esm2022/lib/menu/menu-item.component.mjs +89 -0
  104. package/esm2022/lib/menu/menu-panel.mjs +7 -0
  105. package/esm2022/lib/menu/menu-positions.mjs +9 -0
  106. package/esm2022/lib/menu/menu-touch-animations.mjs +137 -0
  107. package/esm2022/lib/menu/menu-touch-close.component.mjs +13 -0
  108. package/esm2022/lib/menu/menu-touch-title.component.mjs +59 -0
  109. package/esm2022/lib/menu/menu-trigger-for.directive.mjs +738 -0
  110. package/esm2022/lib/menu/menu.component.mjs +30 -0
  111. package/esm2022/lib/menu/menu.module.mjs +55 -0
  112. package/esm2022/lib/menu/testing/menu.harness.mjs +109 -0
  113. package/esm2022/lib/menu/title.directive.mjs +17 -0
  114. package/esm2022/lib/progress-bar/progress-bar-legend/progress-bar-legend.component.mjs +19 -0
  115. package/esm2022/lib/progress-bar/progress-bar-legend-base.mjs +17 -0
  116. package/esm2022/lib/progress-bar/progress-bar-legend-trigger-for.directive.mjs +54 -0
  117. package/esm2022/lib/progress-bar/progress-bar.component.mjs +92 -0
  118. package/esm2022/lib/progress-bar/progress-bar.model.mjs +2 -0
  119. package/esm2022/lib/progress-bar/progress-bar.module.mjs +44 -0
  120. package/esm2022/lib/radio-button/radio-button.component.mjs +119 -0
  121. package/esm2022/lib/radio-button/radio-button.module.mjs +17 -0
  122. package/esm2022/lib/radio-button/radio-group.component.mjs +17 -0
  123. package/esm2022/lib/toggle-switch/toggle-switch.component.mjs +100 -0
  124. package/esm2022/lib/toggle-switch/toggle-switch.module.mjs +16 -0
  125. package/esm2022/table/ifsworld-granite-components-table.mjs +5 -0
  126. package/esm2022/table/index.mjs +5 -0
  127. package/esm2022/table/lib/cell/cell-align/cell-align-classes.directive.mjs +26 -0
  128. package/esm2022/table/lib/cell/cell.mjs +15 -0
  129. package/esm2022/table/lib/cell/table-data-cell.component.mjs +25 -0
  130. package/esm2022/table/lib/cell/table-header-cell.component.mjs +14 -0
  131. package/esm2022/table/lib/column/table-column.directive.mjs +33 -0
  132. package/esm2022/table/lib/column-size/column-size.directive.mjs +34 -0
  133. package/esm2022/table/lib/table-constants.library.mjs +7 -0
  134. package/esm2022/table/lib/table.component.mjs +62 -0
  135. package/esm2022/table/lib/table.model.mjs +2 -0
  136. package/esm2022/table/lib/table.module.mjs +38 -0
  137. package/esm2022/tooltip/ifsworld-granite-components-tooltip.mjs +5 -0
  138. package/esm2022/tooltip/index.mjs +4 -0
  139. package/esm2022/tooltip/lib/Services/granite-tooltip.service.mjs +28 -0
  140. package/esm2022/tooltip/lib/tooltip-constants.library.mjs +4 -0
  141. package/esm2022/tooltip/lib/tooltip-trigger-for.directive.mjs +147 -0
  142. package/esm2022/tooltip/lib/tooltip.component.mjs +14 -0
  143. package/esm2022/tooltip/lib/tooltip.module.mjs +19 -0
  144. package/fesm2022/ifsworld-granite-components-carousel.mjs +9 -9
  145. package/fesm2022/ifsworld-granite-components-carousel.mjs.map +1 -1
  146. package/fesm2022/ifsworld-granite-components-date-picker.mjs +30 -34
  147. package/fesm2022/ifsworld-granite-components-date-picker.mjs.map +1 -1
  148. package/fesm2022/ifsworld-granite-components-file-upload.mjs +12 -13
  149. package/fesm2022/ifsworld-granite-components-file-upload.mjs.map +1 -1
  150. package/fesm2022/ifsworld-granite-components-table.mjs +29 -32
  151. package/fesm2022/ifsworld-granite-components-table.mjs.map +1 -1
  152. package/fesm2022/ifsworld-granite-components-tooltip.mjs +15 -16
  153. package/fesm2022/ifsworld-granite-components-tooltip.mjs.map +1 -1
  154. package/fesm2022/ifsworld-granite-components.mjs +323 -342
  155. package/fesm2022/ifsworld-granite-components.mjs.map +1 -1
  156. package/lib/contacts/contacts-trigger/contacts-trigger-data.d.ts +1 -1
  157. package/lib/core/overlay-base.d.ts +1 -1
  158. package/lib/core/radio-checkbox-base.d.ts +1 -1
  159. package/lib/menu/menu-base.d.ts +1 -1
  160. package/lib/progress-bar/progress-bar-legend-base.d.ts +1 -1
  161. package/package.json +21 -9
  162. package/src/lib/core/style/_mixins.scss +9 -10
  163. package/src/lib/core/style/_range-functions.scss +4 -6
  164. package/src/lib/core/style/_z-index.scss +4 -6
  165. package/table/lib/cell/cell.d.ts +1 -1
@@ -0,0 +1,288 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { BACKSPACE, DELETE, ENTER, SPACE } from '@angular/cdk/keycodes';
3
+ import { Attribute, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, NgZone, Optional, Output, } from '@angular/core';
4
+ import { take } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "../icon/icon.component";
8
+ /** Event object emitted by GraniteChip when selected or deselected. */
9
+ export class GraniteChipSelectionChangeEvent {
10
+ constructor() {
11
+ /** Whether the selection change was a result of a user interaction. */
12
+ this.isUserInput = false;
13
+ }
14
+ }
15
+ export class GraniteChipComponent {
16
+ /** Whether the chip is selected. */
17
+ get selected() {
18
+ return this._selected;
19
+ }
20
+ set selected(value) {
21
+ const coercedValue = coerceBooleanProperty(value);
22
+ if (coercedValue !== this._selected) {
23
+ this._selected = coercedValue;
24
+ }
25
+ }
26
+ /** The value of the chip. Defaults to the text content inside `<granite-chip>` tags. */
27
+ get value() {
28
+ return this._value != null
29
+ ? this._value
30
+ : this._elementRef.nativeElement.textContent;
31
+ }
32
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
33
+ set value(val) {
34
+ this._value = val;
35
+ }
36
+ /**
37
+ * Whether or not the chip is selectable. When a chip is not selectable,
38
+ * changes to its selected state are always ignored. By default a chip is
39
+ * selectable, and it becomes non-selectable if its parent chip list is
40
+ * not selectable.
41
+ */
42
+ get selectable() {
43
+ return this._selectable && this._chipListSelectable;
44
+ }
45
+ set selectable(value) {
46
+ this._selectable = coerceBooleanProperty(value);
47
+ }
48
+ /** Whether the chip is disabled. Also the individual chips are disabled when chip list is disabled */
49
+ get disabled() {
50
+ return this._chipListDisabled || this._disabled;
51
+ }
52
+ set disabled(value) {
53
+ this._disabled = coerceBooleanProperty(value);
54
+ }
55
+ /**
56
+ * Whether the chip can be removed from the list
57
+ */
58
+ get removable() {
59
+ return this._removable;
60
+ }
61
+ set removable(value) {
62
+ this._removable = coerceBooleanProperty(value);
63
+ }
64
+ /** Whether the chip is in an invalid state. */
65
+ get invalid() {
66
+ return this._invalid;
67
+ }
68
+ set invalid(value) {
69
+ this._invalid = coerceBooleanProperty(value);
70
+ }
71
+ constructor(_elementRef, _ngZone, _changeDetectorRef, tabIndex) {
72
+ this._elementRef = _elementRef;
73
+ this._ngZone = _ngZone;
74
+ this._changeDetectorRef = _changeDetectorRef;
75
+ /** ARIA role that should be applied to the chip. */
76
+ this.role = 'option';
77
+ this.ariaLabel = null;
78
+ this.ariaLabelledby = null;
79
+ /** Emitted when the chip is selected or deselected. */
80
+ this.selectionChange = new EventEmitter();
81
+ /** Emitted when a chip is to be removed. */
82
+ this.removed = new EventEmitter();
83
+ /** Emitted when the chip is destroyed. */
84
+ this.destroyed = new EventEmitter();
85
+ /** Emits when the chip is focused. */
86
+ this.chipFocus = new EventEmitter();
87
+ /** Emits when the chip is blurred. */
88
+ this.chipBlur = new EventEmitter();
89
+ /** Whether the chip has focus. */
90
+ this._hasFocus = false;
91
+ /** Whether the chip list is selectable */
92
+ this._chipListSelectable = true;
93
+ /** Whether the chip list is in multi-selection mode. */
94
+ this._chipListMultiple = false;
95
+ /** Whether the chip list as a whole is disabled. */
96
+ this._chipListDisabled = false;
97
+ this.tabIndex = -1;
98
+ this.inputChip = false;
99
+ this._selected = false;
100
+ this._selectable = true;
101
+ this._disabled = false;
102
+ this._removable = false;
103
+ this._invalid = false;
104
+ const inputChipAttrName = 'granite-input-chip';
105
+ const element = this._elementRef.nativeElement;
106
+ if (element.hasAttribute(inputChipAttrName) ||
107
+ element.tagName.toLowerCase() === inputChipAttrName) {
108
+ this.inputChip = true;
109
+ }
110
+ this.tabIndex = tabIndex != null ? parseInt(tabIndex) || -1 : -1;
111
+ }
112
+ ngOnDestroy() {
113
+ this.destroyed.emit({ chip: this });
114
+ }
115
+ /** Selects the chip. */
116
+ select(isUserInput = false) {
117
+ if (!this._selected) {
118
+ this._selected = true;
119
+ this._dispatchSelectionChange(isUserInput);
120
+ this._changeDetectorRef.markForCheck();
121
+ }
122
+ }
123
+ /** Deselects the chip. */
124
+ deselect() {
125
+ if (this._selected) {
126
+ this._selected = false;
127
+ this._dispatchSelectionChange();
128
+ this._changeDetectorRef.markForCheck();
129
+ }
130
+ }
131
+ /** Toggles the current selected state of this chip. */
132
+ toggleSelected(isUserInput = false) {
133
+ this._selected = !this.selected;
134
+ this._dispatchSelectionChange(isUserInput);
135
+ this._changeDetectorRef.markForCheck();
136
+ return this.selected;
137
+ }
138
+ /** Allows for programmatic focusing of the chip unless it's disabled. */
139
+ focus() {
140
+ if (!this.disabled) {
141
+ if (!this._hasFocus) {
142
+ this._elementRef.nativeElement.focus();
143
+ this.chipFocus.next({ chip: this });
144
+ }
145
+ this._hasFocus = true;
146
+ }
147
+ }
148
+ /**
149
+ * Allows for programmatic removal of the chip.
150
+ * Called by the GraniteChipList when the DELETE or BACKSPACE keys are pressed.
151
+ * Informs any listeners of the removal request. Does not remove the chip from the DOM.
152
+ */
153
+ remove() {
154
+ if (this.removable || this.inputChip) {
155
+ this.removed.emit({ chip: this });
156
+ }
157
+ }
158
+ /** Handles click events on the chip. */
159
+ _handleClick(event) {
160
+ if (this.disabled) {
161
+ event.preventDefault();
162
+ return;
163
+ }
164
+ if (this.selectable) {
165
+ this.toggleSelected(true);
166
+ }
167
+ }
168
+ /** Handle custom key presses. */
169
+ _handleKeydown(event) {
170
+ if (this.disabled) {
171
+ return;
172
+ }
173
+ switch (event.keyCode) {
174
+ case DELETE:
175
+ case BACKSPACE:
176
+ // If the chip is removable, remove the focused chip
177
+ this.remove();
178
+ // Always prevent so page navigation does not occur
179
+ event.preventDefault();
180
+ break;
181
+ case SPACE:
182
+ case ENTER:
183
+ // If we are selectable, toggle the focused chip
184
+ if (this.selectable) {
185
+ this.toggleSelected(true);
186
+ }
187
+ // Always prevent space from scrolling the page since the list has focus
188
+ event.preventDefault();
189
+ break;
190
+ }
191
+ }
192
+ _handleRemoveClick(event) {
193
+ this.remove();
194
+ // We need to stop event propagation because otherwise the event will bubble up to the
195
+ // form field and cause the `onContainerClick` method to be invoked. This method would then
196
+ // reset the focused chip that has been focused after chip removal.
197
+ event.stopPropagation();
198
+ event.preventDefault();
199
+ }
200
+ _blur() {
201
+ // When animations are enabled, Angular may end up removing the chip from the DOM a little
202
+ // earlier than usual, causing it to be blurred and throwing off the logic in the chip list
203
+ // that moves focus not the next item. To work around the issue, we defer marking the chip
204
+ // as not focused until the next time the zone stabilizes.
205
+ this._ngZone.onStable.pipe(take(1)).subscribe(() => {
206
+ this._ngZone.run(() => {
207
+ this._hasFocus = false;
208
+ this.chipBlur.next({ chip: this });
209
+ });
210
+ });
211
+ }
212
+ _dispatchSelectionChange(isUserInput = false) {
213
+ this.selectionChange.emit({
214
+ source: this,
215
+ isUserInput,
216
+ selected: this._selected,
217
+ });
218
+ }
219
+ /** The ARIA selected applied to the chip. */
220
+ get ariaSelected() {
221
+ // Remove the `aria-selected` when the chip is deselected in single-selection mode, because
222
+ // it adds noise to NVDA users where "not selected" will be read out for each chip.
223
+ return this.selectable && (this._chipListMultiple || this.selected)
224
+ ? this.selected.toString()
225
+ : null;
226
+ }
227
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteChipComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef, optional: true }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component }); }
228
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GraniteChipComponent, selector: "granite-chip, granite-input-chip", inputs: { tabIndex: "tabIndex", role: "role", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], selected: "selected", value: "value", selectable: "selectable", disabled: "disabled", removable: "removable", invalid: "invalid" }, outputs: { selectionChange: "selectionChange", removed: "removed", destroyed: "destroyed", chipFocus: "chipFocus", chipBlur: "chipBlur" }, host: { listeners: { "click": "_handleClick($event)", "keydown": "_handleKeydown($event)", "blur": "_blur()", "focus": "focus()" }, properties: { "class.granite-chip-input": "inputChip", "class.granite-chip-selectable": "selectable", "class.granite-chip-selected": "selected", "class.granite-chip-disabled": "disabled", "class.granite-chip-invalid": "invalid", "class.granite-chip-removable": "!disabled && (removable || inputChip)", "attr.tabindex": "disabled ? null : tabIndex", "attr.role": "role", "attr.disabled": "disabled || null", "attr.aria-label": "ariaLabel", "attr.aria-labelledby": "ariaLabelledby", "attr.aria-disabled": "disabled.toString()", "attr.aria-selected": "ariaSelected" }, classAttribute: "granite-chip" }, exportAs: ["graniteChip"], ngImport: i0, template: "<ng-content></ng-content>\n<button\n *ngIf=\"!disabled && (removable || inputChip)\"\n class=\"granite-chip-remove\"\n (click)=\"_handleRemoveClick($event)\"\n>\n <granite-icon\n fontIcon=\"icon-close\"\n class=\"granite-chip-remove-icon\"\n [class.granite-chip-remove-icon-invalid]=\"invalid\"\n ></granite-icon>\n</button>\n", styles: [":host.granite-chip{display:-webkit-inline-box;display:-webkit-inline-flex;display:-moz-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;border:none;-webkit-appearance:none;-moz-appearance:none;justify-content:center;align-items:center;padding-inline:var(--granite-spacing-16);margin-inline:var(--granite-spacing-2);padding-top:var(--granite-spacing-8);padding-bottom:var(--granite-spacing-8);height:inherit;color:var(--granite-color-text-weak);background-color:var(--granite-color-background);border-radius:var(--granite-radius-l);border-style:solid;border-width:var(--granite-border-width-regular);border-color:var(--granite-color-border-hard)}:host.granite-chip:hover{background-color:var(--granite-color-background-hover);cursor:pointer}:host.granite-chip:focus{outline:var(--granite-border-width-focus) solid var(--granite-color-focus);outline-offset:calc(var(--granite-border-width-focus) * -1)}:host.granite-chip.granite-chip-disabled{background-color:var(--granite-color-background);color:var(--granite-color-text-hint)}:host.granite-chip.granite-chip-disabled:hover{background-color:var(--granite-color-background);cursor:auto}:host.granite-chip:not(.granite-chip-selectable):hover{background-color:var(--granite-color-background);cursor:auto}:host.granite-chip.granite-chip-removable{padding-inline-end:var(--granite-spacing-8)}:host.granite-chip.granite-chip-invalid{background-color:var(--granite-color-background-failure);border-color:var(--granite-color-background-failure)}:host.granite-chip.granite-chip-invalid:hover{border-color:var(--granite-color-signal-failure)}:host.granite-chip.granite-chip-selected:not(.granite-chip-disabled):not(.granite-chip-input){border-color:var(--granite-color-background-active);background-color:var(--granite-color-background-info)}:host.granite-chip.granite-chip-selected:not(.granite-chip-disabled):not(.granite-chip-input):hover{background-color:var(--granite-color-background-hover)}:host.granite-chip.granite-chip-input{padding-top:var(--granite-spacing-4);padding-bottom:var(--granite-spacing-4);padding-inline:var(--granite-spacing-8)}:host.granite-chip.granite-chip-input:hover{background-color:var(--granite-color-background-hover)}:host.granite-chip.granite-chip-input:hover.granite-chip-invalid{background-color:var(--granite-color-background-failure)}:host.granite-chip.granite-chip-input:hover.granite-chip-invalid:hover{border-color:var(--granite-color-signal-failure)}.granite-chip-remove{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;justify-content:center;align-items:center;background-color:transparent;outline:none;border:none;cursor:pointer;margin-inline-start:var(--granite-spacing-4);margin-inline-end:0;padding:0}[dir=rtl] .granite-chip-remove{margin-inline-end:var(--granite-spacing-4);margin-inline-start:0}.granite-chip-remove .granite-chip-remove-icon{position:relative;overflow:hidden;background-repeat:no-repeat;color:var(--granite-color-text-hint);line-height:inherit}.granite-chip-remove .granite-chip-remove-icon:hover{color:var(--granite-color-text)}.granite-chip-remove .granite-chip-remove-icon.granite-chip-remove-icon-invalid{color:var(--granite-color-signal-failure)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GraniteIconComponent, selector: "granite-icon", inputs: ["fontIcon"] }] }); }
229
+ }
230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteChipComponent, decorators: [{
231
+ type: Component,
232
+ args: [{ selector: `granite-chip, granite-input-chip`, inputs: ['tabIndex'], exportAs: 'graniteChip', host: {
233
+ class: 'granite-chip',
234
+ '[class.granite-chip-input]': 'inputChip',
235
+ '[class.granite-chip-selectable]': 'selectable',
236
+ '[class.granite-chip-selected]': 'selected',
237
+ '[class.granite-chip-disabled]': 'disabled',
238
+ '[class.granite-chip-invalid]': 'invalid',
239
+ '[class.granite-chip-removable]': '!disabled && (removable || inputChip)',
240
+ '[attr.tabindex]': 'disabled ? null : tabIndex',
241
+ '[attr.role]': 'role',
242
+ '[attr.disabled]': 'disabled || null',
243
+ '[attr.aria-label]': 'ariaLabel',
244
+ '[attr.aria-labelledby]': 'ariaLabelledby',
245
+ '[attr.aria-disabled]': 'disabled.toString()',
246
+ '[attr.aria-selected]': 'ariaSelected',
247
+ '(click)': '_handleClick($event)',
248
+ '(keydown)': '_handleKeydown($event)',
249
+ '(blur)': '_blur()',
250
+ '(focus)': 'focus()',
251
+ }, template: "<ng-content></ng-content>\n<button\n *ngIf=\"!disabled && (removable || inputChip)\"\n class=\"granite-chip-remove\"\n (click)=\"_handleRemoveClick($event)\"\n>\n <granite-icon\n fontIcon=\"icon-close\"\n class=\"granite-chip-remove-icon\"\n [class.granite-chip-remove-icon-invalid]=\"invalid\"\n ></granite-icon>\n</button>\n", styles: [":host.granite-chip{display:-webkit-inline-box;display:-webkit-inline-flex;display:-moz-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;border:none;-webkit-appearance:none;-moz-appearance:none;justify-content:center;align-items:center;padding-inline:var(--granite-spacing-16);margin-inline:var(--granite-spacing-2);padding-top:var(--granite-spacing-8);padding-bottom:var(--granite-spacing-8);height:inherit;color:var(--granite-color-text-weak);background-color:var(--granite-color-background);border-radius:var(--granite-radius-l);border-style:solid;border-width:var(--granite-border-width-regular);border-color:var(--granite-color-border-hard)}:host.granite-chip:hover{background-color:var(--granite-color-background-hover);cursor:pointer}:host.granite-chip:focus{outline:var(--granite-border-width-focus) solid var(--granite-color-focus);outline-offset:calc(var(--granite-border-width-focus) * -1)}:host.granite-chip.granite-chip-disabled{background-color:var(--granite-color-background);color:var(--granite-color-text-hint)}:host.granite-chip.granite-chip-disabled:hover{background-color:var(--granite-color-background);cursor:auto}:host.granite-chip:not(.granite-chip-selectable):hover{background-color:var(--granite-color-background);cursor:auto}:host.granite-chip.granite-chip-removable{padding-inline-end:var(--granite-spacing-8)}:host.granite-chip.granite-chip-invalid{background-color:var(--granite-color-background-failure);border-color:var(--granite-color-background-failure)}:host.granite-chip.granite-chip-invalid:hover{border-color:var(--granite-color-signal-failure)}:host.granite-chip.granite-chip-selected:not(.granite-chip-disabled):not(.granite-chip-input){border-color:var(--granite-color-background-active);background-color:var(--granite-color-background-info)}:host.granite-chip.granite-chip-selected:not(.granite-chip-disabled):not(.granite-chip-input):hover{background-color:var(--granite-color-background-hover)}:host.granite-chip.granite-chip-input{padding-top:var(--granite-spacing-4);padding-bottom:var(--granite-spacing-4);padding-inline:var(--granite-spacing-8)}:host.granite-chip.granite-chip-input:hover{background-color:var(--granite-color-background-hover)}:host.granite-chip.granite-chip-input:hover.granite-chip-invalid{background-color:var(--granite-color-background-failure)}:host.granite-chip.granite-chip-input:hover.granite-chip-invalid:hover{border-color:var(--granite-color-signal-failure)}.granite-chip-remove{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;justify-content:center;align-items:center;background-color:transparent;outline:none;border:none;cursor:pointer;margin-inline-start:var(--granite-spacing-4);margin-inline-end:0;padding:0}[dir=rtl] .granite-chip-remove{margin-inline-end:var(--granite-spacing-4);margin-inline-start:0}.granite-chip-remove .granite-chip-remove-icon{position:relative;overflow:hidden;background-repeat:no-repeat;color:var(--granite-color-text-hint);line-height:inherit}.granite-chip-remove .granite-chip-remove-icon:hover{color:var(--granite-color-text)}.granite-chip-remove .granite-chip-remove-icon.granite-chip-remove-icon-invalid{color:var(--granite-color-signal-failure)}\n"] }]
252
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef, decorators: [{
253
+ type: Optional
254
+ }] }, { type: undefined, decorators: [{
255
+ type: Attribute,
256
+ args: ['tabindex']
257
+ }] }], propDecorators: { role: [{
258
+ type: Input
259
+ }], ariaLabel: [{
260
+ type: Input,
261
+ args: ['aria-label']
262
+ }], ariaLabelledby: [{
263
+ type: Input,
264
+ args: ['aria-labelledby']
265
+ }], selectionChange: [{
266
+ type: Output
267
+ }], removed: [{
268
+ type: Output
269
+ }], destroyed: [{
270
+ type: Output
271
+ }], chipFocus: [{
272
+ type: Output
273
+ }], chipBlur: [{
274
+ type: Output
275
+ }], selected: [{
276
+ type: Input
277
+ }], value: [{
278
+ type: Input
279
+ }], selectable: [{
280
+ type: Input
281
+ }], disabled: [{
282
+ type: Input
283
+ }], removable: [{
284
+ type: Input
285
+ }], invalid: [{
286
+ type: Input
287
+ }] } });
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2NoaXBzL2NoaXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9jaGlwcy9jaGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBUXRDLHVFQUF1RTtBQUN2RSxNQUFNLE9BQU8sK0JBQStCO0lBQTVDO1FBS0UsdUVBQXVFO1FBQ3ZFLGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBQy9CLENBQUM7Q0FBQTtBQTZCRCxNQUFNLE9BQU8sb0JBQW9CO0lBb0QvQixvQ0FBb0M7SUFDcEMsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLE1BQU0sWUFBWSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxELElBQUksWUFBWSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVELHdGQUF3RjtJQUN4RixJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSTtZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDYixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQ2pELENBQUM7SUFDRCw2RUFBNkU7SUFDN0UsSUFBSSxLQUFLLENBQUMsR0FBUTtRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBR0Q7Ozs7O09BS0c7SUFDSCxJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3RELENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxLQUFjO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELHNHQUFzRztJQUN0RyxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ2xELENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxLQUFjO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELCtDQUErQztJQUMvQyxJQUNJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFDUyxXQUF1QixFQUN0QixPQUFlLEVBQ0gsa0JBQXFDLEVBQ2xDLFFBQWlCO1FBSGpDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDSCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBM0gzRCxvREFBb0Q7UUFDM0MsU0FBSSxHQUFXLFFBQVEsQ0FBQztRQUdqQyxjQUFTLEdBQWtCLElBQUksQ0FBQztRQUdoQyxtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFFckMsdURBQXVEO1FBRTlDLG9CQUFlLEdBQ3RCLElBQUksWUFBWSxFQUFtQyxDQUFDO1FBRXRELDRDQUE0QztRQUN6QixZQUFPLEdBQ3hCLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRXZDLDBDQUEwQztRQUN2QixjQUFTLEdBQzFCLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRXZDLHNDQUFzQztRQUNuQixjQUFTLEdBQzFCLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRXZDLHNDQUFzQztRQUNuQixhQUFRLEdBQ3pCLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRXZDLGtDQUFrQztRQUNsQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLDBDQUEwQztRQUMxQyx3QkFBbUIsR0FBWSxJQUFJLENBQUM7UUFFcEMsd0RBQXdEO1FBQ3hELHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUVuQyxvREFBb0Q7UUFDcEQsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBRW5DLGFBQVEsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUN0QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRWpCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFDNUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUE2RWxDLE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUE0QixDQUFDO1FBQzlELElBQ0UsT0FBTyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztZQUN2QyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLGlCQUFpQixFQUNuRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixNQUFNLENBQUMsY0FBdUIsS0FBSztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELHVEQUF1RDtJQUN2RCxjQUFjLENBQUMsY0FBdUIsS0FBSztRQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQseUVBQXlFO0lBQ3pFLEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLFlBQVksQ0FBQyxLQUFZO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsY0FBYyxDQUFDLEtBQW9CO1FBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBRUQsUUFBUSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLFNBQVM7Z0JBQ1osb0RBQW9EO2dCQUNwRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2QsbURBQW1EO2dCQUNuRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU07WUFDUixLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSztnQkFDUixnREFBZ0Q7Z0JBQ2hELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixDQUFDO2dCQUVELHdFQUF3RTtnQkFDeEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFZO1FBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLHNGQUFzRjtRQUN0RiwyRkFBMkY7UUFDM0YsbUVBQW1FO1FBQ25FLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUs7UUFDSCwwRkFBMEY7UUFDMUYsMkZBQTJGO1FBQzNGLDBGQUEwRjtRQUMxRiwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHdCQUF3QixDQUFDLFdBQVcsR0FBRyxLQUFLO1FBQ2xELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQ3hCLE1BQU0sRUFBRSxJQUFJO1lBQ1osV0FBVztZQUNYLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLElBQUksWUFBWTtRQUNkLDJGQUEyRjtRQUMzRixtRkFBbUY7UUFDbkYsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDakUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO1lBQzFCLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDOytHQTFRVSxvQkFBb0IsbUhBNkhsQixVQUFVO21HQTdIWixvQkFBb0IsMnRDQzVEakMsc1ZBWUE7OzRGRGdEYSxvQkFBb0I7a0JBM0JoQyxTQUFTOytCQUNFLGtDQUFrQyxVQUNwQyxDQUFDLFVBQVUsQ0FBQyxZQUNWLGFBQWEsUUFHakI7d0JBQ0osS0FBSyxFQUFFLGNBQWM7d0JBQ3JCLDRCQUE0QixFQUFFLFdBQVc7d0JBQ3pDLGlDQUFpQyxFQUFFLFlBQVk7d0JBQy9DLCtCQUErQixFQUFFLFVBQVU7d0JBQzNDLCtCQUErQixFQUFFLFVBQVU7d0JBQzNDLDhCQUE4QixFQUFFLFNBQVM7d0JBQ3pDLGdDQUFnQyxFQUFFLHVDQUF1Qzt3QkFDekUsaUJBQWlCLEVBQUUsNEJBQTRCO3dCQUMvQyxhQUFhLEVBQUUsTUFBTTt3QkFDckIsaUJBQWlCLEVBQUUsa0JBQWtCO3dCQUNyQyxtQkFBbUIsRUFBRSxXQUFXO3dCQUNoQyx3QkFBd0IsRUFBRSxnQkFBZ0I7d0JBQzFDLHNCQUFzQixFQUFFLHFCQUFxQjt3QkFDN0Msc0JBQXNCLEVBQUUsY0FBYzt3QkFDdEMsU0FBUyxFQUFFLHNCQUFzQjt3QkFDakMsV0FBVyxFQUFFLHdCQUF3Qjt3QkFDckMsUUFBUSxFQUFFLFNBQVM7d0JBQ25CLFNBQVMsRUFBRSxTQUFTO3FCQUNyQjs7MEJBOEhFLFFBQVE7OzBCQUNSLFNBQVM7MkJBQUMsVUFBVTt5Q0EzSGQsSUFBSTtzQkFBWixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSzt1QkFBQyxZQUFZO2dCQUluQixjQUFjO3NCQURiLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUtmLGVBQWU7c0JBRHZCLE1BQU07Z0JBS1ksT0FBTztzQkFBekIsTUFBTTtnQkFJWSxTQUFTO3NCQUEzQixNQUFNO2dCQUlZLFNBQVM7c0JBQTNCLE1BQU07Z0JBSVksUUFBUTtzQkFBMUIsTUFBTTtnQkEwQkgsUUFBUTtzQkFEWCxLQUFLO2dCQWNGLEtBQUs7c0JBRFIsS0FBSztnQkFtQkYsVUFBVTtzQkFEYixLQUFLO2dCQVVGLFFBQVE7c0JBRFgsS0FBSztnQkFZRixTQUFTO3NCQURaLEtBQUs7Z0JBVUYsT0FBTztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEJBQ0tTUEFDRSwgREVMRVRFLCBFTlRFUiwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKiogRXZlbnQgZmlyZWQgb24gYW4gaW5kaXZpZHVhbCBgZ3Jhbml0ZS1jaGlwYCBlbGVtZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFuaXRlQ2hpcEV2ZW50IHtcbiAgLyoqIFRoZSBjaGlwIHRoZSBldmVudCB3YXMgZmlyZWQgb24uICovXG4gIGNoaXA6IEdyYW5pdGVDaGlwQ29tcG9uZW50O1xufVxuXG4vKiogRXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgR3Jhbml0ZUNoaXAgd2hlbiBzZWxlY3RlZCBvciBkZXNlbGVjdGVkLiAqL1xuZXhwb3J0IGNsYXNzIEdyYW5pdGVDaGlwU2VsZWN0aW9uQ2hhbmdlRXZlbnQge1xuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBjaGlwIHRoYXQgZW1pdHRlZCB0aGUgZXZlbnQuICovXG4gIHNvdXJjZTogR3Jhbml0ZUNoaXBDb21wb25lbnQ7XG4gIC8qKiBXaGV0aGVyIHRoZSBjaGlwIHRoYXQgZW1pdHRlZCB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQuICovXG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgc2VsZWN0aW9uIGNoYW5nZSB3YXMgYSByZXN1bHQgb2YgYSB1c2VyIGludGVyYWN0aW9uLiAqL1xuICBpc1VzZXJJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IGBncmFuaXRlLWNoaXAsIGdyYW5pdGUtaW5wdXQtY2hpcGAsXG4gIGlucHV0czogWyd0YWJJbmRleCddLFxuICBleHBvcnRBczogJ2dyYW5pdGVDaGlwJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hpcC5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hpcC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2dyYW5pdGUtY2hpcCcsXG4gICAgJ1tjbGFzcy5ncmFuaXRlLWNoaXAtaW5wdXRdJzogJ2lucHV0Q2hpcCcsXG4gICAgJ1tjbGFzcy5ncmFuaXRlLWNoaXAtc2VsZWN0YWJsZV0nOiAnc2VsZWN0YWJsZScsXG4gICAgJ1tjbGFzcy5ncmFuaXRlLWNoaXAtc2VsZWN0ZWRdJzogJ3NlbGVjdGVkJyxcbiAgICAnW2NsYXNzLmdyYW5pdGUtY2hpcC1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbY2xhc3MuZ3Jhbml0ZS1jaGlwLWludmFsaWRdJzogJ2ludmFsaWQnLFxuICAgICdbY2xhc3MuZ3Jhbml0ZS1jaGlwLXJlbW92YWJsZV0nOiAnIWRpc2FibGVkICYmIChyZW1vdmFibGUgfHwgaW5wdXRDaGlwKScsXG4gICAgJ1thdHRyLnRhYmluZGV4XSc6ICdkaXNhYmxlZCA/IG51bGwgOiB0YWJJbmRleCcsXG4gICAgJ1thdHRyLnJvbGVdJzogJ3JvbGUnLFxuICAgICdbYXR0ci5kaXNhYmxlZF0nOiAnZGlzYWJsZWQgfHwgbnVsbCcsXG4gICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCcsXG4gICAgJ1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnYXJpYUxhYmVsbGVkYnknLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdkaXNhYmxlZC50b1N0cmluZygpJyxcbiAgICAnW2F0dHIuYXJpYS1zZWxlY3RlZF0nOiAnYXJpYVNlbGVjdGVkJyxcbiAgICAnKGNsaWNrKSc6ICdfaGFuZGxlQ2xpY2soJGV2ZW50KScsXG4gICAgJyhrZXlkb3duKSc6ICdfaGFuZGxlS2V5ZG93bigkZXZlbnQpJyxcbiAgICAnKGJsdXIpJzogJ19ibHVyKCknLFxuICAgICcoZm9jdXMpJzogJ2ZvY3VzKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBHcmFuaXRlQ2hpcENvbXBvbmVudCBpbXBsZW1lbnRzIEZvY3VzYWJsZU9wdGlvbiwgT25EZXN0cm95IHtcbiAgLyoqIEFSSUEgcm9sZSB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZSBjaGlwLiAqL1xuICBASW5wdXQoKSByb2xlOiBzdHJpbmcgPSAnb3B0aW9uJztcblxuICBASW5wdXQoJ2FyaWEtbGFiZWwnKVxuICBhcmlhTGFiZWw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgnYXJpYS1sYWJlbGxlZGJ5JylcbiAgYXJpYUxhYmVsbGVkYnk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGNoaXAgaXMgc2VsZWN0ZWQgb3IgZGVzZWxlY3RlZC4gKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEdyYW5pdGVDaGlwU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEdyYW5pdGVDaGlwU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiBhIGNoaXAgaXMgdG8gYmUgcmVtb3ZlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHJlbW92ZWQ6IEV2ZW50RW1pdHRlcjxHcmFuaXRlQ2hpcEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxHcmFuaXRlQ2hpcEV2ZW50PigpO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGNoaXAgaXMgZGVzdHJveWVkLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZGVzdHJveWVkOiBFdmVudEVtaXR0ZXI8R3Jhbml0ZUNoaXBFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8R3Jhbml0ZUNoaXBFdmVudD4oKTtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgY2hpcCBpcyBmb2N1c2VkLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2hpcEZvY3VzOiBFdmVudEVtaXR0ZXI8R3Jhbml0ZUNoaXBFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8R3Jhbml0ZUNoaXBFdmVudD4oKTtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgY2hpcCBpcyBibHVycmVkLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2hpcEJsdXI6IEV2ZW50RW1pdHRlcjxHcmFuaXRlQ2hpcEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxHcmFuaXRlQ2hpcEV2ZW50PigpO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjaGlwIGhhcyBmb2N1cy4gKi9cbiAgX2hhc0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNoaXAgbGlzdCBpcyBzZWxlY3RhYmxlICovXG4gIF9jaGlwTGlzdFNlbGVjdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjaGlwIGxpc3QgaXMgaW4gbXVsdGktc2VsZWN0aW9uIG1vZGUuICovXG4gIF9jaGlwTGlzdE11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNoaXAgbGlzdCBhcyBhIHdob2xlIGlzIGRpc2FibGVkLiAqL1xuICBfY2hpcExpc3REaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHRhYkluZGV4OiBudW1iZXIgPSAtMTtcbiAgaW5wdXRDaGlwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIF9zZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX3NlbGVjdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfcmVtb3ZhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfaW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjaGlwIGlzIHNlbGVjdGVkLiAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICB9XG4gIHNldCBzZWxlY3RlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICBpZiAoY29lcmNlZFZhbHVlICE9PSB0aGlzLl9zZWxlY3RlZCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBjb2VyY2VkVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgY2hpcC4gRGVmYXVsdHMgdG8gdGhlIHRleHQgY29udGVudCBpbnNpZGUgYDxncmFuaXRlLWNoaXA+YCB0YWdzLiAqL1xuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUgIT0gbnVsbFxuICAgICAgPyB0aGlzLl92YWx1ZVxuICAgICAgOiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgc2V0IHZhbHVlKHZhbDogYW55KSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWw7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGNoaXAgaXMgc2VsZWN0YWJsZS4gV2hlbiBhIGNoaXAgaXMgbm90IHNlbGVjdGFibGUsXG4gICAqIGNoYW5nZXMgdG8gaXRzIHNlbGVjdGVkIHN0YXRlIGFyZSBhbHdheXMgaWdub3JlZC4gQnkgZGVmYXVsdCBhIGNoaXAgaXNcbiAgICogc2VsZWN0YWJsZSwgYW5kIGl0IGJlY29tZXMgbm9uLXNlbGVjdGFibGUgaWYgaXRzIHBhcmVudCBjaGlwIGxpc3QgaXNcbiAgICogbm90IHNlbGVjdGFibGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0YWJsZSAmJiB0aGlzLl9jaGlwTGlzdFNlbGVjdGFibGU7XG4gIH1cbiAgc2V0IHNlbGVjdGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zZWxlY3RhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBjaGlwIGlzIGRpc2FibGVkLiBBbHNvIHRoZSBpbmRpdmlkdWFsIGNoaXBzIGFyZSBkaXNhYmxlZCB3aGVuIGNoaXAgbGlzdCBpcyBkaXNhYmxlZCAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaXBMaXN0RGlzYWJsZWQgfHwgdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoaXAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgbGlzdFxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHJlbW92YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVtb3ZhYmxlO1xuICB9XG4gIHNldCByZW1vdmFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZW1vdmFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNoaXAgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ludmFsaWQ7XG4gIH1cbiAgc2V0IGludmFsaWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbnZhbGlkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEF0dHJpYnV0ZSgndGFiaW5kZXgnKSB0YWJJbmRleD86IHN0cmluZ1xuICApIHtcbiAgICBjb25zdCBpbnB1dENoaXBBdHRyTmFtZSA9ICdncmFuaXRlLWlucHV0LWNoaXAnO1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKFxuICAgICAgZWxlbWVudC5oYXNBdHRyaWJ1dGUoaW5wdXRDaGlwQXR0ck5hbWUpIHx8XG4gICAgICBlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gaW5wdXRDaGlwQXR0ck5hbWVcbiAgICApIHtcbiAgICAgIHRoaXMuaW5wdXRDaGlwID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnRhYkluZGV4ID0gdGFiSW5kZXggIT0gbnVsbCA/IHBhcnNlSW50KHRhYkluZGV4KSB8fCAtMSA6IC0xO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQuZW1pdCh7IGNoaXA6IHRoaXMgfSk7XG4gIH1cblxuICAvKiogU2VsZWN0cyB0aGUgY2hpcC4gKi9cbiAgc2VsZWN0KGlzVXNlcklucHV0OiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZShpc1VzZXJJbnB1dCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKiogRGVzZWxlY3RzIHRoZSBjaGlwLiAqL1xuICBkZXNlbGVjdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSgpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRvZ2dsZXMgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgc3RhdGUgb2YgdGhpcyBjaGlwLiAqL1xuICB0b2dnbGVTZWxlY3RlZChpc1VzZXJJbnB1dDogYm9vbGVhbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgdGhpcy5fc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDtcbiAgICB0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZShpc1VzZXJJbnB1dCk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQ7XG4gIH1cblxuICAvKiogQWxsb3dzIGZvciBwcm9ncmFtbWF0aWMgZm9jdXNpbmcgb2YgdGhlIGNoaXAgdW5sZXNzIGl0J3MgZGlzYWJsZWQuICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKCF0aGlzLl9oYXNGb2N1cykge1xuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5jaGlwRm9jdXMubmV4dCh7IGNoaXA6IHRoaXMgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9oYXNGb2N1cyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyBmb3IgcHJvZ3JhbW1hdGljIHJlbW92YWwgb2YgdGhlIGNoaXAuXG4gICAqIENhbGxlZCBieSB0aGUgR3Jhbml0ZUNoaXBMaXN0IHdoZW4gdGhlIERFTEVURSBvciBCQUNLU1BBQ0Uga2V5cyBhcmUgcHJlc3NlZC5cbiAgICogSW5mb3JtcyBhbnkgbGlzdGVuZXJzIG9mIHRoZSByZW1vdmFsIHJlcXVlc3QuIERvZXMgbm90IHJlbW92ZSB0aGUgY2hpcCBmcm9tIHRoZSBET00uXG4gICAqL1xuICByZW1vdmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVtb3ZhYmxlIHx8IHRoaXMuaW5wdXRDaGlwKSB7XG4gICAgICB0aGlzLnJlbW92ZWQuZW1pdCh7IGNoaXA6IHRoaXMgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgY2xpY2sgZXZlbnRzIG9uIHRoZSBjaGlwLiAqL1xuICBfaGFuZGxlQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMudG9nZ2xlU2VsZWN0ZWQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZSBjdXN0b20ga2V5IHByZXNzZXMuICovXG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgIGNhc2UgREVMRVRFOlxuICAgICAgY2FzZSBCQUNLU1BBQ0U6XG4gICAgICAgIC8vIElmIHRoZSBjaGlwIGlzIHJlbW92YWJsZSwgcmVtb3ZlIHRoZSBmb2N1c2VkIGNoaXBcbiAgICAgICAgdGhpcy5yZW1vdmUoKTtcbiAgICAgICAgLy8gQWx3YXlzIHByZXZlbnQgc28gcGFnZSBuYXZpZ2F0aW9uIGRvZXMgbm90IG9jY3VyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUEFDRTpcbiAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgIC8vIElmIHdlIGFyZSBzZWxlY3RhYmxlLCB0b2dnbGUgdGhlIGZvY3VzZWQgY2hpcFxuICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3RlZCh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFsd2F5cyBwcmV2ZW50IHNwYWNlIGZyb20gc2Nyb2xsaW5nIHRoZSBwYWdlIHNpbmNlIHRoZSBsaXN0IGhhcyBmb2N1c1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBfaGFuZGxlUmVtb3ZlQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmUoKTtcbiAgICAvLyBXZSBuZWVkIHRvIHN0b3AgZXZlbnQgcHJvcGFnYXRpb24gYmVjYXVzZSBvdGhlcndpc2UgdGhlIGV2ZW50IHdpbGwgYnViYmxlIHVwIHRvIHRoZVxuICAgIC8vIGZvcm0gZmllbGQgYW5kIGNhdXNlIHRoZSBgb25Db250YWluZXJDbGlja2AgbWV0aG9kIHRvIGJlIGludm9rZWQuIFRoaXMgbWV0aG9kIHdvdWxkIHRoZW5cbiAgICAvLyByZXNldCB0aGUgZm9jdXNlZCBjaGlwIHRoYXQgaGFzIGJlZW4gZm9jdXNlZCBhZnRlciBjaGlwIHJlbW92YWwuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIF9ibHVyKCk6IHZvaWQge1xuICAgIC8vIFdoZW4gYW5pbWF0aW9ucyBhcmUgZW5hYmxlZCwgQW5ndWxhciBtYXkgZW5kIHVwIHJlbW92aW5nIHRoZSBjaGlwIGZyb20gdGhlIERPTSBhIGxpdHRsZVxuICAgIC8vIGVhcmxpZXIgdGhhbiB1c3VhbCwgY2F1c2luZyBpdCB0byBiZSBibHVycmVkIGFuZCB0aHJvd2luZyBvZmYgdGhlIGxvZ2ljIGluIHRoZSBjaGlwIGxpc3RcbiAgICAvLyB0aGF0IG1vdmVzIGZvY3VzIG5vdCB0aGUgbmV4dCBpdGVtLiBUbyB3b3JrIGFyb3VuZCB0aGUgaXNzdWUsIHdlIGRlZmVyIG1hcmtpbmcgdGhlIGNoaXBcbiAgICAvLyBhcyBub3QgZm9jdXNlZCB1bnRpbCB0aGUgbmV4dCB0aW1lIHRoZSB6b25lIHN0YWJpbGl6ZXMuXG4gICAgdGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9oYXNGb2N1cyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNoaXBCbHVyLm5leHQoeyBjaGlwOiB0aGlzIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZShpc1VzZXJJbnB1dCA9IGZhbHNlKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICBpc1VzZXJJbnB1dCxcbiAgICAgIHNlbGVjdGVkOiB0aGlzLl9zZWxlY3RlZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBUaGUgQVJJQSBzZWxlY3RlZCBhcHBsaWVkIHRvIHRoZSBjaGlwLiAqL1xuICBnZXQgYXJpYVNlbGVjdGVkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIC8vIFJlbW92ZSB0aGUgYGFyaWEtc2VsZWN0ZWRgIHdoZW4gdGhlIGNoaXAgaXMgZGVzZWxlY3RlZCBpbiBzaW5nbGUtc2VsZWN0aW9uIG1vZGUsIGJlY2F1c2VcbiAgICAvLyBpdCBhZGRzIG5vaXNlIHRvIE5WREEgdXNlcnMgd2hlcmUgXCJub3Qgc2VsZWN0ZWRcIiB3aWxsIGJlIHJlYWQgb3V0IGZvciBlYWNoIGNoaXAuXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZSAmJiAodGhpcy5fY2hpcExpc3RNdWx0aXBsZSB8fCB0aGlzLnNlbGVjdGVkKVxuICAgICAgPyB0aGlzLnNlbGVjdGVkLnRvU3RyaW5nKClcbiAgICAgIDogbnVsbDtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPGJ1dHRvblxuICAqbmdJZj1cIiFkaXNhYmxlZCAmJiAocmVtb3ZhYmxlIHx8IGlucHV0Q2hpcClcIlxuICBjbGFzcz1cImdyYW5pdGUtY2hpcC1yZW1vdmVcIlxuICAoY2xpY2spPVwiX2hhbmRsZVJlbW92ZUNsaWNrKCRldmVudClcIlxuPlxuICA8Z3Jhbml0ZS1pY29uXG4gICAgZm9udEljb249XCJpY29uLWNsb3NlXCJcbiAgICBjbGFzcz1cImdyYW5pdGUtY2hpcC1yZW1vdmUtaWNvblwiXG4gICAgW2NsYXNzLmdyYW5pdGUtY2hpcC1yZW1vdmUtaWNvbi1pbnZhbGlkXT1cImludmFsaWRcIlxuICA+PC9ncmFuaXRlLWljb24+XG48L2J1dHRvbj5cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import { GraniteIconModule } from '../icon/icon.module';
5
+ import { GraniteChipListComponent } from './chip-list.component';
6
+ import { GraniteChipComponent } from './chip.component';
7
+ import { GraniteChipInputDirective } from './chip-input';
8
+ import * as i0 from "@angular/core";
9
+ const CHIP_DECLARATIONS = [
10
+ GraniteChipListComponent,
11
+ GraniteChipComponent,
12
+ GraniteChipInputDirective,
13
+ ];
14
+ export class GraniteChipsModule {
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteChipsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
16
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: GraniteChipsModule, declarations: [GraniteChipListComponent,
17
+ GraniteChipComponent,
18
+ GraniteChipInputDirective], imports: [CommonModule, FormsModule, ReactiveFormsModule, GraniteIconModule], exports: [GraniteChipListComponent,
19
+ GraniteChipComponent,
20
+ GraniteChipInputDirective] }); }
21
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteChipsModule, imports: [CommonModule, FormsModule, ReactiveFormsModule, GraniteIconModule] }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteChipsModule, decorators: [{
24
+ type: NgModule,
25
+ args: [{
26
+ imports: [CommonModule, FormsModule, ReactiveFormsModule, GraniteIconModule],
27
+ declarations: CHIP_DECLARATIONS,
28
+ exports: CHIP_DECLARATIONS,
29
+ }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9jaGlwcy9jaGlwcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFekQsTUFBTSxpQkFBaUIsR0FBRztJQUN4Qix3QkFBd0I7SUFDeEIsb0JBQW9CO0lBQ3BCLHlCQUF5QjtDQUMxQixDQUFDO0FBT0YsTUFBTSxPQUFPLGtCQUFrQjsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBVjdCLHdCQUF3QjtZQUN4QixvQkFBb0I7WUFDcEIseUJBQXlCLGFBSWYsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsYUFOM0Usd0JBQXdCO1lBQ3hCLG9CQUFvQjtZQUNwQix5QkFBeUI7Z0hBUWQsa0JBQWtCLFlBSm5CLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCOzs0RkFJaEUsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUM7b0JBQzVFLFlBQVksRUFBRSxpQkFBaUI7b0JBQy9CLE9BQU8sRUFBRSxpQkFBaUI7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEdyYW5pdGVJY29uTW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZHVsZSc7XG5pbXBvcnQgeyBHcmFuaXRlQ2hpcExpc3RDb21wb25lbnQgfSBmcm9tICcuL2NoaXAtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3Jhbml0ZUNoaXBDb21wb25lbnQgfSBmcm9tICcuL2NoaXAuY29tcG9uZW50JztcbmltcG9ydCB7IEdyYW5pdGVDaGlwSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuL2NoaXAtaW5wdXQnO1xuXG5jb25zdCBDSElQX0RFQ0xBUkFUSU9OUyA9IFtcbiAgR3Jhbml0ZUNoaXBMaXN0Q29tcG9uZW50LFxuICBHcmFuaXRlQ2hpcENvbXBvbmVudCxcbiAgR3Jhbml0ZUNoaXBJbnB1dERpcmVjdGl2ZSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBHcmFuaXRlSWNvbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogQ0hJUF9ERUNMQVJBVElPTlMsXG4gIGV4cG9ydHM6IENISVBfREVDTEFSQVRJT05TLFxufSlcbmV4cG9ydCBjbGFzcyBHcmFuaXRlQ2hpcHNNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Directive, TemplateRef, inject } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class GraniteCollapsibleConditionalBodyDirective {
4
+ constructor() {
5
+ this.template = inject(TemplateRef);
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCollapsibleConditionalBodyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: GraniteCollapsibleConditionalBodyDirective, selector: "[graniteCollapsibleGroupBody]", exportAs: ["graniteCollapsibleGroupBody"], ngImport: i0 }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCollapsibleConditionalBodyDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[graniteCollapsibleGroupBody]',
14
+ exportAs: 'graniteCollapsibleGroupBody',
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtZ3JvdXAtYm9keS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2NvbGxhcHNpYmxlLWdyb3VwL2NvbGxhcHNpYmxlLWdyb3VwLWJvZHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNL0QsTUFBTSxPQUFPLDBDQUEwQztJQUp2RDtRQUtFLGFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDaEM7K0dBRlksMENBQTBDO21HQUExQywwQ0FBMEM7OzRGQUExQywwQ0FBMEM7a0JBSnRELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLCtCQUErQjtvQkFDekMsUUFBUSxFQUFFLDZCQUE2QjtpQkFDeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2dyYW5pdGVDb2xsYXBzaWJsZUdyb3VwQm9keV0nLFxuICBleHBvcnRBczogJ2dyYW5pdGVDb2xsYXBzaWJsZUdyb3VwQm9keScsXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVDb2xsYXBzaWJsZUNvbmRpdGlvbmFsQm9keURpcmVjdGl2ZSB7XG4gIHRlbXBsYXRlID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcbn1cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Directive, TemplateRef, inject } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class GraniteCollapsibleConditionalHeaderDirective {
4
+ constructor() {
5
+ this.template = inject(TemplateRef);
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCollapsibleConditionalHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: GraniteCollapsibleConditionalHeaderDirective, selector: "[graniteCollapsibleGroupHeader]", exportAs: ["graniteCollapsibleGroupHeader"], ngImport: i0 }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCollapsibleConditionalHeaderDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[graniteCollapsibleGroupHeader]',
14
+ exportAs: 'graniteCollapsibleGroupHeader',
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtZ3JvdXAtaGVhZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvY29sbGFwc2libGUtZ3JvdXAvY29sbGFwc2libGUtZ3JvdXAtaGVhZGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTS9ELE1BQU0sT0FBTyw0Q0FBNEM7SUFKekQ7UUFLRSxhQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQ2hDOytHQUZZLDRDQUE0QzttR0FBNUMsNENBQTRDOzs0RkFBNUMsNENBQTRDO2tCQUp4RCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQ0FBaUM7b0JBQzNDLFFBQVEsRUFBRSwrQkFBK0I7aUJBQzFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tncmFuaXRlQ29sbGFwc2libGVHcm91cEhlYWRlcl0nLFxuICBleHBvcnRBczogJ2dyYW5pdGVDb2xsYXBzaWJsZUdyb3VwSGVhZGVyJyxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUNvbGxhcHNpYmxlQ29uZGl0aW9uYWxIZWFkZXJEaXJlY3RpdmUge1xuICB0ZW1wbGF0ZSA9IGluamVjdChUZW1wbGF0ZVJlZik7XG59XG4iXX0=
@@ -0,0 +1,46 @@
1
+ import { Component, ContentChild, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { GraniteCollapsibleConditionalBodyDirective } from './collapsible-group-body.directive';
3
+ import { GraniteCollapsibleConditionalHeaderDirective } from './collapsible-group-header.directive';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "../icon/icon.component";
7
+ export class GraniteCollapsibleGroupComponent {
8
+ constructor() {
9
+ this.collapsed = false;
10
+ this.id = '';
11
+ this.arialabel = null;
12
+ this.collapsedChanged = new EventEmitter();
13
+ }
14
+ toggleCollapsibleGroup() {
15
+ this.collapsed = !this.collapsed;
16
+ this.collapsedChanged.emit(this.collapsed);
17
+ }
18
+ _toogleCollapsing(event) {
19
+ if (event.code === 'Enter' || event.code === 'Space') {
20
+ event.preventDefault();
21
+ event.stopPropagation();
22
+ this.toggleCollapsibleGroup();
23
+ }
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCollapsibleGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GraniteCollapsibleGroupComponent, selector: "granite-collapsible-group", inputs: { collapsed: "collapsed", id: "id", arialabel: "arialabel" }, outputs: { collapsedChanged: "collapsedChanged" }, queries: [{ propertyName: "conditionalBodyContentRef", first: true, predicate: GraniteCollapsibleConditionalBodyDirective, descendants: true }, { propertyName: "conditionalHeaderContentRef", first: true, predicate: GraniteCollapsibleConditionalHeaderDirective, descendants: true }], ngImport: i0, template: "<div class=\"collapsible-wrapper\">\n <div\n data-fnd=\"collapsible-group-header\"\n class=\"collapsible-group-header\"\n [class]=\"collapsed ? 'collapsed-header' : 'expanded-header'\"\n role=\"button\"\n (click)=\"toggleCollapsibleGroup()\"\n (keydown)=\"_toogleCollapsing($event)\"\n [attr.id]=\"id ? 'collapsible-group-header-' + id : null\"\n [attr.aria-label]=\"arialabel\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-controls]=\"id ? 'collapsible-group-body-' + id : null\"\n tabindex=\"0\"\n >\n <ng-container\n [ngTemplateOutlet]=\"\n conditionalHeaderContentRef\n ? conditionalHeaderContentRef.template\n : null\n \"\n ></ng-container>\n\n <div class=\"collapse-icon\">\n <granite-icon\n [fontIcon]=\"collapsed ? 'icon-caret-down' : 'icon-caret-up'\"\n ></granite-icon>\n </div>\n </div>\n <div\n data-fnd=\"collapsible-group-body\"\n class=\"collapsible-group-body\"\n [class]=\"collapsed ? 'collapse' : 'expand'\"\n role=\"region\"\n [attr.id]=\"id ? 'collapsible-group-body-' + id : null\"\n [attr.aria-labelledby]=\"id ? 'collapsible-group-header-' + id : null\"\n >\n <ng-container\n [ngTemplateOutlet]=\"\n !collapsed && conditionalBodyContentRef\n ? conditionalBodyContentRef.template\n : null\n \"\n >\n </ng-container>\n </div>\n</div>\n", styles: [".collapsible-wrapper{background-color:var(--granite-color-background);box-shadow:var(--granite-shadow-base);border-radius:var(--granite-radius-s);width:100%;font-family:var(--granite-font-family-default)}.collapsible-wrapper .collapse-icon{align-self:center;width:var(--granite-size-base-rem);height:var(--granite-size-base-rem);font-size:var(--granite-font-size-body);color:var(--granite-color-background-inverse);display:none}.collapsible-wrapper .collapsible-group-header{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;flex-direction:row;justify-content:space-between;cursor:pointer;font-size:var(--granite-font-size-body-small);line-height:var(--granite-line-height-base-rem);font-weight:var(--granite-font-weight-bold);padding:var(--granite-spacing-8) var(--granite-spacing-16);transition:background-color .2s ease-out;color:var(--granite-color-text);background-color:var(--granite-color-background);align-items:center}.collapsible-wrapper .collapsible-group-header:focus{outline:var(--granite-border-width-focus) solid var(--granite-color-focus)}.collapsible-wrapper .collapsible-group-header:hover{background-color:var(--granite-color-background-hover)}.collapsible-wrapper .collapsible-group-header:hover .collapse-icon{display:block}.collapsible-wrapper .collapsible-group-header.expanded-header{border-start-start-radius:var(--granite-radius-s);border-start-end-radius:var(--granite-radius-s);border-end-start-radius:0;border-end-end-radius:0}.collapsible-wrapper .collapsible-group-header.collapsed-header{border-radius:var(--granite-radius-s)}.collapsible-wrapper .collapsible-group-body{padding:var(--granite-spacing-16);transition:all .3s ease-in-out}.collapsible-wrapper .collapsible-group-body.expand{display:block;background-color:var(--granite-color-background);border-end-start-radius:var(--granite-radius-s);border-end-end-radius:var(--granite-radius-s)}.collapsible-wrapper .collapsible-group-body.collapse{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.GraniteIconComponent, selector: "granite-icon", inputs: ["fontIcon"] }] }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCollapsibleGroupComponent, decorators: [{
29
+ type: Component,
30
+ args: [{ selector: 'granite-collapsible-group', template: "<div class=\"collapsible-wrapper\">\n <div\n data-fnd=\"collapsible-group-header\"\n class=\"collapsible-group-header\"\n [class]=\"collapsed ? 'collapsed-header' : 'expanded-header'\"\n role=\"button\"\n (click)=\"toggleCollapsibleGroup()\"\n (keydown)=\"_toogleCollapsing($event)\"\n [attr.id]=\"id ? 'collapsible-group-header-' + id : null\"\n [attr.aria-label]=\"arialabel\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-controls]=\"id ? 'collapsible-group-body-' + id : null\"\n tabindex=\"0\"\n >\n <ng-container\n [ngTemplateOutlet]=\"\n conditionalHeaderContentRef\n ? conditionalHeaderContentRef.template\n : null\n \"\n ></ng-container>\n\n <div class=\"collapse-icon\">\n <granite-icon\n [fontIcon]=\"collapsed ? 'icon-caret-down' : 'icon-caret-up'\"\n ></granite-icon>\n </div>\n </div>\n <div\n data-fnd=\"collapsible-group-body\"\n class=\"collapsible-group-body\"\n [class]=\"collapsed ? 'collapse' : 'expand'\"\n role=\"region\"\n [attr.id]=\"id ? 'collapsible-group-body-' + id : null\"\n [attr.aria-labelledby]=\"id ? 'collapsible-group-header-' + id : null\"\n >\n <ng-container\n [ngTemplateOutlet]=\"\n !collapsed && conditionalBodyContentRef\n ? conditionalBodyContentRef.template\n : null\n \"\n >\n </ng-container>\n </div>\n</div>\n", styles: [".collapsible-wrapper{background-color:var(--granite-color-background);box-shadow:var(--granite-shadow-base);border-radius:var(--granite-radius-s);width:100%;font-family:var(--granite-font-family-default)}.collapsible-wrapper .collapse-icon{align-self:center;width:var(--granite-size-base-rem);height:var(--granite-size-base-rem);font-size:var(--granite-font-size-body);color:var(--granite-color-background-inverse);display:none}.collapsible-wrapper .collapsible-group-header{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;flex-direction:row;justify-content:space-between;cursor:pointer;font-size:var(--granite-font-size-body-small);line-height:var(--granite-line-height-base-rem);font-weight:var(--granite-font-weight-bold);padding:var(--granite-spacing-8) var(--granite-spacing-16);transition:background-color .2s ease-out;color:var(--granite-color-text);background-color:var(--granite-color-background);align-items:center}.collapsible-wrapper .collapsible-group-header:focus{outline:var(--granite-border-width-focus) solid var(--granite-color-focus)}.collapsible-wrapper .collapsible-group-header:hover{background-color:var(--granite-color-background-hover)}.collapsible-wrapper .collapsible-group-header:hover .collapse-icon{display:block}.collapsible-wrapper .collapsible-group-header.expanded-header{border-start-start-radius:var(--granite-radius-s);border-start-end-radius:var(--granite-radius-s);border-end-start-radius:0;border-end-end-radius:0}.collapsible-wrapper .collapsible-group-header.collapsed-header{border-radius:var(--granite-radius-s)}.collapsible-wrapper .collapsible-group-body{padding:var(--granite-spacing-16);transition:all .3s ease-in-out}.collapsible-wrapper .collapsible-group-body.expand{display:block;background-color:var(--granite-color-background);border-end-start-radius:var(--granite-radius-s);border-end-end-radius:var(--granite-radius-s)}.collapsible-wrapper .collapsible-group-body.collapse{display:none}\n"] }]
31
+ }], propDecorators: { collapsed: [{
32
+ type: Input
33
+ }], id: [{
34
+ type: Input
35
+ }], arialabel: [{
36
+ type: Input
37
+ }], collapsedChanged: [{
38
+ type: Output
39
+ }], conditionalBodyContentRef: [{
40
+ type: ContentChild,
41
+ args: [GraniteCollapsibleConditionalBodyDirective]
42
+ }], conditionalHeaderContentRef: [{
43
+ type: ContentChild,
44
+ args: [GraniteCollapsibleConditionalHeaderDirective]
45
+ }] } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9jb2xsYXBzaWJsZS1ncm91cC9jb2xsYXBzaWJsZS1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2NvbGxhcHNpYmxlLWdyb3VwL2NvbGxhcHNpYmxlLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7O0FBTXBHLE1BQU0sT0FBTyxnQ0FBZ0M7SUFMN0M7UUFPRSxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRzNCLE9BQUUsR0FBVyxFQUFFLENBQUM7UUFHaEIsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFHdkIscUJBQWdCLEdBQ3ZCLElBQUksWUFBWSxFQUFXLENBQUM7S0FvQi9CO0lBWkMsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFvQjtRQUNwQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDckQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQzsrR0EvQlUsZ0NBQWdDO21HQUFoQyxnQ0FBZ0MsaVBBYzdCLDBDQUEwQyw4RkFHMUMsNENBQTRDLGdEQy9CNUQscTVDQThDQTs7NEZEaENhLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSwyQkFBMkI7OEJBTXJDLFNBQVM7c0JBRFIsS0FBSztnQkFJTixFQUFFO3NCQURELEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlHLGdCQUFnQjtzQkFEeEIsTUFBTTtnQkFLUCx5QkFBeUI7c0JBRHhCLFlBQVk7dUJBQUMsMENBQTBDO2dCQUl4RCwyQkFBMkI7c0JBRDFCLFlBQVk7dUJBQUMsNENBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcmFuaXRlQ29sbGFwc2libGVDb25kaXRpb25hbEJvZHlEaXJlY3RpdmUgfSBmcm9tICcuL2NvbGxhcHNpYmxlLWdyb3VwLWJvZHkuZGlyZWN0aXZlJztcbmltcG9ydCB7IEdyYW5pdGVDb2xsYXBzaWJsZUNvbmRpdGlvbmFsSGVhZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9jb2xsYXBzaWJsZS1ncm91cC1oZWFkZXIuZGlyZWN0aXZlJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYW5pdGUtY29sbGFwc2libGUtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJ2NvbGxhcHNpYmxlLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2NvbGxhcHNpYmxlLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVDb2xsYXBzaWJsZUdyb3VwQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgY29sbGFwc2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgaWQ6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGFyaWFsYWJlbDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGNvbGxhcHNlZENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoR3Jhbml0ZUNvbGxhcHNpYmxlQ29uZGl0aW9uYWxCb2R5RGlyZWN0aXZlKVxuICBjb25kaXRpb25hbEJvZHlDb250ZW50UmVmOiBHcmFuaXRlQ29sbGFwc2libGVDb25kaXRpb25hbEJvZHlEaXJlY3RpdmU7XG5cbiAgQENvbnRlbnRDaGlsZChHcmFuaXRlQ29sbGFwc2libGVDb25kaXRpb25hbEhlYWRlckRpcmVjdGl2ZSlcbiAgY29uZGl0aW9uYWxIZWFkZXJDb250ZW50UmVmOiBHcmFuaXRlQ29sbGFwc2libGVDb25kaXRpb25hbEhlYWRlckRpcmVjdGl2ZTtcblxuICB0b2dnbGVDb2xsYXBzaWJsZUdyb3VwKCk6IHZvaWQge1xuICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xuICAgIHRoaXMuY29sbGFwc2VkQ2hhbmdlZC5lbWl0KHRoaXMuY29sbGFwc2VkKTtcbiAgfVxuXG4gIF90b29nbGVDb2xsYXBzaW5nKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdFbnRlcicgfHwgZXZlbnQuY29kZSA9PT0gJ1NwYWNlJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy50b2dnbGVDb2xsYXBzaWJsZUdyb3VwKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sbGFwc2libGUtd3JhcHBlclwiPlxuICA8ZGl2XG4gICAgZGF0YS1mbmQ9XCJjb2xsYXBzaWJsZS1ncm91cC1oZWFkZXJcIlxuICAgIGNsYXNzPVwiY29sbGFwc2libGUtZ3JvdXAtaGVhZGVyXCJcbiAgICBbY2xhc3NdPVwiY29sbGFwc2VkID8gJ2NvbGxhcHNlZC1oZWFkZXInIDogJ2V4cGFuZGVkLWhlYWRlcidcIlxuICAgIHJvbGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzaWJsZUdyb3VwKClcIlxuICAgIChrZXlkb3duKT1cIl90b29nbGVDb2xsYXBzaW5nKCRldmVudClcIlxuICAgIFthdHRyLmlkXT1cImlkID8gJ2NvbGxhcHNpYmxlLWdyb3VwLWhlYWRlci0nICsgaWQgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbFwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhY29sbGFwc2VkXCJcbiAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlkID8gJ2NvbGxhcHNpYmxlLWdyb3VwLWJvZHktJyArIGlkIDogbnVsbFwiXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgICBjb25kaXRpb25hbEhlYWRlckNvbnRlbnRSZWZcbiAgICAgICAgICA/IGNvbmRpdGlvbmFsSGVhZGVyQ29udGVudFJlZi50ZW1wbGF0ZVxuICAgICAgICAgIDogbnVsbFxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sbGFwc2UtaWNvblwiPlxuICAgICAgPGdyYW5pdGUtaWNvblxuICAgICAgICBbZm9udEljb25dPVwiY29sbGFwc2VkID8gJ2ljb24tY2FyZXQtZG93bicgOiAnaWNvbi1jYXJldC11cCdcIlxuICAgICAgPjwvZ3Jhbml0ZS1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGRhdGEtZm5kPVwiY29sbGFwc2libGUtZ3JvdXAtYm9keVwiXG4gICAgY2xhc3M9XCJjb2xsYXBzaWJsZS1ncm91cC1ib2R5XCJcbiAgICBbY2xhc3NdPVwiY29sbGFwc2VkID8gJ2NvbGxhcHNlJyA6ICdleHBhbmQnXCJcbiAgICByb2xlPVwicmVnaW9uXCJcbiAgICBbYXR0ci5pZF09XCJpZCA/ICdjb2xsYXBzaWJsZS1ncm91cC1ib2R5LScgKyBpZCA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZCA/ICdjb2xsYXBzaWJsZS1ncm91cC1oZWFkZXItJyArIGlkIDogbnVsbFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJcbiAgICAgICAgIWNvbGxhcHNlZCAmJiBjb25kaXRpb25hbEJvZHlDb250ZW50UmVmXG4gICAgICAgICAgPyBjb25kaXRpb25hbEJvZHlDb250ZW50UmVmLnRlbXBsYXRlXG4gICAgICAgICAgOiBudWxsXG4gICAgICBcIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,33 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { GraniteIconModule } from '../icon/icon.module';
4
+ import { GraniteCollapsibleGroupComponent } from './collapsible-group.component';
5
+ import { GraniteCollapsibleConditionalBodyDirective } from './collapsible-group-body.directive';
6
+ import { GraniteCollapsibleConditionalHeaderDirective } from './collapsible-group-header.directive';
7
+ import * as i0 from "@angular/core";
8
+ export class GraniteCollapsibleGroupModule {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCollapsibleGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: GraniteCollapsibleGroupModule, declarations: [GraniteCollapsibleGroupComponent,
11
+ GraniteCollapsibleConditionalHeaderDirective,
12
+ GraniteCollapsibleConditionalBodyDirective], imports: [CommonModule, GraniteIconModule], exports: [GraniteCollapsibleGroupComponent,
13
+ GraniteCollapsibleConditionalHeaderDirective,
14
+ GraniteCollapsibleConditionalBodyDirective] }); }
15
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCollapsibleGroupModule, imports: [CommonModule, GraniteIconModule] }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCollapsibleGroupModule, decorators: [{
18
+ type: NgModule,
19
+ args: [{
20
+ imports: [CommonModule, GraniteIconModule],
21
+ declarations: [
22
+ GraniteCollapsibleGroupComponent,
23
+ GraniteCollapsibleConditionalHeaderDirective,
24
+ GraniteCollapsibleConditionalBodyDirective,
25
+ ],
26
+ exports: [
27
+ GraniteCollapsibleGroupComponent,
28
+ GraniteCollapsibleConditionalHeaderDirective,
29
+ GraniteCollapsibleConditionalBodyDirective,
30
+ ],
31
+ }]
32
+ }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2libGUtZ3JvdXAubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9jb2xsYXBzaWJsZS1ncm91cC9jb2xsYXBzaWJsZS1ncm91cC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakYsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEcsT0FBTyxFQUFFLDRDQUE0QyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBZXBHLE1BQU0sT0FBTyw2QkFBNkI7K0dBQTdCLDZCQUE2QjtnSEFBN0IsNkJBQTZCLGlCQVZ0QyxnQ0FBZ0M7WUFDaEMsNENBQTRDO1lBQzVDLDBDQUEwQyxhQUpsQyxZQUFZLEVBQUUsaUJBQWlCLGFBT3ZDLGdDQUFnQztZQUNoQyw0Q0FBNEM7WUFDNUMsMENBQTBDO2dIQUdqQyw2QkFBNkIsWUFaOUIsWUFBWSxFQUFFLGlCQUFpQjs7NEZBWTlCLDZCQUE2QjtrQkFiekMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUM7b0JBQzFDLFlBQVksRUFBRTt3QkFDWixnQ0FBZ0M7d0JBQ2hDLDRDQUE0Qzt3QkFDNUMsMENBQTBDO3FCQUMzQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZ0NBQWdDO3dCQUNoQyw0Q0FBNEM7d0JBQzVDLDBDQUEwQztxQkFDM0M7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEdyYW5pdGVJY29uTW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZHVsZSc7XG5pbXBvcnQgeyBHcmFuaXRlQ29sbGFwc2libGVHcm91cENvbXBvbmVudCB9IGZyb20gJy4vY29sbGFwc2libGUtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEdyYW5pdGVDb2xsYXBzaWJsZUNvbmRpdGlvbmFsQm9keURpcmVjdGl2ZSB9IGZyb20gJy4vY29sbGFwc2libGUtZ3JvdXAtYm9keS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgR3Jhbml0ZUNvbGxhcHNpYmxlQ29uZGl0aW9uYWxIZWFkZXJEaXJlY3RpdmUgfSBmcm9tICcuL2NvbGxhcHNpYmxlLWdyb3VwLWhlYWRlci5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBHcmFuaXRlSWNvbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEdyYW5pdGVDb2xsYXBzaWJsZUdyb3VwQ29tcG9uZW50LFxuICAgIEdyYW5pdGVDb2xsYXBzaWJsZUNvbmRpdGlvbmFsSGVhZGVyRGlyZWN0aXZlLFxuICAgIEdyYW5pdGVDb2xsYXBzaWJsZUNvbmRpdGlvbmFsQm9keURpcmVjdGl2ZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEdyYW5pdGVDb2xsYXBzaWJsZUdyb3VwQ29tcG9uZW50LFxuICAgIEdyYW5pdGVDb2xsYXBzaWJsZUNvbmRpdGlvbmFsSGVhZGVyRGlyZWN0aXZlLFxuICAgIEdyYW5pdGVDb2xsYXBzaWJsZUNvbmRpdGlvbmFsQm9keURpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUNvbGxhcHNpYmxlR3JvdXBNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../icon/icon.component";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "../contact-item-default-status/contact-item-default-status.component";
6
+ import * as i4 from "../contact-item-title/contact-item-title.component";
7
+ export class GraniteContactItemComponent {
8
+ constructor() {
9
+ this.selectedContact = new EventEmitter();
10
+ }
11
+ emitSelectedContact(selectedContact) {
12
+ this.selectedContact.emit(selectedContact);
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteContactItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GraniteContactItemComponent, selector: "granite-contact-item", inputs: { contact: "contact" }, outputs: { selectedContact: "selectedContact" }, host: { classAttribute: "granite-contact-item" }, ngImport: i0, template: "<div class=\"contact-item\" [attr.data-fnd]=\"contact.name\">\n <div class=\"contact-item-main\">\n <ng-container\n *ngTemplateOutlet=\"\n contactItem;\n context: {\n contact: contact,\n testName: 'contact',\n selectedContactOutput: { contact }\n }\n \"\n ></ng-container>\n </div>\n\n <ul *ngIf=\"contact.options\" class=\"contact-item-options\">\n <li\n tabindex=\"0\"\n *ngFor=\"let option of contact.options; let i = index\"\n class=\"option-item\"\n [attr.data-fnd]=\"'contact-option-' + i\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n contactItem;\n context: {\n contact: option,\n testName: 'contact-option-' + i,\n selectedContactOutput: { contact: option, parent: contact }\n }\n \"\n ></ng-container>\n </li>\n </ul>\n</div>\n\n<ng-template\n let-testName=\"testName\"\n let-contact=\"contact\"\n let-selectedContactOutput=\"selectedContactOutput\"\n #contactItem\n>\n <granite-icon\n [attr.data-fnd]=\"testName + '-icon'\"\n fontIcon=\"{{ contact.iconName }}\"\n ></granite-icon>\n\n <granite-contact-item-title\n [attr.data-fnd]=\"testName + '-title'\"\n tabindex=\"0\"\n [contact]=\"contact\"\n [class.contact-item-disabled]=\"contact.options || contact.disabled\"\n (click)=\"emitSelectedContact(selectedContactOutput)\"\n ></granite-contact-item-title>\n\n <ng-container *ngIf=\"contact.statusTemplate; else defaultStatus\">\n <ng-container *ngTemplateOutlet=\"contact.statusTemplate\"></ng-container>\n </ng-container>\n\n <ng-template #defaultStatus>\n <granite-contact-item-default-status\n [attr.data-fnd]=\"testName + '-status'\"\n [status]=\"contact.status\"\n ></granite-contact-item-default-status>\n </ng-template>\n</ng-template>\n", styles: [".contact-item{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:var(--granite-spacing-8)}.contact-item-main{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;gap:var(--granite-spacing-8);align-self:stretch;align-items:center}.contact-item-disabled{pointer-events:none}.contact-item-options{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-inline-start:var(--granite-spacing-24);gap:var(--granite-spacing-8);list-style:none}.contact-item-options .option-item{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;gap:var(--granite-spacing-8);align-self:stretch;align-items:center}.contact-item granite-contact-item-title,.contact-item granite-contact-item-default-status{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}granite-icon{padding:0;color:var(--granite-color-text-hint);width:var(--granite-size-base-rem);height:var(--granite-size-base-rem)}\n"], dependencies: [{ kind: "component", type: i1.GraniteIconComponent, selector: "granite-icon", inputs: ["fontIcon"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ContactItemDefaultStatusComponent, selector: "granite-contact-item-default-status", inputs: ["status"] }, { kind: "component", type: i4.GraniteContactItemTitleComponent, selector: "granite-contact-item-title", inputs: ["contact"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteContactItemComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'granite-contact-item', host: {
20
+ class: 'granite-contact-item',
21
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"contact-item\" [attr.data-fnd]=\"contact.name\">\n <div class=\"contact-item-main\">\n <ng-container\n *ngTemplateOutlet=\"\n contactItem;\n context: {\n contact: contact,\n testName: 'contact',\n selectedContactOutput: { contact }\n }\n \"\n ></ng-container>\n </div>\n\n <ul *ngIf=\"contact.options\" class=\"contact-item-options\">\n <li\n tabindex=\"0\"\n *ngFor=\"let option of contact.options; let i = index\"\n class=\"option-item\"\n [attr.data-fnd]=\"'contact-option-' + i\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n contactItem;\n context: {\n contact: option,\n testName: 'contact-option-' + i,\n selectedContactOutput: { contact: option, parent: contact }\n }\n \"\n ></ng-container>\n </li>\n </ul>\n</div>\n\n<ng-template\n let-testName=\"testName\"\n let-contact=\"contact\"\n let-selectedContactOutput=\"selectedContactOutput\"\n #contactItem\n>\n <granite-icon\n [attr.data-fnd]=\"testName + '-icon'\"\n fontIcon=\"{{ contact.iconName }}\"\n ></granite-icon>\n\n <granite-contact-item-title\n [attr.data-fnd]=\"testName + '-title'\"\n tabindex=\"0\"\n [contact]=\"contact\"\n [class.contact-item-disabled]=\"contact.options || contact.disabled\"\n (click)=\"emitSelectedContact(selectedContactOutput)\"\n ></granite-contact-item-title>\n\n <ng-container *ngIf=\"contact.statusTemplate; else defaultStatus\">\n <ng-container *ngTemplateOutlet=\"contact.statusTemplate\"></ng-container>\n </ng-container>\n\n <ng-template #defaultStatus>\n <granite-contact-item-default-status\n [attr.data-fnd]=\"testName + '-status'\"\n [status]=\"contact.status\"\n ></granite-contact-item-default-status>\n </ng-template>\n</ng-template>\n", styles: [".contact-item{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:var(--granite-spacing-8)}.contact-item-main{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;gap:var(--granite-spacing-8);align-self:stretch;align-items:center}.contact-item-disabled{pointer-events:none}.contact-item-options{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-inline-start:var(--granite-spacing-24);gap:var(--granite-spacing-8);list-style:none}.contact-item-options .option-item{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;gap:var(--granite-spacing-8);align-self:stretch;align-items:center}.contact-item granite-contact-item-title,.contact-item granite-contact-item-default-status{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}granite-icon{padding:0;color:var(--granite-color-text-hint);width:var(--granite-size-base-rem);height:var(--granite-size-base-rem)}\n"] }]
22
+ }], propDecorators: { contact: [{
23
+ type: Input
24
+ }], selectedContact: [{
25
+ type: Output
26
+ }] } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvY29udGFjdHMvY29udGFjdC1pdGVtL2NvbnRhY3QtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2NvbnRhY3RzL2NvbnRhY3QtaXRlbS9jb250YWN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWF2QixNQUFNLE9BQU8sMkJBQTJCO0lBVHhDO1FBWXFCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7S0FLMUU7SUFIQyxtQkFBbUIsQ0FBQyxlQUFnQztRQUNsRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QyxDQUFDOytHQVBVLDJCQUEyQjttR0FBM0IsMkJBQTJCLCtMQ25CeEMsbzJEQWlFQTs7NEZEOUNhLDJCQUEyQjtrQkFUdkMsU0FBUzsrQkFDRSxzQkFBc0IsUUFDMUI7d0JBQ0osS0FBSyxFQUFFLHNCQUFzQjtxQkFDOUIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLE9BQU87c0JBQWYsS0FBSztnQkFFYSxlQUFlO3NCQUFqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlbGVjdGVkQ29udGFjdCB9IGZyb20gJy4uL2NvbnRhY3RzLXR5cGVzL2NvbnRhY3RzLmNvbXBvbmVudC5wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgQ29udGFjdEV4dGVuZGVkIH0gZnJvbSAnLi4vY29udGFjdHMtdHlwZXMvY29udGFjdHMuY29tcG9uZW50LnByaXZhdGUtdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdncmFuaXRlLWNvbnRhY3QtaXRlbScsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2dyYW5pdGUtY29udGFjdC1pdGVtJyxcbiAgfSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRhY3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRhY3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUNvbnRhY3RJdGVtQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY29udGFjdDogQ29udGFjdEV4dGVuZGVkO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3RlZENvbnRhY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGVkQ29udGFjdD4oKTtcblxuICBlbWl0U2VsZWN0ZWRDb250YWN0KHNlbGVjdGVkQ29udGFjdDogU2VsZWN0ZWRDb250YWN0KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZENvbnRhY3QuZW1pdChzZWxlY3RlZENvbnRhY3QpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFjdC1pdGVtXCIgW2F0dHIuZGF0YS1mbmRdPVwiY29udGFjdC5uYW1lXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWN0LWl0ZW0tbWFpblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIGNvbnRhY3RJdGVtO1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgY29udGFjdDogY29udGFjdCxcbiAgICAgICAgICB0ZXN0TmFtZTogJ2NvbnRhY3QnLFxuICAgICAgICAgIHNlbGVjdGVkQ29udGFjdE91dHB1dDogeyBjb250YWN0IH1cbiAgICAgICAgfVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDx1bCAqbmdJZj1cImNvbnRhY3Qub3B0aW9uc1wiIGNsYXNzPVwiY29udGFjdC1pdGVtLW9wdGlvbnNcIj5cbiAgICA8bGlcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNvbnRhY3Qub3B0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICBjbGFzcz1cIm9wdGlvbi1pdGVtXCJcbiAgICAgIFthdHRyLmRhdGEtZm5kXT1cIidjb250YWN0LW9wdGlvbi0nICsgaVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIGNvbnRhY3RJdGVtO1xuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbnRhY3Q6IG9wdGlvbixcbiAgICAgICAgICAgIHRlc3ROYW1lOiAnY29udGFjdC1vcHRpb24tJyArIGksXG4gICAgICAgICAgICBzZWxlY3RlZENvbnRhY3RPdXRwdXQ6IHsgY29udGFjdDogb3B0aW9uLCBwYXJlbnQ6IGNvbnRhY3QgfVxuICAgICAgICAgIH1cbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICBsZXQtdGVzdE5hbWU9XCJ0ZXN0TmFtZVwiXG4gIGxldC1jb250YWN0PVwiY29udGFjdFwiXG4gIGxldC1zZWxlY3RlZENvbnRhY3RPdXRwdXQ9XCJzZWxlY3RlZENvbnRhY3RPdXRwdXRcIlxuICAjY29udGFjdEl0ZW1cbj5cbiAgPGdyYW5pdGUtaWNvblxuICAgIFthdHRyLmRhdGEtZm5kXT1cInRlc3ROYW1lICsgJy1pY29uJ1wiXG4gICAgZm9udEljb249XCJ7eyBjb250YWN0Lmljb25OYW1lIH19XCJcbiAgPjwvZ3Jhbml0ZS1pY29uPlxuXG4gIDxncmFuaXRlLWNvbnRhY3QtaXRlbS10aXRsZVxuICAgIFthdHRyLmRhdGEtZm5kXT1cInRlc3ROYW1lICsgJy10aXRsZSdcIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgW2NvbnRhY3RdPVwiY29udGFjdFwiXG4gICAgW2NsYXNzLmNvbnRhY3QtaXRlbS1kaXNhYmxlZF09XCJjb250YWN0Lm9wdGlvbnMgfHwgY29udGFjdC5kaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cImVtaXRTZWxlY3RlZENvbnRhY3Qoc2VsZWN0ZWRDb250YWN0T3V0cHV0KVwiXG4gID48L2dyYW5pdGUtY29udGFjdC1pdGVtLXRpdGxlPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250YWN0LnN0YXR1c1RlbXBsYXRlOyBlbHNlIGRlZmF1bHRTdGF0dXNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGFjdC5zdGF0dXNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTdGF0dXM+XG4gICAgPGdyYW5pdGUtY29udGFjdC1pdGVtLWRlZmF1bHQtc3RhdHVzXG4gICAgICBbYXR0ci5kYXRhLWZuZF09XCJ0ZXN0TmFtZSArICctc3RhdHVzJ1wiXG4gICAgICBbc3RhdHVzXT1cImNvbnRhY3Quc3RhdHVzXCJcbiAgICA+PC9ncmFuaXRlLWNvbnRhY3QtaXRlbS1kZWZhdWx0LXN0YXR1cz5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=