ngx-bimplus-components 0.0.160 → 0.0.162

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/assets/images/default/Attachment_18_gray.svg +1 -0
  2. package/assets/images/default/Attachment_18_maincolor.svg +3 -0
  3. package/assets/images/default/Attachmentlink_18_gray.svg +7 -0
  4. package/assets/images/default/Attachmentlink_18_maincolor.svg +7 -0
  5. package/assets/images/default/Calendar_18.svg +4 -0
  6. package/assets/images/default/Calendar_18_disabled.svg +1 -0
  7. package/assets/images/default/Calendar_18_gray.svg +1 -0
  8. package/assets/images/default/Comments_18_gray.svg +1 -0
  9. package/assets/images/default/Comments_18_maincolor.svg +4 -0
  10. package/assets/images/default/Links_18_gray.svg +1 -0
  11. package/assets/images/default/Links_18_maincolor.svg +4 -0
  12. package/assets/images/default/Refresh_18_gray.svg +1 -0
  13. package/assets/images/default/bimplus_WebIcons_Cross_Disabled.svg +1 -0
  14. package/assets/images/default/ic_models.svg +3 -0
  15. package/assets/images/default/ic_models_maincolor.svg +3 -0
  16. package/assets/images/default/icn_grid_attachments.png +0 -0
  17. package/assets/images/default/icn_grid_hyperlinks.png +0 -0
  18. package/assets/images/default/progress-spinner.svg +1 -0
  19. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.component.mjs +114 -0
  20. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.interface.mjs +38 -0
  21. package/esm2022/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.mjs +95 -0
  22. package/esm2022/lib/components/bimplus-attachments/services/bimplus-attachments.service.mjs +32 -0
  23. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +40 -5
  24. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.mjs +5 -2
  25. package/esm2022/lib/components/bimplus-comment/IComment.mjs +2 -0
  26. package/esm2022/lib/components/bimplus-comment/bimplus-comment.component.mjs +118 -0
  27. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +5 -5
  28. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +3 -3
  29. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +115 -7
  30. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.mjs +1 -1
  31. package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +1 -1
  32. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.mjs +1 -1
  33. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.mjs +3 -3
  34. package/esm2022/lib/components/bimplus-input-checkbox/bimplus-input-checkbox.component.mjs +64 -0
  35. package/esm2022/lib/components/bimplus-input-combobox/bimplus-input-combobox.component.mjs +161 -0
  36. package/esm2022/lib/components/bimplus-input-date/bimplus-input-date.component.mjs +271 -0
  37. package/esm2022/lib/components/bimplus-input-number/bimplus-input-number.component.mjs +85 -0
  38. package/esm2022/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.mjs +92 -0
  39. package/esm2022/lib/components/bimplus-link-tooltip-message/bimplus-link-tooltip-message.component.mjs +78 -0
  40. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.mjs +388 -0
  41. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.interface.mjs +3 -0
  42. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.mjs +104 -0
  43. package/esm2022/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.mjs +2 -0
  44. package/esm2022/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.mjs +3 -3
  45. package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +6 -3
  46. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +3 -3
  47. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.mjs +1 -1
  48. package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +3 -3
  49. package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.component.mjs +42 -4
  50. package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.interface.mjs +4 -2
  51. package/esm2022/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.mjs +77 -0
  52. package/esm2022/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.mjs +83 -0
  53. package/esm2022/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.mjs +31 -8
  54. package/esm2022/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.mjs +34 -8
  55. package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +1 -1
  56. package/esm2022/lib/components/bimplus-status-bar/bimplus-status-bar.component.mjs +35 -0
  57. package/esm2022/lib/components/bimplus-status-bar/bimplus-status-bar.service.mjs +35 -0
  58. package/esm2022/lib/components/bimplus-status-bar/statusBar.mjs +2 -0
  59. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.mjs +38 -0
  60. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.mjs +10 -0
  61. package/esm2022/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.mjs +89 -0
  62. package/esm2022/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.mjs +33 -0
  63. package/esm2022/lib/components/bimplus-textarea/autoResizeTextarea.directive.mjs +83 -0
  64. package/esm2022/lib/components/bimplus-textarea/bimplus-textarea.component.mjs +128 -0
  65. package/esm2022/lib/components/links-to-documents/links-to-documents.component.mjs +376 -0
  66. package/esm2022/lib/components/object-hyperlinks/object-hyperlinks.component.mjs +145 -0
  67. package/esm2022/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.mjs +36 -0
  68. package/esm2022/lib/components/object-preview/object-preview.component.mjs +284 -0
  69. package/esm2022/lib/components/object-preview/object-preview.interface.mjs +2 -0
  70. package/esm2022/lib/components/object-properties/object-properties.component.mjs +545 -0
  71. package/esm2022/lib/components/object-properties/object-properties.interface.mjs +2 -0
  72. package/esm2022/lib/components/object-properties/object-properties.service.mjs +26 -0
  73. package/esm2022/lib/components/object-properties-group/object-properties-group.component.mjs +129 -0
  74. package/esm2022/lib/components/object-properties-group/object-property-value/object-property-value.component.mjs +55 -0
  75. package/esm2022/lib/components/object-properties-header/object-properties-header.component.mjs +48 -6
  76. package/esm2022/lib/components/object-properties-header/object-properties-header.interface.mjs +1 -1
  77. package/esm2022/lib/components/resizable-panel/resizable-panel.component.mjs +54 -10
  78. package/esm2022/lib/pipes/bit-converter.pipe.mjs +46 -0
  79. package/esm2022/lib/pipes/get-attribute-value-as-string.pipe.mjs +173 -0
  80. package/esm2022/lib/pipes/get-attribute-value.pipe.mjs +156 -0
  81. package/esm2022/lib/pipes/round.pipe.mjs +20 -0
  82. package/esm2022/lib/services/decorators.service.mjs +65 -0
  83. package/esm2022/lib/utils/objectProperties.mjs +9 -0
  84. package/esm2022/lib/validators/double-enum.validator.mjs +20 -0
  85. package/esm2022/lib/validators/double.validator.mjs +23 -0
  86. package/esm2022/lib/validators/guid-enum.validator.mjs +20 -0
  87. package/esm2022/lib/validators/guid.validator.mjs +14 -0
  88. package/esm2022/lib/validators/integer.validator.mjs +23 -0
  89. package/esm2022/lib/validators/string-combobox.validator.mjs +20 -0
  90. package/esm2022/lib/validators/string-enum.validator.mjs +20 -0
  91. package/esm2022/public-api.mjs +22 -1
  92. package/fesm2022/ngx-bimplus-components.mjs +4618 -80
  93. package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
  94. package/lib/components/bimplus-attachments/bimplus-attachments.component.d.ts +39 -0
  95. package/lib/components/bimplus-attachments/bimplus-attachments.interface.d.ts +33 -0
  96. package/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.d.ts +30 -0
  97. package/lib/components/bimplus-attachments/services/bimplus-attachments.service.d.ts +8 -0
  98. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.d.ts +14 -3
  99. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.d.ts +7 -1
  100. package/lib/components/bimplus-comment/IComment.d.ts +4 -0
  101. package/lib/components/bimplus-comment/bimplus-comment.component.d.ts +39 -0
  102. package/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.d.ts +16 -3
  103. package/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.d.ts +4 -0
  104. package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +1 -1
  105. package/lib/components/bimplus-general-overlay-dialog/bimplus-general-dialog-config-settings.d.ts +3 -3
  106. package/lib/components/bimplus-input-checkbox/bimplus-input-checkbox.component.d.ts +18 -0
  107. package/lib/components/bimplus-input-combobox/bimplus-input-combobox.component.d.ts +41 -0
  108. package/lib/components/bimplus-input-date/bimplus-input-date.component.d.ts +46 -0
  109. package/lib/components/bimplus-input-number/bimplus-input-number.component.d.ts +26 -0
  110. package/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.d.ts +28 -0
  111. package/lib/components/bimplus-link-tooltip-message/bimplus-link-tooltip-message.component.d.ts +22 -0
  112. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.d.ts +88 -0
  113. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.interface.d.ts +10 -0
  114. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.service.d.ts +20 -0
  115. package/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.d.ts +11 -0
  116. package/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.d.ts +2 -1
  117. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.d.ts +12 -12
  118. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.d.ts +3 -3
  119. package/lib/components/bimplus-object-structure/bimplus-object-structure.component.d.ts +5 -1
  120. package/lib/components/bimplus-object-structure/bimplus-object-structure.interface.d.ts +2 -0
  121. package/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.d.ts +29 -0
  122. package/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.d.ts +24 -0
  123. package/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.d.ts +8 -1
  124. package/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.d.ts +11 -1
  125. package/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.d.ts +1 -1
  126. package/lib/components/bimplus-status-bar/bimplus-status-bar.component.d.ts +14 -0
  127. package/lib/components/bimplus-status-bar/bimplus-status-bar.service.d.ts +14 -0
  128. package/lib/components/bimplus-status-bar/statusBar.d.ts +4 -0
  129. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.d.ts +16 -0
  130. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.d.ts +18 -0
  131. package/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.d.ts +36 -0
  132. package/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.d.ts +15 -0
  133. package/lib/components/bimplus-textarea/autoResizeTextarea.directive.d.ts +24 -0
  134. package/lib/components/bimplus-textarea/bimplus-textarea.component.d.ts +42 -0
  135. package/lib/components/links-to-documents/links-to-documents.component.d.ts +69 -0
  136. package/lib/components/object-hyperlinks/object-hyperlinks.component.d.ts +32 -0
  137. package/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.d.ts +15 -0
  138. package/lib/components/object-preview/object-preview.component.d.ts +45 -0
  139. package/lib/components/object-preview/object-preview.interface.d.ts +5 -0
  140. package/lib/components/object-properties/object-properties.component.d.ts +79 -0
  141. package/lib/components/object-properties/object-properties.interface.d.ts +22 -0
  142. package/lib/components/object-properties/object-properties.service.d.ts +12 -0
  143. package/lib/components/object-properties-group/object-properties-group.component.d.ts +30 -0
  144. package/lib/components/object-properties-group/object-property-value/object-property-value.component.d.ts +14 -0
  145. package/lib/components/object-properties-header/object-properties-header.component.d.ts +13 -4
  146. package/lib/components/object-properties-header/object-properties-header.interface.d.ts +8 -0
  147. package/lib/components/resizable-panel/resizable-panel.component.d.ts +12 -3
  148. package/lib/pipes/bit-converter.pipe.d.ts +17 -0
  149. package/lib/pipes/get-attribute-value-as-string.pipe.d.ts +35 -0
  150. package/lib/pipes/get-attribute-value.pipe.d.ts +35 -0
  151. package/lib/pipes/round.pipe.d.ts +7 -0
  152. package/lib/services/decorators.service.d.ts +12 -0
  153. package/lib/utils/objectProperties.d.ts +2 -0
  154. package/lib/validators/double-enum.validator.d.ts +2 -0
  155. package/lib/validators/double.validator.d.ts +2 -0
  156. package/lib/validators/guid-enum.validator.d.ts +2 -0
  157. package/lib/validators/guid.validator.d.ts +2 -0
  158. package/lib/validators/integer.validator.d.ts +2 -0
  159. package/lib/validators/string-combobox.validator.d.ts +2 -0
  160. package/lib/validators/string-enum.validator.d.ts +2 -0
  161. package/package.json +14 -4
  162. package/public-api.d.ts +21 -0
