@firestitch/chip 18.0.6 → 18.0.8

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,9 +1,8 @@
1
- import { ChangeDetectorRef, EventEmitter, Injector, OnChanges, OnDestroy, SimpleChanges, TemplateRef } from '@angular/core';
1
+ import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, SimpleChanges, TemplateRef } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class FsChipComponent implements OnDestroy, OnChanges {
5
5
  private _cdRef;
6
- private _injector;
7
6
  templateRef: TemplateRef<void>;
8
7
  selectable: boolean;
9
8
  removable: boolean;
@@ -29,11 +28,11 @@ export declare class FsChipComponent implements OnDestroy, OnChanges {
29
28
  removed: EventEmitter<any>;
30
29
  styles: any;
31
30
  classes: any;
31
+ hasChips: boolean;
32
32
  private _destroy$;
33
33
  private _selected;
34
- constructor(_cdRef: ChangeDetectorRef, _injector: Injector);
34
+ constructor(_cdRef: ChangeDetectorRef);
35
35
  set setSize(value: any);
36
- get hasChips(): boolean;
37
36
  click(): void;
38
37
  select(): void;
39
38
  unselect(): void;
@@ -1,4 +1,4 @@
1
- import { AfterContentInit, ChangeDetectorRef, IterableDiffers, OnDestroy, QueryList } from '@angular/core';
1
+ import { AfterContentInit, ChangeDetectorRef, EventEmitter, IterableDiffers, OnDestroy, QueryList } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
3
  import { CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';
4
4
  import { FsChipComponent } from '../chip/chip.component';
@@ -11,6 +11,8 @@ export declare class FsChipsComponent implements OnDestroy, ControlValueAccessor
11
11
  compare: any;
12
12
  multiple: boolean;
13
13
  sortable: boolean;
14
+ selected: any[];
15
+ selectedChange: EventEmitter<any>;
14
16
  onChange: (value: any) => void;
15
17
  onTouch: (value: any) => void;
16
18
  private _value;
@@ -20,9 +22,13 @@ export declare class FsChipsComponent implements OnDestroy, ControlValueAccessor
20
22
  constructor(_cdRef: ChangeDetectorRef, _iterable: IterableDiffers);
21
23
  drop(event: CdkDragDrop<string[]>): void;
22
24
  ngAfterContentInit(): void;
25
+ sortPredicate: (index: number) => boolean;
23
26
  set value(value: any[]);
24
27
  get value(): any[];
25
28
  ngOnDestroy(): void;
29
+ select(chip: FsChipComponent): void;
30
+ unselect(chip: FsChipComponent): void;
31
+ updateSelected(): void;
26
32
  writeValue(value: any): void;
27
33
  registerOnChange(fn: any): void;
28
34
  registerOnTouched(fn: any): void;
@@ -34,5 +40,5 @@ export declare class FsChipsComponent implements OnDestroy, ControlValueAccessor
34
40
  private _compareFn;
35
41
  private _updateChips;
36
42
  static ɵfac: i0.ɵɵFactoryDeclaration<FsChipsComponent, never>;
37
- static ɵcmp: i0.ɵɵComponentDeclaration<FsChipsComponent, "fs-chips", never, { "compare": { "alias": "compare"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; }, {}, ["chips"], never, false, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<FsChipsComponent, "fs-chips", never, { "compare": { "alias": "compare"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; }, { "selectedChange": "selectedChange"; }, ["chips"], never, false, never>;
38
44
  }
@@ -1,13 +1,11 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Injector, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
- import { FsChipsComponent } from '../chips/chips.component';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "@angular/common";
6
5
  import * as i2 from "@angular/material/icon";
7
6
  import * as i3 from "../chip-action/chip-action.component";
8
7
  export class FsChipComponent {
9
8
  _cdRef;
10
- _injector;
11
9
  templateRef;
12
10
  selectable = false;
13
11
  removable = true;
@@ -32,20 +30,17 @@ export class FsChipComponent {
32
30
  removed = new EventEmitter();
33
31
  styles = {};
34
32
  classes = {};
33
+ hasChips;
35
34
  _destroy$ = new Subject();
36
35
  _selected = false;
37
- constructor(_cdRef, _injector) {
36
+ constructor(_cdRef) {
38
37
  this._cdRef = _cdRef;
39
- this._injector = _injector;
40
38
  }
41
39
  set setSize(value) {
42
40
  this.classes['size-small'] = value === 'small';
43
41
  this.classes['size-tiny'] = value === 'tiny';
44
42
  this.classes['size-micro'] = value === 'micro';
45
43
  }
46
- get hasChips() {
47
- return !!this._injector.get(FsChipsComponent, null, { optional: true });
48
- }
49
44
  click() {
50
45
  if (this.selectable) {
51
46
  this.setSelected = !this.selected;
@@ -132,13 +127,13 @@ export class FsChipComponent {
132
127
  }
133
128
  this._cdRef.markForCheck();
134
129
  }
135
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
130
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
136
131
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsChipComponent, selector: "fs-chip", inputs: { selectable: "selectable", removable: "removable", value: "value", maxWidth: "maxWidth", width: "width", backgroundColor: "backgroundColor", borderColor: "borderColor", color: "color", outlined: "outlined", actions: "actions", icon: "icon", image: "image", setSelected: ["selected", "setSelected"], setSize: ["size", "setSize"] }, outputs: { selectedToggled: "selectedToggled", removed: "removed" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template>\n <div\n class=\"fs-chip\"\n (click)=\"click()\"\n [ngStyle]=\"styles\"\n [ngClass]=\"classes\">\n <ng-container *ngIf=\"image\">\n <img\n [src]=\"image\"\n class=\"image\"\n alt=\"\">\n </ng-container>\n <ng-container *ngIf=\"icon\">\n <mat-icon class=\"icon\">\n {{ icon }}\n </mat-icon>\n </ng-container>\n <div\n class=\"fs-chip-content\"\n [ngStyle]=\"{ 'max-width': maxWidth }\">\n <ng-content></ng-content>\n </div>\n @if (selected) {\n <div class=\"selected-check\">\n <mat-icon [style.color]=\"styles.color\">\n check\n </mat-icon>\n </div>\n }\n @if (actions) {\n <div class=\"actions\">\n @for (action of actions; track action.icon) {\n <fs-chip-action\n [icon]=\"action.icon\"\n [link]=\"action.link\"\n [linkTarget]=\"action.linkTarget\"\n [color]=\"styles.color\"\n (actionClick)=\"actionClick(action, $event)\">\n </fs-chip-action>\n }\n </div>\n }\n </div>\n</ng-template>\n@if (!hasChips) {\n <ng-container [ngTemplateOutlet]=\"templateRef\"></ng-container>\n}", styles: [".fs-chip{-webkit-user-select:none;user-select:none;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);display:inline-flex;padding:0 12px;border-radius:16px;align-items:center;cursor:default;height:30px;background-color:#e7e7e7;overflow:hidden}.fs-chip.imaged{overflow:visible;padding-left:0;vertical-align:middle}.fs-chip.imaged.outlined .image{margin-left:-2px}.fs-chip.iconed:not(.imaged){padding-left:5px}.fs-chip.actionable,.fs-chip.selected{padding-right:3px}.fs-chip.selectable{cursor:pointer}.fs-chip.outlined{background-color:transparent;border:1px solid #e0e0e0;box-sizing:border-box}.fs-chip .icon{margin-right:5px}.fs-chip mat-icon{font-size:25px}.fs-chip .actions{display:flex;flex-direction:row;margin-left:5px}.fs-chip .image{height:30px;width:30px;border-radius:50%;object-fit:cover;margin-left:-1px;margin-right:8px}.fs-chip .fs-chip-content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fs-chip .selected-check{margin:0 5px;display:flex}.fs-chip fs-chip-action{display:flex;cursor:pointer}.fs-chip.size-micro{padding:0 5px;height:16px;line-height:normal}.fs-chip.size-micro .fs-chip-content{font-size:65%}.fs-chip.size-micro .image{height:100%;width:16px;margin-right:2px}.fs-chip.size-micro fs-chip-action{margin-left:1px}.fs-chip.size-micro .selected-check{margin:0 1px 0 0}.fs-chip.size-micro.imaged{padding-left:0}.fs-chip.size-micro.actionable,.fs-chip.size-micro.selected{padding-right:0}.fs-chip.size-micro mat-icon{width:12px;height:12px;font-size:11px}.fs-chip.size-tiny{padding:0 6px;height:18px;line-height:normal}.fs-chip.size-tiny .fs-chip-content{font-size:75%}.fs-chip.size-tiny .image{height:18px;width:18px;margin-right:3px}.fs-chip.size-tiny.iconed:not(.imaged){padding-left:3px}.fs-chip.size-tiny fs-chip-action{margin-left:2px;margin-right:2px}.fs-chip.size-tiny .selected-check{margin:0 1px 0 0}.fs-chip.size-tiny.imaged{padding-left:0}.fs-chip.size-tiny.actionable,.fs-chip.size-tiny.selected{padding-right:0}.fs-chip.size-tiny mat-icon{height:13px;width:13px;font-size:13px}.fs-chip.size-small{padding:0 8px;font-size:85%;height:25px;line-height:normal}.fs-chip.size-small .image{height:25px;width:25px;margin-right:5px}.fs-chip.size-small.iconed:not(.imaged){padding-left:4px}.fs-chip.size-small.imaged{padding-left:0}.fs-chip.size-small fs-chip-action{margin-right:2px}.fs-chip.size-small .selected-check{margin:0 2px 0 0}.fs-chip.size-small .selected-check mat-icon{transform:scale(.7)}.fs-chip.size-small.actionable,.fs-chip.size-small.selected{padding-right:0}.fs-chip.size-small mat-icon{height:22px;width:22px;font-size:22px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.FsChipActionComponent, selector: "fs-chip-action", inputs: ["icon", "link", "linkTarget", "color"], outputs: ["actionClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
137
132
  }
138
133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipComponent, decorators: [{
139
134
  type: Component,
140
135
  args: [{ selector: 'fs-chip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template>\n <div\n class=\"fs-chip\"\n (click)=\"click()\"\n [ngStyle]=\"styles\"\n [ngClass]=\"classes\">\n <ng-container *ngIf=\"image\">\n <img\n [src]=\"image\"\n class=\"image\"\n alt=\"\">\n </ng-container>\n <ng-container *ngIf=\"icon\">\n <mat-icon class=\"icon\">\n {{ icon }}\n </mat-icon>\n </ng-container>\n <div\n class=\"fs-chip-content\"\n [ngStyle]=\"{ 'max-width': maxWidth }\">\n <ng-content></ng-content>\n </div>\n @if (selected) {\n <div class=\"selected-check\">\n <mat-icon [style.color]=\"styles.color\">\n check\n </mat-icon>\n </div>\n }\n @if (actions) {\n <div class=\"actions\">\n @for (action of actions; track action.icon) {\n <fs-chip-action\n [icon]=\"action.icon\"\n [link]=\"action.link\"\n [linkTarget]=\"action.linkTarget\"\n [color]=\"styles.color\"\n (actionClick)=\"actionClick(action, $event)\">\n </fs-chip-action>\n }\n </div>\n }\n </div>\n</ng-template>\n@if (!hasChips) {\n <ng-container [ngTemplateOutlet]=\"templateRef\"></ng-container>\n}", styles: [".fs-chip{-webkit-user-select:none;user-select:none;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);display:inline-flex;padding:0 12px;border-radius:16px;align-items:center;cursor:default;height:30px;background-color:#e7e7e7;overflow:hidden}.fs-chip.imaged{overflow:visible;padding-left:0;vertical-align:middle}.fs-chip.imaged.outlined .image{margin-left:-2px}.fs-chip.iconed:not(.imaged){padding-left:5px}.fs-chip.actionable,.fs-chip.selected{padding-right:3px}.fs-chip.selectable{cursor:pointer}.fs-chip.outlined{background-color:transparent;border:1px solid #e0e0e0;box-sizing:border-box}.fs-chip .icon{margin-right:5px}.fs-chip mat-icon{font-size:25px}.fs-chip .actions{display:flex;flex-direction:row;margin-left:5px}.fs-chip .image{height:30px;width:30px;border-radius:50%;object-fit:cover;margin-left:-1px;margin-right:8px}.fs-chip .fs-chip-content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fs-chip .selected-check{margin:0 5px;display:flex}.fs-chip fs-chip-action{display:flex;cursor:pointer}.fs-chip.size-micro{padding:0 5px;height:16px;line-height:normal}.fs-chip.size-micro .fs-chip-content{font-size:65%}.fs-chip.size-micro .image{height:100%;width:16px;margin-right:2px}.fs-chip.size-micro fs-chip-action{margin-left:1px}.fs-chip.size-micro .selected-check{margin:0 1px 0 0}.fs-chip.size-micro.imaged{padding-left:0}.fs-chip.size-micro.actionable,.fs-chip.size-micro.selected{padding-right:0}.fs-chip.size-micro mat-icon{width:12px;height:12px;font-size:11px}.fs-chip.size-tiny{padding:0 6px;height:18px;line-height:normal}.fs-chip.size-tiny .fs-chip-content{font-size:75%}.fs-chip.size-tiny .image{height:18px;width:18px;margin-right:3px}.fs-chip.size-tiny.iconed:not(.imaged){padding-left:3px}.fs-chip.size-tiny fs-chip-action{margin-left:2px;margin-right:2px}.fs-chip.size-tiny .selected-check{margin:0 1px 0 0}.fs-chip.size-tiny.imaged{padding-left:0}.fs-chip.size-tiny.actionable,.fs-chip.size-tiny.selected{padding-right:0}.fs-chip.size-tiny mat-icon{height:13px;width:13px;font-size:13px}.fs-chip.size-small{padding:0 8px;font-size:85%;height:25px;line-height:normal}.fs-chip.size-small .image{height:25px;width:25px;margin-right:5px}.fs-chip.size-small.iconed:not(.imaged){padding-left:4px}.fs-chip.size-small.imaged{padding-left:0}.fs-chip.size-small fs-chip-action{margin-right:2px}.fs-chip.size-small .selected-check{margin:0 2px 0 0}.fs-chip.size-small .selected-check mat-icon{transform:scale(.7)}.fs-chip.size-small.actionable,.fs-chip.size-small.selected{padding-right:0}.fs-chip.size-small mat-icon{height:22px;width:22px;font-size:22px}\n"] }]
141
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }], propDecorators: { templateRef: [{
136
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { templateRef: [{
142
137
  type: ViewChild,
143
138
  args: [TemplateRef, { static: true }]
144
139
  }], selectable: [{
@@ -176,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
176
171
  type: Input,
177
172
  args: ['size']
178
173
  }] } });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2hpcC9jaGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGlwL2NoaXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBR0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFTNUQsTUFBTSxPQUFPLGVBQWU7SUErRGhCO0lBQ0E7SUE3REgsV0FBVyxDQUFvQjtJQUcvQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBR25CLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFHakIsS0FBSyxDQUFNO0lBR1gsUUFBUSxDQUFTO0lBR2pCLEtBQUssQ0FBUztJQUVMLGVBQWUsQ0FBQztJQUVoQixXQUFXLENBQUM7SUFFWixLQUFLLENBQUM7SUFFTixRQUFRLENBQUM7SUFHbEIsT0FBTyxHQU1SLEVBQUUsQ0FBQztJQUdGLElBQUksQ0FBUztJQUdiLEtBQUssQ0FBUztJQUVyQixJQUNXLFdBQVcsQ0FBQyxLQUFjO1FBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRWdCLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3JDLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXZDLE1BQU0sR0FBUSxFQUFFLENBQUM7SUFDakIsT0FBTyxHQUFRLEVBQUUsQ0FBQztJQUVqQixTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMxQixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRTFCLFlBQ1UsTUFBeUIsRUFDekIsU0FBbUI7UUFEbkIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBVTtJQUMxQixDQUFDO0lBRUosSUFBMEIsT0FBTyxDQUFDLEtBQUs7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLEtBQUssT0FBTyxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxLQUFLLE1BQU0sQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssS0FBSyxPQUFPLENBQUM7SUFDakQsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTzthQUN4QixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7UUFFaEQsSUFBRyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxJQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDaEIsSUFBSSxFQUFFLHVCQUF1QjtnQkFDN0IsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDcEMsSUFBSSxFQUFFLFFBQVE7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFpQjtRQUMxQyxJQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBaUI7UUFDN0IsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDakMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxRQUFRO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBRXZELE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRXRDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNqQyxDQUFDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMxRixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBRWpDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdCLENBQUM7dUdBdkxVLGVBQWU7MkZBQWYsZUFBZSxxZkFFZixXQUFXLG1GQzNCeEIsc3RDQThDQzs7MkZEckJZLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0UsU0FBUyxtQkFHRix1QkFBdUIsQ0FBQyxNQUFNOzZHQUt4QyxXQUFXO3NCQURqQixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWpDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUdVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBRVUsV0FBVztzQkFBMUIsS0FBSztnQkFFVSxLQUFLO3NCQUFwQixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQVVDLElBQUk7c0JBRFYsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUssV0FBVztzQkFEckIsS0FBSzt1QkFBQyxVQUFVO2dCQVVBLGVBQWU7c0JBQS9CLE1BQU07Z0JBQ1UsT0FBTztzQkFBdkIsTUFBTTtnQkFhbUIsT0FBTztzQkFBaEMsS0FBSzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGc0NoaXBzQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hpcHMvY2hpcHMuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1jaGlwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoaXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGlwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0NoaXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG5cbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IHRydWUgfSkgXG4gIHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgQElucHV0KCkgXG4gIHB1YmxpYyBzZWxlY3RhYmxlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlbW92YWJsZSA9IHRydWU7XG5cbiAgQElucHV0KCkgXG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuXG4gIEBJbnB1dCgpIFxuICBwdWJsaWMgbWF4V2lkdGg6IHN0cmluZztcblxuICBASW5wdXQoKSBcbiAgcHVibGljIHdpZHRoOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgcHVibGljIGJhY2tncm91bmRDb2xvcjtcblxuICBASW5wdXQoKSBwdWJsaWMgYm9yZGVyQ29sb3I7XG5cbiAgQElucHV0KCkgcHVibGljIGNvbG9yO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBvdXRsaW5lZDtcblxuICBASW5wdXQoKSBcbiAgcHVibGljIGFjdGlvbnM6IHtcbiAgICBpY29uOiBzdHJpbmcsIFxuICAgIGNsaWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQsIFxuICAgIHR5cGU/OiAncmVtb3ZlJyxcbiAgICBsaW5rPzogc3RyaW5nLFxuICAgIGxpbmtUYXJnZXQ/OiBzdHJpbmcsXG4gIH1bXSA9IFtdO1xuXG4gIEBJbnB1dCgpIFxuICBwdWJsaWMgaWNvbjogc3RyaW5nO1xuICBcbiAgQElucHV0KCkgXG4gIHB1YmxpYyBpbWFnZTogc3RyaW5nO1xuICBcbiAgQElucHV0KCdzZWxlY3RlZCcpIFxuICBwdWJsaWMgc2V0IHNldFNlbGVjdGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5jbGFzc2VzLnNlbGVjdGVkID0gdmFsdWU7XG4gICAgdGhpcy5fc2VsZWN0ZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICB9XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZFRvZ2dsZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgc3R5bGVzOiBhbnkgPSB7fTtcbiAgcHVibGljIGNsYXNzZXM6IGFueSA9IHt9O1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICApIHt9XG5cbiAgQElucHV0KCdzaXplJykgcHVibGljIHNldCBzZXRTaXplKHZhbHVlKSB7XG4gICAgdGhpcy5jbGFzc2VzWydzaXplLXNtYWxsJ10gPSB2YWx1ZSA9PT0gJ3NtYWxsJztcbiAgICB0aGlzLmNsYXNzZXNbJ3NpemUtdGlueSddID0gdmFsdWUgPT09ICd0aW55JztcbiAgICB0aGlzLmNsYXNzZXNbJ3NpemUtbWljcm8nXSA9IHZhbHVlID09PSAnbWljcm8nO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNDaGlwcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9pbmplY3Rvci5nZXQoRnNDaGlwc0NvbXBvbmVudCwgbnVsbCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGljaygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLnNldFNlbGVjdGVkID0gIXRoaXMuc2VsZWN0ZWQ7XG4gICAgICB0aGlzLnNlbGVjdGVkVG9nZ2xlZC5lbWl0KHsgdmFsdWU6IHRoaXMudmFsdWUsIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3QoKSB7XG4gICAgdGhpcy5zZXRTZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgdW5zZWxlY3QoKSB7XG4gICAgdGhpcy5zZXRTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXN0cm95JCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9kZXN0cm95JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5hY3Rpb25zID0gdGhpcy5hY3Rpb25zXG4gICAgICAuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi50eXBlICE9PSAncmVtb3ZlJyk7XG5cbiAgICBpZihjaGFuZ2VzLnNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuY2xhc3Nlcy5zZWxlY3RhYmxlID0gdGhpcy5zZWxlY3RhYmxlO1xuICAgIH1cblxuICAgIGlmKGNoYW5nZXMucmVtb3ZhYmxlKSB7XG4gICAgICB0aGlzLmNsYXNzZXMucmVtb3ZhYmxlID0gdGhpcy5yZW1vdmFibGU7XG4gICAgfVxuXG4gICAgaWYoY2hhbmdlcy5pY29uKSB7XG4gICAgICB0aGlzLmNsYXNzZXMuaWNvbmVkID0gISF0aGlzLmljb247XG4gICAgfVxuXG4gICAgaWYoY2hhbmdlcy5pbWFnZSkge1xuICAgICAgdGhpcy5jbGFzc2VzLmltYWdlZCA9ICEhdGhpcy5pbWFnZTtcbiAgICB9XG5cbiAgICBpZih0aGlzLnJlbW92ZWQub2JzZXJ2ZWQgJiYgdGhpcy5yZW1vdmFibGUpIHtcbiAgICAgIHRoaXMuYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgaWNvbjogJ3JlbW92ZV9jaXJjbGVfb3V0bGluZScsXG4gICAgICAgIGNsaWNrOiAoZXZlbnQpID0+IHRoaXMucmVtb3ZlKGV2ZW50KSxcbiAgICAgICAgdHlwZTogJ3JlbW92ZScsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNsYXNzZXMuYWN0aW9uYWJsZSA9IHRoaXMuYWN0aW9ucy5sZW5ndGggIT09IDA7XG5cbiAgICB0aGlzLl91cGRhdGVTdHlsZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhY3Rpb25DbGljayhhY3Rpb24sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYoYWN0aW9uLmNsaWNrKSB7XG4gICAgICBhY3Rpb24uY2xpY2soZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZW1vdmVkLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNDb250cmFzdFlJUUJsYWNrKGhleGNvbG9yKSB7XG4gICAgaWYgKCFoZXhjb2xvcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaGV4Y29sb3IgPSBoZXhjb2xvci5yZXBsYWNlKCcjJywgJycpO1xuICAgIGNvbnN0IHIgPSBwYXJzZUludChoZXhjb2xvci5zdWJzdHIoMCwgMiksIDE2KTtcbiAgICBjb25zdCBnID0gcGFyc2VJbnQoaGV4Y29sb3Iuc3Vic3RyKDIsIDIpLCAxNik7XG4gICAgY29uc3QgYiA9IHBhcnNlSW50KGhleGNvbG9yLnN1YnN0cig0LCAyKSwgMTYpO1xuICAgIGNvbnN0IHlpcSA9ICgociAqIDI5OSkgKyAoZyAqIDU4NykgKyAoYiAqIDExNCkpIC8gMTAwMDtcblxuICAgIHJldHVybiB5aXEgPj0gMjAwO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlU3R5bGVzKCkge1xuICAgIHRoaXMuc3R5bGVzLmJhY2tncm91bmRDb2xvciA9IHRoaXMuYmFja2dyb3VuZENvbG9yO1xuICAgIHRoaXMuc3R5bGVzLmJvcmRlckNvbG9yID0gdGhpcy5ib3JkZXJDb2xvcjtcbiAgICB0aGlzLnN0eWxlcy53aWR0aCA9IHRoaXMud2lkdGg7XG4gICAgdGhpcy5jbGFzc2VzLm91dGxpbmVkID0gdGhpcy5vdXRsaW5lZDtcblxuICAgIGlmICh0aGlzLmNvbG9yKSB7XG4gICAgICB0aGlzLnN0eWxlcy5jb2xvciA9IHRoaXMuY29sb3I7XG4gICAgfSBlbHNlIGlmICghdGhpcy5vdXRsaW5lZCkge1xuICAgICAgdGhpcy5zdHlsZXMuY29sb3IgPSB0aGlzLl9pc0NvbnRyYXN0WUlRQmxhY2sodGhpcy5iYWNrZ3JvdW5kQ29sb3IpID8gJyM0NzQ3NDcnIDogJyNmZmYnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm91dGxpbmVkKSB7XG4gICAgICB0aGlzLnN0eWxlcy5iYWNrZ3JvdW5kQ29sb3IgPSAnJztcblxuICAgICAgaWYgKHRoaXMuY29sb3IpIHtcbiAgICAgICAgdGhpcy5zdHlsZXMuYm9yZGVyQ29sb3IgPSB0aGlzLmNvbG9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGU+XG4gIDxkaXZcbiAgICAgIGNsYXNzPVwiZnMtY2hpcFwiXG4gICAgICAoY2xpY2spPVwiY2xpY2soKVwiXG4gICAgICBbbmdTdHlsZV09XCJzdHlsZXNcIlxuICAgICAgW25nQ2xhc3NdPVwiY2xhc3Nlc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbWFnZVwiPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cImltYWdlXCJcbiAgICAgICAgY2xhc3M9XCJpbWFnZVwiXG4gICAgICAgIGFsdD1cIlwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpY29uXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+XG4gICAgICAgIHt7IGljb24gfX1cbiAgICAgIDwvbWF0LWljb24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZzLWNoaXAtY29udGVudFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsgJ21heC13aWR0aCc6IG1heFdpZHRoIH1cIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKHNlbGVjdGVkKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtY2hlY2tcIj5cbiAgICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJzdHlsZXMuY29sb3JcIj5cbiAgICAgICAgICBjaGVja1xuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoYWN0aW9ucykge1xuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbnM7IHRyYWNrIGFjdGlvbi5pY29uKSB7XG4gICAgICAgICAgPGZzLWNoaXAtYWN0aW9uXG4gICAgICAgICAgICBbaWNvbl09XCJhY3Rpb24uaWNvblwiXG4gICAgICAgICAgICBbbGlua109XCJhY3Rpb24ubGlua1wiXG4gICAgICAgICAgICBbbGlua1RhcmdldF09XCJhY3Rpb24ubGlua1RhcmdldFwiXG4gICAgICAgICAgICBbY29sb3JdPVwic3R5bGVzLmNvbG9yXCJcbiAgICAgICAgICAgIChhY3Rpb25DbGljayk9XCJhY3Rpb25DbGljayhhY3Rpb24sICRldmVudClcIj5cbiAgICAgICAgICA8L2ZzLWNoaXAtYWN0aW9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbkBpZiAoIWhhc0NoaXBzKSB7XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cbn0iXX0=
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvY2hpcC9jaGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGlwL2NoaXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVMzQyxNQUFNLE9BQU8sZUFBZTtJQWdFaEI7SUE3REgsV0FBVyxDQUFvQjtJQUcvQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBR25CLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFHakIsS0FBSyxDQUFNO0lBR1gsUUFBUSxDQUFTO0lBR2pCLEtBQUssQ0FBUztJQUVMLGVBQWUsQ0FBQztJQUVoQixXQUFXLENBQUM7SUFFWixLQUFLLENBQUM7SUFFTixRQUFRLENBQUM7SUFHbEIsT0FBTyxHQU1SLEVBQUUsQ0FBQztJQUdGLElBQUksQ0FBUztJQUdiLEtBQUssQ0FBUztJQUVyQixJQUNXLFdBQVcsQ0FBQyxLQUFjO1FBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRWdCLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3JDLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXZDLE1BQU0sR0FBUSxFQUFF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QWU7a0JBTjNCLFNBQVM7K0JBQ0UsU0FBUyxtQkFHRix1QkFBdUIsQ0FBQyxNQUFNO3NGQUt4QyxXQUFXO3NCQURqQixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWpDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUdVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBRVUsV0FBVztzQkFBMUIsS0FBSztnQkFFVSxLQUFLO3NCQUFwQixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQVVDLElBQUk7c0JBRFYsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUssV0FBVztzQkFEckIsS0FBSzt1QkFBQyxVQUFVO2dCQVVBLGVBQWU7c0JBQS9CLE1BQU07Z0JBQ1UsT0FBTztzQkFBdkIsTUFBTTtnQkFhbUIsT0FBTztzQkFBaEMsS0FBSzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtY2hpcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGlwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hpcC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNDaGlwQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuXG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pIFxuICBwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIEBJbnB1dCgpIFxuICBwdWJsaWMgc2VsZWN0YWJsZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW1vdmFibGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpIFxuICBwdWJsaWMgdmFsdWU6IGFueTtcblxuICBASW5wdXQoKSBcbiAgcHVibGljIG1heFdpZHRoOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgXG4gIHB1YmxpYyB3aWR0aDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBiYWNrZ3JvdW5kQ29sb3I7XG5cbiAgQElucHV0KCkgcHVibGljIGJvcmRlckNvbG9yO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjb2xvcjtcblxuICBASW5wdXQoKSBwdWJsaWMgb3V0bGluZWQ7XG5cbiAgQElucHV0KCkgXG4gIHB1YmxpYyBhY3Rpb25zOiB7XG4gICAgaWNvbjogc3RyaW5nLCBcbiAgICBjbGljazogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkLCBcbiAgICB0eXBlPzogJ3JlbW92ZScsXG4gICAgbGluaz86IHN0cmluZyxcbiAgICBsaW5rVGFyZ2V0Pzogc3RyaW5nLFxuICB9W10gPSBbXTtcblxuICBASW5wdXQoKSBcbiAgcHVibGljIGljb246IHN0cmluZztcbiAgXG4gIEBJbnB1dCgpIFxuICBwdWJsaWMgaW1hZ2U6IHN0cmluZztcbiAgXG4gIEBJbnB1dCgnc2VsZWN0ZWQnKSBcbiAgcHVibGljIHNldCBzZXRTZWxlY3RlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuY2xhc3Nlcy5zZWxlY3RlZCA9IHZhbHVlO1xuICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgfVxuXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0ZWRUb2dnbGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHN0eWxlczogYW55ID0ge307XG4gIHB1YmxpYyBjbGFzc2VzOiBhbnkgPSB7fTtcbiAgcHVibGljIGhhc0NoaXBzOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBASW5wdXQoJ3NpemUnKSBwdWJsaWMgc2V0IHNldFNpemUodmFsdWUpIHtcbiAgICB0aGlzLmNsYXNzZXNbJ3NpemUtc21hbGwnXSA9IHZhbHVlID09PSAnc21hbGwnO1xuICAgIHRoaXMuY2xhc3Nlc1snc2l6ZS10aW55J10gPSB2YWx1ZSA9PT0gJ3RpbnknO1xuICAgIHRoaXMuY2xhc3Nlc1snc2l6ZS1taWNybyddID0gdmFsdWUgPT09ICdtaWNybyc7XG4gIH1cblxuICBwdWJsaWMgY2xpY2soKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0YWJsZSkge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZCA9ICF0aGlzLnNlbGVjdGVkO1xuICAgICAgdGhpcy5zZWxlY3RlZFRvZ2dsZWQuZW1pdCh7IHZhbHVlOiB0aGlzLnZhbHVlLCBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0KCkge1xuICAgIHRoaXMuc2V0U2VsZWN0ZWQgPSB0cnVlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHVuc2VsZWN0KCkge1xuICAgIHRoaXMuc2V0U2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVzdHJveSQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fZGVzdHJveSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMuYWN0aW9ucyA9IHRoaXMuYWN0aW9uc1xuICAgICAgLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24udHlwZSAhPT0gJ3JlbW92ZScpO1xuXG4gICAgaWYoY2hhbmdlcy5zZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLmNsYXNzZXMuc2VsZWN0YWJsZSA9IHRoaXMuc2VsZWN0YWJsZTtcbiAgICB9XG5cbiAgICBpZihjaGFuZ2VzLnJlbW92YWJsZSkge1xuICAgICAgdGhpcy5jbGFzc2VzLnJlbW92YWJsZSA9IHRoaXMucmVtb3ZhYmxlO1xuICAgIH1cblxuICAgIGlmKGNoYW5nZXMuaWNvbikge1xuICAgICAgdGhpcy5jbGFzc2VzLmljb25lZCA9ICEhdGhpcy5pY29uO1xuICAgIH1cblxuICAgIGlmKGNoYW5nZXMuaW1hZ2UpIHtcbiAgICAgIHRoaXMuY2xhc3Nlcy5pbWFnZWQgPSAhIXRoaXMuaW1hZ2U7XG4gICAgfVxuXG4gICAgaWYodGhpcy5yZW1vdmVkLm9ic2VydmVkICYmIHRoaXMucmVtb3ZhYmxlKSB7XG4gICAgICB0aGlzLmFjdGlvbnMucHVzaCh7XG4gICAgICAgIGljb246ICdyZW1vdmVfY2lyY2xlX291dGxpbmUnLFxuICAgICAgICBjbGljazogKGV2ZW50KSA9PiB0aGlzLnJlbW92ZShldmVudCksXG4gICAgICAgIHR5cGU6ICdyZW1vdmUnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbGFzc2VzLmFjdGlvbmFibGUgPSB0aGlzLmFjdGlvbnMubGVuZ3RoICE9PSAwO1xuXG4gICAgdGhpcy5fdXBkYXRlU3R5bGVzKCk7XG4gIH1cblxuICBwdWJsaWMgYWN0aW9uQ2xpY2soYWN0aW9uLCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmKGFjdGlvbi5jbGljaykge1xuICAgICAgYWN0aW9uLmNsaWNrKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMucmVtb3ZlZC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzQ29udHJhc3RZSVFCbGFjayhoZXhjb2xvcikge1xuICAgIGlmICghaGV4Y29sb3IpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGhleGNvbG9yID0gaGV4Y29sb3IucmVwbGFjZSgnIycsICcnKTtcbiAgICBjb25zdCByID0gcGFyc2VJbnQoaGV4Y29sb3Iuc3Vic3RyKDAsIDIpLCAxNik7XG4gICAgY29uc3QgZyA9IHBhcnNlSW50KGhleGNvbG9yLnN1YnN0cigyLCAyKSwgMTYpO1xuICAgIGNvbnN0IGIgPSBwYXJzZUludChoZXhjb2xvci5zdWJzdHIoNCwgMiksIDE2KTtcbiAgICBjb25zdCB5aXEgPSAoKHIgKiAyOTkpICsgKGcgKiA1ODcpICsgKGIgKiAxMTQpKSAvIDEwMDA7XG5cbiAgICByZXR1cm4geWlxID49IDIwMDtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVN0eWxlcygpIHtcbiAgICB0aGlzLnN0eWxlcy5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmJhY2tncm91bmRDb2xvcjtcbiAgICB0aGlzLnN0eWxlcy5ib3JkZXJDb2xvciA9IHRoaXMuYm9yZGVyQ29sb3I7XG4gICAgdGhpcy5zdHlsZXMud2lkdGggPSB0aGlzLndpZHRoO1xuICAgIHRoaXMuY2xhc3Nlcy5vdXRsaW5lZCA9IHRoaXMub3V0bGluZWQ7XG5cbiAgICBpZiAodGhpcy5jb2xvcikge1xuICAgICAgdGhpcy5zdHlsZXMuY29sb3IgPSB0aGlzLmNvbG9yO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMub3V0bGluZWQpIHtcbiAgICAgIHRoaXMuc3R5bGVzLmNvbG9yID0gdGhpcy5faXNDb250cmFzdFlJUUJsYWNrKHRoaXMuYmFja2dyb3VuZENvbG9yKSA/ICcjNDc0NzQ3JyA6ICcjZmZmJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vdXRsaW5lZCkge1xuICAgICAgdGhpcy5zdHlsZXMuYmFja2dyb3VuZENvbG9yID0gJyc7XG5cbiAgICAgIGlmICh0aGlzLmNvbG9yKSB7XG4gICAgICAgIHRoaXMuc3R5bGVzLmJvcmRlckNvbG9yID0gdGhpcy5jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlPlxuICA8ZGl2XG4gICAgICBjbGFzcz1cImZzLWNoaXBcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrKClcIlxuICAgICAgW25nU3R5bGVdPVwic3R5bGVzXCJcbiAgICAgIFtuZ0NsYXNzXT1cImNsYXNzZXNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW1hZ2VcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJpbWFnZVwiXG4gICAgICAgIGNsYXNzPVwiaW1hZ2VcIlxuICAgICAgICBhbHQ9XCJcIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWNvblwiPlxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPlxuICAgICAgICB7eyBpY29uIH19XG4gICAgICA8L21hdC1pY29uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmcy1jaGlwLWNvbnRlbnRcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7ICdtYXgtd2lkdGgnOiBtYXhXaWR0aCB9XCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgQGlmIChzZWxlY3RlZCkge1xuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWNoZWNrXCI+XG4gICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwic3R5bGVzLmNvbG9yXCI+XG4gICAgICAgICAgY2hlY2tcbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGFjdGlvbnMpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgIEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25zOyB0cmFjayBhY3Rpb24uaWNvbikge1xuICAgICAgICAgIDxmcy1jaGlwLWFjdGlvblxuICAgICAgICAgICAgW2ljb25dPVwiYWN0aW9uLmljb25cIlxuICAgICAgICAgICAgW2xpbmtdPVwiYWN0aW9uLmxpbmtcIlxuICAgICAgICAgICAgW2xpbmtUYXJnZXRdPVwiYWN0aW9uLmxpbmtUYXJnZXRcIlxuICAgICAgICAgICAgW2NvbG9yXT1cInN0eWxlcy5jb2xvclwiXG4gICAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiYWN0aW9uQ2xpY2soYWN0aW9uLCAkZXZlbnQpXCI+XG4gICAgICAgICAgPC9mcy1jaGlwLWFjdGlvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5AaWYgKCFoYXNDaGlwcykge1xuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XG59Il19
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, forwardRef, Input, IterableDiffers, QueryList, ViewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, EventEmitter, forwardRef, Input, IterableDiffers, Output, QueryList, ViewChild, } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';
4
4
  import { Subject } from 'rxjs';
@@ -16,6 +16,8 @@ export class FsChipsComponent {
16
16
  compare;
17
17
  multiple = true;
18
18
  sortable = false;
19
+ selected;
20
+ selectedChange = new EventEmitter();
19
21
  onChange;
20
22
  onTouch;
21
23
  _value = [];
@@ -29,12 +31,20 @@ export class FsChipsComponent {
29
31
  }
30
32
  drop(event) {
31
33
  moveItemInArray(this._value, event.previousIndex, event.currentIndex);
34
+ if (this.selected) {
35
+ this.selected = this._value
36
+ .filter((value) => this.selected.includes(value));
37
+ this.selectedChange.emit(this.selected);
38
+ }
32
39
  this.onChange(this._value);
33
40
  }
34
41
  ngAfterContentInit() {
35
42
  this._subscribeToSelectionChange();
36
43
  this._subscribeChanges();
37
44
  }
45
+ sortPredicate = (index) => {
46
+ return !this.selected || index <= this.selected.length - 1;
47
+ };
38
48
  set value(value) {
39
49
  if (this._value !== value) {
40
50
  this._value = value;
@@ -49,6 +59,32 @@ export class FsChipsComponent {
49
59
  this._destroy$.next(null);
50
60
  this._destroy$.complete();
51
61
  }
62
+ select(chip) {
63
+ this.selected = [
64
+ ...this.selected,
65
+ chip.value,
66
+ ];
67
+ this.selectedChange.emit(this.selected);
68
+ this.updateSelected();
69
+ }
70
+ unselect(chip) {
71
+ this.selected = this.selected
72
+ .filter((item) => item !== chip.value);
73
+ this.selectedChange.emit(this.selected);
74
+ this.updateSelected();
75
+ }
76
+ updateSelected() {
77
+ const chipArray = this.chips.toArray().sort((a, b) => {
78
+ const aSelected = this.selected.includes(a.value);
79
+ const bSelected = this.selected.includes(b.value);
80
+ if (aSelected === bSelected)
81
+ return 0;
82
+ return aSelected ? -1 : 1;
83
+ });
84
+ this.chips.reset(chipArray);
85
+ this._value = this.chips.toArray().map((chip) => chip.value);
86
+ this.onChange(this._value);
87
+ }
52
88
  writeValue(value) {
53
89
  if (value !== this.value) {
54
90
  this._value = value;
@@ -65,6 +101,7 @@ export class FsChipsComponent {
65
101
  const changed = this._chipDiffer.diff(this.chips);
66
102
  changed?.forEachAddedItem((change) => {
67
103
  this._selectable = this.chips.some((chip) => chip.selectable);
104
+ change.item.hasChips = true;
68
105
  change.item.selectedToggled
69
106
  .pipe(takeUntil(change.item.destroy$), takeUntil(this._destroy$))
70
107
  .subscribe(({ selected, value }) => {
@@ -133,13 +170,13 @@ export class FsChipsComponent {
133
170
  }
134
171
  }
135
172
  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 });
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: [
173
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsChipsComponent, selector: "fs-chips", inputs: { compare: "compare", multiple: "multiple", sortable: "sortable", selected: "selected" }, outputs: { selectedChange: "selectedChange" }, providers: [
137
174
  {
138
175
  provide: NG_VALUE_ACCESSOR,
139
176
  useExisting: forwardRef(() => FsChipsComponent),
140
177
  multi: true,
141
178
  },
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 });
179
+ ], 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 [cdkDropListSortPredicate]=\"sortPredicate\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (chip of chips; track chip) {\n <div\n cdkDrag\n class=\"fs-chip-drag-container\"\n [class.chips-selectable]=\"!!selected\"\n [cdkDragPreviewClass]=\"'fs-chip-drag-preview'\">\n <a\n class=\"chip-handle\"\n mat-icon-button\n [ngClass]=\"{ 'visible': !selected || selected.includes(chip.value)}\"\n cdkDragHandle>\n <mat-icon>\n drag_indicator\n </mat-icon>\n </a>\n @if (selected) {\n @if (selected.includes(chip.value)) {\n <a\n class=\"select-button select-button-selected\"\n (click)=\"unselect(chip)\"\n mat-icon-button>\n <mat-icon>\n remove_circle_outline\n </mat-icon>\n </a>\n } @else {\n <a\n class=\"select-button select-button-unselected\"\n (click)=\"select(chip)\"\n mat-icon-button>\n <mat-icon>\n add_circle_outline\n </mat-icon>\n </a>\n }\n }\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: ["@charset \"UTF-8\";@media (max-width: 599px){h1[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"]{margin-top:0}}@media (max-width: 1023px){h1[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"]{margin-top:0}}@media (max-width: 1439px){h1[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"]{margin-top:0}}.fs-delimit>*:not(:last-child):after{content:\",\\a0\"}.fs-chips{display:flex}.fs-chips:not(.chips-sortable){gap:5px}.fs-chips.chips-sortable{flex-direction:column}.fs-chips.chips-sortable .fs-chip-drag-container{border-bottom:8px solid transparent}.fs-chips.chips-sortable ::ng-deep .cdk-drag-placeholder{opacity:.3}.fs-chips .fs-chip-drag-container{display:flex}::ng-deep .fs-chip-drag-container{display:flex;align-items:center}::ng-deep .fs-chip-drag-container.fs-chip-drag-preview{display:flex;overflow:visible}::ng-deep .fs-chip-drag-container.fs-chip-drag-preview .select-button{visibility:hidden}::ng-deep .fs-chip-drag-container.fs-chip-drag-preview.chip-container .fs-chip{box-shadow:3px 3px 3px #c4c4c4}::ng-deep .fs-chip-drag-container.chips-selectable .chip-handle{order:10}::ng-deep .fs-chip-drag-container .select-button,::ng-deep .fs-chip-drag-container .chip-handle{color:inherit;display:flex;align-items:center}::ng-deep .fs-chip-drag-container .select-button{margin-right:5px}::ng-deep .fs-chip-drag-container .select-button.select-button-selected mat-icon{color:#92d050}::ng-deep .fs-chip-drag-container .select-button.select-button-unselected mat-icon{color:#ea4266}::ng-deep .fs-chip-drag-container .chip-handle:not(.visible){visibility:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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 });
143
180
  }
144
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipsComponent, decorators: [{
145
182
  type: Component,
@@ -149,7 +186,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
149
186
  useExisting: forwardRef(() => FsChipsComponent),
150
187
  multi: true,
151
188
  },
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"] }]
189
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (sortable) {\n <div\n class=\"fs-chips chips-sortable\"\n cdkDropList\n [cdkDropListLockAxis]=\"'y'\"\n [cdkDropListSortPredicate]=\"sortPredicate\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (chip of chips; track chip) {\n <div\n cdkDrag\n class=\"fs-chip-drag-container\"\n [class.chips-selectable]=\"!!selected\"\n [cdkDragPreviewClass]=\"'fs-chip-drag-preview'\">\n <a\n class=\"chip-handle\"\n mat-icon-button\n [ngClass]=\"{ 'visible': !selected || selected.includes(chip.value)}\"\n cdkDragHandle>\n <mat-icon>\n drag_indicator\n </mat-icon>\n </a>\n @if (selected) {\n @if (selected.includes(chip.value)) {\n <a\n class=\"select-button select-button-selected\"\n (click)=\"unselect(chip)\"\n mat-icon-button>\n <mat-icon>\n remove_circle_outline\n </mat-icon>\n </a>\n } @else {\n <a\n class=\"select-button select-button-unselected\"\n (click)=\"select(chip)\"\n mat-icon-button>\n <mat-icon>\n add_circle_outline\n </mat-icon>\n </a>\n }\n }\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: ["@charset \"UTF-8\";@media (max-width: 599px){h1[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"]{margin-top:0}}@media (max-width: 1023px){h1[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"]{margin-top:0}}@media (max-width: 1439px){h1[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"]{margin-top:0}}.fs-delimit>*:not(:last-child):after{content:\",\\a0\"}.fs-chips{display:flex}.fs-chips:not(.chips-sortable){gap:5px}.fs-chips.chips-sortable{flex-direction:column}.fs-chips.chips-sortable .fs-chip-drag-container{border-bottom:8px solid transparent}.fs-chips.chips-sortable ::ng-deep .cdk-drag-placeholder{opacity:.3}.fs-chips .fs-chip-drag-container{display:flex}::ng-deep .fs-chip-drag-container{display:flex;align-items:center}::ng-deep .fs-chip-drag-container.fs-chip-drag-preview{display:flex;overflow:visible}::ng-deep .fs-chip-drag-container.fs-chip-drag-preview .select-button{visibility:hidden}::ng-deep .fs-chip-drag-container.fs-chip-drag-preview.chip-container .fs-chip{box-shadow:3px 3px 3px #c4c4c4}::ng-deep .fs-chip-drag-container.chips-selectable .chip-handle{order:10}::ng-deep .fs-chip-drag-container .select-button,::ng-deep .fs-chip-drag-container .chip-handle{color:inherit;display:flex;align-items:center}::ng-deep .fs-chip-drag-container .select-button{margin-right:5px}::ng-deep .fs-chip-drag-container .select-button.select-button-selected mat-icon{color:#92d050}::ng-deep .fs-chip-drag-container .select-button.select-button-unselected mat-icon{color:#ea4266}::ng-deep .fs-chip-drag-container .chip-handle:not(.visible){visibility:hidden}\n"] }]
153
190
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }], propDecorators: { dropList: [{
154
191
  type: ViewChild,
155
192
  args: [CdkDropList, { static: true }]
@@ -162,5 +199,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
162
199
  type: Input
163
200
  }], sortable: [{
164
201
  type: Input
202
+ }], selected: [{
203
+ type: Input
204
+ }], selectedChange: [{
205
+ type: Output
165
206
  }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2NoaXBzL2NoaXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGlwcy9jaGlwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQzFDLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLEtBQUssRUFFTCxlQUFlLEVBRWYsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFlLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBZ0J6RCxNQUFNLE9BQU8sZ0JBQWdCO0lBdUJqQjtJQUNBO0lBckJILFFBQVEsQ0FBYztJQUd0QixLQUFLLENBQTZCO0lBRXpCLE9BQU8sQ0FBQztJQUVSLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFFaEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUUxQixRQUFRLENBQWtCO0lBQzFCLE9BQU8sQ0FBa0I7SUFFeEIsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNaLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDcEIsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDMUIsV0FBVyxDQUFrQztJQUVyRCxZQUNVLE1BQXlCLEVBQ3pCLFNBQTBCO1FBRDFCLFdBQU0sR0FBTixNQUFNLENBQW1C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YUFHVDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQzs0QkFDL0MsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07b0hBS3hDLFFBQVE7c0JBRGQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqQyxLQUFLO3NCQURYLGVBQWU7dUJBQUMsZUFBZTtnQkFHaEIsT0FBTztzQkFBdEIsS0FBSztnQkFFVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgSXRlcmFibGVEaWZmZXIsXG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRnNDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hpcC9jaGlwLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtY2hpcHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZzQ2hpcHNDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzQ2hpcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0IHtcblxuICBAVmlld0NoaWxkKENka0Ryb3BMaXN0LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgZHJvcExpc3Q6IENka0Ryb3BMaXN0O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oRnNDaGlwQ29tcG9uZW50KVxuICBwdWJsaWMgY2hpcHM6IFF1ZXJ5TGlzdDxGc0NoaXBDb21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjb21wYXJlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBtdWx0aXBsZSA9IHRydWU7XG5cbiAgQElucHV0KCkgcHVibGljIHNvcnRhYmxlID0gZmFsc2U7XG5cbiAgcHVibGljIG9uQ2hhbmdlOiAodmFsdWUpID0+IHZvaWQ7XG4gIHB1YmxpYyBvblRvdWNoOiAodmFsdWUpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdmFsdWUgPSBbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0YWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2NoaXBEaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPEZzQ2hpcENvbXBvbmVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX2l0ZXJhYmxlOiBJdGVyYWJsZURpZmZlcnMsXG4gICkge1xuICAgIHRoaXMuX2NoaXBEaWZmZXIgPSB0aGlzLl9pdGVyYWJsZS5maW5kKFtdKS5jcmVhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5fdmFsdWUsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmliZVRvU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgdGhpcy5fc3Vic2NyaWJlQ2hhbmdlcygpO1xuICB9XG4gXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWUpIHtcbiAgICBpZiAodGhpcy5fdmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICAgIHRoaXMub25Ub3VjaCh0aGlzLl92YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVDaGlwcygpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm4pIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuKSB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb1NlbGVjdGlvbkNoYW5nZSgpIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5fY2hpcERpZmZlci5kaWZmKHRoaXMuY2hpcHMpO1xuICAgIGNoYW5nZWQ/LmZvckVhY2hBZGRlZEl0ZW0oKGNoYW5nZSkgPT4ge1xuICAgICAgdGhpcy5fc2VsZWN0YWJsZSA9IHRoaXMuY2hpcHMuc29tZSgoY2hpcCkgPT4gY2hpcC5zZWxlY3RhYmxlKTtcbiAgICAgIGNoYW5nZS5pdGVtLnNlbGVjdGVkVG9nZ2xlZFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwoY2hhbmdlLml0ZW0uZGVzdHJveSQpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoeyBzZWxlY3RlZCwgdmFsdWUgfSkgPT4ge1xuICAgICAgICAgIGlmKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICB0aGlzLnZhbHVlLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVJbmRleCA9IHRoaXMudmFsdWUuZmluZEluZGV4KChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVGbihpdGVtLCB2YWx1ZSk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGlmICh2YWx1ZUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLnNwbGljZSh2YWx1ZUluZGV4LCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoaXBzXG4gICAgICAgICAgICAgIC5mb3JFYWNoKChjaGlwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoIXRoaXMuX2NvbXBhcmVGbihjaGlwLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgIGNoaXAudW5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gc2VsZWN0ZWQgPyB2YWx1ZSA6IG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgICAgICAgdGhpcy5vblRvdWNoKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHNlbGVjdGlvbiBpZiBpdGVtIHdhcyBhZGRlZCBvciByZW1vdmVkXG4gICAqL1xuICBwcml2YXRlIF9zdWJzY3JpYmVDaGFuZ2VzKCkge1xuICAgIHRoaXMuY2hpcHMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9TZWxlY3Rpb25DaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNoaXBzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcGFyZUZuKG8xLCBvMikge1xuICAgIGlmICh0aGlzLmNvbXBhcmUpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUobzEsIG8yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbzEgPT09IG8yO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQ2hpcHMoKSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5fc2VsZWN0YWJsZSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5jaGlwcy5mb3JFYWNoKChjaGlwKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZhbHVlXG4gICAgICAgICAgICAuc29tZSgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFyZUZuKGl0ZW0sIGNoaXAudmFsdWUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZihzZWxlY3RlZCkge1xuICAgICAgICAgICAgY2hpcC5zZWxlY3QoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hpcC51bnNlbGVjdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAaWYgKHNvcnRhYmxlKSB7XG4gIDxkaXZcbiAgICAgIGNsYXNzPVwiZnMtY2hpcHMgY2hpcHMtc29ydGFibGVcIlxuICAgICAgY2RrRHJvcExpc3RcbiAgICAgIFtjZGtEcm9wTGlzdExvY2tBeGlzXT1cIid5J1wiXG4gICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICAgIEBmb3IgKGNoaXAgb2YgY2hpcHM7IHRyYWNrIGNoaXApIHtcbiAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNoaXAtY29udGFpbmVyXCJcbiAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgW2Nka0RyYWdQcmV2aWV3Q2xhc3NdPVwiJ2ZzLWNoaXAtZHJhZy1wcmV2aWV3J1wiPlxuICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwLWhhbmRsZVwiXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgIGNka0RyYWdIYW5kbGU+XG4gICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgZHJhZ19pbmRpY2F0b3JcbiAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxuZy1jb21wb25lbnQgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpcC50ZW1wbGF0ZVJlZlwiPjwvbmctY29tcG9uZW50PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbn0gQGVsc2Uge1xuICA8ZGl2IGNsYXNzPVwiZnMtY2hpcHNcIj5cbiAgICBAZm9yIChjaGlwIG9mIGNoaXBzOyB0cmFjayBjaGlwKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbXBvbmVudCBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlwLnRlbXBsYXRlUmVmXCI+PC9uZy1jb21wb25lbnQ+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufSJdfQ==
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2NoaXBzL2NoaXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jaGlwcy9jaGlwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQzFDLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsZUFBZSxFQUVmLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQWUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRW5GLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFnQnpELE1BQU0sT0FBTyxnQkFBZ0I7SUEwQmpCO0lBQ0E7SUF4QkgsUUFBUSxDQUFjO0lBR3RCLEtBQUssQ0FBNkI7SUFFekIsT0FBTyxDQUFDO0lBRVIsUUFBUSxHQUFHLElBQUksQ0FBQztJQUVoQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWpCLFFBQVEsQ0FBUTtJQUNmLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTlDLFFBQVEsQ0FBa0I7SUFDMUIsT0FBTyxDQUFrQjtJQUV4QixNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ1osV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNwQixTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJ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ZUFBZTtnQkFHaEIsT0FBTztzQkFBdEIsS0FBSztnQkFFVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBRVUsUUFBUTtzQkFBdkIsS0FBSztnQkFDVyxjQUFjO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgSXRlcmFibGVEaWZmZXIsXG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIENka0Ryb3BMaXN0LCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGc0NoaXBDb21wb25lbnQgfSBmcm9tICcuLi9jaGlwL2NoaXAuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1jaGlwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGlwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoaXBzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNDaGlwc0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNDaGlwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudEluaXQge1xuXG4gIEBWaWV3Q2hpbGQoQ2RrRHJvcExpc3QsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBkcm9wTGlzdDogQ2RrRHJvcExpc3Q7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihGc0NoaXBDb21wb25lbnQpXG4gIHB1YmxpYyBjaGlwczogUXVlcnlMaXN0PEZzQ2hpcENvbXBvbmVudD47XG5cbiAgQElucHV0KCkgcHVibGljIGNvbXBhcmU7XG5cbiAgQElucHV0KCkgcHVibGljIG11bHRpcGxlID0gdHJ1ZTtcblxuICBASW5wdXQoKSBwdWJsaWMgc29ydGFibGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWQ6IGFueVtdO1xuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBvbkNoYW5nZTogKHZhbHVlKSA9PiB2b2lkO1xuICBwdWJsaWMgb25Ub3VjaDogKHZhbHVlKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3ZhbHVlID0gW107XG4gIHByaXZhdGUgX3NlbGVjdGFibGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9jaGlwRGlmZmVyOiBJdGVyYWJsZURpZmZlcjxGc0NoaXBDb21wb25lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9pdGVyYWJsZTogSXRlcmFibGVEaWZmZXJzLFxuICApIHtcbiAgICB0aGlzLl9jaGlwRGlmZmVyID0gdGhpcy5faXRlcmFibGUuZmluZChbXSkuY3JlYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuX3ZhbHVlLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuXG4gICAgaWYodGhpcy5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuX3ZhbHVlXG4gICAgICAgIC5maWx0ZXIoKHZhbHVlKSA9PiB0aGlzLnNlbGVjdGVkLmluY2x1ZGVzKHZhbHVlKSk7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZCk7XG4gICAgfVxuICAgICAgXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmliZVRvU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgdGhpcy5fc3Vic2NyaWJlQ2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHNvcnRQcmVkaWNhdGUgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiAhdGhpcy5zZWxlY3RlZCB8fCAgaW5kZXggPD0gdGhpcy5zZWxlY3RlZC5sZW5ndGggLSAxO1xuICB9O1xuIFxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgICB0aGlzLm9uVG91Y2godGhpcy5fdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3QoY2hpcDogRnNDaGlwQ29tcG9uZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IFtcbiAgICAgIC4uLnRoaXMuc2VsZWN0ZWQsIFxuICAgICAgY2hpcC52YWx1ZSxcbiAgICBdO1xuXG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xuXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZCgpOyAgXG4gIH1cbiAgXG4gIHB1YmxpYyB1bnNlbGVjdChjaGlwOiBGc0NoaXBDb21wb25lbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFxuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gY2hpcC52YWx1ZSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZCk7XG5cbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkKCk7XG4gIH1cbiAgXG4gIHB1YmxpYyB1cGRhdGVTZWxlY3RlZCgpIHtcbiAgICBjb25zdCBjaGlwQXJyYXkgPSB0aGlzLmNoaXBzLnRvQXJyYXkoKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCBhU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkLmluY2x1ZGVzKGEudmFsdWUpO1xuICAgICAgY29uc3QgYlNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZC5pbmNsdWRlcyhiLnZhbHVlKTtcbiAgICAgIFxuICAgICAgaWYgKGFTZWxlY3RlZCA9PT0gYlNlbGVjdGVkKSByZXR1cm4gMDtcblxuICAgICAgcmV0dXJuIGFTZWxlY3RlZCA/IC0xIDogMTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2hpcHMucmVzZXQoY2hpcEFycmF5KTtcbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMuY2hpcHMudG9BcnJheSgpLm1hcCgoY2hpcCkgPT4gY2hpcC52YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUNoaXBzKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbikge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm4pIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvU2VsZWN0aW9uQ2hhbmdlKCkge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9jaGlwRGlmZmVyLmRpZmYodGhpcy5jaGlwcyk7XG4gICAgY2hhbmdlZD8uZm9yRWFjaEFkZGVkSXRlbSgoY2hhbmdlKSA9PiB7XG4gICAgICB0aGlzLl9zZWxlY3RhYmxlID0gdGhpcy5jaGlwcy5zb21lKChjaGlwKSA9PiBjaGlwLnNlbGVjdGFibGUpO1xuXG4gICAgICBjaGFuZ2UuaXRlbS5oYXNDaGlwcyA9IHRydWU7XG4gICAgICBjaGFuZ2UuaXRlbS5zZWxlY3RlZFRvZ2dsZWRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKGNoYW5nZS5pdGVtLmRlc3Ryb3kkKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHsgc2VsZWN0ZWQsIHZhbHVlIH0pID0+IHtcbiAgICAgICAgICBpZih0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlSW5kZXggPSB0aGlzLnZhbHVlLmZpbmRJbmRleCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21wYXJlRm4oaXRlbSwgdmFsdWUpO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAodmFsdWVJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZS5zcGxpY2UodmFsdWVJbmRleCwgMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGlwc1xuICAgICAgICAgICAgICAuZm9yRWFjaCgoY2hpcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmKCF0aGlzLl9jb21wYXJlRm4oY2hpcC52YWx1ZSwgdmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICBjaGlwLnVuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkID8gdmFsdWUgOiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgICAgICAgIHRoaXMub25Ub3VjaCh0aGlzLl92YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzZWxlY3Rpb24gaWYgaXRlbSB3YXMgYWRkZWQgb3IgcmVtb3ZlZFxuICAgKi9cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlQ2hhbmdlcygpIHtcbiAgICB0aGlzLmNoaXBzLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLl91cGRhdGVDaGlwcygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBhcmVGbihvMSwgbzIpIHtcbiAgICBpZiAodGhpcy5jb21wYXJlKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlKG8xLCBvMik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG8xID09PSBvMjtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNoaXBzKCkge1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIHRoaXMuX3NlbGVjdGFibGUpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgIHRoaXMuY2hpcHMuZm9yRWFjaCgoY2hpcCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy52YWx1ZVxuICAgICAgICAgICAgLnNvbWUoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVGbihpdGVtLCBjaGlwLnZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGNoaXAuc2VsZWN0KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNoaXAudW5zZWxlY3QoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiQGlmIChzb3J0YWJsZSkge1xuICA8ZGl2XG4gICAgICBjbGFzcz1cImZzLWNoaXBzIGNoaXBzLXNvcnRhYmxlXCJcbiAgICAgIGNka0Ryb3BMaXN0XG4gICAgICBbY2RrRHJvcExpc3RMb2NrQXhpc109XCIneSdcIlxuICAgICAgW2Nka0Ryb3BMaXN0U29ydFByZWRpY2F0ZV09XCJzb3J0UHJlZGljYXRlXCJcbiAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XG4gICAgQGZvciAoY2hpcCBvZiBjaGlwczsgdHJhY2sgY2hpcCkge1xuICAgICAgPGRpdlxuICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICBjbGFzcz1cImZzLWNoaXAtZHJhZy1jb250YWluZXJcIlxuICAgICAgICAgIFtjbGFzcy5jaGlwcy1zZWxlY3RhYmxlXT1cIiEhc2VsZWN0ZWRcIlxuICAgICAgICAgIFtjZGtEcmFnUHJldmlld0NsYXNzXT1cIidmcy1jaGlwLWRyYWctcHJldmlldydcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcC1oYW5kbGVcIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd2aXNpYmxlJzogIXNlbGVjdGVkIHx8IHNlbGVjdGVkLmluY2x1ZGVzKGNoaXAudmFsdWUpfVwiXG4gICAgICAgICAgICBjZGtEcmFnSGFuZGxlPlxuICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgIGRyYWdfaW5kaWNhdG9yXG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9hPlxuICAgICAgICBAaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgIEBpZiAoc2VsZWN0ZWQuaW5jbHVkZXMoY2hpcC52YWx1ZSkpIHtcbiAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1idXR0b24gc2VsZWN0LWJ1dHRvbi1zZWxlY3RlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ1bnNlbGVjdChjaGlwKVwiXG4gICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgcmVtb3ZlX2NpcmNsZV9vdXRsaW5lXG4gICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYnV0dG9uIHNlbGVjdC1idXR0b24tdW5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3QoY2hpcClcIlxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b24+XG4gICAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICAgIGFkZF9jaXJjbGVfb3V0bGluZVxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA8bmctY29tcG9uZW50IFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaXAudGVtcGxhdGVSZWZcIj48L25nLWNvbXBvbmVudD5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGRpdiBjbGFzcz1cImZzLWNoaXBzXCI+XG4gICAgQGZvciAoY2hpcCBvZiBjaGlwczsgdHJhY2sgY2hpcCkge1xuICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb21wb25lbnQgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpcC50ZW1wbGF0ZVJlZlwiPjwvbmctY29tcG9uZW50PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbn0iXX0=
@@ -1,7 +1,7 @@
1
1
  import * as i1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { EventEmitter, Component, ChangeDetectionStrategy, Input, Output, forwardRef, ViewChild, ContentChildren, TemplateRef, NgModule } from '@angular/core';
4
+ import { EventEmitter, Component, ChangeDetectionStrategy, Input, Output, TemplateRef, ViewChild, forwardRef, ContentChildren, NgModule } from '@angular/core';
5
5
  import * as i2$1 from '@angular/cdk/drag-drop';
6
6
  import { moveItemInArray, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';
7
7
  import * as i2 from '@angular/material/icon';
@@ -35,165 +35,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
35
35
  type: Output
36
36
  }] } });
37
37
 
38
- class FsChipsComponent {
39
- _cdRef;
40
- _iterable;
41
- dropList;
42
- chips;
43
- compare;
44
- multiple = true;
45
- sortable = false;
46
- onChange;
47
- onTouch;
48
- _value = [];
49
- _selectable = false;
50
- _destroy$ = new Subject();
51
- _chipDiffer;
52
- constructor(_cdRef, _iterable) {
53
- this._cdRef = _cdRef;
54
- this._iterable = _iterable;
55
- this._chipDiffer = this._iterable.find([]).create();
56
- }
57
- drop(event) {
58
- moveItemInArray(this._value, event.previousIndex, event.currentIndex);
59
- this.onChange(this._value);
60
- }
61
- ngAfterContentInit() {
62
- this._subscribeToSelectionChange();
63
- this._subscribeChanges();
64
- }
65
- set value(value) {
66
- if (this._value !== value) {
67
- this._value = value;
68
- this.onChange(this._value);
69
- this.onTouch(this._value);
70
- }
71
- }
72
- get value() {
73
- return this._value;
74
- }
75
- ngOnDestroy() {
76
- this._destroy$.next(null);
77
- this._destroy$.complete();
78
- }
79
- writeValue(value) {
80
- if (value !== this.value) {
81
- this._value = value;
82
- }
83
- this._updateChips();
84
- }
85
- registerOnChange(fn) {
86
- this.onChange = fn;
87
- }
88
- registerOnTouched(fn) {
89
- this.onTouch = fn;
90
- }
91
- _subscribeToSelectionChange() {
92
- const changed = this._chipDiffer.diff(this.chips);
93
- changed?.forEachAddedItem((change) => {
94
- this._selectable = this.chips.some((chip) => chip.selectable);
95
- change.item.selectedToggled
96
- .pipe(takeUntil(change.item.destroy$), takeUntil(this._destroy$))
97
- .subscribe(({ selected, value }) => {
98
- if (this.multiple) {
99
- if (selected) {
100
- this.value.push(value);
101
- }
102
- else {
103
- const valueIndex = this.value.findIndex((item) => {
104
- return this._compareFn(item, value);
105
- });
106
- if (valueIndex > -1) {
107
- this.value.splice(valueIndex, 1);
108
- }
109
- }
110
- }
111
- else {
112
- this.chips
113
- .forEach((chip) => {
114
- if (!this._compareFn(chip.value, value)) {
115
- chip.unselect();
116
- }
117
- });
118
- this.value = selected ? value : null;
119
- }
120
- this.onChange(this._value);
121
- this.onTouch(this._value);
122
- });
123
- });
124
- }
125
- /**
126
- * Update selection if item was added or removed
127
- */
128
- _subscribeChanges() {
129
- this.chips.changes
130
- .pipe(takeUntil(this._destroy$))
131
- .subscribe(() => {
132
- this._subscribeToSelectionChange();
133
- this._cdRef.markForCheck();
134
- this._updateChips();
135
- });
136
- this._cdRef.markForCheck();
137
- }
138
- _compareFn(o1, o2) {
139
- if (this.compare) {
140
- return this.compare(o1, o2);
141
- }
142
- return o1 === o2;
143
- }
144
- _updateChips() {
145
- if (this.multiple && this._selectable) {
146
- if (Array.isArray(this.value)) {
147
- this.chips.forEach((chip) => {
148
- const selected = this.value
149
- .some((item) => {
150
- return this._compareFn(item, chip.value);
151
- });
152
- if (selected) {
153
- chip.select();
154
- }
155
- else {
156
- chip.unselect();
157
- }
158
- });
159
- }
160
- }
161
- }
162
- 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 });
163
- 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: [
164
- {
165
- provide: NG_VALUE_ACCESSOR,
166
- useExisting: forwardRef(() => FsChipsComponent),
167
- multi: true,
168
- },
169
- ], 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$1.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$1.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$1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
170
- }
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipsComponent, decorators: [{
172
- type: Component,
173
- args: [{ selector: 'fs-chips', providers: [
174
- {
175
- provide: NG_VALUE_ACCESSOR,
176
- useExisting: forwardRef(() => FsChipsComponent),
177
- multi: true,
178
- },
179
- ], 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"] }]
180
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }], propDecorators: { dropList: [{
181
- type: ViewChild,
182
- args: [CdkDropList, { static: true }]
183
- }], chips: [{
184
- type: ContentChildren,
185
- args: [FsChipComponent]
186
- }], compare: [{
187
- type: Input
188
- }], multiple: [{
189
- type: Input
190
- }], sortable: [{
191
- type: Input
192
- }] } });
193
-
194
38
  class FsChipComponent {
195
39
  _cdRef;
196
- _injector;
197
40
  templateRef;
198
41
  selectable = false;
199
42
  removable = true;
@@ -218,20 +61,17 @@ class FsChipComponent {
218
61
  removed = new EventEmitter();
219
62
  styles = {};
220
63
  classes = {};
64
+ hasChips;
221
65
  _destroy$ = new Subject();
222
66
  _selected = false;
223
- constructor(_cdRef, _injector) {
67
+ constructor(_cdRef) {
224
68
  this._cdRef = _cdRef;
225
- this._injector = _injector;
226
69
  }
227
70
  set setSize(value) {
228
71
  this.classes['size-small'] = value === 'small';
229
72
  this.classes['size-tiny'] = value === 'tiny';
230
73
  this.classes['size-micro'] = value === 'micro';
231
74
  }
232
- get hasChips() {
233
- return !!this._injector.get(FsChipsComponent, null, { optional: true });
234
- }
235
75
  click() {
236
76
  if (this.selectable) {
237
77
  this.setSelected = !this.selected;
@@ -318,13 +158,13 @@ class FsChipComponent {
318
158
  }
319
159
  this._cdRef.markForCheck();
320
160
  }
321
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
161
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
322
162
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsChipComponent, selector: "fs-chip", inputs: { selectable: "selectable", removable: "removable", value: "value", maxWidth: "maxWidth", width: "width", backgroundColor: "backgroundColor", borderColor: "borderColor", color: "color", outlined: "outlined", actions: "actions", icon: "icon", image: "image", setSelected: ["selected", "setSelected"], setSize: ["size", "setSize"] }, outputs: { selectedToggled: "selectedToggled", removed: "removed" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template>\n <div\n class=\"fs-chip\"\n (click)=\"click()\"\n [ngStyle]=\"styles\"\n [ngClass]=\"classes\">\n <ng-container *ngIf=\"image\">\n <img\n [src]=\"image\"\n class=\"image\"\n alt=\"\">\n </ng-container>\n <ng-container *ngIf=\"icon\">\n <mat-icon class=\"icon\">\n {{ icon }}\n </mat-icon>\n </ng-container>\n <div\n class=\"fs-chip-content\"\n [ngStyle]=\"{ 'max-width': maxWidth }\">\n <ng-content></ng-content>\n </div>\n @if (selected) {\n <div class=\"selected-check\">\n <mat-icon [style.color]=\"styles.color\">\n check\n </mat-icon>\n </div>\n }\n @if (actions) {\n <div class=\"actions\">\n @for (action of actions; track action.icon) {\n <fs-chip-action\n [icon]=\"action.icon\"\n [link]=\"action.link\"\n [linkTarget]=\"action.linkTarget\"\n [color]=\"styles.color\"\n (actionClick)=\"actionClick(action, $event)\">\n </fs-chip-action>\n }\n </div>\n }\n </div>\n</ng-template>\n@if (!hasChips) {\n <ng-container [ngTemplateOutlet]=\"templateRef\"></ng-container>\n}", styles: [".fs-chip{-webkit-user-select:none;user-select:none;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);display:inline-flex;padding:0 12px;border-radius:16px;align-items:center;cursor:default;height:30px;background-color:#e7e7e7;overflow:hidden}.fs-chip.imaged{overflow:visible;padding-left:0;vertical-align:middle}.fs-chip.imaged.outlined .image{margin-left:-2px}.fs-chip.iconed:not(.imaged){padding-left:5px}.fs-chip.actionable,.fs-chip.selected{padding-right:3px}.fs-chip.selectable{cursor:pointer}.fs-chip.outlined{background-color:transparent;border:1px solid #e0e0e0;box-sizing:border-box}.fs-chip .icon{margin-right:5px}.fs-chip mat-icon{font-size:25px}.fs-chip .actions{display:flex;flex-direction:row;margin-left:5px}.fs-chip .image{height:30px;width:30px;border-radius:50%;object-fit:cover;margin-left:-1px;margin-right:8px}.fs-chip .fs-chip-content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fs-chip .selected-check{margin:0 5px;display:flex}.fs-chip fs-chip-action{display:flex;cursor:pointer}.fs-chip.size-micro{padding:0 5px;height:16px;line-height:normal}.fs-chip.size-micro .fs-chip-content{font-size:65%}.fs-chip.size-micro .image{height:100%;width:16px;margin-right:2px}.fs-chip.size-micro fs-chip-action{margin-left:1px}.fs-chip.size-micro .selected-check{margin:0 1px 0 0}.fs-chip.size-micro.imaged{padding-left:0}.fs-chip.size-micro.actionable,.fs-chip.size-micro.selected{padding-right:0}.fs-chip.size-micro mat-icon{width:12px;height:12px;font-size:11px}.fs-chip.size-tiny{padding:0 6px;height:18px;line-height:normal}.fs-chip.size-tiny .fs-chip-content{font-size:75%}.fs-chip.size-tiny .image{height:18px;width:18px;margin-right:3px}.fs-chip.size-tiny.iconed:not(.imaged){padding-left:3px}.fs-chip.size-tiny fs-chip-action{margin-left:2px;margin-right:2px}.fs-chip.size-tiny .selected-check{margin:0 1px 0 0}.fs-chip.size-tiny.imaged{padding-left:0}.fs-chip.size-tiny.actionable,.fs-chip.size-tiny.selected{padding-right:0}.fs-chip.size-tiny mat-icon{height:13px;width:13px;font-size:13px}.fs-chip.size-small{padding:0 8px;font-size:85%;height:25px;line-height:normal}.fs-chip.size-small .image{height:25px;width:25px;margin-right:5px}.fs-chip.size-small.iconed:not(.imaged){padding-left:4px}.fs-chip.size-small.imaged{padding-left:0}.fs-chip.size-small fs-chip-action{margin-right:2px}.fs-chip.size-small .selected-check{margin:0 2px 0 0}.fs-chip.size-small .selected-check mat-icon{transform:scale(.7)}.fs-chip.size-small.actionable,.fs-chip.size-small.selected{padding-right:0}.fs-chip.size-small mat-icon{height:22px;width:22px;font-size:22px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: FsChipActionComponent, selector: "fs-chip-action", inputs: ["icon", "link", "linkTarget", "color"], outputs: ["actionClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
323
163
  }
324
164
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipComponent, decorators: [{
325
165
  type: Component,
326
166
  args: [{ selector: 'fs-chip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template>\n <div\n class=\"fs-chip\"\n (click)=\"click()\"\n [ngStyle]=\"styles\"\n [ngClass]=\"classes\">\n <ng-container *ngIf=\"image\">\n <img\n [src]=\"image\"\n class=\"image\"\n alt=\"\">\n </ng-container>\n <ng-container *ngIf=\"icon\">\n <mat-icon class=\"icon\">\n {{ icon }}\n </mat-icon>\n </ng-container>\n <div\n class=\"fs-chip-content\"\n [ngStyle]=\"{ 'max-width': maxWidth }\">\n <ng-content></ng-content>\n </div>\n @if (selected) {\n <div class=\"selected-check\">\n <mat-icon [style.color]=\"styles.color\">\n check\n </mat-icon>\n </div>\n }\n @if (actions) {\n <div class=\"actions\">\n @for (action of actions; track action.icon) {\n <fs-chip-action\n [icon]=\"action.icon\"\n [link]=\"action.link\"\n [linkTarget]=\"action.linkTarget\"\n [color]=\"styles.color\"\n (actionClick)=\"actionClick(action, $event)\">\n </fs-chip-action>\n }\n </div>\n }\n </div>\n</ng-template>\n@if (!hasChips) {\n <ng-container [ngTemplateOutlet]=\"templateRef\"></ng-container>\n}", styles: [".fs-chip{-webkit-user-select:none;user-select:none;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);display:inline-flex;padding:0 12px;border-radius:16px;align-items:center;cursor:default;height:30px;background-color:#e7e7e7;overflow:hidden}.fs-chip.imaged{overflow:visible;padding-left:0;vertical-align:middle}.fs-chip.imaged.outlined .image{margin-left:-2px}.fs-chip.iconed:not(.imaged){padding-left:5px}.fs-chip.actionable,.fs-chip.selected{padding-right:3px}.fs-chip.selectable{cursor:pointer}.fs-chip.outlined{background-color:transparent;border:1px solid #e0e0e0;box-sizing:border-box}.fs-chip .icon{margin-right:5px}.fs-chip mat-icon{font-size:25px}.fs-chip .actions{display:flex;flex-direction:row;margin-left:5px}.fs-chip .image{height:30px;width:30px;border-radius:50%;object-fit:cover;margin-left:-1px;margin-right:8px}.fs-chip .fs-chip-content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fs-chip .selected-check{margin:0 5px;display:flex}.fs-chip fs-chip-action{display:flex;cursor:pointer}.fs-chip.size-micro{padding:0 5px;height:16px;line-height:normal}.fs-chip.size-micro .fs-chip-content{font-size:65%}.fs-chip.size-micro .image{height:100%;width:16px;margin-right:2px}.fs-chip.size-micro fs-chip-action{margin-left:1px}.fs-chip.size-micro .selected-check{margin:0 1px 0 0}.fs-chip.size-micro.imaged{padding-left:0}.fs-chip.size-micro.actionable,.fs-chip.size-micro.selected{padding-right:0}.fs-chip.size-micro mat-icon{width:12px;height:12px;font-size:11px}.fs-chip.size-tiny{padding:0 6px;height:18px;line-height:normal}.fs-chip.size-tiny .fs-chip-content{font-size:75%}.fs-chip.size-tiny .image{height:18px;width:18px;margin-right:3px}.fs-chip.size-tiny.iconed:not(.imaged){padding-left:3px}.fs-chip.size-tiny fs-chip-action{margin-left:2px;margin-right:2px}.fs-chip.size-tiny .selected-check{margin:0 1px 0 0}.fs-chip.size-tiny.imaged{padding-left:0}.fs-chip.size-tiny.actionable,.fs-chip.size-tiny.selected{padding-right:0}.fs-chip.size-tiny mat-icon{height:13px;width:13px;font-size:13px}.fs-chip.size-small{padding:0 8px;font-size:85%;height:25px;line-height:normal}.fs-chip.size-small .image{height:25px;width:25px;margin-right:5px}.fs-chip.size-small.iconed:not(.imaged){padding-left:4px}.fs-chip.size-small.imaged{padding-left:0}.fs-chip.size-small fs-chip-action{margin-right:2px}.fs-chip.size-small .selected-check{margin:0 2px 0 0}.fs-chip.size-small .selected-check mat-icon{transform:scale(.7)}.fs-chip.size-small.actionable,.fs-chip.size-small.selected{padding-right:0}.fs-chip.size-small mat-icon{height:22px;width:22px;font-size:22px}\n"] }]
327
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }], propDecorators: { templateRef: [{
167
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { templateRef: [{
328
168
  type: ViewChild,
329
169
  args: [TemplateRef, { static: true }]
330
170
  }], selectable: [{
@@ -363,6 +203,203 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
363
203
  args: ['size']
364
204
  }] } });
365
205
 
206
+ class FsChipsComponent {
207
+ _cdRef;
208
+ _iterable;
209
+ dropList;
210
+ chips;
211
+ compare;
212
+ multiple = true;
213
+ sortable = false;
214
+ selected;
215
+ selectedChange = new EventEmitter();
216
+ onChange;
217
+ onTouch;
218
+ _value = [];
219
+ _selectable = false;
220
+ _destroy$ = new Subject();
221
+ _chipDiffer;
222
+ constructor(_cdRef, _iterable) {
223
+ this._cdRef = _cdRef;
224
+ this._iterable = _iterable;
225
+ this._chipDiffer = this._iterable.find([]).create();
226
+ }
227
+ drop(event) {
228
+ moveItemInArray(this._value, event.previousIndex, event.currentIndex);
229
+ if (this.selected) {
230
+ this.selected = this._value
231
+ .filter((value) => this.selected.includes(value));
232
+ this.selectedChange.emit(this.selected);
233
+ }
234
+ this.onChange(this._value);
235
+ }
236
+ ngAfterContentInit() {
237
+ this._subscribeToSelectionChange();
238
+ this._subscribeChanges();
239
+ }
240
+ sortPredicate = (index) => {
241
+ return !this.selected || index <= this.selected.length - 1;
242
+ };
243
+ set value(value) {
244
+ if (this._value !== value) {
245
+ this._value = value;
246
+ this.onChange(this._value);
247
+ this.onTouch(this._value);
248
+ }
249
+ }
250
+ get value() {
251
+ return this._value;
252
+ }
253
+ ngOnDestroy() {
254
+ this._destroy$.next(null);
255
+ this._destroy$.complete();
256
+ }
257
+ select(chip) {
258
+ this.selected = [
259
+ ...this.selected,
260
+ chip.value,
261
+ ];
262
+ this.selectedChange.emit(this.selected);
263
+ this.updateSelected();
264
+ }
265
+ unselect(chip) {
266
+ this.selected = this.selected
267
+ .filter((item) => item !== chip.value);
268
+ this.selectedChange.emit(this.selected);
269
+ this.updateSelected();
270
+ }
271
+ updateSelected() {
272
+ const chipArray = this.chips.toArray().sort((a, b) => {
273
+ const aSelected = this.selected.includes(a.value);
274
+ const bSelected = this.selected.includes(b.value);
275
+ if (aSelected === bSelected)
276
+ return 0;
277
+ return aSelected ? -1 : 1;
278
+ });
279
+ this.chips.reset(chipArray);
280
+ this._value = this.chips.toArray().map((chip) => chip.value);
281
+ this.onChange(this._value);
282
+ }
283
+ writeValue(value) {
284
+ if (value !== this.value) {
285
+ this._value = value;
286
+ }
287
+ this._updateChips();
288
+ }
289
+ registerOnChange(fn) {
290
+ this.onChange = fn;
291
+ }
292
+ registerOnTouched(fn) {
293
+ this.onTouch = fn;
294
+ }
295
+ _subscribeToSelectionChange() {
296
+ const changed = this._chipDiffer.diff(this.chips);
297
+ changed?.forEachAddedItem((change) => {
298
+ this._selectable = this.chips.some((chip) => chip.selectable);
299
+ change.item.hasChips = true;
300
+ change.item.selectedToggled
301
+ .pipe(takeUntil(change.item.destroy$), takeUntil(this._destroy$))
302
+ .subscribe(({ selected, value }) => {
303
+ if (this.multiple) {
304
+ if (selected) {
305
+ this.value.push(value);
306
+ }
307
+ else {
308
+ const valueIndex = this.value.findIndex((item) => {
309
+ return this._compareFn(item, value);
310
+ });
311
+ if (valueIndex > -1) {
312
+ this.value.splice(valueIndex, 1);
313
+ }
314
+ }
315
+ }
316
+ else {
317
+ this.chips
318
+ .forEach((chip) => {
319
+ if (!this._compareFn(chip.value, value)) {
320
+ chip.unselect();
321
+ }
322
+ });
323
+ this.value = selected ? value : null;
324
+ }
325
+ this.onChange(this._value);
326
+ this.onTouch(this._value);
327
+ });
328
+ });
329
+ }
330
+ /**
331
+ * Update selection if item was added or removed
332
+ */
333
+ _subscribeChanges() {
334
+ this.chips.changes
335
+ .pipe(takeUntil(this._destroy$))
336
+ .subscribe(() => {
337
+ this._subscribeToSelectionChange();
338
+ this._cdRef.markForCheck();
339
+ this._updateChips();
340
+ });
341
+ this._cdRef.markForCheck();
342
+ }
343
+ _compareFn(o1, o2) {
344
+ if (this.compare) {
345
+ return this.compare(o1, o2);
346
+ }
347
+ return o1 === o2;
348
+ }
349
+ _updateChips() {
350
+ if (this.multiple && this._selectable) {
351
+ if (Array.isArray(this.value)) {
352
+ this.chips.forEach((chip) => {
353
+ const selected = this.value
354
+ .some((item) => {
355
+ return this._compareFn(item, chip.value);
356
+ });
357
+ if (selected) {
358
+ chip.select();
359
+ }
360
+ else {
361
+ chip.unselect();
362
+ }
363
+ });
364
+ }
365
+ }
366
+ }
367
+ 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 });
368
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsChipsComponent, selector: "fs-chips", inputs: { compare: "compare", multiple: "multiple", sortable: "sortable", selected: "selected" }, outputs: { selectedChange: "selectedChange" }, providers: [
369
+ {
370
+ provide: NG_VALUE_ACCESSOR,
371
+ useExisting: forwardRef(() => FsChipsComponent),
372
+ multi: true,
373
+ },
374
+ ], 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 [cdkDropListSortPredicate]=\"sortPredicate\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (chip of chips; track chip) {\n <div\n cdkDrag\n class=\"fs-chip-drag-container\"\n [class.chips-selectable]=\"!!selected\"\n [cdkDragPreviewClass]=\"'fs-chip-drag-preview'\">\n <a\n class=\"chip-handle\"\n mat-icon-button\n [ngClass]=\"{ 'visible': !selected || selected.includes(chip.value)}\"\n cdkDragHandle>\n <mat-icon>\n drag_indicator\n </mat-icon>\n </a>\n @if (selected) {\n @if (selected.includes(chip.value)) {\n <a\n class=\"select-button select-button-selected\"\n (click)=\"unselect(chip)\"\n mat-icon-button>\n <mat-icon>\n remove_circle_outline\n </mat-icon>\n </a>\n } @else {\n <a\n class=\"select-button select-button-unselected\"\n (click)=\"select(chip)\"\n mat-icon-button>\n <mat-icon>\n add_circle_outline\n </mat-icon>\n </a>\n }\n }\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: ["@charset \"UTF-8\";@media (max-width: 599px){h1[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"]{margin-top:0}}@media (max-width: 1023px){h1[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"]{margin-top:0}}@media (max-width: 1439px){h1[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"]{margin-top:0}}.fs-delimit>*:not(:last-child):after{content:\",\\a0\"}.fs-chips{display:flex}.fs-chips:not(.chips-sortable){gap:5px}.fs-chips.chips-sortable{flex-direction:column}.fs-chips.chips-sortable .fs-chip-drag-container{border-bottom:8px solid transparent}.fs-chips.chips-sortable ::ng-deep .cdk-drag-placeholder{opacity:.3}.fs-chips .fs-chip-drag-container{display:flex}::ng-deep .fs-chip-drag-container{display:flex;align-items:center}::ng-deep .fs-chip-drag-container.fs-chip-drag-preview{display:flex;overflow:visible}::ng-deep .fs-chip-drag-container.fs-chip-drag-preview .select-button{visibility:hidden}::ng-deep .fs-chip-drag-container.fs-chip-drag-preview.chip-container .fs-chip{box-shadow:3px 3px 3px #c4c4c4}::ng-deep .fs-chip-drag-container.chips-selectable .chip-handle{order:10}::ng-deep .fs-chip-drag-container .select-button,::ng-deep .fs-chip-drag-container .chip-handle{color:inherit;display:flex;align-items:center}::ng-deep .fs-chip-drag-container .select-button{margin-right:5px}::ng-deep .fs-chip-drag-container .select-button.select-button-selected mat-icon{color:#92d050}::ng-deep .fs-chip-drag-container .select-button.select-button-unselected mat-icon{color:#ea4266}::ng-deep .fs-chip-drag-container .chip-handle:not(.visible){visibility:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$1.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$1.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$1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
375
+ }
376
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsChipsComponent, decorators: [{
377
+ type: Component,
378
+ args: [{ selector: 'fs-chips', providers: [
379
+ {
380
+ provide: NG_VALUE_ACCESSOR,
381
+ useExisting: forwardRef(() => FsChipsComponent),
382
+ multi: true,
383
+ },
384
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (sortable) {\n <div\n class=\"fs-chips chips-sortable\"\n cdkDropList\n [cdkDropListLockAxis]=\"'y'\"\n [cdkDropListSortPredicate]=\"sortPredicate\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (chip of chips; track chip) {\n <div\n cdkDrag\n class=\"fs-chip-drag-container\"\n [class.chips-selectable]=\"!!selected\"\n [cdkDragPreviewClass]=\"'fs-chip-drag-preview'\">\n <a\n class=\"chip-handle\"\n mat-icon-button\n [ngClass]=\"{ 'visible': !selected || selected.includes(chip.value)}\"\n cdkDragHandle>\n <mat-icon>\n drag_indicator\n </mat-icon>\n </a>\n @if (selected) {\n @if (selected.includes(chip.value)) {\n <a\n class=\"select-button select-button-selected\"\n (click)=\"unselect(chip)\"\n mat-icon-button>\n <mat-icon>\n remove_circle_outline\n </mat-icon>\n </a>\n } @else {\n <a\n class=\"select-button select-button-unselected\"\n (click)=\"select(chip)\"\n mat-icon-button>\n <mat-icon>\n add_circle_outline\n </mat-icon>\n </a>\n }\n }\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: ["@charset \"UTF-8\";@media (max-width: 599px){h1[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-xs*=fs-heading][fs\\.lt-xs*=\".top-none\"]{margin-top:0}}@media (max-width: 1023px){h1[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-sm*=fs-heading][fs\\.lt-sm*=\".top-none\"]{margin-top:0}}@media (max-width: 1439px){h1[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h2[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"],h3[class*=\".top\"][fs\\.lt-md*=fs-heading][fs\\.lt-md*=\".top-none\"]{margin-top:0}}.fs-delimit>*:not(:last-child):after{content:\",\\a0\"}.fs-chips{display:flex}.fs-chips:not(.chips-sortable){gap:5px}.fs-chips.chips-sortable{flex-direction:column}.fs-chips.chips-sortable .fs-chip-drag-container{border-bottom:8px solid transparent}.fs-chips.chips-sortable ::ng-deep .cdk-drag-placeholder{opacity:.3}.fs-chips .fs-chip-drag-container{display:flex}::ng-deep .fs-chip-drag-container{display:flex;align-items:center}::ng-deep .fs-chip-drag-container.fs-chip-drag-preview{display:flex;overflow:visible}::ng-deep .fs-chip-drag-container.fs-chip-drag-preview .select-button{visibility:hidden}::ng-deep .fs-chip-drag-container.fs-chip-drag-preview.chip-container .fs-chip{box-shadow:3px 3px 3px #c4c4c4}::ng-deep .fs-chip-drag-container.chips-selectable .chip-handle{order:10}::ng-deep .fs-chip-drag-container .select-button,::ng-deep .fs-chip-drag-container .chip-handle{color:inherit;display:flex;align-items:center}::ng-deep .fs-chip-drag-container .select-button{margin-right:5px}::ng-deep .fs-chip-drag-container .select-button.select-button-selected mat-icon{color:#92d050}::ng-deep .fs-chip-drag-container .select-button.select-button-unselected mat-icon{color:#ea4266}::ng-deep .fs-chip-drag-container .chip-handle:not(.visible){visibility:hidden}\n"] }]
385
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }], propDecorators: { dropList: [{
386
+ type: ViewChild,
387
+ args: [CdkDropList, { static: true }]
388
+ }], chips: [{
389
+ type: ContentChildren,
390
+ args: [FsChipComponent]
391
+ }], compare: [{
392
+ type: Input
393
+ }], multiple: [{
394
+ type: Input
395
+ }], sortable: [{
396
+ type: Input
397
+ }], selected: [{
398
+ type: Input
399
+ }], selectedChange: [{
400
+ type: Output
401
+ }] } });
402
+
366
403
  class FsChipModule {
367
404
  static forRoot() {
368
405
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"firestitch-chip.mjs","sources":["../../src/app/components/chip-action/chip-action.component.ts","../../src/app/components/chip-action/chip-action.component.html","../../src/app/components/chips/chips.component.ts","../../src/app/components/chips/chips.component.html","../../src/app/components/chip/chip.component.ts","../../src/app/components/chip/chip.component.html","../../src/app/fs-chip.module.ts","../../src/firestitch-chip.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n\n@Component({\n selector: 'fs-chip-action',\n templateUrl: './chip-action.component.html',\n styleUrls: ['./chip-action.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsChipActionComponent {\n\n @Input() public icon;\n\n @Input() public link;\n\n @Input() public linkTarget;\n\n @Input() public color;\n\n @Output() public actionClick = new EventEmitter<MouseEvent>();\n}\n","@if (link) {\n <a\n [href]=\"link\"\n [target]=\"linkTarget || '_self'\">\n <ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n </a>\n} @else {\n <ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n}\n<ng-template #actionTemplate>\n <mat-icon\n cdkHighlight\n [style.color]=\"color\"\n class=\"action\"\n (click)=\"actionClick.emit($event)\">\n {{ icon }}\n </mat-icon>\n</ng-template>","import {\n AfterContentInit,\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ContentChildren,\n forwardRef,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CdkDragDrop, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FsChipComponent } from '../chip/chip.component';\n\n\n@Component({\n selector: 'fs-chips',\n templateUrl: './chips.component.html',\n styleUrls: ['./chips.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FsChipsComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsChipsComponent implements OnDestroy, ControlValueAccessor, AfterContentInit {\n\n @ViewChild(CdkDropList, { static: true })\n public dropList: CdkDropList;\n\n @ContentChildren(FsChipComponent)\n public chips: QueryList<FsChipComponent>;\n\n @Input() public compare;\n\n @Input() public multiple = true;\n\n @Input() public sortable = false;\n\n public onChange: (value) => void;\n public onTouch: (value) => void;\n\n private _value = [];\n private _selectable = false;\n private _destroy$ = new Subject();\n private _chipDiffer: IterableDiffer<FsChipComponent>;\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _iterable: IterableDiffers,\n ) {\n this._chipDiffer = this._iterable.find([]).create();\n }\n\n public drop(event: CdkDragDrop<string[]>) {\n moveItemInArray(this._value, event.previousIndex, event.currentIndex);\n this.onChange(this._value);\n }\n\n public ngAfterContentInit(): void {\n this._subscribeToSelectionChange();\n this._subscribeChanges();\n }\n \n public set value(value) {\n if (this._value !== value) {\n this._value = value;\n\n this.onChange(this._value);\n this.onTouch(this._value);\n }\n }\n\n public get value() {\n return this._value;\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public writeValue(value: any) {\n if (value !== this.value) {\n this._value = value;\n }\n\n this._updateChips();\n }\n\n public registerOnChange(fn) {\n this.onChange = fn;\n }\n public registerOnTouched(fn) {\n this.onTouch = fn;\n }\n\n private _subscribeToSelectionChange() {\n const changed = this._chipDiffer.diff(this.chips);\n changed?.forEachAddedItem((change) => {\n this._selectable = this.chips.some((chip) => chip.selectable);\n change.item.selectedToggled\n .pipe(\n takeUntil(change.item.destroy$),\n takeUntil(this._destroy$),\n )\n .subscribe(({ selected, value }) => {\n if(this.multiple) {\n if (selected) {\n this.value.push(value);\n } else {\n const valueIndex = this.value.findIndex((item) => {\n return this._compareFn(item, value);\n });\n\n if (valueIndex > -1) {\n this.value.splice(valueIndex, 1);\n }\n }\n } else {\n this.chips\n .forEach((chip) => {\n if(!this._compareFn(chip.value, value)) {\n chip.unselect();\n }\n });\n\n this.value = selected ? value : null;\n }\n\n this.onChange(this._value);\n this.onTouch(this._value);\n });\n });\n }\n\n /**\n * Update selection if item was added or removed\n */\n private _subscribeChanges() {\n this.chips.changes\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._subscribeToSelectionChange();\n this._cdRef.markForCheck();\n this._updateChips();\n });\n\n this._cdRef.markForCheck();\n }\n\n private _compareFn(o1, o2) {\n if (this.compare) {\n return this.compare(o1, o2);\n }\n\n return o1 === o2;\n }\n\n private _updateChips() {\n if (this.multiple && this._selectable) {\n if (Array.isArray(this.value)) {\n this.chips.forEach((chip) => {\n const selected = this.value\n .some((item) => {\n return this._compareFn(item, chip.value);\n });\n\n if(selected) {\n chip.select();\n } else {\n chip.unselect();\n }\n });\n }\n }\n }\n}\n","@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}","import {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { FsChipsComponent } from '../chips/chips.component';\n\n\n@Component({\n selector: 'fs-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsChipComponent implements OnDestroy, OnChanges {\n\n @ViewChild(TemplateRef, { static: true }) \n public templateRef: TemplateRef<void>;\n\n @Input() \n public selectable = false;\n\n @Input()\n public removable = true;\n\n @Input() \n public value: any;\n\n @Input() \n public maxWidth: string;\n\n @Input() \n public width: string;\n\n @Input() public backgroundColor;\n\n @Input() public borderColor;\n\n @Input() public color;\n\n @Input() public outlined;\n\n @Input() \n public actions: {\n icon: string, \n click: (event: MouseEvent) => void, \n type?: 'remove',\n link?: string,\n linkTarget?: string,\n }[] = [];\n\n @Input() \n public icon: string;\n \n @Input() \n public image: string;\n \n @Input('selected') \n public set setSelected(value: boolean) {\n this.classes.selected = value;\n this._selected = value;\n }\n\n public get selected() {\n return this._selected;\n }\n\n @Output() public selectedToggled = new EventEmitter();\n @Output() public removed = new EventEmitter();\n\n public styles: any = {};\n public classes: any = {};\n\n private _destroy$ = new Subject();\n private _selected = false;\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _injector: Injector,\n ) {}\n\n @Input('size') public set setSize(value) {\n this.classes['size-small'] = value === 'small';\n this.classes['size-tiny'] = value === 'tiny';\n this.classes['size-micro'] = value === 'micro';\n }\n\n public get hasChips(): boolean {\n return !!this._injector.get(FsChipsComponent, null, { optional: true });\n }\n\n public click() {\n if (this.selectable) {\n this.setSelected = !this.selected;\n this.selectedToggled.emit({ value: this.value, selected: this.selected });\n }\n }\n\n public select() {\n this.setSelected = true;\n this._cdRef.markForCheck();\n }\n\n public unselect() {\n this.setSelected = false;\n this._cdRef.markForCheck();\n }\n\n public get destroy$(): Observable<any> {\n return this._destroy$.asObservable();\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n this.actions = this.actions\n .filter((action) => action.type !== 'remove');\n\n if(changes.selectable) {\n this.classes.selectable = this.selectable;\n }\n\n if(changes.removable) {\n this.classes.removable = this.removable;\n }\n\n if(changes.icon) {\n this.classes.iconed = !!this.icon;\n }\n\n if(changes.image) {\n this.classes.imaged = !!this.image;\n }\n\n if(this.removed.observed && this.removable) {\n this.actions.push({\n icon: 'remove_circle_outline',\n click: (event) => this.remove(event),\n type: 'remove',\n });\n }\n\n this.classes.actionable = this.actions.length !== 0;\n\n this._updateStyles();\n }\n\n public actionClick(action, event: MouseEvent) {\n if(action.click) {\n action.click(event);\n }\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public remove(event: MouseEvent) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n this.removed.next(event);\n }\n\n private _isContrastYIQBlack(hexcolor) {\n if (!hexcolor) {\n return true;\n }\n\n hexcolor = hexcolor.replace('#', '');\n const r = parseInt(hexcolor.substr(0, 2), 16);\n const g = parseInt(hexcolor.substr(2, 2), 16);\n const b = parseInt(hexcolor.substr(4, 2), 16);\n const yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;\n\n return yiq >= 200;\n }\n\n private _updateStyles() {\n this.styles.backgroundColor = this.backgroundColor;\n this.styles.borderColor = this.borderColor;\n this.styles.width = this.width;\n this.classes.outlined = this.outlined;\n\n if (this.color) {\n this.styles.color = this.color;\n } else if (!this.outlined) {\n this.styles.color = this._isContrastYIQBlack(this.backgroundColor) ? '#474747' : '#fff';\n }\n\n if (this.outlined) {\n this.styles.backgroundColor = '';\n\n if (this.color) {\n this.styles.borderColor = this.color;\n }\n }\n\n this._cdRef.markForCheck();\n }\n}\n","<ng-template>\n <div\n class=\"fs-chip\"\n (click)=\"click()\"\n [ngStyle]=\"styles\"\n [ngClass]=\"classes\">\n <ng-container *ngIf=\"image\">\n <img\n [src]=\"image\"\n class=\"image\"\n alt=\"\">\n </ng-container>\n <ng-container *ngIf=\"icon\">\n <mat-icon class=\"icon\">\n {{ icon }}\n </mat-icon>\n </ng-container>\n <div\n class=\"fs-chip-content\"\n [ngStyle]=\"{ 'max-width': maxWidth }\">\n <ng-content></ng-content>\n </div>\n @if (selected) {\n <div class=\"selected-check\">\n <mat-icon [style.color]=\"styles.color\">\n check\n </mat-icon>\n </div>\n }\n @if (actions) {\n <div class=\"actions\">\n @for (action of actions; track action.icon) {\n <fs-chip-action\n [icon]=\"action.icon\"\n [link]=\"action.link\"\n [linkTarget]=\"action.linkTarget\"\n [color]=\"styles.color\"\n (actionClick)=\"actionClick(action, $event)\">\n </fs-chip-action>\n }\n </div>\n }\n </div>\n</ng-template>\n@if (!hasChips) {\n <ng-container [ngTemplateOutlet]=\"templateRef\"></ng-container>\n}","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { FsLabelModule } from '@firestitch/label';\n\nimport { FsChipActionComponent } from './components/chip-action/chip-action.component';\nimport { FsChipComponent } from './components/chip/chip.component';\nimport { FsChipsComponent } from './components/chips/chips.component';\n\n@NgModule({\n imports: [\n CommonModule,\n\n DragDropModule,\n MatIconModule,\n\n FsLabelModule,\n ],\n exports: [\n FsChipsComponent,\n FsChipComponent,\n ],\n declarations: [\n FsChipsComponent,\n FsChipComponent,\n FsChipActionComponent,\n ],\n})\nexport class FsChipModule {\n public static forRoot(): ModuleWithProviders<FsChipModule> {\n return {\n ngModule: FsChipModule,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i3","i3.FsChipActionComponent"],"mappings":";;;;;;;;;;;;;MAea,qBAAqB,CAAA;AAEhB,IAAA,IAAI,CAAC;AAEL,IAAA,IAAI,CAAC;AAEL,IAAA,UAAU,CAAC;AAEX,IAAA,KAAK,CAAC;AAEL,IAAA,WAAW,GAAG,IAAI,YAAY,EAAc,CAAC;uGAVnD,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,iLCflC,6cAiBc,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDFD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6cAAA,EAAA,CAAA;8BAI/B,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBAEU,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBAEU,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBAEU,KAAK,EAAA,CAAA;sBAApB,KAAK;gBAEW,WAAW,EAAA,CAAA;sBAA3B,MAAM;;;MEWI,gBAAgB,CAAA;AAuBjB,IAAA,MAAA,CAAA;AACA,IAAA,SAAA,CAAA;AArBH,IAAA,QAAQ,CAAc;AAGtB,IAAA,KAAK,CAA6B;AAEzB,IAAA,OAAO,CAAC;IAER,QAAQ,GAAG,IAAI,CAAC;IAEhB,QAAQ,GAAG,KAAK,CAAC;AAE1B,IAAA,QAAQ,CAAkB;AAC1B,IAAA,OAAO,CAAkB;IAExB,MAAM,GAAG,EAAE,CAAC;IACZ,WAAW,GAAG,KAAK,CAAC;AACpB,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1B,IAAA,WAAW,CAAkC;IAErD,WACU,CAAA,MAAyB,EACzB,SAA0B,EAAA;QAD1B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;QACzB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;AAElC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;KACrD;AAEM,IAAA,IAAI,CAAC,KAA4B,EAAA;AACtC,QAAA,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC5B;IAEM,kBAAkB,GAAA;QACvB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,IAAW,KAAK,CAAC,KAAK,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAEpB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3B;KACF;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAEM,IAAA,UAAU,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAEM,IAAA,gBAAgB,CAAC,EAAE,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AACM,IAAA,iBAAiB,CAAC,EAAE,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACnB;IAEO,2BAA2B,GAAA;AACjC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClD,QAAA,OAAO,EAAE,gBAAgB,CAAC,CAAC,MAAM,KAAI;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,eAAe;AACxB,iBAAA,IAAI,CACH,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC/B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;iBACA,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAI;AACjC,gBAAA,IAAG,IAAI,CAAC,QAAQ,EAAE;oBAChB,IAAI,QAAQ,EAAE;AACZ,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACxB;yBAAM;wBACL,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;4BAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACtC,yBAAC,CAAC,CAAC;AAEH,wBAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;4BACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;yBAClC;qBACF;iBACF;qBAAM;AACL,oBAAA,IAAI,CAAC,KAAK;AACP,yBAAA,OAAO,CAAC,CAAC,IAAI,KAAI;AAChB,wBAAA,IAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;4BACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;yBACjB;AACH,qBAAC,CAAC,CAAC;AAEL,oBAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;iBACtC;AAED,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;IACK,iBAAiB,GAAA;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO;AACf,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAC5B;IAEO,UAAU,CAAC,EAAE,EAAE,EAAE,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SAC7B;QAED,OAAO,EAAE,KAAK,EAAE,CAAC;KAClB;IAEO,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;YACrC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC1B,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK;AACxB,yBAAA,IAAI,CAAC,CAAC,IAAI,KAAI;wBACb,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,qBAAC,CAAC,CAAC;oBAEL,IAAG,QAAQ,EAAE;wBACX,IAAI,CAAC,MAAM,EAAE,CAAC;qBACf;yBAAM;wBACL,IAAI,CAAC,QAAQ,EAAE,CAAC;qBACjB;AACH,iBAAC,CAAC,CAAC;aACJ;SACF;KACF;uGAzJU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAThB,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAQgB,eAAe,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAHrB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCxB,o2BA+BC,EAAA,MAAA,EAAA,CAAA,stBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDKY,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAGT,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAC/C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;qBACF,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,o2BAAA,EAAA,MAAA,EAAA,CAAA,stBAAA,CAAA,EAAA,CAAA;oHAKxC,QAAQ,EAAA,CAAA;sBADd,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIjC,KAAK,EAAA,CAAA;sBADX,eAAe;uBAAC,eAAe,CAAA;gBAGhB,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBAEU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;gBAEU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;;;MEvBK,eAAe,CAAA;AA+DhB,IAAA,MAAA,CAAA;AACA,IAAA,SAAA,CAAA;AA7DH,IAAA,WAAW,CAAoB;IAG/B,UAAU,GAAG,KAAK,CAAC;IAGnB,SAAS,GAAG,IAAI,CAAC;AAGjB,IAAA,KAAK,CAAM;AAGX,IAAA,QAAQ,CAAS;AAGjB,IAAA,KAAK,CAAS;AAEL,IAAA,eAAe,CAAC;AAEhB,IAAA,WAAW,CAAC;AAEZ,IAAA,KAAK,CAAC;AAEN,IAAA,QAAQ,CAAC;IAGlB,OAAO,GAMR,EAAE,CAAC;AAGF,IAAA,IAAI,CAAS;AAGb,IAAA,KAAK,CAAS;IAErB,IACW,WAAW,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAEgB,IAAA,eAAe,GAAG,IAAI,YAAY,EAAE,CAAC;AACrC,IAAA,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IAEvC,MAAM,GAAQ,EAAE,CAAC;IACjB,OAAO,GAAQ,EAAE,CAAC;AAEjB,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;IAC1B,SAAS,GAAG,KAAK,CAAC;IAE1B,WACU,CAAA,MAAyB,EACzB,SAAmB,EAAA;QADnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;QACzB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;KACzB;IAEJ,IAA0B,OAAO,CAAC,KAAK,EAAA;QACrC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,KAAK,KAAK,OAAO,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,KAAK,MAAM,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,KAAK,KAAK,OAAO,CAAC;KAChD;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;KACzE;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC3E;KACF;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAC5B;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAC5B;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AACxB,aAAA,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AAEhD,QAAA,IAAG,OAAO,CAAC,UAAU,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SAC3C;AAED,QAAA,IAAG,OAAO,CAAC,SAAS,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;SACzC;AAED,QAAA,IAAG,OAAO,CAAC,IAAI,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SACnC;AAED,QAAA,IAAG,OAAO,CAAC,KAAK,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;SACpC;QAED,IAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1C,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChB,gBAAA,IAAI,EAAE,uBAAuB;gBAC7B,KAAK,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAEM,WAAW,CAAC,MAAM,EAAE,KAAiB,EAAA;AAC1C,QAAA,IAAG,MAAM,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACrB;KACF;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAEM,IAAA,MAAM,CAAC,KAAiB,EAAA;QAC7B,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACjC,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;AAEO,IAAA,mBAAmB,CAAC,QAAQ,EAAA;QAClC,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,IAAI,CAAC;SACb;QAED,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACrC,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9C,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9C,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC;QAEvD,OAAO,GAAG,IAAI,GAAG,CAAC;KACnB;IAEO,aAAa,GAAA;QACnB,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAEtC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAChC;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC;SACzF;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,EAAE,CAAC;AAEjC,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;aACtC;SACF;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAC5B;uGAvLU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEf,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BxB,stCA8CC,EAAA,MAAA,EAAA,CAAA,6hFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDrBY,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,SAAS,EAAA,eAAA,EAGF,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,stCAAA,EAAA,MAAA,EAAA,CAAA,6hFAAA,CAAA,EAAA,CAAA;6GAKxC,WAAW,EAAA,CAAA;sBADjB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIjC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAIC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAIC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAIC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAGU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBAEU,WAAW,EAAA,CAAA;sBAA1B,KAAK;gBAEU,KAAK,EAAA,CAAA;sBAApB,KAAK;gBAEU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;gBAGC,OAAO,EAAA,CAAA;sBADb,KAAK;gBAUC,IAAI,EAAA,CAAA;sBADV,KAAK;gBAIC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAIK,WAAW,EAAA,CAAA;sBADrB,KAAK;uBAAC,UAAU,CAAA;gBAUA,eAAe,EAAA,CAAA;sBAA/B,MAAM;gBACU,OAAO,EAAA,CAAA;sBAAvB,MAAM;gBAamB,OAAO,EAAA,CAAA;sBAAhC,KAAK;uBAAC,MAAM,CAAA;;;ME7DF,YAAY,CAAA;AAChB,IAAA,OAAO,OAAO,GAAA;QACnB,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;SACvB,CAAC;KACH;uGALU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBALrB,gBAAgB;YAChB,eAAe;AACf,YAAA,qBAAqB,aAdrB,YAAY;YAEZ,cAAc;YACd,aAAa;AAEb,YAAA,aAAa,aAGb,gBAAgB;YAChB,eAAe,CAAA,EAAA,CAAA,CAAA;AAQN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAjBrB,YAAY;YAEZ,cAAc;YACd,aAAa;YAEb,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAYJ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAnBxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBAEZ,cAAc;wBACd,aAAa;wBAEb,aAAa;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,eAAe;AAChB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,gBAAgB;wBAChB,eAAe;wBACf,qBAAqB;AACtB,qBAAA;AACF,iBAAA,CAAA;;;AC9BD;;AAEG;;;;"}
1
+ {"version":3,"file":"firestitch-chip.mjs","sources":["../../src/app/components/chip-action/chip-action.component.ts","../../src/app/components/chip-action/chip-action.component.html","../../src/app/components/chip/chip.component.ts","../../src/app/components/chip/chip.component.html","../../src/app/components/chips/chips.component.ts","../../src/app/components/chips/chips.component.html","../../src/app/fs-chip.module.ts","../../src/firestitch-chip.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n\n@Component({\n selector: 'fs-chip-action',\n templateUrl: './chip-action.component.html',\n styleUrls: ['./chip-action.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsChipActionComponent {\n\n @Input() public icon;\n\n @Input() public link;\n\n @Input() public linkTarget;\n\n @Input() public color;\n\n @Output() public actionClick = new EventEmitter<MouseEvent>();\n}\n","@if (link) {\n <a\n [href]=\"link\"\n [target]=\"linkTarget || '_self'\">\n <ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n </a>\n} @else {\n <ng-container *ngTemplateOutlet=\"actionTemplate\"></ng-container>\n}\n<ng-template #actionTemplate>\n <mat-icon\n cdkHighlight\n [style.color]=\"color\"\n class=\"action\"\n (click)=\"actionClick.emit($event)\">\n {{ icon }}\n </mat-icon>\n</ng-template>","import {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\n\n@Component({\n selector: 'fs-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsChipComponent implements OnDestroy, OnChanges {\n\n @ViewChild(TemplateRef, { static: true }) \n public templateRef: TemplateRef<void>;\n\n @Input() \n public selectable = false;\n\n @Input()\n public removable = true;\n\n @Input() \n public value: any;\n\n @Input() \n public maxWidth: string;\n\n @Input() \n public width: string;\n\n @Input() public backgroundColor;\n\n @Input() public borderColor;\n\n @Input() public color;\n\n @Input() public outlined;\n\n @Input() \n public actions: {\n icon: string, \n click: (event: MouseEvent) => void, \n type?: 'remove',\n link?: string,\n linkTarget?: string,\n }[] = [];\n\n @Input() \n public icon: string;\n \n @Input() \n public image: string;\n \n @Input('selected') \n public set setSelected(value: boolean) {\n this.classes.selected = value;\n this._selected = value;\n }\n\n public get selected() {\n return this._selected;\n }\n\n @Output() public selectedToggled = new EventEmitter();\n @Output() public removed = new EventEmitter();\n\n public styles: any = {};\n public classes: any = {};\n public hasChips: boolean;\n\n private _destroy$ = new Subject();\n private _selected = false;\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n @Input('size') public set setSize(value) {\n this.classes['size-small'] = value === 'small';\n this.classes['size-tiny'] = value === 'tiny';\n this.classes['size-micro'] = value === 'micro';\n }\n\n public click() {\n if (this.selectable) {\n this.setSelected = !this.selected;\n this.selectedToggled.emit({ value: this.value, selected: this.selected });\n }\n }\n\n public select() {\n this.setSelected = true;\n this._cdRef.markForCheck();\n }\n\n public unselect() {\n this.setSelected = false;\n this._cdRef.markForCheck();\n }\n\n public get destroy$(): Observable<any> {\n return this._destroy$.asObservable();\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n this.actions = this.actions\n .filter((action) => action.type !== 'remove');\n\n if(changes.selectable) {\n this.classes.selectable = this.selectable;\n }\n\n if(changes.removable) {\n this.classes.removable = this.removable;\n }\n\n if(changes.icon) {\n this.classes.iconed = !!this.icon;\n }\n\n if(changes.image) {\n this.classes.imaged = !!this.image;\n }\n\n if(this.removed.observed && this.removable) {\n this.actions.push({\n icon: 'remove_circle_outline',\n click: (event) => this.remove(event),\n type: 'remove',\n });\n }\n\n this.classes.actionable = this.actions.length !== 0;\n\n this._updateStyles();\n }\n\n public actionClick(action, event: MouseEvent) {\n if(action.click) {\n action.click(event);\n }\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public remove(event: MouseEvent) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n this.removed.next(event);\n }\n\n private _isContrastYIQBlack(hexcolor) {\n if (!hexcolor) {\n return true;\n }\n\n hexcolor = hexcolor.replace('#', '');\n const r = parseInt(hexcolor.substr(0, 2), 16);\n const g = parseInt(hexcolor.substr(2, 2), 16);\n const b = parseInt(hexcolor.substr(4, 2), 16);\n const yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;\n\n return yiq >= 200;\n }\n\n private _updateStyles() {\n this.styles.backgroundColor = this.backgroundColor;\n this.styles.borderColor = this.borderColor;\n this.styles.width = this.width;\n this.classes.outlined = this.outlined;\n\n if (this.color) {\n this.styles.color = this.color;\n } else if (!this.outlined) {\n this.styles.color = this._isContrastYIQBlack(this.backgroundColor) ? '#474747' : '#fff';\n }\n\n if (this.outlined) {\n this.styles.backgroundColor = '';\n\n if (this.color) {\n this.styles.borderColor = this.color;\n }\n }\n\n this._cdRef.markForCheck();\n }\n}\n","<ng-template>\n <div\n class=\"fs-chip\"\n (click)=\"click()\"\n [ngStyle]=\"styles\"\n [ngClass]=\"classes\">\n <ng-container *ngIf=\"image\">\n <img\n [src]=\"image\"\n class=\"image\"\n alt=\"\">\n </ng-container>\n <ng-container *ngIf=\"icon\">\n <mat-icon class=\"icon\">\n {{ icon }}\n </mat-icon>\n </ng-container>\n <div\n class=\"fs-chip-content\"\n [ngStyle]=\"{ 'max-width': maxWidth }\">\n <ng-content></ng-content>\n </div>\n @if (selected) {\n <div class=\"selected-check\">\n <mat-icon [style.color]=\"styles.color\">\n check\n </mat-icon>\n </div>\n }\n @if (actions) {\n <div class=\"actions\">\n @for (action of actions; track action.icon) {\n <fs-chip-action\n [icon]=\"action.icon\"\n [link]=\"action.link\"\n [linkTarget]=\"action.linkTarget\"\n [color]=\"styles.color\"\n (actionClick)=\"actionClick(action, $event)\">\n </fs-chip-action>\n }\n </div>\n }\n </div>\n</ng-template>\n@if (!hasChips) {\n <ng-container [ngTemplateOutlet]=\"templateRef\"></ng-container>\n}","import {\n AfterContentInit,\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n forwardRef,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CdkDragDrop, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FsChipComponent } from '../chip/chip.component';\n\n\n@Component({\n selector: 'fs-chips',\n templateUrl: './chips.component.html',\n styleUrls: ['./chips.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FsChipsComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsChipsComponent implements OnDestroy, ControlValueAccessor, AfterContentInit {\n\n @ViewChild(CdkDropList, { static: true })\n public dropList: CdkDropList;\n\n @ContentChildren(FsChipComponent)\n public chips: QueryList<FsChipComponent>;\n\n @Input() public compare;\n\n @Input() public multiple = true;\n\n @Input() public sortable = false;\n\n @Input() public selected: any[];\n @Output() public selectedChange = new EventEmitter();\n\n public onChange: (value) => void;\n public onTouch: (value) => void;\n\n private _value = [];\n private _selectable = false;\n private _destroy$ = new Subject();\n private _chipDiffer: IterableDiffer<FsChipComponent>;\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _iterable: IterableDiffers,\n ) {\n this._chipDiffer = this._iterable.find([]).create();\n }\n\n public drop(event: CdkDragDrop<string[]>) {\n moveItemInArray(this._value, event.previousIndex, event.currentIndex);\n\n if(this.selected) {\n this.selected = this._value\n .filter((value) => this.selected.includes(value));\n this.selectedChange.emit(this.selected);\n }\n \n this.onChange(this._value);\n }\n\n public ngAfterContentInit(): void {\n this._subscribeToSelectionChange();\n this._subscribeChanges();\n }\n\n public sortPredicate = (index: number) => {\n return !this.selected || index <= this.selected.length - 1;\n };\n \n public set value(value) {\n if (this._value !== value) {\n this._value = value;\n\n this.onChange(this._value);\n this.onTouch(this._value);\n }\n }\n\n public get value() {\n return this._value;\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public select(chip: FsChipComponent) {\n this.selected = [\n ...this.selected, \n chip.value,\n ];\n\n this.selectedChange.emit(this.selected);\n\n this.updateSelected(); \n }\n \n public unselect(chip: FsChipComponent) {\n this.selected = this.selected\n .filter((item) => item !== chip.value);\n\n this.selectedChange.emit(this.selected);\n\n this.updateSelected();\n }\n \n public updateSelected() {\n const chipArray = this.chips.toArray().sort((a, b) => {\n const aSelected = this.selected.includes(a.value);\n const bSelected = this.selected.includes(b.value);\n \n if (aSelected === bSelected) return 0;\n\n return aSelected ? -1 : 1;\n });\n\n this.chips.reset(chipArray);\n this._value = this.chips.toArray().map((chip) => chip.value);\n this.onChange(this._value);\n }\n\n public writeValue(value: any) {\n if (value !== this.value) {\n this._value = value;\n }\n\n this._updateChips();\n }\n\n public registerOnChange(fn) {\n this.onChange = fn;\n }\n public registerOnTouched(fn) {\n this.onTouch = fn;\n }\n\n private _subscribeToSelectionChange() {\n const changed = this._chipDiffer.diff(this.chips);\n changed?.forEachAddedItem((change) => {\n this._selectable = this.chips.some((chip) => chip.selectable);\n\n change.item.hasChips = true;\n change.item.selectedToggled\n .pipe(\n takeUntil(change.item.destroy$),\n takeUntil(this._destroy$),\n )\n .subscribe(({ selected, value }) => {\n if(this.multiple) {\n if (selected) {\n this.value.push(value);\n } else {\n const valueIndex = this.value.findIndex((item) => {\n return this._compareFn(item, value);\n });\n\n if (valueIndex > -1) {\n this.value.splice(valueIndex, 1);\n }\n }\n } else {\n this.chips\n .forEach((chip) => {\n if(!this._compareFn(chip.value, value)) {\n chip.unselect();\n }\n });\n\n this.value = selected ? value : null;\n }\n\n this.onChange(this._value);\n this.onTouch(this._value);\n });\n });\n }\n\n /**\n * Update selection if item was added or removed\n */\n private _subscribeChanges() {\n this.chips.changes\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._subscribeToSelectionChange();\n this._cdRef.markForCheck();\n this._updateChips();\n });\n\n this._cdRef.markForCheck();\n }\n\n private _compareFn(o1, o2) {\n if (this.compare) {\n return this.compare(o1, o2);\n }\n\n return o1 === o2;\n }\n\n private _updateChips() {\n if (this.multiple && this._selectable) {\n if (Array.isArray(this.value)) {\n this.chips.forEach((chip) => {\n const selected = this.value\n .some((item) => {\n return this._compareFn(item, chip.value);\n });\n\n if(selected) {\n chip.select();\n } else {\n chip.unselect();\n }\n });\n }\n }\n }\n}\n","@if (sortable) {\n <div\n class=\"fs-chips chips-sortable\"\n cdkDropList\n [cdkDropListLockAxis]=\"'y'\"\n [cdkDropListSortPredicate]=\"sortPredicate\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (chip of chips; track chip) {\n <div\n cdkDrag\n class=\"fs-chip-drag-container\"\n [class.chips-selectable]=\"!!selected\"\n [cdkDragPreviewClass]=\"'fs-chip-drag-preview'\">\n <a\n class=\"chip-handle\"\n mat-icon-button\n [ngClass]=\"{ 'visible': !selected || selected.includes(chip.value)}\"\n cdkDragHandle>\n <mat-icon>\n drag_indicator\n </mat-icon>\n </a>\n @if (selected) {\n @if (selected.includes(chip.value)) {\n <a\n class=\"select-button select-button-selected\"\n (click)=\"unselect(chip)\"\n mat-icon-button>\n <mat-icon>\n remove_circle_outline\n </mat-icon>\n </a>\n } @else {\n <a\n class=\"select-button select-button-unselected\"\n (click)=\"select(chip)\"\n mat-icon-button>\n <mat-icon>\n add_circle_outline\n </mat-icon>\n </a>\n }\n }\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}","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { FsLabelModule } from '@firestitch/label';\n\nimport { FsChipActionComponent } from './components/chip-action/chip-action.component';\nimport { FsChipComponent } from './components/chip/chip.component';\nimport { FsChipsComponent } from './components/chips/chips.component';\n\n@NgModule({\n imports: [\n CommonModule,\n\n DragDropModule,\n MatIconModule,\n\n FsLabelModule,\n ],\n exports: [\n FsChipsComponent,\n FsChipComponent,\n ],\n declarations: [\n FsChipsComponent,\n FsChipComponent,\n FsChipActionComponent,\n ],\n})\nexport class FsChipModule {\n public static forRoot(): ModuleWithProviders<FsChipModule> {\n return {\n ngModule: FsChipModule,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3.FsChipActionComponent","i2","i3"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firestitch/chip",
3
- "version": "18.0.6",
3
+ "version": "18.0.8",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/Firestitch/ngx-chip"