ngx-bimplus-components 0.0.160 → 0.0.161
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/images/default/Attachment_18_gray.svg +1 -0
- package/assets/images/default/Attachment_18_maincolor.svg +3 -0
- package/assets/images/default/Attachmentlink_18_gray.svg +7 -0
- package/assets/images/default/Attachmentlink_18_maincolor.svg +7 -0
- package/assets/images/default/Calendar_18.svg +4 -0
- package/assets/images/default/Calendar_18_disabled.svg +1 -0
- package/assets/images/default/Calendar_18_gray.svg +1 -0
- package/assets/images/default/Comments_18_gray.svg +1 -0
- package/assets/images/default/Comments_18_maincolor.svg +4 -0
- package/assets/images/default/Links_18_gray.svg +1 -0
- package/assets/images/default/Links_18_maincolor.svg +4 -0
- package/assets/images/default/Refresh_18_gray.svg +1 -0
- package/assets/images/default/bimplus_WebIcons_Cross_Disabled.svg +1 -0
- package/assets/images/default/ic_models.svg +3 -0
- package/assets/images/default/ic_models_maincolor.svg +3 -0
- package/assets/images/default/icn_grid_attachments.png +0 -0
- package/assets/images/default/icn_grid_hyperlinks.png +0 -0
- package/assets/images/default/progress-spinner.svg +1 -0
- package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.component.mjs +114 -0
- package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.interface.mjs +38 -0
- package/esm2022/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.mjs +95 -0
- package/esm2022/lib/components/bimplus-attachments/services/bimplus-attachments.service.mjs +32 -0
- package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +40 -5
- package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.mjs +5 -2
- package/esm2022/lib/components/bimplus-comment/IComment.mjs +2 -0
- package/esm2022/lib/components/bimplus-comment/bimplus-comment.component.mjs +118 -0
- package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +5 -5
- package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +115 -7
- package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.mjs +1 -1
- package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +1 -1
- package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.mjs +1 -1
- package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-input-checkbox/bimplus-input-checkbox.component.mjs +64 -0
- package/esm2022/lib/components/bimplus-input-combobox/bimplus-input-combobox.component.mjs +161 -0
- package/esm2022/lib/components/bimplus-input-date/bimplus-input-date.component.mjs +271 -0
- package/esm2022/lib/components/bimplus-input-number/bimplus-input-number.component.mjs +85 -0
- package/esm2022/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.mjs +92 -0
- package/esm2022/lib/components/bimplus-link-tooltip-message/bimplus-link-tooltip-message.component.mjs +78 -0
- package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.mjs +385 -0
- package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.interface.mjs +3 -0
- package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.mjs +104 -0
- package/esm2022/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.mjs +2 -0
- package/esm2022/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +6 -3
- package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.mjs +1 -1
- package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.component.mjs +42 -4
- package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.interface.mjs +4 -2
- package/esm2022/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.mjs +77 -0
- package/esm2022/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.mjs +83 -0
- package/esm2022/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.mjs +31 -8
- package/esm2022/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.mjs +34 -8
- package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +1 -1
- package/esm2022/lib/components/bimplus-status-bar/bimplus-status-bar.component.mjs +35 -0
- package/esm2022/lib/components/bimplus-status-bar/bimplus-status-bar.service.mjs +35 -0
- package/esm2022/lib/components/bimplus-status-bar/statusBar.mjs +2 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.mjs +38 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.mjs +10 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.mjs +89 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.mjs +33 -0
- package/esm2022/lib/components/bimplus-textarea/autoResizeTextarea.directive.mjs +83 -0
- package/esm2022/lib/components/bimplus-textarea/bimplus-textarea.component.mjs +128 -0
- package/esm2022/lib/components/links-to-documents/links-to-documents.component.mjs +373 -0
- package/esm2022/lib/components/object-hyperlinks/object-hyperlinks.component.mjs +145 -0
- package/esm2022/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.mjs +36 -0
- package/esm2022/lib/components/object-preview/object-preview.component.mjs +284 -0
- package/esm2022/lib/components/object-preview/object-preview.interface.mjs +2 -0
- package/esm2022/lib/components/object-properties/object-properties.component.mjs +545 -0
- package/esm2022/lib/components/object-properties/object-properties.interface.mjs +2 -0
- package/esm2022/lib/components/object-properties/object-properties.service.mjs +26 -0
- package/esm2022/lib/components/object-properties-group/object-properties-group.component.mjs +129 -0
- package/esm2022/lib/components/object-properties-group/object-property-value/object-property-value.component.mjs +55 -0
- package/esm2022/lib/components/object-properties-header/object-properties-header.component.mjs +48 -6
- package/esm2022/lib/components/object-properties-header/object-properties-header.interface.mjs +1 -1
- package/esm2022/lib/components/resizable-panel/resizable-panel.component.mjs +54 -10
- package/esm2022/lib/pipes/bit-converter.pipe.mjs +46 -0
- package/esm2022/lib/pipes/get-attribute-value-as-string.pipe.mjs +173 -0
- package/esm2022/lib/pipes/get-attribute-value.pipe.mjs +156 -0
- package/esm2022/lib/pipes/round.pipe.mjs +20 -0
- package/esm2022/lib/services/decorators.service.mjs +65 -0
- package/esm2022/lib/utils/objectProperties.mjs +9 -0
- package/esm2022/lib/validators/double-enum.validator.mjs +20 -0
- package/esm2022/lib/validators/double.validator.mjs +23 -0
- package/esm2022/lib/validators/guid-enum.validator.mjs +20 -0
- package/esm2022/lib/validators/guid.validator.mjs +14 -0
- package/esm2022/lib/validators/integer.validator.mjs +23 -0
- package/esm2022/lib/validators/string-combobox.validator.mjs +20 -0
- package/esm2022/lib/validators/string-enum.validator.mjs +20 -0
- package/esm2022/public-api.mjs +22 -1
- package/fesm2022/ngx-bimplus-components.mjs +4612 -80
- package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
- package/lib/components/bimplus-attachments/bimplus-attachments.component.d.ts +39 -0
- package/lib/components/bimplus-attachments/bimplus-attachments.interface.d.ts +33 -0
- package/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.d.ts +30 -0
- package/lib/components/bimplus-attachments/services/bimplus-attachments.service.d.ts +8 -0
- package/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.d.ts +14 -3
- package/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.d.ts +7 -1
- package/lib/components/bimplus-comment/IComment.d.ts +4 -0
- package/lib/components/bimplus-comment/bimplus-comment.component.d.ts +39 -0
- package/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.d.ts +16 -3
- package/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.d.ts +4 -0
- package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +1 -1
- package/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.d.ts +3 -3
- package/lib/components/bimplus-input-checkbox/bimplus-input-checkbox.component.d.ts +18 -0
- package/lib/components/bimplus-input-combobox/bimplus-input-combobox.component.d.ts +41 -0
- package/lib/components/bimplus-input-date/bimplus-input-date.component.d.ts +46 -0
- package/lib/components/bimplus-input-number/bimplus-input-number.component.d.ts +26 -0
- package/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.d.ts +28 -0
- package/lib/components/bimplus-link-tooltip-message/bimplus-link-tooltip-message.component.d.ts +22 -0
- package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.d.ts +87 -0
- package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.interface.d.ts +10 -0
- package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.d.ts +20 -0
- package/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.d.ts +11 -0
- package/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.d.ts +2 -1
- package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.d.ts +12 -12
- package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.d.ts +3 -3
- package/lib/components/bimplus-object-structure/bimplus-object-structure.component.d.ts +5 -1
- package/lib/components/bimplus-object-structure/bimplus-object-structure.interface.d.ts +2 -0
- package/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.d.ts +29 -0
- package/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.d.ts +24 -0
- package/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.d.ts +8 -1
- package/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.d.ts +11 -1
- package/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.d.ts +1 -1
- package/lib/components/bimplus-status-bar/bimplus-status-bar.component.d.ts +14 -0
- package/lib/components/bimplus-status-bar/bimplus-status-bar.service.d.ts +14 -0
- package/lib/components/bimplus-status-bar/statusBar.d.ts +4 -0
- package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.d.ts +16 -0
- package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.d.ts +18 -0
- package/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.d.ts +36 -0
- package/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.d.ts +15 -0
- package/lib/components/bimplus-textarea/autoResizeTextarea.directive.d.ts +24 -0
- package/lib/components/bimplus-textarea/bimplus-textarea.component.d.ts +42 -0
- package/lib/components/links-to-documents/links-to-documents.component.d.ts +68 -0
- package/lib/components/object-hyperlinks/object-hyperlinks.component.d.ts +32 -0
- package/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.d.ts +15 -0
- package/lib/components/object-preview/object-preview.component.d.ts +45 -0
- package/lib/components/object-preview/object-preview.interface.d.ts +5 -0
- package/lib/components/object-properties/object-properties.component.d.ts +79 -0
- package/lib/components/object-properties/object-properties.interface.d.ts +22 -0
- package/lib/components/object-properties/object-properties.service.d.ts +12 -0
- package/lib/components/object-properties-group/object-properties-group.component.d.ts +30 -0
- package/lib/components/object-properties-group/object-property-value/object-property-value.component.d.ts +14 -0
- package/lib/components/object-properties-header/object-properties-header.component.d.ts +13 -4
- package/lib/components/object-properties-header/object-properties-header.interface.d.ts +8 -0
- package/lib/components/resizable-panel/resizable-panel.component.d.ts +12 -3
- package/lib/pipes/bit-converter.pipe.d.ts +17 -0
- package/lib/pipes/get-attribute-value-as-string.pipe.d.ts +35 -0
- package/lib/pipes/get-attribute-value.pipe.d.ts +35 -0
- package/lib/pipes/round.pipe.d.ts +7 -0
- package/lib/services/decorators.service.d.ts +12 -0
- package/lib/utils/objectProperties.d.ts +2 -0
- package/lib/validators/double-enum.validator.d.ts +2 -0
- package/lib/validators/double.validator.d.ts +2 -0
- package/lib/validators/guid-enum.validator.d.ts +2 -0
- package/lib/validators/guid.validator.d.ts +2 -0
- package/lib/validators/integer.validator.d.ts +2 -0
- package/lib/validators/string-combobox.validator.d.ts +2 -0
- package/lib/validators/string-enum.validator.d.ts +2 -0
- package/package.json +14 -4
- package/public-api.d.ts +21 -0
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
import { Component, Input, signal, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { BimplusOverlayDialogDeleteComponent } from '../bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component';
|
|
4
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
5
|
+
import { AsyncPipe, DatePipe, NgFor } from '@angular/common';
|
|
6
|
+
import { BimplusTextareaComponent } from '../bimplus-textarea/bimplus-textarea.component';
|
|
7
|
+
import { BimplusCommentComponent } from '../bimplus-comment/bimplus-comment.component';
|
|
8
|
+
import { BimplusButtonsRowComponent } from '../bimplus-buttons-row/bimplus-buttons-row.component';
|
|
9
|
+
import { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';
|
|
10
|
+
import { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component';
|
|
11
|
+
import { BimplusInputTextFieldComponent } from "../bimplus-input-text-field/bimplus-input-text-field.component";
|
|
12
|
+
import { FormsModule, ReactiveFormsModule, Validators } from "@angular/forms";
|
|
13
|
+
import { BimplusAttachmentsComponent } from '../bimplus-attachments/bimplus-attachments.component';
|
|
14
|
+
import { BimplusAttachmentsService } from '../bimplus-attachments/services/bimplus-attachments.service';
|
|
15
|
+
import { BIMPLUS_ATTACHMENTS_CONFIG, } from '../bimplus-attachments/bimplus-attachments.interface';
|
|
16
|
+
import { BehaviorSubject, switchMap } from 'rxjs';
|
|
17
|
+
import { BimplusObjectCommentsListService } from './bimplus-object-comments-list.service';
|
|
18
|
+
import { LinksToDocumentsComponent } from '../links-to-documents/links-to-documents.component';
|
|
19
|
+
import * as i0 from "@angular/core";
|
|
20
|
+
import * as i1 from "../bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service";
|
|
21
|
+
import * as i2 from "@ngx-translate/core";
|
|
22
|
+
import * as i3 from "@angular/common";
|
|
23
|
+
import * as i4 from "@angular/forms";
|
|
24
|
+
import * as i5 from "../bimplus-attachments/services/bimplus-attachments.service";
|
|
25
|
+
import * as i6 from "./bimplus-object-comments-list.service";
|
|
26
|
+
import * as i7 from "../bimplus-status-bar/bimplus-status-bar.service";
|
|
27
|
+
const config = {
|
|
28
|
+
showNoAttachmentsFound: false,
|
|
29
|
+
hideAttachmentSize: true,
|
|
30
|
+
};
|
|
31
|
+
export class BimplusObjectCommentsListComponent extends BimplusLocalizedWidgetComponent {
|
|
32
|
+
set rootObjectId(id) {
|
|
33
|
+
this._rootObjectId = id;
|
|
34
|
+
}
|
|
35
|
+
get rootObjectId() {
|
|
36
|
+
return this._rootObjectId;
|
|
37
|
+
}
|
|
38
|
+
set userId(id) {
|
|
39
|
+
this._userId = id;
|
|
40
|
+
}
|
|
41
|
+
get userId() {
|
|
42
|
+
return this._userId;
|
|
43
|
+
}
|
|
44
|
+
constructor(dialogService, translateService, datePipe, formBuilder, bimplusAttachmentsService, bimplusObjectCommentsListService, statusBarService) {
|
|
45
|
+
super(translateService);
|
|
46
|
+
this.dialogService = dialogService;
|
|
47
|
+
this.datePipe = datePipe;
|
|
48
|
+
this.formBuilder = formBuilder;
|
|
49
|
+
this.bimplusAttachmentsService = bimplusAttachmentsService;
|
|
50
|
+
this.bimplusObjectCommentsListService = bimplusObjectCommentsListService;
|
|
51
|
+
this.statusBarService = statusBarService;
|
|
52
|
+
this.project = null;
|
|
53
|
+
this.wormholeSelector = "localEmbeddedModalId";
|
|
54
|
+
this.env = "prod";
|
|
55
|
+
this.attachmentLinkItems = [];
|
|
56
|
+
this.commentsList$ = new BehaviorSubject([]);
|
|
57
|
+
this.loading = signal(false);
|
|
58
|
+
this.attachmentsState = signal([]);
|
|
59
|
+
this.buttonRowItems = [];
|
|
60
|
+
this.hyperlinkButtonRowItems = [];
|
|
61
|
+
this.textAreaValue = null;
|
|
62
|
+
this.lastShownDate = '';
|
|
63
|
+
this.placeholder = '';
|
|
64
|
+
this.name = '';
|
|
65
|
+
this.readonly = false;
|
|
66
|
+
this.autoResizeTextarea = true;
|
|
67
|
+
this.minRows = 3;
|
|
68
|
+
this.maxRows = 10;
|
|
69
|
+
this.clearValue = false;
|
|
70
|
+
this.statusBarTitleMessage = this.translateService.instant('_Loading');
|
|
71
|
+
// attachment ids ready to map to concrete comment
|
|
72
|
+
this.newAttachmentIDs = [];
|
|
73
|
+
this.isAddingHyperlink = false;
|
|
74
|
+
this.newCommentAttachments = [];
|
|
75
|
+
this._rootObjectId = '';
|
|
76
|
+
this._userId = '';
|
|
77
|
+
this.hyperlinkForm = this.formBuilder.group({
|
|
78
|
+
name: ['', []],
|
|
79
|
+
url: [
|
|
80
|
+
'',
|
|
81
|
+
[
|
|
82
|
+
Validators.required,
|
|
83
|
+
Validators.pattern(/^[^<>]*$/), // Do not allow < or >
|
|
84
|
+
Validators.pattern(/^(?!\s*$).+/), // Do not allow all empty string, but allow text after spaces
|
|
85
|
+
],
|
|
86
|
+
],
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
isCreateButtonDisabled() {
|
|
90
|
+
return !(this.textAreaValue ||
|
|
91
|
+
this.newAttachmentIDs?.length > 0 ||
|
|
92
|
+
this.getHyperlinks(this.rootObjectId)?.length > 0 ||
|
|
93
|
+
this.attachmentsState()?.length > 0);
|
|
94
|
+
}
|
|
95
|
+
checkCreateButtonState() {
|
|
96
|
+
if (!this.buttonRowItems?.[0]) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
this.buttonRowItems[0].disabled = this.isCreateButtonDisabled();
|
|
100
|
+
}
|
|
101
|
+
ngOnInit() {
|
|
102
|
+
this.bimplusObjectCommentsListService.api = this.api;
|
|
103
|
+
this.loadComments();
|
|
104
|
+
const submit = [
|
|
105
|
+
{
|
|
106
|
+
id: 'submit',
|
|
107
|
+
title: this.translateService.instant('_Add comment'),
|
|
108
|
+
tooltip: this.translateService.instant('_Add comment'),
|
|
109
|
+
disabled: this.isCreateButtonDisabled(),
|
|
110
|
+
buttonStyle: 'primary',
|
|
111
|
+
},
|
|
112
|
+
];
|
|
113
|
+
this.placeholder = this.translateService.instant('_Place comment text here');
|
|
114
|
+
this.name = this.translateService.instant('comment');
|
|
115
|
+
this.buttonRowItems = submit;
|
|
116
|
+
this.hyperlinkButtonRowItems.push({
|
|
117
|
+
id: 'cancel-hyperlink',
|
|
118
|
+
title: this.translateService.instant('_Cancel'),
|
|
119
|
+
tooltip: this.translateService.instant('_Cancel'),
|
|
120
|
+
disabled: false,
|
|
121
|
+
buttonStyle: 'primary',
|
|
122
|
+
}, {
|
|
123
|
+
id: 'add-hyperlink',
|
|
124
|
+
title: this.translateService.instant('_Add hyperlink'),
|
|
125
|
+
tooltip: this.translateService.instant('_Add hyperlink'),
|
|
126
|
+
disabled: true,
|
|
127
|
+
buttonStyle: 'primary',
|
|
128
|
+
});
|
|
129
|
+
this.hyperlinkForm.statusChanges.subscribe((status) => {
|
|
130
|
+
this.hyperlinkButtonRowItems[1].disabled = status !== 'VALID';
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
ngOnChanges(changes) {
|
|
134
|
+
if (changes['rootObjectId'] && !changes['rootObjectId'].firstChange) {
|
|
135
|
+
this.loadComments();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
onAttachmentsLinkChange(newAttachments) {
|
|
139
|
+
const newDecoratedAttachments = newAttachments.map((attachment) => {
|
|
140
|
+
attachment.iconClass = 'fa fa-link';
|
|
141
|
+
attachment.iconTitle = this.translateService.instant('_Attachment_link');
|
|
142
|
+
attachment.deleteButtonTitle = this.translateService.instant('_Delete_attachmentlink');
|
|
143
|
+
return attachment;
|
|
144
|
+
});
|
|
145
|
+
const newCommentAttachments = this.newCommentAttachments.filter((attachment) => attachment?.type === 'Hyperlink');
|
|
146
|
+
this.newCommentAttachments = [...newCommentAttachments, ...newDecoratedAttachments];
|
|
147
|
+
this.newAttachmentIDs = newAttachments.map((attachment) => attachment.id);
|
|
148
|
+
this.checkCreateButtonState();
|
|
149
|
+
}
|
|
150
|
+
onAddAttachment(file) {
|
|
151
|
+
const attachment = this.bimplusAttachmentsService.getAttachment(file);
|
|
152
|
+
this.attachmentsState.update(attachments => ([...attachments, attachment]));
|
|
153
|
+
this.checkCreateButtonState();
|
|
154
|
+
}
|
|
155
|
+
onDeleteAttachment(attachment) {
|
|
156
|
+
this.attachmentsState.update(attachments => attachments.filter(a => a !== attachment));
|
|
157
|
+
this.checkCreateButtonState();
|
|
158
|
+
}
|
|
159
|
+
/** Event on click attachment. */
|
|
160
|
+
onGetAttachment(attachment) {
|
|
161
|
+
this.bimplusObjectCommentsListService.downloadAttachment(attachment);
|
|
162
|
+
}
|
|
163
|
+
onTextareaValueChange(value) {
|
|
164
|
+
this.textAreaValue = value;
|
|
165
|
+
this.checkCreateButtonState();
|
|
166
|
+
}
|
|
167
|
+
handleActionCommentEvent(event) {
|
|
168
|
+
if (event.action === 'delete') {
|
|
169
|
+
const data = event.data;
|
|
170
|
+
this.openDialogDeleteComment(data.commentId);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
actionDialogClose(data) {
|
|
174
|
+
this.dialogService.close(data);
|
|
175
|
+
}
|
|
176
|
+
openDialogDeleteComment(commentId) {
|
|
177
|
+
this.dialogService.open(BimplusOverlayDialogDeleteComponent, {
|
|
178
|
+
options: {
|
|
179
|
+
position: 'middle',
|
|
180
|
+
positionOptions: {},
|
|
181
|
+
overlayClickEnabled: false,
|
|
182
|
+
overlayVisibilityEnabled: true,
|
|
183
|
+
draggable: true,
|
|
184
|
+
},
|
|
185
|
+
data: {
|
|
186
|
+
title: this.translateService.instant('_Comment delete confirmation title'),
|
|
187
|
+
message: this.translateService.instant('_Comment delete confirmation message'),
|
|
188
|
+
acceptCallback: () => {
|
|
189
|
+
this.deleteComment(commentId);
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
isSameDate(date) {
|
|
195
|
+
if (!date) {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
const time = this.datePipe.transform(date, 'shortDate');
|
|
199
|
+
if (this.lastShownDate === time) {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
this.lastShownDate = date;
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
buttonRowButtonClicked($event) {
|
|
206
|
+
if ($event.id === 'submit') {
|
|
207
|
+
if (!this.api || !this.rootObjectId)
|
|
208
|
+
return;
|
|
209
|
+
this.loading.set(true);
|
|
210
|
+
const data = {
|
|
211
|
+
text: this.textAreaValue,
|
|
212
|
+
objectId: this.rootObjectId,
|
|
213
|
+
};
|
|
214
|
+
const dataText = JSON.stringify(data);
|
|
215
|
+
this.statusBarService.setStatusBarData({ statusBarVisible: true, title: this.translateService.instant('_Creating new comment') });
|
|
216
|
+
this.bimplusObjectCommentsListService.postComments(this.rootObjectId, dataText, this.getHyperlinks(this.rootObjectId), this.attachmentsState(), this.newAttachmentIDs)
|
|
217
|
+
.pipe(switchMap(() => this.bimplusObjectCommentsListService.loadComments(this.rootObjectId)))
|
|
218
|
+
.subscribe({
|
|
219
|
+
next: (comments) => this.commentsList$.next(comments),
|
|
220
|
+
complete: () => {
|
|
221
|
+
this.attachmentsState.set([]);
|
|
222
|
+
this.newCommentAttachments = [];
|
|
223
|
+
this.attachmentLinkItems = [];
|
|
224
|
+
this.newAttachmentIDs = [];
|
|
225
|
+
this.textAreaValue = null;
|
|
226
|
+
this.clearValue = true;
|
|
227
|
+
this.buttonRowItems[0].disabled = true;
|
|
228
|
+
this.loading.set(false);
|
|
229
|
+
this.statusBarService.setStatusBarData({ statusBarVisible: false, title: '' });
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
hyperlinkButtonRowButtonClicked($event) {
|
|
235
|
+
if ($event.id === 'add-hyperlink') {
|
|
236
|
+
this.addNewCommentHyperlink();
|
|
237
|
+
}
|
|
238
|
+
else if ($event.id === 'cancel-hyperlink') {
|
|
239
|
+
this.hyperlinkForm.reset();
|
|
240
|
+
this.isAddingHyperlink = false;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
addNewCommentHyperlink() {
|
|
244
|
+
if (!this.hyperlinkForm.valid) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
let sanitizedUrl = this.hyperlinkForm.value['url'].trim();
|
|
248
|
+
if (!RegExp(/^http(s?):\/\//).exec(sanitizedUrl)) {
|
|
249
|
+
sanitizedUrl = 'https://' + sanitizedUrl;
|
|
250
|
+
}
|
|
251
|
+
let sanitizedName = this.hyperlinkForm.value['name']?.trim() ?? '';
|
|
252
|
+
if (sanitizedName === '') {
|
|
253
|
+
sanitizedName = sanitizedUrl;
|
|
254
|
+
}
|
|
255
|
+
const newItem = {
|
|
256
|
+
id: '',
|
|
257
|
+
type: 'Hyperlink',
|
|
258
|
+
nameShort: sanitizedName,
|
|
259
|
+
name: sanitizedName,
|
|
260
|
+
url: sanitizedUrl,
|
|
261
|
+
iconClass: 'fa fa-link',
|
|
262
|
+
iconTitle: this.translateService.instant('_Hyperlink'),
|
|
263
|
+
deleteButtonTitle: this.translateService.instant('_Remove hyperlink'),
|
|
264
|
+
};
|
|
265
|
+
this.newCommentAttachments.push(newItem);
|
|
266
|
+
this.hyperlinkForm.reset();
|
|
267
|
+
this.isAddingHyperlink = false;
|
|
268
|
+
this.checkCreateButtonState();
|
|
269
|
+
}
|
|
270
|
+
deleteComment(commentId) {
|
|
271
|
+
this.statusBarService.setStatusBarData({ statusBarVisible: true, title: this.translateService.instant('_Deleting the comment') });
|
|
272
|
+
this.bimplusObjectCommentsListService.deleteComment(commentId)
|
|
273
|
+
.subscribe(() => this.loadComments());
|
|
274
|
+
}
|
|
275
|
+
addHyperlinkIconClicked() {
|
|
276
|
+
this.isAddingHyperlink = !this.isAddingHyperlink;
|
|
277
|
+
}
|
|
278
|
+
addHyperlinkIconKeypress(event) {
|
|
279
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
280
|
+
this.addHyperlinkIconClicked();
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
removeNewCommentAttachment(link) {
|
|
284
|
+
this.newCommentAttachments = this.newCommentAttachments.filter((commentLink) => commentLink !== link);
|
|
285
|
+
if (link?.type !== 'Hyperlink') {
|
|
286
|
+
this.attachmentLinkItems = this.attachmentLinkItems.filter((attachmentLink) => attachmentLink.id !== link.id);
|
|
287
|
+
this.newAttachmentIDs = this.newAttachmentIDs.filter(id => id !== link.id);
|
|
288
|
+
}
|
|
289
|
+
this.checkCreateButtonState();
|
|
290
|
+
}
|
|
291
|
+
removeNewCommentAttachmentKeypress(event, link) {
|
|
292
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
293
|
+
this.removeNewCommentAttachment(link);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
isActUserAuthor(item) {
|
|
297
|
+
return item.author?.id === this.userId;
|
|
298
|
+
}
|
|
299
|
+
displayName(item) {
|
|
300
|
+
return item.author?.displayname ? item.author?.displayname : '';
|
|
301
|
+
}
|
|
302
|
+
formatDate(date) {
|
|
303
|
+
const locale = window.navigator.language;
|
|
304
|
+
if (locale.includes('en')) {
|
|
305
|
+
const unformattedDate = new Date(date);
|
|
306
|
+
return unformattedDate.getMonth() + '/' + unformattedDate.getDate() + '/' + unformattedDate.getFullYear();
|
|
307
|
+
}
|
|
308
|
+
return new Intl.DateTimeFormat(undefined, { dateStyle: "short" }).format(new Date(date));
|
|
309
|
+
}
|
|
310
|
+
clearTextareaValue() {
|
|
311
|
+
return this.clearValue;
|
|
312
|
+
}
|
|
313
|
+
loadComments() {
|
|
314
|
+
this.statusBarService.setStatusBarData({ statusBarVisible: true, title: this.translateService.instant('_Loading comments list') });
|
|
315
|
+
this.loading.set(true);
|
|
316
|
+
this.bimplusObjectCommentsListService
|
|
317
|
+
.loadComments(this.rootObjectId)
|
|
318
|
+
.subscribe({
|
|
319
|
+
next: comments => {
|
|
320
|
+
this.commentsList$.next(comments);
|
|
321
|
+
},
|
|
322
|
+
complete: () => {
|
|
323
|
+
this.loading.set(false);
|
|
324
|
+
this.statusBarService.setStatusBarData({ statusBarVisible: false, title: '' });
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
getHyperlinks(objectId) {
|
|
329
|
+
return this.newCommentAttachments
|
|
330
|
+
.filter(h => h?.type === 'Hyperlink') // Filter objects with type 'Hyperlink'
|
|
331
|
+
.map((h) => ({
|
|
332
|
+
...h,
|
|
333
|
+
objectId,
|
|
334
|
+
}));
|
|
335
|
+
}
|
|
336
|
+
onEnterKeyPressedInHyperlinkForm() {
|
|
337
|
+
this.addNewCommentHyperlink();
|
|
338
|
+
}
|
|
339
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusObjectCommentsListComponent, deps: [{ token: i1.DialogService }, { token: i2.TranslateService }, { token: i3.DatePipe }, { token: i4.FormBuilder }, { token: i5.BimplusAttachmentsService }, { token: i6.BimplusObjectCommentsListService }, { token: i7.BimplusStatusBarService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
340
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BimplusObjectCommentsListComponent, isStandalone: true, selector: "lib-bimplus-object-comments-list", inputs: { api: "api", project: "project", wormholeSelector: "wormholeSelector", env: "env", attachmentLinkItems: "attachmentLinkItems", rootObjectId: "rootObjectId", userId: "userId" }, providers: [
|
|
341
|
+
DatePipe,
|
|
342
|
+
BimplusObjectCommentsListService,
|
|
343
|
+
BimplusAttachmentsService,
|
|
344
|
+
{ provide: BIMPLUS_ATTACHMENTS_CONFIG, useValue: config },
|
|
345
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (!loading()) {\r\n<div class=\"comment-tab-container\">\r\n <div class=\"textarea-container\">\r\n <lib-bimplus-textarea\r\n (textAreaValueChange)=\"onTextareaValueChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n [name]=\"name\"\r\n [readonly]=\"readonly\"\r\n [activeAutoResizeTextarea]=\"true\"\r\n [minRows]=\"minRows\"\r\n [maxRows]=\"maxRows\"\r\n [clearValue]=\"clearTextareaValue()\"\r\n ></lib-bimplus-textarea>\r\n </div>\r\n\r\n <lib-bimplus-attachments\r\n #attachments\r\n listOnly\r\n [class]=\"['new-comment-attachments']\"\r\n [attachments]=\"attachmentsState()\"\r\n (addAttachment)=\"onAddAttachment($event)\"\r\n (deleteAttachment)=\"onDeleteAttachment($event)\"\r\n />\r\n\r\n <lib-links-to-documents \r\n #linksToDocuments\r\n listOnly\r\n hideAttachmentSize\r\n showEmptyMessage=\"false\" \r\n [attachments]=\"attachmentLinkItems\"\r\n (attachmentsLinkChange)=\"onAttachmentsLinkChange($event)\"\r\n [api]=\"api\" \r\n [project]=\"project\"\r\n [rootObjectId]=''\r\n [canCreateAttachmentLink]=\"true\"\r\n [canDeleteAttachmentLink]=\"true\"\r\n [wormholeSelector]=\"wormholeSelector\"\r\n [env]=\"env\"\r\n />\r\n\r\n @if (newCommentAttachments.length > 0) {\r\n <div class=\"new-comment-attachment-list\">\r\n <div *ngFor=\"let item of newCommentAttachments\" \r\n [ngClass]=\"'new-comment-attachment ' + item.type\"\r\n [title]=\"item.type === 'Hyperlink' ? item.url: item.name\">\r\n <div \r\n [ngClass]=\"'icon-small ' + item.type\" \r\n [title]=\"item.type === 'Hyperlink' ? item.url: item.name\">\r\n </div>\r\n <div class=\"text\">{{ item.name }} </div> \r\n <span class=\"cancel-icon\" title=\"{{ item.deleteButtonTitle}}\" (click)=\"removeNewCommentAttachment(item)\" (keydown)=\"removeNewCommentAttachmentKeypress($event, item)\"></span>\r\n </div> \r\n </div>\r\n }\r\n\r\n @if (isAddingHyperlink) {\r\n <form [formGroup]=\"hyperlinkForm\" class=\"hyperlink-input-form\">\r\n <div class=\"hyperlink-input-row\">\r\n <div class=\"link-icon icon-next-to-text-input\"></div>\r\n <lib-bimplus-input-text-field class=\"flex-grow\" formControlName=\"name\" placeholder=\"{{ '_Name' | translate }}\" (enterKeyPressed)=\"onEnterKeyPressedInHyperlinkForm()\"/>\r\n </div>\r\n <div class=\"hyperlink-input-row\">\r\n <div class=\"icon-next-to-text-input\"></div>\r\n <lib-bimplus-input-text-field class=\"flex-grow\" formControlName=\"url\" placeholder=\"{{ '_URL' | translate }}\" (enterKeyPressed)=\"onEnterKeyPressedInHyperlinkForm()\"/>\r\n </div>\r\n\r\n <lib-bimplus-buttons-row [items]=\"hyperlinkButtonRowItems\" (buttonClicked)=\"hyperlinkButtonRowButtonClicked($event)\"/>\r\n </form>\r\n }\r\n\r\n <div class=\"comments-tab-attachments-section\">\r\n <div class=\"comments-attachments-list\">\r\n <div class=\"tab-attachments icon attachments-icon hidden\"></div>\r\n <div class=\"attachment-icon icon-small interactive\" [title]=\"'_Add attachment' | translate\" (click)=\"attachments.open()\" (keydown)=\"attachments.open()\"></div>\r\n <div class=\"link-icon icon-small interactive\" [title]=\"'_Add hyperlink' | translate\" (click)=\"addHyperlinkIconClicked()\" (keydown)=\"addHyperlinkIconKeypress($event)\"></div>\r\n <div class=\"attachment-link-icon icon-small interactive\" [title]=\"'_Add_attachment_link' | translate\" (click)=\"linksToDocuments.createAttachmentLink(api!)\" (keydown)=\"linksToDocuments.createAttachmentLink(api!)\"></div>\r\n <div class=\"tab-attachmentlinks icon attachments-icon hidden\"></div>\r\n </div>\r\n <div class=\"add-comment\">\r\n <lib-bimplus-buttons-row\r\n [items]=\"buttonRowItems\"\r\n (buttonClicked)=\"buttonRowButtonClicked($event)\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"comments-separator\"></div>\r\n\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n @if ((commentsList$ | async)?.length === 0) {\r\n <div class=\"no-comments-found\">\r\n {{ '_No comments found' | translate }}\r\n </div>\r\n } @else {\r\n @for (item of commentsList$ | async; track item) {\r\n @if(item.createdAt && isSameDate(item.createdAt)) {\r\n <div class=\"comment-list-date\">\r\n {{formatDate(item.createdAt)}}\r\n </div>\r\n }\r\n <lib-bimplus-comment\r\n (outputActionCommentEvent)=\"handleActionCommentEvent($event)\"\r\n (getAttachment)=\"onGetAttachment($event)\"\r\n [message]=\"item.text\"\r\n [api]=\"api\"\r\n [date]=\"item.createdAt ? item.createdAt : ''\"\r\n action=\"delete\"\r\n [commentId]=\"item.id\"\r\n [attachments]=\"item.attachments ?? []\"\r\n [attachmentLinkItems]=\"item.attachmentLinks ?? []\"\r\n [hyperlinks]=\"item.hyperlinks\"\r\n [isActUserAuthor]=\"isActUserAuthor(item)\"\r\n [displayname]=\"displayName(item)\">\r\n </lib-bimplus-comment>\r\n }\r\n }\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n</div>\r\n}\r\n", styles: [":host{height:100%;display:flex;flex-direction:column;flex:1}.link-icon{background:url('data:image/svg+xml,<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0\" y=\"0\" viewBox=\"0 0 18 18\" xml:space=\"preserve\"><style>.st0{fill:%23444}<\\/style><path class=\"st0\" d=\"M16.7 4.2l-1.3-1.3c-1.2-1.2-3.2-1.2-4.4 0l-.6.6 1.1 1.1.7-.6c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-4.1 4.1c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.5-.6-1.4-.1-2L6.9 7.1c-1.1 1.2-1.1 3.1.1 4.3l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l4.1-4.1c1.1-1.2 1.1-3.2-.1-4.4z\"/><path class=\"st0\" d=\"M5.8 13c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.6-.6-1.5 0-2.1l4.1-4.1c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-.6.6 1.1 1.1.6-.6c1.2-1.2 1.2-3.2 0-4.4L9.8 4.3c-1.2-1.2-3.2-1.2-4.4 0L1.3 8.4c-1.2 1.2-1.2 3.2 0 4.4l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l.6-.6-1.1-1.1-.7.6z\"/></svg>') no-repeat center}.attachment-icon{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M12 3v12H6V3h2v10h2V2.4C10 1.6 9.4 1 8.6 1H5.4C4.6 1 4 1.6 4 2.4v13.3c0 .7.6 1.3 1.4 1.3h7.3c.8 0 1.4-.6 1.4-1.4V3H12z\" fill=\"%23444\"/></svg>') no-repeat center}.attachment-link-icon{background:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M4 8H8V6H4V8Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 3V5H12V3H4Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 11H8V9H4V11Z\" fill=\"%23444444\"/>%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 0H15V10H13V2H3V16H10V18H1V0Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M15.0198 11.9876V16.5C15.0198 16.7761 14.7959 17 14.5198 17H12.5C12.2239 17 12 16.7761 12 16.5V12.4938C12 12.2153 12.2277 11.9904 12.5062 11.9939C12.7799 11.9973 13 12.2201 13 12.4938V16H14V12.3913C14 11.5963 13.4456 11 12.6535 11H12.3861C11.5941 11 11 11.5963 11 12.3913V16.6087C11 17.4037 11.5941 18 12.3861 18H14.6139C15.4059 18 16 17.4037 16 16.6087V11.9876H15.0198Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A') no-repeat center}.icon{height:2rem;width:2rem;margin:0 .2rem}.icon-small{height:100%;width:1.8rem;margin:0 .2rem}.icon-small.Hyperlink{background:url('data:image/svg+xml,<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0\" y=\"0\" viewBox=\"0 0 18 18\" xml:space=\"preserve\"><style>.st0{fill:%23444}<\\/style><path class=\"st0\" d=\"M16.7 4.2l-1.3-1.3c-1.2-1.2-3.2-1.2-4.4 0l-.6.6 1.1 1.1.7-.6c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-4.1 4.1c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.5-.6-1.4-.1-2L6.9 7.1c-1.1 1.2-1.1 3.1.1 4.3l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l4.1-4.1c1.1-1.2 1.1-3.2-.1-4.4z\"/><path class=\"st0\" d=\"M5.8 13c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.6-.6-1.5 0-2.1l4.1-4.1c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-.6.6 1.1 1.1.6-.6c1.2-1.2 1.2-3.2 0-4.4L9.8 4.3c-1.2-1.2-3.2-1.2-4.4 0L1.3 8.4c-1.2 1.2-1.2 3.2 0 4.4l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l.6-.6-1.1-1.1-.7.6z\"/></svg>') no-repeat center}.icon-small.Attachment{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M12 3v12H6V3h2v10h2V2.4C10 1.6 9.4 1 8.6 1H5.4C4.6 1 4 1.6 4 2.4v13.3c0 .7.6 1.3 1.4 1.3h7.3c.8 0 1.4-.6 1.4-1.4V3H12z\" fill=\"%23444\"/></svg>') no-repeat center}.icon-small.AttachmentLink{background:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M4 8H8V6H4V8Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 3V5H12V3H4Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 11H8V9H4V11Z\" fill=\"%23444444\"/>%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 0H15V10H13V2H3V16H10V18H1V0Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M15.0198 11.9876V16.5C15.0198 16.7761 14.7959 17 14.5198 17H12.5C12.2239 17 12 16.7761 12 16.5V12.4938C12 12.2153 12.2277 11.9904 12.5062 11.9939C12.7799 11.9973 13 12.2201 13 12.4938V16H14V12.3913C14 11.5963 13.4456 11 12.6535 11H12.3861C11.5941 11 11 11.5963 11 12.3913V16.6087C11 17.4037 11.5941 18 12.3861 18H14.6139C15.4059 18 16 17.4037 16 16.6087V11.9876H15.0198Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A') no-repeat center}.icon-next-to-text-input{width:1.8rem;margin:.3rem .2rem 0}.interactive{cursor:pointer}.flex{display:flex}.flex-grow{flex-grow:1}.hyperlink-input-row{display:flex;gap:.2rem}.hyperlink-input-row lib-bimplus-input-text-field{margin-top:.2rem}.new-comment-attachment-list{margin:0 .6rem .2rem 0}.new-comment-attachments{--bim-attachment-item-background-size: 1.8rem}.new-comment-attachment{padding-left:.8rem;display:grid;grid-template-columns:auto 1fr auto;column-gap:.4rem}.new-comment-attachment .text{line-height:2.4rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.new-comment-attachment .cancel-icon{flex:1;background:url('data:image/svg+xml,<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0\" y=\"0\" width=\"18\" height=\"18\" xml:space=\"preserve\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"%23444\" d=\"M13.5 5.4L12.1 4 8.5 7.6 4.9 4 3.5 5.4 7.1 9l-3.6 3.6L4.9 14l3.6-3.6 3.6 3.6 1.4-1.4L9.9 9z\"/></svg>%0D%0A') no-repeat center;background-size:1.8rem;width:3.2rem;max-width:3.2rem;cursor:pointer}.new-comment-attachment.attachment-link .icon{background:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M4 8H8V6H4V8Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 3V5H12V3H4Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 11H8V9H4V11Z\" fill=\"%23444444\"/>%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 0H15V10H13V2H3V16H10V18H1V0Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M15.0198 11.9876V16.5C15.0198 16.7761 14.7959 17 14.5198 17H12.5C12.2239 17 12 16.7761 12 16.5V12.4938C12 12.2153 12.2277 11.9904 12.5062 11.9939C12.7799 11.9973 13 12.2201 13 12.4938V16H14V12.3913C14 11.5963 13.4456 11 12.6535 11H12.3861C11.5941 11 11 11.5963 11 12.3913V16.6087C11 17.4037 11.5941 18 12.3861 18H14.6139C15.4059 18 16 17.4037 16 16.6087V11.9876H15.0198Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A') no-repeat center}.new-comment-attachment.hyperlink .icon{background:url('data:image/svg+xml,<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0\" y=\"0\" viewBox=\"0 0 18 18\" xml:space=\"preserve\"><style>.st0{fill:%23444}<\\/style><path class=\"st0\" d=\"M16.7 4.2l-1.3-1.3c-1.2-1.2-3.2-1.2-4.4 0l-.6.6 1.1 1.1.7-.6c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-4.1 4.1c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.5-.6-1.4-.1-2L6.9 7.1c-1.1 1.2-1.1 3.1.1 4.3l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l4.1-4.1c1.1-1.2 1.1-3.2-.1-4.4z\"/><path class=\"st0\" d=\"M5.8 13c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.6-.6-1.5 0-2.1l4.1-4.1c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-.6.6 1.1 1.1.6-.6c1.2-1.2 1.2-3.2 0-4.4L9.8 4.3c-1.2-1.2-3.2-1.2-4.4 0L1.3 8.4c-1.2 1.2-1.2 3.2 0 4.4l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l.6-.6-1.1-1.1-.7.6z\"/></svg>') no-repeat center}.hyperlink-input-form{padding-left:.8rem;padding-right:.8rem;display:flex;flex-direction:column;gap:.2rem}.comment-tab-container{height:100%;display:flex;flex-direction:column;flex:1}.comment-tab-container .scrollable-content-container{position:relative;flex:1;width:100%}.comment-tab-container .scrollable-content-container lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;flex:1;width:100%}.comment-tab-container .textarea-container{margin-left:.8rem}.comment-tab-container .comments-tab-attachments-section{display:inline-flex;width:100%;justify-content:space-between;margin:1rem .8rem .8rem 0}.comment-tab-container .comments-tab-attachments-section .comments-attachments-list{align-items:center;margin-left:.8rem}.comment-tab-container .comments-tab-attachments-section .add-comment{display:inline-flex;align-items:center;margin-right:.8rem}.comment-tab-container .comments-attachments-list{display:inline-flex}.comment-tab-container .comments-attachments-list .attachments-icon{height:2rem;width:2rem;margin:0 .2rem;cursor:pointer}.comment-tab-container .comments-attachments-list .tab-attachments{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M12 3v12H6V3h2v10h2V2.4C10 1.6 9.4 1 8.6 1H5.4C4.6 1 4 1.6 4 2.4v13.3c0 .7.6 1.3 1.4 1.3h7.3c.8 0 1.4-.6 1.4-1.4V3H12z\" fill=\"%23444\"/></svg>') no-repeat center}.comment-tab-container .comments-attachments-list .tab-attachmentlinks{background:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M4 8H8V6H4V8Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 3V5H12V3H4Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 11H8V9H4V11Z\" fill=\"%23444444\"/>%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 0H15V10H13V2H3V16H10V18H1V0Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M15.0198 11.9876V16.5C15.0198 16.7761 14.7959 17 14.5198 17H12.5C12.2239 17 12 16.7761 12 16.5V12.4938C12 12.2153 12.2277 11.9904 12.5062 11.9939C12.7799 11.9973 13 12.2201 13 12.4938V16H14V12.3913C14 11.5963 13.4456 11 12.6535 11H12.3861C11.5941 11 11 11.5963 11 12.3913V16.6087C11 17.4037 11.5941 18 12.3861 18H14.6139C15.4059 18 16 17.4037 16 16.6087V11.9876H15.0198Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A') no-repeat center}.comment-tab-container .comments-attachments-list .tab-hyperlinks{background:url('data:image/svg+xml,<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0\" y=\"0\" viewBox=\"0 0 18 18\" xml:space=\"preserve\"><style>.st0{fill:%23444}<\\/style><path class=\"st0\" d=\"M16.7 4.2l-1.3-1.3c-1.2-1.2-3.2-1.2-4.4 0l-.6.6 1.1 1.1.7-.6c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-4.1 4.1c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.5-.6-1.4-.1-2L6.9 7.1c-1.1 1.2-1.1 3.1.1 4.3l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l4.1-4.1c1.1-1.2 1.1-3.2-.1-4.4z\"/><path class=\"st0\" d=\"M5.8 13c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.6-.6-1.5 0-2.1l4.1-4.1c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-.6.6 1.1 1.1.6-.6c1.2-1.2 1.2-3.2 0-4.4L9.8 4.3c-1.2-1.2-3.2-1.2-4.4 0L1.3 8.4c-1.2 1.2-1.2 3.2 0 4.4l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l.6-.6-1.1-1.1-.7.6z\"/></svg>') no-repeat center}.comment-tab-container .comments-separator{margin:0 .8rem;border-bottom:solid .1rem var(--comments-chat-comments-separator-border-color)}.comment-tab-container textarea::-webkit-scrollbar-track{background-color:var(--main-menu-apps-container-background-color-enabled)}.comment-tab-container textarea::-webkit-scrollbar-thumb{background-color:var(--propertymanager-object-tree-scrollable-border-color);border-radius:.5rem}.comment-tab-container textarea::-webkit-scrollbar{width:.7rem;background:var(--storage-info-placeholder-text-color-enabled)}.comment-tab-container .comment-list-date{text-align:center;margin-top:1.2rem}.comment-tab-container .hidden{display:none}.comment-tab-container .no-comments-found{padding:2.5rem .5rem;color:var(--details-controls-details-not-found-text-color);text-align:center}lib-bimplus-attachments{--bim-attachment-item-border-bottom: none;--bim-attachment-delete-button-icon-color: #444;--bim-attachment-delete-button-icon-font-weight: bold;--bim-attachment-item-background-image: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M12 3v12H6V3h2v10h2V2.4C10 1.6 9.4 1 8.6 1H5.4C4.6 1 4 1.6 4 2.4v13.3c0 .7.6 1.3 1.4 1.3h7.3c.8 0 1.4-.6 1.4-1.4V3H12z\" fill=\"%23444\"/></svg>')}lib-links-to-documents{--attachment-row-border-bottom: none;--bim-attachment-item-background-image: url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M4 8H8V6H4V8Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 3V5H12V3H4Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 11H8V9H4V11Z\" fill=\"%23444444\"/>%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 0H15V10H13V2H3V16H10V18H1V0Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M15.0198 11.9876V16.5C15.0198 16.7761 14.7959 17 14.5198 17H12.5C12.2239 17 12 16.7761 12 16.5V12.4938C12 12.2153 12.2277 11.9904 12.5062 11.9939C12.7799 11.9973 13 12.2201 13 12.4938V16H14V12.3913C14 11.5963 13.4456 11 12.6535 11H12.3861C11.5941 11 11 11.5963 11 12.3913V16.6087C11 17.4037 11.5941 18 12.3861 18H14.6139C15.4059 18 16 17.4037 16 16.6087V11.9876H15.0198Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A');--bim-attachment-delete-button: #444;--attachment-row-margin: 0;--bim-attachment-item-background-size: 1.8rem;--bim-attachment-delete-button-font-weight: bold}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "component", type: BimplusTextareaComponent, selector: "lib-bimplus-textarea", inputs: ["name", "placeholder", "readonly", "required", "minRows", "maxRows", "activeAutoResizeTextarea", "clearValue", "rows"], outputs: ["textAreaValueChange"] }, { kind: "component", type: BimplusCommentComponent, selector: "lib-bimplus-comment", inputs: ["api", "attachmentLinkItems", "message", "date", "action", "commentId", "isActUserAuthor", "displayname", "hyperlinks", "attachments"], outputs: ["outputActionCommentEvent", "getAttachment"] }, { kind: "component", type: BimplusButtonsRowComponent, selector: "lib-bimplus-buttons-row", inputs: ["items", "isMultiple", "canUpdateObject"], outputs: ["fileChanged", "buttonClicked"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: BimplusScrollableContainerComponent, selector: "lib-bimplus-scrollable-container" }, { kind: "component", type: BimplusInputTextFieldComponent, selector: "lib-bimplus-input-text-field", inputs: ["placeholder", "showClearButton", "validValue"], outputs: ["enterKeyPressed"] }, { kind: "component", type: BimplusAttachmentsComponent, selector: "lib-bimplus-attachments", inputs: ["api", "attachments", "closeIconTemplate", "listOnly"], outputs: ["deleteAttachment", "addAttachment", "getAttachment"] }, { kind: "component", type: LinksToDocumentsComponent, selector: "lib-links-to-documents", inputs: ["api", "canCreateAttachmentLink", "listOnly", "showEmptyMessage", "hideAttachmentSize", "attachments", "canDeleteAttachmentLink", "project", "wormholeSelector", "env", "rootObjectId"], outputs: ["attachmentsChange", "attachmentsLinkChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
|
|
346
|
+
}
|
|
347
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusObjectCommentsListComponent, decorators: [{
|
|
348
|
+
type: Component,
|
|
349
|
+
args: [{ selector: 'lib-bimplus-object-comments-list', imports: [
|
|
350
|
+
NgFor,
|
|
351
|
+
CommonModule,
|
|
352
|
+
BimplusTextareaComponent,
|
|
353
|
+
BimplusCommentComponent,
|
|
354
|
+
BimplusButtonsRowComponent,
|
|
355
|
+
TranslateModule,
|
|
356
|
+
BimplusScrollableContainerComponent,
|
|
357
|
+
BimplusInputTextFieldComponent,
|
|
358
|
+
BimplusAttachmentsComponent,
|
|
359
|
+
LinksToDocumentsComponent,
|
|
360
|
+
FormsModule,
|
|
361
|
+
ReactiveFormsModule,
|
|
362
|
+
AsyncPipe,
|
|
363
|
+
], providers: [
|
|
364
|
+
DatePipe,
|
|
365
|
+
BimplusObjectCommentsListService,
|
|
366
|
+
BimplusAttachmentsService,
|
|
367
|
+
{ provide: BIMPLUS_ATTACHMENTS_CONFIG, useValue: config },
|
|
368
|
+
], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, template: "@if (!loading()) {\r\n<div class=\"comment-tab-container\">\r\n <div class=\"textarea-container\">\r\n <lib-bimplus-textarea\r\n (textAreaValueChange)=\"onTextareaValueChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n [name]=\"name\"\r\n [readonly]=\"readonly\"\r\n [activeAutoResizeTextarea]=\"true\"\r\n [minRows]=\"minRows\"\r\n [maxRows]=\"maxRows\"\r\n [clearValue]=\"clearTextareaValue()\"\r\n ></lib-bimplus-textarea>\r\n </div>\r\n\r\n <lib-bimplus-attachments\r\n #attachments\r\n listOnly\r\n [class]=\"['new-comment-attachments']\"\r\n [attachments]=\"attachmentsState()\"\r\n (addAttachment)=\"onAddAttachment($event)\"\r\n (deleteAttachment)=\"onDeleteAttachment($event)\"\r\n />\r\n\r\n <lib-links-to-documents \r\n #linksToDocuments\r\n listOnly\r\n hideAttachmentSize\r\n showEmptyMessage=\"false\" \r\n [attachments]=\"attachmentLinkItems\"\r\n (attachmentsLinkChange)=\"onAttachmentsLinkChange($event)\"\r\n [api]=\"api\" \r\n [project]=\"project\"\r\n [rootObjectId]=''\r\n [canCreateAttachmentLink]=\"true\"\r\n [canDeleteAttachmentLink]=\"true\"\r\n [wormholeSelector]=\"wormholeSelector\"\r\n [env]=\"env\"\r\n />\r\n\r\n @if (newCommentAttachments.length > 0) {\r\n <div class=\"new-comment-attachment-list\">\r\n <div *ngFor=\"let item of newCommentAttachments\" \r\n [ngClass]=\"'new-comment-attachment ' + item.type\"\r\n [title]=\"item.type === 'Hyperlink' ? item.url: item.name\">\r\n <div \r\n [ngClass]=\"'icon-small ' + item.type\" \r\n [title]=\"item.type === 'Hyperlink' ? item.url: item.name\">\r\n </div>\r\n <div class=\"text\">{{ item.name }} </div> \r\n <span class=\"cancel-icon\" title=\"{{ item.deleteButtonTitle}}\" (click)=\"removeNewCommentAttachment(item)\" (keydown)=\"removeNewCommentAttachmentKeypress($event, item)\"></span>\r\n </div> \r\n </div>\r\n }\r\n\r\n @if (isAddingHyperlink) {\r\n <form [formGroup]=\"hyperlinkForm\" class=\"hyperlink-input-form\">\r\n <div class=\"hyperlink-input-row\">\r\n <div class=\"link-icon icon-next-to-text-input\"></div>\r\n <lib-bimplus-input-text-field class=\"flex-grow\" formControlName=\"name\" placeholder=\"{{ '_Name' | translate }}\" (enterKeyPressed)=\"onEnterKeyPressedInHyperlinkForm()\"/>\r\n </div>\r\n <div class=\"hyperlink-input-row\">\r\n <div class=\"icon-next-to-text-input\"></div>\r\n <lib-bimplus-input-text-field class=\"flex-grow\" formControlName=\"url\" placeholder=\"{{ '_URL' | translate }}\" (enterKeyPressed)=\"onEnterKeyPressedInHyperlinkForm()\"/>\r\n </div>\r\n\r\n <lib-bimplus-buttons-row [items]=\"hyperlinkButtonRowItems\" (buttonClicked)=\"hyperlinkButtonRowButtonClicked($event)\"/>\r\n </form>\r\n }\r\n\r\n <div class=\"comments-tab-attachments-section\">\r\n <div class=\"comments-attachments-list\">\r\n <div class=\"tab-attachments icon attachments-icon hidden\"></div>\r\n <div class=\"attachment-icon icon-small interactive\" [title]=\"'_Add attachment' | translate\" (click)=\"attachments.open()\" (keydown)=\"attachments.open()\"></div>\r\n <div class=\"link-icon icon-small interactive\" [title]=\"'_Add hyperlink' | translate\" (click)=\"addHyperlinkIconClicked()\" (keydown)=\"addHyperlinkIconKeypress($event)\"></div>\r\n <div class=\"attachment-link-icon icon-small interactive\" [title]=\"'_Add_attachment_link' | translate\" (click)=\"linksToDocuments.createAttachmentLink(api!)\" (keydown)=\"linksToDocuments.createAttachmentLink(api!)\"></div>\r\n <div class=\"tab-attachmentlinks icon attachments-icon hidden\"></div>\r\n </div>\r\n <div class=\"add-comment\">\r\n <lib-bimplus-buttons-row\r\n [items]=\"buttonRowItems\"\r\n (buttonClicked)=\"buttonRowButtonClicked($event)\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"comments-separator\"></div>\r\n\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n @if ((commentsList$ | async)?.length === 0) {\r\n <div class=\"no-comments-found\">\r\n {{ '_No comments found' | translate }}\r\n </div>\r\n } @else {\r\n @for (item of commentsList$ | async; track item) {\r\n @if(item.createdAt && isSameDate(item.createdAt)) {\r\n <div class=\"comment-list-date\">\r\n {{formatDate(item.createdAt)}}\r\n </div>\r\n }\r\n <lib-bimplus-comment\r\n (outputActionCommentEvent)=\"handleActionCommentEvent($event)\"\r\n (getAttachment)=\"onGetAttachment($event)\"\r\n [message]=\"item.text\"\r\n [api]=\"api\"\r\n [date]=\"item.createdAt ? item.createdAt : ''\"\r\n action=\"delete\"\r\n [commentId]=\"item.id\"\r\n [attachments]=\"item.attachments ?? []\"\r\n [attachmentLinkItems]=\"item.attachmentLinks ?? []\"\r\n [hyperlinks]=\"item.hyperlinks\"\r\n [isActUserAuthor]=\"isActUserAuthor(item)\"\r\n [displayname]=\"displayName(item)\">\r\n </lib-bimplus-comment>\r\n }\r\n }\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n</div>\r\n}\r\n", styles: [":host{height:100%;display:flex;flex-direction:column;flex:1}.link-icon{background:url('data:image/svg+xml,<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0\" y=\"0\" viewBox=\"0 0 18 18\" xml:space=\"preserve\"><style>.st0{fill:%23444}<\\/style><path class=\"st0\" d=\"M16.7 4.2l-1.3-1.3c-1.2-1.2-3.2-1.2-4.4 0l-.6.6 1.1 1.1.7-.6c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-4.1 4.1c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.5-.6-1.4-.1-2L6.9 7.1c-1.1 1.2-1.1 3.1.1 4.3l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l4.1-4.1c1.1-1.2 1.1-3.2-.1-4.4z\"/><path class=\"st0\" d=\"M5.8 13c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.6-.6-1.5 0-2.1l4.1-4.1c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-.6.6 1.1 1.1.6-.6c1.2-1.2 1.2-3.2 0-4.4L9.8 4.3c-1.2-1.2-3.2-1.2-4.4 0L1.3 8.4c-1.2 1.2-1.2 3.2 0 4.4l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l.6-.6-1.1-1.1-.7.6z\"/></svg>') no-repeat center}.attachment-icon{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M12 3v12H6V3h2v10h2V2.4C10 1.6 9.4 1 8.6 1H5.4C4.6 1 4 1.6 4 2.4v13.3c0 .7.6 1.3 1.4 1.3h7.3c.8 0 1.4-.6 1.4-1.4V3H12z\" fill=\"%23444\"/></svg>') no-repeat center}.attachment-link-icon{background:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M4 8H8V6H4V8Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 3V5H12V3H4Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 11H8V9H4V11Z\" fill=\"%23444444\"/>%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 0H15V10H13V2H3V16H10V18H1V0Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M15.0198 11.9876V16.5C15.0198 16.7761 14.7959 17 14.5198 17H12.5C12.2239 17 12 16.7761 12 16.5V12.4938C12 12.2153 12.2277 11.9904 12.5062 11.9939C12.7799 11.9973 13 12.2201 13 12.4938V16H14V12.3913C14 11.5963 13.4456 11 12.6535 11H12.3861C11.5941 11 11 11.5963 11 12.3913V16.6087C11 17.4037 11.5941 18 12.3861 18H14.6139C15.4059 18 16 17.4037 16 16.6087V11.9876H15.0198Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A') no-repeat center}.icon{height:2rem;width:2rem;margin:0 .2rem}.icon-small{height:100%;width:1.8rem;margin:0 .2rem}.icon-small.Hyperlink{background:url('data:image/svg+xml,<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0\" y=\"0\" viewBox=\"0 0 18 18\" xml:space=\"preserve\"><style>.st0{fill:%23444}<\\/style><path class=\"st0\" d=\"M16.7 4.2l-1.3-1.3c-1.2-1.2-3.2-1.2-4.4 0l-.6.6 1.1 1.1.7-.6c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-4.1 4.1c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.5-.6-1.4-.1-2L6.9 7.1c-1.1 1.2-1.1 3.1.1 4.3l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l4.1-4.1c1.1-1.2 1.1-3.2-.1-4.4z\"/><path class=\"st0\" d=\"M5.8 13c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.6-.6-1.5 0-2.1l4.1-4.1c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-.6.6 1.1 1.1.6-.6c1.2-1.2 1.2-3.2 0-4.4L9.8 4.3c-1.2-1.2-3.2-1.2-4.4 0L1.3 8.4c-1.2 1.2-1.2 3.2 0 4.4l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l.6-.6-1.1-1.1-.7.6z\"/></svg>') no-repeat center}.icon-small.Attachment{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M12 3v12H6V3h2v10h2V2.4C10 1.6 9.4 1 8.6 1H5.4C4.6 1 4 1.6 4 2.4v13.3c0 .7.6 1.3 1.4 1.3h7.3c.8 0 1.4-.6 1.4-1.4V3H12z\" fill=\"%23444\"/></svg>') no-repeat center}.icon-small.AttachmentLink{background:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M4 8H8V6H4V8Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 3V5H12V3H4Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 11H8V9H4V11Z\" fill=\"%23444444\"/>%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 0H15V10H13V2H3V16H10V18H1V0Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M15.0198 11.9876V16.5C15.0198 16.7761 14.7959 17 14.5198 17H12.5C12.2239 17 12 16.7761 12 16.5V12.4938C12 12.2153 12.2277 11.9904 12.5062 11.9939C12.7799 11.9973 13 12.2201 13 12.4938V16H14V12.3913C14 11.5963 13.4456 11 12.6535 11H12.3861C11.5941 11 11 11.5963 11 12.3913V16.6087C11 17.4037 11.5941 18 12.3861 18H14.6139C15.4059 18 16 17.4037 16 16.6087V11.9876H15.0198Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A') no-repeat center}.icon-next-to-text-input{width:1.8rem;margin:.3rem .2rem 0}.interactive{cursor:pointer}.flex{display:flex}.flex-grow{flex-grow:1}.hyperlink-input-row{display:flex;gap:.2rem}.hyperlink-input-row lib-bimplus-input-text-field{margin-top:.2rem}.new-comment-attachment-list{margin:0 .6rem .2rem 0}.new-comment-attachments{--bim-attachment-item-background-size: 1.8rem}.new-comment-attachment{padding-left:.8rem;display:grid;grid-template-columns:auto 1fr auto;column-gap:.4rem}.new-comment-attachment .text{line-height:2.4rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.new-comment-attachment .cancel-icon{flex:1;background:url('data:image/svg+xml,<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0\" y=\"0\" width=\"18\" height=\"18\" xml:space=\"preserve\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" fill=\"%23444\" d=\"M13.5 5.4L12.1 4 8.5 7.6 4.9 4 3.5 5.4 7.1 9l-3.6 3.6L4.9 14l3.6-3.6 3.6 3.6 1.4-1.4L9.9 9z\"/></svg>%0D%0A') no-repeat center;background-size:1.8rem;width:3.2rem;max-width:3.2rem;cursor:pointer}.new-comment-attachment.attachment-link .icon{background:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M4 8H8V6H4V8Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 3V5H12V3H4Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 11H8V9H4V11Z\" fill=\"%23444444\"/>%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 0H15V10H13V2H3V16H10V18H1V0Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M15.0198 11.9876V16.5C15.0198 16.7761 14.7959 17 14.5198 17H12.5C12.2239 17 12 16.7761 12 16.5V12.4938C12 12.2153 12.2277 11.9904 12.5062 11.9939C12.7799 11.9973 13 12.2201 13 12.4938V16H14V12.3913C14 11.5963 13.4456 11 12.6535 11H12.3861C11.5941 11 11 11.5963 11 12.3913V16.6087C11 17.4037 11.5941 18 12.3861 18H14.6139C15.4059 18 16 17.4037 16 16.6087V11.9876H15.0198Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A') no-repeat center}.new-comment-attachment.hyperlink .icon{background:url('data:image/svg+xml,<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0\" y=\"0\" viewBox=\"0 0 18 18\" xml:space=\"preserve\"><style>.st0{fill:%23444}<\\/style><path class=\"st0\" d=\"M16.7 4.2l-1.3-1.3c-1.2-1.2-3.2-1.2-4.4 0l-.6.6 1.1 1.1.7-.6c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-4.1 4.1c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.5-.6-1.4-.1-2L6.9 7.1c-1.1 1.2-1.1 3.1.1 4.3l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l4.1-4.1c1.1-1.2 1.1-3.2-.1-4.4z\"/><path class=\"st0\" d=\"M5.8 13c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.6-.6-1.5 0-2.1l4.1-4.1c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-.6.6 1.1 1.1.6-.6c1.2-1.2 1.2-3.2 0-4.4L9.8 4.3c-1.2-1.2-3.2-1.2-4.4 0L1.3 8.4c-1.2 1.2-1.2 3.2 0 4.4l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l.6-.6-1.1-1.1-.7.6z\"/></svg>') no-repeat center}.hyperlink-input-form{padding-left:.8rem;padding-right:.8rem;display:flex;flex-direction:column;gap:.2rem}.comment-tab-container{height:100%;display:flex;flex-direction:column;flex:1}.comment-tab-container .scrollable-content-container{position:relative;flex:1;width:100%}.comment-tab-container .scrollable-content-container lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;flex:1;width:100%}.comment-tab-container .textarea-container{margin-left:.8rem}.comment-tab-container .comments-tab-attachments-section{display:inline-flex;width:100%;justify-content:space-between;margin:1rem .8rem .8rem 0}.comment-tab-container .comments-tab-attachments-section .comments-attachments-list{align-items:center;margin-left:.8rem}.comment-tab-container .comments-tab-attachments-section .add-comment{display:inline-flex;align-items:center;margin-right:.8rem}.comment-tab-container .comments-attachments-list{display:inline-flex}.comment-tab-container .comments-attachments-list .attachments-icon{height:2rem;width:2rem;margin:0 .2rem;cursor:pointer}.comment-tab-container .comments-attachments-list .tab-attachments{background:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M12 3v12H6V3h2v10h2V2.4C10 1.6 9.4 1 8.6 1H5.4C4.6 1 4 1.6 4 2.4v13.3c0 .7.6 1.3 1.4 1.3h7.3c.8 0 1.4-.6 1.4-1.4V3H12z\" fill=\"%23444\"/></svg>') no-repeat center}.comment-tab-container .comments-attachments-list .tab-attachmentlinks{background:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M4 8H8V6H4V8Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 3V5H12V3H4Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 11H8V9H4V11Z\" fill=\"%23444444\"/>%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 0H15V10H13V2H3V16H10V18H1V0Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M15.0198 11.9876V16.5C15.0198 16.7761 14.7959 17 14.5198 17H12.5C12.2239 17 12 16.7761 12 16.5V12.4938C12 12.2153 12.2277 11.9904 12.5062 11.9939C12.7799 11.9973 13 12.2201 13 12.4938V16H14V12.3913C14 11.5963 13.4456 11 12.6535 11H12.3861C11.5941 11 11 11.5963 11 12.3913V16.6087C11 17.4037 11.5941 18 12.3861 18H14.6139C15.4059 18 16 17.4037 16 16.6087V11.9876H15.0198Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A') no-repeat center}.comment-tab-container .comments-attachments-list .tab-hyperlinks{background:url('data:image/svg+xml,<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0\" y=\"0\" viewBox=\"0 0 18 18\" xml:space=\"preserve\"><style>.st0{fill:%23444}<\\/style><path class=\"st0\" d=\"M16.7 4.2l-1.3-1.3c-1.2-1.2-3.2-1.2-4.4 0l-.6.6 1.1 1.1.7-.6c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-4.1 4.1c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.5-.6-1.4-.1-2L6.9 7.1c-1.1 1.2-1.1 3.1.1 4.3l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l4.1-4.1c1.1-1.2 1.1-3.2-.1-4.4z\"/><path class=\"st0\" d=\"M5.8 13c-.6.6-1.5.6-2.1 0l-1.3-1.3c-.6-.6-.6-1.5 0-2.1l4.1-4.1c.6-.6 1.5-.6 2.1 0l1.3 1.3c.6.6.6 1.5 0 2.1l-.6.6 1.1 1.1.6-.6c1.2-1.2 1.2-3.2 0-4.4L9.8 4.3c-1.2-1.2-3.2-1.2-4.4 0L1.3 8.4c-1.2 1.2-1.2 3.2 0 4.4l1.3 1.3c1.2 1.2 3.2 1.2 4.4 0l.6-.6-1.1-1.1-.7.6z\"/></svg>') no-repeat center}.comment-tab-container .comments-separator{margin:0 .8rem;border-bottom:solid .1rem var(--comments-chat-comments-separator-border-color)}.comment-tab-container textarea::-webkit-scrollbar-track{background-color:var(--main-menu-apps-container-background-color-enabled)}.comment-tab-container textarea::-webkit-scrollbar-thumb{background-color:var(--propertymanager-object-tree-scrollable-border-color);border-radius:.5rem}.comment-tab-container textarea::-webkit-scrollbar{width:.7rem;background:var(--storage-info-placeholder-text-color-enabled)}.comment-tab-container .comment-list-date{text-align:center;margin-top:1.2rem}.comment-tab-container .hidden{display:none}.comment-tab-container .no-comments-found{padding:2.5rem .5rem;color:var(--details-controls-details-not-found-text-color);text-align:center}lib-bimplus-attachments{--bim-attachment-item-border-bottom: none;--bim-attachment-delete-button-icon-color: #444;--bim-attachment-delete-button-icon-font-weight: bold;--bim-attachment-item-background-image: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M12 3v12H6V3h2v10h2V2.4C10 1.6 9.4 1 8.6 1H5.4C4.6 1 4 1.6 4 2.4v13.3c0 .7.6 1.3 1.4 1.3h7.3c.8 0 1.4-.6 1.4-1.4V3H12z\" fill=\"%23444\"/></svg>')}lib-links-to-documents{--attachment-row-border-bottom: none;--bim-attachment-item-background-image: url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M4 8H8V6H4V8Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 3V5H12V3H4Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M4 11H8V9H4V11Z\" fill=\"%23444444\"/>%0D%0A<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 0H15V10H13V2H3V16H10V18H1V0Z\" fill=\"%23444444\"/>%0D%0A<path d=\"M15.0198 11.9876V16.5C15.0198 16.7761 14.7959 17 14.5198 17H12.5C12.2239 17 12 16.7761 12 16.5V12.4938C12 12.2153 12.2277 11.9904 12.5062 11.9939C12.7799 11.9973 13 12.2201 13 12.4938V16H14V12.3913C14 11.5963 13.4456 11 12.6535 11H12.3861C11.5941 11 11 11.5963 11 12.3913V16.6087C11 17.4037 11.5941 18 12.3861 18H14.6139C15.4059 18 16 17.4037 16 16.6087V11.9876H15.0198Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A');--bim-attachment-delete-button: #444;--attachment-row-margin: 0;--bim-attachment-item-background-size: 1.8rem;--bim-attachment-delete-button-font-weight: bold}\n"] }]
|
|
369
|
+
}], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.TranslateService }, { type: i3.DatePipe }, { type: i4.FormBuilder }, { type: i5.BimplusAttachmentsService }, { type: i6.BimplusObjectCommentsListService }, { type: i7.BimplusStatusBarService }], propDecorators: { api: [{
|
|
370
|
+
type: Input,
|
|
371
|
+
args: [{ required: true }]
|
|
372
|
+
}], project: [{
|
|
373
|
+
type: Input
|
|
374
|
+
}], wormholeSelector: [{
|
|
375
|
+
type: Input
|
|
376
|
+
}], env: [{
|
|
377
|
+
type: Input
|
|
378
|
+
}], attachmentLinkItems: [{
|
|
379
|
+
type: Input
|
|
380
|
+
}], rootObjectId: [{
|
|
381
|
+
type: Input
|
|
382
|
+
}], userId: [{
|
|
383
|
+
type: Input
|
|
384
|
+
}] } });
|
|
385
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1vYmplY3QtY29tbWVudHMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9iaW1wbHVzLW9iamVjdC1jb21tZW50cy1saXN0L2JpbXBsdXMtb2JqZWN0LWNvbW1lbnRzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3QtY29tbWVudHMtbGlzdC9iaW1wbHVzLW9iamVjdC1jb21tZW50cy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLGlCQUFpQixFQUFDLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBR3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHdFQUF3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QUduQzt3QkFDUCxLQUFLO3dCQUNMLFlBQVk7d0JBQ1osd0JBQXdCO3dCQUN4Qix1QkFBdUI7d0JBQ3ZCLDBCQUEwQjt3QkFDMUIsZUFBZTt3QkFDZixtQ0FBbUM7d0JBQ25DLDhCQUE4Qjt3QkFDOUIsMkJBQTJCO3dCQUMzQix5QkFBeUI7d0JBQ3pCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixTQUFTO3FCQUNWLGFBQ1U7d0JBQ1QsUUFBUTt3QkFDUixnQ0FBZ0M7d0JBQ2hDLHlCQUF5Qjt3QkFDekIsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtxQkFDMUQsY0FDVyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLFNBQVM7K1JBT2YsR0FBRztzQkFBN0IsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkE0QkYsWUFBWTtzQkFEZixLQUFLO2dCQVVGLE1BQU07c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBzaWduYWwsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uLENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEJpbXBsdXNPdmVybGF5RGlhbG9nRGVsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1vdmVybGF5LWRpYWxvZy1kZWxldGUvYmltcGx1cy1vdmVybGF5LWRpYWxvZy1kZWxldGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEFzeW5jUGlwZSwgRGF0ZVBpcGUsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL2JpbXBsdXMtZ2VuZXJhbC1vdmVybGF5LWRpYWxvZy9iaW1wbHVzLWdlbmVyYWwtb3ZlcmxheS1kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEJpbXBsdXNUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtdGV4dGFyZWEvYmltcGx1cy10ZXh0YXJlYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzQ29tbWVudENvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtY29tbWVudC9iaW1wbHVzLWNvbW1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IFdlYlNkayBmcm9tICdiaW1wbHVzLXdlYnNkayc7XHJcbmltcG9ydCB7IEJpbXBsdXNCdXR0b25DbGlja0V2ZW50LCBCaW1wbHVzQnV0dG9uUm93SXRlbSB9IGZyb20gJy4uL2JpbXBsdXMtYnV0dG9ucy1yb3cvYmltcGx1cy1idXR0b25zLXJvdy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBCaW1wbHVzQnV0dG9uc1Jvd0NvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtYnV0dG9ucy1yb3cvYmltcGx1cy1idXR0b25zLXJvdy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0L2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzU2Nyb2xsYWJsZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXIvYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tZW50RGF0YSwgQ29tbWVudE91dHB1dERhdGEsIElEaWFsb2dDb25maXJtQ2xvc2UgfSBmcm9tICcuL2JpbXBsdXNPYmplY3RDb21tZW50c0knO1xyXG5pbXBvcnQgeyBCaW1wbHVzSW5wdXRUZXh0RmllbGRDb21wb25lbnQgfSBmcm9tIFwiLi4vYmltcGx1cy1pbnB1dC10ZXh0LWZpZWxkL2JpbXBsdXMtaW5wdXQtdGV4dC1maWVsZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQmltcGx1c0F0dGFjaG1lbnRzQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1hdHRhY2htZW50cy9iaW1wbHVzLWF0dGFjaG1lbnRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJpbXBsdXNBdHRhY2htZW50c1NlcnZpY2UgfSBmcm9tICcuLi9iaW1wbHVzLWF0dGFjaG1lbnRzL3NlcnZpY2VzL2JpbXBsdXMtYXR0YWNobWVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQXR0YWNobWVudCxcclxuICBCSU1QTFVTX0FUVEFDSE1FTlRTX0NPTkZJRyxcclxuICBCaW1wbHVzQXR0YWNobWVudHNDb25maWcsXHJcbn0gZnJvbSAnLi4vYmltcGx1cy1hdHRhY2htZW50cy9iaW1wbHVzLWF0dGFjaG1lbnRzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJpbXBsdXNPYmplY3RDb21tZW50c0xpc3RTZXJ2aWNlIH0gZnJvbSAnLi9iaW1wbHVzLW9iamVjdC1jb21tZW50cy1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaW5rc1RvRG9jdW1lbnRzQ29tcG9uZW50IH0gZnJvbSAnLi4vbGlua3MtdG8tZG9jdW1lbnRzL2xpbmtzLXRvLWRvY3VtZW50cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcm9qZWN0TmF2aWdhdG9yUHJvamVjdCB9IGZyb20gJy4uL3Byb2plY3QtbW9kZWxzL3Byb2plY3QtbW9kZWxzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEJpbXBsdXNTdGF0dXNCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vYmltcGx1cy1zdGF0dXMtYmFyL2JpbXBsdXMtc3RhdHVzLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHtuZXdBdHRhY2hJbmZvfSBmcm9tICcuL2JpbXBsdXMtb2JqZWN0LWNvbW1lbnRzLWxpc3QuaW50ZXJmYWNlJztcclxuXHJcblxyXG5jb25zdCBjb25maWc6IEJpbXBsdXNBdHRhY2htZW50c0NvbmZpZyA9IHtcclxuICBzaG93Tm9BdHRhY2htZW50c0ZvdW5kOiBmYWxzZSxcclxuICBoaWRlQXR0YWNobWVudFNpemU6IHRydWUsXHJcbn07XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJpbXBsdXMtb2JqZWN0LWNvbW1lbnRzLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iaW1wbHVzLW9iamVjdC1jb21tZW50cy1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9iaW1wbHVzLW9iamVjdC1jb21tZW50cy1saXN0LmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdGb3IsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBCaW1wbHVzVGV4dGFyZWFDb21wb25lbnQsXHJcbiAgICBCaW1wbHVzQ29tbWVudENvbXBvbmVudCxcclxuICAgIEJpbXBsdXNCdXR0b25zUm93Q29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgQmltcGx1c1Njcm9sbGFibGVDb250YWluZXJDb21wb25lbnQsXHJcbiAgICBCaW1wbHVzSW5wdXRUZXh0RmllbGRDb21wb25lbnQsXHJcbiAgICBCaW1wbHVzQXR0YWNobWVudHNDb21wb25lbnQsXHJcbiAgICBMaW5rc1RvRG9jdW1lbnRzQ29tcG9uZW50LFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQXN5bmNQaXBlLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBEYXRlUGlwZSxcclxuICAgIEJpbXBsdXNPYmplY3RDb21tZW50c0xpc3RTZXJ2aWNlLFxyXG4gICAgQmltcGx1c0F0dGFjaG1lbnRzU2VydmljZSxcclxuICAgIHsgcHJvdmlkZTogQklNUExVU19BVFRBQ0hNRU5UU19DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfSxcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c09iamVjdENvbW1lbnRzTGlzdENvbXBvbmVudFxyXG4gIGV4dGVuZHMgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIGh5cGVybGlua0Zvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgYXBpITogV2ViU2RrLkFwaSB8IG51bGw7XHJcbiAgQElucHV0KCkgcHJvamVjdDogUHJvamVjdE5hdmlnYXRvclByb2plY3QgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSB3b3JtaG9sZVNlbGVjdG9yOiBzdHJpbmcgPSBcImxvY2FsRW1iZWRkZWRNb2RhbElkXCI7XHJcbiAgQElucHV0KCkgZW52OiBzdHJpbmcgPSBcInByb2RcIjtcclxuICBASW5wdXQoKSBhdHRhY2htZW50TGlua0l0ZW1zOiBXZWJTZGsuQXR0YWNobWVudExpbmtbXSA9IFtdXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbW1lbnRzTGlzdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdlYlNkay5Db21tZW50UmVzcG9uc2VbXT4oW10pO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXR0YWNobWVudHNTdGF0ZSA9IHNpZ25hbDxBdHRhY2htZW50W10+KFtdKTtcclxuICBidXR0b25Sb3dJdGVtczogQmltcGx1c0J1dHRvblJvd0l0ZW1bXSA9IFtdO1xyXG4gIGh5cGVybGlua0J1dHRvblJvd0l0ZW1zOiBCaW1wbHVzQnV0dG9uUm93SXRlbVtdID0gW107XHJcbiAgdGV4dEFyZWFWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgbGFzdFNob3duRGF0ZSA9ICcnO1xyXG4gIHBsYWNlaG9sZGVyID0gJyc7XHJcbiAgbmFtZSA9ICcnO1xyXG4gIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgYXV0b1Jlc2l6ZVRleHRhcmVhID0gdHJ1ZTtcclxuICBtaW5Sb3dzID0gMztcclxuICBtYXhSb3dzID0gMTA7XHJcbiAgY2xlYXJWYWx1ZSA9IGZhbHNlO1xyXG4gIHN0YXR1c0JhclRpdGxlTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfTG9hZGluZycpO1xyXG4gIFxyXG4gIC8vIGF0dGFjaG1lbnQgaWRzIHJlYWR5IHRvIG1hcCB0byBjb25jcmV0ZSBjb21tZW50XHJcbiAgbmV3QXR0YWNobWVudElEczogc3RyaW5nW10gPSBbXVxyXG5cclxuICBpc0FkZGluZ0h5cGVybGluazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIG5ld0NvbW1lbnRBdHRhY2htZW50czogbmV3QXR0YWNoSW5mbyBbXSA9IFtdO1xyXG4gIFxyXG4gIHByaXZhdGUgX3Jvb3RPYmplY3RJZCA9ICcnO1xyXG4gIHByaXZhdGUgX3VzZXJJZCA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCByb290T2JqZWN0SWQoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5fcm9vdE9iamVjdElkID0gaWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgcm9vdE9iamVjdElkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcm9vdE9iamVjdElkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdXNlcklkKGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3VzZXJJZCA9IGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHVzZXJJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VzZXJJZDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYmltcGx1c0F0dGFjaG1lbnRzU2VydmljZTogQmltcGx1c0F0dGFjaG1lbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYmltcGx1c09iamVjdENvbW1lbnRzTGlzdFNlcnZpY2U6IEJpbXBsdXNPYmplY3RDb21tZW50c0xpc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdGF0dXNCYXJTZXJ2aWNlOiBCaW1wbHVzU3RhdHVzQmFyU2VydmljZSAgICBcclxuICApIHtcclxuICAgIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UpO1xyXG5cclxuICAgIHRoaXMuaHlwZXJsaW5rRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBuYW1lOiBbJycsIFtdXSxcclxuICAgICAgdXJsOiBbXHJcbiAgICAgICAgJycsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybigvXltePD5dKiQvKSwgLy8gRG8gbm90IGFsbG93IDwgb3IgPlxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKD8hXFxzKiQpLisvKSwgLy8gRG8gbm90IGFsbG93IGFsbCBlbXB0eSBzdHJpbmcsIGJ1dCBhbGxvdyB0ZXh0IGFmdGVyIHNwYWNlc1xyXG4gICAgICAgIF0sXHJcbiAgICAgIF0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlzQ3JlYXRlQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIShcclxuICAgICAgdGhpcy50ZXh0QXJlYVZhbHVlIHx8XHJcbiAgICAgIHRoaXMubmV3QXR0YWNobWVudElEcz8ubGVuZ3RoID4gMCB8fFxyXG4gICAgICB0aGlzLmdldEh5cGVybGlua3ModGhpcy5yb290T2JqZWN0SWQpPy5sZW5ndGggPiAwIHx8XHJcbiAgICAgIHRoaXMuYXR0YWNobWVudHNTdGF0ZSgpPy5sZW5ndGggPiAwXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tDcmVhdGVCdXR0b25TdGF0ZSgpIHtcclxuICAgIGlmICghdGhpcy5idXR0b25Sb3dJdGVtcz8uWzBdKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuYnV0dG9uUm93SXRlbXNbMF0uZGlzYWJsZWQgPSB0aGlzLmlzQ3JlYXRlQnV0dG9uRGlzYWJsZWQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYmltcGx1c09iamVjdENvbW1lbnRzTGlzdFNlcnZpY2UuYXBpID0gdGhpcy5hcGkhO1xyXG4gICAgdGhpcy5sb2FkQ29tbWVudHMoKTsgICAgXHJcbiAgICBjb25zdCBzdWJtaXQ6IEJpbXBsdXNCdXR0b25Sb3dJdGVtW10gPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogJ3N1Ym1pdCcsXHJcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfQWRkIGNvbW1lbnQnKSxcclxuICAgICAgICB0b29sdGlwOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX0FkZCBjb21tZW50JyksXHJcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuaXNDcmVhdGVCdXR0b25EaXNhYmxlZCgpLFxyXG4gICAgICAgIGJ1dHRvblN0eWxlOiAncHJpbWFyeScsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAnX1BsYWNlIGNvbW1lbnQgdGV4dCBoZXJlJ1xyXG4gICAgKTtcclxuICAgIHRoaXMubmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdjb21tZW50Jyk7XHJcbiAgICB0aGlzLmJ1dHRvblJvd0l0ZW1zID0gc3VibWl0O1xyXG5cclxuICAgIHRoaXMuaHlwZXJsaW5rQnV0dG9uUm93SXRlbXMucHVzaChcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAnY2FuY2VsLWh5cGVybGluaycsXHJcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfQ2FuY2VsJyksXHJcbiAgICAgICAgdG9vbHRpcDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ19DYW5jZWwnKSxcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgYnV0dG9uU3R5bGU6ICdwcmltYXJ5JyxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAnYWRkLWh5cGVybGluaycsXHJcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfQWRkIGh5cGVybGluaycpLFxyXG4gICAgICAgIHRvb2x0aXA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfQWRkIGh5cGVybGluaycpLFxyXG4gICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvblN0eWxlOiAncHJpbWFyeScsXHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5oeXBlcmxpbmtGb3JtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChzdGF0dXMpID0+IHtcclxuICAgICAgdGhpcy5oeXBlcmxpbmtCdXR0b25Sb3dJdGVtc1sxXS5kaXNhYmxlZCA9IHN0YXR1cyAhPT0gJ1ZBTElEJztcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sncm9vdE9iamVjdElkJ10gJiYgIWNoYW5nZXNbJ3Jvb3RPYmplY3RJZCddLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMubG9hZENvbW1lbnRzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25BdHRhY2htZW50c0xpbmtDaGFuZ2UobmV3QXR0YWNobWVudHM6IG5ld0F0dGFjaEluZm9bXSk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3RGVjb3JhdGVkQXR0YWNobWVudHM6bmV3QXR0YWNoSW5mb1tdID0gbmV3QXR0YWNobWVudHMubWFwKChhdHRhY2htZW50KSA9PiB7XHJcbiAgICAgIGF0dGFjaG1lbnQuaWNvbkNsYXNzID0gJ2ZhIGZhLWxpbmsnO1xyXG4gICAgICBhdHRhY2htZW50Lmljb25UaXRsZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfQXR0YWNobWVudF9saW5rJyk7XHJcbiAgICAgIGF0dGFjaG1lbnQuZGVsZXRlQnV0dG9uVGl0bGUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX0RlbGV0ZV9hdHRhY2htZW50bGluaycpO1xyXG4gICAgICByZXR1cm4gYXR0YWNobWVudDtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgbmV3Q29tbWVudEF0dGFjaG1lbnRzID0gdGhpcy5uZXdDb21tZW50QXR0YWNobWVudHMuZmlsdGVyKChhdHRhY2htZW50KSA9PiBhdHRhY2htZW50Py50eXBlID09PSAnSHlwZXJsaW5rJyk7XHJcbiAgICB0aGlzLm5ld0NvbW1lbnRBdHRhY2htZW50cyA9IFsuLi5uZXdDb21tZW50QXR0YWNobWVudHMsIC4uLm5ld0RlY29yYXRlZEF0dGFjaG1lbnRzXTsgICBcclxuICAgIHRoaXMubmV3QXR0YWNobWVudElEcyA9IG5ld0F0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCkgPT4gYXR0YWNobWVudC5pZCk7XHJcbiAgICB0aGlzLmNoZWNrQ3JlYXRlQnV0dG9uU3RhdGUoKTtcclxuICB9XHJcbiAgXHJcblxyXG4gIHByb3RlY3RlZCBvbkFkZEF0dGFjaG1lbnQoZmlsZTogRmlsZSk6IHZvaWQge1xyXG4gICAgY29uc3QgYXR0YWNobWVudCA9IHRoaXMuYmltcGx1c0F0dGFjaG1lbnRzU2VydmljZS5nZXRBdHRhY2htZW50KGZpbGUpO1xyXG4gICAgdGhpcy5hdHRhY2htZW50c1N0YXRlLnVwZGF0ZShhdHRhY2htZW50cyA9PiAoWy4uLmF0dGFjaG1lbnRzLCBhdHRhY2htZW50XSkpO1xyXG4gICAgdGhpcy5jaGVja0NyZWF0ZUJ1dHRvblN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25EZWxldGVBdHRhY2htZW50KGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuYXR0YWNobWVudHNTdGF0ZS51cGRhdGUoYXR0YWNobWVudHMgPT4gYXR0YWNobWVudHMuZmlsdGVyKGEgPT4gYSAhPT0gYXR0YWNobWVudCkpO1xyXG4gICAgdGhpcy5jaGVja0NyZWF0ZUJ1dHRvblN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKiogRXZlbnQgb24gY2xpY2sgYXR0YWNobWVudC4gKi9cclxuICBwcm90ZWN0ZWQgb25HZXRBdHRhY2htZW50KGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuYmltcGx1c09iamVjdENvbW1lbnRzTGlzdFNlcnZpY2UuZG93bmxvYWRBdHRhY2htZW50KGF0dGFjaG1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25UZXh0YXJlYVZhbHVlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudGV4dEFyZWFWYWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5jaGVja0NyZWF0ZUJ1dHRvblN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVBY3Rpb25Db21tZW50RXZlbnQoZXZlbnQ6IENvbW1lbnRPdXRwdXREYXRhKSB7XHJcbiAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnZGVsZXRlJykge1xyXG4gICAgICBjb25zdCBkYXRhID0gZXZlbnQuZGF0YSBhcyBDb21tZW50RGF0YTtcclxuICAgICAgdGhpcy5vcGVuRGlhbG9nRGVsZXRlQ29tbWVudChkYXRhLmNvbW1lbnRJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25EaWFsb2dDbG9zZShkYXRhOiBJRGlhbG9nQ29uZmlybUNsb3NlKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xvc2UoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBvcGVuRGlhbG9nRGVsZXRlQ29tbWVudChjb21tZW50SWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQmltcGx1c092ZXJsYXlEaWFsb2dEZWxldGVDb21wb25lbnQsIHtcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIHBvc2l0aW9uOiAnbWlkZGxlJyxcclxuICAgICAgICBwb3NpdGlvbk9wdGlvbnM6IHt9LFxyXG4gICAgICAgIG92ZXJsYXlDbGlja0VuYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG92ZXJsYXlWaXNpYmlsaXR5RW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXHJcbiAgICAgICAgICAnX0NvbW1lbnQgZGVsZXRlIGNvbmZpcm1hdGlvbiB0aXRsZSdcclxuICAgICAgICApLFxyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ19Db21tZW50IGRlbGV0ZSBjb25maXJtYXRpb24gbWVzc2FnZSdcclxuICAgICAgICApLFxyXG4gICAgICAgIGFjY2VwdENhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRlbGV0ZUNvbW1lbnQoY29tbWVudElkKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc1NhbWVEYXRlKGRhdGU/OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghZGF0ZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0aW1lID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ3Nob3J0RGF0ZScpO1xyXG4gICAgaWYgKHRoaXMubGFzdFNob3duRGF0ZSA9PT0gdGltZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxhc3RTaG93bkRhdGUgPSBkYXRlO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBidXR0b25Sb3dCdXR0b25DbGlja2VkKCRldmVudDogQmltcGx1c0J1dHRvbkNsaWNrRXZlbnQpIHtcclxuICAgIGlmICgkZXZlbnQuaWQgPT09ICdzdWJtaXQnKSB7XHJcbiAgICAgIGlmICghdGhpcy5hcGkgfHwgIXRoaXMucm9vdE9iamVjdElkKSByZXR1cm47XHJcbiAgICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XHJcblxyXG4gICAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICAgIHRleHQ6IHRoaXMudGV4dEFyZWFWYWx1ZSxcclxuICAgICAgICBvYmplY3RJZDogdGhpcy5yb290T2JqZWN0SWQsXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IGRhdGFUZXh0ID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XHJcbiAgICAgIHRoaXMuc3RhdHVzQmFyU2VydmljZS5zZXRTdGF0dXNCYXJEYXRhKHsgc3RhdHVzQmFyVmlzaWJsZTogdHJ1ZSwgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfQ3JlYXRpbmcgbmV3IGNvbW1lbnQnKSB9KTtcclxuICAgICAgdGhpcy5iaW1wbHVzT2JqZWN0Q29tbWVudHNMaXN0U2VydmljZS5wb3N0Q29tbWVudHModGhpcy5yb290T2JqZWN0SWQsIGRhdGFUZXh0LCB0aGlzLmdldEh5cGVybGlua3ModGhpcy5yb290T2JqZWN0SWQpLCB0aGlzLmF0dGFjaG1lbnRzU3RhdGUoKSwgdGhpcy5uZXdBdHRhY2htZW50SURzKVxyXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKCkgPT4gdGhpcy5iaW1wbHVzT2JqZWN0Q29tbWVudHNMaXN0U2VydmljZS5sb2FkQ29tbWVudHModGhpcy5yb290T2JqZWN0SWQpKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGNvbW1lbnRzKSA9PiB0aGlzLmNvbW1lbnRzTGlzdCQubmV4dChjb21tZW50cyksXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuYXR0YWNobWVudHNTdGF0ZS5zZXQoW10pO1xyXG4gICAgICAgICAgdGhpcy5uZXdDb21tZW50QXR0YWNobWVudHMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuYXR0YWNobWVudExpbmtJdGVtcyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5uZXdBdHRhY2htZW50SURzID0gW107XHJcbiAgICAgICAgICB0aGlzLnRleHRBcmVhVmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5jbGVhclZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYnV0dG9uUm93SXRlbXNbMF0uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1c0JhclNlcnZpY2Uuc2V0U3RhdHVzQmFyRGF0YSh7IHN0YXR1c0JhclZpc2libGU6IGZhbHNlLCB0aXRsZTogJycgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGh5cGVybGlua0J1dHRvblJvd0J1dHRvbkNsaWNrZWQoJGV2ZW50OiBCaW1wbHVzQnV0dG9uQ2xpY2tFdmVudCkge1xyXG4gICAgaWYgKCRldmVudC5pZCA9PT0gJ2FkZC1oeXBlcmxpbmsnKSB7XHJcbiAgICAgIHRoaXMuYWRkTmV3Q29tbWVudEh5cGVybGluaygpO1xyXG4gICAgfSBlbHNlIGlmICgkZXZlbnQuaWQgPT09ICdjYW5jZWwtaHlwZXJsaW5rJykge1xyXG4gICAgICB0aGlzLmh5cGVybGlua0Zvcm0ucmVzZXQoKTtcclxuICAgICAgdGhpcy5pc0FkZGluZ0h5cGVybGluayA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkTmV3Q29tbWVudEh5cGVybGluaygpIHtcclxuICAgIGlmICghdGhpcy5oeXBlcmxpbmtGb3JtLnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc2FuaXRpemVkVXJsOiBzdHJpbmcgPSB0aGlzLmh5cGVybGlua0Zvcm0udmFsdWVbJ3VybCddLnRyaW0oKTtcclxuICAgIGlmICghUmVnRXhwKC9eaHR0cChzPyk6XFwvXFwvLykuZXhlYyhzYW5pdGl6ZWRVcmwpKSB7XHJcbiAgICAgIHNhbml0aXplZFVybCA9ICdodHRwczovLycgKyBzYW5pdGl6ZWRVcmw7XHJcbiAgICB9XHJcbiAgICBsZXQgc2FuaXRpemVkTmFtZSA9IHRoaXMuaHlwZXJsaW5rRm9ybS52YWx1ZVsnbmFtZSddPy50cmltKCkgPz8gJyc7XHJcbiAgICBpZiAoc2FuaXRpemVkTmFtZSA9PT0gJycpIHtcclxuICAgICAgc2FuaXRpemVkTmFtZSA9IHNhbml0aXplZFVybDtcclxuICAgIH0gICAgXHJcbiAgICBjb25zdCBuZXdJdGVtOiBuZXdBdHRhY2hJbmZvID0ge1xyXG4gICAgICBpZDogJycsXHJcbiAgICAgIHR5cGU6ICdIeXBlcmxpbmsnLFxyXG4gICAgICBuYW1lU2hvcnQ6IHNhbml0aXplZE5hbWUsXHJcbiAgICAgIG5hbWU6IHNhbml0aXplZE5hbWUsXHJcbiAgICAgIHVybDogc2FuaXRpemVkVXJsLFxyXG4gICAgICBpY29uQ2xhc3M6ICdmYSBmYS1saW5rJyxcclxuICAgICAgaWNvblRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX0h5cGVybGluaycpLFxyXG4gICAgICBkZWxldGVCdXR0b25UaXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ19SZW1vdmUgaHlwZXJsaW5rJyksXHJcbiAgICB9O1xyXG4gICAgdGhpcy5uZXdDb21tZW50QXR0YWNobWVudHMucHVzaChuZXdJdGVtKTtcclxuICAgIHRoaXMuaHlwZXJsaW5rRm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5pc0FkZGluZ0h5cGVybGluayA9IGZhbHNlO1xyXG4gICAgdGhpcy5jaGVja0NyZWF0ZUJ1dHRvblN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVDb21tZW50KGNvbW1lbnRJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN0YXR1c0JhclNlcnZpY2Uuc2V0U3RhdHVzQmFyRGF0YSh7c3RhdHVzQmFyVmlzaWJsZTogdHJ1ZSwgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfRGVsZXRpbmcgdGhlIGNvbW1lbnQnKX0pO1xyXG4gICAgdGhpcy5iaW1wbHVzT2JqZWN0Q29tbWVudHNMaXN0U2VydmljZS5kZWxldGVDb21tZW50KGNvbW1lbnRJZClcclxuICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sb2FkQ29tbWVudHMoKSlcclxuICB9XHJcblxyXG4gIGFkZEh5cGVybGlua0ljb25DbGlja2VkKCkge1xyXG4gICAgdGhpcy5pc0FkZGluZ0h5cGVybGluayA9ICF0aGlzLmlzQWRkaW5nSHlwZXJsaW5rO1xyXG4gIH1cclxuXHJcbiAgYWRkSHlwZXJsaW5rSWNvbktleXByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XHJcbiAgICAgIHRoaXMuYWRkSHlwZXJsaW5rSWNvbkNsaWNrZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZU5ld0NvbW1lbnRBdHRhY2htZW50KGxpbms6IG5ld0F0dGFjaEluZm8pIHtcclxuICAgIHRoaXMubmV3Q29tbWVudEF0dGFjaG1lbnRzID0gdGhpcy5uZXdDb21tZW50QXR0YWNobWVudHMuZmlsdGVyKFxyXG4gICAgICAoY29tbWVudExpbmspID0+IGNvbW1lbnRMaW5rICE9PSBsaW5rXHJcbiAgICApO1xyXG4gICAgaWYgKGxpbms/LnR5cGUgIT09ICdIeXBlcmxpbmsnKSB7XHJcbiAgICAgIHRoaXMuYXR0YWNobWVudExpbmtJdGVtcyA9IHRoaXMuYXR0YWNobWVudExpbmtJdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgKGF0dGFjaG1lbnRMaW5rKSA9PiBhdHRhY2htZW50TGluay5pZCAhPT0gbGluay5pZFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLm5ld0F0dGFjaG1lbnRJRHMgPSB0aGlzLm5ld0F0dGFjaG1lbnRJRHMuZmlsdGVyKGlkID0+IGlkICE9PSBsaW5rLmlkKVxyXG4gICAgfVxyXG4gICAgdGhpcy5jaGVja0NyZWF0ZUJ1dHRvblN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVOZXdDb21tZW50QXR0YWNobWVudEtleXByZXNzKFxyXG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnQsXHJcbiAgICBsaW5rOiBuZXdBdHRhY2hJbmZvXHJcbiAgKSB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlTmV3Q29tbWVudEF0dGFjaG1lbnQobGluayk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0FjdFVzZXJBdXRob3IoaXRlbTogV2ViU2RrLkNvbW1lbnRSZXNwb25zZSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uYXV0aG9yPy5pZCA9PT0gdGhpcy51c2VySWQ7XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5TmFtZShpdGVtOiBXZWJTZGsuQ29tbWVudFJlc3BvbnNlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBpdGVtLmF1dGhvcj8uZGlzcGxheW5hbWUgPyBpdGVtLmF1dGhvcj8uZGlzcGxheW5hbWUgOiAnJztcclxuICB9XHJcblxyXG4gIGZvcm1hdERhdGUoZGF0ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGxvY2FsZSA9IHdpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2U7XHJcbiAgICBpZiAobG9jYWxlLmluY2x1ZGVzKCdlbicpKSB7XHJcbiAgICAgIGNvbnN0IHVuZm9ybWF0dGVkRGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgICByZXR1cm4gdW5mb3JtYXR0ZWREYXRlLmdldE1vbnRoKCkgKyAnLycgKyB1bmZvcm1hdHRlZERhdGUuZ2V0RGF0ZSgpICsgJy8nICsgdW5mb3JtYXR0ZWREYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodW5kZWZpbmVkLCB7IGRhdGVTdHlsZTogXCJzaG9ydFwiIH0pLmZvcm1hdChuZXcgRGF0ZShkYXRlKSk7XHJcbiAgfVxyXG5cclxuICBjbGVhclRleHRhcmVhVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGVhclZhbHVlO1xyXG4gIH1cclxuXHJcbiBcclxuICBwcml2YXRlIGxvYWRDb21tZW50cygpIHtcclxuICAgIHRoaXMuc3RhdHVzQmFyU2VydmljZS5zZXRTdGF0dXNCYXJEYXRhKHtzdGF0dXNCYXJWaXNpYmxlOiB0cnVlLCB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ19Mb2FkaW5nIGNvbW1lbnRzIGxpc3QnKX0pO1xyXG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHRoaXMuYmltcGx1c09iamVjdENvbW1lbnRzTGlzdFNlcnZpY2VcclxuICAgICAgLmxvYWRDb21tZW50cyh0aGlzLnJvb3RPYmplY3RJZClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogY29tbWVudHMgPT4geyAgICAgICBcclxuICAgICAgICAgIHRoaXMuY29tbWVudHNMaXN0JC5uZXh0KGNvbW1lbnRzKVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzQmFyU2VydmljZS5zZXRTdGF0dXNCYXJEYXRhKHsgc3RhdHVzQmFyVmlzaWJsZTogZmFsc2UsIHRpdGxlOiAnJyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEh5cGVybGlua3Mob2JqZWN0SWQ6IHN0cmluZyk6IFBhcnRpYWw8V2ViU2RrLkh5cGVybGluaz5bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXdDb21tZW50QXR0YWNobWVudHNcclxuICAgIC5maWx0ZXIoaCA9PiBoPy50eXBlID09PSAnSHlwZXJsaW5rJykgLy8gRmlsdGVyIG9iamVjdHMgd2l0aCB0eXBlICdIeXBlcmxpbmsnXHJcbiAgICAubWFwKChoKSA9PiAoe1xyXG4gICAgICAuLi5oLFxyXG4gICAgICBvYmplY3RJZCxcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIG9uRW50ZXJLZXlQcmVzc2VkSW5IeXBlcmxpbmtGb3JtKCkge1xyXG4gICAgdGhpcy5hZGROZXdDb21tZW50SHlwZXJsaW5rKCk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoIWxvYWRpbmcoKSkge1xyXG48ZGl2IGNsYXNzPVwiY29tbWVudC10YWItY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRleHRhcmVhLWNvbnRhaW5lclwiPlxyXG4gICAgPGxpYi1iaW1wbHVzLXRleHRhcmVhXHJcbiAgICAgICh0ZXh0QXJlYVZhbHVlQ2hhbmdlKT1cIm9uVGV4dGFyZWFWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgW25hbWVdPVwibmFtZVwiXHJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgIFthY3RpdmVBdXRvUmVzaXplVGV4dGFyZWFdPVwidHJ1ZVwiXHJcbiAgICAgIFttaW5Sb3dzXT1cIm1pblJvd3NcIlxyXG4gICAgICBbbWF4Um93c109XCJtYXhSb3dzXCJcclxuICAgICAgW2NsZWFyVmFsdWVdPVwiY2xlYXJUZXh0YXJlYVZhbHVlKClcIlxyXG4gICAgPjwvbGliLWJpbXBsdXMtdGV4dGFyZWE+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxsaWItYmltcGx1cy1hdHRhY2htZW50c1xyXG4gICAgI2F0dGFjaG1lbnRzXHJcbiAgICBsaXN0T25seVxyXG4gICAgW2NsYXNzXT1cIlsnbmV3LWNvbW1lbnQtYXR0YWNobWVudHMnXVwiXHJcbiAgICBbYXR0YWNobWVudHNdPVwiYXR0YWNobWVudHNTdGF0ZSgpXCJcclxuICAgIChhZGRBdHRhY2htZW50KT1cIm9uQWRkQXR0YWNobWVudCgkZXZlbnQpXCJcclxuICAgIChkZWxldGVBdHRhY2htZW50KT1cIm9uRGVsZXRlQXR0YWNobWVudCgkZXZlbnQpXCJcclxuICAvPlxyXG5cclxuICA8bGliLWxpbmtzLXRvLWRvY3VtZW50cyBcclxuICAgICNsaW5rc1RvRG9jdW1lbnRzXHJcbiAgICBsaXN0T25seVxyXG4gICAgaGlkZUF0dGFjaG1lbnRTaXplXHJcbiAgICBzaG93RW1wdHlNZXNzYWdlPVwiZmFsc2VcIiBcclxuICAgIFthdHRhY2htZW50c109XCJhdHRhY2htZW50TGlua0l0ZW1zXCJcclxuICAgIChhdHRhY2htZW50c0xpbmtDaGFuZ2UpPVwib25BdHRhY2htZW50c0xpbmtDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICBbYXBpXT1cImFwaVwiICAgICAgICBcclxuICAgIFtwcm9qZWN0XT1cInByb2plY3RcIlxyXG4gICAgW3Jvb3RPYmplY3RJZF09JydcclxuICAgIFtjYW5DcmVhdGVBdHRhY2htZW50TGlua109XCJ0cnVlXCJcclxuICAgIFtjYW5EZWxldGVBdHRhY2htZW50TGlua109XCJ0cnVlXCJcclxuICAgIFt3b3JtaG9sZVNlbGVjdG9yXT1cIndvcm1ob2xlU2VsZWN0b3JcIlxyXG4gICAgW2Vudl09XCJlbnZcIlxyXG4gIC8+XHJcblxyXG4gIEBpZiAobmV3Q29tbWVudEF0dGFjaG1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgIDxkaXYgY2xhc3M9XCJuZXctY29tbWVudC1hdHRhY2htZW50LWxpc3RcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBuZXdDb21tZW50QXR0YWNobWVudHNcIiBcclxuICAgICAgICBbbmdDbGFzc109XCInbmV3LWNvbW1lbnQtYXR0YWNobWVudCAnICsgaXRlbS50eXBlXCJcclxuICAgICAgICBbdGl0bGVdPVwiaXRlbS50eXBlID09PSAnSHlwZXJsaW5rJyA/IGl0ZW0udXJsOiBpdGVtLm5hbWVcIj5cclxuICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiJ2ljb24tc21hbGwgJyArIGl0ZW0udHlwZVwiICAgICAgICAgIFxyXG4gICAgICAgICAgW3RpdGxlXT1cIml0ZW0udHlwZSA9PT0gJ0h5cGVybGluaycgPyBpdGVtLnVybDogaXRlbS5uYW1lXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj57eyBpdGVtLm5hbWUgfX0gPC9kaXY+ICAgICAgXHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY2FuY2VsLWljb25cIiB0aXRsZT1cInt7IGl0ZW0uZGVsZXRlQnV0dG9uVGl0bGV9fVwiIChjbGljayk9XCJyZW1vdmVOZXdDb21tZW50QXR0YWNobWVudChpdGVtKVwiIChrZXlkb3duKT1cInJlbW92ZU5ld0NvbW1lbnRBdHRhY2htZW50S2V5cHJlc3MoJGV2ZW50LCBpdGVtKVwiPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+ICAgIFxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG5cclxuICBAaWYgKGlzQWRkaW5nSHlwZXJsaW5rKSB7XHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiaHlwZXJsaW5rRm9ybVwiIGNsYXNzPVwiaHlwZXJsaW5rLWlucHV0LWZvcm1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaHlwZXJsaW5rLWlucHV0LXJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmstaWNvbiBpY29uLW5leHQtdG8tdGV4dC1pbnB1dFwiPjwvZGl2PlxyXG4gICAgICAgICAgPGxpYi1iaW1wbHVzLWlucHV0LXRleHQtZmllbGQgY2xhc3M9XCJmbGV4LWdyb3dcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgcGxhY2Vob2xkZXI9XCJ7eyAnX05hbWUnIHwgdHJhbnNsYXRlIH19XCIgKGVudGVyS2V5UHJlc3NlZCk9XCJvbkVudGVyS2V5UHJlc3NlZEluSHlwZXJsaW5rRm9ybSgpXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoeXBlcmxpbmstaW5wdXQtcm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1uZXh0LXRvLXRleHQtaW5wdXRcIj48L2Rpdj5cclxuICAgICAgICAgIDxsaWItYmltcGx1cy1pbnB1dC10ZXh0LWZpZWxkIGNsYXNzPVwiZmxleC1ncm93XCIgZm9ybUNvbnRyb2xOYW1lPVwidXJsXCIgcGxhY2Vob2xkZXI9XCJ7eyAnX1VSTCcgfCB0cmFuc2xhdGUgfX1cIiAoZW50ZXJLZXlQcmVzc2VkKT1cIm9uRW50ZXJLZXlQcmVzc2VkSW5IeXBlcmxpbmtGb3JtKClcIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxsaWItYmltcGx1cy1idXR0b25zLXJvdyBbaXRlbXNdPVwiaHlwZXJsaW5rQnV0dG9uUm93SXRlbXNcIiAoYnV0dG9uQ2xpY2tlZCk9XCJoeXBlcmxpbmtCdXR0b25Sb3dCdXR0b25DbGlja2VkKCRldmVudClcIi8+XHJcbiAgICAgIDwvZm9ybT5cclxuICB9XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb21tZW50cy10YWItYXR0YWNobWVudHMtc2VjdGlvblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbW1lbnRzLWF0dGFjaG1lbnRzLWxpc3RcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYi1hdHRhY2htZW50cyBpY29uIGF0dGFjaG1lbnRzLWljb24gaGlkZGVuXCI+PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50LWljb24gaWNvbi1zbWFsbCBpbnRlcmFjdGl2ZVwiIFt0aXRsZV09XCInX0FkZCBhdHRhY2htZW50JyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJhdHRhY2htZW50cy5vcGVuKClcIiAoa2V5ZG93bik9XCJhdHRhY2htZW50cy5vcGVuKClcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxpbmstaWNvbiBpY29uLXNtYWxsIGludGVyYWN0aXZlXCIgW3RpdGxlXT1cIidfQWRkIGh5cGVybGluaycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiYWRkSHlwZXJsaW5rSWNvbkNsaWNrZWQoKVwiIChrZXlkb3duKT1cImFkZEh5cGVybGlua0ljb25LZXlwcmVzcygkZXZlbnQpXCI+PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50LWxpbmstaWNvbiBpY29uLXNtYWxsIGludGVyYWN0aXZlXCIgW3RpdGxlXT1cIidfQWRkX2F0dGFjaG1lbnRfbGluaycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwibGlua3NUb0RvY3VtZW50cy5jcmVhdGVBdHRhY2htZW50TGluayhhcGkhKVwiIChrZXlkb3duKT1cImxpbmtzVG9Eb2N1bWVudHMuY3JlYXRlQXR0YWNobWVudExpbmsoYXBpISlcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYi1hdHRhY2htZW50bGlua3MgaWNvbiBhdHRhY2htZW50cy1pY29uIGhpZGRlblwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWRkLWNvbW1lbnRcIj5cclxuICAgICAgPGxpYi1iaW1wbHVzLWJ1dHRvbnMtcm93XHJcbiAgICAgICAgW2l0ZW1zXT1cImJ1dHRvblJvd0l0ZW1zXCJcclxuICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJidXR0b25Sb3dCdXR0b25DbGlja2VkKCRldmVudClcIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb21tZW50cy1zZXBhcmF0b3JcIj48L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInNjcm9sbGFibGUtY29udGVudC1jb250YWluZXJcIj5cclxuICAgIDxsaWItYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lcj5cclxuICAgICAgQGlmICgoY29tbWVudHNMaXN0JCB8IGFzeW5jKT8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vLWNvbW1lbnRzLWZvdW5kXCI+XHJcbiAgICAgICAgICB7eyAnX05vIGNvbW1lbnRzIGZvdW5kJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICBAZm9yIChpdGVtIG9mIGNvbW1lbnRzTGlzdCQgfCBhc3luYzsgdHJhY2sgaXRlbSkge1xyXG4gICAgICAgICAgQGlmKGl0ZW0uY3JlYXRlZEF0ICYmIGlzU2FtZURhdGUoaXRlbS5jcmVhdGVkQXQpKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWxpc3QtZGF0ZVwiPlxyXG4gICAgICAgICAgICAgIHt7Zm9ybWF0RGF0ZShpdGVtLmNyZWF0ZWRBdCl9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxsaWItYmltcGx1cy1jb21tZW50XHJcbiAgICAgICAgICAgIChvdXRwdXRBY3Rpb25Db21tZW50RXZlbnQpPVwiaGFuZGxlQWN0aW9uQ29tbWVudEV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAoZ2V0QXR0YWNobWVudCk9XCJvbkdldEF0dGFjaG1lbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFttZXNzYWdlXT1cIml0ZW0udGV4dFwiXHJcbiAgICAgICAgICAgIFthcGldPVwiYXBpXCJcclxuICAgICAgICAgICAgW2RhdGVdPVwiaXRlbS5jcmVhdGVkQXQgPyBpdGVtLmNyZWF0ZWRBdCA6ICcnXCJcclxuICAgICAgICAgICAgYWN0aW9uPVwiZGVsZXRlXCJcclxuICAgICAgICAgICAgW2NvbW1lbnRJZF09XCJpdGVtLmlkXCJcclxuICAgICAgICAgICAgW2F0dGFjaG1lbnRzXT1cIml0ZW0uYXR0YWNobWVudHMgPz8gW11cIlxyXG4gICAgICAgICAgICBbYXR0YWNobWVudExpbmtJdGVtc109XCJpdGVtLmF0dGFjaG1lbnRMaW5rcyA/PyBbXVwiXHJcbiAgICAgICAgICAgIFtoeXBlcmxpbmtzXT1cIml0ZW0uaHlwZXJsaW5rc1wiXHJcbiAgICAgICAgICAgIFtpc0FjdFVzZXJBdXRob3JdPVwiaXNBY3RVc2VyQXV0aG9yKGl0ZW0pXCJcclxuICAgICAgICAgICAgW2Rpc3BsYXluYW1lXT1cImRpc3BsYXlOYW1lKGl0ZW0pXCI+XHJcbiAgICAgICAgICA8L2xpYi1iaW1wbHVzLWNvbW1lbnQ+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICA8L2xpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
;
|
|
2
|
+
export {};
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1vYmplY3QtY29tbWVudHMtbGlzdC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9iaW1wbHVzLW9iamVjdC1jb21tZW50cy1saXN0L2JpbXBsdXMtb2JqZWN0LWNvbW1lbnRzLWxpc3QuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIgZXhwb3J0IGludGVyZmFjZSBuZXdBdHRhY2hJbmZvIHtcclxuICAgICAgaWQgOiBzdHJpbmcsXHJcbiAgICAgIHR5cGUgOiBzdHJpbmcsXHJcbiAgICAgIG5hbWVTaG9ydCA6IHN0cmluZyxcclxuICAgICAgbmFtZTogc3RyaW5nLFxyXG4gICAgICB1cmw6IHN0cmluZyxcclxuICAgICAgaWNvbkNsYXNzIDogIHN0cmluZyxcclxuICAgICAgaWNvblRpdGxlOiBzdHJpbmcsXHJcbiAgICAgIGRlbGV0ZUJ1dHRvblRpdGxlOiBzdHJpbmdcclxuICAgIH07Il19
|