barsa-develop-components 1.0.456 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/{esm2020 → esm2022}/barsa-develop-components.mjs +4 -4
  2. package/esm2022/lib/accept-reject/accept-reject.component.mjs +68 -0
  3. package/esm2022/lib/avatar/avatar.component.mjs +29 -0
  4. package/esm2022/lib/barcode-format-pipe.mjs +24 -0
  5. package/esm2022/lib/barcode-reader/barcode-reader.component.mjs +62 -0
  6. package/esm2022/lib/barcode-reader-dialog/barcode-reader-dialog.component.mjs +82 -0
  7. package/esm2022/lib/barcode-reader-video/barcode-reader-video.component.mjs +66 -0
  8. package/esm2022/lib/barcode.service.mjs +330 -0
  9. package/{esm2020 → esm2022}/lib/barsa-develop-components.module.mjs +284 -284
  10. package/esm2022/lib/barsa-document-list-item/barsa-document-list-item.component.mjs +104 -0
  11. package/esm2022/lib/barsa-documents/barsa-documents.component.mjs +173 -0
  12. package/esm2022/lib/barsa-geographic-location/barsa-geographic-location.component.mjs +163 -0
  13. package/esm2022/lib/card-content-image-and-title/card-content-image-and-title.component.mjs +50 -0
  14. package/esm2022/lib/card-content-line-chart/card-content-line-chart.component.mjs +37 -0
  15. package/esm2022/lib/card-header-big-image-title-and-subtitle/card-header-big-image-title-and-subtitle.component.mjs +19 -0
  16. package/esm2022/lib/card-header-kpi/card-header-kpi.component.mjs +40 -0
  17. package/esm2022/lib/card-header-logo-title-subtitle/card-header-logo-title-subtitle.component.mjs +45 -0
  18. package/{esm2020 → esm2022}/lib/checkbox-button/checkbox-button.component.mjs +23 -23
  19. package/esm2022/lib/column-form-viewer/column-form-viewer.component.mjs +88 -0
  20. package/{esm2020 → esm2022}/lib/enum-info-micro-proccess-flow/enum-info-micro-proccess-flow.component.mjs +18 -18
  21. package/esm2022/lib/footer/footer.component.mjs +43 -0
  22. package/esm2022/lib/form-card/form-card.component.mjs +17 -0
  23. package/esm2022/lib/form-chart-content/form-chart-content.component.mjs +37 -0
  24. package/esm2022/lib/form-content-quick-view/form-content-quick-view.component.mjs +102 -0
  25. package/esm2022/lib/form-report-view/form-report-view.component.mjs +25 -0
  26. package/esm2022/lib/form-report-view-item/form-report-view-item.component.mjs +45 -0
  27. package/{esm2020 → esm2022}/lib/g4b-details/g4b-details.component.mjs +28 -28
  28. package/esm2022/lib/g4b-estelam/g4b-estelam.component.mjs +30 -0
  29. package/esm2022/lib/geographic-location/geographic-location.component.mjs +85 -0
  30. package/esm2022/lib/login-form/login-form.component.mjs +55 -0
  31. package/{esm2020 → esm2022}/lib/login-social-conncetions/login-social-conncetions.component.mjs +30 -30
  32. package/esm2022/lib/master-detail-card-form/master-detail-card-form.component.mjs +17 -0
  33. package/esm2022/lib/media-file-uploader/media-file-uploader.component.mjs +238 -0
  34. package/esm2022/lib/micro-proccess-flow/micro-proccess-flow.component.mjs +52 -0
  35. package/esm2022/lib/micro-process-flow-view/micro-process-flow-view.component.mjs +24 -0
  36. package/esm2022/lib/mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component.mjs +23 -0
  37. package/esm2022/lib/models/document-item.mjs +2 -0
  38. package/esm2022/lib/models/documents-setting.mjs +2 -0
  39. package/{esm2020 → esm2022}/lib/models/form-report-view-setting.mjs +2 -2
  40. package/{esm2020 → esm2022}/lib/models/index.mjs +8 -8
  41. package/{esm2020 → esm2022}/lib/models/micro-process-flow-view-setting.mjs +2 -2
  42. package/{esm2020 → esm2022}/lib/models/person.mjs +1 -1
  43. package/{esm2020 → esm2022}/lib/models/service-desk-view-of-services-setting.mjs +2 -2
  44. package/{esm2020 → esm2022}/lib/models/tab-process-view-setting.mjs +2 -2
  45. package/{esm2020 → esm2022}/lib/pipes/datasource-to-flow-item.mjs +22 -22
  46. package/{esm2020 → esm2022}/lib/pipes/index.mjs +2 -2
  47. package/{esm2020 → esm2022}/lib/pipes/mo-list-to-flow-item.pipe.mjs +22 -22
  48. package/esm2022/lib/query-string-form-observable/query-string-form-observable.component.mjs +37 -0
  49. package/esm2022/lib/query-string-observable/query-string-observable.component.mjs +22 -0
  50. package/esm2022/lib/report-button-view/report-button-view.component.mjs +37 -0
  51. package/{esm2020 → esm2022}/lib/report-line-chart-view/report-line-chart-view.component.mjs +13 -13
  52. package/esm2022/lib/report-tab-view/report-tab-view.component.mjs +27 -0
  53. package/esm2022/lib/resend-verification-code/resend-verification-code.component.mjs +62 -0
  54. package/{esm2020 → esm2022}/lib/service-desk-card-content-mojavezhay-akhz-shode/service-desk-card-content-mojavezhay-akhz-shode.component.mjs +28 -28
  55. package/esm2022/lib/service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component.mjs +110 -0
  56. package/esm2022/lib/service-desk-header/service-desk-header.component.mjs +240 -0
  57. package/esm2022/lib/service-desk-servcie-detail/service-desk-servcie-detail.component.mjs +142 -0
  58. package/esm2022/lib/service-desk-view-of-services/service-desk-view-of-services.component.mjs +37 -0
  59. package/esm2022/lib/setting-form/setting-form.component.mjs +64 -0
  60. package/esm2022/lib/subform-in-row-report/subform-in-row-report.component.mjs +73 -0
  61. package/esm2022/lib/tab-process-view/tab-process-view.component.mjs +48 -0
  62. package/esm2022/lib/table-view-vertical-columns/table-view-vertical-columns.component.mjs +16 -0
  63. package/esm2022/lib/timer-count-down/timer-count-down.component.mjs +98 -0
  64. package/esm2022/lib/token-report-view/token-report-view.component.mjs +27 -0
  65. package/esm2022/lib/ui-enum-segmented-button/ui-enum-segmented-button.component.mjs +25 -0
  66. package/esm2022/lib/ui-num-rate/ui-num-rate.component.mjs +29 -0
  67. package/esm2022/lib/ui-person/ui-person.component.mjs +160 -0
  68. package/esm2022/lib/ui-person/ui-person.pipe.mjs +40 -0
  69. package/esm2022/lib/ui-pictures-carousel/ui-pictures-carousel.component.mjs +17 -0
  70. package/esm2022/lib/ui-text-field-search/ui-text-field-search.component.mjs +42 -0
  71. package/esm2022/lib/ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component.mjs +69 -0
  72. package/{esm2020 → esm2022}/public-api.mjs +62 -62
  73. package/fesm2022/barsa-develop-components.mjs +3626 -0
  74. package/fesm2022/barsa-develop-components.mjs.map +1 -0
  75. package/index.d.ts +5 -5
  76. package/lib/accept-reject/accept-reject.component.d.ts +28 -28
  77. package/lib/avatar/avatar.component.d.ts +12 -12
  78. package/lib/barcode-format-pipe.d.ts +7 -7
  79. package/lib/barcode-reader/barcode-reader.component.d.ts +19 -19
  80. package/lib/barcode-reader-dialog/barcode-reader-dialog.component.d.ts +32 -32
  81. package/lib/barcode-reader-video/barcode-reader-video.component.d.ts +22 -22
  82. package/lib/barcode.service.d.ts +98 -98
  83. package/lib/barsa-develop-components.module.d.ts +117 -117
  84. package/lib/barsa-document-list-item/barsa-document-list-item.component.d.ts +39 -39
  85. package/lib/barsa-documents/barsa-documents.component.d.ts +47 -47
  86. package/lib/barsa-geographic-location/barsa-geographic-location.component.d.ts +45 -46
  87. package/lib/card-content-image-and-title/card-content-image-and-title.component.d.ts +18 -18
  88. package/lib/card-content-line-chart/card-content-line-chart.component.d.ts +9 -9
  89. package/lib/card-header-big-image-title-and-subtitle/card-header-big-image-title-and-subtitle.component.d.ts +6 -6
  90. package/lib/card-header-kpi/card-header-kpi.component.d.ts +14 -14
  91. package/lib/card-header-logo-title-subtitle/card-header-logo-title-subtitle.component.d.ts +23 -23
  92. package/lib/checkbox-button/checkbox-button.component.d.ts +13 -13
  93. package/lib/column-form-viewer/column-form-viewer.component.d.ts +30 -30
  94. package/lib/enum-info-micro-proccess-flow/enum-info-micro-proccess-flow.component.d.ts +8 -8
  95. package/lib/footer/footer.component.d.ts +15 -15
  96. package/lib/form-card/form-card.component.d.ts +8 -8
  97. package/lib/form-chart-content/form-chart-content.component.d.ts +9 -9
  98. package/lib/form-content-quick-view/form-content-quick-view.component.d.ts +18 -18
  99. package/lib/form-report-view/form-report-view.component.d.ts +13 -13
  100. package/lib/form-report-view-item/form-report-view-item.component.d.ts +15 -15
  101. package/lib/g4b-details/g4b-details.component.d.ts +9 -9
  102. package/lib/g4b-estelam/g4b-estelam.component.d.ts +11 -11
  103. package/lib/geographic-location/geographic-location.component.d.ts +33 -34
  104. package/lib/login-form/login-form.component.d.ts +12 -12
  105. package/lib/login-social-conncetions/login-social-conncetions.component.d.ts +12 -12
  106. package/lib/master-detail-card-form/master-detail-card-form.component.d.ts +8 -8
  107. package/lib/media-file-uploader/media-file-uploader.component.d.ts +52 -52
  108. package/lib/micro-proccess-flow/micro-proccess-flow.component.d.ts +28 -28
  109. package/lib/micro-process-flow-view/micro-process-flow-view.component.d.ts +14 -14
  110. package/lib/mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component.d.ts +9 -9
  111. package/lib/models/document-item.d.ts +19 -19
  112. package/lib/models/documents-setting.d.ts +11 -11
  113. package/lib/models/form-report-view-setting.d.ts +7 -7
  114. package/lib/models/index.d.ts +7 -7
  115. package/lib/models/micro-process-flow-view-setting.d.ts +8 -8
  116. package/lib/models/person.d.ts +10 -10
  117. package/lib/models/service-desk-view-of-services-setting.d.ts +6 -6
  118. package/lib/models/tab-process-view-setting.d.ts +7 -7
  119. package/lib/pipes/datasource-to-flow-item.d.ts +10 -10
  120. package/lib/pipes/index.d.ts +2 -2
  121. package/lib/pipes/mo-list-to-flow-item.pipe.d.ts +10 -10
  122. package/lib/query-string-form-observable/query-string-form-observable.component.d.ts +13 -13
  123. package/lib/query-string-observable/query-string-observable.component.d.ts +9 -9
  124. package/lib/report-button-view/report-button-view.component.d.ts +12 -12
  125. package/lib/report-line-chart-view/report-line-chart-view.component.d.ts +7 -7
  126. package/lib/report-tab-view/report-tab-view.component.d.ts +15 -15
  127. package/lib/resend-verification-code/resend-verification-code.component.d.ts +19 -18
  128. package/lib/service-desk-card-content-mojavezhay-akhz-shode/service-desk-card-content-mojavezhay-akhz-shode.component.d.ts +15 -15
  129. package/lib/service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component.d.ts +26 -26
  130. package/lib/service-desk-header/service-desk-header.component.d.ts +63 -63
  131. package/lib/service-desk-servcie-detail/service-desk-servcie-detail.component.d.ts +39 -39
  132. package/lib/service-desk-view-of-services/service-desk-view-of-services.component.d.ts +16 -16
  133. package/lib/setting-form/setting-form.component.d.ts +20 -20
  134. package/lib/subform-in-row-report/subform-in-row-report.component.d.ts +22 -21
  135. package/lib/tab-process-view/tab-process-view.component.d.ts +20 -20
  136. package/lib/table-view-vertical-columns/table-view-vertical-columns.component.d.ts +6 -6
  137. package/lib/timer-count-down/timer-count-down.component.d.ts +15 -15
  138. package/lib/token-report-view/token-report-view.component.d.ts +15 -15
  139. package/lib/ui-enum-segmented-button/ui-enum-segmented-button.component.d.ts +9 -9
  140. package/lib/ui-num-rate/ui-num-rate.component.d.ts +9 -9
  141. package/lib/ui-person/ui-person.component.d.ts +31 -31
  142. package/lib/ui-person/ui-person.pipe.d.ts +7 -7
  143. package/lib/ui-pictures-carousel/ui-pictures-carousel.component.d.ts +6 -6
  144. package/lib/ui-text-field-search/ui-text-field-search.component.d.ts +17 -17
  145. package/lib/ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component.d.ts +25 -25
  146. package/package.json +7 -13
  147. package/public-api.d.ts +58 -58
  148. package/esm2020/lib/accept-reject/accept-reject.component.mjs +0 -69
  149. package/esm2020/lib/avatar/avatar.component.mjs +0 -29
  150. package/esm2020/lib/barcode-format-pipe.mjs +0 -24
  151. package/esm2020/lib/barcode-reader/barcode-reader.component.mjs +0 -62
  152. package/esm2020/lib/barcode-reader-dialog/barcode-reader-dialog.component.mjs +0 -82
  153. package/esm2020/lib/barcode-reader-video/barcode-reader-video.component.mjs +0 -66
  154. package/esm2020/lib/barcode.service.mjs +0 -330
  155. package/esm2020/lib/barsa-document-list-item/barsa-document-list-item.component.mjs +0 -104
  156. package/esm2020/lib/barsa-documents/barsa-documents.component.mjs +0 -173
  157. package/esm2020/lib/barsa-geographic-location/barsa-geographic-location.component.mjs +0 -174
  158. package/esm2020/lib/card-content-image-and-title/card-content-image-and-title.component.mjs +0 -51
  159. package/esm2020/lib/card-content-line-chart/card-content-line-chart.component.mjs +0 -38
  160. package/esm2020/lib/card-header-big-image-title-and-subtitle/card-header-big-image-title-and-subtitle.component.mjs +0 -20
  161. package/esm2020/lib/card-header-kpi/card-header-kpi.component.mjs +0 -41
  162. package/esm2020/lib/card-header-logo-title-subtitle/card-header-logo-title-subtitle.component.mjs +0 -46
  163. package/esm2020/lib/column-form-viewer/column-form-viewer.component.mjs +0 -88
  164. package/esm2020/lib/footer/footer.component.mjs +0 -44
  165. package/esm2020/lib/form-card/form-card.component.mjs +0 -18
  166. package/esm2020/lib/form-chart-content/form-chart-content.component.mjs +0 -38
  167. package/esm2020/lib/form-content-quick-view/form-content-quick-view.component.mjs +0 -102
  168. package/esm2020/lib/form-report-view/form-report-view.component.mjs +0 -26
  169. package/esm2020/lib/form-report-view-item/form-report-view-item.component.mjs +0 -45
  170. package/esm2020/lib/g4b-estelam/g4b-estelam.component.mjs +0 -30
  171. package/esm2020/lib/geographic-location/geographic-location.component.mjs +0 -88
  172. package/esm2020/lib/login-form/login-form.component.mjs +0 -55
  173. package/esm2020/lib/master-detail-card-form/master-detail-card-form.component.mjs +0 -17
  174. package/esm2020/lib/media-file-uploader/media-file-uploader.component.mjs +0 -238
  175. package/esm2020/lib/micro-proccess-flow/micro-proccess-flow.component.mjs +0 -53
  176. package/esm2020/lib/micro-process-flow-view/micro-process-flow-view.component.mjs +0 -24
  177. package/esm2020/lib/mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component.mjs +0 -23
  178. package/esm2020/lib/models/document-item.mjs +0 -2
  179. package/esm2020/lib/models/documents-setting.mjs +0 -2
  180. package/esm2020/lib/query-string-form-observable/query-string-form-observable.component.mjs +0 -37
  181. package/esm2020/lib/query-string-observable/query-string-observable.component.mjs +0 -22
  182. package/esm2020/lib/report-button-view/report-button-view.component.mjs +0 -38
  183. package/esm2020/lib/report-tab-view/report-tab-view.component.mjs +0 -28
  184. package/esm2020/lib/resend-verification-code/resend-verification-code.component.mjs +0 -59
  185. package/esm2020/lib/service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component.mjs +0 -110
  186. package/esm2020/lib/service-desk-header/service-desk-header.component.mjs +0 -236
  187. package/esm2020/lib/service-desk-servcie-detail/service-desk-servcie-detail.component.mjs +0 -142
  188. package/esm2020/lib/service-desk-view-of-services/service-desk-view-of-services.component.mjs +0 -37
  189. package/esm2020/lib/setting-form/setting-form.component.mjs +0 -64
  190. package/esm2020/lib/subform-in-row-report/subform-in-row-report.component.mjs +0 -65
  191. package/esm2020/lib/tab-process-view/tab-process-view.component.mjs +0 -49
  192. package/esm2020/lib/table-view-vertical-columns/table-view-vertical-columns.component.mjs +0 -16
  193. package/esm2020/lib/timer-count-down/timer-count-down.component.mjs +0 -98
  194. package/esm2020/lib/token-report-view/token-report-view.component.mjs +0 -27
  195. package/esm2020/lib/ui-enum-segmented-button/ui-enum-segmented-button.component.mjs +0 -25
  196. package/esm2020/lib/ui-num-rate/ui-num-rate.component.mjs +0 -29
  197. package/esm2020/lib/ui-person/ui-person.component.mjs +0 -160
  198. package/esm2020/lib/ui-person/ui-person.pipe.mjs +0 -40
  199. package/esm2020/lib/ui-pictures-carousel/ui-pictures-carousel.component.mjs +0 -17
  200. package/esm2020/lib/ui-text-field-search/ui-text-field-search.component.mjs +0 -42
  201. package/esm2020/lib/ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component.mjs +0 -70
  202. package/fesm2015/barsa-develop-components.mjs +0 -3660
  203. package/fesm2015/barsa-develop-components.mjs.map +0 -1
  204. package/fesm2020/barsa-develop-components.mjs +0 -3625
  205. package/fesm2020/barsa-develop-components.mjs.map +0 -1
