cmat 0.0.5 → 0.0.6

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.
@@ -11,6 +11,8 @@ export declare class CmatChipInputComponent implements ControlValueAccessor, OnD
11
11
  hasAutocomplete: boolean;
12
12
  outputIsString: boolean;
13
13
  separatorKey: string;
14
+ hasPrefixIcon: boolean;
15
+ prefixIcon: string;
14
16
  inputControl: FormControl<string | null>;
15
17
  filteredOptions$: Observable<string[] | null>;
16
18
  selectedOptions$: BehaviorSubject<any>;
@@ -30,5 +32,5 @@ export declare class CmatChipInputComponent implements ControlValueAccessor, OnD
30
32
  private _onTouchedChange;
31
33
  private _filter;
32
34
  static ɵfac: i0.ɵɵFactoryDeclaration<CmatChipInputComponent, never>;
33
- static ɵcmp: i0.ɵɵComponentDeclaration<CmatChipInputComponent, "cmat-chip-input", ["cmatChipInput"], { "label": { "alias": "label"; "required": false; }; "selectableOptions": { "alias": "selectableOptions"; "required": false; }; "hasAutocomplete": { "alias": "hasAutocomplete"; "required": false; }; "outputIsString": { "alias": "outputIsString"; "required": false; }; "separatorKey": { "alias": "separatorKey"; "required": false; }; }, {}, never, never, true, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<CmatChipInputComponent, "cmat-chip-input", ["cmatChipInput"], { "label": { "alias": "label"; "required": false; }; "selectableOptions": { "alias": "selectableOptions"; "required": false; }; "hasAutocomplete": { "alias": "hasAutocomplete"; "required": false; }; "outputIsString": { "alias": "outputIsString"; "required": false; }; "separatorKey": { "alias": "separatorKey"; "required": false; }; "hasPrefixIcon": { "alias": "hasPrefixIcon"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; }, {}, never, never, true, never>;
34
36
  }
@@ -22,6 +22,8 @@ export class CmatChipInputComponent {
22
22
  this.hasAutocomplete = false;
23
23
  this.outputIsString = false;
24
24
  this.separatorKey = ',';
25
+ this.hasPrefixIcon = false;
26
+ this.prefixIcon = 'heroicons_solid:pencil-square';
25
27
  this.inputControl = new FormControl();
26
28
  this.selectedOptions$ = new BehaviorSubject([]);
27
29
  this.separatorKeysCodes = [ENTER, COMMA];
@@ -110,13 +112,13 @@ export class CmatChipInputComponent {
110
112
  return this.selectableOptions.filter(v => v.toLowerCase().includes(filterValue));
111
113
  }
112
114
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatChipInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
113
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: CmatChipInputComponent, isStandalone: true, selector: "cmat-chip-input", inputs: { label: "label", selectableOptions: "selectableOptions", hasAutocomplete: "hasAutocomplete", outputIsString: "outputIsString", separatorKey: "separatorKey" }, providers: [
115
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: CmatChipInputComponent, isStandalone: true, selector: "cmat-chip-input", inputs: { label: "label", selectableOptions: "selectableOptions", hasAutocomplete: "hasAutocomplete", outputIsString: "outputIsString", separatorKey: "separatorKey", hasPrefixIcon: "hasPrefixIcon", prefixIcon: "prefixIcon" }, providers: [
114
116
  {
115
117
  provide: NG_VALUE_ACCESSOR,
116
118
  useExisting: forwardRef(() => CmatChipInputComponent),
117
119
  multi: true
118
120
  }
119
- ], viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["input"], descendants: true }], exportAs: ["cmatChipInput"], ngImport: i0, template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"w-full\">\n <mat-label>{{label}}</mat-label>\n <mat-chip-grid #chipList class=\"items-center\">\n @for (option of selectedOptions$ | async; track trackByFn($index)) {\n <mat-chip-row selectable (removed)=\"onRemove(option)\">\n {{ option }}\n <button matChipRemove>\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_solid:cancel'\"></mat-icon>\n </button>\n </mat-chip-row>\n }\n\n @if (hasAutocomplete) {\n <input #input matInput [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u9009\u62E9...'\"\n [matAutocomplete]=\"autoComplete\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track trackByFn($index)) {\n <mat-option [value]=\"option\">\n {{ option }}\n </mat-option>\n }\n </mat-autocomplete>\n } @else {\n <input #input [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u586B\u5199...'\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n }\n </mat-chip-grid>\n\n </mat-form-field>\n\n", dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i2.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i2.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i2.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i2.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
121
+ ], viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["input"], descendants: true }], exportAs: ["cmatChipInput"], ngImport: i0, template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"w-full\">\n <mat-label>{{label}}</mat-label>\n @if(hasPrefixIcon){\n <mat-icon matPrefix class=\"hidden sm:flex icon-size-5\" [svgIcon]=\"prefixIcon\">\n </mat-icon>\n }\n <mat-chip-grid #chipList class=\"items-center\">\n @for (option of selectedOptions$ | async; track trackByFn($index)) {\n <mat-chip-row selectable (removed)=\"onRemove(option)\">\n {{ option }}\n <button matChipRemove>\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_solid:cancel'\"></mat-icon>\n </button>\n </mat-chip-row>\n }\n\n @if (hasAutocomplete) {\n <input #input matInput [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u9009\u62E9...'\" [matAutocomplete]=\"autoComplete\"\n [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"onAdd($event)\" />\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track trackByFn($index)) {\n <mat-option [value]=\"option\">\n {{ option }}\n </mat-option>\n }\n </mat-autocomplete>\n } @else {\n <input #input [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u586B\u5199...'\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n }\n </mat-chip-grid>\n\n</mat-form-field>", dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i2.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i2.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i2.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i2.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
120
122
  }
