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.
Files changed (162) hide show
  1. package/assets/images/default/Attachment_18_gray.svg +1 -0
  2. package/assets/images/default/Attachment_18_maincolor.svg +3 -0
  3. package/assets/images/default/Attachmentlink_18_gray.svg +7 -0
  4. package/assets/images/default/Attachmentlink_18_maincolor.svg +7 -0
  5. package/assets/images/default/Calendar_18.svg +4 -0
  6. package/assets/images/default/Calendar_18_disabled.svg +1 -0
  7. package/assets/images/default/Calendar_18_gray.svg +1 -0
  8. package/assets/images/default/Comments_18_gray.svg +1 -0
  9. package/assets/images/default/Comments_18_maincolor.svg +4 -0
  10. package/assets/images/default/Links_18_gray.svg +1 -0
  11. package/assets/images/default/Links_18_maincolor.svg +4 -0
  12. package/assets/images/default/Refresh_18_gray.svg +1 -0
  13. package/assets/images/default/bimplus_WebIcons_Cross_Disabled.svg +1 -0
  14. package/assets/images/default/ic_models.svg +3 -0
  15. package/assets/images/default/ic_models_maincolor.svg +3 -0
  16. package/assets/images/default/icn_grid_attachments.png +0 -0
  17. package/assets/images/default/icn_grid_hyperlinks.png +0 -0
  18. package/assets/images/default/progress-spinner.svg +1 -0
  19. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.component.mjs +114 -0
  20. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.interface.mjs +38 -0
  21. package/esm2022/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.mjs +95 -0
  22. package/esm2022/lib/components/bimplus-attachments/services/bimplus-attachments.service.mjs +32 -0
  23. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +40 -5
  24. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.mjs +5 -2
  25. package/esm2022/lib/components/bimplus-comment/IComment.mjs +2 -0
  26. package/esm2022/lib/components/bimplus-comment/bimplus-comment.component.mjs +118 -0
  27. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +5 -5
  28. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +3 -3
  29. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +115 -7
  30. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.mjs +1 -1
  31. package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +1 -1
  32. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.mjs +1 -1
  33. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.mjs +3 -3
  34. package/esm2022/lib/components/bimplus-input-checkbox/bimplus-input-checkbox.component.mjs +64 -0
  35. package/esm2022/lib/components/bimplus-input-combobox/bimplus-input-combobox.component.mjs +161 -0
  36. package/esm2022/lib/components/bimplus-input-date/bimplus-input-date.component.mjs +271 -0
  37. package/esm2022/lib/components/bimplus-input-number/bimplus-input-number.component.mjs +85 -0
  38. package/esm2022/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.mjs +92 -0
  39. package/esm2022/lib/components/bimplus-link-tooltip-message/bimplus-link-tooltip-message.component.mjs +78 -0
  40. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.mjs +388 -0
  41. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.interface.mjs +3 -0
  42. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.mjs +104 -0
  43. package/esm2022/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.mjs +2 -0
  44. package/esm2022/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.mjs +3 -3
  45. package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +6 -3
  46. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +3 -3
  47. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.mjs +1 -1
  48. package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +3 -3
  49. package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.component.mjs +42 -4
  50. package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.interface.mjs +4 -2
  51. package/esm2022/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.mjs +77 -0
  52. package/esm2022/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.mjs +83 -0
  53. package/esm2022/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.mjs +31 -8
  54. package/esm2022/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.mjs +34 -8
  55. package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +1 -1
  56. package/esm2022/lib/components/bimplus-status-bar/bimplus-status-bar.component.mjs +35 -0
  57. package/esm2022/lib/components/bimplus-status-bar/bimplus-status-bar.service.mjs +35 -0
  58. package/esm2022/lib/components/bimplus-status-bar/statusBar.mjs +2 -0
  59. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.mjs +38 -0
  60. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.mjs +10 -0
  61. package/esm2022/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.mjs +89 -0
  62. package/esm2022/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.mjs +33 -0
  63. package/esm2022/lib/components/bimplus-textarea/autoResizeTextarea.directive.mjs +83 -0
  64. package/esm2022/lib/components/bimplus-textarea/bimplus-textarea.component.mjs +128 -0
  65. package/esm2022/lib/components/links-to-documents/links-to-documents.component.mjs +376 -0
  66. package/esm2022/lib/components/object-hyperlinks/object-hyperlinks.component.mjs +145 -0
  67. package/esm2022/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.mjs +36 -0
  68. package/esm2022/lib/components/object-preview/object-preview.component.mjs +284 -0
  69. package/esm2022/lib/components/object-preview/object-preview.interface.mjs +2 -0
  70. package/esm2022/lib/components/object-properties/object-properties.component.mjs +545 -0
  71. package/esm2022/lib/components/object-properties/object-properties.interface.mjs +2 -0
  72. package/esm2022/lib/components/object-properties/object-properties.service.mjs +26 -0
  73. package/esm2022/lib/components/object-properties-group/object-properties-group.component.mjs +129 -0
  74. package/esm2022/lib/components/object-properties-group/object-property-value/object-property-value.component.mjs +55 -0
  75. package/esm2022/lib/components/object-properties-header/object-properties-header.component.mjs +48 -6
  76. package/esm2022/lib/components/object-properties-header/object-properties-header.interface.mjs +1 -1
  77. package/esm2022/lib/components/resizable-panel/resizable-panel.component.mjs +54 -10
  78. package/esm2022/lib/pipes/bit-converter.pipe.mjs +46 -0
  79. package/esm2022/lib/pipes/get-attribute-value-as-string.pipe.mjs +173 -0
  80. package/esm2022/lib/pipes/get-attribute-value.pipe.mjs +156 -0
  81. package/esm2022/lib/pipes/round.pipe.mjs +20 -0
  82. package/esm2022/lib/services/decorators.service.mjs +65 -0
  83. package/esm2022/lib/utils/objectProperties.mjs +9 -0
  84. package/esm2022/lib/validators/double-enum.validator.mjs +20 -0
  85. package/esm2022/lib/validators/double.validator.mjs +23 -0
  86. package/esm2022/lib/validators/guid-enum.validator.mjs +20 -0
  87. package/esm2022/lib/validators/guid.validator.mjs +14 -0
  88. package/esm2022/lib/validators/integer.validator.mjs +23 -0
  89. package/esm2022/lib/validators/string-combobox.validator.mjs +20 -0
  90. package/esm2022/lib/validators/string-enum.validator.mjs +20 -0
  91. package/esm2022/public-api.mjs +22 -1
  92. package/fesm2022/ngx-bimplus-components.mjs +4618 -80
  93. package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
  94. package/lib/components/bimplus-attachments/bimplus-attachments.component.d.ts +39 -0
  95. package/lib/components/bimplus-attachments/bimplus-attachments.interface.d.ts +33 -0
  96. package/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.d.ts +30 -0
  97. package/lib/components/bimplus-attachments/services/bimplus-attachments.service.d.ts +8 -0
  98. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.d.ts +14 -3
  99. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.d.ts +7 -1
  100. package/lib/components/bimplus-comment/IComment.d.ts +4 -0
  101. package/lib/components/bimplus-comment/bimplus-comment.component.d.ts +39 -0
  102. package/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.d.ts +16 -3
  103. package/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.d.ts +4 -0
  104. package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +1 -1
  105. package/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.d.ts +3 -3
  106. package/lib/components/bimplus-input-checkbox/bimplus-input-checkbox.component.d.ts +18 -0
  107. package/lib/components/bimplus-input-combobox/bimplus-input-combobox.component.d.ts +41 -0
  108. package/lib/components/bimplus-input-date/bimplus-input-date.component.d.ts +46 -0
  109. package/lib/components/bimplus-input-number/bimplus-input-number.component.d.ts +26 -0
  110. package/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.d.ts +28 -0
  111. package/lib/components/bimplus-link-tooltip-message/bimplus-link-tooltip-message.component.d.ts +22 -0
  112. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.d.ts +88 -0
  113. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.interface.d.ts +10 -0
  114. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.d.ts +20 -0
  115. package/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.d.ts +11 -0
  116. package/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.d.ts +2 -1
  117. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.d.ts +12 -12
  118. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.d.ts +3 -3
  119. package/lib/components/bimplus-object-structure/bimplus-object-structure.component.d.ts +5 -1
  120. package/lib/components/bimplus-object-structure/bimplus-object-structure.interface.d.ts +2 -0
  121. package/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.d.ts +29 -0
  122. package/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.d.ts +24 -0
  123. package/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.d.ts +8 -1
  124. package/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.d.ts +11 -1
  125. package/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.d.ts +1 -1
  126. package/lib/components/bimplus-status-bar/bimplus-status-bar.component.d.ts +14 -0
  127. package/lib/components/bimplus-status-bar/bimplus-status-bar.service.d.ts +14 -0
  128. package/lib/components/bimplus-status-bar/statusBar.d.ts +4 -0
  129. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.d.ts +16 -0
  130. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.d.ts +18 -0
  131. package/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.d.ts +36 -0
  132. package/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.d.ts +15 -0
  133. package/lib/components/bimplus-textarea/autoResizeTextarea.directive.d.ts +24 -0
  134. package/lib/components/bimplus-textarea/bimplus-textarea.component.d.ts +42 -0
  135. package/lib/components/links-to-documents/links-to-documents.component.d.ts +69 -0
  136. package/lib/components/object-hyperlinks/object-hyperlinks.component.d.ts +32 -0
  137. package/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.d.ts +15 -0
  138. package/lib/components/object-preview/object-preview.component.d.ts +45 -0
  139. package/lib/components/object-preview/object-preview.interface.d.ts +5 -0
  140. package/lib/components/object-properties/object-properties.component.d.ts +79 -0
  141. package/lib/components/object-properties/object-properties.interface.d.ts +22 -0
  142. package/lib/components/object-properties/object-properties.service.d.ts +12 -0
  143. package/lib/components/object-properties-group/object-properties-group.component.d.ts +30 -0
  144. package/lib/components/object-properties-group/object-property-value/object-property-value.component.d.ts +14 -0
  145. package/lib/components/object-properties-header/object-properties-header.component.d.ts +13 -4
  146. package/lib/components/object-properties-header/object-properties-header.interface.d.ts +8 -0
  147. package/lib/components/resizable-panel/resizable-panel.component.d.ts +12 -3
  148. package/lib/pipes/bit-converter.pipe.d.ts +17 -0
  149. package/lib/pipes/get-attribute-value-as-string.pipe.d.ts +35 -0
  150. package/lib/pipes/get-attribute-value.pipe.d.ts +35 -0
  151. package/lib/pipes/round.pipe.d.ts +7 -0
  152. package/lib/services/decorators.service.d.ts +12 -0
  153. package/lib/utils/objectProperties.d.ts +2 -0
  154. package/lib/validators/double-enum.validator.d.ts +2 -0
  155. package/lib/validators/double.validator.d.ts +2 -0
  156. package/lib/validators/guid-enum.validator.d.ts +2 -0
  157. package/lib/validators/guid.validator.d.ts +2 -0
  158. package/lib/validators/integer.validator.d.ts +2 -0
  159. package/lib/validators/string-combobox.validator.d.ts +2 -0
  160. package/lib/validators/string-enum.validator.d.ts +2 -0
  161. package/package.json +14 -4
  162. package/public-api.d.ts +21 -0
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOztBQVc1RixNQUFNLE9BQU8sdUNBQXVDO0lBUHBEO1FBZW1CLHVCQUFrQixHQUFHLE1BQU0sQ0FBd0I7WUFDbEUsRUFBRSxFQUFFLEVBQUU7WUFDTixJQUFJLEVBQUUsRUFBRTtZQUNSLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQyxDQUFDO1FBRWtDLGtCQUFhLEdBQW9DLElBQUksQ0FBQztRQUVsRixhQUFRLEdBQUcsUUFBUSxDQUFhLEdBQUcsRUFBRTtZQUM1QyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3BELElBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN0QixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFFRCxNQUFNLElBQUks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IE91dHB1dCwgc2lnbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmltcGx1c0ZsYXRUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1mbGF0LXRyZWUvYmltcGx1cy1mbGF0LXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcGxleFByb3BlcnRpZXNOb2RlIH0gZnJvbSAnLi9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRmxhdE5vZGUsIFRyZWVOb2RlIH0gZnJvbSAnLi4vYmltcGx1cy1mbGF0LXRyZWUvYmltcGx1cy1mbGF0LXRyZWUuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQmltcGx1c0ZsYXRUcmVlQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5sZXNzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c09iamVjdENvbXBsZXhQcm9wZXJ0aWVzQ29tcG9uZW50IHtcclxuICAvKiogVE9ETyByZW1vdmUgQElucHV0IG9uY2Ugc2lnbmFsIGlucHV0cyByZWxlYXNlIGZyb20gZGV2ZWxvcGVyIHByZXZpZXcuICovXHJcbiAgLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZSAqL1xyXG4gIEBJbnB1dCh7IGFsaWFzOiAnY29tcGxleFByb3BlcnRpZXMnIH0pXHJcbiAgc2V0IGNvbXBsZXhQcm9wZXJ0aWVzVmFsdWUobm9kZSA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSkge1xyXG4gICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMuc2V0KG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY29tcGxleFByb3BlcnRpZXMgPSBzaWduYWw8Q29tcGxleFByb3BlcnRpZXNOb2RlPih7XHJcbiAgICBpZDogXCJcIixcclxuICAgIG5hbWU6IFwiXCIsXHJcbiAgICBwYXJlbnQ6IFwiXCJcclxuICB9KTtcclxuXHJcbiAgQFZpZXdDaGlsZChCaW1wbHVzRmxhdFRyZWVDb21wb25lbnQpIHRyZWVDb21wb25lbnQ6IEJpbXBsdXNGbGF0VHJlZUNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICByZWFkb25seSB0cmVlRGF0YSA9IGNvbXB1dGVkPFRyZWVOb2RlW10+KCgpID0+IHtcclxuICAgIGNvbnN0IGNvbXBsZXhQcm9wZXJ0aWVzID0gdGhpcy5fY29tcGxleFByb3BlcnRpZXMoKTtcclxuICAgIGlmKCFjb21wbGV4UHJvcGVydGllcykge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuX2NvbnZlcnRPYmplY3RTdHJ1Y3R1cmVOb2RlVG9UcmVlTm9kZShjb21wbGV4UHJvcGVydGllcyk7XHJcbiAgICBpZighcm9vdCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtyb290XTtcclxuICB9KVxyXG5cclxuICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0U3RydWN0dXJlTm9kZVRvVHJlZU5vZGUobm9kZSA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSkgOiBUcmVlTm9kZXtcclxuXHJcbiAgICBjb25zdCB0cmVlTm9kZSA6IFRyZWVOb2RlID0ge1xyXG4gICAgICBuYW1lOiBub2RlLm5hbWUsXHJcbiAgICAgIGlkOiBub2RlLmlkLFxyXG4gICAgICBwYXJlbnQ6IG5vZGUucGFyZW50IFxyXG4gICAgfTtcclxuXHJcbiAgICBpZihub2RlLmNoaWxkcmVuKXtcclxuICAgICAgdHJlZU5vZGUuY2hpbGRyZW4gPSBbXTtcclxuICAgICAgZm9yKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pe1xyXG4gICAgICAgIGNvbnN0IGNoaWxkVHJlZU5vZGUgPSB0aGlzLl9jb252ZXJ0T2JqZWN0U3RydWN0dXJlTm9kZVRvVHJlZU5vZGUoY2hpbGQpO1xyXG4gICAgICAgIHRyZWVOb2RlLmNoaWxkcmVuLnB1c2goY2hpbGRUcmVlTm9kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJlZU5vZGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfZmluZE5vZGUoaWQ6c3RyaW5nLCBub2RlIDogQ29tcGxleFByb3BlcnRpZXNOb2RlKSA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSB8IG51bGx7XHJcbiAgICBpZihub2RlLmlkID09IGlkKXtcclxuICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYobm9kZS5jaGlsZHJlbil7XHJcbiAgICAgIGZvcihjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKXtcclxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLl9maW5kTm9kZShpZCwgY2hpbGQpO1xyXG4gICAgICAgIGlmKHJlcyl7XHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlU2VsZWN0ZWROb2Rlcyhub2RlcyA6IEZsYXROb2RlW10pe1xyXG4gICAgaWYobm9kZXMubGVuZ3RoID09PSAxKXtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy5fZmluZE5vZGUobm9kZXNbMF0uaWQsIHRoaXMuX2NvbXBsZXhQcm9wZXJ0aWVzKCkpO1xyXG4gICAgICBpZihzZWxlY3RlZE5vZGUpe1xyXG4gICAgICAgIHRoaXMubm9kZVNlbGVjdGVkLmVtaXQoc2VsZWN0ZWROb2RlKTtcclxuICAgICAgfVxyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIGV4cGFuZFRyZWUoKXtcclxuICAgIHRoaXMudHJlZUNvbXBvbmVudD8uZXhwYW5kVHJlZSgpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG5vZGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tcGxleFByb3BlcnRpZXNOb2RlPigpO1xyXG59XHJcbiIsIjxsaWItYmltcGx1cy1mbGF0LXRyZWVcclxuICBwYWRkaW5nSW5kZW50PVwiMS40cmVtXCJcclxuICBbdHJlZURhdGFdPVwidHJlZURhdGEoKVwiXHJcbiAgZW5hYmxlUGFyZW50SGlnaGxpZ2h0aW5nPVwiZmFsc2VcIlxyXG4gIChzZWxlY3RlZE5vZGVzKT1cImhhbmRsZVNlbGVjdGVkTm9kZXMoJGV2ZW50KVwiXHJcbiAgZGF0YVRlc3RQcmVmaXg9XCJvYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLXRyZWUtXCJcclxuPjwvbGliLWJpbXBsdXMtZmxhdC10cmVlPlxyXG4iXX0=
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOztBQVc1RixNQUFNLE9BQU8sdUNBQXVDO0lBUHBEO1FBZW1CLHVCQUFrQixHQUFHLE1BQU0sQ0FBd0I7WUFDbEUsRUFBRSxFQUFFLEVBQUU7WUFDTixJQUFJLEVBQUUsRUFBRTtZQUNSLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQyxDQUFDO1FBRWtDLGtCQUFhLEdBQW9DLElBQUksQ0FBQztRQUVsRixhQUFRLEdBQUcsUUFBUSxDQUFhLEdBQUcsRUFBRTtZQUM1QyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3BELElBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN0QixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFFRCxNQUFNLElBQUks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IE91dHB1dCwgc2lnbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmltcGx1c0ZsYXRUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1mbGF0LXRyZWUvYmltcGx1cy1mbGF0LXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcGxleFByb3BlcnRpZXNOb2RlIH0gZnJvbSAnLi9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRmxhdE5vZGUsIFRyZWVOb2RlIH0gZnJvbSAnLi4vYmltcGx1cy1mbGF0LXRyZWUvYmltcGx1cy1mbGF0LXRyZWUuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQmltcGx1c0ZsYXRUcmVlQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5sZXNzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c09iamVjdENvbXBsZXhQcm9wZXJ0aWVzQ29tcG9uZW50IHtcclxuICAvKiogVE9ETyByZW1vdmUgQElucHV0IG9uY2Ugc2lnbmFsIGlucHV0cyByZWxlYXNlIGZyb20gZGV2ZWxvcGVyIHByZXZpZXcuICovXHJcbiAgLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZSAqL1xyXG4gIEBJbnB1dCh7IGFsaWFzOiAnY29tcGxleFByb3BlcnRpZXMnIH0pXHJcbiAgc2V0IGNvbXBsZXhQcm9wZXJ0aWVzVmFsdWUobm9kZSA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSkge1xyXG4gICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMuc2V0KG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY29tcGxleFByb3BlcnRpZXMgPSBzaWduYWw8Q29tcGxleFByb3BlcnRpZXNOb2RlPih7XHJcbiAgICBpZDogXCJcIixcclxuICAgIG5hbWU6IFwiXCIsXHJcbiAgICBwYXJlbnQ6IFwiXCJcclxuICB9KTtcclxuXHJcbiAgQFZpZXdDaGlsZChCaW1wbHVzRmxhdFRyZWVDb21wb25lbnQpIHRyZWVDb21wb25lbnQ6IEJpbXBsdXNGbGF0VHJlZUNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICByZWFkb25seSB0cmVlRGF0YSA9IGNvbXB1dGVkPFRyZWVOb2RlW10+KCgpID0+IHtcclxuICAgIGNvbnN0IGNvbXBsZXhQcm9wZXJ0aWVzID0gdGhpcy5fY29tcGxleFByb3BlcnRpZXMoKTtcclxuICAgIGlmKCFjb21wbGV4UHJvcGVydGllcykge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuX2NvbnZlcnRPYmplY3RTdHJ1Y3R1cmVOb2RlVG9UcmVlTm9kZShjb21wbGV4UHJvcGVydGllcyk7XHJcbiAgICBpZighcm9vdCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtyb290XTtcclxuICB9KVxyXG5cclxuICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0U3RydWN0dXJlTm9kZVRvVHJlZU5vZGUobm9kZSA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSkgOiBUcmVlTm9kZXtcclxuXHJcbiAgICBjb25zdCB0cmVlTm9kZSA6IFRyZWVOb2RlID0ge1xyXG4gICAgICBuYW1lOiBub2RlLm5hbWUsXHJcbiAgICAgIGlkOiBub2RlLmlkLFxyXG4gICAgICBwYXJlbnQ6IG5vZGUucGFyZW50IFxyXG4gICAgfTtcclxuXHJcbiAgICBpZihub2RlLmNoaWxkcmVuKXtcclxuICAgICAgdHJlZU5vZGUuY2hpbGRyZW4gPSBbXTtcclxuICAgICAgZm9yKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pe1xyXG4gICAgICAgIGNvbnN0IGNoaWxkVHJlZU5vZGUgPSB0aGlzLl9jb252ZXJ0T2JqZWN0U3RydWN0dXJlTm9kZVRvVHJlZU5vZGUoY2hpbGQpO1xyXG4gICAgICAgIHRyZWVOb2RlLmNoaWxkcmVuLnB1c2goY2hpbGRUcmVlTm9kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJlZU5vZGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfZmluZE5vZGUoaWQ6c3RyaW5nLCBub2RlIDogQ29tcGxleFByb3BlcnRpZXNOb2RlKSA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSB8IG51bGx7XHJcbiAgICBpZihub2RlLmlkID09IGlkKXtcclxuICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYobm9kZS5jaGlsZHJlbil7XHJcbiAgICAgIGZvcihjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKXtcclxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLl9maW5kTm9kZShpZCwgY2hpbGQpO1xyXG4gICAgICAgIGlmKHJlcyl7XHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlU2VsZWN0ZWROb2Rlcyhub2RlcyA6IEZsYXROb2RlW10pe1xyXG4gICAgaWYobm9kZXMubGVuZ3RoID09PSAxKXtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy5fZmluZE5vZGUobm9kZXNbMF0uaWQsIHRoaXMuX2NvbXBsZXhQcm9wZXJ0aWVzKCkpO1xyXG4gICAgICBpZihzZWxlY3RlZE5vZGUpe1xyXG4gICAgICAgIHRoaXMubm9kZVNlbGVjdGVkLmVtaXQoc2VsZWN0ZWROb2RlKTtcclxuICAgICAgfVxyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIGV4cGFuZFRyZWUoKXtcclxuICAgIHRoaXMudHJlZUNvbXBvbmVudD8uZXhwYW5kVHJlZSgpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG5vZGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tcGxleFByb3BlcnRpZXNOb2RlPigpO1xyXG59XHJcbiIsIjxsaWItYmltcGx1cy1mbGF0LXRyZWVcclxuICBwYWRkaW5nSW5kZW50PVwiMS40cmVtXCJcclxuICBbdHJlZURhdGFdPVwidHJlZURhdGEoKVwiXHJcbiAgZW5hYmxlUGFyZW50SGlnaGxpZ2h0aW5nPVwiZmFsc2VcIlxyXG4gIChzZWxlY3RlZE5vZGVzKT1cImhhbmRsZVNlbGVjdGVkTm9kZXMoJGV2ZW50KVwiXHJcbiAgZGF0YVRlc3RQcmVmaXg9XCJvYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLXRyZWUtXCJcclxuPjwvbGliLWJpbXBsdXMtZmxhdC10cmVlPlxyXG4iXX0=