ngx-bimplus-components 0.0.151 → 0.0.152-28780-2

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 (115) 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/Comments_18_gray.svg +1 -0
  6. package/assets/images/default/Comments_18_maincolor.svg +4 -0
  7. package/assets/images/default/Links_18_gray.svg +1 -0
  8. package/assets/images/default/Links_18_maincolor.svg +4 -0
  9. package/assets/images/default/Refresh_18_gray.svg +1 -0
  10. package/assets/images/default/ic_models.svg +3 -0
  11. package/assets/images/default/ic_models_maincolor.svg +3 -0
  12. package/assets/images/default/icn_grid_attachments.png +0 -0
  13. package/assets/images/default/icn_grid_hyperlinks.png +0 -0
  14. package/assets/languages/strings_en.json +3 -1
  15. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.component.mjs +101 -0
  16. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.interface.mjs +38 -0
  17. package/esm2022/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.mjs +92 -0
  18. package/esm2022/lib/components/bimplus-attachments/services/bimplus-attachments.service.mjs +32 -0
  19. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +18 -5
  20. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.mjs +5 -2
  21. package/esm2022/lib/components/bimplus-comment/IComment.mjs +2 -0
  22. package/esm2022/lib/components/bimplus-comment/bimplus-comment.component.mjs +114 -0
  23. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +5 -5
  24. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +3 -3
  25. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +3 -3
  26. package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +1 -1
  27. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.mjs +1 -1
  28. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.mjs +3 -3
  29. package/esm2022/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.mjs +68 -0
  30. package/esm2022/lib/components/bimplus-main-menu/bimplus-main-menu.component.mjs +16 -4
  31. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.mjs +327 -0
  32. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.mjs +69 -0
  33. package/esm2022/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.mjs +2 -0
  34. package/esm2022/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.mjs +3 -3
  35. package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +6 -3
  36. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +3 -3
  37. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.mjs +1 -1
  38. package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +3 -3
  39. package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.component.mjs +3 -3
  40. package/esm2022/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.mjs +77 -0
  41. package/esm2022/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.mjs +83 -0
  42. package/esm2022/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.mjs +31 -8
  43. package/esm2022/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.mjs +34 -8
  44. package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +1 -1
  45. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.mjs +38 -0
  46. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.mjs +10 -0
  47. package/esm2022/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.mjs +89 -0
  48. package/esm2022/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.mjs +33 -0
  49. package/esm2022/lib/components/bimplus-textarea/autoResizeTextarea.directive.mjs +83 -0
  50. package/esm2022/lib/components/bimplus-textarea/bimplus-textarea.component.mjs +128 -0
  51. package/esm2022/lib/components/links-to-documents/links-to-documents.component.interface.mjs +2 -0
  52. package/esm2022/lib/components/links-to-documents/links-to-documents.component.mjs +367 -0
  53. package/esm2022/lib/components/object-hyperlinks/object-hyperlinks.component.mjs +145 -0
  54. package/esm2022/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.mjs +36 -0
  55. package/esm2022/lib/components/object-preview/object-preview.component.mjs +225 -0
  56. package/esm2022/lib/components/object-properties/object-properties.component.mjs +262 -0
  57. package/esm2022/lib/components/object-properties/object-properties.interface.mjs +2 -0
  58. package/esm2022/lib/components/object-properties-group/object-properties-group.component.mjs +40 -0
  59. package/esm2022/lib/components/object-properties-group/object-property-value/object-property-value.component.mjs +55 -0
  60. package/esm2022/lib/components/object-properties-header/object-properties-header.component.mjs +19 -4
  61. package/esm2022/lib/components/object-properties-header/object-properties-header.interface.mjs +1 -1
  62. package/esm2022/lib/components/resizable-panel/resizable-panel.component.mjs +2 -2
  63. package/esm2022/lib/pipes/bit-converter.pipe.mjs +46 -0
  64. package/esm2022/lib/pipes/get-attribute-value.pipe.mjs +110 -0
  65. package/esm2022/lib/pipes/round.pipe.mjs +20 -0
  66. package/esm2022/lib/utils/objectProperties.mjs +9 -0
  67. package/esm2022/public-api.mjs +18 -1
  68. package/fesm2022/ngx-bimplus-components.mjs +2694 -70
  69. package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
  70. package/lib/components/bimplus-attachments/bimplus-attachments.component.d.ts +37 -0
  71. package/lib/components/bimplus-attachments/bimplus-attachments.interface.d.ts +33 -0
  72. package/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.d.ts +30 -0
  73. package/lib/components/bimplus-attachments/services/bimplus-attachments.service.d.ts +8 -0
  74. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.d.ts +9 -3
  75. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.d.ts +5 -0
  76. package/lib/components/bimplus-comment/IComment.d.ts +4 -0
  77. package/lib/components/bimplus-comment/bimplus-comment.component.d.ts +39 -0
  78. package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +1 -1
  79. package/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.d.ts +3 -3
  80. package/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.d.ts +20 -0
  81. package/lib/components/bimplus-main-menu/bimplus-main-menu.component.d.ts +3 -1
  82. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.d.ts +81 -0
  83. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.d.ts +15 -0
  84. package/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.d.ts +11 -0
  85. package/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.d.ts +2 -1
  86. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.d.ts +7 -7
  87. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.d.ts +3 -3
  88. package/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.d.ts +29 -0
  89. package/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.d.ts +24 -0
  90. package/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.d.ts +8 -1
  91. package/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.d.ts +11 -1
  92. package/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.d.ts +1 -1
  93. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.d.ts +16 -0
  94. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.d.ts +18 -0
  95. package/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.d.ts +36 -0
  96. package/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.d.ts +15 -0
  97. package/lib/components/bimplus-textarea/autoResizeTextarea.directive.d.ts +24 -0
  98. package/lib/components/bimplus-textarea/bimplus-textarea.component.d.ts +42 -0
  99. package/lib/components/links-to-documents/links-to-documents.component.d.ts +66 -0
  100. package/lib/components/links-to-documents/links-to-documents.component.interface.d.ts +11 -0
  101. package/lib/components/object-hyperlinks/object-hyperlinks.component.d.ts +32 -0
  102. package/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.d.ts +15 -0
  103. package/lib/components/object-preview/object-preview.component.d.ts +37 -0
  104. package/lib/components/object-properties/object-properties.component.d.ts +45 -0
  105. package/lib/components/object-properties/object-properties.interface.d.ts +21 -0
  106. package/lib/components/object-properties-group/object-properties-group.component.d.ts +11 -0
  107. package/lib/components/object-properties-group/object-property-value/object-property-value.component.d.ts +14 -0
  108. package/lib/components/object-properties-header/object-properties-header.component.d.ts +5 -3
  109. package/lib/components/object-properties-header/object-properties-header.interface.d.ts +1 -0
  110. package/lib/pipes/bit-converter.pipe.d.ts +17 -0
  111. package/lib/pipes/get-attribute-value.pipe.d.ts +23 -0
  112. package/lib/pipes/round.pipe.d.ts +7 -0
  113. package/lib/utils/objectProperties.d.ts +2 -0
  114. package/package.json +12 -4
  115. package/public-api.d.ts +17 -0
