raise-common-lib-new 0.0.24 → 0.0.25
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.
|
@@ -109,11 +109,11 @@ export class RsCommentaryComponent {
|
|
|
109
109
|
}
|
|
110
110
|
adjustTextareaHeight(e) {
|
|
111
111
|
const textarea = e.target;
|
|
112
|
-
textarea.style.
|
|
113
|
-
textarea.style.
|
|
112
|
+
textarea.style.minHeight = "auto";
|
|
113
|
+
textarea.style.minHeight = textarea.scrollHeight + "px";
|
|
114
114
|
}
|
|
115
115
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RsCommentaryComponent, deps: [{ token: i1.CommonFunctionService }, { token: i2.DialogService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
116
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RsCommentaryComponent, selector: "rs-commentary", inputs: { displayName: "displayName", commentData: "commentData", editPermission: "editPermission", deletePermission: "deletePermission", isReadOnly: "isReadOnly" }, outputs: { actionComplete: "actionComplete" }, ngImport: i0, template: "<div class=\"rs-commentary-wrap\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment' }\"\r\n ></ng-container>\r\n <div class=\"reply-box\">\r\n <div *ngFor=\"let item of commentData\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment', item: item }\"\r\n ></ng-container>\r\n <div class=\"sub-reply-list\">\r\n <ng-container\r\n *ngFor=\"\r\n let sub of item.isExpanded\r\n ? item.commentaries\r\n : item.commentaries.slice(0, 3)\r\n \"\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'sub', item: sub }\"\r\n ></ng-container>\r\n </div>\r\n <button\r\n class=\"e-btn text\"\r\n *ngIf=\"item.commentaries.length > 3\"\r\n (click)=\"item.isExpanded = !item.isExpanded\"\r\n style=\"margin-bottom: 8px;\"\r\n >\r\n {{\r\n item.isExpanded\r\n ? \"Collapse\"\r\n : \"View All \" + item.commentaries.length + \" Replies\"\r\n }}\r\n <img\r\n class=\"arrow\"\r\n [ngClass]=\"{ collapse: item.isExpanded }\"\r\n src=\"../../assets/img/dropdown-arrow.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #commentBoxTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"comment-box\">\r\n <div class=\"comment-input-wrap\">\r\n <div class=\"avatar\" *ngIf=\"type !== 'editComment'\">\r\n {{ cf.rtn(displayName) }}\r\n </div>\r\n <textarea\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-input\"\r\n rows=\"2\"\r\n [(ngModel)]=\"commentVal\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n <textarea\r\n *ngIf=\"type === 'reply'\"\r\n class=\"e-input\"\r\n rows=\"2\"\r\n [(ngModel)]=\"replyVal\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n <textarea\r\n *ngIf=\"type === 'editComment'\"\r\n class=\"e-input\"\r\n rows=\"2\"\r\n [(ngModel)]=\"editCommentVal\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n </div>\r\n <div class=\"btn-wrap\">\r\n <button\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-btn e-primary small\"\r\n [disabled]=\"commentVal === ''|| isReadOnly || !editPermission\"\r\n (click)=\"addComment()\"\r\n >\r\n {{ translation.COMMENT || \".COMMENT\" }}\r\n </button>\r\n <ng-container *ngIf=\"type === 'reply'\">\r\n <button\r\n class=\"e-btn small\"\r\n (click)=\"item.showReplyInput = false; replyVal = ''\"\r\n >\r\n {{ translation.CANCEL || \".CANCEL\" }}\r\n </button>\r\n <button\r\n class=\"e-btn e-primary small\"\r\n [disabled]=\"replyVal === ''\"\r\n (click)=\"addReply(item)\"\r\n >\r\n {{ translation.REPLY || \".REPLY\" }}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"type === 'editComment'\">\r\n <button class=\"e-btn text\" (click)=\"item.showCommentEdit = false\">\r\n <img src=\"../../assets/img/comment-cancel.svg\" alt=\"\" />\r\n </button>\r\n <button\r\n class=\"e-btn text\"\r\n [disabled]=\"editCommentVal === ''\"\r\n (click)=\"updateComment(item)\"\r\n >\r\n <img src=\"../../assets/img/comment-check.svg\" alt=\"\" />\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #replyItemTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"reply-item\" [ngClass]=\"{ comment: type === 'comment' }\">\r\n <div class=\"avatar\">\r\n {{ cf.rtn(item.ownerName) }}\r\n </div>\r\n <div class=\"owner-wrap\">\r\n <div class=\"owner-info\">\r\n <div class=\"name\">\r\n {{ item.ownerName }}\r\n </div>\r\n <div class=\"time\">\r\n {{ item.lastModifiedOn | date : dateTimePipeFormat }}\r\n </div>\r\n </div>\r\n <div class=\"message-wrap\">\r\n <div class=\"message\" *ngIf=\"!item.showCommentEdit\">\r\n {{ item.messageBody }}\r\n </div>\r\n <ng-container\r\n *ngIf=\"item.showCommentEdit\"\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'editComment', item: item }\"\r\n ></ng-container>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"\r\n type === 'comment' && !item.showReplyInput && !item.showCommentEdit\r\n \"\r\n class=\"e-btn text\"\r\n (click)=\"item.showReplyInput = true\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n >\r\n {{ translation.REPLY || \".REPLY\" }}\r\n </button>\r\n <ng-container\r\n *ngIf=\"item.showReplyInput\"\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'reply', item: item }\"\r\n ></ng-container>\r\n\r\n <rs-grid-action *ngIf=\"type === 'comment'\">\r\n <rs-grid-action-item\r\n image=\"Edit\"\r\n [text]=\"translation.EDIT\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n (click)=\"editComment(item)\"\r\n ></rs-grid-action-item>\r\n <rs-grid-action-item\r\n image=\"Delete\"\r\n [text]=\"translation.DELETE\"\r\n [disabled]=\"isReadOnly || !deletePermission\"\r\n (click)=\"deleteComment(item)\"\r\n ></rs-grid-action-item>\r\n </rs-grid-action>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".rs-commentary-wrap{width:100%;height:100%;padding:32px;display:flex;flex-direction:column}.rs-commentary-wrap .comment-box{width:100%}.rs-commentary-wrap .comment-box .comment-input-wrap{margin-bottom:12px;display:flex;gap:12px}.rs-commentary-wrap .comment-box .comment-input-wrap .e-input{flex:1;width:0;height:44px}.rs-commentary-wrap .comment-box .btn-wrap{display:flex;justify-content:flex-end;gap:12px}.rs-commentary-wrap .comment-box .btn-wrap .e-btn.text{padding:4px}.rs-commentary-wrap .reply-box{height:0;flex:1;overflow:auto;margin-top:16px;margin-right:-32px;padding-right:32px}.rs-commentary-wrap .reply-box .sub-reply-list{padding-left:40px}.rs-commentary-wrap .reply-box .e-btn.text{padding:0!important;min-width:auto;height:auto;color:#6c7c90!important}.rs-commentary-wrap .reply-box .e-btn.text:hover{background:transparent!important;color:#1364b3!important}.rs-commentary-wrap .reply-box .e-btn.text:focus{background:transparent!important;color:#6c7c90!important}.rs-commentary-wrap .reply-box .arrow.collapse{transform:rotate(180deg)}.rs-commentary-wrap .reply-box .reply-item{display:flex;gap:12px;padding:12px 0}.rs-commentary-wrap .reply-box .reply-item.comment{border-top:1px solid #eaedf0}.rs-commentary-wrap .reply-box .reply-item.comment:hover{background-color:#f6faff}.rs-commentary-wrap .reply-box .reply-item.comment:hover rs-grid-action{display:block}.rs-commentary-wrap .reply-box .reply-item rs-grid-action{display:none;position:absolute;cursor:pointer;top:-4px;right:8px}.rs-commentary-wrap .reply-box .owner-wrap{flex:1;width:0;position:relative}.rs-commentary-wrap .reply-box .owner-wrap .owner-info{display:flex;align-items:center;gap:12px}.rs-commentary-wrap .reply-box .owner-wrap .owner-info .name{color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:700;line-height:14px}.rs-commentary-wrap .reply-box .owner-wrap .owner-info .time{color:#6c7c90;font-family:Arial;font-size:10px;font-style:normal;font-weight:400;line-height:12px}.rs-commentary-wrap .reply-box .owner-wrap .message-wrap{padding:8px 0}.rs-commentary-wrap .reply-box .owner-wrap .message-wrap .message{color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.rs-commentary-wrap .avatar{width:32px;height:32px;border-radius:100%;border:1px solid rgba(108,124,144,.4);color:#44566c;display:flex;align-items:center;justify-content:center;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.GridActionComponent, selector: "rs-grid-action" }, { kind: "component", type: i6.GridActionItemComponent, selector: "rs-grid-action-item", inputs: ["image", "text", "disabled"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
|
|
116
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RsCommentaryComponent, selector: "rs-commentary", inputs: { displayName: "displayName", commentData: "commentData", editPermission: "editPermission", deletePermission: "deletePermission", isReadOnly: "isReadOnly" }, outputs: { actionComplete: "actionComplete" }, ngImport: i0, template: "<div class=\"rs-commentary-wrap\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment' }\"\r\n ></ng-container>\r\n <div class=\"reply-box\">\r\n <div *ngFor=\"let item of commentData\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment', item: item }\"\r\n ></ng-container>\r\n <div class=\"sub-reply-list\">\r\n <ng-container\r\n *ngFor=\"\r\n let sub of item.isExpanded\r\n ? item.commentaries\r\n : item.commentaries.slice(0, 3)\r\n \"\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'sub', item: sub }\"\r\n ></ng-container>\r\n </div>\r\n <button\r\n class=\"e-btn text\"\r\n *ngIf=\"item.commentaries.length > 3\"\r\n (click)=\"item.isExpanded = !item.isExpanded\"\r\n style=\"margin-bottom: 8px;\"\r\n >\r\n {{\r\n item.isExpanded\r\n ? \"Collapse\"\r\n : \"View All \" + item.commentaries.length + \" Replies\"\r\n }}\r\n <img\r\n class=\"arrow\"\r\n [ngClass]=\"{ collapse: item.isExpanded }\"\r\n src=\"../../assets/img/dropdown-arrow.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #commentBoxTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"comment-box\">\r\n <div class=\"comment-input-wrap\">\r\n <div class=\"avatar\" *ngIf=\"type !== 'editComment'\">\r\n {{ cf.rtn(displayName) }}\r\n </div>\r\n <textarea\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-input\"\r\n rows=\"3\"\r\n [(ngModel)]=\"commentVal\"\r\n (focus)=\"adjustTextareaHeight($event)\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n <textarea\r\n *ngIf=\"type === 'reply'\"\r\n class=\"e-input\"\r\n rows=\"3\"\r\n [(ngModel)]=\"replyVal\"\r\n (focus)=\"adjustTextareaHeight($event)\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n <textarea\r\n *ngIf=\"type === 'editComment'\"\r\n class=\"e-input\"\r\n rows=\"3\"\r\n [(ngModel)]=\"editCommentVal\"\r\n (focus)=\"adjustTextareaHeight($event)\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n </div>\r\n <div class=\"btn-wrap\">\r\n <button\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-btn e-primary small\"\r\n [disabled]=\"commentVal === ''|| isReadOnly || !editPermission\"\r\n (click)=\"addComment()\"\r\n >\r\n {{ translation.COMMENT || \".COMMENT\" }}\r\n </button>\r\n <ng-container *ngIf=\"type === 'reply'\">\r\n <button\r\n class=\"e-btn small\"\r\n (click)=\"item.showReplyInput = false; replyVal = ''\"\r\n >\r\n {{ translation.CANCEL || \".CANCEL\" }}\r\n </button>\r\n <button\r\n class=\"e-btn e-primary small\"\r\n [disabled]=\"replyVal === ''\"\r\n (click)=\"addReply(item)\"\r\n >\r\n {{ translation.REPLY || \".REPLY\" }}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"type === 'editComment'\">\r\n <button class=\"e-btn text\" (click)=\"item.showCommentEdit = false\">\r\n <img src=\"../../assets/img/comment-cancel.svg\" alt=\"\" />\r\n </button>\r\n <button\r\n class=\"e-btn text\"\r\n [disabled]=\"editCommentVal === ''\"\r\n (click)=\"updateComment(item)\"\r\n >\r\n <img src=\"../../assets/img/comment-check.svg\" alt=\"\" />\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #replyItemTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"reply-item\" [ngClass]=\"{ comment: type === 'comment' }\">\r\n <div class=\"avatar\">\r\n {{ cf.rtn(item.ownerName) }}\r\n </div>\r\n <div class=\"owner-wrap\">\r\n <div class=\"owner-info\">\r\n <div class=\"name\">\r\n {{ item.ownerName }}\r\n </div>\r\n <div class=\"time\">\r\n {{ item.lastModifiedOn | date : dateTimePipeFormat }}\r\n </div>\r\n </div>\r\n <div class=\"message-wrap\">\r\n <div class=\"message\" *ngIf=\"!item.showCommentEdit\">\r\n {{ item.messageBody }}\r\n </div>\r\n <ng-container\r\n *ngIf=\"item.showCommentEdit\"\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'editComment', item: item }\"\r\n ></ng-container>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"\r\n type === 'comment' && !item.showReplyInput && !item.showCommentEdit\r\n \"\r\n class=\"e-btn text\"\r\n (click)=\"item.showReplyInput = true\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n >\r\n {{ translation.REPLY || \".REPLY\" }}\r\n </button>\r\n <ng-container\r\n *ngIf=\"item.showReplyInput\"\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'reply', item: item }\"\r\n ></ng-container>\r\n\r\n <rs-grid-action *ngIf=\"type === 'comment'\">\r\n <rs-grid-action-item\r\n image=\"Edit\"\r\n [text]=\"translation.EDIT\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n (click)=\"editComment(item)\"\r\n ></rs-grid-action-item>\r\n <rs-grid-action-item\r\n image=\"Delete\"\r\n [text]=\"translation.DELETE\"\r\n [disabled]=\"isReadOnly || !deletePermission\"\r\n (click)=\"deleteComment(item)\"\r\n ></rs-grid-action-item>\r\n </rs-grid-action>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".rs-commentary-wrap{width:100%;height:100%;padding:32px;display:flex;flex-direction:column}.rs-commentary-wrap .comment-box{width:100%}.rs-commentary-wrap .comment-box .comment-input-wrap{margin-bottom:12px;display:flex;gap:12px}.rs-commentary-wrap .comment-box .comment-input-wrap .e-input{flex:1;width:0}.rs-commentary-wrap .comment-box .btn-wrap{display:flex;justify-content:flex-end;gap:12px}.rs-commentary-wrap .comment-box .btn-wrap .e-btn.text{padding:4px}.rs-commentary-wrap .reply-box{height:0;flex:1;overflow:auto;margin-top:16px;margin-right:-32px;padding-right:32px}.rs-commentary-wrap .reply-box .sub-reply-list{padding-left:40px}.rs-commentary-wrap .reply-box .e-btn.text{padding:0!important;min-width:auto;height:auto;color:#6c7c90!important}.rs-commentary-wrap .reply-box .e-btn.text:hover{background:transparent!important;color:#1364b3!important}.rs-commentary-wrap .reply-box .e-btn.text:focus{background:transparent!important;color:#6c7c90!important}.rs-commentary-wrap .reply-box .arrow.collapse{transform:rotate(180deg)}.rs-commentary-wrap .reply-box .reply-item{display:flex;gap:12px;padding:12px 0}.rs-commentary-wrap .reply-box .reply-item.comment{border-top:1px solid #eaedf0}.rs-commentary-wrap .reply-box .reply-item.comment:hover{background-color:#f6faff}.rs-commentary-wrap .reply-box .reply-item.comment:hover rs-grid-action{display:block}.rs-commentary-wrap .reply-box .reply-item rs-grid-action{display:none;position:absolute;cursor:pointer;top:-4px;right:8px}.rs-commentary-wrap .reply-box .owner-wrap{flex:1;width:0;position:relative}.rs-commentary-wrap .reply-box .owner-wrap .owner-info{display:flex;align-items:center;gap:12px}.rs-commentary-wrap .reply-box .owner-wrap .owner-info .name{color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:700;line-height:14px}.rs-commentary-wrap .reply-box .owner-wrap .owner-info .time{color:#6c7c90;font-family:Arial;font-size:10px;font-style:normal;font-weight:400;line-height:12px}.rs-commentary-wrap .reply-box .owner-wrap .message-wrap{padding:8px 0}.rs-commentary-wrap .reply-box .owner-wrap .message-wrap .message{color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.rs-commentary-wrap .avatar{width:32px;height:32px;border-radius:100%;border:1px solid rgba(108,124,144,.4);color:#44566c;display:flex;align-items:center;justify-content:center;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.GridActionComponent, selector: "rs-grid-action" }, { kind: "component", type: i6.GridActionItemComponent, selector: "rs-grid-action-item", inputs: ["image", "text", "disabled"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
|
|
117
117
|
}
|
|
118
118
|
__decorate([
|
|
119
119
|
Debounce(300)
|
|
@@ -129,7 +129,7 @@ __decorate([
|
|
|
129
129
|
], RsCommentaryComponent.prototype, "adjustTextareaHeight", null);
|
|
130
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RsCommentaryComponent, decorators: [{
|
|
131
131
|
type: Component,
|
|
132
|
-
args: [{ selector: "rs-commentary", template: "<div class=\"rs-commentary-wrap\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment' }\"\r\n ></ng-container>\r\n <div class=\"reply-box\">\r\n <div *ngFor=\"let item of commentData\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment', item: item }\"\r\n ></ng-container>\r\n <div class=\"sub-reply-list\">\r\n <ng-container\r\n *ngFor=\"\r\n let sub of item.isExpanded\r\n ? item.commentaries\r\n : item.commentaries.slice(0, 3)\r\n \"\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'sub', item: sub }\"\r\n ></ng-container>\r\n </div>\r\n <button\r\n class=\"e-btn text\"\r\n *ngIf=\"item.commentaries.length > 3\"\r\n (click)=\"item.isExpanded = !item.isExpanded\"\r\n style=\"margin-bottom: 8px;\"\r\n >\r\n {{\r\n item.isExpanded\r\n ? \"Collapse\"\r\n : \"View All \" + item.commentaries.length + \" Replies\"\r\n }}\r\n <img\r\n class=\"arrow\"\r\n [ngClass]=\"{ collapse: item.isExpanded }\"\r\n src=\"../../assets/img/dropdown-arrow.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #commentBoxTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"comment-box\">\r\n <div class=\"comment-input-wrap\">\r\n <div class=\"avatar\" *ngIf=\"type !== 'editComment'\">\r\n {{ cf.rtn(displayName) }}\r\n </div>\r\n <textarea\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-input\"\r\n rows=\"
|
|
132
|
+
args: [{ selector: "rs-commentary", template: "<div class=\"rs-commentary-wrap\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment' }\"\r\n ></ng-container>\r\n <div class=\"reply-box\">\r\n <div *ngFor=\"let item of commentData\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment', item: item }\"\r\n ></ng-container>\r\n <div class=\"sub-reply-list\">\r\n <ng-container\r\n *ngFor=\"\r\n let sub of item.isExpanded\r\n ? item.commentaries\r\n : item.commentaries.slice(0, 3)\r\n \"\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'sub', item: sub }\"\r\n ></ng-container>\r\n </div>\r\n <button\r\n class=\"e-btn text\"\r\n *ngIf=\"item.commentaries.length > 3\"\r\n (click)=\"item.isExpanded = !item.isExpanded\"\r\n style=\"margin-bottom: 8px;\"\r\n >\r\n {{\r\n item.isExpanded\r\n ? \"Collapse\"\r\n : \"View All \" + item.commentaries.length + \" Replies\"\r\n }}\r\n <img\r\n class=\"arrow\"\r\n [ngClass]=\"{ collapse: item.isExpanded }\"\r\n src=\"../../assets/img/dropdown-arrow.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #commentBoxTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"comment-box\">\r\n <div class=\"comment-input-wrap\">\r\n <div class=\"avatar\" *ngIf=\"type !== 'editComment'\">\r\n {{ cf.rtn(displayName) }}\r\n </div>\r\n <textarea\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-input\"\r\n rows=\"3\"\r\n [(ngModel)]=\"commentVal\"\r\n (focus)=\"adjustTextareaHeight($event)\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n <textarea\r\n *ngIf=\"type === 'reply'\"\r\n class=\"e-input\"\r\n rows=\"3\"\r\n [(ngModel)]=\"replyVal\"\r\n (focus)=\"adjustTextareaHeight($event)\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n <textarea\r\n *ngIf=\"type === 'editComment'\"\r\n class=\"e-input\"\r\n rows=\"3\"\r\n [(ngModel)]=\"editCommentVal\"\r\n (focus)=\"adjustTextareaHeight($event)\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n </div>\r\n <div class=\"btn-wrap\">\r\n <button\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-btn e-primary small\"\r\n [disabled]=\"commentVal === ''|| isReadOnly || !editPermission\"\r\n (click)=\"addComment()\"\r\n >\r\n {{ translation.COMMENT || \".COMMENT\" }}\r\n </button>\r\n <ng-container *ngIf=\"type === 'reply'\">\r\n <button\r\n class=\"e-btn small\"\r\n (click)=\"item.showReplyInput = false; replyVal = ''\"\r\n >\r\n {{ translation.CANCEL || \".CANCEL\" }}\r\n </button>\r\n <button\r\n class=\"e-btn e-primary small\"\r\n [disabled]=\"replyVal === ''\"\r\n (click)=\"addReply(item)\"\r\n >\r\n {{ translation.REPLY || \".REPLY\" }}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"type === 'editComment'\">\r\n <button class=\"e-btn text\" (click)=\"item.showCommentEdit = false\">\r\n <img src=\"../../assets/img/comment-cancel.svg\" alt=\"\" />\r\n </button>\r\n <button\r\n class=\"e-btn text\"\r\n [disabled]=\"editCommentVal === ''\"\r\n (click)=\"updateComment(item)\"\r\n >\r\n <img src=\"../../assets/img/comment-check.svg\" alt=\"\" />\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #replyItemTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"reply-item\" [ngClass]=\"{ comment: type === 'comment' }\">\r\n <div class=\"avatar\">\r\n {{ cf.rtn(item.ownerName) }}\r\n </div>\r\n <div class=\"owner-wrap\">\r\n <div class=\"owner-info\">\r\n <div class=\"name\">\r\n {{ item.ownerName }}\r\n </div>\r\n <div class=\"time\">\r\n {{ item.lastModifiedOn | date : dateTimePipeFormat }}\r\n </div>\r\n </div>\r\n <div class=\"message-wrap\">\r\n <div class=\"message\" *ngIf=\"!item.showCommentEdit\">\r\n {{ item.messageBody }}\r\n </div>\r\n <ng-container\r\n *ngIf=\"item.showCommentEdit\"\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'editComment', item: item }\"\r\n ></ng-container>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"\r\n type === 'comment' && !item.showReplyInput && !item.showCommentEdit\r\n \"\r\n class=\"e-btn text\"\r\n (click)=\"item.showReplyInput = true\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n >\r\n {{ translation.REPLY || \".REPLY\" }}\r\n </button>\r\n <ng-container\r\n *ngIf=\"item.showReplyInput\"\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'reply', item: item }\"\r\n ></ng-container>\r\n\r\n <rs-grid-action *ngIf=\"type === 'comment'\">\r\n <rs-grid-action-item\r\n image=\"Edit\"\r\n [text]=\"translation.EDIT\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n (click)=\"editComment(item)\"\r\n ></rs-grid-action-item>\r\n <rs-grid-action-item\r\n image=\"Delete\"\r\n [text]=\"translation.DELETE\"\r\n [disabled]=\"isReadOnly || !deletePermission\"\r\n (click)=\"deleteComment(item)\"\r\n ></rs-grid-action-item>\r\n </rs-grid-action>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".rs-commentary-wrap{width:100%;height:100%;padding:32px;display:flex;flex-direction:column}.rs-commentary-wrap .comment-box{width:100%}.rs-commentary-wrap .comment-box .comment-input-wrap{margin-bottom:12px;display:flex;gap:12px}.rs-commentary-wrap .comment-box .comment-input-wrap .e-input{flex:1;width:0}.rs-commentary-wrap .comment-box .btn-wrap{display:flex;justify-content:flex-end;gap:12px}.rs-commentary-wrap .comment-box .btn-wrap .e-btn.text{padding:4px}.rs-commentary-wrap .reply-box{height:0;flex:1;overflow:auto;margin-top:16px;margin-right:-32px;padding-right:32px}.rs-commentary-wrap .reply-box .sub-reply-list{padding-left:40px}.rs-commentary-wrap .reply-box .e-btn.text{padding:0!important;min-width:auto;height:auto;color:#6c7c90!important}.rs-commentary-wrap .reply-box .e-btn.text:hover{background:transparent!important;color:#1364b3!important}.rs-commentary-wrap .reply-box .e-btn.text:focus{background:transparent!important;color:#6c7c90!important}.rs-commentary-wrap .reply-box .arrow.collapse{transform:rotate(180deg)}.rs-commentary-wrap .reply-box .reply-item{display:flex;gap:12px;padding:12px 0}.rs-commentary-wrap .reply-box .reply-item.comment{border-top:1px solid #eaedf0}.rs-commentary-wrap .reply-box .reply-item.comment:hover{background-color:#f6faff}.rs-commentary-wrap .reply-box .reply-item.comment:hover rs-grid-action{display:block}.rs-commentary-wrap .reply-box .reply-item rs-grid-action{display:none;position:absolute;cursor:pointer;top:-4px;right:8px}.rs-commentary-wrap .reply-box .owner-wrap{flex:1;width:0;position:relative}.rs-commentary-wrap .reply-box .owner-wrap .owner-info{display:flex;align-items:center;gap:12px}.rs-commentary-wrap .reply-box .owner-wrap .owner-info .name{color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:700;line-height:14px}.rs-commentary-wrap .reply-box .owner-wrap .owner-info .time{color:#6c7c90;font-family:Arial;font-size:10px;font-style:normal;font-weight:400;line-height:12px}.rs-commentary-wrap .reply-box .owner-wrap .message-wrap{padding:8px 0}.rs-commentary-wrap .reply-box .owner-wrap .message-wrap .message{color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.rs-commentary-wrap .avatar{width:32px;height:32px;border-radius:100%;border:1px solid rgba(108,124,144,.4);color:#44566c;display:flex;align-items:center;justify-content:center;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px}\n"] }]
|
|
133
133
|
}], ctorParameters: function () { return [{ type: i1.CommonFunctionService }, { type: i2.DialogService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { displayName: [{
|
|
134
134
|
type: Input
|
|
135
135
|
}], commentData: [{
|
|
@@ -143,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
143
143
|
}], actionComplete: [{
|
|
144
144
|
type: Output
|
|
145
145
|
}], addComment: [], deleteComment: [], addReply: [], adjustTextareaHeight: [] } });
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2NvbW1lbnRhcnkvaW5kZXguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2NvbW1lbnRhcnkvaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU07QUFDTixPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7QUFROUMsTUFBTSxPQUFPLHFCQUFxQjtJQUV2QjtJQUNDO0lBQ0E7SUFIVixZQUNTLEVBQXlCLEVBQ3hCLE1BQXFCLEVBQ3JCLEdBQXNCO1FBRnZCLE9BQUUsR0FBRixFQUFFLENBQXVCO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7SUFDN0IsQ0FBQztJQUVLLFdBQVcsQ0FBUztJQUNwQixXQUFXLEdBQW1CLEVBQUUsQ0FBQztJQUNqQyxjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUMsU0FBUztJQUNoQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxXQUFXO0lBQ3BDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFHNUIsY0FBYyxHQUFHLElBQUksWUFBWSxFQUk3QixDQUFDO0lBRUwsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUNoQixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUNwQixrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQztJQUMzQyxXQUFXLENBQUM7SUFDWixRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lB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QXFCO2tCQUxqQyxTQUFTOytCQUNFLGVBQWU7d0tBV2hCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdOLGNBQWM7c0JBRGIsTUFBTTtnQkFxQlAsVUFBVSxNQWtDVixhQUFhLE1BMEJiLFFBQVEsTUFxQlIsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8g57uE5Lu257G7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbW1vbkZ1bmN0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlL2NvbW1vbi1mdW5jdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZS9kaWFsb2cuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEZWJvdW5jZSB9IGZyb20gXCIuLi91dGlscy9kZWNvcmF0b3JcIjtcclxuaW1wb3J0IHsgTWVzc2FnZUdyb3VwIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1jb21tZW50YXJ5XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJzQ29tbWVudGFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY2Y6IENvbW1vbkZ1bmN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7fVxyXG5cclxuICBASW5wdXQoKSBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNvbW1lbnREYXRhOiBNZXNzYWdlR3JvdXBbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGVkaXRQZXJtaXNzaW9uID0gdHJ1ZTsgLy8gZWRpdOadg+mZkFxyXG4gIEBJbnB1dCgpIGRlbGV0ZVBlcm1pc3Npb24gPSB0cnVlOyAvLyBkZWxldGXmnYPpmZBcclxuICBASW5wdXQoKSBpc1JlYWRPbmx5ID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGFjdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBhY3Rpb246IFwiYWRkQ29tbWVudFwiIHwgXCJ1cGRhdGVDb21tZW50XCIgfCBcImRlbGV0ZUNvbW1lbnRcIiB8IFwicmVwbHlDb21tZW50XCI7XHJcbiAgICBkYXRhOiBhbnk7XHJcbiAgICBjYWxsYmFjazogKHJlc3VsdDogeyBtZXNzYWdlSWQ6IHN0cmluZyB9KSA9PiB2b2lkO1xyXG4gIH0+KCk7XHJcblxyXG4gIGNvbW1lbnRWYWwgPSBcIlwiO1xyXG4gIHJlcGx5VmFsID0gXCJcIjtcclxuICBlZGl0Q29tbWVudFZhbCA9IFwiXCI7XHJcbiAgZGF0ZVRpbWVQaXBlRm9ybWF0ID0gXCJkZC1NTU0teXl5eSBoaDptbTphXCI7XHJcbiAgdHJhbnNsYXRpb247XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdldEluZm8oKTtcclxuICB9XHJcblxyXG4gIGdldEluZm8oKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKTtcclxuICB9XHJcblxyXG4gIEBEZWJvdW5jZSgzMDApXHJcbiAgYWRkQ29tbWVudCgpIHtcclxuICAgIHRoaXMuYWN0aW9uQ29tcGxldGUuZW1pdCh7XHJcbiAgICAgIGFjdGlvbjogXCJhZGRDb21tZW50XCIsXHJcbiAgICAgIGRhdGE6IHsgaW5wdXRWYWx1ZTogdGhpcy5jb21tZW50VmFsIH0sXHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tZW50RGF0YS51bnNoaWZ0KHtcclxuICAgICAgICAgIG1lc3NhZ2VJZDogcmVzLm1lc3NhZ2VJZCxcclxuICAgICAgICAgIGNvbW1lbnRhcmllczogW10sXHJcbiAgICAgICAgICBvd25lck5hbWU6IHRoaXMuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICBsYXN0TW9kaWZpZWRPbjogRGF0ZS5ub3coKSxcclxuICAgICAgICAgIG1lc3NhZ2VCb2R5OiB0aGlzLmNvbW1lbnRWYWwsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jb21tZW50VmFsID0gXCJcIjtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZWRpdENvbW1lbnQoaXRlbSkge1xyXG4gICAgdGhpcy5lZGl0Q29tbWVudFZhbCA9IGl0ZW0ubWVzc2FnZUJvZHk7XHJcbiAgICBpdGVtLnNob3dDb21tZW50RWRpdCA9IHRydWU7XHJcbiAgfVxyXG4gIGFzeW5jIHVwZGF0ZUNvbW1lbnQoaXRlbSkge1xyXG4gICAgdGhpcy5hY3Rpb25Db21wbGV0ZS5lbWl0KHtcclxuICAgICAgYWN0aW9uOiBcInVwZGF0ZUNvbW1lbnRcIixcclxuICAgICAgZGF0YTogeyAuLi5pdGVtLCBpbnB1dFZhbHVlOiB0aGlzLmVkaXRDb21tZW50VmFsIH0sXHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaXRlbS5tZXNzYWdlQm9keSA9IHRoaXMuZWRpdENvbW1lbnRWYWw7XHJcbiAgICAgICAgaXRlbS5zaG93Q29tbWVudEVkaXQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQERlYm91bmNlKDMwMClcclxuICBkZWxldGVDb21tZW50KGl0ZW0pIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLnNob3dDb21tb25EaWxhb2coe1xyXG4gICAgICB0aXRsZTogXCJEZWxldGUgQ29tbWVudD9cIixcclxuICAgICAgZGVzY3JpcHRpb246IFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIENvbW1lbnQ/XCIsXHJcbiAgICAgIHNhdmVCdG5MYWJlbDogdGhpcy50cmFuc2xhdGlvbi5ERUxFVEUsXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmICghcmVzKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlkeCA9IHRoaXMuY29tbWVudERhdGEuZmluZEluZGV4KFxyXG4gICAgICAgIChlbGUpID0+IGVsZS5tZXNzYWdlSWQgPT09IGl0ZW0ubWVzc2FnZUlkXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmFjdGlvbkNvbXBsZXRlLmVtaXQoe1xyXG4gICAgICAgIGFjdGlvbjogXCJkZWxldGVDb21tZW50XCIsXHJcbiAgICAgICAgZGF0YTogaXRlbSxcclxuICAgICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb21tZW50RGF0YS5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIEBEZWJvdW5jZSgzMDApXHJcbiAgYWRkUmVwbHkoaXRlbSkge1xyXG4gICAgdGhpcy5hY3Rpb25Db21wbGV0ZS5lbWl0KHtcclxuICAgICAgYWN0aW9uOiBcInJlcGx5Q29tbWVudFwiLFxyXG4gICAgICBkYXRhOiB7IC4uLml0ZW0sIGlucHV0VmFsdWU6IHRoaXMucmVwbHlWYWwgfSxcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpdGVtLmNvbW1lbnRhcmllcy51bnNoaWZ0KHtcclxuICAgICAgICAgIG1lc3NhZ2VJZDogcmVzLm1lc3NhZ2VJZCxcclxuICAgICAgICAgIGNvbW1lbnRhcmllczogW10sXHJcbiAgICAgICAgICBvd25lck5hbWU6IHRoaXMuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICBsYXN0TW9kaWZpZWRPbjogRGF0ZS5ub3coKSxcclxuICAgICAgICAgIG1lc3NhZ2VCb2R5OiB0aGlzLnJlcGx5VmFsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucmVwbHlWYWwgPSBcIlwiO1xyXG4gICAgICAgIGl0ZW0uc2hvd1JlcGx5SW5wdXQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEBEZWJvdW5jZSgzMDApXHJcbiAgYWRqdXN0VGV4dGFyZWFIZWlnaHQoZSkge1xyXG4gICAgY29uc3QgdGV4dGFyZWEgPSBlLnRhcmdldDtcclxuICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9IFwiYXV0b1wiO1xyXG4gICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gdGV4dGFyZWEuc2Nyb2xsSGVpZ2h0ICsgXCJweFwiO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicnMtY29tbWVudGFyeS13cmFwXCI+XHJcbiAgPG5nLWNvbnRhaW5lclxyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29tbWVudEJveFRlbXBsYXRlXCJcclxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHR5cGU6ICdjb21tZW50JyB9XCJcclxuICA+PC9uZy1jb250YWluZXI+XHJcbiAgPGRpdiBjbGFzcz1cInJlcGx5LWJveFwiPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb21tZW50RGF0YVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicmVwbHlJdGVtVGVtcGxhdGVcIlxyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHR5cGU6ICdjb21tZW50JywgaXRlbTogaXRlbSB9XCJcclxuICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ViLXJlcGx5LWxpc3RcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgbGV0IHN1YiBvZiBpdGVtLmlzRXhwYW5kZWRcclxuICAgICAgICAgICAgICA/IGl0ZW0uY29tbWVudGFyaWVzXHJcbiAgICAgICAgICAgICAgOiBpdGVtLmNvbW1lbnRhcmllcy5zbGljZSgwLCAzKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJlcGx5SXRlbVRlbXBsYXRlXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHR5cGU6ICdzdWInLCBpdGVtOiBzdWIgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiZS1idG4gdGV4dFwiXHJcbiAgICAgICAgKm5nSWY9XCJpdGVtLmNvbW1lbnRhcmllcy5sZW5ndGggPiAzXCJcclxuICAgICAgICAoY2xpY2spPVwiaXRlbS5pc0V4cGFuZGVkID0gIWl0ZW0uaXNFeHBhbmRlZFwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiA4cHg7XCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7XHJcbiAgICAgICAgICBpdGVtLmlzRXhwYW5kZWRcclxuICAgICAgICAgICAgPyBcIkNvbGxhcHNlXCJcclxuICAgICAgICAgICAgOiBcIlZpZXcgQWxsIFwiICsgaXRlbS5jb21tZW50YXJpZXMubGVuZ3RoICsgXCIgUmVwbGllc1wiXHJcbiAgICAgICAgfX1cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICBjbGFzcz1cImFycm93XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgY29sbGFwc2U6IGl0ZW0uaXNFeHBhbmRlZCB9XCJcclxuICAgICAgICAgIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWcvZHJvcGRvd24tYXJyb3cuc3ZnXCJcclxuICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbW1lbnRCb3hUZW1wbGF0ZSBsZXQtdHlwZT1cInR5cGVcIiBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICA8ZGl2IGNsYXNzPVwiY29tbWVudC1ib3hcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWlucHV0LXdyYXBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF2YXRhclwiICpuZ0lmPVwidHlwZSAhPT0gJ2VkaXRDb21tZW50J1wiPlxyXG4gICAgICAgIHt7IGNmLnJ0bihkaXNwbGF5TmFtZSkgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ2NvbW1lbnQnXCJcclxuICAgICAgICBjbGFzcz1cImUtaW5wdXRcIlxyXG4gICAgICAgIHJvd3M9XCIyXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1lbnRWYWxcIlxyXG4gICAgICAgIChpbnB1dCk9XCJhZGp1c3RUZXh0YXJlYUhlaWdodCgkZXZlbnQpXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWFkT25seSB8fCAhZWRpdFBlcm1pc3Npb25cIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiV3JpdGUgeW91ciBjb21tZW50Li4uXCJcclxuICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ3JlcGx5J1wiXHJcbiAgICAgICAgY2xhc3M9XCJlLWlucHV0XCJcclxuICAgICAgICByb3dzPVwiMlwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJyZXBseVZhbFwiXHJcbiAgICAgICAgKGlucHV0KT1cImFkanVzdFRleHRhcmVhSGVpZ2h0KCRldmVudClcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiV3JpdGUgeW91ciBjb21tZW50Li4uXCJcclxuICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ2VkaXRDb21tZW50J1wiXHJcbiAgICAgICAgY2xhc3M9XCJlLWlucHV0XCJcclxuICAgICAgICByb3dzPVwiMlwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0Q29tbWVudFZhbFwiXHJcbiAgICAgICAgKGlucHV0KT1cImFkanVzdFRleHRhcmVhSGVpZ2h0KCRldmVudClcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiV3JpdGUgeW91ciBjb21tZW50Li4uXCJcclxuICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJidG4td3JhcFwiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnY29tbWVudCdcIlxyXG4gICAgICAgIGNsYXNzPVwiZS1idG4gZS1wcmltYXJ5IHNtYWxsXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiY29tbWVudFZhbCA9PT0gJyd8fCBpc1JlYWRPbmx5IHx8ICFlZGl0UGVybWlzc2lvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFkZENvbW1lbnQoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyB0cmFuc2xhdGlvbi5DT01NRU5UIHx8IFwiLkNPTU1FTlRcIiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICdyZXBseSdcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImUtYnRuIHNtYWxsXCJcclxuICAgICAgICAgIChjbGljayk9XCJpdGVtLnNob3dSZXBseUlucHV0ID0gZmFsc2U7IHJlcGx5VmFsID0gJydcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHRyYW5zbGF0aW9uLkNBTkNFTCB8fCBcIi5DQU5DRUxcIiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiZS1idG4gZS1wcmltYXJ5IHNtYWxsXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXBseVZhbCA9PT0gJydcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImFkZFJlcGx5KGl0ZW0pXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyB0cmFuc2xhdGlvbi5SRVBMWSB8fCBcIi5SRVBMWVwiIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gJ2VkaXRDb21tZW50J1wiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJlLWJ0biB0ZXh0XCIgKGNsaWNrKT1cIml0ZW0uc2hvd0NvbW1lbnRFZGl0ID0gZmFsc2VcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vYXNzZXRzL2ltZy9jb21tZW50LWNhbmNlbC5zdmdcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiZS1idG4gdGV4dFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZWRpdENvbW1lbnRWYWwgPT09ICcnXCJcclxuICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVDb21tZW50KGl0ZW0pXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWcvY29tbWVudC1jaGVjay5zdmdcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3JlcGx5SXRlbVRlbXBsYXRlIGxldC10eXBlPVwidHlwZVwiIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZXBseS1pdGVtXCIgW25nQ2xhc3NdPVwieyBjb21tZW50OiB0eXBlID09PSAnY29tbWVudCcgfVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF2YXRhclwiPlxyXG4gICAgICB7eyBjZi5ydG4oaXRlbS5vd25lck5hbWUpIH19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJvd25lci13cmFwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJvd25lci1pbmZvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5cclxuICAgICAgICAgIHt7IGl0ZW0ub3duZXJOYW1lIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVcIj5cclxuICAgICAgICAgIHt7IGl0ZW0ubGFzdE1vZGlmaWVkT24gfCBkYXRlIDogZGF0ZVRpbWVQaXBlRm9ybWF0IH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS13cmFwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIiAqbmdJZj1cIiFpdGVtLnNob3dDb21tZW50RWRpdFwiPlxyXG4gICAgICAgICAge3sgaXRlbS5tZXNzYWdlQm9keSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0lmPVwiaXRlbS5zaG93Q29tbWVudEVkaXRcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29tbWVudEJveFRlbXBsYXRlXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHR5cGU6ICdlZGl0Q29tbWVudCcsIGl0ZW06IGl0ZW0gfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgdHlwZSA9PT0gJ2NvbW1lbnQnICYmICFpdGVtLnNob3dSZXBseUlucHV0ICYmICFpdGVtLnNob3dDb21tZW50RWRpdFxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJlLWJ0biB0ZXh0XCJcclxuICAgICAgICAoY2xpY2spPVwiaXRlbS5zaG93UmVwbHlJbnB1dCA9IHRydWVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5IHx8ICFlZGl0UGVybWlzc2lvblwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyB0cmFuc2xhdGlvbi5SRVBMWSB8fCBcIi5SRVBMWVwiIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJpdGVtLnNob3dSZXBseUlucHV0XCJcclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb21tZW50Qm94VGVtcGxhdGVcIlxyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHR5cGU6ICdyZXBseScsIGl0ZW06IGl0ZW0gfVwiXHJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxycy1ncmlkLWFjdGlvbiAqbmdJZj1cInR5cGUgPT09ICdjb21tZW50J1wiPlxyXG4gICAgICAgIDxycy1ncmlkLWFjdGlvbi1pdGVtXHJcbiAgICAgICAgICBpbWFnZT1cIkVkaXRcIlxyXG4gICAgICAgICAgW3RleHRdPVwidHJhbnNsYXRpb24uRURJVFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWFkT25seSB8fCAhZWRpdFBlcm1pc3Npb25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImVkaXRDb21tZW50KGl0ZW0pXCJcclxuICAgICAgICA+PC9ycy1ncmlkLWFjdGlvbi1pdGVtPlxyXG4gICAgICAgIDxycy1ncmlkLWFjdGlvbi1pdGVtXHJcbiAgICAgICAgICBpbWFnZT1cIkRlbGV0ZVwiXHJcbiAgICAgICAgICBbdGV4dF09XCJ0cmFuc2xhdGlvbi5ERUxFVEVcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVhZE9ubHkgfHwgIWRlbGV0ZVBlcm1pc3Npb25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUNvbW1lbnQoaXRlbSlcIlxyXG4gICAgICAgID48L3JzLWdyaWQtYWN0aW9uLWl0ZW0+XHJcbiAgICAgIDwvcnMtZ3JpZC1hY3Rpb24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2NvbW1lbnRhcnkvaW5kZXguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2NvbW1lbnRhcnkvaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU07QUFDTixPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7QUFROUMsTUFBTSxPQUFPLHFCQUFxQjtJQUV2QjtJQUNDO0lBQ0E7SUFIVixZQUNTLEVBQXlCLEVBQ3hCLE1BQXFCLEVBQ3JCLEdBQXNCO1FBRnZCLE9BQUUsR0FBRixFQUFFLENBQXVCO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7SUFDN0IsQ0FBQztJQUVLLFdBQVcsQ0FBUztJQUNwQixXQUFXLEdBQW1CLEVBQUUsQ0FBQztJQUNqQyxjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUMsU0FBUztJQUNoQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxXQUFXO0lBQ3BDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFHNUIsY0FBYyxHQUFHLElBQUksWUFBWSxFQUk3QixDQUFDO0lBRUwsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUNoQixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUNwQixrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQztJQUMzQyxXQUFXLENBQUM7SUFDWixRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lB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QXFCO2tCQUxqQyxTQUFTOytCQUNFLGVBQWU7d0tBV2hCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdOLGNBQWM7c0JBRGIsTUFBTTtnQkFxQlAsVUFBVSxNQWtDVixhQUFhLE1BMEJiLFFBQVEsTUFxQlIsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8g57uE5Lu257G7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbW1vbkZ1bmN0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlL2NvbW1vbi1mdW5jdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZS9kaWFsb2cuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEZWJvdW5jZSB9IGZyb20gXCIuLi91dGlscy9kZWNvcmF0b3JcIjtcclxuaW1wb3J0IHsgTWVzc2FnZUdyb3VwIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1jb21tZW50YXJ5XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJzQ29tbWVudGFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY2Y6IENvbW1vbkZ1bmN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7fVxyXG5cclxuICBASW5wdXQoKSBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNvbW1lbnREYXRhOiBNZXNzYWdlR3JvdXBbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGVkaXRQZXJtaXNzaW9uID0gdHJ1ZTsgLy8gZWRpdOadg+mZkFxyXG4gIEBJbnB1dCgpIGRlbGV0ZVBlcm1pc3Npb24gPSB0cnVlOyAvLyBkZWxldGXmnYPpmZBcclxuICBASW5wdXQoKSBpc1JlYWRPbmx5ID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGFjdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBhY3Rpb246IFwiYWRkQ29tbWVudFwiIHwgXCJ1cGRhdGVDb21tZW50XCIgfCBcImRlbGV0ZUNvbW1lbnRcIiB8IFwicmVwbHlDb21tZW50XCI7XHJcbiAgICBkYXRhOiBhbnk7XHJcbiAgICBjYWxsYmFjazogKHJlc3VsdDogeyBtZXNzYWdlSWQ6IHN0cmluZyB9KSA9PiB2b2lkO1xyXG4gIH0+KCk7XHJcblxyXG4gIGNvbW1lbnRWYWwgPSBcIlwiO1xyXG4gIHJlcGx5VmFsID0gXCJcIjtcclxuICBlZGl0Q29tbWVudFZhbCA9IFwiXCI7XHJcbiAgZGF0ZVRpbWVQaXBlRm9ybWF0ID0gXCJkZC1NTU0teXl5eSBoaDptbTphXCI7XHJcbiAgdHJhbnNsYXRpb247XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdldEluZm8oKTtcclxuICB9XHJcblxyXG4gIGdldEluZm8oKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKTtcclxuICB9XHJcblxyXG4gIEBEZWJvdW5jZSgzMDApXHJcbiAgYWRkQ29tbWVudCgpIHtcclxuICAgIHRoaXMuYWN0aW9uQ29tcGxldGUuZW1pdCh7XHJcbiAgICAgIGFjdGlvbjogXCJhZGRDb21tZW50XCIsXHJcbiAgICAgIGRhdGE6IHsgaW5wdXRWYWx1ZTogdGhpcy5jb21tZW50VmFsIH0sXHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tZW50RGF0YS51bnNoaWZ0KHtcclxuICAgICAgICAgIG1lc3NhZ2VJZDogcmVzLm1lc3NhZ2VJZCxcclxuICAgICAgICAgIGNvbW1lbnRhcmllczogW10sXHJcbiAgICAgICAgICBvd25lck5hbWU6IHRoaXMuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICBsYXN0TW9kaWZpZWRPbjogRGF0ZS5ub3coKSxcclxuICAgICAgICAgIG1lc3NhZ2VCb2R5OiB0aGlzLmNvbW1lbnRWYWwsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jb21tZW50VmFsID0gXCJcIjtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZWRpdENvbW1lbnQoaXRlbSkge1xyXG4gICAgdGhpcy5lZGl0Q29tbWVudFZhbCA9IGl0ZW0ubWVzc2FnZUJvZHk7XHJcbiAgICBpdGVtLnNob3dDb21tZW50RWRpdCA9IHRydWU7XHJcbiAgfVxyXG4gIGFzeW5jIHVwZGF0ZUNvbW1lbnQoaXRlbSkge1xyXG4gICAgdGhpcy5hY3Rpb25Db21wbGV0ZS5lbWl0KHtcclxuICAgICAgYWN0aW9uOiBcInVwZGF0ZUNvbW1lbnRcIixcclxuICAgICAgZGF0YTogeyAuLi5pdGVtLCBpbnB1dFZhbHVlOiB0aGlzLmVkaXRDb21tZW50VmFsIH0sXHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaXRlbS5tZXNzYWdlQm9keSA9IHRoaXMuZWRpdENvbW1lbnRWYWw7XHJcbiAgICAgICAgaXRlbS5zaG93Q29tbWVudEVkaXQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQERlYm91bmNlKDMwMClcclxuICBkZWxldGVDb21tZW50KGl0ZW0pIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLnNob3dDb21tb25EaWxhb2coe1xyXG4gICAgICB0aXRsZTogXCJEZWxldGUgQ29tbWVudD9cIixcclxuICAgICAgZGVzY3JpcHRpb246IFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIENvbW1lbnQ/XCIsXHJcbiAgICAgIHNhdmVCdG5MYWJlbDogdGhpcy50cmFuc2xhdGlvbi5ERUxFVEUsXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmICghcmVzKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlkeCA9IHRoaXMuY29tbWVudERhdGEuZmluZEluZGV4KFxyXG4gICAgICAgIChlbGUpID0+IGVsZS5tZXNzYWdlSWQgPT09IGl0ZW0ubWVzc2FnZUlkXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmFjdGlvbkNvbXBsZXRlLmVtaXQoe1xyXG4gICAgICAgIGFjdGlvbjogXCJkZWxldGVDb21tZW50XCIsXHJcbiAgICAgICAgZGF0YTogaXRlbSxcclxuICAgICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb21tZW50RGF0YS5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIEBEZWJvdW5jZSgzMDApXHJcbiAgYWRkUmVwbHkoaXRlbSkge1xyXG4gICAgdGhpcy5hY3Rpb25Db21wbGV0ZS5lbWl0KHtcclxuICAgICAgYWN0aW9uOiBcInJlcGx5Q29tbWVudFwiLFxyXG4gICAgICBkYXRhOiB7IC4uLml0ZW0sIGlucHV0VmFsdWU6IHRoaXMucmVwbHlWYWwgfSxcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpdGVtLmNvbW1lbnRhcmllcy51bnNoaWZ0KHtcclxuICAgICAgICAgIG1lc3NhZ2VJZDogcmVzLm1lc3NhZ2VJZCxcclxuICAgICAgICAgIGNvbW1lbnRhcmllczogW10sXHJcbiAgICAgICAgICBvd25lck5hbWU6IHRoaXMuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICBsYXN0TW9kaWZpZWRPbjogRGF0ZS5ub3coKSxcclxuICAgICAgICAgIG1lc3NhZ2VCb2R5OiB0aGlzLnJlcGx5VmFsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucmVwbHlWYWwgPSBcIlwiO1xyXG4gICAgICAgIGl0ZW0uc2hvd1JlcGx5SW5wdXQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEBEZWJvdW5jZSgzMDApXHJcbiAgYWRqdXN0VGV4dGFyZWFIZWlnaHQoZSkge1xyXG4gICAgY29uc3QgdGV4dGFyZWEgPSBlLnRhcmdldDtcclxuICAgIHRleHRhcmVhLnN0eWxlLm1pbkhlaWdodCA9IFwiYXV0b1wiO1xyXG4gICAgdGV4dGFyZWEuc3R5bGUubWluSGVpZ2h0ID0gdGV4dGFyZWEuc2Nyb2xsSGVpZ2h0ICsgXCJweFwiO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicnMtY29tbWVudGFyeS13cmFwXCI+XHJcbiAgPG5nLWNvbnRhaW5lclxyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29tbWVudEJveFRlbXBsYXRlXCJcclxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHR5cGU6ICdjb21tZW50JyB9XCJcclxuICA+PC9uZy1jb250YWluZXI+XHJcbiAgPGRpdiBjbGFzcz1cInJlcGx5LWJveFwiPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb21tZW50RGF0YVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicmVwbHlJdGVtVGVtcGxhdGVcIlxyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHR5cGU6ICdjb21tZW50JywgaXRlbTogaXRlbSB9XCJcclxuICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ViLXJlcGx5LWxpc3RcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgbGV0IHN1YiBvZiBpdGVtLmlzRXhwYW5kZWRcclxuICAgICAgICAgICAgICA/IGl0ZW0uY29tbWVudGFyaWVzXHJcbiAgICAgICAgICAgICAgOiBpdGVtLmNvbW1lbnRhcmllcy5zbGljZSgwLCAzKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJlcGx5SXRlbVRlbXBsYXRlXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHR5cGU6ICdzdWInLCBpdGVtOiBzdWIgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiZS1idG4gdGV4dFwiXHJcbiAgICAgICAgKm5nSWY9XCJpdGVtLmNvbW1lbnRhcmllcy5sZW5ndGggPiAzXCJcclxuICAgICAgICAoY2xpY2spPVwiaXRlbS5pc0V4cGFuZGVkID0gIWl0ZW0uaXNFeHBhbmRlZFwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiA4cHg7XCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7XHJcbiAgICAgICAgICBpdGVtLmlzRXhwYW5kZWRcclxuICAgICAgICAgICAgPyBcIkNvbGxhcHNlXCJcclxuICAgICAgICAgICAgOiBcIlZpZXcgQWxsIFwiICsgaXRlbS5jb21tZW50YXJpZXMubGVuZ3RoICsgXCIgUmVwbGllc1wiXHJcbiAgICAgICAgfX1cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICBjbGFzcz1cImFycm93XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgY29sbGFwc2U6IGl0ZW0uaXNFeHBhbmRlZCB9XCJcclxuICAgICAgICAgIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWcvZHJvcGRvd24tYXJyb3cuc3ZnXCJcclxuICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbW1lbnRCb3hUZW1wbGF0ZSBsZXQtdHlwZT1cInR5cGVcIiBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICA8ZGl2IGNsYXNzPVwiY29tbWVudC1ib3hcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWlucHV0LXdyYXBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF2YXRhclwiICpuZ0lmPVwidHlwZSAhPT0gJ2VkaXRDb21tZW50J1wiPlxyXG4gICAgICAgIHt7IGNmLnJ0bihkaXNwbGF5TmFtZSkgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ2NvbW1lbnQnXCJcclxuICAgICAgICBjbGFzcz1cImUtaW5wdXRcIlxyXG4gICAgICAgIHJvd3M9XCIzXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1lbnRWYWxcIlxyXG4gICAgICAgIChmb2N1cyk9XCJhZGp1c3RUZXh0YXJlYUhlaWdodCgkZXZlbnQpXCJcclxuICAgICAgICAoaW5wdXQpPVwiYWRqdXN0VGV4dGFyZWFIZWlnaHQoJGV2ZW50KVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVhZE9ubHkgfHwgIWVkaXRQZXJtaXNzaW9uXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIldyaXRlIHlvdXIgY29tbWVudC4uLlwiXHJcbiAgICAgID48L3RleHRhcmVhPlxyXG4gICAgICA8dGV4dGFyZWFcclxuICAgICAgICAqbmdJZj1cInR5cGUgPT09ICdyZXBseSdcIlxyXG4gICAgICAgIGNsYXNzPVwiZS1pbnB1dFwiXHJcbiAgICAgICAgcm93cz1cIjNcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwicmVwbHlWYWxcIlxyXG4gICAgICAgIChmb2N1cyk9XCJhZGp1c3RUZXh0YXJlYUhlaWdodCgkZXZlbnQpXCJcclxuICAgICAgICAoaW5wdXQpPVwiYWRqdXN0VGV4dGFyZWFIZWlnaHQoJGV2ZW50KVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJXcml0ZSB5b3VyIGNvbW1lbnQuLi5cIlxyXG4gICAgICA+PC90ZXh0YXJlYT5cclxuICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnZWRpdENvbW1lbnQnXCJcclxuICAgICAgICBjbGFzcz1cImUtaW5wdXRcIlxyXG4gICAgICAgIHJvd3M9XCIzXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRDb21tZW50VmFsXCJcclxuICAgICAgICAoZm9jdXMpPVwiYWRqdXN0VGV4dGFyZWFIZWlnaHQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGlucHV0KT1cImFkanVzdFRleHRhcmVhSGVpZ2h0KCRldmVudClcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiV3JpdGUgeW91ciBjb21tZW50Li4uXCJcclxuICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJidG4td3JhcFwiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJ0eXBlID09PSAnY29tbWVudCdcIlxyXG4gICAgICAgIGNsYXNzPVwiZS1idG4gZS1wcmltYXJ5IHNtYWxsXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiY29tbWVudFZhbCA9PT0gJyd8fCBpc1JlYWRPbmx5IHx8ICFlZGl0UGVybWlzc2lvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFkZENvbW1lbnQoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyB0cmFuc2xhdGlvbi5DT01NRU5UIHx8IFwiLkNPTU1FTlRcIiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICdyZXBseSdcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImUtYnRuIHNtYWxsXCJcclxuICAgICAgICAgIChjbGljayk9XCJpdGVtLnNob3dSZXBseUlucHV0ID0gZmFsc2U7IHJlcGx5VmFsID0gJydcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHRyYW5zbGF0aW9uLkNBTkNFTCB8fCBcIi5DQU5DRUxcIiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiZS1idG4gZS1wcmltYXJ5IHNtYWxsXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXBseVZhbCA9PT0gJydcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImFkZFJlcGx5KGl0ZW0pXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyB0cmFuc2xhdGlvbi5SRVBMWSB8fCBcIi5SRVBMWVwiIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gJ2VkaXRDb21tZW50J1wiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJlLWJ0biB0ZXh0XCIgKGNsaWNrKT1cIml0ZW0uc2hvd0NvbW1lbnRFZGl0ID0gZmFsc2VcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vYXNzZXRzL2ltZy9jb21tZW50LWNhbmNlbC5zdmdcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiZS1idG4gdGV4dFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZWRpdENvbW1lbnRWYWwgPT09ICcnXCJcclxuICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVDb21tZW50KGl0ZW0pXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWcvY29tbWVudC1jaGVjay5zdmdcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3JlcGx5SXRlbVRlbXBsYXRlIGxldC10eXBlPVwidHlwZVwiIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZXBseS1pdGVtXCIgW25nQ2xhc3NdPVwieyBjb21tZW50OiB0eXBlID09PSAnY29tbWVudCcgfVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF2YXRhclwiPlxyXG4gICAgICB7eyBjZi5ydG4oaXRlbS5vd25lck5hbWUpIH19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJvd25lci13cmFwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJvd25lci1pbmZvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5cclxuICAgICAgICAgIHt7IGl0ZW0ub3duZXJOYW1lIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVcIj5cclxuICAgICAgICAgIHt7IGl0ZW0ubGFzdE1vZGlmaWVkT24gfCBkYXRlIDogZGF0ZVRpbWVQaXBlRm9ybWF0IH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS13cmFwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIiAqbmdJZj1cIiFpdGVtLnNob3dDb21tZW50RWRpdFwiPlxyXG4gICAgICAgICAge3sgaXRlbS5tZXNzYWdlQm9keSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0lmPVwiaXRlbS5zaG93Q29tbWVudEVkaXRcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29tbWVudEJveFRlbXBsYXRlXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHR5cGU6ICdlZGl0Q29tbWVudCcsIGl0ZW06IGl0ZW0gfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgdHlwZSA9PT0gJ2NvbW1lbnQnICYmICFpdGVtLnNob3dSZXBseUlucHV0ICYmICFpdGVtLnNob3dDb21tZW50RWRpdFxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJlLWJ0biB0ZXh0XCJcclxuICAgICAgICAoY2xpY2spPVwiaXRlbS5zaG93UmVwbHlJbnB1dCA9IHRydWVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5IHx8ICFlZGl0UGVybWlzc2lvblwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyB0cmFuc2xhdGlvbi5SRVBMWSB8fCBcIi5SRVBMWVwiIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJpdGVtLnNob3dSZXBseUlucHV0XCJcclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb21tZW50Qm94VGVtcGxhdGVcIlxyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHR5cGU6ICdyZXBseScsIGl0ZW06IGl0ZW0gfVwiXHJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxycy1ncmlkLWFjdGlvbiAqbmdJZj1cInR5cGUgPT09ICdjb21tZW50J1wiPlxyXG4gICAgICAgIDxycy1ncmlkLWFjdGlvbi1pdGVtXHJcbiAgICAgICAgICBpbWFnZT1cIkVkaXRcIlxyXG4gICAgICAgICAgW3RleHRdPVwidHJhbnNsYXRpb24uRURJVFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWFkT25seSB8fCAhZWRpdFBlcm1pc3Npb25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImVkaXRDb21tZW50KGl0ZW0pXCJcclxuICAgICAgICA+PC9ycy1ncmlkLWFjdGlvbi1pdGVtPlxyXG4gICAgICAgIDxycy1ncmlkLWFjdGlvbi1pdGVtXHJcbiAgICAgICAgICBpbWFnZT1cIkRlbGV0ZVwiXHJcbiAgICAgICAgICBbdGV4dF09XCJ0cmFuc2xhdGlvbi5ERUxFVEVcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVhZE9ubHkgfHwgIWRlbGV0ZVBlcm1pc3Npb25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUNvbW1lbnQoaXRlbSlcIlxyXG4gICAgICAgID48L3JzLWdyaWQtYWN0aW9uLWl0ZW0+XHJcbiAgICAgIDwvcnMtZ3JpZC1hY3Rpb24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
@@ -1320,11 +1320,11 @@ class RsCommentaryComponent {
|
|
|
1320
1320
|
}
|
|
1321
1321
|
adjustTextareaHeight(e) {
|
|
1322
1322
|
const textarea = e.target;
|
|
1323
|
-
textarea.style.
|
|
1324
|
-
textarea.style.
|
|
1323
|
+
textarea.style.minHeight = "auto";
|
|
1324
|
+
textarea.style.minHeight = textarea.scrollHeight + "px";
|
|
1325
1325
|
}
|
|
1326
1326
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RsCommentaryComponent, deps: [{ token: CommonFunctionService }, { token: DialogService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1327
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RsCommentaryComponent, selector: "rs-commentary", inputs: { displayName: "displayName", commentData: "commentData", editPermission: "editPermission", deletePermission: "deletePermission", isReadOnly: "isReadOnly" }, outputs: { actionComplete: "actionComplete" }, ngImport: i0, template: "<div class=\"rs-commentary-wrap\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment' }\"\r\n ></ng-container>\r\n <div class=\"reply-box\">\r\n <div *ngFor=\"let item of commentData\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment', item: item }\"\r\n ></ng-container>\r\n <div class=\"sub-reply-list\">\r\n <ng-container\r\n *ngFor=\"\r\n let sub of item.isExpanded\r\n ? item.commentaries\r\n : item.commentaries.slice(0, 3)\r\n \"\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'sub', item: sub }\"\r\n ></ng-container>\r\n </div>\r\n <button\r\n class=\"e-btn text\"\r\n *ngIf=\"item.commentaries.length > 3\"\r\n (click)=\"item.isExpanded = !item.isExpanded\"\r\n style=\"margin-bottom: 8px;\"\r\n >\r\n {{\r\n item.isExpanded\r\n ? \"Collapse\"\r\n : \"View All \" + item.commentaries.length + \" Replies\"\r\n }}\r\n <img\r\n class=\"arrow\"\r\n [ngClass]=\"{ collapse: item.isExpanded }\"\r\n src=\"../../assets/img/dropdown-arrow.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #commentBoxTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"comment-box\">\r\n <div class=\"comment-input-wrap\">\r\n <div class=\"avatar\" *ngIf=\"type !== 'editComment'\">\r\n {{ cf.rtn(displayName) }}\r\n </div>\r\n <textarea\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-input\"\r\n rows=\"2\"\r\n [(ngModel)]=\"commentVal\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n <textarea\r\n *ngIf=\"type === 'reply'\"\r\n class=\"e-input\"\r\n rows=\"2\"\r\n [(ngModel)]=\"replyVal\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n <textarea\r\n *ngIf=\"type === 'editComment'\"\r\n class=\"e-input\"\r\n rows=\"2\"\r\n [(ngModel)]=\"editCommentVal\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n </div>\r\n <div class=\"btn-wrap\">\r\n <button\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-btn e-primary small\"\r\n [disabled]=\"commentVal === ''|| isReadOnly || !editPermission\"\r\n (click)=\"addComment()\"\r\n >\r\n {{ translation.COMMENT || \".COMMENT\" }}\r\n </button>\r\n <ng-container *ngIf=\"type === 'reply'\">\r\n <button\r\n class=\"e-btn small\"\r\n (click)=\"item.showReplyInput = false; replyVal = ''\"\r\n >\r\n {{ translation.CANCEL || \".CANCEL\" }}\r\n </button>\r\n <button\r\n class=\"e-btn e-primary small\"\r\n [disabled]=\"replyVal === ''\"\r\n (click)=\"addReply(item)\"\r\n >\r\n {{ translation.REPLY || \".REPLY\" }}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"type === 'editComment'\">\r\n <button class=\"e-btn text\" (click)=\"item.showCommentEdit = false\">\r\n <img src=\"../../assets/img/comment-cancel.svg\" alt=\"\" />\r\n </button>\r\n <button\r\n class=\"e-btn text\"\r\n [disabled]=\"editCommentVal === ''\"\r\n (click)=\"updateComment(item)\"\r\n >\r\n <img src=\"../../assets/img/comment-check.svg\" alt=\"\" />\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #replyItemTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"reply-item\" [ngClass]=\"{ comment: type === 'comment' }\">\r\n <div class=\"avatar\">\r\n {{ cf.rtn(item.ownerName) }}\r\n </div>\r\n <div class=\"owner-wrap\">\r\n <div class=\"owner-info\">\r\n <div class=\"name\">\r\n {{ item.ownerName }}\r\n </div>\r\n <div class=\"time\">\r\n {{ item.lastModifiedOn | date : dateTimePipeFormat }}\r\n </div>\r\n </div>\r\n <div class=\"message-wrap\">\r\n <div class=\"message\" *ngIf=\"!item.showCommentEdit\">\r\n {{ item.messageBody }}\r\n </div>\r\n <ng-container\r\n *ngIf=\"item.showCommentEdit\"\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'editComment', item: item }\"\r\n ></ng-container>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"\r\n type === 'comment' && !item.showReplyInput && !item.showCommentEdit\r\n \"\r\n class=\"e-btn text\"\r\n (click)=\"item.showReplyInput = true\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n >\r\n {{ translation.REPLY || \".REPLY\" }}\r\n </button>\r\n <ng-container\r\n *ngIf=\"item.showReplyInput\"\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'reply', item: item }\"\r\n ></ng-container>\r\n\r\n <rs-grid-action *ngIf=\"type === 'comment'\">\r\n <rs-grid-action-item\r\n image=\"Edit\"\r\n [text]=\"translation.EDIT\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n (click)=\"editComment(item)\"\r\n ></rs-grid-action-item>\r\n <rs-grid-action-item\r\n image=\"Delete\"\r\n [text]=\"translation.DELETE\"\r\n [disabled]=\"isReadOnly || !deletePermission\"\r\n (click)=\"deleteComment(item)\"\r\n ></rs-grid-action-item>\r\n </rs-grid-action>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".rs-commentary-wrap{width:100%;height:100%;padding:32px;display:flex;flex-direction:column}.rs-commentary-wrap .comment-box{width:100%}.rs-commentary-wrap .comment-box .comment-input-wrap{margin-bottom:12px;display:flex;gap:12px}.rs-commentary-wrap .comment-box .comment-input-wrap .e-input{flex:1;width:0;height:44px}.rs-commentary-wrap .comment-box .btn-wrap{display:flex;justify-content:flex-end;gap:12px}.rs-commentary-wrap .comment-box .btn-wrap .e-btn.text{padding:4px}.rs-commentary-wrap .reply-box{height:0;flex:1;overflow:auto;margin-top:16px;margin-right:-32px;padding-right:32px}.rs-commentary-wrap .reply-box .sub-reply-list{padding-left:40px}.rs-commentary-wrap .reply-box .e-btn.text{padding:0!important;min-width:auto;height:auto;color:#6c7c90!important}.rs-commentary-wrap .reply-box .e-btn.text:hover{background:transparent!important;color:#1364b3!important}.rs-commentary-wrap .reply-box .e-btn.text:focus{background:transparent!important;color:#6c7c90!important}.rs-commentary-wrap .reply-box .arrow.collapse{transform:rotate(180deg)}.rs-commentary-wrap .reply-box .reply-item{display:flex;gap:12px;padding:12px 0}.rs-commentary-wrap .reply-box .reply-item.comment{border-top:1px solid #eaedf0}.rs-commentary-wrap .reply-box .reply-item.comment:hover{background-color:#f6faff}.rs-commentary-wrap .reply-box .reply-item.comment:hover rs-grid-action{display:block}.rs-commentary-wrap .reply-box .reply-item rs-grid-action{display:none;position:absolute;cursor:pointer;top:-4px;right:8px}.rs-commentary-wrap .reply-box .owner-wrap{flex:1;width:0;position:relative}.rs-commentary-wrap .reply-box .owner-wrap .owner-info{display:flex;align-items:center;gap:12px}.rs-commentary-wrap .reply-box .owner-wrap .owner-info .name{color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:700;line-height:14px}.rs-commentary-wrap .reply-box .owner-wrap .owner-info .time{color:#6c7c90;font-family:Arial;font-size:10px;font-style:normal;font-weight:400;line-height:12px}.rs-commentary-wrap .reply-box .owner-wrap .message-wrap{padding:8px 0}.rs-commentary-wrap .reply-box .owner-wrap .message-wrap .message{color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.rs-commentary-wrap .avatar{width:32px;height:32px;border-radius:100%;border:1px solid rgba(108,124,144,.4);color:#44566c;display:flex;align-items:center;justify-content:center;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$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: i2$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: GridActionComponent, selector: "rs-grid-action" }, { kind: "component", type: GridActionItemComponent, selector: "rs-grid-action-item", inputs: ["image", "text", "disabled"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
|
|
1327
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RsCommentaryComponent, selector: "rs-commentary", inputs: { displayName: "displayName", commentData: "commentData", editPermission: "editPermission", deletePermission: "deletePermission", isReadOnly: "isReadOnly" }, outputs: { actionComplete: "actionComplete" }, ngImport: i0, template: "<div class=\"rs-commentary-wrap\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment' }\"\r\n ></ng-container>\r\n <div class=\"reply-box\">\r\n <div *ngFor=\"let item of commentData\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment', item: item }\"\r\n ></ng-container>\r\n <div class=\"sub-reply-list\">\r\n <ng-container\r\n *ngFor=\"\r\n let sub of item.isExpanded\r\n ? item.commentaries\r\n : item.commentaries.slice(0, 3)\r\n \"\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'sub', item: sub }\"\r\n ></ng-container>\r\n </div>\r\n <button\r\n class=\"e-btn text\"\r\n *ngIf=\"item.commentaries.length > 3\"\r\n (click)=\"item.isExpanded = !item.isExpanded\"\r\n style=\"margin-bottom: 8px;\"\r\n >\r\n {{\r\n item.isExpanded\r\n ? \"Collapse\"\r\n : \"View All \" + item.commentaries.length + \" Replies\"\r\n }}\r\n <img\r\n class=\"arrow\"\r\n [ngClass]=\"{ collapse: item.isExpanded }\"\r\n src=\"../../assets/img/dropdown-arrow.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #commentBoxTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"comment-box\">\r\n <div class=\"comment-input-wrap\">\r\n <div class=\"avatar\" *ngIf=\"type !== 'editComment'\">\r\n {{ cf.rtn(displayName) }}\r\n </div>\r\n <textarea\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-input\"\r\n rows=\"3\"\r\n [(ngModel)]=\"commentVal\"\r\n (focus)=\"adjustTextareaHeight($event)\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n <textarea\r\n *ngIf=\"type === 'reply'\"\r\n class=\"e-input\"\r\n rows=\"3\"\r\n [(ngModel)]=\"replyVal\"\r\n (focus)=\"adjustTextareaHeight($event)\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n <textarea\r\n *ngIf=\"type === 'editComment'\"\r\n class=\"e-input\"\r\n rows=\"3\"\r\n [(ngModel)]=\"editCommentVal\"\r\n (focus)=\"adjustTextareaHeight($event)\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n </div>\r\n <div class=\"btn-wrap\">\r\n <button\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-btn e-primary small\"\r\n [disabled]=\"commentVal === ''|| isReadOnly || !editPermission\"\r\n (click)=\"addComment()\"\r\n >\r\n {{ translation.COMMENT || \".COMMENT\" }}\r\n </button>\r\n <ng-container *ngIf=\"type === 'reply'\">\r\n <button\r\n class=\"e-btn small\"\r\n (click)=\"item.showReplyInput = false; replyVal = ''\"\r\n >\r\n {{ translation.CANCEL || \".CANCEL\" }}\r\n </button>\r\n <button\r\n class=\"e-btn e-primary small\"\r\n [disabled]=\"replyVal === ''\"\r\n (click)=\"addReply(item)\"\r\n >\r\n {{ translation.REPLY || \".REPLY\" }}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"type === 'editComment'\">\r\n <button class=\"e-btn text\" (click)=\"item.showCommentEdit = false\">\r\n <img src=\"../../assets/img/comment-cancel.svg\" alt=\"\" />\r\n </button>\r\n <button\r\n class=\"e-btn text\"\r\n [disabled]=\"editCommentVal === ''\"\r\n (click)=\"updateComment(item)\"\r\n >\r\n <img src=\"../../assets/img/comment-check.svg\" alt=\"\" />\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #replyItemTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"reply-item\" [ngClass]=\"{ comment: type === 'comment' }\">\r\n <div class=\"avatar\">\r\n {{ cf.rtn(item.ownerName) }}\r\n </div>\r\n <div class=\"owner-wrap\">\r\n <div class=\"owner-info\">\r\n <div class=\"name\">\r\n {{ item.ownerName }}\r\n </div>\r\n <div class=\"time\">\r\n {{ item.lastModifiedOn | date : dateTimePipeFormat }}\r\n </div>\r\n </div>\r\n <div class=\"message-wrap\">\r\n <div class=\"message\" *ngIf=\"!item.showCommentEdit\">\r\n {{ item.messageBody }}\r\n </div>\r\n <ng-container\r\n *ngIf=\"item.showCommentEdit\"\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'editComment', item: item }\"\r\n ></ng-container>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"\r\n type === 'comment' && !item.showReplyInput && !item.showCommentEdit\r\n \"\r\n class=\"e-btn text\"\r\n (click)=\"item.showReplyInput = true\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n >\r\n {{ translation.REPLY || \".REPLY\" }}\r\n </button>\r\n <ng-container\r\n *ngIf=\"item.showReplyInput\"\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'reply', item: item }\"\r\n ></ng-container>\r\n\r\n <rs-grid-action *ngIf=\"type === 'comment'\">\r\n <rs-grid-action-item\r\n image=\"Edit\"\r\n [text]=\"translation.EDIT\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n (click)=\"editComment(item)\"\r\n ></rs-grid-action-item>\r\n <rs-grid-action-item\r\n image=\"Delete\"\r\n [text]=\"translation.DELETE\"\r\n [disabled]=\"isReadOnly || !deletePermission\"\r\n (click)=\"deleteComment(item)\"\r\n ></rs-grid-action-item>\r\n </rs-grid-action>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".rs-commentary-wrap{width:100%;height:100%;padding:32px;display:flex;flex-direction:column}.rs-commentary-wrap .comment-box{width:100%}.rs-commentary-wrap .comment-box .comment-input-wrap{margin-bottom:12px;display:flex;gap:12px}.rs-commentary-wrap .comment-box .comment-input-wrap .e-input{flex:1;width:0}.rs-commentary-wrap .comment-box .btn-wrap{display:flex;justify-content:flex-end;gap:12px}.rs-commentary-wrap .comment-box .btn-wrap .e-btn.text{padding:4px}.rs-commentary-wrap .reply-box{height:0;flex:1;overflow:auto;margin-top:16px;margin-right:-32px;padding-right:32px}.rs-commentary-wrap .reply-box .sub-reply-list{padding-left:40px}.rs-commentary-wrap .reply-box .e-btn.text{padding:0!important;min-width:auto;height:auto;color:#6c7c90!important}.rs-commentary-wrap .reply-box .e-btn.text:hover{background:transparent!important;color:#1364b3!important}.rs-commentary-wrap .reply-box .e-btn.text:focus{background:transparent!important;color:#6c7c90!important}.rs-commentary-wrap .reply-box .arrow.collapse{transform:rotate(180deg)}.rs-commentary-wrap .reply-box .reply-item{display:flex;gap:12px;padding:12px 0}.rs-commentary-wrap .reply-box .reply-item.comment{border-top:1px solid #eaedf0}.rs-commentary-wrap .reply-box .reply-item.comment:hover{background-color:#f6faff}.rs-commentary-wrap .reply-box .reply-item.comment:hover rs-grid-action{display:block}.rs-commentary-wrap .reply-box .reply-item rs-grid-action{display:none;position:absolute;cursor:pointer;top:-4px;right:8px}.rs-commentary-wrap .reply-box .owner-wrap{flex:1;width:0;position:relative}.rs-commentary-wrap .reply-box .owner-wrap .owner-info{display:flex;align-items:center;gap:12px}.rs-commentary-wrap .reply-box .owner-wrap .owner-info .name{color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:700;line-height:14px}.rs-commentary-wrap .reply-box .owner-wrap .owner-info .time{color:#6c7c90;font-family:Arial;font-size:10px;font-style:normal;font-weight:400;line-height:12px}.rs-commentary-wrap .reply-box .owner-wrap .message-wrap{padding:8px 0}.rs-commentary-wrap .reply-box .owner-wrap .message-wrap .message{color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.rs-commentary-wrap .avatar{width:32px;height:32px;border-radius:100%;border:1px solid rgba(108,124,144,.4);color:#44566c;display:flex;align-items:center;justify-content:center;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$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: i2$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: GridActionComponent, selector: "rs-grid-action" }, { kind: "component", type: GridActionItemComponent, selector: "rs-grid-action-item", inputs: ["image", "text", "disabled"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
|
|
1328
1328
|
}
|
|
1329
1329
|
__decorate([
|
|
1330
1330
|
Debounce(300)
|
|
@@ -1340,7 +1340,7 @@ __decorate([
|
|
|
1340
1340
|
], RsCommentaryComponent.prototype, "adjustTextareaHeight", null);
|
|
1341
1341
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RsCommentaryComponent, decorators: [{
|
|
1342
1342
|
type: Component,
|
|
1343
|
-
args: [{ selector: "rs-commentary", template: "<div class=\"rs-commentary-wrap\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment' }\"\r\n ></ng-container>\r\n <div class=\"reply-box\">\r\n <div *ngFor=\"let item of commentData\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment', item: item }\"\r\n ></ng-container>\r\n <div class=\"sub-reply-list\">\r\n <ng-container\r\n *ngFor=\"\r\n let sub of item.isExpanded\r\n ? item.commentaries\r\n : item.commentaries.slice(0, 3)\r\n \"\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'sub', item: sub }\"\r\n ></ng-container>\r\n </div>\r\n <button\r\n class=\"e-btn text\"\r\n *ngIf=\"item.commentaries.length > 3\"\r\n (click)=\"item.isExpanded = !item.isExpanded\"\r\n style=\"margin-bottom: 8px;\"\r\n >\r\n {{\r\n item.isExpanded\r\n ? \"Collapse\"\r\n : \"View All \" + item.commentaries.length + \" Replies\"\r\n }}\r\n <img\r\n class=\"arrow\"\r\n [ngClass]=\"{ collapse: item.isExpanded }\"\r\n src=\"../../assets/img/dropdown-arrow.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #commentBoxTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"comment-box\">\r\n <div class=\"comment-input-wrap\">\r\n <div class=\"avatar\" *ngIf=\"type !== 'editComment'\">\r\n {{ cf.rtn(displayName) }}\r\n </div>\r\n <textarea\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-input\"\r\n rows=\"
|
|
1343
|
+
args: [{ selector: "rs-commentary", template: "<div class=\"rs-commentary-wrap\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment' }\"\r\n ></ng-container>\r\n <div class=\"reply-box\">\r\n <div *ngFor=\"let item of commentData\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'comment', item: item }\"\r\n ></ng-container>\r\n <div class=\"sub-reply-list\">\r\n <ng-container\r\n *ngFor=\"\r\n let sub of item.isExpanded\r\n ? item.commentaries\r\n : item.commentaries.slice(0, 3)\r\n \"\r\n [ngTemplateOutlet]=\"replyItemTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'sub', item: sub }\"\r\n ></ng-container>\r\n </div>\r\n <button\r\n class=\"e-btn text\"\r\n *ngIf=\"item.commentaries.length > 3\"\r\n (click)=\"item.isExpanded = !item.isExpanded\"\r\n style=\"margin-bottom: 8px;\"\r\n >\r\n {{\r\n item.isExpanded\r\n ? \"Collapse\"\r\n : \"View All \" + item.commentaries.length + \" Replies\"\r\n }}\r\n <img\r\n class=\"arrow\"\r\n [ngClass]=\"{ collapse: item.isExpanded }\"\r\n src=\"../../assets/img/dropdown-arrow.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #commentBoxTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"comment-box\">\r\n <div class=\"comment-input-wrap\">\r\n <div class=\"avatar\" *ngIf=\"type !== 'editComment'\">\r\n {{ cf.rtn(displayName) }}\r\n </div>\r\n <textarea\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-input\"\r\n rows=\"3\"\r\n [(ngModel)]=\"commentVal\"\r\n (focus)=\"adjustTextareaHeight($event)\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n <textarea\r\n *ngIf=\"type === 'reply'\"\r\n class=\"e-input\"\r\n rows=\"3\"\r\n [(ngModel)]=\"replyVal\"\r\n (focus)=\"adjustTextareaHeight($event)\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n <textarea\r\n *ngIf=\"type === 'editComment'\"\r\n class=\"e-input\"\r\n rows=\"3\"\r\n [(ngModel)]=\"editCommentVal\"\r\n (focus)=\"adjustTextareaHeight($event)\"\r\n (input)=\"adjustTextareaHeight($event)\"\r\n placeholder=\"Write your comment...\"\r\n ></textarea>\r\n </div>\r\n <div class=\"btn-wrap\">\r\n <button\r\n *ngIf=\"type === 'comment'\"\r\n class=\"e-btn e-primary small\"\r\n [disabled]=\"commentVal === ''|| isReadOnly || !editPermission\"\r\n (click)=\"addComment()\"\r\n >\r\n {{ translation.COMMENT || \".COMMENT\" }}\r\n </button>\r\n <ng-container *ngIf=\"type === 'reply'\">\r\n <button\r\n class=\"e-btn small\"\r\n (click)=\"item.showReplyInput = false; replyVal = ''\"\r\n >\r\n {{ translation.CANCEL || \".CANCEL\" }}\r\n </button>\r\n <button\r\n class=\"e-btn e-primary small\"\r\n [disabled]=\"replyVal === ''\"\r\n (click)=\"addReply(item)\"\r\n >\r\n {{ translation.REPLY || \".REPLY\" }}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"type === 'editComment'\">\r\n <button class=\"e-btn text\" (click)=\"item.showCommentEdit = false\">\r\n <img src=\"../../assets/img/comment-cancel.svg\" alt=\"\" />\r\n </button>\r\n <button\r\n class=\"e-btn text\"\r\n [disabled]=\"editCommentVal === ''\"\r\n (click)=\"updateComment(item)\"\r\n >\r\n <img src=\"../../assets/img/comment-check.svg\" alt=\"\" />\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n<ng-template #replyItemTemplate let-type=\"type\" let-item=\"item\">\r\n <div class=\"reply-item\" [ngClass]=\"{ comment: type === 'comment' }\">\r\n <div class=\"avatar\">\r\n {{ cf.rtn(item.ownerName) }}\r\n </div>\r\n <div class=\"owner-wrap\">\r\n <div class=\"owner-info\">\r\n <div class=\"name\">\r\n {{ item.ownerName }}\r\n </div>\r\n <div class=\"time\">\r\n {{ item.lastModifiedOn | date : dateTimePipeFormat }}\r\n </div>\r\n </div>\r\n <div class=\"message-wrap\">\r\n <div class=\"message\" *ngIf=\"!item.showCommentEdit\">\r\n {{ item.messageBody }}\r\n </div>\r\n <ng-container\r\n *ngIf=\"item.showCommentEdit\"\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'editComment', item: item }\"\r\n ></ng-container>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"\r\n type === 'comment' && !item.showReplyInput && !item.showCommentEdit\r\n \"\r\n class=\"e-btn text\"\r\n (click)=\"item.showReplyInput = true\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n >\r\n {{ translation.REPLY || \".REPLY\" }}\r\n </button>\r\n <ng-container\r\n *ngIf=\"item.showReplyInput\"\r\n [ngTemplateOutlet]=\"commentBoxTemplate\"\r\n [ngTemplateOutletContext]=\"{ type: 'reply', item: item }\"\r\n ></ng-container>\r\n\r\n <rs-grid-action *ngIf=\"type === 'comment'\">\r\n <rs-grid-action-item\r\n image=\"Edit\"\r\n [text]=\"translation.EDIT\"\r\n [disabled]=\"isReadOnly || !editPermission\"\r\n (click)=\"editComment(item)\"\r\n ></rs-grid-action-item>\r\n <rs-grid-action-item\r\n image=\"Delete\"\r\n [text]=\"translation.DELETE\"\r\n [disabled]=\"isReadOnly || !deletePermission\"\r\n (click)=\"deleteComment(item)\"\r\n ></rs-grid-action-item>\r\n </rs-grid-action>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".rs-commentary-wrap{width:100%;height:100%;padding:32px;display:flex;flex-direction:column}.rs-commentary-wrap .comment-box{width:100%}.rs-commentary-wrap .comment-box .comment-input-wrap{margin-bottom:12px;display:flex;gap:12px}.rs-commentary-wrap .comment-box .comment-input-wrap .e-input{flex:1;width:0}.rs-commentary-wrap .comment-box .btn-wrap{display:flex;justify-content:flex-end;gap:12px}.rs-commentary-wrap .comment-box .btn-wrap .e-btn.text{padding:4px}.rs-commentary-wrap .reply-box{height:0;flex:1;overflow:auto;margin-top:16px;margin-right:-32px;padding-right:32px}.rs-commentary-wrap .reply-box .sub-reply-list{padding-left:40px}.rs-commentary-wrap .reply-box .e-btn.text{padding:0!important;min-width:auto;height:auto;color:#6c7c90!important}.rs-commentary-wrap .reply-box .e-btn.text:hover{background:transparent!important;color:#1364b3!important}.rs-commentary-wrap .reply-box .e-btn.text:focus{background:transparent!important;color:#6c7c90!important}.rs-commentary-wrap .reply-box .arrow.collapse{transform:rotate(180deg)}.rs-commentary-wrap .reply-box .reply-item{display:flex;gap:12px;padding:12px 0}.rs-commentary-wrap .reply-box .reply-item.comment{border-top:1px solid #eaedf0}.rs-commentary-wrap .reply-box .reply-item.comment:hover{background-color:#f6faff}.rs-commentary-wrap .reply-box .reply-item.comment:hover rs-grid-action{display:block}.rs-commentary-wrap .reply-box .reply-item rs-grid-action{display:none;position:absolute;cursor:pointer;top:-4px;right:8px}.rs-commentary-wrap .reply-box .owner-wrap{flex:1;width:0;position:relative}.rs-commentary-wrap .reply-box .owner-wrap .owner-info{display:flex;align-items:center;gap:12px}.rs-commentary-wrap .reply-box .owner-wrap .owner-info .name{color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:700;line-height:14px}.rs-commentary-wrap .reply-box .owner-wrap .owner-info .time{color:#6c7c90;font-family:Arial;font-size:10px;font-style:normal;font-weight:400;line-height:12px}.rs-commentary-wrap .reply-box .owner-wrap .message-wrap{padding:8px 0}.rs-commentary-wrap .reply-box .owner-wrap .message-wrap .message{color:#44566c;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:16px}.rs-commentary-wrap .avatar{width:32px;height:32px;border-radius:100%;border:1px solid rgba(108,124,144,.4);color:#44566c;display:flex;align-items:center;justify-content:center;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px}\n"] }]
|
|
1344
1344
|
}], ctorParameters: function () { return [{ type: CommonFunctionService }, { type: DialogService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { displayName: [{
|
|
1345
1345
|
type: Input
|
|
1346
1346
|
}], commentData: [{
|