@@ -1,104 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { AudioMimeType, BaseComponent, ImageMimeType, PreventDefaulEvent, VideoMimeType, AllFilesMimeType, isImage, getIcon } from 'barsa-novin-ray-core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "barsa-novin-ray-core";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "barsa-sap-ui";
7
- import * as i4 from "@fundamental-ngx/core/action-sheet";
8
- import * as i5 from "@fundamental-ngx/core/avatar";
9
- import * as i6 from "@fundamental-ngx/core/button";
10
- import * as i7 from "@fundamental-ngx/core/file-uploader";
11
- import * as i8 from "@fundamental-ngx/core/form";
12
- import * as i9 from "@fundamental-ngx/core/inline-help";
13
- import * as i10 from "@fundamental-ngx/core/object-status";
14
- import * as i11 from "@fundamental-ngx/core/table";
15
- import * as i12 from "@fundamental-ngx/core/toolbar";
16
- export class BarsaDocumentListItemComponent extends BaseComponent {
17
- constructor(_cdr, _picFieldSrc) {
18
- super();
19
- this._cdr = _cdr;
20
- this._picFieldSrc = _picFieldSrc;
21
- this.statusChanged = new EventEmitter();
22
- this.rejectTextChange = new EventEmitter();
23
- this.fileSelectionChange = new EventEmitter();
24
- this.removeFile = new EventEmitter();
25
- this.fullscreen = new EventEmitter();
26
- this.download = new EventEmitter();
27
- this.downloadAll = new EventEmitter();
28
- this.hasFiles = false;
29
- }
30
- ngOnInit() {
31
- super.ngOnInit();
32
- const documentItem = this.documentItem;
33
- documentItem.$ValidExtensions = `
34
- ${documentItem.SupportImage ? ImageMimeType : ''},
35
- ${documentItem.SupportAudio ? AudioMimeType : ''},
36
- ${documentItem.SupportVideo ? VideoMimeType : ''},
37
- ${documentItem.SupportFile ? AllFilesMimeType : ''}
38
- `;
39
- }
40
- ngOnChanges(changes) {
41
- super.ngOnChanges(changes);
42
- const { files } = changes;
43
- files && Array.isArray(files.currentValue) && this._setFirstImage(files.currentValue);
44
- this._detectChanges();
45
- }
46
- onReject(e) {
47
- this.statusChanged.emit({ value: e, rejectedText: e === 2 ? '' : this.rejectedReason });
48
- }
49
- onRejectedTextChange(e) {
50
- this.rejectTextChange.emit(e.target.value);
51
- }
52
- onPreventClick(e) {
53
- PreventDefaulEvent(e);
54
- }
55
- onFileSelection(files) {
56
- this.fileSelectionChange.emit(files);
57
- }
58
- _setFirstImage(files) {
59
- files.length &&
60
- (this.firstImageUrl = isImage(files[0].Type)
61
- ? this._picFieldSrc.transform(files[0].Id, 'ID', null, '', 120, 120)
62
- : getIcon(files[0].Type));
63
- }
64
- _detectChanges() {
65
- this._cdr.detectChanges();
66
- }
67
- }
68
- BarsaDocumentListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDocumentListItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PictureFieldSourcePipe }], target: i0.ɵɵFactoryTarget.Component });
69
- BarsaDocumentListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaDocumentListItemComponent, selector: "bdc-barsa-document-list-item", inputs: { documentItem: "documentItem", deviceSize: "deviceSize", files: "files", accepted: "accepted", rejectedReason: "rejectedReason", readonly: "readonly", status: "status", uploadingState: "uploadingState" }, outputs: { statusChanged: "statusChanged", rejectTextChange: "rejectTextChange", fileSelectionChange: "fileSelectionChange", removeFile: "removeFile", fullscreen: "fullscreen", download: "download", downloadAll: "downloadAll" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <li fd-list-item style=\"padding: 0.5rem 1rem\">\n <span fd-list-thumbnail>\n <fd-icon *ngIf=\"documentItem.FontIcon\" [glyph]=\"documentItem.FontIcon\"></fd-icon>\n <fd-avatar\n *ngIf=\"documentItem.Avatar\"\n size=\"s\"\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:''\"\n [clickable]=\"true\"\n ></fd-avatar\n ></span>\n \n <div fd-list-content>\n <div fd-list-title>\n <div style=\"display: flex; column-gap: 3px\">\n <strong\n >{{ documentItem.Title }}\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\n </span>\n </strong>\n <div\n *ngIf=\"documentItem.$Accepted === false || documentItem.$Accepted === true\"\n style=\"display: flex; column-gap: 3px; flex-wrap: wrap; align-items: center\"\n >\n <span\n fd-object-status\n [status]=\"accepted ? 'positive' : 'negative'\"\n [label]=\"accepted ? acceptedText : rejectedText\"\n [clickable]=\"true\"\n [inverted]=\"true\"\n [aria-label]=\"accepted ? acceptedText : rejectedText\"\n ></span>\n <fd-popover title=\"Rejected document\" *ngIf=\"rejectedReason && !accepted\">\n <fd-popover-control>\n <span\n fd-object-status\n status=\"negative\"\n glyph=\"question-mark\"\n glyphAriaLabel=\"Negative\"\n title=\"Rejected document\"\n ></span>\n </fd-popover-control>\n <fd-popover-body>\n <fd-message-strip type=\"error\" [dismissible]=\"false\">\n {{ rejectedReason }}\n </fd-message-strip>\n </fd-popover-body>\n </fd-popover>\n </div>\n </div>\n </div>\n <div fd-list-byline [twoCol]=\"true\" [class.smallSize]=\"deviceSize === 's'\">\n <div fd-list-byline-left>\n <div style=\"display: flex; flex-direction: column; row-gap: 5px; flex-wrap: wrap\">\n <span>\n {{ documentItem.Description }}\n </span>\n <div style=\"display: flex; flex-wrap: wrap; column-gap: 3px; align-items: center\">\n <ng-container *ngIf=\"hasFiles\">\n <button fd-button [fdType]=\"'transparent'\" glyph=\"show\" (click)=\"onFullscreen()\"></button>\n <ng-container *ngFor=\"let file of files\">\n <fd-token\n [readOnly]=\"readonly\"\n *ngIf=\"!file.IsDeleted\"\n (onCloseClick)=\"onRemoveFile(file)\"\n >{{ file.FileName }}</fd-token\n >\n </ng-container>\n </ng-container>\n <button\n fd-button\n *ngIf=\"documentItem.MaxFileCount && !readonly\"\n glyph=\"attachment\"\n [label]=\"'AttachFile' | bbbTranslate\"\n (click)=\"!readonly && uploader.open()\"\n ></button>\n <fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"documentItem.ItemKey\"\n [name]=\"'pictures_' + documentItem.ItemKey\"\n [accept]=\"documentItem.$ValidExtensions\"\n [fileLimit]=\"documentItem.MaxFileCount\"\n [multiple]=\"documentItem.MaxFileCount > 0\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n ></fd-file-uploader>\n </div>\n </div>\n </div>\n <div fd-list-byline-right *ngIf=\"documentItem.CanAccept\">\n <bdc-accept-reject\n [rejectedReason]=\"rejectedReason\"\n [positiveText]=\"acceptedText\"\n [negativeText]=\"rejectedText\"\n [deviceSize]=\"deviceSize\"\n [readonly]=\"readonly\"\n ></bdc-accept-reject>\n </div>\n </div>\n </div>\n</li> -->\n\n<tr fd-table-row>\n <td fd-table-cell>\n <fd-avatar\n *ngIf=\"documentItem.Avatar && !files.length; else fontIconTpl\"\n size=\"s\"\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:'':64:64\"\n [clickable]=\"true\"\n [transparent]=\"true\"\n ></fd-avatar>\n <ng-template #fontIconTpl>\n <fd-avatar\n *ngIf=\"files.length\"\n [transparent]=\"true\"\n size=\"s\"\n [image]=\"firstImageUrl\"\n [clickable]=\"true\"\n ></fd-avatar>\n <fd-avatar\n *ngIf=\"!files.length\"\n [transparent]=\"true\"\n size=\"s\"\n [glyph]=\"documentItem.FontIcon\"\n [clickable]=\"true\"\n ></fd-avatar>\n </ng-template>\n </td>\n <td fd-table-cell style=\"min-width: 140px\">\n <p fd-table-text>\n <strong\n >{{ documentItem.Title }}\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\n </span>\n </strong>\n </p>\n <div>\n <span>\n {{ documentItem.Description }}\n </span>\n </div>\n </td>\n\n <td fd-table-cell>\n <ng-container>\n <!-- <ul fd-list>\n <li fd-list-item *ngFor=\"let file of files; let ind = index\">\n <span fd-list-title>\n {{ file.FileName }}\n </span>\n <span fd-list-secondary>\n <button ariaLabel=\"Remove\" title=\"Remove\" fd-button glyph=\"delete\" ></button>\n </span>\n </li>\n </ul> -->\n <div style=\"display: flex; align-items: flex-start; column-gap: 3px; row-gap: 3px; flex-direction: column\">\n <ng-container *ngFor=\"let file of files\">\n <!-- <span><fd-icon glyph=\"attachment\"></fd-icon><a fd-link>{{file.FileName}}</a></span> -->\n <bsu-file-viewer-popover\n *ngIf=\"!file.IsDeleted\"\n [file]=\"file\"\n [deviceSize]=\"deviceSize\"\n [canDownload]=\"true\"\n (remove)=\"removeFile.emit(file)\"\n ></bsu-file-viewer-popover>\n </ng-container>\n <!-- <button\n fd-button\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\n glyph=\"add\"\n (click)=\"!readonly && uploader.open()\"\n ></button> -->\n </div>\n <!-- <p *ngFor=\"let file of files\" fd-table-text>\n <fd-action-sheet >\n <fd-action-sheet-control>\n <button\n fd-button\n glyph=\"settings\"\n title=\"Open Action Sheet Mobile\"\n id=\"fd-action-sheet-mobile-control\"\n aria-haspopup=\"menu\"\n [label]=\"file.FileName ||''\"\n aria-controls=\"fd-action-sheet-mobile-body\"\n ></button>\n </fd-action-sheet-control>\n \n <fd-action-sheet-body\n actionSheetBodyId=\"fd-action-sheet-mobile-body\"\n ariaLabelledBy=\"fd-action-sheet-mobile-control\"\n >\n <li fd-action-sheet-item label=\"Search\" glyph=\"search\"></li>\n <li fd-action-sheet-item label=\"Download\" glyph=\"download\" ></li>\n <li fd-action-sheet-item label=\"Accept\" glyph=\"accept\" ></li>\n <li fd-action-sheet-item label=\"Reject\" glyph=\"cancel\" ></li>\n <li fd-action-sheet-item label=\"Decide Later\" [isCloseButton]=\"true\"></li>\n <li fd-action-sheet-item label=\"Cancel\" [negative]=\"true\" [isCloseButton]=\"true\"></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n </p> -->\n </ng-container>\n </td>\n <td fd-table-cell>\n <div class=\"status\" style=\"position: relative\">\n <button\n fd-button\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\n glyph=\"attachment\"\n [label]=\"'AttachFile' | bbbTranslate\"\n [disabled]=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\n (click)=\"!readonly && uploader.open()\"\n >\n <bsu-mask\n *ngIf=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\n [marginTop]=\"'3px'\"\n ></bsu-mask>\n </button>\n <button\n fd-button\n glyph=\"show\"\n fullscreenFiles\n [files]=\"files\"\n [title]=\"documentItem.Title\"\n [fd-inline-help]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n [aria-describedby]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n [ariaLabel]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n fullscreenFiles\n [disabled]=\"!files.length\"\n [files]=\"files\"\n ></button>\n <button\n fd-button\n glyph=\"download\"\n [fd-inline-help]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n [aria-describedby]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n [ariaLabel]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n downloadFiles\n [disabled]=\"!files.length\"\n [files]=\"files\"\n (click)=\"downloadAll.emit()\"\n ></button>\n </div>\n </td>\n <td fd-table-cell>\n <fd-action-sheet #actionSheet>\n <fd-action-sheet-control>\n <ng-container *ngTemplateOutlet=\"statusTpl\"></ng-container>\n </fd-action-sheet-control>\n <fd-action-sheet-body>\n <li\n fd-action-sheet-item\n [label]=\"'Accept' | bbbTranslate\"\n glyph=\"accept\"\n (click)=\"actionSheet.close(); onReject(2)\"\n ></li>\n <li\n fd-action-sheet-item\n [label]=\"'Reject' | bbbTranslate\"\n glyph=\"cancel\"\n (click)=\"actionSheet.close(); onReject(3)\"\n ></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n\n <p fd-table-text maxWidth=\"400px\" *ngIf=\"status === 3\">\n <span *ngIf=\"readonly && rejectedReason\"> {{ rejectedReason | bbbTranslate }} </span>\n <input\n *ngIf=\"!readonly\"\n fd-form-control\n [value]=\"rejectedReason | bbbTranslate\"\n [placeholder]=\"'\u062F\u0644\u0627\u06CC\u0644 \u0631\u062F \u0645\u062F\u0631\u06A9' | bbbTranslate\"\n />\n </p>\n </td>\n</tr>\n\n<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"documentItem.ItemKey\"\n [name]=\"'pictures_' + documentItem.ItemKey\"\n [accept]=\"documentItem.$ValidExtensions\"\n [fileLimit]=\"documentItem.MaxFileCount\"\n [multiple]=\"documentItem.MaxFileCount > 0\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n<ng-template #statusTpl>\n <div class=\"status\">\n <button fd-button fdType=\"transparent\">\n <span\n *ngIf=\"status === 1\"\n fd-object-status\n [label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\n [aria-label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\n ></span>\n <span\n *ngIf=\"status === 2\"\n fd-object-status\n glyph=\"message-success\"\n status=\"positive\"\n [label]=\"'Accepted' | bbbTranslate\"\n [label]=\"'Accepted' | bbbTranslate\"\n ></span>\n <span\n *ngIf=\"status === 3\"\n fd-object-status\n glyph=\"cancel\"\n status=\"negative\"\n [label]=\"'Rejected' | bbbTranslate\"\n [aria-label]=\"'Rejected' | bbbTranslate\"\n ></span>\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:contents}::ng-deep .fd-list--byline .fd-list__byline-left,::ng-deep .fd-list--byline .fd-list__byline-right{line-height:1.1rem!important}.fd-list__byline.smallSize{flex-direction:column;row-gap:5px}.fd-list__byline.smallSize div{width:100%}td{white-space:nowrap;padding:.5rem}fd-avatar ::ng-deep i{font-size:2.3rem!important}.status{display:flex;align-items:center;column-gap:3px;row-gap:3px}.status span.fd-object-status{font-size:var(--sapFontSize)!important;font-weight:700!important}.status span.fd-object-status ::ng-deep fd-icon{font-size:var(--sapFontSize);font-weight:700}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i3.FileViewerPopoverComponent, selector: "bsu-file-viewer-popover", inputs: ["files", "file", "deviceSize", "canDownload", "disableRemove", "fdType"], outputs: ["remove"] }, { kind: "directive", type: i3.FullscreenFilesDirective, selector: "[fullscreenFiles]", inputs: ["files", "title", "deviceSize", "isImageGallery", "component"] }, { kind: "directive", type: i3.DownloadFilesDirective, selector: "[downloadFiles]", inputs: ["files"] }, { kind: "component", type: i4.ActionSheetComponent, selector: "fd-action-sheet", inputs: ["mobile", "placement", "noArrow", "isOpen", "keyboardSupport", "triggers"], outputs: ["focusEscapeList", "isOpenChange"] }, { kind: "component", type: i4.ActionSheetControlComponent, selector: "fd-action-sheet-control", outputs: ["clicked"] }, { kind: "component", type: i4.ActionSheetItemComponent, selector: "[fd-action-sheet-item]", inputs: ["label", "glyph", "negative", "isCloseButton", "disabled"], outputs: ["keyDown"] }, { kind: "component", type: i4.ActionSheetBodyComponent, selector: "fd-action-sheet-body", inputs: ["actionSheetBodyId", "mobile", "ariaLabel", "ariaLabelledby"] }, { kind: "component", type: i5.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "backgroundImage", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "component", type: i8.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class"] }, { kind: "directive", type: i8.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "directive", type: i9.InlineHelpDirective, selector: "[fd-inline-help], [fd-inline-help-template]", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help", "fd-inline-help-template"] }, { kind: "component", type: i10.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "directive", type: i11.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i11.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "directive", type: i11.TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "directive", type: i12.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDocumentListItemComponent, decorators: [{
71
- type: Component,
72
- args: [{ selector: 'bdc-barsa-document-list-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <li fd-list-item style=\"padding: 0.5rem 1rem\">\n <span fd-list-thumbnail>\n <fd-icon *ngIf=\"documentItem.FontIcon\" [glyph]=\"documentItem.FontIcon\"></fd-icon>\n <fd-avatar\n *ngIf=\"documentItem.Avatar\"\n size=\"s\"\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:''\"\n [clickable]=\"true\"\n ></fd-avatar\n ></span>\n \n <div fd-list-content>\n <div fd-list-title>\n <div style=\"display: flex; column-gap: 3px\">\n <strong\n >{{ documentItem.Title }}\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\n </span>\n </strong>\n <div\n *ngIf=\"documentItem.$Accepted === false || documentItem.$Accepted === true\"\n style=\"display: flex; column-gap: 3px; flex-wrap: wrap; align-items: center\"\n >\n <span\n fd-object-status\n [status]=\"accepted ? 'positive' : 'negative'\"\n [label]=\"accepted ? acceptedText : rejectedText\"\n [clickable]=\"true\"\n [inverted]=\"true\"\n [aria-label]=\"accepted ? acceptedText : rejectedText\"\n ></span>\n <fd-popover title=\"Rejected document\" *ngIf=\"rejectedReason && !accepted\">\n <fd-popover-control>\n <span\n fd-object-status\n status=\"negative\"\n glyph=\"question-mark\"\n glyphAriaLabel=\"Negative\"\n title=\"Rejected document\"\n ></span>\n </fd-popover-control>\n <fd-popover-body>\n <fd-message-strip type=\"error\" [dismissible]=\"false\">\n {{ rejectedReason }}\n </fd-message-strip>\n </fd-popover-body>\n </fd-popover>\n </div>\n </div>\n </div>\n <div fd-list-byline [twoCol]=\"true\" [class.smallSize]=\"deviceSize === 's'\">\n <div fd-list-byline-left>\n <div style=\"display: flex; flex-direction: column; row-gap: 5px; flex-wrap: wrap\">\n <span>\n {{ documentItem.Description }}\n </span>\n <div style=\"display: flex; flex-wrap: wrap; column-gap: 3px; align-items: center\">\n <ng-container *ngIf=\"hasFiles\">\n <button fd-button [fdType]=\"'transparent'\" glyph=\"show\" (click)=\"onFullscreen()\"></button>\n <ng-container *ngFor=\"let file of files\">\n <fd-token\n [readOnly]=\"readonly\"\n *ngIf=\"!file.IsDeleted\"\n (onCloseClick)=\"onRemoveFile(file)\"\n >{{ file.FileName }}</fd-token\n >\n </ng-container>\n </ng-container>\n <button\n fd-button\n *ngIf=\"documentItem.MaxFileCount && !readonly\"\n glyph=\"attachment\"\n [label]=\"'AttachFile' | bbbTranslate\"\n (click)=\"!readonly && uploader.open()\"\n ></button>\n <fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"documentItem.ItemKey\"\n [name]=\"'pictures_' + documentItem.ItemKey\"\n [accept]=\"documentItem.$ValidExtensions\"\n [fileLimit]=\"documentItem.MaxFileCount\"\n [multiple]=\"documentItem.MaxFileCount > 0\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n ></fd-file-uploader>\n </div>\n </div>\n </div>\n <div fd-list-byline-right *ngIf=\"documentItem.CanAccept\">\n <bdc-accept-reject\n [rejectedReason]=\"rejectedReason\"\n [positiveText]=\"acceptedText\"\n [negativeText]=\"rejectedText\"\n [deviceSize]=\"deviceSize\"\n [readonly]=\"readonly\"\n ></bdc-accept-reject>\n </div>\n </div>\n </div>\n</li> -->\n\n<tr fd-table-row>\n <td fd-table-cell>\n <fd-avatar\n *ngIf=\"documentItem.Avatar && !files.length; else fontIconTpl\"\n size=\"s\"\n [image]=\"documentItem.Avatar.FileId | picFieldSrc: 'ID':null:'':64:64\"\n [clickable]=\"true\"\n [transparent]=\"true\"\n ></fd-avatar>\n <ng-template #fontIconTpl>\n <fd-avatar\n *ngIf=\"files.length\"\n [transparent]=\"true\"\n size=\"s\"\n [image]=\"firstImageUrl\"\n [clickable]=\"true\"\n ></fd-avatar>\n <fd-avatar\n *ngIf=\"!files.length\"\n [transparent]=\"true\"\n size=\"s\"\n [glyph]=\"documentItem.FontIcon\"\n [clickable]=\"true\"\n ></fd-avatar>\n </ng-template>\n </td>\n <td fd-table-cell style=\"min-width: 140px\">\n <p fd-table-text>\n <strong\n >{{ documentItem.Title }}\n <span fd-object-status status=\"negative\" *ngIf=\"documentItem.IsRequired\"\n >*({{ '\u0627\u062C\u0628\u0627\u0631\u06CC' | bbbTranslate }})\n </span>\n </strong>\n </p>\n <div>\n <span>\n {{ documentItem.Description }}\n </span>\n </div>\n </td>\n\n <td fd-table-cell>\n <ng-container>\n <!-- <ul fd-list>\n <li fd-list-item *ngFor=\"let file of files; let ind = index\">\n <span fd-list-title>\n {{ file.FileName }}\n </span>\n <span fd-list-secondary>\n <button ariaLabel=\"Remove\" title=\"Remove\" fd-button glyph=\"delete\" ></button>\n </span>\n </li>\n </ul> -->\n <div style=\"display: flex; align-items: flex-start; column-gap: 3px; row-gap: 3px; flex-direction: column\">\n <ng-container *ngFor=\"let file of files\">\n <!-- <span><fd-icon glyph=\"attachment\"></fd-icon><a fd-link>{{file.FileName}}</a></span> -->\n <bsu-file-viewer-popover\n *ngIf=\"!file.IsDeleted\"\n [file]=\"file\"\n [deviceSize]=\"deviceSize\"\n [canDownload]=\"true\"\n (remove)=\"removeFile.emit(file)\"\n ></bsu-file-viewer-popover>\n </ng-container>\n <!-- <button\n fd-button\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\n glyph=\"add\"\n (click)=\"!readonly && uploader.open()\"\n ></button> -->\n </div>\n <!-- <p *ngFor=\"let file of files\" fd-table-text>\n <fd-action-sheet >\n <fd-action-sheet-control>\n <button\n fd-button\n glyph=\"settings\"\n title=\"Open Action Sheet Mobile\"\n id=\"fd-action-sheet-mobile-control\"\n aria-haspopup=\"menu\"\n [label]=\"file.FileName ||''\"\n aria-controls=\"fd-action-sheet-mobile-body\"\n ></button>\n </fd-action-sheet-control>\n \n <fd-action-sheet-body\n actionSheetBodyId=\"fd-action-sheet-mobile-body\"\n ariaLabelledBy=\"fd-action-sheet-mobile-control\"\n >\n <li fd-action-sheet-item label=\"Search\" glyph=\"search\"></li>\n <li fd-action-sheet-item label=\"Download\" glyph=\"download\" ></li>\n <li fd-action-sheet-item label=\"Accept\" glyph=\"accept\" ></li>\n <li fd-action-sheet-item label=\"Reject\" glyph=\"cancel\" ></li>\n <li fd-action-sheet-item label=\"Decide Later\" [isCloseButton]=\"true\"></li>\n <li fd-action-sheet-item label=\"Cancel\" [negative]=\"true\" [isCloseButton]=\"true\"></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n </p> -->\n </ng-container>\n </td>\n <td fd-table-cell>\n <div class=\"status\" style=\"position: relative\">\n <button\n fd-button\n *ngIf=\"+documentItem.MaxFileCount && !readonly\"\n glyph=\"attachment\"\n [label]=\"'AttachFile' | bbbTranslate\"\n [disabled]=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\n (click)=\"!readonly && uploader.open()\"\n >\n <bsu-mask\n *ngIf=\"uploadingState?.key === documentItem.Title && uploadingState?.uploading\"\n [marginTop]=\"'3px'\"\n ></bsu-mask>\n </button>\n <button\n fd-button\n glyph=\"show\"\n fullscreenFiles\n [files]=\"files\"\n [title]=\"documentItem.Title\"\n [fd-inline-help]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n [aria-describedby]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n [ariaLabel]=\"'\u0645\u0634\u0627\u0647\u062F\u0647 \u0647\u0645\u0647' | bbbTranslate\"\n fullscreenFiles\n [disabled]=\"!files.length\"\n [files]=\"files\"\n ></button>\n <button\n fd-button\n glyph=\"download\"\n [fd-inline-help]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n [aria-describedby]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n [ariaLabel]=\"'\u062F\u0627\u0646\u0644\u0648\u062F \u0647\u0645\u0647' | bbbTranslate\"\n downloadFiles\n [disabled]=\"!files.length\"\n [files]=\"files\"\n (click)=\"downloadAll.emit()\"\n ></button>\n </div>\n </td>\n <td fd-table-cell>\n <fd-action-sheet #actionSheet>\n <fd-action-sheet-control>\n <ng-container *ngTemplateOutlet=\"statusTpl\"></ng-container>\n </fd-action-sheet-control>\n <fd-action-sheet-body>\n <li\n fd-action-sheet-item\n [label]=\"'Accept' | bbbTranslate\"\n glyph=\"accept\"\n (click)=\"actionSheet.close(); onReject(2)\"\n ></li>\n <li\n fd-action-sheet-item\n [label]=\"'Reject' | bbbTranslate\"\n glyph=\"cancel\"\n (click)=\"actionSheet.close(); onReject(3)\"\n ></li>\n </fd-action-sheet-body>\n </fd-action-sheet>\n\n <p fd-table-text maxWidth=\"400px\" *ngIf=\"status === 3\">\n <span *ngIf=\"readonly && rejectedReason\"> {{ rejectedReason | bbbTranslate }} </span>\n <input\n *ngIf=\"!readonly\"\n fd-form-control\n [value]=\"rejectedReason | bbbTranslate\"\n [placeholder]=\"'\u062F\u0644\u0627\u06CC\u0644 \u0631\u062F \u0645\u062F\u0631\u06A9' | bbbTranslate\"\n />\n </p>\n </td>\n</tr>\n\n<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n fd-toolbar-item\n [id]=\"documentItem.ItemKey\"\n [name]=\"'pictures_' + documentItem.ItemKey\"\n [accept]=\"documentItem.$ValidExtensions\"\n [fileLimit]=\"documentItem.MaxFileCount\"\n [multiple]=\"documentItem.MaxFileCount > 0\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n<ng-template #statusTpl>\n <div class=\"status\">\n <button fd-button fdType=\"transparent\">\n <span\n *ngIf=\"status === 1\"\n fd-object-status\n [label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\n [aria-label]=\"'[\u067E\u06CC\u0648\u0633\u062A \u0645\u062F\u0627\u0631\u06A9]' | bbbTranslate\"\n ></span>\n <span\n *ngIf=\"status === 2\"\n fd-object-status\n glyph=\"message-success\"\n status=\"positive\"\n [label]=\"'Accepted' | bbbTranslate\"\n [label]=\"'Accepted' | bbbTranslate\"\n ></span>\n <span\n *ngIf=\"status === 3\"\n fd-object-status\n glyph=\"cancel\"\n status=\"negative\"\n [label]=\"'Rejected' | bbbTranslate\"\n [aria-label]=\"'Rejected' | bbbTranslate\"\n ></span>\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:contents}::ng-deep .fd-list--byline .fd-list__byline-left,::ng-deep .fd-list--byline .fd-list__byline-right{line-height:1.1rem!important}.fd-list__byline.smallSize{flex-direction:column;row-gap:5px}.fd-list__byline.smallSize div{width:100%}td{white-space:nowrap;padding:.5rem}fd-avatar ::ng-deep i{font-size:2.3rem!important}.status{display:flex;align-items:center;column-gap:3px;row-gap:3px}.status span.fd-object-status{font-size:var(--sapFontSize)!important;font-weight:700!important}.status span.fd-object-status ::ng-deep fd-icon{font-size:var(--sapFontSize);font-weight:700}\n"] }]
73
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.PictureFieldSourcePipe }]; }, propDecorators: { documentItem: [{
74
- type: Input
75
- }], deviceSize: [{
76
- type: Input
77
- }], files: [{
78
- type: Input
79
- }], accepted: [{
80
- type: Input
81
- }], rejectedReason: [{
82
- type: Input
83
- }], readonly: [{
84
- type: Input
85
- }], status: [{
86
- type: Input
87
- }], uploadingState: [{
88
- type: Input
89
- }], statusChanged: [{
90
- type: Output
91
- }], rejectTextChange: [{
92
- type: Output
93
- }], fileSelectionChange: [{
94
- type: Output
95
- }], removeFile: [{
96
- type: Output
97
- }], fullscreen: [{
98
- type: Output
99
- }], download: [{
100
- type: Output
101
- }], downloadAll: [{
102
- type: Output
103
- }] } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtZG9jdW1lbnQtbGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLWRldmVsb3AtY29tcG9uZW50cy9zcmMvbGliL2JhcnNhLWRvY3VtZW50LWxpc3QtaXRlbS9iYXJzYS1kb2N1bWVudC1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvYmFyc2EtZG9jdW1lbnQtbGlzdC1pdGVtL2JhcnNhLWRvY3VtZW50LWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUgsYUFBYSxFQUNiLGFBQWEsRUFFYixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixnQkFBZ0IsRUFFaEIsT0FBTyxFQUNQLE9BQU8sRUFFVixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQVM5QixNQUFNLE9BQU8sOEJBQStCLFNBQVEsYUFBYTtJQXFCN0QsWUFBb0IsSUFBdUIsRUFBVSxZQUFvQztRQUNyRixLQUFLLEVBQUUsQ0FBQztRQURRLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQXdCO1FBVi9FLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQTJDLENBQUM7UUFDNUUscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM5Qyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2pELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUNwRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFD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QUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJicmV2YXRpb25EZXZpY2VTaXplLFxuICAgIEF1ZGlvTWltZVR5cGUsXG4gICAgQmFzZUNvbXBvbmVudCxcbiAgICBGaWxlQXR0YWNobWVudEluZm8sXG4gICAgSW1hZ2VNaW1lVHlwZSxcbiAgICBQcmV2ZW50RGVmYXVsRXZlbnQsXG4gICAgVmlkZW9NaW1lVHlwZSxcbiAgICBBbGxGaWxlc01pbWVUeXBlLFxuICAgIFBpY3R1cmVGaWVsZFNvdXJjZVBpcGUsXG4gICAgaXNJbWFnZSxcbiAgICBnZXRJY29uLFxuICAgIElVcGxvYWRpbmdTdGF0ZVxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBEb2N1bWVudEl0ZW0gfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JkYy1iYXJzYS1kb2N1bWVudC1saXN0LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS1kb2N1bWVudC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLWRvY3VtZW50LWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhcnNhRG9jdW1lbnRMaXN0SXRlbUNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIGRvY3VtZW50SXRlbTogRG9jdW1lbnRJdGVtO1xuXG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xuICAgIEBJbnB1dCgpIGZpbGVzOiBGaWxlQXR0YWNobWVudEluZm9bXTtcbiAgICBASW5wdXQoKSBhY2NlcHRlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSByZWplY3RlZFJlYXNvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHN0YXR1czogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHVwbG9hZGluZ1N0YXRlOiBJVXBsb2FkaW5nU3RhdGU7XG5cbiAgICBAT3V0cHV0KCkgc3RhdHVzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyB2YWx1ZTogbnVtYmVyOyByZWplY3RlZFRleHQ6IHN0cmluZyB9PigpO1xuICAgIEBPdXRwdXQoKSByZWplY3RUZXh0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGZpbGVTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcbiAgICBAT3V0cHV0KCkgcmVtb3ZlRmlsZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZUF0dGFjaG1lbnRJbmZvPigpO1xuICAgIEBPdXRwdXQoKSBmdWxsc2NyZWVuID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsIHwgRmlsZUF0dGFjaG1lbnRJbmZvPigpO1xuICAgIEBPdXRwdXQoKSBkb3dubG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZUF0dGFjaG1lbnRJbmZvPigpO1xuICAgIEBPdXRwdXQoKSBkb3dubG9hZEFsbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGhhc0ZpbGVzID0gZmFsc2U7XG4gICAgZmlyc3RJbWFnZVVybDogYW55O1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX3BpY0ZpZWxkU3JjOiBQaWN0dXJlRmllbGRTb3VyY2VQaXBlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBjb25zdCBkb2N1bWVudEl0ZW0gPSB0aGlzLmRvY3VtZW50SXRlbTtcbiAgICAgICAgZG9jdW1lbnRJdGVtLiRWYWxpZEV4dGVuc2lvbnMgPSBgICAgICAgICAgICAgXG4gICAgICAgICR7ZG9jdW1lbnRJdGVtLlN1cHBvcnRJbWFnZSA/IEltYWdlTWltZVR5cGUgOiAnJ30sXG4gICAgICAgICR7ZG9jdW1lbnRJdGVtLlN1cHBvcnRBdWRpbyA/IEF1ZGlvTWltZVR5cGUgOiAnJ30sXG4gICAgICAgICR7ZG9jdW1lbnRJdGVtLlN1cHBvcnRWaWRlbyA/IFZpZGVvTWltZVR5cGUgOiAnJ30sXG4gICAgICAgICR7ZG9jdW1lbnRJdGVtLlN1cHBvcnRGaWxlID8gQWxsRmlsZXNNaW1lVHlwZSA6ICcnfVxuICAgICAgICBgO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBjb25zdCB7IGZpbGVzIH0gPSBjaGFuZ2VzO1xuICAgICAgICBmaWxlcyAmJiBBcnJheS5pc0FycmF5KGZpbGVzLmN1cnJlbnRWYWx1ZSkgJiYgdGhpcy5fc2V0Rmlyc3RJbWFnZShmaWxlcy5jdXJyZW50VmFsdWUpO1xuICAgICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIG9uUmVqZWN0KGU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXR1c0NoYW5nZWQuZW1pdCh7IHZhbHVlOiBlLCByZWplY3RlZFRleHQ6IGUgPT09IDIgPyAnJyA6IHRoaXMucmVqZWN0ZWRSZWFzb24gfSk7XG4gICAgfVxuICAgIG9uUmVqZWN0ZWRUZXh0Q2hhbmdlKGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWplY3RUZXh0Q2hhbmdlLmVtaXQoZS50YXJnZXQudmFsdWUpO1xuICAgIH1cbiAgICBvblByZXZlbnRDbGljayhlKTogdm9pZCB7XG4gICAgICAgIFByZXZlbnREZWZhdWxFdmVudChlKTtcbiAgICB9XG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWxlU2VsZWN0aW9uQ2hhbmdlLmVtaXQoZmlsZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfc2V0Rmlyc3RJbWFnZShmaWxlczogRmlsZUF0dGFjaG1lbnRJbmZvW10pOiB2b2lkIHtcbiAgICAgICAgZmlsZXMubGVuZ3RoICYmXG4gICAgICAgICAgICAodGhpcy5maXJzdEltYWdlVXJsID0gaXNJbWFnZShmaWxlc1swXS5UeXBlKVxuICAgICAgICAgICAgICAgID8gdGhpcy5fcGljRmllbGRTcmMudHJhbnNmb3JtKGZpbGVzWzBdLklkLCAnSUQnLCBudWxsLCAnJywgMTIwLCAxMjApXG4gICAgICAgICAgICAgICAgOiBnZXRJY29uKGZpbGVzWzBdLlR5cGUpKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9kZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiIsIjwhLS0gPGxpIGZkLWxpc3QtaXRlbSBzdHlsZT1cInBhZGRpbmc6IDAuNXJlbSAxcmVtXCI+XG4gICAgPHNwYW4gZmQtbGlzdC10aHVtYm5haWw+XG4gICAgICAgIDxmZC1pY29uICpuZ0lmPVwiZG9jdW1lbnRJdGVtLkZvbnRJY29uXCIgW2dseXBoXT1cImRvY3VtZW50SXRlbS5Gb250SWNvblwiPjwvZmQtaWNvbj5cbiAgICAgICAgPGZkLWF2YXRhclxuICAgICAgICAgICAgKm5nSWY9XCJkb2N1bWVudEl0ZW0uQXZhdGFyXCJcbiAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgIFtpbWFnZV09XCJkb2N1bWVudEl0ZW0uQXZhdGFyLkZpbGVJZCB8IHBpY0ZpZWxkU3JjOiAnSUQnOm51bGw6JydcIlxuICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgPjwvZmQtYXZhdGFyXG4gICAgPjwvc3Bhbj5cbiAgICBcbiAgICA8ZGl2IGZkLWxpc3QtY29udGVudD5cbiAgICAgICAgPGRpdiBmZC1saXN0LXRpdGxlPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGNvbHVtbi1nYXA6IDNweFwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmdcbiAgICAgICAgICAgICAgICAgICAgPnt7IGRvY3VtZW50SXRlbS5UaXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1vYmplY3Qtc3RhdHVzIHN0YXR1cz1cIm5lZ2F0aXZlXCIgKm5nSWY9XCJkb2N1bWVudEl0ZW0uSXNSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+Kih7eyAn2KfYrNio2KfYsduMJyB8IGJiYlRyYW5zbGF0ZSB9fSlcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkb2N1bWVudEl0ZW0uJEFjY2VwdGVkID09PSBmYWxzZSB8fCBkb2N1bWVudEl0ZW0uJEFjY2VwdGVkID09PSB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBjb2x1bW4tZ2FwOiAzcHg7IGZsZXgtd3JhcDogd3JhcDsgYWxpZ24taXRlbXM6IGNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtb2JqZWN0LXN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCJhY2NlcHRlZCA/ICdwb3NpdGl2ZScgOiAnbmVnYXRpdmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJhY2NlcHRlZCA/IGFjY2VwdGVkVGV4dCA6IHJlamVjdGVkVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ludmVydGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiYWNjZXB0ZWQgPyBhY2NlcHRlZFRleHQgOiByZWplY3RlZFRleHRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtcG9wb3ZlciB0aXRsZT1cIlJlamVjdGVkIGRvY3VtZW50XCIgKm5nSWY9XCJyZWplY3RlZFJlYXNvbiAmJiAhYWNjZXB0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtb2JqZWN0LXN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9XCJuZWdhdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwicXVlc3Rpb24tbWFya1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoQXJpYUxhYmVsPVwiTmVnYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIlJlamVjdGVkIGRvY3VtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZXNzYWdlLXN0cmlwIHR5cGU9XCJlcnJvclwiIFtkaXNtaXNzaWJsZV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWplY3RlZFJlYXNvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtbWVzc2FnZS1zdHJpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLXBvcG92ZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgZmQtbGlzdC1ieWxpbmUgW3R3b0NvbF09XCJ0cnVlXCIgW2NsYXNzLnNtYWxsU2l6ZV09XCJkZXZpY2VTaXplID09PSAncydcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtbGlzdC1ieWxpbmUtbGVmdD5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgcm93LWdhcDogNXB4OyBmbGV4LXdyYXA6IHdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkb2N1bWVudEl0ZW0uRGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBjb2x1bW4tZ2FwOiAzcHg7IGFsaWduLWl0ZW1zOiBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNGaWxlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiIGdseXBoPVwic2hvd1wiIChjbGljayk9XCJvbkZ1bGxzY3JlZW4oKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZmlsZS5Jc0RlbGV0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xvc2VDbGljayk9XCJvblJlbW92ZUZpbGUoZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGZpbGUuRmlsZU5hbWUgfX08L2ZkLXRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZG9jdW1lbnRJdGVtLk1heEZpbGVDb3VudCAmJiAhcmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwiYXR0YWNobWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBdHRhY2hGaWxlJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFyZWFkb25seSAmJiB1cGxvYWRlci5vcGVuKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWZpbGUtdXBsb2FkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdXBsb2FkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJkb2N1bWVudEl0ZW0uSXRlbUtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3BpY3R1cmVzXycgKyBkb2N1bWVudEl0ZW0uSXRlbUtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjY2VwdF09XCJkb2N1bWVudEl0ZW0uJFZhbGlkRXh0ZW5zaW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbGVMaW1pdF09XCJkb2N1bWVudEl0ZW0uTWF4RmlsZUNvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiZG9jdW1lbnRJdGVtLk1heEZpbGVDb3VudCA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZEZpbGVzQ2hhbmdlZCk9XCJvbkZpbGVTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1maWxlLXVwbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBmZC1saXN0LWJ5bGluZS1yaWdodCAqbmdJZj1cImRvY3VtZW50SXRlbS5DYW5BY2NlcHRcIj5cbiAgICAgICAgICAgICAgICA8YmRjLWFjY2VwdC1yZWplY3RcbiAgICAgICAgICAgICAgICAgICAgW3JlamVjdGVkUmVhc29uXT1cInJlamVjdGVkUmVhc29uXCJcbiAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aXZlVGV4dF09XCJhY2NlcHRlZFRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbbmVnYXRpdmVUZXh0XT1cInJlamVjdGVkVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgID48L2JkYy1hY2NlcHQtcmVqZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9saT4gLS0+XG5cbjx0ciBmZC10YWJsZS1yb3c+XG4gICAgPHRkIGZkLXRhYmxlLWNlbGw+XG4gICAgICAgIDxmZC1hdmF0YXJcbiAgICAgICAgICAgICpuZ0lmPVwiZG9jdW1lbnRJdGVtLkF2YXRhciAmJiAhZmlsZXMubGVuZ3RoOyBlbHNlIGZvbnRJY29uVHBsXCJcbiAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgIFtpbWFnZV09XCJkb2N1bWVudEl0ZW0uQXZhdGFyLkZpbGVJZCB8IHBpY0ZpZWxkU3JjOiAnSUQnOm51bGw6Jyc6NjQ6NjRcIlxuICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0cmFuc3BhcmVudF09XCJ0cnVlXCJcbiAgICAgICAgPjwvZmQtYXZhdGFyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2ZvbnRJY29uVHBsPlxuICAgICAgICAgICAgPGZkLWF2YXRhclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgIFtpbWFnZV09XCJmaXJzdEltYWdlVXJsXCJcbiAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgPjwvZmQtYXZhdGFyPlxuICAgICAgICAgICAgPGZkLWF2YXRhclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWZpbGVzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiZG9jdW1lbnRJdGVtLkZvbnRJY29uXCJcbiAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgPjwvZmQtYXZhdGFyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdGQ+XG4gICAgPHRkIGZkLXRhYmxlLWNlbGwgc3R5bGU9XCJtaW4td2lkdGg6IDE0MHB4XCI+XG4gICAgICAgIDxwIGZkLXRhYmxlLXRleHQ+XG4gICAgICAgICAgICA8c3Ryb25nXG4gICAgICAgICAgICAgICAgPnt7IGRvY3VtZW50SXRlbS5UaXRsZSB9fVxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLW9iamVjdC1zdGF0dXMgc3RhdHVzPVwibmVnYXRpdmVcIiAqbmdJZj1cImRvY3VtZW50SXRlbS5Jc1JlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgPiooe3sgJ9in2KzYqNin2LHbjCcgfCBiYmJUcmFuc2xhdGUgfX0pXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHt7IGRvY3VtZW50SXRlbS5EZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3RkPlxuXG4gICAgPHRkIGZkLXRhYmxlLWNlbGw+XG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8IS0tIDx1bCBmZC1saXN0PlxuICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0gKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IGxldCBpbmQgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsZS5GaWxlTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3Qtc2Vjb25kYXJ5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhTGFiZWw9XCJSZW1vdmVcIiB0aXRsZT1cIlJlbW92ZVwiIGZkLWJ1dHRvbiBnbHlwaD1cImRlbGV0ZVwiID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPiAtLT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgY29sdW1uLWdhcDogM3B4OyByb3ctZ2FwOiAzcHg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4+PGZkLWljb24gZ2x5cGg9XCJhdHRhY2htZW50XCI+PC9mZC1pY29uPjxhIGZkLWxpbms+e3tmaWxlLkZpbGVOYW1lfX08L2E+PC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGJzdS1maWxlLXZpZXdlci1wb3BvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFmaWxlLklzRGVsZXRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmlsZV09XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NhbkRvd25sb2FkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVGaWxlLmVtaXQoZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9ic3UtZmlsZS12aWV3ZXItcG9wb3Zlcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiK2RvY3VtZW50SXRlbS5NYXhGaWxlQ291bnQgJiYgIXJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJhZGRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiIXJlYWRvbmx5ICYmIHVwbG9hZGVyLm9wZW4oKVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSA8cCAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlc1wiIGZkLXRhYmxlLXRleHQ+XG4gICAgICAgICAgICAgICAgPGZkLWFjdGlvbi1zaGVldCAgPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtYWN0aW9uLXNoZWV0LWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJzZXR0aW5nc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJPcGVuIEFjdGlvbiBTaGVldCBNb2JpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZmQtYWN0aW9uLXNoZWV0LW1vYmlsZS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImZpbGUuRmlsZU5hbWUgfHwnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1jb250cm9scz1cImZkLWFjdGlvbi1zaGVldC1tb2JpbGUtYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtYWN0aW9uLXNoZWV0LWNvbnRyb2w+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGZkLWFjdGlvbi1zaGVldC1ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25TaGVldEJvZHlJZD1cImZkLWFjdGlvbi1zaGVldC1tb2JpbGUtYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhTGFiZWxsZWRCeT1cImZkLWFjdGlvbi1zaGVldC1tb2JpbGUtY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1hY3Rpb24tc2hlZXQtaXRlbSBsYWJlbD1cIlNlYXJjaFwiIGdseXBoPVwic2VhcmNoXCI+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1hY3Rpb24tc2hlZXQtaXRlbSBsYWJlbD1cIkRvd25sb2FkXCIgZ2x5cGg9XCJkb3dubG9hZFwiID48L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWFjdGlvbi1zaGVldC1pdGVtIGxhYmVsPVwiQWNjZXB0XCIgZ2x5cGg9XCJhY2NlcHRcIiA+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1hY3Rpb24tc2hlZXQtaXRlbSBsYWJlbD1cIlJlamVjdFwiIGdseXBoPVwiY2FuY2VsXCIgPjwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtYWN0aW9uLXNoZWV0LWl0ZW0gbGFiZWw9XCJEZWNpZGUgTGF0ZXJcIiBbaXNDbG9zZUJ1dHRvbl09XCJ0cnVlXCI+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1hY3Rpb24tc2hlZXQtaXRlbSBsYWJlbD1cIkNhbmNlbFwiIFtuZWdhdGl2ZV09XCJ0cnVlXCIgW2lzQ2xvc2VCdXR0b25dPVwidHJ1ZVwiPjwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtYWN0aW9uLXNoZWV0LWJvZHk+XG4gICAgICAgICAgICAgICAgPC9mZC1hY3Rpb24tc2hlZXQ+XG4gICAgICAgICAgICA8L3A+IC0tPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3RkPlxuICAgIDx0ZCBmZC10YWJsZS1jZWxsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIitkb2N1bWVudEl0ZW0uTWF4RmlsZUNvdW50ICYmICFyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJhdHRhY2htZW50XCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0F0dGFjaEZpbGUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidXBsb2FkaW5nU3RhdGU/LmtleSA9PT0gZG9jdW1lbnRJdGVtLlRpdGxlICYmIHVwbG9hZGluZ1N0YXRlPy51cGxvYWRpbmdcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCIhcmVhZG9ubHkgJiYgdXBsb2FkZXIub3BlbigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnN1LW1hc2tcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ1cGxvYWRpbmdTdGF0ZT8ua2V5ID09PSBkb2N1bWVudEl0ZW0uVGl0bGUgJiYgdXBsb2FkaW5nU3RhdGU/LnVwbG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgIFttYXJnaW5Ub3BdPVwiJzNweCdcIlxuICAgICAgICAgICAgICAgID48L2JzdS1tYXNrPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJzaG93XCJcbiAgICAgICAgICAgICAgICBmdWxsc2NyZWVuRmlsZXNcbiAgICAgICAgICAgICAgICBbZmlsZXNdPVwiZmlsZXNcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJkb2N1bWVudEl0ZW0uVGl0bGVcIlxuICAgICAgICAgICAgICAgIFtmZC1pbmxpbmUtaGVscF09XCIn2YXYtNin2YfYr9mHINmH2YXZhycgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFthcmlhLWRlc2NyaWJlZGJ5XT1cIifZhdi02KfZh9iv2Ycg2YfZhdmHJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIn2YXYtNin2YfYr9mHINmH2YXZhycgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5GaWxlc1xuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZmlsZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbZmlsZXNdPVwiZmlsZXNcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIGdseXBoPVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgIFtmZC1pbmxpbmUtaGVscF09XCIn2K/Yp9mG2YTZiNivINmH2YXZhycgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFthcmlhLWRlc2NyaWJlZGJ5XT1cIifYr9in2YbZhNmI2K8g2YfZhdmHJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIn2K/Yp9mG2YTZiNivINmH2YXZhycgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIGRvd25sb2FkRmlsZXNcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWZpbGVzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgW2ZpbGVzXT1cImZpbGVzXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRBbGwuZW1pdCgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90ZD5cbiAgICA8dGQgZmQtdGFibGUtY2VsbD5cbiAgICAgICAgPGZkLWFjdGlvbi1zaGVldCAjYWN0aW9uU2hlZXQ+XG4gICAgICAgICAgICA8ZmQtYWN0aW9uLXNoZWV0LWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXR1c1RwbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9mZC1hY3Rpb24tc2hlZXQtY29udHJvbD5cbiAgICAgICAgICAgIDxmZC1hY3Rpb24tc2hlZXQtYm9keT5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgZmQtYWN0aW9uLXNoZWV0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBY2NlcHQnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJhY2NlcHRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uU2hlZXQuY2xvc2UoKTsgb25SZWplY3QoMilcIlxuICAgICAgICAgICAgICAgID48L2xpPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBmZC1hY3Rpb24tc2hlZXQtaXRlbVxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1JlamVjdCcgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImNhbmNlbFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb25TaGVldC5jbG9zZSgpOyBvblJlamVjdCgzKVwiXG4gICAgICAgICAgICAgICAgPjwvbGk+XG4gICAgICAgICAgICA8L2ZkLWFjdGlvbi1zaGVldC1ib2R5PlxuICAgICAgICA8L2ZkLWFjdGlvbi1zaGVldD5cblxuICAgICAgICA8cCBmZC10YWJsZS10ZXh0IG1heFdpZHRoPVwiNDAwcHhcIiAqbmdJZj1cInN0YXR1cyA9PT0gM1wiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZWFkb25seSAmJiByZWplY3RlZFJlYXNvblwiPiB7eyByZWplY3RlZFJlYXNvbiB8IGJiYlRyYW5zbGF0ZSB9fSA8L3NwYW4+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInJlamVjdGVkUmVhc29uIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ9iv2YTYp9uM2YQg2LHYryDZhdiv2LHaqScgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9wPlxuICAgIDwvdGQ+XG48L3RyPlxuXG48ZmQtZmlsZS11cGxvYWRlclxuICAgICN1cGxvYWRlclxuICAgIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiXG4gICAgZmQtdG9vbGJhci1pdGVtXG4gICAgW2lkXT1cImRvY3VtZW50SXRlbS5JdGVtS2V5XCJcbiAgICBbbmFtZV09XCIncGljdHVyZXNfJyArIGRvY3VtZW50SXRlbS5JdGVtS2V5XCJcbiAgICBbYWNjZXB0XT1cImRvY3VtZW50SXRlbS4kVmFsaWRFeHRlbnNpb25zXCJcbiAgICBbZmlsZUxpbWl0XT1cImRvY3VtZW50SXRlbS5NYXhGaWxlQ291bnRcIlxuICAgIFttdWx0aXBsZV09XCJkb2N1bWVudEl0ZW0uTWF4RmlsZUNvdW50ID4gMFwiXG4gICAgKHNlbGVjdGVkRmlsZXNDaGFuZ2VkKT1cIm9uRmlsZVNlbGVjdGlvbigkZXZlbnQpXCJcbj48L2ZkLWZpbGUtdXBsb2FkZXI+XG48bmctdGVtcGxhdGUgI3N0YXR1c1RwbD5cbiAgICA8ZGl2IGNsYXNzPVwic3RhdHVzXCI+XG4gICAgICAgIDxidXR0b24gZmQtYnV0dG9uIGZkVHlwZT1cInRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwic3RhdHVzID09PSAxXCJcbiAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidb2b7bjNmI2LPYqiDZhdiv2KfYsdqpXScgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cIidb2b7bjNmI2LPYqiDZhdiv2KfYsdqpXScgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzdGF0dXMgPT09IDJcIlxuICAgICAgICAgICAgICAgIGZkLW9iamVjdC1zdGF0dXNcbiAgICAgICAgICAgICAgICBnbHlwaD1cIm1lc3NhZ2Utc3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgc3RhdHVzPVwicG9zaXRpdmVcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWNjZXB0ZWQnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FjY2VwdGVkJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cInN0YXR1cyA9PT0gM1wiXG4gICAgICAgICAgICAgICAgZmQtb2JqZWN0LXN0YXR1c1xuICAgICAgICAgICAgICAgIGdseXBoPVwiY2FuY2VsXCJcbiAgICAgICAgICAgICAgICBzdGF0dXM9XCJuZWdhdGl2ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidSZWplY3RlZCcgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cIidSZWplY3RlZCcgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,173 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Optional } from '@angular/core';
2
- import { FilesValidationHelper, LinearListHelper, ReportViewBaseComponent, UploadService } from 'barsa-novin-ray-core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "barsa-novin-ray-core";
5
- import * as i2 from "@fundamental-ngx/core";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "@fundamental-ngx/core/table";
8
- import * as i5 from "../barsa-document-list-item/barsa-document-list-item.component";
9
- export class BarsaDocumentsComponent extends ReportViewBaseComponent {
10
- constructor(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService, _dialogService, _uploadService) {
11
- super(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService, _uploadService);
12
- this._el = _el;
13
- this._cdr = _cdr;
14
- this._renderer2 = _renderer2;
15
- this._findColumnByDbName = _findColumnByDbName;
16
- this._ulvMainService = _ulvMainService;
17
- this._portalService = _portalService;
18
- this._dialogService = _dialogService;
19
- this._uploadService = _uploadService;
20
- }
21
- get documentItems() {
22
- if (this.customFieldInfo) {
23
- return this.customFieldInfo.DocumentItems.MoDataList;
24
- }
25
- else {
26
- return this.viewSetting.FilesSetting.DocumentItems.MoDataList;
27
- }
28
- }
29
- ngOnInit() {
30
- super.ngOnInit();
31
- const { moDataList, viewSetting, allColumns } = this;
32
- this._initColumnField(allColumns, viewSetting);
33
- this._subscribeOnUploadFile(this.fileColumn);
34
- this._mapDocumentItem(moDataList, this.documentItems);
35
- this._checkMandatory();
36
- }
37
- ngOnChanges(changes) {
38
- super.ngOnChanges(changes);
39
- const { moDataList } = changes;
40
- if (moDataList && !moDataList.firstChange) {
41
- if (moDataList && !moDataList.firstChange) {
42
- this._mapDocumentItem(moDataList.currentValue, this.documentItems);
43
- this.detectChanges();
44
- }
45
- }
46
- }
47
- ngAfterViewInit() {
48
- super.ngAfterViewInit();
49
- setTimeout(() => {
50
- for (let i = 0; i < this.documentItems.length - this.moDataList.length; i++) {
51
- this.createNewMo.emit();
52
- }
53
- });
54
- }
55
- onFileSelection(files, documentItem, mo) {
56
- this.selectedMo = mo;
57
- this._uploadFile(files, documentItem);
58
- }
59
- onRemoveFile(file, mo) {
60
- const fileDbName = this.fileColumn.Name;
61
- let files = mo[fileDbName].Files;
62
- if (file.IsNew) {
63
- files = files.filter((c) => c.Id !== file.Id);
64
- }
65
- else {
66
- const existFile = files.find((c) => c.Id === file.Id);
67
- existFile.IsDeleted = true;
68
- }
69
- mo[fileDbName].Files = [...files];
70
- this._updateMo(mo);
71
- }
72
- onStatusChanged(e, mo) {
73
- mo[this.statusColumn.Name] = e.value;
74
- mo[this.rejectedReasonColumn.Name] = e.rejectedText;
75
- this._updateMo(mo);
76
- }
77
- onRejectedTextChange(text, mo) {
78
- mo[this.rejectedReasonColumn.Name] = text;
79
- this._updateMo(mo);
80
- }
81
- _checkMandatory() {
82
- const moDataList = this.moDataList;
83
- const items = this.documentItems.filter((c) => c.IsRequired);
84
- let mandatory = items.length > 0;
85
- const mandatory2 = items
86
- .map((item) => moDataList.find((c) => c[this.keyColumn.Name] === item.ItemKey))
87
- .filter((item) => item)
88
- .some((mo) => mo[this.fileColumn.Name].Files.filter((c) => !c.IsDeleted).length === 0);
89
- mandatory = mandatory && mandatory2;
90
- this.mandatory.emit(mandatory);
91
- }
92
- _mapDocumentItem(moDataList, documentItems) {
93
- const keyName = this.keyColumn.Name;
94
- moDataList.forEach((mo, index) => {
95
- let documentItem = documentItems.find((c) => c.ItemKey === mo[keyName]); // find setting that matches with mo by itemKey
96
- if (documentItem) {
97
- mo.$documentItem = documentItem;
98
- }
99
- else {
100
- documentItem = documentItems.find((item) => moDataList.map((c) => c[keyName]).indexOf(item.ItemKey) < 0); // find a setting has not have $RelatedMo yet
101
- if (documentItem) {
102
- mo[keyName] = documentItem.ItemKey;
103
- mo.$documentItem = documentItem;
104
- this.updateMo.emit(mo);
105
- }
106
- }
107
- });
108
- }
109
- _initColumnField(allColumns, viewSetting) {
110
- const keyColumn = this._findColumnByDbName.transform(allColumns, viewSetting.ItemKeyField);
111
- const fileColumn = this._findColumnByDbName.transform(allColumns, viewSetting.FileField);
112
- const acceptedColumn = this._findColumnByDbName.transform(allColumns, viewSetting.AcceptedField);
113
- const rejectedReasonColumn = this._findColumnByDbName.transform(allColumns, viewSetting.RejectedReasonField);
114
- const statusColumn = this._findColumnByDbName.transform(allColumns, viewSetting.StatusField);
115
- !keyColumn && this._columnNotExistsInReport(viewSetting.ItemKeyField);
116
- !fileColumn && this._columnNotExistsInReport(viewSetting.FileField);
117
- !rejectedReasonColumn && this._columnNotExistsInReport(viewSetting.RejectedReasonField);
118
- !acceptedColumn && this._columnNotExistsInReport(viewSetting.AcceptedField);
119
- !statusColumn && this._columnNotExistsInReport(viewSetting.StatusField);
120
- keyColumn && (this.keyColumn = keyColumn);
121
- fileColumn && (this.fileColumn = fileColumn);
122
- acceptedColumn && (this.acceptedColumn = acceptedColumn);
123
- rejectedReasonColumn && (this.rejectedReasonColumn = rejectedReasonColumn);
124
- statusColumn && (this.statusColumn = statusColumn);
125
- }
126
- _subscribeOnUploadFile(fileColumn) {
127
- this._filesValidationHelper = new FilesValidationHelper(0, 0, 0);
128
- if (this._uploadService) {
129
- this._createLinearHelper(this._uploadService, this._filesValidationHelper, fileColumn.FieldDefId);
130
- this.uploadingState$ = this._uploadService.uploadingState$;
131
- }
132
- else {
133
- throw new Error('UploadService not provided.');
134
- }
135
- this._linearHelper.newFileUploaded$.subscribe((file) => {
136
- const mo = this.moDataList.find((c) => c.Id === this.selectedMo.Id);
137
- if (mo) {
138
- mo[fileColumn.Name].Files = [...mo[fileColumn.Name].Files, file];
139
- this._updateMo(mo);
140
- }
141
- });
142
- }
143
- _updateMo(mo) {
144
- mo.$NewInlineMo = undefined;
145
- if (mo.$State === 'Unchanged') {
146
- mo.$State = 'Modified';
147
- }
148
- this.updateMo.emit(mo);
149
- this._checkMandatory();
150
- }
151
- _createLinearHelper(uploadService, filesValidationHelper, fieldDefId) {
152
- this._linearHelper = new LinearListHelper(uploadService, filesValidationHelper, fieldDefId);
153
- }
154
- _uploadFile(files, documentItem) {
155
- const filesValidationHelper = this._filesValidationHelper;
156
- filesValidationHelper.maxFileCount = +documentItem.MaxFileCount;
157
- filesValidationHelper.maxFileSize = +documentItem.EachFileSize;
158
- filesValidationHelper.maxTotalFileSize = +documentItem.MaxFileSize;
159
- this._linearHelper.uploadToServer(files, documentItem.Title);
160
- }
161
- _columnNotExistsInReport(columnCaption) {
162
- throw new Error(`can not find ${columnCaption} column in report.please add it to report columns.`);
163
- }
164
- }
165
- BarsaDocumentsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDocumentsComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1.FindColumnByDbNamePipe }, { token: i1.UlvMainService }, { token: i1.PortalService }, { token: i2.DialogService }, { token: i1.UploadService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
166
- BarsaDocumentsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaDocumentsComponent, selector: "bdc-barsa-documents", providers: [UploadService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- <ul fd-list [byline]=\"true\" fdCompact [selection]=\"false\"> -->\n<table fd-table aria-label=\"Default\" [allCellsFocusable]=\"true\" [noBorderX]=\"true\">\n <thead fd-table-header>\n <tr fd-table-row>\n <th fd-table-cell>{{ '\u0639\u06A9\u0633' | bbbTranslate }}</th>\n <th fd-table-cell style=\"min-width: 140px; width: auto\">{{ '\u0646\u0648\u0639 \u0645\u062F\u0631\u06A9' | bbbTranslate }}</th>\n <th fd-table-cell style=\"width: 99%\">{{ '\u0627\u0644\u0635\u0627\u0642 \u0641\u0627\u06CC\u0644' | bbbTranslate }}</th>\n <th fd-table-cell></th>\n <th fd-table-cell style=\"width: 400px; min-width: 400px; max-width: 400px\">{{ '\u0648\u0636\u0639\u06CC\u062A' | bbbTranslate }}</th>\n </tr>\n </thead>\n <tbody fd-table-body>\n <ng-container *ngFor=\"let mo of moDataList; trackBy: _trackByRow\">\n <bdc-barsa-document-list-item\n *ngIf=\"mo.$documentItem\"\n [documentItem]=\"mo.$documentItem\"\n [accepted]=\"mo[acceptedColumn.Name]\"\n [files]=\"mo[fileColumn.Name].Files\"\n [uploadingState]=\"(uploadingState$ | async)!!\"\n [rejectedReason]=\"mo[rejectedReasonColumn.Name]\"\n [fileDbName]=\"fileColumn.Name\"\n [status]=\"+mo[statusColumn.Name]\"\n [deviceSize]=\"deviceSize\"\n [readonly]=\"!access.Edit\"\n [deviceSize]=\"deviceSize\"\n (removeFile)=\"onRemoveFile($event, mo)\"\n (fileSelectionChange)=\"onFileSelection($event, mo.$documentItem, mo)\"\n (rejectTextChange)=\"onRejectedTextChange($event, mo)\"\n (statusChanged)=\"onStatusChanged($event, mo)\"\n ></bdc-barsa-document-list-item>\n </ng-container>\n <!-- </ul> -->\n </tbody>\n</table>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i4.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i4.TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: i4.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i4.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "tabindex", "hoverable", "fitContent", "noPadding", "noData", "key", "cellFocusedEventAnnouncer"] }, { kind: "component", type: i5.BarsaDocumentListItemComponent, selector: "bdc-barsa-document-list-item", inputs: ["documentItem", "deviceSize", "files", "accepted", "rejectedReason", "readonly", "status", "uploadingState"], outputs: ["statusChanged", "rejectTextChange", "fileSelectionChange", "removeFile", "fullscreen", "download", "downloadAll"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaDocumentsComponent, decorators: [{
168
- type: Component,
169
- args: [{ selector: 'bdc-barsa-documents', changeDetection: ChangeDetectionStrategy.OnPush, providers: [UploadService], template: "<!-- <ul fd-list [byline]=\"true\" fdCompact [selection]=\"false\"> -->\n<table fd-table aria-label=\"Default\" [allCellsFocusable]=\"true\" [noBorderX]=\"true\">\n <thead fd-table-header>\n <tr fd-table-row>\n <th fd-table-cell>{{ '\u0639\u06A9\u0633' | bbbTranslate }}</th>\n <th fd-table-cell style=\"min-width: 140px; width: auto\">{{ '\u0646\u0648\u0639 \u0645\u062F\u0631\u06A9' | bbbTranslate }}</th>\n <th fd-table-cell style=\"width: 99%\">{{ '\u0627\u0644\u0635\u0627\u0642 \u0641\u0627\u06CC\u0644' | bbbTranslate }}</th>\n <th fd-table-cell></th>\n <th fd-table-cell style=\"width: 400px; min-width: 400px; max-width: 400px\">{{ '\u0648\u0636\u0639\u06CC\u062A' | bbbTranslate }}</th>\n </tr>\n </thead>\n <tbody fd-table-body>\n <ng-container *ngFor=\"let mo of moDataList; trackBy: _trackByRow\">\n <bdc-barsa-document-list-item\n *ngIf=\"mo.$documentItem\"\n [documentItem]=\"mo.$documentItem\"\n [accepted]=\"mo[acceptedColumn.Name]\"\n [files]=\"mo[fileColumn.Name].Files\"\n [uploadingState]=\"(uploadingState$ | async)!!\"\n [rejectedReason]=\"mo[rejectedReasonColumn.Name]\"\n [fileDbName]=\"fileColumn.Name\"\n [status]=\"+mo[statusColumn.Name]\"\n [deviceSize]=\"deviceSize\"\n [readonly]=\"!access.Edit\"\n [deviceSize]=\"deviceSize\"\n (removeFile)=\"onRemoveFile($event, mo)\"\n (fileSelectionChange)=\"onFileSelection($event, mo.$documentItem, mo)\"\n (rejectTextChange)=\"onRejectedTextChange($event, mo)\"\n (statusChanged)=\"onStatusChanged($event, mo)\"\n ></bdc-barsa-document-list-item>\n </ng-container>\n <!-- </ul> -->\n </tbody>\n</table>\n", styles: [":host{display:block}\n"] }]
170
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1.FindColumnByDbNamePipe }, { type: i1.UlvMainService }, { type: i1.PortalService }, { type: i2.DialogService }, { type: i1.UploadService, decorators: [{
171
- type: Optional
172
- }] }]; } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtZG9jdW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLWRldmVsb3AtY29tcG9uZW50cy9zcmMvbGliL2JhcnNhLWRvY3VtZW50cy9iYXJzYS1kb2N1bWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvYmFyc2EtZG9jdW1lbnRzL2JhcnNhLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFJVCxRQUFRLEVBR1gsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILHFCQUFxQixFQUNyQixnQkFBZ0IsRUFFaEIsdUJBQXVCLEVBRXZCLGFBQWEsRUFNaEIsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztBQVc5QixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsdUJBQXlDO0lBWWxGLFlBQ2MsR0FBZSxFQUNmLElBQXVCLEVBQ3ZCLFVBQXFCLEVBQ3JCLG1CQUEyQyxFQUMzQyxlQUErQixFQUMvQixjQUE2QixFQUM3QixjQUE2QixFQUNqQixjQUE4QjtRQUVwRCxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQVR6RixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUNyQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQzNDLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUNqQixtQkFBYyxHQUFk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SEE3S1EsdUJBQXVCO3dHQUF2Qix1QkFBdUIsOENBRnJCLENBQUMsYUFBYSxDQUFDLHNFQ2pDOUIsdTREQWtDQTsyRkRDYSx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0kscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxhQUFhLENBQUM7OzBCQXNCckIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuaW1wb3J0IHtcbiAgICBGaWxlc1ZhbGlkYXRpb25IZWxwZXIsXG4gICAgTGluZWFyTGlzdEhlbHBlcixcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50LFxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXG4gICAgVXBsb2FkU2VydmljZSxcbiAgICBGaWxlQXR0YWNobWVudEluZm8sXG4gICAgRmluZENvbHVtbkJ5RGJOYW1lUGlwZSxcbiAgICBQb3J0YWxTZXJ2aWNlLFxuICAgIFVsdk1haW5TZXJ2aWNlLFxuICAgIElVcGxvYWRpbmdTdGF0ZVxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEb2N1bWVudEl0ZW0sIERvY3VtZW50c1NldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JkYy1iYXJzYS1kb2N1bWVudHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS1kb2N1bWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLWRvY3VtZW50cy5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1VwbG9hZFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEJhcnNhRG9jdW1lbnRzQ29tcG9uZW50IGV4dGVuZHMgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQ8RG9jdW1lbnRzU2V0dGluZz4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAga2V5Q29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uO1xuICAgIGZpbGVDb2x1bW46IFJlcG9ydFZpZXdDb2x1bW47XG4gICAgc3RhdHVzQ29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uO1xuICAgIHJlamVjdGVkUmVhc29uQ29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uO1xuICAgIGFjY2VwdGVkQ29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uO1xuICAgIHNlbGVjdGVkTW86IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgdXBsb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPElVcGxvYWRpbmdTdGF0ZT47XG5cbiAgICBwcm90ZWN0ZWQgX2ZpbGVzVmFsaWRhdGlvbkhlbHBlcjogRmlsZXNWYWxpZGF0aW9uSGVscGVyO1xuICAgIHByb3RlY3RlZCBfbGluZWFySGVscGVyOiBMaW5lYXJMaXN0SGVscGVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIF9yZW5kZXJlcjI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJvdGVjdGVkIF9maW5kQ29sdW1uQnlEYk5hbWU6IEZpbmRDb2x1bW5CeURiTmFtZVBpcGUsXG4gICAgICAgIHByb3RlY3RlZCBfdWx2TWFpblNlcnZpY2U6IFVsdk1haW5TZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF91cGxvYWRTZXJ2aWNlPzogVXBsb2FkU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihfZWwsIF9jZHIsIF9yZW5kZXJlcjIsIF9maW5kQ29sdW1uQnlEYk5hbWUsIF91bHZNYWluU2VydmljZSwgX3BvcnRhbFNlcnZpY2UsIF91cGxvYWRTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBnZXQgZG9jdW1lbnRJdGVtcygpOiBBcnJheTxEb2N1bWVudEl0ZW0+IHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tRmllbGRJbmZvKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21GaWVsZEluZm8uRG9jdW1lbnRJdGVtcy5Nb0RhdGFMaXN0IGFzIEFycmF5PERvY3VtZW50SXRlbT47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52aWV3U2V0dGluZy5GaWxlc1NldHRpbmcuRG9jdW1lbnRJdGVtcy5Nb0RhdGFMaXN0IGFzIEFycmF5PERvY3VtZW50SXRlbT47XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIGNvbnN0IHsgbW9EYXRhTGlzdCwgdmlld1NldHRpbmcsIGFsbENvbHVtbnMgfSA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5faW5pdENvbHVtbkZpZWxkKGFsbENvbHVtbnMsIHZpZXdTZXR0aW5nKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlT25VcGxvYWRGaWxlKHRoaXMuZmlsZUNvbHVtbik7XG4gICAgICAgIHRoaXMuX21hcERvY3VtZW50SXRlbShtb0RhdGFMaXN0LCB0aGlzLmRvY3VtZW50SXRlbXMpO1xuICAgICAgICB0aGlzLl9jaGVja01hbmRhdG9yeSgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICAgIGNvbnN0IHsgbW9EYXRhTGlzdCB9ID0gY2hhbmdlcztcbiAgICAgICAgaWYgKG1vRGF0YUxpc3QgJiYgIW1vRGF0YUxpc3QuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIGlmIChtb0RhdGFMaXN0ICYmICFtb0RhdGFMaXN0LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWFwRG9jdW1lbnRJdGVtKG1vRGF0YUxpc3QuY3VycmVudFZhbHVlLCB0aGlzLmRvY3VtZW50SXRlbXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRvY3VtZW50SXRlbXMubGVuZ3RoIC0gdGhpcy5tb0RhdGFMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVOZXdNby5lbWl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvbkZpbGVTZWxlY3Rpb24oZmlsZXM6IEZpbGVbXSwgZG9jdW1lbnRJdGVtOiBEb2N1bWVudEl0ZW0sIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNbyA9IG1vO1xuICAgICAgICB0aGlzLl91cGxvYWRGaWxlKGZpbGVzLCBkb2N1bWVudEl0ZW0pO1xuICAgIH1cbiAgICBvblJlbW92ZUZpbGUoZmlsZTogRmlsZUF0dGFjaG1lbnRJbmZvLCBtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWxlRGJOYW1lID0gdGhpcy5maWxlQ29sdW1uLk5hbWU7XG4gICAgICAgIGxldCBmaWxlcyA9IG1vW2ZpbGVEYk5hbWVdLkZpbGVzO1xuICAgICAgICBpZiAoZmlsZS5Jc05ldykge1xuICAgICAgICAgICAgZmlsZXMgPSBmaWxlcy5maWx0ZXIoKGMpID0+IGMuSWQgIT09IGZpbGUuSWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RGaWxlID0gZmlsZXMuZmluZCgoYykgPT4gYy5JZCA9PT0gZmlsZS5JZCk7XG4gICAgICAgICAgICBleGlzdEZpbGUuSXNEZWxldGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBtb1tmaWxlRGJOYW1lXS5GaWxlcyA9IFsuLi5maWxlc107XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1vKG1vKTtcbiAgICB9XG4gICAgb25TdGF0dXNDaGFuZ2VkKGU6IHsgdmFsdWU6IG51bWJlcjsgcmVqZWN0ZWRUZXh0OiBzdHJpbmcgfSwgbW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgbW9bdGhpcy5zdGF0dXNDb2x1bW4uTmFtZV0gPSBlLnZhbHVlO1xuICAgICAgICBtb1t0aGlzLnJlamVjdGVkUmVhc29uQ29sdW1uLk5hbWVdID0gZS5yZWplY3RlZFRleHQ7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1vKG1vKTtcbiAgICB9XG4gICAgb25SZWplY3RlZFRleHRDaGFuZ2UodGV4dDogc3RyaW5nLCBtbzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBtb1t0aGlzLnJlamVjdGVkUmVhc29uQ29sdW1uLk5hbWVdID0gdGV4dDtcbiAgICAgICAgdGhpcy5fdXBkYXRlTW8obW8pO1xuICAgIH1cbiAgICBfY2hlY2tNYW5kYXRvcnkoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1vRGF0YUxpc3QgPSB0aGlzLm1vRGF0YUxpc3Q7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5kb2N1bWVudEl0ZW1zLmZpbHRlcigoYykgPT4gYy5Jc1JlcXVpcmVkKTtcbiAgICAgICAgbGV0IG1hbmRhdG9yeSA9IGl0ZW1zLmxlbmd0aCA+IDA7XG4gICAgICAgIGNvbnN0IG1hbmRhdG9yeTIgPSBpdGVtc1xuICAgICAgICAgICAgLm1hcCgoaXRlbSkgPT4gbW9EYXRhTGlzdC5maW5kKChjKSA9PiBjW3RoaXMua2V5Q29sdW1uLk5hbWVdID09PSBpdGVtLkl0ZW1LZXkpKVxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbSlcbiAgICAgICAgICAgIC5zb21lKChtbykgPT4gbW9bdGhpcy5maWxlQ29sdW1uLk5hbWVdLkZpbGVzLmZpbHRlcigoYykgPT4gIWMuSXNEZWxldGVkKS5sZW5ndGggPT09IDApO1xuICAgICAgICBtYW5kYXRvcnkgPSBtYW5kYXRvcnkgJiYgbWFuZGF0b3J5MjtcbiAgICAgICAgdGhpcy5tYW5kYXRvcnkuZW1pdChtYW5kYXRvcnkpO1xuICAgIH1cbiAgICBfbWFwRG9jdW1lbnRJdGVtKG1vRGF0YUxpc3Q6IEFycmF5PE1ldGFvYmplY3REYXRhTW9kZWw+LCBkb2N1bWVudEl0ZW1zOiBBcnJheTxEb2N1bWVudEl0ZW0+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGtleU5hbWUgPSB0aGlzLmtleUNvbHVtbi5OYW1lO1xuICAgICAgICBtb0RhdGFMaXN0LmZvckVhY2goKG1vLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgbGV0IGRvY3VtZW50SXRlbSA9IGRvY3VtZW50SXRlbXMuZmluZCgoYykgPT4gYy5JdGVtS2V5ID09PSBtb1trZXlOYW1lXSk7IC8vIGZpbmQgc2V0dGluZyB0aGF0IG1hdGNoZXMgd2l0aCBtbyBieSBpdGVtS2V5XG4gICAgICAgICAgICBpZiAoZG9jdW1lbnRJdGVtKSB7XG4gICAgICAgICAgICAgICAgbW8uJGRvY3VtZW50SXRlbSA9IGRvY3VtZW50SXRlbTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnRJdGVtID0gZG9jdW1lbnRJdGVtcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT4gbW9EYXRhTGlzdC5tYXAoKGMpID0+IGNba2V5TmFtZV0pLmluZGV4T2YoaXRlbS5JdGVtS2V5KSA8IDBcbiAgICAgICAgICAgICAgICApOyAvLyBmaW5kIGEgc2V0dGluZyBoYXMgbm90IGhhdmUgJFJlbGF0ZWRNbyB5ZXRcbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vW2tleU5hbWVdID0gZG9jdW1lbnRJdGVtLkl0ZW1LZXk7XG4gICAgICAgICAgICAgICAgICAgIG1vLiRkb2N1bWVudEl0ZW0gPSBkb2N1bWVudEl0ZW07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTW8uZW1pdChtbyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9pbml0Q29sdW1uRmllbGQoYWxsQ29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdLCB2aWV3U2V0dGluZzogRG9jdW1lbnRzU2V0dGluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBrZXlDb2x1bW4gPSB0aGlzLl9maW5kQ29sdW1uQnlEYk5hbWUudHJhbnNmb3JtKGFsbENvbHVtbnMsIHZpZXdTZXR0aW5nLkl0ZW1LZXlGaWVsZCk7XG4gICAgICAgIGNvbnN0IGZpbGVDb2x1bW4gPSB0aGlzLl9maW5kQ29sdW1uQnlEYk5hbWUudHJhbnNmb3JtKGFsbENvbHVtbnMsIHZpZXdTZXR0aW5nLkZpbGVGaWVsZCk7XG4gICAgICAgIGNvbnN0IGFjY2VwdGVkQ29sdW1uID0gdGhpcy5fZmluZENvbHVtbkJ5RGJOYW1lLnRyYW5zZm9ybShhbGxDb2x1bW5zLCB2aWV3U2V0dGluZy5BY2NlcHRlZEZpZWxkKTtcbiAgICAgICAgY29uc3QgcmVqZWN0ZWRSZWFzb25Db2x1bW4gPSB0aGlzLl9maW5kQ29sdW1uQnlEYk5hbWUudHJhbnNmb3JtKGFsbENvbHVtbnMsIHZpZXdTZXR0aW5nLlJlamVjdGVkUmVhc29uRmllbGQpO1xuICAgICAgICBjb25zdCBzdGF0dXNDb2x1bW4gPSB0aGlzLl9maW5kQ29sdW1uQnlEYk5hbWUudHJhbnNmb3JtKGFsbENvbHVtbnMsIHZpZXdTZXR0aW5nLlN0YXR1c0ZpZWxkKTtcbiAgICAgICAgIWtleUNvbHVtbiAmJiB0aGlzLl9jb2x1bW5Ob3RFeGlzdHNJblJlcG9ydCh2aWV3U2V0dGluZy5JdGVtS2V5RmllbGQpO1xuICAgICAgICAhZmlsZUNvbHVtbiAmJiB0aGlzLl9jb2x1bW5Ob3RFeGlzdHNJblJlcG9ydCh2aWV3U2V0dGluZy5GaWxlRmllbGQpO1xuICAgICAgICAhcmVqZWN0ZWRSZWFzb25Db2x1bW4gJiYgdGhpcy5fY29sdW1uTm90RXhpc3RzSW5SZXBvcnQodmlld1NldHRpbmcuUmVqZWN0ZWRSZWFzb25GaWVsZCk7XG4gICAgICAgICFhY2NlcHRlZENvbHVtbiAmJiB0aGlzLl9jb2x1bW5Ob3RFeGlzdHNJblJlcG9ydCh2aWV3U2V0dGluZy5BY2NlcHRlZEZpZWxkKTtcbiAgICAgICAgIXN0YXR1c0NvbHVtbiAmJiB0aGlzLl9jb2x1bW5Ob3RFeGlzdHNJblJlcG9ydCh2aWV3U2V0dGluZy5TdGF0dXNGaWVsZCk7XG5cbiAgICAgICAga2V5Q29sdW1uICYmICh0aGlzLmtleUNvbHVtbiA9IGtleUNvbHVtbik7XG4gICAgICAgIGZpbGVDb2x1bW4gJiYgKHRoaXMuZmlsZUNvbHVtbiA9IGZpbGVDb2x1bW4pO1xuICAgICAgICBhY2NlcHRlZENvbHVtbiAmJiAodGhpcy5hY2NlcHRlZENvbHVtbiA9IGFjY2VwdGVkQ29sdW1uKTtcbiAgICAgICAgcmVqZWN0ZWRSZWFzb25Db2x1bW4gJiYgKHRoaXMucmVqZWN0ZWRSZWFzb25Db2x1bW4gPSByZWplY3RlZFJlYXNvbkNvbHVtbik7XG4gICAgICAgIHN0YXR1c0NvbHVtbiAmJiAodGhpcy5zdGF0dXNDb2x1bW4gPSBzdGF0dXNDb2x1bW4pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3N1YnNjcmliZU9uVXBsb2FkRmlsZShmaWxlQ29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZpbGVzVmFsaWRhdGlvbkhlbHBlciA9IG5ldyBGaWxlc1ZhbGlkYXRpb25IZWxwZXIoMCwgMCwgMCk7XG4gICAgICAgIGlmICh0aGlzLl91cGxvYWRTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVMaW5lYXJIZWxwZXIodGhpcy5fdXBsb2FkU2VydmljZSwgdGhpcy5fZmlsZXNWYWxpZGF0aW9uSGVscGVyLCBmaWxlQ29sdW1uLkZpZWxkRGVmSWQpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRpbmdTdGF0ZSQgPSB0aGlzLl91cGxvYWRTZXJ2aWNlLnVwbG9hZGluZ1N0YXRlJDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVXBsb2FkU2VydmljZSBub3QgcHJvdmlkZWQuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9saW5lYXJIZWxwZXIubmV3RmlsZVVwbG9hZGVkJC5zdWJzY3JpYmUoKGZpbGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vID0gdGhpcy5tb0RhdGFMaXN0LmZpbmQoKGMpID0+IGMuSWQgPT09IHRoaXMuc2VsZWN0ZWRNby5JZCk7XG4gICAgICAgICAgICBpZiAobW8pIHtcbiAgICAgICAgICAgICAgICBtb1tmaWxlQ29sdW1uLk5hbWVdLkZpbGVzID0gWy4uLm1vW2ZpbGVDb2x1bW4uTmFtZV0uRmlsZXMsIGZpbGVdO1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vKG1vKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfdXBkYXRlTW8obW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgbW8uJE5ld0lubGluZU1vID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAobW8uJFN0YXRlID09PSAnVW5jaGFuZ2VkJykge1xuICAgICAgICAgICAgbW8uJFN0YXRlID0gJ01vZGlmaWVkJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZU1vLmVtaXQobW8pO1xuICAgICAgICB0aGlzLl9jaGVja01hbmRhdG9yeSgpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NyZWF0ZUxpbmVhckhlbHBlcihcbiAgICAgICAgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSxcbiAgICAgICAgZmlsZXNWYWxpZGF0aW9uSGVscGVyOiBGaWxlc1ZhbGlkYXRpb25IZWxwZXIsXG4gICAgICAgIGZpZWxkRGVmSWQ6IHN0cmluZ1xuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saW5lYXJIZWxwZXIgPSBuZXcgTGluZWFyTGlzdEhlbHBlcih1cGxvYWRTZXJ2aWNlLCBmaWxlc1ZhbGlkYXRpb25IZWxwZXIsIGZpZWxkRGVmSWQpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3VwbG9hZEZpbGUoZmlsZXM6IEZpbGVbXSwgZG9jdW1lbnRJdGVtOiBEb2N1bWVudEl0ZW0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZXNWYWxpZGF0aW9uSGVscGVyID0gdGhpcy5fZmlsZXNWYWxpZGF0aW9uSGVscGVyO1xuICAgICAgICBmaWxlc1ZhbGlkYXRpb25IZWxwZXIubWF4RmlsZUNvdW50ID0gK2RvY3VtZW50SXRlbS5NYXhGaWxlQ291bnQ7XG4gICAgICAgIGZpbGVzVmFsaWRhdGlvbkhlbHBlci5tYXhGaWxlU2l6ZSA9ICtkb2N1bWVudEl0ZW0uRWFjaEZpbGVTaXplO1xuICAgICAgICBmaWxlc1ZhbGlkYXRpb25IZWxwZXIubWF4VG90YWxGaWxlU2l6ZSA9ICtkb2N1bWVudEl0ZW0uTWF4RmlsZVNpemU7XG4gICAgICAgIHRoaXMuX2xpbmVhckhlbHBlci51cGxvYWRUb1NlcnZlcihmaWxlcywgZG9jdW1lbnRJdGVtLlRpdGxlKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9jb2x1bW5Ob3RFeGlzdHNJblJlcG9ydChjb2x1bW5DYXB0aW9uKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY2FuIG5vdCBmaW5kICR7Y29sdW1uQ2FwdGlvbn0gY29sdW1uIGluIHJlcG9ydC5wbGVhc2UgYWRkIGl0IHRvIHJlcG9ydCBjb2x1bW5zLmApO1xuICAgIH1cbn1cbiIsIjwhLS0gPHVsIGZkLWxpc3QgW2J5bGluZV09XCJ0cnVlXCIgZmRDb21wYWN0IFtzZWxlY3Rpb25dPVwiZmFsc2VcIj4gLS0+XG48dGFibGUgZmQtdGFibGUgYXJpYS1sYWJlbD1cIkRlZmF1bHRcIiBbYWxsQ2VsbHNGb2N1c2FibGVdPVwidHJ1ZVwiIFtub0JvcmRlclhdPVwidHJ1ZVwiPlxuICAgIDx0aGVhZCBmZC10YWJsZS1oZWFkZXI+XG4gICAgICAgIDx0ciBmZC10YWJsZS1yb3c+XG4gICAgICAgICAgICA8dGggZmQtdGFibGUtY2VsbD57eyAn2LnaqdizJyB8IGJiYlRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICA8dGggZmQtdGFibGUtY2VsbCBzdHlsZT1cIm1pbi13aWR0aDogMTQwcHg7IHdpZHRoOiBhdXRvXCI+e3sgJ9mG2YjYuSDZhdiv2LHaqScgfCBiYmJUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGwgc3R5bGU9XCJ3aWR0aDogOTklXCI+e3sgJ9in2YTYtdin2YIg2YHYp9uM2YQnIHwgYmJiVHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICAgIDx0aCBmZC10YWJsZS1jZWxsPjwvdGg+XG4gICAgICAgICAgICA8dGggZmQtdGFibGUtY2VsbCBzdHlsZT1cIndpZHRoOiA0MDBweDsgbWluLXdpZHRoOiA0MDBweDsgbWF4LXdpZHRoOiA0MDBweFwiPnt7ICfZiNi22LnbjNiqJyB8IGJiYlRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHkgZmQtdGFibGUtYm9keT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbW8gb2YgbW9EYXRhTGlzdDsgdHJhY2tCeTogX3RyYWNrQnlSb3dcIj5cbiAgICAgICAgICAgIDxiZGMtYmFyc2EtZG9jdW1lbnQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtby4kZG9jdW1lbnRJdGVtXCJcbiAgICAgICAgICAgICAgICBbZG9jdW1lbnRJdGVtXT1cIm1vLiRkb2N1bWVudEl0ZW1cIlxuICAgICAgICAgICAgICAgIFthY2NlcHRlZF09XCJtb1thY2NlcHRlZENvbHVtbi5OYW1lXVwiXG4gICAgICAgICAgICAgICAgW2ZpbGVzXT1cIm1vW2ZpbGVDb2x1bW4uTmFtZV0uRmlsZXNcIlxuICAgICAgICAgICAgICAgIFt1cGxvYWRpbmdTdGF0ZV09XCIodXBsb2FkaW5nU3RhdGUkIHwgYXN5bmMpISFcIlxuICAgICAgICAgICAgICAgIFtyZWplY3RlZFJlYXNvbl09XCJtb1tyZWplY3RlZFJlYXNvbkNvbHVtbi5OYW1lXVwiXG4gICAgICAgICAgICAgICAgW2ZpbGVEYk5hbWVdPVwiZmlsZUNvbHVtbi5OYW1lXCJcbiAgICAgICAgICAgICAgICBbc3RhdHVzXT1cIittb1tzdGF0dXNDb2x1bW4uTmFtZV1cIlxuICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhYWNjZXNzLkVkaXRcIlxuICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICAgICAgICAgIChyZW1vdmVGaWxlKT1cIm9uUmVtb3ZlRmlsZSgkZXZlbnQsIG1vKVwiXG4gICAgICAgICAgICAgICAgKGZpbGVTZWxlY3Rpb25DaGFuZ2UpPVwib25GaWxlU2VsZWN0aW9uKCRldmVudCwgbW8uJGRvY3VtZW50SXRlbSwgbW8pXCJcbiAgICAgICAgICAgICAgICAocmVqZWN0VGV4dENoYW5nZSk9XCJvblJlamVjdGVkVGV4dENoYW5nZSgkZXZlbnQsIG1vKVwiXG4gICAgICAgICAgICAgICAgKHN0YXR1c0NoYW5nZWQpPVwib25TdGF0dXNDaGFuZ2VkKCRldmVudCwgbW8pXCJcbiAgICAgICAgICAgID48L2JkYy1iYXJzYS1kb2N1bWVudC1saXN0LWl0ZW0+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8IS0tIDwvdWw+IC0tPlxuICAgIDwvdGJvZHk+XG48L3RhYmxlPlxuIl19