vcomply-workflow-engine 6.3.2 → 6.3.3

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.
@@ -30,33 +30,67 @@ export class FrequencyDueDateComponent {
30
30
  this.type = this.mode;
31
31
  }
32
32
  }
33
- onValueChange(event, actionType) {
34
- if (!Number.isNaN(Number(event.target.value)) &&
35
- parseInt(event.target.value) > -1) {
36
- this.valueChange.emit({
37
- type: actionType,
38
- value: Number(event.target.value),
39
- pageName: this.pageName,
40
- });
33
+ // Unified event handler for all input events
34
+ onInputEvent(event) {
35
+ const inputId = event.target.id;
36
+ let actionType = '';
37
+ // Determine action type based on input ID
38
+ if (inputId.includes('complete-')) {
39
+ actionType = 'completed';
41
40
  }
42
- else {
43
- if (actionType === 'completed') {
44
- this.completedValue = this.defaultWindow;
45
- }
46
- else if (actionType === 'not completed') {
47
- this.notCompletedValue = this.defaultFailed;
48
- }
49
- else if (actionType === 'deactivated') {
50
- this.deactivateValue = this.defaultDeactivate;
51
- }
41
+ else if (inputId.includes('not-completed-')) {
42
+ actionType = 'not completed';
43
+ }
44
+ else if (inputId.includes('deactivate')) {
45
+ actionType = 'deactivated';
46
+ }
47
+ // Process and validate the input value
48
+ let value = this.processInputValue(event.target.value);
49
+ // Update the input field
50
+ event.target.value = value;
51
+ // Update the corresponding model property
52
+ this.updateModelProperty(actionType, value);
53
+ // Emit the change event
54
+ this.valueChange.emit({
55
+ type: actionType,
56
+ value: value,
57
+ pageName: this.pageName,
58
+ });
59
+ }
60
+ // Process input value: remove leading zeros, ensure positive, handle edge cases
61
+ processInputValue(inputValue) {
62
+ if (inputValue === '' || inputValue === null || inputValue === undefined) {
63
+ return 0;
52
64
  }
65
+ // Convert to number and ensure it's positive
66
+ let value = Math.abs(Number(inputValue));
67
+ // Remove leading zeros by converting to string and back to number
68
+ return Number(value.toString());
69
+ }
70
+ // Update the corresponding model property
71
+ updateModelProperty(actionType, value) {
72
+ switch (actionType) {
73
+ case 'completed':
74
+ this.completedValue = value;
75
+ break;
76
+ case 'not completed':
77
+ this.notCompletedValue = value;
78
+ break;
79
+ case 'deactivated':
80
+ this.deactivateValue = value;
81
+ break;
82
+ }
83
+ }
84
+ // Prevent decimal point entry
85
+ onKeyDown(event) {
86
+ return event.key !== '.';
53
87
  }
54
88
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyDueDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FrequencyDueDateComponent, selector: "app-frequency-due-date", inputs: { mode: "mode", pageType: "pageType", completedRequired: "completedRequired", notCompletedRequired: "notCompletedRequired", completedValue: "completedValue", notCompletedValue: "notCompletedValue", deactivateValue: "deactivateValue", isDeactivated: "isDeactivated", id: "id", pageName: "pageName" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div\n *ngIf=\"['responsibility', 'policy', 'reviewerFrequency'].includes(mode)\"\n class=\"frequency-bottom\"\n>\n <div *ngIf=\"completedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowOpen }}\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n The {{ pageType }} can be {{ dueDateText?.keys }} on the due date and\n <input\n class=\"countNum\"\n [id]=\"'complete-' + id\"\n type=\"number\"\n [(ngModel)]=\"completedValue\"\n (change)=\"onValueChange($event, 'completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n {{ completedValue < 2 ? \"day\" : \"days\" }}\n <span class=\"vx-fw-500\">before</span> the due date. Where this occurs,\n this will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"completed-text vx-fw-500\"\n >{{ dueDateText?.keys }} on time</span\n >.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.extension }}\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n The {{ pageType }} can be {{ dueDateText?.keys }}\n <input\n class=\"countNum\"\n type=\"number\"\n [id]=\"'not-completed-' + id\"\n [(ngModel)]=\"notCompletedValue\"\n (change)=\"onValueChange($event, 'not completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }}\n <span class=\"vx-fw-500\">after</span> the due date. Where this occurs, this\n will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"delay-text vx-fw-500\"\n >{{ dueDateText?.keys }} with delay</span\n >.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowCloses }}\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n The {{ pageType }} cannot be {{ dueDateText?.keys }}\n <span class=\"vx-fw-500 vx-label-txt\">{{ notCompletedValue }}</span>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }}\n <span class=\"vx-fw-500\">after</span> the due date. Where this occurs, this\n will show as the {{ type }} being\n <span class=\"notcompleted-text vx-fw-500\"\n >not\n {{\n dueDateText?.keys === \"reviewed\" ? \"completed\" : dueDateText?.keys\n }}</span\n >.\n </div>\n </div>\n\n <div\n *ngIf=\"isDeactivated && mode === 'responsibility'\"\n class=\"frequency-bottom-item vx-mt-5\"\n >\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n AUTOMATIC DEACTIVATE:\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n This {{ type }} will be automatically deactivated, if it is not\n {{ dueDateText?.keys }}\n for\n <input\n class=\"countNum\"\n type=\"number\"\n [id]=\"'deactivate' + id\"\n [(ngModel)]=\"deactivateValue\"\n (change)=\"onValueChange($event, 'deactivated')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n consecutive due dates.\n </div>\n </div>\n</div>\n\n<!-- For Policy -->\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'policy' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">attested</i></p>\n <input\n [id]=\"'complete-' + id\"\n type=\"number\"\n [(ngModel)]=\"completedValue\"\n (change)=\"onValueChange($event, 'completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the due date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy attestation will <i>fail</i></p>\n <input\n type=\"number\"\n [id]=\"'not-completed-' + id\"\n [(ngModel)]=\"notCompletedValue\"\n (change)=\"onValueChange($event, 'not completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the due date if it is\n not completed.\n </p>\n </div>\n</div>\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'reviewerFrequency' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">reviewed</i></p>\n <input\n [id]=\"'complete-' + id\"\n type=\"number\"\n [(ngModel)]=\"completedValue\"\n (change)=\"onValueChange($event, 'completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the review date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy review will <i>fail</i></p>\n <input\n type=\"number\"\n [id]=\"'not-completed-' + id\"\n [(ngModel)]=\"notCompletedValue\"\n (change)=\"onValueChange($event, 'not completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the review date if it\n is not completed.\n </p>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .frequency-bottom-item-box{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-bottom-item-box input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .frequency-bottom-item-box input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-bottom-item-box input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-bottom-item-box .completed-text{color:#34aa44}::ng-deep .frequency-bottom-item-box .delay-text{color:#f0b819}::ng-deep .frequency-bottom-item-box .notcompleted-text{color:#d93b41}.frequency-due-date{display:block}.frequency-due-date-row{display:flex;border-top:1px solid #f1f1f1;padding:12px 20px;align-items:center}.frequency-due-date p{font-size:13px;color:#747576;width:auto;margin:0;font-weight:400;line-height:20px}.frequency-due-date p i{color:#d93b41;font-style:italic;font-weight:500;padding:0 4px}.frequency-due-date p i.completed{color:#1e5dd3}.frequency-due-date p strong{font-weight:600;font-style:italic}.frequency-due-date input{-moz-appearance:textfield;font-size:14px;color:#161b2f;border:0;border-bottom:2px solid #dcdcdc;display:inline-block;width:36px;text-align:center;padding:4px;margin:0 8px;outline:none}.frequency-due-date input::-webkit-outer-spin-button,.frequency-due-date input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "directive", type: i1.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: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
89
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FrequencyDueDateComponent, selector: "app-frequency-due-date", inputs: { mode: "mode", pageType: "pageType", completedRequired: "completedRequired", notCompletedRequired: "notCompletedRequired", completedValue: "completedValue", notCompletedValue: "notCompletedValue", deactivateValue: "deactivateValue", isDeactivated: "isDeactivated", id: "id", pageName: "pageName" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div *ngIf=\"['responsibility', 'policy', 'reviewerFrequency'].includes(mode)\" class=\"frequency-bottom\">\n <div *ngIf=\"completedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowOpen }}\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n The {{ pageType }} can be {{ dueDateText?.keys }} on the due date and\n <input class=\"countNum\" [id]=\"'complete-' + id\" type=\"number\" [(ngModel)]=\"completedValue\"\n (input)=\"onInputEvent($event)\" (keydown)=\"onKeyDown($event)\" min=\"0\" />\n {{ completedValue < 2 ? \"day\" : \"days\" }} <span class=\"vx-fw-500\">before</span> the due date. Where this occurs,\n this will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"completed-text vx-fw-500\">{{ dueDateText?.keys }} on time</span>.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.extension }}\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n The {{ pageType }} can be {{ dueDateText?.keys }}\n <input class=\"countNum\" type=\"number\" [id]=\"'not-completed-' + id\" [(ngModel)]=\"notCompletedValue\"\n (input)=\"onInputEvent($event)\" (keydown)=\"onKeyDown($event)\" min=\"0\" />\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} <span class=\"vx-fw-500\">after</span> the due date. Where this occurs,\n this\n will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"delay-text vx-fw-500\">{{ dueDateText?.keys }} with delay</span>.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowCloses }}\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n The {{ pageType }} cannot be {{ dueDateText?.keys }}\n <span class=\"vx-fw-500 vx-label-txt\">{{ notCompletedValue }}</span>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} <span class=\"vx-fw-500\">after</span> the due date. Where this occurs,\n this\n will show as the {{ type }} being\n <span class=\"notcompleted-text vx-fw-500\">not\n {{\n dueDateText?.keys === \"reviewed\" ? \"completed\" : dueDateText?.keys\n }}</span>.\n </div>\n </div>\n\n <div *ngIf=\"isDeactivated && mode === 'responsibility'\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n AUTOMATIC DEACTIVATE:\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n This {{ type }} will be automatically deactivated, if it is not\n {{ dueDateText?.keys }}\n for\n <input class=\"countNum\" type=\"number\" [id]=\"'deactivate' + id\" [(ngModel)]=\"deactivateValue\"\n (input)=\"onInputEvent($event)\" (keydown)=\"onKeyDown($event)\" min=\"0\" />\n consecutive due dates.\n </div>\n </div>\n</div>\n\n<!-- For Policy -->\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'policy' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">attested</i></p>\n <input [id]=\"'complete-' + id\" type=\"number\" [(ngModel)]=\"completedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the due date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy attestation will <i>fail</i></p>\n <input type=\"number\" [id]=\"'not-completed-' + id\" [(ngModel)]=\"notCompletedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the due date if it is not completed. </p>\n </div>\n</div>\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'reviewerFrequency' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">reviewed</i></p>\n <input [id]=\"'complete-' + id\" type=\"number\" [(ngModel)]=\"completedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the review date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy review will <i>fail</i></p>\n <input type=\"number\" [id]=\"'not-completed-' + id\" [(ngModel)]=\"notCompletedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the review date if it is not completed. </p>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .frequency-bottom-item-box{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-bottom-item-box input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .frequency-bottom-item-box input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-bottom-item-box input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-bottom-item-box .completed-text{color:#34aa44}::ng-deep .frequency-bottom-item-box .delay-text{color:#f0b819}::ng-deep .frequency-bottom-item-box .notcompleted-text{color:#d93b41}.frequency-due-date{display:block}.frequency-due-date-row{display:flex;border-top:1px solid #f1f1f1;padding:12px 20px;align-items:center}.frequency-due-date p{font-size:13px;color:#747576;width:auto;margin:0;font-weight:400;line-height:20px}.frequency-due-date p i{color:#d93b41;font-style:italic;font-weight:500;padding:0 4px}.frequency-due-date p i.completed{color:#1e5dd3}.frequency-due-date p strong{font-weight:600;font-style:italic}.frequency-due-date input{-moz-appearance:textfield;font-size:14px;color:#161b2f;border:0;border-bottom:2px solid #dcdcdc;display:inline-block;width:36px;text-align:center;padding:4px;margin:0 8px;outline:none}.frequency-due-date input::-webkit-outer-spin-button,.frequency-due-date input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "directive", type: i1.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: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
56
90
  }
57
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyDueDateComponent, decorators: [{
58
92
  type: Component,
59
- args: [{ selector: 'app-frequency-due-date', template: "<div\n *ngIf=\"['responsibility', 'policy', 'reviewerFrequency'].includes(mode)\"\n class=\"frequency-bottom\"\n>\n <div *ngIf=\"completedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowOpen }}\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n The {{ pageType }} can be {{ dueDateText?.keys }} on the due date and\n <input\n class=\"countNum\"\n [id]=\"'complete-' + id\"\n type=\"number\"\n [(ngModel)]=\"completedValue\"\n (change)=\"onValueChange($event, 'completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n {{ completedValue < 2 ? \"day\" : \"days\" }}\n <span class=\"vx-fw-500\">before</span> the due date. Where this occurs,\n this will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"completed-text vx-fw-500\"\n >{{ dueDateText?.keys }} on time</span\n >.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.extension }}\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n The {{ pageType }} can be {{ dueDateText?.keys }}\n <input\n class=\"countNum\"\n type=\"number\"\n [id]=\"'not-completed-' + id\"\n [(ngModel)]=\"notCompletedValue\"\n (change)=\"onValueChange($event, 'not completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }}\n <span class=\"vx-fw-500\">after</span> the due date. Where this occurs, this\n will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"delay-text vx-fw-500\"\n >{{ dueDateText?.keys }} with delay</span\n >.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowCloses }}\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n The {{ pageType }} cannot be {{ dueDateText?.keys }}\n <span class=\"vx-fw-500 vx-label-txt\">{{ notCompletedValue }}</span>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }}\n <span class=\"vx-fw-500\">after</span> the due date. Where this occurs, this\n will show as the {{ type }} being\n <span class=\"notcompleted-text vx-fw-500\"\n >not\n {{\n dueDateText?.keys === \"reviewed\" ? \"completed\" : dueDateText?.keys\n }}</span\n >.\n </div>\n </div>\n\n <div\n *ngIf=\"isDeactivated && mode === 'responsibility'\"\n class=\"frequency-bottom-item vx-mt-5\"\n >\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n AUTOMATIC DEACTIVATE:\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n This {{ type }} will be automatically deactivated, if it is not\n {{ dueDateText?.keys }}\n for\n <input\n class=\"countNum\"\n type=\"number\"\n [id]=\"'deactivate' + id\"\n [(ngModel)]=\"deactivateValue\"\n (change)=\"onValueChange($event, 'deactivated')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n consecutive due dates.\n </div>\n </div>\n</div>\n\n<!-- For Policy -->\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'policy' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">attested</i></p>\n <input\n [id]=\"'complete-' + id\"\n type=\"number\"\n [(ngModel)]=\"completedValue\"\n (change)=\"onValueChange($event, 'completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the due date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy attestation will <i>fail</i></p>\n <input\n type=\"number\"\n [id]=\"'not-completed-' + id\"\n [(ngModel)]=\"notCompletedValue\"\n (change)=\"onValueChange($event, 'not completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the due date if it is\n not completed.\n </p>\n </div>\n</div>\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'reviewerFrequency' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">reviewed</i></p>\n <input\n [id]=\"'complete-' + id\"\n type=\"number\"\n [(ngModel)]=\"completedValue\"\n (change)=\"onValueChange($event, 'completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the review date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy review will <i>fail</i></p>\n <input\n type=\"number\"\n [id]=\"'not-completed-' + id\"\n [(ngModel)]=\"notCompletedValue\"\n (change)=\"onValueChange($event, 'not completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the review date if it\n is not completed.\n </p>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .frequency-bottom-item-box{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-bottom-item-box input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .frequency-bottom-item-box input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-bottom-item-box input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-bottom-item-box .completed-text{color:#34aa44}::ng-deep .frequency-bottom-item-box .delay-text{color:#f0b819}::ng-deep .frequency-bottom-item-box .notcompleted-text{color:#d93b41}.frequency-due-date{display:block}.frequency-due-date-row{display:flex;border-top:1px solid #f1f1f1;padding:12px 20px;align-items:center}.frequency-due-date p{font-size:13px;color:#747576;width:auto;margin:0;font-weight:400;line-height:20px}.frequency-due-date p i{color:#d93b41;font-style:italic;font-weight:500;padding:0 4px}.frequency-due-date p i.completed{color:#1e5dd3}.frequency-due-date p strong{font-weight:600;font-style:italic}.frequency-due-date input{-moz-appearance:textfield;font-size:14px;color:#161b2f;border:0;border-bottom:2px solid #dcdcdc;display:inline-block;width:36px;text-align:center;padding:4px;margin:0 8px;outline:none}.frequency-due-date input::-webkit-outer-spin-button,.frequency-due-date input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"] }]
93
+ args: [{ selector: 'app-frequency-due-date', template: "<div *ngIf=\"['responsibility', 'policy', 'reviewerFrequency'].includes(mode)\" class=\"frequency-bottom\">\n <div *ngIf=\"completedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowOpen }}\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n The {{ pageType }} can be {{ dueDateText?.keys }} on the due date and\n <input class=\"countNum\" [id]=\"'complete-' + id\" type=\"number\" [(ngModel)]=\"completedValue\"\n (input)=\"onInputEvent($event)\" (keydown)=\"onKeyDown($event)\" min=\"0\" />\n {{ completedValue < 2 ? \"day\" : \"days\" }} <span class=\"vx-fw-500\">before</span> the due date. Where this occurs,\n this will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"completed-text vx-fw-500\">{{ dueDateText?.keys }} on time</span>.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.extension }}\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n The {{ pageType }} can be {{ dueDateText?.keys }}\n <input class=\"countNum\" type=\"number\" [id]=\"'not-completed-' + id\" [(ngModel)]=\"notCompletedValue\"\n (input)=\"onInputEvent($event)\" (keydown)=\"onKeyDown($event)\" min=\"0\" />\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} <span class=\"vx-fw-500\">after</span> the due date. Where this occurs,\n this\n will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"delay-text vx-fw-500\">{{ dueDateText?.keys }} with delay</span>.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowCloses }}\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n The {{ pageType }} cannot be {{ dueDateText?.keys }}\n <span class=\"vx-fw-500 vx-label-txt\">{{ notCompletedValue }}</span>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} <span class=\"vx-fw-500\">after</span> the due date. Where this occurs,\n this\n will show as the {{ type }} being\n <span class=\"notcompleted-text vx-fw-500\">not\n {{\n dueDateText?.keys === \"reviewed\" ? \"completed\" : dueDateText?.keys\n }}</span>.\n </div>\n </div>\n\n <div *ngIf=\"isDeactivated && mode === 'responsibility'\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n AUTOMATIC DEACTIVATE:\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n This {{ type }} will be automatically deactivated, if it is not\n {{ dueDateText?.keys }}\n for\n <input class=\"countNum\" type=\"number\" [id]=\"'deactivate' + id\" [(ngModel)]=\"deactivateValue\"\n (input)=\"onInputEvent($event)\" (keydown)=\"onKeyDown($event)\" min=\"0\" />\n consecutive due dates.\n </div>\n </div>\n</div>\n\n<!-- For Policy -->\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'policy' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">attested</i></p>\n <input [id]=\"'complete-' + id\" type=\"number\" [(ngModel)]=\"completedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the due date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy attestation will <i>fail</i></p>\n <input type=\"number\" [id]=\"'not-completed-' + id\" [(ngModel)]=\"notCompletedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the due date if it is not completed. </p>\n </div>\n</div>\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'reviewerFrequency' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">reviewed</i></p>\n <input [id]=\"'complete-' + id\" type=\"number\" [(ngModel)]=\"completedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the review date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy review will <i>fail</i></p>\n <input type=\"number\" [id]=\"'not-completed-' + id\" [(ngModel)]=\"notCompletedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the review date if it is not completed. </p>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .frequency-bottom-item-box{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-bottom-item-box input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .frequency-bottom-item-box input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-bottom-item-box input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-bottom-item-box .completed-text{color:#34aa44}::ng-deep .frequency-bottom-item-box .delay-text{color:#f0b819}::ng-deep .frequency-bottom-item-box .notcompleted-text{color:#d93b41}.frequency-due-date{display:block}.frequency-due-date-row{display:flex;border-top:1px solid #f1f1f1;padding:12px 20px;align-items:center}.frequency-due-date p{font-size:13px;color:#747576;width:auto;margin:0;font-weight:400;line-height:20px}.frequency-due-date p i{color:#d93b41;font-style:italic;font-weight:500;padding:0 4px}.frequency-due-date p i.completed{color:#1e5dd3}.frequency-due-date p strong{font-weight:600;font-style:italic}.frequency-due-date input{-moz-appearance:textfield;font-size:14px;color:#161b2f;border:0;border-bottom:2px solid #dcdcdc;display:inline-block;width:36px;text-align:center;padding:4px;margin:0 8px;outline:none}.frequency-due-date input::-webkit-outer-spin-button,.frequency-due-date input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"] }]
60
94
  }], ctorParameters: function () { return []; }, propDecorators: { mode: [{
61
95
  type: Input
62
96
  }], pageType: [{
@@ -80,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
80
114
  }], valueChange: [{
81
115
  type: Output
82
116
  }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWR1ZS1kYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5L2ZyZXF1ZW5jeS1kdWUtZGF0ZS9mcmVxdWVuY3ktZHVlLWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LWR1ZS1kYXRlL2ZyZXF1ZW5jeS1kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQU85QyxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDO1FBQ1MsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVuQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixzQkFBaUIsR0FBVyxDQUFDLENBQUM7UUFDOUIsU0FBSSxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFaEIsYUFBUSxHQUFnQyxnQkFBZ0IsQ0FBQztRQUN6RCxzQkFBaUIsR0FBRyxJQUFJLENBQUMsQ0FBQywwQkFBMEI7UUFDcEQseUJBQW9CLEdBQUcsSUFBSSxDQUFDLENBQUMsOEJBQThCO1FBQzNELG1CQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsMkJBQTJCO1FBQy9DLHNCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtRQUN0RCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1AsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUliLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFwQi9DLENBQUM7SUFzQmhCLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLG1CQUFtQixFQUFFO1lBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1NBQ3RCO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVUsRUFBRSxVQUFlO1FBQ3ZDLElBQ0UsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNqQztZQUNBLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNwQixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDakMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3hCLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLFVBQVUsS0FBSyxXQUFXLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQzthQUMxQztpQkFBTSxJQUFJLFVBQVUsS0FBSyxlQUFlLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQzdDO2lCQUFNLElBQUksVUFBVSxLQUFLLGFBQWEsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7YUFDL0M7U0FDRjtJQUNILENBQUM7K0dBbkRVLHlCQUF5QjttR0FBekIseUJBQXlCLDJaQ1J0Qyx1dE1BMEtBOzs0RkRsS2EseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHdCQUF3QjswRUFNekIsSUFBSTtzQkFBWixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRleHRJbmZvIH0gZnJvbSAnLi9kdWUtZGF0ZS5jb250YW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZyZXF1ZW5jeS1kdWUtZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mcmVxdWVuY3ktZHVlLWRhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mcmVxdWVuY3ktZHVlLWRhdGUuY29tcG9uZW50Lmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRnJlcXVlbmN5RHVlRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKCkge31cbiAgQElucHV0KCkgbW9kZSA9ICcnO1xuXG4gIGRlZmF1bHRXaW5kb3c6IG51bWJlciA9IDA7XG4gIGRlZmF1bHRGYWlsZWQ6IG51bWJlciA9IDA7XG4gIGRlZmF1bHREZWFjdGl2YXRlOiBudW1iZXIgPSAwO1xuICB0eXBlOiBzdHJpbmcgPSB0aGlzLm1vZGU7XG5cbiAgQElucHV0KCkgcGFnZVR5cGU6ICdyZXNwb25zaWJpbGl0eScgfCAncG9saWN5JyA9ICdyZXNwb25zaWJpbGl0eSc7XG4gIEBJbnB1dCgpIGNvbXBsZXRlZFJlcXVpcmVkID0gdHJ1ZTsgLy8gd2hlbiBjb21wbGV0ZWQgcmVxdWlyZWRcbiAgQElucHV0KCkgbm90Q29tcGxldGVkUmVxdWlyZWQgPSB0cnVlOyAvLyB3aGVuIG5vdCBjb21wbGV0ZWQgcmVxdWlyZWRcbiAgQElucHV0KCkgY29tcGxldGVkVmFsdWUgPSAyOyAvLyB0YWtlIGlucHV0IGZvciBjb21wbGV0ZWRcbiAgQElucHV0KCkgbm90Q29tcGxldGVkVmFsdWUgPSAyOyAvLyB0YWtlIGlucHV0IGZvciBub3QgY29tcGxldGVkXG4gIEBJbnB1dCgpIGRlYWN0aXZhdGVWYWx1ZSA9IDE1O1xuICBASW5wdXQoKSBpc0RlYWN0aXZhdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlkID0gMDtcbiAgQElucHV0KCkgcGFnZU5hbWUgPSAnJztcblxuICBkdWVEYXRlVGV4dDogYW55O1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kdWVEYXRlVGV4dCA9IHRleHRJbmZvW3RoaXMubW9kZV07XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5Jykge1xuICAgICAgdGhpcy50eXBlID0gJ3Jldmlldyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHlwZSA9IHRoaXMubW9kZTtcbiAgICB9XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKGV2ZW50OiBhbnksIGFjdGlvblR5cGU6IGFueSkge1xuICAgIGlmIChcbiAgICAgICFOdW1iZXIuaXNOYU4oTnVtYmVyKGV2ZW50LnRhcmdldC52YWx1ZSkpICYmXG4gICAgICBwYXJzZUludChldmVudC50YXJnZXQudmFsdWUpID4gLTFcbiAgICApIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgIHR5cGU6IGFjdGlvblR5cGUsXG4gICAgICAgIHZhbHVlOiBOdW1iZXIoZXZlbnQudGFyZ2V0LnZhbHVlKSxcbiAgICAgICAgcGFnZU5hbWU6IHRoaXMucGFnZU5hbWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGFjdGlvblR5cGUgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgIHRoaXMuY29tcGxldGVkVmFsdWUgPSB0aGlzLmRlZmF1bHRXaW5kb3c7XG4gICAgICB9IGVsc2UgaWYgKGFjdGlvblR5cGUgPT09ICdub3QgY29tcGxldGVkJykge1xuICAgICAgICB0aGlzLm5vdENvbXBsZXRlZFZhbHVlID0gdGhpcy5kZWZhdWx0RmFpbGVkO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb25UeXBlID09PSAnZGVhY3RpdmF0ZWQnKSB7XG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZVZhbHVlID0gdGhpcy5kZWZhdWx0RGVhY3RpdmF0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJbJ3Jlc3BvbnNpYmlsaXR5JywgJ3BvbGljeScsICdyZXZpZXdlckZyZXF1ZW5jeSddLmluY2x1ZGVzKG1vZGUpXCJcbiAgY2xhc3M9XCJmcmVxdWVuY3ktYm90dG9tXCJcbj5cbiAgPGRpdiAqbmdJZj1cImNvbXBsZXRlZFJlcXVpcmVkXCIgY2xhc3M9XCJmcmVxdWVuY3ktYm90dG9tLWl0ZW0gdngtbXQtNVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+XG4gICAgICB7eyBkdWVEYXRlVGV4dC53aW5kb3dPcGVuIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmcmVxdWVuY3ktYm90dG9tLWl0ZW0tYm94IHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtcC0zIHZ4LXB0LTQgdngtcGItNCB2eC1kLWJsb2NrXCJcbiAgICA+XG4gICAgICBUaGUge3sgcGFnZVR5cGUgfX0gY2FuIGJlIHt7IGR1ZURhdGVUZXh0Py5rZXlzIH19IG9uIHRoZSBkdWUgZGF0ZSBhbmRcbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImNvdW50TnVtXCJcbiAgICAgICAgW2lkXT1cIidjb21wbGV0ZS0nICsgaWRcIlxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb21wbGV0ZWRWYWx1ZVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQsICdjb21wbGV0ZWQnKVwiXG4gICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXlDb2RlICE9PSAxOTBcIlxuICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgb25pbnB1dD1cInRoaXMudmFsdWUgPSBNYXRoLmFicyh0aGlzLnZhbHVlKVwiXG4gICAgICAvPlxuICAgICAge3sgY29tcGxldGVkVmFsdWUgPCAyID8gXCJkYXlcIiA6IFwiZGF5c1wiIH19XG4gICAgICA8c3BhbiBjbGFzcz1cInZ4LWZ3LTUwMFwiPmJlZm9yZTwvc3Bhbj4gdGhlIGR1ZSBkYXRlLiBXaGVyZSB0aGlzIG9jY3VycyxcbiAgICAgIHRoaXMgd2lsbCBzaG93IGFzIHRoZSB7eyBtb2RlID09PSBcInJldmlld2VyRnJlcXVlbmN5XCIgPyBcInBvbGljeVwiIDogdHlwZSB9fSBiZWluZ1xuICAgICAgPHNwYW4gY2xhc3M9XCJjb21wbGV0ZWQtdGV4dCB2eC1mdy01MDBcIlxuICAgICAgICA+e3sgZHVlRGF0ZVRleHQ/LmtleXMgfX0gb24gdGltZTwvc3BhblxuICAgICAgPi5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIm5vdENvbXBsZXRlZFJlcXVpcmVkXCIgY2xhc3M9XCJmcmVxdWVuY3ktYm90dG9tLWl0ZW0gdngtbXQtNVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+XG4gICAgICB7eyBkdWVEYXRlVGV4dC5leHRlbnNpb24gfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZyZXF1ZW5jeS1ib3R0b20taXRlbS1ib3ggdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1wLTMgdngtcHQtNCB2eC1wYi00IHZ4LWQtYmxvY2tcIlxuICAgID5cbiAgICAgIFRoZSB7eyBwYWdlVHlwZSB9fSBjYW4gYmUge3sgZHVlRGF0ZVRleHQ/LmtleXMgfX1cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImNvdW50TnVtXCJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIFtpZF09XCInbm90LWNvbXBsZXRlZC0nICsgaWRcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm5vdENvbXBsZXRlZFZhbHVlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudCwgJ25vdCBjb21wbGV0ZWQnKVwiXG4gICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXlDb2RlICE9PSAxOTBcIlxuICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgb25pbnB1dD1cInRoaXMudmFsdWUgPSBNYXRoLmFicyh0aGlzLnZhbHVlKVwiXG4gICAgICAvPlxuICAgICAge3sgbm90Q29tcGxldGVkVmFsdWUgPCAyID8gXCJkYXlcIiA6IFwiZGF5c1wiIH19XG4gICAgICA8c3BhbiBjbGFzcz1cInZ4LWZ3LTUwMFwiPmFmdGVyPC9zcGFuPiB0aGUgZHVlIGRhdGUuIFdoZXJlIHRoaXMgb2NjdXJzLCB0aGlzXG4gICAgICB3aWxsIHNob3cgYXMgdGhlIHt7IG1vZGUgPT09IFwicmV2aWV3ZXJGcmVxdWVuY3lcIiA/IFwicG9saWN5XCIgOiB0eXBlIH19IGJlaW5nXG4gICAgICA8c3BhbiBjbGFzcz1cImRlbGF5LXRleHQgdngtZnctNTAwXCJcbiAgICAgICAgPnt7IGR1ZURhdGVUZXh0Py5rZXlzIH19IHdpdGggZGVsYXk8L3NwYW5cbiAgICAgID4uXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJub3RDb21wbGV0ZWRSZXF1aXJlZFwiIGNsYXNzPVwiZnJlcXVlbmN5LWJvdHRvbS1pdGVtIHZ4LW10LTVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlxuICAgICAge3sgZHVlRGF0ZVRleHQud2luZG93Q2xvc2VzIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmcmVxdWVuY3ktYm90dG9tLWl0ZW0tYm94IHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtcC0zIHZ4LXB0LTQgdngtcGItNCB2eC1kLWJsb2NrXCJcbiAgICA+XG4gICAgICBUaGUge3sgcGFnZVR5cGUgfX0gY2Fubm90IGJlIHt7IGR1ZURhdGVUZXh0Py5rZXlzIH19XG4gICAgICA8c3BhbiBjbGFzcz1cInZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj57eyBub3RDb21wbGV0ZWRWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgIHt7IG5vdENvbXBsZXRlZFZhbHVlIDwgMiA/IFwiZGF5XCIgOiBcImRheXNcIiB9fVxuICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mdy01MDBcIj5hZnRlcjwvc3Bhbj4gdGhlIGR1ZSBkYXRlLiBXaGVyZSB0aGlzIG9jY3VycywgdGhpc1xuICAgICAgd2lsbCBzaG93IGFzIHRoZSB7eyB0eXBlIH19IGJlaW5nXG4gICAgICA8c3BhbiBjbGFzcz1cIm5vdGNvbXBsZXRlZC10ZXh0IHZ4LWZ3LTUwMFwiXG4gICAgICAgID5ub3RcbiAgICAgICAge3tcbiAgICAgICAgICBkdWVEYXRlVGV4dD8ua2V5cyA9PT0gXCJyZXZpZXdlZFwiID8gXCJjb21wbGV0ZWRcIiA6IGR1ZURhdGVUZXh0Py5rZXlzXG4gICAgICAgIH19PC9zcGFuXG4gICAgICA+LlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJpc0RlYWN0aXZhdGVkICYmIG1vZGUgPT09ICdyZXNwb25zaWJpbGl0eSdcIlxuICAgIGNsYXNzPVwiZnJlcXVlbmN5LWJvdHRvbS1pdGVtIHZ4LW10LTVcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5cbiAgICAgIEFVVE9NQVRJQyBERUFDVElWQVRFOlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZnJlcXVlbmN5LWJvdHRvbS1pdGVtLWJveCB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXAtMyB2eC1wdC00IHZ4LXBiLTQgdngtZC1ibG9ja1wiXG4gICAgPlxuICAgICAgVGhpcyB7eyB0eXBlIH19IHdpbGwgYmUgYXV0b21hdGljYWxseSBkZWFjdGl2YXRlZCwgaWYgaXQgaXMgbm90XG4gICAgICB7eyBkdWVEYXRlVGV4dD8ua2V5cyB9fVxuICAgICAgZm9yXG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJjb3VudE51bVwiXG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICBbaWRdPVwiJ2RlYWN0aXZhdGUnICsgaWRcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImRlYWN0aXZhdGVWYWx1ZVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQsICdkZWFjdGl2YXRlZCcpXCJcbiAgICAgICAgb25rZXlkb3duPVwicmV0dXJuIGV2ZW50LmtleUNvZGUgIT09IDE5MFwiXG4gICAgICAgIG1pbj1cIjBcIlxuICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCJcbiAgICAgIC8+XG4gICAgICBjb25zZWN1dGl2ZSBkdWUgZGF0ZXMuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gRm9yIFBvbGljeSAtLT5cbjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZHVlLWRhdGVcIiAqbmdJZj1cIm1vZGUgPT0gJ3BvbGljeScgJiYgZmFsc2VcIj5cbiAgPGRpdiAqbmdJZj1cImNvbXBsZXRlZFJlcXVpcmVkXCIgY2xhc3M9XCJmcmVxdWVuY3ktZHVlLWRhdGUtcm93XCI+XG4gICAgPHA+VGhlIHBvbGljeSBjYW4gYmUgPGkgY2xhc3M9XCJjb21wbGV0ZWRcIj5hdHRlc3RlZDwvaT48L3A+XG4gICAgPGlucHV0XG4gICAgICBbaWRdPVwiJ2NvbXBsZXRlLScgKyBpZFwiXG4gICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgIFsobmdNb2RlbCldPVwiY29tcGxldGVkVmFsdWVcIlxuICAgICAgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudCwgJ2NvbXBsZXRlZCcpXCJcbiAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXlDb2RlICE9PSAxOTBcIlxuICAgICAgbWluPVwiMFwiXG4gICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCJcbiAgICAvPlxuICAgIDxwPnt7IGNvbXBsZXRlZFZhbHVlIDwgMiA/IFwiZGF5XCIgOiBcImRheXNcIiB9fSBiZWZvcmUgdGhlIGR1ZSBkYXRlLjwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJub3RDb21wbGV0ZWRSZXF1aXJlZFwiIGNsYXNzPVwiZnJlcXVlbmN5LWR1ZS1kYXRlLXJvd1wiPlxuICAgIDxwPlRoZSBwb2xpY3kgYXR0ZXN0YXRpb24gd2lsbCA8aT5mYWlsPC9pPjwvcD5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgW2lkXT1cIidub3QtY29tcGxldGVkLScgKyBpZFwiXG4gICAgICBbKG5nTW9kZWwpXT1cIm5vdENvbXBsZXRlZFZhbHVlXCJcbiAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQsICdub3QgY29tcGxldGVkJylcIlxuICAgICAgb25rZXlkb3duPVwicmV0dXJuIGV2ZW50LmtleUNvZGUgIT09IDE5MFwiXG4gICAgICBtaW49XCIwXCJcbiAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIlxuICAgIC8+XG4gICAgPHA+XG4gICAgICB7eyBub3RDb21wbGV0ZWRWYWx1ZSA8IDIgPyBcImRheVwiIDogXCJkYXlzXCIgfX0gYWZ0ZXIgdGhlIGR1ZSBkYXRlIGlmIGl0IGlzXG4gICAgICBub3QgY29tcGxldGVkLlxuICAgIDwvcD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZHVlLWRhdGVcIiAqbmdJZj1cIm1vZGUgPT0gJ3Jldmlld2VyRnJlcXVlbmN5JyAmJiBmYWxzZVwiPlxuICA8ZGl2ICpuZ0lmPVwiY29tcGxldGVkUmVxdWlyZWRcIiBjbGFzcz1cImZyZXF1ZW5jeS1kdWUtZGF0ZS1yb3dcIj5cbiAgICA8cD5UaGUgcG9saWN5IGNhbiBiZSA8aSBjbGFzcz1cImNvbXBsZXRlZFwiPnJldmlld2VkPC9pPjwvcD5cbiAgICA8aW5wdXRcbiAgICAgIFtpZF09XCInY29tcGxldGUtJyArIGlkXCJcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgWyhuZ01vZGVsKV09XCJjb21wbGV0ZWRWYWx1ZVwiXG4gICAgICAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50LCAnY29tcGxldGVkJylcIlxuICAgICAgb25rZXlkb3duPVwicmV0dXJuIGV2ZW50LmtleUNvZGUgIT09IDE5MFwiXG4gICAgICBtaW49XCIwXCJcbiAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIlxuICAgIC8+XG4gICAgPHA+e3sgY29tcGxldGVkVmFsdWUgPCAyID8gXCJkYXlcIiA6IFwiZGF5c1wiIH19IGJlZm9yZSB0aGUgcmV2aWV3IGRhdGUuPC9wPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIm5vdENvbXBsZXRlZFJlcXVpcmVkXCIgY2xhc3M9XCJmcmVxdWVuY3ktZHVlLWRhdGUtcm93XCI+XG4gICAgPHA+VGhlIHBvbGljeSByZXZpZXcgd2lsbCA8aT5mYWlsPC9pPjwvcD5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgW2lkXT1cIidub3QtY29tcGxldGVkLScgKyBpZFwiXG4gICAgICBbKG5nTW9kZWwpXT1cIm5vdENvbXBsZXRlZFZhbHVlXCJcbiAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQsICdub3QgY29tcGxldGVkJylcIlxuICAgICAgb25rZXlkb3duPVwicmV0dXJuIGV2ZW50LmtleUNvZGUgIT09IDE5MFwiXG4gICAgICBtaW49XCIwXCJcbiAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIlxuICAgIC8+XG4gICAgPHA+XG4gICAgICB7eyBub3RDb21wbGV0ZWRWYWx1ZSA8IDIgPyBcImRheVwiIDogXCJkYXlzXCIgfX0gYWZ0ZXIgdGhlIHJldmlldyBkYXRlIGlmIGl0XG4gICAgICBpcyBub3QgY29tcGxldGVkLlxuICAgIDwvcD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWR1ZS1kYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5L2ZyZXF1ZW5jeS1kdWUtZGF0ZS9mcmVxdWVuY3ktZHVlLWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LWR1ZS1kYXRlL2ZyZXF1ZW5jeS1kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQU85QyxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDO1FBQ1MsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVuQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQixzQkFBaUIsR0FBVyxDQUFDLENBQUM7UUFDOUIsU0FBSSxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFaEIsYUFBUSxHQUFnQyxnQkFBZ0IsQ0FBQztRQUN6RCxzQkFBaUIsR0FBRyxJQUFJLENBQUMsQ0FBQywwQkFBMEI7UUFDcEQseUJBQW9CLEdBQUcsSUFBSSxDQUFDLENBQUMsOEJBQThCO1FBQzNELG1CQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsMkJBQTJCO1FBQy9DLHNCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtRQUN0RCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1AsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUliLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFwQi9DLENBQUM7SUFzQmhCLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLG1CQUFtQixFQUFFO1lBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1NBQ3RCO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLFlBQVksQ0FBQyxLQUFVO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ2hDLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVwQiwwQ0FBMEM7UUFDMUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2pDLFVBQVUsR0FBRyxXQUFXLENBQUM7U0FDMUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUM3QyxVQUFVLEdBQUcsZUFBZSxDQUFDO1NBQzlCO2FBQU0sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3pDLFVBQVUsR0FBRyxhQUFhLENBQUM7U0FDNUI7UUFFRCx1Q0FBdUM7UUFDdkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkQseUJBQXlCO1FBQ3pCLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUUzQiwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU1Qyx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDcEIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLEtBQUs7WUFDWixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdGQUFnRjtJQUN4RSxpQkFBaUIsQ0FBQyxVQUFlO1FBQ3ZDLElBQUksVUFBVSxLQUFLLEVBQUUsSUFBSSxVQUFVLEtBQUssSUFBSSxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDeEUsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELDZDQUE2QztRQUM3QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRXpDLGtFQUFrRTtRQUNsRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsMENBQTBDO0lBQ2xDLG1CQUFtQixDQUFDLFVBQWtCLEVBQUUsS0FBYTtRQUMzRCxRQUFRLFVBQVUsRUFBRTtZQUNsQixLQUFLLFdBQVc7Z0JBQ2QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7Z0JBQzVCLE1BQU07WUFDUixLQUFLLGVBQWU7Z0JBQ2xCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Z0JBQy9CLE1BQU07WUFDUixLQUFLLGFBQWE7Z0JBQ2hCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLFNBQVMsQ0FBQyxLQUFvQjtRQUM1QixPQUFPLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDO0lBQzNCLENBQUM7K0dBOUZVLHlCQUF5QjttR0FBekIseUJBQXlCLDJaQ1J0QyxzcktBNEZNOzs0RkRwRk8seUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHdCQUF3QjswRUFNekIsSUFBSTtzQkFBWixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRleHRJbmZvIH0gZnJvbSAnLi9kdWUtZGF0ZS5jb250YW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZyZXF1ZW5jeS1kdWUtZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mcmVxdWVuY3ktZHVlLWRhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mcmVxdWVuY3ktZHVlLWRhdGUuY29tcG9uZW50Lmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRnJlcXVlbmN5RHVlRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKCkge31cbiAgQElucHV0KCkgbW9kZSA9ICcnO1xuXG4gIGRlZmF1bHRXaW5kb3c6IG51bWJlciA9IDA7XG4gIGRlZmF1bHRGYWlsZWQ6IG51bWJlciA9IDA7XG4gIGRlZmF1bHREZWFjdGl2YXRlOiBudW1iZXIgPSAwO1xuICB0eXBlOiBzdHJpbmcgPSB0aGlzLm1vZGU7XG5cbiAgQElucHV0KCkgcGFnZVR5cGU6ICdyZXNwb25zaWJpbGl0eScgfCAncG9saWN5JyA9ICdyZXNwb25zaWJpbGl0eSc7XG4gIEBJbnB1dCgpIGNvbXBsZXRlZFJlcXVpcmVkID0gdHJ1ZTsgLy8gd2hlbiBjb21wbGV0ZWQgcmVxdWlyZWRcbiAgQElucHV0KCkgbm90Q29tcGxldGVkUmVxdWlyZWQgPSB0cnVlOyAvLyB3aGVuIG5vdCBjb21wbGV0ZWQgcmVxdWlyZWRcbiAgQElucHV0KCkgY29tcGxldGVkVmFsdWUgPSAyOyAvLyB0YWtlIGlucHV0IGZvciBjb21wbGV0ZWRcbiAgQElucHV0KCkgbm90Q29tcGxldGVkVmFsdWUgPSAyOyAvLyB0YWtlIGlucHV0IGZvciBub3QgY29tcGxldGVkXG4gIEBJbnB1dCgpIGRlYWN0aXZhdGVWYWx1ZSA9IDE1O1xuICBASW5wdXQoKSBpc0RlYWN0aXZhdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlkID0gMDtcbiAgQElucHV0KCkgcGFnZU5hbWUgPSAnJztcblxuICBkdWVEYXRlVGV4dDogYW55O1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kdWVEYXRlVGV4dCA9IHRleHRJbmZvW3RoaXMubW9kZV07XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3Jldmlld2VyRnJlcXVlbmN5Jykge1xuICAgICAgdGhpcy50eXBlID0gJ3Jldmlldyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHlwZSA9IHRoaXMubW9kZTtcbiAgICB9XG4gIH1cblxuICAvLyBVbmlmaWVkIGV2ZW50IGhhbmRsZXIgZm9yIGFsbCBpbnB1dCBldmVudHNcbiAgb25JbnB1dEV2ZW50KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dElkID0gZXZlbnQudGFyZ2V0LmlkO1xuICAgIGxldCBhY3Rpb25UeXBlID0gJyc7XG4gICAgXG4gICAgLy8gRGV0ZXJtaW5lIGFjdGlvbiB0eXBlIGJhc2VkIG9uIGlucHV0IElEXG4gICAgaWYgKGlucHV0SWQuaW5jbHVkZXMoJ2NvbXBsZXRlLScpKSB7XG4gICAgICBhY3Rpb25UeXBlID0gJ2NvbXBsZXRlZCc7XG4gICAgfSBlbHNlIGlmIChpbnB1dElkLmluY2x1ZGVzKCdub3QtY29tcGxldGVkLScpKSB7XG4gICAgICBhY3Rpb25UeXBlID0gJ25vdCBjb21wbGV0ZWQnO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRJZC5pbmNsdWRlcygnZGVhY3RpdmF0ZScpKSB7XG4gICAgICBhY3Rpb25UeXBlID0gJ2RlYWN0aXZhdGVkJztcbiAgICB9XG4gICAgXG4gICAgLy8gUHJvY2VzcyBhbmQgdmFsaWRhdGUgdGhlIGlucHV0IHZhbHVlXG4gICAgbGV0IHZhbHVlID0gdGhpcy5wcm9jZXNzSW5wdXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgIFxuICAgIC8vIFVwZGF0ZSB0aGUgaW5wdXQgZmllbGRcbiAgICBldmVudC50YXJnZXQudmFsdWUgPSB2YWx1ZTtcbiAgICBcbiAgICAvLyBVcGRhdGUgdGhlIGNvcnJlc3BvbmRpbmcgbW9kZWwgcHJvcGVydHlcbiAgICB0aGlzLnVwZGF0ZU1vZGVsUHJvcGVydHkoYWN0aW9uVHlwZSwgdmFsdWUpO1xuICAgIFxuICAgIC8vIEVtaXQgdGhlIGNoYW5nZSBldmVudFxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICB0eXBlOiBhY3Rpb25UeXBlLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgcGFnZU5hbWU6IHRoaXMucGFnZU5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvLyBQcm9jZXNzIGlucHV0IHZhbHVlOiByZW1vdmUgbGVhZGluZyB6ZXJvcywgZW5zdXJlIHBvc2l0aXZlLCBoYW5kbGUgZWRnZSBjYXNlc1xuICBwcml2YXRlIHByb2Nlc3NJbnB1dFZhbHVlKGlucHV0VmFsdWU6IGFueSk6IG51bWJlciB7XG4gICAgaWYgKGlucHV0VmFsdWUgPT09ICcnIHx8IGlucHV0VmFsdWUgPT09IG51bGwgfHwgaW5wdXRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgXG4gICAgLy8gQ29udmVydCB0byBudW1iZXIgYW5kIGVuc3VyZSBpdCdzIHBvc2l0aXZlXG4gICAgbGV0IHZhbHVlID0gTWF0aC5hYnMoTnVtYmVyKGlucHV0VmFsdWUpKTtcbiAgICBcbiAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvcyBieSBjb252ZXJ0aW5nIHRvIHN0cmluZyBhbmQgYmFjayB0byBudW1iZXJcbiAgICByZXR1cm4gTnVtYmVyKHZhbHVlLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLy8gVXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIG1vZGVsIHByb3BlcnR5XG4gIHByaXZhdGUgdXBkYXRlTW9kZWxQcm9wZXJ0eShhY3Rpb25UeXBlOiBzdHJpbmcsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGFjdGlvblR5cGUpIHtcbiAgICAgIGNhc2UgJ2NvbXBsZXRlZCc6XG4gICAgICAgIHRoaXMuY29tcGxldGVkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdub3QgY29tcGxldGVkJzpcbiAgICAgICAgdGhpcy5ub3RDb21wbGV0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlYWN0aXZhdGVkJzpcbiAgICAgICAgdGhpcy5kZWFjdGl2YXRlVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gUHJldmVudCBkZWNpbWFsIHBvaW50IGVudHJ5XG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmVudC5rZXkgIT09ICcuJztcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIlsncmVzcG9uc2liaWxpdHknLCAncG9saWN5JywgJ3Jldmlld2VyRnJlcXVlbmN5J10uaW5jbHVkZXMobW9kZSlcIiBjbGFzcz1cImZyZXF1ZW5jeS1ib3R0b21cIj5cbiAgPGRpdiAqbmdJZj1cImNvbXBsZXRlZFJlcXVpcmVkXCIgY2xhc3M9XCJmcmVxdWVuY3ktYm90dG9tLWl0ZW0gdngtbXQtNVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+XG4gICAgICB7eyBkdWVEYXRlVGV4dC53aW5kb3dPcGVuIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1ib3R0b20taXRlbS1ib3ggdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1wLTMgdngtcHQtNCB2eC1wYi00IHZ4LWQtYmxvY2tcIj5cbiAgICAgIFRoZSB7eyBwYWdlVHlwZSB9fSBjYW4gYmUge3sgZHVlRGF0ZVRleHQ/LmtleXMgfX0gb24gdGhlIGR1ZSBkYXRlIGFuZFxuICAgICAgPGlucHV0IGNsYXNzPVwiY291bnROdW1cIiBbaWRdPVwiJ2NvbXBsZXRlLScgKyBpZFwiIHR5cGU9XCJudW1iZXJcIiBbKG5nTW9kZWwpXT1cImNvbXBsZXRlZFZhbHVlXCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRFdmVudCgkZXZlbnQpXCIgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIiBtaW49XCIwXCIgLz5cbiAgICAgIHt7IGNvbXBsZXRlZFZhbHVlIDwgMiA/IFwiZGF5XCIgOiBcImRheXNcIiB9fSA8c3BhbiBjbGFzcz1cInZ4LWZ3LTUwMFwiPmJlZm9yZTwvc3Bhbj4gdGhlIGR1ZSBkYXRlLiBXaGVyZSB0aGlzIG9jY3VycyxcbiAgICAgICAgdGhpcyB3aWxsIHNob3cgYXMgdGhlIHt7IG1vZGUgPT09IFwicmV2aWV3ZXJGcmVxdWVuY3lcIiA/IFwicG9saWN5XCIgOiB0eXBlIH19IGJlaW5nXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY29tcGxldGVkLXRleHQgdngtZnctNTAwXCI+e3sgZHVlRGF0ZVRleHQ/LmtleXMgfX0gb24gdGltZTwvc3Bhbj4uXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJub3RDb21wbGV0ZWRSZXF1aXJlZFwiIGNsYXNzPVwiZnJlcXVlbmN5LWJvdHRvbS1pdGVtIHZ4LW10LTVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlxuICAgICAge3sgZHVlRGF0ZVRleHQuZXh0ZW5zaW9uIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1ib3R0b20taXRlbS1ib3ggdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1wLTMgdngtcHQtNCB2eC1wYi00IHZ4LWQtYmxvY2tcIj5cbiAgICAgIFRoZSB7eyBwYWdlVHlwZSB9fSBjYW4gYmUge3sgZHVlRGF0ZVRleHQ/LmtleXMgfX1cbiAgICAgIDxpbnB1dCBjbGFzcz1cImNvdW50TnVtXCIgdHlwZT1cIm51bWJlclwiIFtpZF09XCInbm90LWNvbXBsZXRlZC0nICsgaWRcIiBbKG5nTW9kZWwpXT1cIm5vdENvbXBsZXRlZFZhbHVlXCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRFdmVudCgkZXZlbnQpXCIgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIiBtaW49XCIwXCIgLz5cbiAgICAgIHt7IG5vdENvbXBsZXRlZFZhbHVlIDwgMiA/IFwiZGF5XCIgOiBcImRheXNcIiB9fSA8c3BhbiBjbGFzcz1cInZ4LWZ3LTUwMFwiPmFmdGVyPC9zcGFuPiB0aGUgZHVlIGRhdGUuIFdoZXJlIHRoaXMgb2NjdXJzLFxuICAgICAgICB0aGlzXG4gICAgICAgIHdpbGwgc2hvdyBhcyB0aGUge3sgbW9kZSA9PT0gXCJyZXZpZXdlckZyZXF1ZW5jeVwiID8gXCJwb2xpY3lcIiA6IHR5cGUgfX0gYmVpbmdcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkZWxheS10ZXh0IHZ4LWZ3LTUwMFwiPnt7IGR1ZURhdGVUZXh0Py5rZXlzIH19IHdpdGggZGVsYXk8L3NwYW4+LlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwibm90Q29tcGxldGVkUmVxdWlyZWRcIiBjbGFzcz1cImZyZXF1ZW5jeS1ib3R0b20taXRlbSB2eC1tdC01XCI+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5cbiAgICAgIHt7IGR1ZURhdGVUZXh0LndpbmRvd0Nsb3NlcyB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktYm90dG9tLWl0ZW0tYm94IHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtcC0zIHZ4LXB0LTQgdngtcGItNCB2eC1kLWJsb2NrXCI+XG4gICAgICBUaGUge3sgcGFnZVR5cGUgfX0gY2Fubm90IGJlIHt7IGR1ZURhdGVUZXh0Py5rZXlzIH19XG4gICAgICA8c3BhbiBjbGFzcz1cInZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj57eyBub3RDb21wbGV0ZWRWYWx1ZSB9fTwvc3Bhbj5cbiAgICAgIHt7IG5vdENvbXBsZXRlZFZhbHVlIDwgMiA/IFwiZGF5XCIgOiBcImRheXNcIiB9fSA8c3BhbiBjbGFzcz1cInZ4LWZ3LTUwMFwiPmFmdGVyPC9zcGFuPiB0aGUgZHVlIGRhdGUuIFdoZXJlIHRoaXMgb2NjdXJzLFxuICAgICAgICB0aGlzXG4gICAgICAgIHdpbGwgc2hvdyBhcyB0aGUge3sgdHlwZSB9fSBiZWluZ1xuICAgICAgICA8c3BhbiBjbGFzcz1cIm5vdGNvbXBsZXRlZC10ZXh0IHZ4LWZ3LTUwMFwiPm5vdFxuICAgICAgICAgIHt7XG4gICAgICAgICAgZHVlRGF0ZVRleHQ/LmtleXMgPT09IFwicmV2aWV3ZWRcIiA/IFwiY29tcGxldGVkXCIgOiBkdWVEYXRlVGV4dD8ua2V5c1xuICAgICAgICAgIH19PC9zcGFuPi5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cImlzRGVhY3RpdmF0ZWQgJiYgbW9kZSA9PT0gJ3Jlc3BvbnNpYmlsaXR5J1wiIGNsYXNzPVwiZnJlcXVlbmN5LWJvdHRvbS1pdGVtIHZ4LW10LTVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlxuICAgICAgQVVUT01BVElDIERFQUNUSVZBVEU6XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1ib3R0b20taXRlbS1ib3ggdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1wLTMgdngtcHQtNCB2eC1wYi00IHZ4LWQtYmxvY2tcIj5cbiAgICAgIFRoaXMge3sgdHlwZSB9fSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZGVhY3RpdmF0ZWQsIGlmIGl0IGlzIG5vdFxuICAgICAge3sgZHVlRGF0ZVRleHQ/LmtleXMgfX1cbiAgICAgIGZvclxuICAgICAgPGlucHV0IGNsYXNzPVwiY291bnROdW1cIiB0eXBlPVwibnVtYmVyXCIgW2lkXT1cIidkZWFjdGl2YXRlJyArIGlkXCIgWyhuZ01vZGVsKV09XCJkZWFjdGl2YXRlVmFsdWVcIlxuICAgICAgICAoaW5wdXQpPVwib25JbnB1dEV2ZW50KCRldmVudClcIiAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiIG1pbj1cIjBcIiAvPlxuICAgICAgY29uc2VjdXRpdmUgZHVlIGRhdGVzLlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIEZvciBQb2xpY3kgLS0+XG48ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWR1ZS1kYXRlXCIgKm5nSWY9XCJtb2RlID09ICdwb2xpY3knICYmIGZhbHNlXCI+XG4gIDxkaXYgKm5nSWY9XCJjb21wbGV0ZWRSZXF1aXJlZFwiIGNsYXNzPVwiZnJlcXVlbmN5LWR1ZS1kYXRlLXJvd1wiPlxuICAgIDxwPlRoZSBwb2xpY3kgY2FuIGJlIDxpIGNsYXNzPVwiY29tcGxldGVkXCI+YXR0ZXN0ZWQ8L2k+PC9wPlxuICAgIDxpbnB1dCBbaWRdPVwiJ2NvbXBsZXRlLScgKyBpZFwiIHR5cGU9XCJudW1iZXJcIiBbKG5nTW9kZWwpXT1cImNvbXBsZXRlZFZhbHVlXCIgKGlucHV0KT1cIm9uSW5wdXRFdmVudCgkZXZlbnQpXCJcbiAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCIgbWluPVwiMFwiIC8+XG4gICAgPHA+e3sgY29tcGxldGVkVmFsdWUgPCAyID8gXCJkYXlcIiA6IFwiZGF5c1wiIH19IGJlZm9yZSB0aGUgZHVlIGRhdGUuPC9wPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIm5vdENvbXBsZXRlZFJlcXVpcmVkXCIgY2xhc3M9XCJmcmVxdWVuY3ktZHVlLWRhdGUtcm93XCI+XG4gICAgPHA+VGhlIHBvbGljeSBhdHRlc3RhdGlvbiB3aWxsIDxpPmZhaWw8L2k+PC9wPlxuICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgW2lkXT1cIidub3QtY29tcGxldGVkLScgKyBpZFwiIFsobmdNb2RlbCldPVwibm90Q29tcGxldGVkVmFsdWVcIiAoaW5wdXQpPVwib25JbnB1dEV2ZW50KCRldmVudClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIiBtaW49XCIwXCIgLz5cbiAgICA8cD5cbiAgICAgIHt7IG5vdENvbXBsZXRlZFZhbHVlIDwgMiA/IFwiZGF5XCIgOiBcImRheXNcIiB9fSBhZnRlciB0aGUgZHVlIGRhdGUgaWYgaXQgaXMgbm90IGNvbXBsZXRlZC4gPC9wPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kdWUtZGF0ZVwiICpuZ0lmPVwibW9kZSA9PSAncmV2aWV3ZXJGcmVxdWVuY3knICYmIGZhbHNlXCI+XG4gIDxkaXYgKm5nSWY9XCJjb21wbGV0ZWRSZXF1aXJlZFwiIGNsYXNzPVwiZnJlcXVlbmN5LWR1ZS1kYXRlLXJvd1wiPlxuICAgIDxwPlRoZSBwb2xpY3kgY2FuIGJlIDxpIGNsYXNzPVwiY29tcGxldGVkXCI+cmV2aWV3ZWQ8L2k+PC9wPlxuICAgIDxpbnB1dCBbaWRdPVwiJ2NvbXBsZXRlLScgKyBpZFwiIHR5cGU9XCJudW1iZXJcIiBbKG5nTW9kZWwpXT1cImNvbXBsZXRlZFZhbHVlXCIgKGlucHV0KT1cIm9uSW5wdXRFdmVudCgkZXZlbnQpXCJcbiAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCIgbWluPVwiMFwiIC8+XG4gICAgPHA+e3sgY29tcGxldGVkVmFsdWUgPCAyID8gXCJkYXlcIiA6IFwiZGF5c1wiIH19IGJlZm9yZSB0aGUgcmV2aWV3IGRhdGUuPC9wPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIm5vdENvbXBsZXRlZFJlcXVpcmVkXCIgY2xhc3M9XCJmcmVxdWVuY3ktZHVlLWRhdGUtcm93XCI+XG4gICAgPHA+VGhlIHBvbGljeSByZXZpZXcgd2lsbCA8aT5mYWlsPC9pPjwvcD5cbiAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFtpZF09XCInbm90LWNvbXBsZXRlZC0nICsgaWRcIiBbKG5nTW9kZWwpXT1cIm5vdENvbXBsZXRlZFZhbHVlXCIgKGlucHV0KT1cIm9uSW5wdXRFdmVudCgkZXZlbnQpXCJcbiAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCIgbWluPVwiMFwiIC8+XG4gICAgPHA+XG4gICAgICB7eyBub3RDb21wbGV0ZWRWYWx1ZSA8IDIgPyBcImRheVwiIDogXCJkYXlzXCIgfX0gYWZ0ZXIgdGhlIHJldmlldyBkYXRlIGlmIGl0IGlzIG5vdCBjb21wbGV0ZWQuIDwvcD5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -26248,33 +26248,67 @@ class FrequencyDueDateComponent {
26248
26248
  this.type = this.mode;
26249
26249
  }
26250
26250
  }
26251
- onValueChange(event, actionType) {
26252
- if (!Number.isNaN(Number(event.target.value)) &&
26253
- parseInt(event.target.value) > -1) {
26254
- this.valueChange.emit({
26255
- type: actionType,
26256
- value: Number(event.target.value),
26257
- pageName: this.pageName,
26258
- });
26251
+ // Unified event handler for all input events
26252
+ onInputEvent(event) {
26253
+ const inputId = event.target.id;
26254
+ let actionType = '';
26255
+ // Determine action type based on input ID
26256
+ if (inputId.includes('complete-')) {
26257
+ actionType = 'completed';
26258
+ }
26259
+ else if (inputId.includes('not-completed-')) {
26260
+ actionType = 'not completed';
26261
+ }
26262
+ else if (inputId.includes('deactivate')) {
26263
+ actionType = 'deactivated';
26264
+ }
26265
+ // Process and validate the input value
26266
+ let value = this.processInputValue(event.target.value);
26267
+ // Update the input field
26268
+ event.target.value = value;
26269
+ // Update the corresponding model property
26270
+ this.updateModelProperty(actionType, value);
26271
+ // Emit the change event
26272
+ this.valueChange.emit({
26273
+ type: actionType,
26274
+ value: value,
26275
+ pageName: this.pageName,
26276
+ });
26277
+ }
26278
+ // Process input value: remove leading zeros, ensure positive, handle edge cases
26279
+ processInputValue(inputValue) {
26280
+ if (inputValue === '' || inputValue === null || inputValue === undefined) {
26281
+ return 0;
26259
26282
  }
26260
- else {
26261
- if (actionType === 'completed') {
26262
- this.completedValue = this.defaultWindow;
26263
- }
26264
- else if (actionType === 'not completed') {
26265
- this.notCompletedValue = this.defaultFailed;
26266
- }
26267
- else if (actionType === 'deactivated') {
26268
- this.deactivateValue = this.defaultDeactivate;
26269
- }
26283
+ // Convert to number and ensure it's positive
26284
+ let value = Math.abs(Number(inputValue));
26285
+ // Remove leading zeros by converting to string and back to number
26286
+ return Number(value.toString());
26287
+ }
26288
+ // Update the corresponding model property
26289
+ updateModelProperty(actionType, value) {
26290
+ switch (actionType) {
26291
+ case 'completed':
26292
+ this.completedValue = value;
26293
+ break;
26294
+ case 'not completed':
26295
+ this.notCompletedValue = value;
26296
+ break;
26297
+ case 'deactivated':
26298
+ this.deactivateValue = value;
26299
+ break;
26270
26300
  }
26271
26301
  }
26302
+ // Prevent decimal point entry
26303
+ onKeyDown(event) {
26304
+ return event.key !== '.';
26305
+ }
26272
26306
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyDueDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26273
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FrequencyDueDateComponent, selector: "app-frequency-due-date", inputs: { mode: "mode", pageType: "pageType", completedRequired: "completedRequired", notCompletedRequired: "notCompletedRequired", completedValue: "completedValue", notCompletedValue: "notCompletedValue", deactivateValue: "deactivateValue", isDeactivated: "isDeactivated", id: "id", pageName: "pageName" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div\n *ngIf=\"['responsibility', 'policy', 'reviewerFrequency'].includes(mode)\"\n class=\"frequency-bottom\"\n>\n <div *ngIf=\"completedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowOpen }}\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n The {{ pageType }} can be {{ dueDateText?.keys }} on the due date and\n <input\n class=\"countNum\"\n [id]=\"'complete-' + id\"\n type=\"number\"\n [(ngModel)]=\"completedValue\"\n (change)=\"onValueChange($event, 'completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n {{ completedValue < 2 ? \"day\" : \"days\" }}\n <span class=\"vx-fw-500\">before</span> the due date. Where this occurs,\n this will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"completed-text vx-fw-500\"\n >{{ dueDateText?.keys }} on time</span\n >.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.extension }}\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n The {{ pageType }} can be {{ dueDateText?.keys }}\n <input\n class=\"countNum\"\n type=\"number\"\n [id]=\"'not-completed-' + id\"\n [(ngModel)]=\"notCompletedValue\"\n (change)=\"onValueChange($event, 'not completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }}\n <span class=\"vx-fw-500\">after</span> the due date. Where this occurs, this\n will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"delay-text vx-fw-500\"\n >{{ dueDateText?.keys }} with delay</span\n >.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowCloses }}\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n The {{ pageType }} cannot be {{ dueDateText?.keys }}\n <span class=\"vx-fw-500 vx-label-txt\">{{ notCompletedValue }}</span>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }}\n <span class=\"vx-fw-500\">after</span> the due date. Where this occurs, this\n will show as the {{ type }} being\n <span class=\"notcompleted-text vx-fw-500\"\n >not\n {{\n dueDateText?.keys === \"reviewed\" ? \"completed\" : dueDateText?.keys\n }}</span\n >.\n </div>\n </div>\n\n <div\n *ngIf=\"isDeactivated && mode === 'responsibility'\"\n class=\"frequency-bottom-item vx-mt-5\"\n >\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n AUTOMATIC DEACTIVATE:\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n This {{ type }} will be automatically deactivated, if it is not\n {{ dueDateText?.keys }}\n for\n <input\n class=\"countNum\"\n type=\"number\"\n [id]=\"'deactivate' + id\"\n [(ngModel)]=\"deactivateValue\"\n (change)=\"onValueChange($event, 'deactivated')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n consecutive due dates.\n </div>\n </div>\n</div>\n\n<!-- For Policy -->\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'policy' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">attested</i></p>\n <input\n [id]=\"'complete-' + id\"\n type=\"number\"\n [(ngModel)]=\"completedValue\"\n (change)=\"onValueChange($event, 'completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the due date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy attestation will <i>fail</i></p>\n <input\n type=\"number\"\n [id]=\"'not-completed-' + id\"\n [(ngModel)]=\"notCompletedValue\"\n (change)=\"onValueChange($event, 'not completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the due date if it is\n not completed.\n </p>\n </div>\n</div>\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'reviewerFrequency' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">reviewed</i></p>\n <input\n [id]=\"'complete-' + id\"\n type=\"number\"\n [(ngModel)]=\"completedValue\"\n (change)=\"onValueChange($event, 'completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the review date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy review will <i>fail</i></p>\n <input\n type=\"number\"\n [id]=\"'not-completed-' + id\"\n [(ngModel)]=\"notCompletedValue\"\n (change)=\"onValueChange($event, 'not completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the review date if it\n is not completed.\n </p>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .frequency-bottom-item-box{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-bottom-item-box input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .frequency-bottom-item-box input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-bottom-item-box input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-bottom-item-box .completed-text{color:#34aa44}::ng-deep .frequency-bottom-item-box .delay-text{color:#f0b819}::ng-deep .frequency-bottom-item-box .notcompleted-text{color:#d93b41}.frequency-due-date{display:block}.frequency-due-date-row{display:flex;border-top:1px solid #f1f1f1;padding:12px 20px;align-items:center}.frequency-due-date p{font-size:13px;color:#747576;width:auto;margin:0;font-weight:400;line-height:20px}.frequency-due-date p i{color:#d93b41;font-style:italic;font-weight:500;padding:0 4px}.frequency-due-date p i.completed{color:#1e5dd3}.frequency-due-date p strong{font-weight:600;font-style:italic}.frequency-due-date input{-moz-appearance:textfield;font-size:14px;color:#161b2f;border:0;border-bottom:2px solid #dcdcdc;display:inline-block;width:36px;text-align:center;padding:4px;margin:0 8px;outline:none}.frequency-due-date input::-webkit-outer-spin-button,.frequency-due-date input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "directive", type: i1$3.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: i1$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
26307
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FrequencyDueDateComponent, selector: "app-frequency-due-date", inputs: { mode: "mode", pageType: "pageType", completedRequired: "completedRequired", notCompletedRequired: "notCompletedRequired", completedValue: "completedValue", notCompletedValue: "notCompletedValue", deactivateValue: "deactivateValue", isDeactivated: "isDeactivated", id: "id", pageName: "pageName" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div *ngIf=\"['responsibility', 'policy', 'reviewerFrequency'].includes(mode)\" class=\"frequency-bottom\">\n <div *ngIf=\"completedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowOpen }}\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n The {{ pageType }} can be {{ dueDateText?.keys }} on the due date and\n <input class=\"countNum\" [id]=\"'complete-' + id\" type=\"number\" [(ngModel)]=\"completedValue\"\n (input)=\"onInputEvent($event)\" (keydown)=\"onKeyDown($event)\" min=\"0\" />\n {{ completedValue < 2 ? \"day\" : \"days\" }} <span class=\"vx-fw-500\">before</span> the due date. Where this occurs,\n this will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"completed-text vx-fw-500\">{{ dueDateText?.keys }} on time</span>.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.extension }}\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n The {{ pageType }} can be {{ dueDateText?.keys }}\n <input class=\"countNum\" type=\"number\" [id]=\"'not-completed-' + id\" [(ngModel)]=\"notCompletedValue\"\n (input)=\"onInputEvent($event)\" (keydown)=\"onKeyDown($event)\" min=\"0\" />\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} <span class=\"vx-fw-500\">after</span> the due date. Where this occurs,\n this\n will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"delay-text vx-fw-500\">{{ dueDateText?.keys }} with delay</span>.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowCloses }}\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n The {{ pageType }} cannot be {{ dueDateText?.keys }}\n <span class=\"vx-fw-500 vx-label-txt\">{{ notCompletedValue }}</span>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} <span class=\"vx-fw-500\">after</span> the due date. Where this occurs,\n this\n will show as the {{ type }} being\n <span class=\"notcompleted-text vx-fw-500\">not\n {{\n dueDateText?.keys === \"reviewed\" ? \"completed\" : dueDateText?.keys\n }}</span>.\n </div>\n </div>\n\n <div *ngIf=\"isDeactivated && mode === 'responsibility'\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n AUTOMATIC DEACTIVATE:\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n This {{ type }} will be automatically deactivated, if it is not\n {{ dueDateText?.keys }}\n for\n <input class=\"countNum\" type=\"number\" [id]=\"'deactivate' + id\" [(ngModel)]=\"deactivateValue\"\n (input)=\"onInputEvent($event)\" (keydown)=\"onKeyDown($event)\" min=\"0\" />\n consecutive due dates.\n </div>\n </div>\n</div>\n\n<!-- For Policy -->\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'policy' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">attested</i></p>\n <input [id]=\"'complete-' + id\" type=\"number\" [(ngModel)]=\"completedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the due date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy attestation will <i>fail</i></p>\n <input type=\"number\" [id]=\"'not-completed-' + id\" [(ngModel)]=\"notCompletedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the due date if it is not completed. </p>\n </div>\n</div>\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'reviewerFrequency' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">reviewed</i></p>\n <input [id]=\"'complete-' + id\" type=\"number\" [(ngModel)]=\"completedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the review date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy review will <i>fail</i></p>\n <input type=\"number\" [id]=\"'not-completed-' + id\" [(ngModel)]=\"notCompletedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the review date if it is not completed. </p>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .frequency-bottom-item-box{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-bottom-item-box input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .frequency-bottom-item-box input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-bottom-item-box input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-bottom-item-box .completed-text{color:#34aa44}::ng-deep .frequency-bottom-item-box .delay-text{color:#f0b819}::ng-deep .frequency-bottom-item-box .notcompleted-text{color:#d93b41}.frequency-due-date{display:block}.frequency-due-date-row{display:flex;border-top:1px solid #f1f1f1;padding:12px 20px;align-items:center}.frequency-due-date p{font-size:13px;color:#747576;width:auto;margin:0;font-weight:400;line-height:20px}.frequency-due-date p i{color:#d93b41;font-style:italic;font-weight:500;padding:0 4px}.frequency-due-date p i.completed{color:#1e5dd3}.frequency-due-date p strong{font-weight:600;font-style:italic}.frequency-due-date input{-moz-appearance:textfield;font-size:14px;color:#161b2f;border:0;border-bottom:2px solid #dcdcdc;display:inline-block;width:36px;text-align:center;padding:4px;margin:0 8px;outline:none}.frequency-due-date input::-webkit-outer-spin-button,.frequency-due-date input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "directive", type: i1$3.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: i1$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
26274
26308
  }
26275
26309
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyDueDateComponent, decorators: [{
26276
26310
  type: Component,
26277
- args: [{ selector: 'app-frequency-due-date', template: "<div\n *ngIf=\"['responsibility', 'policy', 'reviewerFrequency'].includes(mode)\"\n class=\"frequency-bottom\"\n>\n <div *ngIf=\"completedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowOpen }}\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n The {{ pageType }} can be {{ dueDateText?.keys }} on the due date and\n <input\n class=\"countNum\"\n [id]=\"'complete-' + id\"\n type=\"number\"\n [(ngModel)]=\"completedValue\"\n (change)=\"onValueChange($event, 'completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n {{ completedValue < 2 ? \"day\" : \"days\" }}\n <span class=\"vx-fw-500\">before</span> the due date. Where this occurs,\n this will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"completed-text vx-fw-500\"\n >{{ dueDateText?.keys }} on time</span\n >.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.extension }}\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n The {{ pageType }} can be {{ dueDateText?.keys }}\n <input\n class=\"countNum\"\n type=\"number\"\n [id]=\"'not-completed-' + id\"\n [(ngModel)]=\"notCompletedValue\"\n (change)=\"onValueChange($event, 'not completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }}\n <span class=\"vx-fw-500\">after</span> the due date. Where this occurs, this\n will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"delay-text vx-fw-500\"\n >{{ dueDateText?.keys }} with delay</span\n >.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowCloses }}\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n The {{ pageType }} cannot be {{ dueDateText?.keys }}\n <span class=\"vx-fw-500 vx-label-txt\">{{ notCompletedValue }}</span>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }}\n <span class=\"vx-fw-500\">after</span> the due date. Where this occurs, this\n will show as the {{ type }} being\n <span class=\"notcompleted-text vx-fw-500\"\n >not\n {{\n dueDateText?.keys === \"reviewed\" ? \"completed\" : dueDateText?.keys\n }}</span\n >.\n </div>\n </div>\n\n <div\n *ngIf=\"isDeactivated && mode === 'responsibility'\"\n class=\"frequency-bottom-item vx-mt-5\"\n >\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n AUTOMATIC DEACTIVATE:\n </div>\n <div\n class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\"\n >\n This {{ type }} will be automatically deactivated, if it is not\n {{ dueDateText?.keys }}\n for\n <input\n class=\"countNum\"\n type=\"number\"\n [id]=\"'deactivate' + id\"\n [(ngModel)]=\"deactivateValue\"\n (change)=\"onValueChange($event, 'deactivated')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n consecutive due dates.\n </div>\n </div>\n</div>\n\n<!-- For Policy -->\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'policy' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">attested</i></p>\n <input\n [id]=\"'complete-' + id\"\n type=\"number\"\n [(ngModel)]=\"completedValue\"\n (change)=\"onValueChange($event, 'completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the due date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy attestation will <i>fail</i></p>\n <input\n type=\"number\"\n [id]=\"'not-completed-' + id\"\n [(ngModel)]=\"notCompletedValue\"\n (change)=\"onValueChange($event, 'not completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the due date if it is\n not completed.\n </p>\n </div>\n</div>\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'reviewerFrequency' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">reviewed</i></p>\n <input\n [id]=\"'complete-' + id\"\n type=\"number\"\n [(ngModel)]=\"completedValue\"\n (change)=\"onValueChange($event, 'completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the review date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy review will <i>fail</i></p>\n <input\n type=\"number\"\n [id]=\"'not-completed-' + id\"\n [(ngModel)]=\"notCompletedValue\"\n (change)=\"onValueChange($event, 'not completed')\"\n onkeydown=\"return event.keyCode !== 190\"\n min=\"0\"\n oninput=\"this.value = Math.abs(this.value)\"\n />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the review date if it\n is not completed.\n </p>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .frequency-bottom-item-box{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-bottom-item-box input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .frequency-bottom-item-box input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-bottom-item-box input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-bottom-item-box .completed-text{color:#34aa44}::ng-deep .frequency-bottom-item-box .delay-text{color:#f0b819}::ng-deep .frequency-bottom-item-box .notcompleted-text{color:#d93b41}.frequency-due-date{display:block}.frequency-due-date-row{display:flex;border-top:1px solid #f1f1f1;padding:12px 20px;align-items:center}.frequency-due-date p{font-size:13px;color:#747576;width:auto;margin:0;font-weight:400;line-height:20px}.frequency-due-date p i{color:#d93b41;font-style:italic;font-weight:500;padding:0 4px}.frequency-due-date p i.completed{color:#1e5dd3}.frequency-due-date p strong{font-weight:600;font-style:italic}.frequency-due-date input{-moz-appearance:textfield;font-size:14px;color:#161b2f;border:0;border-bottom:2px solid #dcdcdc;display:inline-block;width:36px;text-align:center;padding:4px;margin:0 8px;outline:none}.frequency-due-date input::-webkit-outer-spin-button,.frequency-due-date input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"] }]
26311
+ args: [{ selector: 'app-frequency-due-date', template: "<div *ngIf=\"['responsibility', 'policy', 'reviewerFrequency'].includes(mode)\" class=\"frequency-bottom\">\n <div *ngIf=\"completedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowOpen }}\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n The {{ pageType }} can be {{ dueDateText?.keys }} on the due date and\n <input class=\"countNum\" [id]=\"'complete-' + id\" type=\"number\" [(ngModel)]=\"completedValue\"\n (input)=\"onInputEvent($event)\" (keydown)=\"onKeyDown($event)\" min=\"0\" />\n {{ completedValue < 2 ? \"day\" : \"days\" }} <span class=\"vx-fw-500\">before</span> the due date. Where this occurs,\n this will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"completed-text vx-fw-500\">{{ dueDateText?.keys }} on time</span>.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.extension }}\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n The {{ pageType }} can be {{ dueDateText?.keys }}\n <input class=\"countNum\" type=\"number\" [id]=\"'not-completed-' + id\" [(ngModel)]=\"notCompletedValue\"\n (input)=\"onInputEvent($event)\" (keydown)=\"onKeyDown($event)\" min=\"0\" />\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} <span class=\"vx-fw-500\">after</span> the due date. Where this occurs,\n this\n will show as the {{ mode === \"reviewerFrequency\" ? \"policy\" : type }} being\n <span class=\"delay-text vx-fw-500\">{{ dueDateText?.keys }} with delay</span>.\n </div>\n </div>\n\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n {{ dueDateText.windowCloses }}\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n The {{ pageType }} cannot be {{ dueDateText?.keys }}\n <span class=\"vx-fw-500 vx-label-txt\">{{ notCompletedValue }}</span>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} <span class=\"vx-fw-500\">after</span> the due date. Where this occurs,\n this\n will show as the {{ type }} being\n <span class=\"notcompleted-text vx-fw-500\">not\n {{\n dueDateText?.keys === \"reviewed\" ? \"completed\" : dueDateText?.keys\n }}</span>.\n </div>\n </div>\n\n <div *ngIf=\"isDeactivated && mode === 'responsibility'\" class=\"frequency-bottom-item vx-mt-5\">\n <div class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mb-1\">\n AUTOMATIC DEACTIVATE:\n </div>\n <div class=\"frequency-bottom-item-box vx-fs-13 vx-paragraph-txt vx-p-3 vx-pt-4 vx-pb-4 vx-d-block\">\n This {{ type }} will be automatically deactivated, if it is not\n {{ dueDateText?.keys }}\n for\n <input class=\"countNum\" type=\"number\" [id]=\"'deactivate' + id\" [(ngModel)]=\"deactivateValue\"\n (input)=\"onInputEvent($event)\" (keydown)=\"onKeyDown($event)\" min=\"0\" />\n consecutive due dates.\n </div>\n </div>\n</div>\n\n<!-- For Policy -->\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'policy' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">attested</i></p>\n <input [id]=\"'complete-' + id\" type=\"number\" [(ngModel)]=\"completedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the due date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy attestation will <i>fail</i></p>\n <input type=\"number\" [id]=\"'not-completed-' + id\" [(ngModel)]=\"notCompletedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the due date if it is not completed. </p>\n </div>\n</div>\n<div class=\"frequency-due-date\" *ngIf=\"mode == 'reviewerFrequency' && false\">\n <div *ngIf=\"completedRequired\" class=\"frequency-due-date-row\">\n <p>The policy can be <i class=\"completed\">reviewed</i></p>\n <input [id]=\"'complete-' + id\" type=\"number\" [(ngModel)]=\"completedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>{{ completedValue < 2 ? \"day\" : \"days\" }} before the review date.</p>\n </div>\n <div *ngIf=\"notCompletedRequired\" class=\"frequency-due-date-row\">\n <p>The policy review will <i>fail</i></p>\n <input type=\"number\" [id]=\"'not-completed-' + id\" [(ngModel)]=\"notCompletedValue\" (input)=\"onInputEvent($event)\"\n (keydown)=\"onKeyDown($event)\" min=\"0\" />\n <p>\n {{ notCompletedValue < 2 ? \"day\" : \"days\" }} after the review date if it is not completed. </p>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .frequency-bottom-item-box{border-radius:.25rem;border:1px solid #f1f1f1}::ng-deep .frequency-bottom-item-box input.countNum{-moz-appearance:textfield;border:none;border-bottom:1px solid #DBDBDB;color:#161b2f;display:inline-block;font-size:13px;text-align:center;width:2.75rem;padding:.125rem;margin:0 .5rem;outline:none}::ng-deep .frequency-bottom-item-box input.countNum::-webkit-inner-spin-button,::ng-deep .frequency-bottom-item-box input.countNum::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .frequency-bottom-item-box .completed-text{color:#34aa44}::ng-deep .frequency-bottom-item-box .delay-text{color:#f0b819}::ng-deep .frequency-bottom-item-box .notcompleted-text{color:#d93b41}.frequency-due-date{display:block}.frequency-due-date-row{display:flex;border-top:1px solid #f1f1f1;padding:12px 20px;align-items:center}.frequency-due-date p{font-size:13px;color:#747576;width:auto;margin:0;font-weight:400;line-height:20px}.frequency-due-date p i{color:#d93b41;font-style:italic;font-weight:500;padding:0 4px}.frequency-due-date p i.completed{color:#1e5dd3}.frequency-due-date p strong{font-weight:600;font-style:italic}.frequency-due-date input{-moz-appearance:textfield;font-size:14px;color:#161b2f;border:0;border-bottom:2px solid #dcdcdc;display:inline-block;width:36px;text-align:center;padding:4px;margin:0 8px;outline:none}.frequency-due-date input::-webkit-outer-spin-button,.frequency-due-date input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"] }]
26278
26312
  }], ctorParameters: function () { return []; }, propDecorators: { mode: [{
26279
26313
  type: Input
26280
26314
  }], pageType: [{