121
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatChipInputComponent, decorators: [{
122
124
  type: Component,
@@ -126,7 +128,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
126
128
  useExisting: forwardRef(() => CmatChipInputComponent),
127
129
  multi: true
128
130
  }
129
- ], exportAs: 'cmatChipInput', imports: [MatFormFieldModule, MatChipsModule, AsyncPipe, MatInputModule, MatAutocompleteModule, MatIconModule, FormsModule, ReactiveFormsModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"w-full\">\n <mat-label>{{label}}</mat-label>\n <mat-chip-grid #chipList class=\"items-center\">\n @for (option of selectedOptions$ | async; track trackByFn($index)) {\n <mat-chip-row selectable (removed)=\"onRemove(option)\">\n {{ option }}\n <button matChipRemove>\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_solid:cancel'\"></mat-icon>\n </button>\n </mat-chip-row>\n }\n\n @if (hasAutocomplete) {\n <input #input matInput [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u9009\u62E9...'\"\n [matAutocomplete]=\"autoComplete\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track trackByFn($index)) {\n <mat-option [value]=\"option\">\n {{ option }}\n </mat-option>\n }\n </mat-autocomplete>\n } @else {\n <input #input [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u586B\u5199...'\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n }\n </mat-chip-grid>\n\n </mat-form-field>\n\n" }]
131
+ ], exportAs: 'cmatChipInput', imports: [MatFormFieldModule, MatChipsModule, AsyncPipe, MatInputModule, MatAutocompleteModule, MatIconModule, FormsModule, ReactiveFormsModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"w-full\">\n <mat-label>{{label}}</mat-label>\n @if(hasPrefixIcon){\n <mat-icon matPrefix class=\"hidden sm:flex icon-size-5\" [svgIcon]=\"prefixIcon\">\n </mat-icon>\n }\n <mat-chip-grid #chipList class=\"items-center\">\n @for (option of selectedOptions$ | async; track trackByFn($index)) {\n <mat-chip-row selectable (removed)=\"onRemove(option)\">\n {{ option }}\n <button matChipRemove>\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_solid:cancel'\"></mat-icon>\n </button>\n </mat-chip-row>\n }\n\n @if (hasAutocomplete) {\n <input #input matInput [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u9009\u62E9...'\" [matAutocomplete]=\"autoComplete\"\n [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"onAdd($event)\" />\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track trackByFn($index)) {\n <mat-option [value]=\"option\">\n {{ option }}\n </mat-option>\n }\n </mat-autocomplete>\n } @else {\n <input #input [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u586B\u5199...'\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n }\n </mat-chip-grid>\n\n</mat-form-field>" }]
130
132
  }], ctorParameters: () => [], propDecorators: { inputElementRef: [{
131
133
  type: ViewChild,
132
134
  args: ['input']
@@ -140,5 +142,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
140
142
  type: Input
141
143
  }], separatorKey: [{
142
144
  type: Input
145
+ }], hasPrefixIcon: [{
146
+ type: Input
147
+ }], prefixIcon: [{
148
+ type: Input
143
149
  }] } });
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvY2hpcC1pbnB1dC9jaGlwLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9jaGlwLWlucHV0L2NoaXAtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQWEsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQXdCLFdBQVcsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4SCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckcsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUscUJBQXFCLEVBQWdDLE1BQU0sZ0NBQWdDLENBQUM7QUFDckcsT0FBTyxFQUFxQixjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7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QU87Z0JBQ1QsS0FBSztzQkFBYixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50LCBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNFbXB0eSwgaXNOaWwgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuXHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1jaGlwLWlucHV0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jaGlwLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDbWF0Q2hpcElucHV0Q29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdLFxyXG4gICAgZXhwb3J0QXM6ICdjbWF0Q2hpcElucHV0JyxcclxuICAgIGltcG9ydHM6IFtNYXRGb3JtRmllbGRNb2R1bGUsIE1hdENoaXBzTW9kdWxlLEFzeW5jUGlwZSwgTWF0SW5wdXRNb2R1bGUsIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0Q2hpcElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XHJcbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0RWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzZWxlY3RhYmxlT3B0aW9uczogc3RyaW5nW107XHJcbiAgICBASW5wdXQoKSBoYXNBdXRvY29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIG91dHB1dElzU3RyaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzZXBhcmF0b3JLZXk6IHN0cmluZyA9ICcsJztcclxuXHJcbiAgICBpbnB1dENvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+ID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgICBmaWx0ZXJlZE9wdGlvbnMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdIHwgbnVsbD47XHJcbiAgICBzZWxlY3RlZE9wdGlvbnMkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihbXSk7XHJcbiAgICBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdID0gW0VOVEVSLCBDT01NQV07XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWF4RmlsdGVyZWRJdGVtcyA9IDUwO1xyXG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyQgPSB0aGlzLmlucHV0Q29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmVBbGwpLFxyXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcclxuICAgICAgICAgICAgbWFwKCh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzQXV0b2NvbXBsZXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0YWJsZSA9ICh2YWx1ZSA/IHRoaXMuX2ZpbHRlcih2YWx1ZSkgOiB0aGlzLnNlbGVjdGFibGVPcHRpb25zLnNsaWNlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vdFNlbGVjdGVkID0gIWlzTmlsKHRoaXMuc2VsZWN0ZWRPcHRpb25zJC52YWx1ZSkgPyBzZWxlY3RhYmxlLmZpbHRlcihvcHRpb24gPT4gIXRoaXMuc2VsZWN0ZWRPcHRpb25zJC52YWx1ZS5pbmNsdWRlcyhvcHRpb24pKSA6IHNlbGVjdGFibGU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub3RTZWxlY3RlZC5zbGljZSgwLCB0aGlzLl9tYXhGaWx0ZXJlZEl0ZW1zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KHZvaWQgMCk7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9vbk1vZGVsQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX29uVG91Y2hlZENoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSB8fCBpc05pbCh2YWx1ZSkpXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zJC5uZXh0KHZhbHVlKTtcclxuICAgICAgICBlbHNlIGlmIChpc0VtcHR5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyQubmV4dChbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyQubmV4dCgodmFsdWUgYXMgc3RyaW5nKS5zcGxpdCh0aGlzLnNlcGFyYXRvcktleSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pbnB1dENvbnRyb2wuc2V0VmFsdWUobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZGQoZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudmFsdWUgfHwgJycpLnRyaW0oKTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlICYmICghdGhpcy5oYXNBdXRvY29tcGxldGUgfHwgdGhpcy5zZWxlY3RhYmxlT3B0aW9ucy5pbmNsdWRlcyh2YWx1ZSkpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gaXNOaWwodGhpcy5zZWxlY3RlZE9wdGlvbnMkLnZhbHVlKSA/IFt2YWx1ZV0gOiBbLi4udGhpcy5zZWxlY3RlZE9wdGlvbnMkLnZhbHVlLCB2YWx1ZV07XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zJC5uZXh0KG5ld1ZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm91dHB1dElzU3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vbk1vZGVsQ2hhbmdlKG5ld1ZhbHVlLmpvaW4odGhpcy5zZXBhcmF0b3JLZXkpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX29uTW9kZWxDaGFuZ2UobmV3VmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBldmVudC5jaGlwSW5wdXQhLmNsZWFyKCk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uUmVtb3ZlKG9wdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMuc2VsZWN0ZWRPcHRpb25zJC52YWx1ZS5pbmRleE9mKG9wdGlvbik7XHJcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgbGV0IG5ld09wdGlvbnMgPSBbLi4udGhpcy5zZWxlY3RlZE9wdGlvbnMkLnZhbHVlXTtcclxuICAgICAgICAgICAgbmV3T3B0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICBuZXdPcHRpb25zID0gbmV3T3B0aW9ucy5sZW5ndGggPiAwID8gbmV3T3B0aW9ucyA6IFtdO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMkLm5leHQobmV3T3B0aW9ucyk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5vdXRwdXRJc1N0cmluZyAmJiAhaXNOaWwobmV3T3B0aW9ucykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX29uTW9kZWxDaGFuZ2UobmV3T3B0aW9ucy5qb2luKHRoaXMuc2VwYXJhdG9yS2V5KSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vbk1vZGVsQ2hhbmdlKG5ld09wdGlvbnMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gaXNOaWwodGhpcy5zZWxlY3RlZE9wdGlvbnMkLnZhbHVlKSA/IFtldmVudC5vcHRpb24udmlld1ZhbHVlXSA6IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9ucyQudmFsdWUsIGV2ZW50Lm9wdGlvbi52aWV3VmFsdWVdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zJC5uZXh0KG5ld1ZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3V0cHV0SXNTdHJpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5fb25Nb2RlbENoYW5nZShuZXdWYWx1ZS5qb2luKHRoaXMuc2VwYXJhdG9yS2V5KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fb25Nb2RlbENoYW5nZShuZXdWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgdGhpcy5pbnB1dENvbnRyb2wuc2V0VmFsdWUobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBpbmRleDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9vbk1vZGVsQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHsgfTtcclxuICAgIHByaXZhdGUgX29uVG91Y2hlZENoYW5nZTogKCkgPT4gYW55ID0gKCkgPT4geyB9O1xyXG5cclxuICAgIHByaXZhdGUgX2ZpbHRlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZU9wdGlvbnMuZmlsdGVyKHYgPT4gdi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSk7XHJcbiAgICB9XHJcbn0iLCI8bWF0LWZvcm0tZmllbGQgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiIGNsYXNzPVwidy1mdWxsXCI+XG4gIDxtYXQtbGFiZWw+e3tsYWJlbH19PC9tYXQtbGFiZWw+XG4gIDxtYXQtY2hpcC1ncmlkICNjaGlwTGlzdCBjbGFzcz1cIml0ZW1zLWNlbnRlclwiPlxuICAgIEBmb3IgKG9wdGlvbiBvZiBzZWxlY3RlZE9wdGlvbnMkIHwgYXN5bmM7IHRyYWNrIHRyYWNrQnlGbigkaW5kZXgpKSB7XG4gICAgICA8bWF0LWNoaXAtcm93IHNlbGVjdGFibGUgKHJlbW92ZWQpPVwib25SZW1vdmUob3B0aW9uKVwiPlxuICAgICAgICB7eyBvcHRpb24gfX1cbiAgICAgICAgPGJ1dHRvbiBtYXRDaGlwUmVtb3ZlPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tc2l6ZS01XCIgIFtzdmdJY29uXT1cIidtYXRfc29saWQ6Y2FuY2VsJ1wiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9tYXQtY2hpcC1yb3c+XG4gICAgfVxuXG4gICAgQGlmIChoYXNBdXRvY29tcGxldGUpIHtcbiAgICAgIDxpbnB1dCAjaW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImlucHV0Q29udHJvbFwiIFtwbGFjZWhvbGRlcl09XCIn5byA5aeL6YCJ5oupLi4uJ1wiXG4gICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b0NvbXBsZXRlXCIgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiXG4gICAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIiAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwib25BZGQoJGV2ZW50KVwiIC8+XG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvQ29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwib25TZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgQGZvciAob3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyQgfCBhc3luYzsgdHJhY2sgdHJhY2tCeUZuKCRpbmRleCkpIHtcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGlucHV0ICNpbnB1dCBbZm9ybUNvbnRyb2xdPVwiaW5wdXRDb250cm9sXCIgW3BsYWNlaG9sZGVyXT1cIiflvIDlp4vloavlhpkuLi4nXCIgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiXG4gICAgICAgICAgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiIChtYXRDaGlwSW5wdXRUb2tlbkVuZCk9XCJvbkFkZCgkZXZlbnQpXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9tYXQtY2hpcC1ncmlkPlxuXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvY2hpcC1pbnB1dC9jaGlwLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9jaGlwLWlucHV0L2NoaXAtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQWEsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQXdCLFdBQVcsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4SCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckcsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUscUJBQXFCLEVBQWdDLE1BQU0sZ0NBQWdDLENBQUM7QUFDckcsT0FBTyxFQUFxQixjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7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bUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07d0RBRzNCLGVBQWU7c0JBQWxDLFNBQVM7dUJBQUMsT0FBTztnQkFDVCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50LCBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNFbXB0eSwgaXNOaWwgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuXHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1jaGlwLWlucHV0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jaGlwLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDbWF0Q2hpcElucHV0Q29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdLFxyXG4gICAgZXhwb3J0QXM6ICdjbWF0Q2hpcElucHV0JyxcclxuICAgIGltcG9ydHM6IFtNYXRGb3JtRmllbGRNb2R1bGUsIE1hdENoaXBzTW9kdWxlLEFzeW5jUGlwZSwgTWF0SW5wdXRNb2R1bGUsIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0Q2hpcElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XHJcbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0RWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzZWxlY3RhYmxlT3B0aW9uczogc3RyaW5nW107XHJcbiAgICBASW5wdXQoKSBoYXNBdXRvY29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIG91dHB1dElzU3RyaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzZXBhcmF0b3JLZXk6IHN0cmluZyA9ICcsJztcclxuICAgIEBJbnB1dCgpIGhhc1ByZWZpeEljb246Ym9vbGVhbj1mYWxzZTtcclxuICAgIEBJbnB1dCgpIHByZWZpeEljb246c3RyaW5nPSdoZXJvaWNvbnNfc29saWQ6cGVuY2lsLXNxdWFyZSc7XHJcblxyXG4gICAgaW5wdXRDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gICAgZmlsdGVyZWRPcHRpb25zJDogT2JzZXJ2YWJsZTxzdHJpbmdbXSB8IG51bGw+O1xyXG4gICAgc2VsZWN0ZWRPcHRpb25zJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oW10pO1xyXG4gICAgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX21heEZpbHRlcmVkSXRlbXMgPSA1MDtcclxuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMkID0gdGhpcy5pbnB1dENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSxcclxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXHJcbiAgICAgICAgICAgIG1hcCgodmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc0F1dG9jb21wbGV0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGFibGUgPSAodmFsdWUgPyB0aGlzLl9maWx0ZXIodmFsdWUpIDogdGhpcy5zZWxlY3RhYmxlT3B0aW9ucy5zbGljZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub3RTZWxlY3RlZCA9ICFpc05pbCh0aGlzLnNlbGVjdGVkT3B0aW9ucyQudmFsdWUpID8gc2VsZWN0YWJsZS5maWx0ZXIob3B0aW9uID0+ICF0aGlzLnNlbGVjdGVkT3B0aW9ucyQudmFsdWUuaW5jbHVkZXMob3B0aW9uKSkgOiBzZWxlY3RhYmxlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm90U2VsZWN0ZWQuc2xpY2UoMCwgdGhpcy5fbWF4RmlsdGVyZWRJdGVtcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwubmV4dCh2b2lkIDApO1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25Nb2RlbENoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9vblRvdWNoZWRDaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkgfHwgaXNOaWwodmFsdWUpKVxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyQubmV4dCh2YWx1ZSk7XHJcbiAgICAgICAgZWxzZSBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMkLm5leHQoW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMkLm5leHQoKHZhbHVlIGFzIHN0cmluZykuc3BsaXQodGhpcy5zZXBhcmF0b3JLZXkpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQWRkKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCk7XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZSAmJiAoIXRoaXMuaGFzQXV0b2NvbXBsZXRlIHx8IHRoaXMuc2VsZWN0YWJsZU9wdGlvbnMuaW5jbHVkZXModmFsdWUpKSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGlzTmlsKHRoaXMuc2VsZWN0ZWRPcHRpb25zJC52YWx1ZSkgPyBbdmFsdWVdIDogWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zJC52YWx1ZSwgdmFsdWVdO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyQubmV4dChuZXdWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5vdXRwdXRJc1N0cmluZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb25Nb2RlbENoYW5nZShuZXdWYWx1ZS5qb2luKHRoaXMuc2VwYXJhdG9yS2V5KSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vbk1vZGVsQ2hhbmdlKG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZXZlbnQuY2hpcElucHV0IS5jbGVhcigpO1xyXG5cclxuICAgICAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZShudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICBvblJlbW92ZShvcHRpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucyQudmFsdWUuaW5kZXhPZihvcHRpb24pO1xyXG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgIGxldCBuZXdPcHRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zJC52YWx1ZV07XHJcbiAgICAgICAgICAgIG5ld09wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgbmV3T3B0aW9ucyA9IG5ld09wdGlvbnMubGVuZ3RoID4gMCA/IG5ld09wdGlvbnMgOiBbXTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zJC5uZXh0KG5ld09wdGlvbnMpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMub3V0cHV0SXNTdHJpbmcgJiYgIWlzTmlsKG5ld09wdGlvbnMpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vbk1vZGVsQ2hhbmdlKG5ld09wdGlvbnMuam9pbih0aGlzLnNlcGFyYXRvcktleSkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb25Nb2RlbENoYW5nZShuZXdPcHRpb25zKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5pbnB1dENvbnRyb2wuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0ZWQoZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGlzTmlsKHRoaXMuc2VsZWN0ZWRPcHRpb25zJC52YWx1ZSkgPyBbZXZlbnQub3B0aW9uLnZpZXdWYWx1ZV0gOiBbLi4udGhpcy5zZWxlY3RlZE9wdGlvbnMkLnZhbHVlLCBldmVudC5vcHRpb24udmlld1ZhbHVlXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyQubmV4dChuZXdWYWx1ZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm91dHB1dElzU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX29uTW9kZWxDaGFuZ2UobmV3VmFsdWUuam9pbih0aGlzLnNlcGFyYXRvcktleSkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX29uTW9kZWxDaGFuZ2UobmV3VmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKTogYW55IHtcclxuICAgICAgICByZXR1cm4gaW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfb25Nb2RlbENoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7IH07XHJcbiAgICBwcml2YXRlIF9vblRvdWNoZWRDaGFuZ2U6ICgpID0+IGFueSA9ICgpID0+IHsgfTtcclxuXHJcbiAgICBwcml2YXRlIF9maWx0ZXIodmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGVPcHRpb25zLmZpbHRlcih2ID0+IHYudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpO1xyXG4gICAgfVxyXG59IiwiPG1hdC1mb3JtLWZpZWxkIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIiBjbGFzcz1cInctZnVsbFwiPlxuICA8bWF0LWxhYmVsPnt7bGFiZWx9fTwvbWF0LWxhYmVsPlxuICBAaWYoaGFzUHJlZml4SWNvbil7XG4gIDxtYXQtaWNvbiBtYXRQcmVmaXggY2xhc3M9XCJoaWRkZW4gc206ZmxleCBpY29uLXNpemUtNVwiIFtzdmdJY29uXT1cInByZWZpeEljb25cIj5cbiAgPC9tYXQtaWNvbj5cbiAgfVxuICA8bWF0LWNoaXAtZ3JpZCAjY2hpcExpc3QgY2xhc3M9XCJpdGVtcy1jZW50ZXJcIj5cbiAgICBAZm9yIChvcHRpb24gb2Ygc2VsZWN0ZWRPcHRpb25zJCB8IGFzeW5jOyB0cmFjayB0cmFja0J5Rm4oJGluZGV4KSkge1xuICAgIDxtYXQtY2hpcC1yb3cgc2VsZWN0YWJsZSAocmVtb3ZlZCk9XCJvblJlbW92ZShvcHRpb24pXCI+XG4gICAgICB7eyBvcHRpb24gfX1cbiAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZT5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1zaXplLTVcIiBbc3ZnSWNvbl09XCInbWF0X3NvbGlkOmNhbmNlbCdcIj48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtY2hpcC1yb3c+XG4gICAgfVxuXG4gICAgQGlmIChoYXNBdXRvY29tcGxldGUpIHtcbiAgICA8aW5wdXQgI2lucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJpbnB1dENvbnRyb2xcIiBbcGxhY2Vob2xkZXJdPVwiJ+W8gOWni+mAieaLqS4uLidcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9Db21wbGV0ZVwiXG4gICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBMaXN0XCIgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiXG4gICAgICAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwib25BZGQoJGV2ZW50KVwiIC8+XG4gICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG9Db21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiIChvcHRpb25TZWxlY3RlZCk9XCJvblNlbGVjdGVkKCRldmVudClcIj5cbiAgICAgIEBmb3IgKG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMkIHwgYXN5bmM7IHRyYWNrIHRyYWNrQnlGbigkaW5kZXgpKSB7XG4gICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgIHt7IG9wdGlvbiB9fVxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgfVxuICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICB9IEBlbHNlIHtcbiAgICA8aW5wdXQgI2lucHV0IFtmb3JtQ29udHJvbF09XCJpbnB1dENvbnRyb2xcIiBbcGxhY2Vob2xkZXJdPVwiJ+W8gOWni+Whq+WGmS4uLidcIiBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBMaXN0XCJcbiAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIiAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwib25BZGQoJGV2ZW50KVwiIC8+XG4gICAgfVxuICA8L21hdC1jaGlwLWdyaWQ+XG5cbjwvbWF0LWZvcm0tZmllbGQ+Il19
@@ -23,6 +23,8 @@ class CmatChipInputComponent {
23
23
  this.hasAutocomplete = false;
24
24
  this.outputIsString = false;
25
25
  this.separatorKey = ',';
26
+ this.hasPrefixIcon = false;
27
+ this.prefixIcon = 'heroicons_solid:pencil-square';
26
28
  this.inputControl = new FormControl();
27
29
  this.selectedOptions$ = new BehaviorSubject([]);
28
30
  this.separatorKeysCodes = [ENTER, COMMA];
@@ -111,13 +113,13 @@ class CmatChipInputComponent {
111
113
  return this.selectableOptions.filter(v => v.toLowerCase().includes(filterValue));
112
114
  }
113
115
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatChipInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
114
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: CmatChipInputComponent, isStandalone: true, selector: "cmat-chip-input", inputs: { label: "label", selectableOptions: "selectableOptions", hasAutocomplete: "hasAutocomplete", outputIsString: "outputIsString", separatorKey: "separatorKey" }, providers: [
116
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: CmatChipInputComponent, isStandalone: true, selector: "cmat-chip-input", inputs: { label: "label", selectableOptions: "selectableOptions", hasAutocomplete: "hasAutocomplete", outputIsString: "outputIsString", separatorKey: "separatorKey", hasPrefixIcon: "hasPrefixIcon", prefixIcon: "prefixIcon" }, providers: [
115
117
  {
116
118
  provide: NG_VALUE_ACCESSOR,
117
119
  useExisting: forwardRef(() => CmatChipInputComponent),
118
120
  multi: true
119
121
  }
120
- ], viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["input"], descendants: true }], exportAs: ["cmatChipInput"], ngImport: i0, template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"w-full\">\n <mat-label>{{label}}</mat-label>\n <mat-chip-grid #chipList class=\"items-center\">\n @for (option of selectedOptions$ | async; track trackByFn($index)) {\n <mat-chip-row selectable (removed)=\"onRemove(option)\">\n {{ option }}\n <button matChipRemove>\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_solid:cancel'\"></mat-icon>\n </button>\n </mat-chip-row>\n }\n\n @if (hasAutocomplete) {\n <input #input matInput [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u9009\u62E9...'\"\n [matAutocomplete]=\"autoComplete\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track trackByFn($index)) {\n <mat-option [value]=\"option\">\n {{ option }}\n </mat-option>\n }\n </mat-autocomplete>\n } @else {\n <input #input [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u586B\u5199...'\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n }\n </mat-chip-grid>\n\n </mat-form-field>\n\n", dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i2.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i2.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i2.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i2.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
122
+ ], viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["input"], descendants: true }], exportAs: ["cmatChipInput"], ngImport: i0, template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"w-full\">\n <mat-label>{{label}}</mat-label>\n @if(hasPrefixIcon){\n <mat-icon matPrefix class=\"hidden sm:flex icon-size-5\" [svgIcon]=\"prefixIcon\">\n </mat-icon>\n }\n <mat-chip-grid #chipList class=\"items-center\">\n @for (option of selectedOptions$ | async; track trackByFn($index)) {\n <mat-chip-row selectable (removed)=\"onRemove(option)\">\n {{ option }}\n <button matChipRemove>\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_solid:cancel'\"></mat-icon>\n </button>\n </mat-chip-row>\n }\n\n @if (hasAutocomplete) {\n <input #input matInput [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u9009\u62E9...'\" [matAutocomplete]=\"autoComplete\"\n [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"onAdd($event)\" />\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track trackByFn($index)) {\n <mat-option [value]=\"option\">\n {{ option }}\n </mat-option>\n }\n </mat-autocomplete>\n } @else {\n <input #input [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u586B\u5199...'\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n }\n </mat-chip-grid>\n\n</mat-form-field>", dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i2.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i2.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i2.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i2.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
121
123
  }
