@firestitch/chip 18.0.2 → 18.0.4

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.
@@ -1,20 +1,25 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, forwardRef, HostBinding, Input, IterableDiffers, QueryList, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, forwardRef, Input, IterableDiffers, QueryList, ViewChild, } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';
3
4
  import { Subject } from 'rxjs';
4
5
  import { takeUntil } from 'rxjs/operators';
5
- import { FsChipComponent } from '../chip';
6
+ import { FsChipComponent } from '../chip/chip.component';
6
7
  import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@angular/cdk/drag-drop";
10
+ import * as i3 from "@angular/material/icon";
7
11
  export class FsChipsComponent {
8
12
  _cdRef;
9
13
  _iterable;
10
- classFsChips = true;
11
- classHasChips = false;
14
+ dropList;
12
15
  chips;
13
16
  compare;
14
17
  multiple = true;
18
+ sortable = false;
15
19
  onChange;
16
20
  onTouch;
17
21
  _value = [];
22
+ _selectable = false;
18
23
  _destroy$ = new Subject();
19
24
  _chipDiffer;
20
25
  constructor(_cdRef, _iterable) {
@@ -22,12 +27,13 @@ export class FsChipsComponent {
22
27
  this._iterable = _iterable;
23
28
  this._chipDiffer = this._iterable.find([]).create();
24
29
  }
25
- setDisabledState(isDisabled) {
26
- //
30
+ drop(event) {
31
+ moveItemInArray(this._value, event.previousIndex, event.currentIndex);
32
+ this.onChange(this._value);
27
33
  }
28
34
  ngAfterContentInit() {
29
- this._subscribeToSelectionChanges();
30
- this._subscribeToItemsChange();
35
+ this._subscribeToSelectionChange();
36
+ this._subscribeChanges();
31
37
  }
32
38
  set value(value) {
33
39
  if (this._value !== value) {
@@ -58,50 +64,48 @@ export class FsChipsComponent {
58
64
  _subscribeToSelectionChange() {
59
65
  const changed = this._chipDiffer.diff(this.chips);
60
66
  changed?.forEachAddedItem((change) => {
67
+ this._selectable = this.chips.some((chip) => chip.selectable);
61
68
  change.item.selectedToggled
62
69
  .pipe(takeUntil(change.item.destroy$), takeUntil(this._destroy$))
63
70
  .subscribe(({ selected, value }) => {
64
- if (!selected) {
65
- const valueIndex = this.value.findIndex((item) => {
66
- return this._compareFn(item, value);
67
- });
68
- if (valueIndex > -1) {
69
- this.value.splice(valueIndex, 1);
70
- this.onChange(this._value);
71
- this.onTouch(this._value);
71
+ if (this.multiple) {
72
+ if (selected) {
73
+ this.value.push(value);
74
+ }
75
+ else {
76
+ const valueIndex = this.value.findIndex((item) => {
77
+ return this._compareFn(item, value);
78
+ });
79
+ if (valueIndex > -1) {
80
+ this.value.splice(valueIndex, 1);
81
+ }
72
82
  }
73
83
  }
74
84
  else {
75
- this.value.push(value);
76
- this.onChange(this._value);
77
- this.onTouch(this._value);
85
+ this.chips
86
+ .forEach((chip) => {
87
+ if (!this._compareFn(chip.value, value)) {
88
+ chip.unselect();
89
+ }
90
+ });
91
+ this.value = selected ? value : null;
78
92
  }
93
+ this.onChange(this._value);
94
+ this.onTouch(this._value);
79
95
  });
80
96
  });
81
97
  }
82
- /**
83
- * Update ngModel value when selection changed
84
- */
85
- _subscribeToSelectionChanges() {
86
- this._subscribeToSelectionChange();
87
- this.chips.changes
88
- .pipe(takeUntil(this._destroy$))
89
- .subscribe(() => {
90
- this._subscribeToSelectionChange();
91
- });
92
- }
93
98
  /**
94
99
  * Update selection if item was added or removed
95
100
  */
96
- _subscribeToItemsChange() {
101
+ _subscribeChanges() {
97
102
  this.chips.changes
98
103
  .pipe(takeUntil(this._destroy$))
99
104
  .subscribe(() => {
100
- this.classHasChips = this.chips.length !== 0;
105
+ this._subscribeToSelectionChange();
101
106
  this._cdRef.markForCheck();
102
107
  this._updateChips();
103
108
  });
104
- this.classHasChips = this.chips.length !== 0;
105
109
  this._cdRef.markForCheck();
106
110
  }
107
111
  _compareFn(o1, o2) {
@@ -111,29 +115,31 @@ export class FsChipsComponent {
111
115
  return o1 === o2;
112
116
  }
113
117
  _updateChips() {
114
- if (this.multiple && Array.isArray(this.value) && this.chips) {
115
- this.chips.forEach((chip) => {
116
- const selected = this.value
117
- .some((o) => {
118
- return this._compareFn(o, chip.value);
118
+ if (this.multiple && this._selectable) {
119
+ if (Array.isArray(this.value)) {
120
+ this.chips.forEach((chip) => {
121
+ const selected = this.value
122
+ .some((item) => {
123
+ return this._compareFn(item, chip.value);
124
+ });
125
+ if (selected) {
126
+ chip.select();
127
+ }
128
+ else {
129
+ chip.unselect();
130
+ }
119
131
  });
120
- if (selected) {
121
- chip.select();
122
- }
123
- else {
124
- chip.unselect();
125
- }
126
- });
132
+ }
127
133
  }
128
134
  }
129
135
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
130
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsChipsComponent, selector: "fs-chips", inputs: { compare: "compare", multiple: "multiple" }, host: { properties: { "class.fs-chips": "this.classFsChips", "class.has-chips": "this.classHasChips" } }, providers: [
136
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsChipsComponent, selector: "fs-chips", inputs: { compare: "compare", multiple: "multiple", sortable: "sortable" }, providers: [
131
137
  {
132
138
  provide: NG_VALUE_ACCESSOR,
133
139
  useExisting: forwardRef(() => FsChipsComponent),
134
140
  multi: true,
135
141
  },
136
- ], queries: [{ propertyName: "chips", predicate: FsChipComponent }], ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-wrap:wrap}:host.has-chips{margin-top:-5px}:host ::ng-deep .fs-chip{margin-top:5px}:host ::ng-deep .fs-chip+.fs-chip{margin-left:5px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
142
+ ], queries: [{ propertyName: "chips", predicate: FsChipComponent }], viewQueries: [{ propertyName: "dropList", first: true, predicate: CdkDropList, descendants: true, static: true }], ngImport: i0, template: "@if (sortable) {\n <div\n class=\"fs-chips chips-sortable\"\n cdkDropList\n [cdkDropListLockAxis]=\"'y'\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (chip of chips; track chip) {\n <div\n class=\"chip-container\"\n cdkDrag\n [cdkDragPreviewClass]=\"'fs-chip-drag-preview'\">\n <a\n class=\"chip-handle\"\n mat-icon-button\n cdkDragHandle>\n <mat-icon>\n drag_indicator\n </mat-icon>\n </a>\n <ng-component [ngTemplateOutlet]=\"chip.templateRef\"></ng-component>\n </div>\n }\n </div>\n} @else {\n <div class=\"fs-chips\">\n @for (chip of chips; track chip) {\n <div class=\"chip-container\">\n <ng-component [ngTemplateOutlet]=\"chip.templateRef\"></ng-component>\n </div>\n }\n </div>\n}", styles: [".fs-chips{display:flex}.fs-chips:not(.chips-sortable){gap:5px}.fs-chips.chips-sortable{flex-direction:column}.fs-chips.chips-sortable .chip-container{display:flex;align-items:center}.fs-chips.chips-sortable .chip-container+.chip-container{border-top:7px solid transparent}.fs-chips.chips-sortable .chip-container .chip-handle{color:inherit;display:flex;align-items:center}.fs-chips.chips-sortable ::ng-deep .cdk-drag-placeholder{opacity:.3}.fs-chips .fs-chip-container{display:flex}::ng-deep .fs-chip-drag-preview{display:flex;overflow:visible}::ng-deep .fs-chip-drag-preview .chip-handle{color:inherit;display:flex;align-items:center}::ng-deep .fs-chip-drag-preview.chip-container .fs-chip{box-shadow:3px 3px 3px #c4c4c4}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
137
143
  }
138
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipsComponent, decorators: [{
139
145
  type: Component,
@@ -143,13 +149,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
143
149
  useExisting: forwardRef(() => FsChipsComponent),
144
150
  multi: true,
145
151
  },
146
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-wrap:wrap}:host.has-chips{margin-top:-5px}:host ::ng-deep .fs-chip{margin-top:5px}:host ::ng-deep .fs-chip+.fs-chip{margin-left:5px}\n"] }]
147
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }], propDecorators: { classFsChips: [{
148
- type: HostBinding,
149
- args: ['class.fs-chips']
150
- }], classHasChips: [{
151
- type: HostBinding,
152
- args: ['class.has-chips']
152
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (sortable) {\n <div\n class=\"fs-chips chips-sortable\"\n cdkDropList\n [cdkDropListLockAxis]=\"'y'\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (chip of chips; track chip) {\n <div\n class=\"chip-container\"\n cdkDrag\n [cdkDragPreviewClass]=\"'fs-chip-drag-preview'\">\n <a\n class=\"chip-handle\"\n mat-icon-button\n cdkDragHandle>\n <mat-icon>\n drag_indicator\n </mat-icon>\n </a>\n <ng-component [ngTemplateOutlet]=\"chip.templateRef\"></ng-component>\n </div>\n }\n </div>\n} @else {\n <div class=\"fs-chips\">\n @for (chip of chips; track chip) {\n <div class=\"chip-container\">\n <ng-component [ngTemplateOutlet]=\"chip.templateRef\"></ng-component>\n </div>\n }\n </div>\n}", styles: [".fs-chips{display:flex}.fs-chips:not(.chips-sortable){gap:5px}.fs-chips.chips-sortable{flex-direction:column}.fs-chips.chips-sortable .chip-container{display:flex;align-items:center}.fs-chips.chips-sortable .chip-container+.chip-container{border-top:7px solid transparent}.fs-chips.chips-sortable .chip-container .chip-handle{color:inherit;display:flex;align-items:center}.fs-chips.chips-sortable ::ng-deep .cdk-drag-placeholder{opacity:.3}.fs-chips .fs-chip-container{display:flex}::ng-deep .fs-chip-drag-preview{display:flex;overflow:visible}::ng-deep .fs-chip-drag-preview .chip-handle{color:inherit;display:flex;align-items:center}::ng-deep .fs-chip-drag-preview.chip-container .fs-chip{box-shadow:3px 3px 3px #c4c4c4}\n"] }]
153
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }], propDecorators: { dropList: [{
154
+ type: ViewChild,
155
+ args: [CdkDropList, { static: true }]
153
156
  }], chips: [{
154
157
  type: ContentChildren,
155
158
  args: [FsChipComponent]
@@ -157,5 +160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
157
160
  type: Input
158
161
  }], multiple: [{
159
162
  type: Input
163
+ }], sortable: [{
164
+ type: Input
160
165
  }] } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2NoaXBzL2NoaXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGlwcy9jaGlwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQzFDLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsZUFBZSxFQUVmLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFnQjFDLE1BQU0sT0FBTyxnQkFBZ0I7SUF1QmpCO0lBQ0E7SUFyQkgsWUFBWSxHQUFHLElBQUksQ0FBQztJQUdwQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBR3RCLEtBQUssQ0FBNkI7SUFFekIsT0FBTyxDQUFDO0lBRVIsUUFBUSxHQUFHLElBQUksQ0FBQztJQUV6QixRQUFRLENBQWtCO0lBQzFCLE9BQU8sQ0FBa0I7SUFFeEIsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNaLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFCLFdBQVcsQ0FBa0M7SUFFckQsWUFDVSxNQUF5QixFQUN6QixTQUEwQjtRQUQxQixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUVsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMs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aEIsT0FBTztzQkFBdEIsS0FBSztnQkFFVSxRQUFRO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBJdGVyYWJsZURpZmZlcixcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRnNDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hpcCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtY2hpcHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZzQ2hpcHNDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzQ2hpcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0IHtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZzLWNoaXBzJykgXG4gIHB1YmxpYyBjbGFzc0ZzQ2hpcHMgPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLWNoaXBzJykgXG4gIHB1YmxpYyBjbGFzc0hhc0NoaXBzID0gZmFsc2U7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihGc0NoaXBDb21wb25lbnQpXG4gIHB1YmxpYyBjaGlwczogUXVlcnlMaXN0PEZzQ2hpcENvbXBvbmVudD47XG5cbiAgQElucHV0KCkgcHVibGljIGNvbXBhcmU7XG5cbiAgQElucHV0KCkgcHVibGljIG11bHRpcGxlID0gdHJ1ZTtcblxuICBwdWJsaWMgb25DaGFuZ2U6ICh2YWx1ZSkgPT4gdm9pZDtcbiAgcHVibGljIG9uVG91Y2g6ICh2YWx1ZSkgPT4gdm9pZDtcblxuICBwcml2YXRlIF92YWx1ZSA9IFtdO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2NoaXBEaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPEZzQ2hpcENvbXBvbmVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX2l0ZXJhYmxlOiBJdGVyYWJsZURpZmZlcnMsXG4gICkge1xuICAgIHRoaXMuX2NoaXBEaWZmZXIgPSB0aGlzLl9pdGVyYWJsZS5maW5kKFtdKS5jcmVhdGUoKTtcbiAgfVxuICBcbiAgcHVibGljIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAvL1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb1NlbGVjdGlvbkNoYW5nZXMoKTtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb0l0ZW1zQ2hhbmdlKCk7XG4gIH1cbiBcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZSkge1xuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgICAgdGhpcy5vblRvdWNoKHRoaXMuX3ZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUNoaXBzKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbikge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm4pIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvU2VsZWN0aW9uQ2hhbmdlKCkge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9jaGlwRGlmZmVyLmRpZmYodGhpcy5jaGlwcyk7XG4gICAgY2hhbmdlZD8uZm9yRWFjaEFkZGVkSXRlbSgoY2hhbmdlKSA9PiB7XG4gICAgICBjaGFuZ2UuaXRlbS5zZWxlY3RlZFRvZ2dsZWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKGNoYW5nZS5pdGVtLmRlc3Ryb3kkKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHsgc2VsZWN0ZWQsIHZhbHVlIH0pID0+IHtcbiAgICAgICAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZUluZGV4ID0gdGhpcy52YWx1ZS5maW5kSW5kZXgoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVGbihpdGVtLCB2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlLnNwbGljZSh2YWx1ZUluZGV4LCAxKTtcblxuICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgICAgICAgdGhpcy5vblRvdWNoKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZS5wdXNoKHZhbHVlKTtcblxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2godGhpcy5fdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG5nTW9kZWwgdmFsdWUgd2hlbiBzZWxlY3Rpb24gY2hhbmdlZFxuICAgKi9cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9TZWxlY3Rpb25DaGFuZ2VzKCkge1xuICAgIHRoaXMuX3N1YnNjcmliZVRvU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgdGhpcy5jaGlwcy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb1NlbGVjdGlvbkNoYW5nZSgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHNlbGVjdGlvbiBpZiBpdGVtIHdhcyBhZGRlZCBvciByZW1vdmVkXG4gICAqL1xuICBwcml2YXRlIF9zdWJzY3JpYmVUb0l0ZW1zQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hpcHMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbGFzc0hhc0NoaXBzID0gdGhpcy5jaGlwcy5sZW5ndGggIT09IDA7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLl91cGRhdGVDaGlwcygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNsYXNzSGFzQ2hpcHMgPSB0aGlzLmNoaXBzLmxlbmd0aCAhPT0gMDtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBhcmVGbihvMSwgbzIpIHtcbiAgICBpZiAodGhpcy5jb21wYXJlKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlKG8xLCBvMik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG8xID09PSBvMjtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNoaXBzKCkge1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgdGhpcy5jaGlwcykge1xuICAgICAgdGhpcy5jaGlwcy5mb3JFYWNoKChjaGlwKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy52YWx1ZVxuICAgICAgICAgIC5zb21lKChvKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFyZUZuKG8sIGNoaXAudmFsdWUpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGlmKHNlbGVjdGVkKSB7XG4gICAgICAgICAgY2hpcC5zZWxlY3QoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGlwLnVuc2VsZWN0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gICAgXG4gIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2NoaXBzL2NoaXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGlwcy9jaGlwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQzFDLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLEtBQUssRUFFTCxlQUFlLEVBRWYsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFlLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBZ0J6RCxNQUFNLE9BQU8sZ0JBQWdCO0lBdUJqQjtJQUNBO0lBckJILFFBQVEsQ0FBYztJQUd0QixLQUFLLENBQTZCO0lBRXpCLE9BQU8sQ0FBQztJQUVSLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFFaEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUUxQixRQUFRLENBQWtCO0lBQzFCLE9BQU8sQ0FBa0I7SUFFeEIsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNaLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDcEIsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDMUIsV0FBVyxDQUFrQztJQUVyRCxZQUNVLE1BQXlCLEVBQ3pCLFNBQTBCO1FBRDFCLFdBQU0sR0FBTixNQUFNLENBQW1C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YUFHVDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQzs0QkFDL0MsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07b0hBS3hDLFFBQVE7c0JBRGQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqQyxLQUFLO3NCQURYLGVBQWU7dUJBQUMsZUFBZTtnQkFHaEIsT0FBTztzQkFBdEIsS0FBSztnQkFFVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgSXRlcmFibGVEaWZmZXIsXG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRnNDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hpcC9jaGlwLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtY2hpcHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZzQ2hpcHNDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzQ2hpcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0IHtcblxuICBAVmlld0NoaWxkKENka0Ryb3BMaXN0LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgZHJvcExpc3Q6IENka0Ryb3BMaXN0O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oRnNDaGlwQ29tcG9uZW50KVxuICBwdWJsaWMgY2hpcHM6IFF1ZXJ5TGlzdDxGc0NoaXBDb21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjb21wYXJlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBtdWx0aXBsZSA9IHRydWU7XG5cbiAgQElucHV0KCkgcHVibGljIHNvcnRhYmxlID0gZmFsc2U7XG5cbiAgcHVibGljIG9uQ2hhbmdlOiAodmFsdWUpID0+IHZvaWQ7XG4gIHB1YmxpYyBvblRvdWNoOiAodmFsdWUpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdmFsdWUgPSBbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0YWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2NoaXBEaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPEZzQ2hpcENvbXBvbmVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX2l0ZXJhYmxlOiBJdGVyYWJsZURpZmZlcnMsXG4gICkge1xuICAgIHRoaXMuX2NoaXBEaWZmZXIgPSB0aGlzLl9pdGVyYWJsZS5maW5kKFtdKS5jcmVhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5fdmFsdWUsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmliZVRvU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgdGhpcy5fc3Vic2NyaWJlQ2hhbmdlcygpO1xuICB9XG4gXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWUpIHtcbiAgICBpZiAodGhpcy5fdmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICAgIHRoaXMub25Ub3VjaCh0aGlzLl92YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVDaGlwcygpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm4pIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuKSB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb1NlbGVjdGlvbkNoYW5nZSgpIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5fY2hpcERpZmZlci5kaWZmKHRoaXMuY2hpcHMpO1xuICAgIGNoYW5nZWQ/LmZvckVhY2hBZGRlZEl0ZW0oKGNoYW5nZSkgPT4ge1xuICAgICAgdGhpcy5fc2VsZWN0YWJsZSA9IHRoaXMuY2hpcHMuc29tZSgoY2hpcCkgPT4gY2hpcC5zZWxlY3RhYmxlKTtcbiAgICAgIGNoYW5nZS5pdGVtLnNlbGVjdGVkVG9nZ2xlZFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwoY2hhbmdlLml0ZW0uZGVzdHJveSQpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoeyBzZWxlY3RlZCwgdmFsdWUgfSkgPT4ge1xuICAgICAgICAgIGlmKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVJbmRleCA9IHRoaXMudmFsdWUuZmluZEluZGV4KChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVGbihpdGVtLCB2YWx1ZSk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGlmICh2YWx1ZUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLnNwbGljZSh2YWx1ZUluZGV4LCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoaXBzXG4gICAgICAgICAgICAgIC5mb3JFYWNoKChjaGlwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoIXRoaXMuX2NvbXBhcmVGbihjaGlwLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgIGNoaXAudW5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gc2VsZWN0ZWQgPyB2YWx1ZSA6IG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgICAgICAgdGhpcy5vblRvdWNoKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHNlbGVjdGlvbiBpZiBpdGVtIHdhcyBhZGRlZCBvciByZW1vdmVkXG4gICAqL1xuICBwcml2YXRlIF9zdWJzY3JpYmVDaGFuZ2VzKCkge1xuICAgIHRoaXMuY2hpcHMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9TZWxlY3Rpb25DaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNoaXBzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcGFyZUZuKG8xLCBvMikge1xuICAgIGlmICh0aGlzLmNvbXBhcmUpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUobzEsIG8yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbzEgPT09IG8yO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQ2hpcHMoKSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5fc2VsZWN0YWJsZSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5jaGlwcy5mb3JFYWNoKChjaGlwKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZhbHVlXG4gICAgICAgICAgICAuc29tZSgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFyZUZuKGl0ZW0sIGNoaXAudmFsdWUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZihzZWxlY3RlZCkge1xuICAgICAgICAgICAgY2hpcC5zZWxlY3QoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hpcC51bnNlbGVjdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAaWYgKHNvcnRhYmxlKSB7XG4gIDxkaXZcbiAgICAgIGNsYXNzPVwiZnMtY2hpcHMgY2hpcHMtc29ydGFibGVcIlxuICAgICAgY2RrRHJvcExpc3RcbiAgICAgIFtjZGtEcm9wTGlzdExvY2tBeGlzXT1cIid5J1wiXG4gICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICAgIEBmb3IgKGNoaXAgb2YgY2hpcHM7IHRyYWNrIGNoaXApIHtcbiAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNoaXAtY29udGFpbmVyXCJcbiAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgW2Nka0RyYWdQcmV2aWV3Q2xhc3NdPVwiJ2ZzLWNoaXAtZHJhZy1wcmV2aWV3J1wiPlxuICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwLWhhbmRsZVwiXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgIGNka0RyYWdIYW5kbGU+XG4gICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgZHJhZ19pbmRpY2F0b3JcbiAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxuZy1jb21wb25lbnQgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpcC50ZW1wbGF0ZVJlZlwiPjwvbmctY29tcG9uZW50PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbn0gQGVsc2Uge1xuICA8ZGl2IGNsYXNzPVwiZnMtY2hpcHNcIj5cbiAgICBAZm9yIChjaGlwIG9mIGNoaXBzOyB0cmFjayBjaGlwKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbXBvbmVudCBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlwLnRlbXBsYXRlUmVmXCI+PC9uZy1jb21wb25lbnQ+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufSJdfQ==
@@ -1,23 +1,28 @@
1
- import { NgModule } from '@angular/core';
2
1
  import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { DragDropModule } from '@angular/cdk/drag-drop';
3
4
  import { MatIconModule } from '@angular/material/icon';
4
5
  import { FsLabelModule } from '@firestitch/label';
5
- import { FsChipsComponent } from './components/chips/chips.component';
6
+ import { FsChipActionComponent } from './components/chip-action/chip-action.component';
6
7
  import { FsChipComponent } from './components/chip/chip.component';
8
+ import { FsChipsComponent } from './components/chips/chips.component';
7
9
  import * as i0 from "@angular/core";
8
10
  export class FsChipModule {
9
11
  static forRoot() {
10
12
  return {
11
- ngModule: FsChipModule
13
+ ngModule: FsChipModule,
12
14
  };
13
15
  }
14
16
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
17
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: FsChipModule, declarations: [FsChipsComponent,
16
- FsChipComponent], imports: [CommonModule,
18
+ FsChipComponent,
19
+ FsChipActionComponent], imports: [CommonModule,
20
+ DragDropModule,
17
21
  MatIconModule,
18
22
  FsLabelModule], exports: [FsChipsComponent,
19
23
  FsChipComponent] });
20
24
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipModule, imports: [CommonModule,
25
+ DragDropModule,
21
26
  MatIconModule,
22
27
  FsLabelModule] });
23
28
  }
@@ -26,8 +31,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
26
31
  args: [{
27
32
  imports: [
28
33
  CommonModule,
34
+ DragDropModule,
29
35
  MatIconModule,
30
- FsLabelModule
36
+ FsLabelModule,
31
37
  ],
32
38
  exports: [
33
39
  FsChipsComponent,
@@ -36,7 +42,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
36
42
  declarations: [
37
43
  FsChipsComponent,
38
44
  FsChipComponent,
39
- ]
45
+ FsChipActionComponent,
46
+ ],
40
47
  }]
41
48
  }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtY2hpcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2ZzLWNoaXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFpQm5FLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxZQUFZO1NBQ3ZCLENBQUM7SUFDSixDQUFDO3VHQUxVLFlBQVk7d0dBQVosWUFBWSxpQkFKckIsZ0JBQWdCO1lBQ2hCLGVBQWUsYUFWZixZQUFZO1lBQ1osYUFBYTtZQUNiLGFBQWEsYUFHYixnQkFBZ0I7WUFDaEIsZUFBZTt3R0FPTixZQUFZLFlBYnJCLFlBQVk7WUFDWixhQUFhO1lBQ2IsYUFBYTs7MkZBV0osWUFBWTtrQkFmeEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTtxQkFDaEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGdCQUFnQjt3QkFDaEIsZUFBZTtxQkFDaEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuaW1wb3J0IHsgRnNMYWJlbE1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2xhYmVsJztcblxuaW1wb3J0IHsgRnNDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGlwcy9jaGlwcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnNDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NoaXAvY2hpcC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgRnNMYWJlbE1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRnNDaGlwc0NvbXBvbmVudCxcbiAgICBGc0NoaXBDb21wb25lbnQsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEZzQ2hpcHNDb21wb25lbnQsXG4gICAgRnNDaGlwQ29tcG9uZW50LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZzQ2hpcE1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RnNDaGlwTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBGc0NoaXBNb2R1bGVcbiAgICB9O1xuICB9XG59XG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtY2hpcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2ZzLWNoaXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBcUJ0RSxNQUFNLE9BQU8sWUFBWTtJQUNoQixNQUFNLENBQUMsT0FBTztRQUNuQixPQUFPO1lBQ0wsUUFBUSxFQUFFLFlBQVk7U0FDdkIsQ0FBQztJQUNKLENBQUM7dUdBTFUsWUFBWTt3R0FBWixZQUFZLGlCQUxyQixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLHFCQUFxQixhQWRyQixZQUFZO1lBRVosY0FBYztZQUNkLGFBQWE7WUFFYixhQUFhLGFBR2IsZ0JBQWdCO1lBQ2hCLGVBQWU7d0dBUU4sWUFBWSxZQWpCckIsWUFBWTtZQUVaLGNBQWM7WUFDZCxhQUFhO1lBRWIsYUFBYTs7MkZBWUosWUFBWTtrQkFuQnhCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBRVosY0FBYzt3QkFDZCxhQUFhO3dCQUViLGFBQWE7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTtxQkFDaEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixxQkFBcUI7cUJBQ3RCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbmltcG9ydCB7IEZzTGFiZWxNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9sYWJlbCc7XG5cbmltcG9ydCB7IEZzQ2hpcEFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGlwLWFjdGlvbi9jaGlwLWFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnNDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NoaXAvY2hpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnNDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGlwcy9jaGlwcy5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcblxuICAgIEZzTGFiZWxNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGc0NoaXBzQ29tcG9uZW50LFxuICAgIEZzQ2hpcENvbXBvbmVudCxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRnNDaGlwc0NvbXBvbmVudCxcbiAgICBGc0NoaXBDb21wb25lbnQsXG4gICAgRnNDaGlwQWN0aW9uQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0NoaXBNb2R1bGUge1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGc0NoaXBNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEZzQ2hpcE1vZHVsZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,7 +1,4 @@
1
- /*
2
- * Public API Surface of fs-menu
3
- */
4
1
  export { FsChipModule } from './app/fs-chip.module';
5
- export { FsChipsComponent } from './app/components/chips/chips.component';
6
2
  export { FsChipComponent } from './app/components/chip/chip.component';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgZnMtbWVudVxuICovXG5cbmV4cG9ydCB7IEZzQ2hpcE1vZHVsZSB9IGZyb20gJy4vYXBwL2ZzLWNoaXAubW9kdWxlJztcblxuXG5leHBvcnQgeyBGc0NoaXBzQ29tcG9uZW50IH0gZnJvbSAnLi9hcHAvY29tcG9uZW50cy9jaGlwcy9jaGlwcy5jb21wb25lbnQnO1xuZXhwb3J0IHsgRnNDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi9hcHAvY29tcG9uZW50cy9jaGlwL2NoaXAuY29tcG9uZW50JzsiXX0=
3
+ export { FsChipsComponent } from './app/components/chips/chips.component';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBGc0NoaXBNb2R1bGUgfSBmcm9tICcuL2FwcC9mcy1jaGlwLm1vZHVsZSc7XG5cbmV4cG9ydCB7IEZzQ2hpcENvbXBvbmVudCB9IGZyb20gJy4vYXBwL2NvbXBvbmVudHMvY2hpcC9jaGlwLmNvbXBvbmVudCc7XG5leHBvcnQgeyBGc0NoaXBzQ29tcG9uZW50IH0gZnJvbSAnLi9hcHAvY29tcG9uZW50cy9jaGlwcy9jaGlwcy5jb21wb25lbnQnO1xuXG4iXX0=