ngx-bimplus-components 0.0.148 → 0.0.149-28792-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 (174) 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/ic_models.svg +3 -0
  10. package/assets/images/default/ic_models_maincolor.svg +3 -0
  11. package/assets/images/default/icn_grid_attachments.png +0 -0
  12. package/assets/images/default/icn_grid_hyperlinks.png +0 -0
  13. package/assets/languages/strings_cs.json +24 -72
  14. package/assets/languages/strings_de.json +4 -15
  15. package/assets/languages/strings_en.json +5 -5
  16. package/assets/languages/strings_es.json +6 -54
  17. package/assets/languages/strings_fr.json +6 -50
  18. package/assets/languages/strings_it.json +2 -50
  19. package/assets/languages/strings_nl.json +796 -796
  20. package/assets/languages/strings_ro.json +7 -55
  21. package/assets/languages/strings_ru.json +45 -93
  22. package/assets/languages/strings_tr.json +2 -50
  23. package/assets/languages/strings_us.json +8 -44
  24. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.component.mjs +69 -0
  25. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.interface.mjs +34 -0
  26. package/esm2022/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.mjs +82 -0
  27. package/esm2022/lib/components/bimplus-attachments/services/bimplus-attachments.service.mjs +49 -0
  28. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +20 -7
  29. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.mjs +5 -2
  30. package/esm2022/lib/components/bimplus-comment/bimplus-comment.component.mjs +68 -0
  31. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +7 -7
  32. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.interface.mjs +1 -1
  33. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.service.mjs +4 -4
  34. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +5 -5
  35. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.interface.mjs +1 -1
  36. package/esm2022/lib/components/bimplus-contact/bimplus-contact.component.mjs +5 -5
  37. package/esm2022/lib/components/bimplus-context-menu/bimplus-context-menu.component.mjs +3 -3
  38. package/esm2022/lib/components/bimplus-context-menu/bimplus-context-menu.interface.mjs +1 -1
  39. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +5 -5
  40. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.mjs +1 -1
  41. package/esm2022/lib/components/bimplus-floating-bar/bimplus-floating-bar.component.mjs +5 -5
  42. package/esm2022/lib/components/bimplus-floating-bar/bimplus-floating-bar.interface.mjs +1 -1
  43. package/esm2022/lib/components/bimplus-floating-bar-body/bimplus-floating-bar-body.component.mjs +5 -5
  44. package/esm2022/lib/components/bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component.mjs +5 -5
  45. package/esm2022/lib/components/bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component.mjs +3 -3
  46. package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +4 -4
  47. package/esm2022/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.mjs +3 -3
  48. package/esm2022/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.mjs +4 -4
  49. package/esm2022/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.mjs +3 -3
  50. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.mjs +4 -4
  51. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service.mjs +3 -3
  52. package/esm2022/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.mjs +58 -0
  53. package/esm2022/lib/components/bimplus-language-menu/bimplus-language-menu.component.mjs +3 -3
  54. package/esm2022/lib/components/bimplus-localized-widget/bimplus-localized-widget.component.mjs +5 -5
  55. package/esm2022/lib/components/bimplus-main-menu/bimplus-main-menu.component.mjs +3 -3
  56. package/esm2022/lib/components/bimplus-navbar/bimplus-navbar.component.mjs +3 -3
  57. package/esm2022/lib/components/bimplus-notify/bimplus-notify.component.mjs +5 -5
  58. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.mjs +242 -0
  59. package/esm2022/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.mjs +2 -0
  60. package/esm2022/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.mjs +5 -5
  61. package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +5 -5
  62. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +5 -5
  63. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.mjs +1 -1
  64. package/esm2022/lib/components/bimplus-object-navigator/filter-criterium/filter-criterium.component.mjs +3 -3
  65. package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +5 -5
  66. package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.component.mjs +5 -5
  67. package/esm2022/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.mjs +76 -0
  68. package/esm2022/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.mjs +78 -0
  69. package/esm2022/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.mjs +3 -3
  70. package/esm2022/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.mjs +10 -7
  71. package/esm2022/lib/components/bimplus-panel-toolbar/bimplus-panel-toolbar.component.mjs +5 -5
  72. package/esm2022/lib/components/bimplus-project-menu/bimplus-project-menu.component.mjs +3 -3
  73. package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +5 -5
  74. package/esm2022/lib/components/bimplus-sidenav/bimplus-sidenav.component.mjs +3 -3
  75. package/esm2022/lib/components/bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component.mjs +3 -3
  76. package/esm2022/lib/components/bimplus-storage-info/bimplus-storage-info.component.mjs +3 -3
  77. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.mjs +38 -0
  78. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.mjs +10 -0
  79. package/esm2022/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.mjs +89 -0
  80. package/esm2022/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.mjs +33 -0
  81. package/esm2022/lib/components/bimplus-text-message/bimplus-text-message.component.mjs +3 -3
  82. package/esm2022/lib/components/bimplus-textarea/autoResizeTextarea.directive.mjs +83 -0
  83. package/esm2022/lib/components/bimplus-textarea/bimplus-textarea.component.mjs +122 -0
  84. package/esm2022/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.mjs +3 -3
  85. package/esm2022/lib/components/bimplus-tool-hub/svgGenerator.mjs +1 -1
  86. package/esm2022/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.mjs +3 -3
  87. package/esm2022/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.mjs +3 -3
  88. package/esm2022/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.component.mjs +5 -5
  89. package/esm2022/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.interface.mjs +1 -1
  90. package/esm2022/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.mjs +5 -5
  91. package/esm2022/lib/components/bimplus-user-menu/bimplus-user-menu.component.mjs +3 -3
  92. package/esm2022/lib/components/bimplus-zoom/bimplus-zoom.component.mjs +5 -5
  93. package/esm2022/lib/components/expansion-panel/expansion-panel.component.mjs +3 -3
  94. package/esm2022/lib/components/expansion-panel-header/expansion-panel-header.component.mjs +3 -3
  95. package/esm2022/lib/components/expansion-panel-header-actions/expansion-panel-header-actions.component.mjs +3 -3
  96. package/esm2022/lib/components/links-to-documents/links-to-documents.component.interface.mjs +2 -0
  97. package/esm2022/lib/components/links-to-documents/links-to-documents.component.mjs +337 -0
  98. package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +3 -3
  99. package/esm2022/lib/components/object-hyperlinks/object-hyperlinks.component.mjs +141 -0
  100. package/esm2022/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.mjs +36 -0
  101. package/esm2022/lib/components/object-properties/object-properties.component.mjs +261 -0
  102. package/esm2022/lib/components/object-properties/object-properties.interface.mjs +2 -0
  103. package/esm2022/lib/components/object-properties-group/object-properties-group.component.mjs +40 -0
  104. package/esm2022/lib/components/object-properties-group/object-property-value/object-property-value.component.mjs +55 -0
  105. package/esm2022/lib/components/object-properties-header/object-properties-header.component.mjs +21 -6
  106. package/esm2022/lib/components/object-properties-header/object-properties-header.interface.mjs +1 -1
  107. package/esm2022/lib/components/project-models/project-models.component.mjs +3 -3
  108. package/esm2022/lib/components/project-models/project-models.interface.mjs +1 -1
  109. package/esm2022/lib/components/resizable-panel/resizable-panel.component.mjs +5 -5
  110. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +4 -4
  111. package/esm2022/lib/directives/component-draggable/componentsDraggable.directive.mjs +3 -3
  112. package/esm2022/lib/directives/draggable.directive.mjs +3 -3
  113. package/esm2022/lib/directives/resizable.directive.mjs +4 -4
  114. package/esm2022/lib/directives/x-draggable.directive.mjs +3 -3
  115. package/esm2022/lib/interfaces/bimplus-opacity-properties.interface.mjs +1 -1
  116. package/esm2022/lib/interfaces/bimplus-visibility-properties.interface.mjs +1 -1
  117. package/esm2022/lib/ngx-bimplus-components.component.mjs +3 -3
  118. package/esm2022/lib/ngx-bimplus-components.service.mjs +3 -3
  119. package/esm2022/lib/pipes/bit-converter.pipe.mjs +46 -0
  120. package/esm2022/lib/pipes/get-attribute-value.pipe.mjs +110 -0
  121. package/esm2022/lib/pipes/pxsuffix.pipe.mjs +3 -3
  122. package/esm2022/lib/pipes/round.pipe.mjs +20 -0
  123. package/esm2022/lib/services/cursors.service.mjs +3 -3
  124. package/esm2022/lib/services/language-strings.service.mjs +3 -3
  125. package/esm2022/lib/services/layout-manager.service.mjs +3 -3
  126. package/esm2022/lib/services/local-storage.service.mjs +4 -4
  127. package/esm2022/lib/services/resize-observer.service.mjs +4 -4
  128. package/esm2022/lib/types/types.mjs +1 -1
  129. package/esm2022/lib/utils/filterString.mjs +1 -1
  130. package/esm2022/lib/utils/filterStructureFetcher.mjs +1 -1
  131. package/esm2022/lib/utils/objectProperties.mjs +9 -0
  132. package/esm2022/lib/utils/utils.mjs +1 -1
  133. package/esm2022/public-api.mjs +17 -1
  134. package/fesm2022/ngx-bimplus-components.mjs +2323 -249
  135. package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
  136. package/lib/components/bimplus-attachments/bimplus-attachments.component.d.ts +25 -0
  137. package/lib/components/bimplus-attachments/bimplus-attachments.interface.d.ts +19 -0
  138. package/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.d.ts +26 -0
  139. package/lib/components/bimplus-attachments/services/bimplus-attachments.service.d.ts +12 -0
  140. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.d.ts +9 -3
  141. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.d.ts +5 -0
  142. package/lib/components/bimplus-comment/bimplus-comment.component.d.ts +34 -0
  143. package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +1 -1
  144. package/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.d.ts +17 -0
  145. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.d.ts +51 -0
  146. package/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.d.ts +11 -0
  147. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.d.ts +7 -7
  148. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.d.ts +3 -3
  149. package/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.d.ts +31 -0
  150. package/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.d.ts +26 -0
  151. package/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.d.ts +3 -0
  152. package/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.d.ts +1 -1
  153. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.d.ts +16 -0
  154. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.d.ts +18 -0
  155. package/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.d.ts +36 -0
  156. package/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.d.ts +15 -0
  157. package/lib/components/bimplus-textarea/autoResizeTextarea.directive.d.ts +24 -0
  158. package/lib/components/bimplus-textarea/bimplus-textarea.component.d.ts +42 -0
  159. package/lib/components/links-to-documents/links-to-documents.component.d.ts +55 -0
  160. package/lib/components/links-to-documents/links-to-documents.component.interface.d.ts +11 -0
  161. package/lib/components/object-hyperlinks/object-hyperlinks.component.d.ts +32 -0
  162. package/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.d.ts +15 -0
  163. package/lib/components/object-properties/object-properties.component.d.ts +45 -0
  164. package/lib/components/object-properties/object-properties.interface.d.ts +21 -0
  165. package/lib/components/object-properties-group/object-properties-group.component.d.ts +11 -0
  166. package/lib/components/object-properties-group/object-property-value/object-property-value.component.d.ts +14 -0
  167. package/lib/components/object-properties-header/object-properties-header.component.d.ts +5 -3
  168. package/lib/components/object-properties-header/object-properties-header.interface.d.ts +1 -0
  169. package/lib/pipes/bit-converter.pipe.d.ts +17 -0
  170. package/lib/pipes/get-attribute-value.pipe.d.ts +23 -0
  171. package/lib/pipes/round.pipe.d.ts +7 -0
  172. package/lib/utils/objectProperties.d.ts +2 -0
  173. package/package.json +11 -4
  174. package/public-api.d.ts +16 -0
