ngx-bimplus-components 0.0.158 → 0.0.159-28783-1

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 (154) hide show
  1. package/assets/images/default/Attachment_18_gray.svg +1 -0
  2. package/assets/images/default/Attachment_18_maincolor.svg +3 -0
  3. package/assets/images/default/Attachmentlink_18_gray.svg +7 -0
  4. package/assets/images/default/Attachmentlink_18_maincolor.svg +7 -0
  5. package/assets/images/default/Comments_18_gray.svg +1 -0
  6. package/assets/images/default/Comments_18_maincolor.svg +4 -0
  7. package/assets/images/default/Links_18_gray.svg +1 -0
  8. package/assets/images/default/Links_18_maincolor.svg +4 -0
  9. package/assets/images/default/Refresh_18_gray.svg +1 -0
  10. package/assets/images/default/bimplus_WebIcons_Cross_Disabled.svg +1 -0
  11. package/assets/images/default/ic_models.svg +3 -0
  12. package/assets/images/default/ic_models_maincolor.svg +3 -0
  13. package/assets/images/default/icn_grid_attachments.png +0 -0
  14. package/assets/images/default/icn_grid_hyperlinks.png +0 -0
  15. package/assets/images/default/progress-spinner.svg +1 -0
  16. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.component.mjs +104 -0
  17. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.interface.mjs +38 -0
  18. package/esm2022/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.mjs +92 -0
  19. package/esm2022/lib/components/bimplus-attachments/services/bimplus-attachments.service.mjs +32 -0
  20. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +37 -5
  21. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.mjs +5 -2
  22. package/esm2022/lib/components/bimplus-comment/IComment.mjs +2 -0
  23. package/esm2022/lib/components/bimplus-comment/bimplus-comment.component.mjs +118 -0
  24. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +5 -5
  25. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +3 -3
  26. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +115 -7
  27. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.mjs +1 -1
  28. package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +1 -1
  29. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.mjs +1 -1
  30. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.mjs +3 -3
  31. package/esm2022/lib/components/bimplus-input-checkbox/bimplus-input-checkbox.component.mjs +64 -0
  32. package/esm2022/lib/components/bimplus-input-combobox/bimplus-input-combobox.component.mjs +161 -0
  33. package/esm2022/lib/components/bimplus-input-number/bimplus-input-number.component.mjs +85 -0
  34. package/esm2022/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.mjs +92 -0
  35. package/esm2022/lib/components/bimplus-link-tooltip-message/bimplus-link-tooltip-message.component.mjs +78 -0
  36. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.mjs +342 -0
  37. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.mjs +69 -0
  38. package/esm2022/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.mjs +2 -0
  39. package/esm2022/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.mjs +3 -3
  40. package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +22 -3
  41. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +3 -3
  42. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.mjs +1 -1
  43. package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +3 -3
  44. package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.component.mjs +42 -4
  45. package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.interface.mjs +4 -2
  46. package/esm2022/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.mjs +77 -0
  47. package/esm2022/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.mjs +83 -0
  48. package/esm2022/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.mjs +31 -8
  49. package/esm2022/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.mjs +34 -8
  50. package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +1 -1
  51. package/esm2022/lib/components/bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component.mjs +3 -3
  52. package/esm2022/lib/components/bimplus-status-bar/bimplus-status-bar.component.mjs +35 -0
  53. package/esm2022/lib/components/bimplus-status-bar/bimplus-status-bar.service.mjs +35 -0
  54. package/esm2022/lib/components/bimplus-status-bar/statusBar.mjs +2 -0
  55. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.mjs +38 -0
  56. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.mjs +10 -0
  57. package/esm2022/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.mjs +89 -0
  58. package/esm2022/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.mjs +33 -0
  59. package/esm2022/lib/components/bimplus-textarea/autoResizeTextarea.directive.mjs +83 -0
  60. package/esm2022/lib/components/bimplus-textarea/bimplus-textarea.component.mjs +128 -0
  61. package/esm2022/lib/components/links-to-documents/links-to-documents.component.mjs +380 -0
  62. package/esm2022/lib/components/object-hyperlinks/object-hyperlinks.component.mjs +145 -0
  63. package/esm2022/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.mjs +36 -0
  64. package/esm2022/lib/components/object-preview/object-preview.component.mjs +285 -0
  65. package/esm2022/lib/components/object-preview/object-preview.interface.mjs +2 -0
  66. package/esm2022/lib/components/object-properties/object-properties.component.mjs +536 -0
  67. package/esm2022/lib/components/object-properties/object-properties.interface.mjs +2 -0
  68. package/esm2022/lib/components/object-properties/object-properties.service.mjs +26 -0
  69. package/esm2022/lib/components/object-properties-group/object-properties-group.component.mjs +124 -0
  70. package/esm2022/lib/components/object-properties-group/object-property-value/object-property-value.component.mjs +55 -0
  71. package/esm2022/lib/components/object-properties-header/object-properties-header.component.mjs +48 -6
  72. package/esm2022/lib/components/object-properties-header/object-properties-header.interface.mjs +1 -1
  73. package/esm2022/lib/components/resizable-panel/resizable-panel.component.mjs +54 -10
  74. package/esm2022/lib/pipes/bit-converter.pipe.mjs +46 -0
  75. package/esm2022/lib/pipes/get-attribute-value-as-string.pipe.mjs +173 -0
  76. package/esm2022/lib/pipes/get-attribute-value.pipe.mjs +162 -0
  77. package/esm2022/lib/pipes/round.pipe.mjs +20 -0
  78. package/esm2022/lib/utils/objectProperties.mjs +9 -0
  79. package/esm2022/lib/validators/double-enum.validator.mjs +17 -0
  80. package/esm2022/lib/validators/double.validator.mjs +23 -0
  81. package/esm2022/lib/validators/guid-enum.validator.mjs +17 -0
  82. package/esm2022/lib/validators/guid.validator.mjs +11 -0
  83. package/esm2022/lib/validators/integer.validator.mjs +20 -0
  84. package/esm2022/lib/validators/string-combobox.validator.mjs +17 -0
  85. package/esm2022/lib/validators/string-enum.validator.mjs +17 -0
  86. package/esm2022/public-api.mjs +22 -1
  87. package/fesm2022/ngx-bimplus-components.mjs +4197 -82
  88. package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
  89. package/lib/components/bimplus-attachments/bimplus-attachments.component.d.ts +39 -0
  90. package/lib/components/bimplus-attachments/bimplus-attachments.interface.d.ts +33 -0
  91. package/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.d.ts +30 -0
  92. package/lib/components/bimplus-attachments/services/bimplus-attachments.service.d.ts +8 -0
  93. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.d.ts +13 -3
  94. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.d.ts +7 -1
  95. package/lib/components/bimplus-comment/IComment.d.ts +4 -0
  96. package/lib/components/bimplus-comment/bimplus-comment.component.d.ts +39 -0
  97. package/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.d.ts +16 -3
  98. package/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.d.ts +4 -0
  99. package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +1 -1
  100. package/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.d.ts +3 -3
  101. package/lib/components/bimplus-input-checkbox/bimplus-input-checkbox.component.d.ts +18 -0
  102. package/lib/components/bimplus-input-combobox/bimplus-input-combobox.component.d.ts +41 -0
  103. package/lib/components/bimplus-input-number/bimplus-input-number.component.d.ts +26 -0
  104. package/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.d.ts +28 -0
  105. package/lib/components/bimplus-link-tooltip-message/bimplus-link-tooltip-message.component.d.ts +22 -0
  106. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.d.ts +84 -0
  107. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.d.ts +15 -0
  108. package/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.d.ts +11 -0
  109. package/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.d.ts +5 -1
  110. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.d.ts +12 -12
  111. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.d.ts +3 -3
  112. package/lib/components/bimplus-object-structure/bimplus-object-structure.component.d.ts +5 -1
  113. package/lib/components/bimplus-object-structure/bimplus-object-structure.interface.d.ts +2 -0
  114. package/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.d.ts +29 -0
  115. package/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.d.ts +24 -0
  116. package/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.d.ts +8 -1
  117. package/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.d.ts +11 -1
  118. package/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.d.ts +1 -1
  119. package/lib/components/bimplus-status-bar/bimplus-status-bar.component.d.ts +14 -0
  120. package/lib/components/bimplus-status-bar/bimplus-status-bar.service.d.ts +14 -0
  121. package/lib/components/bimplus-status-bar/statusBar.d.ts +4 -0
  122. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.d.ts +16 -0
  123. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.d.ts +18 -0
  124. package/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.d.ts +36 -0
  125. package/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.d.ts +15 -0
  126. package/lib/components/bimplus-textarea/autoResizeTextarea.directive.d.ts +24 -0
  127. package/lib/components/bimplus-textarea/bimplus-textarea.component.d.ts +42 -0
  128. package/lib/components/links-to-documents/links-to-documents.component.d.ts +68 -0
  129. package/lib/components/object-hyperlinks/object-hyperlinks.component.d.ts +32 -0
  130. package/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.d.ts +15 -0
  131. package/lib/components/object-preview/object-preview.component.d.ts +45 -0
  132. package/lib/components/object-preview/object-preview.interface.d.ts +5 -0
  133. package/lib/components/object-properties/object-properties.component.d.ts +78 -0
  134. package/lib/components/object-properties/object-properties.interface.d.ts +22 -0
  135. package/lib/components/object-properties/object-properties.service.d.ts +12 -0
  136. package/lib/components/object-properties-group/object-properties-group.component.d.ts +29 -0
  137. package/lib/components/object-properties-group/object-property-value/object-property-value.component.d.ts +14 -0
  138. package/lib/components/object-properties-header/object-properties-header.component.d.ts +13 -4
  139. package/lib/components/object-properties-header/object-properties-header.interface.d.ts +8 -0
  140. package/lib/components/resizable-panel/resizable-panel.component.d.ts +12 -3
  141. package/lib/pipes/bit-converter.pipe.d.ts +17 -0
  142. package/lib/pipes/get-attribute-value-as-string.pipe.d.ts +35 -0
  143. package/lib/pipes/get-attribute-value.pipe.d.ts +35 -0
  144. package/lib/pipes/round.pipe.d.ts +7 -0
  145. package/lib/utils/objectProperties.d.ts +2 -0
  146. package/lib/validators/double-enum.validator.d.ts +2 -0
  147. package/lib/validators/double.validator.d.ts +2 -0
  148. package/lib/validators/guid-enum.validator.d.ts +2 -0
  149. package/lib/validators/guid.validator.d.ts +2 -0
  150. package/lib/validators/integer.validator.d.ts +2 -0
  151. package/lib/validators/string-combobox.validator.d.ts +2 -0
  152. package/lib/validators/string-enum.validator.d.ts +2 -0
  153. package/package.json +12 -4
  154. package/public-api.d.ts +21 -0
