survery-lib 0.1.46 → 0.1.48

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.
@@ -90,11 +90,11 @@ export class QuestionMatrixTemplateComponent {
90
90
  return element;
91
91
  }
92
92
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionMatrixTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionMatrixTemplateComponent, selector: "lib-question-matrix-template", inputs: { setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" style=\" border-collapse: collapse;\"\n[ngClass]=\"{'d-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"matrix-question\" [formGroup]=\"rForm\">\n <div class=\"matrix-table\" formArrayName=\"subQuestionArray\">\n <div class=\"matrix-head-row\">\n <div class=\"matrix-col\">\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answers of surveyQuestion?.surveyAnswers\" >\n <span [innerHTML]=\"answers.answerTitle\"></span>\n </div>\n </div>\n\n <div class=\"matrix-row\" [attr.id]=\"'question_'+questionGroup.value.subQuestionId\"\n *ngFor=\"let questionGroup of fCtrls.subQuestionArray.controls ;let subQuestionIndex = index\"\n [ngClass]=\"{'invalid-question': questionGroup.controls.answer.invalid}\">\n <div class=\"matrix-col matrix-sub-quastion\" [innerHTML]=\"questionGroup.value.questionTitle\">\n </div>\n <div class=\"matrix-col answer__container\" *ngFor=\"let answer of surveyQuestion?.surveyAnswers;let answerIndex = index\">\n <div class=\"form-check form-check-radio form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"{{elemId}}__radio-btn-option_{{subQuestionIndex}}\"\n id=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\" (change)=\"onChangeAnswer(questionGroup.value ,answer)\"\n value=\"{{answer.answerId}}\" [checked]=\"answer.answerId == questionGroup.value.answer\">\n <label class=\"form-check-label d-inline d-lg-none\" [innerHTML]=\"answer.answerTitle\"\n for=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\"> </label>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>", styles: ["@media (max-width: 767px){.quastion .quastion-title{position:sticky;top:150px;z-index:1000;padding:10px 20px;background-color:#4c3d8f;color:#fff;font-size:16px;box-shadow:4px 5px 5px #0000004d;border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px}.quastion .quastion-title:last-of-type(){position:static;z-index:initial}.quastion .matrix-question .matrix-table .matrix-row .matrix-col{width:100%!important}.matrix-table .matrix-row .matrix-col .form-check{flex-direction:row}.matrix-head-row{display:none!important}.answer__container.matrix-col{padding:5px 15px!important}.answer__container.matrix-col .form-check-radio .form-check-label{padding-right:15px!important}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }] }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionMatrixTemplateComponent, selector: "lib-question-matrix-template", inputs: { setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" style=\" border-collapse: collapse;\"\n[ngClass]=\"{'d-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"matrix-question\" [formGroup]=\"rForm\">\n <div class=\"matrix-table\" formArrayName=\"subQuestionArray\">\n <div class=\"matrix-head-row\">\n <div class=\"matrix-col\">\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answers of surveyQuestion?.surveyAnswers\" >\n <span [innerHTML]=\"answers.answerTitle\"></span>\n </div>\n </div>\n\n <div class=\"matrix-row\" [attr.id]=\"'question_'+questionGroup.value.subQuestionId\"\n *ngFor=\"let questionGroup of fCtrls.subQuestionArray.controls ;let subQuestionIndex = index\"\n [ngClass]=\"{'invalid-question': questionGroup.controls.answer.invalid}\">\n <div class=\"matrix-col matrix-sub-quastion\" [innerHTML]=\"questionGroup.value.questionTitle\">\n </div>\n <div class=\"matrix-col answer__container\" *ngFor=\"let answer of surveyQuestion?.surveyAnswers;let answerIndex = index\">\n <div class=\"form-check form-check-radio form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"{{elemId}}__radio-btn-option_{{subQuestionIndex}}\"\n id=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\" (change)=\"onChangeAnswer(questionGroup.value ,answer)\"\n value=\"{{answer.answerId}}\" [checked]=\"answer.answerId == questionGroup.value.answer\">\n <label class=\"form-check-label d-inline d-lg-none\" [innerHTML]=\"answer.answerTitle\"\n for=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\"> </label>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>", styles: ["@media (max-width: 767px){.quastion .quastion-title{position:sticky;top:150px;z-index:1000;padding:10px 20px;background-color:#4c3d8f;color:#fff;font-size:16px;box-shadow:4px 5px 5px #0000004d;border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px}.quastion .quastion-title:last-of-type{position:static;z-index:initial}.quastion .matrix-question .matrix-table .matrix-row .matrix-col{width:100%!important}.matrix-table .matrix-row .matrix-col .form-check{flex-direction:row}.matrix-head-row{display:none!important}.answer__container.matrix-col{padding:5px 15px!important}.answer__container.matrix-col .form-check-radio .form-check-label{padding-right:15px!important}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }] }); }
94
94
  }
95
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionMatrixTemplateComponent, decorators: [{
96
96
  type: Component,
97
- args: [{ selector: 'lib-question-matrix-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" style=\" border-collapse: collapse;\"\n[ngClass]=\"{'d-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"matrix-question\" [formGroup]=\"rForm\">\n <div class=\"matrix-table\" formArrayName=\"subQuestionArray\">\n <div class=\"matrix-head-row\">\n <div class=\"matrix-col\">\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answers of surveyQuestion?.surveyAnswers\" >\n <span [innerHTML]=\"answers.answerTitle\"></span>\n </div>\n </div>\n\n <div class=\"matrix-row\" [attr.id]=\"'question_'+questionGroup.value.subQuestionId\"\n *ngFor=\"let questionGroup of fCtrls.subQuestionArray.controls ;let subQuestionIndex = index\"\n [ngClass]=\"{'invalid-question': questionGroup.controls.answer.invalid}\">\n <div class=\"matrix-col matrix-sub-quastion\" [innerHTML]=\"questionGroup.value.questionTitle\">\n </div>\n <div class=\"matrix-col answer__container\" *ngFor=\"let answer of surveyQuestion?.surveyAnswers;let answerIndex = index\">\n <div class=\"form-check form-check-radio form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"{{elemId}}__radio-btn-option_{{subQuestionIndex}}\"\n id=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\" (change)=\"onChangeAnswer(questionGroup.value ,answer)\"\n value=\"{{answer.answerId}}\" [checked]=\"answer.answerId == questionGroup.value.answer\">\n <label class=\"form-check-label d-inline d-lg-none\" [innerHTML]=\"answer.answerTitle\"\n for=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\"> </label>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>", styles: ["@media (max-width: 767px){.quastion .quastion-title{position:sticky;top:150px;z-index:1000;padding:10px 20px;background-color:#4c3d8f;color:#fff;font-size:16px;box-shadow:4px 5px 5px #0000004d;border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px}.quastion .quastion-title:last-of-type(){position:static;z-index:initial}.quastion .matrix-question .matrix-table .matrix-row .matrix-col{width:100%!important}.matrix-table .matrix-row .matrix-col .form-check{flex-direction:row}.matrix-head-row{display:none!important}.answer__container.matrix-col{padding:5px 15px!important}.answer__container.matrix-col .form-check-radio .form-check-label{padding-right:15px!important}}\n"] }]
97
+ args: [{ selector: 'lib-question-matrix-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" style=\" border-collapse: collapse;\"\n[ngClass]=\"{'d-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"matrix-question\" [formGroup]=\"rForm\">\n <div class=\"matrix-table\" formArrayName=\"subQuestionArray\">\n <div class=\"matrix-head-row\">\n <div class=\"matrix-col\">\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answers of surveyQuestion?.surveyAnswers\" >\n <span [innerHTML]=\"answers.answerTitle\"></span>\n </div>\n </div>\n\n <div class=\"matrix-row\" [attr.id]=\"'question_'+questionGroup.value.subQuestionId\"\n *ngFor=\"let questionGroup of fCtrls.subQuestionArray.controls ;let subQuestionIndex = index\"\n [ngClass]=\"{'invalid-question': questionGroup.controls.answer.invalid}\">\n <div class=\"matrix-col matrix-sub-quastion\" [innerHTML]=\"questionGroup.value.questionTitle\">\n </div>\n <div class=\"matrix-col answer__container\" *ngFor=\"let answer of surveyQuestion?.surveyAnswers;let answerIndex = index\">\n <div class=\"form-check form-check-radio form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"{{elemId}}__radio-btn-option_{{subQuestionIndex}}\"\n id=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\" (change)=\"onChangeAnswer(questionGroup.value ,answer)\"\n value=\"{{answer.answerId}}\" [checked]=\"answer.answerId == questionGroup.value.answer\">\n <label class=\"form-check-label d-inline d-lg-none\" [innerHTML]=\"answer.answerTitle\"\n for=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\"> </label>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>", styles: ["@media (max-width: 767px){.quastion .quastion-title{position:sticky;top:150px;z-index:1000;padding:10px 20px;background-color:#4c3d8f;color:#fff;font-size:16px;box-shadow:4px 5px 5px #0000004d;border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px}.quastion .quastion-title:last-of-type{position:static;z-index:initial}.quastion .matrix-question .matrix-table .matrix-row .matrix-col{width:100%!important}.matrix-table .matrix-row .matrix-col .form-check{flex-direction:row}.matrix-head-row{display:none!important}.answer__container.matrix-col{padding:5px 15px!important}.answer__container.matrix-col .form-check-radio .form-check-label{padding-right:15px!important}}\n"] }]
98
98
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SurveyLibService }]; }, propDecorators: { emitter: [{
99
99
  type: Output
100
100
  }], setQuestion: [{
@@ -8,7 +8,8 @@ import * as i1 from "@ng-stack/forms";
8
8
  import * as i2 from "../../services/survey-lib.service";
9
9
  import * as i3 from "@angular/common";
10
10
  import * as i4 from "@angular/forms";
11
- import * as i5 from "../../pipes/text-box-type-attr.pipe";
11
+ import * as i5 from "../../directives/masked-for-min-max.directive";
12
+ import * as i6 from "../../pipes/text-box-type-attr.pipe";
12
13
  export class QuestionTextTemplateComponent {
13
14
  get fCtrls() {
14
15
  return this.rForm.controls;
@@ -42,6 +43,9 @@ export class QuestionTextTemplateComponent {
42
43
  this.fCtrls.inputMax.setValue(value.surveyAnswers[0].inputMax);
43
44
  this.fCtrls.answer.addValidators([Validators.max(value.surveyAnswers[0].inputMax)]);
44
45
  }
46
+ if (value.surveyAnswers[0].inputMin != null || value.surveyAnswers[0].inputMax != null) {
47
+ this.fCtrls.inputTypeId.setValue(InputTypeEnum.Text);
48
+ }
45
49
  }
46
50
  else if (value.surveyAnswers[0].inputTypeId == InputTypeEnum.Email) {
47
51
  this.fCtrls.answer.addValidators([Validators.email]);
@@ -110,11 +114,11 @@ export class QuestionTextTemplateComponent {
110
114
  this.fCtrls.answer.updateValueAndValidity();
111
115
  }
112
116
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionTextTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
113
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: { isArabicLang: "isArabicLang", isTextArea: "isTextArea", setQuestion: "setQuestion", isDisabled: "isDisabled" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n <p *ngIf=\"fCtrls.inputMin.value != null || fCtrls.inputMax.value != null\" class=\"text-danger\">\n <small>{{isArabicLang == true ? ' \u0627\u0644\u0642\u064A\u0645\u0629 \u064A\u062C\u0628 \u0627\u0646 \u062A\u0643\u0648\u0646' :'The value must be '}}</small>\n <small *ngIf=\"fCtrls.inputMin.value\">{{isArabicLang == true ? ' \u0645\u0646' : 'from'}} {{fCtrls.inputMin.value}} </small>\n <small *ngIf=\"fCtrls.inputMax.value\">{{isArabicLang == true ? '\u0627\u0644\u0649' : 'to'}} {{fCtrls.inputMax.value}} </small>\n </p>\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" [attr.min]=\"fCtrls.inputMin.value\"\n [attr.max]=\"fCtrls.inputMax.value\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\">\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"2\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\"></textarea>\n </ng-template>\n </div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i5.TextBoxTypeAttrPipe, name: "textBoxTypeAttr" }] }); }
117
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: { isArabicLang: "isArabicLang", isTextArea: "isTextArea", setQuestion: "setQuestion", isDisabled: "isDisabled" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n <p *ngIf=\"fCtrls.inputMin.value != null || fCtrls.inputMax.value != null\" class=\"text-danger\">\n <small>{{isArabicLang == true ? ' \u0627\u0644\u0642\u064A\u0645\u0629 \u064A\u062C\u0628 \u0627\u0646 \u062A\u0643\u0648\u0646' :'The value must be '}}</small>\n <small *ngIf=\"fCtrls.inputMin.value\">{{isArabicLang == true ? ' \u0645\u0646' : 'from'}} {{fCtrls.inputMin.value}} </small>\n <small *ngIf=\"fCtrls.inputMax.value\">{{isArabicLang == true ? '\u0627\u0644\u0649' : 'to'}} {{fCtrls.inputMax.value}} </small>\n </p>\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" libMaskedForMinMax [attr.min]=\"fCtrls.inputMin.value\"\n [attr.max]=\"fCtrls.inputMax.value\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\">\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"2\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\"></textarea>\n </ng-template>\n </div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.MaskedForMinMaxDirective, selector: "[libMaskedForMinMax]" }, { kind: "pipe", type: i6.TextBoxTypeAttrPipe, name: "textBoxTypeAttr" }] }); }
114
118
  }
115
119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionTextTemplateComponent, decorators: [{
116
120
  type: Component,
117
- args: [{ selector: 'lib-question-text-template', template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n <p *ngIf=\"fCtrls.inputMin.value != null || fCtrls.inputMax.value != null\" class=\"text-danger\">\n <small>{{isArabicLang == true ? ' \u0627\u0644\u0642\u064A\u0645\u0629 \u064A\u062C\u0628 \u0627\u0646 \u062A\u0643\u0648\u0646' :'The value must be '}}</small>\n <small *ngIf=\"fCtrls.inputMin.value\">{{isArabicLang == true ? ' \u0645\u0646' : 'from'}} {{fCtrls.inputMin.value}} </small>\n <small *ngIf=\"fCtrls.inputMax.value\">{{isArabicLang == true ? '\u0627\u0644\u0649' : 'to'}} {{fCtrls.inputMax.value}} </small>\n </p>\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" [attr.min]=\"fCtrls.inputMin.value\"\n [attr.max]=\"fCtrls.inputMax.value\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\">\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"2\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\"></textarea>\n </ng-template>\n </div>" }]
121
+ args: [{ selector: 'lib-question-text-template', template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n <p *ngIf=\"fCtrls.inputMin.value != null || fCtrls.inputMax.value != null\" class=\"text-danger\">\n <small>{{isArabicLang == true ? ' \u0627\u0644\u0642\u064A\u0645\u0629 \u064A\u062C\u0628 \u0627\u0646 \u062A\u0643\u0648\u0646' :'The value must be '}}</small>\n <small *ngIf=\"fCtrls.inputMin.value\">{{isArabicLang == true ? ' \u0645\u0646' : 'from'}} {{fCtrls.inputMin.value}} </small>\n <small *ngIf=\"fCtrls.inputMax.value\">{{isArabicLang == true ? '\u0627\u0644\u0649' : 'to'}} {{fCtrls.inputMax.value}} </small>\n </p>\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" libMaskedForMinMax [attr.min]=\"fCtrls.inputMin.value\"\n [attr.max]=\"fCtrls.inputMax.value\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\">\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"2\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\"></textarea>\n </ng-template>\n </div>" }]
118
122
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SurveyLibService }]; }, propDecorators: { emitter: [{
119
123
  type: Output
120
124
  }], isArabicLang: [{
@@ -126,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
126
130
  }], isDisabled: [{
127
131
  type: Input
128
132
  }] } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlL3F1ZXN0aW9uLXRleHQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFNUUsT0FBTyxFQUFFLFlBQVksRUFBd0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7QUFPdEUsTUFBTSxPQUFPLDZCQUE2QjtJQU14QyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFNRCxJQUFhLFdBQVcsQ0FBQyxLQUF3QjtRQUMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUU1QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUNwQixFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDcEIsSUFBSSxF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QUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBLEVBQUU7WUFDNUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFZO1FBQy9CLE9BQU8sT0FBc0IsQ0FBQztJQUNoQyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsVUFBbUI7UUFDNUMsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO1NBQzdCO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtTQUM1QjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDOUMsQ0FBQzs4R0F6SFUsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsNk5DakIxQyx1bURBcUJVOzsyRkRKRyw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0UsNEJBQTRCO2lJQWtCNUIsT0FBTztzQkFBaEIsTUFBTTtnQkFFRSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ08sV0FBVztzQkFBdkIsS0FBSztnQkEwQ08sVUFBVTtzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2xTdGFjaywgVmFsaWRhdG9yc01vZGVsIH0gZnJvbSAnQG5nLXN0YWNrL2Zvcm1zJztcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLmR0byc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBRdWVzdGlvblRleHRUZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLXRleHQtdGVtcGxhdGUuZm9ybS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFF1ZXN0aW9uQW5zd2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL3F1ZXN0aW9uLWFuc3dlci5tb2RlbCc7XG5pbXBvcnQgeyBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9kZWZhdWx0LXF1ZXN0aW9uLWFuc3dlcnMuZHRvJztcbmltcG9ydCB7IFN1cnZleUxpYlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdXJ2ZXktbGliLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5wdXRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lbnVtcy9pbnB1dC10eXBlLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uVGV4dFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBzdXJ2ZXlRdWVzdGlvbjogU3VydmV5UXVlc3Rpb25EdG87XG4gIHJGb3JtOiBGb3JtR3JvdXA8UXVlc3Rpb25UZXh0VGVtcGxhdGVGb3JtSW50ZXJmYWNlPjtcbiAgY3VzdG9tUGF0dGVybnMgOm51bGw7XG5cbiAgZ2V0IGZDdHJscygpIHtcbiAgICByZXR1cm4gdGhpcy5yRm9ybS5jb250cm9scztcbiAgfVxuXG4gIGdldCBxdWVzdGlvblR5cGVFbnVtKCkge1xuICAgIHJldHVybiBRdWVzdGlvblR5cGVFbnVtO1xuICB9XG5cbiAgQE91dHB1dCgpIGVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFF1ZXN0aW9uQW5zd2VyTW9kZWw+KCk7XG5cbiAgQElucHV0KCkgaXNBcmFiaWNMYW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzVGV4dEFyZWE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHNldFF1ZXN0aW9uKHZhbHVlOiBTdXJ2ZXlRdWVzdGlvbkR0bykge1xuICAgIHRoaXMuc3VydmV5UXVlc3Rpb24gPSB2YWx1ZTtcbiAgICBcbiAgICB0aGlzLnJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgaWQ6IHZhbHVlLnF1ZXN0aW9uSWQsXG4gICAgICBuYW1lOiB2YWx1ZS5xdWVzdGlvbk5hbWUsXG4gICAgICB0aXRsZTogdmFsdWUucXVlc3Rpb25UaXRsZSxcbiAgICAgIHR5cGVJZDogdmFsdWUucXVlc3Rpb25UeXBlSWQsXG4gICAgICBkZXNjcmlwdGlvbjogdmFsdWUucXVlc3Rpb25EZXNjcmlwdGlvbiAsXG4gICAgICBpc0Rpc2FibGVkOiB2YWx1ZS5pc1JlYWRPbmx5LFxuICAgICAgaXNTaG93OiB2YWx1ZS5pc1Zpc2FibGUgXG4gICAgfSk7XG5cbiAgICBpZiAodmFsdWUuc3VydmV5QW5zd2Vyc1swXT8uYW5zd2VySWQgIT0gbnVsbCAmJiB2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdPy5hbnN3ZXJJZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZkN0cmxzLnN1cnZleUFuc3dlcklkLnNldFZhbHVlKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uYW5zd2VySWQpO1xuICAgICAgdGhpcy5mQ3RybHMuaW5wdXRUeXBlSWQuc2V0VmFsdWUodmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dFR5cGVJZCk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcblxuICAgICAgaWYgKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uaW5wdXRUeXBlSWQgPT0gSW5wdXRUeXBlRW51bS5OdW1iZXIpIHtcbiAgICAgICAgaWYodmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dE1pbiAhPSBudWxsKXtcbiAgICAgICAgICB0aGlzLmZDdHJscy5pbnB1dE1pbi5zZXRWYWx1ZSh2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0TWluKTtcbiAgICAgICAgICB0aGlzLmZDdHJscy5hbnN3ZXIuYWRkVmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5taW4odmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dE1pbildKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCB2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0TWF4ICE9IG51bGwpe1xuICAgICAgICAgIHRoaXMuZkN0cmxzLmlucHV0TWF4LnNldFZhbHVlKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uaW5wdXRNYXgpO1xuICAgICAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1heCh2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0TWF4KV0pO1xuICAgICAgICB9IFxuICAgICAgfVxuICAgICAgZWxzZSBpZiAodmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dFR5cGVJZCA9PSBJbnB1dFR5cGVFbnVtLkVtYWlsKSB7XG4gICAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLmVtYWlsXSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgdGhpcy50b2dnbGVFbmFibGVBbnN3ZXIodmFsdWUuaXNSZWFkT25seSk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaXNEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMudG9nZ2xlRW5hYmxlQW5zd2VyKHZhbHVlKTtcbiAgfVxuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIF9zdXJ2ZXlMaWJTZXJ2aWNlOiBTdXJ2ZXlMaWJTZXJ2aWNlKSB7XG4gICAgdGhpcy5yRm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwPFF1ZXN0aW9uVGV4dFRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xuICAgICAgaWQ6IFtudWxsXSxcbiAgICAgIG5hbWU6IFtudWxsXSxcbiAgICAgIHRpdGxlOiBbbnVsbF0sXG4gICAgICB0eXBlSWQ6IFtudWxsXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBbbnVsbF0sXG4gICAgICBzdXJ2ZXlBbnN3ZXJJZDogW251bGxdLFxuICAgICAgYW5zd2VyOiBbbnVsbF0sXG4gICAgICBpc0Rpc2FibGVkOltmYWxzZV0sXG4gICAgICBpc1Nob3cgOiBbdHJ1ZV0sXG4gICAgICBpbnB1dFR5cGVJZDogW251bGxdICxcbiAgICAgIGlucHV0TWluIDogW251bGxdLFxuICAgICAgaW5wdXRNYXggOiBbbnVsbF1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZkN0cmxzLmFuc3dlci52YWx1ZUNoYW5nZXMucGlwZSgpLnBpcGUoZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnJGb3JtLnZhbHVlO1xuICAgICAgdGhpcy5lbWl0dGVyLmVtaXQoe1xuICAgICAgICBRdWVzdGlvbklkOiBmb3JtVmFsdWUuaWQsXG4gICAgICAgIElzVmFsaWQ6IHRoaXMuZkN0cmxzLmFuc3dlci52YWxpZCxcbiAgICAgICAgQW5zd2VyOiB2YWx1ZSxcbiAgICAgICAgU3VydmV5QW5zd2VySWQ6IGZvcm1WYWx1ZS5zdXJ2ZXlBbnN3ZXJJZFxuICAgICAgfSlcbiAgICB9KTtcblxuICAgIHRoaXMuZkN0cmxzLmFuc3dlci5zZXRWYWx1ZShudWxsKTtcblxuICAgIHRoaXMuX3N1cnZleUxpYlNlcnZpY2Uuc3VydmV5QW5zd2Vyc09ic3J2LnBpcGUobWFwKHggPT4geC5kZWZhdWx0QW5zd2Vycy5maWx0ZXIoeCA9PiB4LlF1ZXN0aW9uSWQgPT0gdGhpcy5mQ3RybHMuaWQudmFsdWUpKSlcbiAgICAgIC5waXBlKGZpbHRlcih4ID0+IHgubGVuZ3RoID4gMCkpLnBpcGUobWFwKHggPT4geC5hdCgwKSkpXG4gICAgICAuc3Vic2NyaWJlKGFuc3dlciA9PiB7XG4gICAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5zZXRWYWx1ZShhbnN3ZXIuQW5zd2VyVGV4dCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fc3VydmV5TGliU2VydmljZS5xdWVzdGlvbklzRGlzYWJsZWRPYnNydi5waXBlKGZpbHRlcih4PT54LnF1ZXN0aW9uSWQgPT0gdGhpcy5mQ3RybHMuaWQudmFsdWUpKS5zdWJzY3JpYmUoeD0+e1xuICAgICAgICB0aGlzLmZDdHJscy5pc0Rpc2FibGVkLnNldFZhbHVlKHguaXNEaXNhYmxlZCk7XG4gICAgICB9KTtcbiAgXG4gICAgICB0aGlzLl9zdXJ2ZXlMaWJTZXJ2aWNlLnF1ZXN0aW9uSXNTaG93T2JzcnYucGlwZShmaWx0ZXIoeD0+eC5xdWVzdGlvbklkID09IHRoaXMuZkN0cmxzLmlkLnZhbHVlKSkuc3Vic2NyaWJlKHg9PntcbiAgICAgICAgdGhpcy5mQ3RybHMuaXNTaG93LnNldFZhbHVlKHguaXNTaG93KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY29udmVydFRvRm9ybUNvbnRyb2woZWxlbWVudDogYW55KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUVuYWJsZUFuc3dlcihpc1JlYWRPbmx5OiBib29sZWFuKSB7XG4gICAgaWYgKGlzUmVhZE9ubHkgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmRpc2FibGUoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZDdHJscy5hbnN3ZXIuZW5hYmxlKClcbiAgICB9XG4gICAgdGhpcy5mQ3RybHMuYW5zd2VyLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicXVhc3Rpb25cIiBbZm9ybUdyb3VwXT1cInJGb3JtXCIgW2F0dHIuaWRdPVwiJ3F1ZXN0aW9uXycrZkN0cmxzLmlkLnZhbHVlXCJcbiAgICBbbmdDbGFzc109XCJ7J2ludmFsaWQtcXVlc3Rpb24nOiBmQ3RybHMuYW5zd2VyLmludmFsaWQgLCAnZC1ub25lJzpmQ3RybHMuaXNTaG93LnZhbHVlICE9IHRydWV9XCI+XG4gICAgPGgzIGNsYXNzPVwicXVhc3Rpb24tdGl0bGUgXCI+XG4gICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwic3VydmV5UXVlc3Rpb24/LnF1ZXN0aW9uVGl0bGVcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZDtcIiAqbmdJZj1cInN1cnZleVF1ZXN0aW9uLmlzUmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgICAgICA8cCAqbmdJZj1cImZDdHJscy5pbnB1dE1pbi52YWx1ZSAhPSBudWxsIHx8IGZDdHJscy5pbnB1dE1heC52YWx1ZSAhPSBudWxsXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxuICAgICAgICAgICAgPHNtYWxsPnt7aXNBcmFiaWNMYW5nID09IHRydWUgPyAgJyDYp9mE2YLZitmF2Kkg2YrYrNioINin2YYg2KrZg9mI2YYnIDonVGhlIHZhbHVlIG11c3QgYmUgJ319PC9zbWFsbD5cbiAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cImZDdHJscy5pbnB1dE1pbi52YWx1ZVwiPnt7aXNBcmFiaWNMYW5nID09IHRydWUgPyAnINmF2YYnIDogJ2Zyb20nfX0ge3tmQ3RybHMuaW5wdXRNaW4udmFsdWV9fSA8L3NtYWxsPlxuICAgICAgICAgICAgPHNtYWxsICpuZ0lmPVwiZkN0cmxzLmlucHV0TWF4LnZhbHVlXCI+e3tpc0FyYWJpY0xhbmcgPT0gdHJ1ZSA/ICfYp9mE2YknIDogJ3RvJ319IHt7ZkN0cmxzLmlucHV0TWF4LnZhbHVlfX0gPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgIDwvaDM+XG4gICAgPGRpdiBjbGFzcz1cInRleHQtcXVhc3Rpb25cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGV4dEFyZWEgPT0gZmFsc2UgZWxzZSB0ZXh0QXJlYVRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAgW2F0dHIubWluXT1cImZDdHJscy5pbnB1dE1pbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIubWF4XT1cImZDdHJscy5pbnB1dE1heC52YWx1ZVwiIFtmb3JtQ29udHJvbF09XCJjb252ZXJ0VG9Gb3JtQ29udHJvbChmQ3RybHMuYW5zd2VyKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBbYXR0ci50eXBlXT1cImZDdHJscy5pbnB1dFR5cGVJZC52YWx1ZSB8IHRleHRCb3hUeXBlQXR0clwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0QXJlYVRlbXBsYXRlPlxuICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcm93cz1cIjJcIiBbZm9ybUNvbnRyb2xdPVwiY29udmVydFRvRm9ybUNvbnRyb2woZkN0cmxzLmFuc3dlcilcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj4iXX0=
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlL3F1ZXN0aW9uLXRleHQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFNUUsT0FBTyxFQUFFLFlBQVksRUFBd0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7O0FBT3RFLE1BQU0sT0FBTyw2QkFBNkI7SUFNeEMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBTUQsSUFBYSxXQUFXLENBQUMsS0FBd0I7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDcEIsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQ3BCLElBQUks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ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2xTdGFjaywgVmFsaWRhdG9yc01vZGVsIH0gZnJvbSAnQG5nLXN0YWNrL2Zvcm1zJztcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLmR0byc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBRdWVzdGlvblRleHRUZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLXRleHQtdGVtcGxhdGUuZm9ybS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFF1ZXN0aW9uQW5zd2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL3F1ZXN0aW9uLWFuc3dlci5tb2RlbCc7XG5pbXBvcnQgeyBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9kZWZhdWx0LXF1ZXN0aW9uLWFuc3dlcnMuZHRvJztcbmltcG9ydCB7IFN1cnZleUxpYlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdXJ2ZXktbGliLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5wdXRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lbnVtcy9pbnB1dC10eXBlLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uVGV4dFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBzdXJ2ZXlRdWVzdGlvbjogU3VydmV5UXVlc3Rpb25EdG87XG4gIHJGb3JtOiBGb3JtR3JvdXA8UXVlc3Rpb25UZXh0VGVtcGxhdGVGb3JtSW50ZXJmYWNlPjtcbiAgY3VzdG9tUGF0dGVybnM6IG51bGw7XG5cbiAgZ2V0IGZDdHJscygpIHtcbiAgICByZXR1cm4gdGhpcy5yRm9ybS5jb250cm9scztcbiAgfVxuXG4gIGdldCBxdWVzdGlvblR5cGVFbnVtKCkge1xuICAgIHJldHVybiBRdWVzdGlvblR5cGVFbnVtO1xuICB9XG5cbiAgQE91dHB1dCgpIGVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFF1ZXN0aW9uQW5zd2VyTW9kZWw+KCk7XG5cbiAgQElucHV0KCkgaXNBcmFiaWNMYW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzVGV4dEFyZWE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHNldFF1ZXN0aW9uKHZhbHVlOiBTdXJ2ZXlRdWVzdGlvbkR0bykge1xuICAgIHRoaXMuc3VydmV5UXVlc3Rpb24gPSB2YWx1ZTtcblxuICAgIHRoaXMuckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBpZDogdmFsdWUucXVlc3Rpb25JZCxcbiAgICAgIG5hbWU6IHZhbHVlLnF1ZXN0aW9uTmFtZSxcbiAgICAgIHRpdGxlOiB2YWx1ZS5xdWVzdGlvblRpdGxlLFxuICAgICAgdHlwZUlkOiB2YWx1ZS5xdWVzdGlvblR5cGVJZCxcbiAgICAgIGRlc2NyaXB0aW9uOiB2YWx1ZS5xdWVzdGlvbkRlc2NyaXB0aW9uLFxuICAgICAgaXNEaXNhYmxlZDogdmFsdWUuaXNSZWFkT25seSxcbiAgICAgIGlzU2hvdzogdmFsdWUuaXNWaXNhYmxlXG4gICAgfSk7XG5cbiAgICBpZiAodmFsdWUuc3VydmV5QW5zd2Vyc1swXT8uYW5zd2VySWQgIT0gbnVsbCAmJiB2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdPy5hbnN3ZXJJZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZkN0cmxzLnN1cnZleUFuc3dlcklkLnNldFZhbHVlKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uYW5zd2VySWQpO1xuICAgICAgdGhpcy5mQ3RybHMuaW5wdXRUeXBlSWQuc2V0VmFsdWUodmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dFR5cGVJZCk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcblxuICAgICAgaWYgKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uaW5wdXRUeXBlSWQgPT0gSW5wdXRUeXBlRW51bS5OdW1iZXIpIHtcbiAgICAgICAgaWYgKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uaW5wdXRNaW4gIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuZkN0cmxzLmlucHV0TWluLnNldFZhbHVlKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uaW5wdXRNaW4pO1xuICAgICAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1pbih2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0TWluKV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uaW5wdXRNYXggIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuZkN0cmxzLmlucHV0TWF4LnNldFZhbHVlKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uaW5wdXRNYXgpO1xuICAgICAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1heCh2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0TWF4KV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uaW5wdXRNaW4gIT0gbnVsbCB8fCB2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0TWF4ICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmZDdHJscy5pbnB1dFR5cGVJZC5zZXRWYWx1ZShJbnB1dFR5cGVFbnVtLlRleHQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0VHlwZUlkID09IElucHV0VHlwZUVudW0uRW1haWwpIHtcbiAgICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMuZW1haWxdKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZUVuYWJsZUFuc3dlcih2YWx1ZS5pc1JlYWRPbmx5KTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBpc0Rpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy50b2dnbGVFbmFibGVBbnN3ZXIodmFsdWUpO1xuICB9XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgX3N1cnZleUxpYlNlcnZpY2U6IFN1cnZleUxpYlNlcnZpY2UpIHtcbiAgICB0aGlzLnJGb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8UXVlc3Rpb25UZXh0VGVtcGxhdGVGb3JtSW50ZXJmYWNlPih7XG4gICAgICBpZDogW251bGxdLFxuICAgICAgbmFtZTogW251bGxdLFxuICAgICAgdGl0bGU6IFtudWxsXSxcbiAgICAgIHR5cGVJZDogW251bGxdLFxuICAgICAgZGVzY3JpcHRpb246IFtudWxsXSxcbiAgICAgIHN1cnZleUFuc3dlcklkOiBbbnVsbF0sXG4gICAgICBhbnN3ZXI6IFtudWxsXSxcbiAgICAgIGlzRGlzYWJsZWQ6IFtmYWxzZV0sXG4gICAgICBpc1Nob3c6IFt0cnVlXSxcbiAgICAgIGlucHV0VHlwZUlkOiBbbnVsbF0sXG4gICAgICBpbnB1dE1pbjogW251bGxdLFxuICAgICAgaW5wdXRNYXg6IFtudWxsXVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mQ3RybHMuYW5zd2VyLnZhbHVlQ2hhbmdlcy5waXBlKCkucGlwZShkZWJvdW5jZVRpbWUoMjAwKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuckZvcm0udmFsdWU7XG4gICAgICB0aGlzLmVtaXR0ZXIuZW1pdCh7XG4gICAgICAgIFF1ZXN0aW9uSWQ6IGZvcm1WYWx1ZS5pZCxcbiAgICAgICAgSXNWYWxpZDogdGhpcy5mQ3RybHMuYW5zd2VyLnZhbGlkLFxuICAgICAgICBBbnN3ZXI6IHZhbHVlLFxuICAgICAgICBTdXJ2ZXlBbnN3ZXJJZDogZm9ybVZhbHVlLnN1cnZleUFuc3dlcklkXG4gICAgICB9KVxuICAgIH0pO1xuXG4gICAgdGhpcy5mQ3RybHMuYW5zd2VyLnNldFZhbHVlKG51bGwpO1xuXG4gICAgdGhpcy5fc3VydmV5TGliU2VydmljZS5zdXJ2ZXlBbnN3ZXJzT2JzcnYucGlwZShtYXAoeCA9PiB4LmRlZmF1bHRBbnN3ZXJzLmZpbHRlcih4ID0+IHguUXVlc3Rpb25JZCA9PSB0aGlzLmZDdHJscy5pZC52YWx1ZSkpKVxuICAgICAgLnBpcGUoZmlsdGVyKHggPT4geC5sZW5ndGggPiAwKSkucGlwZShtYXAoeCA9PiB4LmF0KDApKSlcbiAgICAgIC5zdWJzY3JpYmUoYW5zd2VyID0+IHtcbiAgICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLnNldFZhbHVlKGFuc3dlci5BbnN3ZXJUZXh0KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fc3VydmV5TGliU2VydmljZS5xdWVzdGlvbklzRGlzYWJsZWRPYnNydi5waXBlKGZpbHRlcih4ID0+IHgucXVlc3Rpb25JZCA9PSB0aGlzLmZDdHJscy5pZC52YWx1ZSkpLnN1YnNjcmliZSh4ID0+IHtcbiAgICAgIHRoaXMuZkN0cmxzLmlzRGlzYWJsZWQuc2V0VmFsdWUoeC5pc0Rpc2FibGVkKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3N1cnZleUxpYlNlcnZpY2UucXVlc3Rpb25Jc1Nob3dPYnNydi5waXBlKGZpbHRlcih4ID0+IHgucXVlc3Rpb25JZCA9PSB0aGlzLmZDdHJscy5pZC52YWx1ZSkpLnN1YnNjcmliZSh4ID0+IHtcbiAgICAgIHRoaXMuZkN0cmxzLmlzU2hvdy5zZXRWYWx1ZSh4LmlzU2hvdyk7XG4gICAgfSk7XG4gIH1cblxuICBjb252ZXJ0VG9Gb3JtQ29udHJvbChlbGVtZW50OiBhbnkpIHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRW5hYmxlQW5zd2VyKGlzUmVhZE9ubHk6IGJvb2xlYW4pIHtcbiAgICBpZiAoaXNSZWFkT25seSA9PSB0cnVlKSB7XG4gICAgICB0aGlzLmZDdHJscy5hbnN3ZXIuZGlzYWJsZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5lbmFibGUoKVxuICAgIH1cbiAgICB0aGlzLmZDdHJscy5hbnN3ZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJxdWFzdGlvblwiIFtmb3JtR3JvdXBdPVwickZvcm1cIiBbYXR0ci5pZF09XCIncXVlc3Rpb25fJytmQ3RybHMuaWQudmFsdWVcIlxuICAgIFtuZ0NsYXNzXT1cInsnaW52YWxpZC1xdWVzdGlvbic6IGZDdHJscy5hbnN3ZXIuaW52YWxpZCAsICdkLW5vbmUnOmZDdHJscy5pc1Nob3cudmFsdWUgIT0gdHJ1ZX1cIj5cbiAgICA8aDMgY2xhc3M9XCJxdWFzdGlvbi10aXRsZSBcIj5cbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJzdXJ2ZXlRdWVzdGlvbj8ucXVlc3Rpb25UaXRsZVwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gc3R5bGU9XCJjb2xvcjogcmVkO1wiICpuZ0lmPVwic3VydmV5UXVlc3Rpb24uaXNSZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgIDxwICpuZ0lmPVwiZkN0cmxzLmlucHV0TWluLnZhbHVlICE9IG51bGwgfHwgZkN0cmxzLmlucHV0TWF4LnZhbHVlICE9IG51bGxcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XG4gICAgICAgICAgICA8c21hbGw+e3tpc0FyYWJpY0xhbmcgPT0gdHJ1ZSA/ICAnINin2YTZgtmK2YXYqSDZitis2Kgg2KfZhiDYqtmD2YjZhicgOidUaGUgdmFsdWUgbXVzdCBiZSAnfX08L3NtYWxsPlxuICAgICAgICAgICAgPHNtYWxsICpuZ0lmPVwiZkN0cmxzLmlucHV0TWluLnZhbHVlXCI+e3tpc0FyYWJpY0xhbmcgPT0gdHJ1ZSA/ICcg2YXZhicgOiAnZnJvbSd9fSB7e2ZDdHJscy5pbnB1dE1pbi52YWx1ZX19IDwvc21hbGw+XG4gICAgICAgICAgICA8c21hbGwgKm5nSWY9XCJmQ3RybHMuaW5wdXRNYXgudmFsdWVcIj57e2lzQXJhYmljTGFuZyA9PSB0cnVlID8gJ9in2YTZiScgOiAndG8nfX0ge3tmQ3RybHMuaW5wdXRNYXgudmFsdWV9fSA8L3NtYWxsPlxuICAgICAgICA8L3A+XG4gICAgPC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1xdWFzdGlvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUZXh0QXJlYSA9PSBmYWxzZSBlbHNlIHRleHRBcmVhVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGxpYk1hc2tlZEZvck1pbk1heCAgW2F0dHIubWluXT1cImZDdHJscy5pbnB1dE1pbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIubWF4XT1cImZDdHJscy5pbnB1dE1heC52YWx1ZVwiIFtmb3JtQ29udHJvbF09XCJjb252ZXJ0VG9Gb3JtQ29udHJvbChmQ3RybHMuYW5zd2VyKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBbYXR0ci50eXBlXT1cImZDdHJscy5pbnB1dFR5cGVJZC52YWx1ZSB8IHRleHRCb3hUeXBlQXR0clwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0QXJlYVRlbXBsYXRlPlxuICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcm93cz1cIjJcIiBbZm9ybUNvbnRyb2xdPVwiY29udmVydFRvRm9ybUNvbnRyb2woZkN0cmxzLmFuc3dlcilcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj4iXX0=
@@ -5,9 +5,8 @@ export class MaskedForMinMaxDirective {
5
5
  this.el = el;
6
6
  }
7
7
  onKeyUp(event) {
8
- let ele = this.el.nativeElement;
9
8
  const input = event.target;
10
- if (input.type === 'number') {
9
+ if (input.type === 'number' || input.type === 'text') {
11
10
  var min = null;
12
11
  var max = null;
13
12
  if (input.getAttribute('min') !== null) {
@@ -16,15 +15,26 @@ export class MaskedForMinMaxDirective {
16
15
  if (input.getAttribute('max') !== null) {
17
16
  max = parseInt(input.getAttribute('max'));
18
17
  }
18
+ var inputVlaue = input.value;
19
+ // allowed key array
20
+ var keyArr = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'Backspace'];
21
+ if (min != null || max != null) {
22
+ if (keyArr.indexOf(event.key) == -1) {
23
+ event.preventDefault();
24
+ }
25
+ if (input.selectionStart != null) {
26
+ let firstPart = input.value.slice(0, input.selectionStart);
27
+ let lastPart = input.value.slice(input.selectionEnd, input.value.length);
28
+ inputVlaue = Number(firstPart + event.key + lastPart);
29
+ }
30
+ }
19
31
  if (min != null) {
20
- var newInputValue = input.value + event.key;
21
- if (parseInt(newInputValue) < min) {
32
+ if (parseInt(inputVlaue) < min) {
22
33
  event.preventDefault();
23
34
  }
24
35
  }
25
36
  if (max !== null) {
26
- var newInputValue = input.value + event.key;
27
- if (parseInt(newInputValue) > max) {
37
+ if (parseInt(inputVlaue) > max) {
28
38
  event.preventDefault();
29
39
  }
30
40
  }
@@ -42,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
42
52
  type: HostListener,
43
53
  args: ['keypress', ['$event']]
44
54
  }] } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFza2VkLWZvci1taW4tbWF4LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvZGlyZWN0aXZlcy9tYXNrZWQtZm9yLW1pbi1tYXguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtwRSxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQUksQ0FBQztJQUd2QyxPQUFPLENBQUMsS0FBb0I7UUFDMUIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFpQyxDQUFDO1FBRXBELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQy9DLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQ2YsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDO1lBQ2YsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDdEMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDM0M7WUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUN0QyxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMzQztZQUVELElBQUcsR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDZCxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7Z0JBQzVDLElBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsRUFBRTtvQkFDaEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2lCQUN4QjthQUNGO1lBRUQsSUFBSyxHQUFHLEtBQUssSUFBSSxFQUFFO2dCQUNqQixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7Z0JBQzVDLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsRUFBRTtvQkFDakMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2lCQUN4QjthQUNGO1NBQ0Y7SUFDSCxDQUFDOzhHQWpDVSx3QkFBd0I7a0dBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFIcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2lCQUNqQztpR0FNQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmRlY2xhcmUgdmFyICQ6IGFueTtcbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tsaWJNYXNrZWRGb3JNaW5NYXhdJ1xufSlcbmV4cG9ydCBjbGFzcyBNYXNrZWRGb3JNaW5NYXhEaXJlY3RpdmUge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXByZXNzJywgWyckZXZlbnQnXSlcbiAgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGxldCBlbGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGlucHV0LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICB2YXIgbWluID0gbnVsbDtcbiAgICAgIHZhciBtYXggPSBudWxsO1xuICAgICAgaWYgKGlucHV0LmdldEF0dHJpYnV0ZSgnbWluJykgIT09IG51bGwpIHtcbiAgICAgICAgbWluID0gcGFyc2VJbnQoaW5wdXQuZ2V0QXR0cmlidXRlKCdtaW4nKSk7XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXQuZ2V0QXR0cmlidXRlKCdtYXgnKSAhPT0gbnVsbCkge1xuICAgICAgICBtYXggPSBwYXJzZUludChpbnB1dC5nZXRBdHRyaWJ1dGUoJ21heCcpKTtcbiAgICAgIH1cblxuICAgICAgaWYobWluICE9IG51bGwgKXtcbiAgICAgICAgdmFyIG5ld0lucHV0VmFsdWUgPSBpbnB1dC52YWx1ZSArIGV2ZW50LmtleTtcbiAgICAgICAgaWYocGFyc2VJbnQobmV3SW5wdXRWYWx1ZSkgPCBtaW4gKXtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICggbWF4ICE9PSBudWxsKSB7XG4gICAgICAgIHZhciBuZXdJbnB1dFZhbHVlID0gaW5wdXQudmFsdWUgKyBldmVudC5rZXk7XG4gICAgICAgIGlmIChwYXJzZUludChuZXdJbnB1dFZhbHVlKSA+IG1heCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFza2VkLWZvci1taW4tbWF4LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvZGlyZWN0aXZlcy9tYXNrZWQtZm9yLW1pbi1tYXguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtwRSxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQUksQ0FBQztJQUd2QyxPQUFPLENBQUMsS0FBb0I7UUFDMUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDL0MsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUNwRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFDZixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFDZixJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUN0QyxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMzQztZQUNELElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ3RDLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzNDO1lBRUQsSUFBSSxVQUFVLEdBQVEsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNsQyxvQkFBb0I7WUFDcEIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDN0UsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQzlCLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7b0JBQ25DLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztpQkFDeEI7Z0JBRUQsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTtvQkFFaEMsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDM0QsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUV6RSxVQUFVLEdBQUcsTUFBTSxDQUFFLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDO2lCQUN4RDthQUNGO1lBRUQsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO2dCQUNmLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsRUFBRTtvQkFDOUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2lCQUN4QjthQUNGO1lBRUQsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO2dCQUNoQixJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLEVBQUU7b0JBQzlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztpQkFDeEI7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs4R0E5Q1Usd0JBQXdCO2tHQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtpQkFDakM7aUdBTUMsT0FBTztzQkFETixZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5kZWNsYXJlIHZhciAkOiBhbnk7XG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbGliTWFza2VkRm9yTWluTWF4XSdcbn0pXG5leHBvcnQgY2xhc3MgTWFza2VkRm9yTWluTWF4RGlyZWN0aXZlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlwcmVzcycsIFsnJGV2ZW50J10pXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmIChpbnB1dC50eXBlID09PSAnbnVtYmVyJyB8fCBpbnB1dC50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIHZhciBtaW4gPSBudWxsO1xuICAgICAgdmFyIG1heCA9IG51bGw7XG4gICAgICBpZiAoaW5wdXQuZ2V0QXR0cmlidXRlKCdtaW4nKSAhPT0gbnVsbCkge1xuICAgICAgICBtaW4gPSBwYXJzZUludChpbnB1dC5nZXRBdHRyaWJ1dGUoJ21pbicpKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dC5nZXRBdHRyaWJ1dGUoJ21heCcpICE9PSBudWxsKSB7XG4gICAgICAgIG1heCA9IHBhcnNlSW50KGlucHV0LmdldEF0dHJpYnV0ZSgnbWF4JykpO1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5wdXRWbGF1ZSA6YW55ID0gaW5wdXQudmFsdWU7XG4gICAgICAvLyBhbGxvd2VkIGtleSBhcnJheVxuICAgICAgdmFyIGtleUFyciA9IFsnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnMCcsICdCYWNrc3BhY2UnXTtcbiAgICAgIGlmIChtaW4gIT0gbnVsbCB8fCBtYXggIT0gbnVsbCkge1xuICAgICAgICBpZiAoa2V5QXJyLmluZGV4T2YoZXZlbnQua2V5KSA9PSAtMSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgIT0gbnVsbCkge1xuXG4gICAgICAgICAgbGV0IGZpcnN0UGFydCA9IGlucHV0LnZhbHVlLnNsaWNlKDAsIGlucHV0LnNlbGVjdGlvblN0YXJ0KTtcbiAgICAgICAgICBsZXQgbGFzdFBhcnQgPSBpbnB1dC52YWx1ZS5zbGljZShpbnB1dC5zZWxlY3Rpb25FbmQsIGlucHV0LnZhbHVlLmxlbmd0aCk7XG5cbiAgICAgICAgICBpbnB1dFZsYXVlID0gTnVtYmVyIChmaXJzdFBhcnQgKyBldmVudC5rZXkgKyBsYXN0UGFydCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG1pbiAhPSBudWxsKSB7XG4gICAgICAgIGlmIChwYXJzZUludChpbnB1dFZsYXVlKSA8IG1pbikge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG1heCAhPT0gbnVsbCkge1xuICAgICAgICBpZiAocGFyc2VJbnQoaW5wdXRWbGF1ZSkgPiBtYXgpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -24,12 +24,9 @@ export class CheckRuleExpsUsecase {
24
24
  else {
25
25
  result = this.checkRuleExpForAnswerId(ruleExp, questionGroupValue.answerId);
26
26
  }
27
- if (result != true && questionGroupValue.surveyPageIndex == params.currentPageIndex) {
28
- var answers = ruleExp.ruleExpAnswers.map(x => x.answerId + '-' + x.answerTitle);
29
- console.log(`Question ${questionGroupValue.questionId} type ${QuestionTypeEnum[questionGroupValue.questionType]} --- ${'not passed'} ---`, ` answers (${answers.join(' , ')}) logic (${LogicPropertyEnum[ruleExp.logicPropertyId]}) operator (${OperatorEnum[ruleExp.opporator]})`);
30
- }
31
27
  useCaseResult.exprestionResultArr.push(result);
32
28
  });
29
+ console.log(`Questions not passed ${useCaseResult.exprestionResultArr.filter(x => x == false).length}`);
33
30
  return of(useCaseResult);
34
31
  }
35
32
  checkRuleExpForAnswerId(ruleExp, answerId) {
@@ -153,4 +150,4 @@ export class CheckRulesUsecaseModel {
153
150
  }
154
151
  export class CheckRulesUsecaseResult {
155
152
  }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stcnVsZS1leHBzLnVzZWNhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL3VzZWNhc2VzL2NoZWNrLXJ1bGUtZXhwcy51c2VjYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBS2hFLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0I7SUFFQSxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQThCO1FBRXBDLElBQUksYUFBYSxHQUE0QjtZQUMzQyxtQkFBbUIsRUFBRSxFQUFFO1NBQ3hCLENBQUM7UUFFRixNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNoQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xGLElBQUksa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFcEQsSUFBSSxNQUFlLENBQUM7WUFFcEIsSUFBSSxrQkFBa0IsQ0FBQyxZQUFZLElBQUksZ0JBQWdCLENBQUMsU0FBUyxFQUFFO2dCQUNqRSxNQUFNLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTth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cnQgeyBVc2VDYXNlIH0gZnJvbSBcIi4vYmFzZS91c2UtY2FzZVwiO1xyXG5pbXBvcnQgeyBTdXJ2ZXlSdWxlRHRvIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9kdG9zL3N1cnZleS1ydWxlLmR0b1wiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUXVlc3Rpb25DaGlsZE9mU3VydmVyeUxpYkZvcm1JbnRlcmZhY2UgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2Zvcm0taW50ZXJmYWNlcy9zdXJ2ZXJ5LWxpYi5mb3JtLWludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBSdWxlRXhwRHRvIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9kdG9zL3J1bGUtZXhwLmR0b1wiO1xyXG5pbXBvcnQgeyBRdWVzdGlvblR5cGVFbnVtIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9lbnVtcy9xdWVzdGlvbi10eXBlLmVudW1cIjtcclxuaW1wb3J0IHsgTG9naWNQcm9wZXJ0eUVudW0gfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2VudW1zL0xvZ2ljLVByb3BlcnR5LmVudW1cIjtcclxuaW1wb3J0IHsgT3BlcmF0b3JFbnVtIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9lbnVtcy9vcGVyYXRvci5lbnVtXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja1J1bGVFeHBzVXNlY2FzZSBpbXBsZW1lbnRzIFVzZUNhc2U8Q2hlY2tSdWxlc1VzZWNhc2VNb2RlbCwgQ2hlY2tSdWxlc1VzZWNhc2VSZXN1bHQ+e1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuXHJcbiAgfVxyXG5cclxuICBleGVjdXRlKHBhcmFtczogQ2hlY2tSdWxlc1VzZWNhc2VNb2RlbCk6IE9ic2VydmFibGU8Q2hlY2tSdWxlc1VzZWNhc2VSZXN1bHQ+IHtcclxuXHJcbiAgICB2YXIgdXNlQ2FzZVJlc3VsdDogQ2hlY2tSdWxlc1VzZWNhc2VSZXN1bHQgPSB7XHJcbiAgICAgIGV4cHJlc3Rpb25SZXN1bHRBcnI6IFtdXHJcbiAgICB9O1xyXG5cclxuICAgIHBhcmFtcy5ydWxlRXhwcy5mb3JFYWNoKHJ1bGVFeHAgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IHBhcmFtcy5xdWVzdGlvbnMuZmluZEluZGV4KHggPT4geC5xdWVzdGlvbklkID09IHJ1bGVFeHAucXVlc3Rpb25JZCk7XHJcbiAgICAgIHZhciBxdWVzdGlvbkdyb3VwVmFsdWUgPSBwYXJhbXMucXVlc3Rpb25zLmF0KGluZGV4KTtcclxuXHJcbiAgICAgIHZhciByZXN1bHQ6IGJvb2xlYW47XHJcblxyXG4gICAgICBpZiAocXVlc3Rpb25Hcm91cFZhbHVlLnF1ZXN0aW9uVHlwZSA9PSBRdWVzdGlvblR5cGVFbnVtLlRleHRJbnB1dCkge1xyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuY2hlY2tSdWxlRXhwRm9yQW5zd2VyVGV4dChydWxlRXhwLCBxdWVzdGlvbkdyb3VwVmFsdWUuYW5zd2VyVGV4dClcclxuICAgICAgfSBcclxuICAgICAgZWxzZSBpZiAocXVlc3Rpb25Hcm91cFZhbHVlLnF1ZXN0aW9uVHlwZSA9PSBRdWVzdGlvblR5cGVFbnVtLkNoZWNrQm94IHx8IHF1ZXN0aW9uR3JvdXBWYWx1ZS5xdWVzdGlvblR5cGUgPT0gUXVlc3Rpb25UeXBlRW51bS5Ecm9wRG93bk11bHRpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5jaGVja1J1bGVFeHBGb3JBbnN3ZXJJZEFycihydWxlRXhwLCBxdWVzdGlvbkdyb3VwVmFsdWUuYW5zd2VySWRBcnIpO1xyXG4gICAgICB9IFxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXN1bHQgPSB0aGlzLmNoZWNrUnVsZUV4cEZvckFuc3dlcklkKHJ1bGVFeHAsIHF1ZXN0aW9uR3JvdXBWYWx1ZS5hbnN3ZXJJZCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKHJlc3VsdCAhPSB0cnVlICAmJiBxdWVzdGlvbkdyb3VwVmFsdWUuc3VydmV5UGFnZUluZGV4ID09IHBhcmFtcy5jdXJyZW50UGFnZUluZGV4KXtcclxuICAgICAgICB2YXIgYW5zd2VycyA9cnVsZUV4cC5ydWxlRXhwQW5zd2Vycy5tYXAoeD0+eC5hbnN3ZXJJZCsnLScreC5hbnN3ZXJUaXRsZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coYFF1ZXN0aW9uICR7cXVlc3Rpb25Hcm91cFZhbHVlLnF1ZXN0aW9uSWR9IHR5cGUgJHtRdWVzdGlvblR5cGVFbnVtW3F1ZXN0aW9uR3JvdXBWYWx1ZS5xdWVzdGlvblR5cGVdfSAtLS0gJHsnbm90IHBhc3NlZCd9IC0tLWAsXHJcbiAgICAgICAgYCBhbnN3ZXJzICgke2Fuc3dlcnMuam9pbignICwgJyl9KSBsb2dpYyAoJHsgTG9naWNQcm9wZXJ0eUVudW1bcnVsZUV4cC5sb2dpY1Byb3BlcnR5SWRdfSkgb3BlcmF0b3IgKCR7T3BlcmF0b3JFbnVtIFtydWxlRXhwLm9wcG9yYXRvcl19KWApO1xyXG4gICAgICB9XHJcbiAgIFxyXG5cclxuICAgICAgdXNlQ2FzZVJlc3VsdC5leHByZXN0aW9uUmVzdWx0QXJyLnB1c2gocmVzdWx0KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBvZih1c2VDYXNlUmVzdWx0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tSdWxlRXhwRm9yQW5zd2VySWQocnVsZUV4cDogUnVsZUV4cER0bywgYW5zd2VySWQ6IG51bWJlcikge1xyXG4gICAgdmFyIHJ1bGVFeHBSZXN1bHRBcnI6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgaWYgKHJ1bGVFeHAubG9naWNQcm9wZXJ0eUlkID09IExvZ2ljUHJvcGVydHlFbnVtLkdyZWF0ZXJUaGFuKSB7XHJcblxyXG4gICAgICBydWxlRXhwLnJ1bGVFeHBBbnN3ZXJzLmZvckVhY2goYW5zd2VyID0+IHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gYW5zd2VySWQgPiBhbnN3ZXIuYW5zd2VySWRcclxuICAgICAgICBydWxlRXhwUmVzdWx0QXJyLnB1c2gocmVzdWx0KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChydWxlRXhwLmxvZ2ljUHJvcGVydHlJZCA9PSBMb2dpY1Byb3BlcnR5RW51bS5HcmVhdGVyVGhhbk9yRXF1YWwpIHtcclxuXHJcbiAgICAgIHJ1bGVFeHAucnVsZUV4cEFuc3dlcnMuZm9yRWFjaChhbnN3ZXIgPT4ge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBhbnN3ZXJJZCA+PSBhbnN3ZXIuYW5zd2VySWRcclxuICAgICAgICBydWxlRXhwUmVzdWx0QXJyLnB1c2gocmVzdWx0KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChydWxlRXhwLmxvZ2ljUHJvcGVydHlJZCA9PSBMb2dpY1Byb3BlcnR5RW51bS5MZXNzVGhhbikge1xyXG5cclxuICAgICAgcnVsZUV4cC5ydWxlRXhwQW5zd2Vycy5mb3JFYWNoKGFuc3dlciA9PiB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IGFuc3dlcklkIDwgYW5zd2VyLmFuc3dlcklkXHJcbiAgICAgICAgcnVsZUV4cFJlc3VsdEFyci5wdXNoKHJlc3VsdCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSBpZiAocnVsZUV4cC5sb2dpY1Byb3BlcnR5SWQgPT0gTG9naWNQcm9wZXJ0eUVudW0uTGVzc1RoYW5PckVxdWFsKSB7XHJcblxyXG4gICAgICBydWxlRXhwLnJ1bGVFeHBBbnN3ZXJzLmZvckVhY2goYW5zd2VyID0+IHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gYW5zd2VySWQgPD0gYW5zd2VyLmFuc3dlcklkXHJcbiAgICAgICAgcnVsZUV4cFJlc3VsdEFyci5wdXNoKHJlc3VsdCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSBpZiAocnVsZUV4cC5sb2dpY1Byb3BlcnR5SWQgPT0gTG9naWNQcm9wZXJ0eUVudW0uRXF1YWwpIHtcclxuXHJcbiAgICAgIHJ1bGVFeHAucnVsZUV4cEFuc3dlcnMuZm9yRWFjaChhbnN3ZXIgPT4ge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBhbnN3ZXJJZCA9PSBhbnN3ZXIuYW5zd2VySWRcclxuICAgICAgICBydWxlRXhwUmVzdWx0QXJyLnB1c2gocmVzdWx0KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChydWxlRXhwLmxvZ2ljUHJvcGVydHlJZCA9PSBMb2dpY1Byb3BlcnR5RW51bS5Ob3RFcXVhbCkge1xyXG5cclxuICAgICAgcnVsZUV4cC5ydWxlRXhwQW5zd2Vycy5mb3JFYWNoKGFuc3dlciA9PiB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IGFuc3dlcklkICE9IGFuc3dlci5hbnN3ZXJJZFxyXG4gICAgICAgIHJ1bGVFeHBSZXN1bHRBcnIucHVzaChyZXN1bHQpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKHJ1bGVFeHAubG9naWNQcm9wZXJ0eUlkID09IExvZ2ljUHJvcGVydHlFbnVtLklzRW1wdHkpIHtcclxuXHJcbiAgICAgIHZhciByZXN1bHQgPSBhbnN3ZXJJZCA9PSBudWxsXHJcbiAgICAgIHJ1bGVFeHBSZXN1bHRBcnIucHVzaChyZXN1bHQpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAocnVsZUV4cC5sb2dpY1Byb3BlcnR5SWQgPT0gTG9naWNQcm9wZXJ0eUVudW0uSXNOb3RFbXB0eSkge1xyXG5cclxuICAgICAgdmFyIHJlc3VsdCA9IGFuc3dlcklkICE9IG51bGxcclxuICAgICAgcnVsZUV4cFJlc3VsdEFyci5wdXNoKHJlc3VsdCk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChydWxlRXhwLmxvZ2ljUHJvcGVydHlJZCA9PSBMb2dpY1Byb3BlcnR5RW51bS5BbnlPZikge1xyXG5cclxuICAgICAgdmFyIGFuc3dlcklkQXJyOiBudW1iZXJbXSA9IHJ1bGVFeHAucnVsZUV4cEFuc3dlcnMubWFwKHggPT4geC5hbnN3ZXJJZCk7XHJcbiAgICAgIHZhciByZXN1bHQgPSBhbnN3ZXJJZEFyci5maW5kSW5kZXgoeCA9PiB4ID09IGFuc3dlcklkKSA+IC0xXHJcbiAgICAgIHJ1bGVFeHBSZXN1bHRBcnIucHVzaChyZXN1bHQpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAocnVsZUV4cC5sb2dpY1Byb3BlcnR5SWQgPT0gTG9naWNQcm9wZXJ0eUVudW0uVGhlbikge1xyXG5cclxuICAgICAgdmFyIGFuc3dlcklkQXJyOiBudW1iZXJbXSA9IHJ1bGVFeHAucnVsZUV4cEFuc3dlcnMubWFwKHggPT4geC5hbnN3ZXJJZCk7XHJcbiAgICAgIHZhciByZXN1bHQgPSBhbnN3ZXJJZEFyci5maW5kSW5kZXgoeCA9PiB4ID09IGFuc3dlcklkKSA9PSAtMVxyXG4gICAgICBydWxlRXhwUmVzdWx0QXJyLnB1c2gocmVzdWx0KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJ1bGVFeHBSZXN1bHRBcnIubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocnVsZUV4cC5ydWxlRXhwQW5zd2Vycy5sZW5ndGggPT0gMSkge1xyXG4gICAgICByZXR1cm4gcnVsZUV4cFJlc3VsdEFyci5maWx0ZXIoeCA9PiB4ID09IHRydWUpLmxlbmd0aCA+IDBcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHJ1bGVFeHAub3Bwb3JhdG9yID09IE9wZXJhdG9yRW51bS5Pcikge1xyXG4gICAgICByZXR1cm4gcnVsZUV4cFJlc3VsdEFyci5maWx0ZXIoeCA9PiB4ID09IHRydWUpLmxlbmd0aCA+IDBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBydWxlRXhwUmVzdWx0QXJyLmZpbHRlcih4ID0+IHggPT0gZmFsc2UpLmxlbmd0aCA9PSAwXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrUnVsZUV4cEZvckFuc3dlcklkQXJyKHJ1bGVFeHA6IFJ1bGVFeHBEdG8sIGFuc3dlcklkQXJyOiBudW1iZXJbXSkge1xyXG4gICAgdmFyIHJ1bGVFeHBSZXN1bHRBcnI6IGJvb2xlYW5bXSA9IFtdO1xyXG5cclxuICAgIGFuc3dlcklkQXJyPy5mb3JFYWNoKGFuc3dlciA9PiB7XHJcbiAgICAgIHZhciBpc1Jlc3VsdCA9IHRoaXMuY2hlY2tSdWxlRXhwRm9yQW5zd2VySWQocnVsZUV4cCwgYW5zd2VyKTtcclxuICAgICAgcnVsZUV4cFJlc3VsdEFyci5wdXNoKGlzUmVzdWx0KTtcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHJ1bGVFeHBSZXN1bHRBcnIubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocnVsZUV4cC5ydWxlRXhwQW5zd2Vycy5sZW5ndGggPT0gMSkge1xyXG4gICAgICByZXR1cm4gcnVsZUV4cFJlc3VsdEFyci5maWx0ZXIoeCA9PiB4ID09IHRydWUpLmxlbmd0aCA+IDBcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHJ1bGVFeHAub3Bwb3JhdG9yID09IE9wZXJhdG9yRW51bS5Pcikge1xyXG4gICAgICByZXR1cm4gcnVsZUV4cFJlc3VsdEFyci5maWx0ZXIoeCA9PiB4ID09IHRydWUpLmxlbmd0aCA+IDBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBydWxlRXhwUmVzdWx0QXJyLmZpbHRlcih4ID0+IHggPT0gZmFsc2UpLmxlbmd0aCA9PSAwXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrUnVsZUV4cEZvckFuc3dlclRleHQocnVsZUV4cDogUnVsZUV4cER0bywgYW5zd2VyOiBzdHJpbmcpIHtcclxuICAgIHZhciBydWxlRXhwUmVzdWx0QXJyOiBib29sZWFuW10gPSBbXTtcclxuICAgIGlmIChydWxlRXhwLmxvZ2ljUHJvcGVydHlJZCA9PSBMb2dpY1Byb3BlcnR5RW51bS5Jc0VtcHR5KSB7XHJcblxyXG4gICAgICB2YXIgcmVzdWx0ID0gYW5zd2VyID09IG51bGwgfHwgYW5zd2VyID09ICcnXHJcbiAgICAgIHJ1bGVFeHBSZXN1bHRBcnIucHVzaChyZXN1bHQpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAocnVsZUV4cC5sb2dpY1Byb3BlcnR5SWQgPT0gTG9naWNQcm9wZXJ0eUVudW0uSXNOb3RFbXB0eSkge1xyXG5cclxuICAgICAgdmFyIHJlc3VsdCA9IGFuc3dlciAhPSBudWxsICYmIGFuc3dlciAhPSAnJ1xyXG4gICAgICBydWxlRXhwUmVzdWx0QXJyLnB1c2gocmVzdWx0KTtcclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmIChydWxlRXhwLnJ1bGVFeHBBbnN3ZXJzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgIHJldHVybiBydWxlRXhwUmVzdWx0QXJyLmZpbHRlcih4ID0+IHggPT0gdHJ1ZSkubGVuZ3RoID4gMFxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocnVsZUV4cC5vcHBvcmF0b3IgPT0gT3BlcmF0b3JFbnVtLk9yKSB7XHJcbiAgICAgIHJldHVybiBydWxlRXhwUmVzdWx0QXJyLmZpbHRlcih4ID0+IHggPT0gdHJ1ZSkubGVuZ3RoID4gMFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHJ1bGVFeHBSZXN1bHRBcnIuZmlsdGVyKHggPT4geCA9PSBmYWxzZSkubGVuZ3RoID09IDBcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ2hlY2tSdWxlc1VzZWNhc2VNb2RlbCB7XHJcbiAgcnVsZUV4cHM6IFJ1bGVFeHBEdG9bXTtcclxuICBxdWVzdGlvbnM6IFF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlW107XHJcbiAgY3VycmVudFBhZ2VJbmRleDpudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja1J1bGVzVXNlY2FzZVJlc3VsdCB7XHJcbiAgZXhwcmVzdGlvblJlc3VsdEFycjogYm9vbGVhbltdO1xyXG59Il19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stcnVsZS1leHBzLnVzZWNhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL3VzZWNhc2VzL2NoZWNrLXJ1bGUtZXhwcy51c2VjYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBS2hFLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0I7SUFFQSxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQThCO1FBRXBDLElBQUksYUFBYSxHQUE0QjtZQUMzQyxtQkFBbUIsRUFBRSxFQUFFO1NBQ3hCLENBQUM7UUFFRixNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNoQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xGLElBQUksa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFcEQsSUFBSSxNQUFlLENBQUM7WUFFcEIsSUFBSSxrQkFBa0IsQ0FBQyxZQUFZLElBQUksZ0JBQWdCLENBQUMsU0FBUyxFQUFFO2dCQUNqRSxNQUFNLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTth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TyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtTQUMxRDthQUNJLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFO1lBQzdDLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7U0FDMUQ7YUFBTTtZQUNMLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUE7U0FDNUQ7SUFDSCxDQUFDOzhHQWpLVSxvQkFBb0I7a0hBQXBCLG9CQUFvQixjQUZuQixNQUFNOzsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQXNLRCxNQUFNLE9BQU8sc0JBQXNCO0NBSWxDO0FBRUQsTUFBTSxPQUFPLHVCQUF1QjtDQUVuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgVXNlQ2FzZSB9IGZyb20gXCIuL2Jhc2UvdXNlLWNhc2VcIjtcclxuaW1wb3J0IHsgU3VydmV5UnVsZUR0byB9IGZyb20gXCIuLi8uLi9zaGFyZWQvZHRvcy9zdXJ2ZXktcnVsZS5kdG9cIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9mb3JtLWludGVyZmFjZXMvc3VydmVyeS1saWIuZm9ybS1pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgUnVsZUV4cER0byB9IGZyb20gXCIuLi8uLi9zaGFyZWQvZHRvcy9ydWxlLWV4cC5kdG9cIjtcclxuaW1wb3J0IHsgUXVlc3Rpb25UeXBlRW51bSB9IGZyb20gXCIuLi8uLi9zaGFyZWQvZW51bXMvcXVlc3Rpb24tdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7IExvZ2ljUHJvcGVydHlFbnVtIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9lbnVtcy9Mb2dpYy1Qcm9wZXJ0eS5lbnVtXCI7XHJcbmltcG9ydCB7IE9wZXJhdG9yRW51bSB9IGZyb20gXCIuLi8uLi9zaGFyZWQvZW51bXMvb3BlcmF0b3IuZW51bVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tSdWxlRXhwc1VzZWNhc2UgaW1wbGVtZW50cyBVc2VDYXNlPENoZWNrUnVsZXNVc2VjYXNlTW9kZWwsIENoZWNrUnVsZXNVc2VjYXNlUmVzdWx0PntcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgZXhlY3V0ZShwYXJhbXM6IENoZWNrUnVsZXNVc2VjYXNlTW9kZWwpOiBPYnNlcnZhYmxlPENoZWNrUnVsZXNVc2VjYXNlUmVzdWx0PiB7XHJcblxyXG4gICAgdmFyIHVzZUNhc2VSZXN1bHQ6IENoZWNrUnVsZXNVc2VjYXNlUmVzdWx0ID0ge1xyXG4gICAgICBleHByZXN0aW9uUmVzdWx0QXJyOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgICBwYXJhbXMucnVsZUV4cHMuZm9yRWFjaChydWxlRXhwID0+IHtcclxuICAgICAgY29uc3QgaW5kZXggPSBwYXJhbXMucXVlc3Rpb25zLmZpbmRJbmRleCh4ID0+IHgucXVlc3Rpb25JZCA9PSBydWxlRXhwLnF1ZXN0aW9uSWQpO1xyXG4gICAgICB2YXIgcXVlc3Rpb25Hcm91cFZhbHVlID0gcGFyYW1zLnF1ZXN0aW9ucy5hdChpbmRleCk7XHJcblxyXG4gICAgICB2YXIgcmVzdWx0OiBib29sZWFuO1xyXG5cclxuICAgICAgaWYgKHF1ZXN0aW9uR3JvdXBWYWx1ZS5xdWVzdGlvblR5cGUgPT0gUXVlc3Rpb25UeXBlRW51bS5UZXh0SW5wdXQpIHtcclxuICAgICAgICByZXN1bHQgPSB0aGlzLmNoZWNrUnVsZUV4cEZvckFuc3dlclRleHQocnVsZUV4cCwgcXVlc3Rpb25Hcm91cFZhbHVlLmFuc3dlclRleHQpXHJcbiAgICAgIH0gXHJcbiAgICAgIGVsc2UgaWYgKHF1ZXN0aW9uR3JvdXBWYWx1ZS5xdWVzdGlvblR5cGUgPT0gUXVlc3Rpb25UeXBlRW51bS5DaGVja0JveCB8fCBxdWVzdGlvbkdyb3VwVmFsdWUucXVlc3Rpb25UeXBlID09IFF1ZXN0aW9uVHlwZUVudW0uRHJvcERvd25NdWx0aSkge1xyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuY2hlY2tSdWxlRXhwRm9yQW5zd2VySWRBcnIocnVsZUV4cCwgcXVlc3Rpb25Hcm91cFZhbHVlLmFuc3dlcklkQXJyKTtcclxuICAgICAgfSBcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5jaGVja1J1bGVFeHBGb3JBbnN3ZXJJZChydWxlRXhwLCBxdWVzdGlvbkdyb3VwVmFsdWUuYW5zd2VySWQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB1c2VDYXNlUmVzdWx0LmV4cHJlc3Rpb25SZXN1bHRBcnIucHVzaChyZXN1bHQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc29sZS5sb2coYFF1ZXN0aW9ucyBub3QgcGFzc2VkICR7dXNlQ2FzZVJlc3VsdC5leHByZXN0aW9uUmVzdWx0QXJyLmZpbHRlcih4PT54PT1mYWxzZSkubGVuZ3RofWApO1xyXG5cclxuICAgIHJldHVybiBvZih1c2VDYXNlUmVzdWx0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tSdWxlRXhwRm9yQW5zd2VySWQocnVsZUV4cDogUnVsZUV4cER0bywgYW5zd2VySWQ6IG51bWJlcikge1xyXG4gICAgdmFyIHJ1bGVFeHBSZXN1bHRBcnI6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgaWYgKHJ1bGVFeHAubG9naWNQcm9wZXJ0eUlkID09IExvZ2ljUHJvcGVydHlFbnVtLkdyZWF0ZXJUaGFuKSB7XHJcblxyXG4gICAgICBydWxlRXhwLnJ1bGVFeHBBbnN3ZXJzLmZvckVhY2goYW5zd2VyID0+IHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gYW5zd2VySWQgPiBhbnN3ZXIuYW5zd2VySWRcclxuICAgICAgICBydWxlRXhwUmVzdWx0QXJyLnB1c2gocmVzdWx0KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChydWxlRXhwLmxvZ2ljUHJvcGVydHlJZCA9PSBMb2dpY1Byb3BlcnR5RW51bS5HcmVhdGVyVGhhbk9yRXF1YWwpIHtcclxuXHJcbiAgICAgIHJ1bGVFeHAucnVsZUV4cEFuc3dlcnMuZm9yRWFjaChhbnN3ZXIgPT4ge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBhbnN3ZXJJZCA+PSBhbnN3ZXIuYW5zd2VySWRcclxuICAgICAgICBydWxlRXhwUmVzdWx0QXJyLnB1c2gocmVzdWx0KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChydWxlRXhwLmxvZ2ljUHJvcGVydHlJZCA9PSBMb2dpY1Byb3BlcnR5RW51bS5MZXNzVGhhbikge1xyXG5cclxuICAgICAgcnVsZUV4cC5ydWxlRXhwQW5zd2Vycy5mb3JFYWNoKGFuc3dlciA9PiB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IGFuc3dlcklkIDwgYW5zd2VyLmFuc3dlcklkXHJcbiAgICAgICAgcnVsZUV4cFJlc3VsdEFyci5wdXNoKHJlc3VsdCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSBpZiAocnVsZUV4cC5sb2dpY1Byb3BlcnR5SWQgPT0gTG9naWNQcm9wZXJ0eUVudW0uTGVzc1RoYW5PckVxdWFsKSB7XHJcblxyXG4gICAgICBydWxlRXhwLnJ1bGVFeHBBbnN3ZXJzLmZvckVhY2goYW5zd2VyID0+IHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gYW5zd2VySWQgPD0gYW5zd2VyLmFuc3dlcklkXHJcbiAgICAgICAgcnVsZUV4cFJlc3VsdEFyci5wdXNoKHJlc3VsdCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSBpZiAocnVsZUV4cC5sb2dpY1Byb3BlcnR5SWQgPT0gTG9naWNQcm9wZXJ0eUVudW0uRXF1YWwpIHtcclxuXHJcbiAgICAgIHJ1bGVFeHAucnVsZUV4cEFuc3dlcnMuZm9yRWFjaChhbnN3ZXIgPT4ge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBhbnN3ZXJJZCA9PSBhbnN3ZXIuYW5zd2VySWRcclxuICAgICAgICBydWxlRXhwUmVzdWx0QXJyLnB1c2gocmVzdWx0KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChydWxlRXhwLmxvZ2ljUHJvcGVydHlJZCA9PSBMb2dpY1Byb3BlcnR5RW51bS5Ob3RFcXVhbCkge1xyXG5cclxuICAgICAgcnVsZUV4cC5ydWxlRXhwQW5zd2Vycy5mb3JFYWNoKGFuc3dlciA9PiB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IGFuc3dlcklkICE9IGFuc3dlci5hbnN3ZXJJZFxyXG4gICAgICAgIHJ1bGVFeHBSZXN1bHRBcnIucHVzaChyZXN1bHQpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKHJ1bGVFeHAubG9naWNQcm9wZXJ0eUlkID09IExvZ2ljUHJvcGVydHlFbnVtLklzRW1wdHkpIHtcclxuXHJcbiAgICAgIHZhciByZXN1bHQgPSBhbnN3ZXJJZCA9PSBudWxsXHJcbiAgICAgIHJ1bGVFeHBSZXN1bHRBcnIucHVzaChyZXN1bHQpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAocnVsZUV4cC5sb2dpY1Byb3BlcnR5SWQgPT0gTG9naWNQcm9wZXJ0eUVudW0uSXNOb3RFbXB0eSkge1xyXG5cclxuICAgICAgdmFyIHJlc3VsdCA9IGFuc3dlcklkICE9IG51bGxcclxuICAgICAgcnVsZUV4cFJlc3VsdEFyci5wdXNoKHJlc3VsdCk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChydWxlRXhwLmxvZ2ljUHJvcGVydHlJZCA9PSBMb2dpY1Byb3BlcnR5RW51bS5BbnlPZikge1xyXG5cclxuICAgICAgdmFyIGFuc3dlcklkQXJyOiBudW1iZXJbXSA9IHJ1bGVFeHAucnVsZUV4cEFuc3dlcnMubWFwKHggPT4geC5hbnN3ZXJJZCk7XHJcbiAgICAgIHZhciByZXN1bHQgPSBhbnN3ZXJJZEFyci5maW5kSW5kZXgoeCA9PiB4ID09IGFuc3dlcklkKSA+IC0xXHJcbiAgICAgIHJ1bGVFeHBSZXN1bHRBcnIucHVzaChyZXN1bHQpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAocnVsZUV4cC5sb2dpY1Byb3BlcnR5SWQgPT0gTG9naWNQcm9wZXJ0eUVudW0uVGhlbikge1xyXG5cclxuICAgICAgdmFyIGFuc3dlcklkQXJyOiBudW1iZXJbXSA9IHJ1bGVFeHAucnVsZUV4cEFuc3dlcnMubWFwKHggPT4geC5hbnN3ZXJJZCk7XHJcbiAgICAgIHZhciByZXN1bHQgPSBhbnN3ZXJJZEFyci5maW5kSW5kZXgoeCA9PiB4ID09IGFuc3dlcklkKSA9PSAtMVxyXG4gICAgICBydWxlRXhwUmVzdWx0QXJyLnB1c2gocmVzdWx0KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJ1bGVFeHBSZXN1bHRBcnIubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocnVsZUV4cC5ydWxlRXhwQW5zd2Vycy5sZW5ndGggPT0gMSkge1xyXG4gICAgICByZXR1cm4gcnVsZUV4cFJlc3VsdEFyci5maWx0ZXIoeCA9PiB4ID09IHRydWUpLmxlbmd0aCA+IDBcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHJ1bGVFeHAub3Bwb3JhdG9yID09IE9wZXJhdG9yRW51bS5Pcikge1xyXG4gICAgICByZXR1cm4gcnVsZUV4cFJlc3VsdEFyci5maWx0ZXIoeCA9PiB4ID09IHRydWUpLmxlbmd0aCA+IDBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBydWxlRXhwUmVzdWx0QXJyLmZpbHRlcih4ID0+IHggPT0gZmFsc2UpLmxlbmd0aCA9PSAwXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrUnVsZUV4cEZvckFuc3dlcklkQXJyKHJ1bGVFeHA6IFJ1bGVFeHBEdG8sIGFuc3dlcklkQXJyOiBudW1iZXJbXSkge1xyXG4gICAgdmFyIHJ1bGVFeHBSZXN1bHRBcnI6IGJvb2xlYW5bXSA9IFtdO1xyXG5cclxuICAgIGFuc3dlcklkQXJyPy5mb3JFYWNoKGFuc3dlciA9PiB7XHJcbiAgICAgIHZhciBpc1Jlc3VsdCA9IHRoaXMuY2hlY2tSdWxlRXhwRm9yQW5zd2VySWQocnVsZUV4cCwgYW5zd2VyKTtcclxuICAgICAgcnVsZUV4cFJlc3VsdEFyci5wdXNoKGlzUmVzdWx0KTtcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHJ1bGVFeHBSZXN1bHRBcnIubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocnVsZUV4cC5ydWxlRXhwQW5zd2Vycy5sZW5ndGggPT0gMSkge1xyXG4gICAgICByZXR1cm4gcnVsZUV4cFJlc3VsdEFyci5maWx0ZXIoeCA9PiB4ID09IHRydWUpLmxlbmd0aCA+IDBcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHJ1bGVFeHAub3Bwb3JhdG9yID09IE9wZXJhdG9yRW51bS5Pcikge1xyXG4gICAgICByZXR1cm4gcnVsZUV4cFJlc3VsdEFyci5maWx0ZXIoeCA9PiB4ID09IHRydWUpLmxlbmd0aCA+IDBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBydWxlRXhwUmVzdWx0QXJyLmZpbHRlcih4ID0+IHggPT0gZmFsc2UpLmxlbmd0aCA9PSAwXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrUnVsZUV4cEZvckFuc3dlclRleHQocnVsZUV4cDogUnVsZUV4cER0bywgYW5zd2VyOiBzdHJpbmcpIHtcclxuICAgIHZhciBydWxlRXhwUmVzdWx0QXJyOiBib29sZWFuW10gPSBbXTtcclxuICAgIGlmIChydWxlRXhwLmxvZ2ljUHJvcGVydHlJZCA9PSBMb2dpY1Byb3BlcnR5RW51bS5Jc0VtcHR5KSB7XHJcblxyXG4gICAgICB2YXIgcmVzdWx0ID0gYW5zd2VyID09IG51bGwgfHwgYW5zd2VyID09ICcnXHJcbiAgICAgIHJ1bGVFeHBSZXN1bHRBcnIucHVzaChyZXN1bHQpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAocnVsZUV4cC5sb2dpY1Byb3BlcnR5SWQgPT0gTG9naWNQcm9wZXJ0eUVudW0uSXNOb3RFbXB0eSkge1xyXG5cclxuICAgICAgdmFyIHJlc3VsdCA9IGFuc3dlciAhPSBudWxsICYmIGFuc3dlciAhPSAnJ1xyXG4gICAgICBydWxlRXhwUmVzdWx0QXJyLnB1c2gocmVzdWx0KTtcclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmIChydWxlRXhwLnJ1bGVFeHBBbnN3ZXJzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgIHJldHVybiBydWxlRXhwUmVzdWx0QXJyLmZpbHRlcih4ID0+IHggPT0gdHJ1ZSkubGVuZ3RoID4gMFxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocnVsZUV4cC5vcHBvcmF0b3IgPT0gT3BlcmF0b3JFbnVtLk9yKSB7XHJcbiAgICAgIHJldHVybiBydWxlRXhwUmVzdWx0QXJyLmZpbHRlcih4ID0+IHggPT0gdHJ1ZSkubGVuZ3RoID4gMFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHJ1bGVFeHBSZXN1bHRBcnIuZmlsdGVyKHggPT4geCA9PSBmYWxzZSkubGVuZ3RoID09IDBcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ2hlY2tSdWxlc1VzZWNhc2VNb2RlbCB7XHJcbiAgcnVsZUV4cHM6IFJ1bGVFeHBEdG9bXTtcclxuICBxdWVzdGlvbnM6IFF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlW107XHJcbiAgY3VycmVudFBhZ2VJbmRleDpudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja1J1bGVzVXNlY2FzZVJlc3VsdCB7XHJcbiAgZXhwcmVzdGlvblJlc3VsdEFycjogYm9vbGVhbltdO1xyXG59Il19
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Pipe, EventEmitter, Component, Output, Input, InjectionToken, Inject, Directive, HostListener, NgModule } from '@angular/core';
2
+ import { Injectable, Directive, HostListener, Pipe, EventEmitter, Component, Output, Input, InjectionToken, Inject, NgModule } from '@angular/core';
3
3
  import { v4 } from 'uuid';
4
4
  import { Subject, of, debounceTime, map, filter, distinctUntilChanged } from 'rxjs';
5
5
  import * as i1 from '@ng-stack/forms';
@@ -136,12 +136,9 @@ class CheckRuleExpsUsecase {
136
136
  else {
137
137
  result = this.checkRuleExpForAnswerId(ruleExp, questionGroupValue.answerId);
138
138
  }
139
- if (result != true && questionGroupValue.surveyPageIndex == params.currentPageIndex) {
140
- var answers = ruleExp.ruleExpAnswers.map(x => x.answerId + '-' + x.answerTitle);
141
- console.log(`Question ${questionGroupValue.questionId} type ${QuestionTypeEnum[questionGroupValue.questionType]} --- ${'not passed'} ---`, ` answers (${answers.join(' , ')}) logic (${LogicPropertyEnum[ruleExp.logicPropertyId]}) operator (${OperatorEnum[ruleExp.opporator]})`);
142
- }
143
139
  useCaseResult.exprestionResultArr.push(result);
144
140
  });
141
+ console.log(`Questions not passed ${useCaseResult.exprestionResultArr.filter(x => x == false).length}`);
145
142
  return of(useCaseResult);
146
143
  }
147
144
  checkRuleExpForAnswerId(ruleExp, answerId) {
@@ -277,6 +274,59 @@ var InputTypeEnum;
277
274
  InputTypeEnum[InputTypeEnum["Text"] = 7] = "Text";
278
275
  })(InputTypeEnum || (InputTypeEnum = {}));
279
276
 
277
+ class MaskedForMinMaxDirective {
278
+ constructor(el) {
279
+ this.el = el;
280
+ }
281
+ onKeyUp(event) {
282
+ const input = event.target;
283
+ if (input.type === 'number' || input.type === 'text') {
284
+ var min = null;
285
+ var max = null;
286
+ if (input.getAttribute('min') !== null) {
287
+ min = parseInt(input.getAttribute('min'));
288
+ }
289
+ if (input.getAttribute('max') !== null) {
290
+ max = parseInt(input.getAttribute('max'));
291
+ }
292
+ var inputVlaue = input.value;
293
+ // allowed key array
294
+ var keyArr = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'Backspace'];
295
+ if (min != null || max != null) {
296
+ if (keyArr.indexOf(event.key) == -1) {
297
+ event.preventDefault();
298
+ }
299
+ if (input.selectionStart != null) {
300
+ let firstPart = input.value.slice(0, input.selectionStart);
301
+ let lastPart = input.value.slice(input.selectionEnd, input.value.length);
302
+ inputVlaue = Number(firstPart + event.key + lastPart);
303
+ }
304
+ }
305
+ if (min != null) {
306
+ if (parseInt(inputVlaue) < min) {
307
+ event.preventDefault();
308
+ }
309
+ }
310
+ if (max !== null) {
311
+ if (parseInt(inputVlaue) > max) {
312
+ event.preventDefault();
313
+ }
314
+ }
315
+ }
316
+ }
317
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaskedForMinMaxDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
318
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: MaskedForMinMaxDirective, selector: "[libMaskedForMinMax]", host: { listeners: { "keypress": "onKeyUp($event)" } }, ngImport: i0 }); }
319
+ }
320
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaskedForMinMaxDirective, decorators: [{
321
+ type: Directive,
322
+ args: [{
323
+ selector: '[libMaskedForMinMax]'
324
+ }]
325
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onKeyUp: [{
326
+ type: HostListener,
327
+ args: ['keypress', ['$event']]
328
+ }] } });
329
+
280
330
  class TextBoxTypeAttrPipe {
281
331
  transform(value, ...args) {
282
332
  if (value != null) {
@@ -344,6 +394,9 @@ class QuestionTextTemplateComponent {
344
394
  this.fCtrls.inputMax.setValue(value.surveyAnswers[0].inputMax);
345
395
  this.fCtrls.answer.addValidators([Validators.max(value.surveyAnswers[0].inputMax)]);
346
396
  }
397
+ if (value.surveyAnswers[0].inputMin != null || value.surveyAnswers[0].inputMax != null) {
398
+ this.fCtrls.inputTypeId.setValue(InputTypeEnum.Text);
399
+ }
347
400
  }
348
401
  else if (value.surveyAnswers[0].inputTypeId == InputTypeEnum.Email) {
349
402
  this.fCtrls.answer.addValidators([Validators.email]);
@@ -412,11 +465,11 @@ class QuestionTextTemplateComponent {
412
465
  this.fCtrls.answer.updateValueAndValidity();
413
466
  }
414
467
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionTextTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
415
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: { isArabicLang: "isArabicLang", isTextArea: "isTextArea", setQuestion: "setQuestion", isDisabled: "isDisabled" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n <p *ngIf=\"fCtrls.inputMin.value != null || fCtrls.inputMax.value != null\" class=\"text-danger\">\n <small>{{isArabicLang == true ? ' \u0627\u0644\u0642\u064A\u0645\u0629 \u064A\u062C\u0628 \u0627\u0646 \u062A\u0643\u0648\u0646' :'The value must be '}}</small>\n <small *ngIf=\"fCtrls.inputMin.value\">{{isArabicLang == true ? ' \u0645\u0646' : 'from'}} {{fCtrls.inputMin.value}} </small>\n <small *ngIf=\"fCtrls.inputMax.value\">{{isArabicLang == true ? '\u0627\u0644\u0649' : 'to'}} {{fCtrls.inputMax.value}} </small>\n </p>\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" [attr.min]=\"fCtrls.inputMin.value\"\n [attr.max]=\"fCtrls.inputMax.value\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\">\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"2\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\"></textarea>\n </ng-template>\n </div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: TextBoxTypeAttrPipe, name: "textBoxTypeAttr" }] }); }
468
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: { isArabicLang: "isArabicLang", isTextArea: "isTextArea", setQuestion: "setQuestion", isDisabled: "isDisabled" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n <p *ngIf=\"fCtrls.inputMin.value != null || fCtrls.inputMax.value != null\" class=\"text-danger\">\n <small>{{isArabicLang == true ? ' \u0627\u0644\u0642\u064A\u0645\u0629 \u064A\u062C\u0628 \u0627\u0646 \u062A\u0643\u0648\u0646' :'The value must be '}}</small>\n <small *ngIf=\"fCtrls.inputMin.value\">{{isArabicLang == true ? ' \u0645\u0646' : 'from'}} {{fCtrls.inputMin.value}} </small>\n <small *ngIf=\"fCtrls.inputMax.value\">{{isArabicLang == true ? '\u0627\u0644\u0649' : 'to'}} {{fCtrls.inputMax.value}} </small>\n </p>\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" libMaskedForMinMax [attr.min]=\"fCtrls.inputMin.value\"\n [attr.max]=\"fCtrls.inputMax.value\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\">\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"2\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\"></textarea>\n </ng-template>\n </div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: MaskedForMinMaxDirective, selector: "[libMaskedForMinMax]" }, { kind: "pipe", type: TextBoxTypeAttrPipe, name: "textBoxTypeAttr" }] }); }
416
469
  }
417
470
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionTextTemplateComponent, decorators: [{
418
471
  type: Component,
419
- args: [{ selector: 'lib-question-text-template', template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n <p *ngIf=\"fCtrls.inputMin.value != null || fCtrls.inputMax.value != null\" class=\"text-danger\">\n <small>{{isArabicLang == true ? ' \u0627\u0644\u0642\u064A\u0645\u0629 \u064A\u062C\u0628 \u0627\u0646 \u062A\u0643\u0648\u0646' :'The value must be '}}</small>\n <small *ngIf=\"fCtrls.inputMin.value\">{{isArabicLang == true ? ' \u0645\u0646' : 'from'}} {{fCtrls.inputMin.value}} </small>\n <small *ngIf=\"fCtrls.inputMax.value\">{{isArabicLang == true ? '\u0627\u0644\u0649' : 'to'}} {{fCtrls.inputMax.value}} </small>\n </p>\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" [attr.min]=\"fCtrls.inputMin.value\"\n [attr.max]=\"fCtrls.inputMax.value\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\">\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"2\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\"></textarea>\n </ng-template>\n </div>" }]
472
+ args: [{ selector: 'lib-question-text-template', template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n <p *ngIf=\"fCtrls.inputMin.value != null || fCtrls.inputMax.value != null\" class=\"text-danger\">\n <small>{{isArabicLang == true ? ' \u0627\u0644\u0642\u064A\u0645\u0629 \u064A\u062C\u0628 \u0627\u0646 \u062A\u0643\u0648\u0646' :'The value must be '}}</small>\n <small *ngIf=\"fCtrls.inputMin.value\">{{isArabicLang == true ? ' \u0645\u0646' : 'from'}} {{fCtrls.inputMin.value}} </small>\n <small *ngIf=\"fCtrls.inputMax.value\">{{isArabicLang == true ? '\u0627\u0644\u0649' : 'to'}} {{fCtrls.inputMax.value}} </small>\n </p>\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" libMaskedForMinMax [attr.min]=\"fCtrls.inputMin.value\"\n [attr.max]=\"fCtrls.inputMax.value\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\">\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"2\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\"></textarea>\n </ng-template>\n </div>" }]
420
473
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: SurveyLibService }]; }, propDecorators: { emitter: [{
421
474
  type: Output
422
475
  }], isArabicLang: [{
@@ -782,11 +835,11 @@ class QuestionMatrixTemplateComponent {
782
835
  return element;
783
836
  }
784
837
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionMatrixTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
785
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionMatrixTemplateComponent, selector: "lib-question-matrix-template", inputs: { setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" style=\" border-collapse: collapse;\"\n[ngClass]=\"{'d-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"matrix-question\" [formGroup]=\"rForm\">\n <div class=\"matrix-table\" formArrayName=\"subQuestionArray\">\n <div class=\"matrix-head-row\">\n <div class=\"matrix-col\">\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answers of surveyQuestion?.surveyAnswers\" >\n <span [innerHTML]=\"answers.answerTitle\"></span>\n </div>\n </div>\n\n <div class=\"matrix-row\" [attr.id]=\"'question_'+questionGroup.value.subQuestionId\"\n *ngFor=\"let questionGroup of fCtrls.subQuestionArray.controls ;let subQuestionIndex = index\"\n [ngClass]=\"{'invalid-question': questionGroup.controls.answer.invalid}\">\n <div class=\"matrix-col matrix-sub-quastion\" [innerHTML]=\"questionGroup.value.questionTitle\">\n </div>\n <div class=\"matrix-col answer__container\" *ngFor=\"let answer of surveyQuestion?.surveyAnswers;let answerIndex = index\">\n <div class=\"form-check form-check-radio form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"{{elemId}}__radio-btn-option_{{subQuestionIndex}}\"\n id=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\" (change)=\"onChangeAnswer(questionGroup.value ,answer)\"\n value=\"{{answer.answerId}}\" [checked]=\"answer.answerId == questionGroup.value.answer\">\n <label class=\"form-check-label d-inline d-lg-none\" [innerHTML]=\"answer.answerTitle\"\n for=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\"> </label>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>", styles: ["@media (max-width: 767px){.quastion .quastion-title{position:sticky;top:150px;z-index:1000;padding:10px 20px;background-color:#4c3d8f;color:#fff;font-size:16px;box-shadow:4px 5px 5px #0000004d;border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px}.quastion .quastion-title:last-of-type(){position:static;z-index:initial}.quastion .matrix-question .matrix-table .matrix-row .matrix-col{width:100%!important}.matrix-table .matrix-row .matrix-col .form-check{flex-direction:row}.matrix-head-row{display:none!important}.answer__container.matrix-col{padding:5px 15px!important}.answer__container.matrix-col .form-check-radio .form-check-label{padding-right:15px!important}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }] }); }
838
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionMatrixTemplateComponent, selector: "lib-question-matrix-template", inputs: { setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" style=\" border-collapse: collapse;\"\n[ngClass]=\"{'d-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"matrix-question\" [formGroup]=\"rForm\">\n <div class=\"matrix-table\" formArrayName=\"subQuestionArray\">\n <div class=\"matrix-head-row\">\n <div class=\"matrix-col\">\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answers of surveyQuestion?.surveyAnswers\" >\n <span [innerHTML]=\"answers.answerTitle\"></span>\n </div>\n </div>\n\n <div class=\"matrix-row\" [attr.id]=\"'question_'+questionGroup.value.subQuestionId\"\n *ngFor=\"let questionGroup of fCtrls.subQuestionArray.controls ;let subQuestionIndex = index\"\n [ngClass]=\"{'invalid-question': questionGroup.controls.answer.invalid}\">\n <div class=\"matrix-col matrix-sub-quastion\" [innerHTML]=\"questionGroup.value.questionTitle\">\n </div>\n <div class=\"matrix-col answer__container\" *ngFor=\"let answer of surveyQuestion?.surveyAnswers;let answerIndex = index\">\n <div class=\"form-check form-check-radio form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"{{elemId}}__radio-btn-option_{{subQuestionIndex}}\"\n id=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\" (change)=\"onChangeAnswer(questionGroup.value ,answer)\"\n value=\"{{answer.answerId}}\" [checked]=\"answer.answerId == questionGroup.value.answer\">\n <label class=\"form-check-label d-inline d-lg-none\" [innerHTML]=\"answer.answerTitle\"\n for=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\"> </label>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>", styles: ["@media (max-width: 767px){.quastion .quastion-title{position:sticky;top:150px;z-index:1000;padding:10px 20px;background-color:#4c3d8f;color:#fff;font-size:16px;box-shadow:4px 5px 5px #0000004d;border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px}.quastion .quastion-title:last-of-type{position:static;z-index:initial}.quastion .matrix-question .matrix-table .matrix-row .matrix-col{width:100%!important}.matrix-table .matrix-row .matrix-col .form-check{flex-direction:row}.matrix-head-row{display:none!important}.answer__container.matrix-col{padding:5px 15px!important}.answer__container.matrix-col .form-check-radio .form-check-label{padding-right:15px!important}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }] }); }
786
839
  }
787
840
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionMatrixTemplateComponent, decorators: [{
788
841
  type: Component,
789
- args: [{ selector: 'lib-question-matrix-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" style=\" border-collapse: collapse;\"\n[ngClass]=\"{'d-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"matrix-question\" [formGroup]=\"rForm\">\n <div class=\"matrix-table\" formArrayName=\"subQuestionArray\">\n <div class=\"matrix-head-row\">\n <div class=\"matrix-col\">\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answers of surveyQuestion?.surveyAnswers\" >\n <span [innerHTML]=\"answers.answerTitle\"></span>\n </div>\n </div>\n\n <div class=\"matrix-row\" [attr.id]=\"'question_'+questionGroup.value.subQuestionId\"\n *ngFor=\"let questionGroup of fCtrls.subQuestionArray.controls ;let subQuestionIndex = index\"\n [ngClass]=\"{'invalid-question': questionGroup.controls.answer.invalid}\">\n <div class=\"matrix-col matrix-sub-quastion\" [innerHTML]=\"questionGroup.value.questionTitle\">\n </div>\n <div class=\"matrix-col answer__container\" *ngFor=\"let answer of surveyQuestion?.surveyAnswers;let answerIndex = index\">\n <div class=\"form-check form-check-radio form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"{{elemId}}__radio-btn-option_{{subQuestionIndex}}\"\n id=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\" (change)=\"onChangeAnswer(questionGroup.value ,answer)\"\n value=\"{{answer.answerId}}\" [checked]=\"answer.answerId == questionGroup.value.answer\">\n <label class=\"form-check-label d-inline d-lg-none\" [innerHTML]=\"answer.answerTitle\"\n for=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\"> </label>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>", styles: ["@media (max-width: 767px){.quastion .quastion-title{position:sticky;top:150px;z-index:1000;padding:10px 20px;background-color:#4c3d8f;color:#fff;font-size:16px;box-shadow:4px 5px 5px #0000004d;border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px}.quastion .quastion-title:last-of-type(){position:static;z-index:initial}.quastion .matrix-question .matrix-table .matrix-row .matrix-col{width:100%!important}.matrix-table .matrix-row .matrix-col .form-check{flex-direction:row}.matrix-head-row{display:none!important}.answer__container.matrix-col{padding:5px 15px!important}.answer__container.matrix-col .form-check-radio .form-check-label{padding-right:15px!important}}\n"] }]
842
+ args: [{ selector: 'lib-question-matrix-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" style=\" border-collapse: collapse;\"\n[ngClass]=\"{'d-none':fCtrls.isShow.value != true}\">\n <h3 class=\"quastion-title \">\n <span [innerHTML]=\"surveyQuestion?.questionTitle\"></span>\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"matrix-question\" [formGroup]=\"rForm\">\n <div class=\"matrix-table\" formArrayName=\"subQuestionArray\">\n <div class=\"matrix-head-row\">\n <div class=\"matrix-col\">\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answers of surveyQuestion?.surveyAnswers\" >\n <span [innerHTML]=\"answers.answerTitle\"></span>\n </div>\n </div>\n\n <div class=\"matrix-row\" [attr.id]=\"'question_'+questionGroup.value.subQuestionId\"\n *ngFor=\"let questionGroup of fCtrls.subQuestionArray.controls ;let subQuestionIndex = index\"\n [ngClass]=\"{'invalid-question': questionGroup.controls.answer.invalid}\">\n <div class=\"matrix-col matrix-sub-quastion\" [innerHTML]=\"questionGroup.value.questionTitle\">\n </div>\n <div class=\"matrix-col answer__container\" *ngFor=\"let answer of surveyQuestion?.surveyAnswers;let answerIndex = index\">\n <div class=\"form-check form-check-radio form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"{{elemId}}__radio-btn-option_{{subQuestionIndex}}\"\n id=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\" (change)=\"onChangeAnswer(questionGroup.value ,answer)\"\n value=\"{{answer.answerId}}\" [checked]=\"answer.answerId == questionGroup.value.answer\">\n <label class=\"form-check-label d-inline d-lg-none\" [innerHTML]=\"answer.answerTitle\"\n for=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\"> </label>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>", styles: ["@media (max-width: 767px){.quastion .quastion-title{position:sticky;top:150px;z-index:1000;padding:10px 20px;background-color:#4c3d8f;color:#fff;font-size:16px;box-shadow:4px 5px 5px #0000004d;border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px}.quastion .quastion-title:last-of-type{position:static;z-index:initial}.quastion .matrix-question .matrix-table .matrix-row .matrix-col{width:100%!important}.matrix-table .matrix-row .matrix-col .form-check{flex-direction:row}.matrix-head-row{display:none!important}.answer__container.matrix-col{padding:5px 15px!important}.answer__container.matrix-col .form-check-radio .form-check-label{padding-right:15px!important}}\n"] }]
790
843
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: SurveyLibService }]; }, propDecorators: { emitter: [{
791
844
  type: Output
792
845
  }], setQuestion: [{
@@ -1476,49 +1529,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
1476
1529
  }]
1477
1530
  }] });
1478
1531
 
1479
- class MaskedForMinMaxDirective {
1480
- constructor(el) {
1481
- this.el = el;
1482
- }
1483
- onKeyUp(event) {
1484
- let ele = this.el.nativeElement;
1485
- const input = event.target;
1486
- if (input.type === 'number') {
1487
- var min = null;
1488
- var max = null;
1489
- if (input.getAttribute('min') !== null) {
1490
- min = parseInt(input.getAttribute('min'));
1491
- }
1492
- if (input.getAttribute('max') !== null) {
1493
- max = parseInt(input.getAttribute('max'));
1494
- }
1495
- if (min != null) {
1496
- var newInputValue = input.value + event.key;
1497
- if (parseInt(newInputValue) < min) {
1498
- event.preventDefault();
1499
- }
1500
- }
1501
- if (max !== null) {
1502
- var newInputValue = input.value + event.key;
1503
- if (parseInt(newInputValue) > max) {
1504
- event.preventDefault();
1505
- }
1506
- }
1507
- }
1508
- }
1509
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaskedForMinMaxDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1510
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: MaskedForMinMaxDirective, selector: "[libMaskedForMinMax]", host: { listeners: { "keypress": "onKeyUp($event)" } }, ngImport: i0 }); }
1511
- }
1512
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MaskedForMinMaxDirective, decorators: [{
1513
- type: Directive,
1514
- args: [{
1515
- selector: '[libMaskedForMinMax]'
1516
- }]
1517
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onKeyUp: [{
1518
- type: HostListener,
1519
- args: ['keypress', ['$event']]
1520
- }] } });
1521
-
1522
1532
  class SurveryLibModule {
1523
1533
  static forRoot(config) {
1524
1534
  return {