@@ -1,4 +1,4 @@
1
- import { Component, ViewEncapsulation, Input } from '@angular/core';
1
+ import { Component, ViewEncapsulation, Input, HostListener } from '@angular/core';
2
2
  import { XDraggableDirective } from '../../directives/x-draggable.directive';
3
3
  import { PxsuffixPipe } from '../../pipes/pxsuffix.pipe';
4
4
  import { CommonModule } from '@angular/common';
@@ -6,35 +6,79 @@ import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/common";
7
7
  export class ResizablePanelComponent {
8
8
  constructor() {
9
- this.position = "right";
9
+ this.position = 'right';
10
10
  this.hasDraggableHandle = false;
11
11
  this.hasDraggableBorder = false;
12
- this.drawerWidth = 300;
12
+ this.minWidth = 350;
13
+ this.defaultWidth = 350;
14
+ // Function to determine if resizing is allowed
15
+ this.canResize = () => true;
16
+ this.drawerWidth = this.defaultWidth;
13
17
  this.drawerExpanded = true;
18
+ this.handleWindowResize = () => {
19
+ this.applyWidthConstraints();
20
+ };
21
+ }
22
+ ngOnInit() {
23
+ this.drawerWidth = this.defaultWidth;
24
+ window.addEventListener('resize', this.handleWindowResize);
25
+ }
26
+ ngOnDestroy() {
27
+ window.removeEventListener('resize', this.handleWindowResize);
28
+ }
29
+ applyWidthConstraints() {
30
+ const minWidth = typeof this.minWidth === 'function' ? this.minWidth() : this.minWidth;
31
+ const maxWidth = typeof this.maxWidth === 'function' ? this.maxWidth() : this.maxWidth;
32
+ if (minWidth && this.drawerWidth < minWidth) {
33
+ this.drawerWidth = minWidth;
34
+ }
35
+ else if (maxWidth && this.drawerWidth > maxWidth) {
36
+ this.drawerWidth = maxWidth;
37
+ }
14
38
  }
15
39
  _toggleDrawer() {
16
40
  this.drawerExpanded = !this.drawerExpanded;
41
+ if (!this.drawerExpanded) {
42
+ return;
43
+ }
44
+ this.applyWidthConstraints();
17
45
  }
18
46
  _onResizeWidth(event) {
19
47
  const deltaX = event;
20
- if (this.position === "left") {
21
- this.drawerWidth += deltaX;
48
+ let newWidth = this.drawerWidth;
49
+ if (this.position === 'left') {
50
+ newWidth += deltaX;
22
51
  }
23
- else if (this.position === "right") {
24
- this.drawerWidth -= deltaX;
52
+ else if (this.position === 'right') {
53
+ newWidth -= deltaX;
54
+ }
55
+ if (this.canResize?.(this.drawerWidth, deltaX) !== false) {
56
+ this.drawerWidth = newWidth;
57
+ this.applyWidthConstraints();
25
58
  }
26
59
  }
27
60
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ResizablePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: ResizablePanelComponent, isStandalone: true, selector: "lib-resizable-panel", inputs: { position: "position", hasDraggableHandle: "hasDraggableHandle", hasDraggableBorder: "hasDraggableBorder" }, ngImport: i0, template: "<div\r\n class=\"resizable-panel-drawer\"\r\n [style.width] = \"drawerWidth | pxsuffix\"\r\n [ngClass]=\"drawerExpanded ? '' : 'hidden'\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n>\r\n <slot></slot>\r\n @if (drawerExpanded) {\r\n @if (hasDraggableBorder) {\r\n <div\r\n xDraggable\r\n class=\"resizable-panel-resize-border\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n @if (hasDraggableHandle) {\r\n <div\r\n xDraggable\r\n class=\"resizable-panel-resize-handle\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n (clicked)=\"_toggleDrawer()\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n }\r\n</div>\r\n@if (!drawerExpanded) {\r\n @if (hasDraggableHandle) {\r\n <div\r\n class=\"resizable-panel-resize-handle collapsed\"\r\n (click)=\"_toggleDrawer()\"\r\n (keypress)=\"_toggleDrawer()\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n}\r\n", styles: [".noselect{-webkit-user-select:none;user-select:none}.resizable-panel-drawer.position-left.hidden,.resizable-panel-drawer.position-right.hidden{display:none}.resizable-panel-drawer.position-left{min-width:var(--resizable-panel-min-width, 1rem);height:100%;border:0 solid var(--sidenav-drawer-border-color-enabled);position:absolute;bottom:0;left:0;background-color:var(--sidenav-drawer-background-color-enabled);transition:background-color .7s;border-right:solid thin var(--sidenav-drawer-border-right-color-enabled);width:300px;display:flex;flex-direction:row}.resizable-panel-drawer.position-left:hover{background-color:var(--sidenav-drawer-background-color-hovered)}.resizable-panel-drawer.position-right{min-width:var(--resizable-panel-min-width, 1rem);height:100%;border:0 solid var(--sidenav-drawer-border-color-enabled);position:absolute;bottom:0;right:0;background-color:var(--sidenav-drawer-background-color-enabled);transition:background-color .7s;border-left:solid thin var(--sidenav-drawer-border-right-color-enabled);width:300px;display:flex;flex-direction:row}.resizable-panel-drawer.position-right:hover{background-color:var(--sidenav-drawer-background-color-hovered)}.resizable-panel-resize-border.position-left{right:-5px;position:absolute;height:100%;cursor:col-resize;width:5px;-webkit-user-select:none;user-select:none}.resizable-panel-resize-border.position-right{left:0;position:absolute;height:100%;cursor:col-resize;width:5px;-webkit-user-select:none;user-select:none}.resizable-panel-resize-handle.position-left{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M11.0104 0L2 9L11.0104 18L12.4246 16.5874L4.82843 9L12.4246 1.41258L11.0104 0Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A');position:absolute;top:calc(50% - 2.4rem);right:-2.1rem;width:2.1rem;height:4.8rem;border-radius:0 .4rem .4rem 0;background-color:var(--sidenav-resize-handle-left-background-color-enabled);cursor:pointer;pointer-events:all;background-position:center center;background-repeat:no-repeat;-webkit-user-select:none;user-select:none}.resizable-panel-resize-handle.position-right{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M11.0104 0L2 9L11.0104 18L12.4246 16.5874L4.82843 9L12.4246 1.41258L11.0104 0Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A');position:absolute;top:calc(50% - 2.4rem);left:-2.1rem;width:2.1rem;height:4.8rem;border-radius:.4rem 0 0 .4rem;background-color:var(--sidenav-resize-handle-left-background-color-enabled);cursor:pointer;pointer-events:all;background-position:center center;background-repeat:no-repeat;transform:rotate(180deg);-webkit-user-select:none;user-select:none}.resizable-panel-resize-handle.position-left.collapsed{left:0;border-radius:.4rem 0 0 .4rem;transform:rotate(180deg)}.resizable-panel-resize-handle.position-right.collapsed{left:calc(100% - 2.1rem);border-radius:0 .4rem .4rem 0;transform:rotate(0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: XDraggableDirective, selector: "[xDraggable]", outputs: ["dragging", "clicked"] }, { kind: "pipe", type: PxsuffixPipe, name: "pxsuffix" }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
61
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: ResizablePanelComponent, isStandalone: true, selector: "lib-resizable-panel", inputs: { position: "position", hasDraggableHandle: "hasDraggableHandle", hasDraggableBorder: "hasDraggableBorder", minWidth: "minWidth", maxWidth: "maxWidth", defaultWidth: "defaultWidth", canResize: "canResize" }, host: { listeners: { "window:resize": "handleWindowResize()" } }, ngImport: i0, template: "<div\r\n class=\"resizable-panel-drawer\"\r\n [style.width] = \"drawerWidth | pxsuffix\"\r\n [ngClass]=\"drawerExpanded ? '' : 'hidden'\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n>\r\n <slot></slot>\r\n @if (drawerExpanded) {\r\n @if (hasDraggableBorder) {\r\n <div\r\n xDraggable\r\n class=\"resizable-panel-resize-border\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n @if (hasDraggableHandle) {\r\n <div\r\n xDraggable\r\n class=\"resizable-panel-resize-handle\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n (clicked)=\"_toggleDrawer()\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n }\r\n</div>\r\n@if (!drawerExpanded) {\r\n @if (hasDraggableHandle) {\r\n <div\r\n class=\"resizable-panel-resize-handle collapsed\"\r\n (click)=\"_toggleDrawer()\"\r\n (keypress)=\"_toggleDrawer()\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n}\r\n", styles: [".noselect{-webkit-user-select:none;user-select:none}.resizable-panel-drawer.position-left.hidden,.resizable-panel-drawer.position-right.hidden{display:none}.resizable-panel-drawer.position-left{min-width:var(--resizable-panel-min-width, 1rem);height:100%;border:0 solid var(--sidenav-drawer-border-color-enabled);position:absolute;bottom:0;left:0;background-color:var(--sidenav-drawer-background-color-enabled);transition:background-color .7s;border-right:solid thin var(--sidenav-drawer-border-right-color-enabled);width:300px;display:flex;flex-direction:row}.resizable-panel-drawer.position-left:hover{background-color:var(--sidenav-drawer-background-color-hovered)}.resizable-panel-drawer.position-right{min-width:var(--resizable-panel-min-width, 1rem);height:100%;border:0 solid var(--sidenav-drawer-border-color-enabled);position:absolute;bottom:0;right:0;background-color:var(--sidenav-drawer-background-color-enabled);transition:background-color .7s;border-left:solid thin var(--sidenav-drawer-border-right-color-enabled);width:300px;display:flex;flex-direction:row}.resizable-panel-drawer.position-right:hover{background-color:var(--sidenav-drawer-background-color-hovered)}.resizable-panel-resize-border.position-left{right:-5px;position:absolute;height:100%;cursor:col-resize;width:5px;-webkit-user-select:none;user-select:none}.resizable-panel-resize-border.position-right{left:0;position:absolute;height:100%;cursor:col-resize;width:5px;-webkit-user-select:none;user-select:none}.resizable-panel-resize-handle.position-left{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M11.0104 0L2 9L11.0104 18L12.4246 16.5874L4.82843 9L12.4246 1.41258L11.0104 0Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A');position:absolute;top:calc(50% - 2.4rem);right:-2.1rem;width:2.1rem;height:4.8rem;border-radius:0 .4rem .4rem 0;background-color:var(--sidenav-resize-handle-left-background-color-enabled);cursor:pointer;pointer-events:all;background-position:center center;background-repeat:no-repeat;-webkit-user-select:none;user-select:none}.resizable-panel-resize-handle.position-right{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M11.0104 0L2 9L11.0104 18L12.4246 16.5874L4.82843 9L12.4246 1.41258L11.0104 0Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A');position:absolute;top:calc(50% - 2.4rem);left:-2.1rem;width:2.1rem;height:4.8rem;border-radius:0 .4rem .4rem 0;background-color:var(--sidenav-resize-handle-left-background-color-enabled);cursor:pointer;pointer-events:all;background-position:center center;background-repeat:no-repeat;transform:rotate(180deg);-webkit-user-select:none;user-select:none}.resizable-panel-resize-handle.position-left.collapsed{left:0;border-radius:.4rem 0 0 .4rem;transform:rotate(180deg)}.resizable-panel-resize-handle.position-right.collapsed{left:calc(100% - 2.1rem);border-radius:.4rem 0 0 .4rem;transform:rotate(0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: XDraggableDirective, selector: "[xDraggable]", outputs: ["dragging", "clicked"] }, { kind: "pipe", type: PxsuffixPipe, name: "pxsuffix" }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
29
62
  }
30
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ResizablePanelComponent, decorators: [{
31
64
  type: Component,
32
- args: [{ selector: 'lib-resizable-panel', standalone: true, imports: [CommonModule, XDraggableDirective, PxsuffixPipe], encapsulation: ViewEncapsulation.ShadowDom, template: "<div\r\n class=\"resizable-panel-drawer\"\r\n [style.width] = \"drawerWidth | pxsuffix\"\r\n [ngClass]=\"drawerExpanded ? '' : 'hidden'\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n>\r\n <slot></slot>\r\n @if (drawerExpanded) {\r\n @if (hasDraggableBorder) {\r\n <div\r\n xDraggable\r\n class=\"resizable-panel-resize-border\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n @if (hasDraggableHandle) {\r\n <div\r\n xDraggable\r\n class=\"resizable-panel-resize-handle\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n (clicked)=\"_toggleDrawer()\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n }\r\n</div>\r\n@if (!drawerExpanded) {\r\n @if (hasDraggableHandle) {\r\n <div\r\n class=\"resizable-panel-resize-handle collapsed\"\r\n (click)=\"_toggleDrawer()\"\r\n (keypress)=\"_toggleDrawer()\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n}\r\n", styles: [".noselect{-webkit-user-select:none;user-select:none}.resizable-panel-drawer.position-left.hidden,.resizable-panel-drawer.position-right.hidden{display:none}.resizable-panel-drawer.position-left{min-width:var(--resizable-panel-min-width, 1rem);height:100%;border:0 solid var(--sidenav-drawer-border-color-enabled);position:absolute;bottom:0;left:0;background-color:var(--sidenav-drawer-background-color-enabled);transition:background-color .7s;border-right:solid thin var(--sidenav-drawer-border-right-color-enabled);width:300px;display:flex;flex-direction:row}.resizable-panel-drawer.position-left:hover{background-color:var(--sidenav-drawer-background-color-hovered)}.resizable-panel-drawer.position-right{min-width:var(--resizable-panel-min-width, 1rem);height:100%;border:0 solid var(--sidenav-drawer-border-color-enabled);position:absolute;bottom:0;right:0;background-color:var(--sidenav-drawer-background-color-enabled);transition:background-color .7s;border-left:solid thin var(--sidenav-drawer-border-right-color-enabled);width:300px;display:flex;flex-direction:row}.resizable-panel-drawer.position-right:hover{background-color:var(--sidenav-drawer-background-color-hovered)}.resizable-panel-resize-border.position-left{right:-5px;position:absolute;height:100%;cursor:col-resize;width:5px;-webkit-user-select:none;user-select:none}.resizable-panel-resize-border.position-right{left:0;position:absolute;height:100%;cursor:col-resize;width:5px;-webkit-user-select:none;user-select:none}.resizable-panel-resize-handle.position-left{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M11.0104 0L2 9L11.0104 18L12.4246 16.5874L4.82843 9L12.4246 1.41258L11.0104 0Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A');position:absolute;top:calc(50% - 2.4rem);right:-2.1rem;width:2.1rem;height:4.8rem;border-radius:0 .4rem .4rem 0;background-color:var(--sidenav-resize-handle-left-background-color-enabled);cursor:pointer;pointer-events:all;background-position:center center;background-repeat:no-repeat;-webkit-user-select:none;user-select:none}.resizable-panel-resize-handle.position-right{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M11.0104 0L2 9L11.0104 18L12.4246 16.5874L4.82843 9L12.4246 1.41258L11.0104 0Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A');position:absolute;top:calc(50% - 2.4rem);left:-2.1rem;width:2.1rem;height:4.8rem;border-radius:.4rem 0 0 .4rem;background-color:var(--sidenav-resize-handle-left-background-color-enabled);cursor:pointer;pointer-events:all;background-position:center center;background-repeat:no-repeat;transform:rotate(180deg);-webkit-user-select:none;user-select:none}.resizable-panel-resize-handle.position-left.collapsed{left:0;border-radius:.4rem 0 0 .4rem;transform:rotate(180deg)}.resizable-panel-resize-handle.position-right.collapsed{left:calc(100% - 2.1rem);border-radius:0 .4rem .4rem 0;transform:rotate(0)}\n"] }]
65
+ args: [{ selector: 'lib-resizable-panel', standalone: true, imports: [CommonModule, XDraggableDirective, PxsuffixPipe], encapsulation: ViewEncapsulation.ShadowDom, template: "<div\r\n class=\"resizable-panel-drawer\"\r\n [style.width] = \"drawerWidth | pxsuffix\"\r\n [ngClass]=\"drawerExpanded ? '' : 'hidden'\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n>\r\n <slot></slot>\r\n @if (drawerExpanded) {\r\n @if (hasDraggableBorder) {\r\n <div\r\n xDraggable\r\n class=\"resizable-panel-resize-border\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n @if (hasDraggableHandle) {\r\n <div\r\n xDraggable\r\n class=\"resizable-panel-resize-handle\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n (clicked)=\"_toggleDrawer()\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n }\r\n</div>\r\n@if (!drawerExpanded) {\r\n @if (hasDraggableHandle) {\r\n <div\r\n class=\"resizable-panel-resize-handle collapsed\"\r\n (click)=\"_toggleDrawer()\"\r\n (keypress)=\"_toggleDrawer()\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n}\r\n", styles: [".noselect{-webkit-user-select:none;user-select:none}.resizable-panel-drawer.position-left.hidden,.resizable-panel-drawer.position-right.hidden{display:none}.resizable-panel-drawer.position-left{min-width:var(--resizable-panel-min-width, 1rem);height:100%;border:0 solid var(--sidenav-drawer-border-color-enabled);position:absolute;bottom:0;left:0;background-color:var(--sidenav-drawer-background-color-enabled);transition:background-color .7s;border-right:solid thin var(--sidenav-drawer-border-right-color-enabled);width:300px;display:flex;flex-direction:row}.resizable-panel-drawer.position-left:hover{background-color:var(--sidenav-drawer-background-color-hovered)}.resizable-panel-drawer.position-right{min-width:var(--resizable-panel-min-width, 1rem);height:100%;border:0 solid var(--sidenav-drawer-border-color-enabled);position:absolute;bottom:0;right:0;background-color:var(--sidenav-drawer-background-color-enabled);transition:background-color .7s;border-left:solid thin var(--sidenav-drawer-border-right-color-enabled);width:300px;display:flex;flex-direction:row}.resizable-panel-drawer.position-right:hover{background-color:var(--sidenav-drawer-background-color-hovered)}.resizable-panel-resize-border.position-left{right:-5px;position:absolute;height:100%;cursor:col-resize;width:5px;-webkit-user-select:none;user-select:none}.resizable-panel-resize-border.position-right{left:0;position:absolute;height:100%;cursor:col-resize;width:5px;-webkit-user-select:none;user-select:none}.resizable-panel-resize-handle.position-left{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M11.0104 0L2 9L11.0104 18L12.4246 16.5874L4.82843 9L12.4246 1.41258L11.0104 0Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A');position:absolute;top:calc(50% - 2.4rem);right:-2.1rem;width:2.1rem;height:4.8rem;border-radius:0 .4rem .4rem 0;background-color:var(--sidenav-resize-handle-left-background-color-enabled);cursor:pointer;pointer-events:all;background-position:center center;background-repeat:no-repeat;-webkit-user-select:none;user-select:none}.resizable-panel-resize-handle.position-right{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<path d=\"M11.0104 0L2 9L11.0104 18L12.4246 16.5874L4.82843 9L12.4246 1.41258L11.0104 0Z\" fill=\"%23444444\"/>%0D%0A</svg>%0D%0A');position:absolute;top:calc(50% - 2.4rem);left:-2.1rem;width:2.1rem;height:4.8rem;border-radius:0 .4rem .4rem 0;background-color:var(--sidenav-resize-handle-left-background-color-enabled);cursor:pointer;pointer-events:all;background-position:center center;background-repeat:no-repeat;transform:rotate(180deg);-webkit-user-select:none;user-select:none}.resizable-panel-resize-handle.position-left.collapsed{left:0;border-radius:.4rem 0 0 .4rem;transform:rotate(180deg)}.resizable-panel-resize-handle.position-right.collapsed{left:calc(100% - 2.1rem);border-radius:.4rem 0 0 .4rem;transform:rotate(0)}\n"] }]
33
66
  }], propDecorators: { position: [{
34
67
  type: Input
35
68
  }], hasDraggableHandle: [{
36
69
  type: Input
37
70
  }], hasDraggableBorder: [{
38
71
  type: Input
72
+ }], minWidth: [{
73
+ type: Input
74
+ }], maxWidth: [{
75
+ type: Input
76
+ }], defaultWidth: [{
77
+ type: Input
78
+ }], canResize: [{
79
+ type: Input
80
+ }], handleWindowResize: [{
81
+ type: HostListener,
82
+ args: ['window:resize']
39
83
  }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3Jlc2l6YWJsZS1wYW5lbC9yZXNpemFibGUtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvcmVzaXphYmxlLXBhbmVsL3Jlc2l6YWJsZS1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFVL0MsTUFBTSxPQUFPLHVCQUF1QjtJQVJwQztRQVNXLGFBQVEsR0FBc0IsT0FBTyxDQUFDO1FBQ3RDLHVCQUFrQixHQUFhLEtBQUssQ0FBQztRQUNyQyx1QkFBa0IsR0FBYSxLQUFLLENBQUM7UUFFOUMsZ0JBQVcsR0FBWSxHQUFHLENBQUM7UUFDM0IsbUJBQWMsR0FBYSxJQUFJLENBQUM7S0FnQmpDO0lBYkMsYUFBYTtRQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYztRQUMzQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBRyxJQUFJLENBQUMsUUFBUSxLQUFLLE1BQU0sRUFBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO1FBQzdCLENBQUM7YUFDSSxJQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7K0dBckJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLHFNQ2JwQyw4MENBNENBLDZqR0RwQ1ksWUFBWSw2SEFBRSxtQkFBbUIsc0ZBQUUsWUFBWTs7NEZBSzlDLHVCQUF1QjtrQkFSbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxpQkFHM0MsaUJBQWlCLENBQUMsU0FBUzs4QkFHakMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWERyYWdnYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMveC1kcmFnZ2FibGUuZGlyZWN0aXZlJ1xyXG5pbXBvcnQgeyBQeHN1ZmZpeFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9weHN1ZmZpeC5waXBlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXJlc2l6YWJsZS1wYW5lbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBYRHJhZ2dhYmxlRGlyZWN0aXZlLCBQeHN1ZmZpeFBpcGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXNpemFibGUtcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9yZXNpemFibGUtcGFuZWwuY29tcG9uZW50Lmxlc3MnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzaXphYmxlUGFuZWxDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHBvc2l0aW9uIDogXCJsZWZ0XCIgfCBcInJpZ2h0XCIgPSBcInJpZ2h0XCI7XHJcbiAgQElucHV0KCkgaGFzRHJhZ2dhYmxlSGFuZGxlIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhhc0RyYWdnYWJsZUJvcmRlciA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZHJhd2VyV2lkdGggOiBudW1iZXIgPSAzMDA7XHJcbiAgZHJhd2VyRXhwYW5kZWQgOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblxyXG4gIF90b2dnbGVEcmF3ZXIoKXtcclxuICAgIHRoaXMuZHJhd2VyRXhwYW5kZWQgPSAhdGhpcy5kcmF3ZXJFeHBhbmRlZDtcclxuICB9XHJcbiAgXHJcbiAgX29uUmVzaXplV2lkdGgoZXZlbnQgOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRlbHRhWCA9IGV2ZW50O1xyXG4gICAgaWYodGhpcy5wb3NpdGlvbiA9PT0gXCJsZWZ0XCIpe1xyXG4gICAgICB0aGlzLmRyYXdlcldpZHRoICs9IGRlbHRhWDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5wb3NpdGlvbiA9PT0gXCJyaWdodFwiKXtcclxuICAgICAgdGhpcy5kcmF3ZXJXaWR0aCAtPSBkZWx0YVg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cInJlc2l6YWJsZS1wYW5lbC1kcmF3ZXJcIlxyXG4gIFtzdHlsZS53aWR0aF0gPSBcImRyYXdlcldpZHRoIHwgcHhzdWZmaXhcIlxyXG4gIFtuZ0NsYXNzXT1cImRyYXdlckV4cGFuZGVkID8gJycgOiAnaGlkZGVuJ1wiXHJcbiAgW2NsYXNzLnBvc2l0aW9uLXJpZ2h0XT1cInBvc2l0aW9uID09PSAncmlnaHQnXCJcclxuICBbY2xhc3MucG9zaXRpb24tbGVmdF09XCJwb3NpdGlvbiA9PT0gJ2xlZnQnXCJcclxuPlxyXG4gIDxzbG90Pjwvc2xvdD5cclxuICBAaWYgKGRyYXdlckV4cGFuZGVkKSB7XHJcbiAgICBAaWYgKGhhc0RyYWdnYWJsZUJvcmRlcikge1xyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgeERyYWdnYWJsZVxyXG4gICAgICAgIGNsYXNzPVwicmVzaXphYmxlLXBhbmVsLXJlc2l6ZS1ib3JkZXJcIlxyXG4gICAgICAgIChkcmFnZ2luZyk9XCJfb25SZXNpemVXaWR0aCgkZXZlbnQpXCJcclxuICAgICAgICBbY2xhc3MucG9zaXRpb24tcmlnaHRdPVwicG9zaXRpb24gPT09ICdyaWdodCdcIlxyXG4gICAgICAgIFtjbGFzcy5wb3NpdGlvbi1sZWZ0XT1cInBvc2l0aW9uID09PSAnbGVmdCdcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGlmIChoYXNEcmFnZ2FibGVIYW5kbGUpIHtcclxuICAgICAgPGRpdlxyXG4gICAgICAgIHhEcmFnZ2FibGVcclxuICAgICAgICBjbGFzcz1cInJlc2l6YWJsZS1wYW5lbC1yZXNpemUtaGFuZGxlXCJcclxuICAgICAgICAoZHJhZ2dpbmcpPVwiX29uUmVzaXplV2lkdGgoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNsaWNrZWQpPVwiX3RvZ2dsZURyYXdlcigpXCJcclxuICAgICAgICBbY2xhc3MucG9zaXRpb24tcmlnaHRdPVwicG9zaXRpb24gPT09ICdyaWdodCdcIlxyXG4gICAgICAgIFtjbGFzcy5wb3NpdGlvbi1sZWZ0XT1cInBvc2l0aW9uID09PSAnbGVmdCdcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIH1cclxuPC9kaXY+XHJcbkBpZiAoIWRyYXdlckV4cGFuZGVkKSB7XHJcbiAgQGlmIChoYXNEcmFnZ2FibGVIYW5kbGUpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJyZXNpemFibGUtcGFuZWwtcmVzaXplLWhhbmRsZSBjb2xsYXBzZWRcIlxyXG4gICAgICAoY2xpY2spPVwiX3RvZ2dsZURyYXdlcigpXCJcclxuICAgICAgKGtleXByZXNzKT1cIl90b2dnbGVEcmF3ZXIoKVwiXHJcbiAgICAgIFtjbGFzcy5wb3NpdGlvbi1yaWdodF09XCJwb3NpdGlvbiA9PT0gJ3JpZ2h0J1wiXHJcbiAgICAgIFtjbGFzcy5wb3NpdGlvbi1sZWZ0XT1cInBvc2l0aW9uID09PSAnbGVmdCdcIlxyXG4gICAgPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG59XHJcbiJdfQ==
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3Jlc2l6YWJsZS1wYW5lbC9yZXNpemFibGUtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvcmVzaXphYmxlLXBhbmVsL3Jlc2l6YWJsZS1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBcUIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVUvQyxNQUFNLE9BQU8sdUJBQXVCO0lBUnBDO1FBU1csYUFBUSxHQUFxQixPQUFPLENBQUM7UUFDckMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyxhQUFRLEdBQXdDLEdBQUcsQ0FBQztRQUVwRCxpQkFBWSxHQUFXLEdBQUcsQ0FBQztRQUNwQywrQ0FBK0M7UUFDdEMsY0FBUyxHQUFzRCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFFbkYsZ0JBQVcsR0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3hDLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBdUIvQix1QkFBa0IsR0FBRyxHQUFTLEVBQUU7WUFDOUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDO0tBMkJIO0lBbERDLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDckMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLFFBQVEsR0FBRyxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkYsTUFBTSxRQUFRLEdBQUcsT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRXZGLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDOUIsQ0FBQzthQUFNLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFPRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYTtRQUMxQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFckIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNoQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDN0IsUUFBUSxJQUFJLE1BQU0sQ0FBQztRQUNyQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3JDLFFBQVEsSUFBSSxNQUFNLENBQUM7UUFDckIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7WUFFNUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7K0dBOURVLHVCQUF1QjttR0FBdkIsdUJBQXVCLHlXQ2JwQyw4MENBNENBLDZqR0RwQ1ksWUFBWSw2SEFBRSxtQkFBbUIsc0ZBQUUsWUFBWTs7NEZBSzlDLHVCQUF1QjtrQkFSbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxpQkFHM0MsaUJBQWlCLENBQUMsU0FBUzs4QkFHakMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBMEJOLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWERyYWdnYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMveC1kcmFnZ2FibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUHhzdWZmaXhQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvcHhzdWZmaXgucGlwZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1yZXNpemFibGUtcGFuZWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgWERyYWdnYWJsZURpcmVjdGl2ZSwgUHhzdWZmaXhQaXBlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzaXphYmxlLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcmVzaXphYmxlLXBhbmVsLmNvbXBvbmVudC5sZXNzJyxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5TaGFkb3dEb20sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXNpemFibGVQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBwb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdyaWdodCc7XHJcbiAgQElucHV0KCkgaGFzRHJhZ2dhYmxlSGFuZGxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGFzRHJhZ2dhYmxlQm9yZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbWluV2lkdGg6IG51bWJlciB8ICgoKSA9PiBudW1iZXIpIHwgdW5kZWZpbmVkID0gMzUwO1xyXG4gIEBJbnB1dCgpIG1heFdpZHRoOiBudW1iZXIgfCAoKCkgPT4gbnVtYmVyKSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBkZWZhdWx0V2lkdGg6IG51bWJlciA9IDM1MDtcclxuICAvLyBGdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgcmVzaXppbmcgaXMgYWxsb3dlZFxyXG4gIEBJbnB1dCgpIGNhblJlc2l6ZTogKGN1cnJlbnRXaWR0aDogbnVtYmVyLCBkZWx0YVg6IG51bWJlcikgPT4gYm9vbGVhbiA9ICgpID0+IHRydWU7XHJcblxyXG4gIGRyYXdlcldpZHRoOiBudW1iZXIgPSB0aGlzLmRlZmF1bHRXaWR0aDtcclxuICBkcmF3ZXJFeHBhbmRlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5kcmF3ZXJXaWR0aCA9IHRoaXMuZGVmYXVsdFdpZHRoO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplKTtcclxuICB9XHJcblxyXG4gIGFwcGx5V2lkdGhDb25zdHJhaW50cygpIHtcclxuICAgIGNvbnN0IG1pbldpZHRoID0gdHlwZW9mIHRoaXMubWluV2lkdGggPT09ICdmdW5jdGlvbicgPyB0aGlzLm1pbldpZHRoKCkgOiB0aGlzLm1pbldpZHRoO1xyXG4gICAgY29uc3QgbWF4V2lkdGggPSB0eXBlb2YgdGhpcy5tYXhXaWR0aCA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMubWF4V2lkdGgoKSA6IHRoaXMubWF4V2lkdGg7XHJcblxyXG4gICAgaWYgKG1pbldpZHRoICYmIHRoaXMuZHJhd2VyV2lkdGggPCBtaW5XaWR0aCkge1xyXG4gICAgICB0aGlzLmRyYXdlcldpZHRoID0gbWluV2lkdGg7XHJcbiAgICB9IGVsc2UgaWYgKG1heFdpZHRoICYmIHRoaXMuZHJhd2VyV2lkdGggPiBtYXhXaWR0aCkge1xyXG4gICAgICB0aGlzLmRyYXdlcldpZHRoID0gbWF4V2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcclxuICBoYW5kbGVXaW5kb3dSZXNpemUgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLmFwcGx5V2lkdGhDb25zdHJhaW50cygpO1xyXG4gIH07XHJcblxyXG4gIF90b2dnbGVEcmF3ZXIoKSB7XHJcbiAgICB0aGlzLmRyYXdlckV4cGFuZGVkID0gIXRoaXMuZHJhd2VyRXhwYW5kZWQ7XHJcbiAgICBpZiAoIXRoaXMuZHJhd2VyRXhwYW5kZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwbHlXaWR0aENvbnN0cmFpbnRzKCk7XHJcbiAgfVxyXG5cclxuICBfb25SZXNpemVXaWR0aChldmVudDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZWx0YVggPSBldmVudDtcclxuXHJcbiAgICBsZXQgbmV3V2lkdGggPSB0aGlzLmRyYXdlcldpZHRoO1xyXG4gICAgaWYgKHRoaXMucG9zaXRpb24gPT09ICdsZWZ0Jykge1xyXG4gICAgICBuZXdXaWR0aCArPSBkZWx0YVg7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucG9zaXRpb24gPT09ICdyaWdodCcpIHtcclxuICAgICAgbmV3V2lkdGggLT0gZGVsdGFYO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNhblJlc2l6ZT8uKHRoaXMuZHJhd2VyV2lkdGgsIGRlbHRhWCkgIT09IGZhbHNlKSB7XHJcbiAgICAgIHRoaXMuZHJhd2VyV2lkdGggPSBuZXdXaWR0aDtcclxuXHJcbiAgICAgIHRoaXMuYXBwbHlXaWR0aENvbnN0cmFpbnRzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cInJlc2l6YWJsZS1wYW5lbC1kcmF3ZXJcIlxyXG4gIFtzdHlsZS53aWR0aF0gPSBcImRyYXdlcldpZHRoIHwgcHhzdWZmaXhcIlxyXG4gIFtuZ0NsYXNzXT1cImRyYXdlckV4cGFuZGVkID8gJycgOiAnaGlkZGVuJ1wiXHJcbiAgW2NsYXNzLnBvc2l0aW9uLXJpZ2h0XT1cInBvc2l0aW9uID09PSAncmlnaHQnXCJcclxuICBbY2xhc3MucG9zaXRpb24tbGVmdF09XCJwb3NpdGlvbiA9PT0gJ2xlZnQnXCJcclxuPlxyXG4gIDxzbG90Pjwvc2xvdD5cclxuICBAaWYgKGRyYXdlckV4cGFuZGVkKSB7XHJcbiAgICBAaWYgKGhhc0RyYWdnYWJsZUJvcmRlcikge1xyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgeERyYWdnYWJsZVxyXG4gICAgICAgIGNsYXNzPVwicmVzaXphYmxlLXBhbmVsLXJlc2l6ZS1ib3JkZXJcIlxyXG4gICAgICAgIChkcmFnZ2luZyk9XCJfb25SZXNpemVXaWR0aCgkZXZlbnQpXCJcclxuICAgICAgICBbY2xhc3MucG9zaXRpb24tcmlnaHRdPVwicG9zaXRpb24gPT09ICdyaWdodCdcIlxyXG4gICAgICAgIFtjbGFzcy5wb3NpdGlvbi1sZWZ0XT1cInBvc2l0aW9uID09PSAnbGVmdCdcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgQGlmIChoYXNEcmFnZ2FibGVIYW5kbGUpIHtcclxuICAgICAgPGRpdlxyXG4gICAgICAgIHhEcmFnZ2FibGVcclxuICAgICAgICBjbGFzcz1cInJlc2l6YWJsZS1wYW5lbC1yZXNpemUtaGFuZGxlXCJcclxuICAgICAgICAoZHJhZ2dpbmcpPVwiX29uUmVzaXplV2lkdGgoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNsaWNrZWQpPVwiX3RvZ2dsZURyYXdlcigpXCJcclxuICAgICAgICBbY2xhc3MucG9zaXRpb24tcmlnaHRdPVwicG9zaXRpb24gPT09ICdyaWdodCdcIlxyXG4gICAgICAgIFtjbGFzcy5wb3NpdGlvbi1sZWZ0XT1cInBvc2l0aW9uID09PSAnbGVmdCdcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIH1cclxuPC9kaXY+XHJcbkBpZiAoIWRyYXdlckV4cGFuZGVkKSB7XHJcbiAgQGlmIChoYXNEcmFnZ2FibGVIYW5kbGUpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJyZXNpemFibGUtcGFuZWwtcmVzaXplLWhhbmRsZSBjb2xsYXBzZWRcIlxyXG4gICAgICAoY2xpY2spPVwiX3RvZ2dsZURyYXdlcigpXCJcclxuICAgICAgKGtleXByZXNzKT1cIl90b2dnbGVEcmF3ZXIoKVwiXHJcbiAgICAgIFtjbGFzcy5wb3NpdGlvbi1yaWdodF09XCJwb3NpdGlvbiA9PT0gJ3JpZ2h0J1wiXHJcbiAgICAgIFtjbGFzcy5wb3NpdGlvbi1sZWZ0XT1cInBvc2l0aW9uID09PSAnbGVmdCdcIlxyXG4gICAgPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,46 @@
1
+ import { DecimalPipe } from '@angular/common';
2
+ import { Pipe } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ const MB_SIZE = 1000;
5
+ export const BitConverterSize = {
6
+ KB: 'kB',
7
+ GB: 'gib',
8
+ MB: 'mb'
9
+ // more..
10
+ };
11
+ export class BitConverterPipe extends DecimalPipe {
12
+ transform(value, sizeToConvert = BitConverterSize.KB, digitsInfo = '1.2-2', base = MB_SIZE) {
13
+ if (!this.isNumber(value)) {
14
+ throw new Error('[BitConverterPipe]: value is not a number');
15
+ }
16
+ const size = this.getSizeFromBites(value, sizeToConvert, base);
17
+ let decimalValue = super.transform(size, digitsInfo);
18
+ decimalValue ??= value.toString();
19
+ return `(${decimalValue} ${sizeToConvert})`;
20
+ }
21
+ getSizeFromBites(value, size, base) {
22
+ switch (size) {
23
+ case 'kB':
24
+ return value / base;
25
+ case 'mb':
26
+ return value / (base * base);
27
+ case 'gib':
28
+ return value / (base * base * base);
29
+ default:
30
+ return value;
31
+ }
32
+ }
33
+ isNumber(value) {
34
+ return typeof value === 'number' && !isNaN(value);
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BitConverterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
37
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: BitConverterPipe, isStandalone: true, name: "bitConverter" }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BitConverterPipe, decorators: [{
40
+ type: Pipe,
41
+ args: [{
42
+ name: 'bitConverter',
43
+ standalone: true
44
+ }]
45
+ }] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0LWNvbnZlcnRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL3BpcGVzL2JpdC1jb252ZXJ0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBRXBELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQztBQUVyQixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxLQUFLO0lBQ1QsRUFBRSxFQUFFLElBQUk7SUFDUixTQUFTO0NBQ0gsQ0FBQztBQVFYLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUFXO0lBSXBDLFNBQVMsQ0FBQyxLQUFjLEVBQUUsZ0JBQTBCLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxhQUFxQixPQUFPLEVBQUUsT0FBZSxPQUFPO1FBQ2xJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvRCxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNyRCxZQUFZLEtBQUssS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWxDLE9BQU8sSUFBSSxZQUFZLElBQUksYUFBYSxHQUFHLENBQUM7SUFDaEQsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWEsRUFBRSxJQUFjLEVBQUUsSUFBWTtRQUNoRSxRQUFPLElBQUksRUFBRSxDQUFDO1lBQ1YsS0FBSyxJQUFJO2dCQUNMLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQztZQUN4QixLQUFLLElBQUk7Z0JBQ0wsT0FBTyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDakMsS0FBSyxLQUFLO2dCQUNOLE9BQU8sS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN4QztnQkFDSSxPQUFPLEtBQUssQ0FBQztRQUNyQixDQUFDO0lBQ0wsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFjO1FBQzNCLE9BQVEsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7K0dBOUJRLGdCQUFnQjs2R0FBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUo1QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxjQUFjO29CQUNwQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmNvbnN0IE1CX1NJWkUgPSAxMDAwO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJpdENvbnZlcnRlclNpemUgPSB7XHJcbiAgICBLQjogJ2tCJyxcclxuICAgIEdCOiAnZ2liJyxcclxuICAgIE1COiAnbWInXHJcbiAgICAvLyBtb3JlLi5cclxufSBhcyBjb25zdDtcclxuXHJcbnR5cGUgU2l6ZVR5cGUgPSB0eXBlb2YgQml0Q29udmVydGVyU2l6ZVsnR0InIHwgJ0tCJyB8ICdNQiddO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdiaXRDb252ZXJ0ZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEJpdENvbnZlcnRlclBpcGUgZXh0ZW5kcyBEZWNpbWFsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gICAgb3ZlcnJpZGUgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIGRpZ2l0c0luZm8/OiBzdHJpbmcsIGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB8IG51bGw7XHJcbiAgICBvdmVycmlkZSB0cmFuc2Zvcm0odmFsdWU6IG51bGwgfCB1bmRlZmluZWQsIGRpZ2l0c0luZm8/OiBzdHJpbmcsIGxvY2FsZT86IHN0cmluZyk6IG51bGw7XHJcbiAgICBvdmVycmlkZSB0cmFuc2Zvcm0odmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIGRpZ2l0c0luZm8/OiBzdHJpbmcsIGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB8IG51bGw7XHJcbiAgICBvdmVycmlkZSB0cmFuc2Zvcm0odmFsdWU6IHVua25vd24sIHNpemVUb0NvbnZlcnQ6IFNpemVUeXBlID0gQml0Q29udmVydGVyU2l6ZS5LQiwgZGlnaXRzSW5mbzogc3RyaW5nID0gJzEuMi0yJywgYmFzZTogbnVtYmVyID0gTUJfU0laRSk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGlmICghdGhpcy5pc051bWJlcih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdbQml0Q29udmVydGVyUGlwZV06IHZhbHVlIGlzIG5vdCBhIG51bWJlcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5nZXRTaXplRnJvbUJpdGVzKHZhbHVlLCBzaXplVG9Db252ZXJ0LCBiYXNlKTtcclxuICAgICAgICBsZXQgZGVjaW1hbFZhbHVlID0gc3VwZXIudHJhbnNmb3JtKHNpemUsIGRpZ2l0c0luZm8pO1xyXG4gICAgICAgIGRlY2ltYWxWYWx1ZSA/Pz0gdmFsdWUudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGAoJHtkZWNpbWFsVmFsdWV9ICR7c2l6ZVRvQ29udmVydH0pYDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFNpemVGcm9tQml0ZXModmFsdWU6IG51bWJlciwgc2l6ZTogU2l6ZVR5cGUsIGJhc2U6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgc3dpdGNoKHNpemUpIHtcclxuICAgICAgICAgICAgY2FzZSAna0InOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlIC8gYmFzZTtcclxuICAgICAgICAgICAgY2FzZSAnbWInOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlIC8gKGJhc2UgKiBiYXNlKTtcclxuICAgICAgICAgICAgY2FzZSAnZ2liJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAvIChiYXNlICogYmFzZSAqIGJhc2UpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzTnVtYmVyKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbHVlKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,173 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { RoundPipe } from './round.pipe';
3
+ import moment from 'moment';
4
+ import 'moment/min/locales';
5
+ import * as i0 from "@angular/core";
6
+ export class GetAttributeValueAsString {
7
+ constructor() {
8
+ const locale = window.navigator.language;
9
+ moment.locale(locale);
10
+ }
11
+ _transformDoubleToString(value) {
12
+ return new RoundPipe().transform(value.value, value.decimal || 2);
13
+ }
14
+ _transformDoubleEnumerationToString(value) {
15
+ if (!value.enumdefinition) {
16
+ return '';
17
+ }
18
+ const _retval = value.enumdefinition[Number(value.value)];
19
+ if (_retval) {
20
+ return `${_retval}`;
21
+ }
22
+ return '';
23
+ }
24
+ _transformDatetimeToString(value) {
25
+ const localeDate = moment(value.value).format('L');
26
+ if (localeDate) {
27
+ return localeDate;
28
+ }
29
+ return `${value.value}`;
30
+ }
31
+ _transformGUIDToString(value) {
32
+ return `${value.value}`;
33
+ }
34
+ _transformEnumerationToString(value) {
35
+ if (value.control && /^Enumeration$/i.test(value.control)) {
36
+ if (!value.enumdefinition) {
37
+ return '';
38
+ }
39
+ const _retVal = value.enumdefinition[Number(value.value)];
40
+ if (_retVal) {
41
+ return `${_retVal}`;
42
+ }
43
+ return '';
44
+ }
45
+ return `${value.value}`;
46
+ }
47
+ _transformGUIDEnumerationToString(value) {
48
+ return this._transformEnumerationToString(value);
49
+ }
50
+ _transformIntToString(value) {
51
+ return `${value.value}`;
52
+ }
53
+ _transformIntEnumerationToString(value) {
54
+ return this._transformEnumerationToString(value);
55
+ }
56
+ _transformString(value) {
57
+ return `${value.value}`;
58
+ }
59
+ _transformStringEnumeration(value) {
60
+ return this._transformEnumerationToString(value);
61
+ }
62
+ _transformStringCombobox(value) {
63
+ if (value.control && /^Combobox$/i.test(value.control)) {
64
+ return `${value.value}`;
65
+ }
66
+ return `${value.value}`;
67
+ }
68
+ _transformBooleanToString(value) {
69
+ if (value.value === '1'
70
+ || /^true$/i.test(value.value)) {
71
+ return "True";
72
+ }
73
+ return "False";
74
+ }
75
+ transform(value) {
76
+ const _value = value.value;
77
+ if (this.isEmpty(_value)) {
78
+ return '';
79
+ }
80
+ if (this.isDouble(value)) {
81
+ return this._transformDoubleToString(value);
82
+ }
83
+ if (this.isDoubleEnumeration(value)) {
84
+ return this._transformDoubleEnumerationToString(value);
85
+ }
86
+ if (this.isDatetime(value)) {
87
+ return this._transformDatetimeToString(value);
88
+ }
89
+ if (this.isGUID(value)) {
90
+ return this._transformGUIDToString(value);
91
+ }
92
+ if (this.isGUIDEnumeration(value)) {
93
+ return this._transformGUIDEnumerationToString(value);
94
+ }
95
+ if (this.isInt(value)) {
96
+ return this._transformIntToString(value);
97
+ }
98
+ if (this.isIntEnumeration(value)) {
99
+ return this._transformIntEnumerationToString(value);
100
+ }
101
+ if (this.isString(value)) {
102
+ return this._transformString(value);
103
+ }
104
+ if (this.isStringEnumeration(value)) {
105
+ return this._transformStringEnumeration(value);
106
+ }
107
+ if (this.isStringCombobox(value)) {
108
+ return this._transformStringCombobox(value);
109
+ }
110
+ if (this.isBooleanCheckbox(value)) {
111
+ return this._transformBooleanToString(value);
112
+ }
113
+ if (this.isBooleanTextbox(value)) {
114
+ return this._transformBooleanToString(value);
115
+ }
116
+ return value.value;
117
+ }
118
+ isEmpty(value) {
119
+ return value === undefined || value === null || value === '';
120
+ }
121
+ isDouble(value) {
122
+ return typeof value.type === 'string' && /^double$/i.test(value.type) && !value.control;
123
+ }
124
+ isDoubleEnumeration(value) {
125
+ return typeof value.type === 'string' && /^double$/i.test(value.type)
126
+ && typeof value.control === 'string' && /^enumeration$/i.test(value.control);
127
+ }
128
+ isDatetime(value) {
129
+ return typeof value.type === 'string' && /^datetime$/i.test(value.type) && !value.control;
130
+ }
131
+ isGUID(value) {
132
+ return typeof value.type === 'string' && /^guid$/i.test(value.type) && !value.control;
133
+ }
134
+ isGUIDEnumeration(value) {
135
+ return typeof value.type === 'string' && /^guid$/i.test(value.type)
136
+ && typeof value.control === 'string' && /^enumeration$/i.test(value.control);
137
+ }
138
+ isInt(value) {
139
+ return typeof value.type === 'string' && /^int(32)?$/i.test(value.type) && !value.control;
140
+ }
141
+ isIntEnumeration(value) {
142
+ return typeof value.type === 'string' && /^int(32)?$/i.test(value.type)
143
+ && typeof value.control === 'string' && /^enumeration$/i.test(value.control);
144
+ }
145
+ isString(value) {
146
+ return typeof value.type === 'string' && /^string$/i.test(value.type) && !value.control;
147
+ }
148
+ isStringEnumeration(value) {
149
+ return typeof value.type === 'string' && /^string$/i.test(value.type)
150
+ && typeof value.control === 'string' && /^enumeration$/i.test(value.control);
151
+ }
152
+ isStringCombobox(value) {
153
+ return typeof value.type === 'string' && /^string$/i.test(value.type)
154
+ && typeof value.control === 'string' && /^combobox$/i.test(value.control);
155
+ }
156
+ isBooleanCheckbox(value) {
157
+ return typeof value.type === 'string' && /^boolean$/i.test(value.type)
158
+ && typeof value.control === 'string' && /^checkbox$/i.test(value.control);
159
+ }
160
+ isBooleanTextbox(value) {
161
+ return typeof value.type === 'string' && /^boolean$/i.test(value.type) && !value.control;
162
+ }
163
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: GetAttributeValueAsString, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
164
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: GetAttributeValueAsString, isStandalone: true, name: "getAttributeValueAsString" }); }
165
+ }
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: GetAttributeValueAsString, decorators: [{
167
+ type: Pipe,
168
+ args: [{
169
+ name: 'getAttributeValueAsString',
170
+ standalone: true
171
+ }]
172
+ }], ctorParameters: () => [] });
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWF0dHJpYnV0ZS12YWx1ZS1hcy1zdHJpbmcucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9waXBlcy9nZXQtYXR0cmlidXRlLXZhbHVlLWFzLXN0cmluZy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sb0JBQW9CLENBQUM7O0FBTzVCLE1BQU0sT0FBTyx5QkFBeUI7SUFFcEM7UUFDRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUN6QyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxLQUFzQjtRQUM3QyxPQUFPLElBQUksU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsbUNBQW1DLENBQUMsS0FBc0I7UUFDeEQsSUFBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBSSxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRCxJQUFHLE9BQU8sRUFBRSxDQUFDO1lBQ1gsT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxL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LFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztlQUNoRSxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQXNCO1FBQzdDLE9BQU8sT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7ZUFDaEUsT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBc0I7UUFDOUMsT0FBTyxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztlQUNqRSxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFzQjtRQUM3QyxPQUFPLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzNGLENBQUM7K0dBcE1VLHlCQUF5Qjs2R0FBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUpyQyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSwyQkFBMkI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JqZWN0QXR0cmlidXRlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9vYmplY3QtcHJvcGVydGllcy9vYmplY3QtcHJvcGVydGllcy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBSb3VuZFBpcGUgfSBmcm9tICcuL3JvdW5kLnBpcGUnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCAnbW9tZW50L21pbi9sb2NhbGVzJztcclxuXHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2dldEF0dHJpYnV0ZVZhbHVlQXNTdHJpbmcnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEdldEF0dHJpYnV0ZVZhbHVlQXNTdHJpbmcgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBsb2NhbGUgPSB3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlO1xyXG4gICAgbW9tZW50LmxvY2FsZShsb2NhbGUpO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybURvdWJsZVRvU3RyaW5nKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIG5ldyBSb3VuZFBpcGUoKS50cmFuc2Zvcm0odmFsdWUudmFsdWUsIHZhbHVlLmRlY2ltYWwgfHwgMik7XHJcbiAgfVxyXG5cclxuICBfdHJhbnNmb3JtRG91YmxlRW51bWVyYXRpb25Ub1N0cmluZyh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIGlmKCF2YWx1ZS5lbnVtZGVmaW5pdGlvbikge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBfcmV0dmFsID0gIHZhbHVlLmVudW1kZWZpbml0aW9uW051bWJlcih2YWx1ZS52YWx1ZSldO1xyXG4gICAgaWYoX3JldHZhbCkge1xyXG4gICAgICByZXR1cm4gYCR7X3JldHZhbH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybURhdGV0aW1lVG9TdHJpbmcodmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBsb2NhbGVEYXRlOiBzdHJpbmcgPSBtb21lbnQodmFsdWUudmFsdWUpLmZvcm1hdCgnTCcpXHJcbiAgICBpZihsb2NhbGVEYXRlKSB7XHJcbiAgICAgIHJldHVybiBsb2NhbGVEYXRlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3ZhbHVlLnZhbHVlfWA7XHJcbiAgfVxyXG5cclxuICBfdHJhbnNmb3JtR1VJRFRvU3RyaW5nKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke3ZhbHVlLnZhbHVlfWA7XHJcbiAgfVxyXG5cclxuICBfdHJhbnNmb3JtRW51bWVyYXRpb25Ub1N0cmluZyh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIGlmKHZhbHVlLmNvbnRyb2wgJiYgL15FbnVtZXJhdGlvbiQvaS50ZXN0KHZhbHVlLmNvbnRyb2wpKSB7XHJcbiAgICAgIGlmKCF2YWx1ZS5lbnVtZGVmaW5pdGlvbikge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBfcmV0VmFsID0gdmFsdWUuZW51bWRlZmluaXRpb25bTnVtYmVyKHZhbHVlLnZhbHVlKV07XHJcbiAgICAgIGlmKF9yZXRWYWwpIHtcclxuICAgICAgICByZXR1cm4gYCR7X3JldFZhbH1gO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiBgJHt2YWx1ZS52YWx1ZX1gO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybUdVSURFbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybUVudW1lcmF0aW9uVG9TdHJpbmcodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybUludFRvU3RyaW5nKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke3ZhbHVlLnZhbHVlfWA7XHJcbiAgfVxyXG5cclxuICBfdHJhbnNmb3JtSW50RW51bWVyYXRpb25Ub1N0cmluZyh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1FbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIF90cmFuc2Zvcm1TdHJpbmcodmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dmFsdWUudmFsdWV9YDtcclxuICB9XHJcblxyXG4gIF90cmFuc2Zvcm1TdHJpbmdFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1FbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIF90cmFuc2Zvcm1TdHJpbmdDb21ib2JveCh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIGlmKHZhbHVlLmNvbnRyb2wgJiYgL15Db21ib2JveCQvaS50ZXN0KHZhbHVlLmNvbnRyb2wpKSB7XHJcbiAgICAgIHJldHVybiBgJHt2YWx1ZS52YWx1ZX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3ZhbHVlLnZhbHVlfWA7XHJcbiAgfVxyXG5cclxuICBfdHJhbnNmb3JtQm9vbGVhblRvU3RyaW5nKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgaWYodmFsdWUudmFsdWUgPT09ICcxJ1xyXG4gICAgICB8fCAvXnRydWUkL2kudGVzdCh2YWx1ZS52YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gXCJUcnVlXCI7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFwiRmFsc2VcIjtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IF92YWx1ZSA9IHZhbHVlLnZhbHVlO1xyXG4gICAgaWYgKHRoaXMuaXNFbXB0eShfdmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0RvdWJsZSh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybURvdWJsZVRvU3RyaW5nKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0RvdWJsZUVudW1lcmF0aW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtRG91YmxlRW51bWVyYXRpb25Ub1N0cmluZyh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNEYXRldGltZSh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybURhdGV0aW1lVG9TdHJpbmcodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzR1VJRCh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybUdVSURUb1N0cmluZyh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNHVUlERW51bWVyYXRpb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1HVUlERW51bWVyYXRpb25Ub1N0cmluZyh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNJbnQodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1JbnRUb1N0cmluZyh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNJbnRFbnVtZXJhdGlvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybUludEVudW1lcmF0aW9uVG9TdHJpbmcodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtU3RyaW5nKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc1N0cmluZ0VudW1lcmF0aW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtU3RyaW5nRW51bWVyYXRpb24odmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzU3RyaW5nQ29tYm9ib3godmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1TdHJpbmdDb21ib2JveCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNCb29sZWFuQ2hlY2tib3godmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1Cb29sZWFuVG9TdHJpbmcodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzQm9vbGVhblRleHRib3godmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1Cb29sZWFuVG9TdHJpbmcodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFbXB0eSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RvdWJsZSh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9eZG91YmxlJC9pLnRlc3QodmFsdWUudHlwZSkgJiYgIXZhbHVlLmNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRG91YmxlRW51bWVyYXRpb24odmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZS50eXBlID09PSAnc3RyaW5nJyAmJiAvXmRvdWJsZSQvaS50ZXN0KHZhbHVlLnR5cGUpXHJcbiAgICAgICYmIHR5cGVvZiB2YWx1ZS5jb250cm9sID09PSAnc3RyaW5nJyAmJiAvXmVudW1lcmF0aW9uJC9pLnRlc3QodmFsdWUuY29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRGF0ZXRpbWUodmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZS50eXBlID09PSAnc3RyaW5nJyAmJiAvXmRhdGV0aW1lJC9pLnRlc3QodmFsdWUudHlwZSkgJiYgIXZhbHVlLmNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzR1VJRCh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9eZ3VpZCQvaS50ZXN0KHZhbHVlLnR5cGUpICYmICF2YWx1ZS5jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0dVSURFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9eZ3VpZCQvaS50ZXN0KHZhbHVlLnR5cGUpXHJcbiAgICAgICYmIHR5cGVvZiB2YWx1ZS5jb250cm9sID09PSAnc3RyaW5nJyAmJiAvXmVudW1lcmF0aW9uJC9pLnRlc3QodmFsdWUuY29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzSW50KHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycgJiYgL15pbnQoMzIpPyQvaS50ZXN0KHZhbHVlLnR5cGUpICYmICF2YWx1ZS5jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0ludEVudW1lcmF0aW9uKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycgJiYgL15pbnQoMzIpPyQvaS50ZXN0KHZhbHVlLnR5cGUpXHJcbiAgICAgICYmIHR5cGVvZiB2YWx1ZS5jb250cm9sID09PSAnc3RyaW5nJyAmJiAvXmVudW1lcmF0aW9uJC9pLnRlc3QodmFsdWUuY29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzU3RyaW5nKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycgJiYgL15zdHJpbmckL2kudGVzdCh2YWx1ZS50eXBlKSAmJiAhdmFsdWUuY29udHJvbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNTdHJpbmdFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9ec3RyaW5nJC9pLnRlc3QodmFsdWUudHlwZSlcclxuICAgICAgJiYgdHlwZW9mIHZhbHVlLmNvbnRyb2wgPT09ICdzdHJpbmcnICYmIC9eZW51bWVyYXRpb24kL2kudGVzdCh2YWx1ZS5jb250cm9sKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNTdHJpbmdDb21ib2JveCh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9ec3RyaW5nJC9pLnRlc3QodmFsdWUudHlwZSlcclxuICAgICAgJiYgdHlwZW9mIHZhbHVlLmNvbnRyb2wgPT09ICdzdHJpbmcnICYmIC9eY29tYm9ib3gkL2kudGVzdCh2YWx1ZS5jb250cm9sKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNCb29sZWFuQ2hlY2tib3godmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZS50eXBlID09PSAnc3RyaW5nJyAmJiAvXmJvb2xlYW4kL2kudGVzdCh2YWx1ZS50eXBlKVxyXG4gICAgICAmJiB0eXBlb2YgdmFsdWUuY29udHJvbCA9PT0gJ3N0cmluZycgJiYgL15jaGVja2JveCQvaS50ZXN0KHZhbHVlLmNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0Jvb2xlYW5UZXh0Ym94KHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycgJiYgL15ib29sZWFuJC9pLnRlc3QodmFsdWUudHlwZSkgJiYgIXZhbHVlLmNvbnRyb2w7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,156 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { RoundPipe } from './round.pipe';
3
+ import moment from 'moment';
4
+ import 'moment/min/locales';
5
+ import * as i0 from "@angular/core";
6
+ export class GetAttributeValue {
7
+ constructor() {
8
+ const locale = window.navigator.language;
9
+ moment.locale(locale);
10
+ }
11
+ _transformDouble(value) {
12
+ return new RoundPipe().transform(value.value, value.decimal ?? 2);
13
+ }
14
+ _transformDoubleEnumeration(value) {
15
+ return this._transformDouble(value);
16
+ }
17
+ _transformDatetime(value) {
18
+ return value.value;
19
+ }
20
+ _transformGUID(value) {
21
+ return value.value;
22
+ }
23
+ _transformGUIDEnumeration(value) {
24
+ return `${value.value}`;
25
+ }
26
+ _transformInt(value) {
27
+ return value.value;
28
+ }
29
+ _transformIntEnumeration(value) {
30
+ return `${value.value}`;
31
+ }
32
+ _transformString(value) {
33
+ return value.value;
34
+ }
35
+ _transformStringEnumeration(value) {
36
+ return `${value.value}`;
37
+ }
38
+ _transformStringCombobox(value) {
39
+ if (value.control && /^combobox$/i.test(value.control)) {
40
+ return value.value;
41
+ }
42
+ return '';
43
+ }
44
+ _transformBooleanToBoolean(value) {
45
+ if (value.value === '1'
46
+ || /^true$/i.test(value.value)) {
47
+ return true;
48
+ }
49
+ return false;
50
+ }
51
+ _transformBooleanToString(value) {
52
+ if (value.value === '1'
53
+ || /^true$/i.test(value.value)) {
54
+ return "True";
55
+ }
56
+ return "False";
57
+ }
58
+ transform(value) {
59
+ const _value = value.value;
60
+ if (this.isEmpty(_value)) {
61
+ return '';
62
+ }
63
+ if (this.isDouble(value)) {
64
+ return this._transformDouble(value);
65
+ }
66
+ if (this.isDoubleEnumeration(value)) {
67
+ return this._transformDoubleEnumeration(value);
68
+ }
69
+ if (this.isDatetime(value)) {
70
+ return this._transformDatetime(value);
71
+ }
72
+ if (this.isGUID(value)) {
73
+ return this._transformGUID(value);
74
+ }
75
+ if (this.isGUIDEnumeration(value)) {
76
+ return this._transformGUIDEnumeration(value);
77
+ }
78
+ if (this.isInt(value)) {
79
+ return this._transformInt(value);
80
+ }
81
+ if (this.isIntEnumeration(value)) {
82
+ return this._transformIntEnumeration(value);
83
+ }
84
+ if (this.isString(value)) {
85
+ return this._transformString(value);
86
+ }
87
+ if (this.isStringEnumeration(value)) {
88
+ return this._transformStringEnumeration(value);
89
+ }
90
+ if (this.isStringCombobox(value)) {
91
+ return this._transformStringCombobox(value);
92
+ }
93
+ if (this.isBooleanCheckbox(value)) {
94
+ return this._transformBooleanToBoolean(value);
95
+ }
96
+ if (this.isBooleanTextbox(value)) {
97
+ return this._transformBooleanToString(value);
98
+ }
99
+ return value.value;
100
+ }
101
+ isEmpty(value) {
102
+ return value === undefined || value === null || value === '';
103
+ }
104
+ isDouble(value) {
105
+ return typeof value.type === 'string' && /^double$/i.test(value.type) && !value.control;
106
+ }
107
+ isDoubleEnumeration(value) {
108
+ return typeof value.type === 'string' && /^double$/i.test(value.type)
109
+ && typeof value.control === 'string' && /^enumeration$/i.test(value.control);
110
+ }
111
+ isDatetime(value) {
112
+ return typeof value.type === 'string' && /^datetime$/i.test(value.type) && !value.control;
113
+ }
114
+ isGUID(value) {
115
+ return typeof value.type === 'string' && /^guid$/i.test(value.type) && !value.control;
116
+ }
117
+ isGUIDEnumeration(value) {
118
+ return typeof value.type === 'string' && /^guid$/i.test(value.type)
119
+ && typeof value.control === 'string' && /^enumeration$/i.test(value.control);
120
+ }
121
+ isInt(value) {
122
+ return typeof value.type === 'string' && /^int(32)?$/i.test(value.type) && !value.control;
123
+ }
124
+ isIntEnumeration(value) {
125
+ return typeof value.type === 'string' && /^int(32)?$/i.test(value.type)
126
+ && typeof value.control === 'string' && /^enumeration$/i.test(value.control);
127
+ }
128
+ isString(value) {
129
+ return typeof value.type === 'string' && /^string$/i.test(value.type) && !value.control;
130
+ }
131
+ isStringEnumeration(value) {
132
+ return typeof value.type === 'string' && /^string$/i.test(value.type)
133
+ && typeof value.control === 'string' && /^enumeration$/i.test(value.control);
134
+ }
135
+ isStringCombobox(value) {
136
+ return typeof value.type === 'string' && /^string$/i.test(value.type)
137
+ && typeof value.control === 'string' && /^combobox$/i.test(value.control);
138
+ }
139
+ isBooleanCheckbox(value) {
140
+ return typeof value.type === 'string' && /^boolean$/i.test(value.type)
141
+ && typeof value.control === 'string' && /^checkbox$/i.test(value.control);
142
+ }
143
+ isBooleanTextbox(value) {
144
+ return typeof value.type === 'string' && /^boolean$/i.test(value.type) && !value.control;
145
+ }
146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: GetAttributeValue, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
147
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: GetAttributeValue, isStandalone: true, name: "getAttributeValue" }); }
148
+ }
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: GetAttributeValue, decorators: [{
150
+ type: Pipe,
151
+ args: [{
152
+ name: 'getAttributeValue',
153
+ standalone: true
154
+ }]
155
+ }], ctorParameters: () => [] });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWF0dHJpYnV0ZS12YWx1ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL3BpcGVzL2dldC1hdHRyaWJ1dGUtdmFsdWUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLG9CQUFvQixDQUFDOztBQU81QixNQUFNLE9BQU8saUJBQWlCO0lBRTVCO1FBQ0UsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDekMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBc0I7UUFDckMsT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELDJCQUEyQixDQUFDLEtBQXNCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFzQjtRQUN2QyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFzQjtRQUNuQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELHlCQUF5QixDQUFDLEtBQXNCO1FBQzlDLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFzQjtRQUNs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QUMsT0FBTyxDQUFDO0lBQzNGLENBQUM7K0dBbkxVLGlCQUFpQjs2R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUo3QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxtQkFBbUI7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JqZWN0QXR0cmlidXRlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9vYmplY3QtcHJvcGVydGllcy9vYmplY3QtcHJvcGVydGllcy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBSb3VuZFBpcGUgfSBmcm9tICcuL3JvdW5kLnBpcGUnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCAnbW9tZW50L21pbi9sb2NhbGVzJztcclxuXHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2dldEF0dHJpYnV0ZVZhbHVlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHZXRBdHRyaWJ1dGVWYWx1ZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGNvbnN0IGxvY2FsZSA9IHdpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2U7XHJcbiAgICBtb21lbnQubG9jYWxlKGxvY2FsZSk7XHJcbiAgfVxyXG5cclxuICBfdHJhbnNmb3JtRG91YmxlKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIG5ldyBSb3VuZFBpcGUoKS50cmFuc2Zvcm0odmFsdWUudmFsdWUsIHZhbHVlLmRlY2ltYWwgPz8gMik7XHJcbiAgfVxyXG5cclxuICBfdHJhbnNmb3JtRG91YmxlRW51bWVyYXRpb24odmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtRG91YmxlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIF90cmFuc2Zvcm1EYXRldGltZSh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIF90cmFuc2Zvcm1HVUlEKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybUdVSURFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt2YWx1ZS52YWx1ZX1gO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybUludCh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIF90cmFuc2Zvcm1JbnRFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt2YWx1ZS52YWx1ZX1gO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybVN0cmluZyh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIF90cmFuc2Zvcm1TdHJpbmdFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt2YWx1ZS52YWx1ZX1gO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybVN0cmluZ0NvbWJvYm94KHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgaWYodmFsdWUuY29udHJvbCAmJiAvXmNvbWJvYm94JC9pLnRlc3QodmFsdWUuY29udHJvbCkpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybUJvb2xlYW5Ub0Jvb2xlYW4odmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYodmFsdWUudmFsdWUgPT09ICcxJ1xyXG4gICAgICB8fCAvXnRydWUkL2kudGVzdCh2YWx1ZS52YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBfdHJhbnNmb3JtQm9vbGVhblRvU3RyaW5nKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgaWYodmFsdWUudmFsdWUgPT09ICcxJ1xyXG4gICAgICB8fCAvXnRydWUkL2kudGVzdCh2YWx1ZS52YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gXCJUcnVlXCI7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFwiRmFsc2VcIjtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHwgYm9vbGVhbiB7XHJcbiAgICBjb25zdCBfdmFsdWUgPSB2YWx1ZS52YWx1ZTtcclxuICAgIGlmICh0aGlzLmlzRW1wdHkoX3ZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNEb3VibGUodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1Eb3VibGUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRG91YmxlRW51bWVyYXRpb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1Eb3VibGVFbnVtZXJhdGlvbih2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNEYXRldGltZSh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybURhdGV0aW1lKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0dVSUQodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1HVUlEKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0dVSURFbnVtZXJhdGlvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybUdVSURFbnVtZXJhdGlvbih2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNJbnQodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1JbnQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzSW50RW51bWVyYXRpb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1JbnRFbnVtZXJhdGlvbih2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1TdHJpbmcodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzU3RyaW5nRW51bWVyYXRpb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1TdHJpbmdFbnVtZXJhdGlvbih2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmdDb21ib2JveCh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybVN0cmluZ0NvbWJvYm94KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0Jvb2xlYW5DaGVja2JveCh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybUJvb2xlYW5Ub0Jvb2xlYW4odmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzQm9vbGVhblRleHRib3godmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1Cb29sZWFuVG9TdHJpbmcodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFbXB0eSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RvdWJsZSh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9eZG91YmxlJC9pLnRlc3QodmFsdWUudHlwZSkgJiYgIXZhbHVlLmNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRG91YmxlRW51bWVyYXRpb24odmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZS50eXBlID09PSAnc3RyaW5nJyAmJiAvXmRvdWJsZSQvaS50ZXN0KHZhbHVlLnR5cGUpXHJcbiAgICAgICYmIHR5cGVvZiB2YWx1ZS5jb250cm9sID09PSAnc3RyaW5nJyAmJiAvXmVudW1lcmF0aW9uJC9pLnRlc3QodmFsdWUuY29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRGF0ZXRpbWUodmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZS50eXBlID09PSAnc3RyaW5nJyAmJiAvXmRhdGV0aW1lJC9pLnRlc3QodmFsdWUudHlwZSkgJiYgIXZhbHVlLmNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzR1VJRCh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9eZ3VpZCQvaS50ZXN0KHZhbHVlLnR5cGUpICYmICF2YWx1ZS5jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0dVSURFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9eZ3VpZCQvaS50ZXN0KHZhbHVlLnR5cGUpXHJcbiAgICAgICYmIHR5cGVvZiB2YWx1ZS5jb250cm9sID09PSAnc3RyaW5nJyAmJiAvXmVudW1lcmF0aW9uJC9pLnRlc3QodmFsdWUuY29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzSW50KHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycgJiYgL15pbnQoMzIpPyQvaS50ZXN0KHZhbHVlLnR5cGUpICYmICF2YWx1ZS5jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0ludEVudW1lcmF0aW9uKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycgJiYgL15pbnQoMzIpPyQvaS50ZXN0KHZhbHVlLnR5cGUpXHJcbiAgICAgICYmIHR5cGVvZiB2YWx1ZS5jb250cm9sID09PSAnc3RyaW5nJyAmJiAvXmVudW1lcmF0aW9uJC9pLnRlc3QodmFsdWUuY29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzU3RyaW5nKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycgJiYgL15zdHJpbmckL2kudGVzdCh2YWx1ZS50eXBlKSAmJiAhdmFsdWUuY29udHJvbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNTdHJpbmdFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9ec3RyaW5nJC9pLnRlc3QodmFsdWUudHlwZSlcclxuICAgICAgJiYgdHlwZW9mIHZhbHVlLmNvbnRyb2wgPT09ICdzdHJpbmcnICYmIC9eZW51bWVyYXRpb24kL2kudGVzdCh2YWx1ZS5jb250cm9sKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNTdHJpbmdDb21ib2JveCh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9ec3RyaW5nJC9pLnRlc3QodmFsdWUudHlwZSlcclxuICAgICAgJiYgdHlwZW9mIHZhbHVlLmNvbnRyb2wgPT09ICdzdHJpbmcnICYmIC9eY29tYm9ib3gkL2kudGVzdCh2YWx1ZS5jb250cm9sKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNCb29sZWFuQ2hlY2tib3godmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZS50eXBlID09PSAnc3RyaW5nJyAmJiAvXmJvb2xlYW4kL2kudGVzdCh2YWx1ZS50eXBlKVxyXG4gICAgICAmJiB0eXBlb2YgdmFsdWUuY29udHJvbCA9PT0gJ3N0cmluZycgJiYgL15jaGVja2JveCQvaS50ZXN0KHZhbHVlLmNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0Jvb2xlYW5UZXh0Ym94KHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycgJiYgL15ib29sZWFuJC9pLnRlc3QodmFsdWUudHlwZSkgJiYgIXZhbHVlLmNvbnRyb2w7XHJcbiAgfVxyXG59XHJcbiJdfQ==