122
124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatChipInputComponent, decorators: [{
123
125
  type: Component,
@@ -127,7 +129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
127
129
  useExisting: forwardRef(() => CmatChipInputComponent),
128
130
  multi: true
129
131
  }
130
- ], exportAs: 'cmatChipInput', imports: [MatFormFieldModule, MatChipsModule, AsyncPipe, MatInputModule, MatAutocompleteModule, MatIconModule, FormsModule, ReactiveFormsModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"w-full\">\n <mat-label>{{label}}</mat-label>\n <mat-chip-grid #chipList class=\"items-center\">\n @for (option of selectedOptions$ | async; track trackByFn($index)) {\n <mat-chip-row selectable (removed)=\"onRemove(option)\">\n {{ option }}\n <button matChipRemove>\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_solid:cancel'\"></mat-icon>\n </button>\n </mat-chip-row>\n }\n\n @if (hasAutocomplete) {\n <input #input matInput [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u9009\u62E9...'\"\n [matAutocomplete]=\"autoComplete\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track trackByFn($index)) {\n <mat-option [value]=\"option\">\n {{ option }}\n </mat-option>\n }\n </mat-autocomplete>\n } @else {\n <input #input [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u586B\u5199...'\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n }\n </mat-chip-grid>\n\n </mat-form-field>\n\n" }]
132
+ ], exportAs: 'cmatChipInput', imports: [MatFormFieldModule, MatChipsModule, AsyncPipe, MatInputModule, MatAutocompleteModule, MatIconModule, FormsModule, ReactiveFormsModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"w-full\">\n <mat-label>{{label}}</mat-label>\n @if(hasPrefixIcon){\n <mat-icon matPrefix class=\"hidden sm:flex icon-size-5\" [svgIcon]=\"prefixIcon\">\n </mat-icon>\n }\n <mat-chip-grid #chipList class=\"items-center\">\n @for (option of selectedOptions$ | async; track trackByFn($index)) {\n <mat-chip-row selectable (removed)=\"onRemove(option)\">\n {{ option }}\n <button matChipRemove>\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_solid:cancel'\"></mat-icon>\n </button>\n </mat-chip-row>\n }\n\n @if (hasAutocomplete) {\n <input #input matInput [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u9009\u62E9...'\" [matAutocomplete]=\"autoComplete\"\n [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"onAdd($event)\" />\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track trackByFn($index)) {\n <mat-option [value]=\"option\">\n {{ option }}\n </mat-option>\n }\n </mat-autocomplete>\n } @else {\n <input #input [formControl]=\"inputControl\" [placeholder]=\"'\u5F00\u59CB\u586B\u5199...'\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n }\n </mat-chip-grid>\n\n</mat-form-field>" }]
131
133
  }], ctorParameters: () => [], propDecorators: { inputElementRef: [{
132
134
  type: ViewChild,
133
135
  args: ['input']
@@ -141,6 +143,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
141
143
  type: Input
142
144
  }], separatorKey: [{
143
145
  type: Input
146
+ }], hasPrefixIcon: [{
147
+ type: Input
148
+ }], prefixIcon: [{
149
+ type: Input
144
150
  }] } });
