ngx-bimplus-components 0.0.160 → 0.0.162
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 +388 -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 +376 -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 +4618 -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 +88 -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 +69 -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
package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.mjs
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { inject, Injectable } from '@angular/core';
|
|
2
|
+
import { catchError, defaultIfEmpty, first, forkJoin, from, map, of, switchMap } from 'rxjs';
|
|
3
|
+
import { BimplusAttachmentsService } from '../bimplus-attachments/services/bimplus-attachments.service';
|
|
4
|
+
import { postAttachmentLinks } from '../links-to-documents/links-to-documents.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../services/decorators.service";
|
|
7
|
+
export class BimplusObjectCommentsListService {
|
|
8
|
+
constructor(decorators) {
|
|
9
|
+
this.decorators = decorators;
|
|
10
|
+
this.bimplusAttachmentsService = inject(BimplusAttachmentsService);
|
|
11
|
+
}
|
|
12
|
+
deleteComment(commentId) {
|
|
13
|
+
return from(this.api.comments.delete(commentId));
|
|
14
|
+
}
|
|
15
|
+
downloadAttachment(attachment) {
|
|
16
|
+
const { id, fileName } = attachment;
|
|
17
|
+
if (!this.api) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const api = this.api;
|
|
21
|
+
const path = `${api.getApiTeamUrl()}attachments/${id}/download?api-token=${api.getAccessToken()}&openInBrowser=true`;
|
|
22
|
+
this.bimplusAttachmentsService.download(path, fileName);
|
|
23
|
+
}
|
|
24
|
+
postComments(rootObjectId, dataText, hyperlinks, attachments, newAttachmentIDs) {
|
|
25
|
+
return from(this.api.objects.postComment(rootObjectId, dataText)).pipe(switchMap(createdComment => {
|
|
26
|
+
const { id: createdCommentId } = createdComment;
|
|
27
|
+
// Create form data for attachments
|
|
28
|
+
const formData = attachments.map(attachment => {
|
|
29
|
+
const attachmentsPayload = new FormData();
|
|
30
|
+
attachmentsPayload.append('file', attachment.file);
|
|
31
|
+
attachmentsPayload.append('name', attachment.fileName);
|
|
32
|
+
attachmentsPayload.append('size', attachment.file.size.toString());
|
|
33
|
+
attachmentsPayload.append('type', attachment.file.type);
|
|
34
|
+
attachmentsPayload.append('objectId', createdCommentId);
|
|
35
|
+
return attachmentsPayload;
|
|
36
|
+
});
|
|
37
|
+
// Post attachments if any, otherwise continue
|
|
38
|
+
const attachmentCalls = formData.length
|
|
39
|
+
? forkJoin(formData.map(data => from(this.api.objects.postAttachment(createdCommentId, data, undefined, ''))))
|
|
40
|
+
: of([]);
|
|
41
|
+
return attachmentCalls.pipe(map(() => createdCommentId));
|
|
42
|
+
}), switchMap(createdCommentId => {
|
|
43
|
+
// Post attachment links
|
|
44
|
+
return newAttachmentIDs.length
|
|
45
|
+
? postAttachmentLinks(newAttachmentIDs, createdCommentId, this.api).pipe(map(() => createdCommentId))
|
|
46
|
+
: of(createdCommentId);
|
|
47
|
+
}), switchMap(createdCommentId => {
|
|
48
|
+
// Manage hyperlinks
|
|
49
|
+
return hyperlinks.length
|
|
50
|
+
? this.manageHyperLinks(createdCommentId, hyperlinks).pipe(map(() => createdCommentId))
|
|
51
|
+
: of(createdCommentId);
|
|
52
|
+
}), defaultIfEmpty(null), first(), catchError(error => {
|
|
53
|
+
console.error('Error in postComments:', error);
|
|
54
|
+
return of(null); // Ensure the stream completes with null in case of an error
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
decorateComment(comment) {
|
|
58
|
+
if (comment.attachmentLinks && comment.attachmentLinks.length > 0) {
|
|
59
|
+
const decoratedLinks = comment.attachmentLinks.map((link) => this.decorators.decorateLink(this.api, link, [comment.id]));
|
|
60
|
+
comment.attachmentLinks = decoratedLinks;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
decorateComments(comments) {
|
|
64
|
+
comments.forEach((comment) => {
|
|
65
|
+
this.decorateComment(comment);
|
|
66
|
+
});
|
|
67
|
+
return comments;
|
|
68
|
+
}
|
|
69
|
+
loadComments(objectId) {
|
|
70
|
+
return from(this.api.objects.getComments(objectId)).pipe(map((response) => {
|
|
71
|
+
if (!response) {
|
|
72
|
+
throw new Error('Comments response is undefined'); // Handle undefined response
|
|
73
|
+
}
|
|
74
|
+
// Modify the response here
|
|
75
|
+
return this.decorateComments(response);
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
manageHyperLinks(createdCommentId, hyperlinks) {
|
|
79
|
+
const hyperlinkPromises = [];
|
|
80
|
+
hyperlinks.forEach((h) => {
|
|
81
|
+
if (!h) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const hyperlinkData = JSON.stringify({
|
|
85
|
+
name: h.name,
|
|
86
|
+
objectId: h.objectId,
|
|
87
|
+
url: h.url
|
|
88
|
+
});
|
|
89
|
+
const promise = this.api?.objects
|
|
90
|
+
.postHyperlink(createdCommentId, hyperlinkData)
|
|
91
|
+
.catch((err) => {
|
|
92
|
+
console.log(err);
|
|
93
|
+
});
|
|
94
|
+
hyperlinkPromises.push(promise);
|
|
95
|
+
});
|
|
96
|
+
return from(Promise.all(hyperlinkPromises));
|
|
97
|
+
}
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusObjectCommentsListService, deps: [{ token: i1.DecoratorsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
99
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusObjectCommentsListService }); }
|
|
100
|
+
}
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusObjectCommentsListService, decorators: [{
|
|
102
|
+
type: Injectable
|
|
103
|
+
}], ctorParameters: () => [{ type: i1.DecoratorsService }] });
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1vYmplY3QtY29tbWVudHMtbGlzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3QtY29tbWVudHMtbGlzdC9iaW1wbHVzLW9iamVjdC1jb21tZW50cy1saXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdkcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFFeEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7OztBQUl6RixNQUFNLE9BQU8sZ0NBQWdDO0lBSzNDLFlBQ21CLFVBQTRCO1FBQTVCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBSDlCLDhCQUF5QixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBSTVFLENBQUM7SUFHRyxhQUFhLENBQUMsU0FBaUI7UUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLGtCQUFrQixDQUFDLFVBQXNCO1FBQzlDLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsVUFBVSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLElB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Z3VsYXIvY29yZSc7XHJcbmltcG9ydCBXZWJTZGsgZnJvbSAnYmltcGx1cy13ZWJzZGsnO1xyXG5pbXBvcnQge2NhdGNoRXJyb3IsIGRlZmF1bHRJZkVtcHR5LCBmaXJzdCwgZm9ya0pvaW4sIGZyb20sIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJpbXBsdXNBdHRhY2htZW50c1NlcnZpY2UgfSBmcm9tICcuLi9iaW1wbHVzLWF0dGFjaG1lbnRzL3NlcnZpY2VzL2JpbXBsdXMtYXR0YWNobWVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnQgfSBmcm9tICcuLi9iaW1wbHVzLWF0dGFjaG1lbnRzL2JpbXBsdXMtYXR0YWNobWVudHMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgcG9zdEF0dGFjaG1lbnRMaW5rcyB9IGZyb20gJy4uL2xpbmtzLXRvLWRvY3VtZW50cy9saW5rcy10by1kb2N1bWVudHMuY29tcG9uZW50JztcclxuaW1wb3J0IHtEZWNvcmF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RlY29yYXRvcnMuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCaW1wbHVzT2JqZWN0Q29tbWVudHNMaXN0U2VydmljZSB7XHJcbiAgcHVibGljIGFwaSE6IFdlYlNkay5BcGk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgYmltcGx1c0F0dGFjaG1lbnRzU2VydmljZSA9IGluamVjdChCaW1wbHVzQXR0YWNobWVudHNTZXJ2aWNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlY29yYXRvcnM6RGVjb3JhdG9yc1NlcnZpY2VcclxuICApIHt9XHJcblxyXG5cclxuICBwdWJsaWMgZGVsZXRlQ29tbWVudChjb21tZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGZyb20odGhpcy5hcGkuY29tbWVudHMuZGVsZXRlKGNvbW1lbnRJZCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRvd25sb2FkQXR0YWNobWVudChhdHRhY2htZW50OiBBdHRhY2htZW50KSB7XHJcbiAgICBjb25zdCB7IGlkLCBmaWxlTmFtZSB9ID0gYXR0YWNobWVudDtcclxuICAgIGlmICghdGhpcy5hcGkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXBpID0gdGhpcy5hcGk7XHJcbiAgICBjb25zdCBwYXRoID0gYCR7YXBpLmdldEFwaVRlYW1VcmwoKX1hdHRhY2htZW50cy8ke2lkfS9kb3dubG9hZD9hcGktdG9rZW49JHthcGkuZ2V0QWNjZXNzVG9rZW4oKX0mb3BlbkluQnJvd3Nlcj10cnVlYDtcclxuICAgIHRoaXMuYmltcGx1c0F0dGFjaG1lbnRzU2VydmljZS5kb3dubG9hZChwYXRoLCBmaWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcG9zdENvbW1lbnRzKFxyXG4gICAgcm9vdE9iamVjdElkOiBzdHJpbmcsXHJcbiAgICBkYXRhVGV4dDogc3RyaW5nLFxyXG4gICAgaHlwZXJsaW5rczogUGFydGlhbDxXZWJTZGsuSHlwZXJsaW5rPltdLFxyXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRbXSxcclxuICAgIG5ld0F0dGFjaG1lbnRJRHM6IHN0cmluZ1tdXHJcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFwaS5vYmplY3RzLnBvc3RDb21tZW50KHJvb3RPYmplY3RJZCwgZGF0YVRleHQpKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoY3JlYXRlZENvbW1lbnQgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgaWQ6IGNyZWF0ZWRDb21tZW50SWQgfSA9IGNyZWF0ZWRDb21tZW50O1xyXG5cclxuICAgICAgICAvLyBDcmVhdGUgZm9ybSBkYXRhIGZvciBhdHRhY2htZW50c1xyXG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gYXR0YWNobWVudHMubWFwKGF0dGFjaG1lbnQgPT4ge1xyXG4gICAgICAgICAgY29uc3QgYXR0YWNobWVudHNQYXlsb2FkID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgICAgICBhdHRhY2htZW50c1BheWxvYWQuYXBwZW5kKCdmaWxlJywgYXR0YWNobWVudC5maWxlISk7XHJcbiAgICAgICAgICBhdHRhY2htZW50c1BheWxvYWQuYXBwZW5kKCduYW1lJywgYXR0YWNobWVudC5maWxlTmFtZSk7XHJcbiAgICAgICAgICBhdHRhY2htZW50c1BheWxvYWQuYXBwZW5kKCdzaXplJywgYXR0YWNobWVudC5maWxlIS5zaXplLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgYXR0YWNobWVudHNQYXlsb2FkLmFwcGVuZCgndHlwZScsIGF0dGFjaG1lbnQuZmlsZSEudHlwZSk7XHJcbiAgICAgICAgICBhdHRhY2htZW50c1BheWxvYWQuYXBwZW5kKCdvYmplY3RJZCcsIGNyZWF0ZWRDb21tZW50SWQpO1xyXG4gICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnRzUGF5bG9hZDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gUG9zdCBhdHRhY2htZW50cyBpZiBhbnksIG90aGVyd2lzZSBjb250aW51ZVxyXG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnRDYWxscyA9IGZvcm1EYXRhLmxlbmd0aFxyXG4gICAgICAgICAgPyBmb3JrSm9pbihmb3JtRGF0YS5tYXAoZGF0YSA9PiBmcm9tKHRoaXMuYXBpLm9iamVjdHMucG9zdEF0dGFjaG1lbnQoY3JlYXRlZENvbW1lbnRJZCwgZGF0YSwgdW5kZWZpbmVkLCAnJykpKSlcclxuICAgICAgICAgIDogb2YoW10pO1xyXG5cclxuICAgICAgICByZXR1cm4gYXR0YWNobWVudENhbGxzLnBpcGUobWFwKCgpID0+IGNyZWF0ZWRDb21tZW50SWQpKTtcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcChjcmVhdGVkQ29tbWVudElkID0+IHtcclxuICAgICAgICAvLyBQb3N0IGF0dGFjaG1lbnQgbGlua3NcclxuICAgICAgICByZXR1cm4gbmV3QXR0YWNobWVudElEcy5sZW5ndGhcclxuICAgICAgICAgID8gcG9zdEF0dGFjaG1lbnRMaW5rcyhuZXdBdHRhY2htZW50SURzLCBjcmVhdGVkQ29tbWVudElkLCB0aGlzLmFwaSkucGlwZShtYXAoKCkgPT4gY3JlYXRlZENvbW1lbnRJZCkpXHJcbiAgICAgICAgICA6IG9mKGNyZWF0ZWRDb21tZW50SWQpO1xyXG4gICAgICB9KSxcclxuICAgICAgc3dpdGNoTWFwKGNyZWF0ZWRDb21tZW50SWQgPT4ge1xyXG4gICAgICAgIC8vIE1hbmFnZSBoeXBlcmxpbmtzXHJcbiAgICAgICAgcmV0dXJuIGh5cGVybGlua3MubGVuZ3RoXHJcbiAgICAgICAgICA/IHRoaXMubWFuYWdlSHlwZXJMaW5rcyhjcmVhdGVkQ29tbWVudElkLCBoeXBlcmxpbmtzKS5waXBlKG1hcCgoKSA9PiBjcmVhdGVkQ29tbWVudElkKSlcclxuICAgICAgICAgIDogb2YoY3JlYXRlZENvbW1lbnRJZCk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBkZWZhdWx0SWZFbXB0eShudWxsKSxcclxuICAgICAgZmlyc3QoKSxcclxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gcG9zdENvbW1lbnRzOicsIGVycm9yKTtcclxuICAgICAgICByZXR1cm4gb2YobnVsbCk7IC8vIEVuc3VyZSB0aGUgc3RyZWFtIGNvbXBsZXRlcyB3aXRoIG51bGwgaW4gY2FzZSBvZiBhbiBlcnJvclxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBkZWNvcmF0ZUNvbW1lbnQoY29tbWVudDogV2ViU2RrLkNvbW1lbnRSZXNwb25zZSkge1xyXG4gICAgaWYoY29tbWVudC5hdHRhY2htZW50TGlua3MgJiYgY29tbWVudC5hdHRhY2htZW50TGlua3MubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBkZWNvcmF0ZWRMaW5rcyA9IGNvbW1lbnQuYXR0YWNobWVudExpbmtzLm1hcCgobGluaykgPT4gdGhpcy5kZWNvcmF0b3JzLmRlY29yYXRlTGluayh0aGlzLmFwaSEsbGluaywgW2NvbW1lbnQuaWRdKSk7ICAgICAgXHJcbiAgICAgIGNvbW1lbnQuYXR0YWNobWVudExpbmtzID0gZGVjb3JhdGVkTGlua3M7ICAgICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVjb3JhdGVDb21tZW50cyhjb21tZW50czogV2ViU2RrLkNvbW1lbnRzUmVzcG9uc2UpIHsgICAgXHJcbiAgICBjb21tZW50cy5mb3JFYWNoKChjb21tZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuZGVjb3JhdGVDb21tZW50KGNvbW1lbnQpO1xyXG4gICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbW1lbnRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvYWRDb21tZW50cyhvYmplY3RJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxXZWJTZGsuQ29tbWVudHNSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIGZyb20odGhpcy5hcGkub2JqZWN0cy5nZXRDb21tZW50cyhvYmplY3RJZCkpLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IFdlYlNkay5Db21tZW50c1Jlc3BvbnNlIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXNwb25zZSkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21tZW50cyByZXNwb25zZSBpcyB1bmRlZmluZWQnKTsgLy8gSGFuZGxlIHVuZGVmaW5lZCByZXNwb25zZVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBNb2RpZnkgdGhlIHJlc3BvbnNlIGhlcmVcclxuICAgICAgICByZXR1cm4gIHRoaXMuZGVjb3JhdGVDb21tZW50cyhyZXNwb25zZSEpOyAgICAgICAgXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1hbmFnZUh5cGVyTGlua3MoXHJcbiAgICBjcmVhdGVkQ29tbWVudElkOiBzdHJpbmcsXHJcbiAgICBoeXBlcmxpbmtzOiBQYXJ0aWFsPFdlYlNkay5IeXBlcmxpbms+W11cclxuICApIHtcclxuICAgIGNvbnN0IGh5cGVybGlua1Byb21pc2VzOiAoUHJvbWlzZTx2b2lkIHwgV2ViU2RrLkh5cGVybGluaz4gfCB1bmRlZmluZWQpW10gPVxyXG4gICAgICBbXTtcclxuXHJcbiAgICBoeXBlcmxpbmtzLmZvckVhY2goKGgpID0+IHtcclxuICAgICAgaWYgKCFoKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGh5cGVybGlua0RhdGEgPSBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgbmFtZTogaC5uYW1lLFxyXG4gICAgICAgIG9iamVjdElkOiBoLm9iamVjdElkLFxyXG4gICAgICAgIHVybDogaC51cmxcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLmFwaT8ub2JqZWN0c1xyXG4gICAgICAgIC5wb3N0SHlwZXJsaW5rKGNyZWF0ZWRDb21tZW50SWQsIGh5cGVybGlua0RhdGEpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGh5cGVybGlua1Byb21pc2VzLnB1c2gocHJvbWlzZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZnJvbShQcm9taXNlLmFsbChoeXBlcmxpbmtQcm9taXNlcykpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1c09iamVjdENvbW1lbnRzSS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LWNvbW1lbnRzLWxpc3QvYmltcGx1c09iamVjdENvbW1lbnRzSS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJRGlhbG9nQ29uZmlybUNsb3NlIHtcclxuICAgIGNvbXBvbmVudERpYWxvZ05hbWU6IHN0cmluZztcclxuICAgIGFjdGlvbkJ1dHRvbjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbW1lbnRPdXRwdXREYXRhIHtcclxuICAgIGFjdGlvbjogc3RyaW5nO1xyXG4gICAgZGF0YTogdW5rbm93bjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21tZW50RGF0YSB7XHJcbiAgICBjb21tZW50SWQ6IHN0cmluZztcclxufSJdfQ==
|
|
@@ -68,11 +68,11 @@ export class BimplusObjectComplexPropertiesComponent {
|
|
|
68
68
|
this.treeComponent?.expandTree();
|
|
69
69
|
}
|
|
70
70
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusObjectComplexPropertiesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: BimplusObjectComplexPropertiesComponent, isStandalone: true, selector: "lib-bimplus-object-complex-properties", inputs: { complexPropertiesValue: ["complexProperties", "complexPropertiesValue"] }, outputs: { nodeSelected: "nodeSelected" }, viewQueries: [{ propertyName: "treeComponent", first: true, predicate: BimplusFlatTreeComponent, descendants: true }], ngImport: i0, template: "<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData()\"\r\n enableParentHighlighting=\"false\"\r\n (selectedNodes)=\"handleSelectedNodes($event)\"\r\n dataTestPrefix=\"object-complex-properties-tree-\"\r\n></lib-bimplus-flat-tree>\r\n", styles: ["lib-bimplus-flat-tree{--flat-tree-node-indent: 0;--flat-tree-folder-font-weight: 400}\n"], dependencies: [{ kind: "component", type: BimplusFlatTreeComponent, selector: "lib-bimplus-flat-tree", inputs: ["treeDataStringified", "treeTitle", "paddingIndent", "multiSelect", "oneLevelMultiSelect", "showFoldersIcons", "showObjectsIcons", "enableSelect", "enableParentHighlighting", "enableDragAndDrop", "dataTestPrefix", "contextMenus", "treeData", "customNodeTemplate"], outputs: ["selectedNodes"] }] }); }
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: BimplusObjectComplexPropertiesComponent, isStandalone: true, selector: "lib-bimplus-object-complex-properties", inputs: { complexPropertiesValue: ["complexProperties", "complexPropertiesValue"] }, outputs: { nodeSelected: "nodeSelected" }, viewQueries: [{ propertyName: "treeComponent", first: true, predicate: BimplusFlatTreeComponent, descendants: true }], ngImport: i0, template: "<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData()\"\r\n enableParentHighlighting=\"false\"\r\n (selectedNodes)=\"handleSelectedNodes($event)\"\r\n dataTestPrefix=\"object-complex-properties-tree-\"\r\n></lib-bimplus-flat-tree>\r\n", styles: ["lib-bimplus-flat-tree{--flat-tree-node-indent: 0;--flat-tree-folder-font-weight: 400;--flat-tree-background-color: var(--bimplus-object-complex-properties-background-color, var(--flat-tree-container-background-color-enabled))}\n"], dependencies: [{ kind: "component", type: BimplusFlatTreeComponent, selector: "lib-bimplus-flat-tree", inputs: ["treeDataStringified", "treeTitle", "paddingIndent", "multiSelect", "oneLevelMultiSelect", "showFoldersIcons", "showObjectsIcons", "enableSelect", "enableParentHighlighting", "enableDragAndDrop", "dataTestPrefix", "contextMenus", "hasCheckBox1", "hasCheckBox2", "treeData", "customNodeTemplate"], outputs: ["selectedNodes", "checked1Nodes", "checked2Nodes"] }] }); }
|
|
72
72
|
}
|
|
73
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusObjectComplexPropertiesComponent, decorators: [{
|
|
74
74
|
type: Component,
|
|
75
|
-
args: [{ selector: 'lib-bimplus-object-complex-properties', standalone: true, imports: [BimplusFlatTreeComponent], template: "<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData()\"\r\n enableParentHighlighting=\"false\"\r\n (selectedNodes)=\"handleSelectedNodes($event)\"\r\n dataTestPrefix=\"object-complex-properties-tree-\"\r\n></lib-bimplus-flat-tree>\r\n", styles: ["lib-bimplus-flat-tree{--flat-tree-node-indent: 0;--flat-tree-folder-font-weight: 400}\n"] }]
|
|
75
|
+
args: [{ selector: 'lib-bimplus-object-complex-properties', standalone: true, imports: [BimplusFlatTreeComponent], template: "<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData()\"\r\n enableParentHighlighting=\"false\"\r\n (selectedNodes)=\"handleSelectedNodes($event)\"\r\n dataTestPrefix=\"object-complex-properties-tree-\"\r\n></lib-bimplus-flat-tree>\r\n", styles: ["lib-bimplus-flat-tree{--flat-tree-node-indent: 0;--flat-tree-folder-font-weight: 400;--flat-tree-background-color: var(--bimplus-object-complex-properties-background-color, var(--flat-tree-container-background-color-enabled))}\n"] }]
|
|
76
76
|
}], propDecorators: { complexPropertiesValue: [{
|
|
77
77
|
type: Input,
|
|
78
78
|
args: [{ alias: 'complexProperties' }]
|
|
@@ -82,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
82
82
|
}], nodeSelected: [{
|
|
83
83
|
type: Output
|
|
84
84
|
}] } });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOztBQVc1RixNQUFNLE9BQU8sdUNBQXVDO0lBUHBEO1FBZW1CLHVCQUFrQixHQUFHLE1BQU0sQ0FBd0I7WUFDbEUsRUFBRSxFQUFFLEVBQUU7WUFDTixJQUFJLEVBQUUsRUFBRTtZQUNSLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQyxDQUFDO1FBRWtDLGtCQUFhLEdBQW9DLElBQUksQ0FBQztRQUVsRixhQUFRLEdBQUcsUUFBUSxDQUFhLEdBQUcsRUFBRTtZQUM1QyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3BELElBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN0QixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFFRCxNQUFNLElBQUks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IE91dHB1dCwgc2lnbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmltcGx1c0ZsYXRUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1mbGF0LXRyZWUvYmltcGx1cy1mbGF0LXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcGxleFByb3BlcnRpZXNOb2RlIH0gZnJvbSAnLi9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRmxhdE5vZGUsIFRyZWVOb2RlIH0gZnJvbSAnLi4vYmltcGx1cy1mbGF0LXRyZWUvYmltcGx1cy1mbGF0LXRyZWUuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQmltcGx1c0ZsYXRUcmVlQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5sZXNzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c09iamVjdENvbXBsZXhQcm9wZXJ0aWVzQ29tcG9uZW50IHtcclxuICAvKiogVE9ETyByZW1vdmUgQElucHV0IG9uY2Ugc2lnbmFsIGlucHV0cyByZWxlYXNlIGZyb20gZGV2ZWxvcGVyIHByZXZpZXcuICovXHJcbiAgLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZSAqL1xyXG4gIEBJbnB1dCh7IGFsaWFzOiAnY29tcGxleFByb3BlcnRpZXMnIH0pXHJcbiAgc2V0IGNvbXBsZXhQcm9wZXJ0aWVzVmFsdWUobm9kZSA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSkge1xyXG4gICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMuc2V0KG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY29tcGxleFByb3BlcnRpZXMgPSBzaWduYWw8Q29tcGxleFByb3BlcnRpZXNOb2RlPih7XHJcbiAgICBpZDogXCJcIixcclxuICAgIG5hbWU6IFwiXCIsXHJcbiAgICBwYXJlbnQ6IFwiXCJcclxuICB9KTtcclxuXHJcbiAgQFZpZXdDaGlsZChCaW1wbHVzRmxhdFRyZWVDb21wb25lbnQpIHRyZWVDb21wb25lbnQ6IEJpbXBsdXNGbGF0VHJlZUNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICByZWFkb25seSB0cmVlRGF0YSA9IGNvbXB1dGVkPFRyZWVOb2RlW10+KCgpID0+IHtcclxuICAgIGNvbnN0IGNvbXBsZXhQcm9wZXJ0aWVzID0gdGhpcy5fY29tcGxleFByb3BlcnRpZXMoKTtcclxuICAgIGlmKCFjb21wbGV4UHJvcGVydGllcykge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuX2NvbnZlcnRPYmplY3RTdHJ1Y3R1cmVOb2RlVG9UcmVlTm9kZShjb21wbGV4UHJvcGVydGllcyk7XHJcbiAgICBpZighcm9vdCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtyb290XTtcclxuICB9KVxyXG5cclxuICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0U3RydWN0dXJlTm9kZVRvVHJlZU5vZGUobm9kZSA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSkgOiBUcmVlTm9kZXtcclxuXHJcbiAgICBjb25zdCB0cmVlTm9kZSA6IFRyZWVOb2RlID0ge1xyXG4gICAgICBuYW1lOiBub2RlLm5hbWUsXHJcbiAgICAgIGlkOiBub2RlLmlkLFxyXG4gICAgICBwYXJlbnQ6IG5vZGUucGFyZW50IFxyXG4gICAgfTtcclxuXHJcbiAgICBpZihub2RlLmNoaWxkcmVuKXtcclxuICAgICAgdHJlZU5vZGUuY2hpbGRyZW4gPSBbXTtcclxuICAgICAgZm9yKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pe1xyXG4gICAgICAgIGNvbnN0IGNoaWxkVHJlZU5vZGUgPSB0aGlzLl9jb252ZXJ0T2JqZWN0U3RydWN0dXJlTm9kZVRvVHJlZU5vZGUoY2hpbGQpO1xyXG4gICAgICAgIHRyZWVOb2RlLmNoaWxkcmVuLnB1c2goY2hpbGRUcmVlTm9kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJlZU5vZGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfZmluZE5vZGUoaWQ6c3RyaW5nLCBub2RlIDogQ29tcGxleFByb3BlcnRpZXNOb2RlKSA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSB8IG51bGx7XHJcbiAgICBpZihub2RlLmlkID09IGlkKXtcclxuICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYobm9kZS5jaGlsZHJlbil7XHJcbiAgICAgIGZvcihjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKXtcclxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLl9maW5kTm9kZShpZCwgY2hpbGQpO1xyXG4gICAgICAgIGlmKHJlcyl7XHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlU2VsZWN0ZWROb2Rlcyhub2RlcyA6IEZsYXROb2RlW10pe1xyXG4gICAgaWYobm9kZXMubGVuZ3RoID09PSAxKXtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy5fZmluZE5vZGUobm9kZXNbMF0uaWQsIHRoaXMuX2NvbXBsZXhQcm9wZXJ0aWVzKCkpO1xyXG4gICAgICBpZihzZWxlY3RlZE5vZGUpe1xyXG4gICAgICAgIHRoaXMubm9kZVNlbGVjdGVkLmVtaXQoc2VsZWN0ZWROb2RlKTtcclxuICAgICAgfVxyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIGV4cGFuZFRyZWUoKXtcclxuICAgIHRoaXMudHJlZUNvbXBvbmVudD8uZXhwYW5kVHJlZSgpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG5vZGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tcGxleFByb3BlcnRpZXNOb2RlPigpO1xyXG59XHJcbiIsIjxsaWItYmltcGx1cy1mbGF0LXRyZWVcclxuICBwYWRkaW5nSW5kZW50PVwiMS40cmVtXCJcclxuICBbdHJlZURhdGFdPVwidHJlZURhdGEoKVwiXHJcbiAgZW5hYmxlUGFyZW50SGlnaGxpZ2h0aW5nPVwiZmFsc2VcIlxyXG4gIChzZWxlY3RlZE5vZGVzKT1cImhhbmRsZVNlbGVjdGVkTm9kZXMoJGV2ZW50KVwiXHJcbiAgZGF0YVRlc3RQcmVmaXg9XCJvYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLXRyZWUtXCJcclxuPjwvbGliLWJpbXBsdXMtZmxhdC10cmVlPlxyXG4iXX0=
|