spiderly 19.0.0 → 19.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/fesm2022/spiderly.mjs +1996 -2189
  2. package/fesm2022/spiderly.mjs.map +1 -1
  3. package/lib/components/auth/login/login.component.d.ts +1 -1
  4. package/lib/components/auth/registration/registration.component.d.ts +1 -1
  5. package/lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base.d.ts +1 -1
  6. package/lib/entities/primeng-option.d.ts +3 -3
  7. package/lib/interceptors/http-loading.interceptor.d.ts +2 -11
  8. package/lib/interceptors/json-parser.interceptor.d.ts +2 -11
  9. package/lib/interceptors/jwt.interceptor.d.ts +2 -11
  10. package/lib/interceptors/unauthorized.interceptor.d.ts +2 -16
  11. package/lib/modules/core.module.d.ts +2 -13
  12. package/lib/modules/primeng.module.d.ts +4 -4
  13. package/lib/modules/spiderly-transloco.module.d.ts +2 -1
  14. package/package.json +15 -16
  15. package/public-api.d.ts +2 -1
  16. package/styles/components/spiderly-data-table/spiderly-data-table.component.scss +15 -0
  17. package/styles/components/spiderly-panels/panel-footer/panel-footer.component.scss +3 -3
  18. package/styles/components/spiderly-panels/spiderly-panel/spiderly-panel.component.scss +11 -0
  19. package/styles/styles/layout/_config.scss +2 -2
  20. package/styles/styles/layout/_content.scss +2 -0
  21. package/styles/styles/layout/_footer.scss +2 -0
  22. package/styles/styles/layout/_main.scss +6 -3
  23. package/styles/styles/layout/_menu.scss +10 -7
  24. package/styles/styles/layout/_mixins.scss +2 -2
  25. package/styles/styles/layout/_preloading.scss +1 -1
  26. package/styles/styles/layout/_responsive.scss +2 -0
  27. package/styles/styles/layout/_spiderly-controls.scss +2 -0
  28. package/styles/styles/layout/_topbar.scss +16 -11
  29. package/styles/styles/layout/_typography.scss +1 -1
  30. package/styles/styles/layout/_utils.scss +1 -1
  31. package/styles/styles/layout/_variables.scss +59 -53
  32. package/styles/styles/layout/layout.scss +13 -13
  33. package/styles/styles/shared.scss +70 -42
  34. package/styles/styles/styles.scss +2 -5
  35. package/esm2022/lib/components/auth/auth.module.mjs +0 -65
  36. package/esm2022/lib/components/auth/login/login.component.mjs +0 -60
  37. package/esm2022/lib/components/auth/partials/auth.component.mjs +0 -53
  38. package/esm2022/lib/components/auth/partials/login-verification.component.mjs +0 -39
  39. package/esm2022/lib/components/auth/partials/registration-verification.component.mjs +0 -37
  40. package/esm2022/lib/components/auth/partials/verification-wrapper.component.mjs +0 -74
  41. package/esm2022/lib/components/auth/registration/registration.component.mjs +0 -59
  42. package/esm2022/lib/components/base-details/role-base-details.component.mjs +0 -171
  43. package/esm2022/lib/components/base-form/base-form copy.mjs +0 -247
  44. package/esm2022/lib/components/card-skeleton/card-skeleton.component.mjs +0 -25
  45. package/esm2022/lib/components/footer/footer.component.mjs +0 -16
  46. package/esm2022/lib/components/index-card/index-card.component.mjs +0 -57
  47. package/esm2022/lib/components/info-card/info-card.component.mjs +0 -29
  48. package/esm2022/lib/components/layout/layout-base.component.mjs +0 -121
  49. package/esm2022/lib/components/layout/sidebar/menuitem.component.mjs +0 -161
  50. package/esm2022/lib/components/layout/sidebar/sidebar-menu.component.mjs +0 -34
  51. package/esm2022/lib/components/layout/sidebar/sidebar-menu.service.mjs +0 -26
  52. package/esm2022/lib/components/layout/sidebar/sidebar.component.mjs +0 -21
  53. package/esm2022/lib/components/layout/topbar/topbar.component.mjs +0 -115
  54. package/esm2022/lib/components/not-found/not-found.component.mjs +0 -20
  55. package/esm2022/lib/components/required/required.component.mjs +0 -12
  56. package/esm2022/lib/components/spiderly-buttons/google-button/google-button.component.mjs +0 -43
  57. package/esm2022/lib/components/spiderly-buttons/return-button/return-button.component.mjs +0 -37
  58. package/esm2022/lib/components/spiderly-buttons/spiderly-button/spiderly-button.component.mjs +0 -20
  59. package/esm2022/lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base.mjs +0 -68
  60. package/esm2022/lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component.mjs +0 -22
  61. package/esm2022/lib/components/spiderly-data-table/spiderly-data-table.component.mjs +0 -501
  62. package/esm2022/lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component.mjs +0 -42
  63. package/esm2022/lib/components/spiderly-form-control/spiderly-form-control.mjs +0 -36
  64. package/esm2022/lib/components/spiderly-panels/panel-body/panel-body.component.mjs +0 -19
  65. package/esm2022/lib/components/spiderly-panels/panel-footer/panel-footer.component.mjs +0 -14
  66. package/esm2022/lib/components/spiderly-panels/panel-header/panel-header.component.mjs +0 -49
  67. package/esm2022/lib/components/spiderly-panels/spiderly-card/spiderly-card.component.mjs +0 -20
  68. package/esm2022/lib/components/spiderly-panels/spiderly-panel/spiderly-panel.component.mjs +0 -63
  69. package/esm2022/lib/components/spiderly-panels/spiderly-panels.module.mjs +0 -49
  70. package/esm2022/lib/controls/base-autocomplete-control.mjs +0 -18
  71. package/esm2022/lib/controls/base-control.mjs +0 -62
  72. package/esm2022/lib/controls/base-dropdown-control.mjs +0 -37
  73. package/esm2022/lib/controls/spiderly-autocomplete/spiderly-autocomplete.component.mjs +0 -60
  74. package/esm2022/lib/controls/spiderly-calendar/spiderly-calendar.component.mjs +0 -39
  75. package/esm2022/lib/controls/spiderly-checkbox/spiderly-checkbox.component.mjs +0 -45
  76. package/esm2022/lib/controls/spiderly-colorpick/spiderly-colorpick.component.mjs +0 -40
  77. package/esm2022/lib/controls/spiderly-controls.module.mjs +0 -112
  78. package/esm2022/lib/controls/spiderly-dropdown/spiderly-dropdown.component.mjs +0 -40
  79. package/esm2022/lib/controls/spiderly-editor/spiderly-editor.component.mjs +0 -59
  80. package/esm2022/lib/controls/spiderly-file/spiderly-file.component.mjs +0 -106
  81. package/esm2022/lib/controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component.mjs +0 -38
  82. package/esm2022/lib/controls/spiderly-multiselect/spiderly-multiselect.component.mjs +0 -34
  83. package/esm2022/lib/controls/spiderly-number/spiderly-number.component.mjs +0 -44
  84. package/esm2022/lib/controls/spiderly-password/spiderly-password.component.mjs +0 -37
  85. package/esm2022/lib/controls/spiderly-textarea/spiderly-textarea.component.mjs +0 -34
  86. package/esm2022/lib/controls/spiderly-textbox/spiderly-textbox.component.mjs +0 -45
  87. package/esm2022/lib/entities/base-entity.mjs +0 -18
  88. package/esm2022/lib/entities/codebook.mjs +0 -10
  89. package/esm2022/lib/entities/init-company-auth-dialog-details.mjs +0 -9
  90. package/esm2022/lib/entities/init-top-bar-data.mjs +0 -12
  91. package/esm2022/lib/entities/is-authorized-for-save-event.mjs +0 -9
  92. package/esm2022/lib/entities/last-menu-icon-index-clicked.mjs +0 -8
  93. package/esm2022/lib/entities/lazy-load-selected-ids-result.mjs +0 -11
  94. package/esm2022/lib/entities/menuchangeevent.mjs +0 -3
  95. package/esm2022/lib/entities/mime-type.mjs +0 -15
  96. package/esm2022/lib/entities/namebook.mjs +0 -9
  97. package/esm2022/lib/entities/primeng-option.mjs +0 -9
  98. package/esm2022/lib/entities/security-entities.mjs +0 -169
  99. package/esm2022/lib/entities/simple-save-result.mjs +0 -9
  100. package/esm2022/lib/entities/spiderly-button.mjs +0 -11
  101. package/esm2022/lib/entities/table-filter-context.mjs +0 -3
  102. package/esm2022/lib/entities/table-filter-sort-meta.mjs +0 -3
  103. package/esm2022/lib/entities/table-filter.mjs +0 -15
  104. package/esm2022/lib/entities/table-response.mjs +0 -3
  105. package/esm2022/lib/enums/security-enums.mjs +0 -26
  106. package/esm2022/lib/enums/verification-type-codes.mjs +0 -6
  107. package/esm2022/lib/guards/auth.guard.mjs +0 -40
  108. package/esm2022/lib/guards/not-auth.guard.mjs +0 -32
  109. package/esm2022/lib/handlers/spiderly-error-handler.mjs +0 -30
  110. package/esm2022/lib/handlers/spiderly-transloco-fallback-strategy.mjs +0 -24
  111. package/esm2022/lib/interceptors/http-loading.interceptor.mjs +0 -27
  112. package/esm2022/lib/interceptors/json-parser.interceptor.mjs +0 -47
  113. package/esm2022/lib/interceptors/jwt.interceptor.mjs +0 -27
  114. package/esm2022/lib/interceptors/unauthorized.interceptor.mjs +0 -64
  115. package/esm2022/lib/modules/core.module.mjs +0 -140
  116. package/esm2022/lib/modules/primeng.module.mjs +0 -278
  117. package/esm2022/lib/modules/spiderly-transloco.module.mjs +0 -42
  118. package/esm2022/lib/services/api.service.security.mjs +0 -86
  119. package/esm2022/lib/services/app-initializer.mjs +0 -6
  120. package/esm2022/lib/services/app-layout-base.service.mjs +0 -132
  121. package/esm2022/lib/services/auth-base.service.mjs +0 -220
  122. package/esm2022/lib/services/base-form.service.mjs +0 -124
  123. package/esm2022/lib/services/config-base.service.mjs +0 -33
  124. package/esm2022/lib/services/helper-functions.mjs +0 -229
  125. package/esm2022/lib/services/spiderly-message.service.mjs +0 -64
  126. package/esm2022/lib/services/spiderly-transloco-loader.mjs +0 -20
  127. package/esm2022/lib/services/translate-labels-abstract.service.mjs +0 -15
  128. package/esm2022/lib/services/validator-abstract.service.mjs +0 -51
  129. package/esm2022/public-api.mjs +0 -94
  130. package/esm2022/spiderly.mjs +0 -5
  131. package/lib/components/auth/auth.module.d.ts +0 -17
  132. package/styles/styles/theme/base/_colors.scss +0 -18
  133. package/styles/styles/theme/base/_common.scss +0 -75
  134. package/styles/styles/theme/base/_components.scss +0 -106
  135. package/styles/styles/theme/base/_mixins.scss +0 -343
  136. package/styles/styles/theme/base/components/button/_button.scss +0 -564
  137. package/styles/styles/theme/base/components/button/_speeddial.scss +0 -96
  138. package/styles/styles/theme/base/components/button/_splitbutton.scss +0 -381
  139. package/styles/styles/theme/base/components/data/_carousel.scss +0 -37
  140. package/styles/styles/theme/base/components/data/_datatable.scss +0 -338
  141. package/styles/styles/theme/base/components/data/_dataview.scss +0 -55
  142. package/styles/styles/theme/base/components/data/_filter.scss +0 -138
  143. package/styles/styles/theme/base/components/data/_orderlist.scss +0 -103
  144. package/styles/styles/theme/base/components/data/_organizationchart.scss +0 -50
  145. package/styles/styles/theme/base/components/data/_paginator.scss +0 -92
  146. package/styles/styles/theme/base/components/data/_picklist.scss +0 -103
  147. package/styles/styles/theme/base/components/data/_timeline.scss +0 -81
  148. package/styles/styles/theme/base/components/data/_tree.scss +0 -149
  149. package/styles/styles/theme/base/components/data/_treetable.scss +0 -256
  150. package/styles/styles/theme/base/components/data/_virtualscroller.scss +0 -28
  151. package/styles/styles/theme/base/components/file/_fileupload.scss +0 -64
  152. package/styles/styles/theme/base/components/input/_autocomplete.scss +0 -118
  153. package/styles/styles/theme/base/components/input/_calendar.scss +0 -263
  154. package/styles/styles/theme/base/components/input/_cascadeselect.scss +0 -130
  155. package/styles/styles/theme/base/components/input/_checkbox.scss +0 -90
  156. package/styles/styles/theme/base/components/input/_chips.scss +0 -55
  157. package/styles/styles/theme/base/components/input/_colorpicker.scss +0 -26
  158. package/styles/styles/theme/base/components/input/_dropdown.scss +0 -152
  159. package/styles/styles/theme/base/components/input/_editor.scss +0 -122
  160. package/styles/styles/theme/base/components/input/_inputgroup.scss +0 -75
  161. package/styles/styles/theme/base/components/input/_inputmask.scss +0 -16
  162. package/styles/styles/theme/base/components/input/_inputnumber.scss +0 -28
  163. package/styles/styles/theme/base/components/input/_inputswitch.scss +0 -60
  164. package/styles/styles/theme/base/components/input/_inputtext.scss +0 -100
  165. package/styles/styles/theme/base/components/input/_listbox.scss +0 -82
  166. package/styles/styles/theme/base/components/input/_multiselect.scss +0 -173
  167. package/styles/styles/theme/base/components/input/_password.scss +0 -52
  168. package/styles/styles/theme/base/components/input/_radiobutton.scss +0 -78
  169. package/styles/styles/theme/base/components/input/_rating.scss +0 -55
  170. package/styles/styles/theme/base/components/input/_selectbutton.scss +0 -50
  171. package/styles/styles/theme/base/components/input/_slider.scss +0 -71
  172. package/styles/styles/theme/base/components/input/_togglebutton.scss +0 -48
  173. package/styles/styles/theme/base/components/input/_treeselect.scss +0 -139
  174. package/styles/styles/theme/base/components/menu/_breadcrumb.scss +0 -42
  175. package/styles/styles/theme/base/components/menu/_contextmenu.scss +0 -39
  176. package/styles/styles/theme/base/components/menu/_dock.scss +0 -95
  177. package/styles/styles/theme/base/components/menu/_megamenu.scss +0 -55
  178. package/styles/styles/theme/base/components/menu/_menu.scss +0 -37
  179. package/styles/styles/theme/base/components/menu/_menubar.scss +0 -141
  180. package/styles/styles/theme/base/components/menu/_panelmenu.scss +0 -153
  181. package/styles/styles/theme/base/components/menu/_slidemenu.scss +0 -59
  182. package/styles/styles/theme/base/components/menu/_steps.scss +0 -56
  183. package/styles/styles/theme/base/components/menu/_tabmenu.scss +0 -74
  184. package/styles/styles/theme/base/components/menu/_tieredmenu.scss +0 -43
  185. package/styles/styles/theme/base/components/messages/_inlinemessage.scss +0 -69
  186. package/styles/styles/theme/base/components/messages/_message.scss +0 -107
  187. package/styles/styles/theme/base/components/messages/_toast.scss +0 -103
  188. package/styles/styles/theme/base/components/misc/_avatar.scss +0 -30
  189. package/styles/styles/theme/base/components/misc/_badge.scss +0 -48
  190. package/styles/styles/theme/base/components/misc/_blockui.scss +0 -0
  191. package/styles/styles/theme/base/components/misc/_chip.scss +0 -42
  192. package/styles/styles/theme/base/components/misc/_inplace.scss +0 -17
  193. package/styles/styles/theme/base/components/misc/_progressbar.scss +0 -17
  194. package/styles/styles/theme/base/components/misc/_scrolltop.scss +0 -25
  195. package/styles/styles/theme/base/components/misc/_skeleton.scss +0 -8
  196. package/styles/styles/theme/base/components/misc/_tag.scss +0 -40
  197. package/styles/styles/theme/base/components/misc/_terminal.scss +0 -12
  198. package/styles/styles/theme/base/components/multimedia/_galleria.scss +0 -155
  199. package/styles/styles/theme/base/components/multimedia/_image.scss +0 -49
  200. package/styles/styles/theme/base/components/overlay/_confirmpopup.scss +0 -72
  201. package/styles/styles/theme/base/components/overlay/_dialog.scss +0 -73
  202. package/styles/styles/theme/base/components/overlay/_overlaypanel.scss +0 -64
  203. package/styles/styles/theme/base/components/overlay/_sidebar.scss +0 -27
  204. package/styles/styles/theme/base/components/overlay/_tooltip.scss +0 -33
  205. package/styles/styles/theme/base/components/panel/_accordion.scss +0 -119
  206. package/styles/styles/theme/base/components/panel/_card.scss +0 -30
  207. package/styles/styles/theme/base/components/panel/_divider.scss +0 -31
  208. package/styles/styles/theme/base/components/panel/_fieldset.scss +0 -47
  209. package/styles/styles/theme/base/components/panel/_panel.scss +0 -58
  210. package/styles/styles/theme/base/components/panel/_scrollpanel.scss +0 -6
  211. package/styles/styles/theme/base/components/panel/_splitter.scss +0 -19
  212. package/styles/styles/theme/base/components/panel/_tabview.scss +0 -82
  213. package/styles/styles/theme/base/components/panel/_toolbar.scss +0 -11
  214. package/styles/styles/theme/saga/_extensions.scss +0 -27
  215. package/styles/styles/theme/saga/_variables.scss +0 -1
  216. package/styles/styles/theme/saga/saga-blue/_extensions.scss +0 -2
  217. package/styles/styles/theme/saga/saga-blue/_fonts.scss +0 -1
  218. package/styles/styles/theme/saga/saga-blue/_variables.scss +0 -1
  219. package/styles/styles/theme/saga/saga-blue/theme.scss +0 -4
