@ifsworld/granite-components 6.0.4 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,286 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { BACKSPACE, DELETE, 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 "../icon/icon.component";
7
+ import * as i2 from "@angular/common";
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
+ constructor(_elementRef, _ngZone, _changeDetectorRef, tabIndex) {
17
+ this._elementRef = _elementRef;
18
+ this._ngZone = _ngZone;
19
+ this._changeDetectorRef = _changeDetectorRef;
20
+ /** Whether the chip has focus. */
21
+ this._hasFocus = false;
22
+ /** Whether the chip list is selectable */
23
+ this._chipListSelectable = true;
24
+ /** Whether the chip list is in multi-selection mode. */
25
+ this._chipListMultiple = false;
26
+ /** Whether the chip list as a whole is disabled. */
27
+ this._chipListDisabled = false;
28
+ /** ARIA role that should be applied to the chip. */
29
+ this.role = 'option';
30
+ this._selected = false;
31
+ this._selectable = true;
32
+ this._disabled = false;
33
+ this._removable = false;
34
+ this._invalid = false;
35
+ this.ariaLabel = null;
36
+ this.ariaLabelledby = null;
37
+ /** Emitted when the chip is selected or deselected. */
38
+ this.selectionChange = new EventEmitter();
39
+ /** Emitted when a chip is to be removed. */
40
+ this.removed = new EventEmitter();
41
+ /** Emitted when the chip is destroyed. */
42
+ this.destroyed = new EventEmitter();
43
+ this.tabIndex = -1;
44
+ this.inputChip = false;
45
+ /** Emits when the chip is focused. */
46
+ this.chipFocus = new EventEmitter();
47
+ /** Emits when the chip is blurred. */
48
+ this.chipBlur = new EventEmitter();
49
+ const inputChipAttrName = 'granite-input-chip';
50
+ const element = this._elementRef.nativeElement;
51
+ if (element.hasAttribute(inputChipAttrName) ||
52
+ element.tagName.toLowerCase() === inputChipAttrName) {
53
+ this.inputChip = true;
54
+ }
55
+ this.tabIndex = tabIndex != null ? parseInt(tabIndex) || -1 : -1;
56
+ }
57
+ /** Whether the chip is selected. */
58
+ get selected() {
59
+ return this._selected;
60
+ }
61
+ set selected(value) {
62
+ const coercedValue = coerceBooleanProperty(value);
63
+ if (coercedValue !== this._selected) {
64
+ this._selected = coercedValue;
65
+ }
66
+ }
67
+ /** The value of the chip. Defaults to the text content inside `<granite-chip>` tags. */
68
+ get value() {
69
+ return this._value != null
70
+ ? this._value
71
+ : this._elementRef.nativeElement.textContent;
72
+ }
73
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
74
+ set value(val) {
75
+ this._value = val;
76
+ }
77
+ /**
78
+ * Whether or not the chip is selectable. When a chip is not selectable,
79
+ * changes to its selected state are always ignored. By default a chip is
80
+ * selectable, and it becomes non-selectable if its parent chip list is
81
+ * not selectable.
82
+ */
83
+ get selectable() {
84
+ return this._selectable && this._chipListSelectable;
85
+ }
86
+ set selectable(value) {
87
+ this._selectable = coerceBooleanProperty(value);
88
+ }
89
+ /** Whether the chip is disabled. Also the individual chips are disabled when chip list is disabled */
90
+ get disabled() {
91
+ return this._chipListDisabled || this._disabled;
92
+ }
93
+ set disabled(value) {
94
+ this._disabled = coerceBooleanProperty(value);
95
+ }
96
+ /**
97
+ * Whether the chip can be removed from the list
98
+ */
99
+ get removable() {
100
+ return this._removable;
101
+ }
102
+ set removable(value) {
103
+ this._removable = coerceBooleanProperty(value);
104
+ }
105
+ /** Whether the chip is in an invalid state. */
106
+ get invalid() {
107
+ return this._invalid;
108
+ }
109
+ set invalid(value) {
110
+ this._invalid = coerceBooleanProperty(value);
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
+ // If we are selectable, toggle the focused chip
183
+ if (this.selectable) {
184
+ this.toggleSelected(true);
185
+ }
186
+ // Always prevent space from scrolling the page since the list has focus
187
+ event.preventDefault();
188
+ break;
189
+ }
190
+ }
191
+ _handleRemoveClick(event) {
192
+ this.remove();
193
+ // We need to stop event propagation because otherwise the event will bubble up to the
194
+ // form field and cause the `onContainerClick` method to be invoked. This method would then
195
+ // reset the focused chip that has been focused after chip removal.
196
+ event.stopPropagation();
197
+ event.preventDefault();
198
+ }
199
+ _blur() {
200
+ // When animations are enabled, Angular may end up removing the chip from the DOM a little
201
+ // earlier than usual, causing it to be blurred and throwing off the logic in the chip list
202
+ // that moves focus not the next item. To work around the issue, we defer marking the chip
203
+ // as not focused until the next time the zone stabilizes.
204
+ this._ngZone.onStable.pipe(take(1)).subscribe(() => {
205
+ this._ngZone.run(() => {
206
+ this._hasFocus = false;
207
+ this.chipBlur.next({ chip: this });
208
+ });
209
+ });
210
+ }
211
+ _dispatchSelectionChange(isUserInput = false) {
212
+ this.selectionChange.emit({
213
+ source: this,
214
+ isUserInput,
215
+ selected: this._selected,
216
+ });
217
+ }
218
+ /** The ARIA selected applied to the chip. */
219
+ get ariaSelected() {
220
+ // Remove the `aria-selected` when the chip is deselected in single-selection mode, because
221
+ // it adds noise to NVDA users where "not selected" will be read out for each chip.
222
+ return this.selectable && (this._chipListMultiple || this.selected)
223
+ ? this.selected.toString()
224
+ : null;
225
+ }
226
+ }
227
+ GraniteChipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", 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
+ GraniteChipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: GraniteChipComponent, selector: "granite-chip, granite-input-chip", inputs: { tabIndex: "tabIndex", role: "role", selected: "selected", value: "value", selectable: "selectable", disabled: "disabled", removable: "removable", invalid: "invalid", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"] }, 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", "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-error-solid\"\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:-moz-inline-flex;display:inline-flex;flex-direction:row;flex-wrap:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;-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-m);padding-top:var(--granite-spacing-xs);padding-bottom:var(--granite-spacing-xs);margin:var(--granite-spacing-xxs);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);min-width:48px}:host.granite-chip:hover{background-color:var(--granite-color-background-hover);cursor:pointer}: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-invalid{background-color:var(--granite-color-background-failure)}: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-inline:var(--granite-spacing-s)}: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:flex;justify-content:center;align-items:center;background-color:transparent;outline:none;border:none;cursor:pointer;margin-inline-start:var(--granite-spacing-xs);margin-inline-end:0;padding:0}[dir=rtl] .granite-chip-remove{margin-inline-end:var(--granite-spacing-xs);margin-inline-start:0}.granite-chip-remove .granite-chip-remove-icon{position:relative;top:0;font-size:var(--granite-font-size-body-medium);line-height:var(--granite-line-height-regular);overflow:hidden;background-repeat:no-repeat;color:var(--granite-color-text-hint)}.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"], components: [{ type: i1.GraniteIconComponent, selector: "granite-icon", inputs: ["fontIcon"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteChipComponent, decorators: [{
230
+ type: Component,
231
+ args: [{ selector: `granite-chip, granite-input-chip`, inputs: ['tabIndex'], exportAs: 'graniteChip', host: {
232
+ class: 'granite-chip',
233
+ '[class.granite-chip-input]': 'inputChip',
234
+ '[class.granite-chip-selectable]': 'selectable',
235
+ '[class.granite-chip-selected]': 'selected',
236
+ '[class.granite-chip-disabled]': 'disabled',
237
+ '[class.granite-chip-invalid]': 'invalid',
238
+ '[attr.tabindex]': 'disabled ? null : tabIndex',
239
+ '[attr.role]': 'role',
240
+ '[attr.disabled]': 'disabled || null',
241
+ '[attr.aria-label]': 'ariaLabel',
242
+ '[attr.aria-labelledby]': 'ariaLabelledby',
243
+ '[attr.aria-disabled]': 'disabled.toString()',
244
+ '[attr.aria-selected]': 'ariaSelected',
245
+ '(click)': '_handleClick($event)',
246
+ '(keydown)': '_handleKeydown($event)',
247
+ '(blur)': '_blur()',
248
+ '(focus)': 'focus()',
249
+ }, 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-error-solid\"\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:-moz-inline-flex;display:inline-flex;flex-direction:row;flex-wrap:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;-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-m);padding-top:var(--granite-spacing-xs);padding-bottom:var(--granite-spacing-xs);margin:var(--granite-spacing-xxs);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);min-width:48px}:host.granite-chip:hover{background-color:var(--granite-color-background-hover);cursor:pointer}: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-invalid{background-color:var(--granite-color-background-failure)}: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-inline:var(--granite-spacing-s)}: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:flex;justify-content:center;align-items:center;background-color:transparent;outline:none;border:none;cursor:pointer;margin-inline-start:var(--granite-spacing-xs);margin-inline-end:0;padding:0}[dir=rtl] .granite-chip-remove{margin-inline-end:var(--granite-spacing-xs);margin-inline-start:0}.granite-chip-remove .granite-chip-remove-icon{position:relative;top:0;font-size:var(--granite-font-size-body-medium);line-height:var(--granite-line-height-regular);overflow:hidden;background-repeat:no-repeat;color:var(--granite-color-text-hint)}.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"] }]
250
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef, decorators: [{
251
+ type: Optional
252
+ }] }, { type: undefined, decorators: [{
253
+ type: Attribute,
254
+ args: ['tabindex']
255
+ }] }]; }, propDecorators: { role: [{
256
+ type: Input
257
+ }], selected: [{
258
+ type: Input
259
+ }], value: [{
260
+ type: Input
261
+ }], selectable: [{
262
+ type: Input
263
+ }], disabled: [{
264
+ type: Input
265
+ }], removable: [{
266
+ type: Input
267
+ }], invalid: [{
268
+ type: Input
269
+ }], ariaLabel: [{
270
+ type: Input,
271
+ args: ['aria-label']
272
+ }], ariaLabelledby: [{
273
+ type: Input,
274
+ args: ['aria-labelledby']
275
+ }], selectionChange: [{
276
+ type: Output
277
+ }], removed: [{
278
+ type: Output
279
+ }], destroyed: [{
280
+ type: Output
281
+ }], chipFocus: [{
282
+ type: Output
283
+ }], chipBlur: [{
284
+ type: Output
285
+ }] } });
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2NoaXBzL2NoaXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9jaGlwcy9jaGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFRdEMsdUVBQXVFO0FBQ3ZFLE1BQU0sT0FBTywrQkFBK0I7SUFBNUM7UUFLRSx1RUFBdUU7UUFDdkUsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUFDL0IsQ0FBQztDQUFBO0FBNEJELE1BQU0sT0FBTyxvQkFBb0I7SUF1SC9CLFlBQ1MsV0FBdUIsRUFDdEIsT0FBZSxFQUNILGtCQUFxQyxFQUNsQyxRQUFpQjtRQUhqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ0gsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQXpIM0Qsa0NBQWtDO1FBQ2xDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFM0IsMENBQTBDO1FBQzFDLHdCQUFtQixHQUFZLElBQUksQ0FBQztRQUVwQyx3REFBd0Q7UUFDeEQsc0JBQWlCLEdBQVksS0FBSyxDQUFD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LEtBQUs7Z0JBbUJGLFVBQVU7c0JBRGIsS0FBSztnQkFXRixRQUFRO3NCQURYLEtBQUs7Z0JBYUYsU0FBUztzQkFEWixLQUFLO2dCQVdGLE9BQU87c0JBRFYsS0FBSztnQkFVTixTQUFTO3NCQURSLEtBQUs7dUJBQUMsWUFBWTtnQkFJbkIsY0FBYztzQkFEYixLQUFLO3VCQUFDLGlCQUFpQjtnQkFLZixlQUFlO3NCQUR2QixNQUFNO2dCQUlZLE9BQU87c0JBQXpCLE1BQU07Z0JBSVksU0FBUztzQkFBM0IsTUFBTTtnQkFRRSxTQUFTO3NCQURqQixNQUFNO2dCQUtFLFFBQVE7c0JBRGhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c2FibGVPcHRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQkFDS1NQQUNFLCBERUxFVEUsIFNQQUNFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqIEV2ZW50IGZpcmVkIG9uIGFuIGluZGl2aWR1YWwgYGdyYW5pdGUtY2hpcGAgZWxlbWVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3Jhbml0ZUNoaXBFdmVudCB7XG4gIC8qKiBUaGUgY2hpcCB0aGUgZXZlbnQgd2FzIGZpcmVkIG9uLiAqL1xuICBjaGlwOiBHcmFuaXRlQ2hpcENvbXBvbmVudDtcbn1cblxuLyoqIEV2ZW50IG9iamVjdCBlbWl0dGVkIGJ5IEdyYW5pdGVDaGlwIHdoZW4gc2VsZWN0ZWQgb3IgZGVzZWxlY3RlZC4gKi9cbmV4cG9ydCBjbGFzcyBHcmFuaXRlQ2hpcFNlbGVjdGlvbkNoYW5nZUV2ZW50IHtcbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgY2hpcCB0aGF0IGVtaXR0ZWQgdGhlIGV2ZW50LiAqL1xuICBzb3VyY2U6IEdyYW5pdGVDaGlwQ29tcG9uZW50O1xuICAvKiogV2hldGhlciB0aGUgY2hpcCB0aGF0IGVtaXR0ZWQgdGhlIGV2ZW50IGlzIHNlbGVjdGVkLiAqL1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdGlvbiBjaGFuZ2Ugd2FzIGEgcmVzdWx0IG9mIGEgdXNlciBpbnRlcmFjdGlvbi4gKi9cbiAgaXNVc2VySW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBgZ3Jhbml0ZS1jaGlwLCBncmFuaXRlLWlucHV0LWNoaXBgLFxuICBpbnB1dHM6IFsndGFiSW5kZXgnXSxcbiAgZXhwb3J0QXM6ICdncmFuaXRlQ2hpcCcsXG4gIHN0eWxlVXJsczogWycuL2NoaXAuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoaXAuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdncmFuaXRlLWNoaXAnLFxuICAgICdbY2xhc3MuZ3Jhbml0ZS1jaGlwLWlucHV0XSc6ICdpbnB1dENoaXAnLFxuICAgICdbY2xhc3MuZ3Jhbml0ZS1jaGlwLXNlbGVjdGFibGVdJzogJ3NlbGVjdGFibGUnLFxuICAgICdbY2xhc3MuZ3Jhbml0ZS1jaGlwLXNlbGVjdGVkXSc6ICdzZWxlY3RlZCcsXG4gICAgJ1tjbGFzcy5ncmFuaXRlLWNoaXAtZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAnW2NsYXNzLmdyYW5pdGUtY2hpcC1pbnZhbGlkXSc6ICdpbnZhbGlkJyxcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJ2Rpc2FibGVkID8gbnVsbCA6IHRhYkluZGV4JyxcbiAgICAnW2F0dHIucm9sZV0nOiAncm9sZScsXG4gICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCB8fCBudWxsJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAnYXJpYUxhYmVsJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSc6ICdhcmlhTGFiZWxsZWRieScsXG4gICAgJ1thdHRyLmFyaWEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkLnRvU3RyaW5nKCknLFxuICAgICdbYXR0ci5hcmlhLXNlbGVjdGVkXSc6ICdhcmlhU2VsZWN0ZWQnLFxuICAgICcoY2xpY2spJzogJ19oYW5kbGVDbGljaygkZXZlbnQpJyxcbiAgICAnKGtleWRvd24pJzogJ19oYW5kbGVLZXlkb3duKCRldmVudCknLFxuICAgICcoYmx1ciknOiAnX2JsdXIoKScsXG4gICAgJyhmb2N1cyknOiAnZm9jdXMoKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVDaGlwQ29tcG9uZW50IGltcGxlbWVudHMgRm9jdXNhYmxlT3B0aW9uLCBPbkRlc3Ryb3kge1xuICAvKiogV2hldGhlciB0aGUgY2hpcCBoYXMgZm9jdXMuICovXG4gIF9oYXNGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjaGlwIGxpc3QgaXMgc2VsZWN0YWJsZSAqL1xuICBfY2hpcExpc3RTZWxlY3RhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKiogV2hldGhlciB0aGUgY2hpcCBsaXN0IGlzIGluIG11bHRpLXNlbGVjdGlvbiBtb2RlLiAqL1xuICBfY2hpcExpc3RNdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjaGlwIGxpc3QgYXMgYSB3aG9sZSBpcyBkaXNhYmxlZC4gKi9cbiAgX2NoaXBMaXN0RGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogQVJJQSByb2xlIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIGNoaXAuICovXG4gIEBJbnB1dCgpIHJvbGU6IHN0cmluZyA9ICdvcHRpb24nO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjaGlwIGlzIHNlbGVjdGVkLiAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICB9XG4gIHNldCBzZWxlY3RlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICBpZiAoY29lcmNlZFZhbHVlICE9PSB0aGlzLl9zZWxlY3RlZCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBjb2VyY2VkVmFsdWU7XG4gICAgfVxuICB9XG4gIHByb3RlY3RlZCBfc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogVGhlIHZhbHVlIG9mIHRoZSBjaGlwLiBEZWZhdWx0cyB0byB0aGUgdGV4dCBjb250ZW50IGluc2lkZSBgPGdyYW5pdGUtY2hpcD5gIHRhZ3MuICovXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZSAhPSBudWxsXG4gICAgICA/IHRoaXMuX3ZhbHVlXG4gICAgICA6IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDtcbiAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICBzZXQgdmFsdWUodmFsOiBhbnkpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbDtcbiAgfVxuICBwcml2YXRlIF92YWx1ZTogYW55O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY2hpcCBpcyBzZWxlY3RhYmxlLiBXaGVuIGEgY2hpcCBpcyBub3Qgc2VsZWN0YWJsZSxcbiAgICogY2hhbmdlcyB0byBpdHMgc2VsZWN0ZWQgc3RhdGUgYXJlIGFsd2F5cyBpZ25vcmVkLiBCeSBkZWZhdWx0IGEgY2hpcCBpc1xuICAgKiBzZWxlY3RhYmxlLCBhbmQgaXQgYmVjb21lcyBub24tc2VsZWN0YWJsZSBpZiBpdHMgcGFyZW50IGNoaXAgbGlzdCBpc1xuICAgKiBub3Qgc2VsZWN0YWJsZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RhYmxlICYmIHRoaXMuX2NoaXBMaXN0U2VsZWN0YWJsZTtcbiAgfVxuICBzZXQgc2VsZWN0YWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3NlbGVjdGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByb3RlY3RlZCBfc2VsZWN0YWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNoaXAgaXMgZGlzYWJsZWQuIEFsc28gdGhlIGluZGl2aWR1YWwgY2hpcHMgYXJlIGRpc2FibGVkIHdoZW4gY2hpcCBsaXN0IGlzIGRpc2FibGVkICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpcExpc3REaXNhYmxlZCB8fCB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJvdGVjdGVkIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjaGlwIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIGxpc3RcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCByZW1vdmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbW92YWJsZTtcbiAgfVxuICBzZXQgcmVtb3ZhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVtb3ZhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcm90ZWN0ZWQgX3JlbW92YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjaGlwIGlzIGluIGFuIGludmFsaWQgc3RhdGUuICovXG4gIEBJbnB1dCgpXG4gIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnZhbGlkO1xuICB9XG4gIHNldCBpbnZhbGlkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW52YWxpZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJvdGVjdGVkIF9pbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdhcmlhLWxhYmVsJylcbiAgYXJpYUxhYmVsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoJ2FyaWEtbGFiZWxsZWRieScpXG4gIGFyaWFMYWJlbGxlZGJ5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAvKiogRW1pdHRlZCB3aGVuIHRoZSBjaGlwIGlzIHNlbGVjdGVkIG9yIGRlc2VsZWN0ZWQuICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxHcmFuaXRlQ2hpcFNlbGVjdGlvbkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8R3Jhbml0ZUNoaXBTZWxlY3Rpb25DaGFuZ2VFdmVudD4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIGEgY2hpcCBpcyB0byBiZSByZW1vdmVkLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcmVtb3ZlZDogRXZlbnRFbWl0dGVyPEdyYW5pdGVDaGlwRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEdyYW5pdGVDaGlwRXZlbnQ+KCk7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgY2hpcCBpcyBkZXN0cm95ZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBkZXN0cm95ZWQ6IEV2ZW50RW1pdHRlcjxHcmFuaXRlQ2hpcEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxHcmFuaXRlQ2hpcEV2ZW50PigpO1xuXG4gIHRhYkluZGV4OiBudW1iZXIgPSAtMTtcbiAgaW5wdXRDaGlwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIGNoaXAgaXMgZm9jdXNlZC4gKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGNoaXBGb2N1czogRXZlbnRFbWl0dGVyPEdyYW5pdGVDaGlwRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxHcmFuaXRlQ2hpcEV2ZW50PigpO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBjaGlwIGlzIGJsdXJyZWQuICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBjaGlwQmx1cjogRXZlbnRFbWl0dGVyPEdyYW5pdGVDaGlwRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxHcmFuaXRlQ2hpcEV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEF0dHJpYnV0ZSgndGFiaW5kZXgnKSB0YWJJbmRleD86IHN0cmluZ1xuICApIHtcbiAgICBjb25zdCBpbnB1dENoaXBBdHRyTmFtZSA9ICdncmFuaXRlLWlucHV0LWNoaXAnO1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKFxuICAgICAgZWxlbWVudC5oYXNBdHRyaWJ1dGUoaW5wdXRDaGlwQXR0ck5hbWUpIHx8XG4gICAgICBlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gaW5wdXRDaGlwQXR0ck5hbWVcbiAgICApIHtcbiAgICAgIHRoaXMuaW5wdXRDaGlwID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnRhYkluZGV4ID0gdGFiSW5kZXggIT0gbnVsbCA/IHBhcnNlSW50KHRhYkluZGV4KSB8fCAtMSA6IC0xO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQuZW1pdCh7IGNoaXA6IHRoaXMgfSk7XG4gIH1cblxuICAvKiogU2VsZWN0cyB0aGUgY2hpcC4gKi9cbiAgc2VsZWN0KGlzVXNlcklucHV0OiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZShpc1VzZXJJbnB1dCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKiogRGVzZWxlY3RzIHRoZSBjaGlwLiAqL1xuICBkZXNlbGVjdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSgpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRvZ2dsZXMgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgc3RhdGUgb2YgdGhpcyBjaGlwLiAqL1xuICB0b2dnbGVTZWxlY3RlZChpc1VzZXJJbnB1dDogYm9vbGVhbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgdGhpcy5fc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDtcbiAgICB0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZShpc1VzZXJJbnB1dCk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQ7XG4gIH1cblxuICAvKiogQWxsb3dzIGZvciBwcm9ncmFtbWF0aWMgZm9jdXNpbmcgb2YgdGhlIGNoaXAgdW5sZXNzIGl0J3MgZGlzYWJsZWQuICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKCF0aGlzLl9oYXNGb2N1cykge1xuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5jaGlwRm9jdXMubmV4dCh7IGNoaXA6IHRoaXMgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9oYXNGb2N1cyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyBmb3IgcHJvZ3JhbW1hdGljIHJlbW92YWwgb2YgdGhlIGNoaXAuXG4gICAqIENhbGxlZCBieSB0aGUgR3Jhbml0ZUNoaXBMaXN0IHdoZW4gdGhlIERFTEVURSBvciBCQUNLU1BBQ0Uga2V5cyBhcmUgcHJlc3NlZC5cbiAgICogSW5mb3JtcyBhbnkgbGlzdGVuZXJzIG9mIHRoZSByZW1vdmFsIHJlcXVlc3QuIERvZXMgbm90IHJlbW92ZSB0aGUgY2hpcCBmcm9tIHRoZSBET00uXG4gICAqL1xuICByZW1vdmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVtb3ZhYmxlIHx8IHRoaXMuaW5wdXRDaGlwKSB7XG4gICAgICB0aGlzLnJlbW92ZWQuZW1pdCh7IGNoaXA6IHRoaXMgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgY2xpY2sgZXZlbnRzIG9uIHRoZSBjaGlwLiAqL1xuICBfaGFuZGxlQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMudG9nZ2xlU2VsZWN0ZWQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZSBjdXN0b20ga2V5IHByZXNzZXMuICovXG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgIGNhc2UgREVMRVRFOlxuICAgICAgY2FzZSBCQUNLU1BBQ0U6XG4gICAgICAgIC8vIElmIHRoZSBjaGlwIGlzIHJlbW92YWJsZSwgcmVtb3ZlIHRoZSBmb2N1c2VkIGNoaXBcbiAgICAgICAgdGhpcy5yZW1vdmUoKTtcbiAgICAgICAgLy8gQWx3YXlzIHByZXZlbnQgc28gcGFnZSBuYXZpZ2F0aW9uIGRvZXMgbm90IG9jY3VyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTUEFDRTpcbiAgICAgICAgLy8gSWYgd2UgYXJlIHNlbGVjdGFibGUsIHRvZ2dsZSB0aGUgZm9jdXNlZCBjaGlwXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdGVkKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWx3YXlzIHByZXZlbnQgc3BhY2UgZnJvbSBzY3JvbGxpbmcgdGhlIHBhZ2Ugc2luY2UgdGhlIGxpc3QgaGFzIGZvY3VzXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVSZW1vdmVDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZSgpO1xuICAgIC8vIFdlIG5lZWQgdG8gc3RvcCBldmVudCBwcm9wYWdhdGlvbiBiZWNhdXNlIG90aGVyd2lzZSB0aGUgZXZlbnQgd2lsbCBidWJibGUgdXAgdG8gdGhlXG4gICAgLy8gZm9ybSBmaWVsZCBhbmQgY2F1c2UgdGhlIGBvbkNvbnRhaW5lckNsaWNrYCBtZXRob2QgdG8gYmUgaW52b2tlZC4gVGhpcyBtZXRob2Qgd291bGQgdGhlblxuICAgIC8vIHJlc2V0IHRoZSBmb2N1c2VkIGNoaXAgdGhhdCBoYXMgYmVlbiBmb2N1c2VkIGFmdGVyIGNoaXAgcmVtb3ZhbC5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgX2JsdXIoKTogdm9pZCB7XG4gICAgLy8gV2hlbiBhbmltYXRpb25zIGFyZSBlbmFibGVkLCBBbmd1bGFyIG1heSBlbmQgdXAgcmVtb3ZpbmcgdGhlIGNoaXAgZnJvbSB0aGUgRE9NIGEgbGl0dGxlXG4gICAgLy8gZWFybGllciB0aGFuIHVzdWFsLCBjYXVzaW5nIGl0IHRvIGJlIGJsdXJyZWQgYW5kIHRocm93aW5nIG9mZiB0aGUgbG9naWMgaW4gdGhlIGNoaXAgbGlzdFxuICAgIC8vIHRoYXQgbW92ZXMgZm9jdXMgbm90IHRoZSBuZXh0IGl0ZW0uIFRvIHdvcmsgYXJvdW5kIHRoZSBpc3N1ZSwgd2UgZGVmZXIgbWFya2luZyB0aGUgY2hpcFxuICAgIC8vIGFzIG5vdCBmb2N1c2VkIHVudGlsIHRoZSBuZXh0IHRpbWUgdGhlIHpvbmUgc3RhYmlsaXplcy5cbiAgICB0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuX2hhc0ZvY3VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2hpcEJsdXIubmV4dCh7IGNoaXA6IHRoaXMgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKGlzVXNlcklucHV0ID0gZmFsc2UpIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtcbiAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgIGlzVXNlcklucHV0LFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMuX3NlbGVjdGVkLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIFRoZSBBUklBIHNlbGVjdGVkIGFwcGxpZWQgdG8gdGhlIGNoaXAuICovXG4gIGdldCBhcmlhU2VsZWN0ZWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgLy8gUmVtb3ZlIHRoZSBgYXJpYS1zZWxlY3RlZGAgd2hlbiB0aGUgY2hpcCBpcyBkZXNlbGVjdGVkIGluIHNpbmdsZS1zZWxlY3Rpb24gbW9kZSwgYmVjYXVzZVxuICAgIC8vIGl0IGFkZHMgbm9pc2UgdG8gTlZEQSB1c2VycyB3aGVyZSBcIm5vdCBzZWxlY3RlZFwiIHdpbGwgYmUgcmVhZCBvdXQgZm9yIGVhY2ggY2hpcC5cbiAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlICYmICh0aGlzLl9jaGlwTGlzdE11bHRpcGxlIHx8IHRoaXMuc2VsZWN0ZWQpXG4gICAgICA/IHRoaXMuc2VsZWN0ZWQudG9TdHJpbmcoKVxuICAgICAgOiBudWxsO1xuICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48YnV0dG9uXG4gICpuZ0lmPVwiIWRpc2FibGVkICYmIChyZW1vdmFibGUgfHwgaW5wdXRDaGlwKVwiXG4gIGNsYXNzPVwiZ3Jhbml0ZS1jaGlwLXJlbW92ZVwiXG4gIChjbGljayk9XCJfaGFuZGxlUmVtb3ZlQ2xpY2soJGV2ZW50KVwiXG4+XG4gIDxncmFuaXRlLWljb25cbiAgICBmb250SWNvbj1cImljb24tZXJyb3Itc29saWRcIlxuICAgIGNsYXNzPVwiZ3Jhbml0ZS1jaGlwLXJlbW92ZS1pY29uXCJcbiAgICBbY2xhc3MuZ3Jhbml0ZS1jaGlwLXJlbW92ZS1pY29uLWludmFsaWRdPVwiaW52YWxpZFwiXG4gID48L2dyYW5pdGUtaWNvbj5cbjwvYnV0dG9uPlxuIl19
@@ -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
+ }
16
+ GraniteChipsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteChipsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
+ GraniteChipsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteChipsModule, declarations: [GraniteChipListComponent,
18
+ GraniteChipComponent,
19
+ GraniteChipInputDirective], imports: [CommonModule, FormsModule, ReactiveFormsModule, GraniteIconModule], exports: [GraniteChipListComponent,
20
+ GraniteChipComponent,
21
+ GraniteChipInputDirective] });
22
+ GraniteChipsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: GraniteChipsModule, imports: [[CommonModule, FormsModule, ReactiveFormsModule, GraniteIconModule]] });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9jaGlwcy9jaGlwcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFekQsTUFBTSxpQkFBaUIsR0FBRztJQUN4Qix3QkFBd0I7SUFDeEIsb0JBQW9CO0lBQ3BCLHlCQUF5QjtDQUMxQixDQUFDO0FBT0YsTUFBTSxPQUFPLGtCQUFrQjs7Z0hBQWxCLGtCQUFrQjtpSEFBbEIsa0JBQWtCLGlCQVY3Qix3QkFBd0I7UUFDeEIsb0JBQW9CO1FBQ3BCLHlCQUF5QixhQUlmLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLGFBTjNFLHdCQUF3QjtRQUN4QixvQkFBb0I7UUFDcEIseUJBQXlCO2lIQVFkLGtCQUFrQixZQUpwQixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUM7NEZBSWpFLGtCQUFrQjtrQkFMOUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDO29CQUM1RSxZQUFZLEVBQUUsaUJBQWlCO29CQUMvQixPQUFPLEVBQUUsaUJBQWlCO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBHcmFuaXRlSWNvbk1vZHVsZSB9IGZyb20gJy4uL2ljb24vaWNvbi5tb2R1bGUnO1xuaW1wb3J0IHsgR3Jhbml0ZUNoaXBMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jaGlwLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEdyYW5pdGVDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi9jaGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmFuaXRlQ2hpcElucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9jaGlwLWlucHV0JztcblxuY29uc3QgQ0hJUF9ERUNMQVJBVElPTlMgPSBbXG4gIEdyYW5pdGVDaGlwTGlzdENvbXBvbmVudCxcbiAgR3Jhbml0ZUNoaXBDb21wb25lbnQsXG4gIEdyYW5pdGVDaGlwSW5wdXREaXJlY3RpdmUsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgR3Jhbml0ZUljb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IENISVBfREVDTEFSQVRJT05TLFxuICBleHBvcnRzOiBDSElQX0RFQ0xBUkFUSU9OUyxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUNoaXBzTW9kdWxlIHt9XG4iXX0=