@@ -0,0 +1,262 @@
1
+ import { Component, ViewEncapsulation, Input } from '@angular/core';
2
+ import { ExpansionPanelComponent } from '../expansion-panel/expansion-panel.component';
3
+ import { ExpansionPanelHeaderComponent } from '../expansion-panel-header/expansion-panel-header.component';
4
+ import { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';
5
+ import { TranslateModule } from '@ngx-translate/core';
6
+ import { ObjectStructureNodeBuilder } from '../bimplus-object-structure/bimplus-object-structure.interface';
7
+ import { from, BehaviorSubject } from 'rxjs';
8
+ import { BimplusObjectStructureComponent } from '../bimplus-object-structure/bimplus-object-structure.component';
9
+ import { ComplexPropertiesNodeBuilder } from '../bimplus-object-complex-properties/bimplus-object-complex-properties.interface';
10
+ import { BimplusObjectComplexPropertiesComponent } from '../bimplus-object-complex-properties/bimplus-object-complex-properties.component';
11
+ import { BimplusButtonsRowComponent } from "../bimplus-buttons-row/bimplus-buttons-row.component";
12
+ import { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component';
13
+ import { ObjectPropertiesGroupComponent } from '../object-properties-group/object-properties-group.component';
14
+ import { isObjectPropertyValueBlank } from '../../utils/objectProperties';
15
+ import { ObjectPreviewComponent } from "../object-preview/object-preview.component";
16
+ import * as i0 from "@angular/core";
17
+ import * as i1 from "@ngx-translate/core";
18
+ export class ObjectPropertiesComponent extends BimplusLocalizedWidgetComponent {
19
+ constructor(translateService) {
20
+ super(translateService);
21
+ this._editMode = false;
22
+ this._objectStructure = null;
23
+ this._complexProperties = null;
24
+ this.api = null;
25
+ this.revision = undefined;
26
+ this._currentObjectId$ = new BehaviorSubject("");
27
+ this._currentPropertiesObjectId$ = new BehaviorSubject("");
28
+ this._rootObjectId = "";
29
+ this.buttonRowItems = [];
30
+ this.configEditProperties = [];
31
+ this.configEditedProperties = [];
32
+ this.objectAttributeGroups = [];
33
+ }
34
+ get objectStructure() {
35
+ return this._objectStructure;
36
+ }
37
+ get complexProperties() {
38
+ return this._complexProperties;
39
+ }
40
+ set rootObjectId(id) {
41
+ this._currentObjectId$.next(id);
42
+ this._createObjectStructure(id, this.revision);
43
+ this._rootObjectId = id;
44
+ }
45
+ get rootObjectId() {
46
+ return this._rootObjectId;
47
+ }
48
+ _editPropertiesButtonsConfiguration() {
49
+ this.configEditProperties.push({
50
+ id: "edit-properties",
51
+ title: this.translateService.instant('_Edit_properties'),
52
+ tooltip: this.translateService.instant('_Edit_properties'),
53
+ disabled: false,
54
+ buttonStyle: 'primary'
55
+ });
56
+ }
57
+ _editedPropertiesButtonsConfiguration() {
58
+ this.configEditedProperties.push({
59
+ id: "save-changed-properties",
60
+ title: this.translateService.instant('_Save'),
61
+ tooltip: this.translateService.instant('_Save'),
62
+ disabled: true,
63
+ buttonStyle: 'primary'
64
+ });
65
+ this.configEditedProperties.push({
66
+ id: "cancel-editing-properties",
67
+ title: this.translateService.instant('_Cancel'),
68
+ tooltip: this.translateService.instant('_Cancel'),
69
+ disabled: false,
70
+ buttonStyle: 'secondary'
71
+ });
72
+ }
73
+ ngOnInit() {
74
+ this._editPropertiesButtonsConfiguration();
75
+ this._editedPropertiesButtonsConfiguration();
76
+ this.buttonRowItems = this.configEditProperties;
77
+ this._currentPropertiesObjectId$.subscribe({
78
+ next: (id) => {
79
+ if (id) {
80
+ this._createObjectProperties(id, this.revision);
81
+ }
82
+ }
83
+ });
84
+ this._currentObjectId$.subscribe({
85
+ next: (id) => {
86
+ this._currentPropertiesObjectId$.next(id);
87
+ this._createComplexPropertiestructure(id, this.revision);
88
+ }
89
+ });
90
+ }
91
+ handleObjectStructureNodeSelected(node) {
92
+ console.log(node);
93
+ this._currentObjectId$.next(node.id);
94
+ }
95
+ handleComplexPropertyNodeSelected(node) {
96
+ console.log(node);
97
+ this._currentPropertiesObjectId$.next(node.id);
98
+ }
99
+ _loadObjectStructure(objectId, revision) {
100
+ if (!this.api) {
101
+ return;
102
+ }
103
+ if (!objectId) {
104
+ return;
105
+ }
106
+ return from(this.api.objects.getTopology(objectId, revision, false, false, undefined));
107
+ }
108
+ _createObjectStructure(objectId, revision) {
109
+ this._loadObjectStructure(objectId, revision)?.subscribe({
110
+ next: (structureData) => {
111
+ if (structureData) {
112
+ this._objectStructure = ObjectStructureNodeBuilder.createFromResponse(structureData);
113
+ }
114
+ }
115
+ });
116
+ }
117
+ _loadObjectComplexPropertiesStructure(objectId, revision) {
118
+ if (!this.api) {
119
+ return;
120
+ }
121
+ if (!objectId) {
122
+ return;
123
+ }
124
+ return from(this.api.objects.getComplexPropertiesTopology(objectId, revision));
125
+ }
126
+ _createComplexPropertiestructure(objectId, revision) {
127
+ this._loadObjectComplexPropertiesStructure(objectId, revision)?.subscribe({
128
+ next: (structureData) => {
129
+ if (structureData) {
130
+ const complexProps = ComplexPropertiesNodeBuilder.createFromResponse(structureData);
131
+ if (complexProps?.children?.length) {
132
+ this._complexProperties = complexProps;
133
+ }
134
+ else {
135
+ this._complexProperties = null;
136
+ }
137
+ }
138
+ }
139
+ });
140
+ }
141
+ _loadObjectProperties(objectId, revision) {
142
+ if (!this.api) {
143
+ return;
144
+ }
145
+ if (!objectId) {
146
+ return;
147
+ }
148
+ return from(this.api.objects.get(objectId, revision, "8", undefined, false, undefined));
149
+ }
150
+ _createObjectProperties(objectId, revision) {
151
+ this._loadObjectProperties(objectId, revision)?.subscribe({
152
+ // properties response is badly structured, nearly impossible to create class structure from it. Therefore using shortcut
153
+ // any for json response
154
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
155
+ next: (propertiesData) => {
156
+ this.objectAttributeGroups = this._createAttributeGroupsFromResponse(propertiesData);
157
+ // this._syncAttributeStatesFromCriteria();
158
+ },
159
+ error: () => {
160
+ this.objectAttributeGroups = [];
161
+ }
162
+ });
163
+ }
164
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
165
+ _tooltip(attrib) {
166
+ const nameTitle = this.translateService.instant('_Name');
167
+ const name = attrib.name ? attrib.name : '';
168
+ const descriptionTitle = this.translateService.instant("description");
169
+ const description = attrib.description;
170
+ const uuidTitle = this.translateService.instant("_UUID");
171
+ const uuid = attrib.id;
172
+ if (description === null || description === undefined || description === '') {
173
+ return `${nameTitle}: ${name}\n${uuidTitle}: ${uuid}`;
174
+ }
175
+ return `${nameTitle}: ${name}\n${descriptionTitle}: ${description}\n${uuidTitle}: ${uuid}`;
176
+ }
177
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
178
+ _createAttributeGroupsFromResponse(propertiesData) {
179
+ const groups = [];
180
+ let localizedAttribGroups = null;
181
+ if (propertiesData.localizedAttributeGroups) {
182
+ localizedAttribGroups = propertiesData.localizedAttributeGroups;
183
+ }
184
+ if (!propertiesData.attributes) {
185
+ return groups;
186
+ }
187
+ const attribGroups = propertiesData.attributes;
188
+ for (const [groupName, attribsObject] of Object.entries(attribGroups)) {
189
+ const newGroup = {
190
+ name: groupName,
191
+ expanded: false,
192
+ attributes: []
193
+ };
194
+ if (localizedAttribGroups?.[groupName]) {
195
+ newGroup.name = localizedAttribGroups[groupName];
196
+ }
197
+ if (!attribsObject) {
198
+ continue;
199
+ }
200
+ for (const attrib of Object.values(attribsObject)) {
201
+ const newAttrib = {
202
+ id: attrib.id,
203
+ name: attrib.name,
204
+ description: attrib.description,
205
+ value: attrib.value,
206
+ group: attrib.group,
207
+ type: attrib.type,
208
+ unit: attrib.unit,
209
+ decimal: attrib.decimal,
210
+ control: attrib.control,
211
+ enumdefinition: attrib.enumdefinition,
212
+ isChangeable: attrib.isChangeable,
213
+ tooltip: this._tooltip(attrib)
214
+ };
215
+ newGroup.attributes.push(newAttrib);
216
+ }
217
+ groups.push(newGroup);
218
+ }
219
+ return groups;
220
+ }
221
+ buttonClicked($event) {
222
+ if ($event.id === "edit-properties") {
223
+ console.log("Edit properties clicked");
224
+ this.buttonRowItems = this.configEditedProperties;
225
+ }
226
+ if ($event.id === "save-changed-properties") {
227
+ this.buttonRowItems = this.configEditProperties;
228
+ console.log("Save changed properties clicked");
229
+ }
230
+ if ($event.id === "cancel-editing-properties") {
231
+ this.buttonRowItems = this.configEditProperties;
232
+ console.log("Cancel edit properties clicked");
233
+ }
234
+ }
235
+ hasSetAnyAttribute(objectAttributeGroup) {
236
+ return objectAttributeGroup.attributes.some((attrib) => {
237
+ return !isObjectPropertyValueBlank(attrib);
238
+ });
239
+ }
240
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ObjectPropertiesComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
241
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: ObjectPropertiesComponent, isStandalone: true, selector: "lib-object-properties", inputs: { api: "api", revision: "revision", rootObjectId: "rootObjectId" }, usesInheritance: true, ngImport: i0, template: "<lib-bimplus-buttons-row\r\n [items]=\"buttonRowItems\"\r\n (buttonClicked)=\"buttonClicked($event)\"\r\n/>\r\n\r\n<div class=\"object-properties\">\r\n\r\n <lib-bimplus-scrollable-container>\r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"object-structure-header\">{{\"_3D preview\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-object-preview [api]=\"api\" [revision]=\"revision\" [objectId]=\"rootObjectId\"/>\r\n </lib-expansion-panel>\r\n <!-- Object structure-->\r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"object-structure-header\">{{\"_Object structure\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n @if (objectStructure) {\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n />\r\n }\r\n </lib-expansion-panel>\r\n <!-- End Object structure-->\r\n\r\n <!-- Complex properties-->\r\n @if(complexProperties){\r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"object-properties-header\"> {{\"_Object multiproperties tree\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n />\r\n </lib-expansion-panel>\r\n }\r\n <!-- End Complex properties-->\r\n\r\n @if(objectAttributeGroups.length > 0){\r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"object-properties-header\">{{\"_Object properties\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n @if(hasSetAnyAttribute(attribGroup)){\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"object-properties-group-header\"> {{attribGroup.name}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-object-properties-group\r\n [attributesGroup]=\"attribGroup\"\r\n [editMode]=\"_editMode\"\r\n />\r\n </lib-expansion-panel>\r\n }\r\n }\r\n </lib-expansion-panel>\r\n }\r\n </lib-bimplus-scrollable-container>\r\n</div>\r\n", styles: [":host{height:100%;display:flex;flex-direction:column;flex:1}lib-bimplus-buttons-row{flex:0;--button-row-margin-right: .8rem}.object-properties{margin-left:.8rem;position:relative;flex:1}.object-properties .object-structure-header,.object-properties .object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.object-properties .object-properties-group-header{line-height:2.4rem}.object-properties lib-bimplus-object-structure{--bimplus-object-structure-background-color: var(--object-properties-background-color, var(--flat-tree-container-background-color-enabled))}.object-properties lib-bimplus-object-complex-properties{--bimplus-object-complex-properties-background-color: var(--object-properties-background-color, var(--flat-tree-container-background-color-enabled))}.object-properties lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;flex:1;width:100%}\n"], dependencies: [{ kind: "component", type: ExpansionPanelComponent, selector: "lib-expansion-panel", inputs: ["expanded"] }, { kind: "component", type: ExpansionPanelHeaderComponent, selector: "lib-expansion-panel-header" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: BimplusObjectStructureComponent, selector: "lib-bimplus-object-structure", inputs: ["objectStructure"], outputs: ["nodeSelected"] }, { kind: "component", type: BimplusObjectComplexPropertiesComponent, selector: "lib-bimplus-object-complex-properties", inputs: ["complexProperties"], outputs: ["nodeSelected"] }, { kind: "component", type: BimplusButtonsRowComponent, selector: "lib-bimplus-buttons-row", inputs: ["items"], outputs: ["fileChanged", "buttonClicked"] }, { kind: "component", type: BimplusScrollableContainerComponent, selector: "lib-bimplus-scrollable-container" }, { kind: "component", type: ObjectPropertiesGroupComponent, selector: "lib-object-properties-group", inputs: ["editMode", "attributesGroup"] }, { kind: "component", type: ObjectPreviewComponent, selector: "lib-object-preview", inputs: ["api", "objectId", "revision"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
242
+ }
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ObjectPropertiesComponent, decorators: [{
244
+ type: Component,
245
+ args: [{ selector: 'lib-object-properties', standalone: true, imports: [
246
+ ExpansionPanelComponent,
247
+ ExpansionPanelHeaderComponent,
248
+ TranslateModule,
249
+ BimplusObjectStructureComponent,
250
+ BimplusObjectComplexPropertiesComponent,
251
+ BimplusButtonsRowComponent,
252
+ BimplusScrollableContainerComponent,
253
+ ObjectPropertiesGroupComponent, ObjectPreviewComponent
254
+ ], encapsulation: ViewEncapsulation.ShadowDom, template: "<lib-bimplus-buttons-row\r\n [items]=\"buttonRowItems\"\r\n (buttonClicked)=\"buttonClicked($event)\"\r\n/>\r\n\r\n<div class=\"object-properties\">\r\n\r\n <lib-bimplus-scrollable-container>\r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"object-structure-header\">{{\"_3D preview\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-object-preview [api]=\"api\" [revision]=\"revision\" [objectId]=\"rootObjectId\"/>\r\n </lib-expansion-panel>\r\n <!-- Object structure-->\r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"object-structure-header\">{{\"_Object structure\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n @if (objectStructure) {\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n />\r\n }\r\n </lib-expansion-panel>\r\n <!-- End Object structure-->\r\n\r\n <!-- Complex properties-->\r\n @if(complexProperties){\r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"object-properties-header\"> {{\"_Object multiproperties tree\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n />\r\n </lib-expansion-panel>\r\n }\r\n <!-- End Complex properties-->\r\n\r\n @if(objectAttributeGroups.length > 0){\r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"object-properties-header\">{{\"_Object properties\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n @if(hasSetAnyAttribute(attribGroup)){\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"object-properties-group-header\"> {{attribGroup.name}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-object-properties-group\r\n [attributesGroup]=\"attribGroup\"\r\n [editMode]=\"_editMode\"\r\n />\r\n </lib-expansion-panel>\r\n }\r\n }\r\n </lib-expansion-panel>\r\n }\r\n </lib-bimplus-scrollable-container>\r\n</div>\r\n", styles: [":host{height:100%;display:flex;flex-direction:column;flex:1}lib-bimplus-buttons-row{flex:0;--button-row-margin-right: .8rem}.object-properties{margin-left:.8rem;position:relative;flex:1}.object-properties .object-structure-header,.object-properties .object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.object-properties .object-properties-group-header{line-height:2.4rem}.object-properties lib-bimplus-object-structure{--bimplus-object-structure-background-color: var(--object-properties-background-color, var(--flat-tree-container-background-color-enabled))}.object-properties lib-bimplus-object-complex-properties{--bimplus-object-complex-properties-background-color: var(--object-properties-background-color, var(--flat-tree-container-background-color-enabled))}.object-properties lib-bimplus-scrollable-container{position:absolute;top:0;bottom:0;flex:1;width:100%}\n"] }]
255
+ }], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { api: [{
256
+ type: Input
257
+ }], revision: [{
258
+ type: Input
259
+ }], rootObjectId: [{
260
+ type: Input
261
+ }] } });
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LXByb3BlcnRpZXMvb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LXByb3BlcnRpZXMvb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDUCxpQkFBaUIsRUFDakIsS0FBSyxFQUVSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUVILDBCQUEwQixFQUM3QixNQUFNLGdFQUFnRSxDQUFDO0FBRXhFLE9BQU8sRUFDTCxJQUFJLEVBQ0YsZUFBZSxFQUNsQixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2pILE9BQU8sRUFFSCw0QkFBNEIsRUFDL0IsTUFBTSxrRkFBa0YsQ0FBQztBQUMxRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQztBQUszSSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUVsRyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx3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eUI7a0JBakJyQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsdUJBQXVCO3dCQUNyQiw2QkFBNkI7d0JBQzdCLGVBQWU7d0JBQ2YsK0JBQStCO3dCQUMvQix1Q0FBdUM7d0JBQ3ZDLDBCQUEwQjt3QkFDMUIsbUNBQW1DO3dCQUNuQyw4QkFBOEIsRUFBRSxzQkFBc0I7cUJBQ3pELGlCQUdjLGlCQUFpQixDQUFDLFNBQVM7cUZBcUJqQyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRixZQUFZO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudFxyXG4gICwgVmlld0VuY2Fwc3VsYXRpb25cclxuICAsIElucHV0XHJcbiAgLCBPbkluaXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRXhwYW5zaW9uUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsLWhlYWRlci9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQvYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIE9iamVjdFN0cnVjdHVyZU5vZGVcclxuICAsIE9iamVjdFN0cnVjdHVyZU5vZGVCdWlsZGVyXHJcbn0gZnJvbSAnLi4vYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgKiBhcyBXZWJTZGsgZnJvbSAnYmltcGx1cy13ZWJzZGsnO1xyXG5pbXBvcnQge1xyXG4gIGZyb21cclxuICAsIEJlaGF2aW9yU3ViamVjdFxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCaW1wbHVzT2JqZWN0U3RydWN0dXJlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBsZXhQcm9wZXJ0aWVzTm9kZVxyXG4gICwgQ29tcGxleFByb3BlcnRpZXNOb2RlQnVpbGRlclxyXG59IGZyb20gJy4uL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQmltcGx1c09iamVjdENvbXBsZXhQcm9wZXJ0aWVzQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIE9iamVjdEF0dHJpYnV0ZVxyXG4gICwgT2JqZWN0QXR0cmlidXRlR3JvdXBcclxufSBmcm9tICcuL29iamVjdC1wcm9wZXJ0aWVzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEJpbXBsdXNCdXR0b25zUm93Q29tcG9uZW50IH0gZnJvbSBcIi4uL2JpbXBsdXMtYnV0dG9ucy1yb3cvYmltcGx1cy1idXR0b25zLXJvdy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQmltcGx1c0J1dHRvblJvd0l0ZW0sIEJpbXBsdXNCdXR0b25DbGlja0V2ZW50IH0gZnJvbSBcIi4uL2JpbXBsdXMtYnV0dG9ucy1yb3cvYmltcGx1cy1idXR0b25zLXJvdy5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgQmltcGx1c1Njcm9sbGFibGVDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyL2JpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXIuY29tcG9uZW50J1xyXG5pbXBvcnQgeyBPYmplY3RQcm9wZXJ0aWVzR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9vYmplY3QtcHJvcGVydGllcy1ncm91cC9vYmplY3QtcHJvcGVydGllcy1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBpc09iamVjdFByb3BlcnR5VmFsdWVCbGFuayB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdFByb3BlcnRpZXMnO1xyXG5pbXBvcnQge09iamVjdFByZXZpZXdDb21wb25lbnR9IGZyb20gXCIuLi9vYmplY3QtcHJldmlldy9vYmplY3QtcHJldmlldy5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW9iamVjdC1wcm9wZXJ0aWVzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEV4cGFuc2lvblBhbmVsQ29tcG9uZW50XHJcbiAgICAsIEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50XHJcbiAgICAsIFRyYW5zbGF0ZU1vZHVsZVxyXG4gICAgLCBCaW1wbHVzT2JqZWN0U3RydWN0dXJlQ29tcG9uZW50XHJcbiAgICAsIEJpbXBsdXNPYmplY3RDb21wbGV4UHJvcGVydGllc0NvbXBvbmVudFxyXG4gICAgLCBCaW1wbHVzQnV0dG9uc1Jvd0NvbXBvbmVudFxyXG4gICAgLCBCaW1wbHVzU2Nyb2xsYWJsZUNvbnRhaW5lckNvbXBvbmVudFxyXG4gICAgLCBPYmplY3RQcm9wZXJ0aWVzR3JvdXBDb21wb25lbnQsIE9iamVjdFByZXZpZXdDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtcHJvcGVydGllcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmxlc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5TaGFkb3dEb21cclxufSlcclxuZXhwb3J0IGNsYXNzIE9iamVjdFByb3BlcnRpZXNDb21wb25lbnQgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjb25zdHJ1Y3Rvcih0cmFuc2xhdGVTZXJ2aWNlOiAgVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSlcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfZWRpdE1vZGUgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfb2JqZWN0U3RydWN0dXJlIDogT2JqZWN0U3RydWN0dXJlTm9kZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBnZXQgb2JqZWN0U3RydWN0dXJlKCk6IE9iamVjdFN0cnVjdHVyZU5vZGUgfCBudWxse1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdFN0cnVjdHVyZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29tcGxleFByb3BlcnRpZXMgOiBDb21wbGV4UHJvcGVydGllc05vZGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZ2V0IGNvbXBsZXhQcm9wZXJ0aWVzKCkgOiBDb21wbGV4UHJvcGVydGllc05vZGUgfCBudWxse1xyXG4gICByZXR1cm4gdGhpcy5fY29tcGxleFByb3BlcnRpZXM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBhcGkgOiBXZWJTZGsuQXBpIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcmV2aXNpb24gOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHJvb3RPYmplY3RJZChpZCA6IHN0cmluZyl7XHJcbiAgICB0aGlzLl9jdXJyZW50T2JqZWN0SWQkLm5leHQoaWQpO1xyXG4gICAgdGhpcy5fY3JlYXRlT2JqZWN0U3RydWN0dXJlKGlkLCB0aGlzLnJldmlzaW9uKTtcclxuXHJcbiAgICB0aGlzLl9yb290T2JqZWN0SWQgPSBpZDtcclxuICB9XHJcblxyXG4gIGdldCByb290T2JqZWN0SWQoKSA6IHN0cmluZ3tcclxuICAgIHJldHVybiB0aGlzLl9yb290T2JqZWN0SWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50T2JqZWN0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+IChcIlwiKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50UHJvcGVydGllc09iamVjdElkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiAoXCJcIik7XHJcbiAgcHJpdmF0ZSBfcm9vdE9iamVjdElkIDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgYnV0dG9uUm93SXRlbXM6IEFycmF5PEJpbXBsdXNCdXR0b25Sb3dJdGVtPiA9IFtdO1xyXG4gIGNvbmZpZ0VkaXRQcm9wZXJ0aWVzOiBBcnJheTxCaW1wbHVzQnV0dG9uUm93SXRlbT4gPSBbXTtcclxuICBjb25maWdFZGl0ZWRQcm9wZXJ0aWVzOiBBcnJheTxCaW1wbHVzQnV0dG9uUm93SXRlbT4gPSBbXTtcclxuXHJcbiAgX2VkaXRQcm9wZXJ0aWVzQnV0dG9uc0NvbmZpZ3VyYXRpb24oKSB7XHJcbiAgICB0aGlzLmNvbmZpZ0VkaXRQcm9wZXJ0aWVzLnB1c2goXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogXCJlZGl0LXByb3BlcnRpZXNcIlxyXG4gICAgICAgICwgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfRWRpdF9wcm9wZXJ0aWVzJylcclxuICAgICAgICAsIHRvb2x0aXA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfRWRpdF9wcm9wZXJ0aWVzJylcclxuICAgICAgICAsIGRpc2FibGVkOiBmYWxzZVxyXG4gICAgICAgICwgYnV0dG9uU3R5bGU6ICdwcmltYXJ5J1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgX2VkaXRlZFByb3BlcnRpZXNCdXR0b25zQ29uZmlndXJhdGlvbigpIHtcclxuICAgIHRoaXMuY29uZmlnRWRpdGVkUHJvcGVydGllcy5wdXNoKFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IFwic2F2ZS1jaGFuZ2VkLXByb3BlcnRpZXNcIlxyXG4gICAgICAgICwgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfU2F2ZScpXHJcbiAgICAgICAgLCB0b29sdGlwOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX1NhdmUnKVxyXG4gICAgICAgICwgZGlzYWJsZWQ6IHRydWVcclxuICAgICAgICAsIGJ1dHRvblN0eWxlOiAncHJpbWFyeSdcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuY29uZmlnRWRpdGVkUHJvcGVydGllcy5wdXNoKFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IFwiY2FuY2VsLWVkaXRpbmctcHJvcGVydGllc1wiXHJcbiAgICAgICAgLCB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ19DYW5jZWwnKVxyXG4gICAgICAgICwgdG9vbHRpcDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ19DYW5jZWwnKVxyXG4gICAgICAgICwgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgICAgLCBidXR0b25TdHlsZTogJ3NlY29uZGFyeSdcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fZWRpdFByb3BlcnRpZXNCdXR0b25zQ29uZmlndXJhdGlvbigpO1xyXG4gICAgdGhpcy5fZWRpdGVkUHJvcGVydGllc0J1dHRvbnNDb25maWd1cmF0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5idXR0b25Sb3dJdGVtcyA9IHRoaXMuY29uZmlnRWRpdFByb3BlcnRpZXM7XHJcblxyXG4gICAgdGhpcy5fY3VycmVudFByb3BlcnRpZXNPYmplY3RJZCQuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGlkKSA9PiB7XHJcbiAgICAgICAgaWYoaWQpe1xyXG4gICAgICAgICAgdGhpcy5fY3JlYXRlT2JqZWN0UHJvcGVydGllcyhpZCwgdGhpcy5yZXZpc2lvbilcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2N1cnJlbnRPYmplY3RJZCQuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGlkKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudFByb3BlcnRpZXNPYmplY3RJZCQubmV4dChpZCk7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlQ29tcGxleFByb3BlcnRpZXN0cnVjdHVyZShpZCwgdGhpcy5yZXZpc2lvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT2JqZWN0U3RydWN0dXJlTm9kZVNlbGVjdGVkKG5vZGUgOiBPYmplY3RTdHJ1Y3R1cmVOb2RlKXtcclxuICAgIGNvbnNvbGUubG9nKG5vZGUpO1xyXG4gICAgdGhpcy5fY3VycmVudE9iamVjdElkJC5uZXh0KG5vZGUuaWQpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ29tcGxleFByb3BlcnR5Tm9kZVNlbGVjdGVkKG5vZGUgOiBDb21wbGV4UHJvcGVydGllc05vZGUpe1xyXG4gICAgY29uc29sZS5sb2cobm9kZSk7XHJcbiAgICB0aGlzLl9jdXJyZW50UHJvcGVydGllc09iamVjdElkJC5uZXh0KG5vZGUuaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9hZE9iamVjdFN0cnVjdHVyZShvYmplY3RJZCA6IHN0cmluZywgcmV2aXNpb24gOiBudW1iZXIgfCB1bmRlZmluZWQpe1xyXG4gICAgaWYoIXRoaXMuYXBpKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCFvYmplY3RJZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZyb20odGhpcy5hcGkub2JqZWN0cy5nZXRUb3BvbG9neShvYmplY3RJZCwgcmV2aXNpb24sIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQgOiBzdHJpbmcsIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQsIHJldmlzaW9uKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dCA6KHN0cnVjdHVyZURhdGEpID0+IHtcclxuICAgICAgICBpZihzdHJ1Y3R1cmVEYXRhKXtcclxuICAgICAgICAgIHRoaXMuX29iamVjdFN0cnVjdHVyZSA9IE9iamVjdFN0cnVjdHVyZU5vZGVCdWlsZGVyLmNyZWF0ZUZyb21SZXNwb25zZShzdHJ1Y3R1cmVEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkT2JqZWN0Q29tcGxleFByb3BlcnRpZXNTdHJ1Y3R1cmUob2JqZWN0SWQgOiBzdHJpbmcsIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICAgIGlmKCF0aGlzLmFwaSl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZighb2JqZWN0SWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdHMuZ2V0Q29tcGxleFByb3BlcnRpZXNUb3BvbG9neShvYmplY3RJZCwgcmV2aXNpb24pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUNvbXBsZXhQcm9wZXJ0aWVzdHJ1Y3R1cmUob2JqZWN0SWQgOiBzdHJpbmcsIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RDb21wbGV4UHJvcGVydGllc1N0cnVjdHVyZShvYmplY3RJZCwgcmV2aXNpb24pPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0IDooc3RydWN0dXJlRGF0YSkgPT4ge1xyXG4gICAgICAgIGlmKHN0cnVjdHVyZURhdGEpe1xyXG4gICAgICAgICAgY29uc3QgY29tcGxleFByb3BzID0gQ29tcGxleFByb3BlcnRpZXNOb2RlQnVpbGRlci5jcmVhdGVGcm9tUmVzcG9uc2Uoc3RydWN0dXJlRGF0YSk7XHJcbiAgICAgICAgICBpZihjb21wbGV4UHJvcHM/LmNoaWxkcmVuPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wbGV4UHJvcGVydGllcyA9IGNvbXBsZXhQcm9wcztcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wbGV4UHJvcGVydGllcyA9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb2JqZWN0QXR0cmlidXRlR3JvdXBzIDogT2JqZWN0QXR0cmlidXRlR3JvdXBbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9sb2FkT2JqZWN0UHJvcGVydGllcyhvYmplY3RJZCA6IHN0cmluZywgcmV2aXNpb24gOiBudW1iZXIgfCB1bmRlZmluZWQpe1xyXG4gICAgaWYoIXRoaXMuYXBpKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCFvYmplY3RJZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZyb20odGhpcy5hcGkub2JqZWN0cy5nZXQob2JqZWN0SWQsIHJldmlzaW9uLCBcIjhcIiwgdW5kZWZpbmVkLCBmYWxzZSwgdW5kZWZpbmVkICkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlT2JqZWN0UHJvcGVydGllcyhvYmplY3RJZCA6IHN0cmluZywgcmV2aXNpb24gOiBudW1iZXIgfCB1bmRlZmluZWQpe1xyXG4gICAgdGhpcy5fbG9hZE9iamVjdFByb3BlcnRpZXMob2JqZWN0SWQsIHJldmlzaW9uKT8uc3Vic2NyaWJlKHtcclxuXHJcbiAgICAgICAgLy8gcHJvcGVydGllcyByZXNwb25zZSBpcyBiYWRseSBzdHJ1Y3R1cmVkLCBuZWFybHkgaW1wb3NzaWJsZSB0byBjcmVhdGUgY2xhc3Mgc3RydWN0dXJlIGZyb20gaXQuIFRoZXJlZm9yZSB1c2luZyBzaG9ydGN1dFxyXG4gICAgICAgIC8vIGFueSBmb3IganNvbiByZXNwb25zZVxyXG5cclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBuZXh0OiAocHJvcGVydGllc0RhdGEgOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMub2JqZWN0QXR0cmlidXRlR3JvdXBzID0gdGhpcy5fY3JlYXRlQXR0cmlidXRlR3JvdXBzRnJvbVJlc3BvbnNlKHByb3BlcnRpZXNEYXRhKTtcclxuICAgICAgICAgIC8vIHRoaXMuX3N5bmNBdHRyaWJ1dGVTdGF0ZXNGcm9tQ3JpdGVyaWEoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PntcclxuICAgICAgICAgIHRoaXMub2JqZWN0QXR0cmlidXRlR3JvdXBzID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBwcml2YXRlIF90b29sdGlwKGF0dHJpYjogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG5hbWVUaXRsZTogc3RyaW5nID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ19OYW1lJyk7XHJcbiAgICBjb25zdCBuYW1lOiBzdHJpbmcgPSBhdHRyaWIubmFtZSA/IGF0dHJpYi5uYW1lIDogJyc7XHJcbiAgICBjb25zdCBkZXNjcmlwdGlvblRpdGxlOiBzdHJpbmcgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImRlc2NyaXB0aW9uXCIpO1xyXG4gICAgY29uc3QgZGVzY3JpcHRpb246IHN0cmluZyA9IGF0dHJpYi5kZXNjcmlwdGlvbjtcclxuICAgIGNvbnN0IHV1aWRUaXRsZTogc3RyaW5nID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJfVVVJRFwiKTtcclxuICAgIGNvbnN0IHV1aWQ6IHN0cmluZyA9IGF0dHJpYi5pZDtcclxuICAgIGlmKGRlc2NyaXB0aW9uID09PSBudWxsIHx8IGRlc2NyaXB0aW9uID09PSB1bmRlZmluZWQgfHwgZGVzY3JpcHRpb24gPT09ICcnKSB7XHJcbiAgICAgICByZXR1cm4gYCR7bmFtZVRpdGxlfTogJHtuYW1lfVxcbiR7dXVpZFRpdGxlfTogJHt1dWlkfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7bmFtZVRpdGxlfTogJHtuYW1lfVxcbiR7ZGVzY3JpcHRpb25UaXRsZX06ICR7ZGVzY3JpcHRpb259XFxuJHt1dWlkVGl0bGV9OiAke3V1aWR9YDtcclxuICB9XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHByaXZhdGUgX2NyZWF0ZUF0dHJpYnV0ZUdyb3Vwc0Zyb21SZXNwb25zZShwcm9wZXJ0aWVzRGF0YSA6IGFueSl7XHJcblxyXG4gICAgY29uc3QgZ3JvdXBzIDogQXJyYXk8T2JqZWN0QXR0cmlidXRlR3JvdXA+ID0gW107XHJcbiAgICBsZXQgbG9jYWxpemVkQXR0cmliR3JvdXBzID0gbnVsbDtcclxuICAgIGlmKHByb3BlcnRpZXNEYXRhLmxvY2FsaXplZEF0dHJpYnV0ZUdyb3Vwcyl7XHJcbiAgICAgIGxvY2FsaXplZEF0dHJpYkdyb3VwcyA9IHByb3BlcnRpZXNEYXRhLmxvY2FsaXplZEF0dHJpYnV0ZUdyb3VwcztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXByb3BlcnRpZXNEYXRhLmF0dHJpYnV0ZXMpe1xyXG4gICAgICByZXR1cm4gZ3JvdXBzO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGF0dHJpYkdyb3VwcyA9IHByb3BlcnRpZXNEYXRhLmF0dHJpYnV0ZXM7XHJcbiAgICBmb3IoY29uc3QgW2dyb3VwTmFtZSwgYXR0cmlic09iamVjdF0gb2YgT2JqZWN0LmVudHJpZXMoYXR0cmliR3JvdXBzKSl7XHJcblxyXG4gICAgICBjb25zdCBuZXdHcm91cCA6IE9iamVjdEF0dHJpYnV0ZUdyb3VwID0ge1xyXG4gICAgICAgIG5hbWUgOiBncm91cE5hbWUsXHJcbiAgICAgICAgZXhwYW5kZWQgOiBmYWxzZSxcclxuICAgICAgICBhdHRyaWJ1dGVzIDogW11cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmKGxvY2FsaXplZEF0dHJpYkdyb3Vwcz8uW2dyb3VwTmFtZV0pe1xyXG4gICAgICAgIG5ld0dyb3VwLm5hbWUgPSBsb2NhbGl6ZWRBdHRyaWJHcm91cHNbZ3JvdXBOYW1lXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoIWF0dHJpYnNPYmplY3Qpe1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IoY29uc3QgYXR0cmliIG9mIE9iamVjdC52YWx1ZXMoYXR0cmlic09iamVjdCkpe1xyXG5cclxuICAgICAgICBjb25zdCBuZXdBdHRyaWI6IE9iamVjdEF0dHJpYnV0ZSA9IHtcclxuICAgICAgICAgIGlkOiBhdHRyaWIuaWRcclxuICAgICAgICAgICwgbmFtZTogYXR0cmliLm5hbWVcclxuICAgICAgICAgICwgZGVzY3JpcHRpb246IGF0dHJpYi5kZXNjcmlwdGlvblxyXG4gICAgICAgICAgLCB2YWx1ZTogYXR0cmliLnZhbHVlXHJcbiAgICAgICAgICAsIGdyb3VwOiBhdHRyaWIuZ3JvdXBcclxuICAgICAgICAgICwgdHlwZTogYXR0cmliLnR5cGVcclxuICAgICAgICAgICwgdW5pdDogYXR0cmliLnVuaXRcclxuICAgICAgICAgICwgZGVjaW1hbDogYXR0cmliLmRlY2ltYWxcclxuICAgICAgICAgICwgY29udHJvbDogYXR0cmliLmNvbnRyb2xcclxuICAgICAgICAgICwgZW51bWRlZmluaXRpb246IGF0dHJpYi5lbnVtZGVmaW5pdGlvblxyXG4gICAgICAgICAgLCBpc0NoYW5nZWFibGU6IGF0dHJpYi5pc0NoYW5nZWFibGVcclxuICAgICAgICAgICwgdG9vbHRpcDogdGhpcy5fdG9vbHRpcChhdHRyaWIpXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgbmV3R3JvdXAuYXR0cmlidXRlcy5wdXNoKG5ld0F0dHJpYik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGdyb3Vwcy5wdXNoKG5ld0dyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZ3JvdXBzO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uQ2xpY2tlZCgkZXZlbnQ6IEJpbXBsdXNCdXR0b25DbGlja0V2ZW50KSB7XHJcbiAgICBpZiAoJGV2ZW50LmlkID09PSBcImVkaXQtcHJvcGVydGllc1wiKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRWRpdCBwcm9wZXJ0aWVzIGNsaWNrZWRcIik7XHJcbiAgICAgIHRoaXMuYnV0dG9uUm93SXRlbXMgPSB0aGlzLmNvbmZpZ0VkaXRlZFByb3BlcnRpZXM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCRldmVudC5pZCA9PT0gXCJzYXZlLWNoYW5nZWQtcHJvcGVydGllc1wiKSB7XHJcbiAgICAgIHRoaXMuYnV0dG9uUm93SXRlbXMgPSB0aGlzLmNvbmZpZ0VkaXRQcm9wZXJ0aWVzO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlNhdmUgY2hhbmdlZCBwcm9wZXJ0aWVzIGNsaWNrZWRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCRldmVudC5pZCA9PT0gXCJjYW5jZWwtZWRpdGluZy1wcm9wZXJ0aWVzXCIpIHtcclxuICAgICAgdGhpcy5idXR0b25Sb3dJdGVtcyA9IHRoaXMuY29uZmlnRWRpdFByb3BlcnRpZXM7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQ2FuY2VsIGVkaXQgcHJvcGVydGllcyBjbGlja2VkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFzU2V0QW55QXR0cmlidXRlKG9iamVjdEF0dHJpYnV0ZUdyb3VwOiBPYmplY3RBdHRyaWJ1dGVHcm91cCkge1xyXG4gICAgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZUdyb3VwLmF0dHJpYnV0ZXMuc29tZSgoYXR0cmliKSA9PiB7XHJcbiAgICAgIHJldHVybiAhaXNPYmplY3RQcm9wZXJ0eVZhbHVlQmxhbmsoYXR0cmliKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8bGliLWJpbXBsdXMtYnV0dG9ucy1yb3dcclxuICBbaXRlbXNdPVwiYnV0dG9uUm93SXRlbXNcIlxyXG4gIChidXR0b25DbGlja2VkKT1cImJ1dHRvbkNsaWNrZWQoJGV2ZW50KVwiXHJcbi8+XHJcblxyXG48ZGl2IGNsYXNzPVwib2JqZWN0LXByb3BlcnRpZXNcIj5cclxuXHJcbiAgPGxpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gICAgPGxpYi1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm9iamVjdC1zdHJ1Y3R1cmUtaGVhZGVyXCI+e3tcIl8zRCBwcmV2aWV3XCIgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgPGxpYi1vYmplY3QtcHJldmlldyBbYXBpXT1cImFwaVwiIFtyZXZpc2lvbl09XCJyZXZpc2lvblwiIFtvYmplY3RJZF09XCJyb290T2JqZWN0SWRcIi8+XHJcbiAgICA8L2xpYi1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8IS0tIE9iamVjdCBzdHJ1Y3R1cmUtLT5cclxuICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJvYmplY3Qtc3RydWN0dXJlLWhlYWRlclwiPnt7XCJfT2JqZWN0IHN0cnVjdHVyZVwiIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIEBpZiAob2JqZWN0U3RydWN0dXJlKSB7XHJcbiAgICAgICAgPGxpYi1iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmVcclxuICAgICAgICAgIFtvYmplY3RTdHJ1Y3R1cmVdPVwib2JqZWN0U3RydWN0dXJlXCJcclxuICAgICAgICAgIChub2RlU2VsZWN0ZWQpPVwiaGFuZGxlT2JqZWN0U3RydWN0dXJlTm9kZVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIH1cclxuICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbD5cclxuICAgIDwhLS0gRW5kIE9iamVjdCBzdHJ1Y3R1cmUtLT5cclxuXHJcbiAgICA8IS0tIENvbXBsZXggcHJvcGVydGllcy0tPlxyXG4gICAgQGlmKGNvbXBsZXhQcm9wZXJ0aWVzKXtcclxuICAgICAgPGxpYi1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgPGxpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJvYmplY3QtcHJvcGVydGllcy1oZWFkZXJcIj4ge3tcIl9PYmplY3QgbXVsdGlwcm9wZXJ0aWVzIHRyZWVcIiB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgPGxpYi1iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXNcclxuICAgICAgICAgIFtjb21wbGV4UHJvcGVydGllc109XCJjb21wbGV4UHJvcGVydGllc1wiXHJcbiAgICAgICAgICAobm9kZVNlbGVjdGVkKT1cImhhbmRsZUNvbXBsZXhQcm9wZXJ0eU5vZGVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWw+XHJcbiAgICB9XHJcbiAgICA8IS0tIEVuZCBDb21wbGV4IHByb3BlcnRpZXMtLT5cclxuXHJcbiAgICBAaWYob2JqZWN0QXR0cmlidXRlR3JvdXBzLmxlbmd0aCA+IDApe1xyXG4gICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9iamVjdC1wcm9wZXJ0aWVzLWhlYWRlclwiPnt7XCJfT2JqZWN0IHByb3BlcnRpZXNcIiB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICBAZm9yIChhdHRyaWJHcm91cCBvZiBvYmplY3RBdHRyaWJ1dGVHcm91cHM7IHRyYWNrIGF0dHJpYkdyb3VwKSB7XHJcbiAgICAgICAgQGlmKGhhc1NldEFueUF0dHJpYnV0ZShhdHRyaWJHcm91cCkpe1xyXG4gICAgICAgICAgPGxpYi1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cImF0dHJpYkdyb3VwLmV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9iamVjdC1wcm9wZXJ0aWVzLWdyb3VwLWhlYWRlclwiPiB7e2F0dHJpYkdyb3VwLm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgICAgPGxpYi1vYmplY3QtcHJvcGVydGllcy1ncm91cFxyXG4gICAgICAgICAgICAgIFthdHRyaWJ1dGVzR3JvdXBdPVwiYXR0cmliR3JvdXBcIlxyXG4gICAgICAgICAgICAgIFtlZGl0TW9kZV09XCJfZWRpdE1vZGVcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9saWItZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWw+XHJcbiAgICB9XHJcbiAgPC9saWItYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXByb3BlcnRpZXMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LXByb3BlcnRpZXMvb2JqZWN0LXByb3BlcnRpZXMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RBdHRyaWJ1dGV7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICBncm91cDogc3RyaW5nO1xyXG4gIHR5cGU6IHN0cmluZztcclxuICB1bml0OiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuICBkZWNpbWFsOiBudW1iZXI7XHJcbiAgY29udHJvbDogc3RyaW5nO1xyXG4gIGVudW1kZWZpbml0aW9uOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gIGlzQ2hhbmdlYWJsZTogYm9vbGVhbjtcclxuICB0b29sdGlwOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0QXR0cmlidXRlR3JvdXB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGF0dHJpYnV0ZXM6IE9iamVjdEF0dHJpYnV0ZVtdO1xyXG4gIGV4cGFuZGVkOiBib29sZWFuO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,40 @@
1
+ import { Component, Input, ViewEncapsulation, signal } from '@angular/core';
2
+ import { RoundPipe } from '../../pipes/round.pipe';
3
+ import { GetAttributeValue } from '../../pipes/get-attribute-value.pipe';
4
+ import { isObjectPropertyValueBlank } from '../../utils/objectProperties';
5
+ import { ObjectPropertyValueComponent } from './object-property-value/object-property-value.component';
6
+ import * as i0 from "@angular/core";
7
+ export class ObjectPropertiesGroupComponent {
8
+ set attributesGroup(value) {
9
+ if (!value) {
10
+ return;
11
+ }
12
+ this._attributesGroup.set(value);
13
+ }
14
+ constructor() {
15
+ this.editMode = false;
16
+ this._attributesGroup = signal({
17
+ name: '',
18
+ attributes: [],
19
+ expanded: false,
20
+ });
21
+ }
22
+ isValueBlank(attrib) {
23
+ return isObjectPropertyValueBlank(attrib);
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ObjectPropertiesGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: ObjectPropertiesGroupComponent, isStandalone: true, selector: "lib-object-properties-group", inputs: { editMode: "editMode", attributesGroup: "attributesGroup" }, ngImport: i0, template: "<div class=\"object-property-table\">\r\n @for (attrib of _attributesGroup().attributes; track attrib) {\r\n @if(!isValueBlank(attrib)) {\r\n <div class=\"rowWrapper\">\r\n <div class=\"table-cell object-property-icon uuid-{{attrib.id}}\"></div>\r\n <div class=\"table-cell object-property-name uuid-{{attrib.id}}\" title=\"{{attrib.tooltip}}\">{{attrib.name}}:</div>\r\n <div class=\"table-cell object-property-value uuid-{{attrib.id}}\">\r\n <lib-object-property-value\r\n value=\"{{attrib | getAttributeValue}}\"\r\n tooltip=\"{{attrib.tooltip}}\"\r\n />\r\n </div>\r\n <div class=\"table-cell object-property-unit uuid-{{attrib.id}}\" title=\"{{attrib.tooltip}}\">{{attrib.unit}}</div>\r\n </div>\r\n }\r\n }\r\n</div>\r\n", styles: [".object-property-table{display:grid;grid-template-columns:2.8rem 1fr auto auto;overflow:hidden}.object-property-table .rowWrapper{display:contents}.object-property-table .rowWrapper:hover>div{background-color:var(--alternate-row-background-color)}.object-property-table .table-cell{max-height:2.4rem;height:2.4rem;min-height:2.4rem;padding-bottom:.1rem;line-height:2.4rem}.object-property-table .object-property-name{padding-right:.5rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;min-width:15rem}.object-property-table .object-property-value{padding-right:.5rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;min-width:2rem}.object-property-table .object-property-unit{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;min-width:2rem}\n"], dependencies: [{ kind: "pipe", type: GetAttributeValue, name: "getAttributeValue" }, { kind: "component", type: ObjectPropertyValueComponent, selector: "lib-object-property-value", inputs: ["value", "tooltip"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ObjectPropertiesGroupComponent, decorators: [{
29
+ type: Component,
30
+ args: [{ selector: 'lib-object-properties-group', standalone: true, imports: [
31
+ RoundPipe,
32
+ GetAttributeValue,
33
+ ObjectPropertyValueComponent
34
+ ], encapsulation: ViewEncapsulation.ShadowDom, template: "<div class=\"object-property-table\">\r\n @for (attrib of _attributesGroup().attributes; track attrib) {\r\n @if(!isValueBlank(attrib)) {\r\n <div class=\"rowWrapper\">\r\n <div class=\"table-cell object-property-icon uuid-{{attrib.id}}\"></div>\r\n <div class=\"table-cell object-property-name uuid-{{attrib.id}}\" title=\"{{attrib.tooltip}}\">{{attrib.name}}:</div>\r\n <div class=\"table-cell object-property-value uuid-{{attrib.id}}\">\r\n <lib-object-property-value\r\n value=\"{{attrib | getAttributeValue}}\"\r\n tooltip=\"{{attrib.tooltip}}\"\r\n />\r\n </div>\r\n <div class=\"table-cell object-property-unit uuid-{{attrib.id}}\" title=\"{{attrib.tooltip}}\">{{attrib.unit}}</div>\r\n </div>\r\n }\r\n }\r\n</div>\r\n", styles: [".object-property-table{display:grid;grid-template-columns:2.8rem 1fr auto auto;overflow:hidden}.object-property-table .rowWrapper{display:contents}.object-property-table .rowWrapper:hover>div{background-color:var(--alternate-row-background-color)}.object-property-table .table-cell{max-height:2.4rem;height:2.4rem;min-height:2.4rem;padding-bottom:.1rem;line-height:2.4rem}.object-property-table .object-property-name{padding-right:.5rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;min-width:15rem}.object-property-table .object-property-value{padding-right:.5rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;min-width:2rem}.object-property-table .object-property-unit{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;min-width:2rem}\n"] }]
35
+ }], ctorParameters: () => [], propDecorators: { editMode: [{
36
+ type: Input
37
+ }], attributesGroup: [{
38
+ type: Input
39
+ }] } });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXByb3BlcnRpZXMtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LXByb3BlcnRpZXMtZ3JvdXAvb2JqZWN0LXByb3BlcnRpZXMtZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LXByb3BlcnRpZXMtZ3JvdXAvb2JqZWN0LXByb3BlcnRpZXMtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDUCxLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7O0FBZXZHLE1BQU0sT0FBTyw4QkFBOEI7SUFTekMsSUFBYSxlQUFlLENBQUMsS0FBdUM7UUFDbEUsSUFBRyxDQUFDLEtBQUssRUFBQyxDQUFDO1lBQ1QsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDtRQWZTLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFFMUIscUJBQWdCLEdBQUcsTUFBTSxDQUF1QjtZQUN4RCxJQUFJLEVBQUUsRUFBRTtZQUNSLFVBQVUsRUFBRSxFQUFFO1lBQ2QsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO0lBU2EsQ0FBQztJQUVqQixZQUFZLENBQUMsTUFBdUI7UUFDbEMsT0FBTywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDOytHQXBCVSw4QkFBOEI7bUdBQTlCLDhCQUE4Qiw2SkM1QjNDLHF6QkFpQkEsdXpCREdNLGlCQUFpQiwwREFDakIsNEJBQTRCOzs0RkFPckIsOEJBQThCO2tCQWIxQyxTQUFTOytCQUNFLDZCQUE2QixjQUMzQixJQUFJLFdBQ1A7d0JBQ1AsU0FBUzt3QkFDUCxpQkFBaUI7d0JBQ2pCLDRCQUE0QjtxQkFDL0IsaUJBR2MsaUJBQWlCLENBQUMsU0FBUzt3REFJakMsUUFBUTtzQkFBaEIsS0FBSztnQkFRTyxlQUFlO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnRcclxuICAsIElucHV0XHJcbiAgLCBWaWV3RW5jYXBzdWxhdGlvblxyXG4gICwgc2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgT2JqZWN0QXR0cmlidXRlR3JvdXBcclxuICAsIE9iamVjdEF0dHJpYnV0ZVxyXG59IGZyb20gJy4uL29iamVjdC1wcm9wZXJ0aWVzL29iamVjdC1wcm9wZXJ0aWVzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFJvdW5kUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3JvdW5kLnBpcGUnO1xyXG5pbXBvcnQgeyBHZXRBdHRyaWJ1dGVWYWx1ZSB9IGZyb20gJy4uLy4uL3BpcGVzL2dldC1hdHRyaWJ1dGUtdmFsdWUucGlwZSc7XHJcbmltcG9ydCB7IGlzT2JqZWN0UHJvcGVydHlWYWx1ZUJsYW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvb2JqZWN0UHJvcGVydGllcyc7XHJcbmltcG9ydCB7IE9iamVjdFByb3BlcnR5VmFsdWVDb21wb25lbnQgfSBmcm9tICcuL29iamVjdC1wcm9wZXJ0eS12YWx1ZS9vYmplY3QtcHJvcGVydHktdmFsdWUuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW9iamVjdC1wcm9wZXJ0aWVzLWdyb3VwJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFJvdW5kUGlwZVxyXG4gICAgLCBHZXRBdHRyaWJ1dGVWYWx1ZVxyXG4gICAgLCBPYmplY3RQcm9wZXJ0eVZhbHVlQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LXByb3BlcnRpZXMtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1wcm9wZXJ0aWVzLWdyb3VwLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgT2JqZWN0UHJvcGVydGllc0dyb3VwQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBlZGl0TW9kZSA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJvdGVjdGVkIF9hdHRyaWJ1dGVzR3JvdXAgPSBzaWduYWw8T2JqZWN0QXR0cmlidXRlR3JvdXA+KHtcclxuICAgIG5hbWU6ICcnLFxyXG4gICAgYXR0cmlidXRlczogW10sXHJcbiAgICBleHBhbmRlZDogZmFsc2UsXHJcbiAgfSk7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBhdHRyaWJ1dGVzR3JvdXAodmFsdWU6IE9iamVjdEF0dHJpYnV0ZUdyb3VwIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZighdmFsdWUpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9hdHRyaWJ1dGVzR3JvdXAuc2V0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIGlzVmFsdWVCbGFuayhhdHRyaWI6IE9iamVjdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGlzT2JqZWN0UHJvcGVydHlWYWx1ZUJsYW5rKGF0dHJpYik7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJvYmplY3QtcHJvcGVydHktdGFibGVcIj5cclxuICBAZm9yIChhdHRyaWIgb2YgX2F0dHJpYnV0ZXNHcm91cCgpLmF0dHJpYnV0ZXM7IHRyYWNrIGF0dHJpYikge1xyXG4gICAgQGlmKCFpc1ZhbHVlQmxhbmsoYXR0cmliKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93V3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jZWxsIG9iamVjdC1wcm9wZXJ0eS1pY29uIHV1aWQte3thdHRyaWIuaWR9fVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jZWxsIG9iamVjdC1wcm9wZXJ0eS1uYW1lIHV1aWQte3thdHRyaWIuaWR9fVwiIHRpdGxlPVwie3thdHRyaWIudG9vbHRpcH19XCI+e3thdHRyaWIubmFtZX19OjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jZWxsIG9iamVjdC1wcm9wZXJ0eS12YWx1ZSB1dWlkLXt7YXR0cmliLmlkfX1cIj5cclxuICAgICAgICAgIDxsaWItb2JqZWN0LXByb3BlcnR5LXZhbHVlXHJcbiAgICAgICAgICAgIHZhbHVlPVwie3thdHRyaWIgfCBnZXRBdHRyaWJ1dGVWYWx1ZX19XCJcclxuICAgICAgICAgICAgdG9vbHRpcD1cInt7YXR0cmliLnRvb2x0aXB9fVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jZWxsIG9iamVjdC1wcm9wZXJ0eS11bml0IHV1aWQte3thdHRyaWIuaWR9fVwiIHRpdGxlPVwie3thdHRyaWIudG9vbHRpcH19XCI+e3thdHRyaWIudW5pdH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,55 @@
1
+ import { Input, Component, ViewEncapsulation, signal } from '@angular/core';
2
+ import isURL from 'validator/lib/isURL';
3
+ import * as i0 from "@angular/core";
4
+ export class ObjectPropertyValueComponent {
5
+ set value(value) {
6
+ this._value.set(value);
7
+ if (this._isUrl(value)) {
8
+ this._valueIsUrl.set(true);
9
+ this._decoratedHyperlink.set(this._decorateHyperlink(value));
10
+ }
11
+ else {
12
+ this._valueIsUrl.set(false);
13
+ }
14
+ }
15
+ set tooltip(tooltip) {
16
+ this._tooltip.set(tooltip);
17
+ }
18
+ _isUrl(url) {
19
+ if (!url) {
20
+ return false;
21
+ }
22
+ const link = url.trim();
23
+ if (!/^http(s?):\/\//.exec(link) && !/^www\./.exec(link)) {
24
+ return false;
25
+ }
26
+ return isURL(link);
27
+ }
28
+ _decorateHyperlink(url) {
29
+ if (!this._isUrl(url)) {
30
+ return '';
31
+ }
32
+ let link = url.trim();
33
+ if (link && !/^http(s?):\/\//.exec(link)) {
34
+ link = 'https://' + link;
35
+ }
36
+ return link;
37
+ }
38
+ constructor() {
39
+ this._tooltip = signal('');
40
+ this._value = signal('');
41
+ this._valueIsUrl = signal(false);
42
+ this._decoratedHyperlink = signal('');
43
+ }
44
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ObjectPropertyValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
45
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: ObjectPropertyValueComponent, isStandalone: true, selector: "lib-object-property-value", inputs: { value: "value", tooltip: "tooltip" }, ngImport: i0, template: "@if(_valueIsUrl()) {\r\n <a class=\"link-detect-automatically\" target=\"_blank\" rel=\"noopener\" href={{_decoratedHyperlink()}} title=\"{{_tooltip()}}\">{{_value()}}</a>\r\n}\r\n@else {\r\n <div title=\"{{_tooltip()}}\">\r\n {{_value()}}\r\n </div>\r\n}\r\n", styles: [""], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ObjectPropertyValueComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ selector: 'lib-object-property-value', standalone: true, encapsulation: ViewEncapsulation.ShadowDom, template: "@if(_valueIsUrl()) {\r\n <a class=\"link-detect-automatically\" target=\"_blank\" rel=\"noopener\" href={{_decoratedHyperlink()}} title=\"{{_tooltip()}}\">{{_value()}}</a>\r\n}\r\n@else {\r\n <div title=\"{{_tooltip()}}\">\r\n {{_value()}}\r\n </div>\r\n}\r\n" }]
50
+ }], ctorParameters: () => [], propDecorators: { value: [{
51
+ type: Input
52
+ }], tooltip: [{
53
+ type: Input
54
+ }] } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXByb3BlcnR5LXZhbHVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL29iamVjdC1wcm9wZXJ0aWVzLWdyb3VwL29iamVjdC1wcm9wZXJ0eS12YWx1ZS9vYmplY3QtcHJvcGVydHktdmFsdWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LXByb3BlcnRpZXMtZ3JvdXAvb2JqZWN0LXByb3BlcnR5LXZhbHVlL29iamVjdC1wcm9wZXJ0eS12YWx1ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxLQUFLLE1BQU0scUJBQXFCLENBQUM7O0FBU3hDLE1BQU0sT0FBTyw0QkFBNEI7SUFNdkMsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7YUFDSSxDQUFDO1lBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFhLE9BQU8sQ0FBQyxPQUFlO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxNQUFNLENBQUMsR0FBVztRQUN4QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRU8sa0JBQWtCLENBQUMsR0FBVztRQUNwQyxJQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV0QixJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pDLElBQUksR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDtRQTVDVSxhQUFRLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLFdBQU0sR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDNUIsZ0JBQVcsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDckMsd0JBQW1CLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBeUNuQyxDQUFDOytHQTdDTiw0QkFBNEI7bUdBQTVCLDRCQUE0QixxSUNWekMsMlFBUUE7OzRGREVhLDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDRSwyQkFBMkIsY0FDekIsSUFBSSxpQkFHRCxpQkFBaUIsQ0FBQyxTQUFTO3dEQVE3QixLQUFLO3NCQUFqQixLQUFLO2dCQVdPLE9BQU87c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dCwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBpc1VSTCBmcm9tICd2YWxpZGF0b3IvbGliL2lzVVJMJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW9iamVjdC1wcm9wZXJ0eS12YWx1ZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LXByb3BlcnR5LXZhbHVlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtcHJvcGVydHktdmFsdWUuY29tcG9uZW50Lmxlc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5TaGFkb3dEb21cclxufSlcclxuZXhwb3J0IGNsYXNzIE9iamVjdFByb3BlcnR5VmFsdWVDb21wb25lbnQge1xyXG4gIHByb3RlY3RlZCBfdG9vbHRpcCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcclxuICBwcm90ZWN0ZWQgX3ZhbHVlID0gc2lnbmFsPHN0cmluZz4oJycpO1xyXG4gIHByb3RlY3RlZCBfdmFsdWVJc1VybCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHJvdGVjdGVkIF9kZWNvcmF0ZWRIeXBlcmxpbmsgPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblxyXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl92YWx1ZS5zZXQodmFsdWUpO1xyXG4gICAgaWYodGhpcy5faXNVcmwodmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlSXNVcmwuc2V0KHRydWUpO1xyXG4gICAgICB0aGlzLl9kZWNvcmF0ZWRIeXBlcmxpbmsuc2V0KHRoaXMuX2RlY29yYXRlSHlwZXJsaW5rKHZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fdmFsdWVJc1VybC5zZXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHRvb2x0aXAodG9vbHRpcDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl90b29sdGlwLnNldCh0b29sdGlwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXVybCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBsaW5rID0gdXJsLnRyaW0oKTtcclxuICAgIGlmKCEvXmh0dHAocz8pOlxcL1xcLy8uZXhlYyhsaW5rKSAmJiAhL153d3dcXC4vLmV4ZWMobGluaykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpc1VSTChsaW5rKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RlY29yYXRlSHlwZXJsaW5rKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmKCF0aGlzLl9pc1VybCh1cmwpKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIGxldCBsaW5rID0gdXJsLnRyaW0oKTtcclxuXHJcbiAgICBpZiAobGluayAmJiAhL15odHRwKHM/KTpcXC9cXC8vLmV4ZWMobGluaykpIHtcclxuICAgICAgbGluayA9ICdodHRwczovLycgKyBsaW5rO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpbms7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG59XHJcbiIsIkBpZihfdmFsdWVJc1VybCgpKSB7XHJcbiAgPGEgY2xhc3M9XCJsaW5rLWRldGVjdC1hdXRvbWF0aWNhbGx5XCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIiBocmVmPXt7X2RlY29yYXRlZEh5cGVybGluaygpfX0gdGl0bGU9XCJ7e190b29sdGlwKCl9fVwiPnt7X3ZhbHVlKCl9fTwvYT5cclxufVxyXG5AZWxzZSB7XHJcbiAgPGRpdiB0aXRsZT1cInt7X3Rvb2x0aXAoKX19XCI+XHJcbiAgICB7e192YWx1ZSgpfX1cclxuICA8L2Rpdj5cclxufVxyXG4iXX0=