@@ -1,171 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
3
- import { Component, EventEmitter, Input, Output } from '@angular/core';
4
- import { TranslocoDirective } from '@jsverse/transloco';
5
- import { combineLatest, forkJoin, map, of } from 'rxjs';
6
- import { PrimengModule } from '../../modules/primeng.module';
7
- import { CardSkeletonComponent } from '../card-skeleton/card-skeleton.component';
8
- import { SpiderlyFormControl } from '../spiderly-form-control/spiderly-form-control';
9
- import { Role, RoleSaveBody } from '../../entities/security-entities';
10
- import { getControl, getPrimengAutocompleteNamebookOptions, getPrimengDropdownNamebookOptions, nameof } from '../../services/helper-functions';
11
- import { IsAuthorizedForSaveEvent } from '../../entities/is-authorized-for-save-event';
12
- import { SpiderlyTextboxComponent } from '../../controls/spiderly-textbox/spiderly-textbox.component';
13
- import { SpiderlyTextareaComponent } from '../../controls/spiderly-textarea/spiderly-textarea.component';
14
- import { SpiderlyMultiAutocompleteComponent } from '../../controls/spiderly-multiautocomplete/spiderly-multiautocomplete.component';
15
- import { SpiderlyMultiSelectComponent } from '../../controls/spiderly-multiselect/spiderly-multiselect.component';
16
- import { SpiderlyPanelsModule } from '../spiderly-panels/spiderly-panels.module';
17
- import { SpiderlyButtonComponent } from '../spiderly-buttons/spiderly-button/spiderly-button.component';
18
- import { SpiderlyReturnButtonComponent } from '../spiderly-buttons/return-button/return-button.component';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "../../services/api.service.security";
21
- import * as i2 from "@angular/router";
22
- import * as i3 from "../../services/base-form.service";
23
- import * as i4 from "../../services/auth-base.service";
24
- import * as i5 from "@angular/common";
25
- import * as i6 from "@angular/forms";
26
- import * as i7 from "../spiderly-panels/panel-header/panel-header.component";
27
- import * as i8 from "../spiderly-panels/panel-body/panel-body.component";
28
- import * as i9 from "../spiderly-panels/panel-footer/panel-footer.component";
29
- import * as i10 from "../spiderly-panels/spiderly-panel/spiderly-panel.component";
30
- export class RoleBaseDetailsComponent {
31
- constructor(apiService, route, baseFormService, authService) {
32
- this.apiService = apiService;
33
- this.route = route;
34
- this.baseFormService = baseFormService;
35
- this.authService = authService;
36
- this.onSave = new EventEmitter();
37
- this.onRoleFormGroupInitFinish = new EventEmitter();
38
- this.additionalButtons = [];
39
- this.authorizedForSaveObservable = () => of(false);
40
- this.isAuthorizedForSave = false;
41
- this.onIsAuthorizedForSaveChange = new EventEmitter();
42
- this.loading = true;
43
- this.roleSaveBodyName = nameof('roleDTO');
44
- this.selectedUsersForRole = new SpiderlyFormControl(null, { updateOn: 'change' });
45
- this.selectedPermissionsForRole = new SpiderlyFormControl(null, { updateOn: 'change' });
46
- this.handleAuthorizationForSave = () => {
47
- return combineLatest([this.authService.currentUserPermissionCodes$, this.authorizedForSaveObservable()]).pipe(map(([currentUserPermissionCodes, isAuthorizedForSave]) => {
48
- if (currentUserPermissionCodes != null && isAuthorizedForSave != null) {
49
- this.isAuthorizedForSave =
50
- (currentUserPermissionCodes.includes('InsertRole') && this.modelId <= 0) ||
51
- (currentUserPermissionCodes.includes('UpdateRole') && this.modelId > 0) ||
52
- isAuthorizedForSave;
53
- if (this.isAuthorizedForSave) {
54
- this.roleFormGroup.controls.name.enable();
55
- this.roleFormGroup.controls.description.enable();
56
- this.selectedUsersForRole.enable();
57
- this.selectedPermissionsForRole.enable();
58
- }
59
- else {
60
- this.roleFormGroup.controls.name.disable();
61
- this.roleFormGroup.controls.description.disable();
62
- this.selectedUsersForRole.disable();
63
- this.selectedPermissionsForRole.disable();
64
- }
65
- this.onIsAuthorizedForSaveChange.next(new IsAuthorizedForSaveEvent({
66
- isAuthorizedForSave: this.isAuthorizedForSave,
67
- currentUserPermissionCodes: currentUserPermissionCodes
68
- }));
69
- }
70
- }));
71
- };
72
- }
73
- ngOnInit() {
74
- this.formGroup.initSaveBody = () => {
75
- let saveBody = new RoleSaveBody();
76
- saveBody.roleDTO = this.roleFormGroup.getRawValue();
77
- saveBody.selectedPermissionsIds = this.selectedPermissionsForRole.getRawValue();
78
- saveBody.selectedUsersIds = this.selectedUsersForRole.getRawValue()?.map(n => n.value);
79
- return saveBody;
80
- };
81
- this.formGroup.saveObservableMethod = this.apiService.saveRole;
82
- this.formGroup.mainDTOName = this.roleSaveBodyName;
83
- this.route.params.subscribe(async (params) => {
84
- this.modelId = params['id'];
85
- getPrimengDropdownNamebookOptions(this.apiService.getPermissionsDropdownListForRole).subscribe(po => {
86
- this.permissionsForRoleOptions = po;
87
- });
88
- if (this.modelId > 0) {
89
- forkJoin({
90
- mainUIFormDTO: this.apiService.getRoleMainUIFormDTO(this.modelId)
91
- })
92
- .subscribe(({ mainUIFormDTO }) => {
93
- this.initRoleFormGroup(new Role(mainUIFormDTO.roleDTO));
94
- this.selectedPermissionsForRole.setValue(mainUIFormDTO.permissionsNamebookDTOList.map(n => { return n.id; }));
95
- this.selectedUsersForRole.setValue(mainUIFormDTO.usersNamebookDTOList.map(n => ({ label: n.displayName, value: n.id })));
96
- this.authorizationForSaveSubscription = this.handleAuthorizationForSave().subscribe();
97
- this.loading = false;
98
- });
99
- }
100
- else {
101
- this.initRoleFormGroup(new Role({ id: 0 }));
102
- this.authorizationForSaveSubscription = this.handleAuthorizationForSave().subscribe();
103
- this.loading = false;
104
- }
105
- });
106
- }
107
- initRoleFormGroup(role) {
108
- this.baseFormService.addFormGroup(this.roleFormGroup, this.formGroup, role, this.roleSaveBodyName, []);
109
- this.roleFormGroup.mainDTOName = this.roleSaveBodyName;
110
- this.onRoleFormGroupInitFinish.next();
111
- }
112
- searchUsersForRole(event) {
113
- getPrimengAutocompleteNamebookOptions(this.apiService.getUsersAutocompleteListForRole, 50, event?.query ?? '').subscribe(po => {
114
- this.usersForRoleOptions = po;
115
- });
116
- }
117
- control(formControlName, formGroup) {
118
- return getControl(formControlName, formGroup);
119
- }
120
- getFormArrayGroups(formArray) {
121
- return this.baseFormService.getFormArrayGroups(formArray);
122
- }
123
- save() {
124
- this.onSave.next();
125
- }
126
- ngOnDestroy() {
127
- if (this.authorizationForSaveSubscription) {
128
- this.authorizationForSaveSubscription.unsubscribe();
129
- }
130
- }
131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RoleBaseDetailsComponent, deps: [{ token: i1.ApiSecurityService }, { token: i2.ActivatedRoute }, { token: i3.BaseFormService }, { token: i4.AuthBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
132
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: RoleBaseDetailsComponent, isStandalone: true, selector: "role-base-details", inputs: { getCrudMenuForOrderedData: "getCrudMenuForOrderedData", formGroup: "formGroup", roleFormGroup: "roleFormGroup", additionalButtons: "additionalButtons", authorizedForSaveObservable: "authorizedForSaveObservable" }, outputs: { onSave: "onSave", onRoleFormGroupInitFinish: "onRoleFormGroupInitFinish", onIsAuthorizedForSaveChange: "onIsAuthorizedForSaveChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <spiderly-panel>\r\n <panel-header></panel-header>\r\n\r\n <panel-body>\r\n <form *ngIf=\"loading === false\" class=\"grid\"> <!-- FT: Don't put @deffer it's not working as expected -->\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"control('name', roleFormGroup)\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textarea [control]=\"control('description', roleFormGroup)\"></spiderly-textarea>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiautocomplete [control]=\"selectedUsersForRole\" [options]=\"usersForRoleOptions\" (onTextInput)=\"searchUsersForRole($event)\" [label]=\"t('Users')\"></spiderly-multiautocomplete>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiselect [control]=\"selectedPermissionsForRole\" [options]=\"permissionsForRoleOptions\" [label]=\"t('Permissions')\"></spiderly-multiselect>\r\n </div>\r\n </form>\r\n\r\n <card-skeleton *ngIf=\"loading === true\" [height]=\"502\"></card-skeleton>\r\n\r\n </panel-body>\r\n\r\n <panel-footer>\r\n <spiderly-button [disabled]=\"!isAuthorizedForSave\" (onClick)=\"save()\" [label]=\"t('Save')\" icon=\"pi pi-save\"></spiderly-button>\r\n @for (button of additionalButtons; track button.label) {\r\n <spiderly-button (onClick)=\"button.onClick()\" [disabled]=\"button.disabled\" [label]=\"button.label\" [icon]=\"button.icon\"></spiderly-button>\r\n }\r\n <return-button></return-button>\r\n </panel-footer>\r\n </spiderly-panel>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: PrimengModule }, { kind: "directive", type:
133
- // SpiderlyControlsModule,
134
- TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: CardSkeletonComponent, selector: "card-skeleton", inputs: ["height"] }, { kind: "component", type: SpiderlyTextboxComponent, selector: "spiderly-textbox", inputs: ["showButton", "buttonIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: SpiderlyTextareaComponent, selector: "spiderly-textarea" }, { kind: "component", type: SpiderlyMultiAutocompleteComponent, selector: "spiderly-multiautocomplete" }, { kind: "component", type: SpiderlyMultiSelectComponent, selector: "spiderly-multiselect" }, { kind: "ngmodule", type: SpiderlyPanelsModule }, { kind: "component", type: i7.PanelHeaderComponent, selector: "panel-header", inputs: ["title", "showBigTitle", "showIcon", "icon", "index", "tabs"] }, { kind: "component", type: i8.PanelBodyComponent, selector: "panel-body", inputs: ["normalBottomPadding"] }, { kind: "component", type: i9.PanelFooterComponent, selector: "panel-footer" }, { kind: "component", type: i10.SpiderlyPanelComponent, selector: "spiderly-panel", inputs: ["isFirstMultiplePanel", "isMiddleMultiplePanel", "isLastMultiplePanel", "toggleable", "collapsed", "crudMenu", "showCrudMenu", "showRemoveIcon", "index", "showPanelHeader"], outputs: ["onMenuIconClick", "onRemoveIconClick"] }, { kind: "component", type: SpiderlyButtonComponent, selector: "spiderly-button" }, { kind: "component", type: SpiderlyReturnButtonComponent, selector: "return-button", inputs: ["navigateUrl"] }] }); }
135
- }
136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RoleBaseDetailsComponent, decorators: [{
137
- type: Component,
138
- args: [{ selector: 'role-base-details', standalone: true, imports: [
139
- CommonModule,
140
- FormsModule,
141
- ReactiveFormsModule,
142
- PrimengModule,
143
- // SpiderlyControlsModule,
144
- TranslocoDirective,
145
- CardSkeletonComponent,
146
- SpiderlyTextboxComponent,
147
- SpiderlyTextareaComponent,
148
- SpiderlyMultiAutocompleteComponent,
149
- SpiderlyMultiSelectComponent,
150
- SpiderlyPanelsModule,
151
- SpiderlyButtonComponent,
152
- SpiderlyReturnButtonComponent
153
- ], template: "<ng-container *transloco=\"let t\">\r\n <spiderly-panel>\r\n <panel-header></panel-header>\r\n\r\n <panel-body>\r\n <form *ngIf=\"loading === false\" class=\"grid\"> <!-- FT: Don't put @deffer it's not working as expected -->\r\n <div class=\"col-12\">\r\n <spiderly-textbox [control]=\"control('name', roleFormGroup)\"></spiderly-textbox>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-textarea [control]=\"control('description', roleFormGroup)\"></spiderly-textarea>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiautocomplete [control]=\"selectedUsersForRole\" [options]=\"usersForRoleOptions\" (onTextInput)=\"searchUsersForRole($event)\" [label]=\"t('Users')\"></spiderly-multiautocomplete>\r\n </div>\r\n <div class=\"col-12\">\r\n <spiderly-multiselect [control]=\"selectedPermissionsForRole\" [options]=\"permissionsForRoleOptions\" [label]=\"t('Permissions')\"></spiderly-multiselect>\r\n </div>\r\n </form>\r\n\r\n <card-skeleton *ngIf=\"loading === true\" [height]=\"502\"></card-skeleton>\r\n\r\n </panel-body>\r\n\r\n <panel-footer>\r\n <spiderly-button [disabled]=\"!isAuthorizedForSave\" (onClick)=\"save()\" [label]=\"t('Save')\" icon=\"pi pi-save\"></spiderly-button>\r\n @for (button of additionalButtons; track button.label) {\r\n <spiderly-button (onClick)=\"button.onClick()\" [disabled]=\"button.disabled\" [label]=\"button.label\" [icon]=\"button.icon\"></spiderly-button>\r\n }\r\n <return-button></return-button>\r\n </panel-footer>\r\n </spiderly-panel>\r\n</ng-container>" }]
154
- }], ctorParameters: () => [{ type: i1.ApiSecurityService }, { type: i2.ActivatedRoute }, { type: i3.BaseFormService }, { type: i4.AuthBaseService }], propDecorators: { onSave: [{
155
- type: Output
156
- }], onRoleFormGroupInitFinish: [{
157
- type: Output
158
- }], getCrudMenuForOrderedData: [{
159
- type: Input
160
- }], formGroup: [{
161
- type: Input
162
- }], roleFormGroup: [{
163
- type: Input
164
- }], additionalButtons: [{
165
- type: Input
166
- }], authorizedForSaveObservable: [{
167
- type: Input
168
- }], onIsAuthorizedForSaveChange: [{
169
- type: Output
170
- }] } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1iYXNlLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BpZGVybHkvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZGV0YWlscy9yb2xlLWJhc2UtZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlkZXJseS9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS1kZXRhaWxzL3JvbGUtYmFzZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUVsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFxQixtQkFBbUIsRUFBcUIsTUFBTSxnREFBZ0QsQ0FBQztBQUczSCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxVQUFVLEVBQUUscUNBQXFDLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLL0ksT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkNBQTZDLENB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QUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLGdDQUFnQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2RDtJQUNMLENBQUM7K0dBL0lRLHdCQUF3QjttR0FBeEIsd0JBQXdCLGdjQ25EckMsb3pEQWdDZSwyQ0RHUCxZQUFZLGtJQUNaLFdBQVcsdWRBQ1gsbUJBQW1CLDhCQUNuQixhQUFhO2dCQUNiLDBCQUEwQjtnQkFDMUIsa0JBQWtCLGdNQUNsQixxQkFBcUIsOEVBQ3JCLHdCQUF3QiwrSEFDeEIseUJBQXlCLDhEQUN6QixrQ0FBa0MsdUVBQ2xDLDRCQUE0QixnRUFDNUIsb0JBQW9CLG1yQkFDcEIsdUJBQXVCLDREQUN2Qiw2QkFBNkI7OzRGQUd4Qix3QkFBd0I7a0JBckJwQyxTQUFTOytCQUNJLG1CQUFtQixjQUVqQixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQix3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsa0NBQWtDO3dCQUNsQyw0QkFBNEI7d0JBQzVCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2Qiw2QkFBNkI7cUJBQ2hDO2dMQUdTLE1BQU07c0JBQWYsTUFBTTtnQkFDRyx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBQ0UseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR0csMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUVJLDJCQUEyQjtzQkFBcEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xvY29EaXJlY3RpdmUgfSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZvcmtKb2luLCBtYXAsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFByaW1lbmdNb2R1bGUgfSBmcm9tICcuLi8uLi9tb2R1bGVzL3ByaW1lbmcubW9kdWxlJztcclxuaW1wb3J0IHsgU3BpZGVybHlDb250cm9sc01vZHVsZSB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3NwaWRlcmx5LWNvbnRyb2xzLm1vZHVsZSc7XHJcbmltcG9ydCB7IENhcmRTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2NhcmQtc2tlbGV0b24vY2FyZC1za2VsZXRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcGlkZXJseUZvcm1BcnJheSwgU3BpZGVybHlGb3JtQ29udHJvbCwgU3BpZGVybHlGb3JtR3JvdXAgfSBmcm9tICcuLi9zcGlkZXJseS1mb3JtLWNvbnRyb2wvc3BpZGVybHktZm9ybS1jb250cm9sJztcclxuaW1wb3J0IHsgQmFzZUVudGl0eSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL2Jhc2UtZW50aXR5JztcclxuaW1wb3J0IHsgTGFzdE1lbnVJY29uSW5kZXhDbGlja2VkIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvbGFzdC1tZW51LWljb24taW5kZXgtY2xpY2tlZCc7XHJcbmltcG9ydCB7IFJvbGUsIFJvbGVTYXZlQm9keSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3NlY3VyaXR5LWVudGl0aWVzJztcclxuaW1wb3J0IHsgU3BpZGVybHlCdXR0b24gfSBmcm9tICcuLi8uLi9lbnRpdGllcy9zcGlkZXJseS1idXR0b24nO1xyXG5pbXBvcnQgeyBnZXRDb250cm9sLCBnZXRQcmltZW5nQXV0b2NvbXBsZXRlTmFtZWJvb2tPcHRpb25zLCBnZXRQcmltZW5nRHJvcGRvd25OYW1lYm9va09wdGlvbnMsIG5hbWVvZiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2hlbHBlci1mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBCYXNlRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlLWZvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVNlY3VyaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwaS5zZXJ2aWNlLnNlY3VyaXR5JztcclxuaW1wb3J0IHsgUHJpbWVuZ09wdGlvbiB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3ByaW1lbmctb3B0aW9uJztcclxuaW1wb3J0IHsgQXV0b0NvbXBsZXRlQ29tcGxldGVFdmVudCB9IGZyb20gJ3ByaW1lbmcvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgSXNBdXRob3JpemVkRm9yU2F2ZUV2ZW50IH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvaXMtYXV0aG9yaXplZC1mb3Itc2F2ZS1ldmVudCc7XHJcbmltcG9ydCB7IEF1dGhCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGgtYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3BpZGVybHlUZXh0Ym94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvc3BpZGVybHktdGV4dGJveC9zcGlkZXJseS10ZXh0Ym94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNwaWRlcmx5VGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250cm9scy9zcGlkZXJseS10ZXh0YXJlYS9zcGlkZXJseS10ZXh0YXJlYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcGlkZXJseU11bHRpQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbHMvc3BpZGVybHktbXVsdGlhdXRvY29tcGxldGUvc3BpZGVybHktbXVsdGlhdXRvY29tcGxldGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3BpZGVybHlNdWx0aVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3NwaWRlcmx5LW11bHRpc2VsZWN0L3NwaWRlcmx5LW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNwaWRlcmx5UGFuZWxzTW9kdWxlIH0gZnJvbSAnLi4vc3BpZGVybHktcGFuZWxzL3NwaWRlcmx5LXBhbmVscy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTcGlkZXJseUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL3NwaWRlcmx5LWJ1dHRvbnMvc3BpZGVybHktYnV0dG9uL3NwaWRlcmx5LWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcGlkZXJseVJldHVybkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL3NwaWRlcmx5LWJ1dHRvbnMvcmV0dXJuLWJ1dHRvbi9yZXR1cm4tYnV0dG9uLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncm9sZS1iYXNlLWRldGFpbHMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdyb2xlLWJhc2UtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZSwgXHJcbiAgICAgICAgRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgICAgICBQcmltZW5nTW9kdWxlLFxyXG4gICAgICAgIC8vIFNwaWRlcmx5Q29udHJvbHNNb2R1bGUsXHJcbiAgICAgICAgVHJhbnNsb2NvRGlyZWN0aXZlLFxyXG4gICAgICAgIENhcmRTa2VsZXRvbkNvbXBvbmVudCxcclxuICAgICAgICBTcGlkZXJseVRleHRib3hDb21wb25lbnQsXHJcbiAgICAgICAgU3BpZGVybHlUZXh0YXJlYUNvbXBvbmVudCxcclxuICAgICAgICBTcGlkZXJseU11bHRpQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxyXG4gICAgICAgIFNwaWRlcmx5TXVsdGlTZWxlY3RDb21wb25lbnQsXHJcbiAgICAgICAgU3BpZGVybHlQYW5lbHNNb2R1bGUsXHJcbiAgICAgICAgU3BpZGVybHlCdXR0b25Db21wb25lbnQsXHJcbiAgICAgICAgU3BpZGVybHlSZXR1cm5CdXR0b25Db21wb25lbnRcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJvbGVCYXNlRGV0YWlsc0NvbXBvbmVudCB7XHJcbiAgICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgQE91dHB1dCgpIG9uUm9sZUZvcm1Hcm91cEluaXRGaW5pc2ggPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBASW5wdXQoKSBnZXRDcnVkTWVudUZvck9yZGVyZWREYXRhOiAoZm9ybUFycmF5OiBTcGlkZXJseUZvcm1BcnJheSwgbW9kZWxDb25zdHJ1Y3RvcjogQmFzZUVudGl0eSwgbGFzdE1lbnVJY29uSW5kZXhDbGlja2VkOiBMYXN0TWVudUljb25JbmRleENsaWNrZWQsIGFkanVzdEZvcm1BcnJheU1hbnVhbGx5OiBib29sZWFuKSA9PiBNZW51SXRlbVtdO1xyXG4gICAgQElucHV0KCkgZm9ybUdyb3VwOiBTcGlkZXJseUZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIHJvbGVGb3JtR3JvdXA6IFNwaWRlcmx5Rm9ybUdyb3VwPFJvbGU+O1xyXG4gICAgQElucHV0KCkgYWRkaXRpb25hbEJ1dHRvbnM6IFNwaWRlcmx5QnV0dG9uW10gPSBbXTtcclxuXHJcbiAgICBhdXRob3JpemF0aW9uRm9yU2F2ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gICAgQElucHV0KCkgYXV0aG9yaXplZEZvclNhdmVPYnNlcnZhYmxlOiAoKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gKCkgPT4gb2YoZmFsc2UpO1xyXG4gICAgaXNBdXRob3JpemVkRm9yU2F2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQE91dHB1dCgpIG9uSXNBdXRob3JpemVkRm9yU2F2ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SXNBdXRob3JpemVkRm9yU2F2ZUV2ZW50PigpOyBcclxuICAgIFxyXG4gICAgbW9kZWxJZDogbnVtYmVyO1xyXG4gICAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgICByb2xlU2F2ZUJvZHlOYW1lOiBzdHJpbmcgPSBuYW1lb2Y8Um9sZVNhdmVCb2R5Pigncm9sZURUTycpO1xyXG5cclxuICAgIHVzZXJzRm9yUm9sZU9wdGlvbnM6IFByaW1lbmdPcHRpb25bXTtcclxuICAgIHBlcm1pc3Npb25zRm9yUm9sZU9wdGlvbnM6IFByaW1lbmdPcHRpb25bXTtcclxuXHJcbiAgICBzZWxlY3RlZFVzZXJzRm9yUm9sZSA9IG5ldyBTcGlkZXJseUZvcm1Db250cm9sPFByaW1lbmdPcHRpb25bXT4obnVsbCwge3VwZGF0ZU9uOiAnY2hhbmdlJ30pO1xyXG4gICAgc2VsZWN0ZWRQZXJtaXNzaW9uc0ZvclJvbGUgPSBuZXcgU3BpZGVybHlGb3JtQ29udHJvbDxudW1iZXJbXT4obnVsbCwge3VwZGF0ZU9uOiAnY2hhbmdlJ30pO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VjdXJpdHlTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByaXZhdGUgYmFzZUZvcm1TZXJ2aWNlOiBCYXNlRm9ybVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aEJhc2VTZXJ2aWNlXHJcbiAgICApIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKXtcclxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5pbml0U2F2ZUJvZHkgPSAoKSA9PiB7IFxyXG4gICAgICAgICAgICBsZXQgc2F2ZUJvZHkgPSBuZXcgUm9sZVNhdmVCb2R5KCk7XHJcbiAgICAgICAgICAgIHNhdmVCb2R5LnJvbGVEVE8gPSB0aGlzLnJvbGVGb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKTtcclxuXHJcbiAgICAgICAgICAgIHNhdmVCb2R5LnNlbGVjdGVkUGVybWlzc2lvbnNJZHMgPSB0aGlzLnNlbGVjdGVkUGVybWlzc2lvbnNGb3JSb2xlLmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgICAgICAgIHNhdmVCb2R5LnNlbGVjdGVkVXNlcnNJZHMgPSB0aGlzLnNlbGVjdGVkVXNlcnNGb3JSb2xlLmdldFJhd1ZhbHVlKCk/Lm1hcChuID0+IG4udmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHNhdmVCb2R5O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuc2F2ZU9ic2VydmFibGVNZXRob2QgPSB0aGlzLmFwaVNlcnZpY2Uuc2F2ZVJvbGU7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAubWFpbkRUT05hbWUgPSB0aGlzLnJvbGVTYXZlQm9keU5hbWU7XHJcblxyXG4gICAgICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShhc3luYyAocGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWxJZCA9IHBhcmFtc1snaWQnXTtcclxuXHJcbiAgICAgICAgICAgIGdldFByaW1lbmdEcm9wZG93bk5hbWVib29rT3B0aW9ucyh0aGlzLmFwaVNlcnZpY2UuZ2V0UGVybWlzc2lvbnNEcm9wZG93bkxpc3RGb3JSb2xlKS5zdWJzY3JpYmUocG8gPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uc0ZvclJvbGVPcHRpb25zID0gcG87XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYodGhpcy5tb2RlbElkID4gMCl7XHJcbiAgICAgICAgICAgICAgICBmb3JrSm9pbih7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFpblVJRm9ybURUTzogdGhpcy5hcGlTZXJ2aWNlLmdldFJvbGVNYWluVUlGb3JtRFRPKHRoaXMubW9kZWxJZClcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh7IG1haW5VSUZvcm1EVE8gfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdFJvbGVGb3JtR3JvdXAobmV3IFJvbGUobWFpblVJRm9ybURUTy5yb2xlRFRPKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQZXJtaXNzaW9uc0ZvclJvbGUuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1haW5VSUZvcm1EVE8ucGVybWlzc2lvbnNOYW1lYm9va0RUT0xpc3QubWFwKG4gPT4geyByZXR1cm4gbi5pZCB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzRm9yUm9sZS5zZXRWYWx1ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFpblVJRm9ybURUTy51c2Vyc05hbWVib29rRFRPTGlzdC5tYXAobiA9PiAoeyBsYWJlbDogbi5kaXNwbGF5TmFtZSwgdmFsdWU6IG4uaWQgfSkpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRob3JpemF0aW9uRm9yU2F2ZVN1YnNjcmlwdGlvbiA9IHRoaXMuaGFuZGxlQXV0aG9yaXphdGlvbkZvclNhdmUoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRSb2xlRm9ybUdyb3VwKG5ldyBSb2xlKHtpZDogMH0pKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dGhvcml6YXRpb25Gb3JTYXZlU3Vic2NyaXB0aW9uID0gdGhpcy5oYW5kbGVBdXRob3JpemF0aW9uRm9yU2F2ZSgpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0Um9sZUZvcm1Hcm91cChyb2xlOiBSb2xlKSB7XHJcbiAgICAgICAgdGhpcy5iYXNlRm9ybVNlcnZpY2UuYWRkRm9ybUdyb3VwPFJvbGU+KFxyXG4gICAgICAgICAgICB0aGlzLnJvbGVGb3JtR3JvdXAsIFxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cCwgXHJcbiAgICAgICAgICAgIHJvbGUsIFxyXG4gICAgICAgICAgICB0aGlzLnJvbGVTYXZlQm9keU5hbWUsXHJcbiAgICAgICAgICAgIFtdXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnJvbGVGb3JtR3JvdXAubWFpbkRUT05hbWUgPSB0aGlzLnJvbGVTYXZlQm9keU5hbWU7XHJcbiAgICAgICAgdGhpcy5vblJvbGVGb3JtR3JvdXBJbml0RmluaXNoLm5leHQoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaGFuZGxlQXV0aG9yaXphdGlvbkZvclNhdmUgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuYXV0aFNlcnZpY2UuY3VycmVudFVzZXJQZXJtaXNzaW9uQ29kZXMkLCB0aGlzLmF1dGhvcml6ZWRGb3JTYXZlT2JzZXJ2YWJsZSgpXSkucGlwZShcclxuICAgICAgICAgICAgbWFwKChbY3VycmVudFVzZXJQZXJtaXNzaW9uQ29kZXMsIGlzQXV0aG9yaXplZEZvclNhdmVdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFVzZXJQZXJtaXNzaW9uQ29kZXMgIT0gbnVsbCAmJiBpc0F1dGhvcml6ZWRGb3JTYXZlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQXV0aG9yaXplZEZvclNhdmUgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudFVzZXJQZXJtaXNzaW9uQ29kZXMuaW5jbHVkZXMoJ0luc2VydFJvbGUnKSAmJiB0aGlzLm1vZGVsSWQgPD0gMCkgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50VXNlclBlcm1pc3Npb25Db2Rlcy5pbmNsdWRlcygnVXBkYXRlUm9sZScpICYmIHRoaXMubW9kZWxJZCA+IDApIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXV0aG9yaXplZEZvclNhdmU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQXV0aG9yaXplZEZvclNhdmUpIHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm9sZUZvcm1Hcm91cC5jb250cm9scy5uYW1lLmVuYWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvbGVGb3JtR3JvdXAuY29udHJvbHMuZGVzY3JpcHRpb24uZW5hYmxlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRVc2Vyc0ZvclJvbGUuZW5hYmxlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQZXJtaXNzaW9uc0ZvclJvbGUuZW5hYmxlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm9sZUZvcm1Hcm91cC5jb250cm9scy5uYW1lLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb2xlRm9ybUdyb3VwLmNvbnRyb2xzLmRlc2NyaXB0aW9uLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzRm9yUm9sZS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQZXJtaXNzaW9uc0ZvclJvbGUuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbklzQXV0aG9yaXplZEZvclNhdmVDaGFuZ2UubmV4dChuZXcgSXNBdXRob3JpemVkRm9yU2F2ZUV2ZW50KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBdXRob3JpemVkRm9yU2F2ZTogdGhpcy5pc0F1dGhvcml6ZWRGb3JTYXZlLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFVzZXJQZXJtaXNzaW9uQ29kZXM6IGN1cnJlbnRVc2VyUGVybWlzc2lvbkNvZGVzXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpOyBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaFVzZXJzRm9yUm9sZShldmVudDogQXV0b0NvbXBsZXRlQ29tcGxldGVFdmVudCkge1xyXG4gICAgICAgIGdldFByaW1lbmdBdXRvY29tcGxldGVOYW1lYm9va09wdGlvbnModGhpcy5hcGlTZXJ2aWNlLmdldFVzZXJzQXV0b2NvbXBsZXRlTGlzdEZvclJvbGUsIDUwLCBldmVudD8ucXVlcnkgPz8gJycpLnN1YnNjcmliZShwbyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlcnNGb3JSb2xlT3B0aW9ucyA9IHBvO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnRyb2woZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsIGZvcm1Hcm91cDogU3BpZGVybHlGb3JtR3JvdXApe1xyXG4gICAgICAgIHJldHVybiBnZXRDb250cm9sKGZvcm1Db250cm9sTmFtZSwgZm9ybUdyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtQXJyYXlHcm91cHM8VD4oZm9ybUFycmF5OiBTcGlkZXJseUZvcm1BcnJheSk6IFNwaWRlcmx5Rm9ybUdyb3VwPFQ+W117XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZvcm1TZXJ2aWNlLmdldEZvcm1BcnJheUdyb3VwczxUPihmb3JtQXJyYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmUoKXtcclxuICAgICAgICB0aGlzLm9uU2F2ZS5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKXtcclxuICAgICAgICBpZiAodGhpcy5hdXRob3JpemF0aW9uRm9yU2F2ZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhvcml6YXRpb25Gb3JTYXZlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8bmctY29udGFpbmVyICp0cmFuc2xvY289XCJsZXQgdFwiPlxyXG4gICAgPHNwaWRlcmx5LXBhbmVsPlxyXG4gICAgICAgIDxwYW5lbC1oZWFkZXI+PC9wYW5lbC1oZWFkZXI+XHJcblxyXG4gICAgICAgIDxwYW5lbC1ib2R5PlxyXG4gICAgICAgICAgICA8Zm9ybSAqbmdJZj1cImxvYWRpbmcgPT09IGZhbHNlXCIgY2xhc3M9XCJncmlkXCI+IDwhLS0gRlQ6IERvbid0IHB1dCBAZGVmZmVyIGl0J3Mgbm90IHdvcmtpbmcgYXMgZXhwZWN0ZWQgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwaWRlcmx5LXRleHRib3ggW2NvbnRyb2xdPVwiY29udHJvbCgnbmFtZScsIHJvbGVGb3JtR3JvdXApXCI+PC9zcGlkZXJseS10ZXh0Ym94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwaWRlcmx5LXRleHRhcmVhIFtjb250cm9sXT1cImNvbnRyb2woJ2Rlc2NyaXB0aW9uJywgcm9sZUZvcm1Hcm91cClcIj48L3NwaWRlcmx5LXRleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwaWRlcmx5LW11bHRpYXV0b2NvbXBsZXRlIFtjb250cm9sXT1cInNlbGVjdGVkVXNlcnNGb3JSb2xlXCIgW29wdGlvbnNdPVwidXNlcnNGb3JSb2xlT3B0aW9uc1wiIChvblRleHRJbnB1dCk9XCJzZWFyY2hVc2Vyc0ZvclJvbGUoJGV2ZW50KVwiIFtsYWJlbF09XCJ0KCdVc2VycycpXCI+PC9zcGlkZXJseS1tdWx0aWF1dG9jb21wbGV0ZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGlkZXJseS1tdWx0aXNlbGVjdCBbY29udHJvbF09XCJzZWxlY3RlZFBlcm1pc3Npb25zRm9yUm9sZVwiIFtvcHRpb25zXT1cInBlcm1pc3Npb25zRm9yUm9sZU9wdGlvbnNcIiBbbGFiZWxdPVwidCgnUGVybWlzc2lvbnMnKVwiPjwvc3BpZGVybHktbXVsdGlzZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG5cclxuICAgICAgICAgICAgPGNhcmQtc2tlbGV0b24gKm5nSWY9XCJsb2FkaW5nID09PSB0cnVlXCIgW2hlaWdodF09XCI1MDJcIj48L2NhcmQtc2tlbGV0b24+XHJcblxyXG4gICAgICAgIDwvcGFuZWwtYm9keT5cclxuXHJcbiAgICAgICAgPHBhbmVsLWZvb3Rlcj5cclxuICAgICAgICAgICAgPHNwaWRlcmx5LWJ1dHRvbiBbZGlzYWJsZWRdPVwiIWlzQXV0aG9yaXplZEZvclNhdmVcIiAob25DbGljayk9XCJzYXZlKClcIiBbbGFiZWxdPVwidCgnU2F2ZScpXCIgaWNvbj1cInBpIHBpLXNhdmVcIj48L3NwaWRlcmx5LWJ1dHRvbj5cclxuICAgICAgICAgICAgQGZvciAoYnV0dG9uIG9mIGFkZGl0aW9uYWxCdXR0b25zOyB0cmFjayBidXR0b24ubGFiZWwpIHtcclxuICAgICAgICAgICAgICAgIDxzcGlkZXJseS1idXR0b24gKG9uQ2xpY2spPVwiYnV0dG9uLm9uQ2xpY2soKVwiIFtkaXNhYmxlZF09XCJidXR0b24uZGlzYWJsZWRcIiBbbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCIgW2ljb25dPVwiYnV0dG9uLmljb25cIj48L3NwaWRlcmx5LWJ1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8cmV0dXJuLWJ1dHRvbj48L3JldHVybi1idXR0b24+XHJcbiAgICAgICAgPC9wYW5lbC1mb290ZXI+XHJcbiAgICA8L3NwaWRlcmx5LXBhbmVsPlxyXG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -1,247 +0,0 @@
1
- import { Component, } from '@angular/core';
2
- import { SpiderlyFormArray, SpiderlyFormControl, SpiderlyFormGroup } from '../spiderly-form-control/spiderly-form-control';
3
- import { getControl, getParentUrl } from '../../services/helper-functions';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common/http";
6
- import * as i2 from "../../services/spiderly-message.service";
7
- import * as i3 from "@angular/router";
8
- import * as i4 from "@jsverse/transloco";
9
- import * as i5 from "./../../services/base-form.service";
10
- export class BaseFormCopy {
11
- constructor(differs, http, messageService, changeDetectorRef, router, route, translocoService, baseFormService) {
12
- this.differs = differs;
13
- this.http = http;
14
- this.messageService = messageService;
15
- this.changeDetectorRef = changeDetectorRef;
16
- this.router = router;
17
- this.route = route;
18
- this.translocoService = translocoService;
19
- this.baseFormService = baseFormService;
20
- this.formGroup = new SpiderlyFormGroup({});
21
- this.successfulSaveToastDescription = this.translocoService.translate('SuccessfulSaveToastDescription');
22
- this.loading = true;
23
- //#region Model
24
- this.initFormGroup = (formGroup, parentFormGroup, modelConstructor, propertyNameInSaveBody, updateOnChangeControls) => {
25
- return this.baseFormService.addFormGroup(formGroup, parentFormGroup, modelConstructor, propertyNameInSaveBody, updateOnChangeControls);
26
- };
27
- this.createFormGroup = (formGroup, modelConstructor, updateOnChangeControls) => {
28
- return this.baseFormService.initFormGroup(formGroup, modelConstructor, updateOnChangeControls);
29
- };
30
- this.control = (formControlName, formGroup) => {
31
- return getControl(formControlName, formGroup);
32
- };
33
- this.onSave = (reroute = true) => {
34
- this.saveBody = this.formGroup.initSaveBody();
35
- this.onBeforeSave(this.saveBody);
36
- this.saveBody = this.saveBody ?? this.formGroup.getRawValue();
37
- let isValid = this.areFormGroupsFromParentFormGroupValid();
38
- let isFormArrayValid = this.areFormArraysValid();
39
- if (isValid && isFormArrayValid) {
40
- this.formGroup.saveObservableMethod(this.saveBody).subscribe(res => {
41
- this.messageService.successMessage(this.successfulSaveToastDescription);
42
- Object.keys(res).forEach((key) => {
43
- const formControl = this.formGroup.get(key);
44
- if (formControl) {
45
- if (formControl instanceof SpiderlyFormArray) {
46
- const formArray = formControl;
47
- if (res[key].length !== 0) {
48
- formArray.clear();
49
- }
50
- else {
51
- // FT: This is okay because when we have M2M association with additional fields, we will not give back the list because we are not checking version on the server.
52
- // console.error(`You returned empty array for control: ${formArray.translationKey}.`);
53
- }
54
- res[key].forEach((model) => {
55
- if (typeof model === 'object' && model !== null) {
56
- Object.assign(formArray.modelConstructor, model);
57
- let helperFormGroup = new SpiderlyFormGroup({});
58
- this.baseFormService.initFormGroup(helperFormGroup, formArray.modelConstructor);
59
- formArray.push(helperFormGroup);
60
- }
61
- else {
62
- console.error('Can not add primitive form control inside form array.');
63
- }
64
- });
65
- }
66
- else {
67
- formControl.patchValue(res[key]);
68
- }
69
- }
70
- else {
71
- // FT: It's okay to do this.
72
- // console.error('You returned something that is not in the save DTO.');
73
- }
74
- });
75
- if (reroute) {
76
- const savedObjectId = res[this.formGroup.mainDTOName]?.id;
77
- this.rerouteToSavedObject(savedObjectId); // You always need to have id, because of id == 0 and version change
78
- }
79
- this.onAfterSave();
80
- });
81
- this.onAfterSaveRequest();
82
- }
83
- else {
84
- this.baseFormService.showInvalidFieldsMessage();
85
- }
86
- };
87
- this.rerouteToSavedObject = (rerouteId) => {
88
- if (rerouteId == null) {
89
- // console.error('You do not have rerouteId in your DTO.')
90
- const currentUrl = this.router.url;
91
- const parentUrl = getParentUrl(currentUrl);
92
- this.router.navigateByUrl(parentUrl);
93
- return;
94
- }
95
- const segments = this.router.url.split('/');
96
- segments[segments.length - 1] = rerouteId.toString();
97
- const newUrl = segments.join('/');
98
- this.router.navigateByUrl(newUrl);
99
- };
100
- this.onBeforeSave = (saveBody) => { };
101
- this.onAfterSave = () => { };
102
- this.onAfterSaveRequest = () => { };
103
- // FT: Sending LastMenuIconIndexClicked class because of reference type
104
- this.getCrudMenuForOrderedData = (formArray, modelConstructor, lastMenuIconIndexClicked, adjustFormArrayManually = false) => {
105
- let crudMenuForOrderedData = [
106
- { label: this.translocoService.translate('Remove'), icon: 'pi pi-minus', command: () => {
107
- this.onBeforeRemove(formArray, modelConstructor, lastMenuIconIndexClicked.index);
108
- if (adjustFormArrayManually === false) {
109
- this.removeFormControlFromTheFormArray(formArray, lastMenuIconIndexClicked.index);
110
- }
111
- } },
112
- { label: this.translocoService.translate('AddAbove'), icon: 'pi pi-arrow-up', command: () => {
113
- this.onBeforeAddAbove(formArray, modelConstructor, lastMenuIconIndexClicked.index);
114
- if (adjustFormArrayManually === false) {
115
- this.baseFormService.addNewFormGroupToFormArray(formArray, modelConstructor, lastMenuIconIndexClicked.index);
116
- }
117
- } },
118
- { label: this.translocoService.translate('AddBelow'), icon: 'pi pi-arrow-down', command: () => {
119
- this.onBeforeAddBelow(formArray, modelConstructor, lastMenuIconIndexClicked.index);
120
- if (adjustFormArrayManually === false) {
121
- this.baseFormService.addNewFormGroupToFormArray(formArray, modelConstructor, lastMenuIconIndexClicked.index + 1);
122
- }
123
- } },
124
- ];
125
- return crudMenuForOrderedData;
126
- };
127
- this.onBeforeRemove = (formArray, modelConstructor, lastMenuIconIndexClicked) => { };
128
- this.onBeforeAddAbove = (formArray, modelConstructor, lastMenuIconIndexClicked) => { };
129
- this.onBeforeAddBelow = (formArray, modelConstructor, lastMenuIconIndexClicked) => { };
130
- }
131
- ngOnInit() {
132
- }
133
- areFormGroupsFromParentFormGroupValid() {
134
- if (this.formGroup.controls == null)
135
- return true;
136
- let invalid = false;
137
- Object.keys(this.formGroup.controls).forEach(key => {
138
- const formGroupOrControl = this.formGroup.controls[key];
139
- if (formGroupOrControl instanceof SpiderlyFormGroup) {
140
- Object.keys(formGroupOrControl.controls).forEach(key => {
141
- const formControl = formGroupOrControl.controls[key]; // this.formArray.markAsDirty(); // FT: For some reason this doesnt work
142
- if (formGroupOrControl.controlNamesFromHtml.includes(formControl.label) && formControl.invalid) {
143
- formControl.markAsDirty();
144
- invalid = true;
145
- }
146
- });
147
- }
148
- else if (formGroupOrControl instanceof SpiderlyFormControl) {
149
- if (formGroupOrControl.invalid) {
150
- formGroupOrControl.markAsDirty();
151
- invalid = true;
152
- }
153
- }
154
- });
155
- if (invalid) {
156
- return false;
157
- }
158
- return true;
159
- }
160
- //#endregion
161
- //#region Model List
162
- getFormArrayControlByIndex(formControlName, formArray, index, filter) {
163
- if (formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)
164
- formArray.controlNamesFromHtml.push(formControlName);
165
- let filteredFormGroups;
166
- if (filter) {
167
- filteredFormGroups = filter(formArray.controls);
168
- }
169
- else {
170
- return formArray.controls[index].controls[formControlName];
171
- }
172
- return filteredFormGroups[index]?.controls[formControlName]; // FT: Don't change this. It's always possible that change detection occurs before something.
173
- }
174
- getFormArrayControls(formControlName, formArray, filter) {
175
- if (formArray.controlNamesFromHtml.findIndex(x => x === formControlName) === -1)
176
- formArray.controlNamesFromHtml.push(formControlName);
177
- let filteredFormGroups;
178
- if (filter) {
179
- filteredFormGroups = filter(formArray.controls);
180
- }
181
- else {
182
- return formArray.controls.map(x => x.controls[formControlName]);
183
- }
184
- return filteredFormGroups.map(x => x.controls[formControlName]);
185
- }
186
- getFormArrayGroups(formArray) {
187
- return this.baseFormService.getFormArrayGroups(formArray);
188
- }
189
- addNewFormGroupToFormArray(formArray, modelConstructor, index) {
190
- return this.baseFormService.addNewFormGroupToFormArray(formArray, modelConstructor, index);
191
- }
192
- initFormArray(parentFormGroup, modelList, modelConstructor, formArraySaveBodyName, formArrayTranslationKey, required = false) {
193
- return this.baseFormService.initFormArray(parentFormGroup, modelList, modelConstructor, formArraySaveBodyName, formArrayTranslationKey, required);
194
- }
195
- removeFormControlFromTheFormArray(formArray, index) {
196
- if (index == null)
197
- throw new Error('Can not pass null index.');
198
- formArray.removeAt(index);
199
- }
200
- removeFormControlsFromTheFormArray(formArray, indexes) {
201
- // Sort indexes in descending order to avoid index shifts when removing controls
202
- const sortedIndexes = indexes.sort((a, b) => b - a);
203
- sortedIndexes.forEach(index => {
204
- if (index >= 0 && index < formArray.length) {
205
- formArray.removeAt(index);
206
- }
207
- });
208
- }
209
- areFormArraysValid() {
210
- if (this.formGroup.controls == null)
211
- return true;
212
- let invalid = false;
213
- Object.keys(this.formGroup.controls).forEach(key => {
214
- const formArray = this.formGroup.controls[key];
215
- if (formArray instanceof SpiderlyFormArray) {
216
- formArray.controls.forEach(formGroup => {
217
- Object.keys(formGroup.controls).forEach(key => {
218
- const formControl = formGroup.controls[key]; // this.formArray.markAsDirty(); // FT: For some reason this doesn't work
219
- if ((formGroup.controlNamesFromHtml.includes(formControl.label) || formArray.controlNamesFromHtml.includes(formControl.label)) &&
220
- formControl.invalid) {
221
- formControl.markAsDirty();
222
- invalid = true;
223
- }
224
- });
225
- });
226
- if (formArray.required == true && formArray.length == 0) {
227
- invalid = true;
228
- this.messageService.warningMessage(this.translocoService.translate('ListCanNotBeEmpty'));
229
- }
230
- }
231
- });
232
- if (invalid) {
233
- return false;
234
- }
235
- return true;
236
- }
237
- onBeforeSaveList() { }
238
- onAfterSaveList() { }
239
- onAfterSaveListRequest() { }
240
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFormCopy, deps: [{ token: i0.KeyValueDiffers }, { token: i1.HttpClient }, { token: i2.SpiderlyMessageService }, { token: i0.ChangeDetectorRef }, { token: i3.Router }, { token: i3.ActivatedRoute }, { token: i4.TranslocoService }, { token: i5.BaseFormService }], target: i0.ɵɵFactoryTarget.Component }); }
241
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BaseFormCopy, selector: "base-form", ngImport: i0, template: '', isInline: true }); }
242
- }
243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFormCopy, decorators: [{
244
- type: Component,
245
- args: [{ selector: 'base-form', template: '' }]
246
- }], ctorParameters: () => [{ type: i0.KeyValueDiffers }, { type: i1.HttpClient }, { type: i2.SpiderlyMessageService }, { type: i0.ChangeDetectorRef }, { type: i3.Router }, { type: i3.ActivatedRoute }, { type: i4.TranslocoService }, { type: i5.BaseFormService }] });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtIGNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlkZXJseS9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS1mb3JtL2Jhc2UtZm9ybSBjb3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFTCxTQUFTLEdBSVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFLM0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7OztBQVUzRSxNQUFNLE9BQU8sWUFBWTtJQVF2QixZQUNZLE9BQXdCLEVBQ3hCLElBQWdCLEVBQ2hCLGNBQXNDLEVBQ3RDLGlCQUFvQyxFQUNwQyxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsZ0JBQWtDLEVBQ2xDLGVBQWdDO1FBUGhDLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQXdCO1FBQ3RDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBZjVDLGNBQVMsR0FBc0IsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6RCxtQ0FBOEIsR0FBVyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDM0csWUFBTyxHQUFZLElBQUksQ0FBQztRQW1CeEIsZUFBZTtRQUVmLGtCQUFhLEdBQUcsQ0FDZCxTQUErQixFQUMvQixlQUFrQyxFQUNsQyxnQkFBcUIsRUFD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LE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsS0FBRyxDQUFDO0lBQ3BCLGVBQWUsS0FBRyxDQUFDO0lBQ25CLHNCQUFzQixLQUFHLENBQUM7K0dBOVJmLFlBQVk7bUdBQVosWUFBWSxpREFIYixFQUFFOzs0RkFHRCxZQUFZO2tCQUx4QixTQUFTOytCQUNFLFdBQVcsWUFDWCxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUZvcm1TZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9iYXNlLWZvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEtleVZhbHVlRGlmZmVyLFxyXG4gIEtleVZhbHVlRGlmZmVycyxcclxuICBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNwaWRlcmx5Rm9ybUFycmF5LCBTcGlkZXJseUZvcm1Db250cm9sLCBTcGlkZXJseUZvcm1Hcm91cCB9IGZyb20gJy4uL3NwaWRlcmx5LWZvcm0tY29udHJvbC9zcGlkZXJseS1mb3JtLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBTcGlkZXJseU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3BpZGVybHktbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBnZXRDb250cm9sLCBnZXRQYXJlbnRVcmwgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9oZWxwZXItZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IEJhc2VFbnRpdHkgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9iYXNlLWVudGl0eSc7XHJcbmltcG9ydCB7IExhc3RNZW51SWNvbkluZGV4Q2xpY2tlZCB9IGZyb20gJy4uLy4uL2VudGl0aWVzL2xhc3QtbWVudS1pY29uLWluZGV4LWNsaWNrZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiYXNlLWZvcm0nLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBzdHlsZXM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUZvcm1Db3B5IGltcGxlbWVudHMgT25Jbml0IHsgXHJcbiAgZm9ybUdyb3VwOiBTcGlkZXJseUZvcm1Hcm91cCA9IG5ldyBTcGlkZXJseUZvcm1Hcm91cCh7fSk7XHJcbiAgc2F2ZUJvZHk6IGFueTtcclxuICBzdWNjZXNzZnVsU2F2ZVRvYXN0RGVzY3JpcHRpb246IHN0cmluZyA9IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ1N1Y2Nlc3NmdWxTYXZlVG9hc3REZXNjcmlwdGlvbicpO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIG1vZGVsRGlmZmVyOiBLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIGRpZmZlcnM6IEtleVZhbHVlRGlmZmVycywgXHJcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCwgXHJcbiAgICBwcm90ZWN0ZWQgbWVzc2FnZVNlcnZpY2U6IFNwaWRlcmx5TWVzc2FnZVNlcnZpY2UsIFxyXG4gICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlciwgXHJcbiAgICBwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJvdGVjdGVkIHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgYmFzZUZvcm1TZXJ2aWNlOiBCYXNlRm9ybVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpe1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIE1vZGVsXHJcblxyXG4gIGluaXRGb3JtR3JvdXAgPSA8VD4oXHJcbiAgICBmb3JtR3JvdXA6IFNwaWRlcmx5Rm9ybUdyb3VwPFQ+LCBcclxuICAgIHBhcmVudEZvcm1Hcm91cDogU3BpZGVybHlGb3JtR3JvdXAsIFxyXG4gICAgbW9kZWxDb25zdHJ1Y3RvcjogYW55LCBcclxuICAgIHByb3BlcnR5TmFtZUluU2F2ZUJvZHk6IHN0cmluZyxcclxuICAgIHVwZGF0ZU9uQ2hhbmdlQ29udHJvbHM/OiAoa2V5b2YgVClbXVxyXG4gICkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFzZUZvcm1TZXJ2aWNlLmFkZEZvcm1Hcm91cChcclxuICAgICAgZm9ybUdyb3VwLCBwYXJlbnRGb3JtR3JvdXAsIG1vZGVsQ29uc3RydWN0b3IsIHByb3BlcnR5TmFtZUluU2F2ZUJvZHksIHVwZGF0ZU9uQ2hhbmdlQ29udHJvbHNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVGb3JtR3JvdXAgPSA8VD4oXHJcbiAgICBmb3JtR3JvdXA6IFNwaWRlcmx5Rm9ybUdyb3VwPFQ+LCBcclxuICAgIG1vZGVsQ29uc3RydWN0b3I6IFQgJiBCYXNlRW50aXR5LCBcclxuICAgIHVwZGF0ZU9uQ2hhbmdlQ29udHJvbHM/OiAoa2V5b2YgVClbXVxyXG4gICkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFzZUZvcm1TZXJ2aWNlLmluaXRGb3JtR3JvdXAoXHJcbiAgICAgIGZvcm1Hcm91cCwgbW9kZWxDb25zdHJ1Y3RvciwgdXBkYXRlT25DaGFuZ2VDb250cm9sc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNvbnRyb2wgPSA8VCBleHRlbmRzIEJhc2VFbnRpdHk+KGZvcm1Db250cm9sTmFtZTogc3RyaW5nICYga2V5b2YgVCwgZm9ybUdyb3VwOiBTcGlkZXJseUZvcm1Hcm91cDxUPikgPT4ge1xyXG4gICAgcmV0dXJuIGdldENvbnRyb2woZm9ybUNvbnRyb2xOYW1lLCBmb3JtR3JvdXApO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlID0gKHJlcm91dGU6IGJvb2xlYW4gPSB0cnVlKSA9PiB7XHJcbiAgICB0aGlzLnNhdmVCb2R5ID0gdGhpcy5mb3JtR3JvdXAuaW5pdFNhdmVCb2R5KCk7XHJcbiAgICB0aGlzLm9uQmVmb3JlU2F2ZSh0aGlzLnNhdmVCb2R5KTtcclxuXHJcbiAgICB0aGlzLnNhdmVCb2R5ID0gdGhpcy5zYXZlQm9keSA/PyB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xyXG5cclxuICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gdGhpcy5hcmVGb3JtR3JvdXBzRnJvbVBhcmVudEZvcm1Hcm91cFZhbGlkKCk7XHJcbiAgICBsZXQgaXNGb3JtQXJyYXlWYWxpZDogYm9vbGVhbiA9IHRoaXMuYXJlRm9ybUFycmF5c1ZhbGlkKCk7XHJcblxyXG4gICAgaWYoaXNWYWxpZCAmJiBpc0Zvcm1BcnJheVZhbGlkKXtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuc2F2ZU9ic2VydmFibGVNZXRob2QodGhpcy5zYXZlQm9keSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzTWVzc2FnZSh0aGlzLnN1Y2Nlc3NmdWxTYXZlVG9hc3REZXNjcmlwdGlvbik7XHJcblxyXG4gICAgICAgIE9iamVjdC5rZXlzKHJlcykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmdldChrZXkpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiAoZm9ybUNvbnRyb2wpIHtcclxuICAgICAgICAgICAgaWYgKGZvcm1Db250cm9sIGluc3RhbmNlb2YgU3BpZGVybHlGb3JtQXJyYXkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtQ29udHJvbCBhcyBTcGlkZXJseUZvcm1BcnJheTtcclxuICAgICAgICAgICAgICBpZiAocmVzW2tleV0ubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtQXJyYXkuY2xlYXIoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIC8vIEZUOiBUaGlzIGlzIG9rYXkgYmVjYXVzZSB3aGVuIHdlIGhhdmUgTTJNIGFzc29jaWF0aW9uIHdpdGggYWRkaXRpb25hbCBmaWVsZHMsIHdlIHdpbGwgbm90IGdpdmUgYmFjayB0aGUgbGlzdCBiZWNhdXNlIHdlIGFyZSBub3QgY2hlY2tpbmcgdmVyc2lvbiBvbiB0aGUgc2VydmVyLlxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcihgWW91IHJldHVybmVkIGVtcHR5IGFycmF5IGZvciBjb250cm9sOiAke2Zvcm1BcnJheS50cmFuc2xhdGlvbktleX0uYCk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICByZXNba2V5XS5mb3JFYWNoKChtb2RlbDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1vZGVsID09PSAnb2JqZWN0JyAmJiBtb2RlbCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGZvcm1BcnJheS5tb2RlbENvbnN0cnVjdG9yLCBtb2RlbCk7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBoZWxwZXJGb3JtR3JvdXAgPSBuZXcgU3BpZGVybHlGb3JtR3JvdXAoe30pO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmJhc2VGb3JtU2VydmljZS5pbml0Rm9ybUdyb3VwKGhlbHBlckZvcm1Hcm91cCwgZm9ybUFycmF5Lm1vZGVsQ29uc3RydWN0b3IpXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1BcnJheS5wdXNoKGhlbHBlckZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDYW4gbm90IGFkZCBwcmltaXRpdmUgZm9ybSBjb250cm9sIGluc2lkZSBmb3JtIGFycmF5LicpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbC5wYXRjaFZhbHVlKHJlc1trZXldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIC8vIEZUOiBJdCdzIG9rYXkgdG8gZG8gdGhpcy5cclxuICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcignWW91IHJldHVybmVkIHNvbWV0aGluZyB0aGF0IGlzIG5vdCBpbiB0aGUgc2F2ZSBEVE8uJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChyZXJvdXRlKSB7XHJcbiAgICAgICAgICBjb25zdCBzYXZlZE9iamVjdElkID0gKHJlcyBhcyBhbnkpW3RoaXMuZm9ybUdyb3VwLm1haW5EVE9OYW1lXT8uaWQ7XHJcbiAgICAgICAgICB0aGlzLnJlcm91dGVUb1NhdmVkT2JqZWN0KHNhdmVkT2JqZWN0SWQpOyAvLyBZb3UgYWx3YXlzIG5lZWQgdG8gaGF2ZSBpZCwgYmVjYXVzZSBvZiBpZCA9PSAwIGFuZCB2ZXJzaW9uIGNoYW5nZVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLm9uQWZ0ZXJTYXZlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5vbkFmdGVyU2F2ZVJlcXVlc3QoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmJhc2VGb3JtU2VydmljZS5zaG93SW52YWxpZEZpZWxkc01lc3NhZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlcm91dGVUb1NhdmVkT2JqZWN0ID0gKHJlcm91dGVJZDogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgICBpZihyZXJvdXRlSWQgPT0gbnVsbCl7XHJcbiAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ1lvdSBkbyBub3QgaGF2ZSByZXJvdXRlSWQgaW4geW91ciBEVE8uJylcclxuICAgICAgY29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgICAgY29uc3QgcGFyZW50VXJsOiBzdHJpbmcgPSBnZXRQYXJlbnRVcmwoY3VycmVudFVybCk7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocGFyZW50VXJsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgICBcclxuICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XHJcbiAgICBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXSA9IHJlcm91dGVJZC50b1N0cmluZygpO1xyXG5cclxuICAgIGNvbnN0IG5ld1VybCA9IHNlZ21lbnRzLmpvaW4oJy8nKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobmV3VXJsKTtcclxuICB9XHJcblxyXG4gIG9uQmVmb3JlU2F2ZSA9IChzYXZlQm9keT86IGFueSkgPT4ge31cclxuICBvbkFmdGVyU2F2ZSA9ICgpID0+IHt9XHJcbiAgb25BZnRlclNhdmVSZXF1ZXN0ID0gKCkgPT4ge31cclxuXHJcbiAgYXJlRm9ybUdyb3Vwc0Zyb21QYXJlbnRGb3JtR3JvdXBWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIGlmKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzID09IG51bGwpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgIGxldCBpbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgY29uc3QgZm9ybUdyb3VwT3JDb250cm9sID0gdGhpcy5mb3JtR3JvdXAuY29udHJvbHNba2V5XTtcclxuXHJcbiAgICAgIGlmIChmb3JtR3JvdXBPckNvbnRyb2wgaW5zdGFuY2VvZiBTcGlkZXJseUZvcm1Hcm91cCl7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwT3JDb250cm9sLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IGZvcm1Hcm91cE9yQ29udHJvbC5jb250cm9sc1trZXldIGFzIFNwaWRlcmx5Rm9ybUNvbnRyb2w7IC8vIHRoaXMuZm9ybUFycmF5Lm1hcmtBc0RpcnR5KCk7IC8vIEZUOiBGb3Igc29tZSByZWFzb24gdGhpcyBkb2VzbnQgd29ya1xyXG5cclxuICAgICAgICAgIGlmIChmb3JtR3JvdXBPckNvbnRyb2wuY29udHJvbE5hbWVzRnJvbUh0bWwuaW5jbHVkZXMoZm9ybUNvbnRyb2wubGFiZWwpICYmIGZvcm1Db250cm9sLmludmFsaWQpIHtcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAgaW52YWxpZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZm9ybUdyb3VwT3JDb250cm9sIGluc3RhbmNlb2YgU3BpZGVybHlGb3JtQ29udHJvbCl7XHJcbiAgICAgICAgaWYgKGZvcm1Hcm91cE9yQ29udHJvbC5pbnZhbGlkKSB7XHJcbiAgICAgICAgICBmb3JtR3JvdXBPckNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgIGludmFsaWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChpbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gTW9kZWwgTGlzdFxyXG4gIFxyXG4gIGdldEZvcm1BcnJheUNvbnRyb2xCeUluZGV4PFQ+KGZvcm1Db250cm9sTmFtZToga2V5b2YgVCAmIHN0cmluZywgZm9ybUFycmF5OiBTcGlkZXJseUZvcm1BcnJheTxUPiwgaW5kZXg6IG51bWJlciwgZmlsdGVyPzogKGZvcm1Hcm91cHM6IFNwaWRlcmx5Rm9ybUdyb3VwPFQ+W10pID0+IFNwaWRlcmx5Rm9ybUdyb3VwPFQ+W10pOiBTcGlkZXJseUZvcm1Db250cm9sIHtcclxuICAgIGlmKGZvcm1BcnJheS5jb250cm9sTmFtZXNGcm9tSHRtbC5maW5kSW5kZXgoeCA9PiB4ID09PSBmb3JtQ29udHJvbE5hbWUpID09PSAtMSlcclxuICAgICAgZm9ybUFycmF5LmNvbnRyb2xOYW1lc0Zyb21IdG1sLnB1c2goZm9ybUNvbnRyb2xOYW1lKTtcclxuXHJcbiAgICBsZXQgZmlsdGVyZWRGb3JtR3JvdXBzOiBTcGlkZXJseUZvcm1Hcm91cDxUPltdO1xyXG5cclxuICAgIGlmIChmaWx0ZXIpIHtcclxuICAgICAgZmlsdGVyZWRGb3JtR3JvdXBzID0gZmlsdGVyKGZvcm1BcnJheS5jb250cm9scyBhcyBTcGlkZXJseUZvcm1Hcm91cDxUPltdKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHJldHVybiAoZm9ybUFycmF5LmNvbnRyb2xzW2luZGV4XSBhcyBTcGlkZXJseUZvcm1Hcm91cDxUPikuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXSBhcyBTcGlkZXJseUZvcm1Db250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaWx0ZXJlZEZvcm1Hcm91cHNbaW5kZXhdPy5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdIGFzIFNwaWRlcmx5Rm9ybUNvbnRyb2w7IC8vIEZUOiBEb24ndCBjaGFuZ2UgdGhpcy4gSXQncyBhbHdheXMgcG9zc2libGUgdGhhdCBjaGFuZ2UgZGV0ZWN0aW9uIG9jY3VycyBiZWZvcmUgc29tZXRoaW5nLlxyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybUFycmF5Q29udHJvbHM8VD4oZm9ybUNvbnRyb2xOYW1lOiBrZXlvZiBUICYgc3RyaW5nLCBmb3JtQXJyYXk6IFNwaWRlcmx5Rm9ybUFycmF5PFQ+LCBmaWx0ZXI/OiAoZm9ybUdyb3VwczogU3BpZGVybHlGb3JtR3JvdXA8VD5bXSkgPT4gU3BpZGVybHlGb3JtR3JvdXA8VD5bXSk6IFNwaWRlcmx5Rm9ybUNvbnRyb2xbXSB7XHJcbiAgICBpZihmb3JtQXJyYXkuY29udHJvbE5hbWVzRnJvbUh0bWwuZmluZEluZGV4KHggPT4geCA9PT0gZm9ybUNvbnRyb2xOYW1lKSA9PT0gLTEpXHJcbiAgICAgIGZvcm1BcnJheS5jb250cm9sTmFtZXNGcm9tSHRtbC5wdXNoKGZvcm1Db250cm9sTmFtZSk7XHJcblxyXG4gICAgbGV0IGZpbHRlcmVkRm9ybUdyb3VwczogU3BpZGVybHlGb3JtR3JvdXA8VD5bXTtcclxuXHJcbiAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgIGZpbHRlcmVkRm9ybUdyb3VwcyA9IGZpbHRlcihmb3JtQXJyYXkuY29udHJvbHMgYXMgU3BpZGVybHlGb3JtR3JvdXA8VD5bXSk7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICByZXR1cm4gKGZvcm1BcnJheS5jb250cm9scyBhcyBTcGlkZXJseUZvcm1Hcm91cDxUPltdKS5tYXAoeCA9PiB4LmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0gYXMgU3BpZGVybHlGb3JtQ29udHJvbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZpbHRlcmVkRm9ybUdyb3Vwcy5tYXAoeCA9PiB4LmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0gYXMgU3BpZGVybHlGb3JtQ29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtQXJyYXlHcm91cHM8VD4oZm9ybUFycmF5OiBTcGlkZXJseUZvcm1BcnJheTxUPik6IFNwaWRlcmx5Rm9ybUdyb3VwPFQ+W117XHJcbiAgICByZXR1cm4gdGhpcy5iYXNlRm9ybVNlcnZpY2UuZ2V0Rm9ybUFycmF5R3JvdXBzKGZvcm1BcnJheSk7XHJcbiAgfVxyXG5cclxuICBhZGROZXdGb3JtR3JvdXBUb0Zvcm1BcnJheTxUPihcclxuICAgIGZvcm1BcnJheTogU3BpZGVybHlGb3JtQXJyYXk8VD4sIFxyXG4gICAgbW9kZWxDb25zdHJ1Y3RvcjogVCAmIEJhc2VFbnRpdHksXHJcbiAgICBpbmRleDogbnVtYmVyLFxyXG4gICkgOiBTcGlkZXJseUZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy5iYXNlRm9ybVNlcnZpY2UuYWRkTmV3Rm9ybUdyb3VwVG9Gb3JtQXJyYXkoZm9ybUFycmF5LCBtb2RlbENvbnN0cnVjdG9yLCBpbmRleClcclxuICB9XHJcblxyXG4gIGluaXRGb3JtQXJyYXk8VD4oXHJcbiAgICBwYXJlbnRGb3JtR3JvdXA6IFNwaWRlcmx5Rm9ybUdyb3VwLCBcclxuICAgIG1vZGVsTGlzdDogKFQgJiBCYXNlRW50aXR5KVtdLCBcclxuICAgIG1vZGVsQ29uc3RydWN0b3I6IFQgJiBCYXNlRW50aXR5LCBcclxuICAgIGZvcm1BcnJheVNhdmVCb2R5TmFtZTogc3RyaW5nLCBcclxuICAgIGZvcm1BcnJheVRyYW5zbGF0aW9uS2V5OiBzdHJpbmcsIFxyXG4gICAgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZSlcclxuICB7XHJcbiAgICByZXR1cm4gdGhpcy5iYXNlRm9ybVNlcnZpY2UuaW5pdEZvcm1BcnJheTxUPihcclxuICAgICAgcGFyZW50Rm9ybUdyb3VwLCBtb2RlbExpc3QsIG1vZGVsQ29uc3RydWN0b3IsIGZvcm1BcnJheVNhdmVCb2R5TmFtZSwgZm9ybUFycmF5VHJhbnNsYXRpb25LZXksIHJlcXVpcmVkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRm9ybUNvbnRyb2xGcm9tVGhlRm9ybUFycmF5KGZvcm1BcnJheTogU3BpZGVybHlGb3JtQXJyYXksIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmKGluZGV4ID09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG5vdCBwYXNzIG51bGwgaW5kZXguJyk7XHJcblxyXG4gICAgZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZvcm1Db250cm9sc0Zyb21UaGVGb3JtQXJyYXkoZm9ybUFycmF5OiBTcGlkZXJseUZvcm1BcnJheSwgaW5kZXhlczogbnVtYmVyW10pIHtcclxuICAgIC8vIFNvcnQgaW5kZXhlcyBpbiBkZXNjZW5kaW5nIG9yZGVyIHRvIGF2b2lkIGluZGV4IHNoaWZ0cyB3aGVuIHJlbW92aW5nIGNvbnRyb2xzXHJcbiAgICBjb25zdCBzb3J0ZWRJbmRleGVzID0gaW5kZXhlcy5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XHJcblxyXG4gICAgc29ydGVkSW5kZXhlcy5mb3JFYWNoKGluZGV4ID0+IHtcclxuICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCBmb3JtQXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgICAgZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhcmVGb3JtQXJyYXlzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZih0aGlzLmZvcm1Hcm91cC5jb250cm9scyA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICBsZXQgaW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2tleV0gYXMgdW5rbm93biBhcyBTcGlkZXJseUZvcm1BcnJheTtcclxuICAgICAgXHJcbiAgICAgIGlmIChmb3JtQXJyYXkgaW5zdGFuY2VvZiBTcGlkZXJseUZvcm1BcnJheSl7XHJcbiAgICAgICAgKGZvcm1BcnJheS5jb250cm9scyBhcyBTcGlkZXJseUZvcm1Hcm91cFtdKS5mb3JFYWNoKGZvcm1Hcm91cCA9PiB7XHJcbiAgICAgICAgICBPYmplY3Qua2V5cyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNba2V5XSBhcyBTcGlkZXJseUZvcm1Db250cm9sOyAvLyB0aGlzLmZvcm1BcnJheS5tYXJrQXNEaXJ0eSgpOyAvLyBGVDogRm9yIHNvbWUgcmVhc29uIHRoaXMgZG9lc24ndCB3b3JrXHJcblxyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgKGZvcm1Hcm91cC5jb250cm9sTmFtZXNGcm9tSHRtbC5pbmNsdWRlcyhmb3JtQ29udHJvbC5sYWJlbCkgfHwgZm9ybUFycmF5LmNvbnRyb2xOYW1lc0Zyb21IdG1sLmluY2x1ZGVzKGZvcm1Db250cm9sLmxhYmVsKSkgJiYgXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2wuaW52YWxpZFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICAgIGludmFsaWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKGZvcm1BcnJheS5yZXF1aXJlZCA9PSB0cnVlICYmIGZvcm1BcnJheS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgaW52YWxpZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLndhcm5pbmdNZXNzYWdlKHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ0xpc3RDYW5Ob3RCZUVtcHR5JykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGludmFsaWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25CZWZvcmVTYXZlTGlzdCgpe31cclxuICBvbkFmdGVyU2F2ZUxpc3QoKXt9XHJcbiAgb25BZnRlclNhdmVMaXN0UmVxdWVzdCgpe31cclxuXHJcbiAgLy8gRlQ6IFNlbmRpbmcgTGFzdE1lbnVJY29uSW5kZXhDbGlja2VkIGNsYXNzIGJlY2F1c2Ugb2YgcmVmZXJlbmNlIHR5cGVcclxuICBnZXRDcnVkTWVudUZvck9yZGVyZWREYXRhID0gKFxyXG4gICAgZm9ybUFycmF5OiBTcGlkZXJseUZvcm1BcnJheSwgXHJcbiAgICBtb2RlbENvbnN0cnVjdG9yOiBCYXNlRW50aXR5LCBcclxuICAgIGxhc3RNZW51SWNvbkluZGV4Q2xpY2tlZDogTGFzdE1lbnVJY29uSW5kZXhDbGlja2VkLCBcclxuICAgIGFkanVzdEZvcm1BcnJheU1hbnVhbGx5OiBib29sZWFuID0gZmFsc2VcclxuICApOiBNZW51SXRlbVtdID0+IHtcclxuICAgIGxldCBjcnVkTWVudUZvck9yZGVyZWREYXRhOiBNZW51SXRlbVtdID0gW1xyXG4gICAgICAgIHtsYWJlbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnUmVtb3ZlJyksIGljb246ICdwaSBwaS1taW51cycsIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25CZWZvcmVSZW1vdmUoZm9ybUFycmF5LCBtb2RlbENvbnN0cnVjdG9yLCBsYXN0TWVudUljb25JbmRleENsaWNrZWQuaW5kZXgpO1xyXG4gICAgICAgICAgaWYgKGFkanVzdEZvcm1BcnJheU1hbnVhbGx5ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZvcm1Db250cm9sRnJvbVRoZUZvcm1BcnJheShmb3JtQXJyYXksIGxhc3RNZW51SWNvbkluZGV4Q2xpY2tlZC5pbmRleCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfX0sXHJcbiAgICAgICAge2xhYmVsOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdBZGRBYm92ZScpLCBpY29uOiAncGkgcGktYXJyb3ctdXAnLCBjb21tYW5kOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uQmVmb3JlQWRkQWJvdmUoZm9ybUFycmF5LCBtb2RlbENvbnN0cnVjdG9yLCBsYXN0TWVudUljb25JbmRleENsaWNrZWQuaW5kZXgpO1xyXG4gICAgICAgICAgaWYgKGFkanVzdEZvcm1BcnJheU1hbnVhbGx5ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLmJhc2VGb3JtU2VydmljZS5hZGROZXdGb3JtR3JvdXBUb0Zvcm1BcnJheShcclxuICAgICAgICAgICAgICBmb3JtQXJyYXksIG1vZGVsQ29uc3RydWN0b3IsIGxhc3RNZW51SWNvbkluZGV4Q2xpY2tlZC5pbmRleFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH19LFxyXG4gICAgICAgIHtsYWJlbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnQWRkQmVsb3cnKSwgaWNvbjogJ3BpIHBpLWFycm93LWRvd24nLCBjb21tYW5kOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uQmVmb3JlQWRkQmVsb3coZm9ybUFycmF5LCBtb2RlbENvbnN0cnVjdG9yLCBsYXN0TWVudUljb25JbmRleENsaWNrZWQuaW5kZXgpO1xyXG4gICAgICAgICAgaWYgKGFkanVzdEZvcm1BcnJheU1hbnVhbGx5ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLmJhc2VGb3JtU2VydmljZS5hZGROZXdGb3JtR3JvdXBUb0Zvcm1BcnJheShcclxuICAgICAgICAgICAgICBmb3JtQXJyYXksIG1vZGVsQ29uc3RydWN0b3IsIGxhc3RNZW51SWNvbkluZGV4Q2xpY2tlZC5pbmRleCArIDFcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9fSxcclxuICAgIF07XHJcblxyXG4gICAgcmV0dXJuIGNydWRNZW51Rm9yT3JkZXJlZERhdGE7XHJcbiAgfVxyXG5cclxuICBvbkJlZm9yZVJlbW92ZSA9IChmb3JtQXJyYXk6IFNwaWRlcmx5Rm9ybUFycmF5LCBtb2RlbENvbnN0cnVjdG9yOiBhbnksIGxhc3RNZW51SWNvbkluZGV4Q2xpY2tlZDogbnVtYmVyKSA9PiB7fVxyXG5cclxuICBvbkJlZm9yZUFkZEFib3ZlID0gKGZvcm1BcnJheTogU3BpZGVybHlGb3JtQXJyYXksIG1vZGVsQ29uc3RydWN0b3I6IGFueSwgbGFzdE1lbnVJY29uSW5kZXhDbGlja2VkOiBudW1iZXIpID0+IHt9XHJcblxyXG4gIG9uQmVmb3JlQWRkQmVsb3cgPSAoZm9ybUFycmF5OiBTcGlkZXJseUZvcm1BcnJheSwgbW9kZWxDb25zdHJ1Y3RvcjogYW55LCBsYXN0TWVudUljb25JbmRleENsaWNrZWQ6IG51bWJlcikgPT4ge31cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG59XHJcbiJdfQ==
@@ -1,25 +0,0 @@
1
- import { Component, Input } from "@angular/core";
2
- import { SkeletonModule } from 'primeng/skeleton';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "primeng/skeleton";
5
- export class CardSkeletonComponent {
6
- constructor() {
7
- this.height = 400;
8
- this.titleHeight = 23;
9
- this.padding = 21;
10
- this.titleMarginBottom = 14;
11
- this.titleMarginTop = 4;
12
- }
13
- ngOnInit() {
14
- this.dataHeight = this.height - (this.titleHeight + this.padding * 2 + this.titleMarginBottom + this.titleMarginTop);
15
- }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CardSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CardSkeletonComponent, isStandalone: true, selector: "card-skeleton", inputs: { height: "height" }, ngImport: i0, template: "<div class=\"border-round border-1 surface-border p-4 surface-card\" [style]=\"'height: ' + height + 'px;'\">\r\n <div [style]=\"'margin-bottom:' + titleMarginBottom + 'px; margin-top:' + titleMarginTop + 'px;'\">\r\n <p-skeleton width=\"160px\" [height]=\"titleHeight + 'px'\"></p-skeleton>\r\n </div>\r\n <div [style]=\"'height: ' + dataHeight + 'px;'\">\r\n <p-skeleton width=\"100%\" height=\"100%\"/>\r\n </div>\r\n</div>", dependencies: [{ kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }] }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CardSkeletonComponent, decorators: [{
20
- type: Component,
21
- args: [{ selector: 'card-skeleton', standalone: true, imports: [SkeletonModule], template: "<div class=\"border-round border-1 surface-border p-4 surface-card\" [style]=\"'height: ' + height + 'px;'\">\r\n <div [style]=\"'margin-bottom:' + titleMarginBottom + 'px; margin-top:' + titleMarginTop + 'px;'\">\r\n <p-skeleton width=\"160px\" [height]=\"titleHeight + 'px'\"></p-skeleton>\r\n </div>\r\n <div [style]=\"'height: ' + dataHeight + 'px;'\">\r\n <p-skeleton width=\"100%\" height=\"100%\"/>\r\n </div>\r\n</div>" }]
22
- }], propDecorators: { height: [{
23
- type: Input
24
- }] } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGlkZXJseS9zcmMvbGliL2NvbXBvbmVudHMvY2FyZC1za2VsZXRvbi9jYXJkLXNrZWxldG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwaWRlcmx5L3NyYy9saWIvY29tcG9uZW50cy9jYXJkLXNrZWxldG9uL2NhcmQtc2tlbGV0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFTbEQsTUFBTSxPQUFPLHFCQUFxQjtJQVBsQztRQVFXLFdBQU0sR0FBVyxHQUFHLENBQUM7UUFDOUIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFekIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixzQkFBaUIsR0FBVyxFQUFFLENBQUM7UUFDL0IsbUJBQWMsR0FBVyxDQUFDLENBQUM7S0FLNUI7SUFIQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3RILENBQUM7K0dBVlUscUJBQXFCO21HQUFyQixxQkFBcUIsdUdDVmxDLHNjQU9NLDJDRENNLGNBQWM7OzRGQUViLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSxlQUFlLGNBR2IsSUFBSSxXQUNQLENBQUMsY0FBYyxDQUFDOzhCQUdoQixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3NrZWxldG9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FyZC1za2VsZXRvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcmQtc2tlbGV0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlczogW10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbU2tlbGV0b25Nb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXJkU2tlbGV0b25Db21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGhlaWdodDogbnVtYmVyID0gNDAwO1xyXG4gIHRpdGxlSGVpZ2h0OiBudW1iZXIgPSAyMztcclxuICBkYXRhSGVpZ2h0OiBudW1iZXI7XHJcbiAgcGFkZGluZzogbnVtYmVyID0gMjE7XHJcbiAgdGl0bGVNYXJnaW5Cb3R0b206IG51bWJlciA9IDE0O1xyXG4gIHRpdGxlTWFyZ2luVG9wOiBudW1iZXIgPSA0O1xyXG5cclxuICBuZ09uSW5pdCgpe1xyXG4gICAgdGhpcy5kYXRhSGVpZ2h0ID0gdGhpcy5oZWlnaHQgLSAodGhpcy50aXRsZUhlaWdodCArIHRoaXMucGFkZGluZyAqIDIgKyB0aGlzLnRpdGxlTWFyZ2luQm90dG9tICsgdGhpcy50aXRsZU1hcmdpblRvcClcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiYm9yZGVyLXJvdW5kIGJvcmRlci0xIHN1cmZhY2UtYm9yZGVyIHAtNCBzdXJmYWNlLWNhcmRcIiBbc3R5bGVdPVwiJ2hlaWdodDogJyArIGhlaWdodCArICdweDsnXCI+XHJcbiAgICA8ZGl2IFtzdHlsZV09XCInbWFyZ2luLWJvdHRvbTonICsgdGl0bGVNYXJnaW5Cb3R0b20gKyAncHg7IG1hcmdpbi10b3A6JyArIHRpdGxlTWFyZ2luVG9wICsgJ3B4OydcIj5cclxuICAgICAgICA8cC1za2VsZXRvbiB3aWR0aD1cIjE2MHB4XCIgW2hlaWdodF09XCJ0aXRsZUhlaWdodCArICdweCdcIj48L3Atc2tlbGV0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW3N0eWxlXT1cIidoZWlnaHQ6ICcgKyBkYXRhSGVpZ2h0ICsgJ3B4OydcIj5cclxuICAgICAgICA8cC1za2VsZXRvbiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIvPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -1,16 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../services/config-base.service";
4
- export class FooterComponent {
5
- constructor(config) {
6
- this.config = config;
7
- this.companyName = this.config.companyName;
8
- }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FooterComponent, deps: [{ token: i1.ConfigBaseService }], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FooterComponent, isStandalone: true, selector: "footer", ngImport: i0, template: "<div class=\"layout-footer\">\r\n <span class=\"font-medium ml-2\">{{companyName}}</span>\r\n</div>\r\n" }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FooterComponent, decorators: [{
13
- type: Component,
14
- args: [{ selector: 'footer', standalone: true, template: "<div class=\"layout-footer\">\r\n <span class=\"font-medium ml-2\">{{companyName}}</span>\r\n</div>\r\n" }]
15
- }], ctorParameters: () => [{ type: i1.ConfigBaseService }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwaWRlcmx5L3NyYy9saWIvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwaWRlcmx5L3NyYy9saWIvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVExQyxNQUFNLE9BQU8sZUFBZTtJQUd4QixZQUNZLE1BQXlCO1FBQXpCLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBSHJDLGdCQUFXLEdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFNOUMsQ0FBQzsrR0FQUSxlQUFlO21HQUFmLGVBQWUsa0VDUjVCLDRHQUdBOzs0RkRLYSxlQUFlO2tCQUwzQixTQUFTOytCQUNJLFFBQVEsY0FFTixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpZ0Jhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnLWJhc2Uuc2VydmljZSdcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdmb290ZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvb3Rlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb290ZXJDb21wb25lbnQge1xyXG4gICAgY29tcGFueU5hbWU6IHN0cmluZyA9IHRoaXMuY29uZmlnLmNvbXBhbnlOYW1lO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdCYXNlU2VydmljZVxyXG4gICAgKSB7IFxyXG5cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibGF5b3V0LWZvb3RlclwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJmb250LW1lZGl1bSBtbC0yXCI+e3tjb21wYW55TmFtZX19PC9zcGFuPlxyXG48L2Rpdj5cclxuIl19