@@ -0,0 +1,145 @@
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
+ sanitizedName = sanitizedName?.replace(/^http(s?):\/\//, '');
89
+ const data = JSON.stringify({
90
+ name: sanitizedName,
91
+ url: sanitizedUrl,
92
+ objectId: objectId
93
+ });
94
+ return this.api.objects.postHyperlink(objectId, data);
95
+ }
96
+ onHyperlinkItemDeleteButtonClicked(hyperlink) {
97
+ this.dialogService.open(BimplusOverlayDialogConfirmComponent, {
98
+ options: {
99
+ position: 'middle',
100
+ positionOptions: {},
101
+ overlayClickEnabled: false,
102
+ overlayVisibilityEnabled: true,
103
+ draggable: true
104
+ }, data: {
105
+ title: this.translateService.instant('_Hyperlink delete confirmation title'),
106
+ message: this.translateService.instant('_Hyperlink delete confirmation message'),
107
+ acceptButtonLocalizedString: "_Delete",
108
+ acceptCallback: () => {
109
+ this.deleteHyperlink(hyperlink.id);
110
+ }
111
+ }
112
+ });
113
+ }
114
+ deleteHyperlink(id) {
115
+ if (!this.api)
116
+ return;
117
+ this.api.hyperlinks.delete(id).then(() => {
118
+ this.loadHyperlinks(this._rootObjectId);
119
+ });
120
+ }
121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ObjectHyperlinksComponent, deps: [{ token: i1.TranslateService }, { token: i2.DialogService }, { token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
122
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", 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}.input-form lib-bimplus-input-text-field{margin-top:.2rem}\n"], dependencies: [{ kind: "component", type: BimplusButtonsRowComponent, selector: "lib-bimplus-buttons-row", inputs: ["items", "canUpdateObject"], 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", "showClearButton", "validValue"], outputs: ["enterKeyPressed"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
123
+ }
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ObjectHyperlinksComponent, decorators: [{
125
+ type: Component,
126
+ args: [{ selector: 'lib-object-hyperlinks', standalone: true, imports: [
127
+ BimplusButtonsRowComponent,
128
+ BimplusScrollableContainerComponent,
129
+ ObjectHyperlinksItemComponent,
130
+ NgForOf,
131
+ TranslateModule,
132
+ ReactiveFormsModule,
133
+ NgIf,
134
+ BimplusInputTextFieldComponent
135
+ ], 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}.input-form lib-bimplus-input-text-field{margin-top:.2rem}\n"] }]
136
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.DialogService }, { type: i3.FormBuilder }], propDecorators: { api: [{
137
+ type: Input
138
+ }], rootObjectId: [{
139
+ type: Input
140
+ }], canCreateHyperlinks: [{
141
+ type: Input
142
+ }], canDeleteHyperlinks: [{
143
+ type: Input
144
+ }] } });
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWh5cGVybGlua3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LWh5cGVybGlua3Mvb2JqZWN0LWh5cGVybGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LWh5cGVybGlua3Mvb2JqZWN0LWh5cGVybGlua3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQVUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFFaEcsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDL0csT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsbUNBQW1DLEVBQ3BDLE1BQU0sd0VBQXdFLENBQUM7QUFDaEYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFFekcsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFDTCxvQ0FBb0MsRUFDckMsTUFBTSw0RUFBNEUsQ0FBQztBQUNwRixPQUFPLEVBQXlCLG1CQUFtQixFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZGLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDOzs7OztBQW1COUcsTUFBTSxPQUFPLHlCQUEw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QUE2Qjt3QkFDN0IsT0FBTzt3QkFDUCxlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsSUFBSTt3QkFDSiw4QkFBOEI7cUJBQy9CLGlCQUdjLGlCQUFpQixDQUFDLFNBQVM7MklBd0JqQyxHQUFHO3NCQUFYLEtBQUs7Z0JBR0YsWUFBWTtzQkFEZixLQUFLO2dCQWtCRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtCaW1wbHVzQnV0dG9uc1Jvd0NvbXBvbmVudH0gZnJvbSBcIi4uL2JpbXBsdXMtYnV0dG9ucy1yb3cvYmltcGx1cy1idXR0b25zLXJvdy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtCaW1wbHVzQnV0dG9uQ2xpY2tFdmVudCwgQmltcGx1c0J1dHRvblJvd0l0ZW19IGZyb20gXCIuLi9iaW1wbHVzLWJ1dHRvbnMtcm93L2JpbXBsdXMtYnV0dG9ucy1yb3cuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7QmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudH0gZnJvbSBcIi4uL2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIEJpbXBsdXNTY3JvbGxhYmxlQ29udGFpbmVyQ29tcG9uZW50XHJcbn0gZnJvbSBcIi4uL2JpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXIvYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtPYmplY3RIeXBlcmxpbmtzSXRlbUNvbXBvbmVudH0gZnJvbSBcIi4uL29iamVjdC1oeXBlcmxpbmtzLWl0ZW0vb2JqZWN0LWh5cGVybGlua3MtaXRlbS5jb21wb25lbnRcIjtcclxuaW1wb3J0IFdlYlNkayBmcm9tIFwiYmltcGx1cy13ZWJzZGtcIjtcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7TmdGb3JPZiwgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0RpYWxvZ1NlcnZpY2V9IGZyb20gXCIuLi9iaW1wbHVzLWdlbmVyYWwtb3ZlcmxheS1kaWFsb2cvYmltcGx1cy1nZW5lcmFsLW92ZXJsYXktZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuICBCaW1wbHVzT3ZlcmxheURpYWxvZ0NvbmZpcm1Db21wb25lbnRcclxufSBmcm9tIFwiLi4vYmltcGx1cy1vdmVybGF5LWRpYWxvZy1jb25maXJtL2JpbXBsdXMtb3ZlcmxheS1kaWFsb2ctY29uZmlybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtCaW1wbHVzSW5wdXRUZXh0RmllbGRDb21wb25lbnR9IGZyb20gXCIuLi9iaW1wbHVzLWlucHV0LXRleHQtZmllbGQvYmltcGx1cy1pbnB1dC10ZXh0LWZpZWxkLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItb2JqZWN0LWh5cGVybGlua3MnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQmltcGx1c0J1dHRvbnNSb3dDb21wb25lbnQsXHJcbiAgICBCaW1wbHVzU2Nyb2xsYWJsZUNvbnRhaW5lckNvbXBvbmVudCxcclxuICAgIE9iamVjdEh5cGVybGlua3NJdGVtQ29tcG9uZW50LFxyXG4gICAgTmdGb3JPZixcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBOZ0lmLFxyXG4gICAgQmltcGx1c0lucHV0VGV4dEZpZWxkQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWh5cGVybGlua3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9vYmplY3QtaHlwZXJsaW5rcy5jb21wb25lbnQubGVzcycsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPYmplY3RIeXBlcmxpbmtzQ29tcG9uZW50IGV4dGVuZHMgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgaHlwZXJsaW5rRm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBjb25zdHJ1Y3Rvcih0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsIHByaXZhdGUgcmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICBzdXBlcih0cmFuc2xhdGVTZXJ2aWNlKTtcclxuXHJcbiAgICB0aGlzLmh5cGVybGlua0Zvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgbmFtZTogWycnLCBbXV0sXHJcbiAgICAgIHVybDogWycnLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL15bXjw+XSokLyksIC8vIERvIG5vdCBhbGxvdyA8IG9yID5cclxuICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybigvXig/IVxccyokKS4rLykgLy8gRG8gbm90IGFsbG93IGFsbCBlbXB0eSBzdHJpbmcsIGJ1dCBhbGxvdyB0ZXh0IGFmdGVyIHNwYWNlc1xyXG4gICAgICAgIF1cclxuICAgICAgXVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5oeXBlcmxpbmtGb3JtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XHJcbiAgICAgIHRoaXMuYnV0dG9uUm93SXRlbXNbMF0uZGlzYWJsZWQgPSBzdGF0dXMgIT09ICdWQUxJRCc7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGFwaTogV2ViU2RrLkFwaSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCByb290T2JqZWN0SWQoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5fY3VycmVudE9iamVjdElkJC5uZXh0KGlkKTtcclxuICAgIHRoaXMubG9hZEh5cGVybGlua3MoaWQpO1xyXG5cclxuICAgIHRoaXMuX3Jvb3RPYmplY3RJZCA9IGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJvb3RPYmplY3RJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Jvb3RPYmplY3RJZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRPYmplY3RJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oXCJcIik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFByb3BlcnRpZXNPYmplY3RJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oXCJcIik7XHJcbiAgcHJpdmF0ZSBfcm9vdE9iamVjdElkOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBidXR0b25Sb3dJdGVtczogQXJyYXk8QmltcGx1c0J1dHRvblJvd0l0ZW0+ID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGNhbkNyZWF0ZUh5cGVybGlua3M6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNhbkRlbGV0ZUh5cGVybGlua3M6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBoeXBlcmxpbmtzOiBBcnJheTxXZWJTZGsuSHlwZXJsaW5rPiA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYnV0dG9uUm93SXRlbXMucHVzaChcclxuICAgICAge1xyXG4gICAgICAgIGlkOiBcImFkZC1oeXBlcmxpbmtcIlxyXG4gICAgICAgICwgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfQWRkIGh5cGVybGluaycpXHJcbiAgICAgICAgLCB0b29sdGlwOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX0FkZCBoeXBlcmxpbmsnKVxyXG4gICAgICAgICwgZGlzYWJsZWQ6IHRydWVcclxuICAgICAgICAsIGJ1dHRvblN0eWxlOiAncHJpbWFyeSdcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJ1dHRvblJvd0J1dHRvbkNsaWNrZWQoJGV2ZW50OiBCaW1wbHVzQnV0dG9uQ2xpY2tFdmVudCkge1xyXG4gICAgaWYgKCRldmVudC5pZCA9PT0gXCJhZGQtaHlwZXJsaW5rXCIpIHtcclxuICAgICAgaWYgKHRoaXMuaHlwZXJsaW5rRm9ybS52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuYWRkSHlwZXJsaW5rKHRoaXMuaHlwZXJsaW5rRm9ybS52YWx1ZVsnbmFtZSddLCB0aGlzLmh5cGVybGlua0Zvcm0udmFsdWVbJ3VybCddLCB0aGlzLl9yb290T2JqZWN0SWQpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkSHlwZXJsaW5rcyh0aGlzLl9yb290T2JqZWN0SWQpO1xyXG4gICAgICAgICAgdGhpcy5oeXBlcmxpbmtGb3JtLnJlc2V0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZEh5cGVybGlua3Mob2JqZWN0SWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmFwaSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYXBpLm9iamVjdHMuZ2V0SHlwZXJsaW5rcyhvYmplY3RJZCkudGhlbigocmVzcG9uc2U6IFdlYlNkay5IeXBlcmxpbmtzUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5oeXBlcmxpbmtzID0gcmVzcG9uc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkSHlwZXJsaW5rKG5hbWU6IHN0cmluZywgdXJsOiBzdHJpbmcsIG9iamVjdElkOiBzdHJpbmcpOiBQcm9taXNlPFdlYlNkay5IeXBlcmxpbms+IHtcclxuICAgIGlmICghdGhpcy5hcGkpXHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0FQSSBub3QgYXZhaWxhYmxlJykpO1xyXG5cclxuICAgIGxldCBzYW5pdGl6ZWRVcmw6IHN0cmluZyA9IHVybC50cmltKCk7XHJcblxyXG4gICAgaWYgKCFSZWdFeHAoL15odHRwKHM/KTpcXC9cXC8vKS5leGVjKHNhbml0aXplZFVybCkpIHtcclxuICAgICAgc2FuaXRpemVkVXJsID0gJ2h0dHBzOi8vJyArIHNhbml0aXplZFVybDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc2FuaXRpemVkTmFtZSA9IG5hbWU/LnRyaW0oKSA/PyAnJztcclxuXHJcbiAgICBpZiAoc2FuaXRpemVkTmFtZSA9PT0gJycpIHtcclxuICAgICAgc2FuaXRpemVkTmFtZSA9IHNhbml0aXplZFVybDtcclxuICAgIH1cclxuXHJcbiAgICBzYW5pdGl6ZWROYW1lID0gc2FuaXRpemVkTmFtZT8ucmVwbGFjZSgvXmh0dHAocz8pOlxcL1xcLy8sICcnKTtcclxuXHJcbiAgICBjb25zdCBkYXRhID0gSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICBuYW1lOiBzYW5pdGl6ZWROYW1lLFxyXG4gICAgICB1cmw6IHNhbml0aXplZFVybCxcclxuICAgICAgb2JqZWN0SWQ6IG9iamVjdElkXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5hcGkub2JqZWN0cy5wb3N0SHlwZXJsaW5rKG9iamVjdElkLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIG9uSHlwZXJsaW5rSXRlbURlbGV0ZUJ1dHRvbkNsaWNrZWQoaHlwZXJsaW5rOiBXZWJTZGsuSHlwZXJsaW5rKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihCaW1wbHVzT3ZlcmxheURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIHBvc2l0aW9uOiAnbWlkZGxlJyxcclxuICAgICAgICBwb3NpdGlvbk9wdGlvbnM6IHt9LFxyXG4gICAgICAgIG92ZXJsYXlDbGlja0VuYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIG92ZXJsYXlWaXNpYmlsaXR5RW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICBkcmFnZ2FibGU6IHRydWVcclxuICAgICAgfSwgZGF0YToge1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX0h5cGVybGluayBkZWxldGUgY29uZmlybWF0aW9uIHRpdGxlJyksXHJcbiAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ19IeXBlcmxpbmsgZGVsZXRlIGNvbmZpcm1hdGlvbiBtZXNzYWdlJyksXHJcbiAgICAgICAgYWNjZXB0QnV0dG9uTG9jYWxpemVkU3RyaW5nOiBcIl9EZWxldGVcIixcclxuICAgICAgICBhY2NlcHRDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kZWxldGVIeXBlcmxpbmsoaHlwZXJsaW5rLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWxldGVIeXBlcmxpbmsoaWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmFwaSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYXBpLmh5cGVybGlua3MuZGVsZXRlKGlkKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkSHlwZXJsaW5rcyh0aGlzLl9yb290T2JqZWN0SWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoY2FuQ3JlYXRlSHlwZXJsaW5rcykge1xyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiaHlwZXJsaW5rRm9ybVwiIGNsYXNzPVwiaW5wdXQtZm9ybVwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPGxpYi1iaW1wbHVzLWlucHV0LXRleHQtZmllbGQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIHBsYWNlaG9sZGVyPVwie3sgJ19OYW1lJyB8IHRyYW5zbGF0ZSB9fVwiLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdj5cclxuICAgICAgPGxpYi1iaW1wbHVzLWlucHV0LXRleHQtZmllbGQgZm9ybUNvbnRyb2xOYW1lPVwidXJsXCIgcGxhY2Vob2xkZXI9XCJ7eyAnX1VSTCcgfCB0cmFuc2xhdGUgfX1cIi8+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bGliLWJpbXBsdXMtYnV0dG9ucy1yb3cgW2l0ZW1zXT1cImJ1dHRvblJvd0l0ZW1zXCIgKGJ1dHRvbkNsaWNrZWQpPVwiYnV0dG9uUm93QnV0dG9uQ2xpY2tlZCgkZXZlbnQpXCIvPlxyXG4gIDwvZm9ybT5cclxufVxyXG5cclxuPGRpdiBjbGFzcz1cImxpc3QtYW5jaG9yXCI+XHJcbiAgPGRpdiBjbGFzcz1cImxpc3RcIj5cclxuICAgIDxsaWItYmltcGx1cy1zY3JvbGxhYmxlLWNvbnRhaW5lcj5cclxuICAgICAgQGlmIChoeXBlcmxpbmtzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHhcIiAqbmdGb3I9XCJsZXQgaHlwZXJsaW5rIG9mIGh5cGVybGlua3NcIj5cclxuICAgICAgICAgIDxsaWItb2JqZWN0LWh5cGVybGlua3MtaXRlbSBbaHlwZXJsaW5rXT1cImh5cGVybGlua1wiIFtkZWxldGVCdXR0b25FbmFibGVkXT1cImNhbkRlbGV0ZUh5cGVybGlua3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGVCdXR0b25DbGlja2VkKT1cIm9uSHlwZXJsaW5rSXRlbURlbGV0ZUJ1dHRvbkNsaWNrZWQoaHlwZXJsaW5rKVwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vLWxpbmtzXCI+e3sgXCJfTm8gaHlwZXJsaW5rcyBmb3VuZFwiIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvbGliLWJpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -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.12", 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.12", 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=\"{{ '_Hyperlink delete confirmation title' | 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"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", 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=\"{{ '_Hyperlink delete confirmation title' | 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWh5cGVybGlua3MtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9vYmplY3QtaHlwZXJsaW5rcy1pdGVtL29iamVjdC1oeXBlcmxpbmtzLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LWh5cGVybGlua3MtaXRlbS9vYmplY3QtaHlwZXJsaW5rcy1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDL0csT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBV3RFLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSwrQkFBK0I7SUFDaEYsWUFBWSxnQkFBa0M7UUFDNUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFJaEIsd0JBQW1CLEdBQVksSUFBSSxDQUFDO1FBRW5DLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFMekQsQ0FBQztJQU9ELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQXFCO1FBQ3pDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNqRCxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFeEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7K0dBcEJVLDZCQUE2QjttR0FBN0IsNkJBQTZCLHNQQ2QxQyxnaUJBY0EsNjhKRExJLGVBQWU7OzRGQUtOLDZCQUE2QjtrQkFUekMsU0FBUzsrQkFDRSw0QkFBNEIsY0FDMUIsSUFBSSxXQUNQO3dCQUNQLGVBQWU7cUJBQ2hCO3FGQVNRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVJLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgV2ViU2RrIGZyb20gXCJiaW1wbHVzLXdlYnNka1wiO1xyXG5pbXBvcnQge0JpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnR9IGZyb20gXCIuLi9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQvYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW9iamVjdC1oeXBlcmxpbmtzLWl0ZW0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgVHJhbnNsYXRlTW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWh5cGVybGlua3MtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL29iamVjdC1oeXBlcmxpbmtzLWl0ZW0uY29tcG9uZW50Lmxlc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPYmplY3RIeXBlcmxpbmtzSXRlbUNvbXBvbmVudCBleHRlbmRzIEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQge1xyXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBoeXBlcmxpbms6IFdlYlNkay5IeXBlcmxpbmsgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgZGVsZXRlQnV0dG9uRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSBkZWxldGVCdXR0b25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBvbkRlbGV0ZUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZWxldGVCdXR0b25DbGlja2VkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uRGVsZXRlQnV0dG9uS2V5RG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICgkZXZlbnQua2V5ID09PSAnRW50ZXInIHx8ICRldmVudC5rZXkgPT09ICcgJykge1xyXG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgIHRoaXMub25EZWxldGVCdXR0b25DbGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaHlwZXJsaW5rLWl0ZW1cIj5cclxuICBAaWYgKGRlbGV0ZUJ1dHRvbkVuYWJsZWQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJiaW0tbGlzdC1idXR0b24gZGVsZXRlXCIgdGl0bGU9XCJ7eyAnX0h5cGVybGluayBkZWxldGUgY29uZmlybWF0aW9uIHRpdGxlJyB8IHRyYW5zbGF0ZSB9fVwiIChjbGljayk9XCJvbkRlbGV0ZUJ1dHRvbkNsaWNrKClcIlxyXG4gICAgICAgICAoa2V5ZG93bik9XCJvbkRlbGV0ZUJ1dHRvbktleURvd24oJGV2ZW50KVwiPlxyXG4gICAgICAmIzEwMDA1OyYjeEZFMEU7XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIDxhIGhyZWY9XCJ7eyBoeXBlcmxpbms/LnVybCB9fVwiIGNsYXNzPSdiaW0taHlwZXJsaW5rLXVybCcgdGFyZ2V0PVwiX2JsYW5rXCIgdGl0bGU9XCJ7eyBoeXBlcmxpbms/LnVybCB9fVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImJpbS1oeXBlcmxpbmstbmFtZVwiPlxyXG4gICAgICB7eyBoeXBlcmxpbms/Lm5hbWUgfX1cclxuICAgIDwvZGl2PlxyXG4gIDwvYT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,285 @@
1
+ import { Component, effect, Input, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import * as Renderer from 'bimplus-renderer';
3
+ import * as THREE from 'three';
4
+ import { TranslatePipe } from "@ngx-translate/core";
5
+ import * as i0 from "@angular/core";
6
+ export class ObjectPreviewComponent {
7
+ set objectId(id) {
8
+ this._objectId = id;
9
+ this.onObjectIdChanged();
10
+ }
11
+ get objectId() {
12
+ return this._objectId;
13
+ }
14
+ set visibleNode(value) {
15
+ if (this.viewport) {
16
+ this.viewport.toggleObjectNode({ id: value.id, visible: value.visible });
17
+ }
18
+ }
19
+ set opaqueNode(value) {
20
+ if (this.viewport) {
21
+ this.viewport.toggleObjectNodeOpacity({ id: value.id, opacity: value.opaque });
22
+ }
23
+ }
24
+ constructor(el) {
25
+ this.el = el;
26
+ this.resizeObserver = null;
27
+ this.viewport = null;
28
+ this.isLoading = true;
29
+ this.previousWidth = 0;
30
+ this.previousHeight = 0;
31
+ this.api = null;
32
+ this._objectId = undefined;
33
+ this.revision = undefined;
34
+ this.contentLoader = null;
35
+ this.isRendererInitialized = false;
36
+ this.metricUnits = {
37
+ weight: {
38
+ multiplicator: 0.001,
39
+ precision: 2,
40
+ unit: 'kg',
41
+ },
42
+ length: {
43
+ multiplicator: 0.001,
44
+ precision: 2,
45
+ unit: 'm',
46
+ },
47
+ width: {
48
+ multiplicator: 0.001,
49
+ precision: 2,
50
+ unit: 'm',
51
+ },
52
+ height: {
53
+ multiplicator: 0.001,
54
+ precision: 2,
55
+ unit: 'm',
56
+ },
57
+ area: {
58
+ multiplicator: 0.000001,
59
+ precision: 2,
60
+ unit: 'm²',
61
+ },
62
+ volume: {
63
+ multiplicator: 1e-9,
64
+ precision: 2,
65
+ unit: 'm³',
66
+ },
67
+ };
68
+ this.imperialUnits = {
69
+ length: {
70
+ multiplicator: 0.00328083989,
71
+ precision: 2,
72
+ unit: 'feet',
73
+ },
74
+ width: {
75
+ multiplicator: 0.00328083989,
76
+ precision: 2,
77
+ unit: 'feet',
78
+ },
79
+ height: {
80
+ multiplicator: 0.00328083989,
81
+ precision: 2,
82
+ unit: 'feet',
83
+ },
84
+ };
85
+ this.viewportSettings = {
86
+ defaultOpacity: 0.5,
87
+ disciplineOpacity: 0.1,
88
+ pinSizeScaleFactor: 2,
89
+ maxWebGLBufferSize: 350e12,
90
+ mixedModelMode: true,
91
+ useFrameSelection: false,
92
+ pinFlyToDistance: 20000,
93
+ nearClippingPlane: 0.01,
94
+ slideThmbSize: [180, 112],
95
+ units: {
96
+ mm: this.metricUnits,
97
+ inch: {},
98
+ },
99
+ };
100
+ this.units = {
101
+ Metric: this.metricUnits,
102
+ Imperial: this.imperialUnits,
103
+ };
104
+ effect(() => {
105
+ if (this.visibleNode) {
106
+ this.processVisibilityNode(this.visibleNode);
107
+ }
108
+ });
109
+ // React to changes in the `opaqueNode` signal
110
+ effect(() => {
111
+ if (this.opaqueNode) {
112
+ this.processOpacityNode(this.opaqueNode);
113
+ }
114
+ });
115
+ }
116
+ // Method to process the node
117
+ processVisibilityNode(node) {
118
+ console.log('Processing visbility of node in lib-object-preview:', node);
119
+ }
120
+ processOpacityNode(node) {
121
+ console.log('Processing opacity of node in lib-object-preview:', node);
122
+ }
123
+ ngAfterViewInit() {
124
+ const container = this.el.nativeElement;
125
+ // Initialize ResizeObserver
126
+ this.resizeObserver = new ResizeObserver((entries) => {
127
+ for (const entry of entries) {
128
+ const width = entry?.contentRect?.width;
129
+ if (width != this.previousWidth) {
130
+ this.previousWidth = width;
131
+ this.recalculatePreviewSize();
132
+ }
133
+ }
134
+ });
135
+ // Start observing the component's main container
136
+ this.resizeObserver.observe(container);
137
+ this.initRenderer();
138
+ this.contentLoader = new Renderer.ContentLoader(this.api, this.viewport);
139
+ this.isRendererInitialized = true;
140
+ this.loadObject();
141
+ }
142
+ ngOnDestroy() {
143
+ this.resizeObserver?.disconnect();
144
+ this.viewport?.dispose();
145
+ }
146
+ recalculatePreviewSize() {
147
+ clearTimeout(this.resizeTimeout);
148
+ this.resizeTimeout = setTimeout(() => {
149
+ const width = this.rendererViewportElement?.nativeElement.offsetWidth;
150
+ const height = this.rendererViewportElement?.nativeElement.offsetHeight;
151
+ if (width && height) {
152
+ this.viewport?.setViewportSize(width, height);
153
+ this.viewport?.draw();
154
+ }
155
+ else {
156
+ console.error("Viewport size is zero");
157
+ }
158
+ }, 1); // Delay execution to avoid rapid resizing and flickering
159
+ }
160
+ setAmbientOcclusionOptions() {
161
+ if (!this.viewport) {
162
+ return;
163
+ }
164
+ const viewportOcclusionData = {
165
+ usage: false,
166
+ usageForInteraction: false,
167
+ useShadows: false,
168
+ useShadowsForInteraction: false,
169
+ lightRotation: Math.PI * 35.00 / 180.0,
170
+ lightElevation: Math.PI * 50.00 / 180.0,
171
+ lightColor: new THREE.Color(1.0, 1.0, 1.0),
172
+ ambientLightColor: new THREE.Color(0.6, 0.6, 0.6),
173
+ };
174
+ this.viewport.setAmbientOcclusionOptions(viewportOcclusionData);
175
+ }
176
+ setBackgroundOptions() {
177
+ if (!this.viewport) {
178
+ return;
179
+ }
180
+ const daySkyBackgroundSetting = {
181
+ name: "day sky",
182
+ ambientLightColor: 0x868686,
183
+ backgroundType: Renderer.Background.BackgroundType_LinearGradient,
184
+ backgroundParams: {
185
+ alpha: 1.0,
186
+ colorStops: [
187
+ {
188
+ offset: 0.0,
189
+ color: "#87CDE9"
190
+ },
191
+ {
192
+ offset: 0.5104,
193
+ color: "#DDEDFE"
194
+ },
195
+ {
196
+ offset: 0.9635,
197
+ color: "#D3D3D4"
198
+ }
199
+ ]
200
+ }
201
+ };
202
+ this.viewport.setBackground(daySkyBackgroundSetting.backgroundType, daySkyBackgroundSetting.backgroundParams);
203
+ }
204
+ setHoverOption(useHoverEffect = true) {
205
+ if (!this.viewport) {
206
+ return;
207
+ }
208
+ this.viewport.setUseHoverEffect(useHoverEffect);
209
+ }
210
+ initRenderer() {
211
+ this.viewport = new Renderer.Viewport3D({
212
+ settings: this.viewportSettings,
213
+ units: this.units.Metric,
214
+ domElementId: "",
215
+ GPUPick: true,
216
+ api: this.api,
217
+ name: "objectPreviewRendererViewport",
218
+ lookupTextureSize: 32,
219
+ ssaoSupported: false, // Disable SSAO support for object details window
220
+ shadowsSupported: false,
221
+ panningScaleFactor: 4.0, //In case of preview window use bigger panning scale factor
222
+ commandPolicies: {
223
+ CommandSelect: {
224
+ noBubble: true, // Don't do a upwards activation
225
+ noTraverse: true // Don't do a downwards activation
226
+ }
227
+ }
228
+ });
229
+ this.setAmbientOcclusionOptions();
230
+ this.setBackgroundOptions();
231
+ this.setHoverOption();
232
+ this.viewport.draw();
233
+ if (this.viewport?.domElement) {
234
+ const nativeElement = this.el.nativeElement?.shadowRoot || this.el.nativeElement;
235
+ nativeElement?.getElementsByClassName?.("rendered-preview")[0]?.appendChild?.(this.viewport.domElement);
236
+ }
237
+ else {
238
+ console.error("no dom element present for renderer!");
239
+ }
240
+ }
241
+ onObjectIdChanged() {
242
+ this.loadObject();
243
+ }
244
+ loadObject() {
245
+ if (!this.isRendererInitialized) {
246
+ return;
247
+ }
248
+ if (!this.contentLoader) {
249
+ console.error("content loader is not there!");
250
+ return;
251
+ }
252
+ console.log('loading object...');
253
+ this.isLoading = true;
254
+ this.viewport?.resetViewport();
255
+ const projectContent = null;
256
+ this.contentLoader.loadObject(this.objectId, this.revision, projectContent).then(() => {
257
+ this.recalculatePreviewSize();
258
+ this.viewport?.draw(); // TODO: check if this is needed
259
+ this.viewport?.zoomToObjects([this.objectId]);
260
+ this.isLoading = false;
261
+ });
262
+ }
263
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ObjectPreviewComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
264
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: ObjectPreviewComponent, isStandalone: true, selector: "lib-object-preview", inputs: { api: "api", objectId: "objectId", revision: "revision", visibleNode: "visibleNode", opaqueNode: "opaqueNode" }, viewQueries: [{ propertyName: "rendererViewportElement", first: true, predicate: ["rendererviewport"], descendants: true }], ngImport: i0, template: "<div class=\"rendered-preview\" #rendererviewport>\r\n @if (isLoading) {\r\n <div class=\"loading-spinner-icon\" title=\"{{'_LoadingGeometry' | translate}}\">\r\n </div>\r\n }\r\n</div>\r\n", styles: [".rendered-preview{width:100%;height:21rem!important;min-height:21rem;padding:0;white-space:nowrap;cursor:default;margin-bottom:0;position:relative}.rendered-preview canvas{min-height:21rem;min-width:100%;max-width:100%}.loading-spinner-icon{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M8.9 14.3c-1.8 0-3.5-.9-4.5-2.4L6.3 10H2v4.2l1.3-1.1C4.5 14.9 6.6 16 9 16c3.6 0 6.7-2.5 7-5.9h-1.8c-.3 2.3-2.7 4.2-5.3 4.2zM14.8 5C13.6 3.1 11.4 2 9 2 5.4 2 2.4 4.6 2.1 8h1.7C4.3 5.6 6.5 3.7 9 3.7c1.8 0 3.6 1 4.6 2.4l-2 1.9H16V3.7L14.8 5z\" fill=\"%23444\"/></svg>');position:absolute;top:calc(50% - .6rem);left:calc(50% - .6rem);z-index:10;width:1.8rem;height:1.8rem;background-size:contain;background-repeat:no-repeat;background-position:center;animation:spin .6s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
265
+ }
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ObjectPreviewComponent, decorators: [{
267
+ type: Component,
268
+ args: [{ selector: 'lib-object-preview', standalone: true, imports: [
269
+ TranslatePipe
270
+ ], encapsulation: ViewEncapsulation.None, template: "<div class=\"rendered-preview\" #rendererviewport>\r\n @if (isLoading) {\r\n <div class=\"loading-spinner-icon\" title=\"{{'_LoadingGeometry' | translate}}\">\r\n </div>\r\n }\r\n</div>\r\n", styles: [".rendered-preview{width:100%;height:21rem!important;min-height:21rem;padding:0;white-space:nowrap;cursor:default;margin-bottom:0;position:relative}.rendered-preview canvas{min-height:21rem;min-width:100%;max-width:100%}.loading-spinner-icon{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M8.9 14.3c-1.8 0-3.5-.9-4.5-2.4L6.3 10H2v4.2l1.3-1.1C4.5 14.9 6.6 16 9 16c3.6 0 6.7-2.5 7-5.9h-1.8c-.3 2.3-2.7 4.2-5.3 4.2zM14.8 5C13.6 3.1 11.4 2 9 2 5.4 2 2.4 4.6 2.1 8h1.7C4.3 5.6 6.5 3.7 9 3.7c1.8 0 3.6 1 4.6 2.4l-2 1.9H16V3.7L14.8 5z\" fill=\"%23444\"/></svg>');position:absolute;top:calc(50% - .6rem);left:calc(50% - .6rem);z-index:10;width:1.8rem;height:1.8rem;background-size:contain;background-repeat:no-repeat;background-position:center;animation:spin .6s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
271
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { rendererViewportElement: [{
272
+ type: ViewChild,
273
+ args: ['rendererviewport']
274
+ }], api: [{
275
+ type: Input
276
+ }], objectId: [{
277
+ type: Input
278
+ }], revision: [{
279
+ type: Input
280
+ }], visibleNode: [{
281
+ type: Input
282
+ }], opaqueNode: [{
283
+ type: Input
284
+ }] } });
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXByZXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LXByZXZpZXcvb2JqZWN0LXByZXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LXByZXZpZXcvb2JqZWN0LXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxNQUFNLEVBRU4sS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLFFBQVEsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scUJBQXFCLENBQUM7O0FBYWxELE1BQU0sT0FBTyxzQkFBc0I7SUFZakMsSUFDSSxRQUFRLENBQUMsRUFBVTtRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFLRCxJQUFhLFdBQVcsQ0FBQyxLQUFvQjtRQUMzQyxJQUFHLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUMsRUFBRSxFQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBQ3ZFLENB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QUcsS0FBSyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0E3U1Usc0JBQXNCO21HQUF0QixzQkFBc0IscVVDMUJuQyx1TUFNQSxpOEJEY0ksYUFBYTs7NEZBTUosc0JBQXNCO2tCQVZsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1A7d0JBQ1AsYUFBYTtxQkFDZCxpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJOytFQVVOLHVCQUF1QjtzQkFBckQsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBRXBCLEdBQUc7c0JBQVgsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBWUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDTyxXQUFXO3NCQUF2QixLQUFLO2dCQUtPLFVBQVU7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIGVmZmVjdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgUmVuZGVyZXIgZnJvbSAnYmltcGx1cy1yZW5kZXJlcic7XHJcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcclxuaW1wb3J0IFdlYlNkayBmcm9tIFwiYmltcGx1cy13ZWJzZGtcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVQaXBlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBQcmV2aWV3T2JqZWN0IH0gZnJvbSAnLi9vYmplY3QtcHJldmlldy5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItb2JqZWN0LXByZXZpZXcnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgVHJhbnNsYXRlUGlwZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtcHJldmlldy5jb21wb25lbnQubGVzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIE9iamVjdFByZXZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgdmlld3BvcnQ6IFJlbmRlcmVyLlZpZXdwb3J0M0QgfCBudWxsID0gbnVsbDtcclxuICBpc0xvYWRpbmcgPSB0cnVlO1xyXG4gIHByZXZpb3VzV2lkdGggPSAwO1xyXG4gIHByZXZpb3VzSGVpZ2h0ID0gMDtcclxuICByZXNpemVUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3JlbmRlcmVydmlld3BvcnQnKSByZW5kZXJlclZpZXdwb3J0RWxlbWVudCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgpIGFwaTogV2ViU2RrLkFwaSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBvYmplY3RJZChpZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9vYmplY3RJZCA9IGlkO1xyXG4gICAgdGhpcy5vbk9iamVjdElkQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG9iamVjdElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0SWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vYmplY3RJZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKSByZXZpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNldCB2aXNpYmxlTm9kZSh2YWx1ZTogUHJldmlld09iamVjdCl7XHJcbiAgICBpZih0aGlzLnZpZXdwb3J0KXtcclxuICAgICAgdGhpcy52aWV3cG9ydC50b2dnbGVPYmplY3ROb2RlKHtpZDp2YWx1ZS5pZCwgdmlzaWJsZTp2YWx1ZS52aXNpYmxlfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBvcGFxdWVOb2RlKHZhbHVlOiBQcmV2aWV3T2JqZWN0KXsgICAgXHJcbiAgICBpZih0aGlzLnZpZXdwb3J0KXtcclxuICAgICAgdGhpcy52aWV3cG9ydC50b2dnbGVPYmplY3ROb2RlT3BhY2l0eSh7aWQ6dmFsdWUuaWQsIG9wYWNpdHk6dmFsdWUub3BhcXVlfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb250ZW50TG9hZGVyOiBSZW5kZXJlci5Db250ZW50TG9hZGVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgaXNSZW5kZXJlckluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgIGVmZmVjdCgoKT0+e1xyXG4gICAgICBpZiAodGhpcy52aXNpYmxlTm9kZSkge1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc1Zpc2liaWxpdHlOb2RlKHRoaXMudmlzaWJsZU5vZGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIFJlYWN0IHRvIGNoYW5nZXMgaW4gdGhlIGBvcGFxdWVOb2RlYCBzaWduYWxcclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm9wYXF1ZU5vZGUpIHtcclxuICAgICAgICB0aGlzLnByb2Nlc3NPcGFjaXR5Tm9kZSh0aGlzLm9wYXF1ZU5vZGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgXHJcbiAgLy8gTWV0aG9kIHRvIHByb2Nlc3MgdGhlIG5vZGVcclxuICBwcm9jZXNzVmlzaWJpbGl0eU5vZGUobm9kZTogUHJldmlld09iamVjdCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ1Byb2Nlc3NpbmcgdmlzYmlsaXR5IG9mIG5vZGUgaW4gbGliLW9iamVjdC1wcmV2aWV3OicsIG5vZGUpOyAgIFxyXG4gIH1cclxuICBwcm9jZXNzT3BhY2l0eU5vZGUobm9kZTogUHJldmlld09iamVjdCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ1Byb2Nlc3Npbmcgb3BhY2l0eSBvZiBub2RlIGluIGxpYi1vYmplY3QtcHJldmlldzonLCBub2RlKTsgICBcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBcclxuICAgIC8vIEluaXRpYWxpemUgUmVzaXplT2JzZXJ2ZXJcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcclxuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSBlbnRyeT8uY29udGVudFJlY3Q/LndpZHRoO1xyXG5cclxuICAgICAgICBpZiAod2lkdGggIT0gdGhpcy5wcmV2aW91c1dpZHRoKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzV2lkdGggPSB3aWR0aDtcclxuICAgICAgICAgIHRoaXMucmVjYWxjdWxhdGVQcmV2aWV3U2l6ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gU3RhcnQgb2JzZXJ2aW5nIHRoZSBjb21wb25lbnQncyBtYWluIGNvbnRhaW5lclxyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lcik7XHJcbiAgICB0aGlzLmluaXRSZW5kZXJlcigpO1xyXG5cclxuICAgIHRoaXMuY29udGVudExvYWRlciA9IG5ldyBSZW5kZXJlci5Db250ZW50TG9hZGVyKHRoaXMuYXBpIGFzIFdlYlNkay5BcGksIHRoaXMudmlld3BvcnQgYXMgUmVuZGVyZXIuVmlld3BvcnQzRCk7XHJcblxyXG4gICAgdGhpcy5pc1JlbmRlcmVySW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMubG9hZE9iamVjdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgICB0aGlzLnZpZXdwb3J0Py5kaXNwb3NlKCk7XHJcbiAgfVxyXG5cclxuICByZWNhbGN1bGF0ZVByZXZpZXdTaXplKCkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZW91dCk7XHJcblxyXG4gICAgdGhpcy5yZXNpemVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5yZW5kZXJlclZpZXdwb3J0RWxlbWVudD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5yZW5kZXJlclZpZXdwb3J0RWxlbWVudD8ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgICBpZiAod2lkdGggJiYgaGVpZ2h0KSB7XHJcbiAgICAgICAgdGhpcy52aWV3cG9ydD8uc2V0Vmlld3BvcnRTaXplKHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgICAgIHRoaXMudmlld3BvcnQ/LmRyYXcoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiVmlld3BvcnQgc2l6ZSBpcyB6ZXJvXCIpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxKSBhcyB1bmtub3duIGFzIG51bWJlcjsgLy8gRGVsYXkgZXhlY3V0aW9uIHRvIGF2b2lkIHJhcGlkIHJlc2l6aW5nIGFuZCBmbGlja2VyaW5nXHJcbiAgfVxyXG5cclxuICBtZXRyaWNVbml0czogUmVuZGVyZXIuTWVhc3VyZW1lbnRVbml0cyA9IHtcclxuICAgIHdlaWdodDoge1xyXG4gICAgICBtdWx0aXBsaWNhdG9yOiAwLjAwMSxcclxuICAgICAgcHJlY2lzaW9uOiAyLFxyXG4gICAgICB1bml0OiAna2cnLFxyXG4gICAgfSxcclxuICAgIGxlbmd0aDoge1xyXG4gICAgICBtdWx0aXBsaWNhdG9yOiAwLjAwMSxcclxuICAgICAgcHJlY2lzaW9uOiAyLFxyXG4gICAgICB1bml0OiAnbScsXHJcbiAgICB9LFxyXG4gICAgd2lkdGg6IHtcclxuICAgICAgbXVsdGlwbGljYXRvcjogMC4wMDEsXHJcbiAgICAgIHByZWNpc2lvbjogMixcclxuICAgICAgdW5pdDogJ20nLFxyXG4gICAgfSxcclxuICAgIGhlaWdodDoge1xyXG4gICAgICBtdWx0aXBsaWNhdG9yOiAwLjAwMSxcclxuICAgICAgcHJlY2lzaW9uOiAyLFxyXG4gICAgICB1bml0OiAnbScsXHJcbiAgICB9LFxyXG4gICAgYXJlYToge1xyXG4gICAgICBtdWx0aXBsaWNhdG9yOiAwLjAwMDAwMSxcclxuICAgICAgcHJlY2lzaW9uOiAyLFxyXG4gICAgICB1bml0OiAnbcKyJyxcclxuICAgIH0sXHJcbiAgICB2b2x1bWU6IHtcclxuICAgICAgbXVsdGlwbGljYXRvcjogMWUtOSxcclxuICAgICAgcHJlY2lzaW9uOiAyLFxyXG4gICAgICB1bml0OiAnbcKzJyxcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgaW1wZXJpYWxVbml0czogUmVuZGVyZXIuTWVhc3VyZW1lbnRVbml0cyA9IHtcclxuICAgIGxlbmd0aDoge1xyXG4gICAgICBtdWx0aXBsaWNhdG9yOiAwLjAwMzI4MDgzOTg5LFxyXG4gICAgICBwcmVjaXNpb246IDIsXHJcbiAgICAgIHVuaXQ6ICdmZWV0JyxcclxuICAgIH0sXHJcbiAgICB3aWR0aDoge1xyXG4gICAgICBtdWx0aXBsaWNhdG9yOiAwLjAwMzI4MDgzOTg5LFxyXG4gICAgICBwcmVjaXNpb246IDIsXHJcbiAgICAgIHVuaXQ6ICdmZWV0JyxcclxuICAgIH0sXHJcbiAgICBoZWlnaHQ6IHtcclxuICAgICAgbXVsdGlwbGljYXRvcjogMC4wMDMyODA4Mzk4OSxcclxuICAgICAgcHJlY2lzaW9uOiAyLFxyXG4gICAgICB1bml0OiAnZmVldCcsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIHZpZXdwb3J0U2V0dGluZ3M6IFJlbmRlcmVyLlZpZXdwb3J0U2V0dGluZ3MgPSB7XHJcbiAgICBkZWZhdWx0T3BhY2l0eTogMC41LFxyXG4gICAgZGlzY2lwbGluZU9wYWNpdHk6IDAuMSxcclxuICAgIHBpblNpemVTY2FsZUZhY3RvcjogMixcclxuICAgIG1heFdlYkdMQnVmZmVyU2l6ZTogMzUwZTEyLFxyXG4gICAgbWl4ZWRNb2RlbE1vZGU6IHRydWUsXHJcbiAgICB1c2VGcmFtZVNlbGVjdGlvbjogZmFsc2UsXHJcbiAgICBwaW5GbHlUb0Rpc3RhbmNlOiAyMDAwMCxcclxuICAgIG5lYXJDbGlwcGluZ1BsYW5lOiAwLjAxLFxyXG4gICAgc2xpZGVUaG1iU2l6ZTogWzE4MCwgMTEyXSxcclxuICAgIHVuaXRzOiB7XHJcbiAgICAgIG1tOiB0aGlzLm1ldHJpY1VuaXRzLFxyXG4gICAgICBpbmNoOiB7fSxcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgdW5pdHMgPSB7XHJcbiAgICBNZXRyaWM6IHRoaXMubWV0cmljVW5pdHMsXHJcbiAgICBJbXBlcmlhbDogdGhpcy5pbXBlcmlhbFVuaXRzLFxyXG4gIH07XHJcblxyXG4gIHNldEFtYmllbnRPY2NsdXNpb25PcHRpb25zKCkge1xyXG4gICAgaWYgKCF0aGlzLnZpZXdwb3J0KSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZpZXdwb3J0T2NjbHVzaW9uRGF0YSA9IHtcclxuICAgICAgdXNhZ2U6IGZhbHNlLFxyXG4gICAgICB1c2FnZUZvckludGVyYWN0aW9uOiBmYWxzZSxcclxuICAgICAgdXNlU2hhZG93czogZmFsc2UsXHJcbiAgICAgIHVzZVNoYWRvd3NGb3JJbnRlcmFjdGlvbjogZmFsc2UsXHJcbiAgICAgIGxpZ2h0Um90YXRpb246IE1hdGguUEkgKiAzNS4wMCAvIDE4MC4wLFxyXG4gICAgICBsaWdodEVsZXZhdGlvbjogTWF0aC5QSSAqIDUwLjAwIC8gMTgwLjAsXHJcbiAgICAgIGxpZ2h0Q29sb3I6IG5ldyBUSFJFRS5Db2xvcigxLjAsIDEuMCwgMS4wKSxcclxuICAgICAgYW1iaWVudExpZ2h0Q29sb3I6IG5ldyBUSFJFRS5Db2xvcigwLjYsIDAuNiwgMC42KSxcclxuICAgIH07XHJcbiAgICB0aGlzLnZpZXdwb3J0LnNldEFtYmllbnRPY2NsdXNpb25PcHRpb25zKHZpZXdwb3J0T2NjbHVzaW9uRGF0YSk7XHJcbiAgfVxyXG5cclxuICBzZXRCYWNrZ3JvdW5kT3B0aW9ucygpIHtcclxuICAgIGlmICghdGhpcy52aWV3cG9ydCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkYXlTa3lCYWNrZ3JvdW5kU2V0dGluZyA9IHtcclxuICAgICAgbmFtZTogXCJkYXkgc2t5XCIsXHJcbiAgICAgIGFtYmllbnRMaWdodENvbG9yOiAweDg2ODY4NixcclxuICAgICAgYmFja2dyb3VuZFR5cGU6IFJlbmRlcmVyLkJhY2tncm91bmQuQmFja2dyb3VuZFR5cGVfTGluZWFyR3JhZGllbnQsXHJcbiAgICAgIGJhY2tncm91bmRQYXJhbXM6IHtcclxuICAgICAgICBhbHBoYTogMS4wLFxyXG4gICAgICAgIGNvbG9yU3RvcHM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb2Zmc2V0OiAwLjAsXHJcbiAgICAgICAgICAgIGNvbG9yOiBcIiM4N0NERTlcIlxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb2Zmc2V0OiAwLjUxMDQsXHJcbiAgICAgICAgICAgIGNvbG9yOiBcIiNEREVERkVcIlxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb2Zmc2V0OiAwLjk2MzUsXHJcbiAgICAgICAgICAgIGNvbG9yOiBcIiNEM0QzRDRcIlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMudmlld3BvcnQuc2V0QmFja2dyb3VuZChkYXlTa3lCYWNrZ3JvdW5kU2V0dGluZy5iYWNrZ3JvdW5kVHlwZSwgZGF5U2t5QmFja2dyb3VuZFNldHRpbmcuYmFja2dyb3VuZFBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBzZXRIb3Zlck9wdGlvbih1c2VIb3ZlckVmZmVjdDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGlmICghdGhpcy52aWV3cG9ydCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIHRoaXMudmlld3BvcnQuc2V0VXNlSG92ZXJFZmZlY3QodXNlSG92ZXJFZmZlY3QpO1xyXG4gIH1cclxuXHJcbiAgaW5pdFJlbmRlcmVyKCkge1xyXG4gICAgdGhpcy52aWV3cG9ydCA9IG5ldyBSZW5kZXJlci5WaWV3cG9ydDNEKHtcclxuICAgICAgc2V0dGluZ3M6IHRoaXMudmlld3BvcnRTZXR0aW5ncyxcclxuICAgICAgdW5pdHM6IHRoaXMudW5pdHMuTWV0cmljLFxyXG4gICAgICBkb21FbGVtZW50SWQ6IFwiXCIsXHJcbiAgICAgIEdQVVBpY2s6IHRydWUsXHJcbiAgICAgIGFwaTogdGhpcy5hcGkgYXMgV2ViU2RrLkFwaSxcclxuICAgICAgbmFtZTogXCJvYmplY3RQcmV2aWV3UmVuZGVyZXJWaWV3cG9ydFwiLFxyXG4gICAgICBsb29rdXBUZXh0dXJlU2l6ZTogMzIsXHJcbiAgICAgIHNzYW9TdXBwb3J0ZWQ6IGZhbHNlLCAvLyBEaXNhYmxlIFNTQU8gc3VwcG9ydCBmb3Igb2JqZWN0IGRldGFpbHMgd2luZG93XHJcbiAgICAgIHNoYWRvd3NTdXBwb3J0ZWQ6IGZhbHNlLFxyXG4gICAgICBwYW5uaW5nU2NhbGVGYWN0b3I6IDQuMCwgLy9JbiBjYXNlIG9mIHByZXZpZXcgd2luZG93IHVzZSBiaWdnZXIgcGFubmluZyBzY2FsZSBmYWN0b3JcclxuICAgICAgY29tbWFuZFBvbGljaWVzOiB7XHJcbiAgICAgICAgQ29tbWFuZFNlbGVjdDoge1xyXG4gICAgICAgICAgbm9CdWJibGU6IHRydWUsIC8vIERvbid0IGRvIGEgdXB3YXJkcyBhY3RpdmF0aW9uXHJcbiAgICAgICAgICBub1RyYXZlcnNlOiB0cnVlIC8vIERvbid0IGRvIGEgZG93bndhcmRzIGFjdGl2YXRpb25cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2V0QW1iaWVudE9jY2x1c2lvbk9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2V0QmFja2dyb3VuZE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2V0SG92ZXJPcHRpb24oKTtcclxuICAgIHRoaXMudmlld3BvcnQuZHJhdygpO1xyXG5cclxuICAgIGlmICh0aGlzLnZpZXdwb3J0Py5kb21FbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ/LnNoYWRvd1Jvb3QgfHwgdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBuYXRpdmVFbGVtZW50Py5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPy4oXCJyZW5kZXJlZC1wcmV2aWV3XCIpWzBdPy5hcHBlbmRDaGlsZD8uKHRoaXMudmlld3BvcnQuZG9tRWxlbWVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwibm8gZG9tIGVsZW1lbnQgcHJlc2VudCBmb3IgcmVuZGVyZXIhXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbk9iamVjdElkQ2hhbmdlZCgpIHtcclxuICAgIHRoaXMubG9hZE9iamVjdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkT2JqZWN0KCkge1xyXG4gICAgaWYgKCF0aGlzLmlzUmVuZGVyZXJJbml0aWFsaXplZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmNvbnRlbnRMb2FkZXIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImNvbnRlbnQgbG9hZGVyIGlzIG5vdCB0aGVyZSFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZygnbG9hZGluZyBvYmplY3QuLi4nKTtcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy52aWV3cG9ydD8ucmVzZXRWaWV3cG9ydCgpO1xyXG5cclxuICAgIGNvbnN0IHByb2plY3RDb250ZW50ID0gbnVsbDtcclxuICAgIHRoaXMuY29udGVudExvYWRlci5sb2FkT2JqZWN0KHRoaXMub2JqZWN0SWQgYXMgc3RyaW5nLCB0aGlzLnJldmlzaW9uLCBwcm9qZWN0Q29udGVudCkudGhlbigoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnJlY2FsY3VsYXRlUHJldmlld1NpemUoKTtcclxuXHJcbiAgICAgIHRoaXMudmlld3BvcnQ/LmRyYXcoKTsgLy8gVE9ETzogY2hlY2sgaWYgdGhpcyBpcyBuZWVkZWRcclxuXHJcbiAgICAgIHRoaXMudmlld3BvcnQ/Lnpvb21Ub09iamVjdHMoW3RoaXMub2JqZWN0SWQgYXMgc3RyaW5nXSk7XHJcblxyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyZW5kZXJlZC1wcmV2aWV3XCIgI3JlbmRlcmVydmlld3BvcnQ+XHJcbiAgQGlmIChpc0xvYWRpbmcpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLXNwaW5uZXItaWNvblwiIHRpdGxlPVwie3snX0xvYWRpbmdHZW9tZXRyeScgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXByZXZpZXcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LXByZXZpZXcvb2JqZWN0LXByZXZpZXcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFByZXZpZXdPYmplY3Qge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgdmlzaWJsZTogYm9vbGVhbjtcclxuICBvcGFxdWU6IGJvb2xlYW47XHJcbn0iXX0=