nuxeo-development-framework 2.0.9 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +8683 -454
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/activities-log/activities-log/activities-log.component.js +84 -0
  4. package/esm2015/lib/components/activities-log/activities-log/activities-log.service.js +35 -0
  5. package/esm2015/lib/components/activities-log/activities-log.module.js +30 -0
  6. package/esm2015/lib/components/attachment-item/attachment-item/attachment-item.component.js +54 -0
  7. package/esm2015/lib/components/attachment-item/attachment-item.module.js +44 -0
  8. package/esm2015/lib/components/attachment-modal/attachment-modal.module.js +40 -0
  9. package/esm2015/lib/components/attachment-modal/attachments/attachments.component.js +157 -0
  10. package/esm2015/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.js +30 -0
  11. package/esm2015/lib/components/confirmation-dialog/confirmation-dialog.module.js +30 -0
  12. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.js +44 -0
  13. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/icon.service.js +140 -0
  14. package/esm2015/lib/components/display-suitable-icon/display-suitable-icon.module.js +24 -0
  15. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.js +177 -0
  16. package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.js +43 -0
  17. package/esm2015/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.js +39 -0
  18. package/esm2015/lib/components/dynamic-tabs/dynamic-tabs.module.js +34 -0
  19. package/esm2015/lib/components/file-manger/components/add-to-collection/add-to-collection.component.js +132 -0
  20. package/esm2015/lib/components/file-manger/components/clipboard/clipboard.component.js +264 -0
  21. package/esm2015/lib/components/file-manger/components/copy/copy.component.js +119 -0
  22. package/esm2015/lib/components/file-manger/components/create-directory/create-directory.component.js +91 -0
  23. package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +455 -0
  24. package/esm2015/lib/components/file-manger/components/creation-type/creation-type.component.js +26 -0
  25. package/esm2015/lib/components/file-manger/components/delete/delete.component.js +77 -0
  26. package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +114 -0
  27. package/esm2015/lib/components/file-manger/components/loan-request/loan-request.component.js +80 -0
  28. package/esm2015/lib/components/file-manger/components/move/move.component.js +108 -0
  29. package/esm2015/lib/components/file-manger/components/publish-dialog/publish-dialog.component.js +111 -0
  30. package/esm2015/lib/components/file-manger/components/rename/rename.component.js +86 -0
  31. package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +314 -0
  32. package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +294 -0
  33. package/esm2015/lib/components/file-manger/components/sidepanel/sidepanel.component.js +257 -0
  34. package/esm2015/lib/components/file-manger/components/template-modal/template-modal.component.js +64 -0
  35. package/esm2015/lib/components/file-manger/components/transfer-doc/transfer-doc.component.js +71 -0
  36. package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +358 -0
  37. package/esm2015/lib/components/file-manger/file-manager.abstract.js +1031 -0
  38. package/esm2015/lib/components/file-manger/file-manger.module.js +295 -0
  39. package/esm2015/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.js +51 -0
  40. package/esm2015/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.js +30 -0
  41. package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +177 -0
  42. package/esm2015/lib/components/permissions/permission.service.js +118 -0
  43. package/esm2015/lib/components/permissions/permissions/permissions.component.js +232 -0
  44. package/esm2015/lib/components/permissions/permissions-template/permissions-template.component.js +117 -0
  45. package/esm2015/lib/components/permissions/permissions.module.js +71 -0
  46. package/esm2015/lib/components/select-users-by-department/select-users-by-department.module.js +47 -0
  47. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/department-management.service.js +27 -0
  48. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +116 -0
  49. package/esm2015/lib/components/user/user/user.component.js +29 -0
  50. package/esm2015/lib/components/user/user.module.js +30 -0
  51. package/esm2015/lib/directive/directive.module.js +9 -4
  52. package/esm2015/lib/directive/drag-and-drop/drag-and-drop.directive.js +46 -0
  53. package/esm2015/lib/shared/libraryShared.module.js +1 -4
  54. package/esm2015/lib/shared-services/dialog-mangment.service.js +61 -0
  55. package/esm2015/lib/shared-services/dynamic-form.service.js +241 -0
  56. package/esm2015/lib/shared-services/file-manager.adapter.js +74 -0
  57. package/esm2015/lib/shared-services/file-manager.service.js +793 -0
  58. package/esm2015/lib/shared-services/global-pdftron.service.js +46 -0
  59. package/esm2015/lib/shared-services/mainfolder.service.js +160 -0
  60. package/esm2015/lib/shared-services/publishing-document.service.js +202 -0
  61. package/esm2015/lib/shared-services/recently-viewed.service.js +57 -0
  62. package/esm2015/lib/shared-services/shared-docs.service.js +135 -0
  63. package/esm2015/lib/shared-services/shared-services.module.js +20 -0
  64. package/esm2015/lib/shared-services/upload-file.service.js +29 -0
  65. package/esm2015/lib/shared-services/upload-managment.service.js +151 -0
  66. package/esm2015/lib/shared-services/user.service.js +54 -0
  67. package/esm2015/public-api.js +65 -1
  68. package/fesm2015/nuxeo-development-framework.js +7969 -154
  69. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  70. package/lib/components/activities-log/activities-log/activities-log.component.d.ts +23 -0
  71. package/lib/components/activities-log/activities-log/activities-log.service.d.ts +9 -0
  72. package/lib/components/activities-log/activities-log.module.d.ts +10 -0
  73. package/lib/components/attachment-item/attachment-item/attachment-item.component.d.ts +21 -0
  74. package/lib/components/attachment-item/attachment-item.module.d.ts +13 -0
  75. package/lib/components/attachment-modal/attachment-modal.module.d.ts +12 -0
  76. package/lib/components/attachment-modal/attachments/attachments.component.d.ts +50 -0
  77. package/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.d.ts +12 -0
  78. package/lib/components/confirmation-dialog/confirmation-dialog.module.d.ts +10 -0
  79. package/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.d.ts +17 -0
  80. package/lib/components/display-suitable-icon/display-suitable-icon/icon.service.d.ts +8 -0
  81. package/lib/components/display-suitable-icon/display-suitable-icon.module.d.ts +8 -0
  82. package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.d.ts +137 -0
  83. package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.d.ts +12 -0
  84. package/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.d.ts +13 -0
  85. package/lib/components/dynamic-tabs/dynamic-tabs.module.d.ts +11 -0
  86. package/lib/components/file-manger/components/add-to-collection/add-to-collection.component.d.ts +31 -0
  87. package/lib/components/file-manger/components/clipboard/clipboard.component.d.ts +41 -0
  88. package/lib/components/file-manger/components/copy/copy.component.d.ts +32 -0
  89. package/lib/components/file-manger/components/create-directory/create-directory.component.d.ts +24 -0
  90. package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts +108 -0
  91. package/lib/components/file-manger/components/creation-type/creation-type.component.d.ts +11 -0
  92. package/lib/components/file-manger/components/delete/delete.component.d.ts +30 -0
  93. package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts +56 -0
  94. package/lib/components/file-manger/components/loan-request/loan-request.component.d.ts +23 -0
  95. package/lib/components/file-manger/components/move/move.component.d.ts +32 -0
  96. package/lib/components/file-manger/components/publish-dialog/publish-dialog.component.d.ts +32 -0
  97. package/lib/components/file-manger/components/rename/rename.component.d.ts +25 -0
  98. package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts +95 -0
  99. package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts +58 -0
  100. package/lib/components/file-manger/components/sidepanel/sidepanel.component.d.ts +62 -0
  101. package/lib/components/file-manger/components/template-modal/template-modal.component.d.ts +34 -0
  102. package/lib/components/file-manger/components/transfer-doc/transfer-doc.component.d.ts +24 -0
  103. package/lib/components/file-manger/components/update-modal/update-modal.component.d.ts +194 -0
  104. package/lib/components/file-manger/file-manager.abstract.d.ts +173 -0
  105. package/lib/components/file-manger/file-manger.module.d.ts +59 -0
  106. package/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.d.ts +17 -0
  107. package/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.d.ts +10 -0
  108. package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts +44 -0
  109. package/lib/components/permissions/permission.service.d.ts +21 -0
  110. package/lib/components/permissions/permissions/permissions.component.d.ts +48 -0
  111. package/lib/components/permissions/permissions-template/permissions-template.component.d.ts +22 -0
  112. package/lib/components/permissions/permissions.module.d.ts +21 -0
  113. package/lib/components/select-users-by-department/select-users-by-department.module.d.ts +13 -0
  114. package/lib/components/select-users-by-department/select-users-by-departments/department-management.service.d.ts +10 -0
  115. package/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.d.ts +33 -0
  116. package/lib/components/user/user/user.component.d.ts +12 -0
  117. package/lib/components/user/user.module.d.ts +10 -0
  118. package/lib/directive/directive.module.d.ts +3 -2
  119. package/lib/directive/drag-and-drop/drag-and-drop.directive.d.ts +11 -0
  120. package/lib/shared/libraryShared.module.d.ts +1 -1
  121. package/lib/shared-services/dialog-mangment.service.d.ts +15 -0
  122. package/lib/shared-services/dynamic-form.service.d.ts +24 -0
  123. package/lib/shared-services/file-manager.adapter.d.ts +48 -0
  124. package/lib/shared-services/file-manager.service.d.ts +94 -0
  125. package/lib/shared-services/global-pdftron.service.d.ts +10 -0
  126. package/lib/shared-services/mainfolder.service.d.ts +32 -0
  127. package/lib/shared-services/publishing-document.service.d.ts +25 -0
  128. package/lib/shared-services/recently-viewed.service.d.ts +17 -0
  129. package/lib/shared-services/shared-docs.service.d.ts +21 -0
  130. package/lib/shared-services/shared-services.module.d.ts +7 -0
  131. package/lib/shared-services/upload-file.service.d.ts +10 -0
  132. package/lib/shared-services/upload-managment.service.d.ts +72 -0
  133. package/lib/shared-services/user.service.d.ts +12 -0
  134. package/package.json +7 -6
  135. package/public-api.d.ts +62 -0
