@devopmaat/badaboom 1.1.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 (231) hide show
  1. package/README.md +3 -0
  2. package/_index.scss +1 -0
  3. package/esm2022/devopmaat-badaboom.mjs +5 -0
  4. package/esm2022/lib/application/common/bdb-data-source.mjs +42 -0
  5. package/esm2022/lib/application/common/paginator/bdb-paginator.component.mjs +37 -0
  6. package/esm2022/lib/application/common/query-input/bdb-query-input.component.mjs +45 -0
  7. package/esm2022/lib/application/common/search/bdb-search-wrapper.component.mjs +33 -0
  8. package/esm2022/lib/application/common/search/bdb-search.component.mjs +163 -0
  9. package/esm2022/lib/application/common/table/bdb-cell.directive.mjs +20 -0
  10. package/esm2022/lib/application/common/table/bdb-column-builder.mjs +94 -0
  11. package/esm2022/lib/application/common/table/bdb-column-options.mjs +2 -0
  12. package/esm2022/lib/application/common/table/bdb-column-type.mjs +12 -0
  13. package/esm2022/lib/application/common/table/bdb-column.mjs +2 -0
  14. package/esm2022/lib/application/common/table/bdb-context-action.mjs +2 -0
  15. package/esm2022/lib/application/common/table/bdb-table.component.mjs +193 -0
  16. package/esm2022/lib/application/common/table/dynamic.pipe.mjs +26 -0
  17. package/esm2022/lib/application/exception-log/exception-log-table/exception-log-table.component.mjs +49 -0
  18. package/esm2022/lib/application/task-log/task-log-outcome.pipe.mjs +31 -0
  19. package/esm2022/lib/application/task-log/task-log-status.pipe.mjs +29 -0
  20. package/esm2022/lib/application/task-log-parameter/task-log-parameter-value.pipe.mjs +49 -0
  21. package/esm2022/lib/application/user/user-table/user-table.component.mjs +68 -0
  22. package/esm2022/lib/bdb-auth-options.mjs +39 -0
  23. package/esm2022/lib/bdb-options.mjs +25 -0
  24. package/esm2022/lib/common/alert/bdb-alert.component.mjs +40 -0
  25. package/esm2022/lib/common/alert-error-response/bdb-alert-error-response.component.mjs +107 -0
  26. package/esm2022/lib/common/bdb-flex-child.directive.mjs +24 -0
  27. package/esm2022/lib/common/bdb-flex.directive.mjs +112 -0
  28. package/esm2022/lib/common/bdb-form-error.directive.mjs +74 -0
  29. package/esm2022/lib/common/bdb-grid-child.directive.mjs +81 -0
  30. package/esm2022/lib/common/bdb-grid.directive.mjs +107 -0
  31. package/esm2022/lib/common/bdb-palette.mjs +2 -0
  32. package/esm2022/lib/common/boolean-display/bdb-boolean-display.component.mjs +23 -0
  33. package/esm2022/lib/common/color.mjs +26 -0
  34. package/esm2022/lib/common/constructor.mjs +2 -0
  35. package/esm2022/lib/common/field/bdb-field.component.mjs +17 -0
  36. package/esm2022/lib/common/function.pipe.mjs +20 -0
  37. package/esm2022/lib/common/layout-error.mjs +6 -0
  38. package/esm2022/lib/common/linked-list.mjs +53 -0
  39. package/esm2022/lib/domain/auth/account-info.mjs +2 -0
  40. package/esm2022/lib/domain/auth/account.service.mjs +32 -0
  41. package/esm2022/lib/domain/auth/auth.service.mjs +119 -0
  42. package/esm2022/lib/domain/auth/reset-password-token.mjs +2 -0
  43. package/esm2022/lib/domain/auth/token-expired.interceptor.mjs +21 -0
  44. package/esm2022/lib/domain/auth/token-reponse.mjs +2 -0
  45. package/esm2022/lib/domain/auth/token.interceptor.mjs +17 -0
  46. package/esm2022/lib/domain/common/bdb-filter.mjs +2 -0
  47. package/esm2022/lib/domain/common/bdb-request.mjs +2 -0
  48. package/esm2022/lib/domain/common/bdb-response.mjs +2 -0
  49. package/esm2022/lib/domain/common/entities/bdb-entity-read.mjs +2 -0
  50. package/esm2022/lib/domain/common/entities/bdb-entity-update.mjs +2 -0
  51. package/esm2022/lib/domain/common/entities/bdb-entity.mjs +2 -0
  52. package/esm2022/lib/domain/common/services/bdb-service-cr.mjs +7 -0
  53. package/esm2022/lib/domain/common/services/bdb-service-crd.mjs +7 -0
  54. package/esm2022/lib/domain/common/services/bdb-service-cru.mjs +7 -0
  55. package/esm2022/lib/domain/common/services/bdb-service-crud.mjs +7 -0
  56. package/esm2022/lib/domain/common/services/bdb-service-r.mjs +10 -0
  57. package/esm2022/lib/domain/common/services/bdb-service-rd.mjs +7 -0
  58. package/esm2022/lib/domain/common/services/bdb-service-ru.mjs +7 -0
  59. package/esm2022/lib/domain/common/services/bdb-service-rud.mjs +7 -0
  60. package/esm2022/lib/domain/common/services/bdb-service.mjs +11 -0
  61. package/esm2022/lib/domain/entities/exception-log/exception-log-read.mjs +2 -0
  62. package/esm2022/lib/domain/entities/exception-log/exception-log.mjs +2 -0
  63. package/esm2022/lib/domain/entities/exception-log/exception-log.service.mjs +17 -0
  64. package/esm2022/lib/domain/entities/media/media-read.mjs +2 -0
  65. package/esm2022/lib/domain/entities/media/media.mjs +2 -0
  66. package/esm2022/lib/domain/entities/media/media.service.mjs +27 -0
  67. package/esm2022/lib/domain/entities/role/role-read.mjs +2 -0
  68. package/esm2022/lib/domain/entities/role/role.mjs +2 -0
  69. package/esm2022/lib/domain/entities/role/role.service.mjs +17 -0
  70. package/esm2022/lib/domain/entities/task-log/task-log-create.mjs +2 -0
  71. package/esm2022/lib/domain/entities/task-log/task-log-read.mjs +2 -0
  72. package/esm2022/lib/domain/entities/task-log/task-log.mjs +2 -0
  73. package/esm2022/lib/domain/entities/task-log/task-log.service.mjs +20 -0
  74. package/esm2022/lib/domain/entities/task-log-parameter/task-log-parameter-create.mjs +2 -0
  75. package/esm2022/lib/domain/entities/task-log-parameter/task-log-parameter-read.mjs +2 -0
  76. package/esm2022/lib/domain/entities/task-log-parameter/task-log-parameter.mjs +2 -0
  77. package/esm2022/lib/domain/entities/task-log-parameter/task-log-parameter.service.mjs +17 -0
  78. package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule-create.mjs +2 -0
  79. package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule-read.mjs +2 -0
  80. package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule-update.mjs +2 -0
  81. package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule.mjs +2 -0
  82. package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule.service.mjs +17 -0
  83. package/esm2022/lib/domain/entities/user/user-create.mjs +2 -0
  84. package/esm2022/lib/domain/entities/user/user-read.mjs +2 -0
  85. package/esm2022/lib/domain/entities/user/user-update.mjs +2 -0
  86. package/esm2022/lib/domain/entities/user/user.mjs +2 -0
  87. package/esm2022/lib/domain/entities/user/user.service.mjs +17 -0
  88. package/esm2022/lib/domain/entities/user-role/user-role-create.mjs +2 -0
  89. package/esm2022/lib/domain/entities/user-role/user-role-read.mjs +2 -0
  90. package/esm2022/lib/domain/entities/user-role/user-role.mjs +2 -0
  91. package/esm2022/lib/domain/entities/user-role/user-role.service.mjs +17 -0
  92. package/esm2022/lib/domain/enums/media-type.mjs +7 -0
  93. package/esm2022/lib/domain/enums/task-log-outcome.mjs +9 -0
  94. package/esm2022/lib/domain/enums/task-log-parameter-type.mjs +8 -0
  95. package/esm2022/lib/domain/enums/task-log-status.mjs +8 -0
  96. package/esm2022/lib/domain/tasks/task-log-scheduler.service.mjs +26 -0
  97. package/esm2022/lib/domain/tasks/task-log-type-parameter.mjs +2 -0
  98. package/esm2022/lib/domain/tasks/task-log-type.mjs +2 -0
  99. package/esm2022/lib/domain/tasks/task-log-type.service.mjs +44 -0
  100. package/esm2022/lib/lib.config.mjs +67 -0
  101. package/esm2022/lib/presentation/access-denied-page/access-denied-page.component.mjs +51 -0
  102. package/esm2022/lib/presentation/auth-container/auth-container.component.mjs +12 -0
  103. package/esm2022/lib/presentation/forgot-password-page/forgot-password-page.component.mjs +75 -0
  104. package/esm2022/lib/presentation/invalid-token-page/invalid-token-page.component.mjs +26 -0
  105. package/esm2022/lib/presentation/logged-out.guard.mjs +16 -0
  106. package/esm2022/lib/presentation/login-page/login-page.component.mjs +90 -0
  107. package/esm2022/lib/presentation/logout-page/logout-page.component.mjs +33 -0
  108. package/esm2022/lib/presentation/reset-password-page/reset-password-page.component.mjs +102 -0
  109. package/esm2022/lib/presentation/reset-password.resolver.mjs +25 -0
  110. package/esm2022/lib/presentation/role.guard.mjs +28 -0
  111. package/esm2022/public-api.mjs +109 -0
  112. package/fesm2022/devopmaat-badaboom.mjs +2443 -0
  113. package/fesm2022/devopmaat-badaboom.mjs.map +1 -0
  114. package/index.d.ts +5 -0
  115. package/lib/_theme.scss +32 -0
  116. package/lib/application/common/bdb-data-source.d.ts +25 -0
  117. package/lib/application/common/paginator/bdb-paginator.component.d.ts +17 -0
  118. package/lib/application/common/query-input/_bdb-query-input-theme.scss +17 -0
  119. package/lib/application/common/query-input/bdb-query-input.component.d.ts +15 -0
  120. package/lib/application/common/search/_bdb-search-theme.scss +12 -0
  121. package/lib/application/common/search/bdb-search-wrapper.component.d.ts +13 -0
  122. package/lib/application/common/search/bdb-search.component.d.ts +43 -0
  123. package/lib/application/common/table/_bdb-table-theme.scss +48 -0
  124. package/lib/application/common/table/bdb-cell.directive.d.ts +9 -0
  125. package/lib/application/common/table/bdb-column-builder.d.ts +18 -0
  126. package/lib/application/common/table/bdb-column-options.d.ts +32 -0
  127. package/lib/application/common/table/bdb-column-type.d.ts +10 -0
  128. package/lib/application/common/table/bdb-column.d.ts +19 -0
  129. package/lib/application/common/table/bdb-context-action.d.ts +7 -0
  130. package/lib/application/common/table/bdb-table.component.d.ts +57 -0
  131. package/lib/application/common/table/dynamic.pipe.d.ts +9 -0
  132. package/lib/application/exception-log/exception-log-table/exception-log-table.component.d.ts +26 -0
  133. package/lib/application/task-log/task-log-outcome.pipe.d.ts +8 -0
  134. package/lib/application/task-log/task-log-status.pipe.d.ts +8 -0
  135. package/lib/application/task-log-parameter/task-log-parameter-value.pipe.d.ts +10 -0
  136. package/lib/application/user/user-table/user-table.component.d.ts +25 -0
  137. package/lib/bdb-auth-options.d.ts +28 -0
  138. package/lib/bdb-options.d.ts +16 -0
  139. package/lib/common/_button-theme.scss +87 -0
  140. package/lib/common/_icon-theme.scss +32 -0
  141. package/lib/common/alert/_bdb-alert-theme.scss +34 -0
  142. package/lib/common/alert/bdb-alert.component.d.ts +20 -0
  143. package/lib/common/alert-error-response/bdb-alert-error-response.component.d.ts +17 -0
  144. package/lib/common/bdb-flex-child.directive.d.ts +11 -0
  145. package/lib/common/bdb-flex.directive.d.ts +28 -0
  146. package/lib/common/bdb-form-error.directive.d.ts +15 -0
  147. package/lib/common/bdb-grid-child.directive.d.ts +14 -0
  148. package/lib/common/bdb-grid.directive.d.ts +26 -0
  149. package/lib/common/bdb-palette.d.ts +1 -0
  150. package/lib/common/boolean-display/_bdb-boolean-display-theme.scss +18 -0
  151. package/lib/common/boolean-display/bdb-boolean-display.component.d.ts +7 -0
  152. package/lib/common/color.d.ts +14 -0
  153. package/lib/common/constructor.d.ts +2 -0
  154. package/lib/common/field/bdb-field.component.d.ts +6 -0
  155. package/lib/common/function.pipe.d.ts +7 -0
  156. package/lib/common/layout-error.d.ts +3 -0
  157. package/lib/common/linked-list.d.ts +15 -0
  158. package/lib/domain/auth/account-info.d.ts +6 -0
  159. package/lib/domain/auth/account.service.d.ts +29 -0
  160. package/lib/domain/auth/auth.service.d.ts +35 -0
  161. package/lib/domain/auth/reset-password-token.d.ts +4 -0
  162. package/lib/domain/auth/token-expired.interceptor.d.ts +2 -0
  163. package/lib/domain/auth/token-reponse.d.ts +5 -0
  164. package/lib/domain/auth/token.interceptor.d.ts +2 -0
  165. package/lib/domain/common/bdb-filter.d.ts +9 -0
  166. package/lib/domain/common/bdb-request.d.ts +10 -0
  167. package/lib/domain/common/bdb-response.d.ts +6 -0
  168. package/lib/domain/common/entities/bdb-entity-read.d.ts +3 -0
  169. package/lib/domain/common/entities/bdb-entity-update.d.ts +3 -0
  170. package/lib/domain/common/entities/bdb-entity.d.ts +3 -0
  171. package/lib/domain/common/services/bdb-service-cr.d.ts +7 -0
  172. package/lib/domain/common/services/bdb-service-crd.d.ts +7 -0
  173. package/lib/domain/common/services/bdb-service-cru.d.ts +8 -0
  174. package/lib/domain/common/services/bdb-service-crud.d.ts +8 -0
  175. package/lib/domain/common/services/bdb-service-r.d.ts +10 -0
  176. package/lib/domain/common/services/bdb-service-rd.d.ts +7 -0
  177. package/lib/domain/common/services/bdb-service-ru.d.ts +8 -0
  178. package/lib/domain/common/services/bdb-service-rud.d.ts +8 -0
  179. package/lib/domain/common/services/bdb-service.d.ts +6 -0
  180. package/lib/domain/entities/exception-log/exception-log-read.d.ts +9 -0
  181. package/lib/domain/entities/exception-log/exception-log.d.ts +9 -0
  182. package/lib/domain/entities/exception-log/exception-log.service.d.ts +9 -0
  183. package/lib/domain/entities/media/media-read.d.ts +14 -0
  184. package/lib/domain/entities/media/media.d.ts +15 -0
  185. package/lib/domain/entities/media/media.service.d.ts +12 -0
  186. package/lib/domain/entities/role/role-read.d.ts +7 -0
  187. package/lib/domain/entities/role/role.d.ts +4 -0
  188. package/lib/domain/entities/role/role.service.d.ts +9 -0
  189. package/lib/domain/entities/task-log/task-log-create.d.ts +5 -0
  190. package/lib/domain/entities/task-log/task-log-read.d.ts +11 -0
  191. package/lib/domain/entities/task-log/task-log.d.ts +15 -0
  192. package/lib/domain/entities/task-log/task-log.service.d.ts +12 -0
  193. package/lib/domain/entities/task-log-parameter/task-log-parameter-create.d.ts +7 -0
  194. package/lib/domain/entities/task-log-parameter/task-log-parameter-read.d.ts +11 -0
  195. package/lib/domain/entities/task-log-parameter/task-log-parameter.d.ts +10 -0
  196. package/lib/domain/entities/task-log-parameter/task-log-parameter.service.d.ts +9 -0
  197. package/lib/domain/entities/task-log-schedule/task-log-schedule-create.d.ts +5 -0
  198. package/lib/domain/entities/task-log-schedule/task-log-schedule-read.d.ts +7 -0
  199. package/lib/domain/entities/task-log-schedule/task-log-schedule-update.d.ts +5 -0
  200. package/lib/domain/entities/task-log-schedule/task-log-schedule.d.ts +7 -0
  201. package/lib/domain/entities/task-log-schedule/task-log-schedule.service.d.ts +11 -0
  202. package/lib/domain/entities/user/user-create.d.ts +3 -0
  203. package/lib/domain/entities/user/user-read.d.ts +6 -0
  204. package/lib/domain/entities/user/user-update.d.ts +4 -0
  205. package/lib/domain/entities/user/user.d.ts +5 -0
  206. package/lib/domain/entities/user/user.service.d.ts +11 -0
  207. package/lib/domain/entities/user-role/user-role-create.d.ts +4 -0
  208. package/lib/domain/entities/user-role/user-role-read.d.ts +7 -0
  209. package/lib/domain/entities/user-role/user-role.d.ts +7 -0
  210. package/lib/domain/entities/user-role/user-role.service.d.ts +10 -0
  211. package/lib/domain/enums/media-type.d.ts +5 -0
  212. package/lib/domain/enums/task-log-outcome.d.ts +7 -0
  213. package/lib/domain/enums/task-log-parameter-type.d.ts +6 -0
  214. package/lib/domain/enums/task-log-status.d.ts +6 -0
  215. package/lib/domain/tasks/task-log-scheduler.service.d.ts +11 -0
  216. package/lib/domain/tasks/task-log-type-parameter.d.ts +11 -0
  217. package/lib/domain/tasks/task-log-type.d.ts +7 -0
  218. package/lib/domain/tasks/task-log-type.service.d.ts +14 -0
  219. package/lib/lib.config.d.ts +11 -0
  220. package/lib/presentation/access-denied-page/access-denied-page.component.d.ts +16 -0
  221. package/lib/presentation/auth-container/auth-container.component.d.ts +5 -0
  222. package/lib/presentation/forgot-password-page/forgot-password-page.component.d.ts +20 -0
  223. package/lib/presentation/invalid-token-page/invalid-token-page.component.d.ts +8 -0
  224. package/lib/presentation/logged-out.guard.d.ts +2 -0
  225. package/lib/presentation/login-page/login-page.component.d.ts +27 -0
  226. package/lib/presentation/logout-page/logout-page.component.d.ts +13 -0
  227. package/lib/presentation/reset-password-page/reset-password-page.component.d.ts +31 -0
  228. package/lib/presentation/reset-password.resolver.d.ts +3 -0
  229. package/lib/presentation/role.guard.d.ts +2 -0
  230. package/package.json +27 -0
  231. package/public-api.d.ts +99 -0
