@firestitch/app-acl 9.0.18 → 9.0.19

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 (80) hide show
  1. package/app/components/acl-entries/acl-entries.component.d.ts +27 -27
  2. package/app/components/acl-entry/acl-entry.component.d.ts +23 -23
  3. package/app/components/acl-entry/index.d.ts +1 -1
  4. package/app/components/acl-object-roles/acl-object-roles.component.d.ts +14 -14
  5. package/app/components/acl-permission-popover/acl-permission-popover.component.d.ts +9 -9
  6. package/app/components/acl-permission-popover/index.d.ts +1 -1
  7. package/app/components/acl-role/acl-role.component.d.ts +43 -42
  8. package/app/components/acl-role-popover/acl-role-popover.component.d.ts +10 -10
  9. package/app/components/acl-roles/acl-roles.component.d.ts +31 -31
  10. package/app/consts/acl-role-accesses.d.ts +5 -5
  11. package/app/enums/acl-role-access.d.ts +6 -6
  12. package/app/enums/index.d.ts +1 -1
  13. package/app/fs-app-acl.module.d.ts +4 -4
  14. package/app/injectors/app-acl-config.injector.d.ts +2 -2
  15. package/app/injectors/index.d.ts +1 -1
  16. package/app/interfaces/acl-entry-data.d.ts +11 -11
  17. package/app/interfaces/acl-entry.d.ts +18 -18
  18. package/app/interfaces/acl-level.d.ts +3 -3
  19. package/app/interfaces/acl-object-entry.d.ts +11 -11
  20. package/app/interfaces/acl-object-role.d.ts +6 -6
  21. package/app/interfaces/acl-object.d.ts +4 -4
  22. package/app/interfaces/acl-permission.d.ts +7 -7
  23. package/app/interfaces/acl-role.d.ts +15 -15
  24. package/app/interfaces/app-acl-config.d.ts +7 -7
  25. package/app/interfaces/index.d.ts +11 -11
  26. package/app/interfaces/name-value.d.ts +4 -4
  27. package/app/services/app-acl.service.d.ts +13 -13
  28. package/app/services/index.d.ts +1 -1
  29. package/bundles/firestitch-app-acl.umd.js +854 -850
  30. package/bundles/firestitch-app-acl.umd.js.map +1 -1
  31. package/bundles/firestitch-app-acl.umd.min.js +2 -2
  32. package/bundles/firestitch-app-acl.umd.min.js.map +1 -1
  33. package/esm2015/app/components/acl-entries/acl-entries.component.js +176 -176
  34. package/esm2015/app/components/acl-entry/acl-entry.component.js +87 -87
  35. package/esm2015/app/components/acl-entry/index.js +1 -1
  36. package/esm2015/app/components/acl-object-roles/acl-object-roles.component.js +62 -62
  37. package/esm2015/app/components/acl-permission-popover/acl-permission-popover.component.js +34 -34
  38. package/esm2015/app/components/acl-permission-popover/index.js +1 -1
  39. package/esm2015/app/components/acl-role/acl-role.component.js +191 -187
  40. package/esm2015/app/components/acl-role-popover/acl-role-popover.component.js +40 -40
  41. package/esm2015/app/components/acl-roles/acl-roles.component.js +157 -157
  42. package/esm2015/app/consts/acl-role-accesses.js +7 -7
  43. package/esm2015/app/enums/acl-role-access.js +7 -7
  44. package/esm2015/app/enums/index.js +3 -3
  45. package/esm2015/app/fs-app-acl.module.js +81 -81
  46. package/esm2015/app/injectors/app-acl-config.injector.js +2 -2
  47. package/esm2015/app/injectors/index.js +3 -3
  48. package/esm2015/app/interfaces/index.js +1 -1
  49. package/esm2015/app/services/app-acl.service.js +80 -80
  50. package/esm2015/app/services/index.js +1 -1
  51. package/esm2015/firestitch-app-acl.js +10 -10
  52. package/esm2015/public_api.js +5 -5
  53. package/esm5/app/components/acl-entries/acl-entries.component.js +179 -179
  54. package/esm5/app/components/acl-entry/acl-entry.component.js +92 -92
  55. package/esm5/app/components/acl-entry/index.js +1 -1
  56. package/esm5/app/components/acl-object-roles/acl-object-roles.component.js +63 -63
  57. package/esm5/app/components/acl-permission-popover/acl-permission-popover.component.js +36 -36
  58. package/esm5/app/components/acl-permission-popover/index.js +1 -1
  59. package/esm5/app/components/acl-role/acl-role.component.js +201 -197
  60. package/esm5/app/components/acl-role-popover/acl-role-popover.component.js +42 -42
  61. package/esm5/app/components/acl-roles/acl-roles.component.js +162 -162
  62. package/esm5/app/consts/acl-role-accesses.js +7 -7
  63. package/esm5/app/enums/acl-role-access.js +7 -7
  64. package/esm5/app/enums/index.js +3 -3
  65. package/esm5/app/fs-app-acl.module.js +85 -85
  66. package/esm5/app/injectors/app-acl-config.injector.js +2 -2
  67. package/esm5/app/injectors/index.js +3 -3
  68. package/esm5/app/interfaces/index.js +1 -1
  69. package/esm5/app/services/app-acl.service.js +85 -85
  70. package/esm5/app/services/index.js +1 -1
  71. package/esm5/firestitch-app-acl.js +10 -10
  72. package/esm5/public_api.js +5 -5
  73. package/fesm2015/firestitch-app-acl.js +821 -817
  74. package/fesm2015/firestitch-app-acl.js.map +1 -1
  75. package/fesm5/firestitch-app-acl.js +858 -854
  76. package/fesm5/firestitch-app-acl.js.map +1 -1
  77. package/firestitch-app-acl.d.ts +11 -11
  78. package/firestitch-app-acl.metadata.json +1 -1
  79. package/package.json +1 -1
  80. package/public_api.d.ts +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"firestitch-app-acl.js","sources":["ng://@firestitch/app-acl/app/enums/acl-role-access.ts","ng://@firestitch/app-acl/app/enums/index.ts","ng://@firestitch/app-acl/app/consts/acl-role-accesses.ts","ng://@firestitch/app-acl/app/injectors/app-acl-config.injector.ts","ng://@firestitch/app-acl/app/services/app-acl.service.ts","ng://@firestitch/app-acl/app/components/acl-role/acl-role.component.ts","ng://@firestitch/app-acl/app/components/acl-roles/acl-roles.component.ts","ng://@firestitch/app-acl/app/components/acl-permission-popover/acl-permission-popover.component.ts","ng://@firestitch/app-acl/app/components/acl-role-popover/acl-role-popover.component.ts","ng://@firestitch/app-acl/app/components/acl-entry/acl-entry.component.ts","ng://@firestitch/app-acl/app/components/acl-entries/acl-entries.component.ts","ng://@firestitch/app-acl/app/components/acl-object-roles/acl-object-roles.component.ts","ng://@firestitch/app-acl/app/fs-app-acl.module.ts","ng://@firestitch/app-acl/app/injectors/index.ts","ng://@firestitch/app-acl/firestitch-app-acl.ts"],"sourcesContent":["export enum AclRoleAccess {\n None = 0,\n Read = 5,\n Write = 10,\n Full = 15,\n}\n","// start:ng42.barrel\nexport * from './acl-role-access';\n// end:ng42.barrel\n\n","\nimport { AclRoleAccess } from '../enums';\n\nexport const AclRoleAccesses = [\n { name: 'None', value: AclRoleAccess.None },\n { name: 'Read', value: AclRoleAccess.Read },\n { name: 'Write', value: AclRoleAccess.Write },\n { name: 'Full', value: AclRoleAccess.Full }\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_APP_ACL_CONFIG = new InjectionToken<any[]>('fs-app-acl-config');\n","import { Injectable, Inject } from '@angular/core';\n\nimport { list } from '@firestitch/common';\n\nimport { map } from 'rxjs/operators';\nimport { ReplaySubject } from 'rxjs';\n\nimport { isArray } from 'lodash-es';\n\n\nimport { FS_APP_ACL_CONFIG } from './../injectors/app-acl-config.injector';\nimport { AppAclConfig, AclPermission, AclLevel } from './../interfaces';\n\nimport * as _snakecaseKeys from 'snakecase-keys';\nimport * as _camelcaseKeys from 'camelcase-keys';\n\nconst snakecaseKeys = _snakecaseKeys;\nconst camelcaseKeys = _camelcaseKeys;\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsAppAclService {\n\n private _permissions$: ReplaySubject<AclPermission[]>;\n private _levels$: ReplaySubject<AclLevel[]>;\n\n constructor(\n @Inject(FS_APP_ACL_CONFIG) private _appAclConfig: AppAclConfig,\n ) { }\n\n public getPermissions() {\n\n if (!this._permissions$) {\n this._permissions$ = new ReplaySubject();\n\n this._appAclConfig.permissions\n .pipe(\n map((data) => this.input(data)),\n )\n .subscribe((permissions) => {\n this._permissions$.next(permissions);\n this._permissions$.complete();\n });\n }\n\n return this._permissions$;\n }\n\n public getLevels() {\n\n if (!this._levels$) {\n this._levels$ = new ReplaySubject();\n\n this._appAclConfig.levels\n .pipe(\n map((data) => this.input(data)),\n )\n .subscribe((levels) => {\n this._levels$.next(levels);\n this._levels$.complete();\n });\n }\n\n return this._levels$;\n }\n\n\n public getIndexedLevels() {\n return this.getLevels()\n .pipe(\n map((data) => {\n return list(data, 'name', 'value');\n })\n );\n }\n\n public input(data) {\n if (isArray(data)) {\n return data.map(item => {\n return this._appAclConfig.case === 'snake' ? camelcaseKeys(item, { deep: true }) : item;\n });\n } else {\n return this._appAclConfig.case === 'snake' ? camelcaseKeys(data, { deep: true }) : data;\n }\n }\n\n public output(data) {\n if (isArray(data)) {\n return data.map(item => {\n return this._appAclConfig.case === 'snake' ? snakecaseKeys(item, { deep: true }) : item;\n });\n } else {\n return this._appAclConfig.case === 'snake' ? snakecaseKeys(data, { deep: true }) : data;\n }\n }\n}\n","import { Component, Inject, OnInit, ViewChild, OnDestroy } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { AclRoleAccesses } from './../../consts/acl-role-accesses';\nimport { AclRole } from './../../interfaces';\nimport { tap, takeUntil, map } from 'rxjs/operators';\n\nimport { FsMessage } from '@firestitch/message';\nimport { list } from '@firestitch/common';\nimport { FsListConfig, FsListComponent } from '@firestitch/list';\n\nimport { of, Observable, forkJoin, Subject } from 'rxjs';\nimport { FsAppAclService } from './../../services';\n\n\n@Component({\n templateUrl: './acl-role.component.html',\n styleUrls: ['./acl-role.component.scss']\n})\nexport class FsAclRoleComponent implements OnInit, OnDestroy {\n\n @ViewChild(FsListComponent) public list: FsListComponent;\n\n public aclRole: AclRole = null;\n public environment;\n public permissions: any[] = [];\n public listConfig: FsListConfig;\n public levelPermissions = [];\n public AclRoleAccesses = AclRoleAccesses;\n public indexedAccesses = {};\n public aclLevels: any[] = [];\n public indexedAclLevels = {};\n public onlyFullAccess = false;\n public AclLevels = {};\n public aclRoleConfigs = [];\n public levelAclRoleConfigs = [];\n\n private _destroy$ = new Subject();\n\n constructor(\n private readonly _appAclService: FsAppAclService,\n private readonly _dialogRef: MatDialogRef<FsAclRoleComponent>,\n private readonly _message: FsMessage,\n @Inject(MAT_DIALOG_DATA) private readonly _data: any,\n ) {}\n\n public ngOnInit(): void {\n forkJoin(\n this.getRole(),\n this._appAclService.getPermissions(),\n )\n .pipe(takeUntil(this._destroy$))\n .subscribe(([\n aclRole,\n aclPermissions,\n ]) => {\n\n this.permissions = aclPermissions;\n this.aclLevels = this._data.aclLevels;\n\n this.indexedAclLevels = list(this.aclLevels, 'name', 'value');\n this.indexedAccesses = list(AclRoleAccesses, 'name', 'value');\n\n this.aclRole = {\n ...{\n aclPermissions: [],\n allPermissions: true,\n aclRoleConfigs: [],\n permissions: {},\n level: this.aclLevels[0].value,\n },\n ...aclRole,\n };\n\n if (this.aclRole.id) {\n this.permissions.forEach((permission) => {\n let access = 0;\n\n const aclPermission = this.aclRole.aclPermissions.find((item) => {\n return item.permission === permission.value;\n });\n\n if (aclPermission) {\n access = aclPermission.access;\n }\n\n this.aclRole.permissions[permission.value] = access;\n });\n }\n\n if (this.aclRole.allPermissions) {\n this._applyMaxPermissionAccess();\n }\n\n this._updatePermissions();\n this._updateAclRoleConfigs();\n });\n\n this.listConfig = {\n status: false,\n paging: false,\n noResults: {\n message: '',\n },\n group: {\n initialExpand: true,\n groupBy: (data) => {\n return data;\n },\n compareBy: (data) => {\n return data.category || 'General';\n },\n },\n fetch: () => {\n return of({\n data: this.levelPermissions.sort((a, b) => {\n a = a.name.toUpperCase();\n b = b.name.toUpperCase();\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n\n return 0;\n }),\n });\n },\n };\n }\n\n public levelChange(): void {\n this._updatePermissions();\n this._updateAclRoleConfigs();\n setTimeout(() => {\n this.list.reload();\n });\n }\n\n public getRole(): Observable<any> {\n if (!this._data.aclRole.id) {\n return of(this._data.aclRole);\n }\n\n const query: any = {\n aclPermissions: true,\n aclRoleConfigs: true,\n };\n\n if (!this.environment) {\n query.environmentId = null;\n }\n\n return this._data.loadAclRole(this._data.aclRole, query)\n .pipe(\n map((data) => this._appAclService.input(data)),\n );\n }\n\n public save = (): Observable<any> => {\n const aclRole = {\n ...this.aclRole,\n permissions: this.levelPermissions.map((permission) => {\n return {\n value: permission.value,\n access: this.aclRole.permissions[permission.value] || 0,\n };\n }),\n aclRoleConfigs: this.levelAclRoleConfigs.map((item) => {\n return {\n id: item.id,\n value: item.value,\n data: item.data,\n };\n }),\n };\n\n return this._data.saveAclRole(this._appAclService.output(aclRole))\n .pipe(\n tap((response) => {\n this._message.success('Saved Changes');\n this.close(response);\n }),\n );\n }\n\n public close(data: any = null): void {\n this._dialogRef.close(data);\n }\n\n public allPermissionsChange(all: boolean): void {\n this._updatePermissions();\n if (all) {\n this._applyMaxPermissionAccess();\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _updatePermissions(): void {\n this.levelPermissions = this.permissions.filter((permission) => {\n return permission.levels.some((item) => {\n return item === this.aclRole.level;\n });\n });\n }\n\n private _updateAclRoleConfigs(): void {\n this.levelAclRoleConfigs = this.aclRoleConfigs.filter((item) => {\n return this.aclRole.level === item.level;\n });\n }\n\n private _applyMaxPermissionAccess(): void {\n this.permissions.forEach((permission) => {\n this.aclRole.permissions[permission.value] = Math.max(...permission.accesses);\n });\n }\n\n}\n","import { takeUntil, filter, map } from 'rxjs/operators';\nimport { Component, OnInit, OnDestroy, ChangeDetectionStrategy, Input, ChangeDetectorRef, ViewChildren, QueryList } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\nimport { list } from '@firestitch/common';\n\nimport { Subject, Observable } from 'rxjs';\n\nimport { AclRole, AclLevel } from './../../interfaces';\nimport { FsAclRoleComponent } from '../acl-role/acl-role.component';\nimport { FsAppAclService } from '../../services';\n\n@Component({\n selector: 'fs-acl-roles',\n templateUrl: 'acl-roles.component.html',\n styleUrls: [ 'acl-roles.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsAclRolesComponent implements OnInit, OnDestroy {\n\n @Input() deleteAclRole: (aclRole: AclRole) => Observable<AclRole>;\n @Input() saveAclRole: (aclRole: AclRole) => Observable<AclRole>;\n @Input() loadAclRoles: (query: any) => Observable<{ data: AclRole[], paging: any }>;\n @Input() loadAclRole: (aclRole: AclRole, query) => Observable<AclRole>;\n @Input() aclLevels: AclLevel[] = [];\n\n @ViewChildren(FsListComponent)\n public list = new QueryList<FsListComponent>();\n\n public listConfig: FsListConfig;\n public permissions;\n public indexedAclRoleLevels: { [value: string]: string } = {};\n\n private _destroy$ = new Subject();\n\n constructor(\n private readonly _appAclService: FsAppAclService,\n private readonly _dialog: MatDialog,\n private readonly _cdRef: ChangeDetectorRef,\n ) { }\n\n public ngOnInit(): void {\n\n new Observable(observer => {\n\n if (this.aclLevels.length) {\n observer.next(this.aclLevels);\n observer.complete();\n } else {\n\n this._appAclService.getLevels()\n .subscribe((aclLevels: AclLevel[]) => {\n observer.next(aclLevels);\n observer.complete();\n });\n }\n })\n .subscribe((aclLevels: AclLevel[]) => {\n this.aclLevels = aclLevels;\n this.indexedAclRoleLevels = list(this.aclLevels, 'name', 'value');\n this._loadListConfig();\n });\n }\n\n public openDialog(aclRole: AclRole = { id: null }): void {\n\n const dialogRef = this._dialog.open(FsAclRoleComponent, {\n width: '70%',\n data: {\n aclRole,\n aclLevels: this.aclLevels,\n loadAclRole: this.loadAclRole,\n saveAclRole: this.saveAclRole,\n },\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n filter((response) => !!response),\n )\n .subscribe((response) => {\n this.list.forEach((list: FsListComponent) => {\n list.reload();\n });\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _loadListConfig() {\n this.listConfig = {\n sort: { value: 'hierarchy' },\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n {\n name: 'level',\n label: 'Level',\n type: ItemType.Select,\n values: this.aclLevels,\n hide: this.aclLevels.length <= 1\n },\n {\n name: 'state',\n label: 'Show Deleted',\n type: ItemType.Checkbox,\n unchecked: 'active',\n checked: 'deleted',\n },\n ],\n actions: [\n {\n click: (event) => {\n this.openDialog();\n },\n label: 'Create',\n },\n ],\n rowActions: [\n {\n click: (data) => {\n return this.deleteAclRole(this._appAclService.output(data));\n },\n remove: {\n title: 'Confirm',\n template: 'Are you sure you would like to delete this role?',\n },\n menu: true,\n label: 'Delete',\n show: (row) => row.state !== 'deleted',\n },\n ],\n fetch: (query) => {\n query.permissions = true;\n return this.loadAclRoles(query)\n .pipe(\n map((data) => this._appAclService.input(data))\n );\n },\n };\n }\n\n}\n","import { Component, OnInit, Input, Inject } from '@angular/core';\nimport { FsAppAclService } from './../../services/app-acl.service';\n\n@Component({\n selector: 'acl-permission-popover',\n templateUrl: './acl-permission-popover.component.html',\n styleUrls: ['./acl-permission-popover.component.scss']\n})\nexport class FsAclPermissionPopoverComponent implements OnInit {\n\n @Input() permission;\n\n public description;\n\n public constructor(\n private _appAclService: FsAppAclService\n ) { }\n\n public ngOnInit() {\n this._appAclService.getPermissions()\n .subscribe(permissions => {\n this.description = permissions.filter(item => {\n return item.value === this.permission.value;\n }).map(item => {\n return item.description;\n })[0];\n });\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { FsAppAclService } from './../../services';\n\n@Component({\n selector: 'fs-acl-role-popover',\n templateUrl: './acl-role-popover.component.html',\n styleUrls: ['./acl-role-popover.component.scss']\n})\nexport class FsAclRolePopoverComponent implements OnInit {\n\n @Input() aclRole;\n @Input() objectName;\n\n public permissions = [];\n\n public constructor(\n private readonly _appAclService: FsAppAclService,\n ) {}\n\n public ngOnInit() {\n const aclRolePermissions = this.aclRole.permissions || [];\n\n this._appAclService.getPermissions()\n .subscribe((response) => {\n this.permissions = response.filter(item => {\n return aclRolePermissions.some(permission => {\n return item.value === permission.value;\n });\n });\n });\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\n\nimport { map } from 'rxjs/operators';\nimport { forkJoin } from 'rxjs';\n\nimport { AclRole, AclEntryData, AclObjectRole, AclObjectEntry, AclEntry } from './../../interfaces';\nimport { FsAppAclService } from './../../services';\n\n\n@Component({\n templateUrl: './acl-entry.component.html',\n styleUrls: ['./acl-entry.component.scss'],\n})\nexport class FsAclEntryComponent implements OnInit {\n\n public aclRoles: AclRole[] = [];\n public aclObjectEntry: AclObjectEntry;\n public aclObjectRole: AclObjectRole;\n public indexedAclRoleLevels = {};\n public titleEdit = 'Edit Roles';\n public titleAdd = 'Assign Roles';\n public required = true;\n\n constructor(\n private readonly _appAclService: FsAppAclService,\n private readonly _dialogRef: MatDialogRef<FsAclEntryComponent>,\n private readonly _message: FsMessage,\n @Inject(MAT_DIALOG_DATA) private readonly _data: AclEntryData\n ) {\n this.aclObjectEntry = { ..._data.aclObjectEntry };\n this.required = _data.required ?? true;\n\n if (_data.titleEdit) {\n this.titleEdit = _data.titleEdit;\n }\n\n if (_data.titleAdd) {\n this.titleAdd = _data.titleAdd;\n }\n }\n\n public save = () => {\n return this._data.saveAclObjectEntry(this._appAclService.output(this.aclObjectEntry))\n .subscribe((data) => {\n this._message.success('Saved Changes');\n this.close(data);\n })\n }\n\n public ngOnInit() {\n forkJoin(\n this._data.loadAclRoles({\n level: this.aclObjectEntry.level,\n environmentId: this.aclObjectEntry.environmentId,\n })\n .pipe(\n map((data) => this._appAclService.input(data)),\n ),\n this._appAclService.getIndexedLevels()\n )\n .subscribe(([\n aclRoles,\n levels,\n ]) => {\n\n this.aclRoles = aclRoles;\n this.indexedAclRoleLevels = levels;\n\n this.aclObjectRole = {\n object: this.aclObjectEntry.object,\n aclRoles: this.aclObjectEntry.aclEntries\n .map((aclEntry: AclEntry) => {\n return aclEntry.aclRole;\n })\n };\n });\n }\n\n public aclObjectRoleChange(aclObjectRoles: AclObjectRole[]) {\n\n this.aclObjectEntry.aclEntries = aclObjectRoles.reduce((aclEntries, aclObjectRole) => {\n aclObjectRole.aclRoles.forEach(aclRole => {\n aclEntries.push({\n aclRoleId: aclRole.id,\n aclRole: aclRole,\n objectId: aclObjectRole.object ? aclObjectRole.object.id : null,\n object: aclObjectRole.object || null\n });\n });\n\n return aclEntries;\n }, []);\n }\n\n public close(data = null) {\n this._dialogRef.close(data);\n }\n\n}\n","import { takeUntil, map } from 'rxjs/operators';\nimport { Component, OnInit, ViewChild, OnDestroy, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Subject, Observable } from 'rxjs';\n\nimport { sortBy, groupBy, forOwn } from 'lodash-es';\n\nimport { FsListAction, FsListComponent, FsListConfig } from '@firestitch/list';\nimport { FsAppAclService } from '../../services';\nimport { AclEntry, AclEntryData, AclRole, AclObjectEntry } from '../../interfaces';\nimport { FsAclEntryComponent } from '../acl-entry';\nimport { FsPrompt } from '@firestitch/prompt';\n\n\n@Component({\n selector: 'fs-acl-entries',\n templateUrl: './acl-entries.component.html',\n styleUrls: ['./acl-entries.component.scss']\n})\nexport class FsAclEntriesComponent implements OnInit, OnDestroy {\n\n @Input() public loadAclEntries: (query: any) => Observable<AclEntry[]>;\n @Input() public loadAclRoles: (query: any) => Observable<AclRole[]>;\n @Input() public saveAclObjectEntry: (aclObjectEntry: AclObjectEntry) => Observable<any>;\n @Input() public environmentShow = true;\n @Input() public environmentLabel = 'Environment';\n @Input() public actions: FsListAction[] = [];\n\n @ViewChild(FsListComponent)\n public aclEntriesList: FsListComponent = null;\n\n public aclEntriesConfig: FsListConfig = null;\n public permissions: any[] = [];\n\n private _destroy$ = new Subject();\n\n constructor(\n private readonly _appAclService: FsAppAclService,\n private readonly _dialog: MatDialog,\n private _confirm: FsPrompt,\n ) {}\n\n public ngOnInit(): void {\n this._appAclService.getPermissions()\n .subscribe(response => {\n this.permissions = response;\n });\n\n this.aclEntriesConfig = {\n status: false,\n paging: false,\n actions: this.actions,\n rowActions: [\n {\n label: 'Remove All Roles',\n click: (aclObjectEntry: AclObjectEntry) => {\n this._confirm\n .confirm({\n title: 'Remove All Roles',\n template: 'Are you sure you would like to remove all roles?',\n }).subscribe(() => {\n const data = this._appAclService.output({ ...aclObjectEntry, aclEntries: [] });\n this.saveAclObjectEntry(data)\n .subscribe(() => {\n this.aclEntriesList.reload();\n });\n });\n }\n }\n ],\n fetch: () => {\n return new Observable((observer) => {\n this.loadAclEntries({\n aclRoles: true,\n aclRolePermissions: true,\n objects: true,\n aclRoleState: 'active',\n })\n .pipe(\n map((response) => this._appAclService.input(response)),\n )\n .subscribe((aclEntries: AclEntry[]) => {\n const objects = aclEntries.reduce((items, item) => {\n if (item.object) {\n items[item.object.id] = item.object;\n }\n return items;\n }, {});\n\n const environments = aclEntries.reduce((items, item) => {\n if (item.environment) {\n items[item.environment.id] = item.environment;\n }\n return items;\n }, {});\n\n let aclObjectEntry: AclObjectEntry[] = [];\n const grouped = groupBy(aclEntries, (item) => {\n return [item.aclRole.level, item.environmentId, item.objectId];\n });\n\n forOwn(grouped, (group, key) => {\n key = key.split(',');\n aclObjectEntry.push({\n object: objects[key[2]],\n level: key[0],\n environmentId: key[1] ? parseInt(key[1]) : null,\n environment: environments[key[1]],\n aclEntries: group,\n });\n });\n\n const hasApp = aclObjectEntry.some((item) => {\n return item.aclEntries.some((entry) => {\n return !entry.objectId;\n });\n });\n\n if (!hasApp) {\n aclObjectEntry.unshift({\n object: null, aclEntries: [],\n level: 'app',\n environmentId: null,\n });\n }\n\n aclObjectEntry = sortBy(aclObjectEntry, (item: AclObjectEntry) => {\n return item.object ? item.level : '';\n });\n\n observer.next({ data: aclObjectEntry });\n observer.complete();\n });\n });\n },\n };\n }\n\n public update(aclObjectEntry: AclObjectEntry) {\n\n const data: AclEntryData = {\n aclObjectEntry: aclObjectEntry,\n required: false,\n loadAclRoles: this.loadAclRoles,\n saveAclObjectEntry: this.saveAclObjectEntry\n }\n\n this._dialog.open(FsAclEntryComponent, {\n data: data\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.aclEntriesList.reload();\n });\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public reload(): void {\n this.aclEntriesList.reload();\n }\n\n}\n","import { ControlContainer, NgForm } from '@angular/forms';\nimport { Component, Input, EventEmitter, Output } from '@angular/core';\n\nimport { AclObjectRole, AclRole } from '../../interfaces';\n\n\n@Component({\n selector: 'fs-acl-object-roles',\n templateUrl: './acl-object-roles.component.html',\n styleUrls: ['./acl-object-roles.component.scss'],\n viewProviders: [ { provide: ControlContainer, useExisting: NgForm } ]\n})\nexport class FsAclObjectRolesComponent {\n\n @Input() aclRoles: AclRole[] = [];\n @Input() required = false;\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() aclObjectRoles: AclObjectRole[] = [];\n @Input() rolesLabel = 'Roles';\n @Input() levelLabel = '';\n @Output() change = new EventEmitter<AclObjectRole[]>();\n\n public compareAclRole = (o1: any, o2: any) => {\n return o1 && o2 && o1.id === o2.id;\n }\n\n public changed() {\n this.change.emit(this.aclObjectRoles);\n }\n}\n","import { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { AppAclConfig } from './interfaces/app-acl-config';\nimport { FS_APP_ACL_CONFIG } from './injectors/app-acl-config.injector';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsPopoverModule } from '@firestitch/popover';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsRadioGroupModule } from '@firestitch/radiogroup';\nimport { FsBadgeModule } from '@firestitch/badge';\nimport { FsCheckboxGroupModule } from '@firestitch/checkboxgroup';\n\nimport { FsAclRolesComponent } from './components/acl-roles/acl-roles.component';\nimport { FsAclPermissionPopoverComponent } from './components/acl-permission-popover';\nimport { FsAclRolePopoverComponent } from './components/acl-role-popover/acl-role-popover.component';\nimport { FsAclEntriesComponent } from './components/acl-entries/acl-entries.component';\nimport { FsAclRoleComponent } from './components/acl-role/acl-role.component';\nimport { FsAclObjectRolesComponent } from './components/acl-object-roles/acl-object-roles.component';\nimport { FsAclEntryComponent } from './components/acl-entry/acl-entry.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatFormFieldModule,\n MatCheckboxModule,\n MatSelectModule,\n MatButtonModule,\n MatRadioModule,\n MatInputModule,\n FlexLayoutModule,\n\n FsListModule,\n FsPopoverModule,\n FsDialogModule,\n FsFormModule,\n FsLabelModule,\n FsRadioGroupModule,\n FsBadgeModule,\n FsCheckboxGroupModule,\n ],\n declarations: [\n FsAclRolesComponent,\n FsAclPermissionPopoverComponent,\n FsAclRoleComponent,\n FsAclEntriesComponent,\n FsAclRolePopoverComponent,\n FsAclObjectRolesComponent,\n FsAclEntryComponent,\n ],\n exports: [\n FsAclRolesComponent,\n FsAclPermissionPopoverComponent,\n FsAclRoleComponent,\n FsAclEntriesComponent,\n FsAclRolePopoverComponent,\n FsAclObjectRolesComponent,\n FsAclEntryComponent,\n ],\n entryComponents: [\n FsAclRoleComponent\n ]\n})\nexport class FsAppAclModule {\n static forRoot(): ModuleWithProviders<FsAppAclModule> {\n return {\n ngModule: FsAppAclModule,\n // providers: [\n // { provide: FS_APP_ACL_CONFIG, useValue: config || {} }\n // ]\n };\n }\n}\n","// start:ng42.barrel\nexport * from './app-acl-config.injector';\n// end:ng42.barrel\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {FsAclEntryComponent as ɵf} from './app/components/acl-entry/acl-entry.component';\nexport {FsAclObjectRolesComponent as ɵe} from './app/components/acl-object-roles/acl-object-roles.component';\nexport {FsAclPermissionPopoverComponent as ɵb} from './app/components/acl-permission-popover';\nexport {FsAclRolePopoverComponent as ɵd} from './app/components/acl-role-popover/acl-role-popover.component';\nexport {FsAclRoleComponent as ɵc} from './app/components/acl-role/acl-role.component';\nexport {AclEntryData as ɵg} from './app/interfaces';\nexport {FsAppAclService as ɵa} from './app/services';"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,iDAAQ,CAAA;IACR,iDAAQ,CAAA;IACR,oDAAU,CAAA;IACV,kDAAS,CAAA;AACX,CAAC,EALW,aAAa,KAAb,aAAa;;ACAzB;AACA,AACA,kBAAkB;;ACCX,MAAM,eAAe,GAAG;IAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE;IAC3C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE;IAC3C,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;IAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE;CAC5C,CAAC;;MCNW,iBAAiB,GAAG,IAAI,cAAc,CAAQ,mBAAmB,CAAC;;ACc/E,MAAM,aAAa,GAAG,cAAc,CAAC;AACrC,MAAM,aAAa,GAAG,cAAc,CAAC;AAMrC,IAAa,eAAe,GAA5B,MAAa,eAAe;IAK1B,YACqC,aAA2B;QAA3B,kBAAa,GAAb,aAAa,CAAc;KAC3D;IAEE,cAAc;QAEnB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;YAEzC,IAAI,CAAC,aAAa,CAAC,WAAW;iBAC3B,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAChC;iBACA,SAAS,CAAC,CAAC,WAAW;gBACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACrC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;aAC/B,CAAC,CAAC;SACN;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAEM,SAAS;QAEd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;YAEpC,IAAI,CAAC,aAAa,CAAC,MAAM;iBACtB,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAChC;iBACA,SAAS,CAAC,CAAC,MAAM;gBAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;aAC1B,CAAC,CAAC;SACN;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAGM,gBAAgB;QACrB,OAAO,IAAI,CAAC,SAAS,EAAE;aACpB,IAAI,CACH,GAAG,CAAC,CAAC,IAAI;YACP,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;SACpC,CAAC,CACH,CAAC;KACL;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;YACjB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI;gBAClB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;aACzF,CAAC,CAAC;SACJ;aAAM;YACL,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;SACzF;KACF;IAEM,MAAM,CAAC,IAAI;QAChB,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;YACjB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI;gBAClB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;aACzF,CAAC,CAAC;SACJ;aAAM;YACL,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;SACzF;KACF;CACF,CAAA;;4CApEI,MAAM,SAAC,iBAAiB;;;AANhB,eAAe;IAH3B,UAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;IAOG,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;;GANjB,eAAe,CA0E3B;;IC9EY,kBAAkB,GAA/B,MAAa,kBAAkB;IAoB7B,YACmB,cAA+B,EAC/B,UAA4C,EAC5C,QAAmB,EACM,KAAU;QAHnC,mBAAc,GAAd,cAAc,CAAiB;QAC/B,eAAU,GAAV,UAAU,CAAkC;QAC5C,aAAQ,GAAR,QAAQ,CAAW;QACM,UAAK,GAAL,KAAK,CAAK;QApB/C,YAAO,GAAY,IAAI,CAAC;QAExB,gBAAW,GAAU,EAAE,CAAC;QAExB,qBAAgB,GAAG,EAAE,CAAC;QACtB,oBAAe,GAAG,eAAe,CAAC;QAClC,oBAAe,GAAG,EAAE,CAAC;QACrB,cAAS,GAAU,EAAE,CAAC;QACtB,qBAAgB,GAAG,EAAE,CAAC;QACtB,mBAAc,GAAG,KAAK,CAAC;QACvB,cAAS,GAAG,EAAE,CAAC;QACf,mBAAc,GAAG,EAAE,CAAC;QACpB,wBAAmB,GAAG,EAAE,CAAC;QAExB,cAAS,GAAG,IAAI,OAAO,EAAE,CAAC;QA0H3B,SAAI,GAAG;YACZ,MAAM,OAAO,mCACR,IAAI,CAAC,OAAO,KACf,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,UAAU;oBAChD,OAAO;wBACL,KAAK,EAAE,UAAU,CAAC,KAAK;wBACvB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;qBACxD,CAAC;iBACH,CAAC,EACF,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI;oBAChD,OAAO;wBACL,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;qBAChB,CAAC;iBACH,CAAC,GACH,CAAC;YAEF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBAC/D,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ;gBACX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aACtB,CAAC,CACH,CAAC;SACL,CAAA;KA5IG;IAEG,QAAQ;QACb,QAAQ,CACN,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CACrC;aACE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC/B,SAAS,CAAC,CAAC,CACV,OAAO,EACP,cAAc,EACf;YAEC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;YAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAEtC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAE9D,IAAI,CAAC,OAAO,iBACP;gBACD,cAAc,EAAE,EAAE;gBAClB,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,EAAE;gBAClB,WAAW,EAAE,EAAE;gBACf,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK;aAC/B,EACE,OAAO,CACX,CAAC;YAEF,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;gBACnB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU;oBAClC,IAAI,MAAM,GAAG,CAAC,CAAC;oBAEf,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI;wBAC1D,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,KAAK,CAAC;qBAC7C,CAAC,CAAC;oBAEH,IAAI,aAAa,EAAE;wBACjB,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;qBAC/B;oBAED,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;iBACrD,CAAC,CAAC;aACJ;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;gBAC/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;aAClC;YAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B,CAAC,CAAC;QAEL,IAAI,CAAC,UAAU,GAAG;YAChB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,SAAS,EAAE;gBACT,OAAO,EAAE,EAAE;aACZ;YACD,KAAK,EAAE;gBACL,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE,CAAC,IAAI;oBACZ,OAAO,IAAI,CAAC;iBACb;gBACD,SAAS,EAAE,CAAC,IAAI;oBACd,OAAO,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC;iBACnC;aACF;YACD,KAAK,EAAE;gBACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;wBACzB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;wBACzB,IAAI,CAAC,GAAG,CAAC,EAAE;4BACT,OAAO,CAAC,CAAC,CAAC;yBACX;6BAAM,IAAI,CAAC,GAAG,CAAC,EAAE;4BAChB,OAAO,CAAC,CAAC;yBACV;wBAED,OAAO,CAAC,CAAC;qBACV,CAAC;iBACH,CAAC,CAAC;aACJ;SACF,CAAC;KACH;IAEM,WAAW;QAChB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,UAAU,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;SACpB,CAAC,CAAC;KACJ;IAEM,OAAO;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;YAC1B,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC/B;QAED,MAAM,KAAK,GAAQ;YACjB,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE,IAAI;SACrB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;SAC5B;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;aACrD,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;KACL;IA6BM,KAAK,CAAC,OAAY,IAAI;QAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC7B;IAEM,oBAAoB,CAAC,GAAY;QACtC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,yBAAyB,EAAE,CAAC;SAClC;KACF;IAEM,WAAW;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEO,kBAAkB;QACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU;YACzD,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI;gBACjC,OAAO,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;aACpC,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ;IAEO,qBAAqB;QAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI;YACzD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;SAC1C,CAAC,CAAC;KACJ;IAEO,yBAAyB;QAC/B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU;YAClC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;SAC/E,CAAC,CAAC;KACJ;CAEF,CAAA;;YAtLoC,eAAe;YACnB,YAAY;YACd,SAAS;4CACnC,MAAM,SAAC,eAAe;;AAtBG;IAA3B,SAAS,CAAC,eAAe,CAAC;8BAAc,eAAe;gDAAC;AAF9C,kBAAkB;IAJ9B,SAAS,CAAC;QACT,05KAAwC;;KAEzC,CAAC;IAyBG,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;qCAHS,eAAe;QACnB,YAAY;QACd,SAAS;GAvB3B,kBAAkB,CA2M9B;;ICzMY,mBAAmB,GAAhC,MAAa,mBAAmB;IAiB9B,YACmB,cAA+B,EAC/B,OAAkB,EAClB,MAAyB;QAFzB,mBAAc,GAAd,cAAc,CAAiB;QAC/B,YAAO,GAAP,OAAO,CAAW;QAClB,WAAM,GAAN,MAAM,CAAmB;QAdnC,cAAS,GAAe,EAAE,CAAC;QAG7B,SAAI,GAAG,IAAI,SAAS,EAAmB,CAAC;QAIxC,yBAAoB,GAAgC,EAAE,CAAC;QAEtD,cAAS,GAAG,IAAI,OAAO,EAAE,CAAC;KAM7B;IAEE,QAAQ;QAEb,IAAI,UAAU,CAAC,QAAQ;YAErB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;gBACvB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC;aACvB;iBAAM;gBAEL,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;qBAC5B,SAAS,CAAC,CAAC,SAAqB;oBAC/B,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACzB,QAAQ,CAAC,QAAQ,EAAE,CAAC;iBACrB,CAAC,CAAC;aACN;SACF,CAAC;aACC,SAAS,CAAC,CAAC,SAAqB;YAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAClE,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB,CAAC,CAAC;KACN;IAEM,UAAU,CAAC,UAAmB,EAAE,EAAE,EAAE,IAAI,EAAE;QAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACtD,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE;gBACJ,OAAO;gBACP,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B;SACF,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE;aACpB,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,CACjC;aACA,SAAS,CAAC,CAAC,QAAQ;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAqB;gBACtC,IAAI,CAAC,MAAM,EAAE,CAAC;aACf,CAAC,CAAC;SACJ,CAAC,CAAC;KACN;IAEM,WAAW;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEO,eAAe;QACrB,IAAI,CAAC,UAAU,GAAG;YAChB,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;YAC5B,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,QAAQ,CAAC,OAAO;oBACtB,KAAK,EAAE,QAAQ;iBAChB;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,QAAQ,CAAC,MAAM;oBACrB,MAAM,EAAE,IAAI,CAAC,SAAS;oBACtB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC;iBACjC;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,cAAc;oBACrB,IAAI,EAAE,QAAQ,CAAC,QAAQ;oBACvB,SAAS,EAAE,QAAQ;oBACnB,OAAO,EAAE,SAAS;iBACnB;aACF;YACD,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,CAAC,KAAK;wBACX,IAAI,CAAC,UAAU,EAAE,CAAC;qBACnB;oBACD,KAAK,EAAE,QAAQ;iBAChB;aACF;YACD,UAAU,EAAE;gBACV;oBACE,KAAK,EAAE,CAAC,IAAI;wBACV,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;qBAC7D;oBACD,MAAM,EAAE;wBACN,KAAK,EAAE,SAAS;wBAChB,QAAQ,EAAE,kDAAkD;qBAC7D;oBACD,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,QAAQ;oBACf,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,SAAS;iBACvC;aACF;YACD,KAAK,EAAE,CAAC,KAAK;gBACX,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;gBACzB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;qBAC5B,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;aACL;SACF,CAAC;KACH;CAEF,CAAA;;YAjHoC,eAAe;YACtB,SAAS;YACV,iBAAiB;;AAlBnC;IAAR,KAAK,EAAE;;0DAA0D;AACzD;IAAR,KAAK,EAAE;;wDAAwD;AACvD;IAAR,KAAK,EAAE;;yDAA4E;AAC3E;IAAR,KAAK,EAAE;;wDAA+D;AAC9D;IAAR,KAAK,EAAE;;sDAA4B;AAGpC;IADC,YAAY,CAAC,eAAe,CAAC;;iDACiB;AATpC,mBAAmB;IAN/B,SAAS,CAAC;QACT,QAAQ,EAAE,cAAc;QACxB,88BAAuC;QAEvC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAChD,CAAC;qCAmBmC,eAAe;QACtB,SAAS;QACV,iBAAiB;GApBjC,mBAAmB,CAmI/B;;IChJY,+BAA+B,GAA5C,MAAa,+BAA+B;IAM1C,YACU,cAA+B;QAA/B,mBAAc,GAAd,cAAc,CAAiB;KACpC;IAEE,QAAQ;QACb,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;aACnC,SAAS,CAAC,WAAW;YACpB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI;gBACxC,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;aAC7C,CAAC,CAAC,GAAG,CAAC,IAAI;gBACT,OAAO,IAAI,CAAC,WAAW,CAAC;aACzB,CAAC,CAAC,CAAC,CAAC,CAAC;SACP,CAAC,CAAC;KACJ;CACF,CAAA;;YAb2B,eAAe;;AALhC;IAAR,KAAK,EAAE;;mEAAY;AAFT,+BAA+B;IAL3C,SAAS,CAAC;QACT,QAAQ,EAAE,wBAAwB;QAClC,iOAAsD;;KAEvD,CAAC;qCAQ0B,eAAe;GAP9B,+BAA+B,CAoB3C;;ICpBY,yBAAyB,GAAtC,MAAa,yBAAyB;IAOpC,YACmB,cAA+B;QAA/B,mBAAc,GAAd,cAAc,CAAiB;QAH3C,gBAAW,GAAG,EAAE,CAAC;KAIpB;IAEG,QAAQ;QACb,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;QAE1D,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;aACjC,SAAS,CAAC,CAAC,QAAQ;YAClB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI;gBACrC,OAAO,kBAAkB,CAAC,IAAI,CAAC,UAAU;oBACvC,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC;iBACxC,CAAC,CAAC;aACN,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ;CACF,CAAA;;YAfoC,eAAe;;AANzC;IAAR,KAAK,EAAE;;0DAAS;AACR;IAAR,KAAK,EAAE;;6DAAY;AAHT,yBAAyB;IALrC,SAAS,CAAC;QACT,QAAQ,EAAE,qBAAqB;QAC/B,glBAAgD;;KAEjD,CAAC;qCASmC,eAAe;GARvC,yBAAyB,CAuBrC;;ICfY,mBAAmB,GAAhC,MAAa,mBAAmB;IAU9B,YACmB,cAA+B,EAC/B,UAA6C,EAC7C,QAAmB,EACM,KAAmB;;QAH5C,mBAAc,GAAd,cAAc,CAAiB;QAC/B,eAAU,GAAV,UAAU,CAAmC;QAC7C,aAAQ,GAAR,QAAQ,CAAW;QACM,UAAK,GAAL,KAAK,CAAc;QAZxD,aAAQ,GAAc,EAAE,CAAC;QAGzB,yBAAoB,GAAG,EAAE,CAAC;QAC1B,cAAS,GAAG,YAAY,CAAC;QACzB,aAAQ,GAAG,cAAc,CAAC;QAC1B,aAAQ,GAAG,IAAI,CAAC;QAoBhB,SAAI,GAAG;YACZ,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBACpF,SAAS,CAAC,CAAC,IAAI;gBACd,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAClB,CAAC,CAAA;SACH,CAAA;QAlBC,IAAI,CAAC,cAAc,qBAAQ,KAAK,CAAC,cAAc,CAAE,CAAC;QAClD,IAAI,CAAC,QAAQ,SAAG,KAAK,CAAC,QAAQ,uCAAI,IAAI,EAAA,CAAC;QAEvC,IAAI,KAAK,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;SAClC;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;SAChC;KACF;IAUM,QAAQ;QACb,QAAQ,CACN,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK;YAChC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa;SACjD,CAAC;aACC,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAC/C,EACH,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CACvC;aACE,SAAS,CAAC,CAAC,CACV,QAAQ,EACR,MAAM,EACP;YAEC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC;YAEnC,IAAI,CAAC,aAAa,GAAG;gBACnB,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;gBAClC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU;qBAC7B,GAAG,CAAC,CAAC,QAAkB;oBACtB,OAAO,QAAQ,CAAC,OAAO,CAAC;iBACzB,CAAC;aACb,CAAC;SACH,CAAC,CAAC;KACN;IAEM,mBAAmB,CAAC,cAA+B;QAExD,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,aAAa;YAC/E,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO;gBACpC,UAAU,CAAC,IAAI,CAAC;oBACd,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,OAAO,EAAE,OAAO;oBAChB,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI;oBAC/D,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,IAAI;iBACrC,CAAC,CAAC;aACJ,CAAC,CAAC;YAEH,OAAO,UAAU,CAAC;SACnB,EAAE,EAAE,CAAC,CAAC;KACR;IAEM,KAAK,CAAC,IAAI,GAAG,IAAI;QACtB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC7B;CAEF,CAAA;;YA1EoC,eAAe;YACnB,YAAY;YACd,SAAS;4CACnC,MAAM,SAAC,eAAe;;AAdd,mBAAmB;IAJ/B,SAAS,CAAC;QACT,u4BAAyC;;KAE1C,CAAC;IAeG,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;qCAHS,eAAe;QACnB,YAAY;QACd,SAAS;GAb3B,mBAAmB,CAqF/B;;ICjFY,qBAAqB,GAAlC,MAAa,qBAAqB;IAiBhC,YACmB,cAA+B,EAC/B,OAAkB,EAC3B,QAAkB;QAFT,mBAAc,GAAd,cAAc,CAAiB;QAC/B,YAAO,GAAP,OAAO,CAAW;QAC3B,aAAQ,GAAR,QAAQ,CAAU;QAfZ,oBAAe,GAAG,IAAI,CAAC;QACvB,qBAAgB,GAAG,aAAa,CAAC;QACjC,YAAO,GAAmB,EAAE,CAAC;QAGtC,mBAAc,GAAoB,IAAI,CAAC;QAEvC,qBAAgB,GAAiB,IAAI,CAAC;QACtC,gBAAW,GAAU,EAAE,CAAC;QAEvB,cAAS,GAAG,IAAI,OAAO,EAAE,CAAC;KAM9B;IAEG,QAAQ;QACb,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;aACjC,SAAS,CAAC,QAAQ;YACjB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;SAC7B,CAAC,CAAC;QAEL,IAAI,CAAC,gBAAgB,GAAG;YACtB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE;gBACV;oBACE,KAAK,EAAE,kBAAkB;oBACzB,KAAK,EAAE,CAAC,cAA8B;wBACpC,IAAI,CAAC,QAAQ;6BACV,OAAO,CAAC;4BACP,KAAK,EAAE,kBAAkB;4BACzB,QAAQ,EAAE,kDAAkD;yBAC7D,CAAC,CAAC,SAAS,CAAC;4BACX,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,iCAAM,cAAc,KAAE,UAAU,EAAE,EAAE,IAAG,CAAC;4BAC/E,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;iCAC1B,SAAS,CAAC;gCACT,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;6BAC9B,CAAC,CAAC;yBACN,CAAC,CAAC;qBACN;iBACF;aACF;YACD,KAAK,EAAE;gBACL,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ;oBAC7B,IAAI,CAAC,cAAc,CAAC;wBAClB,QAAQ,EAAE,IAAI;wBACd,kBAAkB,EAAE,IAAI;wBACxB,OAAO,EAAE,IAAI;wBACb,YAAY,EAAE,QAAQ;qBACvB,CAAC;yBACC,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CACvD;yBACA,SAAS,CAAC,CAAC,UAAsB;wBAChC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI;4BAC5C,IAAI,IAAI,CAAC,MAAM,EAAE;gCACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;6BACrC;4BACD,OAAO,KAAK,CAAC;yBACd,EAAE,EAAE,CAAC,CAAC;wBAEP,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI;4BACjD,IAAI,IAAI,CAAC,WAAW,EAAE;gCACpB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;6BAC/C;4BACD,OAAO,KAAK,CAAC;yBACd,EAAE,EAAE,CAAC,CAAC;wBAEP,IAAI,cAAc,GAAqB,EAAE,CAAC;wBAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI;4BACvC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;yBAChE,CAAC,CAAC;wBAEH,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG;4BACzB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4BACrB,cAAc,CAAC,IAAI,CAAC;gCAClB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gCACvB,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;gCACb,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;gCAC/C,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gCACjC,UAAU,EAAE,KAAK;6BAClB,CAAC,CAAC;yBACJ,CAAC,CAAC;wBAEH,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI;4BACtC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK;gCAChC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;6BACxB,CAAC,CAAC;yBACJ,CAAC,CAAC;wBAEH,IAAI,CAAC,MAAM,EAAE;4BACX,cAAc,CAAC,OAAO,CAAC;gCACrB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;gCAC5B,KAAK,EAAE,KAAK;gCACZ,aAAa,EAAE,IAAI;6BACpB,CAAC,CAAC;yBACJ;wBAED,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,IAAoB;4BAC3D,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;yBACtC,CAAC,CAAC;wBAEH,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;wBACxC,QAAQ,CAAC,QAAQ,EAAE,CAAC;qBACrB,CAAC,CAAC;iBACN,CAAC,CAAC;aACJ;SACF,CAAC;KACH;IAEM,MAAM,CAAC,cAA8B;QAE1C,MAAM,IAAI,GAAiB;YACzB,cAAc,EAAE,cAAc;YAC9B,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACrC,IAAI,EAAE,IAAI;SACX,CAAC;aACC,WAAW,EAAE;aACb,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC;YACT,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;SAC9B,CAAC,CAAC;KACN;IAEM,WAAW;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEM,MAAM;QACX,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;KAC9B;CAEF,CAAA;;YAnIoC,eAAe;YACtB,SAAS;YACjB,QAAQ;;AAlBnB;IAAR,KAAK,EAAE;;6DAA+D;AAC9D;IAAR,KAAK,EAAE;;2DAA4D;AAC3D;IAAR,KAAK,EAAE;;iEAAgF;AAC/E;IAAR,KAAK,EAAE;;8DAA+B;AAC9B;IAAR,KAAK,EAAE;;+DAAyC;AACxC;IAAR,KAAK,EAAE;;sDAAqC;AAG7C;IADC,SAAS,CAAC,eAAe,CAAC;8BACJ,eAAe;6DAAQ;AAVnC,qBAAqB;IALjC,SAAS,CAAC;QACT,QAAQ,EAAE,gBAAgB;QAC1B,62DAA2C;;KAE5C,CAAC;qCAmBmC,eAAe;QACtB,SAAS;QACjB,QAAQ;GApBjB,qBAAqB,CAqJjC;;IC7JY,yBAAyB,GAAtC,MAAa,yBAAyB;IAAtC;QAEW,aAAQ,GAAc,EAAE,CAAC;QACzB,aAAQ,GAAG,KAAK,CAAC;QACjB,aAAQ,GAAG,KAAK,CAAC;QACjB,aAAQ,GAAG,KAAK,CAAC;QACjB,mBAAc,GAAoB,EAAE,CAAC;QACrC,eAAU,GAAG,OAAO,CAAC;QACrB,eAAU,GAAG,EAAE,CAAC;QACf,WAAM,GAAG,IAAI,YAAY,EAAmB,CAAC;QAEhD,mBAAc,GAAG,CAAC,EAAO,EAAE,EAAO;YACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SACpC,CAAA;KAKF;IAHQ,OAAO;QACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACvC;CACF,CAAA;AAhBU;IAAR,KAAK,EAAE;;2DAA0B;AACzB;IAAR,KAAK,EAAE;;2DAAkB;AACjB;IAAR,KAAK,EAAE;;2DAAkB;AACjB;IAAR,KAAK,EAAE;;2DAAkB;AACjB;IAAR,KAAK,EAAE;;iEAAsC;AACrC;IAAR,KAAK,EAAE;;6DAAsB;AACrB;IAAR,KAAK,EAAE;;6DAAiB;AACf;IAAT,MAAM,EAAE;;yDAA8C;AAT5C,yBAAyB;IANrC,SAAS,CAAC;QACT,QAAQ,EAAE,qBAAqB;QAC/B,8/CAAgD;QAEhD,aAAa,EAAE,CAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAE;;KACtE,CAAC;GACW,yBAAyB,CAkBrC;;;IC+CY,cAAc,sBAA3B,MAAa,cAAc;IACzB,OAAO,OAAO;QACZ,OAAO;YACL,QAAQ,EAAE,gBAAc;SAIzB,CAAC;KACH;CACF,CAAA;AATY,cAAc;IA7C1B,QAAQ,CAAC;QACR,OAAO,EAAE;YACP,YAAY;YACZ,WAAW;YAEX,eAAe;YACf,kBAAkB;YAClB,iBAAiB;YACjB,eAAe;YACf,eAAe;YACf,cAAc;YACd,cAAc;YACd,gBAAgB;YAEhB,YAAY;YACZ,eAAe;YACf,cAAc;YACd,YAAY;YACZ,aAAa;YACb,kBAAkB;YAClB,aAAa;YACb,qBAAqB;SACtB;QACD,YAAY,EAAE;YACZ,mBAAmB;YACnB,+BAA+B;YAC/B,kBAAkB;YAClB,qBAAqB;YACrB,yBAAyB;YACzB,yBAAyB;YACzB,mBAAmB;SACpB;QACD,OAAO,EAAE;YACP,mBAAmB;YACnB,+BAA+B;YAC/B,kBAAkB;YAClB,qBAAqB;YACrB,yBAAyB;YACzB,yBAAyB;YACzB,mBAAmB;SACpB;QACD,eAAe,EAAE;YACf,kBAAkB;SACnB;KACF,CAAC;GACW,cAAc,CAS1B;;ACtFD;AACA,AACA,kBAAkB;;ACFlB;;GAEG;;;;"}
1
+ {"version":3,"file":"firestitch-app-acl.js","sources":["ng://@firestitch/app-acl/app/enums/acl-role-access.ts","ng://@firestitch/app-acl/app/enums/index.ts","ng://@firestitch/app-acl/app/consts/acl-role-accesses.ts","ng://@firestitch/app-acl/app/injectors/app-acl-config.injector.ts","ng://@firestitch/app-acl/app/services/app-acl.service.ts","ng://@firestitch/app-acl/app/components/acl-role/acl-role.component.ts","ng://@firestitch/app-acl/app/components/acl-roles/acl-roles.component.ts","ng://@firestitch/app-acl/app/components/acl-permission-popover/acl-permission-popover.component.ts","ng://@firestitch/app-acl/app/components/acl-role-popover/acl-role-popover.component.ts","ng://@firestitch/app-acl/app/components/acl-entry/acl-entry.component.ts","ng://@firestitch/app-acl/app/components/acl-entries/acl-entries.component.ts","ng://@firestitch/app-acl/app/components/acl-object-roles/acl-object-roles.component.ts","ng://@firestitch/app-acl/app/fs-app-acl.module.ts","ng://@firestitch/app-acl/app/injectors/index.ts","ng://@firestitch/app-acl/firestitch-app-acl.ts"],"sourcesContent":["export enum AclRoleAccess {\n None = 0,\n Read = 5,\n Write = 10,\n Full = 15,\n}\n","// start:ng42.barrel\nexport * from './acl-role-access';\n// end:ng42.barrel\n\n","\nimport { AclRoleAccess } from '../enums';\n\nexport const AclRoleAccesses = [\n { name: 'None', value: AclRoleAccess.None },\n { name: 'Read', value: AclRoleAccess.Read },\n { name: 'Write', value: AclRoleAccess.Write },\n { name: 'Full', value: AclRoleAccess.Full }\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_APP_ACL_CONFIG = new InjectionToken<any[]>('fs-app-acl-config');\n","import { Injectable, Inject } from '@angular/core';\n\nimport { list } from '@firestitch/common';\n\nimport { map } from 'rxjs/operators';\nimport { ReplaySubject } from 'rxjs';\n\nimport { isArray } from 'lodash-es';\n\n\nimport { FS_APP_ACL_CONFIG } from './../injectors/app-acl-config.injector';\nimport { AppAclConfig, AclPermission, AclLevel } from './../interfaces';\n\nimport * as _snakecaseKeys from 'snakecase-keys';\nimport * as _camelcaseKeys from 'camelcase-keys';\n\nconst snakecaseKeys = _snakecaseKeys;\nconst camelcaseKeys = _camelcaseKeys;\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsAppAclService {\n\n private _permissions$: ReplaySubject<AclPermission[]>;\n private _levels$: ReplaySubject<AclLevel[]>;\n\n constructor(\n @Inject(FS_APP_ACL_CONFIG) private _appAclConfig: AppAclConfig,\n ) { }\n\n public getPermissions() {\n\n if (!this._permissions$) {\n this._permissions$ = new ReplaySubject();\n\n this._appAclConfig.permissions\n .pipe(\n map((data) => this.input(data)),\n )\n .subscribe((permissions) => {\n this._permissions$.next(permissions);\n this._permissions$.complete();\n });\n }\n\n return this._permissions$;\n }\n\n public getLevels() {\n\n if (!this._levels$) {\n this._levels$ = new ReplaySubject();\n\n this._appAclConfig.levels\n .pipe(\n map((data) => this.input(data)),\n )\n .subscribe((levels) => {\n this._levels$.next(levels);\n this._levels$.complete();\n });\n }\n\n return this._levels$;\n }\n\n\n public getIndexedLevels() {\n return this.getLevels()\n .pipe(\n map((data) => {\n return list(data, 'name', 'value');\n })\n );\n }\n\n public input(data) {\n if (isArray(data)) {\n return data.map(item => {\n return this._appAclConfig.case === 'snake' ? camelcaseKeys(item, { deep: true }) : item;\n });\n } else {\n return this._appAclConfig.case === 'snake' ? camelcaseKeys(data, { deep: true }) : data;\n }\n }\n\n public output(data) {\n if (isArray(data)) {\n return data.map(item => {\n return this._appAclConfig.case === 'snake' ? snakecaseKeys(item, { deep: true }) : item;\n });\n } else {\n return this._appAclConfig.case === 'snake' ? snakecaseKeys(data, { deep: true }) : data;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { AclRoleAccesses } from './../../consts/acl-role-accesses';\nimport { AclRole } from './../../interfaces';\nimport { map, takeUntil, tap } from 'rxjs/operators';\n\nimport { FsMessage } from '@firestitch/message';\nimport { list } from '@firestitch/common';\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\n\nimport { forkJoin, Observable, of, Subject } from 'rxjs';\nimport { FsAppAclService } from './../../services';\n\n\n@Component({\n templateUrl: './acl-role.component.html',\n styleUrls: ['./acl-role.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsAclRoleComponent implements OnInit, OnDestroy {\n\n @ViewChild(FsListComponent) public list: FsListComponent;\n\n public aclRole: AclRole = null;\n public environment;\n public permissions: any[] = [];\n public listConfig: FsListConfig;\n public levelPermissions = [];\n public AclRoleAccesses = AclRoleAccesses;\n public indexedAccesses = {};\n public aclLevels: any[] = [];\n public indexedAclLevels = {};\n public onlyFullAccess = false;\n public AclLevels = {};\n public aclRoleConfigs = [];\n public levelAclRoleConfigs = [];\n\n private _destroy$ = new Subject();\n\n constructor(\n private readonly _appAclService: FsAppAclService,\n private readonly _dialogRef: MatDialogRef<FsAclRoleComponent>,\n private readonly _message: FsMessage,\n @Inject(MAT_DIALOG_DATA) private readonly _data: any,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n forkJoin(\n this.getRole(),\n this._appAclService.getPermissions(),\n )\n .pipe(takeUntil(this._destroy$))\n .subscribe(([\n aclRole,\n aclPermissions,\n ]) => {\n\n this.permissions = aclPermissions;\n this.aclLevels = this._data.aclLevels;\n\n this.indexedAclLevels = list(this.aclLevels, 'name', 'value');\n this.indexedAccesses = list(AclRoleAccesses, 'name', 'value');\n\n this.aclRole = {\n ...{\n aclPermissions: [],\n allPermissions: true,\n aclRoleConfigs: [],\n permissions: {},\n level: this.aclLevels[0].value,\n },\n ...aclRole,\n };\n\n if (this.aclRole.id) {\n this.permissions.forEach((permission) => {\n let access = 0;\n\n const aclPermission = this.aclRole.aclPermissions.find((item) => {\n return item.permission === permission.value;\n });\n\n if (aclPermission) {\n access = aclPermission.access;\n }\n\n this.aclRole.permissions[permission.value] = access;\n });\n }\n\n if (this.aclRole.allPermissions) {\n this._applyMaxPermissionAccess();\n }\n\n this._updatePermissions();\n this._updateAclRoleConfigs();\n\n this._cdRef.markForCheck();\n });\n\n this.listConfig = {\n status: false,\n paging: false,\n noResults: {\n message: '',\n },\n group: {\n initialExpand: true,\n groupBy: (data) => {\n return data;\n },\n compareBy: (data) => {\n return data.category || 'General';\n },\n },\n fetch: () => {\n return of({\n data: this.levelPermissions.sort((a, b) => {\n a = a.name.toUpperCase();\n b = b.name.toUpperCase();\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n\n return 0;\n }),\n });\n },\n };\n }\n\n public levelChange(): void {\n this._updatePermissions();\n this._updateAclRoleConfigs();\n setTimeout(() => {\n this.list.reload();\n });\n }\n\n public getRole(): Observable<any> {\n if (!this._data.aclRole.id) {\n return of(this._data.aclRole);\n }\n\n const query: any = {\n aclPermissions: true,\n aclRoleConfigs: true,\n };\n\n if (!this.environment) {\n query.environmentId = null;\n }\n\n return this._data.loadAclRole(this._data.aclRole, query)\n .pipe(\n map((data) => this._appAclService.input(data)),\n );\n }\n\n public save = (): Observable<any> => {\n const aclRole = {\n ...this.aclRole,\n permissions: this.levelPermissions.map((permission) => {\n return {\n value: permission.value,\n access: this.aclRole.permissions[permission.value] || 0,\n };\n }),\n aclRoleConfigs: this.levelAclRoleConfigs.map((item) => {\n return {\n id: item.id,\n value: item.value,\n data: item.data,\n };\n }),\n };\n\n return this._data.saveAclRole(this._appAclService.output(aclRole))\n .pipe(\n tap((response) => {\n this._message.success('Saved Changes');\n this.close(response);\n }),\n );\n }\n\n public close(data: any = null): void {\n this._dialogRef.close(data);\n }\n\n public allPermissionsChange(all: boolean): void {\n this._updatePermissions();\n if (all) {\n this._applyMaxPermissionAccess();\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _updatePermissions(): void {\n this.levelPermissions = this.permissions.filter((permission) => {\n return permission.levels.some((item) => {\n return item === this.aclRole.level;\n });\n });\n }\n\n private _updateAclRoleConfigs(): void {\n this.levelAclRoleConfigs = this.aclRoleConfigs.filter((item) => {\n return this.aclRole.level === item.level;\n });\n }\n\n private _applyMaxPermissionAccess(): void {\n this.permissions.forEach((permission) => {\n this.aclRole.permissions[permission.value] = Math.max(...permission.accesses);\n });\n }\n\n}\n","import { takeUntil, filter, map } from 'rxjs/operators';\nimport { Component, OnInit, OnDestroy, ChangeDetectionStrategy, Input, ChangeDetectorRef, ViewChildren, QueryList } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\nimport { list } from '@firestitch/common';\n\nimport { Subject, Observable } from 'rxjs';\n\nimport { AclRole, AclLevel } from './../../interfaces';\nimport { FsAclRoleComponent } from '../acl-role/acl-role.component';\nimport { FsAppAclService } from '../../services';\n\n@Component({\n selector: 'fs-acl-roles',\n templateUrl: 'acl-roles.component.html',\n styleUrls: [ 'acl-roles.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsAclRolesComponent implements OnInit, OnDestroy {\n\n @Input() deleteAclRole: (aclRole: AclRole) => Observable<AclRole>;\n @Input() saveAclRole: (aclRole: AclRole) => Observable<AclRole>;\n @Input() loadAclRoles: (query: any) => Observable<{ data: AclRole[], paging: any }>;\n @Input() loadAclRole: (aclRole: AclRole, query) => Observable<AclRole>;\n @Input() aclLevels: AclLevel[] = [];\n\n @ViewChildren(FsListComponent)\n public list = new QueryList<FsListComponent>();\n\n public listConfig: FsListConfig;\n public permissions;\n public indexedAclRoleLevels: { [value: string]: string } = {};\n\n private _destroy$ = new Subject();\n\n constructor(\n private readonly _appAclService: FsAppAclService,\n private readonly _dialog: MatDialog,\n private readonly _cdRef: ChangeDetectorRef,\n ) { }\n\n public ngOnInit(): void {\n\n new Observable(observer => {\n\n if (this.aclLevels.length) {\n observer.next(this.aclLevels);\n observer.complete();\n } else {\n\n this._appAclService.getLevels()\n .subscribe((aclLevels: AclLevel[]) => {\n observer.next(aclLevels);\n observer.complete();\n });\n }\n })\n .subscribe((aclLevels: AclLevel[]) => {\n this.aclLevels = aclLevels;\n this.indexedAclRoleLevels = list(this.aclLevels, 'name', 'value');\n this._loadListConfig();\n });\n }\n\n public openDialog(aclRole: AclRole = { id: null }): void {\n\n const dialogRef = this._dialog.open(FsAclRoleComponent, {\n width: '70%',\n data: {\n aclRole,\n aclLevels: this.aclLevels,\n loadAclRole: this.loadAclRole,\n saveAclRole: this.saveAclRole,\n },\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n filter((response) => !!response),\n )\n .subscribe((response) => {\n this.list.forEach((list: FsListComponent) => {\n list.reload();\n });\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _loadListConfig() {\n this.listConfig = {\n sort: { value: 'hierarchy' },\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n {\n name: 'level',\n label: 'Level',\n type: ItemType.Select,\n values: this.aclLevels,\n hide: this.aclLevels.length <= 1\n },\n {\n name: 'state',\n label: 'Show Deleted',\n type: ItemType.Checkbox,\n unchecked: 'active',\n checked: 'deleted',\n },\n ],\n actions: [\n {\n click: (event) => {\n this.openDialog();\n },\n label: 'Create',\n },\n ],\n rowActions: [\n {\n click: (data) => {\n return this.deleteAclRole(this._appAclService.output(data));\n },\n remove: {\n title: 'Confirm',\n template: 'Are you sure you would like to delete this role?',\n },\n menu: true,\n label: 'Delete',\n show: (row) => row.state !== 'deleted',\n },\n ],\n fetch: (query) => {\n query.permissions = true;\n return this.loadAclRoles(query)\n .pipe(\n map((data) => this._appAclService.input(data))\n );\n },\n };\n }\n\n}\n","import { Component, OnInit, Input, Inject } from '@angular/core';\nimport { FsAppAclService } from './../../services/app-acl.service';\n\n@Component({\n selector: 'acl-permission-popover',\n templateUrl: './acl-permission-popover.component.html',\n styleUrls: ['./acl-permission-popover.component.scss']\n})\nexport class FsAclPermissionPopoverComponent implements OnInit {\n\n @Input() permission;\n\n public description;\n\n public constructor(\n private _appAclService: FsAppAclService\n ) { }\n\n public ngOnInit() {\n this._appAclService.getPermissions()\n .subscribe(permissions => {\n this.description = permissions.filter(item => {\n return item.value === this.permission.value;\n }).map(item => {\n return item.description;\n })[0];\n });\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { FsAppAclService } from './../../services';\n\n@Component({\n selector: 'fs-acl-role-popover',\n templateUrl: './acl-role-popover.component.html',\n styleUrls: ['./acl-role-popover.component.scss']\n})\nexport class FsAclRolePopoverComponent implements OnInit {\n\n @Input() aclRole;\n @Input() objectName;\n\n public permissions = [];\n\n public constructor(\n private readonly _appAclService: FsAppAclService,\n ) {}\n\n public ngOnInit() {\n const aclRolePermissions = this.aclRole.permissions || [];\n\n this._appAclService.getPermissions()\n .subscribe((response) => {\n this.permissions = response.filter(item => {\n return aclRolePermissions.some(permission => {\n return item.value === permission.value;\n });\n });\n });\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\n\nimport { map } from 'rxjs/operators';\nimport { forkJoin } from 'rxjs';\n\nimport { AclRole, AclEntryData, AclObjectRole, AclObjectEntry, AclEntry } from './../../interfaces';\nimport { FsAppAclService } from './../../services';\n\n\n@Component({\n templateUrl: './acl-entry.component.html',\n styleUrls: ['./acl-entry.component.scss'],\n})\nexport class FsAclEntryComponent implements OnInit {\n\n public aclRoles: AclRole[] = [];\n public aclObjectEntry: AclObjectEntry;\n public aclObjectRole: AclObjectRole;\n public indexedAclRoleLevels = {};\n public titleEdit = 'Edit Roles';\n public titleAdd = 'Assign Roles';\n public required = true;\n\n constructor(\n private readonly _appAclService: FsAppAclService,\n private readonly _dialogRef: MatDialogRef<FsAclEntryComponent>,\n private readonly _message: FsMessage,\n @Inject(MAT_DIALOG_DATA) private readonly _data: AclEntryData\n ) {\n this.aclObjectEntry = { ..._data.aclObjectEntry };\n this.required = _data.required ?? true;\n\n if (_data.titleEdit) {\n this.titleEdit = _data.titleEdit;\n }\n\n if (_data.titleAdd) {\n this.titleAdd = _data.titleAdd;\n }\n }\n\n public save = () => {\n return this._data.saveAclObjectEntry(this._appAclService.output(this.aclObjectEntry))\n .subscribe((data) => {\n this._message.success('Saved Changes');\n this.close(data);\n })\n }\n\n public ngOnInit() {\n forkJoin(\n this._data.loadAclRoles({\n level: this.aclObjectEntry.level,\n environmentId: this.aclObjectEntry.environmentId,\n })\n .pipe(\n map((data) => this._appAclService.input(data)),\n ),\n this._appAclService.getIndexedLevels()\n )\n .subscribe(([\n aclRoles,\n levels,\n ]) => {\n\n this.aclRoles = aclRoles;\n this.indexedAclRoleLevels = levels;\n\n this.aclObjectRole = {\n object: this.aclObjectEntry.object,\n aclRoles: this.aclObjectEntry.aclEntries\n .map((aclEntry: AclEntry) => {\n return aclEntry.aclRole;\n })\n };\n });\n }\n\n public aclObjectRoleChange(aclObjectRoles: AclObjectRole[]) {\n\n this.aclObjectEntry.aclEntries = aclObjectRoles.reduce((aclEntries, aclObjectRole) => {\n aclObjectRole.aclRoles.forEach(aclRole => {\n aclEntries.push({\n aclRoleId: aclRole.id,\n aclRole: aclRole,\n objectId: aclObjectRole.object ? aclObjectRole.object.id : null,\n object: aclObjectRole.object || null\n });\n });\n\n return aclEntries;\n }, []);\n }\n\n public close(data = null) {\n this._dialogRef.close(data);\n }\n\n}\n","import { takeUntil, map } from 'rxjs/operators';\nimport { Component, OnInit, ViewChild, OnDestroy, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Subject, Observable } from 'rxjs';\n\nimport { sortBy, groupBy, forOwn } from 'lodash-es';\n\nimport { FsListAction, FsListComponent, FsListConfig } from '@firestitch/list';\nimport { FsAppAclService } from '../../services';\nimport { AclEntry, AclEntryData, AclRole, AclObjectEntry } from '../../interfaces';\nimport { FsAclEntryComponent } from '../acl-entry';\nimport { FsPrompt } from '@firestitch/prompt';\n\n\n@Component({\n selector: 'fs-acl-entries',\n templateUrl: './acl-entries.component.html',\n styleUrls: ['./acl-entries.component.scss']\n})\nexport class FsAclEntriesComponent implements OnInit, OnDestroy {\n\n @Input() public loadAclEntries: (query: any) => Observable<AclEntry[]>;\n @Input() public loadAclRoles: (query: any) => Observable<AclRole[]>;\n @Input() public saveAclObjectEntry: (aclObjectEntry: AclObjectEntry) => Observable<any>;\n @Input() public environmentShow = true;\n @Input() public environmentLabel = 'Environment';\n @Input() public actions: FsListAction[] = [];\n\n @ViewChild(FsListComponent)\n public aclEntriesList: FsListComponent = null;\n\n public aclEntriesConfig: FsListConfig = null;\n public permissions: any[] = [];\n\n private _destroy$ = new Subject();\n\n constructor(\n private readonly _appAclService: FsAppAclService,\n private readonly _dialog: MatDialog,\n private _confirm: FsPrompt,\n ) {}\n\n public ngOnInit(): void {\n this._appAclService.getPermissions()\n .subscribe(response => {\n this.permissions = response;\n });\n\n this.aclEntriesConfig = {\n status: false,\n paging: false,\n actions: this.actions,\n rowActions: [\n {\n label: 'Remove All Roles',\n click: (aclObjectEntry: AclObjectEntry) => {\n this._confirm\n .confirm({\n title: 'Remove All Roles',\n template: 'Are you sure you would like to remove all roles?',\n }).subscribe(() => {\n const data = this._appAclService.output({ ...aclObjectEntry, aclEntries: [] });\n this.saveAclObjectEntry(data)\n .subscribe(() => {\n this.aclEntriesList.reload();\n });\n });\n }\n }\n ],\n fetch: () => {\n return new Observable((observer) => {\n this.loadAclEntries({\n aclRoles: true,\n aclRolePermissions: true,\n objects: true,\n aclRoleState: 'active',\n })\n .pipe(\n map((response) => this._appAclService.input(response)),\n )\n .subscribe((aclEntries: AclEntry[]) => {\n const objects = aclEntries.reduce((items, item) => {\n if (item.object) {\n items[item.object.id] = item.object;\n }\n return items;\n }, {});\n\n const environments = aclEntries.reduce((items, item) => {\n if (item.environment) {\n items[item.environment.id] = item.environment;\n }\n return items;\n }, {});\n\n let aclObjectEntry: AclObjectEntry[] = [];\n const grouped = groupBy(aclEntries, (item) => {\n return [item.aclRole.level, item.environmentId, item.objectId];\n });\n\n forOwn(grouped, (group, key) => {\n key = key.split(',');\n aclObjectEntry.push({\n object: objects[key[2]],\n level: key[0],\n environmentId: key[1] ? parseInt(key[1]) : null,\n environment: environments[key[1]],\n aclEntries: group,\n });\n });\n\n const hasApp = aclObjectEntry.some((item) => {\n return item.aclEntries.some((entry) => {\n return !entry.objectId;\n });\n });\n\n if (!hasApp) {\n aclObjectEntry.unshift({\n object: null, aclEntries: [],\n level: 'app',\n environmentId: null,\n });\n }\n\n aclObjectEntry = sortBy(aclObjectEntry, (item: AclObjectEntry) => {\n return item.object ? item.level : '';\n });\n\n observer.next({ data: aclObjectEntry });\n observer.complete();\n });\n });\n },\n };\n }\n\n public update(aclObjectEntry: AclObjectEntry) {\n\n const data: AclEntryData = {\n aclObjectEntry: aclObjectEntry,\n required: false,\n loadAclRoles: this.loadAclRoles,\n saveAclObjectEntry: this.saveAclObjectEntry\n }\n\n this._dialog.open(FsAclEntryComponent, {\n data: data\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.aclEntriesList.reload();\n });\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public reload(): void {\n this.aclEntriesList.reload();\n }\n\n}\n","import { ControlContainer, NgForm } from '@angular/forms';\nimport { Component, Input, EventEmitter, Output } from '@angular/core';\n\nimport { AclObjectRole, AclRole } from '../../interfaces';\n\n\n@Component({\n selector: 'fs-acl-object-roles',\n templateUrl: './acl-object-roles.component.html',\n styleUrls: ['./acl-object-roles.component.scss'],\n viewProviders: [ { provide: ControlContainer, useExisting: NgForm } ]\n})\nexport class FsAclObjectRolesComponent {\n\n @Input() aclRoles: AclRole[] = [];\n @Input() required = false;\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() aclObjectRoles: AclObjectRole[] = [];\n @Input() rolesLabel = 'Roles';\n @Input() levelLabel = '';\n @Output() change = new EventEmitter<AclObjectRole[]>();\n\n public compareAclRole = (o1: any, o2: any) => {\n return o1 && o2 && o1.id === o2.id;\n }\n\n public changed() {\n this.change.emit(this.aclObjectRoles);\n }\n}\n","import { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { AppAclConfig } from './interfaces/app-acl-config';\nimport { FS_APP_ACL_CONFIG } from './injectors/app-acl-config.injector';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsPopoverModule } from '@firestitch/popover';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsRadioGroupModule } from '@firestitch/radiogroup';\nimport { FsBadgeModule } from '@firestitch/badge';\nimport { FsCheckboxGroupModule } from '@firestitch/checkboxgroup';\n\nimport { FsAclRolesComponent } from './components/acl-roles/acl-roles.component';\nimport { FsAclPermissionPopoverComponent } from './components/acl-permission-popover';\nimport { FsAclRolePopoverComponent } from './components/acl-role-popover/acl-role-popover.component';\nimport { FsAclEntriesComponent } from './components/acl-entries/acl-entries.component';\nimport { FsAclRoleComponent } from './components/acl-role/acl-role.component';\nimport { FsAclObjectRolesComponent } from './components/acl-object-roles/acl-object-roles.component';\nimport { FsAclEntryComponent } from './components/acl-entry/acl-entry.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatFormFieldModule,\n MatCheckboxModule,\n MatSelectModule,\n MatButtonModule,\n MatRadioModule,\n MatInputModule,\n FlexLayoutModule,\n\n FsListModule,\n FsPopoverModule,\n FsDialogModule,\n FsFormModule,\n FsLabelModule,\n FsRadioGroupModule,\n FsBadgeModule,\n FsCheckboxGroupModule,\n ],\n declarations: [\n FsAclRolesComponent,\n FsAclPermissionPopoverComponent,\n FsAclRoleComponent,\n FsAclEntriesComponent,\n FsAclRolePopoverComponent,\n FsAclObjectRolesComponent,\n FsAclEntryComponent,\n ],\n exports: [\n FsAclRolesComponent,\n FsAclPermissionPopoverComponent,\n FsAclRoleComponent,\n FsAclEntriesComponent,\n FsAclRolePopoverComponent,\n FsAclObjectRolesComponent,\n FsAclEntryComponent,\n ],\n entryComponents: [\n FsAclRoleComponent\n ]\n})\nexport class FsAppAclModule {\n static forRoot(): ModuleWithProviders<FsAppAclModule> {\n return {\n ngModule: FsAppAclModule,\n // providers: [\n // { provide: FS_APP_ACL_CONFIG, useValue: config || {} }\n // ]\n };\n }\n}\n","// start:ng42.barrel\nexport * from './app-acl-config.injector';\n// end:ng42.barrel\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {FsAclEntryComponent as ɵf} from './app/components/acl-entry/acl-entry.component';\nexport {FsAclObjectRolesComponent as ɵe} from './app/components/acl-object-roles/acl-object-roles.component';\nexport {FsAclPermissionPopoverComponent as ɵb} from './app/components/acl-permission-popover';\nexport {FsAclRolePopoverComponent as ɵd} from './app/components/acl-role-popover/acl-role-popover.component';\nexport {FsAclRoleComponent as ɵc} from './app/components/acl-role/acl-role.component';\nexport {AclEntryData as ɵg} from './app/interfaces';\nexport {FsAppAclService as ɵa} from './app/services';"],"names":[],"mappings":"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"}