ng-zenduit 2.0.21 → 2.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,10 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output, } from '@angular/core';
2
2
  import { Util } from '../util';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  import * as i2 from "@angular/forms";
6
- import * as i3 from "@ngx-translate/core";
6
+ import * as i3 from "../input/zendu-input.component";
7
+ import * as i4 from "@ngx-translate/core";
7
8
  export class ZenduSearchBoxComponent {
8
9
  constructor(_element, _ngZone) {
9
10
  this._element = _element;
@@ -46,9 +47,6 @@ export class ZenduSearchBoxComponent {
46
47
  this.invokeChange();
47
48
  }, delay);
48
49
  }
49
- activateSearchBox() {
50
- this.searchInput.nativeElement.focus();
51
- }
52
50
  doFocus() {
53
51
  this._focusAttempts++;
54
52
  if (this._focusAttempts > 100) {
@@ -105,10 +103,10 @@ export class ZenduSearchBoxComponent {
105
103
  }
106
104
  }
107
105
  ZenduSearchBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduSearchBoxComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
108
- ZenduSearchBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduSearchBoxComponent, selector: "zen-search-box", inputs: { text: "text", delay: "delay", autoFocus: "autoFocus", disabled: "disabled", placeholder: "placeholder" }, outputs: { textChange: "textChange" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: "<div class=\"search-box-component\">\n <i class=\"svg-icons\"\n (click)=\"activateSearchBox()\">\n <svg width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8.33333\"\n cy=\"8.33333\"\n r=\"5.83333\"\n stroke=\"#828282\"\n stroke-width=\"1.6\" />\n <path d=\"M17.5 17.5001L12.9166 12.9167\"\n stroke=\"#828282\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\" />\n </svg>\n </i>\n <input [(ngModel)]=\"text\"\n class=\"search-box\"\n (ngModelChange)=\"onChange()\"\n placeholder=\"{{placeholder | translate}}\"\n [disabled]=\"disabled\"\n #searchInput>\n <i class=\"material-icons close-icon\"\n *ngIf=\"text\"\n (mousedown)=\"$event.stopPropagation()\"\n (click)=\"clear(); $event.stopPropagation()\">close</i>\n</div>\n", styles: [".search-box-component{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:8px;width:100%;height:40px;background:#FFFFFF;border:1px solid #F2F2F2;box-sizing:border-box;border-radius:4px;padding:8px}.search-box-component:hover{border-color:#b8b9bc}.search-box-component:focus-within{box-shadow:0 0 2px 2px #2188d94d}.search-box-component input{border:0;font-style:normal;font-weight:400;font-size:14px;line-height:130%;width:100%;outline:none;color:#4f4f4f;font-family:Roboto}.search-box-component input::placeholder{color:#828282}.search-box-component .svg-icons{display:flex}.search-box-component .material-icons{color:#828282;-webkit-user-select:none;user-select:none}.search-box-component .material-icons.close-icon{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
106
+ ZenduSearchBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduSearchBoxComponent, selector: "zen-search-box", inputs: { text: "text", delay: "delay", autoFocus: "autoFocus", disabled: "disabled", placeholder: "placeholder" }, outputs: { textChange: "textChange" }, ngImport: i0, template: "<div class=\"search-box-component\"\n [class.has-text]=\"text\">\n <zen-input [(ngModel)]=\"text\"\n [placeholder]=\"placeholder | translate\"\n [disabled]=\"disabled\"\n leadingIcon=\"search\"\n autocomplete=\"off\"\n (ngModelChange)=\"onChange()\">\n </zen-input>\n <i class=\"material-icons close-icon\"\n *ngIf=\"text\"\n (mousedown)=\"$event.stopPropagation()\"\n (click)=\"clear(); $event.stopPropagation()\">close</i>\n</div>\n", styles: [".search-box-component{position:relative;width:100%}.search-box-component ::ng-deep .zen-input-field-wrapper{height:40px!important;min-height:auto!important;padding:8px 14px!important}.search-box-component.has-text ::ng-deep .zen-input-field{padding-right:24px}.search-box-component .close-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);color:#828282;font-size:20px;cursor:pointer;-webkit-user-select:none;user-select:none;z-index:1}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.ZenduInputComponent, selector: "zen-input", inputs: ["type", "variant", "placeholder", "label", "hintText", "leadingIcon", "helpIcon", "helpTooltip", "destructive", "errorMessage", "disabled", "required", "maxLength", "minLength", "pattern", "autocomplete", "name", "id", "leadingDropdownOptions", "leadingDropdownValue", "leadingDropdownPlaceholder", "trailingDropdownOptions", "trailingDropdownValue", "trailingDropdownPlaceholder", "leadingText", "trailingText", "size", "showCharacterCount", "phoneMaxLength", "phone", "width"], outputs: ["valueChange", "inputFocus", "inputBlur", "inputKeydown", "inputKeyup", "leadingDropdownChange", "leadingDropdownValueChange", "trailingDropdownChange", "trailingDropdownValueChange", "helpIconClick", "phoneChange", "validChange", "leadingIconClick"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
109
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduSearchBoxComponent, decorators: [{
110
108
  type: Component,
111
- args: [{ selector: 'zen-search-box', template: "<div class=\"search-box-component\">\n <i class=\"svg-icons\"\n (click)=\"activateSearchBox()\">\n <svg width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8.33333\"\n cy=\"8.33333\"\n r=\"5.83333\"\n stroke=\"#828282\"\n stroke-width=\"1.6\" />\n <path d=\"M17.5 17.5001L12.9166 12.9167\"\n stroke=\"#828282\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\" />\n </svg>\n </i>\n <input [(ngModel)]=\"text\"\n class=\"search-box\"\n (ngModelChange)=\"onChange()\"\n placeholder=\"{{placeholder | translate}}\"\n [disabled]=\"disabled\"\n #searchInput>\n <i class=\"material-icons close-icon\"\n *ngIf=\"text\"\n (mousedown)=\"$event.stopPropagation()\"\n (click)=\"clear(); $event.stopPropagation()\">close</i>\n</div>\n", styles: [".search-box-component{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:8px;width:100%;height:40px;background:#FFFFFF;border:1px solid #F2F2F2;box-sizing:border-box;border-radius:4px;padding:8px}.search-box-component:hover{border-color:#b8b9bc}.search-box-component:focus-within{box-shadow:0 0 2px 2px #2188d94d}.search-box-component input{border:0;font-style:normal;font-weight:400;font-size:14px;line-height:130%;width:100%;outline:none;color:#4f4f4f;font-family:Roboto}.search-box-component input::placeholder{color:#828282}.search-box-component .svg-icons{display:flex}.search-box-component .material-icons{color:#828282;-webkit-user-select:none;user-select:none}.search-box-component .material-icons.close-icon{cursor:pointer}\n"] }]
109
+ args: [{ selector: 'zen-search-box', template: "<div class=\"search-box-component\"\n [class.has-text]=\"text\">\n <zen-input [(ngModel)]=\"text\"\n [placeholder]=\"placeholder | translate\"\n [disabled]=\"disabled\"\n leadingIcon=\"search\"\n autocomplete=\"off\"\n (ngModelChange)=\"onChange()\">\n </zen-input>\n <i class=\"material-icons close-icon\"\n *ngIf=\"text\"\n (mousedown)=\"$event.stopPropagation()\"\n (click)=\"clear(); $event.stopPropagation()\">close</i>\n</div>\n", styles: [".search-box-component{position:relative;width:100%}.search-box-component ::ng-deep .zen-input-field-wrapper{height:40px!important;min-height:auto!important;padding:8px 14px!important}.search-box-component.has-text ::ng-deep .zen-input-field{padding-right:24px}.search-box-component .close-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);color:#828282;font-size:20px;cursor:pointer;-webkit-user-select:none;user-select:none;z-index:1}\n"] }]
112
110
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { text: [{
113
111
  type: Input
114
112
  }], textChange: [{
@@ -121,8 +119,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
121
119
  type: Input
122
120
  }], placeholder: [{
123
121
  type: Input
124
- }], searchInput: [{
125
- type: ViewChild,
126
- args: ['searchInput', { static: false }]
127
122
  }] } });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtc2VhcmNoLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy16ZW5kdWl0L3NyYy9saWIvc2VhcmNoLWJveC96ZW5kdS1zZWFyY2gtYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9zZWFyY2gtYm94L3plbmR1LXNlYXJjaC1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7QUFPL0IsTUFBTSxPQUFPLHVCQUF1QjtJQXFCbEMsWUFBMkIsUUFBb0IsRUFBVSxPQUFlO1FBQTdDLGFBQVEsR0FBUixRQUFRLENBQVk7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBbEI5RCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU16QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFVixnQkFBVyxHQUFHLFFBQVEsQ0FBQztRQU0vQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUd6QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFsQkQsSUFBYSxLQUFLLENBQUMsR0FBVztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFrQk0sUUFBUTtRQUNiLHlDQUF5QztRQUN6QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDaEI7UUFDSCxD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QUFDLEVBQUUsRUFBRTtnQkFDUCxTQUFTO2FBQ1Y7WUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQWlCLENBQUMsQ0FBQztZQUNqRCxJQUFJLE9BQU8sRUFBRTtnQkFDWCxPQUFPLE9BQU8sQ0FBQzthQUNoQjtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztxSEExSFUsdUJBQXVCO3lHQUF2Qix1QkFBdUIsNlRDakJwQyxpaENBOEJBOzRGRGJhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxnQkFBZ0I7c0hBS2pCLElBQUk7c0JBQVosS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUVNLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBRXVDLFdBQVc7c0JBQXZELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi91dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnemVuLXNlYXJjaC1ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vemVuZHUtc2VhcmNoLWJveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3plbmR1LXNlYXJjaC1ib3guY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgWmVuZHVTZWFyY2hCb3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIHRleHRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBASW5wdXQoKSBzZXQgZGVsYXkodmFsOiBudW1iZXIpIHtcbiAgICB0aGlzLnNldERlbGF5KHZhbCk7XG4gIH1cblxuICBASW5wdXQoKSBhdXRvRm9jdXMgPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJ1NlYXJjaCc7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX2RlYm91bmNlZEludm9rZSE6ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfZm9jdXNBdHRlbXB0cyA9IDA7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgX25nWm9uZTogTmdab25lKSB7XG4gICAgdGhpcy5zZXREZWxheSg1MDApO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGdpdmUgMTAwbXMgZm9yIGF1dG9Gb2N1cyBpbml0YWxpemF0aW9uXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgdGhpcy5kb0ZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZSgpIHtcbiAgICB0aGlzLl9kZWJvdW5jZWRJbnZva2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckZyb21QYXJlbnQoKSB7XG4gICAgdGhpcy50ZXh0ID0gJyc7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy50ZXh0ID0gJyc7XG4gICAgdGhpcy5fZGVib3VuY2VkSW52b2tlKCk7XG4gIH1cblxuICBwcml2YXRlIGludm9rZUNoYW5nZSgpIHtcbiAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMudGV4dENoYW5nZS5lbWl0KHRoaXMudGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldERlbGF5KGRlbGF5OiBudW1iZXIpIHtcbiAgICB0aGlzLl9kZWJvdW5jZWRJbnZva2UgPSBVdGlsLmRlYm91bmNlKCgpID0+IHtcbiAgICAgIHRoaXMuaW52b2tlQ2hhbmdlKCk7XG4gICAgfSwgZGVsYXkpO1xuICB9XG5cbiAgcHVibGljIGFjdGl2YXRlU2VhcmNoQm94KCkge1xuICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgcHVibGljIGRvRm9jdXMoKSB7XG4gICAgdGhpcy5fZm9jdXNBdHRlbXB0cysrO1xuICAgIGlmICh0aGlzLl9mb2N1c0F0dGVtcHRzID4gMTAwKSB7XG4gICAgICAvLyBzdG9wIGF0dGVtcHRzIHRvIGluaXRhbGl6ZVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dCh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIGlmICghaW5wdXQpIHtcbiAgICAgIC8vIHdhaXQgMTAwbXMgdG8gcnVuIHRoZSBuZXh0IGNoZWNrXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5kb0ZvY3VzKCk7XG4gICAgICB9LCAxMDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBjaGVjayBpZiBlbGVtZW50IHZpc2libGUgb3Igbm90XG4gICAgY29uc3QgaGVpZ2h0ID0gaW5wdXQuY2xpZW50SGVpZ2h0O1xuICAgIGlmIChoZWlnaHQgPT0gMCkge1xuICAgICAgLy8gd2FpdCAxMDBtcyB0byBydW4gdGhlIG5leHQgY2hlY2tcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmRvRm9jdXMoKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gc2V0IGZvY3VzIHRvIGVsZW1lbnRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfSwgMSk7XG4gIH1cblxuICBwcml2YXRlIGdldElucHV0KGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PSAnSU5QVVQnKSB7XG4gICAgICByZXR1cm4gZWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyBpZHgrKykge1xuICAgICAgY29uc3QgZWwgPSBlbGVtZW50LmNoaWxkcmVuLml0ZW0oaWR4KTtcbiAgICAgIGlmIChlbCAmJiBlbC5ub2RlTmFtZSA9PSAnSU5QVVQnKSB7XG4gICAgICAgIHJldHVybiBlbCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGZpbmQgaW5wdXQgaW4gdGhlIGNoaWxkcmVuIHRyZWVcbiAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgIGNvbnN0IGVsID0gZWxlbWVudC5jaGlsZHJlbi5pdGVtKGlkeCk7XG4gICAgICBpZiAoIWVsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgZWxJbnB1dCA9IHRoaXMuZ2V0SW5wdXQoZWwgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgaWYgKGVsSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGVsSW5wdXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzZWFyY2gtYm94LWNvbXBvbmVudFwiPlxuICAgPGkgY2xhc3M9XCJzdmctaWNvbnNcIlxuICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VhcmNoQm94KClcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIyMFwiXG4gICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgPGNpcmNsZSBjeD1cIjguMzMzMzNcIlxuICAgICAgICAgICAgICAgICBjeT1cIjguMzMzMzNcIlxuICAgICAgICAgICAgICAgICByPVwiNS44MzMzM1wiXG4gICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM4MjgyODJcIlxuICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjZcIiAvPlxuICAgICAgICAgPHBhdGggZD1cIk0xNy41IDE3LjUwMDFMMTIuOTE2NiAxMi45MTY3XCJcbiAgICAgICAgICAgICAgIHN0cm9rZT1cIiM4MjgyODJcIlxuICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42XCJcbiAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxuICAgICAgPC9zdmc+XG4gICA8L2k+XG4gICA8aW5wdXQgWyhuZ01vZGVsKV09XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaC1ib3hcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlciB8IHRyYW5zbGF0ZX19XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICNzZWFyY2hJbnB1dD5cbiAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY2xvc2UtaWNvblwiXG4gICAgICAqbmdJZj1cInRleHRcIlxuICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgKGNsaWNrKT1cImNsZWFyKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPmNsb3NlPC9pPlxuPC9kaXY+XG4iXX0=
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtc2VhcmNoLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy16ZW5kdWl0L3NyYy9saWIvc2VhcmNoLWJveC96ZW5kdS1zZWFyY2gtYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9zZWFyY2gtYm94L3plbmR1LXNlYXJjaC1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7Ozs7QUFPL0IsTUFBTSxPQUFPLHVCQUF1QjtJQW1CbEMsWUFBMkIsUUFBb0IsRUFBVSxPQUFlO1FBQTdDLGFBQVEsR0FBUixRQUFRLENBQVk7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBaEI5RCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU16QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFVixnQkFBVyxHQUFHLFFBQVEsQ0FBQztRQUkvQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUd6QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFoQkQsSUFBYSxLQUFLLENBQUMsR0FBVztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFnQk0sUUFBUTtRQUNiLHlDQUF5QztRQUN6QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDaEI7UUFDSCxDQUFDLEVBQUUs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QUM7WUFDakQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsT0FBTyxPQUFPLENBQUM7YUFDaEI7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7cUhBcEhVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLGlOQ2hCcEMsOGdCQWNBOzRGREVhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxnQkFBZ0I7c0hBS2pCLElBQUk7c0JBQVosS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUVNLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVVLFdBQVc7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uL3V0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd6ZW4tc2VhcmNoLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi96ZW5kdS1zZWFyY2gtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vemVuZHUtc2VhcmNoLWJveC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBaZW5kdVNlYXJjaEJveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcblxuICBAT3V0cHV0KCkgdGV4dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBJbnB1dCgpIHNldCBkZWxheSh2YWw6IG51bWJlcikge1xuICAgIHRoaXMuc2V0RGVsYXkodmFsKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IHRydWU7XG5cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnU2VhcmNoJztcblxuICBwcml2YXRlIF9kZWJvdW5jZWRJbnZva2UhOiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX2ZvY3VzQXR0ZW1wdHMgPSAwO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuc2V0RGVsYXkoNTAwKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBnaXZlIDEwMG1zIGZvciBhdXRvRm9jdXMgaW5pdGFsaXphdGlvblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICAgIHRoaXMuZG9Gb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoKSB7XG4gICAgdGhpcy5fZGVib3VuY2VkSW52b2tlKCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJGcm9tUGFyZW50KCkge1xuICAgIHRoaXMudGV4dCA9ICcnO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMudGV4dCA9ICcnO1xuICAgIHRoaXMuX2RlYm91bmNlZEludm9rZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnZva2VDaGFuZ2UoKSB7XG4gICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnRleHRDaGFuZ2UuZW1pdCh0aGlzLnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWxheShkZWxheTogbnVtYmVyKSB7XG4gICAgdGhpcy5fZGVib3VuY2VkSW52b2tlID0gVXRpbC5kZWJvdW5jZSgoKSA9PiB7XG4gICAgICB0aGlzLmludm9rZUNoYW5nZSgpO1xuICAgIH0sIGRlbGF5KTtcbiAgfVxuXG4gIHB1YmxpYyBkb0ZvY3VzKCkge1xuICAgIHRoaXMuX2ZvY3VzQXR0ZW1wdHMrKztcbiAgICBpZiAodGhpcy5fZm9jdXNBdHRlbXB0cyA+IDEwMCkge1xuICAgICAgLy8gc3RvcCBhdHRlbXB0cyB0byBpbml0YWxpemVcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ2V0SW5wdXQodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICBpZiAoIWlucHV0KSB7XG4gICAgICAvLyB3YWl0IDEwMG1zIHRvIHJ1biB0aGUgbmV4dCBjaGVja1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZG9Gb2N1cygpO1xuICAgICAgfSwgMTAwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gY2hlY2sgaWYgZWxlbWVudCB2aXNpYmxlIG9yIG5vdFxuICAgIGNvbnN0IGhlaWdodCA9IGlucHV0LmNsaWVudEhlaWdodDtcbiAgICBpZiAoaGVpZ2h0ID09IDApIHtcbiAgICAgIC8vIHdhaXQgMTAwbXMgdG8gcnVuIHRoZSBuZXh0IGNoZWNrXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5kb0ZvY3VzKCk7XG4gICAgICB9LCAxMDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHNldCBmb2N1cyB0byBlbGVtZW50XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbnB1dChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQubm9kZU5hbWUgPT0gJ0lOUFVUJykge1xuICAgICAgcmV0dXJuIGVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgIGNvbnN0IGVsID0gZWxlbWVudC5jaGlsZHJlbi5pdGVtKGlkeCk7XG4gICAgICBpZiAoZWwgJiYgZWwubm9kZU5hbWUgPT0gJ0lOUFVUJykge1xuICAgICAgICByZXR1cm4gZWwgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBmaW5kIGlucHV0IGluIHRoZSBjaGlsZHJlbiB0cmVlXG4gICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgZWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICBjb25zdCBlbCA9IGVsZW1lbnQuY2hpbGRyZW4uaXRlbShpZHgpO1xuICAgICAgaWYgKCFlbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVsSW5wdXQgPSB0aGlzLmdldElucHV0KGVsIGFzIEhUTUxFbGVtZW50KTtcbiAgICAgIGlmIChlbElucHV0KSB7XG4gICAgICAgIHJldHVybiBlbElucHV0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2VhcmNoLWJveC1jb21wb25lbnRcIlxuICAgICBbY2xhc3MuaGFzLXRleHRdPVwidGV4dFwiPlxuICAgPHplbi1pbnB1dCBbKG5nTW9kZWwpXT1cInRleHRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBsZWFkaW5nSWNvbj1cInNlYXJjaFwiXG4gICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIj5cbiAgIDwvemVuLWlucHV0PlxuICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjbG9zZS1pY29uXCJcbiAgICAgICpuZ0lmPVwidGV4dFwiXG4gICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXIoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+Y2xvc2U8L2k+XG48L2Rpdj5cbiJdfQ==