@sd-angular/core 1.2.16 → 1.2.19
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.
- package/autocomplete/sd-angular-core-autocomplete.metadata.json +1 -1
- package/autocomplete/src/lib/autocomplete.component.d.ts +3 -2
- package/bundles/sd-angular-core-autocomplete.umd.js +21 -8
- package/bundles/sd-angular-core-autocomplete.umd.js.map +1 -1
- package/bundles/sd-angular-core-autocomplete.umd.min.js +2 -2
- package/bundles/sd-angular-core-autocomplete.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.js +12 -6
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-textarea.umd.js +1 -1
- package/bundles/sd-angular-core-textarea.umd.min.js +1 -1
- package/bundles/sd-angular-core-textarea.umd.min.js.map +1 -1
- package/esm2015/autocomplete/src/lib/autocomplete.component.js +22 -10
- package/esm2015/grid-material/src/lib/grid-material.component.js +13 -7
- package/esm2015/grid-material/src/lib/models/grid-editor.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid.model.js +1 -1
- package/esm2015/textarea/src/lib/textarea.component.js +1 -1
- package/fesm2015/sd-angular-core-autocomplete.js +21 -9
- package/fesm2015/sd-angular-core-autocomplete.js.map +1 -1
- package/fesm2015/sd-angular-core-grid-material.js +12 -6
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-textarea.js +1 -1
- package/grid-material/src/lib/models/grid-editor.model.d.ts +3 -2
- package/grid-material/src/lib/models/grid.model.d.ts +1 -0
- package/package.json +1 -1
- package/{sd-angular-core-1.2.16.tgz → sd-angular-core-1.2.19.tgz} +0 -0
- package/textarea/sd-angular-core-textarea.metadata.json +1 -1
|
@@ -572,7 +572,7 @@
|
|
|
572
572
|
{ type: core.Component, args: [{
|
|
573
573
|
selector: 'sd-textarea',
|
|
574
574
|
template: "<label *ngIf=\"!appearance && label\" class=\"d-block mb-0 T14M\">{{label}} <span class=\"text-danger mb-2\"\r\n *ngIf=\"required\">*</span></label>\r\n<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field appearance=\"outline\" [class.c-no-label]=\"!label\">\r\n <mat-label *ngIf=\"appearance && label\">{{ label }}</mat-label>\r\n <textarea matInput [placeholder]=\"placeholder || (appearance ? label : '')\" [formControl]=\"formControl\"\r\n [required]=\"required\" autocomplete=\"off\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [rows]=\"rows\"\r\n [maxlength]=\"maxlength\" [attr.data-qclabel]=\"label\" [attr.data-qcid]=\"qcId\" #textarea></textarea>\r\n <span *ngIf=\"maxlength && !formControl.disabled\" matSuffix>{{formControl?.value?.length ||\r\n 0}}/{{maxlength}}</span>\r\n <mat-error *ngIf=\"formControl.touched && formControl.errors?.required\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ \"This field is required\" | sdTranslate }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.touched && formControl.errors?.maxlength\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{'Max length' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </ng-container>\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.touched && formControl.errors?.pattern\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{'Pattern error' | sdTranslate}}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.touched && formControl.errors?.customValidator\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{formControl.errors?.customValidator}}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>",
|
|
575
|
-
styles: [":host ::ng-deep textarea.mat-input-element{resize:none}:host ::ng-deep .mat-form-field.c-no-label .mat-form-field-infix{border-top:0}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}"]
|
|
575
|
+
styles: [":host ::ng-deep textarea.mat-input-element{resize:none}:host ::ng-deep .mat-form-field.c-no-label .mat-form-field-infix{border-top:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field textarea.mat-input-element:disabled{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}"]
|
|
576
576
|
},] }
|
|
577
577
|
];
|
|
578
578
|
SdTextarea.ctorParameters = function () { return [
|
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
13
13
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
14
|
PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
-
***************************************************************************** */function h(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{s(n.next(e))}catch(e){a(e)}}function l(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,l)}s((n=n.apply(e,t||[])).next())}))}function g(e,t){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;i;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,n=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=t.call(e,i)}catch(e){a=[6,e],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}Object.create;var b,y,v,w,C,x,M,I,q,E;Object.create;function j(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)}function V(e,t,r,n,o){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?o.call(e,r):o?o.value=r:t.set(e,r),r}var O=function(){function e(e,n){var i=this;this.ref=e,this.formConfig=n,b.set(this,o.v4()),y.set(this,void 0),this.rows=5,this.modelChange=new t.EventEmitter,this.sdChange=new t.EventEmitter,this.disableErrorMessage=!1,this.required=!1,v.set(this,void 0),w.set(this,void 0),C.set(this,!1),this.isFocused=!1,this.formControl=new l.SdFormControl,x.set(this,new a.Subscription),this.onFocus=function(){i.isFocused=!0},this.onBlur=function(){var e;i.isFocused=!1;var t=(null!==(e=i.formControl.value)&&void 0!==e?e:"").toString();t.length>t.trim().length&&i.formControl.setValue(t.trim())},this.onClick=function(){var e;(null===(e=i.sdView)||void 0===e?void 0:e.templateRef)&&(i.formControl.disabled||i.isFocused||i.focus())},this.blur=function(){var e,t;null===(t=null===(e=i.textarea)||void 0===e?void 0:e.nativeElement)||void 0===t||t.blur()},this.focus=function(){i.isFocused=!0,setTimeout((function(){var e,t;null===(t=null===(e=i.textarea)||void 0===e?void 0:e.nativeElement)||void 0===t||t.focus()}),100)},M.set(this,(function(e){j(i,C)&&(i.textarea.nativeElement.style.height="auto",i.textarea.nativeElement.style.height=i.textarea.nativeElement.scrollHeight+"px"),i.modelChange.emit(e),i.sdChange.emit(e)})),I.set(this,(function(){})),q.set(this,(function(){i.formControl.clearValidators(),i.formControl.clearAsyncValidators();var e=[],t=[];i.required&&e.push(r.Validators.required),i.maxlength>0&&e.push(r.Validators.maxLength(i.maxlength)),j(i,v)&&e.push(r.Validators.pattern(j(i,v))),j(i,w)&&t.push(j(i,E).call(i,j(i,w))),i.formControl.setValidators(e),i.formControl.setAsyncValidators(t),i.formControl.updateValueAndValidity()})),E.set(this,(function(e){return function(t){return h(i,void 0,void 0,(function(){var r,n,o;return g(this,(function(a){switch(a.label){case 0:return r=t.value||null,e&&"function"==typeof e?(n=e(r))instanceof Promise?[4,n]:[3,2]:[3,3];case 1:return(o=a.sent())?[2,{customValidator:o}]:[2,null];case 2:return n?[2,{customValidator:n}]:[2,null];case 3:return[2,null]}}))}))}}))}return Object.defineProperty(e.prototype,"name",{set:function(e){e&&V(this,b,e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"form",{set:function(e){e&&(e instanceof r.NgForm?V(this,y,e.form):V(this,y,e))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_label",{set:function(e){this.label=e,this.qcId=m.default({selector:"sd-textarea",label:e})},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"model",{set:function(e){this.formControl.value!==e&&this.formControl.setValue(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_disableErrorMessage",{set:function(e){this.disableErrorMessage=""===e||e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_required",{set:function(e){this.required=""===e||e,j(this,q).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_maxlength",{set:function(e){this.maxlength=+e,j(this,q).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pattern",{set:function(e){V(this,v,e),j(this,q).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"validator",{set:function(e){V(this,w,e),j(this,q).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{set:function(e){(e=""===e||e)?this.formControl.disable():this.formControl.enable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_autoHeight",{set:function(e){V(this,C,""===e||e)},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){var e,t,r=this;this.appearance=this.appearance||(null===(e=this.formConfig)||void 0===e?void 0:e.appearance),j(this,x).add(this.formControl.sdChanges.subscribe((function(){r.ref.markForCheck()}))),j(this,x).add(this.formControl.valueChanges.subscribe(j(this,M))),null===(t=j(this,y))||void 0===t||t.addControl(j(this,b),this.formControl)},e.prototype.ngAfterViewInit=function(){var e,t,r,n;j(this,C)&&(null===(t=null===(e=this.textarea)||void 0===e?void 0:e.nativeElement)||void 0===t||t.setAttribute("style","height: "+(null===(n=null===(r=this.textarea)||void 0===r?void 0:r.nativeElement)||void 0===n?void 0:n.scrollHeight)+"px;overflow-y:hidden;"))},e.prototype.ngOnDestroy=function(){var e;null===(e=j(this,y))||void 0===e||e.removeControl(j(this,b)),j(this,x).unsubscribe()},e}();b=new WeakMap,y=new WeakMap,v=new WeakMap,w=new WeakMap,C=new WeakMap,x=new WeakMap,M=new WeakMap,I=new WeakMap,q=new WeakMap,E=new WeakMap,O.decorators=[{type:t.Component,args:[{selector:"sd-textarea",template:'<label *ngIf="!appearance && label" class="d-block mb-0 T14M">{{label}} <span class="text-danger mb-2"\r\n *ngIf="required">*</span></label>\r\n<div class="d-flex align-items-center" [class.sd-view]="sdView?.templateRef" [class.c-focused]="isFocused"\r\n [class.c-disabled]="formControl.disabled" (click)="onClick()">\r\n <ng-container *ngIf="sdView?.templateRef && !isFocused; else default">\r\n <ng-container *ngTemplateOutlet="sdView.templateRef;context: { value: formControl.value }">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field appearance="outline" [class.c-no-label]="!label">\r\n <mat-label *ngIf="appearance && label">{{ label }}</mat-label>\r\n <textarea matInput [placeholder]="placeholder || (appearance ? label : \'\')" [formControl]="formControl"\r\n [required]="required" autocomplete="off" (focus)="onFocus()" (blur)="onBlur()" [rows]="rows"\r\n [maxlength]="maxlength" [attr.data-qclabel]="label" [attr.data-qcid]="qcId" #textarea></textarea>\r\n <span *ngIf="maxlength && !formControl.disabled" matSuffix>{{formControl?.value?.length ||\r\n 0}}/{{maxlength}}</span>\r\n <mat-error *ngIf="formControl.touched && formControl.errors?.required">\r\n <ng-container *ngIf="!disableErrorMessage">{{ "This field is required" | sdTranslate }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf="formControl.touched && formControl.errors?.maxlength">\r\n <ng-container *ngIf="!disableErrorMessage">{{\'Max length\' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </ng-container>\r\n </mat-error>\r\n <mat-error *ngIf="formControl.touched && formControl.errors?.pattern">\r\n <ng-container *ngIf="!disableErrorMessage">{{\'Pattern error\' | sdTranslate}}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf="formControl.touched && formControl.errors?.customValidator">\r\n <ng-container *ngIf="!disableErrorMessage">{{formControl.errors?.customValidator}}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>',styles:[":host ::ng-deep textarea.mat-input-element{resize:none}:host ::ng-deep .mat-form-field.c-no-label .mat-form-field-infix{border-top:0}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}"]}]}],O.ctorParameters=function(){return[{type:t.ChangeDetectorRef},{type:void 0,decorators:[{type:t.Inject,args:[l.FORM_CONFIG]},{type:t.Optional}]}]},O.propDecorators={name:[{type:t.Input}],appearance:[{type:t.Input}],form:[{type:t.Input}],_label:[{type:t.Input,args:["label"]}],placeholder:[{type:t.Input}],rows:[{type:t.Input}],model:[{type:t.Input}],modelChange:[{type:t.Output}],sdChange:[{type:t.Output}],_disableErrorMessage:[{type:t.Input,args:["disableErrorMessage"]}],_required:[{type:t.Input,args:["required"]}],_maxlength:[{type:t.Input,args:["maxlength"]}],pattern:[{type:t.Input}],validator:[{type:t.Input}],disabled:[{type:t.Input}],_autoHeight:[{type:t.Input,args:["autoHeight"]}],textarea:[{type:t.ViewChild,args:["textarea"]}],sdView:[{type:t.ContentChild,args:[l.SdViewDefDirective]}]};var k=function(){};k.decorators=[{type:t.NgModule,args:[{imports:[n.CommonModule,r.FormsModule,r.ReactiveFormsModule,c.MatFormFieldModule,d.MatInputModule,s.MatIconModule,u.MatTooltipModule,f.SdTranslateModule,l.SdCommonModule],declarations:[O],exports:[l.SdCommonModule,O]}]}],e.SdTextarea=O,e.SdTextareaModule=k,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
15
|
+
***************************************************************************** */function h(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{s(n.next(e))}catch(e){a(e)}}function l(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,l)}s((n=n.apply(e,t||[])).next())}))}function g(e,t){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;i;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,n=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=t.call(e,i)}catch(e){a=[6,e],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}Object.create;var b,y,v,w,C,x,M,I,q,E;Object.create;function j(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)}function V(e,t,r,n,o){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?o.call(e,r):o?o.value=r:t.set(e,r),r}var k=function(){function e(e,n){var i=this;this.ref=e,this.formConfig=n,b.set(this,o.v4()),y.set(this,void 0),this.rows=5,this.modelChange=new t.EventEmitter,this.sdChange=new t.EventEmitter,this.disableErrorMessage=!1,this.required=!1,v.set(this,void 0),w.set(this,void 0),C.set(this,!1),this.isFocused=!1,this.formControl=new l.SdFormControl,x.set(this,new a.Subscription),this.onFocus=function(){i.isFocused=!0},this.onBlur=function(){var e;i.isFocused=!1;var t=(null!==(e=i.formControl.value)&&void 0!==e?e:"").toString();t.length>t.trim().length&&i.formControl.setValue(t.trim())},this.onClick=function(){var e;(null===(e=i.sdView)||void 0===e?void 0:e.templateRef)&&(i.formControl.disabled||i.isFocused||i.focus())},this.blur=function(){var e,t;null===(t=null===(e=i.textarea)||void 0===e?void 0:e.nativeElement)||void 0===t||t.blur()},this.focus=function(){i.isFocused=!0,setTimeout((function(){var e,t;null===(t=null===(e=i.textarea)||void 0===e?void 0:e.nativeElement)||void 0===t||t.focus()}),100)},M.set(this,(function(e){j(i,C)&&(i.textarea.nativeElement.style.height="auto",i.textarea.nativeElement.style.height=i.textarea.nativeElement.scrollHeight+"px"),i.modelChange.emit(e),i.sdChange.emit(e)})),I.set(this,(function(){})),q.set(this,(function(){i.formControl.clearValidators(),i.formControl.clearAsyncValidators();var e=[],t=[];i.required&&e.push(r.Validators.required),i.maxlength>0&&e.push(r.Validators.maxLength(i.maxlength)),j(i,v)&&e.push(r.Validators.pattern(j(i,v))),j(i,w)&&t.push(j(i,E).call(i,j(i,w))),i.formControl.setValidators(e),i.formControl.setAsyncValidators(t),i.formControl.updateValueAndValidity()})),E.set(this,(function(e){return function(t){return h(i,void 0,void 0,(function(){var r,n,o;return g(this,(function(a){switch(a.label){case 0:return r=t.value||null,e&&"function"==typeof e?(n=e(r))instanceof Promise?[4,n]:[3,2]:[3,3];case 1:return(o=a.sent())?[2,{customValidator:o}]:[2,null];case 2:return n?[2,{customValidator:n}]:[2,null];case 3:return[2,null]}}))}))}}))}return Object.defineProperty(e.prototype,"name",{set:function(e){e&&V(this,b,e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"form",{set:function(e){e&&(e instanceof r.NgForm?V(this,y,e.form):V(this,y,e))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_label",{set:function(e){this.label=e,this.qcId=m.default({selector:"sd-textarea",label:e})},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"model",{set:function(e){this.formControl.value!==e&&this.formControl.setValue(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_disableErrorMessage",{set:function(e){this.disableErrorMessage=""===e||e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_required",{set:function(e){this.required=""===e||e,j(this,q).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_maxlength",{set:function(e){this.maxlength=+e,j(this,q).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pattern",{set:function(e){V(this,v,e),j(this,q).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"validator",{set:function(e){V(this,w,e),j(this,q).call(this)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{set:function(e){(e=""===e||e)?this.formControl.disable():this.formControl.enable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_autoHeight",{set:function(e){V(this,C,""===e||e)},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){var e,t,r=this;this.appearance=this.appearance||(null===(e=this.formConfig)||void 0===e?void 0:e.appearance),j(this,x).add(this.formControl.sdChanges.subscribe((function(){r.ref.markForCheck()}))),j(this,x).add(this.formControl.valueChanges.subscribe(j(this,M))),null===(t=j(this,y))||void 0===t||t.addControl(j(this,b),this.formControl)},e.prototype.ngAfterViewInit=function(){var e,t,r,n;j(this,C)&&(null===(t=null===(e=this.textarea)||void 0===e?void 0:e.nativeElement)||void 0===t||t.setAttribute("style","height: "+(null===(n=null===(r=this.textarea)||void 0===r?void 0:r.nativeElement)||void 0===n?void 0:n.scrollHeight)+"px;overflow-y:hidden;"))},e.prototype.ngOnDestroy=function(){var e;null===(e=j(this,y))||void 0===e||e.removeControl(j(this,b)),j(this,x).unsubscribe()},e}();b=new WeakMap,y=new WeakMap,v=new WeakMap,w=new WeakMap,C=new WeakMap,x=new WeakMap,M=new WeakMap,I=new WeakMap,q=new WeakMap,E=new WeakMap,k.decorators=[{type:t.Component,args:[{selector:"sd-textarea",template:'<label *ngIf="!appearance && label" class="d-block mb-0 T14M">{{label}} <span class="text-danger mb-2"\r\n *ngIf="required">*</span></label>\r\n<div class="d-flex align-items-center" [class.sd-view]="sdView?.templateRef" [class.c-focused]="isFocused"\r\n [class.c-disabled]="formControl.disabled" (click)="onClick()">\r\n <ng-container *ngIf="sdView?.templateRef && !isFocused; else default">\r\n <ng-container *ngTemplateOutlet="sdView.templateRef;context: { value: formControl.value }">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field appearance="outline" [class.c-no-label]="!label">\r\n <mat-label *ngIf="appearance && label">{{ label }}</mat-label>\r\n <textarea matInput [placeholder]="placeholder || (appearance ? label : \'\')" [formControl]="formControl"\r\n [required]="required" autocomplete="off" (focus)="onFocus()" (blur)="onBlur()" [rows]="rows"\r\n [maxlength]="maxlength" [attr.data-qclabel]="label" [attr.data-qcid]="qcId" #textarea></textarea>\r\n <span *ngIf="maxlength && !formControl.disabled" matSuffix>{{formControl?.value?.length ||\r\n 0}}/{{maxlength}}</span>\r\n <mat-error *ngIf="formControl.touched && formControl.errors?.required">\r\n <ng-container *ngIf="!disableErrorMessage">{{ "This field is required" | sdTranslate }}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf="formControl.touched && formControl.errors?.maxlength">\r\n <ng-container *ngIf="!disableErrorMessage">{{\'Max length\' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </ng-container>\r\n </mat-error>\r\n <mat-error *ngIf="formControl.touched && formControl.errors?.pattern">\r\n <ng-container *ngIf="!disableErrorMessage">{{\'Pattern error\' | sdTranslate}}</ng-container>\r\n </mat-error>\r\n <mat-error *ngIf="formControl.touched && formControl.errors?.customValidator">\r\n <ng-container *ngIf="!disableErrorMessage">{{formControl.errors?.customValidator}}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>',styles:[":host ::ng-deep textarea.mat-input-element{resize:none}:host ::ng-deep .mat-form-field.c-no-label .mat-form-field-infix{border-top:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field textarea.mat-input-element:disabled{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}"]}]}],k.ctorParameters=function(){return[{type:t.ChangeDetectorRef},{type:void 0,decorators:[{type:t.Inject,args:[l.FORM_CONFIG]},{type:t.Optional}]}]},k.propDecorators={name:[{type:t.Input}],appearance:[{type:t.Input}],form:[{type:t.Input}],_label:[{type:t.Input,args:["label"]}],placeholder:[{type:t.Input}],rows:[{type:t.Input}],model:[{type:t.Input}],modelChange:[{type:t.Output}],sdChange:[{type:t.Output}],_disableErrorMessage:[{type:t.Input,args:["disableErrorMessage"]}],_required:[{type:t.Input,args:["required"]}],_maxlength:[{type:t.Input,args:["maxlength"]}],pattern:[{type:t.Input}],validator:[{type:t.Input}],disabled:[{type:t.Input}],_autoHeight:[{type:t.Input,args:["autoHeight"]}],textarea:[{type:t.ViewChild,args:["textarea"]}],sdView:[{type:t.ContentChild,args:[l.SdViewDefDirective]}]};var O=function(){};O.decorators=[{type:t.NgModule,args:[{imports:[n.CommonModule,r.FormsModule,r.ReactiveFormsModule,c.MatFormFieldModule,d.MatInputModule,s.MatIconModule,u.MatTooltipModule,f.SdTranslateModule,l.SdCommonModule],declarations:[k],exports:[l.SdCommonModule,k]}]}],e.SdTextarea=k,e.SdTextareaModule=O,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
16
16
|
//# sourceMappingURL=sd-angular-core-textarea.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/textarea/src/lib/textarea.component.ts","../../../../projects/sd-core/textarea/src/lib/textarea.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","SdTextarea","ref","formConfig","_this","_name","uuid.v4","_form","rows","modelChange","EventEmitter","sdChange","disableErrorMessage","required","_pattern","_validator","_autoHeight_1","isFocused","formControl","SdFormControl","_subscription","Subscription","onFocus","onBlur","val","_a","toString","trim","setValue","onClick","sdView","templateRef","disabled","focus","blur","_b","textarea","nativeElement","setTimeout","_onChange","style","height","emit","_onInput","_updateValidator","clearValidators","clearAsyncValidators","validators","asyncValidators","Validators","maxlength","maxLength","pattern","_customValidator","setValidators","setAsyncValidators","updateValueAndValidity","func","c","message","_e","customValidator","defineProperty","prototype","NgForm","form","qcId","hash","selector","validator","disable","enable","ngOnInit","appearance","add","sdChanges","subscribe","markForCheck","valueChanges","addControl","ngAfterViewInit","setAttribute","_d","_c","scrollHeight","ngOnDestroy","removeControl","unsubscribe","Component","args","template","ChangeDetectorRef","Inject","FORM_CONFIG","type","Optional","Input","Output","ViewChild","ContentChild","SdViewDefDirective","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatFormFieldModule","MatInputModule","MatIconModule","MatTooltipModule","SdTranslateModule","SdCommonModule","declarations","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, AfterViewInit, OnDestroy, ViewEncapsulation, OnInit, ContentChild, ViewChild, ElementRef, Inject, Optional } from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\nimport { AbstractControl, AsyncValidatorFn, FormGroup, NgForm, ValidatorFn, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport hash from 'object-hash';\r\nimport { FORM_CONFIG, IFormConfiguration, SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\n\r\n@Component({\r\n selector: 'sd-textarea',\r\n templateUrl: './textarea.component.html',\r\n styleUrls: ['./textarea.component.scss']\r\n})\r\n\r\nexport class SdTextarea implements OnInit, AfterViewInit, OnDestroy {\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() appearance: MatFormFieldAppearance;\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n qcId: string;\r\n label: string;\r\n @Input('label') set _label(val: string) {\r\n this.label = val;\r\n this.qcId = hash({\r\n selector: 'sd-textarea',\r\n label: val\r\n });\r\n };\r\n @Input() placeholder: string;\r\n @Input() rows = 5;\r\n @Input() set model(value: any) {\r\n if (this.formControl.value !== value) {\r\n this.formControl.setValue(value);\r\n }\r\n }\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter<any>();\r\n\r\n // Optional\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n }\r\n required = false;\r\n @Input('required') set _required(val: boolean | '') {\r\n this.required = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n maxlength: number;\r\n @Input('maxlength') set _maxlength(val: number) {\r\n this.maxlength = +val;\r\n this.#updateValidator();\r\n }\r\n #pattern: string;\r\n @Input() set pattern(val: string) {\r\n this.#pattern = val;\r\n this.#updateValidator();\r\n }\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n #autoHeight = false;\r\n @Input('autoHeight') set _autoHeight(val: boolean | '') {\r\n this.#autoHeight = (val === '') || val;\r\n }\r\n @ViewChild('textarea') textarea: ElementRef;\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n formControl = new SdFormControl();\r\n #subscription = new Subscription();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(FORM_CONFIG) @Optional() private formConfig: IFormConfiguration) {\r\n }\r\n\r\n ngOnInit() {\r\n this.appearance = this.appearance || this.formConfig?.appearance;\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.#subscription.add(this.formControl.valueChanges.subscribe(this.#onChange));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.#autoHeight) {\r\n this.textarea?.nativeElement?.setAttribute('style', `height: ${this.textarea?.nativeElement?.scrollHeight}px;overflow-y:hidden;`)\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n }\r\n\r\n onBlur = () => {\r\n this.isFocused = false;\r\n const val: string = (this.formControl.value ?? '').toString();\r\n if (val.length > val.trim().length) {\r\n this.formControl.setValue(val.trim());\r\n }\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n blur = () => {\r\n this.textarea?.nativeElement?.blur();\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.textarea?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n #onChange = (value: any) => {\r\n if (this.#autoHeight) {\r\n this.textarea.nativeElement.style.height = 'auto';\r\n this.textarea.nativeElement.style.height = (this.textarea.nativeElement.scrollHeight) + 'px';\r\n }\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n }\r\n\r\n #onInput = function () {\r\n // this.style.height = 'auto';\r\n // this.style.height = (this.scrollHeight) + 'px';\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.required) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.maxlength > 0) {\r\n validators.push(Validators.maxLength(this.maxlength));\r\n }\r\n if (this.#pattern) {\r\n validators.push(Validators.pattern(this.#pattern));\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof (func) === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdTextarea } from './textarea.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n SdTranslateModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdTextarea\r\n ],\r\n exports: [\r\n SdCommonModule,\r\n SdTextarea\r\n ]\r\n})\r\nexport class SdTextareaModule { }\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/textarea/src/lib/textarea.component.ts","../../../../projects/sd-core/textarea/src/lib/textarea.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","SdTextarea","ref","formConfig","_this","_name","uuid.v4","_form","rows","modelChange","EventEmitter","sdChange","disableErrorMessage","required","_pattern","_validator","_autoHeight_1","isFocused","formControl","SdFormControl","_subscription","Subscription","onFocus","onBlur","val","_a","toString","trim","setValue","onClick","sdView","templateRef","disabled","focus","blur","_b","textarea","nativeElement","setTimeout","_onChange","style","height","emit","_onInput","_updateValidator","clearValidators","clearAsyncValidators","validators","asyncValidators","Validators","maxlength","maxLength","pattern","_customValidator","setValidators","setAsyncValidators","updateValueAndValidity","func","c","message","_e","customValidator","defineProperty","prototype","NgForm","form","qcId","hash","selector","validator","disable","enable","ngOnInit","appearance","add","sdChanges","subscribe","markForCheck","valueChanges","addControl","ngAfterViewInit","setAttribute","_d","_c","scrollHeight","ngOnDestroy","removeControl","unsubscribe","Component","args","template","ChangeDetectorRef","Inject","FORM_CONFIG","type","Optional","Input","Output","ViewChild","ContentChild","SdViewDefDirective","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatFormFieldModule","MatInputModule","MatIconModule","MatTooltipModule","SdTranslateModule","SdCommonModule","declarations","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, AfterViewInit, OnDestroy, ViewEncapsulation, OnInit, ContentChild, ViewChild, ElementRef, Inject, Optional } from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\nimport { AbstractControl, AsyncValidatorFn, FormGroup, NgForm, ValidatorFn, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport hash from 'object-hash';\r\nimport { FORM_CONFIG, IFormConfiguration, SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\n\r\n@Component({\r\n selector: 'sd-textarea',\r\n templateUrl: './textarea.component.html',\r\n styleUrls: ['./textarea.component.scss']\r\n})\r\n\r\nexport class SdTextarea implements OnInit, AfterViewInit, OnDestroy {\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() appearance: MatFormFieldAppearance;\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n qcId: string;\r\n label: string;\r\n @Input('label') set _label(val: string) {\r\n this.label = val;\r\n this.qcId = hash({\r\n selector: 'sd-textarea',\r\n label: val\r\n });\r\n };\r\n @Input() placeholder: string;\r\n @Input() rows = 5;\r\n @Input() set model(value: any) {\r\n if (this.formControl.value !== value) {\r\n this.formControl.setValue(value);\r\n }\r\n }\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter<any>();\r\n\r\n // Optional\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n }\r\n required = false;\r\n @Input('required') set _required(val: boolean | '') {\r\n this.required = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n maxlength: number;\r\n @Input('maxlength') set _maxlength(val: number) {\r\n this.maxlength = +val;\r\n this.#updateValidator();\r\n }\r\n #pattern: string;\r\n @Input() set pattern(val: string) {\r\n this.#pattern = val;\r\n this.#updateValidator();\r\n }\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n #autoHeight = false;\r\n @Input('autoHeight') set _autoHeight(val: boolean | '') {\r\n this.#autoHeight = (val === '') || val;\r\n }\r\n @ViewChild('textarea') textarea: ElementRef;\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n formControl = new SdFormControl();\r\n #subscription = new Subscription();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(FORM_CONFIG) @Optional() private formConfig: IFormConfiguration) {\r\n }\r\n\r\n ngOnInit() {\r\n this.appearance = this.appearance || this.formConfig?.appearance;\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.#subscription.add(this.formControl.valueChanges.subscribe(this.#onChange));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.#autoHeight) {\r\n this.textarea?.nativeElement?.setAttribute('style', `height: ${this.textarea?.nativeElement?.scrollHeight}px;overflow-y:hidden;`)\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n }\r\n\r\n onBlur = () => {\r\n this.isFocused = false;\r\n const val: string = (this.formControl.value ?? '').toString();\r\n if (val.length > val.trim().length) {\r\n this.formControl.setValue(val.trim());\r\n }\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n blur = () => {\r\n this.textarea?.nativeElement?.blur();\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.textarea?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n #onChange = (value: any) => {\r\n if (this.#autoHeight) {\r\n this.textarea.nativeElement.style.height = 'auto';\r\n this.textarea.nativeElement.style.height = (this.textarea.nativeElement.scrollHeight) + 'px';\r\n }\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n }\r\n\r\n #onInput = function () {\r\n // this.style.height = 'auto';\r\n // this.style.height = (this.scrollHeight) + 'px';\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.required) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.maxlength > 0) {\r\n validators.push(Validators.maxLength(this.maxlength));\r\n }\r\n if (this.#pattern) {\r\n validators.push(Validators.pattern(this.#pattern));\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof (func) === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdTextarea } from './textarea.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n SdTranslateModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdTextarea\r\n ],\r\n exports: [\r\n SdCommonModule,\r\n SdTextarea\r\n ]\r\n})\r\nexport class SdTextareaModule { }\r\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var _model, _delay, _name, _form, _itemsChanges, _subscription, _cache, _item, _updateValidator;
|
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
3
|
import { Component, Input, ViewChild, Output, EventEmitter, ChangeDetectorRef, ContentChild, ChangeDetectionStrategy, Inject, Optional } from '@angular/core';
|
|
4
|
-
import { startWith, switchMap, debounceTime, map, finalize } from 'rxjs/operators';
|
|
4
|
+
import { startWith, switchMap, debounceTime, map, finalize, catchError } from 'rxjs/operators';
|
|
5
5
|
import * as uuid from 'uuid';
|
|
6
6
|
import hash from 'object-hash';
|
|
7
7
|
import { NgForm, Validators } from '@angular/forms';
|
|
@@ -34,9 +34,11 @@ export class SdAutocomplete {
|
|
|
34
34
|
_form.set(this, void 0);
|
|
35
35
|
_itemsChanges.set(this, new BehaviorSubject([]));
|
|
36
36
|
this.limit = 100;
|
|
37
|
+
this.hiddenAdd = false;
|
|
37
38
|
this.action = new EventEmitter();
|
|
38
39
|
this.modelChange = new EventEmitter();
|
|
39
40
|
this.sdChange = new EventEmitter();
|
|
41
|
+
this.sdAdd = new EventEmitter();
|
|
40
42
|
this.isRequired = false;
|
|
41
43
|
this.disableErrorMessage = false;
|
|
42
44
|
_subscription.set(this, new Subscription());
|
|
@@ -113,6 +115,11 @@ export class SdAutocomplete {
|
|
|
113
115
|
(_a = this.autocompleteTrigger) === null || _a === void 0 ? void 0 : _a.closePanel();
|
|
114
116
|
this.action.emit();
|
|
115
117
|
};
|
|
118
|
+
this.onAdd = ($event) => {
|
|
119
|
+
$event.stopPropagation();
|
|
120
|
+
$event === null || $event === void 0 ? void 0 : $event.preventDefault();
|
|
121
|
+
this.sdAdd.emit();
|
|
122
|
+
};
|
|
116
123
|
this.reValidate = () => {
|
|
117
124
|
this.inputControl.updateValueAndValidity({ emitEvent: true });
|
|
118
125
|
};
|
|
@@ -247,19 +254,17 @@ export class SdAutocomplete {
|
|
|
247
254
|
return obs.pipe(map(data => {
|
|
248
255
|
__classPrivateFieldGet(this, _cache)[key] = data || [];
|
|
249
256
|
Object.assign(__classPrivateFieldGet(this, _item), Array.toObject(__classPrivateFieldGet(this, _cache)[key], this.valueField));
|
|
250
|
-
this.previousKey = this.currentKey;
|
|
251
|
-
this.currentKey = key;
|
|
252
257
|
return __classPrivateFieldGet(this, _cache)[key];
|
|
253
|
-
}), finalize(() => this.loading = false));
|
|
258
|
+
}), catchError(() => of([])), finalize(() => this.loading = false));
|
|
254
259
|
}));
|
|
255
260
|
this.selected = combineLatest([
|
|
256
261
|
__classPrivateFieldGet(this, _itemsChanges).asObservable(),
|
|
257
262
|
this.formControl.valueChanges.pipe(startWith(this.formControl.value))
|
|
258
263
|
])
|
|
259
|
-
.pipe(switchMap(([items
|
|
264
|
+
.pipe(switchMap(([items]) => {
|
|
260
265
|
// Vì một số lý do chưa xác định mà khi sử dụng sdViewDef thì khi chuyển sang dạng view sẽ trigger val = null
|
|
261
266
|
// Nhưng formControl.value vẫn có giá trị đúng nên thực hiện gán val = this.formControl.value;
|
|
262
|
-
val = this.formControl.value;
|
|
267
|
+
const val = this.formControl.value;
|
|
263
268
|
if (!this.valueField) {
|
|
264
269
|
return of(val);
|
|
265
270
|
}
|
|
@@ -282,7 +287,12 @@ export class SdAutocomplete {
|
|
|
282
287
|
[this.valueField]: val,
|
|
283
288
|
[this.displayField]: val
|
|
284
289
|
};
|
|
285
|
-
}))
|
|
290
|
+
}), catchError(() => {
|
|
291
|
+
return of({
|
|
292
|
+
[this.valueField]: val,
|
|
293
|
+
[this.displayField]: val
|
|
294
|
+
});
|
|
295
|
+
}), finalize(() => this.loading = false));
|
|
286
296
|
}
|
|
287
297
|
return of(items.find(e => e[this.valueField] === val));
|
|
288
298
|
}
|
|
@@ -304,9 +314,9 @@ _model = new WeakMap(), _delay = new WeakMap(), _name = new WeakMap(), _form = n
|
|
|
304
314
|
SdAutocomplete.decorators = [
|
|
305
315
|
{ type: Component, args: [{
|
|
306
316
|
selector: 'sd-autocomplete',
|
|
307
|
-
template: "<label *ngIf=\"!appearance && label\" class=\"d-block mb-0 T14M\">{{label}} <span class=\"text-danger mb-2\"\r\n *ngIf=\"isRequired\">*</span></label>\r\n<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !autocompleteTrigger?.panelOpen && !isFocused; else default\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value, selectedItem: selected | async }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"sd-md\" [ngClass]=\"{'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n [floatLabel]=\"size === 'sm' || formControl.value ? 'always':'auto'\" [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{ label }}</mat-label>\r\n <input [id]=\"id\" #autocompleteTrigger [formControl]=\"inputControl\" [placeholder]=\"controlPlaceHolder | async\"\r\n [ngClass]=\"{'c-selected': formControl?.value}\" [matAutocomplete]=\"auto\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\r\n matInput [autocomplete]=\"id\" autocorrect=\"off\" [errorStateMatcher]=\"matcher\" [required]=\"isRequired\"\r\n [attr.data-qclabel]=\"label\" [attr.data-qcid]=\"qcId\" [sdPopoverTriggerFor]=\"null\"\r\n [sdPopoverDisabled]=\"!disableErrorMessage || formControl.valid\" #input />\r\n <mat-icon *ngIf=\"!loading && formControl?.value && !inputControl.disabled\" class=\"pointer sd-suffix-icon\"\r\n (click)=\"clear($event)\" matSuffix>cancel\r\n </mat-icon>\r\n <mat-icon *ngIf=\"actionIcon && !loading && !formControl?.value && !inputControl.disabled\"\r\n class=\"pointer sd-suffix-icon\" (click)=\"onAction($event)\" matSuffix>{{actionIcon}}\r\n </mat-icon>\r\n <
|
|
317
|
+
template: "<label *ngIf=\"!appearance && label\" class=\"d-block mb-0 T14M\">{{label}} <span class=\"text-danger mb-2\"\r\n *ngIf=\"isRequired\">*</span></label>\r\n<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !autocompleteTrigger?.panelOpen && !isFocused; else default\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value, selectedItem: selected | async }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"sd-md\" [ngClass]=\"{'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n [floatLabel]=\"size === 'sm' || formControl.value ? 'always':'auto'\" [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{ label }}</mat-label>\r\n <input [id]=\"id\" #autocompleteTrigger [formControl]=\"inputControl\" [placeholder]=\"controlPlaceHolder | async\"\r\n [ngClass]=\"{'c-selected': formControl?.value}\" [matAutocomplete]=\"auto\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\r\n matInput [autocomplete]=\"id\" autocorrect=\"off\" [errorStateMatcher]=\"matcher\" [required]=\"isRequired\"\r\n [attr.data-qclabel]=\"label\" [attr.data-qcid]=\"qcId\" [sdPopoverTriggerFor]=\"null\"\r\n [sdPopoverDisabled]=\"!disableErrorMessage || formControl.valid\" #input />\r\n <mat-icon *ngIf=\"!loading && formControl?.value && !inputControl.disabled\" class=\"pointer sd-suffix-icon\"\r\n (click)=\"clear($event)\" matSuffix>cancel\r\n </mat-icon>\r\n <mat-icon *ngIf=\"actionIcon && !loading && !formControl?.value && !inputControl.disabled\"\r\n class=\"pointer sd-suffix-icon\" (click)=\"onAction($event)\" matSuffix>{{actionIcon}}\r\n </mat-icon>\r\n <i [ngClass]=\"{'d-none': !loading}\" class=\"fa fa-spinner fa-pulse c-loading-icon\"></i>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onSelect($event.option.value)\">\r\n <ng-container *ngIf=\"filteredItems | async as items\">\r\n <ng-container *ngIf=\"items.length\">\r\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"displayField ? item[displayField] : item\">\r\n <ng-container *ngIf=\"autocompleteDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"autocompleteDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!autocompleteDisplayDef?.templateRef\">\r\n {{ displayField ? item[displayField] : item }}\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n <mat-option *ngIf=\"!items.length && inputControl.value && !isTyping && !loading\" [value]=\"\"\r\n class=\"T14R text-grey\">\r\n Kh\u00F4ng c\u00F3 d\u1EEF li\u1EC7u\r\n </mat-option>\r\n <mat-option class=\"sd__option--add\" *ngIf=\"!hiddenAdd && sdAdd?.observers?.length\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <div (click)=\"onAdd($event)\">\r\n <mat-icon class=\"mr-1\">add</mat-icon>\r\n {{'New item' | sdTranslate}}\r\n </div>\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"formControl?.errors?.required\">\r\n <ng-container *ngIf=\"!disableErrorMessage\">{{ \"This field is required\" | sdTranslate }}</ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>\r\n<!-- <sd-popover #error=\"sdPopover\" type=\"danger\" width=\"300px\">\r\n <span *ngIf=\"formControl.errors?.required\">\r\n {{ \"This field is required\" | sdTranslate }}\r\n </span>\r\n</sd-popover> -->",
|
|
308
318
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
309
|
-
styles: [":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.c-selected::-moz-placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected::placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected:-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.c-selected::-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-moz-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected:-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}"]
|
|
319
|
+
styles: [":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.c-selected::-moz-placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected::placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected:-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.c-selected::-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-moz-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected:-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}.sd__option--add{background-color:#fff;bottom:0;color:rgba(0,0,0,.87);cursor:pointer!important;position:-webkit-sticky;position:sticky;z-index:10}.c-loading-icon{position:absolute;right:5px;top:5px}"]
|
|
310
320
|
},] }
|
|
311
321
|
];
|
|
312
322
|
SdAutocomplete.ctorParameters = () => [
|
|
@@ -328,15 +338,17 @@ SdAutocomplete.propDecorators = {
|
|
|
328
338
|
limit: [{ type: Input }],
|
|
329
339
|
cacheChecksum: [{ type: Input }],
|
|
330
340
|
model: [{ type: Input }],
|
|
341
|
+
hiddenAdd: [{ type: Input }],
|
|
331
342
|
autocompleteDisplayDef: [{ type: ContentChild, args: [SdAutocompleteDisplayDefDirective,] }],
|
|
332
343
|
actionIcon: [{ type: Input }],
|
|
333
344
|
action: [{ type: Output }],
|
|
334
345
|
modelChange: [{ type: Output }],
|
|
335
346
|
sdChange: [{ type: Output }],
|
|
347
|
+
sdAdd: [{ type: Output }],
|
|
336
348
|
disabled: [{ type: Input }],
|
|
337
349
|
required: [{ type: Input }],
|
|
338
350
|
_disableErrorMessage: [{ type: Input, args: ['disableErrorMessage',] }],
|
|
339
351
|
input: [{ type: ViewChild, args: ['input',] }],
|
|
340
352
|
sdView: [{ type: ContentChild, args: [SdViewDefDirective,] }]
|
|
341
353
|
};
|
|
342
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvYXV0b2NvbXBsZXRlLyIsInNvdXJjZXMiOlsic3JjL2xpYi9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBSVosaUJBQWlCLEVBQ2pCLFlBQVksRUFDWix1QkFBdUIsRUFFdkIsTUFBTSxFQUNOLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5GLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUMvQixPQUFPLEVBQWUsTUFBTSxFQUFFLFVBQVUsRUFBZ0UsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakcsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBc0IsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHN0csTUFBTSwrQkFBK0I7SUFDbkMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBSSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxPQUEyQixF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R0FBQSxDQUFDLENBQUMsQ0FBQztJQUMxSixDQUFDO0lBRUQsZUFBZTs7UUFDYixtRkFBWSxVQUFVLHNDQUFhLElBQUksQ0FBQyxXQUFXLEVBQUU7SUFDdkQsQ0FBQztJQUVELFdBQVc7O1FBQ1QsNENBQW1CLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLG1GQUFZLGFBQWEsc0NBQWE7SUFDeEMsQ0FBQzs7OztZQTlORixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0Isb3JIQUE0QztnQkFFNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFoQ0MsaUJBQWlCOzRDQWtKZCxNQUFNLFNBQUMsV0FBVyxjQUFHLFFBQVE7OztrQkFoSC9CLEtBQUs7a0NBSUwsU0FBUyxTQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFO21CQU1sRSxLQUFLO3lCQUtMLEtBQUs7bUJBS0wsS0FBSzttQkFFTCxLQUFLO3FCQVdMLEtBQUssU0FBQyxPQUFPO3lCQU9iLEtBQUs7MkJBQ0wsS0FBSzswQkFDTCxLQUFLO29CQUdMLEtBQUs7b0JBWUwsS0FBSzs0QkFHTCxLQUFLO29CQUdMLEtBQUs7cUNBS0wsWUFBWSxTQUFDLGlDQUFpQzt5QkFDOUMsS0FBSztxQkFDTCxNQUFNOzBCQUNOLE1BQU07dUJBQ04sTUFBTTt1QkFHTixLQUFLO3VCQVdMLEtBQUs7bUNBS0wsS0FBSyxTQUFDLHFCQUFxQjtvQkFLM0IsU0FBUyxTQUFDLE9BQU87cUJBQ2pCLFlBQVksU0FBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5qZWN0LFxyXG4gIE9wdGlvbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBkZWJvdW5jZVRpbWUsIG1hcCwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgaGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBOZ0Zvcm0sIFZhbGlkYXRvcnMsIEZvcm1Hcm91cERpcmVjdGl2ZSwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgQXN5bmNWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWZlciwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBTZEF1dG9jb21wbGV0ZURpc3BsYXlEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2F1dG9jb21wbGV0ZS1kaXNwbGF5LWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgRk9STV9DT05GSUcsIElGb3JtQ29uZmlndXJhdGlvbiwgU2RGb3JtQ29udHJvbCwgU2RWaWV3RGVmRGlyZWN0aXZlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRBcHBlYXJhbmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcblxyXG5jbGFzcyBTZEF1dG9jb21wbGV0ZUVycm90U3RhdGVNYXRjaGVyIGltcGxlbWVudHMgRXJyb3JTdGF0ZU1hdGNoZXIge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sKSB7IH1cclxuICBpc0Vycm9yU3RhdGUoY29udHJvbDogRm9ybUNvbnRyb2wgfCBudWxsLCBmb3JtOiBGb3JtR3JvdXBEaXJlY3RpdmUgfCBOZ0Zvcm0gfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBpc1N1Ym1pdHRlZCA9IGZvcm0gJiYgZm9ybS5zdWJtaXR0ZWQ7XHJcbiAgICByZXR1cm4gISEodGhpcy5mb3JtQ29udHJvbD8uaW52YWxpZCAmJiAodGhpcy5mb3JtQ29udHJvbD8uZGlydHkgfHwgdGhpcy5mb3JtQ29udHJvbD8udG91Y2hlZCB8fCBpc1N1Ym1pdHRlZCkpO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1hdXRvY29tcGxldGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEF1dG9jb21wbGV0ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBzZXQga2V5KHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuI2NhY2hlID0ge307XHJcbiAgICB0aGlzLiNpdGVtID0ge307XHJcbiAgfVxyXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgeyByZWFkOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0pIGF1dG9jb21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XHJcbiAgaWQgPSBgSSR7dXVpZC52NCgpfWA7XHJcbiAgI21vZGVsOiBzdHJpbmcgfCBudW1iZXI7XHJcblxyXG4gICNkZWxheSA9IDA7IC8vIFNhdSBraG/huqNuZyB0aOG7nWkgZ2lhbiBkZWxheSBu4bq/dSBraMO0bmcgY8OzIHRoYXkgxJHhu5VpIHRow6wgdGjDrCBt4bubaSBi4bqvdCDEkeG6p3UgdGjhu7FjIGhp4buHbiBn4buNaSBow6BtXHJcbiAgI25hbWUgPSB1dWlkLnY0KCk7XHJcbiAgQElucHV0KCkgc2V0IG5hbWUodmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy4jbmFtZSA9IHZhbDtcclxuICAgIH1cclxuICB9XHJcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgaW5wdXRDb250cm9sID0gbmV3IFNkRm9ybUNvbnRyb2woKTtcclxuICBmb3JtQ29udHJvbCA9IG5ldyBTZEZvcm1Db250cm9sKCk7XHJcbiAgbWF0Y2hlciA9IG5ldyBTZEF1dG9jb21wbGV0ZUVycm90U3RhdGVNYXRjaGVyKHRoaXMuZm9ybUNvbnRyb2wpO1xyXG4gIEBJbnB1dCgpIHNpemU6ICdzbScgfCAnbGcnO1xyXG4gICNmb3JtOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgc2V0IGZvcm0odmFsOiBOZ0Zvcm0gfCBGb3JtR3JvdXApIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIE5nRm9ybSkge1xyXG4gICAgICAgIHRoaXMuI2Zvcm0gPSB2YWwuZm9ybTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLiNmb3JtID0gdmFsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHFjSWQ6IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgnbGFiZWwnKSBzZXQgX2xhYmVsKHZhbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmxhYmVsID0gdmFsO1xyXG4gICAgdGhpcy5xY0lkID0gaGFzaCh7XHJcbiAgICAgIHNlbGVjdG9yOiAnc2QtYXV0b2NvbXBsZXRlJyxcclxuICAgICAgbGFiZWw6IHZhbFxyXG4gICAgfSk7XHJcbiAgfTtcclxuICBASW5wdXQoKSB2YWx1ZUZpZWxkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGlzcGxheUZpZWxkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgI2l0ZW1zQ2hhbmdlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10gfCBTZWFyY2hGdW5jPihbXSk7XHJcbiAgQElucHV0KCkgc2V0IGl0ZW1zKGl0ZW1zOiB1bmRlZmluZWQgfCBhbnlbXSB8IFNlYXJjaEZ1bmMpIHtcclxuICAgIGlmICghaXRlbXMpIHtcclxuICAgICAgdGhpcy4jaXRlbXNDaGFuZ2VzLm5leHQoW10pO1xyXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xyXG4gICAgICB0aGlzLiNpdGVtc0NoYW5nZXMubmV4dChpdGVtcy5maWx0ZXIoZSA9PiBlICE9PSBudWxsICYmIGUgIT09IHVuZGVmaW5lZCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy4jaXRlbXNDaGFuZ2VzLm5leHQoaXRlbXMpO1xyXG4gICAgICB0aGlzLiNkZWxheSA9IDUwMDtcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgbGltaXQgPSAxMDA7XHJcbiAgZmlsdGVyZWRJdGVtczogT2JzZXJ2YWJsZTxhbnlbXT47XHJcblxyXG4gIEBJbnB1dCgpIGNhY2hlQ2hlY2tzdW06IGFueTtcclxuXHJcbiAgY29udHJvbFBsYWNlSG9sZGVyOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bWJlcj47XHJcbiAgQElucHV0KCkgc2V0IG1vZGVsKHZhbHVlOiB1bmRlZmluZWQgfCBudW1iZXIgfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuI21vZGVsID0gdmFsdWU7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoU2RBdXRvY29tcGxldGVEaXNwbGF5RGVmRGlyZWN0aXZlKSBhdXRvY29tcGxldGVEaXNwbGF5RGVmOiBTZEF1dG9jb21wbGV0ZURpc3BsYXlEZWZEaXJlY3RpdmU7XHJcbiAgQElucHV0KCkgYWN0aW9uSWNvbjogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy8gT3B0aW9uYWxcclxuICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsOiBib29sZWFuIHwgJycpIHtcclxuICAgIHZhbCA9ICh2YWwgPT09ICcnKSB8fCB2YWw7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlucHV0Q29udHJvbC5lbmFibGUoKTtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNldCByZXF1aXJlZCh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5pc1JlcXVpcmVkID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuICBkaXNhYmxlRXJyb3JNZXNzYWdlID0gZmFsc2U7XHJcbiAgQElucHV0KCdkaXNhYmxlRXJyb3JNZXNzYWdlJykgc2V0IF9kaXNhYmxlRXJyb3JNZXNzYWdlKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB0aGlzLmRpc2FibGVFcnJvck1lc3NhZ2UgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgdmFsID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICB9XHJcbiAgI3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xyXG4gIEBDb250ZW50Q2hpbGQoU2RWaWV3RGVmRGlyZWN0aXZlKSBzZFZpZXc6IFNkVmlld0RlZkRpcmVjdGl2ZTtcclxuICBpc0ZvY3VzZWQgPSBmYWxzZTtcclxuICBzZWxlY3RlZDogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuICAjY2FjaGU6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueVtdXHJcbiAgfSA9IHt9O1xyXG4gICNpdGVtOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnlcclxuICB9ID0ge307XHJcbiAgaXNUeXBpbmcgPSBmYWxzZTtcclxuICBwcmV2aW91c0tleTogc3RyaW5nO1xyXG4gIGN1cnJlbnRLZXk6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoRk9STV9DT05GSUcpIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUNvbmZpZzogSUZvcm1Db25maWd1cmF0aW9uKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYXBwZWFyYW5jZSA9IHRoaXMuYXBwZWFyYW5jZSB8fCB0aGlzLmZvcm1Db25maWc/LmFwcGVhcmFuY2U7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuaW5wdXRDb250cm9sLnRvdWNoQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuZm9ybUNvbnRyb2wuc2RDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmlucHV0Q29udHJvbC5zZENoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuaW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzVHlwaW5nID0gdHJ1ZTtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLiNpdGVtc0NoYW5nZXMuYXNPYnNlcnZhYmxlKCksXHJcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSh0aGlzLiNkZWxheSkpXSkucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKFtpdGVtcywgc2VhcmNoVGV4dF0pID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNUeXBpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHNlYXJjaFRleHQgPSBzZWFyY2hUZXh0IHx8ICcnO1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiAoaXRlbXMpICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtc1xyXG4gICAgICAgICAgICAgIC5zZWFyY2goc2VhcmNoVGV4dCwgW3RoaXMudmFsdWVGaWVsZCwgdGhpcy5kaXNwbGF5RmllbGRdKVxyXG4gICAgICAgICAgICAgIC5wYWdpbmcodGhpcy5saW1pdClcclxuICAgICAgICAgICAgICAuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBrZXkgPSBoYXNoKHtcclxuICAgICAgICAgICAgY2hlY2tzdW06IHRoaXMuY2FjaGVDaGVja3N1bSB8fCBudWxsLFxyXG4gICAgICAgICAgICBzZWFyY2hUZXh0XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICh0aGlzLiNjYWNoZVtrZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYoIXRoaXMuI2NhY2hlW2tleV0/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNUeXBpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiNjYWNoZVtrZXldLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgICAgICAgICBjb25zdCBmdW5jID0gaXRlbXMoc2VhcmNoVGV4dCwgZmFsc2UpO1xyXG4gICAgICAgICAgaWYgKGZ1bmMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIG9icyA9IGRlZmVyKCgpID0+IGZyb20oZnVuYykpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgb2JzID0gZnVuYztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm4gb2JzLnBpcGUobWFwKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtrZXldID0gZGF0YSB8fCBbXTtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLiNpdGVtLCBBcnJheS50b09iamVjdCh0aGlzLiNjYWNoZVtrZXldLCB0aGlzLnZhbHVlRmllbGQpKTtcclxuICAgICAgICAgICAgdGhpcy5wcmV2aW91c0tleSA9IHRoaXMuY3VycmVudEtleTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50S2V5ID0ga2V5O1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy4jY2FjaGVba2V5XTtcclxuICAgICAgICAgIH0pLCBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmcgPSBmYWxzZSkpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMuI2l0ZW1zQ2hhbmdlcy5hc09ic2VydmFibGUoKSxcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5mb3JtQ29udHJvbC52YWx1ZSkpXSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChbaXRlbXMsIHZhbF0pID0+IHtcclxuICAgICAgICAgIC8vIFbDrCBt4buZdCBz4buRIGzDvSBkbyBjaMawYSB4w6FjIMSR4buLbmggbcOgIGtoaSBz4butIGThu6VuZyBzZFZpZXdEZWYgdGjDrCBraGkgY2h1eeG7g24gc2FuZyBk4bqhbmcgdmlldyBz4bq9IHRyaWdnZXIgdmFsID0gbnVsbFxyXG4gICAgICAgICAgLy8gTmjGsG5nIGZvcm1Db250cm9sLnZhbHVlIHbhuqtuIGPDsyBnacOhIHRy4buLIMSRw7puZyBuw6puIHRo4buxYyBoaeG7h24gZ8OhbiB2YWwgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgdmFsID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGlmICghdGhpcy52YWx1ZUZpZWxkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZih2YWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHZhbCB8fCB2YWwgPT09IDApIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiAoaXRlbXMpID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuI2l0ZW1bdmFsXSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMuI2l0ZW1bdmFsXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8YW55W10+O1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBpdGVtcyh2YWwsIHRydWUpO1xyXG4gICAgICAgICAgICAgIGlmIChmdW5jIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICAgICAgb2JzID0gZGVmZXIoKCkgPT4gZnJvbShmdW5jKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9icyA9IGZ1bmM7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiBvYnMucGlwZShtYXAoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuI2l0ZW0sIEFycmF5LnRvT2JqZWN0KGRhdGEsIHRoaXMudmFsdWVGaWVsZCkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2l0ZW1bdmFsXSB8fCB7XHJcbiAgICAgICAgICAgICAgICAgIFt0aGlzLnZhbHVlRmllbGRdOiB2YWwsXHJcbiAgICAgICAgICAgICAgICAgIFt0aGlzLmRpc3BsYXlGaWVsZF06IHZhbFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG9mKGl0ZW1zLmZpbmQoZSA9PiBlW3RoaXMudmFsdWVGaWVsZF0gPT09IHZhbCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIG9mKCcnKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5jb250cm9sUGxhY2VIb2xkZXIgPSB0aGlzLnNlbGVjdGVkLnBpcGUobWFwKGl0ZW0gPT4gaXRlbT8uW3RoaXMuZGlzcGxheUZpZWxkXSA/PyBpdGVtID8/IHRoaXMucGxhY2Vob2xkZXIgPz8gKHRoaXMuYXBwZWFyYW5jZSA/IHRoaXMubGFiZWwgOiAnJykpKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuI2Zvcm0/LmFkZENvbnRyb2wodGhpcy4jbmFtZSwgdGhpcy5mb3JtQ29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy4jZm9ybT8ucmVtb3ZlQ29udHJvbCh0aGlzLiNuYW1lKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgaWYgKGl0ZW0pIHtcclxuICAgICAgaWYgKHR5cGVvZiAoaXRlbSkgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiAoaXRlbSkgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgIT09IGl0ZW0pIHtcclxuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoaXRlbSk7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoaXRlbSk7XHJcbiAgICAgICAgICB0aGlzLnNkQ2hhbmdlLmVtaXQoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWVGaWVsZCAmJiB0aGlzLmRpc3BsYXlGaWVsZCkge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IGl0ZW0/Llt0aGlzLnZhbHVlRmllbGRdIHx8IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgIT09IHZhbCkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWwpO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHZhbCk7XHJcbiAgICAgICAgICB0aGlzLnNkQ2hhbmdlLmVtaXQoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnLCB7XHJcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRm9jdXMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XHJcbiAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgICAvLyB0aGlzLmlucHV0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pbnB1dENvbnRyb2wuc2V0VmFsdWUoJycsIHtcclxuICAgICAgZW1pdEV2ZW50OiBmYWxzZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuc2RWaWV3Py50ZW1wbGF0ZVJlZikge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wuZGlzYWJsZWQgJiYgIXRoaXMuaXNGb2N1c2VkKSB7XHJcbiAgICAgICAgdGhpcy5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBibHVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudD8uYmx1cigpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyPy5vcGVuUGFuZWwoKTtcclxuICAgICAgdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBjbGVhciA9ICgkZXZlbnQ/OiBhbnkpID0+IHtcclxuICAgICRldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmlucHV0Q29udHJvbD8uc2V0VmFsdWUoJycpO1xyXG4gICAgaWYgKHRoaXMuI21vZGVsKSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdChudWxsKTtcclxuICAgICAgdGhpcy5zZENoYW5nZS5lbWl0KG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BY3Rpb24gPSAoJGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgJGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuYXV0b2NvbXBsZXRlVHJpZ2dlcj8uY2xvc2VQYW5lbCgpO1xyXG4gICAgdGhpcy5hY3Rpb24uZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcmVWYWxpZGF0ZSA9ICgpID0+IHtcclxuICAgIHRoaXMuaW5wdXRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICAjdXBkYXRlVmFsaWRhdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIC8vIGNvbnN0IGFzeW5jVmFsaWRhdG9yczogQXN5bmNWYWxpZGF0b3JGbltdID0gW107XHJcbiAgICBpZiAodGhpcy5pc1JlcXVpcmVkKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIC8vIGlmICh0aGlzLiN2YWxpZGF0b3IpIHtcclxuICAgIC8vICAgYXN5bmNWYWxpZGF0b3JzLnB1c2godGhpcy4jY3VzdG9tVmFsaWRhdG9yKHRoaXMuI3ZhbGlkYXRvcikpO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgLy8gdGhpcy5mb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBTZWFyY2hGdW5jID0gKHNlYXJjaFRleHQ/OiBzdHJpbmcgfCBudW1iZXIsIGlzRm9ybVZhbHVlPzogYm9vbGVhbikgPT4gUHJvbWlzZTxhbnlbXT4gfCBPYnNlcnZhYmxlPGFueVtdPjsiXX0=
|
|
354
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvYXV0b2NvbXBsZXRlLyIsInNvdXJjZXMiOlsic3JjL2xpYi9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBSVosaUJBQWlCLEVBQ2pCLFlBQVksRUFDWix1QkFBdUIsRUFFdkIsTUFBTSxFQUNOLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFlLE1BQU0sRUFBRSxVQUFVLEVBQWdFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQXNCLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzdHLE1BQU0sK0JBQStCO0lBQ25DLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUksQ0FBQztJQUNqRCxZQUFZLENB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QUs7MEJBQ0wsS0FBSztvQkFHTCxLQUFLO29CQVlMLEtBQUs7NEJBR0wsS0FBSztvQkFHTCxLQUFLO3dCQUlMLEtBQUs7cUNBRUwsWUFBWSxTQUFDLGlDQUFpQzt5QkFDOUMsS0FBSztxQkFDTCxNQUFNOzBCQUNOLE1BQU07dUJBQ04sTUFBTTtvQkFDTixNQUFNO3VCQUdOLEtBQUs7dUJBV0wsS0FBSzttQ0FLTCxLQUFLLFNBQUMscUJBQXFCO29CQUszQixTQUFTLFNBQUMsT0FBTztxQkFDakIsWUFBWSxTQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgRWxlbWVudFJlZixcclxuICBJbmplY3QsXHJcbiAgT3B0aW9uYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIGRlYm91bmNlVGltZSwgbWFwLCBmaW5hbGl6ZSwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIE5nRm9ybSwgVmFsaWRhdG9ycywgRm9ybUdyb3VwRGlyZWN0aXZlLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBBc3luY1ZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlZmVyLCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IFNkQXV0b2NvbXBsZXRlRGlzcGxheURlZkRpcmVjdGl2ZSB9IGZyb20gJy4vYXV0b2NvbXBsZXRlLWRpc3BsYXktZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBGT1JNX0NPTkZJRywgSUZvcm1Db25maWd1cmF0aW9uLCBTZEZvcm1Db250cm9sLCBTZFZpZXdEZWZEaXJlY3RpdmUgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuXHJcbmNsYXNzIFNkQXV0b2NvbXBsZXRlRXJyb3RTdGF0ZU1hdGNoZXIgaW1wbGVtZW50cyBFcnJvclN0YXRlTWF0Y2hlciB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2wpIHsgfVxyXG4gIGlzRXJyb3JTdGF0ZShjb250cm9sOiBGb3JtQ29udHJvbCB8IG51bGwsIGZvcm06IEZvcm1Hcm91cERpcmVjdGl2ZSB8IE5nRm9ybSB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGlzU3VibWl0dGVkID0gZm9ybSAmJiBmb3JtLnN1Ym1pdHRlZDtcclxuICAgIHJldHVybiAhISh0aGlzLmZvcm1Db250cm9sPy5pbnZhbGlkICYmICh0aGlzLmZvcm1Db250cm9sPy5kaXJ0eSB8fCB0aGlzLmZvcm1Db250cm9sPy50b3VjaGVkIHx8IGlzU3VibWl0dGVkKSk7XHJcbiAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWF1dG9jb21wbGV0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkQXV0b2NvbXBsZXRlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIHNldCBrZXkodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy4jY2FjaGUgPSB7fTtcclxuICAgIHRoaXMuI2l0ZW0gPSB7fTtcclxuICB9XHJcbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCB7IHJlYWQ6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSkgYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuICBpZCA9IGBJJHt1dWlkLnY0KCl9YDtcclxuICAjbW9kZWw6IHN0cmluZyB8IG51bWJlcjtcclxuXHJcbiAgI2RlbGF5ID0gMDsgLy8gU2F1IGtob+G6o25nIHRo4budaSBnaWFuIGRlbGF5IG7hur91IGtow7RuZyBjw7MgdGhheSDEkeG7lWkgdGjDrCB0aMOsIG3hu5tpIGLhuq90IMSR4bqndSB0aOG7sWMgaGnhu4duIGfhu41pIGjDoG1cclxuICAjbmFtZSA9IHV1aWQudjQoKTtcclxuICBASW5wdXQoKSBzZXQgbmFtZSh2YWw6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLiNuYW1lID0gdmFsO1xyXG4gICAgfVxyXG4gIH1cclxuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuICBpbnB1dENvbnRyb2wgPSBuZXcgU2RGb3JtQ29udHJvbCgpO1xyXG4gIGZvcm1Db250cm9sID0gbmV3IFNkRm9ybUNvbnRyb2woKTtcclxuICBtYXRjaGVyID0gbmV3IFNkQXV0b2NvbXBsZXRlRXJyb3RTdGF0ZU1hdGNoZXIodGhpcy5mb3JtQ29udHJvbCk7XHJcbiAgQElucHV0KCkgc2l6ZTogJ3NtJyB8ICdsZyc7XHJcbiAgI2Zvcm06IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBzZXQgZm9ybSh2YWw6IE5nRm9ybSB8IEZvcm1Hcm91cCkge1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICBpZiAodmFsIGluc3RhbmNlb2YgTmdGb3JtKSB7XHJcbiAgICAgICAgdGhpcy4jZm9ybSA9IHZhbC5mb3JtO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuI2Zvcm0gPSB2YWw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcWNJZDogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCdsYWJlbCcpIHNldCBfbGFiZWwodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMubGFiZWwgPSB2YWw7XHJcbiAgICB0aGlzLnFjSWQgPSBoYXNoKHtcclxuICAgICAgc2VsZWN0b3I6ICdzZC1hdXRvY29tcGxldGUnLFxyXG4gICAgICBsYWJlbDogdmFsXHJcbiAgICB9KTtcclxuICB9O1xyXG4gIEBJbnB1dCgpIHZhbHVlRmllbGQ6IHN0cmluZztcclxuICBASW5wdXQoKSBkaXNwbGF5RmllbGQ6IHN0cmluZztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICAjaXRlbXNDaGFuZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXSB8IFNlYXJjaEZ1bmM+KFtdKTtcclxuICBASW5wdXQoKSBzZXQgaXRlbXMoaXRlbXM6IHVuZGVmaW5lZCB8IGFueVtdIHwgU2VhcmNoRnVuYykge1xyXG4gICAgaWYgKCFpdGVtcykge1xyXG4gICAgICB0aGlzLiNpdGVtc0NoYW5nZXMubmV4dChbXSk7XHJcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XHJcbiAgICAgIHRoaXMuI2l0ZW1zQ2hhbmdlcy5uZXh0KGl0ZW1zLmZpbHRlcihlID0+IGUgIT09IG51bGwgJiYgZSAhPT0gdW5kZWZpbmVkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLiNpdGVtc0NoYW5nZXMubmV4dChpdGVtcyk7XHJcbiAgICAgIHRoaXMuI2RlbGF5ID0gNTAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBsaW1pdCA9IDEwMDtcclxuICBmaWx0ZXJlZEl0ZW1zOiBPYnNlcnZhYmxlPGFueVtdPjtcclxuXHJcbiAgQElucHV0KCkgY2FjaGVDaGVja3N1bTogYW55O1xyXG5cclxuICBjb250cm9sUGxhY2VIb2xkZXI6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVtYmVyPjtcclxuICBASW5wdXQoKSBzZXQgbW9kZWwodmFsdWU6IHVuZGVmaW5lZCB8IG51bWJlciB8IHN0cmluZykge1xyXG4gICAgdGhpcy4jbW9kZWwgPSB2YWx1ZTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxuICBASW5wdXQoKSBoaWRkZW5BZGQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChTZEF1dG9jb21wbGV0ZURpc3BsYXlEZWZEaXJlY3RpdmUpIGF1dG9jb21wbGV0ZURpc3BsYXlEZWY6IFNkQXV0b2NvbXBsZXRlRGlzcGxheURlZkRpcmVjdGl2ZTtcclxuICBASW5wdXQoKSBhY3Rpb25JY29uOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzZEFkZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy8gT3B0aW9uYWxcclxuICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsOiBib29sZWFuIHwgJycpIHtcclxuICAgIHZhbCA9ICh2YWwgPT09ICcnKSB8fCB2YWw7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlucHV0Q29udHJvbC5lbmFibGUoKTtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNldCByZXF1aXJlZCh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5pc1JlcXVpcmVkID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuICBkaXNhYmxlRXJyb3JNZXNzYWdlID0gZmFsc2U7XHJcbiAgQElucHV0KCdkaXNhYmxlRXJyb3JNZXNzYWdlJykgc2V0IF9kaXNhYmxlRXJyb3JNZXNzYWdlKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB0aGlzLmRpc2FibGVFcnJvck1lc3NhZ2UgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgdmFsID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICB9XHJcbiAgI3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xyXG4gIEBDb250ZW50Q2hpbGQoU2RWaWV3RGVmRGlyZWN0aXZlKSBzZFZpZXc6IFNkVmlld0RlZkRpcmVjdGl2ZTtcclxuICBpc0ZvY3VzZWQgPSBmYWxzZTtcclxuICBzZWxlY3RlZDogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuICAjY2FjaGU6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueVtdXHJcbiAgfSA9IHt9O1xyXG4gICNpdGVtOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnlcclxuICB9ID0ge307XHJcbiAgaXNUeXBpbmcgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoRk9STV9DT05GSUcpIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUNvbmZpZzogSUZvcm1Db25maWd1cmF0aW9uKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYXBwZWFyYW5jZSA9IHRoaXMuYXBwZWFyYW5jZSB8fCB0aGlzLmZvcm1Db25maWc/LmFwcGVhcmFuY2U7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuaW5wdXRDb250cm9sLnRvdWNoQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuZm9ybUNvbnRyb2wuc2RDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmlucHV0Q29udHJvbC5zZENoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuaW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzVHlwaW5nID0gdHJ1ZTtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLiNpdGVtc0NoYW5nZXMuYXNPYnNlcnZhYmxlKCksXHJcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSh0aGlzLiNkZWxheSkpXSkucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKFtpdGVtcywgc2VhcmNoVGV4dF0pID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNUeXBpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHNlYXJjaFRleHQgPSBzZWFyY2hUZXh0IHx8ICcnO1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiAoaXRlbXMpICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtc1xyXG4gICAgICAgICAgICAgIC5zZWFyY2goc2VhcmNoVGV4dCwgW3RoaXMudmFsdWVGaWVsZCwgdGhpcy5kaXNwbGF5RmllbGRdKVxyXG4gICAgICAgICAgICAgIC5wYWdpbmcodGhpcy5saW1pdClcclxuICAgICAgICAgICAgICAuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBrZXkgPSBoYXNoKHtcclxuICAgICAgICAgICAgY2hlY2tzdW06IHRoaXMuY2FjaGVDaGVja3N1bSB8fCBudWxsLFxyXG4gICAgICAgICAgICBzZWFyY2hUZXh0XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICh0aGlzLiNjYWNoZVtrZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLiNjYWNoZVtrZXldPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICB0aGlzLmlzVHlwaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy4jY2FjaGVba2V5XS5hc09ic2VydmFibGUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8YW55W10+O1xyXG4gICAgICAgICAgY29uc3QgZnVuYyA9IGl0ZW1zKHNlYXJjaFRleHQsIGZhbHNlKTtcclxuICAgICAgICAgIGlmIChmdW5jIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICBvYnMgPSBkZWZlcigoKSA9PiBmcm9tKGZ1bmMpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG9icyA9IGZ1bmM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuIG9icy5waXBlKG1hcChkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVba2V5XSA9IGRhdGEgfHwgW107XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy4jaXRlbSwgQXJyYXkudG9PYmplY3QodGhpcy4jY2FjaGVba2V5XSwgdGhpcy52YWx1ZUZpZWxkKSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiNjYWNoZVtrZXldO1xyXG4gICAgICAgICAgfSksIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKVxyXG4gICAgICAgICAgICAsIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZyA9IGZhbHNlKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgdGhpcy4jaXRlbXNDaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpLFxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSldKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKFtpdGVtc10pID0+IHtcclxuICAgICAgICAgIC8vIFbDrCBt4buZdCBz4buRIGzDvSBkbyBjaMawYSB4w6FjIMSR4buLbmggbcOgIGtoaSBz4butIGThu6VuZyBzZFZpZXdEZWYgdGjDrCBraGkgY2h1eeG7g24gc2FuZyBk4bqhbmcgdmlldyBz4bq9IHRyaWdnZXIgdmFsID0gbnVsbFxyXG4gICAgICAgICAgLy8gTmjGsG5nIGZvcm1Db250cm9sLnZhbHVlIHbhuqtuIGPDsyBnacOhIHRy4buLIMSRw7puZyBuw6puIHRo4buxYyBoaeG7h24gZ8OhbiB2YWwgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgY29uc3QgdmFsID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGlmICghdGhpcy52YWx1ZUZpZWxkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZih2YWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHZhbCB8fCB2YWwgPT09IDApIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiAoaXRlbXMpID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuI2l0ZW1bdmFsXSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMuI2l0ZW1bdmFsXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8YW55W10+O1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBpdGVtcyh2YWwsIHRydWUpO1xyXG4gICAgICAgICAgICAgIGlmIChmdW5jIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICAgICAgb2JzID0gZGVmZXIoKCkgPT4gZnJvbShmdW5jKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9icyA9IGZ1bmM7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiBvYnMucGlwZShtYXAoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuI2l0ZW0sIEFycmF5LnRvT2JqZWN0KGRhdGEsIHRoaXMudmFsdWVGaWVsZCkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2l0ZW1bdmFsXSB8fCB7XHJcbiAgICAgICAgICAgICAgICAgIFt0aGlzLnZhbHVlRmllbGRdOiB2YWwsXHJcbiAgICAgICAgICAgICAgICAgIFt0aGlzLmRpc3BsYXlGaWVsZF06IHZhbFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2Yoe1xyXG4gICAgICAgICAgICAgICAgICBbdGhpcy52YWx1ZUZpZWxkXTogdmFsLFxyXG4gICAgICAgICAgICAgICAgICBbdGhpcy5kaXNwbGF5RmllbGRdOiB2YWxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0pLCBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmcgPSBmYWxzZSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBvZihpdGVtcy5maW5kKGUgPT4gZVt0aGlzLnZhbHVlRmllbGRdID09PSB2YWwpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBvZignJyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIHRoaXMuY29udHJvbFBsYWNlSG9sZGVyID0gdGhpcy5zZWxlY3RlZC5waXBlKG1hcChpdGVtID0+IGl0ZW0/Llt0aGlzLmRpc3BsYXlGaWVsZF0gPz8gaXRlbSA/PyB0aGlzLnBsYWNlaG9sZGVyID8/ICh0aGlzLmFwcGVhcmFuY2UgPyB0aGlzLmxhYmVsIDogJycpKSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLiNmb3JtPy5hZGRDb250cm9sKHRoaXMuI25hbWUsIHRoaXMuZm9ybUNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuI2Zvcm0/LnJlbW92ZUNvbnRyb2wodGhpcy4jbmFtZSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChpdGVtOiBhbnkpID0+IHtcclxuICAgIGlmIChpdGVtKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgKGl0ZW0pID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgKGl0ZW0pID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnZhbHVlICE9PSBpdGVtKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGl0ZW0pO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KGl0ZW0pO1xyXG4gICAgICAgICAgdGhpcy5zZENoYW5nZS5lbWl0KGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlRmllbGQgJiYgdGhpcy5kaXNwbGF5RmllbGQpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBpdGVtPy5bdGhpcy52YWx1ZUZpZWxkXSB8fCBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnZhbHVlICE9PSB2YWwpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsKTtcclxuICAgICAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWwpO1xyXG4gICAgICAgICAgdGhpcy5zZENoYW5nZS5lbWl0KGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZSgnJywge1xyXG4gICAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5pbnB1dENvbnRyb2wuc2V0VmFsdWUoJycpO1xyXG4gICAgLy8gdGhpcy5pbnB1dENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKCcnLCB7XHJcbiAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DbGljayA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLnNkVmlldz8udGVtcGxhdGVSZWYpIHtcclxuICAgICAgaWYgKCF0aGlzLmZvcm1Db250cm9sLmRpc2FibGVkICYmICF0aGlzLmlzRm9jdXNlZCkge1xyXG4gICAgICAgIHRoaXMuZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYmx1ciA9ICgpID0+IHtcclxuICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmJsdXIoKTtcclxuICB9XHJcblxyXG4gIGZvY3VzID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlVHJpZ2dlcj8ub3BlblBhbmVsKCk7XHJcbiAgICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgY2xlYXIgPSAoJGV2ZW50PzogYW55KSA9PiB7XHJcbiAgICAkZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5pbnB1dENvbnRyb2w/LnNldFZhbHVlKCcnKTtcclxuICAgIGlmICh0aGlzLiNtb2RlbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdChudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQWN0aW9uID0gKCRldmVudDogRXZlbnQpID0+IHtcclxuICAgICRldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXI/LmNsb3NlUGFuZWwoKTtcclxuICAgIHRoaXMuYWN0aW9uLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uQWRkID0gKCRldmVudDogRXZlbnQpID0+IHtcclxuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICRldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuc2RBZGQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcmVWYWxpZGF0ZSA9ICgpID0+IHtcclxuICAgIHRoaXMuaW5wdXRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICAjdXBkYXRlVmFsaWRhdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIC8vIGNvbnN0IGFzeW5jVmFsaWRhdG9yczogQXN5bmNWYWxpZGF0b3JGbltdID0gW107XHJcbiAgICBpZiAodGhpcy5pc1JlcXVpcmVkKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIC8vIGlmICh0aGlzLiN2YWxpZGF0b3IpIHtcclxuICAgIC8vICAgYXN5bmNWYWxpZGF0b3JzLnB1c2godGhpcy4jY3VzdG9tVmFsaWRhdG9yKHRoaXMuI3ZhbGlkYXRvcikpO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgLy8gdGhpcy5mb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBTZWFyY2hGdW5jID0gKHNlYXJjaFRleHQ/OiBzdHJpbmcgfCBudW1iZXIsIGlzRm9ybVZhbHVlPzogYm9vbGVhbikgPT4gUHJvbWlzZTxhbnlbXT4gfCBPYnNlcnZhYmxlPGFueVtdPjsiXX0=
|