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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +283 -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 +4195 -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
@@ -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 = 1024;
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') {
13
+ if (!this.isNumber(value)) {
14
+ throw new Error('[BitConverterPipe]: value is not a number');
15
+ }
16
+ const size = this.getSizeFromBites(value, sizeToConvert);
17
+ let decimalValue = super.transform(size, digitsInfo);
18
+ decimalValue ??= value.toString();
19
+ return `(${decimalValue} ${sizeToConvert})`;
20
+ }
21
+ getSizeFromBites(value, size) {
22
+ switch (size) {
23
+ case 'kB':
24
+ return value / MB_SIZE;
25
+ case 'mb':
26
+ return value / (MB_SIZE * MB_SIZE);
27
+ case 'gib':
28
+ return value / (MB_SIZE * MB_SIZE * MB_SIZE);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0LWNvbnZlcnRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL3BpcGVzL2JpdC1jb252ZXJ0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBRXBELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQztBQUVyQixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxLQUFLO0lBQ1QsRUFBRSxFQUFFLElBQUk7SUFDUixTQUFTO0NBQ0gsQ0FBQztBQVFYLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUFXO0lBSXBDLFNBQVMsQ0FBQyxLQUFjLEVBQUUsZ0JBQTBCLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxhQUFxQixPQUFPO1FBQzFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELFlBQVksS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFbEMsT0FBTyxJQUFJLFlBQVksSUFBSSxhQUFhLEdBQUcsQ0FBQztJQUNoRCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBYSxFQUFFLElBQWM7UUFDbEQsUUFBTyxJQUFJLEVBQUUsQ0FBQztZQUNWLEtBQUssSUFBSTtnQkFDTCxPQUFPLEtBQUssR0FBRyxPQUFPLENBQUM7WUFDM0IsS0FBSyxJQUFJO2dCQUNMLE9BQU8sS0FBSyxHQUFHLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLEtBQUssS0FBSztnQkFDTixPQUFPLEtBQUssR0FBRyxDQUFDLE9BQU8sR0FBRyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUM7WUFDakQ7Z0JBQ0ksT0FBTyxLQUFLLENBQUM7UUFDckIsQ0FBQztJQUNMLENBQUM7SUFFTyxRQUFRLENBQUMsS0FBYztRQUMzQixPQUFRLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDOytHQTlCUSxnQkFBZ0I7NkdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFKNUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsY0FBYztvQkFDcEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5jb25zdCBNQl9TSVpFID0gMTAyNDtcclxuXHJcbmV4cG9ydCBjb25zdCBCaXRDb252ZXJ0ZXJTaXplID0ge1xyXG4gICAgS0I6ICdrQicsXHJcbiAgICBHQjogJ2dpYicsXHJcbiAgICBNQjogJ21iJ1xyXG4gICAgLy8gbW9yZS4uXHJcbn0gYXMgY29uc3Q7XHJcblxyXG50eXBlIFNpemVUeXBlID0gdHlwZW9mIEJpdENvbnZlcnRlclNpemVbJ0dCJyB8ICdLQicgfCAnTUInXTtcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnYml0Q29udmVydGVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCaXRDb252ZXJ0ZXJQaXBlIGV4dGVuZHMgRGVjaW1hbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIG92ZXJyaWRlIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgb3ZlcnJpZGUgdHJhbnNmb3JtKHZhbHVlOiBudWxsIHwgdW5kZWZpbmVkLCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBudWxsO1xyXG4gICAgb3ZlcnJpZGUgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgb3ZlcnJpZGUgdHJhbnNmb3JtKHZhbHVlOiB1bmtub3duLCBzaXplVG9Db252ZXJ0OiBTaXplVHlwZSA9IEJpdENvbnZlcnRlclNpemUuS0IsIGRpZ2l0c0luZm86IHN0cmluZyA9ICcxLjItMicpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNOdW1iZXIodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignW0JpdENvbnZlcnRlclBpcGVdOiB2YWx1ZSBpcyBub3QgYSBudW1iZXInKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuZ2V0U2l6ZUZyb21CaXRlcyh2YWx1ZSwgc2l6ZVRvQ29udmVydCk7XHJcbiAgICAgICAgbGV0IGRlY2ltYWxWYWx1ZSA9IHN1cGVyLnRyYW5zZm9ybShzaXplLCBkaWdpdHNJbmZvKTtcclxuICAgICAgICBkZWNpbWFsVmFsdWUgPz89IHZhbHVlLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBgKCR7ZGVjaW1hbFZhbHVlfSAke3NpemVUb0NvbnZlcnR9KWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRTaXplRnJvbUJpdGVzKHZhbHVlOiBudW1iZXIsIHNpemU6IFNpemVUeXBlKTogbnVtYmVyIHtcclxuICAgICAgICBzd2l0Y2goc2l6ZSkge1xyXG4gICAgICAgICAgICBjYXNlICdrQic6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgLyBNQl9TSVpFO1xyXG4gICAgICAgICAgICBjYXNlICdtYic6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgLyAoTUJfU0laRSAqIE1CX1NJWkUpO1xyXG4gICAgICAgICAgICBjYXNlICdnaWInOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlIC8gKE1CX1NJWkUgKiBNQl9TSVpFICogTUJfU0laRSk7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNOdW1iZXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiAgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiAhaXNOYU4odmFsdWUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -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,162 @@
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
+ moment.locale(window.navigator.language);
19
+ const localeDate = moment(value.value).format('L');
20
+ console.log(localeDate);
21
+ if (localeDate) {
22
+ return localeDate;
23
+ }
24
+ return value.value;
25
+ }
26
+ _transformGUID(value) {
27
+ return value.value;
28
+ }
29
+ _transformGUIDEnumeration(value) {
30
+ return `${value.value}`;
31
+ }
32
+ _transformInt(value) {
33
+ return value.value;
34
+ }
35
+ _transformIntEnumeration(value) {
36
+ return `${value.value}`;
37
+ }
38
+ _transformString(value) {
39
+ return value.value;
40
+ }
41
+ _transformStringEnumeration(value) {
42
+ return `${value.value}`;
43
+ }
44
+ _transformStringCombobox(value) {
45
+ if (value.control && /^combobox$/i.test(value.control)) {
46
+ return value.value;
47
+ }
48
+ return '';
49
+ }
50
+ _transformBooleanToBoolean(value) {
51
+ if (value.value === '1'
52
+ || /^true$/i.test(value.value)) {
53
+ return true;
54
+ }
55
+ return false;
56
+ }
57
+ _transformBooleanToString(value) {
58
+ if (value.value === '1'
59
+ || /^true$/i.test(value.value)) {
60
+ return "True";
61
+ }
62
+ return "False";
63
+ }
64
+ transform(value) {
65
+ const _value = value.value;
66
+ if (this.isEmpty(_value)) {
67
+ return '';
68
+ }
69
+ if (this.isDouble(value)) {
70
+ return this._transformDouble(value);
71
+ }
72
+ if (this.isDoubleEnumeration(value)) {
73
+ return this._transformDoubleEnumeration(value);
74
+ }
75
+ if (this.isDatetime(value)) {
76
+ return this._transformDatetime(value);
77
+ }
78
+ if (this.isGUID(value)) {
79
+ return this._transformGUID(value);
80
+ }
81
+ if (this.isGUIDEnumeration(value)) {
82
+ return this._transformGUIDEnumeration(value);
83
+ }
84
+ if (this.isInt(value)) {
85
+ return this._transformInt(value);
86
+ }
87
+ if (this.isIntEnumeration(value)) {
88
+ return this._transformIntEnumeration(value);
89
+ }
90
+ if (this.isString(value)) {
91
+ return this._transformString(value);
92
+ }
93
+ if (this.isStringEnumeration(value)) {
94
+ return this._transformStringEnumeration(value);
95
+ }
96
+ if (this.isStringCombobox(value)) {
97
+ return this._transformStringCombobox(value);
98
+ }
99
+ if (this.isBooleanCheckbox(value)) {
100
+ return this._transformBooleanToBoolean(value);
101
+ }
102
+ if (this.isBooleanTextbox(value)) {
103
+ return this._transformBooleanToString(value);
104
+ }
105
+ return value.value;
106
+ }
107
+ isEmpty(value) {
108
+ return value === undefined || value === null || value === '';
109
+ }
110
+ isDouble(value) {
111
+ return typeof value.type === 'string' && /^double$/i.test(value.type) && !value.control;
112
+ }
113
+ isDoubleEnumeration(value) {
114
+ return typeof value.type === 'string' && /^double$/i.test(value.type)
115
+ && typeof value.control === 'string' && /^enumeration$/i.test(value.control);
116
+ }
117
+ isDatetime(value) {
118
+ return typeof value.type === 'string' && /^datetime$/i.test(value.type) && !value.control;
119
+ }
120
+ isGUID(value) {
121
+ return typeof value.type === 'string' && /^guid$/i.test(value.type) && !value.control;
122
+ }
123
+ isGUIDEnumeration(value) {
124
+ return typeof value.type === 'string' && /^guid$/i.test(value.type)
125
+ && typeof value.control === 'string' && /^enumeration$/i.test(value.control);
126
+ }
127
+ isInt(value) {
128
+ return typeof value.type === 'string' && /^int(32)?$/i.test(value.type) && !value.control;
129
+ }
130
+ isIntEnumeration(value) {
131
+ return typeof value.type === 'string' && /^int(32)?$/i.test(value.type)
132
+ && typeof value.control === 'string' && /^enumeration$/i.test(value.control);
133
+ }
134
+ isString(value) {
135
+ return typeof value.type === 'string' && /^string$/i.test(value.type) && !value.control;
136
+ }
137
+ isStringEnumeration(value) {
138
+ return typeof value.type === 'string' && /^string$/i.test(value.type)
139
+ && typeof value.control === 'string' && /^enumeration$/i.test(value.control);
140
+ }
141
+ isStringCombobox(value) {
142
+ return typeof value.type === 'string' && /^string$/i.test(value.type)
143
+ && typeof value.control === 'string' && /^combobox$/i.test(value.control);
144
+ }
145
+ isBooleanCheckbox(value) {
146
+ return typeof value.type === 'string' && /^boolean$/i.test(value.type)
147
+ && typeof value.control === 'string' && /^checkbox$/i.test(value.control);
148
+ }
149
+ isBooleanTextbox(value) {
150
+ return typeof value.type === 'string' && /^boolean$/i.test(value.type) && !value.control;
151
+ }
152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: GetAttributeValue, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
153
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: GetAttributeValue, isStandalone: true, name: "getAttributeValue" }); }
154
+ }
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: GetAttributeValue, decorators: [{
156
+ type: Pipe,
157
+ args: [{
158
+ name: 'getAttributeValue',
159
+ standalone: true
160
+ }]
161
+ }], ctorParameters: () => [] });
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWF0dHJpYnV0ZS12YWx1ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL3BpcGVzL2dldC1hdHRyaWJ1dGUtdmFsdWUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLG9CQUFvQixDQUFDOztBQU81QixNQUFNLE9BQU8saUJBQWlCO0lBRTVCO1FBQ0UsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDekMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBc0I7UUFDckMsT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELDJCQUEyQixDQUFDLEtBQXNCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFzQjtRQUN2QyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQVcsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDMUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixJQUFHLFVBQVUsRUFBRSxD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LENBQUMsSUFBSSxDQUFDO2VBQ2pFLE9BQU8sS0FBSyxDQUFDLE9BQU8sS0FBSyxRQUFRLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQXNCO1FBQzdDLE9BQU8sT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDM0YsQ0FBQzsrR0F6TFUsaUJBQWlCOzZHQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBSjdCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtvQkFDekIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYmplY3RBdHRyaWJ1dGUgfSBmcm9tICcuLi9jb21wb25lbnRzL29iamVjdC1wcm9wZXJ0aWVzL29iamVjdC1wcm9wZXJ0aWVzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFJvdW5kUGlwZSB9IGZyb20gJy4vcm91bmQucGlwZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0ICdtb21lbnQvbWluL2xvY2FsZXMnO1xyXG5cclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnZ2V0QXR0cmlidXRlVmFsdWUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEdldEF0dHJpYnV0ZVZhbHVlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgbG9jYWxlID0gd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZTtcclxuICAgIG1vbWVudC5sb2NhbGUobG9jYWxlKTtcclxuICB9XHJcblxyXG4gIF90cmFuc2Zvcm1Eb3VibGUodmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbmV3IFJvdW5kUGlwZSgpLnRyYW5zZm9ybSh2YWx1ZS52YWx1ZSwgdmFsdWUuZGVjaW1hbCB8fCAyKTtcclxuICB9XHJcblxyXG4gIF90cmFuc2Zvcm1Eb3VibGVFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1Eb3VibGUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybURhdGV0aW1lKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgbW9tZW50LmxvY2FsZSh3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlKTtcclxuICAgIGNvbnN0IGxvY2FsZURhdGU6IHN0cmluZyA9IG1vbWVudCh2YWx1ZS52YWx1ZSkuZm9ybWF0KCdMJylcclxuICAgIGNvbnNvbGUubG9nKGxvY2FsZURhdGUpO1xyXG4gICAgaWYobG9jYWxlRGF0ZSkge1xyXG4gICAgICByZXR1cm4gbG9jYWxlRGF0ZTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIF90cmFuc2Zvcm1HVUlEKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybUdVSURFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt2YWx1ZS52YWx1ZX1gO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybUludCh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIF90cmFuc2Zvcm1JbnRFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt2YWx1ZS52YWx1ZX1gO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybVN0cmluZyh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIF90cmFuc2Zvcm1TdHJpbmdFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt2YWx1ZS52YWx1ZX1gO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybVN0cmluZ0NvbWJvYm94KHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgaWYodmFsdWUuY29udHJvbCAmJiAvXmNvbWJvYm94JC9pLnRlc3QodmFsdWUuY29udHJvbCkpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgX3RyYW5zZm9ybUJvb2xlYW5Ub0Jvb2xlYW4odmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYodmFsdWUudmFsdWUgPT09ICcxJ1xyXG4gICAgICB8fCAvXnRydWUkL2kudGVzdCh2YWx1ZS52YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBfdHJhbnNmb3JtQm9vbGVhblRvU3RyaW5nKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgaWYodmFsdWUudmFsdWUgPT09ICcxJ1xyXG4gICAgICB8fCAvXnRydWUkL2kudGVzdCh2YWx1ZS52YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gXCJUcnVlXCI7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFwiRmFsc2VcIjtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogc3RyaW5nIHwgYm9vbGVhbiB7XHJcbiAgICBjb25zdCBfdmFsdWUgPSB2YWx1ZS52YWx1ZTtcclxuICAgIGlmICh0aGlzLmlzRW1wdHkoX3ZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNEb3VibGUodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1Eb3VibGUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRG91YmxlRW51bWVyYXRpb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1Eb3VibGVFbnVtZXJhdGlvbih2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNEYXRldGltZSh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybURhdGV0aW1lKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0dVSUQodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1HVUlEKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0dVSURFbnVtZXJhdGlvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybUdVSURFbnVtZXJhdGlvbih2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNJbnQodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1JbnQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzSW50RW51bWVyYXRpb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1JbnRFbnVtZXJhdGlvbih2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1TdHJpbmcodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzU3RyaW5nRW51bWVyYXRpb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1TdHJpbmdFbnVtZXJhdGlvbih2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmdDb21ib2JveCh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybVN0cmluZ0NvbWJvYm94KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0Jvb2xlYW5DaGVja2JveCh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybUJvb2xlYW5Ub0Jvb2xlYW4odmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzQm9vbGVhblRleHRib3godmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1Cb29sZWFuVG9TdHJpbmcodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFbXB0eSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RvdWJsZSh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9eZG91YmxlJC9pLnRlc3QodmFsdWUudHlwZSkgJiYgIXZhbHVlLmNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRG91YmxlRW51bWVyYXRpb24odmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZS50eXBlID09PSAnc3RyaW5nJyAmJiAvXmRvdWJsZSQvaS50ZXN0KHZhbHVlLnR5cGUpXHJcbiAgICAgICYmIHR5cGVvZiB2YWx1ZS5jb250cm9sID09PSAnc3RyaW5nJyAmJiAvXmVudW1lcmF0aW9uJC9pLnRlc3QodmFsdWUuY29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRGF0ZXRpbWUodmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZS50eXBlID09PSAnc3RyaW5nJyAmJiAvXmRhdGV0aW1lJC9pLnRlc3QodmFsdWUudHlwZSkgJiYgIXZhbHVlLmNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzR1VJRCh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9eZ3VpZCQvaS50ZXN0KHZhbHVlLnR5cGUpICYmICF2YWx1ZS5jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0dVSURFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9eZ3VpZCQvaS50ZXN0KHZhbHVlLnR5cGUpXHJcbiAgICAgICYmIHR5cGVvZiB2YWx1ZS5jb250cm9sID09PSAnc3RyaW5nJyAmJiAvXmVudW1lcmF0aW9uJC9pLnRlc3QodmFsdWUuY29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzSW50KHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycgJiYgL15pbnQoMzIpPyQvaS50ZXN0KHZhbHVlLnR5cGUpICYmICF2YWx1ZS5jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0ludEVudW1lcmF0aW9uKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycgJiYgL15pbnQoMzIpPyQvaS50ZXN0KHZhbHVlLnR5cGUpXHJcbiAgICAgICYmIHR5cGVvZiB2YWx1ZS5jb250cm9sID09PSAnc3RyaW5nJyAmJiAvXmVudW1lcmF0aW9uJC9pLnRlc3QodmFsdWUuY29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzU3RyaW5nKHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycgJiYgL15zdHJpbmckL2kudGVzdCh2YWx1ZS50eXBlKSAmJiAhdmFsdWUuY29udHJvbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNTdHJpbmdFbnVtZXJhdGlvbih2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9ec3RyaW5nJC9pLnRlc3QodmFsdWUudHlwZSlcclxuICAgICAgJiYgdHlwZW9mIHZhbHVlLmNvbnRyb2wgPT09ICdzdHJpbmcnICYmIC9eZW51bWVyYXRpb24kL2kudGVzdCh2YWx1ZS5jb250cm9sKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNTdHJpbmdDb21ib2JveCh2YWx1ZTogT2JqZWN0QXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlLnR5cGUgPT09ICdzdHJpbmcnICYmIC9ec3RyaW5nJC9pLnRlc3QodmFsdWUudHlwZSlcclxuICAgICAgJiYgdHlwZW9mIHZhbHVlLmNvbnRyb2wgPT09ICdzdHJpbmcnICYmIC9eY29tYm9ib3gkL2kudGVzdCh2YWx1ZS5jb250cm9sKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNCb29sZWFuQ2hlY2tib3godmFsdWU6IE9iamVjdEF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZS50eXBlID09PSAnc3RyaW5nJyAmJiAvXmJvb2xlYW4kL2kudGVzdCh2YWx1ZS50eXBlKVxyXG4gICAgICAmJiB0eXBlb2YgdmFsdWUuY29udHJvbCA9PT0gJ3N0cmluZycgJiYgL15jaGVja2JveCQvaS50ZXN0KHZhbHVlLmNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0Jvb2xlYW5UZXh0Ym94KHZhbHVlOiBPYmplY3RBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycgJiYgL15ib29sZWFuJC9pLnRlc3QodmFsdWUudHlwZSkgJiYgIXZhbHVlLmNvbnRyb2w7XHJcbiAgfVxyXG59XHJcbiJdfQ==