@firestitch/autocomplete-chips
Advanced tools
Comparing version 8.0.0 to 8.0.1
@@ -35,2 +35,3 @@ import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, Provider } from '@angular/core'; | ||
noResults: boolean; | ||
inputVisible: boolean; | ||
_model: any[]; | ||
@@ -40,2 +41,3 @@ private destroy$; | ||
dragStart(e: any): void; | ||
showSearchInput(): void; | ||
objectTemplate: FsAutocompleteObjectDirective; | ||
@@ -67,2 +69,3 @@ searchInput: ElementRef; | ||
ngOnDestroy(): void; | ||
checkSearchInputVisibility(): void; | ||
} |
@@ -307,2 +307,3 @@ (function (global, factory) { | ||
this.noResults = false; | ||
this.inputVisible = true; | ||
this._model = []; | ||
@@ -347,2 +348,20 @@ this.destroy$ = new rxjs.Subject(); | ||
/** | ||
* @return {?} | ||
*/ | ||
FsAutocompleteChipsComponent.prototype.showSearchInput = /** | ||
* @return {?} | ||
*/ | ||
function () { | ||
var _this = this; | ||
if (this.model.length > 0) { | ||
this.inputVisible = true; | ||
setTimeout((/** | ||
* @return {?} | ||
*/ | ||
function () { | ||
_this.searchInput.nativeElement.focus(); | ||
})); | ||
} | ||
}; | ||
/** | ||
* @param {?} fn | ||
@@ -453,2 +472,5 @@ * @return {?} | ||
function () { | ||
if (this.model.length > 0) { | ||
this.inputVisible = false; | ||
} | ||
if (this.autocompleteSearch.isOpen) { | ||
@@ -669,2 +691,3 @@ return; | ||
this._model = value; | ||
this.checkSearchInputVisibility(); | ||
this._cdRef.markForCheck(); | ||
@@ -694,2 +717,3 @@ }; | ||
})); | ||
this.checkSearchInputVisibility(); | ||
this._onChange(model); | ||
@@ -708,9 +732,18 @@ this._onTouched(); | ||
}; | ||
/** | ||
* @return {?} | ||
*/ | ||
FsAutocompleteChipsComponent.prototype.checkSearchInputVisibility = /** | ||
* @return {?} | ||
*/ | ||
function () { | ||
this.inputVisible = this.model.length === 0; | ||
}; | ||
FsAutocompleteChipsComponent.decorators = [ | ||
{ type: core.Component, args: [{ | ||
selector: 'fs-autocomplete-chips', | ||
template: "<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-chip\n *ngFor=\"let item of _model\"\n [selectable]=\"true\"\n [removable]=\"true\"\n (removed)=\"onRemove(item)\"\n class=\"fs-autocomplete-chip\"\n [ngClass]=\"{ imaged: item.image }\"\n [cdkDragDisabled]=\"!orderable\"\n [cdkDragData]=\"item\"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n <mat-icon *ngIf=\"removable\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keyup)=\"keyword$.next($event)\"\n (focus)=\"focus($event)\"\n (blur)=\"blur()\"\n name=\"keyword\"\n [matAutocomplete]=\"autocompleteSearch\"\n [matChipInputFor]=\"searchList\">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch=\"matAutocomplete\"\n class=\"fs-account-picker-autocomplete\"\n (optionSelected)=\"onSelect($event)\"\n (closed)=\"closed()\"\n autoActiveFirstOption=\"true\">\n\n <mat-option *ngFor=\"let item of searchData\" [value]=\"item\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf=\"noResults\" disabled class=\"no-results\">\n No results found\n </mat-option>\n\n <ng-container *ngIf=\"keyword && allowText\">\n\n <mat-option *ngIf=\"!textData.type\" disabled class=\"invalid-message\" (click)=\"searchInput.focus()\">\n <div>{{ keyword }}</div>\n <div class=\"message\">{{ invalidTextMessage || 'Invalid' }}</div>\n </mat-option>\n\n <mat-option *ngIf=\"textData.type===dataType.Text\" [value]=\"textData\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: textData }\">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item=\"item\" #itemTemplate>\n <ng-container *ngIf=\"item.type===dataType.Object\" class=\"item-template\">\n <img *ngIf=\"item.image\" [src]=\"item.image\">\n <span>\n <ng-template\n [ngTemplateOutlet]=\"objectTemplate\"\n [ngTemplateOutletContext]=\"{ object: item.data }\">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"item.type===dataType.Text\">\n {{item.data}}\n </ng-container>\n</ng-template>\n", | ||
template: "<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-chip\n *ngFor=\"let item of _model\"\n [selectable]=\"true\"\n [removable]=\"true\"\n (removed)=\"onRemove(item)\"\n class=\"fs-autocomplete-chip\"\n [ngClass]=\"{ imaged: item.image }\"\n [cdkDragDisabled]=\"!orderable\"\n [cdkDragData]=\"item\"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n <mat-icon *ngIf=\"removable\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keyup)=\"keyword$.next($event)\"\n (focus)=\"focus($event)\"\n (blur)=\"blur()\"\n [ngClass]=\"{'hidden': !inputVisible}\"\n name=\"keyword\"\n [matAutocomplete]=\"autocompleteSearch\"\n [matChipInputFor]=\"searchList\">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch=\"matAutocomplete\"\n class=\"fs-account-picker-autocomplete\"\n (optionSelected)=\"onSelect($event)\"\n (closed)=\"closed()\"\n autoActiveFirstOption=\"true\">\n\n <mat-option *ngFor=\"let item of searchData\" [value]=\"item\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf=\"noResults\" disabled class=\"no-results\">\n No results found\n </mat-option>\n\n <ng-container *ngIf=\"keyword && allowText\">\n\n <mat-option *ngIf=\"!textData.type\" disabled class=\"invalid-message\" (click)=\"searchInput.focus()\">\n <div>{{ keyword }}</div>\n <div class=\"message\">{{ invalidTextMessage || 'Invalid' }}</div>\n </mat-option>\n\n <mat-option *ngIf=\"textData.type===dataType.Text\" [value]=\"textData\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: textData }\">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item=\"item\" #itemTemplate>\n <ng-container *ngIf=\"item.type===dataType.Object\" class=\"item-template\">\n <img *ngIf=\"item.image\" [src]=\"item.image\">\n <span>\n <ng-template\n [ngTemplateOutlet]=\"objectTemplate\"\n [ngTemplateOutletContext]=\"{ object: item.data }\">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"item.type===dataType.Text\">\n {{item.data}}\n </ng-container>\n</ng-template>\n", | ||
providers: [FS_ACCOUNT_PICKER_ACCESSOR], | ||
changeDetection: core.ChangeDetectionStrategy.OnPush, | ||
styles: [":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"] | ||
styles: [":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}.hidden{display:none!important}.mat-chip-list{cursor:pointer}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"] | ||
}] } | ||
@@ -742,2 +775,3 @@ ]; | ||
dragStart: [{ type: core.HostListener, args: ['dragstart', ['$event'],] }], | ||
showSearchInput: [{ type: core.HostListener, args: ['click', [],] }], | ||
objectTemplate: [{ type: core.ContentChild, args: [FsAutocompleteObjectDirective, { read: core.TemplateRef, static: true },] }], | ||
@@ -800,2 +834,4 @@ searchInput: [{ type: core.ViewChild, args: ['searchInput', { static: true },] }], | ||
/** @type {?} */ | ||
FsAutocompleteChipsComponent.prototype.inputVisible; | ||
/** @type {?} */ | ||
FsAutocompleteChipsComponent.prototype._model; | ||
@@ -802,0 +838,0 @@ /** |
@@ -1,2 +0,2 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common"),require("@angular/forms"),require("@angular/material"),require("lodash-es"),require("@angular/cdk/drag-drop"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@firestitch/autocomplete-chips",["exports","@angular/core","@angular/common","@angular/forms","@angular/material","lodash-es","@angular/cdk/drag-drop","rxjs","rxjs/operators"],e):e(((t=t||self).firestitch=t.firestitch||{},t.firestitch["autocomplete-chips"]={}),t.ng.core,t.ng.common,t.ng.forms,t.ng.material,t.lodashEs,t.ng.cdk["drag-drop"],t.rxjs,t.rxjs.operators)}(this,function(t,e,n,o,a,i,r,s,c){"use strict";function l(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var o,a,i=n.call(t),r=[];try{for(;(void 0===e||e-- >0)&&!(o=i.next()).done;)r.push(o.value)}catch(t){a={error:t}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(a)throw a.error}}return r}function p(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(l(arguments[e]));return t}function u(t,e){return e?function t(e,n){var o=n.shift(n);if(!o)return e;if(!e)return e;e=e[o];return t(e,n)}(t,e.split(".")):null}var d={Object:"object",Text:"text"},m=function(){function t(){}return t.decorators=[{type:e.Directive,args:[{selector:"[fsAutocompleteObject]"}]}],t}(),h={provide:o.NG_VALUE_ACCESSOR,useExisting:e.forwardRef(function(){return f}),multi:!0},f=function(){function t(t){this._cdRef=t,this.fetch=null,this.placeholder="",this.imageProperty="",this.allowObject=!0,this.delay=300,this.invalidTextMessage="",this.disabled=!1,this.removable=!0,this.orderable=!1,this.limit=0,this.fetchOnFocus=!0,this.compareWith=function(t,e){return i.isEqual(t,e)},this.selected=new e.EventEmitter,this.removed=new e.EventEmitter,this.reordered=new e.EventEmitter,this.formWrapper=!0,this.searchData=[],this.textData={},this.dataType=d,this.keyword=null,this.keyword$=new s.Subject,this.noResults=!1,this._model=[],this.destroy$=new s.Subject,this.objectTemplate=null,this.searchInput=null,this.autocompleteSearch=null,this.autocompleteTrigger=null,this._onTouched=function(){},this._onChange=function(t){}}return Object.defineProperty(t.prototype,"model",{get:function(){return this._model},enumerable:!0,configurable:!0}),t.prototype.dragStart=function(t){t.preventDefault()},t.prototype.registerOnChange=function(t){this._onChange=t},t.prototype.registerOnTouched=function(t){this._onTouched=t},t.prototype.ngOnInit=function(){var t=this;this.keyword$.pipe(c.takeUntil(this.destroy$),c.debounceTime(this.delay)).subscribe(function(e){t.keyword=i.trim(t.searchInput.nativeElement.value),t.allowObject&&t.objectKeyword(e),t.allowText&&t.textKeyword(e)})},t.prototype.drop=function(t){r.moveItemInArray(this._model,t.previousIndex,t.currentIndex),this.reordered.emit({item:t.item.data.data,from:t.previousIndex,to:t.currentIndex,items:this._model}),this.updateModel(this._model)},t.prototype._validateText=function(t){return String(t).trim().length&&(!this.validateText||this.validateText(t))},t.prototype.addText=function(t){if(this._validateText(t)){var e=this.createItem(t,d.Text);this.updateModel(p(this._model,[e]))}},t.prototype.addObject=function(t){this.updateModel(p(this._model,[t]))},t.prototype.blur=function(){this.autocompleteSearch.isOpen||this.closed()},t.prototype.closed=function(){this.allowText&&this.addText(this.keyword),this.clearInput()},t.prototype.textKeyword=function(t){var e=this;if(this.allowText&&"Comma"===t.code)return this.keyword.split(",").forEach(function(t){e.addText(t.trim())}),this.clearInput();this.textData={},this._validateText(this.keyword)&&(this.textData=this.createItem(this.keyword,d.Text)),this._cdRef.detectChanges()},t.prototype.focus=function(t){this.fetchOnFocus||(this.searchData=[]),this.fetchOnFocus&&(this.objectKeyword(t),this.autocompleteTrigger.openPanel())},t.prototype.objectKeyword=function(t){var e=this;t&&(["Enter","ArrowDown","ArrowUp"].indexOf(t.code)>-1||this.allowText&&"Comma"===t.code)||(this.fetchOnFocus||this.keyword?this.fetch&&(this.noResults=!1,this.fetch(this.keyword,this.model).pipe(c.takeUntil(this.destroy$)).subscribe(function(t){e.searchData=t.map(function(t){return e.createItem(t,d.Object)}),e.searchData=i.filter(e.searchData,function(t){return-1===i.findIndex(e._model,function(n){return e.compareWith(n.data,t.data)})}),e.searchData.length||(e.noResults=!0),e._cdRef.detectChanges()})):this.searchData=[])},t.prototype.createItem=function(t,e){var n={type:e,data:t};return e===d.Object&&(n.image=u(t,this.imageProperty)),n},t.prototype.onSelect=function(t){var e=this;this.searchData=[],this.clearInput();var n=this.allowObject&&this.allowText?t.option.value:t.option.value.data;t.option.value.type===d.Object&&(i.filter(this._model,n).length||(this.addObject(t.option.value),this.selected.emit(t.option.value))),t.option.value.type===d.Text&&(i.filter(this._model,n).length||(this.addText(t.option.value.data),this.selected.emit(t.option.value.data))),setTimeout(function(){e.focus(null)})},t.prototype.clearInput=function(){this.searchInput.nativeElement.value="",this.textData={},this.keyword=""},t.prototype.onRemove=function(t){this.autocompleteTrigger.closePanel(),i.remove(this._model,t),this.updateModel(this._model),this.removed.emit(t)},t.prototype.writeValue=function(t){var e=this;t=Array.isArray(t)?t:[],t=i.map(t,function(t){var n=i.isObject(t)?d.Object:d.Text;return e.createItem(t,n)}),this._model=t,this._cdRef.markForCheck()},t.prototype.updateModel=function(t){var e=this;this._model=t;var n=i.map(this._model,function(t){return e.allowText&&e.allowObject?t:t.data});this._onChange(n),this._onTouched()},t.prototype.ngOnDestroy=function(){this.destroy$.next(),this.destroy$.complete()},t.decorators=[{type:e.Component,args:[{selector:"fs-autocomplete-chips",template:'<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation="horizontal"\n (cdkDropListDropped)="drop($event)">\n <mat-chip\n *ngFor="let item of _model"\n [selectable]="true"\n [removable]="true"\n (removed)="onRemove(item)"\n class="fs-autocomplete-chip"\n [ngClass]="{ imaged: item.image }"\n [cdkDragDisabled]="!orderable"\n [cdkDragData]="item"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]="itemTemplate"\n [ngTemplateOutletContext]="{ item: item }">\n </ng-container>\n <mat-icon *ngIf="removable" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]="placeholder"\n [disabled]="disabled"\n (keyup)="keyword$.next($event)"\n (focus)="focus($event)"\n (blur)="blur()"\n name="keyword"\n [matAutocomplete]="autocompleteSearch"\n [matChipInputFor]="searchList">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch="matAutocomplete"\n class="fs-account-picker-autocomplete"\n (optionSelected)="onSelect($event)"\n (closed)="closed()"\n autoActiveFirstOption="true">\n\n <mat-option *ngFor="let item of searchData" [value]="item">\n <ng-container\n [ngTemplateOutlet]="itemTemplate"\n [ngTemplateOutletContext]="{ item: item }">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf="noResults" disabled class="no-results">\n No results found\n </mat-option>\n\n <ng-container *ngIf="keyword && allowText">\n\n <mat-option *ngIf="!textData.type" disabled class="invalid-message" (click)="searchInput.focus()">\n <div>{{ keyword }}</div>\n <div class="message">{{ invalidTextMessage || \'Invalid\' }}</div>\n </mat-option>\n\n <mat-option *ngIf="textData.type===dataType.Text" [value]="textData">\n <ng-container\n [ngTemplateOutlet]="itemTemplate"\n [ngTemplateOutletContext]="{ item: textData }">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item="item" #itemTemplate>\n <ng-container *ngIf="item.type===dataType.Object" class="item-template">\n <img *ngIf="item.image" [src]="item.image">\n <span>\n <ng-template\n [ngTemplateOutlet]="objectTemplate"\n [ngTemplateOutletContext]="{ object: item.data }">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf="item.type===dataType.Text">\n {{item.data}}\n </ng-container>\n</ng-template>\n',providers:[h],changeDetection:e.ChangeDetectionStrategy.OnPush,styles:[":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"]}]}],t.ctorParameters=function(){return[{type:e.ChangeDetectorRef}]},t.propDecorators={fetch:[{type:e.Input}],placeholder:[{type:e.Input}],imageProperty:[{type:e.Input}],allowText:[{type:e.Input}],allowObject:[{type:e.Input}],delay:[{type:e.Input}],validateText:[{type:e.Input}],invalidTextMessage:[{type:e.Input}],disabled:[{type:e.Input}],removable:[{type:e.Input}],orderable:[{type:e.Input}],limit:[{type:e.Input}],fetchOnFocus:[{type:e.Input}],compareWith:[{type:e.Input}],selected:[{type:e.Output}],removed:[{type:e.Output}],reordered:[{type:e.Output}],formWrapper:[{type:e.HostBinding,args:["class.fs-form-wrapper"]}],dragStart:[{type:e.HostListener,args:["dragstart",["$event"]]}],objectTemplate:[{type:e.ContentChild,args:[m,{read:e.TemplateRef,static:!0}]}],searchInput:[{type:e.ViewChild,args:["searchInput",{static:!0}]}],autocompleteSearch:[{type:e.ViewChild,args:["autocompleteSearch",{static:!0}]}],autocompleteTrigger:[{type:e.ViewChild,args:[a.MatAutocompleteTrigger,{static:!0}]}]},t}();var g=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[]}},t.decorators=[{type:e.NgModule,args:[{imports:[n.CommonModule,o.FormsModule,a.MatAutocompleteModule,a.MatChipsModule,a.MatInputModule,a.MatIconModule,r.DragDropModule],exports:[f,m],declarations:[m,f]}]}],t}();t.FsAutocompleteChipsModule=g,t.ɵa=h,t.ɵb=f,t.ɵc=m,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common"),require("@angular/forms"),require("@angular/material"),require("lodash-es"),require("@angular/cdk/drag-drop"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@firestitch/autocomplete-chips",["exports","@angular/core","@angular/common","@angular/forms","@angular/material","lodash-es","@angular/cdk/drag-drop","rxjs","rxjs/operators"],e):e(((t=t||self).firestitch=t.firestitch||{},t.firestitch["autocomplete-chips"]={}),t.ng.core,t.ng.common,t.ng.forms,t.ng.material,t.lodashEs,t.ng.cdk["drag-drop"],t.rxjs,t.rxjs.operators)}(this,function(t,e,n,o,i,a,r,s,c){"use strict";function l(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var o,i,a=n.call(t),r=[];try{for(;(void 0===e||e-- >0)&&!(o=a.next()).done;)r.push(o.value)}catch(t){i={error:t}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(i)throw i.error}}return r}function p(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(l(arguments[e]));return t}function u(t,e){return e?function t(e,n){var o=n.shift(n);if(!o)return e;if(!e)return e;e=e[o];return t(e,n)}(t,e.split(".")):null}var d={Object:"object",Text:"text"},h=function(){function t(){}return t.decorators=[{type:e.Directive,args:[{selector:"[fsAutocompleteObject]"}]}],t}(),m={provide:o.NG_VALUE_ACCESSOR,useExisting:e.forwardRef(function(){return f}),multi:!0},f=function(){function t(t){this._cdRef=t,this.fetch=null,this.placeholder="",this.imageProperty="",this.allowObject=!0,this.delay=300,this.invalidTextMessage="",this.disabled=!1,this.removable=!0,this.orderable=!1,this.limit=0,this.fetchOnFocus=!0,this.compareWith=function(t,e){return a.isEqual(t,e)},this.selected=new e.EventEmitter,this.removed=new e.EventEmitter,this.reordered=new e.EventEmitter,this.formWrapper=!0,this.searchData=[],this.textData={},this.dataType=d,this.keyword=null,this.keyword$=new s.Subject,this.noResults=!1,this.inputVisible=!0,this._model=[],this.destroy$=new s.Subject,this.objectTemplate=null,this.searchInput=null,this.autocompleteSearch=null,this.autocompleteTrigger=null,this._onTouched=function(){},this._onChange=function(t){}}return Object.defineProperty(t.prototype,"model",{get:function(){return this._model},enumerable:!0,configurable:!0}),t.prototype.dragStart=function(t){t.preventDefault()},t.prototype.showSearchInput=function(){var t=this;this.model.length>0&&(this.inputVisible=!0,setTimeout(function(){t.searchInput.nativeElement.focus()}))},t.prototype.registerOnChange=function(t){this._onChange=t},t.prototype.registerOnTouched=function(t){this._onTouched=t},t.prototype.ngOnInit=function(){var t=this;this.keyword$.pipe(c.takeUntil(this.destroy$),c.debounceTime(this.delay)).subscribe(function(e){t.keyword=a.trim(t.searchInput.nativeElement.value),t.allowObject&&t.objectKeyword(e),t.allowText&&t.textKeyword(e)})},t.prototype.drop=function(t){r.moveItemInArray(this._model,t.previousIndex,t.currentIndex),this.reordered.emit({item:t.item.data.data,from:t.previousIndex,to:t.currentIndex,items:this._model}),this.updateModel(this._model)},t.prototype._validateText=function(t){return String(t).trim().length&&(!this.validateText||this.validateText(t))},t.prototype.addText=function(t){if(this._validateText(t)){var e=this.createItem(t,d.Text);this.updateModel(p(this._model,[e]))}},t.prototype.addObject=function(t){this.updateModel(p(this._model,[t]))},t.prototype.blur=function(){this.model.length>0&&(this.inputVisible=!1),this.autocompleteSearch.isOpen||this.closed()},t.prototype.closed=function(){this.allowText&&this.addText(this.keyword),this.clearInput()},t.prototype.textKeyword=function(t){var e=this;if(this.allowText&&"Comma"===t.code)return this.keyword.split(",").forEach(function(t){e.addText(t.trim())}),this.clearInput();this.textData={},this._validateText(this.keyword)&&(this.textData=this.createItem(this.keyword,d.Text)),this._cdRef.detectChanges()},t.prototype.focus=function(t){this.fetchOnFocus||(this.searchData=[]),this.fetchOnFocus&&(this.objectKeyword(t),this.autocompleteTrigger.openPanel())},t.prototype.objectKeyword=function(t){var e=this;t&&(["Enter","ArrowDown","ArrowUp"].indexOf(t.code)>-1||this.allowText&&"Comma"===t.code)||(this.fetchOnFocus||this.keyword?this.fetch&&(this.noResults=!1,this.fetch(this.keyword,this.model).pipe(c.takeUntil(this.destroy$)).subscribe(function(t){e.searchData=t.map(function(t){return e.createItem(t,d.Object)}),e.searchData=a.filter(e.searchData,function(t){return-1===a.findIndex(e._model,function(n){return e.compareWith(n.data,t.data)})}),e.searchData.length||(e.noResults=!0),e._cdRef.detectChanges()})):this.searchData=[])},t.prototype.createItem=function(t,e){var n={type:e,data:t};return e===d.Object&&(n.image=u(t,this.imageProperty)),n},t.prototype.onSelect=function(t){var e=this;this.searchData=[],this.clearInput();var n=this.allowObject&&this.allowText?t.option.value:t.option.value.data;t.option.value.type===d.Object&&(a.filter(this._model,n).length||(this.addObject(t.option.value),this.selected.emit(t.option.value))),t.option.value.type===d.Text&&(a.filter(this._model,n).length||(this.addText(t.option.value.data),this.selected.emit(t.option.value.data))),setTimeout(function(){e.focus(null)})},t.prototype.clearInput=function(){this.searchInput.nativeElement.value="",this.textData={},this.keyword=""},t.prototype.onRemove=function(t){this.autocompleteTrigger.closePanel(),a.remove(this._model,t),this.updateModel(this._model),this.removed.emit(t)},t.prototype.writeValue=function(t){var e=this;t=Array.isArray(t)?t:[],t=a.map(t,function(t){var n=a.isObject(t)?d.Object:d.Text;return e.createItem(t,n)}),this._model=t,this.checkSearchInputVisibility(),this._cdRef.markForCheck()},t.prototype.updateModel=function(t){var e=this;this._model=t;var n=a.map(this._model,function(t){return e.allowText&&e.allowObject?t:t.data});this.checkSearchInputVisibility(),this._onChange(n),this._onTouched()},t.prototype.ngOnDestroy=function(){this.destroy$.next(),this.destroy$.complete()},t.prototype.checkSearchInputVisibility=function(){this.inputVisible=0===this.model.length},t.decorators=[{type:e.Component,args:[{selector:"fs-autocomplete-chips",template:'<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation="horizontal"\n (cdkDropListDropped)="drop($event)">\n <mat-chip\n *ngFor="let item of _model"\n [selectable]="true"\n [removable]="true"\n (removed)="onRemove(item)"\n class="fs-autocomplete-chip"\n [ngClass]="{ imaged: item.image }"\n [cdkDragDisabled]="!orderable"\n [cdkDragData]="item"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]="itemTemplate"\n [ngTemplateOutletContext]="{ item: item }">\n </ng-container>\n <mat-icon *ngIf="removable" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]="placeholder"\n [disabled]="disabled"\n (keyup)="keyword$.next($event)"\n (focus)="focus($event)"\n (blur)="blur()"\n [ngClass]="{\'hidden\': !inputVisible}"\n name="keyword"\n [matAutocomplete]="autocompleteSearch"\n [matChipInputFor]="searchList">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch="matAutocomplete"\n class="fs-account-picker-autocomplete"\n (optionSelected)="onSelect($event)"\n (closed)="closed()"\n autoActiveFirstOption="true">\n\n <mat-option *ngFor="let item of searchData" [value]="item">\n <ng-container\n [ngTemplateOutlet]="itemTemplate"\n [ngTemplateOutletContext]="{ item: item }">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf="noResults" disabled class="no-results">\n No results found\n </mat-option>\n\n <ng-container *ngIf="keyword && allowText">\n\n <mat-option *ngIf="!textData.type" disabled class="invalid-message" (click)="searchInput.focus()">\n <div>{{ keyword }}</div>\n <div class="message">{{ invalidTextMessage || \'Invalid\' }}</div>\n </mat-option>\n\n <mat-option *ngIf="textData.type===dataType.Text" [value]="textData">\n <ng-container\n [ngTemplateOutlet]="itemTemplate"\n [ngTemplateOutletContext]="{ item: textData }">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item="item" #itemTemplate>\n <ng-container *ngIf="item.type===dataType.Object" class="item-template">\n <img *ngIf="item.image" [src]="item.image">\n <span>\n <ng-template\n [ngTemplateOutlet]="objectTemplate"\n [ngTemplateOutletContext]="{ object: item.data }">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf="item.type===dataType.Text">\n {{item.data}}\n </ng-container>\n</ng-template>\n',providers:[m],changeDetection:e.ChangeDetectionStrategy.OnPush,styles:[":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}.hidden{display:none!important}.mat-chip-list{cursor:pointer}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"]}]}],t.ctorParameters=function(){return[{type:e.ChangeDetectorRef}]},t.propDecorators={fetch:[{type:e.Input}],placeholder:[{type:e.Input}],imageProperty:[{type:e.Input}],allowText:[{type:e.Input}],allowObject:[{type:e.Input}],delay:[{type:e.Input}],validateText:[{type:e.Input}],invalidTextMessage:[{type:e.Input}],disabled:[{type:e.Input}],removable:[{type:e.Input}],orderable:[{type:e.Input}],limit:[{type:e.Input}],fetchOnFocus:[{type:e.Input}],compareWith:[{type:e.Input}],selected:[{type:e.Output}],removed:[{type:e.Output}],reordered:[{type:e.Output}],formWrapper:[{type:e.HostBinding,args:["class.fs-form-wrapper"]}],dragStart:[{type:e.HostListener,args:["dragstart",["$event"]]}],showSearchInput:[{type:e.HostListener,args:["click",[]]}],objectTemplate:[{type:e.ContentChild,args:[h,{read:e.TemplateRef,static:!0}]}],searchInput:[{type:e.ViewChild,args:["searchInput",{static:!0}]}],autocompleteSearch:[{type:e.ViewChild,args:["autocompleteSearch",{static:!0}]}],autocompleteTrigger:[{type:e.ViewChild,args:[i.MatAutocompleteTrigger,{static:!0}]}]},t}();var g=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[]}},t.decorators=[{type:e.NgModule,args:[{imports:[n.CommonModule,o.FormsModule,i.MatAutocompleteModule,i.MatChipsModule,i.MatInputModule,i.MatIconModule,r.DragDropModule],exports:[f,h],declarations:[h,f]}]}],t}();t.FsAutocompleteChipsModule=g,t.ɵa=m,t.ɵb=f,t.ɵc=h,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
//# sourceMappingURL=firestitch-autocomplete-chips.umd.min.js.map |
@@ -59,2 +59,3 @@ /** | ||
this.noResults = false; | ||
this.inputVisible = true; | ||
this._model = []; | ||
@@ -91,2 +92,16 @@ this.destroy$ = new Subject(); | ||
/** | ||
* @return {?} | ||
*/ | ||
showSearchInput() { | ||
if (this.model.length > 0) { | ||
this.inputVisible = true; | ||
setTimeout((/** | ||
* @return {?} | ||
*/ | ||
() => { | ||
this.searchInput.nativeElement.focus(); | ||
})); | ||
} | ||
} | ||
/** | ||
* @param {?} fn | ||
@@ -165,2 +180,5 @@ * @return {?} | ||
blur() { | ||
if (this.model.length > 0) { | ||
this.inputVisible = false; | ||
} | ||
if (this.autocompleteSearch.isOpen) { | ||
@@ -341,2 +359,3 @@ return; | ||
this._model = value; | ||
this.checkSearchInputVisibility(); | ||
this._cdRef.markForCheck(); | ||
@@ -361,2 +380,3 @@ } | ||
})); | ||
this.checkSearchInputVisibility(); | ||
this._onChange(model); | ||
@@ -372,2 +392,8 @@ this._onTouched(); | ||
} | ||
/** | ||
* @return {?} | ||
*/ | ||
checkSearchInputVisibility() { | ||
this.inputVisible = this.model.length === 0; | ||
} | ||
} | ||
@@ -377,6 +403,6 @@ FsAutocompleteChipsComponent.decorators = [ | ||
selector: 'fs-autocomplete-chips', | ||
template: "<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-chip\n *ngFor=\"let item of _model\"\n [selectable]=\"true\"\n [removable]=\"true\"\n (removed)=\"onRemove(item)\"\n class=\"fs-autocomplete-chip\"\n [ngClass]=\"{ imaged: item.image }\"\n [cdkDragDisabled]=\"!orderable\"\n [cdkDragData]=\"item\"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n <mat-icon *ngIf=\"removable\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keyup)=\"keyword$.next($event)\"\n (focus)=\"focus($event)\"\n (blur)=\"blur()\"\n name=\"keyword\"\n [matAutocomplete]=\"autocompleteSearch\"\n [matChipInputFor]=\"searchList\">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch=\"matAutocomplete\"\n class=\"fs-account-picker-autocomplete\"\n (optionSelected)=\"onSelect($event)\"\n (closed)=\"closed()\"\n autoActiveFirstOption=\"true\">\n\n <mat-option *ngFor=\"let item of searchData\" [value]=\"item\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf=\"noResults\" disabled class=\"no-results\">\n No results found\n </mat-option>\n\n <ng-container *ngIf=\"keyword && allowText\">\n\n <mat-option *ngIf=\"!textData.type\" disabled class=\"invalid-message\" (click)=\"searchInput.focus()\">\n <div>{{ keyword }}</div>\n <div class=\"message\">{{ invalidTextMessage || 'Invalid' }}</div>\n </mat-option>\n\n <mat-option *ngIf=\"textData.type===dataType.Text\" [value]=\"textData\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: textData }\">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item=\"item\" #itemTemplate>\n <ng-container *ngIf=\"item.type===dataType.Object\" class=\"item-template\">\n <img *ngIf=\"item.image\" [src]=\"item.image\">\n <span>\n <ng-template\n [ngTemplateOutlet]=\"objectTemplate\"\n [ngTemplateOutletContext]=\"{ object: item.data }\">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"item.type===dataType.Text\">\n {{item.data}}\n </ng-container>\n</ng-template>\n", | ||
template: "<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-chip\n *ngFor=\"let item of _model\"\n [selectable]=\"true\"\n [removable]=\"true\"\n (removed)=\"onRemove(item)\"\n class=\"fs-autocomplete-chip\"\n [ngClass]=\"{ imaged: item.image }\"\n [cdkDragDisabled]=\"!orderable\"\n [cdkDragData]=\"item\"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n <mat-icon *ngIf=\"removable\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keyup)=\"keyword$.next($event)\"\n (focus)=\"focus($event)\"\n (blur)=\"blur()\"\n [ngClass]=\"{'hidden': !inputVisible}\"\n name=\"keyword\"\n [matAutocomplete]=\"autocompleteSearch\"\n [matChipInputFor]=\"searchList\">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch=\"matAutocomplete\"\n class=\"fs-account-picker-autocomplete\"\n (optionSelected)=\"onSelect($event)\"\n (closed)=\"closed()\"\n autoActiveFirstOption=\"true\">\n\n <mat-option *ngFor=\"let item of searchData\" [value]=\"item\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf=\"noResults\" disabled class=\"no-results\">\n No results found\n </mat-option>\n\n <ng-container *ngIf=\"keyword && allowText\">\n\n <mat-option *ngIf=\"!textData.type\" disabled class=\"invalid-message\" (click)=\"searchInput.focus()\">\n <div>{{ keyword }}</div>\n <div class=\"message\">{{ invalidTextMessage || 'Invalid' }}</div>\n </mat-option>\n\n <mat-option *ngIf=\"textData.type===dataType.Text\" [value]=\"textData\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: textData }\">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item=\"item\" #itemTemplate>\n <ng-container *ngIf=\"item.type===dataType.Object\" class=\"item-template\">\n <img *ngIf=\"item.image\" [src]=\"item.image\">\n <span>\n <ng-template\n [ngTemplateOutlet]=\"objectTemplate\"\n [ngTemplateOutletContext]=\"{ object: item.data }\">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"item.type===dataType.Text\">\n {{item.data}}\n </ng-container>\n</ng-template>\n", | ||
providers: [FS_ACCOUNT_PICKER_ACCESSOR], | ||
changeDetection: ChangeDetectionStrategy.OnPush, | ||
styles: [":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"] | ||
styles: [":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}.hidden{display:none!important}.mat-chip-list{cursor:pointer}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"] | ||
}] } | ||
@@ -408,2 +434,3 @@ ]; | ||
dragStart: [{ type: HostListener, args: ['dragstart', ['$event'],] }], | ||
showSearchInput: [{ type: HostListener, args: ['click', [],] }], | ||
objectTemplate: [{ type: ContentChild, args: [FsAutocompleteObjectDirective, { read: TemplateRef, static: true },] }], | ||
@@ -464,2 +491,4 @@ searchInput: [{ type: ViewChild, args: ['searchInput', { static: true },] }], | ||
/** @type {?} */ | ||
FsAutocompleteChipsComponent.prototype.inputVisible; | ||
/** @type {?} */ | ||
FsAutocompleteChipsComponent.prototype._model; | ||
@@ -496,2 +525,2 @@ /** | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2F1dG9jb21wbGV0ZS1jaGlwcy8iLCJzb3VyY2VzIjpbImFwcC9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS1jaGlwcy9hdXRvY29tcGxldGUtY2hpcHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQzFDLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxlQUFlLEVBRWYsc0JBQXNCLEVBQ3ZCLE1BQU0sbUJBQW1CLENBQUE7QUFFMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRixPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7O0FBRW5ILE1BQU0sT0FBTywwQkFBMEIsR0FBYTtJQUNsRCxPQUFPLEVBQUUsaUJBQWlC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SUFDbEMsNkNBQTBCOztJQUMxQixvREFBb0M7O0lBQ3BDLG1EQUdFOztJQUVGLGdEQUErQzs7SUFDL0MsK0NBQThDOztJQUM5QyxpREFBZ0Q7O0lBRWhELG1EQUF5RDs7SUFFekQsa0RBQThCOztJQUM5QixnREFBMEI7O0lBQzFCLGdEQUEyQjs7SUFDM0IsK0NBQThCOztJQUM5QixnREFBdUM7O0lBQ3ZDLGlEQUF5Qjs7SUFFekIsOENBQTBCOzs7OztJQUMxQixnREFBaUM7O0lBV2pDLHNEQUNxRDs7SUFFckQsbURBQWtGOztJQUNsRiwwREFBcUc7O0lBQ3JHLDJEQUF1Rjs7Ozs7SUFFdkYsa0RBQStCOzs7OztJQUMvQixpREFBdUM7Ozs7O0lBT3JDLDhDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFByb3ZpZGVyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgTWF0QXV0b2NvbXBsZXRlLFxuICBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50LFxuICBNYXRBdXRvY29tcGxldGVUcmlnZ2VyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJ1xuXG5pbXBvcnQgeyBmaWx0ZXIsIGZpbmRJbmRleCwgaXNFcXVhbCwgaXNPYmplY3QsIG1hcCwgcmVtb3ZlLCB0cmltIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGdldE9iamVjdFZhbHVlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9nZXQtb2JqZWN0LXZhbHVlJztcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kYXRhLXR5cGUnO1xuaW1wb3J0IHsgRnNBdXRvY29tcGxldGVPYmplY3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS1vYmplY3QvYXV0b2NvbXBsZXRlLW9iamVjdC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgRlNfQUNDT1VOVF9QSUNLRVJfQUNDRVNTT1I6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNBdXRvY29tcGxldGVDaGlwc0NvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1hdXRvY29tcGxldGUtY2hpcHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLWNoaXBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL2F1dG9jb21wbGV0ZS1jaGlwcy5jb21wb25lbnQuc2NzcycgXSxcbiAgcHJvdmlkZXJzOiBbRlNfQUNDT1VOVF9QSUNLRVJfQUNDRVNTT1JdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNBdXRvY29tcGxldGVDaGlwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgQElucHV0KCkgcHVibGljIGZldGNoID0gbnVsbDtcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZVByb3BlcnR5ID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd1RleHQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd09iamVjdCA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBkZWxheSA9IDMwMDtcbiAgQElucHV0KCkgcHVibGljIHZhbGlkYXRlVGV4dDtcbiAgQElucHV0KCkgcHVibGljIGludmFsaWRUZXh0TWVzc2FnZSA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJlbW92YWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBvcmRlcmFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxpbWl0ID0gMDtcbiAgQElucHV0KCkgcHVibGljIGZldGNoT25Gb2N1cyA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb21wYXJlV2l0aCA9IChvMTogYW55LCBvMjogYW55KSA9PiB7XG4gICAgcmV0dXJuIGlzRXF1YWwobzEsIG8yKTtcbiAgfTtcblxuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVvcmRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnMtZm9ybS13cmFwcGVyJykgZm9ybVdyYXBwZXIgPSB0cnVlO1xuXG4gIHB1YmxpYyBzZWFyY2hEYXRhOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgdGV4dERhdGE6IGFueSA9IHt9O1xuICBwdWJsaWMgZGF0YVR5cGUgPSBEYXRhVHlwZTtcbiAgcHVibGljIGtleXdvcmQ6IHN0cmluZyA9IG51bGw7XG4gIHB1YmxpYyBrZXl3b3JkJCA9IG5ldyBTdWJqZWN0PEV2ZW50PigpO1xuICBwdWJsaWMgbm9SZXN1bHRzID0gZmFsc2U7XG5cbiAgcHVibGljIF9tb2RlbDogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgZ2V0IG1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdzdGFydCcsIFsnJGV2ZW50J10pXG4gIGRyYWdTdGFydChlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIEBDb250ZW50Q2hpbGQoRnNBdXRvY29tcGxldGVPYmplY3REaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBvYmplY3RUZW1wbGF0ZTogRnNBdXRvY29tcGxldGVPYmplY3REaXJlY3RpdmUgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHNlYXJjaElucHV0OiBFbGVtZW50UmVmID0gbnVsbDtcbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlU2VhcmNoJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGF1dG9jb21wbGV0ZVNlYXJjaDogTWF0QXV0b2NvbXBsZXRlID0gbnVsbDtcbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgYXV0b2NvbXBsZXRlVHJpZ2dlciA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfb25Ub3VjaGVkID0gKCkgPT4geyB9O1xuICBwcml2YXRlIF9vbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IGFueSk6IHZvaWQgeyB0aGlzLl9vbkNoYW5nZSA9IGZuIH1cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5fb25Ub3VjaGVkID0gZm4gfVxuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMua2V5d29yZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlbGF5KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICB0aGlzLmtleXdvcmQgPSB0cmltKHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuYWxsb3dPYmplY3QpIHtcbiAgICAgICAgICB0aGlzLm9iamVjdEtleXdvcmQoZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hbGxvd1RleHQpIHtcbiAgICAgICAgICB0aGlzLnRleHRLZXl3b3JkKGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLl9tb2RlbCwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLnJlb3JkZXJlZC5lbWl0KHtcbiAgICAgIGl0ZW06IGV2ZW50Lml0ZW0uZGF0YS5kYXRhLFxuICAgICAgZnJvbTogZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgIHRvOiBldmVudC5jdXJyZW50SW5kZXgsXG4gICAgICBpdGVtczogdGhpcy5fbW9kZWwsXG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLl9tb2RlbCk7XG4gIH1cblxuICBwcml2YXRlIF92YWxpZGF0ZVRleHQodGV4dCkge1xuICAgIHJldHVybiBTdHJpbmcodGV4dCkudHJpbSgpLmxlbmd0aCAmJiAoIXRoaXMudmFsaWRhdGVUZXh0IHx8IHRoaXMudmFsaWRhdGVUZXh0KHRleHQpKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUZXh0KHRleHQpIHtcblxuICAgIGlmICh0aGlzLl92YWxpZGF0ZVRleHQodGV4dCkpIHtcblxuICAgICAgY29uc3QgdGV4dE9iamVjdCA9IHRoaXMuY3JlYXRlSXRlbSh0ZXh0LCBEYXRhVHlwZS5UZXh0KTtcblxuICAgICAgdGhpcy51cGRhdGVNb2RlbChbLi4udGhpcy5fbW9kZWwsIHRleHRPYmplY3RdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkT2JqZWN0KG9iamVjdCkge1xuICAgIHRoaXMudXBkYXRlTW9kZWwoWy4uLnRoaXMuX21vZGVsLCBvYmplY3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyKCkge1xuXG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlU2VhcmNoLmlzT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2xvc2VkKCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VkKCkge1xuXG4gICAgaWYgKHRoaXMuYWxsb3dUZXh0KSB7XG4gICAgICB0aGlzLmFkZFRleHQodGhpcy5rZXl3b3JkKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsZWFySW5wdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyB0ZXh0S2V5d29yZChlKSB7XG5cbiAgICBpZiAodGhpcy5hbGxvd1RleHQgJiYgZS5jb2RlID09PSAnQ29tbWEnKSB7XG4gICAgICB0aGlzLmtleXdvcmQuc3BsaXQoJywnKS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICB0aGlzLmFkZFRleHQoaXRlbS50cmltKCkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5jbGVhcklucHV0KCk7XG4gICAgfVxuXG4gICAgdGhpcy50ZXh0RGF0YSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuX3ZhbGlkYXRlVGV4dCh0aGlzLmtleXdvcmQpKSB7XG4gICAgICB0aGlzLnRleHREYXRhID0gdGhpcy5jcmVhdGVJdGVtKHRoaXMua2V5d29yZCwgRGF0YVR5cGUuVGV4dCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKGUpIHtcblxuICAgIGlmICghdGhpcy5mZXRjaE9uRm9jdXMpIHtcbiAgICAgIHRoaXMuc2VhcmNoRGF0YSA9IFtdO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZldGNoT25Gb2N1cykge1xuICAgICAgdGhpcy5vYmplY3RLZXl3b3JkKGUpO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyLm9wZW5QYW5lbCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvYmplY3RLZXl3b3JkKGUpIHtcblxuICAgIGlmIChlICYmIChbJ0VudGVyJywgJ0Fycm93RG93bicsICdBcnJvd1VwJ10uaW5kZXhPZihlLmNvZGUpID4gLTEgfHwgKHRoaXMuYWxsb3dUZXh0ICYmIGUuY29kZSA9PT0gJ0NvbW1hJykpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZldGNoT25Gb2N1cyAmJiAhdGhpcy5rZXl3b3JkKSB7XG4gICAgICB0aGlzLnNlYXJjaERhdGEgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mZXRjaCkge1xuICAgICAgdGhpcy5ub1Jlc3VsdHMgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmV0Y2godGhpcy5rZXl3b3JkLCB0aGlzLm1vZGVsKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcblxuICAgICAgICAgIHRoaXMuc2VhcmNoRGF0YSA9IHJlc3BvbnNlLm1hcChkYXRhID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUl0ZW0oZGF0YSwgRGF0YVR5cGUuT2JqZWN0KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuc2VhcmNoRGF0YSA9IGZpbHRlcih0aGlzLnNlYXJjaERhdGEsIGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZpbmRJbmRleCh0aGlzLl9tb2RlbCwgKG1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVXaXRoKG1vZGVsLmRhdGEsIGl0ZW0uZGF0YSk7XG4gICAgICAgICAgICB9KSA9PT0gLTE7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubm9SZXN1bHRzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSXRlbShkYXRhLCB0eXBlKSB7XG4gICAgY29uc3QgaXRlbTogYW55ID0ge1xuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9O1xuXG4gICAgaWYgKHR5cGUgPT09IERhdGFUeXBlLk9iamVjdCkge1xuICAgICAgaXRlbS5pbWFnZSA9IGdldE9iamVjdFZhbHVlKGRhdGEsIHRoaXMuaW1hZ2VQcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3QoZTogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xuXG4gICAgdGhpcy5zZWFyY2hEYXRhID0gW107XG4gICAgdGhpcy5jbGVhcklucHV0KCk7XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuYWxsb3dPYmplY3QgJiYgdGhpcy5hbGxvd1RleHQgPyBlLm9wdGlvbi52YWx1ZSA6IGUub3B0aW9uLnZhbHVlLmRhdGE7XG4gICAgaWYgKGUub3B0aW9uLnZhbHVlLnR5cGUgPT09IERhdGFUeXBlLk9iamVjdCkge1xuXG4gICAgICBpZiAoIWZpbHRlcih0aGlzLl9tb2RlbCwgdmFsdWUpLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmFkZE9iamVjdChlLm9wdGlvbi52YWx1ZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChlLm9wdGlvbi52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGUub3B0aW9uLnZhbHVlLnR5cGUgPT09IERhdGFUeXBlLlRleHQpIHtcbiAgICAgIGlmICghZmlsdGVyKHRoaXMuX21vZGVsLCB2YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWRkVGV4dChlLm9wdGlvbi52YWx1ZS5kYXRhKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KGUub3B0aW9uLnZhbHVlLmRhdGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1cyhudWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcklucHV0KCkge1xuICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMudGV4dERhdGEgPSB7fTtcbiAgICB0aGlzLmtleXdvcmQgPSAnJztcbiAgfVxuXG4gIHB1YmxpYyBvblJlbW92ZShkYXRhKTogdm9pZCB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyLmNsb3NlUGFuZWwoKTtcbiAgICByZW1vdmUodGhpcy5fbW9kZWwsIGRhdGEpO1xuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5fbW9kZWwpO1xuICAgIHRoaXMucmVtb3ZlZC5lbWl0KGRhdGEpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHZhbHVlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xuXG4gICAgdmFsdWUgPSBtYXAodmFsdWUsIChpdGVtKSA9PiB7XG4gICAgICBjb25zdCB0eXBlID0gaXNPYmplY3QoaXRlbSkgPyBEYXRhVHlwZS5PYmplY3QgOiBEYXRhVHlwZS5UZXh0O1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSXRlbShpdGVtLCB0eXBlKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX21vZGVsID0gdmFsdWU7XG5cbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVNb2RlbCh2YWx1ZSkge1xuXG4gICAgdGhpcy5fbW9kZWwgPSB2YWx1ZTtcblxuICAgIGNvbnN0IG1vZGVsID0gbWFwKHRoaXMuX21vZGVsLCAoaXRlbSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmFsbG93VGV4dCB8fCAhdGhpcy5hbGxvd09iamVjdCkge1xuICAgICAgICByZXR1cm4gaXRlbS5kYXRhO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcblxuICAgIHRoaXMuX29uQ2hhbmdlKG1vZGVsKTtcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2F1dG9jb21wbGV0ZS1jaGlwcy8iLCJzb3VyY2VzIjpbImFwcC9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS1jaGlwcy9hdXRvY29tcGxldGUtY2hpcHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQzFDLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxlQUFlLEVBRWYsc0JBQXNCLEVBQ3ZCLE1BQU0sbUJBQW1CLENBQUE7QUFFMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRixPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7O0FBRW5ILE1BQU0sT0FBTywwQkFBMEIsR0FBYTtJQUNsRCxPQUFPLEVBQUUsaUJBQWlC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aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUHJvdmlkZXIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBNYXRBdXRvY29tcGxldGUsXG4gIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsXG4gIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXJcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnXG5cbmltcG9ydCB7IGZpbHRlciwgZmluZEluZGV4LCBpc0VxdWFsLCBpc09iamVjdCwgbWFwLCByZW1vdmUsIHRyaW0gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgZ2V0T2JqZWN0VmFsdWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2dldC1vYmplY3QtdmFsdWUnO1xuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBGc0F1dG9jb21wbGV0ZU9iamVjdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYXV0b2NvbXBsZXRlLW9iamVjdC9hdXRvY29tcGxldGUtb2JqZWN0LmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBGU19BQ0NPVU5UX1BJQ0tFUl9BQ0NFU1NPUjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGc0F1dG9jb21wbGV0ZUNoaXBzQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWF1dG9jb21wbGV0ZS1jaGlwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUtY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsgJy4vYXV0b2NvbXBsZXRlLWNoaXBzLmNvbXBvbmVudC5zY3NzJyBdLFxuICBwcm92aWRlcnM6IFtGU19BQ0NPVU5UX1BJQ0tFUl9BQ0NFU1NPUl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0F1dG9jb21wbGV0ZUNoaXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBASW5wdXQoKSBwdWJsaWMgZmV0Y2ggPSBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGltYWdlUHJvcGVydHkgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGFsbG93VGV4dDogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIGFsbG93T2JqZWN0ID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGRlbGF5ID0gMzAwO1xuICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGVUZXh0O1xuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZFRleHRNZXNzYWdlID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcmVtb3ZhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIG9yZGVyYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgbGltaXQgPSAwO1xuICBASW5wdXQoKSBwdWJsaWMgZmV0Y2hPbkZvY3VzID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGNvbXBhcmVXaXRoID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IHtcbiAgICByZXR1cm4gaXNFcXVhbChvMSwgbzIpO1xuICB9O1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZW9yZGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mcy1mb3JtLXdyYXBwZXInKSBmb3JtV3JhcHBlciA9IHRydWU7XG5cbiAgcHVibGljIHNlYXJjaERhdGE6IGFueVtdID0gW107XG4gIHB1YmxpYyB0ZXh0RGF0YTogYW55ID0ge307XG4gIHB1YmxpYyBkYXRhVHlwZSA9IERhdGFUeXBlO1xuICBwdWJsaWMga2V5d29yZDogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGtleXdvcmQkID0gbmV3IFN1YmplY3Q8RXZlbnQ+KCk7XG4gIHB1YmxpYyBub1Jlc3VsdHMgPSBmYWxzZTtcbiAgcHVibGljIGlucHV0VmlzaWJsZSA9IHRydWU7XG5cbiAgcHVibGljIF9tb2RlbDogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgZ2V0IG1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdzdGFydCcsIFsnJGV2ZW50J10pXG4gIGRyYWdTdGFydChlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgW10pXG4gIHNob3dTZWFyY2hJbnB1dCgpIHtcbiAgICBpZiAodGhpcy5tb2RlbC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmlucHV0VmlzaWJsZSA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoRnNBdXRvY29tcGxldGVPYmplY3REaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBvYmplY3RUZW1wbGF0ZTogRnNBdXRvY29tcGxldGVPYmplY3REaXJlY3RpdmUgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHNlYXJjaElucHV0OiBFbGVtZW50UmVmID0gbnVsbDtcbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlU2VhcmNoJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGF1dG9jb21wbGV0ZVNlYXJjaDogTWF0QXV0b2NvbXBsZXRlID0gbnVsbDtcbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgYXV0b2NvbXBsZXRlVHJpZ2dlciA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfb25Ub3VjaGVkID0gKCkgPT4geyB9O1xuICBwcml2YXRlIF9vbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IGFueSk6IHZvaWQgeyB0aGlzLl9vbkNoYW5nZSA9IGZuIH1cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5fb25Ub3VjaGVkID0gZm4gfVxuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMua2V5d29yZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlbGF5KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICB0aGlzLmtleXdvcmQgPSB0cmltKHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuYWxsb3dPYmplY3QpIHtcbiAgICAgICAgICB0aGlzLm9iamVjdEtleXdvcmQoZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hbGxvd1RleHQpIHtcbiAgICAgICAgICB0aGlzLnRleHRLZXl3b3JkKGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLl9tb2RlbCwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLnJlb3JkZXJlZC5lbWl0KHtcbiAgICAgIGl0ZW06IGV2ZW50Lml0ZW0uZGF0YS5kYXRhLFxuICAgICAgZnJvbTogZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgIHRvOiBldmVudC5jdXJyZW50SW5kZXgsXG4gICAgICBpdGVtczogdGhpcy5fbW9kZWwsXG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLl9tb2RlbCk7XG4gIH1cblxuICBwcml2YXRlIF92YWxpZGF0ZVRleHQodGV4dCkge1xuICAgIHJldHVybiBTdHJpbmcodGV4dCkudHJpbSgpLmxlbmd0aCAmJiAoIXRoaXMudmFsaWRhdGVUZXh0IHx8IHRoaXMudmFsaWRhdGVUZXh0KHRleHQpKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUZXh0KHRleHQpIHtcblxuICAgIGlmICh0aGlzLl92YWxpZGF0ZVRleHQodGV4dCkpIHtcblxuICAgICAgY29uc3QgdGV4dE9iamVjdCA9IHRoaXMuY3JlYXRlSXRlbSh0ZXh0LCBEYXRhVHlwZS5UZXh0KTtcblxuICAgICAgdGhpcy51cGRhdGVNb2RlbChbLi4udGhpcy5fbW9kZWwsIHRleHRPYmplY3RdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkT2JqZWN0KG9iamVjdCkge1xuICAgIHRoaXMudXBkYXRlTW9kZWwoWy4uLnRoaXMuX21vZGVsLCBvYmplY3RdKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyKCkge1xuXG4gICAgaWYgKHRoaXMubW9kZWwubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pbnB1dFZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGVTZWFyY2guaXNPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZWQoKSB7XG5cbiAgICBpZiAodGhpcy5hbGxvd1RleHQpIHtcbiAgICAgIHRoaXMuYWRkVGV4dCh0aGlzLmtleXdvcmQpO1xuICAgIH1cblxuICAgIHRoaXMuY2xlYXJJbnB1dCgpO1xuICB9XG5cbiAgcHVibGljIHRleHRLZXl3b3JkKGUpIHtcblxuICAgIGlmICh0aGlzLmFsbG93VGV4dCAmJiBlLmNvZGUgPT09ICdDb21tYScpIHtcbiAgICAgIHRoaXMua2V5d29yZC5zcGxpdCgnLCcpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuYWRkVGV4dChpdGVtLnRyaW0oKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzLmNsZWFySW5wdXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLnRleHREYXRhID0ge307XG5cbiAgICBpZiAodGhpcy5fdmFsaWRhdGVUZXh0KHRoaXMua2V5d29yZCkpIHtcbiAgICAgIHRoaXMudGV4dERhdGEgPSB0aGlzLmNyZWF0ZUl0ZW0odGhpcy5rZXl3b3JkLCBEYXRhVHlwZS5UZXh0KTtcbiAgICB9XG5cbiAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoZSkge1xuXG4gICAgaWYgKCF0aGlzLmZldGNoT25Gb2N1cykge1xuICAgICAgdGhpcy5zZWFyY2hEYXRhID0gW107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmV0Y2hPbkZvY3VzKSB7XG4gICAgICB0aGlzLm9iamVjdEtleXdvcmQoZSk7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIub3BlblBhbmVsKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9iamVjdEtleXdvcmQoZSkge1xuXG4gICAgaWYgKGUgJiYgKFsnRW50ZXInLCAnQXJyb3dEb3duJywgJ0Fycm93VXAnXS5pbmRleE9mKGUuY29kZSkgPiAtMSB8fCAodGhpcy5hbGxvd1RleHQgJiYgZS5jb2RlID09PSAnQ29tbWEnKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZmV0Y2hPbkZvY3VzICYmICF0aGlzLmtleXdvcmQpIHtcbiAgICAgIHRoaXMuc2VhcmNoRGF0YSA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZldGNoKSB7XG4gICAgICB0aGlzLm5vUmVzdWx0cyA9IGZhbHNlO1xuICAgICAgdGhpcy5mZXRjaCh0aGlzLmtleXdvcmQsIHRoaXMubW9kZWwpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuXG4gICAgICAgICAgdGhpcy5zZWFyY2hEYXRhID0gcmVzcG9uc2UubWFwKGRhdGEgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSXRlbShkYXRhLCBEYXRhVHlwZS5PYmplY3QpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5zZWFyY2hEYXRhID0gZmlsdGVyKHRoaXMuc2VhcmNoRGF0YSwgaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmluZEluZGV4KHRoaXMuX21vZGVsLCAobW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZVdpdGgobW9kZWwuZGF0YSwgaXRlbS5kYXRhKTtcbiAgICAgICAgICAgIH0pID09PSAtMTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmICghdGhpcy5zZWFyY2hEYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5ub1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJdGVtKGRhdGEsIHR5cGUpIHtcbiAgICBjb25zdCBpdGVtOiBhbnkgPSB7XG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH07XG5cbiAgICBpZiAodHlwZSA9PT0gRGF0YVR5cGUuT2JqZWN0KSB7XG4gICAgICBpdGVtLmltYWdlID0gZ2V0T2JqZWN0VmFsdWUoZGF0YSwgdGhpcy5pbWFnZVByb3BlcnR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdChlOiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XG5cbiAgICB0aGlzLnNlYXJjaERhdGEgPSBbXTtcbiAgICB0aGlzLmNsZWFySW5wdXQoKTtcblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5hbGxvd09iamVjdCAmJiB0aGlzLmFsbG93VGV4dCA/IGUub3B0aW9uLnZhbHVlIDogZS5vcHRpb24udmFsdWUuZGF0YTtcbiAgICBpZiAoZS5vcHRpb24udmFsdWUudHlwZSA9PT0gRGF0YVR5cGUuT2JqZWN0KSB7XG5cbiAgICAgIGlmICghZmlsdGVyKHRoaXMuX21vZGVsLCB2YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWRkT2JqZWN0KGUub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KGUub3B0aW9uLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZS5vcHRpb24udmFsdWUudHlwZSA9PT0gRGF0YVR5cGUuVGV4dCkge1xuICAgICAgaWYgKCFmaWx0ZXIodGhpcy5fbW9kZWwsIHZhbHVlKS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5hZGRUZXh0KGUub3B0aW9uLnZhbHVlLmRhdGEpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoZS5vcHRpb24udmFsdWUuZGF0YSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZvY3VzKG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNsZWFySW5wdXQoKSB7XG4gICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy50ZXh0RGF0YSA9IHt9O1xuICAgIHRoaXMua2V5d29yZCA9ICcnO1xuICB9XG5cbiAgcHVibGljIG9uUmVtb3ZlKGRhdGEpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIuY2xvc2VQYW5lbCgpO1xuICAgIHJlbW92ZSh0aGlzLl9tb2RlbCwgZGF0YSk7XG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLl9tb2RlbCk7XG4gICAgdGhpcy5yZW1vdmVkLmVtaXQoZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdmFsdWUgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW107XG5cbiAgICB2YWx1ZSA9IG1hcCh2YWx1ZSwgKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBpc09iamVjdChpdGVtKSA/IERhdGFUeXBlLk9iamVjdCA6IERhdGFUeXBlLlRleHQ7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVJdGVtKGl0ZW0sIHR5cGUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fbW9kZWwgPSB2YWx1ZTtcblxuICAgIHRoaXMuY2hlY2tTZWFyY2hJbnB1dFZpc2liaWxpdHkoKTtcblxuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU1vZGVsKHZhbHVlKSB7XG5cbiAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xuXG4gICAgY29uc3QgbW9kZWwgPSBtYXAodGhpcy5fbW9kZWwsIChpdGVtKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuYWxsb3dUZXh0IHx8ICF0aGlzLmFsbG93T2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBpdGVtLmRhdGE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jaGVja1NlYXJjaElucHV0VmlzaWJpbGl0eSgpO1xuXG4gICAgdGhpcy5fb25DaGFuZ2UobW9kZWwpO1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGNoZWNrU2VhcmNoSW5wdXRWaXNpYmlsaXR5KCkge1xuICAgIHRoaXMuaW5wdXRWaXNpYmxlID0gdGhpcy5tb2RlbC5sZW5ndGggPT09IDA7XG4gIH1cbn1cbiJdfQ== |
@@ -57,2 +57,3 @@ /** | ||
this.noResults = false; | ||
this.inputVisible = true; | ||
this._model = []; | ||
@@ -97,2 +98,20 @@ this.destroy$ = new Subject(); | ||
/** | ||
* @return {?} | ||
*/ | ||
FsAutocompleteChipsComponent.prototype.showSearchInput = /** | ||
* @return {?} | ||
*/ | ||
function () { | ||
var _this = this; | ||
if (this.model.length > 0) { | ||
this.inputVisible = true; | ||
setTimeout((/** | ||
* @return {?} | ||
*/ | ||
function () { | ||
_this.searchInput.nativeElement.focus(); | ||
})); | ||
} | ||
}; | ||
/** | ||
* @param {?} fn | ||
@@ -203,2 +222,5 @@ * @return {?} | ||
function () { | ||
if (this.model.length > 0) { | ||
this.inputVisible = false; | ||
} | ||
if (this.autocompleteSearch.isOpen) { | ||
@@ -419,2 +441,3 @@ return; | ||
this._model = value; | ||
this.checkSearchInputVisibility(); | ||
this._cdRef.markForCheck(); | ||
@@ -444,2 +467,3 @@ }; | ||
})); | ||
this.checkSearchInputVisibility(); | ||
this._onChange(model); | ||
@@ -458,9 +482,18 @@ this._onTouched(); | ||
}; | ||
/** | ||
* @return {?} | ||
*/ | ||
FsAutocompleteChipsComponent.prototype.checkSearchInputVisibility = /** | ||
* @return {?} | ||
*/ | ||
function () { | ||
this.inputVisible = this.model.length === 0; | ||
}; | ||
FsAutocompleteChipsComponent.decorators = [ | ||
{ type: Component, args: [{ | ||
selector: 'fs-autocomplete-chips', | ||
template: "<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-chip\n *ngFor=\"let item of _model\"\n [selectable]=\"true\"\n [removable]=\"true\"\n (removed)=\"onRemove(item)\"\n class=\"fs-autocomplete-chip\"\n [ngClass]=\"{ imaged: item.image }\"\n [cdkDragDisabled]=\"!orderable\"\n [cdkDragData]=\"item\"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n <mat-icon *ngIf=\"removable\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keyup)=\"keyword$.next($event)\"\n (focus)=\"focus($event)\"\n (blur)=\"blur()\"\n name=\"keyword\"\n [matAutocomplete]=\"autocompleteSearch\"\n [matChipInputFor]=\"searchList\">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch=\"matAutocomplete\"\n class=\"fs-account-picker-autocomplete\"\n (optionSelected)=\"onSelect($event)\"\n (closed)=\"closed()\"\n autoActiveFirstOption=\"true\">\n\n <mat-option *ngFor=\"let item of searchData\" [value]=\"item\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf=\"noResults\" disabled class=\"no-results\">\n No results found\n </mat-option>\n\n <ng-container *ngIf=\"keyword && allowText\">\n\n <mat-option *ngIf=\"!textData.type\" disabled class=\"invalid-message\" (click)=\"searchInput.focus()\">\n <div>{{ keyword }}</div>\n <div class=\"message\">{{ invalidTextMessage || 'Invalid' }}</div>\n </mat-option>\n\n <mat-option *ngIf=\"textData.type===dataType.Text\" [value]=\"textData\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: textData }\">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item=\"item\" #itemTemplate>\n <ng-container *ngIf=\"item.type===dataType.Object\" class=\"item-template\">\n <img *ngIf=\"item.image\" [src]=\"item.image\">\n <span>\n <ng-template\n [ngTemplateOutlet]=\"objectTemplate\"\n [ngTemplateOutletContext]=\"{ object: item.data }\">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"item.type===dataType.Text\">\n {{item.data}}\n </ng-container>\n</ng-template>\n", | ||
template: "<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-chip\n *ngFor=\"let item of _model\"\n [selectable]=\"true\"\n [removable]=\"true\"\n (removed)=\"onRemove(item)\"\n class=\"fs-autocomplete-chip\"\n [ngClass]=\"{ imaged: item.image }\"\n [cdkDragDisabled]=\"!orderable\"\n [cdkDragData]=\"item\"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n <mat-icon *ngIf=\"removable\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keyup)=\"keyword$.next($event)\"\n (focus)=\"focus($event)\"\n (blur)=\"blur()\"\n [ngClass]=\"{'hidden': !inputVisible}\"\n name=\"keyword\"\n [matAutocomplete]=\"autocompleteSearch\"\n [matChipInputFor]=\"searchList\">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch=\"matAutocomplete\"\n class=\"fs-account-picker-autocomplete\"\n (optionSelected)=\"onSelect($event)\"\n (closed)=\"closed()\"\n autoActiveFirstOption=\"true\">\n\n <mat-option *ngFor=\"let item of searchData\" [value]=\"item\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf=\"noResults\" disabled class=\"no-results\">\n No results found\n </mat-option>\n\n <ng-container *ngIf=\"keyword && allowText\">\n\n <mat-option *ngIf=\"!textData.type\" disabled class=\"invalid-message\" (click)=\"searchInput.focus()\">\n <div>{{ keyword }}</div>\n <div class=\"message\">{{ invalidTextMessage || 'Invalid' }}</div>\n </mat-option>\n\n <mat-option *ngIf=\"textData.type===dataType.Text\" [value]=\"textData\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: textData }\">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item=\"item\" #itemTemplate>\n <ng-container *ngIf=\"item.type===dataType.Object\" class=\"item-template\">\n <img *ngIf=\"item.image\" [src]=\"item.image\">\n <span>\n <ng-template\n [ngTemplateOutlet]=\"objectTemplate\"\n [ngTemplateOutletContext]=\"{ object: item.data }\">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"item.type===dataType.Text\">\n {{item.data}}\n </ng-container>\n</ng-template>\n", | ||
providers: [FS_ACCOUNT_PICKER_ACCESSOR], | ||
changeDetection: ChangeDetectionStrategy.OnPush, | ||
styles: [":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"] | ||
styles: [":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}.hidden{display:none!important}.mat-chip-list{cursor:pointer}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"] | ||
}] } | ||
@@ -492,2 +525,3 @@ ]; | ||
dragStart: [{ type: HostListener, args: ['dragstart', ['$event'],] }], | ||
showSearchInput: [{ type: HostListener, args: ['click', [],] }], | ||
objectTemplate: [{ type: ContentChild, args: [FsAutocompleteObjectDirective, { read: TemplateRef, static: true },] }], | ||
@@ -551,2 +585,4 @@ searchInput: [{ type: ViewChild, args: ['searchInput', { static: true },] }], | ||
/** @type {?} */ | ||
FsAutocompleteChipsComponent.prototype.inputVisible; | ||
/** @type {?} */ | ||
FsAutocompleteChipsComponent.prototype._model; | ||
@@ -583,2 +619,2 @@ /** | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2F1dG9jb21wbGV0ZS1jaGlwcy8iLCJzb3VyY2VzIjpbImFwcC9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS1jaGlwcy9hdXRvY29tcGxldGUtY2hpcHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsZUFBZSxFQUVmLHNCQUFzQixFQUN2QixNQUFNLG1CQUFtQixDQUFBO0FBRTFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEYsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDOztBQUVuSCxNQUFNLEtBQU8sMEJBQTBCLEdBQWE7SUFDbEQsT0FBTyxFQUFFLGlCQUFp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QztDQUFBLEFBbFNELElBa1NDO1NBM1JZLDRCQUE0Qjs7O0lBRXZDLDZDQUE2Qjs7SUFDN0IsbURBQWlDOztJQUNqQyxxREFBbUM7O0lBQ25DLGlEQUFtQzs7SUFDbkMsbURBQW1DOztJQUNuQyw2Q0FBNEI7O0lBQzVCLG9EQUE2Qjs7SUFDN0IsMERBQXdDOztJQUN4QyxnREFBaUM7O0lBQ2pDLGlEQUFpQzs7SUFDakMsaURBQWtDOztJQUNsQyw2Q0FBMEI7O0lBQzFCLG9EQUFvQzs7SUFDcEMsbURBR0U7O0lBRUYsZ0RBQStDOztJQUMvQywrQ0FBOEM7O0lBQzlDLGlEQUFnRDs7SUFFaEQsbURBQXlEOztJQUV6RCxrREFBOEI7O0lBQzlCLGdEQUEwQjs7SUFDMUIsZ0RBQTJCOztJQUMzQiwrQ0FBOEI7O0lBQzlCLGdEQUF1Qzs7SUFDdkMsaURBQXlCOztJQUV6Qiw4Q0FBMEI7Ozs7O0lBQzFCLGdEQUFpQzs7SUFXakMsc0RBQ3FEOztJQUVyRCxtREFBa0Y7O0lBQ2xGLDBEQUFxRzs7SUFDckcsMkRBQXVGOzs7OztJQUV2RixrREFBK0I7Ozs7O0lBQy9CLGlEQUF1Qzs7Ozs7SUFPckMsOENBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUHJvdmlkZXIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBNYXRBdXRvY29tcGxldGUsXG4gIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsXG4gIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXJcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnXG5cbmltcG9ydCB7IGZpbHRlciwgZmluZEluZGV4LCBpc0VxdWFsLCBpc09iamVjdCwgbWFwLCByZW1vdmUsIHRyaW0gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgZ2V0T2JqZWN0VmFsdWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2dldC1vYmplY3QtdmFsdWUnO1xuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBGc0F1dG9jb21wbGV0ZU9iamVjdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYXV0b2NvbXBsZXRlLW9iamVjdC9hdXRvY29tcGxldGUtb2JqZWN0LmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBGU19BQ0NPVU5UX1BJQ0tFUl9BQ0NFU1NPUjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGc0F1dG9jb21wbGV0ZUNoaXBzQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWF1dG9jb21wbGV0ZS1jaGlwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUtY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsgJy4vYXV0b2NvbXBsZXRlLWNoaXBzLmNvbXBvbmVudC5zY3NzJyBdLFxuICBwcm92aWRlcnM6IFtGU19BQ0NPVU5UX1BJQ0tFUl9BQ0NFU1NPUl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0F1dG9jb21wbGV0ZUNoaXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBASW5wdXQoKSBwdWJsaWMgZmV0Y2ggPSBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGltYWdlUHJvcGVydHkgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGFsbG93VGV4dDogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIGFsbG93T2JqZWN0ID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGRlbGF5ID0gMzAwO1xuICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGVUZXh0O1xuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZFRleHRNZXNzYWdlID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcmVtb3ZhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIG9yZGVyYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgbGltaXQgPSAwO1xuICBASW5wdXQoKSBwdWJsaWMgZmV0Y2hPbkZvY3VzID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGNvbXBhcmVXaXRoID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IHtcbiAgICByZXR1cm4gaXNFcXVhbChvMSwgbzIpO1xuICB9O1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZW9yZGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mcy1mb3JtLXdyYXBwZXInKSBmb3JtV3JhcHBlciA9IHRydWU7XG5cbiAgcHVibGljIHNlYXJjaERhdGE6IGFueVtdID0gW107XG4gIHB1YmxpYyB0ZXh0RGF0YTogYW55ID0ge307XG4gIHB1YmxpYyBkYXRhVHlwZSA9IERhdGFUeXBlO1xuICBwdWJsaWMga2V5d29yZDogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGtleXdvcmQkID0gbmV3IFN1YmplY3Q8RXZlbnQ+KCk7XG4gIHB1YmxpYyBub1Jlc3VsdHMgPSBmYWxzZTtcblxuICBwdWJsaWMgX21vZGVsOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBnZXQgbW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ3N0YXJ0JywgWyckZXZlbnQnXSlcbiAgZHJhZ1N0YXJ0KGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgQENvbnRlbnRDaGlsZChGc0F1dG9jb21wbGV0ZU9iamVjdERpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIG9iamVjdFRlbXBsYXRlOiBGc0F1dG9jb21wbGV0ZU9iamVjdERpcmVjdGl2ZSA9IG51bGw7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgc2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWYgPSBudWxsO1xuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGVTZWFyY2gnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgYXV0b2NvbXBsZXRlU2VhcmNoOiBNYXRBdXRvY29tcGxldGUgPSBudWxsO1xuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBhdXRvY29tcGxldGVUcmlnZ2VyID0gbnVsbDtcblxuICBwcml2YXRlIF9vblRvdWNoZWQgPSAoKSA9PiB7IH07XG4gIHByaXZhdGUgX29uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHt9O1xuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gYW55KTogdm9pZCB7IHRoaXMuX29uQ2hhbmdlID0gZm4gfVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQgeyB0aGlzLl9vblRvdWNoZWQgPSBmbiB9XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5rZXl3b3JkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVsYXkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgIHRoaXMua2V5d29yZCA9IHRyaW0odGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5hbGxvd09iamVjdCkge1xuICAgICAgICAgIHRoaXMub2JqZWN0S2V5d29yZChlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFsbG93VGV4dCkge1xuICAgICAgICAgIHRoaXMudGV4dEtleXdvcmQoZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuX21vZGVsLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMucmVvcmRlcmVkLmVtaXQoe1xuICAgICAgaXRlbTogZXZlbnQuaXRlbS5kYXRhLmRhdGEsXG4gICAgICBmcm9tOiBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgdG86IGV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgIGl0ZW1zOiB0aGlzLl9tb2RlbCxcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMuX21vZGVsKTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbGlkYXRlVGV4dCh0ZXh0KSB7XG4gICAgcmV0dXJuIFN0cmluZyh0ZXh0KS50cmltKCkubGVuZ3RoICYmICghdGhpcy52YWxpZGF0ZVRleHQgfHwgdGhpcy52YWxpZGF0ZVRleHQodGV4dCkpO1xuICB9XG5cbiAgcHVibGljIGFkZFRleHQodGV4dCkge1xuXG4gICAgaWYgKHRoaXMuX3ZhbGlkYXRlVGV4dCh0ZXh0KSkge1xuXG4gICAgICBjb25zdCB0ZXh0T2JqZWN0ID0gdGhpcy5jcmVhdGVJdGVtKHRleHQsIERhdGFUeXBlLlRleHQpO1xuXG4gICAgICB0aGlzLnVwZGF0ZU1vZGVsKFsuLi50aGlzLl9tb2RlbCwgdGV4dE9iamVjdF0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRPYmplY3Qob2JqZWN0KSB7XG4gICAgdGhpcy51cGRhdGVNb2RlbChbLi4udGhpcy5fbW9kZWwsIG9iamVjdF0pO1xuICB9XG5cbiAgcHVibGljIGJsdXIoKSB7XG5cbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGVTZWFyY2guaXNPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZWQoKSB7XG5cbiAgICBpZiAodGhpcy5hbGxvd1RleHQpIHtcbiAgICAgIHRoaXMuYWRkVGV4dCh0aGlzLmtleXdvcmQpO1xuICAgIH1cblxuICAgIHRoaXMuY2xlYXJJbnB1dCgpO1xuICB9XG5cbiAgcHVibGljIHRleHRLZXl3b3JkKGUpIHtcblxuICAgIGlmICh0aGlzLmFsbG93VGV4dCAmJiBlLmNvZGUgPT09ICdDb21tYScpIHtcbiAgICAgIHRoaXMua2V5d29yZC5zcGxpdCgnLCcpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIHRoaXMuYWRkVGV4dChpdGVtLnRyaW0oKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzLmNsZWFySW5wdXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLnRleHREYXRhID0ge307XG5cbiAgICBpZiAodGhpcy5fdmFsaWRhdGVUZXh0KHRoaXMua2V5d29yZCkpIHtcbiAgICAgIHRoaXMudGV4dERhdGEgPSB0aGlzLmNyZWF0ZUl0ZW0odGhpcy5rZXl3b3JkLCBEYXRhVHlwZS5UZXh0KTtcbiAgICB9XG5cbiAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoZSkge1xuXG4gICAgaWYgKCF0aGlzLmZldGNoT25Gb2N1cykge1xuICAgICAgdGhpcy5zZWFyY2hEYXRhID0gW107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmV0Y2hPbkZvY3VzKSB7XG4gICAgICB0aGlzLm9iamVjdEtleXdvcmQoZSk7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIub3BlblBhbmVsKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9iamVjdEtleXdvcmQoZSkge1xuXG4gICAgaWYgKGUgJiYgKFsnRW50ZXInLCAnQXJyb3dEb3duJywgJ0Fycm93VXAnXS5pbmRleE9mKGUuY29kZSkgPiAtMSB8fCAodGhpcy5hbGxvd1RleHQgJiYgZS5jb2RlID09PSAnQ29tbWEnKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZmV0Y2hPbkZvY3VzICYmICF0aGlzLmtleXdvcmQpIHtcbiAgICAgIHRoaXMuc2VhcmNoRGF0YSA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZldGNoKSB7XG4gICAgICB0aGlzLm5vUmVzdWx0cyA9IGZhbHNlO1xuICAgICAgdGhpcy5mZXRjaCh0aGlzLmtleXdvcmQsIHRoaXMubW9kZWwpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuXG4gICAgICAgICAgdGhpcy5zZWFyY2hEYXRhID0gcmVzcG9uc2UubWFwKGRhdGEgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSXRlbShkYXRhLCBEYXRhVHlwZS5PYmplY3QpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5zZWFyY2hEYXRhID0gZmlsdGVyKHRoaXMuc2VhcmNoRGF0YSwgaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmluZEluZGV4KHRoaXMuX21vZGVsLCAobW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZVdpdGgobW9kZWwuZGF0YSwgaXRlbS5kYXRhKTtcbiAgICAgICAgICAgIH0pID09PSAtMTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmICghdGhpcy5zZWFyY2hEYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5ub1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJdGVtKGRhdGEsIHR5cGUpIHtcbiAgICBjb25zdCBpdGVtOiBhbnkgPSB7XG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH07XG5cbiAgICBpZiAodHlwZSA9PT0gRGF0YVR5cGUuT2JqZWN0KSB7XG4gICAgICBpdGVtLmltYWdlID0gZ2V0T2JqZWN0VmFsdWUoZGF0YSwgdGhpcy5pbWFnZVByb3BlcnR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdChlOiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XG5cbiAgICB0aGlzLnNlYXJjaERhdGEgPSBbXTtcbiAgICB0aGlzLmNsZWFySW5wdXQoKTtcblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5hbGxvd09iamVjdCAmJiB0aGlzLmFsbG93VGV4dCA/IGUub3B0aW9uLnZhbHVlIDogZS5vcHRpb24udmFsdWUuZGF0YTtcbiAgICBpZiAoZS5vcHRpb24udmFsdWUudHlwZSA9PT0gRGF0YVR5cGUuT2JqZWN0KSB7XG5cbiAgICAgIGlmICghZmlsdGVyKHRoaXMuX21vZGVsLCB2YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWRkT2JqZWN0KGUub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KGUub3B0aW9uLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZS5vcHRpb24udmFsdWUudHlwZSA9PT0gRGF0YVR5cGUuVGV4dCkge1xuICAgICAgaWYgKCFmaWx0ZXIodGhpcy5fbW9kZWwsIHZhbHVlKS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5hZGRUZXh0KGUub3B0aW9uLnZhbHVlLmRhdGEpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoZS5vcHRpb24udmFsdWUuZGF0YSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZvY3VzKG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNsZWFySW5wdXQoKSB7XG4gICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy50ZXh0RGF0YSA9IHt9O1xuICAgIHRoaXMua2V5d29yZCA9ICcnO1xuICB9XG5cbiAgcHVibGljIG9uUmVtb3ZlKGRhdGEpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIuY2xvc2VQYW5lbCgpO1xuICAgIHJlbW92ZSh0aGlzLl9tb2RlbCwgZGF0YSk7XG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLl9tb2RlbCk7XG4gICAgdGhpcy5yZW1vdmVkLmVtaXQoZGF0YSk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdmFsdWUgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW107XG5cbiAgICB2YWx1ZSA9IG1hcCh2YWx1ZSwgKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBpc09iamVjdChpdGVtKSA/IERhdGFUeXBlLk9iamVjdCA6IERhdGFUeXBlLlRleHQ7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVJdGVtKGl0ZW0sIHR5cGUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fbW9kZWwgPSB2YWx1ZTtcblxuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU1vZGVsKHZhbHVlKSB7XG5cbiAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xuXG4gICAgY29uc3QgbW9kZWwgPSBtYXAodGhpcy5fbW9kZWwsIChpdGVtKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuYWxsb3dUZXh0IHx8ICF0aGlzLmFsbG93T2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBpdGVtLmRhdGE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fb25DaGFuZ2UobW9kZWwpO1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2F1dG9jb21wbGV0ZS1jaGlwcy8iLCJzb3VyY2VzIjpbImFwcC9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS1jaGlwcy9hdXRvY29tcGxldGUtY2hpcHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsZUFBZSxFQUVmLHNCQUFzQixFQUN2QixNQUFNLG1CQUFtQixDQUFBO0FBRTFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEYsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDOztBQUVuSCxNQUFNLEtBQU8sMEJBQTBCLEdBQWE7SUFDbEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVTs7O0lBQUMsY0FBTSxPQUFBLDRCQUE0QixFQUE1QixDQUE0QixFQUFDO0lBQzNELEtBQUssRUFBRSxJQUFJO0NBQ1o7QUFFRDtJQTZFRSxzQ0FDVSxNQUF5QjtRQUF6QixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQXJFbkIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUNiLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRW5CLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLFVBQUssR0FBRyxHQUFHLENBQUM7UUFFWix1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDeEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRTdCLGdCQUFXOzs7OztRQUFHLFVBQUMsRUFBTyxFQUFFLEVBQU87WUFDcEMsT0FBTyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsRUFBQztRQUVlLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzlCLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRVYsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFbEQsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUN2QixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBRyxRQUFRLENBQUM7UUFDcEIsWUFBTyxHQUFXLElBQUksQ0FBQztRQUN2QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVMsQ0FBQztRQUNoQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXBCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFDbEIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFzQmpDLG1CQUFjLEdBQWtDLElBQUksQ0FBQztRQUVGLGdCQUFXLEdBQWUsSUFBSSxDQUFDO1FBQ3hCLHVCQUFrQixHQUFvQixJQUFJLENBQUM7UUFDekMsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRS9FLGVBQVU7OztRQUFHLGNBQVEsQ0FBQyxFQUFDO1FBQ3ZCLGNBQVM7Ozs7UUFBRyxVQUFDLEtBQVUsSUFBTSxDQUFDLEVBQUM7SUFRbkMsQ0FBQztJQW5DTCxzQkFBSSwrQ0FBSzs7OztRQUFUO1lBQ0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3JCLENBQUM7OztPQUFBOzs7OztJQUdELGdEQUFTOzs7O0lBRFQsVUFDVSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFBQSxDQUFDOzs7O0lBR0Ysc0RBQWU7OztJQURmO1FBQUEsaUJBUUM7UUFOQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixVQUFVOzs7WUFBQztnQkFDVCxLQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QyxDQUFDLEVBQUMsQ0FBQTtTQUNIO0lBQ0gsQ0FBQzs7Ozs7SUFZTSx1REFBZ0I7Ozs7SUFBdkIsVUFBd0IsRUFBdUIsSUFBVSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQSxDQUFDLENBQUM7Ozs7O0lBQ3ZFLHdEQUFpQjs7OztJQUF4QixVQUF5QixFQUFhLElBQVUsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUEsQ0FBQyxDQUFDOzs7O0lBTy9ELCtDQUFROzs7SUFBZjtRQUFBLGlCQWtCQztRQWhCQyxJQUFJLENBQUMsUUFBUTthQUNWLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUN6QjthQUNBLFNBQVM7Ozs7UUFBQyxVQUFDLENBQUM7WUFDWCxLQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUxRCxJQUFJLEtBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLEtBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkI7WUFFRCxJQUFJLEtBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xCLEtBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckI7UUFDSCxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7O0lBRUQsMkNBQUk7Ozs7SUFBSixVQUFLLEtBQTRCO1FBQy9CLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQzFCLElBQUksRUFBRSxLQUFLLENBQUMsYUFBYTtZQUN6QixFQUFFLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDdEIsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ25CLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Ozs7OztJQUVPLG9EQUFhOzs7OztJQUFyQixVQUFzQixJQUFJO1FBQ3hCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQzs7Ozs7SUFFTSw4Q0FBTzs7OztJQUFkLFVBQWUsSUFBSTtRQUVqQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUU7O2dCQUV0QixVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQztZQUV2RCxJQUFJLENBQUMsV0FBVyxrQkFBSyxJQUFJLENBQUMsTUFBTSxHQUFFLFVBQVUsR0FBRSxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQzs7Ozs7SUFFTSxnREFBUzs7OztJQUFoQixVQUFpQixNQUFNO1FBQ3JCLElBQUksQ0FBQyxXQUFXLGtCQUFLLElBQUksQ0FBQyxNQUFNLEdBQUUsTUFBTSxHQUFFLENBQUM7SUFDN0MsQ0FBQzs7OztJQUVNLDJDQUFJOzs7SUFBWDtRQUVFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQzNCO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDOzs7O0lBRU0sNkNBQU07OztJQUFiO1FBRUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Ozs7O0lBRU0sa0RBQVc7Ozs7SUFBbEIsVUFBbUIsQ0FBQztRQUFwQixpQkFnQkM7UUFkQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTzs7OztZQUFDLFVBQUEsSUFBSTtnQkFDbEMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFDLEVBQUMsQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQzFCO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFFbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUQ7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7Ozs7O0lBRU0sNENBQUs7Ozs7SUFBWixVQUFhLENBQUM7UUFFWixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztTQUN0QjtRQUVELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUN0QztJQUNILENBQUM7Ozs7O0lBRU0sb0RBQWE7Ozs7SUFBcEIsVUFBcUIsQ0FBQztRQUF0QixpQkFvQ0M7UUFsQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxFQUFFO1lBQzNHLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNyQixPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQztpQkFDakMsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3pCO2lCQUNBLFNBQVM7Ozs7WUFBQyxVQUFBLFFBQVE7Z0JBRWpCLEtBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUc7Ozs7Z0JBQUMsVUFBQSxJQUFJO29CQUNqQyxPQUFPLEtBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDaEQsQ0FBQyxFQUFDLENBQUM7Z0JBRUgsS0FBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSSxDQUFDLFVBQVU7Ozs7Z0JBQUUsVUFBQSxJQUFJO29CQUM1QyxPQUFPLFNBQVMsQ0FBQyxLQUFJLENBQUMsTUFBTTs7OztvQkFBRSxVQUFDLEtBQUs7d0JBQ2xDLE9BQU8sS0FBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDakQsQ0FBQyxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ1osQ0FBQyxFQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO29CQUMzQixLQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDdkI7Z0JBRUQsS0FBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM5QixDQUFDLEVBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQzs7Ozs7OztJQUVPLGlEQUFVOzs7Ozs7SUFBbEIsVUFBbUIsSUFBSSxFQUFFLElBQUk7O1lBQ3JCLElBQUksR0FBUTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUVILElBQUksSUFBSSxLQUFLLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN2RDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7Ozs7SUFFTSwrQ0FBUTs7OztJQUFmLFVBQWdCLENBQStCO1FBQS9DLGlCQXdCQztRQXRCQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7O1lBRVosS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUk7UUFDdkYsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUUzQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEM7U0FDRjtRQUVELElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRTtnQkFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDekM7U0FDRjtRQUVELFVBQVU7OztRQUFDO1lBQ1QsS0FBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7SUFFTSxpREFBVTs7O0lBQWpCO1FBQ0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7OztJQUVNLCtDQUFROzs7O0lBQWYsVUFBZ0IsSUFBSTtRQUNsQixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQzs7Ozs7SUFFTSxpREFBVTs7OztJQUFqQixVQUFrQixLQUFVO1FBQTVCLGlCQWFDO1FBWkMsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSzs7OztRQUFFLFVBQUMsSUFBSTs7Z0JBQ2hCLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQzdELE9BQU8sS0FBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckMsQ0FBQyxFQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVwQixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUVsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdCLENBQUM7Ozs7O0lBRU0sa0RBQVc7Ozs7SUFBbEIsVUFBbUIsS0FBSztRQUF4QixpQkFnQkM7UUFkQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzs7WUFFZCxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNOzs7O1FBQUUsVUFBQyxJQUFJO1lBQ2xDLElBQUksQ0FBQyxLQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsS0FBSSxDQUFDLFdBQVcsRUFBRTtnQkFDeEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2xCO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLEVBQUM7UUFFRixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUVsQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7O0lBRUQsa0RBQVc7OztJQUFYO1FBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7Ozs7SUFFTSxpRUFBMEI7OztJQUFqQztRQUNFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7O2dCQXhURixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsd3dGQUFrRDtvQkFFbEQsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQ3ZDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztpQkFDaEQ7Ozs7Z0JBN0MwQixpQkFBaUI7Ozt3QkFnRHpDLEtBQUs7OEJBQ0wsS0FBSztnQ0FDTCxLQUFLOzRCQUNMLEtBQUs7OEJBQ0wsS0FBSzt3QkFDTCxLQUFLOytCQUNMLEtBQUs7cUNBQ0wsS0FBSzsyQkFDTCxLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSzt3QkFDTCxLQUFLOytCQUNMLEtBQUs7OEJBQ0wsS0FBSzsyQkFLTCxNQUFNOzBCQUNOLE1BQU07NEJBQ04sTUFBTTs4QkFFTixXQUFXLFNBQUMsdUJBQXVCOzRCQWlCbkMsWUFBWSxTQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztrQ0FLcEMsWUFBWSxTQUFDLE9BQU8sRUFBRSxFQUFFO2lDQVV4QixZQUFZLFNBQUMsNkJBQTZCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7OEJBRy9FLFNBQVMsU0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3FDQUN6QyxTQUFTLFNBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3NDQUNoRCxTQUFTLFNBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztJQXFQckQsbUNBQUM7Q0FBQSxBQXpURCxJQXlUQztTQWxUWSw0QkFBNEI7OztJQUV2Qyw2Q0FBNkI7O0lBQzdCLG1EQUFpQzs7SUFDakMscURBQW1DOztJQUNuQyxpREFBbUM7O0lBQ25DLG1EQUFtQzs7SUFDbkMsNkNBQTRCOztJQUM1QixvREFBNkI7O0lBQzdCLDBEQUF3Qzs7SUFDeEMsZ0RBQWlDOztJQUNqQyxpREFBaUM7O0lBQ2pDLGlEQUFrQzs7SUFDbEMsNkNBQTBCOztJQUMxQixvREFBb0M7O0lBQ3BDLG1EQUdFOztJQUVGLGdEQUErQzs7SUFDL0MsK0NBQThDOztJQUM5QyxpREFBZ0Q7O0lBRWhELG1EQUF5RDs7SUFFekQsa0RBQThCOztJQUM5QixnREFBMEI7O0lBQzFCLGdEQUEyQjs7SUFDM0IsK0NBQThCOztJQUM5QixnREFBdUM7O0lBQ3ZDLGlEQUF5Qjs7SUFDekIsb0RBQTJCOztJQUUzQiw4Q0FBMEI7Ozs7O0lBQzFCLGdEQUFpQzs7SUFxQmpDLHNEQUNxRDs7SUFFckQsbURBQWtGOztJQUNsRiwwREFBcUc7O0lBQ3JHLDJEQUF1Rjs7Ozs7SUFFdkYsa0RBQStCOzs7OztJQUMvQixpREFBdUM7Ozs7O0lBT3JDLDhDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFByb3ZpZGVyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgTWF0QXV0b2NvbXBsZXRlLFxuICBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50LFxuICBNYXRBdXRvY29tcGxldGVUcmlnZ2VyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJ1xuXG5pbXBvcnQgeyBmaWx0ZXIsIGZpbmRJbmRleCwgaXNFcXVhbCwgaXNPYmplY3QsIG1hcCwgcmVtb3ZlLCB0cmltIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGdldE9iamVjdFZhbHVlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9nZXQtb2JqZWN0LXZhbHVlJztcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kYXRhLXR5cGUnO1xuaW1wb3J0IHsgRnNBdXRvY29tcGxldGVPYmplY3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS1vYmplY3QvYXV0b2NvbXBsZXRlLW9iamVjdC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgRlNfQUNDT1VOVF9QSUNLRVJfQUNDRVNTT1I6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNBdXRvY29tcGxldGVDaGlwc0NvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1hdXRvY29tcGxldGUtY2hpcHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLWNoaXBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL2F1dG9jb21wbGV0ZS1jaGlwcy5jb21wb25lbnQuc2NzcycgXSxcbiAgcHJvdmlkZXJzOiBbRlNfQUNDT1VOVF9QSUNLRVJfQUNDRVNTT1JdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNBdXRvY29tcGxldGVDaGlwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgQElucHV0KCkgcHVibGljIGZldGNoID0gbnVsbDtcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZVByb3BlcnR5ID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd1RleHQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd09iamVjdCA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBkZWxheSA9IDMwMDtcbiAgQElucHV0KCkgcHVibGljIHZhbGlkYXRlVGV4dDtcbiAgQElucHV0KCkgcHVibGljIGludmFsaWRUZXh0TWVzc2FnZSA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJlbW92YWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBvcmRlcmFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxpbWl0ID0gMDtcbiAgQElucHV0KCkgcHVibGljIGZldGNoT25Gb2N1cyA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb21wYXJlV2l0aCA9IChvMTogYW55LCBvMjogYW55KSA9PiB7XG4gICAgcmV0dXJuIGlzRXF1YWwobzEsIG8yKTtcbiAgfTtcblxuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVvcmRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnMtZm9ybS13cmFwcGVyJykgZm9ybVdyYXBwZXIgPSB0cnVlO1xuXG4gIHB1YmxpYyBzZWFyY2hEYXRhOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgdGV4dERhdGE6IGFueSA9IHt9O1xuICBwdWJsaWMgZGF0YVR5cGUgPSBEYXRhVHlwZTtcbiAgcHVibGljIGtleXdvcmQ6IHN0cmluZyA9IG51bGw7XG4gIHB1YmxpYyBrZXl3b3JkJCA9IG5ldyBTdWJqZWN0PEV2ZW50PigpO1xuICBwdWJsaWMgbm9SZXN1bHRzID0gZmFsc2U7XG4gIHB1YmxpYyBpbnB1dFZpc2libGUgPSB0cnVlO1xuXG4gIHB1YmxpYyBfbW9kZWw6IGFueVtdID0gW107XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGdldCBtb2RlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZWw7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnc3RhcnQnLCBbJyRldmVudCddKVxuICBkcmFnU3RhcnQoZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFtdKVxuICBzaG93U2VhcmNoSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMubW9kZWwubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pbnB1dFZpc2libGUgPSB0cnVlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBAQ29udGVudENoaWxkKEZzQXV0b2NvbXBsZXRlT2JqZWN0RGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgb2JqZWN0VGVtcGxhdGU6IEZzQXV0b2NvbXBsZXRlT2JqZWN0RGlyZWN0aXZlID0gbnVsbDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBzZWFyY2hJbnB1dDogRWxlbWVudFJlZiA9IG51bGw7XG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZVNlYXJjaCcsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBhdXRvY29tcGxldGVTZWFyY2g6IE1hdEF1dG9jb21wbGV0ZSA9IG51bGw7XG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGF1dG9jb21wbGV0ZVRyaWdnZXIgPSBudWxsO1xuXG4gIHByaXZhdGUgX29uVG91Y2hlZCA9ICgpID0+IHsgfTtcbiAgcHJpdmF0ZSBfb25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge307XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiBhbnkpOiB2b2lkIHsgdGhpcy5fb25DaGFuZ2UgPSBmbiB9XG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gYW55KTogdm9pZCB7IHRoaXMuX29uVG91Y2hlZCA9IGZuIH1cblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLmtleXdvcmQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWxheSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgdGhpcy5rZXl3b3JkID0gdHJpbSh0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmFsbG93T2JqZWN0KSB7XG4gICAgICAgICAgdGhpcy5vYmplY3RLZXl3b3JkKGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWxsb3dUZXh0KSB7XG4gICAgICAgICAgdGhpcy50ZXh0S2V5d29yZChlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5fbW9kZWwsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgdGhpcy5yZW9yZGVyZWQuZW1pdCh7XG4gICAgICBpdGVtOiBldmVudC5pdGVtLmRhdGEuZGF0YSxcbiAgICAgIGZyb206IGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICB0bzogZXZlbnQuY3VycmVudEluZGV4LFxuICAgICAgaXRlbXM6IHRoaXMuX21vZGVsLFxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5fbW9kZWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGVUZXh0KHRleHQpIHtcbiAgICByZXR1cm4gU3RyaW5nKHRleHQpLnRyaW0oKS5sZW5ndGggJiYgKCF0aGlzLnZhbGlkYXRlVGV4dCB8fCB0aGlzLnZhbGlkYXRlVGV4dCh0ZXh0KSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVGV4dCh0ZXh0KSB7XG5cbiAgICBpZiAodGhpcy5fdmFsaWRhdGVUZXh0KHRleHQpKSB7XG5cbiAgICAgIGNvbnN0IHRleHRPYmplY3QgPSB0aGlzLmNyZWF0ZUl0ZW0odGV4dCwgRGF0YVR5cGUuVGV4dCk7XG5cbiAgICAgIHRoaXMudXBkYXRlTW9kZWwoWy4uLnRoaXMuX21vZGVsLCB0ZXh0T2JqZWN0XSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZE9iamVjdChvYmplY3QpIHtcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKFsuLi50aGlzLl9tb2RlbCwgb2JqZWN0XSk7XG4gIH1cblxuICBwdWJsaWMgYmx1cigpIHtcblxuICAgIGlmICh0aGlzLm1vZGVsLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaW5wdXRWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlU2VhcmNoLmlzT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2xvc2VkKCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VkKCkge1xuXG4gICAgaWYgKHRoaXMuYWxsb3dUZXh0KSB7XG4gICAgICB0aGlzLmFkZFRleHQodGhpcy5rZXl3b3JkKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsZWFySW5wdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyB0ZXh0S2V5d29yZChlKSB7XG5cbiAgICBpZiAodGhpcy5hbGxvd1RleHQgJiYgZS5jb2RlID09PSAnQ29tbWEnKSB7XG4gICAgICB0aGlzLmtleXdvcmQuc3BsaXQoJywnKS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICB0aGlzLmFkZFRleHQoaXRlbS50cmltKCkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5jbGVhcklucHV0KCk7XG4gICAgfVxuXG4gICAgdGhpcy50ZXh0RGF0YSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuX3ZhbGlkYXRlVGV4dCh0aGlzLmtleXdvcmQpKSB7XG4gICAgICB0aGlzLnRleHREYXRhID0gdGhpcy5jcmVhdGVJdGVtKHRoaXMua2V5d29yZCwgRGF0YVR5cGUuVGV4dCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKGUpIHtcblxuICAgIGlmICghdGhpcy5mZXRjaE9uRm9jdXMpIHtcbiAgICAgIHRoaXMuc2VhcmNoRGF0YSA9IFtdO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZldGNoT25Gb2N1cykge1xuICAgICAgdGhpcy5vYmplY3RLZXl3b3JkKGUpO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyLm9wZW5QYW5lbCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvYmplY3RLZXl3b3JkKGUpIHtcblxuICAgIGlmIChlICYmIChbJ0VudGVyJywgJ0Fycm93RG93bicsICdBcnJvd1VwJ10uaW5kZXhPZihlLmNvZGUpID4gLTEgfHwgKHRoaXMuYWxsb3dUZXh0ICYmIGUuY29kZSA9PT0gJ0NvbW1hJykpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZldGNoT25Gb2N1cyAmJiAhdGhpcy5rZXl3b3JkKSB7XG4gICAgICB0aGlzLnNlYXJjaERhdGEgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5mZXRjaCkge1xuICAgICAgdGhpcy5ub1Jlc3VsdHMgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmV0Y2godGhpcy5rZXl3b3JkLCB0aGlzLm1vZGVsKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcblxuICAgICAgICAgIHRoaXMuc2VhcmNoRGF0YSA9IHJlc3BvbnNlLm1hcChkYXRhID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUl0ZW0oZGF0YSwgRGF0YVR5cGUuT2JqZWN0KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuc2VhcmNoRGF0YSA9IGZpbHRlcih0aGlzLnNlYXJjaERhdGEsIGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZpbmRJbmRleCh0aGlzLl9tb2RlbCwgKG1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVXaXRoKG1vZGVsLmRhdGEsIGl0ZW0uZGF0YSk7XG4gICAgICAgICAgICB9KSA9PT0gLTE7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubm9SZXN1bHRzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSXRlbShkYXRhLCB0eXBlKSB7XG4gICAgY29uc3QgaXRlbTogYW55ID0ge1xuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9O1xuXG4gICAgaWYgKHR5cGUgPT09IERhdGFUeXBlLk9iamVjdCkge1xuICAgICAgaXRlbS5pbWFnZSA9IGdldE9iamVjdFZhbHVlKGRhdGEsIHRoaXMuaW1hZ2VQcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3QoZTogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xuXG4gICAgdGhpcy5zZWFyY2hEYXRhID0gW107XG4gICAgdGhpcy5jbGVhcklucHV0KCk7XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuYWxsb3dPYmplY3QgJiYgdGhpcy5hbGxvd1RleHQgPyBlLm9wdGlvbi52YWx1ZSA6IGUub3B0aW9uLnZhbHVlLmRhdGE7XG4gICAgaWYgKGUub3B0aW9uLnZhbHVlLnR5cGUgPT09IERhdGFUeXBlLk9iamVjdCkge1xuXG4gICAgICBpZiAoIWZpbHRlcih0aGlzLl9tb2RlbCwgdmFsdWUpLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmFkZE9iamVjdChlLm9wdGlvbi52YWx1ZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChlLm9wdGlvbi52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGUub3B0aW9uLnZhbHVlLnR5cGUgPT09IERhdGFUeXBlLlRleHQpIHtcbiAgICAgIGlmICghZmlsdGVyKHRoaXMuX21vZGVsLCB2YWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWRkVGV4dChlLm9wdGlvbi52YWx1ZS5kYXRhKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KGUub3B0aW9uLnZhbHVlLmRhdGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1cyhudWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcklucHV0KCkge1xuICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMudGV4dERhdGEgPSB7fTtcbiAgICB0aGlzLmtleXdvcmQgPSAnJztcbiAgfVxuXG4gIHB1YmxpYyBvblJlbW92ZShkYXRhKTogdm9pZCB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyLmNsb3NlUGFuZWwoKTtcbiAgICByZW1vdmUodGhpcy5fbW9kZWwsIGRhdGEpO1xuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5fbW9kZWwpO1xuICAgIHRoaXMucmVtb3ZlZC5lbWl0KGRhdGEpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHZhbHVlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xuXG4gICAgdmFsdWUgPSBtYXAodmFsdWUsIChpdGVtKSA9PiB7XG4gICAgICBjb25zdCB0eXBlID0gaXNPYmplY3QoaXRlbSkgPyBEYXRhVHlwZS5PYmplY3QgOiBEYXRhVHlwZS5UZXh0O1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSXRlbShpdGVtLCB0eXBlKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX21vZGVsID0gdmFsdWU7XG5cbiAgICB0aGlzLmNoZWNrU2VhcmNoSW5wdXRWaXNpYmlsaXR5KCk7XG5cbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVNb2RlbCh2YWx1ZSkge1xuXG4gICAgdGhpcy5fbW9kZWwgPSB2YWx1ZTtcblxuICAgIGNvbnN0IG1vZGVsID0gbWFwKHRoaXMuX21vZGVsLCAoaXRlbSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmFsbG93VGV4dCB8fCAhdGhpcy5hbGxvd09iamVjdCkge1xuICAgICAgICByZXR1cm4gaXRlbS5kYXRhO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2hlY2tTZWFyY2hJbnB1dFZpc2liaWxpdHkoKTtcblxuICAgIHRoaXMuX29uQ2hhbmdlKG1vZGVsKTtcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1NlYXJjaElucHV0VmlzaWJpbGl0eSgpIHtcbiAgICB0aGlzLmlucHV0VmlzaWJsZSA9IHRoaXMubW9kZWwubGVuZ3RoID09PSAwO1xuICB9XG59XG4iXX0= |
@@ -113,2 +113,3 @@ import { Directive, forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ChangeDetectorRef, Input, Output, HostBinding, HostListener, ContentChild, TemplateRef, ViewChild, NgModule } from '@angular/core'; | ||
this.noResults = false; | ||
this.inputVisible = true; | ||
this._model = []; | ||
@@ -145,2 +146,16 @@ this.destroy$ = new Subject(); | ||
/** | ||
* @return {?} | ||
*/ | ||
showSearchInput() { | ||
if (this.model.length > 0) { | ||
this.inputVisible = true; | ||
setTimeout((/** | ||
* @return {?} | ||
*/ | ||
() => { | ||
this.searchInput.nativeElement.focus(); | ||
})); | ||
} | ||
} | ||
/** | ||
* @param {?} fn | ||
@@ -219,2 +234,5 @@ * @return {?} | ||
blur() { | ||
if (this.model.length > 0) { | ||
this.inputVisible = false; | ||
} | ||
if (this.autocompleteSearch.isOpen) { | ||
@@ -395,2 +413,3 @@ return; | ||
this._model = value; | ||
this.checkSearchInputVisibility(); | ||
this._cdRef.markForCheck(); | ||
@@ -415,2 +434,3 @@ } | ||
})); | ||
this.checkSearchInputVisibility(); | ||
this._onChange(model); | ||
@@ -426,2 +446,8 @@ this._onTouched(); | ||
} | ||
/** | ||
* @return {?} | ||
*/ | ||
checkSearchInputVisibility() { | ||
this.inputVisible = this.model.length === 0; | ||
} | ||
} | ||
@@ -431,6 +457,6 @@ FsAutocompleteChipsComponent.decorators = [ | ||
selector: 'fs-autocomplete-chips', | ||
template: "<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-chip\n *ngFor=\"let item of _model\"\n [selectable]=\"true\"\n [removable]=\"true\"\n (removed)=\"onRemove(item)\"\n class=\"fs-autocomplete-chip\"\n [ngClass]=\"{ imaged: item.image }\"\n [cdkDragDisabled]=\"!orderable\"\n [cdkDragData]=\"item\"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n <mat-icon *ngIf=\"removable\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keyup)=\"keyword$.next($event)\"\n (focus)=\"focus($event)\"\n (blur)=\"blur()\"\n name=\"keyword\"\n [matAutocomplete]=\"autocompleteSearch\"\n [matChipInputFor]=\"searchList\">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch=\"matAutocomplete\"\n class=\"fs-account-picker-autocomplete\"\n (optionSelected)=\"onSelect($event)\"\n (closed)=\"closed()\"\n autoActiveFirstOption=\"true\">\n\n <mat-option *ngFor=\"let item of searchData\" [value]=\"item\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf=\"noResults\" disabled class=\"no-results\">\n No results found\n </mat-option>\n\n <ng-container *ngIf=\"keyword && allowText\">\n\n <mat-option *ngIf=\"!textData.type\" disabled class=\"invalid-message\" (click)=\"searchInput.focus()\">\n <div>{{ keyword }}</div>\n <div class=\"message\">{{ invalidTextMessage || 'Invalid' }}</div>\n </mat-option>\n\n <mat-option *ngIf=\"textData.type===dataType.Text\" [value]=\"textData\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: textData }\">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item=\"item\" #itemTemplate>\n <ng-container *ngIf=\"item.type===dataType.Object\" class=\"item-template\">\n <img *ngIf=\"item.image\" [src]=\"item.image\">\n <span>\n <ng-template\n [ngTemplateOutlet]=\"objectTemplate\"\n [ngTemplateOutletContext]=\"{ object: item.data }\">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"item.type===dataType.Text\">\n {{item.data}}\n </ng-container>\n</ng-template>\n", | ||
template: "<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-chip\n *ngFor=\"let item of _model\"\n [selectable]=\"true\"\n [removable]=\"true\"\n (removed)=\"onRemove(item)\"\n class=\"fs-autocomplete-chip\"\n [ngClass]=\"{ imaged: item.image }\"\n [cdkDragDisabled]=\"!orderable\"\n [cdkDragData]=\"item\"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n <mat-icon *ngIf=\"removable\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keyup)=\"keyword$.next($event)\"\n (focus)=\"focus($event)\"\n (blur)=\"blur()\"\n [ngClass]=\"{'hidden': !inputVisible}\"\n name=\"keyword\"\n [matAutocomplete]=\"autocompleteSearch\"\n [matChipInputFor]=\"searchList\">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch=\"matAutocomplete\"\n class=\"fs-account-picker-autocomplete\"\n (optionSelected)=\"onSelect($event)\"\n (closed)=\"closed()\"\n autoActiveFirstOption=\"true\">\n\n <mat-option *ngFor=\"let item of searchData\" [value]=\"item\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf=\"noResults\" disabled class=\"no-results\">\n No results found\n </mat-option>\n\n <ng-container *ngIf=\"keyword && allowText\">\n\n <mat-option *ngIf=\"!textData.type\" disabled class=\"invalid-message\" (click)=\"searchInput.focus()\">\n <div>{{ keyword }}</div>\n <div class=\"message\">{{ invalidTextMessage || 'Invalid' }}</div>\n </mat-option>\n\n <mat-option *ngIf=\"textData.type===dataType.Text\" [value]=\"textData\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: textData }\">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item=\"item\" #itemTemplate>\n <ng-container *ngIf=\"item.type===dataType.Object\" class=\"item-template\">\n <img *ngIf=\"item.image\" [src]=\"item.image\">\n <span>\n <ng-template\n [ngTemplateOutlet]=\"objectTemplate\"\n [ngTemplateOutletContext]=\"{ object: item.data }\">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"item.type===dataType.Text\">\n {{item.data}}\n </ng-container>\n</ng-template>\n", | ||
providers: [FS_ACCOUNT_PICKER_ACCESSOR], | ||
changeDetection: ChangeDetectionStrategy.OnPush, | ||
styles: [":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"] | ||
styles: [":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}.hidden{display:none!important}.mat-chip-list{cursor:pointer}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"] | ||
}] } | ||
@@ -462,2 +488,3 @@ ]; | ||
dragStart: [{ type: HostListener, args: ['dragstart', ['$event'],] }], | ||
showSearchInput: [{ type: HostListener, args: ['click', [],] }], | ||
objectTemplate: [{ type: ContentChild, args: [FsAutocompleteObjectDirective, { read: TemplateRef, static: true },] }], | ||
@@ -518,2 +545,4 @@ searchInput: [{ type: ViewChild, args: ['searchInput', { static: true },] }], | ||
/** @type {?} */ | ||
FsAutocompleteChipsComponent.prototype.inputVisible; | ||
/** @type {?} */ | ||
FsAutocompleteChipsComponent.prototype._model; | ||
@@ -520,0 +549,0 @@ /** |
@@ -114,2 +114,3 @@ import { Directive, forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ChangeDetectorRef, Input, Output, HostBinding, HostListener, ContentChild, TemplateRef, ViewChild, NgModule } from '@angular/core'; | ||
this.noResults = false; | ||
this.inputVisible = true; | ||
this._model = []; | ||
@@ -154,2 +155,20 @@ this.destroy$ = new Subject(); | ||
/** | ||
* @return {?} | ||
*/ | ||
FsAutocompleteChipsComponent.prototype.showSearchInput = /** | ||
* @return {?} | ||
*/ | ||
function () { | ||
var _this = this; | ||
if (this.model.length > 0) { | ||
this.inputVisible = true; | ||
setTimeout((/** | ||
* @return {?} | ||
*/ | ||
function () { | ||
_this.searchInput.nativeElement.focus(); | ||
})); | ||
} | ||
}; | ||
/** | ||
* @param {?} fn | ||
@@ -260,2 +279,5 @@ * @return {?} | ||
function () { | ||
if (this.model.length > 0) { | ||
this.inputVisible = false; | ||
} | ||
if (this.autocompleteSearch.isOpen) { | ||
@@ -476,2 +498,3 @@ return; | ||
this._model = value; | ||
this.checkSearchInputVisibility(); | ||
this._cdRef.markForCheck(); | ||
@@ -501,2 +524,3 @@ }; | ||
})); | ||
this.checkSearchInputVisibility(); | ||
this._onChange(model); | ||
@@ -515,9 +539,18 @@ this._onTouched(); | ||
}; | ||
/** | ||
* @return {?} | ||
*/ | ||
FsAutocompleteChipsComponent.prototype.checkSearchInputVisibility = /** | ||
* @return {?} | ||
*/ | ||
function () { | ||
this.inputVisible = this.model.length === 0; | ||
}; | ||
FsAutocompleteChipsComponent.decorators = [ | ||
{ type: Component, args: [{ | ||
selector: 'fs-autocomplete-chips', | ||
template: "<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-chip\n *ngFor=\"let item of _model\"\n [selectable]=\"true\"\n [removable]=\"true\"\n (removed)=\"onRemove(item)\"\n class=\"fs-autocomplete-chip\"\n [ngClass]=\"{ imaged: item.image }\"\n [cdkDragDisabled]=\"!orderable\"\n [cdkDragData]=\"item\"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n <mat-icon *ngIf=\"removable\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keyup)=\"keyword$.next($event)\"\n (focus)=\"focus($event)\"\n (blur)=\"blur()\"\n name=\"keyword\"\n [matAutocomplete]=\"autocompleteSearch\"\n [matChipInputFor]=\"searchList\">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch=\"matAutocomplete\"\n class=\"fs-account-picker-autocomplete\"\n (optionSelected)=\"onSelect($event)\"\n (closed)=\"closed()\"\n autoActiveFirstOption=\"true\">\n\n <mat-option *ngFor=\"let item of searchData\" [value]=\"item\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf=\"noResults\" disabled class=\"no-results\">\n No results found\n </mat-option>\n\n <ng-container *ngIf=\"keyword && allowText\">\n\n <mat-option *ngIf=\"!textData.type\" disabled class=\"invalid-message\" (click)=\"searchInput.focus()\">\n <div>{{ keyword }}</div>\n <div class=\"message\">{{ invalidTextMessage || 'Invalid' }}</div>\n </mat-option>\n\n <mat-option *ngIf=\"textData.type===dataType.Text\" [value]=\"textData\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: textData }\">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item=\"item\" #itemTemplate>\n <ng-container *ngIf=\"item.type===dataType.Object\" class=\"item-template\">\n <img *ngIf=\"item.image\" [src]=\"item.image\">\n <span>\n <ng-template\n [ngTemplateOutlet]=\"objectTemplate\"\n [ngTemplateOutletContext]=\"{ object: item.data }\">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"item.type===dataType.Text\">\n {{item.data}}\n </ng-container>\n</ng-template>\n", | ||
template: "<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-chip\n *ngFor=\"let item of _model\"\n [selectable]=\"true\"\n [removable]=\"true\"\n (removed)=\"onRemove(item)\"\n class=\"fs-autocomplete-chip\"\n [ngClass]=\"{ imaged: item.image }\"\n [cdkDragDisabled]=\"!orderable\"\n [cdkDragData]=\"item\"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n <mat-icon *ngIf=\"removable\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keyup)=\"keyword$.next($event)\"\n (focus)=\"focus($event)\"\n (blur)=\"blur()\"\n [ngClass]=\"{'hidden': !inputVisible}\"\n name=\"keyword\"\n [matAutocomplete]=\"autocompleteSearch\"\n [matChipInputFor]=\"searchList\">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch=\"matAutocomplete\"\n class=\"fs-account-picker-autocomplete\"\n (optionSelected)=\"onSelect($event)\"\n (closed)=\"closed()\"\n autoActiveFirstOption=\"true\">\n\n <mat-option *ngFor=\"let item of searchData\" [value]=\"item\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf=\"noResults\" disabled class=\"no-results\">\n No results found\n </mat-option>\n\n <ng-container *ngIf=\"keyword && allowText\">\n\n <mat-option *ngIf=\"!textData.type\" disabled class=\"invalid-message\" (click)=\"searchInput.focus()\">\n <div>{{ keyword }}</div>\n <div class=\"message\">{{ invalidTextMessage || 'Invalid' }}</div>\n </mat-option>\n\n <mat-option *ngIf=\"textData.type===dataType.Text\" [value]=\"textData\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: textData }\">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item=\"item\" #itemTemplate>\n <ng-container *ngIf=\"item.type===dataType.Object\" class=\"item-template\">\n <img *ngIf=\"item.image\" [src]=\"item.image\">\n <span>\n <ng-template\n [ngTemplateOutlet]=\"objectTemplate\"\n [ngTemplateOutletContext]=\"{ object: item.data }\">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"item.type===dataType.Text\">\n {{item.data}}\n </ng-container>\n</ng-template>\n", | ||
providers: [FS_ACCOUNT_PICKER_ACCESSOR], | ||
changeDetection: ChangeDetectionStrategy.OnPush, | ||
styles: [":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"] | ||
styles: [":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}.hidden{display:none!important}.mat-chip-list{cursor:pointer}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"] | ||
}] } | ||
@@ -549,2 +582,3 @@ ]; | ||
dragStart: [{ type: HostListener, args: ['dragstart', ['$event'],] }], | ||
showSearchInput: [{ type: HostListener, args: ['click', [],] }], | ||
objectTemplate: [{ type: ContentChild, args: [FsAutocompleteObjectDirective, { read: TemplateRef, static: true },] }], | ||
@@ -607,2 +641,4 @@ searchInput: [{ type: ViewChild, args: ['searchInput', { static: true },] }], | ||
/** @type {?} */ | ||
FsAutocompleteChipsComponent.prototype.inputVisible; | ||
/** @type {?} */ | ||
FsAutocompleteChipsComponent.prototype._model; | ||
@@ -609,0 +645,0 @@ /** |
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":4,"metadata":{"FsAutocompleteChipsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatAutocompleteModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatChipsModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatInputModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatIconModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/cdk/drag-drop","name":"DragDropModule","line":24,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"}],"declarations":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵb"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"FsAutocompleteChipsModule"},"providers":[]}}}},"ɵa":{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":35,"character":11},"useExisting":{"__symbolic":"reference","name":"ɵb"},"multi":true},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":40,"character":1},"arguments":[{"selector":"fs-autocomplete-chips","providers":[{"__symbolic":"reference","name":"ɵa"}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":45,"character":19},"member":"OnPush"},"template":"<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-chip\n *ngFor=\"let item of _model\"\n [selectable]=\"true\"\n [removable]=\"true\"\n (removed)=\"onRemove(item)\"\n class=\"fs-autocomplete-chip\"\n [ngClass]=\"{ imaged: item.image }\"\n [cdkDragDisabled]=\"!orderable\"\n [cdkDragData]=\"item\"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n <mat-icon *ngIf=\"removable\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keyup)=\"keyword$.next($event)\"\n (focus)=\"focus($event)\"\n (blur)=\"blur()\"\n name=\"keyword\"\n [matAutocomplete]=\"autocompleteSearch\"\n [matChipInputFor]=\"searchList\">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch=\"matAutocomplete\"\n class=\"fs-account-picker-autocomplete\"\n (optionSelected)=\"onSelect($event)\"\n (closed)=\"closed()\"\n autoActiveFirstOption=\"true\">\n\n <mat-option *ngFor=\"let item of searchData\" [value]=\"item\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf=\"noResults\" disabled class=\"no-results\">\n No results found\n </mat-option>\n\n <ng-container *ngIf=\"keyword && allowText\">\n\n <mat-option *ngIf=\"!textData.type\" disabled class=\"invalid-message\" (click)=\"searchInput.focus()\">\n <div>{{ keyword }}</div>\n <div class=\"message\">{{ invalidTextMessage || 'Invalid' }}</div>\n </mat-option>\n\n <mat-option *ngIf=\"textData.type===dataType.Text\" [value]=\"textData\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: textData }\">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item=\"item\" #itemTemplate>\n <ng-container *ngIf=\"item.type===dataType.Object\" class=\"item-template\">\n <img *ngIf=\"item.image\" [src]=\"item.image\">\n <span>\n <ng-template\n [ngTemplateOutlet]=\"objectTemplate\"\n [ngTemplateOutletContext]=\"{ object: item.data }\">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"item.type===dataType.Text\">\n {{item.data}}\n </ng-container>\n</ng-template>\n","styles":[":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"]}]}],"members":{"fetch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"imageProperty":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"allowText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"allowObject":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"delay":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"validateText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"invalidTextMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"removable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}}]}],"orderable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"limit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"fetchOnFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"compareWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"selected":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":67,"character":3}}]}],"removed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":68,"character":3}}]}],"reordered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":69,"character":3}}]}],"formWrapper":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":71,"character":3},"arguments":["class.fs-form-wrapper"]}]}],"dragStart":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":87,"character":3},"arguments":["dragstart",["$event"]]}]}],"objectTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":92,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵc"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":92,"character":55},"static":true}]}]}],"searchInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":95,"character":3},"arguments":["searchInput",{"static":true}]}]}],"autocompleteSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":96,"character":3},"arguments":["autocompleteSearch",{"static":true}]}]}],"autocompleteTrigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":97,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material","name":"MatAutocompleteTrigger","line":97,"character":13},{"static":true}]}]}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":107,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"drop":[{"__symbolic":"method"}],"_validateText":[{"__symbolic":"method"}],"addText":[{"__symbolic":"method"}],"addObject":[{"__symbolic":"method"}],"blur":[{"__symbolic":"method"}],"closed":[{"__symbolic":"method"}],"textKeyword":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"objectKeyword":[{"__symbolic":"method"}],"createItem":[{"__symbolic":"method"}],"onSelect":[{"__symbolic":"method"}],"clearInput":[{"__symbolic":"method"}],"onRemove":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"updateModel":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":3,"character":1},"arguments":[{"selector":"[fsAutocompleteObject]"}]}],"members":{}}},"origins":{"FsAutocompleteChipsModule":"./app/fs-autocomplete-chips.module","ɵa":"./app/components/autocomplete-chips/autocomplete-chips.component","ɵb":"./app/components/autocomplete-chips/autocomplete-chips.component","ɵc":"./app/directives/autocomplete-object/autocomplete-object.directive"},"importAs":"@firestitch/autocomplete-chips"} | ||
{"__symbolic":"module","version":4,"metadata":{"FsAutocompleteChipsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatAutocompleteModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatChipsModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatInputModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatIconModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/cdk/drag-drop","name":"DragDropModule","line":24,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"}],"declarations":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵb"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"FsAutocompleteChipsModule"},"providers":[]}}}},"ɵa":{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":35,"character":11},"useExisting":{"__symbolic":"reference","name":"ɵb"},"multi":true},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":40,"character":1},"arguments":[{"selector":"fs-autocomplete-chips","providers":[{"__symbolic":"reference","name":"ɵa"}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":45,"character":19},"member":"OnPush"},"template":"<mat-form-field>\n <mat-chip-list\n #searchList\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\">\n <mat-chip\n *ngFor=\"let item of _model\"\n [selectable]=\"true\"\n [removable]=\"true\"\n (removed)=\"onRemove(item)\"\n class=\"fs-autocomplete-chip\"\n [ngClass]=\"{ imaged: item.image }\"\n [cdkDragDisabled]=\"!orderable\"\n [cdkDragData]=\"item\"\n cdkDrag\n cdkDragHandle>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n <mat-icon *ngIf=\"removable\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n #searchInput\n #autocompleteInput\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keyup)=\"keyword$.next($event)\"\n (focus)=\"focus($event)\"\n (blur)=\"blur()\"\n [ngClass]=\"{'hidden': !inputVisible}\"\n name=\"keyword\"\n [matAutocomplete]=\"autocompleteSearch\"\n [matChipInputFor]=\"searchList\">\n </mat-chip-list>\n <mat-autocomplete\n #autocompleteSearch=\"matAutocomplete\"\n class=\"fs-account-picker-autocomplete\"\n (optionSelected)=\"onSelect($event)\"\n (closed)=\"closed()\"\n autoActiveFirstOption=\"true\">\n\n <mat-option *ngFor=\"let item of searchData\" [value]=\"item\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item }\">\n </ng-container>\n </mat-option>\n\n\n <mat-option *ngIf=\"noResults\" disabled class=\"no-results\">\n No results found\n </mat-option>\n\n <ng-container *ngIf=\"keyword && allowText\">\n\n <mat-option *ngIf=\"!textData.type\" disabled class=\"invalid-message\" (click)=\"searchInput.focus()\">\n <div>{{ keyword }}</div>\n <div class=\"message\">{{ invalidTextMessage || 'Invalid' }}</div>\n </mat-option>\n\n <mat-option *ngIf=\"textData.type===dataType.Text\" [value]=\"textData\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: textData }\">\n </ng-container>\n </mat-option>\n </ng-container>\n\n </mat-autocomplete>\n</mat-form-field>\n\n<ng-template let-item=\"item\" #itemTemplate>\n <ng-container *ngIf=\"item.type===dataType.Object\" class=\"item-template\">\n <img *ngIf=\"item.image\" [src]=\"item.image\">\n <span>\n <ng-template\n [ngTemplateOutlet]=\"objectTemplate\"\n [ngTemplateOutletContext]=\"{ object: item.data }\">\n </ng-template>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"item.type===dataType.Text\">\n {{item.data}}\n </ng-container>\n</ng-template>\n","styles":[":host mat-form-field{width:100%}:host .item-template img{margin-left:-12px}.hidden{display:none!important}.mat-chip-list{cursor:pointer}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip{padding-right:3px}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip.imaged{padding-left:0}::ng-deep .fs-autocomplete-chip.mat-chip.mat-standard-chip .mat-chip-remove{color:#474747;opacity:1;width:24px;height:24px;font-size:24px}::ng-deep .fs-account-picker-autocomplete .mat-option-text{align-items:center;display:inline-flex}::ng-deep .fs-account-picker-autocomplete .invalid-message .mat-option-text{line-height:normal;flex-direction:column;align-items:start;font-size:80%}::ng-deep .fs-account-picker-autocomplete .item-template,:host .item-template{display:flex;flex-direction:row;align-items:center}.fs-autocomplete-chip.mat-chip.mat-standard-chip img,::ng-deep .fs-account-picker-autocomplete img{width:32px;height:32px;-o-object-fit:cover;object-fit:cover;background-repeat:no-repeat;background-size:cover;background-position:50% 50%;margin-right:10px;display:flex;border-radius:50%}.no-results{font-size:80%}"]}]}],"members":{"fetch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"imageProperty":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"allowText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"allowObject":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"delay":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"validateText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"invalidTextMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":57,"character":3}}]}],"removable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}}]}],"orderable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"limit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"fetchOnFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"compareWith":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"selected":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":67,"character":3}}]}],"removed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":68,"character":3}}]}],"reordered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":69,"character":3}}]}],"formWrapper":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":71,"character":3},"arguments":["class.fs-form-wrapper"]}]}],"dragStart":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":88,"character":3},"arguments":["dragstart",["$event"]]}]}],"showSearchInput":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":93,"character":3},"arguments":["click",[]]}]}],"objectTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":103,"character":3},"arguments":[{"__symbolic":"reference","name":"ɵc"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":103,"character":55},"static":true}]}]}],"searchInput":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":106,"character":3},"arguments":["searchInput",{"static":true}]}]}],"autocompleteSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":107,"character":3},"arguments":["autocompleteSearch",{"static":true}]}]}],"autocompleteTrigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":108,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material","name":"MatAutocompleteTrigger","line":108,"character":13},{"static":true}]}]}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":118,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"drop":[{"__symbolic":"method"}],"_validateText":[{"__symbolic":"method"}],"addText":[{"__symbolic":"method"}],"addObject":[{"__symbolic":"method"}],"blur":[{"__symbolic":"method"}],"closed":[{"__symbolic":"method"}],"textKeyword":[{"__symbolic":"method"}],"focus":[{"__symbolic":"method"}],"objectKeyword":[{"__symbolic":"method"}],"createItem":[{"__symbolic":"method"}],"onSelect":[{"__symbolic":"method"}],"clearInput":[{"__symbolic":"method"}],"onRemove":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"updateModel":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"checkSearchInputVisibility":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":3,"character":1},"arguments":[{"selector":"[fsAutocompleteObject]"}]}],"members":{}}},"origins":{"FsAutocompleteChipsModule":"./app/fs-autocomplete-chips.module","ɵa":"./app/components/autocomplete-chips/autocomplete-chips.component","ɵb":"./app/components/autocomplete-chips/autocomplete-chips.component","ɵc":"./app/directives/autocomplete-object/autocomplete-object.directive"},"importAs":"@firestitch/autocomplete-chips"} |
{ | ||
"name": "@firestitch/autocomplete-chips", | ||
"version": "8.0.0", | ||
"version": "8.0.1", | ||
"repository": { | ||
@@ -5,0 +5,0 @@ "type": "git", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
344926
3771