@@ -0,0 +1,193 @@
1
+ import { Component, ContentChildren, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
+ import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
3
+ import { Subject } from 'rxjs';
4
+ import { CommonModule } from '@angular/common';
5
+ import { MatTableModule } from '@angular/material/table';
6
+ import { MatCheckboxModule } from '@angular/material/checkbox';
7
+ import { MatSortModule } from '@angular/material/sort';
8
+ import { BdbAlertErrorResponseComponent } from '../../../common/alert-error-response/bdb-alert-error-response.component';
9
+ import { DynamicPipe } from './dynamic.pipe';
10
+ import { BdbBooleanDisplayComponent } from '../../../common/boolean-display/bdb-boolean-display.component';
11
+ import { MatIconModule } from '@angular/material/icon';
12
+ import { BdbCellDirective } from './bdb-cell.directive';
13
+ import { BdbColumnType } from './bdb-column-type';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "@angular/common";
16
+ import * as i2 from "@angular/material/table";
17
+ import * as i3 from "@angular/material/checkbox";
18
+ import * as i4 from "@angular/material/sort";
19
+ import * as i5 from "@angular/material/menu";
20
+ import * as i6 from "@angular/material/icon";
21
+ export class BdbTableComponent {
22
+ constructor() {
23
+ this._onDestroy = new Subject();
24
+ this.columns = [];
25
+ this.displayedColumns = [];
26
+ this.contextActions = [];
27
+ this.selectOnRowClick = true;
28
+ this.selectedRowClass = 'selected';
29
+ this.isClickable = true;
30
+ this.rowClick = new EventEmitter();
31
+ this.contextAction = new EventEmitter();
32
+ this.columnType = BdbColumnType;
33
+ this.contextMenuPosition = { x: '0px', y: '0px' };
34
+ this.trackById = (_, item) => {
35
+ return item.id;
36
+ };
37
+ }
38
+ ngOnInit() {
39
+ this.load();
40
+ }
41
+ ngOnChanges() {
42
+ if (this.columns && !this.displayedColumns.length) {
43
+ this.displayedColumns = this.columns.map(x => x.id);
44
+ }
45
+ if (this.selection?.isMultipleSelection() && !(this.displayedColumns[0] === 'selection')) {
46
+ this.displayedColumns.unshift('selection');
47
+ }
48
+ }
49
+ ngAfterContentInit() {
50
+ this.setColumnTemplates();
51
+ }
52
+ ngOnDestroy() {
53
+ this._onDestroy.next();
54
+ this._onDestroy.complete();
55
+ }
56
+ load() {
57
+ this.error = undefined;
58
+ this.dataSource.load();
59
+ }
60
+ setColumnTemplates() {
61
+ const templates = this.cellTemplates;
62
+ if (templates == undefined || !this.cellTemplates?.length) {
63
+ return;
64
+ }
65
+ if (this.columns && this.columns.length) {
66
+ this.columns.forEach(x => {
67
+ const tpl = templates.filter(y => y.bdbCellDef === x.id)[0];
68
+ if (tpl) {
69
+ x.template = tpl.templateRef;
70
+ }
71
+ });
72
+ }
73
+ }
74
+ onRowClick(row) {
75
+ if (this.selection && this.selectOnRowClick) {
76
+ this.selection.toggle(row);
77
+ }
78
+ this.rowClick.emit(row);
79
+ }
80
+ // SORT
81
+ sortData(event) {
82
+ const column = this.columns.find(x => x.id === event.active);
83
+ if (column) {
84
+ const fxString = column.field.toString();
85
+ this.dataSource.request.sortField = fxString.substring(fxString.lastIndexOf('.') + 1).trim();
86
+ this.dataSource.request.sortDirection = event.direction;
87
+ this.dataSource.load();
88
+ }
89
+ }
90
+ // CONTEXT MENU
91
+ onContextMenu(event, row) {
92
+ event.preventDefault();
93
+ if (this.contextActions && this.contextActions.length) {
94
+ this.contextMenuPosition.x = event.clientX + 'px';
95
+ this.contextMenuPosition.y = event.clientY + 'px';
96
+ this.contextMenu.menuData = { row: row };
97
+ if (this.contextMenu.menu) {
98
+ this.contextMenu.menu.focusFirstItem('mouse');
99
+ }
100
+ this.contextMenu.openMenu();
101
+ }
102
+ }
103
+ onContextMenuAction(action, row) {
104
+ this.contextAction.emit({ action: action, row: row });
105
+ }
106
+ isAllSelected() {
107
+ if (!this.selection) {
108
+ return false;
109
+ }
110
+ return this.dataSource.data.every(x => this.selection?.isSelected(x));
111
+ }
112
+ anySelected() {
113
+ if (!this.selection) {
114
+ return false;
115
+ }
116
+ return this.dataSource.data.some(x => this.selection?.isSelected(x));
117
+ }
118
+ toggleAllRows() {
119
+ if (!(this.selection && this.dataSource)) {
120
+ return;
121
+ }
122
+ if (this.isAllSelected()) {
123
+ this.selection.deselect(...this.dataSource.data);
124
+ }
125
+ else {
126
+ this.selection.select(...this.dataSource.data);
127
+ }
128
+ }
129
+ rowClass(row) {
130
+ if (!(this.selection || this.rowColor)) {
131
+ return undefined;
132
+ }
133
+ const ret = {};
134
+ if (this.selection) {
135
+ ret[this.selectedRowClass] = this.selection.isSelected(row);
136
+ }
137
+ if (this.rowColor) {
138
+ const palette = this.rowColor(row);
139
+ if (palette) {
140
+ ret['bdb-' + palette] = true;
141
+ }
142
+ else if (!this.selection) {
143
+ return undefined;
144
+ }
145
+ }
146
+ return ret;
147
+ }
148
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BdbTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: BdbTableComponent, isStandalone: true, selector: "bdb-table[dataSource]", inputs: { columns: "columns", dataSource: "dataSource", displayedColumns: "displayedColumns", contextActions: "contextActions", selection: "selection", selectOnRowClick: "selectOnRowClick", selectedRowClass: "selectedRowClass", isClickable: "isClickable", rowColor: "rowColor" }, outputs: { rowClick: "rowClick", contextAction: "contextAction" }, queries: [{ propertyName: "cellTemplates", predicate: BdbCellDirective, descendants: true }], viewQueries: [{ propertyName: "contextMenu", first: true, predicate: MatMenuTrigger, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"bdb-table-container\">\r\n <table\r\n mat-table\r\n class=\"bdb-table\"\r\n [class.is-clickable]=\"isClickable\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n (matSortChange)=\"sortData($event)\"\r\n *ngIf=\"dataSource\"\r\n [trackBy]=\"trackById\">\r\n <ng-container matColumnDef=\"selection\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"anySelected() && !isAllSelected()\"\r\n color=\"primary\"\r\n *ngIf=\"selection\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n color=\"accent\"\r\n *ngIf=\"selection\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container [matColumnDef]=\"column.id\" *ngFor=\"let column of columns\">\r\n <ng-container>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n mat-sort-header=\"{{ column.id }}\"\r\n [disabled]=\"column.sortDisabled\"\r\n [width]=\"column.width\"\r\n [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\"\r\n [arrowPosition]=\"column.textAlign && column.textAlign === 'end' ? 'before' : 'after'\">\r\n {{ column.title }}\r\n </th>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let row\" [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.template ? column.template : cellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n (click)=\"onRowClick(row)\"\r\n [ngClass]=\"rowClass(row)\"\r\n (contextmenu)=\"onContextMenu($event, row)\"></tr>\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" [colSpan]=\"displayedColumns.length\">\r\n <bdb-alert-error-response\r\n [value]=\"dataSource.error$ | async\"\r\n *ngIf=\"dataSource && (dataSource.error$ | async); else noData\"></bdb-alert-error-response>\r\n </td>\r\n </tr>\r\n </table>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #cellTemplate let-row let-column=\"column\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.pipe ? pipedCellTemplate : defaultCellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pipedCellTemplate let-column=\"column\" let-row>\r\n {{ column.field(row) | dynamicPipe: column.pipe : null }}\r\n</ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-row let-column=\"column\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"columnType.String\">{{ column.field(row) }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Number\">{{ column.field(row) | number: column.format }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Percentage\">{{\r\n column.field(row) | percent: column.digitsInfo : column.locale\r\n }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Currency\">{{\r\n column.field(row) | currency: column.currencyCode : column.display : column.digitsInfo : column.locale\r\n }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Date\"> {{ column.field(row) | date: column.format }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Boolean\">\r\n <bdb-boolean-display [value]=\"column.field(row)\"></bdb-boolean-display>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Enum\">{{ column.field(row) }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Custom\">*?*</ng-container>\r\n <ng-container *ngSwitchDefault>{{ column.field(row) | json }}</ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #noData>\r\n <div class=\"no-data\"><em>Geen gegevens gevonden</em></div>\r\n</ng-template>\r\n\r\n<div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\"></div>\r\n<mat-menu #contextMenu=\"matMenu\" #contextMenu2=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n <ng-container *ngFor=\"let action of contextActions\">\r\n <button\r\n mat-menu-item\r\n (click)=\"onContextMenuAction(action, row)\"\r\n *ngIf=\"action.condition === undefined || action.condition(row)\">\r\n <mat-icon [color]=\"action.color\">{{ action.icon }}</mat-icon> {{ action.label }}\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: [".bdb-table{width:100%}.bdb-table.is-clickable tr:hover{cursor:pointer}.bdb-table-container{height:100%;overflow:auto}.bdb-table-container::-webkit-scrollbar{width:4px}.bdb-table-container::-webkit-scrollbar-thumb{background-color:#0003}.bdb-table-container::-webkit-scrollbar-track{background-color:#0000001a}.text-end{text-align:end}.no-data{color:#00000080;padding:8px}.mat-mdc-header-row .mat-mdc-header-cell{padding-left:8px;padding-right:8px}.mat-mdc-header-row .mat-mdc-header-cell:first-of-type{padding-left:24px}.mat-mdc-header-row .mat-mdc-header-cell:last-of-type{padding-right:24px}.mat-mdc-row .mat-mdc-cell{padding-left:8px;padding-right:8px}.mat-mdc-row .mat-mdc-cell:first-of-type{padding-left:24px}.mat-mdc-row .mat-mdc-cell:last-of-type{padding-right:24px}.mat-column-selection{width:48px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.PercentPipe, name: "percent" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i2.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i4.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value"] }, { kind: "pipe", type: DynamicPipe, name: "dynamicPipe" }, { kind: "component", type: BdbBooleanDisplayComponent, selector: "bdb-boolean-display", inputs: ["value"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
150
+ }
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BdbTableComponent, decorators: [{
152
+ type: Component,
153
+ args: [{ selector: 'bdb-table[dataSource]', standalone: true, imports: [
154
+ CommonModule,
155
+ MatTableModule,
156
+ MatCheckboxModule,
157
+ MatSortModule,
158
+ BdbAlertErrorResponseComponent,
159
+ DynamicPipe,
160
+ BdbBooleanDisplayComponent,
161
+ MatMenuModule,
162
+ MatIconModule,
163
+ ], template: "<div class=\"bdb-table-container\">\r\n <table\r\n mat-table\r\n class=\"bdb-table\"\r\n [class.is-clickable]=\"isClickable\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n (matSortChange)=\"sortData($event)\"\r\n *ngIf=\"dataSource\"\r\n [trackBy]=\"trackById\">\r\n <ng-container matColumnDef=\"selection\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"anySelected() && !isAllSelected()\"\r\n color=\"primary\"\r\n *ngIf=\"selection\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n color=\"accent\"\r\n *ngIf=\"selection\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container [matColumnDef]=\"column.id\" *ngFor=\"let column of columns\">\r\n <ng-container>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n mat-sort-header=\"{{ column.id }}\"\r\n [disabled]=\"column.sortDisabled\"\r\n [width]=\"column.width\"\r\n [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\"\r\n [arrowPosition]=\"column.textAlign && column.textAlign === 'end' ? 'before' : 'after'\">\r\n {{ column.title }}\r\n </th>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let row\" [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.template ? column.template : cellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n (click)=\"onRowClick(row)\"\r\n [ngClass]=\"rowClass(row)\"\r\n (contextmenu)=\"onContextMenu($event, row)\"></tr>\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" [colSpan]=\"displayedColumns.length\">\r\n <bdb-alert-error-response\r\n [value]=\"dataSource.error$ | async\"\r\n *ngIf=\"dataSource && (dataSource.error$ | async); else noData\"></bdb-alert-error-response>\r\n </td>\r\n </tr>\r\n </table>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #cellTemplate let-row let-column=\"column\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.pipe ? pipedCellTemplate : defaultCellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pipedCellTemplate let-column=\"column\" let-row>\r\n {{ column.field(row) | dynamicPipe: column.pipe : null }}\r\n</ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-row let-column=\"column\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"columnType.String\">{{ column.field(row) }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Number\">{{ column.field(row) | number: column.format }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Percentage\">{{\r\n column.field(row) | percent: column.digitsInfo : column.locale\r\n }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Currency\">{{\r\n column.field(row) | currency: column.currencyCode : column.display : column.digitsInfo : column.locale\r\n }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Date\"> {{ column.field(row) | date: column.format }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Boolean\">\r\n <bdb-boolean-display [value]=\"column.field(row)\"></bdb-boolean-display>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Enum\">{{ column.field(row) }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Custom\">*?*</ng-container>\r\n <ng-container *ngSwitchDefault>{{ column.field(row) | json }}</ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #noData>\r\n <div class=\"no-data\"><em>Geen gegevens gevonden</em></div>\r\n</ng-template>\r\n\r\n<div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\"></div>\r\n<mat-menu #contextMenu=\"matMenu\" #contextMenu2=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n <ng-container *ngFor=\"let action of contextActions\">\r\n <button\r\n mat-menu-item\r\n (click)=\"onContextMenuAction(action, row)\"\r\n *ngIf=\"action.condition === undefined || action.condition(row)\">\r\n <mat-icon [color]=\"action.color\">{{ action.icon }}</mat-icon> {{ action.label }}\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: [".bdb-table{width:100%}.bdb-table.is-clickable tr:hover{cursor:pointer}.bdb-table-container{height:100%;overflow:auto}.bdb-table-container::-webkit-scrollbar{width:4px}.bdb-table-container::-webkit-scrollbar-thumb{background-color:#0003}.bdb-table-container::-webkit-scrollbar-track{background-color:#0000001a}.text-end{text-align:end}.no-data{color:#00000080;padding:8px}.mat-mdc-header-row .mat-mdc-header-cell{padding-left:8px;padding-right:8px}.mat-mdc-header-row .mat-mdc-header-cell:first-of-type{padding-left:24px}.mat-mdc-header-row .mat-mdc-header-cell:last-of-type{padding-right:24px}.mat-mdc-row .mat-mdc-cell{padding-left:8px;padding-right:8px}.mat-mdc-row .mat-mdc-cell:first-of-type{padding-left:24px}.mat-mdc-row .mat-mdc-cell:last-of-type{padding-right:24px}.mat-column-selection{width:48px}\n"] }]
164
+ }], propDecorators: { columns: [{
165
+ type: Input
166
+ }], dataSource: [{
167
+ type: Input
168
+ }], displayedColumns: [{
169
+ type: Input
170
+ }], contextActions: [{
171
+ type: Input
172
+ }], selection: [{
173
+ type: Input
174
+ }], selectOnRowClick: [{
175
+ type: Input
176
+ }], selectedRowClass: [{
177
+ type: Input
178
+ }], isClickable: [{
179
+ type: Input
180
+ }], rowClick: [{
181
+ type: Output
182
+ }], contextAction: [{
183
+ type: Output
184
+ }], contextMenu: [{
185
+ type: ViewChild,
186
+ args: [MatMenuTrigger]
187
+ }], cellTemplates: [{
188
+ type: ContentChildren,
189
+ args: [BdbCellDirective, { descendants: true }]
190
+ }], rowColor: [{
191
+ type: Input
192
+ }] } });
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmRiLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhZGFib29tL3NyYy9saWIvYXBwbGljYXRpb24vY29tbW9uL3RhYmxlL2JkYi10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL2FwcGxpY2F0aW9uL2NvbW1vbi90YWJsZS9iZGItdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBS3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFB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Q0FDZCxpQkFBaUIsNldBQ2pCLGFBQWEsa2RBQ2IsOEJBQThCLG1GQUM5QixXQUFXLG9EQUNYLDBCQUEwQixrRkFDMUIsYUFBYSxzMUJBQ2IsYUFBYTs7MkZBS0osaUJBQWlCO2tCQWpCN0IsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsOEJBQThCO3dCQUM5QixXQUFXO3dCQUNYLDBCQUEwQjt3QkFDMUIsYUFBYTt3QkFDYixhQUFhO3FCQUNkOzhCQU9RLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFFb0IsV0FBVztzQkFBckMsU0FBUzt1QkFBQyxjQUFjO2dCQUNpQyxhQUFhO3NCQUF0RSxlQUFlO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLL0MsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFRyYWNrQnlGdW5jdGlvbixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlLCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgQmRiQWxlcnRFcnJvclJlc3BvbnNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2FsZXJ0LWVycm9yLXJlc3BvbnNlL2JkYi1hbGVydC1lcnJvci1yZXNwb25zZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEeW5hbWljUGlwZSB9IGZyb20gJy4vZHluYW1pYy5waXBlJztcclxuaW1wb3J0IHsgQmRiQm9vbGVhbkRpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vYm9vbGVhbi1kaXNwbGF5L2JkYi1ib29sZWFuLWRpc3BsYXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBCZGJFbnRpdHkgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY29tbW9uL2VudGl0aWVzL2JkYi1lbnRpdHknO1xyXG5pbXBvcnQgeyBCZGJDb2x1bW4gfSBmcm9tICcuL2JkYi1jb2x1bW4nO1xyXG5pbXBvcnQgeyBCZGJEYXRhU291cmNlIH0gZnJvbSAnLi4vYmRiLWRhdGEtc291cmNlJztcclxuaW1wb3J0IHsgQmRiQ29udGV4dEFjdGlvbiB9IGZyb20gJy4vYmRiLWNvbnRleHQtYWN0aW9uJztcclxuaW1wb3J0IHsgQmRiQ2VsbERpcmVjdGl2ZSB9IGZyb20gJy4vYmRiLWNlbGwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmRiQ29sdW1uVHlwZSB9IGZyb20gJy4vYmRiLWNvbHVtbi10eXBlJztcclxuaW1wb3J0IHsgQmRiUGFsZXR0ZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9iZGItcGFsZXR0ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JkYi10YWJsZVtkYXRhU291cmNlXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRUYWJsZU1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0U29ydE1vZHVsZSxcclxuICAgIEJkYkFsZXJ0RXJyb3JSZXNwb25zZUNvbXBvbmVudCxcclxuICAgIER5bmFtaWNQaXBlLFxyXG4gICAgQmRiQm9vbGVhbkRpc3BsYXlDb21wb25lbnQsXHJcbiAgICBNYXRNZW51TW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iZGItdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2JkYi10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmRiVGFibGVDb21wb25lbnQ8VFJlYWQgZXh0ZW5kcyBCZGJFbnRpdHk+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgQElucHV0KCkgY29sdW1uczogQmRiQ29sdW1uPFRSZWFkLCB1bmtub3duPltdID0gW107XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IEJkYkRhdGFTb3VyY2U8VFJlYWQ+O1xyXG4gIEBJbnB1dCgpIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgQElucHV0KCkgY29udGV4dEFjdGlvbnM6IEJkYkNvbnRleHRBY3Rpb248VFJlYWQ+W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgc2VsZWN0aW9uPzogU2VsZWN0aW9uTW9kZWw8VFJlYWQ+O1xyXG4gIEBJbnB1dCgpIHNlbGVjdE9uUm93Q2xpY2sgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkUm93Q2xhc3MgPSAnc2VsZWN0ZWQnO1xyXG5cclxuICBASW5wdXQoKSBpc0NsaWNrYWJsZSA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VFJlYWQ+KCk7XHJcbiAgQE91dHB1dCgpIGNvbnRleHRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgYWN0aW9uOiBCZGJDb250ZXh0QWN0aW9uPFRSZWFkPjsgcm93OiBUUmVhZCB9PigpO1xyXG5cclxuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyKSBjb250ZXh0TWVudSE6IE1hdE1lbnVUcmlnZ2VyO1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oQmRiQ2VsbERpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBjZWxsVGVtcGxhdGVzOiBRdWVyeUxpc3Q8QmRiQ2VsbERpcmVjdGl2ZT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSB8IHVuZGVmaW5lZDtcclxuICBjb2x1bW5UeXBlID0gQmRiQ29sdW1uVHlwZTtcclxuICBjb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAnMHB4JywgeTogJzBweCcgfTtcclxuICBASW5wdXQoKSByb3dDb2xvcj86ICh4OiBUUmVhZCkgPT4gQmRiUGFsZXR0ZTtcclxuXHJcbiAgcHVibGljIHRyYWNrQnlJZDogVHJhY2tCeUZ1bmN0aW9uPEJkYkVudGl0eT4gPSAoXzogbnVtYmVyLCBpdGVtOiBCZGJFbnRpdHkpID0+IHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH07XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbHVtbnMgJiYgIXRoaXMuZGlzcGxheWVkQ29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcCh4ID0+IHguaWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uPy5pc011bHRpcGxlU2VsZWN0aW9uKCkgJiYgISh0aGlzLmRpc3BsYXllZENvbHVtbnNbMF0gPT09ICdzZWxlY3Rpb24nKSkge1xyXG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMudW5zaGlmdCgnc2VsZWN0aW9uJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldENvbHVtblRlbXBsYXRlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZXJyb3IgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgdGhpcy5kYXRhU291cmNlLmxvYWQoKTtcclxuICB9XHJcblxyXG4gIHNldENvbHVtblRlbXBsYXRlcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRlbXBsYXRlcyA9IHRoaXMuY2VsbFRlbXBsYXRlcztcclxuICAgIGlmICh0ZW1wbGF0ZXMgPT0gdW5kZWZpbmVkIHx8ICF0aGlzLmNlbGxUZW1wbGF0ZXM/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb2x1bW5zICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgY29uc3QgdHBsID0gdGVtcGxhdGVzLmZpbHRlcih5ID0+IHkuYmRiQ2VsbERlZiA9PT0geC5pZClbMF07XHJcbiAgICAgICAgaWYgKHRwbCkge1xyXG4gICAgICAgICAgeC50ZW1wbGF0ZSA9IHRwbC50ZW1wbGF0ZVJlZjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Sb3dDbGljayhyb3c6IFRSZWFkKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3RPblJvd0NsaWNrKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnRvZ2dsZShyb3cpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dDbGljay5lbWl0KHJvdyk7XHJcbiAgfVxyXG5cclxuICAvLyBTT1JUXHJcbiAgc29ydERhdGEoZXZlbnQ6IFNvcnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKHggPT4geC5pZCA9PT0gZXZlbnQuYWN0aXZlKTtcclxuICAgIGlmIChjb2x1bW4pIHtcclxuICAgICAgY29uc3QgZnhTdHJpbmcgPSBjb2x1bW4uZmllbGQudG9TdHJpbmcoKTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLnJlcXVlc3Quc29ydEZpZWxkID0gZnhTdHJpbmcuc3Vic3RyaW5nKGZ4U3RyaW5nLmxhc3RJbmRleE9mKCcuJykgKyAxKS50cmltKCk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5yZXF1ZXN0LnNvcnREaXJlY3Rpb24gPSBldmVudC5kaXJlY3Rpb247XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5sb2FkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBDT05URVhUIE1FTlVcclxuICBvbkNvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCByb3c6IFRSZWFkKTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuY29udGV4dEFjdGlvbnMgJiYgdGhpcy5jb250ZXh0QWN0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnggPSBldmVudC5jbGllbnRYICsgJ3B4JztcclxuICAgICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnkgPSBldmVudC5jbGllbnRZICsgJ3B4JztcclxuICAgICAgdGhpcy5jb250ZXh0TWVudS5tZW51RGF0YSA9IHsgcm93OiByb3cgfTtcclxuICAgICAgaWYgKHRoaXMuY29udGV4dE1lbnUubWVudSkge1xyXG4gICAgICAgIHRoaXMuY29udGV4dE1lbnUubWVudS5mb2N1c0ZpcnN0SXRlbSgnbW91c2UnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbnRleHRNZW51Lm9wZW5NZW51KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNvbnRleHRNZW51QWN0aW9uKGFjdGlvbjogQmRiQ29udGV4dEFjdGlvbjxUUmVhZD4sIHJvdzogVFJlYWQpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udGV4dEFjdGlvbi5lbWl0KHsgYWN0aW9uOiBhY3Rpb24sIHJvdzogcm93IH0pO1xyXG4gIH1cclxuXHJcbiAgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3Rpb24pIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmV2ZXJ5KHggPT4gdGhpcy5zZWxlY3Rpb24/LmlzU2VsZWN0ZWQoeCkpO1xyXG4gIH1cclxuXHJcbiAgYW55U2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0aW9uKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UuZGF0YS5zb21lKHggPT4gdGhpcy5zZWxlY3Rpb24/LmlzU2VsZWN0ZWQoeCkpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsUm93cygpOiB2b2lkIHtcclxuICAgIGlmICghKHRoaXMuc2VsZWN0aW9uICYmIHRoaXMuZGF0YVNvdXJjZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmRlc2VsZWN0KC4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdCguLi50aGlzLmRhdGFTb3VyY2UuZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByb3dDbGFzcyhyb3c6IFRSZWFkKTogeyBba2xhc3M6IHN0cmluZ106IHVua25vd24gfSB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoISh0aGlzLnNlbGVjdGlvbiB8fCB0aGlzLnJvd0NvbG9yKSkge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmV0OiB7IFtrbGFzczogc3RyaW5nXTogdW5rbm93biB9ID0ge307XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcclxuICAgICAgcmV0W3RoaXMuc2VsZWN0ZWRSb3dDbGFzc10gPSB0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yb3dDb2xvcikge1xyXG4gICAgICBjb25zdCBwYWxldHRlID0gdGhpcy5yb3dDb2xvcihyb3cpO1xyXG4gICAgICBpZiAocGFsZXR0ZSkge1xyXG4gICAgICAgIHJldFsnYmRiLScgKyBwYWxldHRlXSA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuc2VsZWN0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImJkYi10YWJsZS1jb250YWluZXJcIj5cclxuICA8dGFibGVcclxuICAgIG1hdC10YWJsZVxyXG4gICAgY2xhc3M9XCJiZGItdGFibGVcIlxyXG4gICAgW2NsYXNzLmlzLWNsaWNrYWJsZV09XCJpc0NsaWNrYWJsZVwiXHJcbiAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcclxuICAgIG1hdFNvcnRcclxuICAgIChtYXRTb3J0Q2hhbmdlKT1cInNvcnREYXRhKCRldmVudClcIlxyXG4gICAgKm5nSWY9XCJkYXRhU291cmNlXCJcclxuICAgIFt0cmFja0J5XT1cInRyYWNrQnlJZFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3Rpb25cIj5cclxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHRvZ2dsZUFsbFJvd3MoKSA6IG51bGxcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImFueVNlbGVjdGVkKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzZWxlY3Rpb25cIj5cclxuICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgPC90aD5cclxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxyXG4gICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKHJvdykgOiBudWxsXCJcclxuICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxyXG4gICAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzZWxlY3Rpb25cIj5cclxuICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgPC90ZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uaWRcIiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICA8dGhcclxuICAgICAgICAgIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgIG1hdC1zb3J0LWhlYWRlcj1cInt7IGNvbHVtbi5pZCB9fVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLnNvcnREaXNhYmxlZFwiXHJcbiAgICAgICAgICBbd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3RleHQtZW5kJzogY29sdW1uLnRleHRBbGlnbiAmJiBjb2x1bW4udGV4dEFsaWduID09PSAnZW5kJyB9XCJcclxuICAgICAgICAgIFthcnJvd1Bvc2l0aW9uXT1cImNvbHVtbi50ZXh0QWxpZ24gJiYgY29sdW1uLnRleHRBbGlnbiA9PT0gJ2VuZCcgPyAnYmVmb3JlJyA6ICdhZnRlcidcIj5cclxuICAgICAgICAgIHt7IGNvbHVtbi50aXRsZSB9fVxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIFtuZ0NsYXNzXT1cInsgJ3RleHQtZW5kJzogY29sdW1uLnRleHRBbGlnbiAmJiBjb2x1bW4udGV4dEFsaWduID09PSAnZW5kJyB9XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgY29sdW1uLnRlbXBsYXRlID8gY29sdW1uLnRlbXBsYXRlIDogY2VsbFRlbXBsYXRlO1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93LCBjb2x1bW46IGNvbHVtbiB9XHJcbiAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cclxuICAgIDx0clxyXG4gICAgICBtYXQtcm93XHJcbiAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCJcclxuICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2socm93KVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInJvd0NsYXNzKHJvdylcIlxyXG4gICAgICAoY29udGV4dG1lbnUpPVwib25Db250ZXh0TWVudSgkZXZlbnQsIHJvdylcIj48L3RyPlxyXG5cclxuICAgIDx0ciBjbGFzcz1cIm1hdC1yb3dcIiAqbWF0Tm9EYXRhUm93PlxyXG4gICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbFwiIFtjb2xTcGFuXT1cImRpc3BsYXllZENvbHVtbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgPGJkYi1hbGVydC1lcnJvci1yZXNwb25zZVxyXG4gICAgICAgICAgW3ZhbHVlXT1cImRhdGFTb3VyY2UuZXJyb3IkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgKm5nSWY9XCJkYXRhU291cmNlICYmIChkYXRhU291cmNlLmVycm9yJCB8IGFzeW5jKTsgZWxzZSBub0RhdGFcIj48L2JkYi1hbGVydC1lcnJvci1yZXNwb25zZT5cclxuICAgICAgPC90ZD5cclxuICAgIDwvdHI+XHJcbiAgPC90YWJsZT5cclxuPC9kaXY+XHJcblxyXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcblxyXG48bmctdGVtcGxhdGUgI2NlbGxUZW1wbGF0ZSBsZXQtcm93IGxldC1jb2x1bW49XCJjb2x1bW5cIj5cclxuICA8bmctY29udGFpbmVyXHJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICBjb2x1bW4ucGlwZSA/IHBpcGVkQ2VsbFRlbXBsYXRlIDogZGVmYXVsdENlbGxUZW1wbGF0ZTtcclxuICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdywgY29sdW1uOiBjb2x1bW4gfVxyXG4gICAgXCI+PC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3BpcGVkQ2VsbFRlbXBsYXRlIGxldC1jb2x1bW49XCJjb2x1bW5cIiBsZXQtcm93PlxyXG4gIHt7IGNvbHVtbi5maWVsZChyb3cpIHwgZHluYW1pY1BpcGU6IGNvbHVtbi5waXBlIDogbnVsbCB9fVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbFRlbXBsYXRlIGxldC1yb3cgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxyXG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlLlN0cmluZ1wiPnt7IGNvbHVtbi5maWVsZChyb3cpIH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlLk51bWJlclwiPnt7IGNvbHVtbi5maWVsZChyb3cpIHwgbnVtYmVyOiBjb2x1bW4uZm9ybWF0IH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlLlBlcmNlbnRhZ2VcIj57e1xyXG4gICAgICBjb2x1bW4uZmllbGQocm93KSB8IHBlcmNlbnQ6IGNvbHVtbi5kaWdpdHNJbmZvIDogY29sdW1uLmxvY2FsZVxyXG4gICAgfX08L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGUuQ3VycmVuY3lcIj57e1xyXG4gICAgICBjb2x1bW4uZmllbGQocm93KSB8IGN1cnJlbmN5OiBjb2x1bW4uY3VycmVuY3lDb2RlIDogY29sdW1uLmRpc3BsYXkgOiBjb2x1bW4uZGlnaXRzSW5mbyA6IGNvbHVtbi5sb2NhbGVcclxuICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlLkRhdGVcIj4ge3sgY29sdW1uLmZpZWxkKHJvdykgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlLkJvb2xlYW5cIj5cclxuICAgICAgPGJkYi1ib29sZWFuLWRpc3BsYXkgW3ZhbHVlXT1cImNvbHVtbi5maWVsZChyb3cpXCI+PC9iZGItYm9vbGVhbi1kaXNwbGF5PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlLkVudW1cIj57eyBjb2x1bW4uZmllbGQocm93KSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZS5DdXN0b21cIj4qPyo8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD57eyBjb2x1bW4uZmllbGQocm93KSB8IGpzb24gfX08L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbm9EYXRhPlxyXG4gIDxkaXYgY2xhc3M9XCJuby1kYXRhXCI+PGVtPkdlZW4gZ2VnZXZlbnMgZ2V2b25kZW48L2VtPjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPGRpdlxyXG4gIHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuOyBwb3NpdGlvbjogZml4ZWRcIlxyXG4gIFtzdHlsZS5sZWZ0XT1cImNvbnRleHRNZW51UG9zaXRpb24ueFwiXHJcbiAgW3N0eWxlLnRvcF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnlcIlxyXG4gIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb250ZXh0TWVudVwiPjwvZGl2PlxyXG48bWF0LW1lbnUgI2NvbnRleHRNZW51PVwibWF0TWVudVwiICNjb250ZXh0TWVudTI9XCJtYXRNZW51XCI+XHJcbiAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50IGxldC1yb3c9XCJyb3dcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb250ZXh0QWN0aW9uc1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgIChjbGljayk9XCJvbkNvbnRleHRNZW51QWN0aW9uKGFjdGlvbiwgcm93KVwiXHJcbiAgICAgICAgKm5nSWY9XCJhY3Rpb24uY29uZGl0aW9uID09PSB1bmRlZmluZWQgfHwgYWN0aW9uLmNvbmRpdGlvbihyb3cpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIFtjb2xvcl09XCJhY3Rpb24uY29sb3JcIj57eyBhY3Rpb24uaWNvbiB9fTwvbWF0LWljb24+IHt7IGFjdGlvbi5sYWJlbCB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbWF0LW1lbnU+XHJcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { Injector, Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DynamicPipe {
4
+ constructor(injector) {
5
+ this.injector = injector;
6
+ }
7
+ transform(value, requiredPipe, pipeArgs) {
8
+ const injector = Injector.create({
9
+ name: 'DynamicPipe',
10
+ parent: this.injector,
11
+ providers: [{ provide: requiredPipe }],
12
+ });
13
+ const pipe = injector.get(requiredPipe);
14
+ return pipe.transform(value, pipeArgs);
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: DynamicPipe, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Pipe }); }
17
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: DynamicPipe, isStandalone: true, name: "dynamicPipe" }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: DynamicPipe, decorators: [{
20
+ type: Pipe,
21
+ args: [{
22
+ name: 'dynamicPipe',
23
+ standalone: true,
24
+ }]
25
+ }], ctorParameters: () => [{ type: i0.Injector }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFkYWJvb20vc3JjL2xpYi9hcHBsaWNhdGlvbi9jb21tb24vdGFibGUvZHluYW1pYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUF1QixNQUFNLGVBQWUsQ0FBQzs7QUFNcEUsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFMUMsU0FBUyxDQUFDLEtBQWMsRUFBRSxZQUFpQyxFQUFFLFFBQWlCO1FBQzVFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDL0IsSUFBSSxFQUFFLGFBQWE7WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3JCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDOzhHQVhVLFdBQVc7NEdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFKdkIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsYUFBYTtvQkFDbkIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnZHluYW1pY1BpcGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IHVua25vd24sIHJlcXVpcmVkUGlwZTogVHlwZTxQaXBlVHJhbnNmb3JtPiwgcGlwZUFyZ3M6IHVua25vd24pOiB1bmtub3duIHtcclxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcclxuICAgICAgbmFtZTogJ0R5bmFtaWNQaXBlJyxcclxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxyXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IHJlcXVpcmVkUGlwZSB9XSxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgcGlwZSA9IGluamVjdG9yLmdldChyZXF1aXJlZFBpcGUpO1xyXG4gICAgcmV0dXJuIHBpcGUudHJhbnNmb3JtKHZhbHVlLCBwaXBlQXJncyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { BdbTableComponent } from '../../common/table/bdb-table.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../common/table/bdb-column-builder";
6
+ import * as i2 from "@angular/router";
7
+ export class ExceptionLogTableComponent {
8
+ constructor(cb, router, activatedRoute) {
9
+ this.cb = cb;
10
+ this.router = router;
11
+ this.activatedRoute = activatedRoute;
12
+ this.displayedColumns = [];
13
+ this.rowClick = new EventEmitter();
14
+ this.columns = this.cb.build(this.cb.string(x => x.message, 'Message'));
15
+ this.contextActions = [
16
+ {
17
+ icon: 'search',
18
+ color: 'primary',
19
+ label: 'Details',
20
+ identifier: 'details',
21
+ },
22
+ ];
23
+ }
24
+ onRowClick(row) {
25
+ this.rowClick.emit(row);
26
+ }
27
+ onContextAction(event) {
28
+ switch (event.action.identifier) {
29
+ case 'details':
30
+ this.router.navigate([event.row.id], { relativeTo: this.activatedRoute });
31
+ break;
32
+ }
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ExceptionLogTableComponent, deps: [{ token: i1.BdbColumnBuilder }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: ExceptionLogTableComponent, isStandalone: true, selector: "bdb-exception-log-table[dataSource]", inputs: { dataSource: "dataSource", displayedColumns: "displayedColumns", contextActions: "contextActions" }, outputs: { rowClick: "rowClick" }, ngImport: i0, template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (contextAction)=\"onContextAction($event)\">\r\n</bdb-table>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: BdbTableComponent, selector: "bdb-table[dataSource]", inputs: ["columns", "dataSource", "displayedColumns", "contextActions", "selection", "selectOnRowClick", "selectedRowClass", "isClickable", "rowColor"], outputs: ["rowClick", "contextAction"] }] }); }
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ExceptionLogTableComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ selector: 'bdb-exception-log-table[dataSource]', standalone: true, imports: [CommonModule, BdbTableComponent], template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (contextAction)=\"onContextAction($event)\">\r\n</bdb-table>\r\n" }]
40
+ }], ctorParameters: () => [{ type: i1.BdbColumnBuilder }, { type: i2.Router }, { type: i2.ActivatedRoute }], propDecorators: { dataSource: [{
41
+ type: Input
42
+ }], displayedColumns: [{
43
+ type: Input
44
+ }], rowClick: [{
45
+ type: Output
46
+ }], contextActions: [{
47
+ type: Input
48
+ }] } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uLWxvZy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL2FwcGxpY2F0aW9uL2V4Y2VwdGlvbi1sb2cvZXhjZXB0aW9uLWxvZy10YWJsZS9leGNlcHRpb24tbG9nLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhZGFib29tL3NyYy9saWIvYXBwbGljYXRpb24vZXhjZXB0aW9uLWxvZy9leGNlcHRpb24tbG9nLXRhYmxlL2V4Y2VwdGlvbi1sb2ctdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7QUFlM0UsTUFBTSxPQUFPLDBCQUEwQjtJQU9yQyxZQUNVLEVBQXNDLEVBQ3RDLE1BQWMsRUFDZCxjQUE4QjtRQUY5QixPQUFFLEdBQUYsRUFBRSxDQUFvQztRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUi9CLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUMvQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFFMUQsWUFBTyxHQUEyQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQVFsRyxtQkFBYyxHQUF5QztZQUM5RDtnQkFDRSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsU0FBUztnQkFDaEIsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLFVBQVUsRUFBRSxTQUFTO2FBQ3RCO1NBQ0YsQ0FBQztJQVRDLENBQUM7SUFXSixVQUFVLENBQUMsR0FBcUI7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUE0RTtRQUMxRixRQUFRLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEMsS0FBSyxTQUFTO2dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztnQkFDMUUsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDOzhHQWhDVSwwQkFBMEI7a0dBQTFCLDBCQUEwQixnUENqQnZDLDJRQVFBLHlEREtZLFlBQVksK0JBQUUsaUJBQWlCOzsyRkFJOUIsMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNFLHFDQUFxQyxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUM7dUlBS2pDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBVUUsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEJkYlRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL3RhYmxlL2JkYi10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFeGNlcHRpb25Mb2dSZWFkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2VudGl0aWVzL2V4Y2VwdGlvbi1sb2cvZXhjZXB0aW9uLWxvZy1yZWFkJztcclxuaW1wb3J0IHsgQmRiRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9iZGItZGF0YS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBCZGJDb2x1bW5CdWlsZGVyIH0gZnJvbSAnLi4vLi4vY29tbW9uL3RhYmxlL2JkYi1jb2x1bW4tYnVpbGRlcic7XHJcbmltcG9ydCB7IEJkYkNvbnRleHRBY3Rpb24gfSBmcm9tICcuLi8uLi9jb21tb24vdGFibGUvYmRiLWNvbnRleHQtYWN0aW9uJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJkYkNvbHVtbiB9IGZyb20gJy4uLy4uL2NvbW1vbi90YWJsZS9iZGItY29sdW1uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYmRiLWV4Y2VwdGlvbi1sb2ctdGFibGVbZGF0YVNvdXJjZV0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQmRiVGFibGVDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9leGNlcHRpb24tbG9nLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9leGNlcHRpb24tbG9nLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFeGNlcHRpb25Mb2dUYWJsZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IEJkYkRhdGFTb3VyY2U8RXhjZXB0aW9uTG9nUmVhZD47XHJcbiAgQElucHV0KCkgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEV4Y2VwdGlvbkxvZ1JlYWQ+KCk7XHJcblxyXG4gIGNvbHVtbnM6IEJkYkNvbHVtbjxFeGNlcHRpb25Mb2dSZWFkLCB1bmtub3duPltdID0gdGhpcy5jYi5idWlsZCh0aGlzLmNiLnN0cmluZyh4ID0+IHgubWVzc2FnZSwgJ01lc3NhZ2UnKSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYjogQmRiQ29sdW1uQnVpbGRlcjxFeGNlcHRpb25Mb2dSZWFkPixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxyXG4gICkge31cclxuXHJcbiAgQElucHV0KCkgY29udGV4dEFjdGlvbnM6IEJkYkNvbnRleHRBY3Rpb248RXhjZXB0aW9uTG9nUmVhZD5bXSA9IFtcclxuICAgIHtcclxuICAgICAgaWNvbjogJ3NlYXJjaCcsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgIGxhYmVsOiAnRGV0YWlscycsXHJcbiAgICAgIGlkZW50aWZpZXI6ICdkZXRhaWxzJyxcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgb25Sb3dDbGljayhyb3c6IEV4Y2VwdGlvbkxvZ1JlYWQpOiB2b2lkIHtcclxuICAgIHRoaXMucm93Q2xpY2suZW1pdChyb3cpO1xyXG4gIH1cclxuXHJcbiAgb25Db250ZXh0QWN0aW9uKGV2ZW50OiB7IGFjdGlvbjogQmRiQ29udGV4dEFjdGlvbjxFeGNlcHRpb25Mb2dSZWFkPjsgcm93OiBFeGNlcHRpb25Mb2dSZWFkIH0pOiB2b2lkIHtcclxuICAgIHN3aXRjaCAoZXZlbnQuYWN0aW9uLmlkZW50aWZpZXIpIHtcclxuICAgICAgY2FzZSAnZGV0YWlscyc6XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2V2ZW50LnJvdy5pZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGJkYi10YWJsZVxyXG4gIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxyXG4gIFtkaXNwbGF5ZWRDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnNcIlxyXG4gIFtjb250ZXh0QWN0aW9uc109XCJjb250ZXh0QWN0aW9uc1wiXHJcbiAgKHJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXHJcbiAgKGNvbnRleHRBY3Rpb24pPVwib25Db250ZXh0QWN0aW9uKCRldmVudClcIj5cclxuPC9iZGItdGFibGU+XHJcbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { TaskLogOutcome } from '../../domain/enums/task-log-outcome';
3
+ import * as i0 from "@angular/core";
4
+ export class TaskLogOutcomePipe {
5
+ transform(value) {
6
+ switch (value) {
7
+ case TaskLogOutcome.Noop:
8
+ return 'Noop';
9
+ case TaskLogOutcome.Info:
10
+ return 'Informatie';
11
+ case TaskLogOutcome.Warning:
12
+ return 'Waarschuwing';
13
+ case TaskLogOutcome.Error:
14
+ return 'Foutmelding';
15
+ case TaskLogOutcome.Success:
16
+ return 'Succes';
17
+ default:
18
+ return '';
19
+ }
20
+ }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TaskLogOutcomePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
22
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: TaskLogOutcomePipe, isStandalone: true, name: "taskLogOutcome" }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TaskLogOutcomePipe, decorators: [{
25
+ type: Pipe,
26
+ args: [{
27
+ name: 'taskLogOutcome',
28
+ standalone: true,
29
+ }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1sb2ctb3V0Y29tZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFkYWJvb20vc3JjL2xpYi9hcHBsaWNhdGlvbi90YXNrLWxvZy90YXNrLWxvZy1vdXRjb21lLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQU1yRSxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFNBQVMsQ0FBQyxLQUFxQjtRQUM3QixRQUFRLEtBQUssRUFBRSxDQUFDO1lBQ2QsS0FBSyxjQUFjLENBQUMsSUFBSTtnQkFDdEIsT0FBTyxNQUFNLENBQUM7WUFDaEIsS0FBSyxjQUFjLENBQUMsSUFBSTtnQkFDdEIsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxjQUFjLENBQUMsT0FBTztnQkFDekIsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxjQUFjLENBQUMsS0FBSztnQkFDdkIsT0FBTyxhQUFhLENBQUM7WUFDdkIsS0FBSyxjQUFjLENBQUMsT0FBTztnQkFDekIsT0FBTyxRQUFRLENBQUM7WUFDbEI7Z0JBQ0UsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzs4R0FoQlUsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYXNrTG9nT3V0Y29tZSB9IGZyb20gJy4uLy4uL2RvbWFpbi9lbnVtcy90YXNrLWxvZy1vdXRjb21lJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAndGFza0xvZ091dGNvbWUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYXNrTG9nT3V0Y29tZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICB0cmFuc2Zvcm0odmFsdWU6IFRhc2tMb2dPdXRjb21lKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodmFsdWUpIHtcclxuICAgICAgY2FzZSBUYXNrTG9nT3V0Y29tZS5Ob29wOlxyXG4gICAgICAgIHJldHVybiAnTm9vcCc7XHJcbiAgICAgIGNhc2UgVGFza0xvZ091dGNvbWUuSW5mbzpcclxuICAgICAgICByZXR1cm4gJ0luZm9ybWF0aWUnO1xyXG4gICAgICBjYXNlIFRhc2tMb2dPdXRjb21lLldhcm5pbmc6XHJcbiAgICAgICAgcmV0dXJuICdXYWFyc2NodXdpbmcnO1xyXG4gICAgICBjYXNlIFRhc2tMb2dPdXRjb21lLkVycm9yOlxyXG4gICAgICAgIHJldHVybiAnRm91dG1lbGRpbmcnO1xyXG4gICAgICBjYXNlIFRhc2tMb2dPdXRjb21lLlN1Y2Nlc3M6XHJcbiAgICAgICAgcmV0dXJuICdTdWNjZXMnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,29 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { TaskLogStatus } from '../../domain/enums/task-log-status';
3
+ import * as i0 from "@angular/core";
4
+ export class TaskLogStatusPipe {
5
+ transform(value) {
6
+ switch (value) {
7
+ case TaskLogStatus.New:
8
+ return 'Nieuw';
9
+ case TaskLogStatus.Running:
10
+ return 'Lopend';
11
+ case TaskLogStatus.Waiting:
12
+ return 'Wachtend';
13
+ case TaskLogStatus.Completed:
14
+ return 'Afgerond';
15
+ default:
16
+ return '';
17
+ }
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TaskLogStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
20
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: TaskLogStatusPipe, isStandalone: true, name: "taskLogStatus" }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TaskLogStatusPipe, decorators: [{
23
+ type: Pipe,
24
+ args: [{
25
+ name: 'taskLogStatus',
26
+ standalone: true,
27
+ }]
28
+ }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1sb2ctc3RhdHVzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL2FwcGxpY2F0aW9uL3Rhc2stbG9nL3Rhc2stbG9nLXN0YXR1cy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFNbkUsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixTQUFTLENBQUMsS0FBb0I7UUFDNUIsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssYUFBYSxDQUFDLEdBQUc7Z0JBQ3BCLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLEtBQUssYUFBYSxDQUFDLE9BQU87Z0JBQ3hCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssYUFBYSxDQUFDLE9BQU87Z0JBQ3hCLE9BQU8sVUFBVSxDQUFDO1lBQ3BCLEtBQUssYUFBYSxDQUFDLFNBQVM7Z0JBQzFCLE9BQU8sVUFBVSxDQUFDO1lBQ3BCO2dCQUNFLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7OEdBZFUsaUJBQWlCOzRHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBSjdCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFza0xvZ1N0YXR1cyB9IGZyb20gJy4uLy4uL2RvbWFpbi9lbnVtcy90YXNrLWxvZy1zdGF0dXMnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICd0YXNrTG9nU3RhdHVzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFza0xvZ1N0YXR1c1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICB0cmFuc2Zvcm0odmFsdWU6IFRhc2tMb2dTdGF0dXMpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh2YWx1ZSkge1xyXG4gICAgICBjYXNlIFRhc2tMb2dTdGF0dXMuTmV3OlxyXG4gICAgICAgIHJldHVybiAnTmlldXcnO1xyXG4gICAgICBjYXNlIFRhc2tMb2dTdGF0dXMuUnVubmluZzpcclxuICAgICAgICByZXR1cm4gJ0xvcGVuZCc7XHJcbiAgICAgIGNhc2UgVGFza0xvZ1N0YXR1cy5XYWl0aW5nOlxyXG4gICAgICAgIHJldHVybiAnV2FjaHRlbmQnO1xyXG4gICAgICBjYXNlIFRhc2tMb2dTdGF0dXMuQ29tcGxldGVkOlxyXG4gICAgICAgIHJldHVybiAnQWZnZXJvbmQnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,49 @@
1
+ import { Inject, LOCALE_ID, Pipe } from '@angular/core';
2
+ import { TaskLogParameterType } from '../../domain/enums/task-log-parameter-type';
3
+ import * as i0 from "@angular/core";
4
+ export class TaskLogParameterValuePipe {
5
+ constructor(locale) {
6
+ this.locale = locale;
7
+ }
8
+ transform(value) {
9
+ switch (value.type) {
10
+ case TaskLogParameterType.String:
11
+ return value.stringValue ?? '';
12
+ case TaskLogParameterType.Int:
13
+ return !value.intValue
14
+ ? ''
15
+ : value.intValue.toLocaleString(this.locale, {
16
+ minimumIntegerDigits: 1,
17
+ });
18
+ case TaskLogParameterType.Decimal:
19
+ return !value.decimalValue
20
+ ? ''
21
+ : value.decimalValue.toLocaleString(this.locale, {
22
+ minimumIntegerDigits: 1,
23
+ maximumFractionDigits: 6,
24
+ });
25
+ case TaskLogParameterType.Bool:
26
+ switch (value.boolValue) {
27
+ case true:
28
+ return 'Ja';
29
+ case false:
30
+ return 'Nee';
31
+ default:
32
+ return '';
33
+ }
34
+ }
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TaskLogParameterValuePipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }
37
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: TaskLogParameterValuePipe, isStandalone: true, name: "taskLogParameterValue" }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TaskLogParameterValuePipe, decorators: [{
40
+ type: Pipe,
41
+ args: [{
42
+ name: 'taskLogParameterValue',
43
+ standalone: true,
44
+ }]
45
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
46
+ type: Inject,
47
+ args: [LOCALE_ID]
48
+ }] }] });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1sb2ctcGFyYW1ldGVyLXZhbHVlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL2FwcGxpY2F0aW9uL3Rhc2stbG9nLXBhcmFtZXRlci90YXNrLWxvZy1wYXJhbWV0ZXItdmFsdWUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQU1sRixNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQXVDLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUV6RCxTQUFTLENBQUMsS0FBdUI7UUFDL0IsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsS0FBSyxvQkFBb0IsQ0FBQyxNQUFNO2dCQUM5QixPQUFPLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1lBQ2pDLEtBQUssb0JBQW9CLENBQUMsR0FBRztnQkFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRO29CQUNwQixDQUFDLENBQUMsRUFBRTtvQkFDSixDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTt3QkFDekMsb0JBQW9CLEVBQUUsQ0FBQztxQkFDeEIsQ0FBQyxDQUFDO1lBQ1QsS0FBSyxvQkFBb0IsQ0FBQyxPQUFPO2dCQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVk7b0JBQ3hCLENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO3dCQUM3QyxvQkFBb0IsRUFBRSxDQUFDO3dCQUN2QixxQkFBcUIsRUFBRSxDQUFDO3FCQUN6QixDQUFDLENBQUM7WUFDVCxLQUFLLG9CQUFvQixDQUFDLElBQUk7Z0JBQzVCLFFBQVEsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUN4QixLQUFLLElBQUk7d0JBQ1AsT0FBTyxJQUFJLENBQUM7b0JBQ2QsS0FBSyxLQUFLO3dCQUNSLE9BQU8sS0FBSyxDQUFDO29CQUNmO3dCQUNFLE9BQU8sRUFBRSxDQUFDO2dCQUNkLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs4R0E5QlUseUJBQXlCLGtCQUNoQixTQUFTOzRHQURsQix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBSnJDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHVCQUF1QjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFFYyxNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIExPQ0FMRV9JRCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYXNrTG9nUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vZG9tYWluL2VudGl0aWVzL3Rhc2stbG9nLXBhcmFtZXRlci90YXNrLWxvZy1wYXJhbWV0ZXInO1xyXG5pbXBvcnQgeyBUYXNrTG9nUGFyYW1ldGVyVHlwZSB9IGZyb20gJy4uLy4uL2RvbWFpbi9lbnVtcy90YXNrLWxvZy1wYXJhbWV0ZXItdHlwZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ3Rhc2tMb2dQYXJhbWV0ZXJWYWx1ZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhc2tMb2dQYXJhbWV0ZXJWYWx1ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZykge31cclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBUYXNrTG9nUGFyYW1ldGVyKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xyXG4gICAgICBjYXNlIFRhc2tMb2dQYXJhbWV0ZXJUeXBlLlN0cmluZzpcclxuICAgICAgICByZXR1cm4gdmFsdWUuc3RyaW5nVmFsdWUgPz8gJyc7XHJcbiAgICAgIGNhc2UgVGFza0xvZ1BhcmFtZXRlclR5cGUuSW50OlxyXG4gICAgICAgIHJldHVybiAhdmFsdWUuaW50VmFsdWVcclxuICAgICAgICAgID8gJydcclxuICAgICAgICAgIDogdmFsdWUuaW50VmFsdWUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHtcclxuICAgICAgICAgICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogMSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgIGNhc2UgVGFza0xvZ1BhcmFtZXRlclR5cGUuRGVjaW1hbDpcclxuICAgICAgICByZXR1cm4gIXZhbHVlLmRlY2ltYWxWYWx1ZVxyXG4gICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgOiB2YWx1ZS5kZWNpbWFsVmFsdWUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHtcclxuICAgICAgICAgICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogMSxcclxuICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDYsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICBjYXNlIFRhc2tMb2dQYXJhbWV0ZXJUeXBlLkJvb2w6XHJcbiAgICAgICAgc3dpdGNoICh2YWx1ZS5ib29sVmFsdWUpIHtcclxuICAgICAgICAgIGNhc2UgdHJ1ZTpcclxuICAgICAgICAgICAgcmV0dXJuICdKYSc7XHJcbiAgICAgICAgICBjYXNlIGZhbHNlOlxyXG4gICAgICAgICAgICByZXR1cm4gJ05lZSc7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,68 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MatDialogModule } from '@angular/material/dialog';
4
+ import { BdbTableComponent } from '../../common/table/bdb-table.component';
5
+ import { BdbCellDirective } from '../../common/table/bdb-cell.directive';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/material/dialog";
8
+ import * as i2 from "../../common/table/bdb-column-builder";
9
+ export class UserTableComponent {
10
+ constructor(matDialog, cb) {
11
+ this.matDialog = matDialog;
12
+ this.cb = cb;
13
+ this.displayedColumns = [];
14
+ this.rowClick = new EventEmitter();
15
+ this.columns = this.cb.build(this.cb.number(x => x.id, 'ID', { width: 75 }), this.cb.string(x => x.email, 'E-mail', { width: 250 }), this.cb.custom('roles', 'Rollen'));
16
+ this.contextActions = [
17
+ {
18
+ icon: 'search',
19
+ color: 'primary',
20
+ label: 'Details',
21
+ identifier: 'details',
22
+ },
23
+ { icon: 'edit', color: 'primary', label: 'Wijzigen', identifier: 'edit' },
24
+ {
25
+ icon: 'delete',
26
+ color: 'warn',
27
+ label: 'Verwijderen',
28
+ identifier: 'delete',
29
+ },
30
+ ];
31
+ }
32
+ onRowClick(user) {
33
+ this.rowClick.emit(user);
34
+ }
35
+ onContextAction(event) {
36
+ // switch (event.action.identifier) {
37
+ // case 'delete':
38
+ // this.matDialog
39
+ // .open(UserDeleteDialogComponent, { data: event.row })
40
+ // .afterClosed()
41
+ // .pipe(filter(x => !!x))
42
+ // .subscribe(() => this.dataSource.load());
43
+ // break;
44
+ // case 'edit':
45
+ // this.matDialog
46
+ // .open(UserUpdateDialogComponent, { data: event.row })
47
+ // .afterClosed()
48
+ // .pipe(filter(x => !!x))
49
+ // .subscribe(() => this.dataSource.load());
50
+ // break;
51
+ // }
52
+ }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: UserTableComponent, deps: [{ token: i1.MatDialog }, { token: i2.BdbColumnBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: UserTableComponent, isStandalone: true, selector: "bdb-user-table[dataSource]", inputs: { dataSource: "dataSource", displayedColumns: "displayedColumns", contextActions: "contextActions" }, outputs: { rowClick: "rowClick" }, ngImport: i0, template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n (rowClick)=\"onRowClick($event)\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"onContextAction($event)\"\r\n [displayedColumns]=\"displayedColumns\">\r\n <ng-template bdbCellDef=\"roles\" let-row>\r\n {{ row.roles }}\r\n </ng-template>\r\n</bdb-table>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: BdbTableComponent, selector: "bdb-table[dataSource]", inputs: ["columns", "dataSource", "displayedColumns", "contextActions", "selection", "selectOnRowClick", "selectedRowClass", "isClickable", "rowColor"], outputs: ["rowClick", "contextAction"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: BdbCellDirective, selector: "ng-template[bdbCellDef]", inputs: ["bdbCellDef"] }] }); }
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: UserTableComponent, decorators: [{
57
+ type: Component,
58
+ args: [{ selector: 'bdb-user-table[dataSource]', standalone: true, imports: [CommonModule, BdbTableComponent, MatDialogModule, BdbCellDirective], template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n (rowClick)=\"onRowClick($event)\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"onContextAction($event)\"\r\n [displayedColumns]=\"displayedColumns\">\r\n <ng-template bdbCellDef=\"roles\" let-row>\r\n {{ row.roles }}\r\n </ng-template>\r\n</bdb-table>\r\n" }]
59
+ }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.BdbColumnBuilder }], propDecorators: { dataSource: [{
60
+ type: Input
61
+ }], displayedColumns: [{
62
+ type: Input
63
+ }], rowClick: [{
64
+ type: Output
65
+ }], contextActions: [{
66
+ type: Input
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL2FwcGxpY2F0aW9uL3VzZXIvdXNlci10YWJsZS91c2VyLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhZGFib29tL3NyYy9saWIvYXBwbGljYXRpb24vdXNlci91c2VyLXRhYmxlL3VzZXItdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7O0FBU3pFLE1BQU0sT0FBTyxrQkFBa0I7SUFXN0IsWUFDVSxTQUFvQixFQUNwQixFQUE4QjtRQUQ5QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLE9BQUUsR0FBRixFQUFFLENBQTRCO1FBWC9CLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUMvQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUVsRCxZQUFPLEdBQW1DLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUNyRCxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQzlDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFDdEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUNsQyxDQUFDO1FBT08sbUJBQWMsR0FBaUM7WUFDdEQ7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSxTQUFTO2dCQUNoQixVQUFVLEVBQUUsU0FBUzthQUN0QjtZQUNELEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTtZQUN6RTtnQkFDRSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsYUFBYTtnQkFDcEIsVUFBVSxFQUFFLFFBQVE7YUFDckI7U0FDRixDQUFDO0lBaEJDLENBQUM7SUFrQkosVUFBVSxDQUFDLElBQWM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUE0RDtRQUMxRSx1Q0FBdUM7UUFDdkMscUJBQXFCO1FBQ3JCLHVCQUF1QjtRQUN2QixnRUFBZ0U7UUFDaEUseUJBQXlCO1FBQ3pCLGtDQUFrQztRQUNsQyxvREFBb0Q7UUFDcEQsZUFBZTtRQUNmLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIsZ0VBQWdFO1FBQ2hFLHlCQUF5QjtRQUN6QixrQ0FBa0M7UUFDbEMsb0RBQW9EO1FBQ3BELGVBQWU7UUFDZixNQUFNO0lBQ1IsQ0FBQzs4R0FyRFUsa0JBQWtCO2tHQUFsQixrQkFBa0IsdU9DbEIvQixzV0FXQSx5RERHWSxZQUFZLCtCQUFFLGlCQUFpQixrUUFBRSxlQUFlLCtCQUFFLGdCQUFnQjs7MkZBSWpFLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSw0QkFBNEIsY0FDMUIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQzs2R0FLcEUsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFhRSxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQmRiRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9iZGItZGF0YS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBVc2VyUmVhZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9lbnRpdGllcy91c2VyL3VzZXItcmVhZCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQmRiQ29sdW1uQnVpbGRlciB9IGZyb20gJy4uLy4uL2NvbW1vbi90YWJsZS9iZGItY29sdW1uLWJ1aWxkZXInO1xyXG5pbXBvcnQgeyBCZGJDb250ZXh0QWN0aW9uIH0gZnJvbSAnLi4vLi4vY29tbW9uL3RhYmxlL2JkYi1jb250ZXh0LWFjdGlvbic7XHJcbmltcG9ydCB7IEJkYlRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL3RhYmxlL2JkYi10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCZGJDb2x1bW4gfSBmcm9tICcuLi8uLi9jb21tb24vdGFibGUvYmRiLWNvbHVtbic7XHJcbmltcG9ydCB7IEJkYkNlbGxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9jb21tb24vdGFibGUvYmRiLWNlbGwuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYmRiLXVzZXItdGFibGVbZGF0YVNvdXJjZV0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQmRiVGFibGVDb21wb25lbnQsIE1hdERpYWxvZ01vZHVsZSwgQmRiQ2VsbERpcmVjdGl2ZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VzZXItdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJUYWJsZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IEJkYkRhdGFTb3VyY2U8VXNlclJlYWQ+O1xyXG4gIEBJbnB1dCgpIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgQE91dHB1dCgpIHJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxVc2VyUmVhZD4oKTtcclxuXHJcbiAgY29sdW1uczogQmRiQ29sdW1uPFVzZXJSZWFkLCB1bmtub3duPltdID0gdGhpcy5jYi5idWlsZChcclxuICAgIHRoaXMuY2IubnVtYmVyKHggPT4geC5pZCwgJ0lEJywgeyB3aWR0aDogNzUgfSksXHJcbiAgICB0aGlzLmNiLnN0cmluZyh4ID0+IHguZW1haWwsICdFLW1haWwnLCB7IHdpZHRoOiAyNTAgfSksXHJcbiAgICB0aGlzLmNiLmN1c3RvbSgncm9sZXMnLCAnUm9sbGVuJylcclxuICApO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGNiOiBCZGJDb2x1bW5CdWlsZGVyPFVzZXJSZWFkPlxyXG4gICkge31cclxuXHJcbiAgQElucHV0KCkgY29udGV4dEFjdGlvbnM6IEJkYkNvbnRleHRBY3Rpb248VXNlclJlYWQ+W10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGljb246ICdzZWFyY2gnLFxyXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICBsYWJlbDogJ0RldGFpbHMnLFxyXG4gICAgICBpZGVudGlmaWVyOiAnZGV0YWlscycsXHJcbiAgICB9LFxyXG4gICAgeyBpY29uOiAnZWRpdCcsIGNvbG9yOiAncHJpbWFyeScsIGxhYmVsOiAnV2lqemlnZW4nLCBpZGVudGlmaWVyOiAnZWRpdCcgfSxcclxuICAgIHtcclxuICAgICAgaWNvbjogJ2RlbGV0ZScsXHJcbiAgICAgIGNvbG9yOiAnd2FybicsXHJcbiAgICAgIGxhYmVsOiAnVmVyd2lqZGVyZW4nLFxyXG4gICAgICBpZGVudGlmaWVyOiAnZGVsZXRlJyxcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgb25Sb3dDbGljayh1c2VyOiBVc2VyUmVhZCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3dDbGljay5lbWl0KHVzZXIpO1xyXG4gIH1cclxuXHJcbiAgb25Db250ZXh0QWN0aW9uKGV2ZW50OiB7IGFjdGlvbjogQmRiQ29udGV4dEFjdGlvbjxVc2VyUmVhZD47IHJvdzogVXNlclJlYWQgfSk6IHZvaWQge1xyXG4gICAgLy8gICBzd2l0Y2ggKGV2ZW50LmFjdGlvbi5pZGVudGlmaWVyKSB7XHJcbiAgICAvLyAgICAgY2FzZSAnZGVsZXRlJzpcclxuICAgIC8vICAgICAgIHRoaXMubWF0RGlhbG9nXHJcbiAgICAvLyAgICAgICAgIC5vcGVuKFVzZXJEZWxldGVEaWFsb2dDb21wb25lbnQsIHsgZGF0YTogZXZlbnQucm93IH0pXHJcbiAgICAvLyAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAvLyAgICAgICAgIC5waXBlKGZpbHRlcih4ID0+ICEheCkpXHJcbiAgICAvLyAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kYXRhU291cmNlLmxvYWQoKSk7XHJcbiAgICAvLyAgICAgICBicmVhaztcclxuICAgIC8vICAgICBjYXNlICdlZGl0JzpcclxuICAgIC8vICAgICAgIHRoaXMubWF0RGlhbG9nXHJcbiAgICAvLyAgICAgICAgIC5vcGVuKFVzZXJVcGRhdGVEaWFsb2dDb21wb25lbnQsIHsgZGF0YTogZXZlbnQucm93IH0pXHJcbiAgICAvLyAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAvLyAgICAgICAgIC5waXBlKGZpbHRlcih4ID0+ICEheCkpXHJcbiAgICAvLyAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kYXRhU291cmNlLmxvYWQoKSk7XHJcbiAgICAvLyAgICAgICBicmVhaztcclxuICAgIC8vICAgfVxyXG4gIH1cclxufVxyXG4iLCI8YmRiLXRhYmxlXHJcbiAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXHJcbiAgKHJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXHJcbiAgW2NvbnRleHRBY3Rpb25zXT1cImNvbnRleHRBY3Rpb25zXCJcclxuICAoY29udGV4dEFjdGlvbik9XCJvbkNvbnRleHRBY3Rpb24oJGV2ZW50KVwiXHJcbiAgW2Rpc3BsYXllZENvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1uc1wiPlxyXG4gIDxuZy10ZW1wbGF0ZSBiZGJDZWxsRGVmPVwicm9sZXNcIiBsZXQtcm93PlxyXG4gICAge3sgcm93LnJvbGVzIH19XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9iZGItdGFibGU+XHJcbiJdfQ==