@@ -0,0 +1,141 @@
1
+ import { Component, Input, ViewEncapsulation } from '@angular/core';
2
+ import { BimplusButtonsRowComponent } from "../bimplus-buttons-row/bimplus-buttons-row.component";
3
+ import { BimplusLocalizedWidgetComponent } from "../bimplus-localized-widget/bimplus-localized-widget.component";
4
+ import { TranslateModule } from "@ngx-translate/core";
5
+ import { BimplusScrollableContainerComponent } from "../bimplus-scrollable-container/bimplus-scrollable-container.component";
6
+ import { ObjectHyperlinksItemComponent } from "../object-hyperlinks-item/object-hyperlinks-item.component";
7
+ import { BehaviorSubject } from "rxjs";
8
+ import { NgForOf, NgIf } from "@angular/common";
9
+ import { BimplusOverlayDialogConfirmComponent } from "../bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component";
10
+ import { ReactiveFormsModule, Validators } from "@angular/forms";
11
+ import { BimplusInputTextFieldComponent } from "../bimplus-input-text-field/bimplus-input-text-field.component";
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@ngx-translate/core";
14
+ import * as i2 from "../bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service";
15
+ import * as i3 from "@angular/forms";
16
+ export class ObjectHyperlinksComponent extends BimplusLocalizedWidgetComponent {
17
+ constructor(translateService, dialogService, formBuilder) {
18
+ super(translateService);
19
+ this.dialogService = dialogService;
20
+ this.formBuilder = formBuilder;
21
+ this.api = null;
22
+ this._currentObjectId$ = new BehaviorSubject("");
23
+ this._currentPropertiesObjectId$ = new BehaviorSubject("");
24
+ this._rootObjectId = "";
25
+ this.buttonRowItems = [];
26
+ this.canCreateHyperlinks = true;
27
+ this.canDeleteHyperlinks = true;
28
+ this.hyperlinks = [];
29
+ this.hyperlinkForm = this.formBuilder.group({
30
+ name: ['', []],
31
+ url: ['',
32
+ [
33
+ Validators.required,
34
+ Validators.pattern(/^[^<>]*$/), // Do not allow < or >
35
+ Validators.pattern(/^(?!\s*$).+/) // Do not allow all empty string, but allow text after spaces
36
+ ]
37
+ ]
38
+ });
39
+ this.hyperlinkForm.statusChanges.subscribe(status => {
40
+ this.buttonRowItems[0].disabled = status !== 'VALID';
41
+ });
42
+ }
43
+ set rootObjectId(id) {
44
+ this._currentObjectId$.next(id);
45
+ this.loadHyperlinks(id);
46
+ this._rootObjectId = id;
47
+ }
48
+ get rootObjectId() {
49
+ return this._rootObjectId;
50
+ }
51
+ ngOnInit() {
52
+ this.buttonRowItems.push({
53
+ id: "add-hyperlink",
54
+ title: this.translateService.instant('_Add hyperlink'),
55
+ tooltip: this.translateService.instant('_Add hyperlink'),
56
+ disabled: true,
57
+ buttonStyle: 'primary'
58
+ });
59
+ }
60
+ buttonRowButtonClicked($event) {
61
+ if ($event.id === "add-hyperlink") {
62
+ if (this.hyperlinkForm.valid) {
63
+ this.addHyperlink(this.hyperlinkForm.value['name'], this.hyperlinkForm.value['url'], this._rootObjectId).then(() => {
64
+ this.loadHyperlinks(this._rootObjectId);
65
+ this.hyperlinkForm.reset();
66
+ });
67
+ }
68
+ }
69
+ }
70
+ loadHyperlinks(objectId) {
71
+ if (!this.api)
72
+ return;
73
+ this.api.objects.getHyperlinks(objectId).then((response) => {
74
+ this.hyperlinks = response;
75
+ });
76
+ }
77
+ addHyperlink(name, url, objectId) {
78
+ if (!this.api)
79
+ return Promise.reject(new Error('API not available'));
80
+ let sanitizedUrl = url.trim();
81
+ if (!RegExp(/^http(s?):\/\//).exec(sanitizedUrl)) {
82
+ sanitizedUrl = 'https://' + sanitizedUrl;
83
+ }
84
+ let sanitizedName = name?.trim() ?? '';
85
+ if (sanitizedName === '') {
86
+ sanitizedName = sanitizedUrl;
87
+ }
88
+ const data = JSON.stringify({
89
+ name: sanitizedName,
90
+ url: sanitizedUrl,
91
+ objectId: objectId
92
+ });
93
+ return this.api.objects.postHyperlink(objectId, data);
94
+ }
95
+ onHyperlinkItemDeleteButtonClicked(hyperlink) {
96
+ this.dialogService.open(BimplusOverlayDialogConfirmComponent, {
97
+ options: {
98
+ width: '400px', height: '200px', position: 'middle',
99
+ positionOptions: {}, overlayClickEnabled: false, overlayVisibilityEnabled: true, draggable: false
100
+ }, data: {
101
+ title: this.translateService.instant('_Delete hyperlink'),
102
+ message: this.translateService.instant('_Hyperlink delete confirmation message'),
103
+ acceptButtonLocalizedString: "_Delete",
104
+ acceptCallback: () => {
105
+ this.deleteHyperlink(hyperlink.id);
106
+ }
107
+ }
108
+ });
109
+ }
110
+ deleteHyperlink(id) {
111
+ if (!this.api)
112
+ return;
113
+ this.api.hyperlinks.delete(id).then(() => {
114
+ this.loadHyperlinks(this._rootObjectId);
115
+ });
116
+ }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ObjectHyperlinksComponent, deps: [{ token: i1.TranslateService }, { token: i2.DialogService }, { token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
118
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: ObjectHyperlinksComponent, isStandalone: true, selector: "lib-object-hyperlinks", inputs: { api: "api", rootObjectId: "rootObjectId", canCreateHyperlinks: "canCreateHyperlinks", canDeleteHyperlinks: "canDeleteHyperlinks" }, usesInheritance: true, ngImport: i0, template: "@if (canCreateHyperlinks) {\r\n <form [formGroup]=\"hyperlinkForm\" class=\"input-form\">\r\n <div>\r\n <lib-bimplus-input-text-field formControlName=\"name\" placeholder=\"{{ '_Name' | translate }}\"/>\r\n </div>\r\n <div>\r\n <lib-bimplus-input-text-field formControlName=\"url\" placeholder=\"{{ '_URL' | translate }}\"/>\r\n </div>\r\n\r\n <lib-bimplus-buttons-row [items]=\"buttonRowItems\" (buttonClicked)=\"buttonRowButtonClicked($event)\"/>\r\n </form>\r\n}\r\n\r\n<div class=\"list-anchor\">\r\n <div class=\"list\">\r\n <lib-bimplus-scrollable-container>\r\n @if (hyperlinks.length > 0) {\r\n <div style=\"padding-left: 8px\" *ngFor=\"let hyperlink of hyperlinks\">\r\n <lib-object-hyperlinks-item [hyperlink]=\"hyperlink\" [deleteButtonEnabled]=\"canDeleteHyperlinks\"\r\n (deleteButtonClicked)=\"onHyperlinkItemDeleteButtonClicked(hyperlink)\"/>\r\n </div>\r\n } @else {\r\n <div class=\"no-links\">{{ \"_No hyperlinks found\" | translate }}</div>\r\n }\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n</div>\r\n", styles: [":host{height:100%;display:flex;flex-direction:column;flex:1}.list-anchor{position:relative;flex:1}.list{position:absolute;top:0;bottom:0;width:100%}.no-links{padding:2.5rem .5rem;color:var(--details-controls-details-not-found-text-color);text-align:center}.input-form{padding-left:.8rem;padding-right:.8rem;display:flex;flex-direction:column;gap:.2rem}\n"], dependencies: [{ 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: ObjectHyperlinksItemComponent, selector: "lib-object-hyperlinks-item", inputs: ["hyperlink", "deleteButtonEnabled"], outputs: ["deleteButtonClicked"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: BimplusInputTextFieldComponent, selector: "lib-bimplus-input-text-field", inputs: ["placeholder"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
119
+ }
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ObjectHyperlinksComponent, decorators: [{
121
+ type: Component,
122
+ args: [{ selector: 'lib-object-hyperlinks', standalone: true, imports: [
123
+ BimplusButtonsRowComponent,
124
+ BimplusScrollableContainerComponent,
125
+ ObjectHyperlinksItemComponent,
126
+ NgForOf,
127
+ TranslateModule,
128
+ ReactiveFormsModule,
129
+ NgIf,
130
+ BimplusInputTextFieldComponent
131
+ ], encapsulation: ViewEncapsulation.ShadowDom, template: "@if (canCreateHyperlinks) {\r\n <form [formGroup]=\"hyperlinkForm\" class=\"input-form\">\r\n <div>\r\n <lib-bimplus-input-text-field formControlName=\"name\" placeholder=\"{{ '_Name' | translate }}\"/>\r\n </div>\r\n <div>\r\n <lib-bimplus-input-text-field formControlName=\"url\" placeholder=\"{{ '_URL' | translate }}\"/>\r\n </div>\r\n\r\n <lib-bimplus-buttons-row [items]=\"buttonRowItems\" (buttonClicked)=\"buttonRowButtonClicked($event)\"/>\r\n </form>\r\n}\r\n\r\n<div class=\"list-anchor\">\r\n <div class=\"list\">\r\n <lib-bimplus-scrollable-container>\r\n @if (hyperlinks.length > 0) {\r\n <div style=\"padding-left: 8px\" *ngFor=\"let hyperlink of hyperlinks\">\r\n <lib-object-hyperlinks-item [hyperlink]=\"hyperlink\" [deleteButtonEnabled]=\"canDeleteHyperlinks\"\r\n (deleteButtonClicked)=\"onHyperlinkItemDeleteButtonClicked(hyperlink)\"/>\r\n </div>\r\n } @else {\r\n <div class=\"no-links\">{{ \"_No hyperlinks found\" | translate }}</div>\r\n }\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n</div>\r\n", styles: [":host{height:100%;display:flex;flex-direction:column;flex:1}.list-anchor{position:relative;flex:1}.list{position:absolute;top:0;bottom:0;width:100%}.no-links{padding:2.5rem .5rem;color:var(--details-controls-details-not-found-text-color);text-align:center}.input-form{padding-left:.8rem;padding-right:.8rem;display:flex;flex-direction:column;gap:.2rem}\n"] }]
132
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.DialogService }, { type: i3.FormBuilder }], propDecorators: { api: [{
133
+ type: Input
134
+ }], rootObjectId: [{
135
+ type: Input
136
+ }], canCreateHyperlinks: [{
137
+ type: Input
138
+ }], canDeleteHyperlinks: [{
139
+ type: Input
140
+ }] } });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWh5cGVybGlua3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LWh5cGVybGlua3Mvb2JqZWN0LWh5cGVybGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LWh5cGVybGlua3Mvb2JqZWN0LWh5cGVybGlua3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQVUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFFaEcsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDL0csT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsbUNBQW1DLEVBQ3BDLE1BQU0sd0VBQXdFLENBQUM7QUFDaEYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFFekcsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFDTCxvQ0FBb0MsRUFDckMsTUFBTSw0RUFBNEUsQ0FBQztBQUNwRixPQUFPLEVBQXlCLG1CQUFtQixFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZGLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDOzs7OztBQW1COUcsTUFBTSxPQUFPLHlCQUEw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QkFDZixtQkFBbUI7d0JBQ25CLElBQUk7d0JBQ0osOEJBQThCO3FCQUMvQixpQkFHYyxpQkFBaUIsQ0FBQyxTQUFTOzJJQXdCakMsR0FBRztzQkFBWCxLQUFLO2dCQUdGLFlBQVk7c0JBRGYsS0FBSztnQkFrQkcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QmltcGx1c0J1dHRvbnNSb3dDb21wb25lbnR9IGZyb20gXCIuLi9iaW1wbHVzLWJ1dHRvbnMtcm93L2JpbXBsdXMtYnV0dG9ucy1yb3cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QmltcGx1c0J1dHRvbkNsaWNrRXZlbnQsIEJpbXBsdXNCdXR0b25Sb3dJdGVtfSBmcm9tIFwiLi4vYmltcGx1cy1idXR0b25zLXJvdy9iaW1wbHVzLWJ1dHRvbnMtcm93LmludGVyZmFjZVwiO1xyXG5pbXBvcnQge0JpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnR9IGZyb20gXCIuLi9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQvYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBCaW1wbHVzU2Nyb2xsYWJsZUNvbnRhaW5lckNvbXBvbmVudFxyXG59IGZyb20gXCIuLi9iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyL2JpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7T2JqZWN0SHlwZXJsaW5rc0l0ZW1Db21wb25lbnR9IGZyb20gXCIuLi9vYmplY3QtaHlwZXJsaW5rcy1pdGVtL29iamVjdC1oeXBlcmxpbmtzLWl0ZW0uY29tcG9uZW50XCI7XHJcbmltcG9ydCBXZWJTZGsgZnJvbSBcImJpbXBsdXMtd2Vic2RrXCI7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge05nRm9yT2YsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtEaWFsb2dTZXJ2aWNlfSBmcm9tIFwiLi4vYmltcGx1cy1nZW5lcmFsLW92ZXJsYXktZGlhbG9nL2JpbXBsdXMtZ2VuZXJhbC1vdmVybGF5LWRpYWxvZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgQmltcGx1c092ZXJsYXlEaWFsb2dDb25maXJtQ29tcG9uZW50XHJcbn0gZnJvbSBcIi4uL2JpbXBsdXMtb3ZlcmxheS1kaWFsb2ctY29uZmlybS9iaW1wbHVzLW92ZXJsYXktZGlhbG9nLWNvbmZpcm0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7QmltcGx1c0lucHV0VGV4dEZpZWxkQ29tcG9uZW50fSBmcm9tIFwiLi4vYmltcGx1cy1pbnB1dC10ZXh0LWZpZWxkL2JpbXBsdXMtaW5wdXQtdGV4dC1maWVsZC5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW9iamVjdC1oeXBlcmxpbmtzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEJpbXBsdXNCdXR0b25zUm93Q29tcG9uZW50LFxyXG4gICAgQmltcGx1c1Njcm9sbGFibGVDb250YWluZXJDb21wb25lbnQsXHJcbiAgICBPYmplY3RIeXBlcmxpbmtzSXRlbUNvbXBvbmVudCxcclxuICAgIE5nRm9yT2YsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTmdJZixcclxuICAgIEJpbXBsdXNJbnB1dFRleHRGaWVsZENvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1oeXBlcmxpbmtzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vb2JqZWN0LWh5cGVybGlua3MuY29tcG9uZW50Lmxlc3MnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbVxyXG59KVxyXG5leHBvcnQgY2xhc3MgT2JqZWN0SHlwZXJsaW5rc0NvbXBvbmVudCBleHRlbmRzIEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGh5cGVybGlua0Zvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgY29uc3RydWN0b3IodHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLCBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikge1xyXG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSk7XHJcblxyXG4gICAgdGhpcy5oeXBlcmxpbmtGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIG5hbWU6IFsnJywgW11dLFxyXG4gICAgICB1cmw6IFsnJyxcclxuICAgICAgICBbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eW148Pl0qJC8pLCAvLyBEbyBub3QgYWxsb3cgPCBvciA+XHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL14oPyFcXHMqJCkuKy8pIC8vIERvIG5vdCBhbGxvdyBhbGwgZW1wdHkgc3RyaW5nLCBidXQgYWxsb3cgdGV4dCBhZnRlciBzcGFjZXNcclxuICAgICAgICBdXHJcbiAgICAgIF1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaHlwZXJsaW5rRm9ybS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShzdGF0dXMgPT4ge1xyXG4gICAgICB0aGlzLmJ1dHRvblJvd0l0ZW1zWzBdLmRpc2FibGVkID0gc3RhdHVzICE9PSAnVkFMSUQnO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBhcGk6IFdlYlNkay5BcGkgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcm9vdE9iamVjdElkKGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRPYmplY3RJZCQubmV4dChpZCk7XHJcbiAgICB0aGlzLmxvYWRIeXBlcmxpbmtzKGlkKTtcclxuXHJcbiAgICB0aGlzLl9yb290T2JqZWN0SWQgPSBpZDtcclxuICB9XHJcblxyXG4gIGdldCByb290T2JqZWN0SWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9yb290T2JqZWN0SWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50T2JqZWN0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFwiXCIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFwiXCIpO1xyXG4gIHByaXZhdGUgX3Jvb3RPYmplY3RJZDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgYnV0dG9uUm93SXRlbXM6IEFycmF5PEJpbXBsdXNCdXR0b25Sb3dJdGVtPiA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBjYW5DcmVhdGVIeXBlcmxpbmtzOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjYW5EZWxldGVIeXBlcmxpbmtzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgaHlwZXJsaW5rczogQXJyYXk8V2ViU2RrLkh5cGVybGluaz4gPSBbXTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJ1dHRvblJvd0l0ZW1zLnB1c2goXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogXCJhZGQtaHlwZXJsaW5rXCJcclxuICAgICAgICAsIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX0FkZCBoeXBlcmxpbmsnKVxyXG4gICAgICAgICwgdG9vbHRpcDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ19BZGQgaHlwZXJsaW5rJylcclxuICAgICAgICAsIGRpc2FibGVkOiB0cnVlXHJcbiAgICAgICAgLCBidXR0b25TdHlsZTogJ3ByaW1hcnknXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBidXR0b25Sb3dCdXR0b25DbGlja2VkKCRldmVudDogQmltcGx1c0J1dHRvbkNsaWNrRXZlbnQpIHtcclxuICAgIGlmICgkZXZlbnQuaWQgPT09IFwiYWRkLWh5cGVybGlua1wiKSB7XHJcbiAgICAgIGlmICh0aGlzLmh5cGVybGlua0Zvcm0udmFsaWQpIHtcclxuICAgICAgICB0aGlzLmFkZEh5cGVybGluayh0aGlzLmh5cGVybGlua0Zvcm0udmFsdWVbJ25hbWUnXSwgdGhpcy5oeXBlcmxpbmtGb3JtLnZhbHVlWyd1cmwnXSwgdGhpcy5fcm9vdE9iamVjdElkKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZEh5cGVybGlua3ModGhpcy5fcm9vdE9iamVjdElkKTtcclxuICAgICAgICAgIHRoaXMuaHlwZXJsaW5rRm9ybS5yZXNldCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRIeXBlcmxpbmtzKG9iamVjdElkOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5hcGkpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmFwaS5vYmplY3RzLmdldEh5cGVybGlua3Mob2JqZWN0SWQpLnRoZW4oKHJlc3BvbnNlOiBXZWJTZGsuSHlwZXJsaW5rc1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuaHlwZXJsaW5rcyA9IHJlc3BvbnNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEh5cGVybGluayhuYW1lOiBzdHJpbmcsIHVybDogc3RyaW5nLCBvYmplY3RJZDogc3RyaW5nKTogUHJvbWlzZTxXZWJTZGsuSHlwZXJsaW5rPiB7XHJcbiAgICBpZiAoIXRoaXMuYXBpKVxyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdBUEkgbm90IGF2YWlsYWJsZScpKTtcclxuXHJcbiAgICBsZXQgc2FuaXRpemVkVXJsOiBzdHJpbmcgPSB1cmwudHJpbSgpO1xyXG5cclxuICAgIGlmICghUmVnRXhwKC9eaHR0cChzPyk6XFwvXFwvLykuZXhlYyhzYW5pdGl6ZWRVcmwpKSB7XHJcbiAgICAgIHNhbml0aXplZFVybCA9ICdodHRwczovLycgKyBzYW5pdGl6ZWRVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHNhbml0aXplZE5hbWUgPSBuYW1lPy50cmltKCkgPz8gJyc7XHJcblxyXG4gICAgaWYgKHNhbml0aXplZE5hbWUgPT09ICcnKSB7XHJcbiAgICAgIHNhbml0aXplZE5hbWUgPSBzYW5pdGl6ZWRVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgbmFtZTogc2FuaXRpemVkTmFtZSxcclxuICAgICAgdXJsOiBzYW5pdGl6ZWRVcmwsXHJcbiAgICAgIG9iamVjdElkOiBvYmplY3RJZFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYXBpLm9iamVjdHMucG9zdEh5cGVybGluayhvYmplY3RJZCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBvbkh5cGVybGlua0l0ZW1EZWxldGVCdXR0b25DbGlja2VkKGh5cGVybGluazogV2ViU2RrLkh5cGVybGluaykge1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQmltcGx1c092ZXJsYXlEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICB3aWR0aDogJzQwMHB4JywgaGVpZ2h0OiAnMjAwcHgnLCBwb3NpdGlvbjogJ21pZGRsZScsXHJcbiAgICAgICAgcG9zaXRpb25PcHRpb25zOiB7fSwgb3ZlcmxheUNsaWNrRW5hYmxlZDogZmFsc2UsIG92ZXJsYXlWaXNpYmlsaXR5RW5hYmxlZDogdHJ1ZSwgZHJhZ2dhYmxlOiBmYWxzZVxyXG4gICAgICB9LCBkYXRhOiB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfRGVsZXRlIGh5cGVybGluaycpLFxyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfSHlwZXJsaW5rIGRlbGV0ZSBjb25maXJtYXRpb24gbWVzc2FnZScpLFxyXG4gICAgICAgIGFjY2VwdEJ1dHRvbkxvY2FsaXplZFN0cmluZzogXCJfRGVsZXRlXCIsXHJcbiAgICAgICAgYWNjZXB0Q2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGVsZXRlSHlwZXJsaW5rKGh5cGVybGluay5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVsZXRlSHlwZXJsaW5rKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5hcGkpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmFwaS5oeXBlcmxpbmtzLmRlbGV0ZShpZCkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZEh5cGVybGlua3ModGhpcy5fcm9vdE9iamVjdElkKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKGNhbkNyZWF0ZUh5cGVybGlua3MpIHtcclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImh5cGVybGlua0Zvcm1cIiBjbGFzcz1cImlucHV0LWZvcm1cIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxsaWItYmltcGx1cy1pbnB1dC10ZXh0LWZpZWxkIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBwbGFjZWhvbGRlcj1cInt7ICdfTmFtZScgfCB0cmFuc2xhdGUgfX1cIi8+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxsaWItYmltcGx1cy1pbnB1dC10ZXh0LWZpZWxkIGZvcm1Db250cm9sTmFtZT1cInVybFwiIHBsYWNlaG9sZGVyPVwie3sgJ19VUkwnIHwgdHJhbnNsYXRlIH19XCIvPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGxpYi1iaW1wbHVzLWJ1dHRvbnMtcm93IFtpdGVtc109XCJidXR0b25Sb3dJdGVtc1wiIChidXR0b25DbGlja2VkKT1cImJ1dHRvblJvd0J1dHRvbkNsaWNrZWQoJGV2ZW50KVwiLz5cclxuICA8L2Zvcm0+XHJcbn1cclxuXHJcbjxkaXYgY2xhc3M9XCJsaXN0LWFuY2hvclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJsaXN0XCI+XHJcbiAgICA8bGliLWJpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXI+XHJcbiAgICAgIEBpZiAoaHlwZXJsaW5rcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4XCIgKm5nRm9yPVwibGV0IGh5cGVybGluayBvZiBoeXBlcmxpbmtzXCI+XHJcbiAgICAgICAgICA8bGliLW9iamVjdC1oeXBlcmxpbmtzLWl0ZW0gW2h5cGVybGlua109XCJoeXBlcmxpbmtcIiBbZGVsZXRlQnV0dG9uRW5hYmxlZF09XCJjYW5EZWxldGVIeXBlcmxpbmtzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlQnV0dG9uQ2xpY2tlZCk9XCJvbkh5cGVybGlua0l0ZW1EZWxldGVCdXR0b25DbGlja2VkKGh5cGVybGluaylcIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuby1saW5rc1wiPnt7IFwiX05vIGh5cGVybGlua3MgZm91bmRcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2xpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,36 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { BimplusLocalizedWidgetComponent } from "../bimplus-localized-widget/bimplus-localized-widget.component";
3
+ import { TranslateModule } from "@ngx-translate/core";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ngx-translate/core";
6
+ export class ObjectHyperlinksItemComponent extends BimplusLocalizedWidgetComponent {
7
+ constructor(translateService) {
8
+ super(translateService);
9
+ this.deleteButtonEnabled = true;
10
+ this.deleteButtonClicked = new EventEmitter();
11
+ }
12
+ onDeleteButtonClick() {
13
+ this.deleteButtonClicked.emit();
14
+ }
15
+ onDeleteButtonKeyDown($event) {
16
+ if ($event.key === 'Enter' || $event.key === ' ') {
17
+ $event.preventDefault();
18
+ this.onDeleteButtonClick();
19
+ }
20
+ }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ObjectHyperlinksItemComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: ObjectHyperlinksItemComponent, isStandalone: true, selector: "lib-object-hyperlinks-item", inputs: { hyperlink: "hyperlink", deleteButtonEnabled: "deleteButtonEnabled" }, outputs: { deleteButtonClicked: "deleteButtonClicked" }, usesInheritance: true, ngImport: i0, template: "<div class=\"hyperlink-item\">\r\n @if (deleteButtonEnabled) {\r\n <div class=\"bim-list-button delete\" title=\"{{ '_Delete hyperlink' | translate }}\" (click)=\"onDeleteButtonClick()\"\r\n (keydown)=\"onDeleteButtonKeyDown($event)\">\r\n &#10005;&#xFE0E;\r\n </div>\r\n }\r\n\r\n <a href=\"{{ hyperlink?.url }}\" class='bim-hyperlink-url' target=\"_blank\" title=\"{{ hyperlink?.url }}\">\r\n <div class=\"bim-hyperlink-name\">\r\n {{ hyperlink?.name }}\r\n </div>\r\n </a>\r\n</div>\r\n", styles: [".hyperlink-item{border-bottom:solid .1rem var(--hyperlink-list-item-border-color);cursor:pointer;-webkit-user-select:none;user-select:none}.bim-list-button.delete{width:3.2rem;height:3.2rem;color:var(--details-controls-list-delete-button-text-color);float:right;display:flex;justify-content:center;align-items:center}.bim-list-button.delete:hover{color:var(--ui-text-1-color)}.bim-details-list-item{line-height:3.2rem;padding-left:2.6rem!important;background-repeat:no-repeat;background-position:.8rem center}.bim-hyperlink-name{line-height:3.2rem;padding-left:2.6rem!important;background-repeat:no-repeat;background-position:.8rem center;padding-left:3.5rem!important;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAUZJREFUeNqk1D0vLFEcB+Bnx4bu9hJKEl/A9RkUku2ETnFE4iVR3EriGwiJkN0aofISBRUaQUmxQkLhhkKnIys0Z5LNZHfsxmnPmSdzfv/fTKFcLmtjFTCGbuzgKYQAkjaQIu4wjj5coJRuJm0g9/iHYUxiADOVSqUEhRauliJzOMjs/UEVf5NfIPCGQ4z+BIUcJF29eCk22ezAOgbxjA8cNThXisFvJTnXecEs9rGBqcy5ESxhIITwVczJZByvWMU5TvGA44isoC+EUEsfbBbsO7ZwhhssYgJdKYJatkeNpnOMBZzE3lzjFstZJAUKsQvzDaazjseY1RSuIvLZKNix+Da7TSZ4hE70YC2vcN14yunJSF0muc3dxmWs+1sOUsuDEvzHNPYiVl+2lpD68af5VOO30xuBlpDsb2QXQzH4TfS3isD3AOQjV6lT9F9vAAAAAElFTkSuQmCC);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bim-hyperlink-url{color:var(--brand-dark-color)!important;text-decoration:none!important;line-height:2em}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ObjectHyperlinksItemComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'lib-object-hyperlinks-item', standalone: true, imports: [
27
+ TranslateModule
28
+ ], template: "<div class=\"hyperlink-item\">\r\n @if (deleteButtonEnabled) {\r\n <div class=\"bim-list-button delete\" title=\"{{ '_Delete hyperlink' | translate }}\" (click)=\"onDeleteButtonClick()\"\r\n (keydown)=\"onDeleteButtonKeyDown($event)\">\r\n &#10005;&#xFE0E;\r\n </div>\r\n }\r\n\r\n <a href=\"{{ hyperlink?.url }}\" class='bim-hyperlink-url' target=\"_blank\" title=\"{{ hyperlink?.url }}\">\r\n <div class=\"bim-hyperlink-name\">\r\n {{ hyperlink?.name }}\r\n </div>\r\n </a>\r\n</div>\r\n", styles: [".hyperlink-item{border-bottom:solid .1rem var(--hyperlink-list-item-border-color);cursor:pointer;-webkit-user-select:none;user-select:none}.bim-list-button.delete{width:3.2rem;height:3.2rem;color:var(--details-controls-list-delete-button-text-color);float:right;display:flex;justify-content:center;align-items:center}.bim-list-button.delete:hover{color:var(--ui-text-1-color)}.bim-details-list-item{line-height:3.2rem;padding-left:2.6rem!important;background-repeat:no-repeat;background-position:.8rem center}.bim-hyperlink-name{line-height:3.2rem;padding-left:2.6rem!important;background-repeat:no-repeat;background-position:.8rem center;padding-left:3.5rem!important;background-image:url(data:image/png;base64,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);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bim-hyperlink-url{color:var(--brand-dark-color)!important;text-decoration:none!important;line-height:2em}\n"] }]
29
+ }], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { hyperlink: [{
30
+ type: Input
31
+ }], deleteButtonEnabled: [{
32
+ type: Input
33
+ }], deleteButtonClicked: [{
34
+ type: Output
35
+ }] } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWh5cGVybGlua3MtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9vYmplY3QtaHlwZXJsaW5rcy1pdGVtL29iamVjdC1oeXBlcmxpbmtzLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LWh5cGVybGlua3MtaXRlbS9vYmplY3QtaHlwZXJsaW5rcy1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDL0csT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBV3RFLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSwrQkFBK0I7SUFDaEYsWUFBWSxnQkFBa0M7UUFDNUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFJaEIsd0JBQW1CLEdBQVksSUFBSSxDQUFDO1FBRW5DLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFMekQsQ0FBQztJQU9ELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQXFCO1FBQ3pDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNqRCxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFeEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7K0dBcEJVLDZCQUE2QjttR0FBN0IsNkJBQTZCLHNQQ2QxQyw2Z0JBY0EsNjhKRExJLGVBQWU7OzRGQUtOLDZCQUE2QjtrQkFUekMsU0FBUzsrQkFDRSw0QkFBNEIsY0FDMUIsSUFBSSxXQUNQO3dCQUNQLGVBQWU7cUJBQ2hCO3FGQVNRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVJLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgV2ViU2RrIGZyb20gXCJiaW1wbHVzLXdlYnNka1wiO1xyXG5pbXBvcnQge0JpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnR9IGZyb20gXCIuLi9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQvYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW9iamVjdC1oeXBlcmxpbmtzLWl0ZW0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgVHJhbnNsYXRlTW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWh5cGVybGlua3MtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL29iamVjdC1oeXBlcmxpbmtzLWl0ZW0uY29tcG9uZW50Lmxlc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPYmplY3RIeXBlcmxpbmtzSXRlbUNvbXBvbmVudCBleHRlbmRzIEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQge1xyXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBoeXBlcmxpbms6IFdlYlNkay5IeXBlcmxpbmsgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZGVsZXRlQnV0dG9uRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSBkZWxldGVCdXR0b25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBvbkRlbGV0ZUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZWxldGVCdXR0b25DbGlja2VkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uRGVsZXRlQnV0dG9uS2V5RG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICgkZXZlbnQua2V5ID09PSAnRW50ZXInIHx8ICRldmVudC5rZXkgPT09ICcgJykge1xyXG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgIHRoaXMub25EZWxldGVCdXR0b25DbGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaHlwZXJsaW5rLWl0ZW1cIj5cclxuICBAaWYgKGRlbGV0ZUJ1dHRvbkVuYWJsZWQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJiaW0tbGlzdC1idXR0b24gZGVsZXRlXCIgdGl0bGU9XCJ7eyAnX0RlbGV0ZSBoeXBlcmxpbmsnIHwgdHJhbnNsYXRlIH19XCIgKGNsaWNrKT1cIm9uRGVsZXRlQnV0dG9uQ2xpY2soKVwiXHJcbiAgICAgICAgIChrZXlkb3duKT1cIm9uRGVsZXRlQnV0dG9uS2V5RG93bigkZXZlbnQpXCI+XHJcbiAgICAgICYjMTAwMDU7JiN4RkUwRTtcclxuICAgIDwvZGl2PlxyXG4gIH1cclxuXHJcbiAgPGEgaHJlZj1cInt7IGh5cGVybGluaz8udXJsIH19XCIgY2xhc3M9J2JpbS1oeXBlcmxpbmstdXJsJyB0YXJnZXQ9XCJfYmxhbmtcIiB0aXRsZT1cInt7IGh5cGVybGluaz8udXJsIH19XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYmltLWh5cGVybGluay1uYW1lXCI+XHJcbiAgICAgIHt7IGh5cGVybGluaz8ubmFtZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9hPlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,261 @@
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 * as i0 from "@angular/core";
16
+ import * as i1 from "@ngx-translate/core";
17
+ export class ObjectPropertiesComponent extends BimplusLocalizedWidgetComponent {
18
+ constructor(translateService) {
19
+ super(translateService);
20
+ this._editMode = false;
21
+ this._objectStructure = null;
22
+ this._complexProperties = null;
23
+ this.api = null;
24
+ this.revision = undefined;
25
+ this._currentObjectId$ = new BehaviorSubject("");
26
+ this._currentPropertiesObjectId$ = new BehaviorSubject("");
27
+ this._rootObjectId = "";
28
+ this.buttonRowItems = [];
29
+ this.configEditProperties = [];
30
+ this.configEditedProperties = [];
31
+ this.objectAttributeGroups = [];
32
+ }
33
+ get objectStructure() {
34
+ return this._objectStructure;
35
+ }
36
+ get complexProperties() {
37
+ return this._complexProperties;
38
+ }
39
+ set rootObjectId(id) {
40
+ this._currentObjectId$.next(id);
41
+ this._createObjectStructure(id, this.revision);
42
+ this._rootObjectId = id;
43
+ }
44
+ get rootObjectId() {
45
+ return this._rootObjectId;
46
+ }
47
+ _editPropertiesButtonsConfiguration() {
48
+ this.configEditProperties.push({
49
+ id: "edit-properties",
50
+ title: this.translateService.instant('_Edit_properties'),
51
+ tooltip: this.translateService.instant('_Edit_properties'),
52
+ disabled: false,
53
+ buttonStyle: 'primary'
54
+ });
55
+ }
56
+ _editedPropertiesButtonsConfiguration() {
57
+ this.configEditedProperties.push({
58
+ id: "save-changed-properties",
59
+ title: this.translateService.instant('_Save'),
60
+ tooltip: this.translateService.instant('_Save'),
61
+ disabled: true,
62
+ buttonStyle: 'primary'
63
+ });
64
+ this.configEditedProperties.push({
65
+ id: "cancel-editing-properties",
66
+ title: this.translateService.instant('_Cancel'),
67
+ tooltip: this.translateService.instant('_Cancel'),
68
+ disabled: false,
69
+ buttonStyle: 'secondary'
70
+ });
71
+ }
72
+ ngOnInit() {
73
+ this._editPropertiesButtonsConfiguration();
74
+ this._editedPropertiesButtonsConfiguration();
75
+ this.buttonRowItems = this.configEditProperties;
76
+ this._currentPropertiesObjectId$.subscribe({
77
+ next: (id) => {
78
+ if (id) {
79
+ this._createObjectProperties(id, this.revision);
80
+ }
81
+ }
82
+ });
83
+ this._currentObjectId$.subscribe({
84
+ next: (id) => {
85
+ this._currentPropertiesObjectId$.next(id);
86
+ this._createComplexPropertiestructure(id, this.revision);
87
+ }
88
+ });
89
+ }
90
+ handleObjectStructureNodeSelected(node) {
91
+ console.log(node);
92
+ this._currentObjectId$.next(node.id);
93
+ }
94
+ handleComplexPropertyNodeSelected(node) {
95
+ console.log(node);
96
+ this._currentPropertiesObjectId$.next(node.id);
97
+ }
98
+ _loadObjectStructure(objectId, revision) {
99
+ if (!this.api) {
100
+ return;
101
+ }
102
+ if (!objectId) {
103
+ return;
104
+ }
105
+ return from(this.api.objects.getTopology(objectId, revision, false, false, undefined));
106
+ }
107
+ _createObjectStructure(objectId, revision) {
108
+ this._loadObjectStructure(objectId, revision)?.subscribe({
109
+ next: (structureData) => {
110
+ if (structureData) {
111
+ this._objectStructure = ObjectStructureNodeBuilder.createFromResponse(structureData);
112
+ }
113
+ }
114
+ });
115
+ }
116
+ _loadObjectComplexPropertiesStructure(objectId, revision) {
117
+ if (!this.api) {
118
+ return;
119
+ }
120
+ if (!objectId) {
121
+ return;
122
+ }
123
+ return from(this.api.objects.getComplexPropertiesTopology(objectId, revision));
124
+ }
125
+ _createComplexPropertiestructure(objectId, revision) {
126
+ this._loadObjectComplexPropertiesStructure(objectId, revision)?.subscribe({
127
+ next: (structureData) => {
128
+ if (structureData) {
129
+ const complexProps = ComplexPropertiesNodeBuilder.createFromResponse(structureData);
130
+ if (complexProps?.children?.length) {
131
+ this._complexProperties = complexProps;
132
+ }
133
+ else {
134
+ this._complexProperties = null;
135
+ }
136
+ }
137
+ }
138
+ });
139
+ }
140
+ _loadObjectProperties(objectId, revision) {
141
+ if (!this.api) {
142
+ return;
143
+ }
144
+ if (!objectId) {
145
+ return;
146
+ }
147
+ return from(this.api.objects.get(objectId, revision, "8", undefined, false, undefined));
148
+ }
149
+ _createObjectProperties(objectId, revision) {
150
+ this._loadObjectProperties(objectId, revision)?.subscribe({
151
+ // properties response is badly structured, nearly impossible to create class structure from it. Therefore using shortcut
152
+ // any for json response
153
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
154
+ next: (propertiesData) => {
155
+ this.objectAttributeGroups = this._createAttributeGroupsFromResponse(propertiesData);
156
+ // this._syncAttributeStatesFromCriteria();
157
+ },
158
+ error: () => {
159
+ this.objectAttributeGroups = [];
160
+ }
161
+ });
162
+ }
163
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
164
+ _tooltip(attrib) {
165
+ const nameTitle = this.translateService.instant('_Name');
166
+ const name = attrib.name ? attrib.name : '';
167
+ const descriptionTitle = this.translateService.instant("description");
168
+ const description = attrib.description;
169
+ const uuidTitle = this.translateService.instant("_UUID");
170
+ const uuid = attrib.id;
171
+ if (description === null || description === undefined || description === '') {
172
+ return `${nameTitle}: ${name}\n${uuidTitle}: ${uuid}`;
173
+ }
174
+ return `${nameTitle}: ${name}\n${descriptionTitle}: ${description}\n${uuidTitle}: ${uuid}`;
175
+ }
176
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
177
+ _createAttributeGroupsFromResponse(propertiesData) {
178
+ const groups = [];
179
+ let localizedAttribGroups = null;
180
+ if (propertiesData.localizedAttributeGroups) {
181
+ localizedAttribGroups = propertiesData.localizedAttributeGroups;
182
+ }
183
+ if (!propertiesData.attributes) {
184
+ return groups;
185
+ }
186
+ const attribGroups = propertiesData.attributes;
187
+ for (const [groupName, attribsObject] of Object.entries(attribGroups)) {
188
+ const newGroup = {
189
+ name: groupName,
190
+ expanded: false,
191
+ attributes: []
192
+ };
193
+ if (localizedAttribGroups?.[groupName]) {
194
+ newGroup.name = localizedAttribGroups[groupName];
195
+ }
196
+ if (!attribsObject) {
197
+ continue;
198
+ }
199
+ for (const attrib of Object.values(attribsObject)) {
200
+ const newAttrib = {
201
+ id: attrib.id,
202
+ name: attrib.name,
203
+ description: attrib.description,
204
+ value: attrib.value,
205
+ group: attrib.group,
206
+ type: attrib.type,
207
+ unit: attrib.unit,
208
+ decimal: attrib.decimal,
209
+ control: attrib.control,
210
+ enumdefinition: attrib.enumdefinition,
211
+ isChangeable: attrib.isChangeable,
212
+ tooltip: this._tooltip(attrib)
213
+ };
214
+ newGroup.attributes.push(newAttrib);
215
+ }
216
+ groups.push(newGroup);
217
+ }
218
+ return groups;
219
+ }
220
+ buttonClicked($event) {
221
+ if ($event.id === "edit-properties") {
222
+ console.log("Edit properties clicked");
223
+ this.buttonRowItems = this.configEditedProperties;
224
+ }
225
+ if ($event.id === "save-changed-properties") {
226
+ this.buttonRowItems = this.configEditProperties;
227
+ console.log("Save changed properties clicked");
228
+ }
229
+ if ($event.id === "cancel-editing-properties") {
230
+ this.buttonRowItems = this.configEditProperties;
231
+ console.log("Cancel edit properties clicked");
232
+ }
233
+ }
234
+ hasSetAnyAttribute(objectAttributeGroup) {
235
+ return objectAttributeGroup.attributes.some((attrib) => {
236
+ return !isObjectPropertyValueBlank(attrib);
237
+ });
238
+ }
239
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ObjectPropertiesComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
240
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", 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 <lib-bimplus-scrollable-container>\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"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
241
+ }
242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ObjectPropertiesComponent, decorators: [{
243
+ type: Component,
244
+ args: [{ selector: 'lib-object-properties', standalone: true, imports: [
245
+ ExpansionPanelComponent,
246
+ ExpansionPanelHeaderComponent,
247
+ TranslateModule,
248
+ BimplusObjectStructureComponent,
249
+ BimplusObjectComplexPropertiesComponent,
250
+ BimplusButtonsRowComponent,
251
+ BimplusScrollableContainerComponent,
252
+ ObjectPropertiesGroupComponent
253
+ ], 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 <lib-bimplus-scrollable-container>\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"] }]
254
+ }], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { api: [{
255
+ type: Input
256
+ }], revision: [{
257
+ type: Input
258
+ }], rootObjectId: [{
259
+ type: Input
260
+ }] } });
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LXByb3BlcnRpZXMvb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LXByb3BlcnRpZXMvb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDUCxpQkFBaUIsRUFDakIsS0FBSyxFQUVSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUVILDBCQUEwQixFQUM3QixNQUFNLGdFQUFnRSxDQUFDO0FBRXhFLE9BQU8sRUFDTCxJQUFJLEVBQ0YsZUFBZSxFQUNsQixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2pILE9BQU8sRUFFSCw0QkFBNEIsRUFDL0IsTUFBTSxrRkFBa0YsQ0FBQztBQUMxRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQztBQUszSSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUVsRyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQTtBQUM1SCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBbUIxRSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsK0JBQStCO0lBQzVFLFlBQVksZ0JBQW1DO1FBQzdDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBR2YsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVwQixxQkFBZ0IsR0FBZ0MsSUFBSSxDQUFDO1FBTXJELHVCQUFrQixHQUFrQyxJQUFJLENBQUM7UUFNeEQsUUFBRyxHQUF1QixJQUFJLENBQUM7UUFDL0IsYUFBUSxHQUF3QixTQUFTLENBQUM7UUFjbEMsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQVUsRUFBRSxDQUFDLENBQUM7UUFDckQsZ0NBQTJCLEdBQUcsSUFBSSxlQUFlLENBQVUsRUFBRSxDQUFDLENBQUM7UUFDeEUsa0JBQWEsR0FBWSxFQUFFLENBQUM7UUFFcEMsbUJBQWMsR0FBZ0MsRUFBRSxDQUFDO1FBQ2pELHlCQUFvQixHQUFnQyxFQUFFLENBQUM7UUFDdkQsMkJBQXNCLEdBQWdDLEVBQUUsQ0FBQztRQW9IekQsMEJBQXFCLEdBQTRCLEVBQUUsQ0FBQztJQXpKcEQsQ0FBQztJQU1ELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQTtJQUM5QixDQUFDO0lBSUQsSUFBSSxpQkFBaUI7UUFDcEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDaEMsQ0FBQztJQUtELElBQ0ksWUFBWSxDQUFDLEVBQVc7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFVRCxtQ0FBbUM7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FDNUI7WUFDRSxFQUFFLEVBQUUsaUJBQWlCO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDO1lBQ3hELE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDO1lBQzFELFFBQVEsRUFBRSxLQUFLO1lBQ2YsV0FBVyxFQUFFLFNBQVM7U0FDekIsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELHFDQUFxQztRQUNuQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUM5QjtZQUNFLEVBQUUsRUFBRSx5QkFBeUI7WUFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQzdDLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUMvQyxRQUFRLEVBQUUsSUFBSTtZQUNkLFdBQVcsRUFBRSxTQUFTO1NBQ3pCLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQzlCO1lBQ0UsRUFBRSxFQUFFLDJCQUEyQjtZQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFDL0MsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQ2pELFFBQVEsRUFBRSxLQUFLO1lBQ2YsV0FBVyxFQUFFLFdBQVc7U0FDM0IsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQztRQUU3QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUVoRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDO1lBQ3pDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUNYLElBQUcsRUFBRSxFQUFDLENBQUM7b0JBQ0wsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBQ2pELENBQUM7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztZQUMvQixJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDWCxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlDQUFpQyxDQUFDLElBQTBCO1FBQzFELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGlDQUFpQyxDQUFDLElBQTRCO1FBQzVELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFFBQWlCLEVBQUUsUUFBNkI7UUFDM0UsSUFBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUMsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFFBQWlCLEVBQUUsUUFBNkI7UUFDN0UsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxTQUFTLENBQUM7WUFDdkQsSUFBSSxFQUFFLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUcsYUFBYSxFQUFDLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRywwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDdkYsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8scUNBQXFDLENBQUMsUUFBaUIsRUFBRSxRQUE2QjtRQUM1RixJQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBQyxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFFRCxJQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDYixPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFTyxnQ0FBZ0MsQ0FBQyxRQUFpQixFQUFFLFFBQTZCO1FBQ3ZGLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDO1lBQ3hFLElBQUksRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFFO2dCQUN0QixJQUFHLGFBQWEsRUFBQyxDQUFDO29CQUNoQixNQUFNLFlBQVksR0FBRyw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDcEYsSUFBRyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxDQUFDO3dCQUNqQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxDQUFDO29CQUN6QyxDQUFDO3lCQUFJLENBQUM7d0JBQ0osSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztvQkFDakMsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFJTyxxQkFBcUIsQ0FBQyxRQUFpQixFQUFFLFFBQTZCO1FBQzVFLElBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFDLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRU8sdUJBQXVCLENBQUMsUUFBaUIsRUFBRSxRQUE2QjtRQUM5RSxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFLFNBQVMsQ0FBQztZQUV0RCx5SEFBeUg7WUFDekgsd0JBQXdCO1lBRXhCLCtEQUErRDtZQUMvRCxJQUFJLEVBQUUsQ0FBQyxjQUFvQixFQUFFLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsa0NBQWtDLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3JGLDJDQUEyQztZQUM3QyxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1lBQ2xDLENBQUM7U0FDRixDQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsK0RBQStEO0lBQ3ZELFFBQVEsQ0FBQyxNQUFXO1FBQzFCLE1BQU0sU0FBUyxHQUFXLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsTUFBTSxJQUFJLEdBQVcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BELE1BQU0sZ0JBQWdCLEdBQVcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5RSxNQUFNLFdBQVcsR0FBVyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQy9DLE1BQU0sU0FBUyxHQUFXLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsTUFBTSxJQUFJLEdBQVcsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMvQixJQUFHLFdBQVcsS0FBSyxJQUFJLElBQUksV0FBVyxLQUFLLFNBQVMsSUFBSSxXQUFXLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDMUUsT0FBTyxHQUFHLFNBQVMsS0FBSyxJQUFJLEtBQUssU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3pELENBQUM7UUFDRCxPQUFPLEdBQUcsU0FBUyxLQUFLLElBQUksS0FBSyxnQkFBZ0IsS0FBSyxXQUFXLEtBQUssU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQzdGLENBQUM7SUFFRCwrREFBK0Q7SUFDdkQsa0NBQWtDLENBQUMsY0FBb0I7UUFFN0QsTUFBTSxNQUFNLEdBQWlDLEVBQUUsQ0FBQztRQUNoRCxJQUFJLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFHLGNBQWMsQ0FBQyx3QkFBd0IsRUFBQyxDQUFDO1lBQzFDLHFCQUFxQixHQUFHLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQztRQUNsRSxDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUMsQ0FBQztZQUM5QixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQztRQUMvQyxLQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBQyxDQUFDO1lBRXBFLE1BQU0sUUFBUSxHQUEwQjtnQkFDdEMsSUFBSSxFQUFHLFNBQVM7Z0JBQ2hCLFFBQVEsRUFBRyxLQUFLO2dCQUNoQixVQUFVLEVBQUcsRUFBRTthQUNoQixDQUFDO1lBRUYsSUFBRyxxQkFBcUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFDLENBQUM7Z0JBQ3JDLFFBQVEsQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkQsQ0FBQztZQUVELElBQUcsQ0FBQyxhQUFhLEVBQUMsQ0FBQztnQkFDakIsU0FBUztZQUNYLENBQUM7WUFFRCxLQUFJLE1BQU0sTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUMsQ0FBQztnQkFFaEQsTUFBTSxTQUFTLEdBQW9CO29CQUNqQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ1gsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO29CQUNqQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7b0JBQy9CLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztvQkFDbkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO29CQUNuQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7b0JBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtvQkFDakIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO29CQUN2QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87b0JBQ3ZCLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYztvQkFDckMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO29CQUNqQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7aUJBQ2pDLENBQUM7Z0JBRUYsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBK0I7UUFDM0MsSUFBSSxNQUFNLENBQUMsRUFBRSxLQUFLLGlCQUFpQixFQUFFLENBQUM7WUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBQ3BELENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUsseUJBQXlCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSywyQkFBMkIsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLG9CQUEwQztRQUMzRCxPQUFPLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNyRCxPQUFPLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXZSVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixvTENwRHRDLG1yRUF5REEsZzhCRGxCSSx1QkFBdUIsc0ZBQ3JCLDZCQUE2QixzRUFDN0IsZUFBZSw0RkFDZiwrQkFBK0IsaUlBQy9CLHVDQUF1Qyw0SUFDdkMsMEJBQTBCLGtJQUMxQixtQ0FBbUMsNkVBQ25DLDhCQUE4Qjs7NEZBTXZCLHlCQUF5QjtrQkFqQnJDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDUCx1QkFBdUI7d0JBQ3JCLDZCQUE2Qjt3QkFDN0IsZUFBZTt3QkFDZiwrQkFBK0I7d0JBQy9CLHVDQUF1Qzt3QkFDdkMsMEJBQTBCO3dCQUMxQixtQ0FBbUM7d0JBQ25DLDhCQUE4QjtxQkFDakMsaUJBR2MsaUJBQWlCLENBQUMsU0FBUztxRkFxQmpDLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdGLFlBQVk7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50XHJcbiAgLCBWaWV3RW5jYXBzdWxhdGlvblxyXG4gICwgSW5wdXRcclxuICAsIE9uSW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFeHBhbnNpb25QYW5lbENvbXBvbmVudCB9IGZyb20gJy4uL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9leHBhbnNpb24tcGFuZWwtaGVhZGVyL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgT2JqZWN0U3RydWN0dXJlTm9kZVxyXG4gICwgT2JqZWN0U3RydWN0dXJlTm9kZUJ1aWxkZXJcclxufSBmcm9tICcuLi9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUvYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlLmludGVyZmFjZSc7XHJcbmltcG9ydCAqIGFzIFdlYlNkayBmcm9tICdiaW1wbHVzLXdlYnNkayc7XHJcbmltcG9ydCB7XHJcbiAgZnJvbVxyXG4gICwgQmVoYXZpb3JTdWJqZWN0XHJcbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJpbXBsdXNPYmplY3RTdHJ1Y3R1cmVDb21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUvYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcGxleFByb3BlcnRpZXNOb2RlXHJcbiAgLCBDb21wbGV4UHJvcGVydGllc05vZGVCdWlsZGVyXHJcbn0gZnJvbSAnLi4vYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBCaW1wbHVzT2JqZWN0Q29tcGxleFByb3BlcnRpZXNDb21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMvYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgT2JqZWN0QXR0cmlidXRlXHJcbiAgLCBPYmplY3RBdHRyaWJ1dGVHcm91cFxyXG59IGZyb20gJy4vb2JqZWN0LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQmltcGx1c0J1dHRvbnNSb3dDb21wb25lbnQgfSBmcm9tIFwiLi4vYmltcGx1cy1idXR0b25zLXJvdy9iaW1wbHVzLWJ1dHRvbnMtcm93LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBCaW1wbHVzQnV0dG9uUm93SXRlbSwgQmltcGx1c0J1dHRvbkNsaWNrRXZlbnQgfSBmcm9tIFwiLi4vYmltcGx1cy1idXR0b25zLXJvdy9iaW1wbHVzLWJ1dHRvbnMtcm93LmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBCaW1wbHVzU2Nyb2xsYWJsZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXIvYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lci5jb21wb25lbnQnXHJcbmltcG9ydCB7IE9iamVjdFByb3BlcnRpZXNHcm91cENvbXBvbmVudCB9IGZyb20gJy4uL29iamVjdC1wcm9wZXJ0aWVzLWdyb3VwL29iamVjdC1wcm9wZXJ0aWVzLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGlzT2JqZWN0UHJvcGVydHlWYWx1ZUJsYW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvb2JqZWN0UHJvcGVydGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1vYmplY3QtcHJvcGVydGllcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBFeHBhbnNpb25QYW5lbENvbXBvbmVudFxyXG4gICAgLCBFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudFxyXG4gICAgLCBUcmFuc2xhdGVNb2R1bGVcclxuICAgICwgQmltcGx1c09iamVjdFN0cnVjdHVyZUNvbXBvbmVudFxyXG4gICAgLCBCaW1wbHVzT2JqZWN0Q29tcGxleFByb3BlcnRpZXNDb21wb25lbnRcclxuICAgICwgQmltcGx1c0J1dHRvbnNSb3dDb21wb25lbnRcclxuICAgICwgQmltcGx1c1Njcm9sbGFibGVDb250YWluZXJDb21wb25lbnRcclxuICAgICwgT2JqZWN0UHJvcGVydGllc0dyb3VwQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPYmplY3RQcm9wZXJ0aWVzQ29tcG9uZW50IGV4dGVuZHMgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IodHJhbnNsYXRlU2VydmljZTogIFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2VkaXRNb2RlID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX29iamVjdFN0cnVjdHVyZSA6IE9iamVjdFN0cnVjdHVyZU5vZGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZ2V0IG9iamVjdFN0cnVjdHVyZSgpOiBPYmplY3RTdHJ1Y3R1cmVOb2RlIHwgbnVsbHtcclxuICAgIHJldHVybiB0aGlzLl9vYmplY3RTdHJ1Y3R1cmVcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbXBsZXhQcm9wZXJ0aWVzIDogQ29tcGxleFByb3BlcnRpZXNOb2RlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGdldCBjb21wbGV4UHJvcGVydGllcygpIDogQ29tcGxleFByb3BlcnRpZXNOb2RlIHwgbnVsbHtcclxuICAgcmV0dXJuIHRoaXMuX2NvbXBsZXhQcm9wZXJ0aWVzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgYXBpIDogV2ViU2RrLkFwaSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCByb290T2JqZWN0SWQoaWQgOiBzdHJpbmcpe1xyXG4gICAgdGhpcy5fY3VycmVudE9iamVjdElkJC5uZXh0KGlkKTtcclxuICAgIHRoaXMuX2NyZWF0ZU9iamVjdFN0cnVjdHVyZShpZCwgdGhpcy5yZXZpc2lvbik7XHJcblxyXG4gICAgdGhpcy5fcm9vdE9iamVjdElkID0gaWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgcm9vdE9iamVjdElkKCkgOiBzdHJpbmd7XHJcbiAgICByZXR1cm4gdGhpcy5fcm9vdE9iamVjdElkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudE9iamVjdElkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiAoXCJcIik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFByb3BlcnRpZXNPYmplY3RJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gKFwiXCIpO1xyXG4gIHByaXZhdGUgX3Jvb3RPYmplY3RJZCA6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIGJ1dHRvblJvd0l0ZW1zOiBBcnJheTxCaW1wbHVzQnV0dG9uUm93SXRlbT4gPSBbXTtcclxuICBjb25maWdFZGl0UHJvcGVydGllczogQXJyYXk8QmltcGx1c0J1dHRvblJvd0l0ZW0+ID0gW107XHJcbiAgY29uZmlnRWRpdGVkUHJvcGVydGllczogQXJyYXk8QmltcGx1c0J1dHRvblJvd0l0ZW0+ID0gW107XHJcblxyXG4gIF9lZGl0UHJvcGVydGllc0J1dHRvbnNDb25maWd1cmF0aW9uKCkge1xyXG4gICAgdGhpcy5jb25maWdFZGl0UHJvcGVydGllcy5wdXNoKFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IFwiZWRpdC1wcm9wZXJ0aWVzXCJcclxuICAgICAgICAsIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX0VkaXRfcHJvcGVydGllcycpXHJcbiAgICAgICAgLCB0b29sdGlwOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX0VkaXRfcHJvcGVydGllcycpXHJcbiAgICAgICAgLCBkaXNhYmxlZDogZmFsc2VcclxuICAgICAgICAsIGJ1dHRvblN0eWxlOiAncHJpbWFyeSdcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIF9lZGl0ZWRQcm9wZXJ0aWVzQnV0dG9uc0NvbmZpZ3VyYXRpb24oKSB7XHJcbiAgICB0aGlzLmNvbmZpZ0VkaXRlZFByb3BlcnRpZXMucHVzaChcclxuICAgICAge1xyXG4gICAgICAgIGlkOiBcInNhdmUtY2hhbmdlZC1wcm9wZXJ0aWVzXCJcclxuICAgICAgICAsIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX1NhdmUnKVxyXG4gICAgICAgICwgdG9vbHRpcDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ19TYXZlJylcclxuICAgICAgICAsIGRpc2FibGVkOiB0cnVlXHJcbiAgICAgICAgLCBidXR0b25TdHlsZTogJ3ByaW1hcnknXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLmNvbmZpZ0VkaXRlZFByb3BlcnRpZXMucHVzaChcclxuICAgICAge1xyXG4gICAgICAgIGlkOiBcImNhbmNlbC1lZGl0aW5nLXByb3BlcnRpZXNcIlxyXG4gICAgICAgICwgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfQ2FuY2VsJylcclxuICAgICAgICAsIHRvb2x0aXA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfQ2FuY2VsJylcclxuICAgICAgICAsIGRpc2FibGVkOiBmYWxzZVxyXG4gICAgICAgICwgYnV0dG9uU3R5bGU6ICdzZWNvbmRhcnknXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX2VkaXRQcm9wZXJ0aWVzQnV0dG9uc0NvbmZpZ3VyYXRpb24oKTtcclxuICAgIHRoaXMuX2VkaXRlZFByb3BlcnRpZXNCdXR0b25zQ29uZmlndXJhdGlvbigpO1xyXG5cclxuICAgIHRoaXMuYnV0dG9uUm93SXRlbXMgPSB0aGlzLmNvbmZpZ0VkaXRQcm9wZXJ0aWVzO1xyXG5cclxuICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpZCkgPT4ge1xyXG4gICAgICAgIGlmKGlkKXtcclxuICAgICAgICAgIHRoaXMuX2NyZWF0ZU9iamVjdFByb3BlcnRpZXMoaWQsIHRoaXMucmV2aXNpb24pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9jdXJyZW50T2JqZWN0SWQkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpZCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLm5leHQoaWQpO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUNvbXBsZXhQcm9wZXJ0aWVzdHJ1Y3R1cmUoaWQsIHRoaXMucmV2aXNpb24pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU9iamVjdFN0cnVjdHVyZU5vZGVTZWxlY3RlZChub2RlIDogT2JqZWN0U3RydWN0dXJlTm9kZSl7XHJcbiAgICBjb25zb2xlLmxvZyhub2RlKTtcclxuICAgIHRoaXMuX2N1cnJlbnRPYmplY3RJZCQubmV4dChub2RlLmlkKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNvbXBsZXhQcm9wZXJ0eU5vZGVTZWxlY3RlZChub2RlIDogQ29tcGxleFByb3BlcnRpZXNOb2RlKXtcclxuICAgIGNvbnNvbGUubG9nKG5vZGUpO1xyXG4gICAgdGhpcy5fY3VycmVudFByb3BlcnRpZXNPYmplY3RJZCQubmV4dChub2RlLmlkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQgOiBzdHJpbmcsIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICAgIGlmKCF0aGlzLmFwaSl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZighb2JqZWN0SWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdHMuZ2V0VG9wb2xvZ3kob2JqZWN0SWQsIHJldmlzaW9uLCBmYWxzZSwgZmFsc2UsIHVuZGVmaW5lZCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlT2JqZWN0U3RydWN0dXJlKG9iamVjdElkIDogc3RyaW5nLCByZXZpc2lvbiA6IG51bWJlciB8IHVuZGVmaW5lZCl7XHJcbiAgICB0aGlzLl9sb2FkT2JqZWN0U3RydWN0dXJlKG9iamVjdElkLCByZXZpc2lvbik/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQgOihzdHJ1Y3R1cmVEYXRhKSA9PiB7XHJcbiAgICAgICAgaWYoc3RydWN0dXJlRGF0YSl7XHJcbiAgICAgICAgICB0aGlzLl9vYmplY3RTdHJ1Y3R1cmUgPSBPYmplY3RTdHJ1Y3R1cmVOb2RlQnVpbGRlci5jcmVhdGVGcm9tUmVzcG9uc2Uoc3RydWN0dXJlRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9hZE9iamVjdENvbXBsZXhQcm9wZXJ0aWVzU3RydWN0dXJlKG9iamVjdElkIDogc3RyaW5nLCByZXZpc2lvbiA6IG51bWJlciB8IHVuZGVmaW5lZCl7XHJcbiAgICBpZighdGhpcy5hcGkpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIW9iamVjdElkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFwaS5vYmplY3RzLmdldENvbXBsZXhQcm9wZXJ0aWVzVG9wb2xvZ3kob2JqZWN0SWQsIHJldmlzaW9uKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVDb21wbGV4UHJvcGVydGllc3RydWN0dXJlKG9iamVjdElkIDogc3RyaW5nLCByZXZpc2lvbiA6IG51bWJlciB8IHVuZGVmaW5lZCl7XHJcbiAgICB0aGlzLl9sb2FkT2JqZWN0Q29tcGxleFByb3BlcnRpZXNTdHJ1Y3R1cmUob2JqZWN0SWQsIHJldmlzaW9uKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dCA6KHN0cnVjdHVyZURhdGEpID0+IHtcclxuICAgICAgICBpZihzdHJ1Y3R1cmVEYXRhKXtcclxuICAgICAgICAgIGNvbnN0IGNvbXBsZXhQcm9wcyA9IENvbXBsZXhQcm9wZXJ0aWVzTm9kZUJ1aWxkZXIuY3JlYXRlRnJvbVJlc3BvbnNlKHN0cnVjdHVyZURhdGEpO1xyXG4gICAgICAgICAgaWYoY29tcGxleFByb3BzPy5jaGlsZHJlbj8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMgPSBjb21wbGV4UHJvcHM7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9iamVjdEF0dHJpYnV0ZUdyb3VwcyA6IE9iamVjdEF0dHJpYnV0ZUdyb3VwW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfbG9hZE9iamVjdFByb3BlcnRpZXMob2JqZWN0SWQgOiBzdHJpbmcsIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICAgIGlmKCF0aGlzLmFwaSl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZighb2JqZWN0SWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdHMuZ2V0KG9iamVjdElkLCByZXZpc2lvbiwgXCI4XCIsIHVuZGVmaW5lZCwgZmFsc2UsIHVuZGVmaW5lZCApKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU9iamVjdFByb3BlcnRpZXMob2JqZWN0SWQgOiBzdHJpbmcsIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RQcm9wZXJ0aWVzKG9iamVjdElkLCByZXZpc2lvbik/LnN1YnNjcmliZSh7XHJcblxyXG4gICAgICAgIC8vIHByb3BlcnRpZXMgcmVzcG9uc2UgaXMgYmFkbHkgc3RydWN0dXJlZCwgbmVhcmx5IGltcG9zc2libGUgdG8gY3JlYXRlIGNsYXNzIHN0cnVjdHVyZSBmcm9tIGl0LiBUaGVyZWZvcmUgdXNpbmcgc2hvcnRjdXRcclxuICAgICAgICAvLyBhbnkgZm9yIGpzb24gcmVzcG9uc2VcclxuXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgbmV4dDogKHByb3BlcnRpZXNEYXRhIDogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9iamVjdEF0dHJpYnV0ZUdyb3VwcyA9IHRoaXMuX2NyZWF0ZUF0dHJpYnV0ZUdyb3Vwc0Zyb21SZXNwb25zZShwcm9wZXJ0aWVzRGF0YSk7XHJcbiAgICAgICAgICAvLyB0aGlzLl9zeW5jQXR0cmlidXRlU3RhdGVzRnJvbUNyaXRlcmlhKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT57XHJcbiAgICAgICAgICB0aGlzLm9iamVjdEF0dHJpYnV0ZUdyb3VwcyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgcHJpdmF0ZSBfdG9vbHRpcChhdHRyaWI6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBuYW1lVGl0bGU6IHN0cmluZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfTmFtZScpO1xyXG4gICAgY29uc3QgbmFtZTogc3RyaW5nID0gYXR0cmliLm5hbWUgPyBhdHRyaWIubmFtZSA6ICcnO1xyXG4gICAgY29uc3QgZGVzY3JpcHRpb25UaXRsZTogc3RyaW5nID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJkZXNjcmlwdGlvblwiKTtcclxuICAgIGNvbnN0IGRlc2NyaXB0aW9uOiBzdHJpbmcgPSBhdHRyaWIuZGVzY3JpcHRpb247XHJcbiAgICBjb25zdCB1dWlkVGl0bGU6IHN0cmluZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiX1VVSURcIik7XHJcbiAgICBjb25zdCB1dWlkOiBzdHJpbmcgPSBhdHRyaWIuaWQ7XHJcbiAgICBpZihkZXNjcmlwdGlvbiA9PT0gbnVsbCB8fCBkZXNjcmlwdGlvbiA9PT0gdW5kZWZpbmVkIHx8IGRlc2NyaXB0aW9uID09PSAnJykge1xyXG4gICAgICAgcmV0dXJuIGAke25hbWVUaXRsZX06ICR7bmFtZX1cXG4ke3V1aWRUaXRsZX06ICR7dXVpZH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke25hbWVUaXRsZX06ICR7bmFtZX1cXG4ke2Rlc2NyaXB0aW9uVGl0bGV9OiAke2Rlc2NyaXB0aW9ufVxcbiR7dXVpZFRpdGxlfTogJHt1dWlkfWA7XHJcbiAgfVxyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBwcml2YXRlIF9jcmVhdGVBdHRyaWJ1dGVHcm91cHNGcm9tUmVzcG9uc2UocHJvcGVydGllc0RhdGEgOiBhbnkpe1xyXG5cclxuICAgIGNvbnN0IGdyb3VwcyA6IEFycmF5PE9iamVjdEF0dHJpYnV0ZUdyb3VwPiA9IFtdO1xyXG4gICAgbGV0IGxvY2FsaXplZEF0dHJpYkdyb3VwcyA9IG51bGw7XHJcbiAgICBpZihwcm9wZXJ0aWVzRGF0YS5sb2NhbGl6ZWRBdHRyaWJ1dGVHcm91cHMpe1xyXG4gICAgICBsb2NhbGl6ZWRBdHRyaWJHcm91cHMgPSBwcm9wZXJ0aWVzRGF0YS5sb2NhbGl6ZWRBdHRyaWJ1dGVHcm91cHM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFwcm9wZXJ0aWVzRGF0YS5hdHRyaWJ1dGVzKXtcclxuICAgICAgcmV0dXJuIGdyb3VwcztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhdHRyaWJHcm91cHMgPSBwcm9wZXJ0aWVzRGF0YS5hdHRyaWJ1dGVzO1xyXG4gICAgZm9yKGNvbnN0IFtncm91cE5hbWUsIGF0dHJpYnNPYmplY3RdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYkdyb3Vwcykpe1xyXG5cclxuICAgICAgY29uc3QgbmV3R3JvdXAgOiBPYmplY3RBdHRyaWJ1dGVHcm91cCA9IHtcclxuICAgICAgICBuYW1lIDogZ3JvdXBOYW1lLFxyXG4gICAgICAgIGV4cGFuZGVkIDogZmFsc2UsXHJcbiAgICAgICAgYXR0cmlidXRlcyA6IFtdXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZihsb2NhbGl6ZWRBdHRyaWJHcm91cHM/Lltncm91cE5hbWVdKXtcclxuICAgICAgICBuZXdHcm91cC5uYW1lID0gbG9jYWxpemVkQXR0cmliR3JvdXBzW2dyb3VwTmFtZV07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKCFhdHRyaWJzT2JqZWN0KXtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yKGNvbnN0IGF0dHJpYiBvZiBPYmplY3QudmFsdWVzKGF0dHJpYnNPYmplY3QpKXtcclxuXHJcbiAgICAgICAgY29uc3QgbmV3QXR0cmliOiBPYmplY3RBdHRyaWJ1dGUgPSB7XHJcbiAgICAgICAgICBpZDogYXR0cmliLmlkXHJcbiAgICAgICAgICAsIG5hbWU6IGF0dHJpYi5uYW1lXHJcbiAgICAgICAgICAsIGRlc2NyaXB0aW9uOiBhdHRyaWIuZGVzY3JpcHRpb25cclxuICAgICAgICAgICwgdmFsdWU6IGF0dHJpYi52YWx1ZVxyXG4gICAgICAgICAgLCBncm91cDogYXR0cmliLmdyb3VwXHJcbiAgICAgICAgICAsIHR5cGU6IGF0dHJpYi50eXBlXHJcbiAgICAgICAgICAsIHVuaXQ6IGF0dHJpYi51bml0XHJcbiAgICAgICAgICAsIGRlY2ltYWw6IGF0dHJpYi5kZWNpbWFsXHJcbiAgICAgICAgICAsIGNvbnRyb2w6IGF0dHJpYi5jb250cm9sXHJcbiAgICAgICAgICAsIGVudW1kZWZpbml0aW9uOiBhdHRyaWIuZW51bWRlZmluaXRpb25cclxuICAgICAgICAgICwgaXNDaGFuZ2VhYmxlOiBhdHRyaWIuaXNDaGFuZ2VhYmxlXHJcbiAgICAgICAgICAsIHRvb2x0aXA6IHRoaXMuX3Rvb2x0aXAoYXR0cmliKVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIG5ld0dyb3VwLmF0dHJpYnV0ZXMucHVzaChuZXdBdHRyaWIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBncm91cHMucHVzaChuZXdHcm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwcztcclxuICB9XHJcblxyXG4gIGJ1dHRvbkNsaWNrZWQoJGV2ZW50OiBCaW1wbHVzQnV0dG9uQ2xpY2tFdmVudCkge1xyXG4gICAgaWYgKCRldmVudC5pZCA9PT0gXCJlZGl0LXByb3BlcnRpZXNcIikge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkVkaXQgcHJvcGVydGllcyBjbGlja2VkXCIpO1xyXG4gICAgICB0aGlzLmJ1dHRvblJvd0l0ZW1zID0gdGhpcy5jb25maWdFZGl0ZWRQcm9wZXJ0aWVzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgkZXZlbnQuaWQgPT09IFwic2F2ZS1jaGFuZ2VkLXByb3BlcnRpZXNcIikge1xyXG4gICAgICB0aGlzLmJ1dHRvblJvd0l0ZW1zID0gdGhpcy5jb25maWdFZGl0UHJvcGVydGllcztcclxuICAgICAgY29uc29sZS5sb2coXCJTYXZlIGNoYW5nZWQgcHJvcGVydGllcyBjbGlja2VkXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgkZXZlbnQuaWQgPT09IFwiY2FuY2VsLWVkaXRpbmctcHJvcGVydGllc1wiKSB7XHJcbiAgICAgIHRoaXMuYnV0dG9uUm93SXRlbXMgPSB0aGlzLmNvbmZpZ0VkaXRQcm9wZXJ0aWVzO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkNhbmNlbCBlZGl0IHByb3BlcnRpZXMgY2xpY2tlZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhc1NldEFueUF0dHJpYnV0ZShvYmplY3RBdHRyaWJ1dGVHcm91cDogT2JqZWN0QXR0cmlidXRlR3JvdXApIHtcclxuICAgIHJldHVybiBvYmplY3RBdHRyaWJ1dGVHcm91cC5hdHRyaWJ1dGVzLnNvbWUoKGF0dHJpYikgPT4ge1xyXG4gICAgICByZXR1cm4gIWlzT2JqZWN0UHJvcGVydHlWYWx1ZUJsYW5rKGF0dHJpYik7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGxpYi1iaW1wbHVzLWJ1dHRvbnMtcm93XHJcbiAgW2l0ZW1zXT1cImJ1dHRvblJvd0l0ZW1zXCJcclxuICAoYnV0dG9uQ2xpY2tlZCk9XCJidXR0b25DbGlja2VkKCRldmVudClcIlxyXG4vPlxyXG5cclxuPGRpdiBjbGFzcz1cIm9iamVjdC1wcm9wZXJ0aWVzXCI+XHJcbiAgPGxpYi1iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyPlxyXG4gICAgPCEtLSBPYmplY3Qgc3RydWN0dXJlLS0+XHJcbiAgICA8bGliLWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgPGxpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwib2JqZWN0LXN0cnVjdHVyZS1oZWFkZXJcIj57e1wiX09iamVjdCBzdHJ1Y3R1cmVcIiB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICBAaWYgKG9iamVjdFN0cnVjdHVyZSkge1xyXG4gICAgICAgIDxsaWItYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlXHJcbiAgICAgICAgICBbb2JqZWN0U3RydWN0dXJlXT1cIm9iamVjdFN0cnVjdHVyZVwiXHJcbiAgICAgICAgICAobm9kZVNlbGVjdGVkKT1cImhhbmRsZU9iamVjdFN0cnVjdHVyZU5vZGVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAvPlxyXG4gICAgICB9XHJcbiAgICA8L2xpYi1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8IS0tIEVuZCBPYmplY3Qgc3RydWN0dXJlLS0+XHJcblxyXG4gICAgPCEtLSBDb21wbGV4IHByb3BlcnRpZXMtLT5cclxuICAgIEBpZihjb21wbGV4UHJvcGVydGllcyl7XHJcbiAgICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwib2JqZWN0LXByb3BlcnRpZXMtaGVhZGVyXCI+IHt7XCJfT2JqZWN0IG11bHRpcHJvcGVydGllcyB0cmVlXCIgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgIDxsaWItYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzXHJcbiAgICAgICAgICBbY29tcGxleFByb3BlcnRpZXNdPVwiY29tcGxleFByb3BlcnRpZXNcIlxyXG4gICAgICAgICAgKG5vZGVTZWxlY3RlZCk9XCJoYW5kbGVDb21wbGV4UHJvcGVydHlOb2RlU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9saWItZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgfVxyXG4gICAgPCEtLSBFbmQgQ29tcGxleCBwcm9wZXJ0aWVzLS0+XHJcblxyXG4gICAgQGlmKG9iamVjdEF0dHJpYnV0ZUdyb3Vwcy5sZW5ndGggPiAwKXtcclxuICAgICAgPGxpYi1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgPGxpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJvYmplY3QtcHJvcGVydGllcy1oZWFkZXJcIj57e1wiX09iamVjdCBwcm9wZXJ0aWVzXCIgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgQGZvciAoYXR0cmliR3JvdXAgb2Ygb2JqZWN0QXR0cmlidXRlR3JvdXBzOyB0cmFjayBhdHRyaWJHcm91cCkge1xyXG4gICAgICAgIEBpZihoYXNTZXRBbnlBdHRyaWJ1dGUoYXR0cmliR3JvdXApKXtcclxuICAgICAgICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsIFtleHBhbmRlZF09XCJhdHRyaWJHcm91cC5leHBhbmRlZFwiPlxyXG4gICAgICAgICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvYmplY3QtcHJvcGVydGllcy1ncm91cC1oZWFkZXJcIj4ge3thdHRyaWJHcm91cC5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxsaWItb2JqZWN0LXByb3BlcnRpZXMtZ3JvdXBcclxuICAgICAgICAgICAgICBbYXR0cmlidXRlc0dyb3VwXT1cImF0dHJpYkdyb3VwXCJcclxuICAgICAgICAgICAgICBbZWRpdE1vZGVdPVwiX2VkaXRNb2RlXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgPC9saWItZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgfVxyXG4gIDwvbGliLWJpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXI+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXByb3BlcnRpZXMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LXByb3BlcnRpZXMvb2JqZWN0LXByb3BlcnRpZXMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RBdHRyaWJ1dGV7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICBncm91cDogc3RyaW5nO1xyXG4gIHR5cGU6IHN0cmluZztcclxuICB1bml0OiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuICBkZWNpbWFsOiBudW1iZXI7XHJcbiAgY29udHJvbDogc3RyaW5nO1xyXG4gIGVudW1kZWZpbml0aW9uOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gIGlzQ2hhbmdlYWJsZTogYm9vbGVhbjtcclxuICB0b29sdGlwOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0QXR0cmlidXRlR3JvdXB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGF0dHJpYnV0ZXM6IE9iamVjdEF0dHJpYnV0ZVtdO1xyXG4gIGV4cGFuZGVkOiBib29sZWFuO1xyXG59XHJcbiJdfQ==