@@ -0,0 +1,232 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { MatDialogConfig } from '@angular/material/dialog';
3
+ import { AddPermissionsDialogComponent } from '../add-permissions-dialog/add-permissions-dialog.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../permission.service";
6
+ import * as i2 from "@angular/material/dialog";
7
+ import * as i3 from "../../custom-toastr/services/custom-toastr.service";
8
+ import * as i4 from "../../../Core/services/translation/translation.service";
9
+ import * as i5 from "../../../Core/services/nuxeo/nuxeo.service";
10
+ import * as i6 from "../../../shared-services/user.service";
11
+ import * as i7 from "../../../directive/permissions/evaluators.service";
12
+ import * as i8 from "@angular/material/divider";
13
+ import * as i9 from "../permissions-template/permissions-template.component";
14
+ import * as i10 from "@angular/material/progress-bar";
15
+ import * as i11 from "@angular/material/progress-spinner";
16
+ import * as i12 from "@angular/common";
17
+ import * as i13 from "@ngx-translate/core";
18
+ export class PermissionsComponent {
19
+ constructor(permissionService, addPermissionsDialog, tosterService, translateService, nuxeoService, userServ, evaluatorService) {
20
+ this.permissionService = permissionService;
21
+ this.addPermissionsDialog = addPermissionsDialog;
22
+ this.tosterService = tosterService;
23
+ this.translateService = translateService;
24
+ this.nuxeoService = nuxeoService;
25
+ this.userServ = userServ;
26
+ this.evaluatorService = evaluatorService;
27
+ this.sourcePage = '';
28
+ this.subscriptions$ = [];
29
+ this.localPermissions = [];
30
+ this.inheritedPermissions = [];
31
+ this.departmentPermissions = [];
32
+ this.sharePermissions = [];
33
+ this.workflowPermissions = [];
34
+ this.status = null; //to know inherited Permissions if block or not
35
+ this.allowAdd_Block_DeletePermission = false;
36
+ this.blockOrUnblock = false;
37
+ this.loading = false;
38
+ this.allDepartmentUsers = [];
39
+ }
40
+ ngOnInit() {
41
+ this.subscriptions$.concat([
42
+ this.permissionService.createAndAddAnother.subscribe(res => {
43
+ this.getPermissions();
44
+ })
45
+ ]);
46
+ this.loading = true;
47
+ this.checkIfUserCanDoActionsOnPermissions();
48
+ this.getPermissions();
49
+ (this.inheritedPermissions.length > 0) ? this.status = 'unblock' : this.status = 'block';
50
+ }
51
+ addPermissionLabel(arr, permissionArr) {
52
+ arr.forEach(element => {
53
+ if (!this.isItemContainAdministratorGroup(element)) {
54
+ element.permissionLabel = this.translateService.instant(`rights.${element.permission}`);
55
+ permissionArr.push(element);
56
+ }
57
+ });
58
+ }
59
+ isItemContainAdministratorGroup(element) {
60
+ let isAdministrator = false;
61
+ if (element.granted === false) {
62
+ isAdministrator = true;
63
+ }
64
+ else if (element.username && element.username['entity-type'] === 'group' && element.username.groupname === 'administrators') {
65
+ isAdministrator = true;
66
+ }
67
+ else if (element.username.userGroups) {
68
+ element.username.userGroups.map(group => {
69
+ if (group.name === 'administrators') {
70
+ isAdministrator = true;
71
+ }
72
+ });
73
+ }
74
+ return isAdministrator;
75
+ }
76
+ getPermissions() {
77
+ this.subscriptions$.concat([this.permissionService.getPermissionsForDocument(this.documentId).subscribe(res => {
78
+ this.permissionsType = res.contextParameters.acls;
79
+ this.userVisiblePermissions = res.contextParameters.userVisiblePermissions;
80
+ for (let p of this.permissionsType) {
81
+ if (p.name == 'local') {
82
+ this.localPermissions = [];
83
+ this.addPermissionLabel(p.aces, this.localPermissions);
84
+ this.localPermissions = this.localPermissions.map(element => {
85
+ if (element.creator.properties.username != this.nuxeoService.nuxeoClient.user.properties.username) {
86
+ element['currentUserIsPermissionOwner'] = false;
87
+ }
88
+ else {
89
+ element['currentUserIsPermissionOwner'] = true;
90
+ }
91
+ return element;
92
+ });
93
+ }
94
+ else if (p.name == 'inherited') {
95
+ this.inheritedPermissions = [];
96
+ this.addPermissionLabel(p.aces, this.inheritedPermissions);
97
+ }
98
+ else if (p.name.includes('deptSpace')) {
99
+ this.departmentPermissions = [];
100
+ this.addPermissionLabel(p.aces, this.departmentPermissions);
101
+ }
102
+ else if (p.name.includes('share')) {
103
+ this.sharePermissions = [];
104
+ this.addPermissionLabel(p.aces, this.sharePermissions);
105
+ }
106
+ else if (p.name.includes('routing')) {
107
+ this.workflowPermissions = [];
108
+ this.addPermissionLabel(p.aces, this.workflowPermissions);
109
+ }
110
+ }
111
+ (this.inheritedPermissions.length == 0) ? this.status = 'block' : this.status = 'unblock';
112
+ this.loading = false;
113
+ }, err => this.loading = false)]);
114
+ }
115
+ blockPermissionInheritance() {
116
+ this.blockOrUnblock = true;
117
+ this.subscriptions$.concat([this.permissionService.blockPermissionInheritance(this.documentId).subscribe(res => {
118
+ if (res) {
119
+ this.getPermissions();
120
+ this.tosterService.show('success', 'TOASTER.SUCCESS', "TOASTER.PERMISSION_BLOCK_SUCCESS");
121
+ this.blockOrUnblock = false;
122
+ this.status = "unblock";
123
+ this.inheritedPermissions = [];
124
+ }
125
+ }, err => {
126
+ this.blockOrUnblock = false;
127
+ this.tosterService.show('error', 'TOASTER.ERROR', 'TOASTER.PERMISSION_BLOCK_FAIL');
128
+ })]);
129
+ }
130
+ unblockPermissionInheritance() {
131
+ this.blockOrUnblock = true;
132
+ this.subscriptions$.concat([this.permissionService.unblockPermissionInheritance(this.documentId).subscribe(res => {
133
+ if (res) {
134
+ this.getPermissions();
135
+ this.tosterService.show('success', 'TOASTER.SUCCESS', "TOASTER.PERMISSION_UNBLOCK_SUCCESS");
136
+ this.status = "block";
137
+ this.blockOrUnblock = false;
138
+ }
139
+ }, err => {
140
+ this.blockOrUnblock = false;
141
+ this.tosterService.show('error', 'TOASTER.ERROR', 'TOASTER.PERMISSION_UNBLOCK_FAIL');
142
+ })]);
143
+ }
144
+ addNewLocalPermissions() {
145
+ this.permissionService.departmentUsers = [...this.allDepartmentUsers];
146
+ this.localPermissions.forEach(perm => {
147
+ this.permissionService.departmentUsers.forEach((user, index) => {
148
+ if (perm.username.properties.username === user.properties.username
149
+ && perm.creator.properties.username === this.nuxeoService.nuxeoClient.user.properties.username) {
150
+ this.permissionService.departmentUsers.splice(index, 1);
151
+ }
152
+ });
153
+ });
154
+ const dialogConfig = new MatDialogConfig();
155
+ dialogConfig.disableClose = false;
156
+ dialogConfig.autoFocus = true;
157
+ dialogConfig.data = {
158
+ id: this.documentId,
159
+ rights: this.userVisiblePermissions
160
+ };
161
+ dialogConfig.width = '35%';
162
+ dialogConfig.height = '70%';
163
+ // befor opening modal we diable clickout side effect to prevent details side menu from closing when clicking in the modal
164
+ this.permissionService.disableClickOutSide = true;
165
+ let dialofRef = this.addPermissionsDialog.open(AddPermissionsDialogComponent, dialogConfig);
166
+ dialofRef.afterClosed().subscribe(res => {
167
+ // return click outside effect to work to close side menu when clicking out side it
168
+ this.permissionService.disableClickOutSide = false;
169
+ if (res) {
170
+ this.getPermissions();
171
+ }
172
+ });
173
+ }
174
+ checkIfUserCanDoActionsOnPermissions() {
175
+ this.evaluatorService.evaluateRule('isManagePermissionEnabled').then(isEnabled => {
176
+ if (isEnabled) {
177
+ let userInControllerGroup = false;
178
+ this.nuxeoService.nuxeoClient.user.userGroups.forEach(group => {
179
+ if (group.name === 'dms_document_controller') {
180
+ userInControllerGroup = true;
181
+ }
182
+ });
183
+ if (userInControllerGroup) {
184
+ let depCode = this.userServ.getUserDepartmentFromPath(this.document.path);
185
+ this.permissionService.getDepMembers(depCode).subscribe(res => {
186
+ this.permissionService.departmentUsers = res.users.map(e => {
187
+ e['displayLabel'] = e.properties.firstName + ' ' + e.properties.lastName;
188
+ return e;
189
+ });
190
+ this.allDepartmentUsers = [...this.permissionService.departmentUsers];
191
+ res.users.forEach(user => {
192
+ if (user.properties.username === this.nuxeoService.nuxeoClient.user.properties.username
193
+ && this.document.type === 'DmsFolder') {
194
+ this.allowAdd_Block_DeletePermission = true;
195
+ }
196
+ });
197
+ });
198
+ }
199
+ else {
200
+ this.allowAdd_Block_DeletePermission = false;
201
+ }
202
+ }
203
+ else {
204
+ this.allowAdd_Block_DeletePermission = false;
205
+ }
206
+ });
207
+ }
208
+ ngOnDestroy() {
209
+ // return click outside effect to work to close side menu when clicking out side it
210
+ this.permissionService.disableClickOutSide = false;
211
+ this.subscriptions$.forEach(e => e.unsubscribe());
212
+ }
213
+ }
214
+ PermissionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionsComponent, deps: [{ token: i1.PermissionService }, { token: i2.MatDialog }, { token: i3.CustomToastrService }, { token: i4.TranslationService }, { token: i5.NuxeoService }, { token: i6.UserService }, { token: i7.EvaluatorsService }], target: i0.ɵɵFactoryTarget.Component });
215
+ PermissionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: PermissionsComponent, selector: "app-permissions", inputs: { documentId: "documentId", document: "document", allowAddAndBlock: "allowAddAndBlock", sourcePage: "sourcePage" }, ngImport: i0, template: "<div class=\"h-auto mt-3 px-0 pb-4\" *ngIf=\"!loading; else loader\">\r\n <!--LocalPermission List Items-->\r\n <div *ngIf=\"sourcePage != 'myFiles'\">\r\n <div class=\"flex flex-row justify-between\">\r\n <span class=\"font-bold text-gray-500 text-base\">{{\r\n \"permission.local\" | translate\r\n }}</span>\r\n <span *ngIf=\"allowAdd_Block_DeletePermission && !inheritedPermissions.length\">\r\n <button\r\n *ngIf=\"allowAddAndBlock\"\r\n class=\"hover:text-blue-700 text-blue-500 mb-1 text-base\"\r\n (click)=\"addNewLocalPermissions()\"\r\n [disabled]=\"!permissionsType\"\r\n >\r\n {{ \"permission.new\" | translate }}\r\n </button>\r\n </span>\r\n </div>\r\n <mat-divider class=\"mat-divider\"></mat-divider>\r\n <app-permissions-template\r\n [documentId]=\"documentId\"\r\n [userVisiblePermissions]=\"userVisiblePermissions\"\r\n (getPermissions)=\"getPermissions()\"\r\n [allowDeleteAndEdit]=\"allowAdd_Block_DeletePermission\"\r\n [permissionsArray]=\"localPermissions\"\r\n *ngIf=\"localPermissions.length > 0; else nolocalPermissions\"\r\n >\r\n </app-permissions-template>\r\n </div>\r\n <ng-template #nolocalPermissions>\r\n <div class=\"single-permssion p-3 text-center\">\r\n {{ \"permission.noLocal\" | translate }}\r\n </div>\r\n </ng-template>\r\n <!--InheritedPermission List Items-->\r\n <div>\r\n <div class=\"flex flex-row justify-between mt-3\">\r\n <span class=\"font-bold text-gray-500 text-base\">{{\r\n \"permission.inherited\" | translate\r\n }}</span>\r\n <span *ngIf=\"allowAdd_Block_DeletePermission\">\r\n <button\r\n class=\"hover:text-blue-700 text-blue-500 mb-1 text-base\"\r\n *ngIf=\"status != null && allowAddAndBlock\"\r\n >\r\n <span\r\n *ngIf=\"status == 'block'; else unblock\"\r\n (click)=\"unblockPermissionInheritance()\"\r\n >\r\n {{ \"permission.unblock\" | translate }}\r\n </span>\r\n <ng-template #unblock>\r\n <span (click)=\"blockPermissionInheritance()\">\r\n {{ \"permission.block\" | translate }}\r\n </span>\r\n </ng-template>\r\n </button>\r\n </span>\r\n </div>\r\n <mat-divider class=\"mat-divider\" *ngIf=\"!blockOrUnblock\"></mat-divider>\r\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"blockOrUnblock\"></mat-progress-bar>\r\n <app-permissions-template\r\n *ngIf=\"inheritedPermissions.length > 0; else noinheritedPermissions\"\r\n [documentId]=\"documentId\"\r\n [userVisiblePermissions]=\"userVisiblePermissions\"\r\n [permissionsArray]=\"inheritedPermissions\"\r\n (getPermissions)=\"getPermissions()\"\r\n >\r\n </app-permissions-template>\r\n </div>\r\n <ng-template #noinheritedPermissions>\r\n <div class=\"single-permssion p-3 text-center\">\r\n {{\"permission.noInherited\" | translate }}</div>\r\n </ng-template>\r\n <!--departmentPermissions List Items-->\r\n <div *ngIf=\"departmentPermissions.length > 0\">\r\n <div class=\"flex flex-row justify-between\">\r\n <span class=\"font-bold text-gray-500 text-base\">{{\r\n \"permission.departmentPermissions\" | translate\r\n }}</span>\r\n </div>\r\n <mat-divider class=\"mat-divider\"></mat-divider>\r\n <app-permissions-template\r\n [documentId]=\"documentId\"\r\n [userVisiblePermissions]=\"userVisiblePermissions\"\r\n (getPermissions)=\"getPermissions()\"\r\n [permissionsArray]=\"departmentPermissions\"\r\n >\r\n </app-permissions-template>\r\n </div>\r\n <!--sharePermissions List Items-->\r\n <div *ngIf=\"sharePermissions.length > 0\">\r\n <div class=\"flex flex-row justify-between\">\r\n <span class=\"font-bold text-gray-500 text-base\">{{\r\n \"permission.sharePermissions\" | translate\r\n }}</span>\r\n </div>\r\n <mat-divider class=\"mat-divider\"></mat-divider>\r\n <app-permissions-template\r\n [documentId]=\"documentId\"\r\n [userVisiblePermissions]=\"userVisiblePermissions\"\r\n (getPermissions)=\"getPermissions()\"\r\n [permissionsArray]=\"sharePermissions\"\r\n >\r\n </app-permissions-template>\r\n </div>\r\n <!--workflowPermissions List Items-->\r\n <div *ngIf=\"workflowPermissions.length > 0\">\r\n <div class=\"flex flex-row justify-between\">\r\n <span class=\"font-bold text-gray-500 text-base\">{{\r\n \"permission.workflowPermissions\" | translate\r\n }}</span>\r\n </div>\r\n <mat-divider class=\"mat-divider\"></mat-divider>\r\n <app-permissions-template\r\n [documentId]=\"documentId\"\r\n [userVisiblePermissions]=\"userVisiblePermissions\"\r\n (getPermissions)=\"getPermissions()\"\r\n [permissionsArray]=\"workflowPermissions\"\r\n >\r\n </app-permissions-template>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loader>\r\n <div class=\"flex items-center justify-center w-full h-full\">\r\n <mat-spinner [value]=\"90\" [strokeWidth]=\"6\" overlay=\"true\" [diameter]=\"75\"></mat-spinner>\r\n </div>\r\n</ng-template>\r\n", styles: [""], components: [{ type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i9.PermissionsTemplateComponent, selector: "app-permissions-template", inputs: ["allowDeleteAndEdit", "documentId", "userVisiblePermissions", "permissionsArray"], outputs: ["getPermissions"] }, { type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i11.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i13.TranslatePipe } });
216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionsComponent, decorators: [{
217
+ type: Component,
218
+ args: [{
219
+ selector: 'app-permissions',
220
+ templateUrl: './permissions.component.html',
221
+ styleUrls: ['./permissions.component.scss']
222
+ }]
223
+ }], ctorParameters: function () { return [{ type: i1.PermissionService }, { type: i2.MatDialog }, { type: i3.CustomToastrService }, { type: i4.TranslationService }, { type: i5.NuxeoService }, { type: i6.UserService }, { type: i7.EvaluatorsService }]; }, propDecorators: { documentId: [{
224
+ type: Input
225
+ }], document: [{
226
+ type: Input
227
+ }], allowAddAndBlock: [{
228
+ type: Input
229
+ }], sourcePage: [{
230
+ type: Input
231
+ }] } });
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJdEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVczRyxNQUFNLE9BQU8sb0JBQW9CO0lBc0IvQixZQUFvQixpQkFBb0MsRUFDOUMsb0JBQStCLEVBQy9CLGFBQWtDLEVBQ2xDLGdCQUFvQyxFQUNwQyxZQUEwQixFQUMxQixRQUFxQixFQUNyQixnQkFBb0M7UUFOMUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUM5Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQVc7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFDcEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBbkI5QyxlQUFVLEdBQUcsRUFBRSxDQUFBO1FBQ2YsbUJBQWMsR0FBbUIsRUFBRSxDQUFDO1FBRXBDLHFCQUFn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d1JBSUMsVUFBVTtzQkFEVCxLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Blcm1pc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFkZFBlcm1pc3Npb25zRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkLXBlcm1pc3Npb25zLWRpYWxvZy9hZGQtcGVybWlzc2lvbnMtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV2YWx1YXRvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL3Blcm1pc3Npb25zL2V2YWx1YXRvcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEN1c3RvbVRvYXN0clNlcnZpY2UgfSBmcm9tICcuLi8uLi9jdXN0b20tdG9hc3RyL3NlcnZpY2VzL2N1c3RvbS10b2FzdHIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL0NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL0NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1wZXJtaXNzaW9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Blcm1pc3Npb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wZXJtaXNzaW9ucy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwZXJtaXNzaW9uc1R5cGU6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIGRvY3VtZW50SWQ7XHJcbiAgQElucHV0KClcclxuICBkb2N1bWVudDtcclxuICBASW5wdXQoKVxyXG4gIGFsbG93QWRkQW5kQmxvY2tcclxuICBASW5wdXQoKVxyXG4gIHNvdXJjZVBhZ2UgPSAnJ1xyXG4gIHN1YnNjcmlwdGlvbnMkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHVzZXJWaXNpYmxlUGVybWlzc2lvbnM6IGFueTtcclxuICBsb2NhbFBlcm1pc3Npb25zID0gW107XHJcbiAgaW5oZXJpdGVkUGVybWlzc2lvbnMgPSBbXTtcclxuICBkZXBhcnRtZW50UGVybWlzc2lvbnMgPSBbXTtcclxuICBzaGFyZVBlcm1pc3Npb25zID0gW107XHJcbiAgd29ya2Zsb3dQZXJtaXNzaW9ucyA9IFtdO1xyXG4gIHN0YXR1cz1udWxsOy8vdG8ga25vdyBpbmhlcml0ZWQgUGVybWlzc2lvbnMgaWYgYmxvY2sgb3Igbm90XHJcbiAgYWxsb3dBZGRfQmxvY2tfRGVsZXRlUGVybWlzc2lvbiA9ZmFsc2U7XHJcbiAgYmxvY2tPclVuYmxvY2sgPSBmYWxzZTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgYWxsRGVwYXJ0bWVudFVzZXJzID0gW107XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwZXJtaXNzaW9uU2VydmljZTogUGVybWlzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFkZFBlcm1pc3Npb25zRGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHRvc3RlclNlcnZpY2U6IEN1c3RvbVRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbnV4ZW9TZXJ2aWNlOiBOdXhlb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2OiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgZXZhbHVhdG9yU2VydmljZSA6IEV2YWx1YXRvcnNTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQuY29uY2F0KFtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5jcmVhdGVBbmRBZGRBbm90aGVyLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0UGVybWlzc2lvbnMoKTtcclxuICAgICAgfSlcclxuICAgIF0pO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hlY2tJZlVzZXJDYW5Eb0FjdGlvbnNPblBlcm1pc3Npb25zKCk7XHJcbiAgICB0aGlzLmdldFBlcm1pc3Npb25zKCk7XHJcbiAgICAodGhpcy5pbmhlcml0ZWRQZXJtaXNzaW9ucy5sZW5ndGggPiAwKSA/IHRoaXMuc3RhdHVzID0gJ3VuYmxvY2snIDogdGhpcy5zdGF0dXMgPSAnYmxvY2snO1xyXG4gIH1cclxuXHJcbiAgYWRkUGVybWlzc2lvbkxhYmVsKGFycixwZXJtaXNzaW9uQXJyKSB7XHJcbiAgICBhcnIuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgaWYoIXRoaXMuaXNJdGVtQ29udGFpbkFkbWluaXN0cmF0b3JHcm91cChlbGVtZW50KSl7XHJcbiAgICAgICAgZWxlbWVudC5wZXJtaXNzaW9uTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgcmlnaHRzLiR7ZWxlbWVudC5wZXJtaXNzaW9ufWApXHJcbiAgICAgICAgcGVybWlzc2lvbkFyci5wdXNoKGVsZW1lbnQpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaXNJdGVtQ29udGFpbkFkbWluaXN0cmF0b3JHcm91cChlbGVtZW50KXtcclxuICAgIGxldCBpc0FkbWluaXN0cmF0b3IgPSBmYWxzZTtcclxuICAgIGlmKGVsZW1lbnQuZ3JhbnRlZCA9PT0gZmFsc2Upe1xyXG4gICAgICBpc0FkbWluaXN0cmF0b3IgPSB0cnVlO1xyXG4gICAgfWVsc2UgaWYgKGVsZW1lbnQudXNlcm5hbWUgJiYgZWxlbWVudC51c2VybmFtZVsnZW50aXR5LXR5cGUnXSA9PT0gJ2dyb3VwJyAmJiBlbGVtZW50LnVzZXJuYW1lLmdyb3VwbmFtZSA9PT0gJ2FkbWluaXN0cmF0b3JzJyl7XHJcbiAgICAgIGlzQWRtaW5pc3RyYXRvciA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYoZWxlbWVudC51c2VybmFtZS51c2VyR3JvdXBzKXtcclxuICAgICAgICBlbGVtZW50LnVzZXJuYW1lLnVzZXJHcm91cHMubWFwKGdyb3VwID0+IHtcclxuICAgICAgICAgIGlmKGdyb3VwLm5hbWUgPT09ICdhZG1pbmlzdHJhdG9ycycpe1xyXG4gICAgICAgICAgICBpc0FkbWluaXN0cmF0b3IgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNBZG1pbmlzdHJhdG9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGVybWlzc2lvbnMoKSB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLmNvbmNhdChbdGhpcy5wZXJtaXNzaW9uU2VydmljZS5nZXRQZXJtaXNzaW9uc0ZvckRvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMucGVybWlzc2lvbnNUeXBlID0gcmVzLmNvbnRleHRQYXJhbWV0ZXJzLmFjbHM7XHJcbiAgICAgIHRoaXMudXNlclZpc2libGVQZXJtaXNzaW9ucyA9IHJlcy5jb250ZXh0UGFyYW1ldGVycy51c2VyVmlzaWJsZVBlcm1pc3Npb25zO1xyXG4gICAgICBmb3IgKGxldCBwIG9mIHRoaXMucGVybWlzc2lvbnNUeXBlKSB7XHJcbiAgICAgICAgaWYgKHAubmFtZSA9PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgICB0aGlzLmxvY2FsUGVybWlzc2lvbnMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuYWRkUGVybWlzc2lvbkxhYmVsKHAuYWNlcyx0aGlzLmxvY2FsUGVybWlzc2lvbnMpO1xyXG4gICAgICAgICAgdGhpcy5sb2NhbFBlcm1pc3Npb25zID0gdGhpcy5sb2NhbFBlcm1pc3Npb25zLm1hcChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWYoZWxlbWVudC5jcmVhdG9yLnByb3BlcnRpZXMudXNlcm5hbWUgIT0gdGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnQudXNlci5wcm9wZXJ0aWVzLnVzZXJuYW1lKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudFsnY3VycmVudFVzZXJJc1Blcm1pc3Npb25Pd25lciddID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudFsnY3VycmVudFVzZXJJc1Blcm1pc3Npb25Pd25lciddID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwLm5hbWUgPT0gJ2luaGVyaXRlZCcpIHtcclxuICAgICAgICAgIHRoaXMuaW5oZXJpdGVkUGVybWlzc2lvbnMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuYWRkUGVybWlzc2lvbkxhYmVsKHAuYWNlcyx0aGlzLmluaGVyaXRlZFBlcm1pc3Npb25zKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwLm5hbWUuaW5jbHVkZXMoJ2RlcHRTcGFjZScpKSB7XHJcbiAgICAgICAgICB0aGlzLmRlcGFydG1lbnRQZXJtaXNzaW9ucyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uTGFiZWwocC5hY2VzLHRoaXMuZGVwYXJ0bWVudFBlcm1pc3Npb25zKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwLm5hbWUuaW5jbHVkZXMoJ3NoYXJlJykpIHtcclxuICAgICAgICAgIHRoaXMuc2hhcmVQZXJtaXNzaW9ucyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uTGFiZWwocC5hY2VzLHRoaXMuc2hhcmVQZXJtaXNzaW9ucylcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocC5uYW1lLmluY2x1ZGVzKCdyb3V0aW5nJykpIHtcclxuICAgICAgICAgIHRoaXMud29ya2Zsb3dQZXJtaXNzaW9ucyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uTGFiZWwocC5hY2VzLHRoaXMud29ya2Zsb3dQZXJtaXNzaW9ucylcclxuICAgICAgICB9ICAgIFxyXG4gICAgICB9XHJcbiAgICAgICh0aGlzLmluaGVyaXRlZFBlcm1pc3Npb25zLmxlbmd0aCA9PSAwKSA/IHRoaXMuc3RhdHVzID0gJ2Jsb2NrJyA6IHRoaXMuc3RhdHVzID0gJ3VuYmxvY2snOyAgXHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSxlcnIgPT4gdGhpcy5sb2FkaW5nID0gZmFsc2VcclxuICAgICldKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgYmxvY2tQZXJtaXNzaW9uSW5oZXJpdGFuY2UoKSB7XHJcbiAgICB0aGlzLmJsb2NrT3JVbmJsb2NrID0gdHJ1ZTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQuY29uY2F0KFt0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmJsb2NrUGVybWlzc2lvbkluaGVyaXRhbmNlKHRoaXMuZG9jdW1lbnRJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLmdldFBlcm1pc3Npb25zKCk7XHJcbiAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ3N1Y2Nlc3MnLCAnVE9BU1RFUi5TVUNDRVNTJywgXCJUT0FTVEVSLlBFUk1JU1NJT05fQkxPQ0tfU1VDQ0VTU1wiKTtcclxuICAgICAgICB0aGlzLmJsb2NrT3JVbmJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBcInVuYmxvY2tcIjtcclxuICAgICAgICB0aGlzLmluaGVyaXRlZFBlcm1pc3Npb25zID0gW107XHJcbiAgICAgIH1cclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIHRoaXMuYmxvY2tPclVuYmxvY2sgPSBmYWxzZTtcclxuICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ2Vycm9yJywgJ1RPQVNURVIuRVJST1InLCAnVE9BU1RFUi5QRVJNSVNTSU9OX0JMT0NLX0ZBSUwnKTtcclxuICAgIH1cclxuICAgICldKVxyXG4gIH1cclxuXHJcbiAgdW5ibG9ja1Blcm1pc3Npb25Jbmhlcml0YW5jZSgpIHtcclxuICAgIHRoaXMuYmxvY2tPclVuYmxvY2sgPSB0cnVlO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJC5jb25jYXQoW3RoaXMucGVybWlzc2lvblNlcnZpY2UudW5ibG9ja1Blcm1pc3Npb25Jbmhlcml0YW5jZSh0aGlzLmRvY3VtZW50SWQpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7ICAgXHJcbiAgICAgICAgdGhpcy5nZXRQZXJtaXNzaW9ucygpO1xyXG4gICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5QRVJNSVNTSU9OX1VOQkxPQ0tfU1VDQ0VTU1wiKTtcclxuICAgICAgICB0aGlzLnN0YXR1cyA9IFwiYmxvY2tcIjtcclxuICAgICAgICB0aGlzLmJsb2NrT3JVbmJsb2NrID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIHRoaXMuYmxvY2tPclVuYmxvY2sgPSBmYWxzZTtcclxuICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ2Vycm9yJywgJ1RPQVNURVIuRVJST1InLCAnVE9BU1RFUi5QRVJNSVNTSU9OX1VOQkxPQ0tfRkFJTCcpO1xyXG4gICAgfSldKVxyXG4gIH1cclxuXHJcbiAgYWRkTmV3TG9jYWxQZXJtaXNzaW9ucygpIHtcclxuICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UuZGVwYXJ0bWVudFVzZXJzID0gWy4uLnRoaXMuYWxsRGVwYXJ0bWVudFVzZXJzXTtcclxuICAgIHRoaXMubG9jYWxQZXJtaXNzaW9ucy5mb3JFYWNoKHBlcm0gPT4ge1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmRlcGFydG1lbnRVc2Vycy5mb3JFYWNoKCh1c2VyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChwZXJtLnVzZXJuYW1lLnByb3BlcnRpZXMudXNlcm5hbWUgPT09IHVzZXIucHJvcGVydGllcy51c2VybmFtZVxyXG4gICAgICAgICAgJiYgcGVybS5jcmVhdG9yLnByb3BlcnRpZXMudXNlcm5hbWUgPT09IHRoaXMubnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXIucHJvcGVydGllcy51c2VybmFtZSkge1xyXG4gICAgICAgICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5kZXBhcnRtZW50VXNlcnMuc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcclxuICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSBmYWxzZTtcclxuICAgIGRpYWxvZ0NvbmZpZy5hdXRvRm9jdXMgPSB0cnVlO1xyXG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7XHJcbiAgICAgIGlkOiB0aGlzLmRvY3VtZW50SWQsXHJcbiAgICAgIHJpZ2h0czogdGhpcy51c2VyVmlzaWJsZVBlcm1pc3Npb25zXHJcbiAgICB9O1xyXG4gICAgZGlhbG9nQ29uZmlnLndpZHRoID0gJzM1JSc7XHJcbiAgICBkaWFsb2dDb25maWcuaGVpZ2h0ID0gJzcwJSc7XHJcbiAgICAvLyBiZWZvciBvcGVuaW5nIG1vZGFsIHdlIGRpYWJsZSBjbGlja291dCBzaWRlIGVmZmVjdCB0byBwcmV2ZW50IGRldGFpbHMgc2lkZSBtZW51IGZyb20gY2xvc2luZyB3aGVuIGNsaWNraW5nIGluIHRoZSBtb2RhbFxyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5kaXNhYmxlQ2xpY2tPdXRTaWRlID0gdHJ1ZTtcclxuICAgIGxldCBkaWFsb2ZSZWYgPSB0aGlzLmFkZFBlcm1pc3Npb25zRGlhbG9nLm9wZW4oXHJcbiAgICAgIEFkZFBlcm1pc3Npb25zRGlhbG9nQ29tcG9uZW50LCBcclxuICAgICAgZGlhbG9nQ29uZmlnKTtcclxuICAgIGRpYWxvZlJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAvLyByZXR1cm4gY2xpY2sgb3V0c2lkZSBlZmZlY3QgdG8gd29yayB0byBjbG9zZSBzaWRlIG1lbnUgd2hlbiBjbGlja2luZyBvdXQgc2lkZSBpdFxyXG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmRpc2FibGVDbGlja091dFNpZGUgPSBmYWxzZTtcclxuICAgICAgaWYocmVzKSB7XHJcbiAgICAgICAgdGhpcy5nZXRQZXJtaXNzaW9ucygpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIGNoZWNrSWZVc2VyQ2FuRG9BY3Rpb25zT25QZXJtaXNzaW9ucygpIHtcclxuICAgIHRoaXMuZXZhbHVhdG9yU2VydmljZS5ldmFsdWF0ZVJ1bGUoJ2lzTWFuYWdlUGVybWlzc2lvbkVuYWJsZWQnKS50aGVuKGlzRW5hYmxlZCA9PiB7XHJcbiAgICAgIGlmIChpc0VuYWJsZWQpIHtcclxuICAgICAgICBsZXQgdXNlckluQ29udHJvbGxlckdyb3VwID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnQudXNlci51c2VyR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICAgICAgaWYgKGdyb3VwLm5hbWUgPT09ICdkbXNfZG9jdW1lbnRfY29udHJvbGxlcicpIHtcclxuICAgICAgICAgICAgdXNlckluQ29udHJvbGxlckdyb3VwID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodXNlckluQ29udHJvbGxlckdyb3VwKSB7XHJcbiAgICAgICAgICBsZXQgZGVwQ29kZSA9IHRoaXMudXNlclNlcnYuZ2V0VXNlckRlcGFydG1lbnRGcm9tUGF0aCh0aGlzLmRvY3VtZW50LnBhdGgpO1xyXG4gICAgICAgICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5nZXREZXBNZW1iZXJzKGRlcENvZGUpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmRlcGFydG1lbnRVc2VycyA9IHJlcy51c2Vycy5tYXAoZSA9PiB7XHJcbiAgICAgICAgICAgICAgZVsnZGlzcGxheUxhYmVsJ10gPSBlLnByb3BlcnRpZXMuZmlyc3ROYW1lICsgJyAnICsgZS5wcm9wZXJ0aWVzLmxhc3ROYW1lO1xyXG4gICAgICAgICAgICAgIHJldHVybiBlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5hbGxEZXBhcnRtZW50VXNlcnMgPSBbLi4udGhpcy5wZXJtaXNzaW9uU2VydmljZS5kZXBhcnRtZW50VXNlcnNdO1xyXG4gICAgICAgICAgICByZXMudXNlcnMuZm9yRWFjaCh1c2VyID0+IHtcclxuICAgICAgICAgICAgICBpZiAodXNlci5wcm9wZXJ0aWVzLnVzZXJuYW1lID09PSB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMudXNlcm5hbWVcclxuICAgICAgICAgICAgICAgICYmIHRoaXMuZG9jdW1lbnQudHlwZSA9PT0gJ0Rtc0ZvbGRlcicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsb3dBZGRfQmxvY2tfRGVsZXRlUGVybWlzc2lvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWxsb3dBZGRfQmxvY2tfRGVsZXRlUGVybWlzc2lvbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFsbG93QWRkX0Jsb2NrX0RlbGV0ZVBlcm1pc3Npb24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gcmV0dXJuIGNsaWNrIG91dHNpZGUgZWZmZWN0IHRvIHdvcmsgdG8gY2xvc2Ugc2lkZSBtZW51IHdoZW4gY2xpY2tpbmcgb3V0IHNpZGUgaXRcclxuICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UuZGlzYWJsZUNsaWNrT3V0U2lkZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJC5mb3JFYWNoKGUgPT4gZS51bnN1YnNjcmliZSgpKVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaC1hdXRvIG10LTMgcHgtMCBwYi00XCIgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBsb2FkZXJcIj5cclxuICAgIDwhLS1Mb2NhbFBlcm1pc3Npb24gTGlzdCBJdGVtcy0tPlxyXG4gICAgPGRpdiAqbmdJZj1cInNvdXJjZVBhZ2UgIT0gJ215RmlsZXMnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtZ3JheS01MDAgdGV4dC1iYXNlXCI+e3tcclxuICAgICAgICAgICAgICAgIFwicGVybWlzc2lvbi5sb2NhbFwiIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFsbG93QWRkX0Jsb2NrX0RlbGV0ZVBlcm1pc3Npb24gJiYgIWluaGVyaXRlZFBlcm1pc3Npb25zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWxsb3dBZGRBbmRCbG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJob3Zlcjp0ZXh0LWJsdWUtNzAwIHRleHQtYmx1ZS01MDAgbWItMSB0ZXh0LWJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROZXdMb2NhbFBlcm1pc3Npb25zKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcGVybWlzc2lvbnNUeXBlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBcInBlcm1pc3Npb24ubmV3XCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyIGNsYXNzPVwibWF0LWRpdmlkZXJcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxhcHAtcGVybWlzc2lvbnMtdGVtcGxhdGVcclxuICAgICAgICAgICAgW2RvY3VtZW50SWRdPVwiZG9jdW1lbnRJZFwiXHJcbiAgICAgICAgICAgIFt1c2VyVmlzaWJsZVBlcm1pc3Npb25zXT1cInVzZXJWaXNpYmxlUGVybWlzc2lvbnNcIlxyXG4gICAgICAgICAgICAoZ2V0UGVybWlzc2lvbnMpPVwiZ2V0UGVybWlzc2lvbnMoKVwiXHJcbiAgICAgICAgICAgIFthbGxvd0RlbGV0ZUFuZEVkaXRdPVwiYWxsb3dBZGRfQmxvY2tfRGVsZXRlUGVybWlzc2lvblwiXHJcbiAgICAgICAgICAgIFtwZXJtaXNzaW9uc0FycmF5XT1cImxvY2FsUGVybWlzc2lvbnNcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImxvY2FsUGVybWlzc2lvbnMubGVuZ3RoID4gMDsgZWxzZSBub2xvY2FsUGVybWlzc2lvbnNcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2FwcC1wZXJtaXNzaW9ucy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICNub2xvY2FsUGVybWlzc2lvbnM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1wZXJtc3Npb24gcC0zIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIHt7IFwicGVybWlzc2lvbi5ub0xvY2FsXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8IS0tSW5oZXJpdGVkUGVybWlzc2lvbiBMaXN0IEl0ZW1zLS0+XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBtdC0zXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtZ3JheS01MDAgdGV4dC1iYXNlXCI+e3tcclxuICAgICAgICAgICAgICAgIFwicGVybWlzc2lvbi5pbmhlcml0ZWRcIiB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJhbGxvd0FkZF9CbG9ja19EZWxldGVQZXJtaXNzaW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJob3Zlcjp0ZXh0LWJsdWUtNzAwIHRleHQtYmx1ZS01MDAgbWItMSB0ZXh0LWJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RhdHVzICE9IG51bGwgJiYgYWxsb3dBZGRBbmRCbG9ja1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdGF0dXMgPT0gJ2Jsb2NrJzsgZWxzZSB1bmJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVuYmxvY2tQZXJtaXNzaW9uSW5oZXJpdGFuY2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBcInBlcm1pc3Npb24udW5ibG9ja1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdW5ibG9jaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImJsb2NrUGVybWlzc2lvbkluaGVyaXRhbmNlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwicGVybWlzc2lvbi5ibG9ja1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXIgY2xhc3M9XCJtYXQtZGl2aWRlclwiICpuZ0lmPVwiIWJsb2NrT3JVbmJsb2NrXCI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiYmxvY2tPclVuYmxvY2tcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgPGFwcC1wZXJtaXNzaW9ucy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAqbmdJZj1cImluaGVyaXRlZFBlcm1pc3Npb25zLmxlbmd0aCA+IDA7IGVsc2Ugbm9pbmhlcml0ZWRQZXJtaXNzaW9uc1wiXHJcbiAgICAgICAgICAgIFtkb2N1bWVudElkXT1cImRvY3VtZW50SWRcIlxyXG4gICAgICAgICAgICBbdXNlclZpc2libGVQZXJtaXNzaW9uc109XCJ1c2VyVmlzaWJsZVBlcm1pc3Npb25zXCJcclxuICAgICAgICAgICAgW3Blcm1pc3Npb25zQXJyYXldPVwiaW5oZXJpdGVkUGVybWlzc2lvbnNcIlxyXG4gICAgICAgICAgICAoZ2V0UGVybWlzc2lvbnMpPVwiZ2V0UGVybWlzc2lvbnMoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvYXBwLXBlcm1pc3Npb25zLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI25vaW5oZXJpdGVkUGVybWlzc2lvbnM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1wZXJtc3Npb24gcC0zIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIHt7XCJwZXJtaXNzaW9uLm5vSW5oZXJpdGVkXCIgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8IS0tZGVwYXJ0bWVudFBlcm1pc3Npb25zIExpc3QgSXRlbXMtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJkZXBhcnRtZW50UGVybWlzc2lvbnMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWdyYXktNTAwIHRleHQtYmFzZVwiPnt7XHJcbiAgICAgICAgICAgICAgICBcInBlcm1pc3Npb24uZGVwYXJ0bWVudFBlcm1pc3Npb25zXCIgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyIGNsYXNzPVwibWF0LWRpdmlkZXJcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxhcHAtcGVybWlzc2lvbnMtdGVtcGxhdGVcclxuICAgICAgICAgICAgW2RvY3VtZW50SWRdPVwiZG9jdW1lbnRJZFwiXHJcbiAgICAgICAgICAgIFt1c2VyVmlzaWJsZVBlcm1pc3Npb25zXT1cInVzZXJWaXNpYmxlUGVybWlzc2lvbnNcIlxyXG4gICAgICAgICAgICAoZ2V0UGVybWlzc2lvbnMpPVwiZ2V0UGVybWlzc2lvbnMoKVwiXHJcbiAgICAgICAgICAgIFtwZXJtaXNzaW9uc0FycmF5XT1cImRlcGFydG1lbnRQZXJtaXNzaW9uc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvYXBwLXBlcm1pc3Npb25zLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tc2hhcmVQZXJtaXNzaW9ucyBMaXN0IEl0ZW1zLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hhcmVQZXJtaXNzaW9ucy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtZ3JheS01MDAgdGV4dC1iYXNlXCI+e3tcclxuICAgICAgICAgICAgICAgIFwicGVybWlzc2lvbi5zaGFyZVBlcm1pc3Npb25zXCIgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyIGNsYXNzPVwibWF0LWRpdmlkZXJcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxhcHAtcGVybWlzc2lvbnMtdGVtcGxhdGVcclxuICAgICAgICAgICAgW2RvY3VtZW50SWRdPVwiZG9jdW1lbnRJZFwiXHJcbiAgICAgICAgICAgIFt1c2VyVmlzaWJsZVBlcm1pc3Npb25zXT1cInVzZXJWaXNpYmxlUGVybWlzc2lvbnNcIlxyXG4gICAgICAgICAgICAoZ2V0UGVybWlzc2lvbnMpPVwiZ2V0UGVybWlzc2lvbnMoKVwiXHJcbiAgICAgICAgICAgIFtwZXJtaXNzaW9uc0FycmF5XT1cInNoYXJlUGVybWlzc2lvbnNcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2FwcC1wZXJtaXNzaW9ucy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLXdvcmtmbG93UGVybWlzc2lvbnMgTGlzdCBJdGVtcy0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIndvcmtmbG93UGVybWlzc2lvbnMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWdyYXktNTAwIHRleHQtYmFzZVwiPnt7XHJcbiAgICAgICAgICAgICAgICBcInBlcm1pc3Npb24ud29ya2Zsb3dQZXJtaXNzaW9uc1wiIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlciBjbGFzcz1cIm1hdC1kaXZpZGVyXCI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8YXBwLXBlcm1pc3Npb25zLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIFtkb2N1bWVudElkXT1cImRvY3VtZW50SWRcIlxyXG4gICAgICAgICAgICBbdXNlclZpc2libGVQZXJtaXNzaW9uc109XCJ1c2VyVmlzaWJsZVBlcm1pc3Npb25zXCJcclxuICAgICAgICAgICAgKGdldFBlcm1pc3Npb25zKT1cImdldFBlcm1pc3Npb25zKClcIlxyXG4gICAgICAgICAgICBbcGVybWlzc2lvbnNBcnJheV09XCJ3b3JrZmxvd1Blcm1pc3Npb25zXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9hcHAtcGVybWlzc2lvbnMtdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2xvYWRlcj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LWZ1bGwgaC1mdWxsXCI+XHJcbiAgICAgICAgPG1hdC1zcGlubmVyIFt2YWx1ZV09XCI5MFwiIFtzdHJva2VXaWR0aF09XCI2XCIgb3ZlcmxheT1cInRydWVcIiBbZGlhbWV0ZXJdPVwiNzVcIj48L21hdC1zcGlubmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -0,0 +1,117 @@
1
+ import { Component, Input, EventEmitter, Output } from '@angular/core';
2
+ import { MatDialogConfig } from '@angular/material/dialog';
3
+ import { AddPermissionsDialogComponent } from '../add-permissions-dialog/add-permissions-dialog.component';
4
+ import { ConfirmationDialogComponent } from '../../confirmation-dialog/confirmation-dialog/confirmation-dialog.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../permission.service";
7
+ import * as i2 from "../../custom-toastr/services/custom-toastr.service";
8
+ import * as i3 from "@angular/material/dialog";
9
+ import * as i4 from "@angular/material/icon";
10
+ import * as i5 from "@angular/common";
11
+ import * as i6 from "@ngx-translate/core";
12
+ export class PermissionsTemplateComponent {
13
+ constructor(permissionService, tosterService, dialog) {
14
+ this.permissionService = permissionService;
15
+ this.tosterService = tosterService;
16
+ this.dialog = dialog;
17
+ this.allowDeleteAndEdit = false;
18
+ this.permissionsArray = [];
19
+ this.getPermissions = new EventEmitter();
20
+ }
21
+ ngOnInit() {
22
+ }
23
+ deletePermission(permission) {
24
+ this.permissionService.deleteLocalPermissions(this.documentId, permission).subscribe(res => {
25
+ this.getPermissions.emit();
26
+ this.tosterService.show('success', 'TOASTER.SUCCESS', "TOASTER.PERMISSION_REMOVE_SUCCESS");
27
+ }, err => {
28
+ this.tosterService.show('error', 'TOASTER.ERROR', 'TOASTER.PERMISSION_REMOVE_FAIL');
29
+ });
30
+ }
31
+ editPermission(permission, username, userVisiblePermissions, begin, end) {
32
+ const dialogConfig = new MatDialogConfig();
33
+ dialogConfig.disableClose = false;
34
+ dialogConfig.autoFocus = true;
35
+ dialogConfig.data = {
36
+ id: this.documentId,
37
+ rights: this.userVisiblePermissions,
38
+ state: "update",
39
+ aclId: permission,
40
+ username: username,
41
+ editableRight: userVisiblePermissions,
42
+ editableBegin: begin,
43
+ editableEnd: end,
44
+ };
45
+ dialogConfig.width = '35%';
46
+ dialogConfig.height = '70%';
47
+ // befor opening modal we diable clickout side effect to prevent details side menu from closing when clicking in the modal
48
+ this.permissionService.disableClickOutSide = true;
49
+ let addDialogRef = this.dialog.open(AddPermissionsDialogComponent, dialogConfig);
50
+ addDialogRef.afterClosed().subscribe(res => {
51
+ // return click outside effect to work to close side menu when clicking out side it
52
+ this.permissionService.disableClickOutSide = false;
53
+ this.getPermissions.emit();
54
+ });
55
+ }
56
+ openDialog(permission) {
57
+ // befor opening modal we diable clickout side effect to prevent details side menu from closing when clicking in the modal
58
+ this.permissionService.disableClickOutSide = true;
59
+ let dialogRef = this.dialog.open(ConfirmationDialogComponent, {
60
+ width: '510px',
61
+ data: {
62
+ title: 'confirmDialog.confirm',
63
+ message: 'confirmDialog.Rem_Per',
64
+ confirmButton: `BUTTONS.Remove`,
65
+ cancelButton: "BUTTONS.Cancel"
66
+ },
67
+ disableClose: true,
68
+ });
69
+ dialogRef.afterClosed().subscribe((result) => {
70
+ // return click outside effect to work to close side menu when clicking out side it
71
+ this.permissionService.disableClickOutSide = false;
72
+ if (result) {
73
+ this.deletePermission(permission);
74
+ }
75
+ });
76
+ // const dialogRef = this.fuseConfirmationService.open(
77
+ // {
78
+ // dismissible: true,
79
+ // title: this.translateService.instant("confirmDialog.confirm"),
80
+ // message: this.translateService.instant("confirmDialog.Rem_Per"),
81
+ // actions: {
82
+ // confirm: {
83
+ // show: true,
84
+ // label: this.translateService.instant("BUTTONS.Remove"),
85
+ // color: "warn"
86
+ // },
87
+ // cancel: {
88
+ // show: true,
89
+ // label: this.translateService.instant("BUTTONS.Cancel"),
90
+ // }
91
+ // }
92
+ // }
93
+ // );
94
+ }
95
+ }
96
+ PermissionsTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionsTemplateComponent, deps: [{ token: i1.PermissionService }, { token: i2.CustomToastrService }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
97
+ PermissionsTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: PermissionsTemplateComponent, selector: "app-permissions-template", inputs: { allowDeleteAndEdit: "allowDeleteAndEdit", documentId: "documentId", userVisiblePermissions: "userVisiblePermissions", permissionsArray: "permissionsArray" }, outputs: { getPermissions: "getPermissions" }, ngImport: i0, template: "<div class=\"flex flex-col\">\r\n <div *ngFor=\"let p of permissionsArray\">\r\n <!-- Info -->\r\n <div class=\"flex single-permssion\" *ngIf=\"(p.granted && p.username['entity-type']== 'user') || (p.granted && (p.username['entity-type']== 'group' && (p.username.id != 'administrators' && p.username.id != 'members')))\">\r\n <mat-icon>lock</mat-icon>\r\n <div class=\"flex flex-auto justify-between ml-3\">\r\n <!-- Info -->\r\n <div>\r\n <div class=\"font-bold text-base text-gray-900 w-64\">\r\n <span *ngIf=\"p.username['entity-type'] == 'user'; else group\">\r\n {{p.username.fullName}}\r\n </span>\r\n <ng-template #group>\r\n {{p.username.grouplabel}}\r\n </ng-template>\r\n - {{p.permissionLabel}}</div>\r\n <div class=\"mt-0.5 text-secondary\">\r\n <div class=\"flex flex-row gap-x-14\">\r\n <div class=\"flex flex-col\">\r\n <div *ngIf=\"p.begin != null;else permanent\">\r\n {{p.begin | date:'dd/MM/yyyy'}}\r\n <span *ngIf=\"p.end != null\">- {{ p.end | date:'dd/MM/yyyy' }}</span>\r\n </div>\r\n <ng-template #permanent>\r\n <h1>{{\"permission.permanent\" | translate }}</h1>\r\n </ng-template>\r\n <div class=\"text-secondary\" *ngIf=\"p.creator != null\">{{\"permission.granted\" | translate }} {{p.creator['fullName']}}</div>\r\n </div>\r\n <!-- Actions -->\r\n <div class=\"flex\" *ngIf=\"allowDeleteAndEdit && p.currentUserIsPermissionOwner \r\n && p.permission != 'Everything'\">\r\n <button mat-icon-button\r\n (click)=\"editPermission(p.id,p.username,p.permission,p.begin,p.end)\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:pencil-alt'\"></mat-icon>\r\n </button>\r\n \r\n <button mat-icon-button (click)=\"openDialog(p.id)\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:trash'\"></mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".single-permssion{box-shadow:0 0 12.5px #0000001a;border-radius:8px;padding:15px;margin:10px;font-size:12px}\n"], components: [{ type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "date": i5.DatePipe, "translate": i6.TranslatePipe } });
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionsTemplateComponent, decorators: [{
99
+ type: Component,
100
+ args: [{
101
+ selector: 'app-permissions-template',
102
+ templateUrl: './permissions-template.component.html',
103
+ styleUrls: ['./permissions-template.component.scss']
104
+ }]
105
+ }], ctorParameters: function () { return [{ type: i1.PermissionService }, { type: i2.CustomToastrService }, { type: i3.MatDialog }]; }, propDecorators: { allowDeleteAndEdit: [{
106
+ type: Input
107
+ }], documentId: [{
108
+ type: Input
109
+ }], userVisiblePermissions: [{
110
+ type: Input
111
+ }], permissionsArray: [{
112
+ type: Input,
113
+ args: ['permissionsArray']
114
+ }], getPermissions: [{
115
+ type: Output
116
+ }] } });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy10ZW1wbGF0ZS9wZXJtaXNzaW9ucy10ZW1wbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLXRlbXBsYXRlL3Blcm1pc3Npb25zLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBRTNHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZFQUE2RSxDQUFDOzs7Ozs7OztBQU8xSCxNQUFNLE9BQU8sNEJBQTRCO0lBT3ZDLFlBQW9CLGlCQUFvQyxFQUM5QyxhQUFrQyxFQUNsQyxNQUFpQjtRQUZQLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFQbEIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBR1QscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUdmLENBQUM7SUFFaEMsUUFBUTtJQUNSLENBQUM7SUFFRCxnQkFBZ0IsQ0FB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LGtFQUFrRTtRQUNsRSx3QkFBd0I7UUFDeEIsV0FBVztRQUNYLGtCQUFrQjtRQUNsQixzQkFBc0I7UUFDdEIsa0VBQWtFO1FBQ2xFLFVBQVU7UUFDVixRQUFRO1FBQ1IsTUFBTTtRQUNOLEtBQUs7SUFFUCxDQUFDOzt5SEF6RlUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsdVJDWnpDLDZ6RkE4Q007MkZEbENPLDRCQUE0QjtrQkFMeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxXQUFXLEVBQUUsdUNBQXVDO29CQUNwRCxTQUFTLEVBQUUsQ0FBQyx1Q0FBdUMsQ0FBQztpQkFDckQ7a0tBR1Usa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNxQixnQkFBZ0I7c0JBQTFDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNmLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBZGRQZXJtaXNzaW9uc0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cvYWRkLXBlcm1pc3Npb25zLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21Ub2FzdHJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY3VzdG9tLXRvYXN0ci9zZXJ2aWNlcy9jdXN0b20tdG9hc3RyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcGVybWlzc2lvbnMtdGVtcGxhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wZXJtaXNzaW9ucy10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGVybWlzc2lvbnMtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNUZW1wbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGFsbG93RGVsZXRlQW5kRWRpdCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRvY3VtZW50SWQ7XHJcbiAgQElucHV0KCkgdXNlclZpc2libGVQZXJtaXNzaW9ucztcclxuICBASW5wdXQoJ3Blcm1pc3Npb25zQXJyYXknKSBwZXJtaXNzaW9uc0FycmF5ID0gW107XHJcbiAgQE91dHB1dCgpIGdldFBlcm1pc3Npb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b3N0ZXJTZXJ2aWNlOiBDdXN0b21Ub2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlUGVybWlzc2lvbihwZXJtaXNzaW9uKSB7XHJcbiAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5kZWxldGVMb2NhbFBlcm1pc3Npb25zKHRoaXMuZG9jdW1lbnRJZCwgcGVybWlzc2lvbikuc3Vic2NyaWJlKFxyXG4gICAgcmVzID0+IHtcclxuICAgICAgdGhpcy5nZXRQZXJtaXNzaW9ucy5lbWl0KCk7XHJcbiAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5QRVJNSVNTSU9OX1JFTU9WRV9TVUNDRVNTXCIpXHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InLCAnVE9BU1RFUi5FUlJPUicsICdUT0FTVEVSLlBFUk1JU1NJT05fUkVNT1ZFX0ZBSUwnKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBlZGl0UGVybWlzc2lvbihwZXJtaXNzaW9uLCB1c2VybmFtZSwgdXNlclZpc2libGVQZXJtaXNzaW9ucywgYmVnaW4sIGVuZCkge1xyXG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xyXG4gICAgZGlhbG9nQ29uZmlnLmRpc2FibGVDbG9zZSA9IGZhbHNlO1xyXG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBkaWFsb2dDb25maWcuZGF0YSA9IHtcclxuICAgICAgaWQ6IHRoaXMuZG9jdW1lbnRJZCxcclxuICAgICAgcmlnaHRzOiB0aGlzLnVzZXJWaXNpYmxlUGVybWlzc2lvbnMsXHJcbiAgICAgIHN0YXRlOiBcInVwZGF0ZVwiLFxyXG4gICAgICBhY2xJZDogcGVybWlzc2lvbixcclxuICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lLFxyXG4gICAgICBlZGl0YWJsZVJpZ2h0OiB1c2VyVmlzaWJsZVBlcm1pc3Npb25zLFxyXG4gICAgICBlZGl0YWJsZUJlZ2luOiBiZWdpbixcclxuICAgICAgZWRpdGFibGVFbmQ6IGVuZCxcclxuICAgIH07XHJcbiAgICBkaWFsb2dDb25maWcud2lkdGggPSAnMzUlJztcclxuICAgIGRpYWxvZ0NvbmZpZy5oZWlnaHQgPSAnNzAlJztcclxuICAgIC8vIGJlZm9yIG9wZW5pbmcgbW9kYWwgd2UgZGlhYmxlIGNsaWNrb3V0IHNpZGUgZWZmZWN0IHRvIHByZXZlbnQgZGV0YWlscyBzaWRlIG1lbnUgZnJvbSBjbG9zaW5nIHdoZW4gY2xpY2tpbmcgaW4gdGhlIG1vZGFsXHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmRpc2FibGVDbGlja091dFNpZGUgPSB0cnVlO1xyXG4gICAgbGV0IGFkZERpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWRkUGVybWlzc2lvbnNEaWFsb2dDb21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XHJcbiAgICBhZGREaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgLy8gcmV0dXJuIGNsaWNrIG91dHNpZGUgZWZmZWN0IHRvIHdvcmsgdG8gY2xvc2Ugc2lkZSBtZW51IHdoZW4gY2xpY2tpbmcgb3V0IHNpZGUgaXRcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5kaXNhYmxlQ2xpY2tPdXRTaWRlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZ2V0UGVybWlzc2lvbnMuZW1pdCgpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb3BlbkRpYWxvZyhwZXJtaXNzaW9uKSB7XHJcbiAgICAvLyBiZWZvciBvcGVuaW5nIG1vZGFsIHdlIGRpYWJsZSBjbGlja291dCBzaWRlIGVmZmVjdCB0byBwcmV2ZW50IGRldGFpbHMgc2lkZSBtZW51IGZyb20gY2xvc2luZyB3aGVuIGNsaWNraW5nIGluIHRoZSBtb2RhbFxyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5kaXNhYmxlQ2xpY2tPdXRTaWRlID0gdHJ1ZTtcclxuICAgIGxldCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzUxMHB4JyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgICAgdGl0bGU6ICdjb25maXJtRGlhbG9nLmNvbmZpcm0nLFxyXG4gICAgICAgICAgbWVzc2FnZTogJ2NvbmZpcm1EaWFsb2cuUmVtX1BlcicsXHJcbiAgICAgICAgICBjb25maXJtQnV0dG9uIDogYEJVVFRPTlMuUmVtb3ZlYCxcclxuICAgICAgICAgIGNhbmNlbEJ1dHRvbiA6IFwiQlVUVE9OUy5DYW5jZWxcIlxyXG4gICAgICB9LFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgfSk7XHJcbiAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgIC8vIHJldHVybiBjbGljayBvdXRzaWRlIGVmZmVjdCB0byB3b3JrIHRvIGNsb3NlIHNpZGUgbWVudSB3aGVuIGNsaWNraW5nIG91dCBzaWRlIGl0XHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmRpc2FibGVDbGlja091dFNpZGUgPSBmYWxzZTtcclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgdGhpcy5kZWxldGVQZXJtaXNzaW9uKHBlcm1pc3Npb24pXHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgICAvLyBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmZ1c2VDb25maXJtYXRpb25TZXJ2aWNlLm9wZW4oXHJcbiAgICAvLyAgIHtcclxuICAgIC8vICAgICBkaXNtaXNzaWJsZTogdHJ1ZSxcclxuICAgIC8vICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJjb25maXJtRGlhbG9nLmNvbmZpcm1cIiksXHJcbiAgICAvLyAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJjb25maXJtRGlhbG9nLlJlbV9QZXJcIiksXHJcbiAgICAvLyAgICAgYWN0aW9uczoge1xyXG4gICAgLy8gICAgICAgY29uZmlybToge1xyXG4gICAgLy8gICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgLy8gICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJCVVRUT05TLlJlbW92ZVwiKSxcclxuICAgIC8vICAgICAgICAgY29sb3I6IFwid2FyblwiXHJcbiAgICAvLyAgICAgICB9LFxyXG4gICAgLy8gICAgICAgY2FuY2VsOiB7XHJcbiAgICAvLyAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAvLyAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcIkJVVFRPTlMuQ2FuY2VsXCIpLFxyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfVxyXG4gICAgLy8gKTtcclxuXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgcCBvZiBwZXJtaXNzaW9uc0FycmF5XCI+XHJcbiAgICAgICAgPCEtLSBJbmZvIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHNpbmdsZS1wZXJtc3Npb25cIiAqbmdJZj1cIihwLmdyYW50ZWQgJiYgcC51c2VybmFtZVsnZW50aXR5LXR5cGUnXT09ICd1c2VyJykgfHwgKHAuZ3JhbnRlZCAmJiAocC51c2VybmFtZVsnZW50aXR5LXR5cGUnXT09ICdncm91cCcgJiYgKHAudXNlcm5hbWUuaWQgIT0gJ2FkbWluaXN0cmF0b3JzJyAmJiBwLnVzZXJuYW1lLmlkICE9ICdtZW1iZXJzJykpKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+bG9jazwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtYXV0byBqdXN0aWZ5LWJldHdlZW4gbWwtM1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBJbmZvIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1ib2xkIHRleHQtYmFzZSB0ZXh0LWdyYXktOTAwIHctNjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwLnVzZXJuYW1lWydlbnRpdHktdHlwZSddID09ICd1c2VyJzsgZWxzZSBncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3twLnVzZXJuYW1lLmZ1bGxOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2dyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3twLnVzZXJuYW1lLmdyb3VwbGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAtIHt7cC5wZXJtaXNzaW9uTGFiZWx9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0wLjUgdGV4dC1zZWNvbmRhcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLXgtMTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInAuYmVnaW4gIT0gbnVsbDtlbHNlIHBlcm1hbmVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3AuYmVnaW4gfCBkYXRlOidkZC9NTS95eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicC5lbmQgIT0gbnVsbFwiPi0ge3sgcC5lbmQgfCBkYXRlOidkZC9NTS95eXl5JyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Blcm1hbmVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPnt7XCJwZXJtaXNzaW9uLnBlcm1hbmVudFwiIHwgdHJhbnNsYXRlIH19PC9oMT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiICpuZ0lmPVwicC5jcmVhdG9yICE9IG51bGxcIj57e1wicGVybWlzc2lvbi5ncmFudGVkXCIgfCB0cmFuc2xhdGUgfX0ge3twLmNyZWF0b3JbJ2Z1bGxOYW1lJ119fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGlvbnMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiICpuZ0lmPVwiYWxsb3dEZWxldGVBbmRFZGl0ICYmIHAuY3VycmVudFVzZXJJc1Blcm1pc3Npb25Pd25lciBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHAucGVybWlzc2lvbiAhPSAnRXZlcnl0aGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdFBlcm1pc3Npb24ocC5pZCxwLnVzZXJuYW1lLHAucGVybWlzc2lvbixwLmJlZ2luLHAuZW5kKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19vdXRsaW5lOnBlbmNpbC1hbHQnXCI+PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib3BlbkRpYWxvZyhwLmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19vdXRsaW5lOnRyYXNoJ1wiPjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -0,0 +1,71 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { PermissionsComponent } from './permissions/permissions.component';
4
+ import { AddPermissionsDialogComponent } from './add-permissions-dialog/add-permissions-dialog.component';
5
+ import { PermissionsTemplateComponent } from './permissions-template/permissions-template.component';
6
+ import { TranslateModule } from '@ngx-translate/core';
7
+ import { MatDividerModule } from '@angular/material/divider';
8
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
9
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
10
+ import { SharedServicesModule } from '../../shared-services/shared-services.module';
11
+ import { MatIconModule } from '@angular/material/icon';
12
+ import { PipesModule } from '../../pipes/pipes.module';
13
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
14
+ import { DirectiveModule } from '../../directive/directive.module';
15
+ import { NgSelectModule } from '@ng-select/ng-select';
16
+ import { AvatarModule } from '../avatar/avatar.module';
17
+ import * as i0 from "@angular/core";
18
+ export class PermissionsModule {
19
+ }
20
+ PermissionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
21
+ PermissionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionsModule, declarations: [PermissionsComponent, AddPermissionsDialogComponent, PermissionsTemplateComponent], imports: [CommonModule,
22
+ TranslateModule,
23
+ MatDividerModule,
24
+ MatProgressBarModule,
25
+ MatProgressSpinnerModule,
26
+ SharedServicesModule,
27
+ MatIconModule,
28
+ PipesModule,
29
+ FormsModule,
30
+ ReactiveFormsModule,
31
+ DirectiveModule,
32
+ NgSelectModule,
33
+ AvatarModule], exports: [PermissionsComponent, AddPermissionsDialogComponent, PermissionsTemplateComponent] });
34
+ PermissionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionsModule, imports: [[
35
+ CommonModule,
36
+ TranslateModule,
37
+ MatDividerModule,
38
+ MatProgressBarModule,
39
+ MatProgressSpinnerModule,
40
+ SharedServicesModule,
41
+ MatIconModule,
42
+ PipesModule,
43
+ FormsModule,
44
+ ReactiveFormsModule,
45
+ DirectiveModule,
46
+ NgSelectModule,
47
+ AvatarModule
48
+ ]] });
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionsModule, decorators: [{
50
+ type: NgModule,
51
+ args: [{
52
+ declarations: [PermissionsComponent, AddPermissionsDialogComponent, PermissionsTemplateComponent],
53
+ imports: [
54
+ CommonModule,
55
+ TranslateModule,
56
+ MatDividerModule,
57
+ MatProgressBarModule,
58
+ MatProgressSpinnerModule,
59
+ SharedServicesModule,
60
+ MatIconModule,
61
+ PipesModule,
62
+ FormsModule,
63
+ ReactiveFormsModule,
64
+ DirectiveModule,
65
+ NgSelectModule,
66
+ AvatarModule
67
+ ],
68
+ exports: [PermissionsComponent, AddPermissionsDialogComponent, PermissionsTemplateComponent],
69
+ }]
70
+ }] });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDMUcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDckcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQXVCdkQsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQWxCYixvQkFBb0IsRUFBRSw2QkFBNkIsRUFBQyw0QkFBNEIsYUFFN0YsWUFBWTtRQUNaLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsb0JBQW9CO1FBQ3BCLHdCQUF3QjtRQUN4QixvQkFBb0I7UUFDcEIsYUFBYTtRQUNiLFdBQVc7UUFDWCxXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGVBQWU7UUFDZixjQUFjO1FBQ2QsWUFBWSxhQUVILG9CQUFvQixFQUFFLDZCQUE2QixFQUFDLDRCQUE0QjsrR0FFaEYsaUJBQWlCLFlBakJuQjtZQUNQLFlBQVk7WUFDWixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLG9CQUFvQjtZQUNwQix3QkFBd0I7WUFDeEIsb0JBQW9CO1lBQ3BCLGFBQWE7WUFDYixXQUFXO1lBQ1gsV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsY0FBYztZQUNkLFlBQVk7U0FDYjsyRkFHVSxpQkFBaUI7a0JBbkI3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG9CQUFvQixFQUFFLDZCQUE2QixFQUFDLDRCQUE0QixDQUFDO29CQUNoRyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUcsQ0FBQyxvQkFBb0IsRUFBRSw2QkFBNkIsRUFBQyw0QkFBNEIsQ0FBQztpQkFDN0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJy4vcGVybWlzc2lvbnMvcGVybWlzc2lvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWRkUGVybWlzc2lvbnNEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cvYWRkLXBlcm1pc3Npb25zLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uc1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9wZXJtaXNzaW9ucy10ZW1wbGF0ZS9wZXJtaXNzaW9ucy10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xyXG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlc01vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy9zaGFyZWQtc2VydmljZXMubW9kdWxlJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBQaXBlc01vZHVsZSB9IGZyb20gJy4uLy4uL3BpcGVzL3BpcGVzLm1vZHVsZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmVNb2R1bGUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvZGlyZWN0aXZlLm1vZHVsZSc7XHJcbmltcG9ydCB7IE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xyXG5pbXBvcnQgeyBBdmF0YXJNb2R1bGUgfSBmcm9tICcuLi9hdmF0YXIvYXZhdGFyLm1vZHVsZSc7XHJcblxyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbUGVybWlzc2lvbnNDb21wb25lbnQsIEFkZFBlcm1pc3Npb25zRGlhbG9nQ29tcG9uZW50LFBlcm1pc3Npb25zVGVtcGxhdGVDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIE1hdERpdmlkZXJNb2R1bGUsXHJcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcclxuICAgIFNoYXJlZFNlcnZpY2VzTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIFBpcGVzTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRGlyZWN0aXZlTW9kdWxlLFxyXG4gICAgTmdTZWxlY3RNb2R1bGUsXHJcbiAgICBBdmF0YXJNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHMgOiBbUGVybWlzc2lvbnNDb21wb25lbnQgLEFkZFBlcm1pc3Npb25zRGlhbG9nQ29tcG9uZW50LFBlcm1pc3Npb25zVGVtcGxhdGVDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import { DynamicFormModule } from '../dynamic-form/dynamic-form.module';
5
+ import { TranslateModule } from '@ngx-translate/core';
6
+ import { NgSelectModule } from '@ng-select/ng-select';
7
+ import { AvatarModule } from '../avatar/avatar.module';
8
+ import { SelectUsersByDepartmentsComponent } from './select-users-by-departments/select-users-by-departments.component';
9
+ import * as i0 from "@angular/core";
10
+ export class SelectUsersByDepartmentModule {
11
+ }
12
+ SelectUsersByDepartmentModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: SelectUsersByDepartmentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ SelectUsersByDepartmentModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: SelectUsersByDepartmentModule, declarations: [SelectUsersByDepartmentsComponent], imports: [CommonModule,
14
+ FormsModule,
15
+ ReactiveFormsModule,
16
+ DynamicFormModule,
17
+ TranslateModule,
18
+ NgSelectModule,
19
+ AvatarModule], exports: [SelectUsersByDepartmentsComponent] });
20
+ SelectUsersByDepartmentModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: SelectUsersByDepartmentModule, imports: [[
21
+ CommonModule,
22
+ FormsModule,
23
+ ReactiveFormsModule,
24
+ DynamicFormModule,
25
+ TranslateModule,
26
+ NgSelectModule,
27
+ AvatarModule
28
+ ]] });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: SelectUsersByDepartmentModule, decorators: [{
30
+ type: NgModule,
31
+ args: [{
32
+ declarations: [SelectUsersByDepartmentsComponent],
33
+ imports: [
34
+ CommonModule,
35
+ FormsModule,
36
+ ReactiveFormsModule,
37
+ DynamicFormModule,
38
+ TranslateModule,
39
+ NgSelectModule,
40
+ AvatarModule
41
+ ],
42
+ exports: [
43
+ SelectUsersByDepartmentsComponent
44
+ ]
45
+ }]
46
+ }] });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudC9zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFFQUFxRSxDQUFDOztBQW1CeEgsTUFBTSxPQUFPLDZCQUE2Qjs7MEhBQTdCLDZCQUE2QjsySEFBN0IsNkJBQTZCLGlCQWR6QixpQ0FBaUMsYUFFOUMsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixjQUFjO1FBQ2QsWUFBWSxhQUdaLGlDQUFpQzsySEFHeEIsNkJBQTZCLFlBYi9CO1lBQ1AsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixjQUFjO1lBQ2QsWUFBWTtTQUNiOzJGQUtVLDZCQUE2QjtrQkFmekMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztvQkFDakQsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFDO3dCQUNOLGlDQUFpQztxQkFDbEM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1Nb2R1bGUgfSBmcm9tICcuLi9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLm1vZHVsZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuaW1wb3J0IHsgQXZhdGFyTW9kdWxlIH0gZnJvbSAnLi4vYXZhdGFyL2F2YXRhci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTZWxlY3RVc2Vyc0J5RGVwYXJ0bWVudHNDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdC11c2Vycy1ieS1kZXBhcnRtZW50cy9zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudHMuY29tcG9uZW50JztcclxuXHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtTZWxlY3RVc2Vyc0J5RGVwYXJ0bWVudHNDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIER5bmFtaWNGb3JtTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgTmdTZWxlY3RNb2R1bGUsXHJcbiAgICBBdmF0YXJNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6W1xyXG4gICAgU2VsZWN0VXNlcnNCeURlcGFydG1lbnRzQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0VXNlcnNCeURlcGFydG1lbnRNb2R1bGUgeyB9XHJcbiJdfQ==