@bnsights/bbsf-controls 1.0.61 → 1.0.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,6 +24,7 @@ export class TagsInputComponent {
24
24
  this.markAllAsTouched = false;
25
25
  this.validationRules = [];
26
26
  this.validationRulesasync = [];
27
+ this.SearchResultHasItems = false;
27
28
  this.resetError = () => {
28
29
  this.controlValidationService.RemoveGlobalError();
29
30
  };
@@ -160,6 +161,9 @@ export class TagsInputComponent {
160
161
  }
161
162
  AddTag(event, key) {
162
163
  var _a, _b;
164
+ //Check if input is yab press
165
+ if (event.key === "Tab")
166
+ return;
163
167
  //Check if input is enter press
164
168
  if (this.IsNoMatch == true && event.key == "Enter" && this.options.AllowNewSelection && key.selected) {
165
169
  if (!(this.tags.length >= this.options.MaxNumberTags)) {
@@ -177,7 +181,7 @@ export class TagsInputComponent {
177
181
  }
178
182
  //Check if input is charachter
179
183
  else if (String.fromCharCode(event.keyCode).match(/(\w|\s)/g)) {
180
- if (this.IsNoMatch && key.selected && ((!this.options.AllowNewSelection) || event.key != "Enter")) {
184
+ if (this.IsNoMatch && !this.options.AllowNewSelection && key.selected) {
181
185
  this.TagsFormControl.setErrors({ "errorMassage": this.options.NoResultText });
182
186
  this.TagsFormControl.markAsTouched();
183
187
  }
@@ -221,13 +225,27 @@ export class TagsInputComponent {
221
225
  onNoOptionsMatch(event) {
222
226
  this.IsNoMatch = event;
223
227
  }
228
+ onTagsInputBlur(SearchKey) {
229
+ if (SearchKey.selected && this.options.AllowNewSelection && this.IsNoMatch && this.tags.length < this.options.MaxNumberTags) {
230
+ this.tags.push({ name: SearchKey.selected });
231
+ this.group.get(this.options.Name).setValue(this.tags);
232
+ this.group.get(this.options.Name).markAllAsTouched();
233
+ this.group.updateValueAndValidity();
234
+ if (this.group.get(this.options.Name).valid) {
235
+ SearchKey.selected = null;
236
+ return;
237
+ }
238
+ else
239
+ this.tags.pop();
240
+ }
241
+ }
224
242
  }
225
243
  TagsInputComponent.controlContainerstatic = null;
226
244
  TagsInputComponent.decorators = [
227
245
  { type: Component, args: [{
228
246
  // tslint:disable-next-line: component-selector
229
247
  selector: 'BBSF-TagsInput',
230
- template: "<div class=\"b-control b-tags-input\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <div class=\"form-group row\" [formGroup]=\"TagsFormGroup\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <b-tags-input id=\"typeahead-http\" type=\"text\" class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" [disabled]=\"options.IsDisabled\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"TagsFormControl.invalid && TagsFormControl.touched\" placeholder=\"{{options.Placeholder}}\"\r\n id=\"{{options.Name}}\" (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\" \r\n removeLastOnBackspace=\"{{options.RemoveLastOnBackspace}}\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\"\r\n [options]=\"searchFunctionFactory(SearchKey.selected)\" #SearchKey\r\n scrollableOptions=\"{{options.ScrollableOptions}}\" scrollableOptionsInView=\"{{options.MaxSearchResultsCount}}\"\r\n (keydown)=\"AddTag($event,SearchKey)\" [ViewMode]=\"options.TagInputMode\"\r\n maxTags=\"{{options.MaxNumberTags}}\" minLengthBeforeOptions=\"{{options.MinSearchLength}}\"\r\n [showDescription]=\"options.ShowDescription\" [defaultImageURL]=\"options.DefaultImgUrl\" name=\"tags\">\r\n </b-tags-input>\r\n\r\n <div class=\"text-danger Required-text\" *ngIf=\"(TagsFormControl.invalid && TagsFormControl.touched)\">\r\n {{getErrorValidation(TagsFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n",
248
+ template: "<div class=\"b-control b-tags-input\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <div class=\"form-group row\" [formGroup]=\"TagsFormGroup\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <b-tags-input id=\"typeahead-http\" type=\"text\" class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" [disabled]=\"options.IsDisabled\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"TagsFormControl.invalid && TagsFormControl.touched\" placeholder=\"{{options.Placeholder}}\"\r\n id=\"{{options.Name}}\" (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\"\r\n removeLastOnBackspace=\"{{options.RemoveLastOnBackspace}}\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\"\r\n [options]=\"searchFunctionFactory(SearchKey.selected)\" #SearchKey\r\n scrollableOptions=\"{{options.ScrollableOptions}}\" scrollableOptionsInView=\"{{options.MaxSearchResultsCount}}\"\r\n (keydown)=\"AddTag($event,SearchKey)\" [ViewMode]=\"options.TagInputMode\"\r\n maxTags=\"{{options.MaxNumberTags}}\" minLengthBeforeOptions=\"{{options.MinSearchLength}}\"\r\n [showDescription]=\"options.ShowDescription\" [defaultImageURL]=\"options.DefaultImgUrl\" name=\"tags\"\r\n (onBlurInput)=\"onTagsInputBlur(SearchKey)\">\r\n </b-tags-input>\r\n <div class=\"text-danger Required-text\" *ngIf=\"(TagsFormControl.invalid && TagsFormControl.touched)\">\r\n {{getErrorValidation(TagsFormControl.errors|keyvalue)}}\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
231
249
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}.flip_V{transform:scaleY(-1)}\n"]
232
250
  },] }
233
251
  ];
@@ -247,4 +265,4 @@ TagsInputComponent.propDecorators = {
247
265
  OnChange: [{ type: Output }],
248
266
  SearchKey: [{ type: ViewChild, args: ['SearchKey', { static: false },] }]
249
267
  };
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFnc0lucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9UYWdzSW5wdXQvVGFnc0lucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUQsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQzVLLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBbUIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEUsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoSSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFTOUUsTUFBTSxPQUFPLGtCQUFrQjtJQUU3Qiw0Q0FBNEM7SUFDNUMsWUFBb0IsSUFBZ0IsRUFBVSxjQUE4QixFQUFVLHFCQUE0QyxFQUFzQixnQkFBa0MsRUFBUyxvQkFBd0MsRUFDak8sY0FBOEIsRUFBVSx3QkFBa0QsRUFDMUYsY0FBOEI7UUFGcEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFTLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FB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LEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBSztRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDOztBQWhPTSx5Q0FBc0IsR0FBRyxJQUFJLENBQUM7O1lBUHRDLFNBQVMsU0FBQztnQkFDVCwrQ0FBK0M7Z0JBQy9DLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLCtrRkFBeUM7O2FBRTFDOzs7WUFYUSxVQUFVO1lBRlYsY0FBYztZQUlZLHFCQUFxQjtZQUxNLGdCQUFnQix1QkFrQnlELFFBQVE7WUFsQi9ELGtCQUFrQjtZQUtuQixjQUFjO1lBQXBGLHdCQUF3QjtZQUN4QixjQUFjOzs7b0JBa0JwQixLQUFLO3NCQUNMLEtBQUs7dUJBQ0wsTUFBTTt3QkFDTixTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRG9DaGVjaywgT3B0aW9uYWwsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgU2ltcGxlQ2hhbmdlLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgVGFnc0lucHV0T3B0aW9ucyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvVGFnc0lucHV0T3B0aW9ucyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBSZXF1ZXN0T3B0aW9uc01vZGVsLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdCQlNGLVRhZ3NJbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL1RhZ3NJbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vVGFnc0lucHV0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhZ3NJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgY29udHJvbFV0aWxpdHk6IENvbnRyb2xVdGlsaXR5LCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsIHB1YmxpYyBUYWdzSW5wdXRDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHJpdmF0ZSBVdGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5ncykge1xyXG4gICAgVGFnc0lucHV0Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IFRhZ3NJbnB1dE9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBWaWV3Q2hpbGQoJ1NlYXJjaEtleScsIHsgc3RhdGljOiBmYWxzZSB9KSBTZWFyY2hLZXk6IGFueTtcclxuXHJcbiAgLy8gVGFnSW5wdXRDb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgU2VsZWN0ZWRJZDogYW55W10gPSBbXVxyXG4gIHRhZ3MgPSBbXTtcclxuICBOZXdTZWxlY3Rpb25WYWxpZGF0aW9uS2V5OiBzdHJpbmcgPSBcIlwiO1xyXG4gIFRhZ3NGb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxuICBUYWdzRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gIElzTm9NYXRjaDogYW55XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgY2hhbmdlVmFsdWVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBzdGF0aWMgc2hvd0Vycm9yT2ZJbnB1dHMoZXJyb3JzOiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCBjb250cm9sQ29udGFpbmVyc3RhdGljID0gVGFnc0lucHV0Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWM7XHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sQ29udGFpbmVyc3RhdGljLmNvbnRyb2wgYXMgRm9ybUdyb3VwO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JzKSB7XHJcbiAgICAgIGlmIChlcnJvcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgZXJyb3JzW2tleV0pIHtcclxuICAgICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gZm9ybUdyb3VwLmdldChrZXkpIGFzIEZvcm1Db250cm9sO1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgXCJGbHVlbnRBcGlcIjogaXRlcmF0b3IgfSk7XHJcbiAgICAgICAgICBmb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2hhbmdlVmFsdWVTdWJzY3JpcHRpb24pXHJcbiAgICAgIHRoaXMuY2hhbmdlVmFsdWVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlXHJcblxyXG4gICAgdGhpcy5vcHRpb25zLkRhdGFzb3VyY2VJdGVtVGV4dCA9IHRoaXMub3B0aW9ucy5EYXRhc291cmNlSXRlbVRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIHRoaXMuVGFnc0Zvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pOztcclxuICAgIHRoaXMuVGFnc0Zvcm1Hcm91cC5hZGRDb250cm9sKFwidGFnc1wiLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sID0gdGhpcy5UYWdzRm9ybUdyb3VwLmNvbnRyb2xzW1widGFnc1wiXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCB0aGlzLlRhZ3NGb3JtQ29udHJvbCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuVmlld1R5cGUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5WaWV3VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuVmlld1R5cGU7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBcIlwiKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuTGFiZWxLZXkpO1xyXG5cclxuICAgIGlmICghdGhpcy5vcHRpb25zLk5vUmVzdWx0VGV4dClcclxuICAgICAgdGhpcy5vcHRpb25zLk5vUmVzdWx0VGV4dCA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5vSXRlbXNNYXRjaFwiKTtcclxuXHJcbiAgICAvLyB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgLy8gdGhpcy5UYWdJbnB1dENvbnRyb2wgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5OYW1lXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG5cclxuICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5WYWx1ZSAhPSB1bmRlZmluZWQgJiYgdGhpcy5vcHRpb25zLlZhbHVlICE9IFtdKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuVmFsdWUubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMub3B0aW9ucy5WYWx1ZVtpbmRleF07XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZElkLnB1c2goZWxlbWVudC5pZCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50YWdzID0gdGhpcy5vcHRpb25zLlZhbHVlXHJcbiAgICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5UYWdzSW5wdXRDb250cm9sSG9zdC5uZ1N1Ym1pdC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IHRydWVcclxuICAgIH0pO1xyXG4gICAgLy9DaGVjayBmb3IgY2hhbmdpbmcgaW4gdmFsdWVcclxuICAgIHRoaXMuY2hhbmdlVmFsdWVTdWJzY3JpcHRpb24gPSB0aGlzLlRhZ3NGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICB0aGlzLnRhZ3MgPSB0aGlzLlRhZ3NGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgdGhpcy5TZWxlY3RlZElkID0gdGhpcy50YWdzPy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkKS5tYXAoaXRlbSA9PiBpdGVtLmlkKTtcclxuICAgICAgaWYgKHRoaXMudGFncyA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5TZWFyY2hLZXkuc2VsZWN0ZWQgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMudGFncyA9IFtdO1xyXG4gICAgICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnNldFZhbHVlKFtdKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5BdHRyaWJ1dGVMaXN0ICE9IG51bGwpIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wdGlvbnMuTmFtZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSh0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdFtpbmRleF0uS2V5LCB0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdFtpbmRleF0udmFsdWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGxldCBpbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wdGlvbnMuTmFtZSkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKVswXVxyXG4gICAgaW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZShcImF1dG9jb21wbGV0ZVwiLCBcIm9mZlwiKVxyXG4gIH1cclxuXHJcblxyXG5cclxuICByZXNldEVycm9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuUmVtb3ZlR2xvYmFsRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKClcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KVxyXG4gIH1cclxuXHJcbiAgc2VhcmNoRnVuY3Rpb25GYWN0b3J5KFRleHQ6IGFueSk6IE9ic2VydmFibGU8b2JqZWN0PiB7XHJcbiAgICAvL0lmIG5vIHRleHQgdGhlbiByZXR1cm4gZW1wdHkgb2JzZXJ2YWJsZVxyXG4gICAgaWYgKCFUZXh0KVxyXG4gICAgICByZXR1cm4gRU1QVFk7XHJcblxyXG4gICAgbGV0IFVybCA9IGAke3RoaXMub3B0aW9ucy5BY3Rpb25VUkx9PyR7dGhpcy5vcHRpb25zLlF1ZXJ5UGFyYW1OYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudChUZXh0KX0mJHt0aGlzLm9wdGlvbnMuU2VsZWN0ZWRJdGVtc1BhcmFtTmFtZX09JHt0aGlzLlNlbGVjdGVkSWR9YFxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5FeHRyYUZpbHRlcnMpXHJcbiAgICAgIFVybCA9IFVybCArIGAmJHt0aGlzLm9wdGlvbnMuRXh0cmFGaWx0ZXJzfWBcclxuICAgIGxldCByZXF1ZXN0T3B0aW9uc01vZGVsID0gbmV3IFJlcXVlc3RPcHRpb25zTW9kZWwoKVxyXG4gICAgcmVxdWVzdE9wdGlvbnNNb2RlbC5kaXNhYmxlQmxvY2tVSSA9IHRydWU7XHJcbiAgICByZXF1ZXN0T3B0aW9uc01vZGVsLmRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuICAgIGxldCBNb2RlbCA9IHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmdldChVcmwsIG51bGwsIG51bGwsIHJlcXVlc3RPcHRpb25zTW9kZWwpXHJcbiAgICByZXR1cm4gTW9kZWwgYXMgYW55O1xyXG4gIH1cclxuXHJcbiAgQWRkVGFnKGV2ZW50LCBrZXkpIHtcclxuICAgIC8vQ2hlY2sgaWYgaW5wdXQgaXMgZW50ZXIgcHJlc3NcclxuICAgIGlmICh0aGlzLklzTm9NYXRjaCA9PSB0cnVlICYmIGV2ZW50LmtleSA9PSBcIkVudGVyXCIgJiYgdGhpcy5vcHRpb25zLkFsbG93TmV3U2VsZWN0aW9uICYmIGtleS5zZWxlY3RlZCkge1xyXG4gICAgICBpZiAoISh0aGlzLnRhZ3MubGVuZ3RoID49IHRoaXMub3B0aW9ucy5NYXhOdW1iZXJUYWdzKSkge1xyXG4gICAgICAgIHRoaXMudGFncy5wdXNoKHsgbmFtZToga2V5LnNlbGVjdGVkIH0pO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS5zZXRWYWx1ZSh0aGlzLnRhZ3MpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy5ncm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS52YWxpZCkge1xyXG4gICAgICAgICAga2V5LnNlbGVjdGVkID0gbnVsbDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy50YWdzLnBvcCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvL0NoZWNrIGlmIGlucHV0IGlzIGNoYXJhY2h0ZXJcclxuICAgIGVsc2UgaWYgKFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQua2V5Q29kZSkubWF0Y2goLyhcXHd8XFxzKS9nKSkge1xyXG4gICAgICBpZiAodGhpcy5Jc05vTWF0Y2ggJiYga2V5LnNlbGVjdGVkICYmICgoIXRoaXMub3B0aW9ucy5BbGxvd05ld1NlbGVjdGlvbikgfHwgZXZlbnQua2V5ICE9IFwiRW50ZXJcIikpIHtcclxuICAgICAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC5zZXRFcnJvcnMoeyBcImVycm9yTWFzc2FnZVwiOiB0aGlzLm9wdGlvbnMuTm9SZXN1bHRUZXh0IH0pO1xyXG4gICAgICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLklzTm9NYXRjaCA9PSBmYWxzZSAmJiB0aGlzLm9wdGlvbnMuQWxsb3dOZXdTZWxlY3Rpb24gPT0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vUmVtb3ZlIHVubWF0Y2hlZCBlcnJvciBpbmNhc2Ugb2YgZGVsZXRpbmcgc2VhcmNoIHZhbHVlXHJcbiAgICBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiQmFja3NwYWNlXCIgJiYga2V5LnNlbGVjdGVkPy5sZW5ndGggPD0gMSAmJiB0aGlzLlRhZ3NGb3JtQ29udHJvbC5oYXNFcnJvcignZXJyb3JNYXNzYWdlJykpIHtcclxuICAgICAgdGhpcy5UYWdzRm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgXCJlcnJvck1hc3NhZ2VcIjogbnVsbCB9KTtcclxuICAgICAgdGhpcy5UYWdzRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICBpZiAodGhpcy5TZWxlY3RlZElkPy5sZW5ndGggPT0gMCAmJiB0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCkge1xyXG4gICAgICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnNldEVycm9ycyh7IHJlcXVpcmVkOiBcIlwiIH0pO1xyXG4gICAgICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25UYWdzQ2hhbmdlZChyZXN1bHQpIHtcclxuICAgIC8vY29uc29sZS5sb2codGhpcy50YWdzKVxyXG4gICAgaWYgKHJlc3VsdFtcImNoYW5nZVwiXSA9PSBcImFkZFwiKSB7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRJZC5wdXNoKHJlc3VsdC50YWcuaWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHJlc3VsdFtcImNoYW5nZVwiXSA9PSBcInJlbW92ZVwiKSB7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRJZCA9IHRoaXMuU2VsZWN0ZWRJZC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT0gcmVzdWx0LnRhZy5pZCk7XHJcbiAgICAgIGlmICh0aGlzLlNlbGVjdGVkSWQubGVuZ3RoID09IDAgJiYgdGhpcy5vcHRpb25zLklzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnNldEVycm9ycyh7IHJlcXVpcmVkOiBcIlwiIH0pO1xyXG4gICAgICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC5pbnZhbGlkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuVGFnc0Zvcm1Db250cm9sLnZhbHVlLm1hcChmdW5jdGlvbiAoYSkgeyByZXR1cm4gYS5pZDsgfSk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLlBhdGNoUGF0aCAmJiB0aGlzLlRhZ3NGb3JtQ29udHJvbC52YWxpZCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsIHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uLCB0aGlzLm9wdGlvbnMuUGF0Y2hQYXRoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS5zZXRWYWx1ZSh0aGlzLnRhZ3MpO1xyXG4gICAgdGhpcy5UYWdzRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5ncm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLk9uQ2hhbmdlLmVtaXQob3JpZ2luYWxWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvbk5vT3B0aW9uc01hdGNoKGV2ZW50KSB7XHJcbiAgICB0aGlzLklzTm9NYXRjaCA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLlRhZ3NGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLlRhZ3NGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5UYWdzRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuVGFnc0Zvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgSXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuSXNWYWxpZCh0aGlzLlRhZ3NGb3JtQ29udHJvbClcclxuICB9XHJcbn1cclxuXHJcblxyXG4iXX0=
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFnc0lucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9UYWdzSW5wdXQvVGFnc0lucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUQsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQzVLLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBbUIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxLQUFLLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoSSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFTOUUsTUFBTSxPQUFPLGtCQUFrQjtJQUU3Qiw0Q0FBNEM7SUFDNUMsWUFBb0IsSUFBZ0IsRUFBVSxjQUE4QixFQUFVLHFCQUE0QyxFQUFzQixnQkFBa0MsRUFBUyxvQkFBd0MsRUFDak8sY0FBOEIsRUFBVSx3QkFBa0QsRUFDMUYsY0FBOEI7UUFGcEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFTLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FB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U0FBQztnQkFDVCwrQ0FBK0M7Z0JBQy9DLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLDRuRkFBeUM7O2FBRTFDOzs7WUFYUSxVQUFVO1lBRlYsY0FBYztZQUlZLHFCQUFxQjtZQUxNLGdCQUFnQix1QkFrQnlELFFBQVE7WUFsQi9ELGtCQUFrQjtZQUtuQixjQUFjO1lBQXBGLHdCQUF3QjtZQUN4QixjQUFjOzs7b0JBa0JwQixLQUFLO3NCQUNMLEtBQUs7dUJBQ0wsTUFBTTt3QkFDTixTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRG9DaGVjaywgT3B0aW9uYWwsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgU2ltcGxlQ2hhbmdlLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgVGFnc0lucHV0T3B0aW9ucyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvVGFnc0lucHV0T3B0aW9ucyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFJlcXVlc3RPcHRpb25zTW9kZWwsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgR2xvYmFsU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvR2xvYmFsU2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdCQlNGLVRhZ3NJbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL1RhZ3NJbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vVGFnc0lucHV0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhZ3NJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgY29udHJvbFV0aWxpdHk6IENvbnRyb2xVdGlsaXR5LCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsIHB1YmxpYyBUYWdzSW5wdXRDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHJpdmF0ZSBVdGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5ncykge1xyXG4gICAgVGFnc0lucHV0Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IFRhZ3NJbnB1dE9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBWaWV3Q2hpbGQoJ1NlYXJjaEtleScsIHsgc3RhdGljOiBmYWxzZSB9KSBTZWFyY2hLZXk6IGFueTtcclxuXHJcbiAgLy8gVGFnSW5wdXRDb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgU2VsZWN0ZWRJZDogYW55W10gPSBbXVxyXG4gIHRhZ3MgPSBbXTtcclxuICBOZXdTZWxlY3Rpb25WYWxpZGF0aW9uS2V5OiBzdHJpbmcgPSBcIlwiO1xyXG4gIFRhZ3NGb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxuICBUYWdzRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gIElzTm9NYXRjaDogYW55O1xyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIGNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgU2VhcmNoUmVzdWx0SGFzSXRlbXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGF0aWMgc2hvd0Vycm9yT2ZJbnB1dHMoZXJyb3JzOiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCBjb250cm9sQ29udGFpbmVyc3RhdGljID0gVGFnc0lucHV0Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWM7XHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sQ29udGFpbmVyc3RhdGljLmNvbnRyb2wgYXMgRm9ybUdyb3VwO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JzKSB7XHJcbiAgICAgIGlmIChlcnJvcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgZXJyb3JzW2tleV0pIHtcclxuICAgICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gZm9ybUdyb3VwLmdldChrZXkpIGFzIEZvcm1Db250cm9sO1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgXCJGbHVlbnRBcGlcIjogaXRlcmF0b3IgfSk7XHJcbiAgICAgICAgICBmb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2hhbmdlVmFsdWVTdWJzY3JpcHRpb24pXHJcbiAgICAgIHRoaXMuY2hhbmdlVmFsdWVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlXHJcblxyXG4gICAgdGhpcy5vcHRpb25zLkRhdGFzb3VyY2VJdGVtVGV4dCA9IHRoaXMub3B0aW9ucy5EYXRhc291cmNlSXRlbVRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIHRoaXMuVGFnc0Zvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pOztcclxuICAgIHRoaXMuVGFnc0Zvcm1Hcm91cC5hZGRDb250cm9sKFwidGFnc1wiLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sID0gdGhpcy5UYWdzRm9ybUdyb3VwLmNvbnRyb2xzW1widGFnc1wiXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCB0aGlzLlRhZ3NGb3JtQ29udHJvbCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuVmlld1R5cGUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5WaWV3VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuVmlld1R5cGU7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBcIlwiKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuTGFiZWxLZXkpO1xyXG5cclxuICAgIGlmICghdGhpcy5vcHRpb25zLk5vUmVzdWx0VGV4dClcclxuICAgICAgdGhpcy5vcHRpb25zLk5vUmVzdWx0VGV4dCA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5vSXRlbXNNYXRjaFwiKTtcclxuXHJcbiAgICAvLyB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgLy8gdGhpcy5UYWdJbnB1dENvbnRyb2wgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5OYW1lXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG5cclxuICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5WYWx1ZSAhPSB1bmRlZmluZWQgJiYgdGhpcy5vcHRpb25zLlZhbHVlICE9IFtdKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuVmFsdWUubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMub3B0aW9ucy5WYWx1ZVtpbmRleF07XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZElkLnB1c2goZWxlbWVudC5pZCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50YWdzID0gdGhpcy5vcHRpb25zLlZhbHVlXHJcbiAgICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5UYWdzSW5wdXRDb250cm9sSG9zdC5uZ1N1Ym1pdC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IHRydWVcclxuICAgIH0pO1xyXG4gICAgLy9DaGVjayBmb3IgY2hhbmdpbmcgaW4gdmFsdWVcclxuICAgIHRoaXMuY2hhbmdlVmFsdWVTdWJzY3JpcHRpb24gPSB0aGlzLlRhZ3NGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICB0aGlzLnRhZ3MgPSB0aGlzLlRhZ3NGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgdGhpcy5TZWxlY3RlZElkID0gdGhpcy50YWdzPy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkKS5tYXAoaXRlbSA9PiBpdGVtLmlkKTtcclxuICAgICAgaWYgKHRoaXMudGFncyA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5TZWFyY2hLZXkuc2VsZWN0ZWQgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMudGFncyA9IFtdO1xyXG4gICAgICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnNldFZhbHVlKFtdKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5BdHRyaWJ1dGVMaXN0ICE9IG51bGwpIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wdGlvbnMuTmFtZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSh0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdFtpbmRleF0uS2V5LCB0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdFtpbmRleF0udmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5vcHRpb25zLk5hbWUpLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaW5wdXRcIilbMF1cclxuICAgIGlucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJhdXRvY29tcGxldGVcIiwgXCJvZmZcIilcclxuICB9XHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5SZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgY29weUlucHV0TWVzc2FnZShpbnB1dEVsZW1lbnQpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQ29weUlucHV0TWVzc2FnZShpbnB1dEVsZW1lbnQpXHJcbiAgfVxyXG5cclxuICBzZWFyY2hGdW5jdGlvbkZhY3RvcnkoVGV4dDogYW55KTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcclxuICAgIC8vSWYgbm8gdGV4dCB0aGVuIHJldHVybiBlbXB0eSBvYnNlcnZhYmxlXHJcbiAgICBpZiAoIVRleHQpXHJcbiAgICAgIHJldHVybiBFTVBUWTtcclxuXHJcbiAgICBsZXQgVXJsID0gYCR7dGhpcy5vcHRpb25zLkFjdGlvblVSTH0/JHt0aGlzLm9wdGlvbnMuUXVlcnlQYXJhbU5hbWV9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KFRleHQpfSYke3RoaXMub3B0aW9ucy5TZWxlY3RlZEl0ZW1zUGFyYW1OYW1lfT0ke3RoaXMuU2VsZWN0ZWRJZH1gXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkV4dHJhRmlsdGVycylcclxuICAgICAgVXJsID0gVXJsICsgYCYke3RoaXMub3B0aW9ucy5FeHRyYUZpbHRlcnN9YFxyXG4gICAgbGV0IHJlcXVlc3RPcHRpb25zTW9kZWwgPSBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpXHJcbiAgICByZXF1ZXN0T3B0aW9uc01vZGVsLmRpc2FibGVCbG9ja1VJID0gdHJ1ZTtcclxuICAgIHJlcXVlc3RPcHRpb25zTW9kZWwuZGlzYWJsZVN1Y2Nlc3NOb3RpZmljYXRpb24gPSB0cnVlO1xyXG4gICAgbGV0IE1vZGVsID0gdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZ2V0KFVybCwgbnVsbCwgbnVsbCwgcmVxdWVzdE9wdGlvbnNNb2RlbCk7XHJcbiAgICByZXR1cm4gTW9kZWwgYXMgYW55O1xyXG4gIH1cclxuXHJcbiAgQWRkVGFnKGV2ZW50LCBrZXkpIHtcclxuICAgIC8vQ2hlY2sgaWYgaW5wdXQgaXMgeWFiIHByZXNzXHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSBcIlRhYlwiKVxyXG4gICAgICByZXR1cm47XHJcbiAgICAvL0NoZWNrIGlmIGlucHV0IGlzIGVudGVyIHByZXNzXHJcbiAgICBpZiAodGhpcy5Jc05vTWF0Y2ggPT0gdHJ1ZSAmJiBldmVudC5rZXkgPT0gXCJFbnRlclwiICYmIHRoaXMub3B0aW9ucy5BbGxvd05ld1NlbGVjdGlvbiAmJiBrZXkuc2VsZWN0ZWQpIHtcclxuICAgICAgaWYgKCEodGhpcy50YWdzLmxlbmd0aCA+PSB0aGlzLm9wdGlvbnMuTWF4TnVtYmVyVGFncykpIHtcclxuICAgICAgICB0aGlzLnRhZ3MucHVzaCh7IG5hbWU6IGtleS5zZWxlY3RlZCB9KTtcclxuICAgICAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkuc2V0VmFsdWUodGhpcy50YWdzKTtcclxuICAgICAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkudmFsaWQpIHtcclxuICAgICAgICAgIGtleS5zZWxlY3RlZCA9IG51bGw7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMudGFncy5wb3AoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy9DaGVjayBpZiBpbnB1dCBpcyBjaGFyYWNodGVyXHJcbiAgICBlbHNlIGlmIChTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmtleUNvZGUpLm1hdGNoKC8oXFx3fFxccykvZykpIHtcclxuICAgICAgaWYgKHRoaXMuSXNOb01hdGNoICYmICF0aGlzLm9wdGlvbnMuQWxsb3dOZXdTZWxlY3Rpb24gJiYga2V5LnNlbGVjdGVkKSB7XHJcbiAgICAgICAgdGhpcy5UYWdzRm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgXCJlcnJvck1hc3NhZ2VcIjogdGhpcy5vcHRpb25zLk5vUmVzdWx0VGV4dCB9KTtcclxuICAgICAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5Jc05vTWF0Y2ggPT0gZmFsc2UgJiYgdGhpcy5vcHRpb25zLkFsbG93TmV3U2VsZWN0aW9uID09IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy5UYWdzRm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgdGhpcy5UYWdzRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvL1JlbW92ZSB1bm1hdGNoZWQgZXJyb3IgaW5jYXNlIG9mIGRlbGV0aW5nIHNlYXJjaCB2YWx1ZVxyXG4gICAgZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkJhY2tzcGFjZVwiICYmIGtleS5zZWxlY3RlZD8ubGVuZ3RoIDw9IDEgJiYgdGhpcy5UYWdzRm9ybUNvbnRyb2wuaGFzRXJyb3IoJ2Vycm9yTWFzc2FnZScpKSB7XHJcbiAgICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnNldEVycm9ycyh7IFwiZXJyb3JNYXNzYWdlXCI6IG51bGwgfSk7XHJcbiAgICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgaWYgKHRoaXMuU2VsZWN0ZWRJZD8ubGVuZ3RoID09IDAgJiYgdGhpcy5vcHRpb25zLklzUmVxdWlyZWQpIHtcclxuICAgICAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZDogXCJcIiB9KTtcclxuICAgICAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVGFnc0NoYW5nZWQocmVzdWx0KSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKHRoaXMudGFncylcclxuICAgIGlmIChyZXN1bHRbXCJjaGFuZ2VcIl0gPT0gXCJhZGRcIikge1xyXG4gICAgICB0aGlzLlNlbGVjdGVkSWQucHVzaChyZXN1bHQudGFnLmlkKTtcclxuICAgIH1cclxuICAgIGlmIChyZXN1bHRbXCJjaGFuZ2VcIl0gPT0gXCJyZW1vdmVcIikge1xyXG4gICAgICB0aGlzLlNlbGVjdGVkSWQgPSB0aGlzLlNlbGVjdGVkSWQuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9IHJlc3VsdC50YWcuaWQpO1xyXG4gICAgICBpZiAodGhpcy5TZWxlY3RlZElkLmxlbmd0aCA9PSAwICYmIHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZDogXCJcIiB9KTtcclxuICAgICAgICB0aGlzLlRhZ3NGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy5UYWdzRm9ybUNvbnRyb2wuaW52YWxpZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLlRhZ3NGb3JtQ29udHJvbC52YWx1ZS5tYXAoZnVuY3Rpb24gKGEpIHsgcmV0dXJuIGEuaWQ7IH0pO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5UYWdzRm9ybUNvbnRyb2wudmFsaWQpIHtcclxuICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXRjaENvbnRyb2xWYWx1ZShvcmlnaW5hbFZhbHVlLCB0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiwgdGhpcy5vcHRpb25zLlBhdGNoUGF0aCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkuc2V0VmFsdWUodGhpcy50YWdzKTtcclxuICAgIHRoaXMuVGFnc0Zvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuZ3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5PbkNoYW5nZS5lbWl0KG9yaWdpbmFsVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25Ob09wdGlvbnNNYXRjaChldmVudCkge1xyXG4gICAgdGhpcy5Jc05vTWF0Y2ggPSBldmVudDtcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5UYWdzRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5UYWdzRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcblxyXG4gIFJlbW92ZUN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVDdXN0b21WYWxpZGF0aW9uKHRoaXMuVGFnc0Zvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLlRhZ3NGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIElzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LklzVmFsaWQodGhpcy5UYWdzRm9ybUNvbnRyb2wpXHJcbiAgfVxyXG5cclxuICBvblRhZ3NJbnB1dEJsdXIoU2VhcmNoS2V5KSB7XHJcbiAgICBpZiAoU2VhcmNoS2V5LnNlbGVjdGVkICYmIHRoaXMub3B0aW9ucy5BbGxvd05ld1NlbGVjdGlvbiAmJiB0aGlzLklzTm9NYXRjaCAmJiB0aGlzLnRhZ3MubGVuZ3RoIDwgdGhpcy5vcHRpb25zLk1heE51bWJlclRhZ3MpIHtcclxuICAgICAgdGhpcy50YWdzLnB1c2goeyBuYW1lOiBTZWFyY2hLZXkuc2VsZWN0ZWQgfSk7XHJcbiAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS5zZXRWYWx1ZSh0aGlzLnRhZ3MpO1xyXG4gICAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgaWYgKHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS52YWxpZCkge1xyXG4gICAgICAgIFNlYXJjaEtleS5zZWxlY3RlZCA9IG51bGw7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnRhZ3MucG9wKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -3531,6 +3531,16 @@ class ProfileImageUploaderComponent {
3531
3531
  if (this.options.ImageUploadAcceptsTypes != null) {
3532
3532
  this.options.ImageUploadAcceptsTypes;
3533
3533
  }
3534
+ if (this.options.Value != null) {
3535
+ let imgURL = this.options.Value["fileURL"];
3536
+ if (imgURL != "" && imgURL != undefined && imgURL != null)
3537
+ this.ImageSource = imgURL;
3538
+ let element = this.options.Value;
3539
+ this.FileLikeObject = new FileLikeObject({
3540
+ name: element.FileName,
3541
+ });
3542
+ this.uploader.addToQueue([this.FileLikeObject]);
3543
+ }
3534
3544
  if (this.options.LabelKey != null && this.options.LabelKey != "")
3535
3545
  this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
3536
3546
  if (this.options.ImageUploadAcceptsTypes != null && this.options.ImageUploadAcceptsTypes.length > 0) {
@@ -3659,9 +3669,6 @@ class ProfileImageUploaderComponent {
3659
3669
  }
3660
3670
  cropImage() {
3661
3671
  this.ProfilePictureDTO.FileName = this.EventFile.name;
3662
- this.ProfilePictureDTO.Original = this.EventFile.name + "Original";
3663
- this.ProfilePictureDTO.MediumPicture = this.EventFile.name + "MediumPicture";
3664
- this.ProfilePictureDTO.SmallPicture = this.EventFile.name + "SmallPicture";
3665
3672
  let Cropper = this.angularCropper.cropper;
3666
3673
  let profilePicturCropper = Cropper.getCroppedCanvas({
3667
3674
  width: 400,
@@ -3717,6 +3724,7 @@ class ProfileImageUploaderComponent {
3717
3724
  FileSizeInMB: ((BlobFile.size / 1000) / 1000),
3718
3725
  };
3719
3726
  this.ProfilePictureDTO.profilePicture = FileObject;
3727
+ this.ProfilePictureDTO.MediumPicture = FileObject.FileName + "," + FileObject.FileBase64;
3720
3728
  this.files.push(BlobFile);
3721
3729
  break;
3722
3730
  case "AvatarPictureCropper":
@@ -3727,6 +3735,7 @@ class ProfileImageUploaderComponent {
3727
3735
  FileSizeInMB: ((BlobFile.size / 1000) / 1000),
3728
3736
  };
3729
3737
  this.ProfilePictureDTO.AvatarPicture = FileObject;
3738
+ this.ProfilePictureDTO.SmallPicture = FileObject.FileName + "," + FileObject.FileBase64;
3730
3739
  break;
3731
3740
  case "OriginalPictureCropper":
3732
3741
  FileObject = {
@@ -3736,6 +3745,7 @@ class ProfileImageUploaderComponent {
3736
3745
  FileSizeInMB: ((BlobFile.size / 1000) / 1000),
3737
3746
  };
3738
3747
  this.ProfilePictureDTO.OriginalPicture = FileObject;
3748
+ this.ProfilePictureDTO.Original = FileObject.FileName + "," + FileObject.FileBase64;
3739
3749
  this.group.get(this.options.Name).setValue(this.ProfilePictureDTO);
3740
3750
  this.OnChange.emit(this.group.get(this.options.Name).value);
3741
3751
  break;
@@ -4045,6 +4055,7 @@ class TagsInputComponent {
4045
4055
  this.markAllAsTouched = false;
4046
4056
  this.validationRules = [];
4047
4057
  this.validationRulesasync = [];
4058
+ this.SearchResultHasItems = false;
4048
4059
  this.resetError = () => {
4049
4060
  this.controlValidationService.RemoveGlobalError();
4050
4061
  };
@@ -4181,6 +4192,9 @@ class TagsInputComponent {
4181
4192
  }
4182
4193
  AddTag(event, key) {
4183
4194
  var _a, _b;
4195
+ //Check if input is yab press
4196
+ if (event.key === "Tab")
4197
+ return;
4184
4198
  //Check if input is enter press
4185
4199
  if (this.IsNoMatch == true && event.key == "Enter" && this.options.AllowNewSelection && key.selected) {
4186
4200
  if (!(this.tags.length >= this.options.MaxNumberTags)) {
@@ -4198,7 +4212,7 @@ class TagsInputComponent {
4198
4212
  }
4199
4213
  //Check if input is charachter
4200
4214
  else if (String.fromCharCode(event.keyCode).match(/(\w|\s)/g)) {
4201
- if (this.IsNoMatch && key.selected && ((!this.options.AllowNewSelection) || event.key != "Enter")) {
4215
+ if (this.IsNoMatch && !this.options.AllowNewSelection && key.selected) {
4202
4216
  this.TagsFormControl.setErrors({ "errorMassage": this.options.NoResultText });
4203
4217
  this.TagsFormControl.markAsTouched();
4204
4218
  }
@@ -4242,13 +4256,27 @@ class TagsInputComponent {
4242
4256
  onNoOptionsMatch(event) {
4243
4257
  this.IsNoMatch = event;
4244
4258
  }
4259
+ onTagsInputBlur(SearchKey) {
4260
+ if (SearchKey.selected && this.options.AllowNewSelection && this.IsNoMatch && this.tags.length < this.options.MaxNumberTags) {
4261
+ this.tags.push({ name: SearchKey.selected });
4262
+ this.group.get(this.options.Name).setValue(this.tags);
4263
+ this.group.get(this.options.Name).markAllAsTouched();
4264
+ this.group.updateValueAndValidity();
4265
+ if (this.group.get(this.options.Name).valid) {
4266
+ SearchKey.selected = null;
4267
+ return;
4268
+ }
4269
+ else
4270
+ this.tags.pop();
4271
+ }
4272
+ }
4245
4273
  }
4246
4274
  TagsInputComponent.controlContainerstatic = null;
4247
4275
  TagsInputComponent.decorators = [
4248
4276
  { type: Component, args: [{
4249
4277
  // tslint:disable-next-line: component-selector
4250
4278
  selector: 'BBSF-TagsInput',
4251
- template: "<div class=\"b-control b-tags-input\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <div class=\"form-group row\" [formGroup]=\"TagsFormGroup\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <b-tags-input id=\"typeahead-http\" type=\"text\" class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" [disabled]=\"options.IsDisabled\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"TagsFormControl.invalid && TagsFormControl.touched\" placeholder=\"{{options.Placeholder}}\"\r\n id=\"{{options.Name}}\" (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\" \r\n removeLastOnBackspace=\"{{options.RemoveLastOnBackspace}}\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\"\r\n [options]=\"searchFunctionFactory(SearchKey.selected)\" #SearchKey\r\n scrollableOptions=\"{{options.ScrollableOptions}}\" scrollableOptionsInView=\"{{options.MaxSearchResultsCount}}\"\r\n (keydown)=\"AddTag($event,SearchKey)\" [ViewMode]=\"options.TagInputMode\"\r\n maxTags=\"{{options.MaxNumberTags}}\" minLengthBeforeOptions=\"{{options.MinSearchLength}}\"\r\n [showDescription]=\"options.ShowDescription\" [defaultImageURL]=\"options.DefaultImgUrl\" name=\"tags\">\r\n </b-tags-input>\r\n\r\n <div class=\"text-danger Required-text\" *ngIf=\"(TagsFormControl.invalid && TagsFormControl.touched)\">\r\n {{getErrorValidation(TagsFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n",
4279
+ template: "<div class=\"b-control b-tags-input\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <div class=\"form-group row\" [formGroup]=\"TagsFormGroup\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <b-tags-input id=\"typeahead-http\" type=\"text\" class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" [disabled]=\"options.IsDisabled\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"TagsFormControl.invalid && TagsFormControl.touched\" placeholder=\"{{options.Placeholder}}\"\r\n id=\"{{options.Name}}\" (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\"\r\n removeLastOnBackspace=\"{{options.RemoveLastOnBackspace}}\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\"\r\n [options]=\"searchFunctionFactory(SearchKey.selected)\" #SearchKey\r\n scrollableOptions=\"{{options.ScrollableOptions}}\" scrollableOptionsInView=\"{{options.MaxSearchResultsCount}}\"\r\n (keydown)=\"AddTag($event,SearchKey)\" [ViewMode]=\"options.TagInputMode\"\r\n maxTags=\"{{options.MaxNumberTags}}\" minLengthBeforeOptions=\"{{options.MinSearchLength}}\"\r\n [showDescription]=\"options.ShowDescription\" [defaultImageURL]=\"options.DefaultImgUrl\" name=\"tags\"\r\n (onBlurInput)=\"onTagsInputBlur(SearchKey)\">\r\n </b-tags-input>\r\n <div class=\"text-danger Required-text\" *ngIf=\"(TagsFormControl.invalid && TagsFormControl.touched)\">\r\n {{getErrorValidation(TagsFormControl.errors|keyvalue)}}\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
4252
4280
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}.flip_V{transform:scaleY(-1)}\n"]
4253
4281
  },] }
4254
4282
  ];
@@ -5614,10 +5642,13 @@ class FormComponent {
5614
5642
  let submitModel = this.options.GetModelFunction();
5615
5643
  let submittedService = this.options.ServiceSubmitFunction.apply(null, submitModel);
5616
5644
  submittedService.subscribe((result) => {
5617
- let modal = document.getElementsByClassName("modal show");
5618
- if (modal.length > 0) {
5619
- let closeButton = modal[0].querySelector("[data-dismiss='modal']");
5620
- closeButton.click();
5645
+ if (!this.options.DisableModalDismiss) {
5646
+ //Dismiss closest modal of the form only
5647
+ let modal = document.getElementById(this.fromName).closest('.modal.show');
5648
+ if (modal) {
5649
+ let closeButton = modal.querySelector("[data-dismiss='modal']");
5650
+ closeButton.click();
5651
+ }
5621
5652
  }
5622
5653
  if (!this.options.DisableSuccessNotification)
5623
5654
  this.utilityService.notifySuccessMessage();
@@ -7076,7 +7107,6 @@ src="{{(tag.imageURL?tag.imageURL:defaultImageURL)}}" />
7076
7107
 
7077
7108
  <ng-template #withTypeahead>
7078
7109
  <span [ngSwitch]="ViewMode">
7079
-
7080
7110
  <span *ngSwitchCase="tagInputViewEnum.WithImage">
7081
7111
  <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
7082
7112
  name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
@@ -7085,6 +7115,7 @@ src="{{(tag.imageURL?tag.imageURL:defaultImageURL)}}" />
7085
7115
  [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
7086
7116
  [typeaheadItemTemplate]="itemTemplateWithImage" [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
7087
7117
  [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
7118
+ (blur)="onBlur()" autocomplete="off"
7088
7119
  #tagInput />
7089
7120
  </span>
7090
7121
 
@@ -7097,6 +7128,7 @@ src="{{(tag.imageURL?tag.imageURL:defaultImageURL)}}" />
7097
7128
  [typeaheadItemTemplate]="itemTemplateWithoutImage"
7098
7129
  [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
7099
7130
  [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
7131
+ (blur)="onBlur()" autocomplete="off"
7100
7132
  #tagInput />
7101
7133
  </span>
7102
7134
 
@@ -7109,6 +7141,7 @@ src="{{(tag.imageURL?tag.imageURL:defaultImageURL)}}" />
7109
7141
  [typeaheadItemTemplate]="itemTemplateWithoutInitial"
7110
7142
  [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
7111
7143
  [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
7144
+ (blur)="onBlur()" autocomplete="off"
7112
7145
  #tagInput />
7113
7146
  </span>
7114
7147
 
@@ -7121,6 +7154,7 @@ src="{{(tag.imageURL?tag.imageURL:defaultImageURL)}}" />
7121
7154
  [typeaheadItemTemplate]="itemTemplateWithoutImage"
7122
7155
  [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
7123
7156
  [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
7157
+ (blur)="onBlur()" autocomplete="off"
7124
7158
  #tagInput />
7125
7159
  </span>
7126
7160
 
@@ -7223,6 +7257,13 @@ class BTagsInputComponent {
7223
7257
  this.onTagsChanged = new EventEmitter();
7224
7258
  this.onMaxTagsReached = new EventEmitter();
7225
7259
  this.onNoOptionsMatch = new EventEmitter();
7260
+ this.onBlurInput = new EventEmitter();
7261
+ // (keydown.Tab) = "onTab($event)"
7262
+ //onTab(event) {
7263
+ // this.onTabInput.emit();
7264
+ // event.preventDefault();
7265
+ // event.stopPropagation();
7266
+ //}
7226
7267
  }
7227
7268
  getPlaceholder() {
7228
7269
  if (this.tags && this.tags.length > 0) {
@@ -7310,7 +7351,6 @@ class BTagsInputComponent {
7310
7351
  this.onTouchedCallback = fn;
7311
7352
  }
7312
7353
  calculateInitials(name) {
7313
- debugger;
7314
7354
  var fullName = name.split(' ');
7315
7355
  var initials = "";
7316
7356
  if (fullName.length > 1)
@@ -7319,6 +7359,9 @@ class BTagsInputComponent {
7319
7359
  initials = fullName.shift().charAt(0);
7320
7360
  return initials.toUpperCase();
7321
7361
  }
7362
+ onBlur() {
7363
+ this.onBlurInput.emit();
7364
+ }
7322
7365
  }
7323
7366
  BTagsInputComponent.decorators = [
7324
7367
  { type: Component, args: [{
@@ -7343,7 +7386,8 @@ BTagsInputComponent.propDecorators = {
7343
7386
  scrollableOptionsInView: [{ type: Input }],
7344
7387
  onTagsChanged: [{ type: Output }],
7345
7388
  onMaxTagsReached: [{ type: Output }],
7346
- onNoOptionsMatch: [{ type: Output }]
7389
+ onNoOptionsMatch: [{ type: Output }],
7390
+ onBlurInput: [{ type: Output }]
7347
7391
  };
7348
7392
 
7349
7393
  let options;
@@ -7787,6 +7831,8 @@ class FormOptions {
7787
7831
  this.DisableErrorNotification = false;
7788
7832
  //If ="true" disable startblockui before submission
7789
7833
  this.DisableBlockUI = false;
7834
+ //If ="true" disable modal from dismiss automatically
7835
+ this.DisableModalDismiss = false;
7790
7836
  }
7791
7837
  }
7792
7838