145
151
 
146
152
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-chip-input.mjs","sources":["../../../projects/cmat/components/chip-input/chip-input.component.ts","../../../projects/cmat/components/chip-input/chip-input.component.html","../../../projects/cmat/components/chip-input/cmat-components-chip-input.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, Input, OnDestroy, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { BehaviorSubject, Observable, Subject, debounceTime, map, startWith, takeUntil } from 'rxjs';\r\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\r\nimport { isArray, isEmpty, isNil } from 'lodash';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { AsyncPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cmat-chip-input',\r\n templateUrl: './chip-input.component.html',\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CmatChipInputComponent),\r\n multi: true\r\n }\r\n ],\r\n exportAs: 'cmatChipInput',\r\n imports: [MatFormFieldModule, MatChipsModule,AsyncPipe, MatInputModule, MatAutocompleteModule, MatIconModule, FormsModule, ReactiveFormsModule],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CmatChipInputComponent implements ControlValueAccessor, OnDestroy {\r\n @ViewChild('input') inputElementRef: ElementRef<HTMLInputElement>;\r\n @Input() label: string;\r\n @Input() selectableOptions: string[];\r\n @Input() hasAutocomplete: boolean = false;\r\n @Input() outputIsString: boolean = false;\r\n @Input() separatorKey: string = ',';\r\n\r\n inputControl: FormControl<string | null> = new FormControl();\r\n filteredOptions$: Observable<string[] | null>;\r\n selectedOptions$: BehaviorSubject<any> = new BehaviorSubject<any>([]);\r\n separatorKeysCodes: number[] = [ENTER, COMMA];\r\n\r\n private readonly _maxFilteredItems = 50;\r\n private _unsubscribeAll: Subject<any> = new Subject<any>();\r\n\r\n constructor() {\r\n this.filteredOptions$ = this.inputControl.valueChanges.pipe(\r\n startWith(null),\r\n takeUntil(this._unsubscribeAll),\r\n debounceTime(100),\r\n map((value: string | null) => {\r\n if (this.hasAutocomplete) {\r\n const selectable = (value ? this._filter(value) : this.selectableOptions.slice());\r\n const notSelected = !isNil(this.selectedOptions$.value) ? selectable.filter(option => !this.selectedOptions$.value.includes(option)) : selectable;\r\n\r\n return notSelected.slice(0, this._maxFilteredItems);\r\n }\r\n\r\n return null;\r\n }),\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouchedChange = fn;\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (isArray(value) || isNil(value))\r\n this.selectedOptions$.next(value);\r\n else if (isEmpty(value)) {\r\n this.selectedOptions$.next([]);\r\n }\r\n else {\r\n this.selectedOptions$.next((value as string).split(this.separatorKey));\r\n }\r\n\r\n this.inputControl.setValue(null);\r\n }\r\n\r\n onAdd(event: MatChipInputEvent): void {\r\n const value = (event.value || '').trim();\r\n\r\n if (value && (!this.hasAutocomplete || this.selectableOptions.includes(value))) {\r\n const newValue = isNil(this.selectedOptions$.value) ? [value] : [...this.selectedOptions$.value, value];\r\n this.selectedOptions$.next(newValue);\r\n\r\n if (this.outputIsString) {\r\n this._onModelChange(newValue.join(this.separatorKey));\r\n } else {\r\n this._onModelChange(newValue);\r\n }\r\n }\r\n\r\n event.chipInput!.clear();\r\n\r\n this.inputControl.setValue(null);\r\n }\r\n\r\n onRemove(option: string): void {\r\n const index: number = this.selectedOptions$.value.indexOf(option);\r\n if (index >= 0) {\r\n let newOptions = [...this.selectedOptions$.value];\r\n newOptions.splice(index, 1);\r\n newOptions = newOptions.length > 0 ? newOptions : [];\r\n\r\n this.selectedOptions$.next(newOptions);\r\n\r\n if (this.outputIsString && !isNil(newOptions)) {\r\n this._onModelChange(newOptions.join(this.separatorKey));\r\n } else {\r\n this._onModelChange(newOptions);\r\n }\r\n\r\n this.inputControl.setValue(null);\r\n }\r\n }\r\n\r\n onSelected(event: MatAutocompleteSelectedEvent): void {\r\n const newValue = isNil(this.selectedOptions$.value) ? [event.option.viewValue] : [...this.selectedOptions$.value, event.option.viewValue];\r\n this.selectedOptions$.next(newValue);\r\n\r\n if (this.outputIsString) {\r\n this._onModelChange(newValue.join(this.separatorKey));\r\n } else {\r\n this._onModelChange(newValue);\r\n }\r\n\r\n this.inputElementRef.nativeElement.value = '';\r\n this.inputControl.setValue(null);\r\n }\r\n\r\n trackByFn(index: number): any {\r\n return index;\r\n }\r\n\r\n private _onModelChange: (value: any) => void = () => { };\r\n private _onTouchedChange: () => any = () => { };\r\n\r\n private _filter(value: string): string[] {\r\n const filterValue = value.toLowerCase();\r\n\r\n return this.selectableOptions.filter(v => v.toLowerCase().includes(filterValue));\r\n }\r\n}","<mat-form-field subscriptSizing=\"dynamic\" class=\"w-full\">\n <mat-label>{{label}}</mat-label>\n <mat-chip-grid #chipList class=\"items-center\">\n @for (option of selectedOptions$ | async; track trackByFn($index)) {\n <mat-chip-row selectable (removed)=\"onRemove(option)\">\n {{ option }}\n <button matChipRemove>\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_solid:cancel'\"></mat-icon>\n </button>\n </mat-chip-row>\n }\n\n @if (hasAutocomplete) {\n <input #input matInput [formControl]=\"inputControl\" [placeholder]=\"'开始选择...'\"\n [matAutocomplete]=\"autoComplete\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track trackByFn($index)) {\n <mat-option [value]=\"option\">\n {{ option }}\n </mat-option>\n }\n </mat-autocomplete>\n } @else {\n <input #input [formControl]=\"inputControl\" [placeholder]=\"'开始填写...'\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n }\n </mat-chip-grid>\n\n </mat-form-field>\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmat-components-chip-input.mjs","sources":["../../../projects/cmat/components/chip-input/chip-input.component.ts","../../../projects/cmat/components/chip-input/chip-input.component.html","../../../projects/cmat/components/chip-input/cmat-components-chip-input.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, Input, OnDestroy, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { BehaviorSubject, Observable, Subject, debounceTime, map, startWith, takeUntil } from 'rxjs';\r\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\r\nimport { isArray, isEmpty, isNil } from 'lodash';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { AsyncPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cmat-chip-input',\r\n templateUrl: './chip-input.component.html',\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CmatChipInputComponent),\r\n multi: true\r\n }\r\n ],\r\n exportAs: 'cmatChipInput',\r\n imports: [MatFormFieldModule, MatChipsModule,AsyncPipe, MatInputModule, MatAutocompleteModule, MatIconModule, FormsModule, ReactiveFormsModule],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CmatChipInputComponent implements ControlValueAccessor, OnDestroy {\r\n @ViewChild('input') inputElementRef: ElementRef<HTMLInputElement>;\r\n @Input() label: string;\r\n @Input() selectableOptions: string[];\r\n @Input() hasAutocomplete: boolean = false;\r\n @Input() outputIsString: boolean = false;\r\n @Input() separatorKey: string = ',';\r\n @Input() hasPrefixIcon:boolean=false;\r\n @Input() prefixIcon:string='heroicons_solid:pencil-square';\r\n\r\n inputControl: FormControl<string | null> = new FormControl();\r\n filteredOptions$: Observable<string[] | null>;\r\n selectedOptions$: BehaviorSubject<any> = new BehaviorSubject<any>([]);\r\n separatorKeysCodes: number[] = [ENTER, COMMA];\r\n\r\n private readonly _maxFilteredItems = 50;\r\n private _unsubscribeAll: Subject<any> = new Subject<any>();\r\n\r\n constructor() {\r\n this.filteredOptions$ = this.inputControl.valueChanges.pipe(\r\n startWith(null),\r\n takeUntil(this._unsubscribeAll),\r\n debounceTime(100),\r\n map((value: string | null) => {\r\n if (this.hasAutocomplete) {\r\n const selectable = (value ? this._filter(value) : this.selectableOptions.slice());\r\n const notSelected = !isNil(this.selectedOptions$.value) ? selectable.filter(option => !this.selectedOptions$.value.includes(option)) : selectable;\r\n\r\n return notSelected.slice(0, this._maxFilteredItems);\r\n }\r\n\r\n return null;\r\n }),\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouchedChange = fn;\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (isArray(value) || isNil(value))\r\n this.selectedOptions$.next(value);\r\n else if (isEmpty(value)) {\r\n this.selectedOptions$.next([]);\r\n }\r\n else {\r\n this.selectedOptions$.next((value as string).split(this.separatorKey));\r\n }\r\n\r\n this.inputControl.setValue(null);\r\n }\r\n\r\n onAdd(event: MatChipInputEvent): void {\r\n const value = (event.value || '').trim();\r\n\r\n if (value && (!this.hasAutocomplete || this.selectableOptions.includes(value))) {\r\n const newValue = isNil(this.selectedOptions$.value) ? [value] : [...this.selectedOptions$.value, value];\r\n this.selectedOptions$.next(newValue);\r\n\r\n if (this.outputIsString) {\r\n this._onModelChange(newValue.join(this.separatorKey));\r\n } else {\r\n this._onModelChange(newValue);\r\n }\r\n }\r\n\r\n event.chipInput!.clear();\r\n\r\n this.inputControl.setValue(null);\r\n }\r\n\r\n onRemove(option: string): void {\r\n const index: number = this.selectedOptions$.value.indexOf(option);\r\n if (index >= 0) {\r\n let newOptions = [...this.selectedOptions$.value];\r\n newOptions.splice(index, 1);\r\n newOptions = newOptions.length > 0 ? newOptions : [];\r\n\r\n this.selectedOptions$.next(newOptions);\r\n\r\n if (this.outputIsString && !isNil(newOptions)) {\r\n this._onModelChange(newOptions.join(this.separatorKey));\r\n } else {\r\n this._onModelChange(newOptions);\r\n }\r\n\r\n this.inputControl.setValue(null);\r\n }\r\n }\r\n\r\n onSelected(event: MatAutocompleteSelectedEvent): void {\r\n const newValue = isNil(this.selectedOptions$.value) ? [event.option.viewValue] : [...this.selectedOptions$.value, event.option.viewValue];\r\n this.selectedOptions$.next(newValue);\r\n\r\n if (this.outputIsString) {\r\n this._onModelChange(newValue.join(this.separatorKey));\r\n } else {\r\n this._onModelChange(newValue);\r\n }\r\n\r\n this.inputElementRef.nativeElement.value = '';\r\n this.inputControl.setValue(null);\r\n }\r\n\r\n trackByFn(index: number): any {\r\n return index;\r\n }\r\n\r\n private _onModelChange: (value: any) => void = () => { };\r\n private _onTouchedChange: () => any = () => { };\r\n\r\n private _filter(value: string): string[] {\r\n const filterValue = value.toLowerCase();\r\n\r\n return this.selectableOptions.filter(v => v.toLowerCase().includes(filterValue));\r\n }\r\n}","<mat-form-field subscriptSizing=\"dynamic\" class=\"w-full\">\n <mat-label>{{label}}</mat-label>\n @if(hasPrefixIcon){\n <mat-icon matPrefix class=\"hidden sm:flex icon-size-5\" [svgIcon]=\"prefixIcon\">\n </mat-icon>\n }\n <mat-chip-grid #chipList class=\"items-center\">\n @for (option of selectedOptions$ | async; track trackByFn($index)) {\n <mat-chip-row selectable (removed)=\"onRemove(option)\">\n {{ option }}\n <button matChipRemove>\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_solid:cancel'\"></mat-icon>\n </button>\n </mat-chip-row>\n }\n\n @if (hasAutocomplete) {\n <input #input matInput [formControl]=\"inputControl\" [placeholder]=\"'开始选择...'\" [matAutocomplete]=\"autoComplete\"\n [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"onAdd($event)\" />\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\">\n @for (option of filteredOptions$ | async; track trackByFn($index)) {\n <mat-option [value]=\"option\">\n {{ option }}\n </mat-option>\n }\n </mat-autocomplete>\n } @else {\n <input #input [formControl]=\"inputControl\" [placeholder]=\"'开始填写...'\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" (matChipInputTokenEnd)=\"onAdd($event)\" />\n }\n </mat-chip-grid>\n\n</mat-form-field>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cmat",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "author": {
5
5
  "name": "Yu Tao",
6
6
  "email": "916426364@qq.com"
@@ -74,18 +74,18 @@
74
74
  "esm": "./esm2022/components/card/cmat-components-card.mjs",
75
75
  "default": "./fesm2022/cmat-components-card.mjs"
76
76
  },
77
- "./components/chip-input": {
78
- "types": "./components/chip-input/index.d.ts",
79
- "esm2022": "./esm2022/components/chip-input/cmat-components-chip-input.mjs",
80
- "esm": "./esm2022/components/chip-input/cmat-components-chip-input.mjs",
81
- "default": "./fesm2022/cmat-components-chip-input.mjs"
82
- },
83
77
  "./components/cascade": {
84
78
  "types": "./components/cascade/index.d.ts",
85
79
  "esm2022": "./esm2022/components/cascade/cmat-components-cascade.mjs",
86
80
  "esm": "./esm2022/components/cascade/cmat-components-cascade.mjs",
87
81
  "default": "./fesm2022/cmat-components-cascade.mjs"
88
82
  },
83
+ "./components/chip-input": {
84
+ "types": "./components/chip-input/index.d.ts",
85
+ "esm2022": "./esm2022/components/chip-input/cmat-components-chip-input.mjs",
86
+ "esm": "./esm2022/components/chip-input/cmat-components-chip-input.mjs",
87
+ "default": "./fesm2022/cmat-components-chip-input.mjs"
88
+ },
89
89
  "./components/date-range": {
90
90
  "types": "./components/date-range/index.d.ts",
91
91
  "esm2022": "./esm2022/components/date-range/cmat-components-date-range.mjs",
@@ -110,18 +110,18 @@
110
110
  "esm": "./esm2022/components/highlight/cmat-components-highlight.mjs",
111
111
  "default": "./fesm2022/cmat-components-highlight.mjs"
112
112
  },
113
- "./components/json-editor": {
114
- "types": "./components/json-editor/index.d.ts",
115
- "esm2022": "./esm2022/components/json-editor/cmat-components-json-editor.mjs",
116
- "esm": "./esm2022/components/json-editor/cmat-components-json-editor.mjs",
117
- "default": "./fesm2022/cmat-components-json-editor.mjs"
118
- },
119
113
  "./components/masonry": {
120
114
  "types": "./components/masonry/index.d.ts",
121
115
  "esm2022": "./esm2022/components/masonry/cmat-components-masonry.mjs",
122
116
  "esm": "./esm2022/components/masonry/cmat-components-masonry.mjs",
123
117
  "default": "./fesm2022/cmat-components-masonry.mjs"
124
118
  },
119
+ "./components/json-editor": {
120
+ "types": "./components/json-editor/index.d.ts",
121
+ "esm2022": "./esm2022/components/json-editor/cmat-components-json-editor.mjs",
122
+ "esm": "./esm2022/components/json-editor/cmat-components-json-editor.mjs",
123
+ "default": "./fesm2022/cmat-components-json-editor.mjs"
124
+ },
125
125
  "./components/material-color-picker": {
126
126
  "types": "./components/material-color-picker/index.d.ts",
127
127
  "esm2022": "./esm2022/components/material-color-picker/cmat-components-material-color-picker.mjs",
@@ -182,11 +182,11 @@
182
182
  "esm": "./esm2022/components/select-tree/cmat-components-select-tree.mjs",
183
183
  "default": "./fesm2022/cmat-components-select-tree.mjs"
184
184
  },
185
- "./components/timeline": {
186
- "types": "./components/timeline/index.d.ts",
187
- "esm2022": "./esm2022/components/timeline/cmat-components-timeline.mjs",
188
- "esm": "./esm2022/components/timeline/cmat-components-timeline.mjs",
189
- "default": "./fesm2022/cmat-components-timeline.mjs"
185
+ "./components/transfer-picker": {
186
+ "types": "./components/transfer-picker/index.d.ts",
187
+ "esm2022": "./esm2022/components/transfer-picker/cmat-components-transfer-picker.mjs",
188
+ "esm": "./esm2022/components/transfer-picker/cmat-components-transfer-picker.mjs",
189
+ "default": "./fesm2022/cmat-components-transfer-picker.mjs"
190
190
  },
191
191
  "./components/toast": {
192
192
  "types": "./components/toast/index.d.ts",
@@ -194,48 +194,42 @@
194
194
  "esm": "./esm2022/components/toast/cmat-components-toast.mjs",
195
195
  "default": "./fesm2022/cmat-components-toast.mjs"
196
196
  },
197
- "./components/transfer-picker": {
198
- "types": "./components/transfer-picker/index.d.ts",
199
- "esm2022": "./esm2022/components/transfer-picker/cmat-components-transfer-picker.mjs",
200
- "esm": "./esm2022/components/transfer-picker/cmat-components-transfer-picker.mjs",
201
- "default": "./fesm2022/cmat-components-transfer-picker.mjs"
202
- },
203
197
  "./directives/animate-on-scroll": {
204
198
  "types": "./directives/animate-on-scroll/index.d.ts",
205
199
  "esm2022": "./esm2022/directives/animate-on-scroll/cmat-directives-animate-on-scroll.mjs",
206
200
  "esm": "./esm2022/directives/animate-on-scroll/cmat-directives-animate-on-scroll.mjs",
207
201
  "default": "./fesm2022/cmat-directives-animate-on-scroll.mjs"
208
202
  },
203
+ "./components/timeline": {
204
+ "types": "./components/timeline/index.d.ts",
205
+ "esm2022": "./esm2022/components/timeline/cmat-components-timeline.mjs",
206
+ "esm": "./esm2022/components/timeline/cmat-components-timeline.mjs",
207
+ "default": "./fesm2022/cmat-components-timeline.mjs"
208
+ },
209
209
  "./directives/autofocus": {
210
210
  "types": "./directives/autofocus/index.d.ts",
211
211
  "esm2022": "./esm2022/directives/autofocus/cmat-directives-autofocus.mjs",
212
212
  "esm": "./esm2022/directives/autofocus/cmat-directives-autofocus.mjs",
213
213
  "default": "./fesm2022/cmat-directives-autofocus.mjs"
214
214
  },
215
- "./directives/debounce": {
216
- "types": "./directives/debounce/index.d.ts",
217
- "esm2022": "./esm2022/directives/debounce/cmat-directives-debounce.mjs",
218
- "esm": "./esm2022/directives/debounce/cmat-directives-debounce.mjs",
219
- "default": "./fesm2022/cmat-directives-debounce.mjs"
220
- },
221
215
  "./directives/digit-only": {
222
216
  "types": "./directives/digit-only/index.d.ts",
223
217
  "esm2022": "./esm2022/directives/digit-only/cmat-directives-digit-only.mjs",
224
218
  "esm": "./esm2022/directives/digit-only/cmat-directives-digit-only.mjs",
225
219
  "default": "./fesm2022/cmat-directives-digit-only.mjs"
226
220
  },
221
+ "./directives/debounce": {
222
+ "types": "./directives/debounce/index.d.ts",
223
+ "esm2022": "./esm2022/directives/debounce/cmat-directives-debounce.mjs",
224
+ "esm": "./esm2022/directives/debounce/cmat-directives-debounce.mjs",
225
+ "default": "./fesm2022/cmat-directives-debounce.mjs"
226
+ },
227
227
  "./directives/equal-validator": {
228
228
  "types": "./directives/equal-validator/index.d.ts",
229
229
  "esm2022": "./esm2022/directives/equal-validator/cmat-directives-equal-validator.mjs",
230
230
  "esm": "./esm2022/directives/equal-validator/cmat-directives-equal-validator.mjs",
231
231
  "default": "./fesm2022/cmat-directives-equal-validator.mjs"
232
232
  },
233
- "./lib/mock-api": {
234
- "types": "./lib/mock-api/index.d.ts",
235
- "esm2022": "./esm2022/lib/mock-api/cmat-lib-mock-api.mjs",
236
- "esm": "./esm2022/lib/mock-api/cmat-lib-mock-api.mjs",
237
- "default": "./fesm2022/cmat-lib-mock-api.mjs"
238
- },
239
233
  "./pipes/bytes": {
240
234
  "types": "./pipes/bytes/index.d.ts",
241
235
  "esm2022": "./esm2022/pipes/bytes/cmat-pipes-bytes.mjs",
@@ -278,6 +272,12 @@
278
272
  "esm": "./esm2022/pipes/uppercase/cmat-pipes-uppercase.mjs",
279
273
  "default": "./fesm2022/cmat-pipes-uppercase.mjs"
280
274
  },
275
+ "./lib/mock-api": {
276
+ "types": "./lib/mock-api/index.d.ts",
277
+ "esm2022": "./esm2022/lib/mock-api/cmat-lib-mock-api.mjs",
278
+ "esm": "./esm2022/lib/mock-api/cmat-lib-mock-api.mjs",
279
+ "default": "./fesm2022/cmat-lib-mock-api.mjs"
280
+ },
281
281
  "./services/alert": {
282
282
  "types": "./services/alert/index.d.ts",
283
283
  "esm2022": "./esm2022/services/alert/cmat-services-alert.mjs",
@@ -290,18 +290,18 @@
290
290
  "esm": "./esm2022/services/config/cmat-services-config.mjs",
291
291
  "default": "./fesm2022/cmat-services-config.mjs"
292
292
  },
293
- "./services/data": {
294
- "types": "./services/data/index.d.ts",
295
- "esm2022": "./esm2022/services/data/cmat-services-data.mjs",
296
- "esm": "./esm2022/services/data/cmat-services-data.mjs",
297
- "default": "./fesm2022/cmat-services-data.mjs"
298
- },
299
293
  "./services/confirmation": {
300
294
  "types": "./services/confirmation/index.d.ts",
301
295
  "esm2022": "./esm2022/services/confirmation/cmat-services-confirmation.mjs",
302
296
  "esm": "./esm2022/services/confirmation/cmat-services-confirmation.mjs",
303
297
  "default": "./fesm2022/cmat-services-confirmation.mjs"
304
298
  },
299
+ "./services/data": {
300
+ "types": "./services/data/index.d.ts",
301
+ "esm2022": "./esm2022/services/data/cmat-services-data.mjs",
302
+ "esm": "./esm2022/services/data/cmat-services-data.mjs",
303
+ "default": "./fesm2022/cmat-services-data.mjs"
304
+ },
305
305
  "./services/loading": {
306
306
  "types": "./services/loading/index.d.ts",
307
307
  "esm2022": "./esm2022/services/loading/cmat-services-loading.mjs",
@@ -320,18 +320,18 @@
320
320
  "esm": "./esm2022/services/media-watcher/cmat-services-media-watcher.mjs",
321
321
  "default": "./fesm2022/cmat-services-media-watcher.mjs"
322
322
  },
323
- "./services/splash-screen": {
324
- "types": "./services/splash-screen/index.d.ts",
325
- "esm2022": "./esm2022/services/splash-screen/cmat-services-splash-screen.mjs",
326
- "esm": "./esm2022/services/splash-screen/cmat-services-splash-screen.mjs",
327
- "default": "./fesm2022/cmat-services-splash-screen.mjs"
328
- },
329
323
  "./services/platform": {
330
324
  "types": "./services/platform/index.d.ts",
331
325
  "esm2022": "./esm2022/services/platform/cmat-services-platform.mjs",
332
326
  "esm": "./esm2022/services/platform/cmat-services-platform.mjs",
333
327
  "default": "./fesm2022/cmat-services-platform.mjs"
334
328
  },
329
+ "./services/splash-screen": {
330
+ "types": "./services/splash-screen/index.d.ts",
331
+ "esm2022": "./esm2022/services/splash-screen/cmat-services-splash-screen.mjs",
332
+ "esm": "./esm2022/services/splash-screen/cmat-services-splash-screen.mjs",
333
+ "default": "./fesm2022/cmat-services-splash-screen.mjs"
334
+ },
335
335
  "./services/title": {
336
336
  "types": "./services/title/index.d.ts",
337
337
  "esm2022": "./esm2022/services/title/cmat-services-title.mjs",