@masterteam/permissions 0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-permissions.mjs","sources":["../../../../packages/masterteam/permissions/src/store/permissions/permissions.model.ts","../../../../packages/masterteam/permissions/src/store/permissions/permissions.actions.ts","../../../../packages/masterteam/permissions/src/store/permissions/permissions.state.ts","../../../../packages/masterteam/permissions/src/store/permissions/permissions.facade.ts","../../../../packages/masterteam/permissions/src/lib/permissions-page/permissions-edit-dialog/permissions-edit-dialog.ts","../../../../packages/masterteam/permissions/src/lib/permissions-page/permissions-edit-dialog/permissions-edit-dialog.html","../../../../packages/masterteam/permissions/src/lib/permissions-page/permissions-page.ts","../../../../packages/masterteam/permissions/src/lib/permissions-page/permissions-page.html","../../../../packages/masterteam/permissions/src/store/index.ts","../../../../packages/masterteam/permissions/src/masterteam-permissions.ts"],"sourcesContent":["export interface Role {\r\n name: string;\r\n value: string;\r\n}\r\nexport interface LevelRoles {\r\n level?: string;\r\n levelKey?: string;\r\n scopeType?: string;\r\n scopeId?: string;\r\n roles?: Role[];\r\n}\r\n\r\nexport interface PermissionAction {\r\n id: number;\r\n name: string;\r\n isSelected: boolean;\r\n}\r\n\r\nexport interface PermissionLog {\r\n name: string;\r\n actions: PermissionAction[];\r\n}\r\n\r\nexport interface LevelPermission {\r\n levelName: string;\r\n logs: PermissionLog[];\r\n}\r\n\r\nexport interface RolesResponse {\r\n endpoint: string;\r\n status: number;\r\n code: number;\r\n locale: string;\r\n message: string;\r\n errors: null | string[];\r\n data: Role[];\r\n cacheSession: string;\r\n}\r\n\r\nexport interface PermissionsResponseData {\r\n permissions: PermissionLog[];\r\n}\r\n\r\nexport interface PermissionsResponse {\r\n endpoint: string;\r\n status: number;\r\n code: number;\r\n locale: string;\r\n message: string;\r\n errors: null | string[];\r\n data: PermissionsResponseData;\r\n cacheSession: string;\r\n}\r\n\r\nexport interface GroupPermissionsResponse {\r\n endpoint: string;\r\n status: number;\r\n code: number;\r\n locale: string;\r\n message: string;\r\n errors: null | string[];\r\n data: LevelPermission[];\r\n cacheSession: string;\r\n}\r\n\r\nexport interface UpdatePermissionPayload {\r\n roleValue: string;\r\n levelId: string;\r\n permissions: LevelPermission[];\r\n}\r\nexport enum ModuleType {\r\n LEVEL = 'level',\r\n LOG = 'log',\r\n LEVELLOG = 'levelLog',\r\n}\r\n","import { LevelPermission, PermissionLog } from './permissions.model';\r\n\r\nexport class LoadRoles {\r\n static readonly type = '[Permissions] Load Roles';\r\n constructor() {}\r\n}\r\n\r\nexport class LoadRolesSuccess {\r\n static readonly type = '[Permissions] Load Roles Success';\r\n constructor(public roles: any[]) {}\r\n}\r\n\r\nexport class LoadRolesFail {\r\n static readonly type = '[Permissions] Load Roles Fail';\r\n constructor(public error: string) {}\r\n}\r\n\r\nexport class SelectRole {\r\n static readonly type = '[Permissions] Select Role';\r\n constructor(public roleValue: string) {}\r\n}\r\n\r\nexport class SelectGroup {\r\n static readonly type = '[Permissions] Select Group';\r\n constructor(public groupId: number) {}\r\n}\r\n\r\nexport class LoadPermissions {\r\n static readonly type = '[Permissions] Load Permissions';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n ) {}\r\n}\r\n\r\nexport class LoadGroupPermissions {\r\n static readonly type = '[Permissions] Load Group Permissions';\r\n constructor(\r\n public groupId: number,\r\n public levelId: string,\r\n ) {}\r\n}\r\n\r\nexport class LoadPermissionsSuccess {\r\n static readonly type = '[Permissions] Load Permissions Success';\r\n constructor(public permissions: PermissionLog[]) {}\r\n}\r\n\r\nexport class LoadGroupPermissionsSuccess {\r\n static readonly type = '[Permissions] Load Group Permissions Success';\r\n constructor(public permissions: LevelPermission[]) {}\r\n}\r\n\r\nexport class LoadPermissionsFail {\r\n static readonly type = '[Permissions] Load Permissions Fail';\r\n constructor(public error: string) {}\r\n}\r\n\r\nexport class UpdatePermissionLocally {\r\n static readonly type = '[Permissions] Update Permission Locally';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n public actionId: number,\r\n public isSelected: boolean,\r\n ) {}\r\n}\r\n\r\nexport class UpdateGroupPermissionLocally {\r\n static readonly type = '[Permissions] Update Group Permission Locally';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n public actionId: number,\r\n public isSelected: boolean,\r\n ) {}\r\n}\r\nexport class UpdatePermission {\r\n static readonly type = '[Permissions] Update Permission';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n ) {}\r\n}\r\n\r\nexport class UpdateGroupPermission {\r\n static readonly type = '[Permissions] Update Group Permission';\r\n constructor(\r\n public groupId: string,\r\n public permissionLogs: PermissionLog[],\r\n public levelId: string,\r\n ) {}\r\n}\r\n\r\nexport class UpdatePermissionSuccess {\r\n static readonly type = '[Permissions] Update Permission Success';\r\n}\r\n\r\nexport class UpdatePermissionFail {\r\n static readonly type = '[Permissions] Update Permission Fail';\r\n constructor(public error: string) {}\r\n}\r\n\r\nexport class ToggleAllLevelPermissions {\r\n static readonly type = '[Permissions] Toggle All Level Permissions';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n public levelName: string,\r\n public enabled: boolean,\r\n ) {}\r\n}\r\n\r\nexport class ToggleAllGroupPermissions {\r\n static readonly type = '[Permissions] Toggle All Group Permissions';\r\n constructor(\r\n public levelId: string,\r\n public groupId: string,\r\n public enabled: boolean,\r\n ) {}\r\n}\r\n\r\nexport class SetModuleInfo {\r\n static readonly type = '[Permissions] Set Module Info';\r\n\r\n constructor(\r\n public readonly moduleType: string,\r\n public readonly moduleId: string | number,\r\n public readonly parentModuleType?: string,\r\n public readonly parentModuleId?: string | number,\r\n public readonly parentPath?: string,\r\n ) {}\r\n}\r\n\r\nexport class Reset {\r\n static readonly type = '[Permissions] Reset Module Info';\r\n\r\n constructor() {}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\r\nimport { catchError, finalize, map, tap } from 'rxjs';\r\nimport {\r\n GroupPermissionsResponse,\r\n LevelPermission,\r\n LevelRoles,\r\n ModuleType,\r\n PermissionLog,\r\n PermissionsResponse,\r\n RolesResponse,\r\n} from './permissions.model';\r\nimport * as PermissionsActions from './permissions.actions';\r\n\r\nexport interface PermissionsStateModel {\r\n roles: LevelRoles[];\r\n selectedRoleValue: string | null;\r\n selectedGroupValue: string | number | null;\r\n permissions: PermissionLog[];\r\n groupPermissions: LevelPermission[];\r\n currentLevelId: string | null;\r\n loading: boolean;\r\n permissionsLoading: boolean;\r\n addPermissionsLoading: boolean;\r\n error: string | null;\r\n moduleType: string;\r\n moduleId: string | number;\r\n parentModuleType?: string | null;\r\n parentModuleId?: string | number | null;\r\n parentPath?: string;\r\n}\r\n\r\n@State<PermissionsStateModel>({\r\n name: 'permissions',\r\n defaults: {\r\n roles: [],\r\n selectedRoleValue: null,\r\n selectedGroupValue: null,\r\n permissions: [],\r\n groupPermissions: [],\r\n currentLevelId: null,\r\n loading: false,\r\n permissionsLoading: false,\r\n addPermissionsLoading: false,\r\n error: null,\r\n moduleType: '',\r\n moduleId: '',\r\n parentModuleType: '',\r\n parentModuleId: '',\r\n parentPath: '',\r\n },\r\n})\r\n@Injectable()\r\nexport class PermissionsState {\r\n private http = inject(HttpClient);\r\n\r\n @Selector()\r\n static roles(state: PermissionsStateModel) {\r\n return state.roles;\r\n }\r\n\r\n @Selector()\r\n static selectedRoleValue(state: PermissionsStateModel) {\r\n return state.selectedRoleValue;\r\n }\r\n\r\n @Selector()\r\n static selectedGroupValue(state: PermissionsStateModel) {\r\n return state.selectedGroupValue;\r\n }\r\n\r\n @Selector()\r\n static permissions(state: PermissionsStateModel) {\r\n return state.permissions;\r\n }\r\n\r\n @Selector()\r\n static groupPermissions(state: PermissionsStateModel) {\r\n return state.groupPermissions;\r\n }\r\n\r\n @Selector()\r\n static loading(state: PermissionsStateModel) {\r\n return state.loading;\r\n }\r\n\r\n @Selector()\r\n static permissionsLoading(state: PermissionsStateModel) {\r\n return state.permissionsLoading;\r\n }\r\n @Selector()\r\n static addPermissionsLoading(state: PermissionsStateModel) {\r\n return state.addPermissionsLoading;\r\n }\r\n @Selector()\r\n static moduleType(state: PermissionsStateModel): string | null {\r\n return state.moduleType;\r\n }\r\n\r\n @Selector()\r\n static moduleId(state: PermissionsStateModel): string | number | null {\r\n return state.moduleId;\r\n }\r\n\r\n @Selector()\r\n static levelId(state: PermissionsStateModel): string {\r\n return state.moduleType === 'module'\r\n ? state.parentModuleId!.toString()\r\n : state.moduleId.toString();\r\n }\r\n\r\n @Selector()\r\n static error(state: PermissionsStateModel) {\r\n return state.error;\r\n }\r\n\r\n @Action(PermissionsActions.LoadRoles)\r\n loadRoles(ctx: StateContext<PermissionsStateModel>) {\r\n ctx.patchState({\r\n loading: true,\r\n error: null,\r\n currentLevelId: ctx.getState().moduleId.toString() || '',\r\n });\r\n\r\n return this.http\r\n .get<RolesResponse>(\r\n `identity/roles/scopes/${ctx.getState().moduleType}/${ctx.getState().moduleId}?inherited=true`,\r\n )\r\n .pipe(\r\n map((response) => response.data),\r\n tap((roles) => {\r\n ctx.dispatch(new PermissionsActions.LoadRolesSuccess(roles));\r\n }),\r\n catchError((error) => {\r\n ctx.dispatch(\r\n new PermissionsActions.LoadRolesFail(\r\n error.message || 'Failed to load roles',\r\n ),\r\n );\r\n throw error;\r\n }),\r\n );\r\n }\r\n\r\n @Action(PermissionsActions.LoadRolesSuccess)\r\n loadRolesSuccess(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.LoadRolesSuccess,\r\n ) {\r\n ctx.patchState({\r\n roles: action.roles,\r\n loading: false,\r\n error: null,\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.LoadRolesFail)\r\n loadRolesFail(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.LoadRolesFail,\r\n ) {\r\n ctx.patchState({\r\n loading: false,\r\n error: action.error,\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.SelectRole)\r\n selectRole(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.SelectRole,\r\n ) {\r\n const state = ctx.getState();\r\n ctx.patchState({ selectedRoleValue: action.roleValue });\r\n\r\n if (state.currentLevelId) {\r\n ctx.dispatch(\r\n new PermissionsActions.LoadPermissions(\r\n action.roleValue,\r\n state.currentLevelId,\r\n ),\r\n );\r\n }\r\n }\r\n\r\n @Action(PermissionsActions.SelectGroup)\r\n selectGroup(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.SelectGroup,\r\n ) {\r\n const state = ctx.getState();\r\n ctx.patchState({ selectedGroupValue: action.groupId });\r\n\r\n if (state.currentLevelId) {\r\n ctx.dispatch(\r\n new PermissionsActions.LoadGroupPermissions(\r\n action.groupId,\r\n state.currentLevelId,\r\n ),\r\n );\r\n }\r\n }\r\n\r\n @Action(PermissionsActions.LoadPermissions)\r\n loadPermissions(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.LoadPermissions,\r\n ) {\r\n ctx.patchState({ permissionsLoading: true, error: null });\r\n\r\n // identity/roles/${action.roleValue}/permissions\r\n return this.http\r\n .get<PermissionsResponse>(\r\n `identity/roles/level/${\r\n ctx.getState().moduleType === 'module'\r\n ? ctx.getState().parentModuleId\r\n : ctx.getState().moduleId\r\n }/${ctx.getState().moduleType === 'module' ? 'module/' : ''}${\r\n ctx.getState().moduleType === 'module'\r\n ? `${ctx.getState().moduleId}/`\r\n : ''\r\n }${action.roleValue}/permissions`,\r\n {\r\n params: {\r\n scopeId:\r\n ctx.getState().moduleType === 'module'\r\n ? ctx.getState().parentModuleId!\r\n : ctx.getState().moduleId,\r\n scopeType: ModuleType.LEVEL,\r\n },\r\n },\r\n )\r\n .pipe(\r\n map((response) => response.data.permissions),\r\n tap((permissions) => {\r\n ctx.dispatch(\r\n new PermissionsActions.LoadPermissionsSuccess(permissions),\r\n );\r\n }),\r\n catchError((error) => {\r\n ctx.dispatch(\r\n new PermissionsActions.LoadPermissionsFail(\r\n error.message || 'Failed to load permissions',\r\n ),\r\n );\r\n throw error;\r\n }),\r\n );\r\n }\r\n\r\n @Action(PermissionsActions.LoadGroupPermissions)\r\n loadGroupPermissions(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.LoadGroupPermissions,\r\n ) {\r\n ctx.patchState({ permissionsLoading: true, error: null });\r\n\r\n return this.http\r\n .get<GroupPermissionsResponse>(\r\n `identity/groups/level/${\r\n ctx.getState().moduleType === 'module'\r\n ? ctx.getState().parentModuleId\r\n : ctx.getState().moduleId\r\n }/${ctx.getState().moduleType === 'module' ? 'module/' : ''}${\r\n ctx.getState().moduleType === 'module'\r\n ? `${ctx.getState().moduleId}/`\r\n : ''\r\n }${action.groupId}/permissions`,\r\n )\r\n .pipe(\r\n map((response) => response.data),\r\n tap((permissions) => {\r\n ctx.dispatch(\r\n new PermissionsActions.LoadGroupPermissionsSuccess(permissions),\r\n );\r\n }),\r\n catchError((error) => {\r\n ctx.dispatch(\r\n new PermissionsActions.LoadPermissionsFail(\r\n error.message || 'Failed to load permissions',\r\n ),\r\n );\r\n throw error;\r\n }),\r\n );\r\n }\r\n\r\n @Action(PermissionsActions.LoadPermissionsSuccess)\r\n loadPermissionsSuccess(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.LoadPermissionsSuccess,\r\n ) {\r\n ctx.patchState({\r\n permissions: action.permissions,\r\n permissionsLoading: false,\r\n error: null,\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.LoadGroupPermissionsSuccess)\r\n loadGroupPermissionsSuccess(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.LoadGroupPermissionsSuccess,\r\n ) {\r\n ctx.patchState({\r\n groupPermissions: action.permissions,\r\n permissionsLoading: false,\r\n error: null,\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.LoadPermissionsFail)\r\n loadPermissionsFail(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.LoadPermissionsFail,\r\n ) {\r\n ctx.patchState({\r\n permissionsLoading: false,\r\n error: action.error,\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.UpdatePermissionLocally)\r\n updatePermissionLocally(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.UpdatePermissionLocally,\r\n ) {\r\n const state = ctx.getState();\r\n\r\n const updatedPermissions = state.permissions.map((log) => ({\r\n ...log,\r\n actions: log.actions.map((act) =>\r\n act.id === action.actionId\r\n ? { ...act, isSelected: action.isSelected }\r\n : act,\r\n ),\r\n }));\r\n\r\n ctx.patchState({ permissions: updatedPermissions });\r\n }\r\n\r\n @Action(PermissionsActions.UpdateGroupPermissionLocally)\r\n updateGroupPermissionLocally(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.UpdateGroupPermissionLocally,\r\n ) {\r\n const state = ctx.getState();\r\n\r\n const updatedPermissions = state.groupPermissions.map((permission) => ({\r\n ...permission,\r\n logs: permission.logs.map((log) => ({\r\n ...log,\r\n actions: log.actions.map((act) =>\r\n act.id === action.actionId\r\n ? { ...act, isSelected: action.isSelected }\r\n : act,\r\n ),\r\n })),\r\n }));\r\n\r\n ctx.patchState({ groupPermissions: updatedPermissions });\r\n }\r\n\r\n @Action(PermissionsActions.UpdatePermission)\r\n updatePermission(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.UpdatePermission,\r\n ) {\r\n const state = ctx.getState();\r\n ctx.patchState({ addPermissionsLoading: true, error: null });\r\n\r\n const updatedPermissions = state.permissions;\r\n ctx.patchState({ permissions: updatedPermissions });\r\n return this.http\r\n .put<PermissionsResponse>(\r\n `identity/roles/${action.roleValue}/setAllPermissions`,\r\n { permissions: updatedPermissions },\r\n {\r\n params: {\r\n scopeId:\r\n ctx.getState().moduleType === 'module'\r\n ? ctx.getState().parentModuleId!\r\n : ctx.getState().moduleId,\r\n scopeType: ModuleType.LEVEL,\r\n },\r\n },\r\n )\r\n .pipe(\r\n tap(() => {\r\n ctx.dispatch(new PermissionsActions.UpdatePermissionSuccess());\r\n }),\r\n finalize(() => {\r\n ctx.patchState({ addPermissionsLoading: false });\r\n }),\r\n catchError((error) => {\r\n // Rollback on error\r\n ctx.patchState({\r\n permissions: state.permissions,\r\n addPermissionsLoading: false,\r\n });\r\n ctx.dispatch(\r\n new PermissionsActions.UpdatePermissionFail(\r\n error.message || 'Failed to update permission',\r\n ),\r\n );\r\n throw error;\r\n }),\r\n );\r\n }\r\n\r\n @Action(PermissionsActions.UpdateGroupPermission)\r\n updateGroupPermission(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.UpdateGroupPermission,\r\n ) {\r\n const state = ctx.getState();\r\n ctx.patchState({ addPermissionsLoading: true, error: null });\r\n\r\n const updatedPermissions = state.groupPermissions;\r\n ctx.patchState({ groupPermissions: updatedPermissions });\r\n return this.http\r\n .put<PermissionsResponse>(\r\n `identity/groups/${action.groupId}/setAllPermissions`,\r\n { permissions: updatedPermissions[0].logs || [] },\r\n )\r\n .pipe(\r\n tap(() => {\r\n ctx.dispatch(new PermissionsActions.UpdatePermissionSuccess());\r\n }),\r\n finalize(() => {\r\n ctx.patchState({ addPermissionsLoading: false });\r\n }),\r\n catchError((error) => {\r\n // Rollback on error\r\n ctx.patchState({\r\n groupPermissions: state.groupPermissions,\r\n addPermissionsLoading: false,\r\n });\r\n ctx.dispatch(\r\n new PermissionsActions.UpdatePermissionFail(\r\n error.message || 'Failed to update permission',\r\n ),\r\n );\r\n throw error;\r\n }),\r\n );\r\n }\r\n\r\n @Action(PermissionsActions.ToggleAllLevelPermissions)\r\n toggleAllLevelPermissions(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.ToggleAllLevelPermissions,\r\n ) {\r\n const state = ctx.getState();\r\n\r\n const updatedPermissions = state.permissions.map((log) => ({\r\n ...log,\r\n actions: log.actions.map((act) => ({\r\n ...act,\r\n isSelected: action.enabled,\r\n })),\r\n }));\r\n\r\n ctx.patchState({ permissions: updatedPermissions });\r\n\r\n return this.http\r\n .put<PermissionsResponse>(\r\n `identity/roles/${action.roleValue}/setAllPermissions`,\r\n { permissions: updatedPermissions },\r\n {\r\n params: {\r\n scopeId:\r\n ctx.getState().moduleType === 'module'\r\n ? ctx.getState().parentModuleId!\r\n : ctx.getState().moduleId,\r\n scopeType: ModuleType.LEVEL,\r\n },\r\n },\r\n )\r\n .pipe(\r\n tap(() => {\r\n ctx.dispatch(new PermissionsActions.UpdatePermissionSuccess());\r\n }),\r\n catchError((error) => {\r\n ctx.patchState({ permissions: state.permissions });\r\n ctx.dispatch(\r\n new PermissionsActions.UpdatePermissionFail(\r\n error.message || 'Failed to toggle all permissions',\r\n ),\r\n );\r\n throw error;\r\n }),\r\n );\r\n }\r\n\r\n @Action(PermissionsActions.ToggleAllGroupPermissions)\r\n toggleAllGroupPermissions(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.ToggleAllGroupPermissions,\r\n ) {\r\n const state = ctx.getState();\r\n\r\n const updatedPermissions = state.groupPermissions.map((permission) => ({\r\n ...permission,\r\n logs: permission.logs.map((log) => ({\r\n ...log,\r\n actions: log.actions.map((act) => ({\r\n ...act,\r\n isSelected: action.enabled,\r\n })),\r\n })),\r\n }));\r\n ctx.patchState({ groupPermissions: updatedPermissions });\r\n\r\n return this.http\r\n .put<PermissionsResponse>(\r\n `identity/groups/${action.groupId}/setAllPermissions`,\r\n { permissions: updatedPermissions[0].logs || [] },\r\n )\r\n .pipe(\r\n tap(() => {\r\n ctx.dispatch(new PermissionsActions.UpdatePermissionSuccess());\r\n }),\r\n catchError((error) => {\r\n ctx.patchState({ groupPermissions: state.groupPermissions });\r\n ctx.dispatch(\r\n new PermissionsActions.UpdatePermissionFail(\r\n error.message || 'Failed to toggle all permissions',\r\n ),\r\n );\r\n throw error;\r\n }),\r\n );\r\n }\r\n\r\n @Action(PermissionsActions.SetModuleInfo)\r\n setModuleInfo(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.SetModuleInfo,\r\n ) {\r\n let parentPath = '';\r\n if (action.parentModuleType && action.parentModuleId) {\r\n parentPath = `/${action.parentModuleType}/${action.parentModuleId}`;\r\n } else if (action.parentPath) {\r\n parentPath = action.parentPath;\r\n }\r\n ctx.patchState({\r\n moduleType: action.moduleType,\r\n moduleId: action.moduleId,\r\n parentModuleType: action.parentModuleType ?? null,\r\n parentModuleId: action.parentModuleId ?? null,\r\n parentPath: parentPath ?? '',\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.Reset)\r\n reset(ctx: StateContext<PermissionsStateModel>) {\r\n ctx.patchState({\r\n moduleType: '',\r\n moduleId: '',\r\n parentModuleType: null,\r\n parentModuleId: null,\r\n parentPath: '',\r\n roles: [],\r\n selectedRoleValue: null,\r\n selectedGroupValue: null,\r\n permissions: [],\r\n groupPermissions: [],\r\n });\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { Store } from '@ngxs/store';\r\nimport { PermissionsState } from './permissions.state';\r\nimport * as PermissionsActions from './permissions.actions';\r\nimport { Observable } from 'rxjs';\r\nimport { PermissionLog } from './permissions.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PermissionsFacade {\r\n private store = inject(Store);\r\n\r\n selectors = {\r\n roles: this.store.selectSignal(PermissionsState.roles),\r\n selectedRoleValue: this.store.selectSignal(\r\n PermissionsState.selectedRoleValue,\r\n ),\r\n selectedGroupValue: this.store.selectSignal(\r\n PermissionsState.selectedGroupValue,\r\n ),\r\n permissions: this.store.selectSignal(PermissionsState.permissions),\r\n groupPermissions: this.store.selectSignal(\r\n PermissionsState.groupPermissions,\r\n ),\r\n loading: this.store.selectSignal(PermissionsState.loading),\r\n permissionsLoading: this.store.selectSignal(\r\n PermissionsState.permissionsLoading,\r\n ),\r\n addPermissionsLoading: this.store.selectSignal(\r\n PermissionsState.addPermissionsLoading,\r\n ),\r\n error: this.store.selectSignal(PermissionsState.error),\r\n levelId: this.store.selectSignal(PermissionsState.levelId),\r\n };\r\n\r\n loadRoles() {\r\n return this.store.dispatch(new PermissionsActions.LoadRoles());\r\n }\r\n\r\n selectRole(roleValue: string) {\r\n if (roleValue) {\r\n return this.store.dispatch(new PermissionsActions.SelectRole(roleValue));\r\n }\r\n return;\r\n }\r\n\r\n selectGroup(groupId: number) {\r\n if (groupId) {\r\n return this.store.dispatch(new PermissionsActions.SelectGroup(groupId));\r\n }\r\n return;\r\n }\r\n\r\n loadPermissions(roleValue: string, levelId: string) {\r\n return this.store.dispatch(\r\n new PermissionsActions.LoadPermissions(roleValue, levelId),\r\n );\r\n }\r\n\r\n loadGroupPermissions(groupId: number, levelId: string) {\r\n return this.store.dispatch(\r\n new PermissionsActions.LoadGroupPermissions(groupId, levelId),\r\n );\r\n }\r\n\r\n updatePermissionLocally(\r\n roleValue: string,\r\n levelId: string,\r\n actionId: number,\r\n isSelected: boolean,\r\n ) {\r\n return this.store.dispatch(\r\n new PermissionsActions.UpdatePermissionLocally(\r\n roleValue,\r\n levelId,\r\n actionId,\r\n isSelected,\r\n ),\r\n );\r\n }\r\n\r\n updateGroupPermissionLocally(\r\n roleValue: string,\r\n levelId: string,\r\n actionId: number,\r\n isSelected: boolean,\r\n ) {\r\n return this.store.dispatch(\r\n new PermissionsActions.UpdateGroupPermissionLocally(\r\n roleValue,\r\n levelId,\r\n actionId,\r\n isSelected,\r\n ),\r\n );\r\n }\r\n updatePermission(roleValue: string, levelId: string) {\r\n return this.store.dispatch(\r\n new PermissionsActions.UpdatePermission(roleValue, levelId),\r\n );\r\n }\r\n updateGroupPermission(\r\n groupId: string,\r\n permissionLogs: PermissionLog[],\r\n levelId: string,\r\n ) {\r\n return this.store.dispatch(\r\n new PermissionsActions.UpdateGroupPermission(\r\n groupId,\r\n permissionLogs,\r\n levelId,\r\n ),\r\n );\r\n }\r\n\r\n toggleAllLevelPermissions(\r\n roleValue: string,\r\n levelId: string,\r\n levelName: string,\r\n enabled: boolean,\r\n ) {\r\n return this.store.dispatch(\r\n new PermissionsActions.ToggleAllLevelPermissions(\r\n roleValue,\r\n levelId,\r\n levelName,\r\n enabled,\r\n ),\r\n );\r\n }\r\n toggleAllGroupPermissions(\r\n levelId: string,\r\n groupId: string,\r\n enabled: boolean,\r\n ) {\r\n return this.store.dispatch(\r\n new PermissionsActions.ToggleAllGroupPermissions(\r\n levelId,\r\n groupId,\r\n enabled,\r\n ),\r\n );\r\n }\r\n setModuleInfo(\r\n moduleType: string,\r\n moduleId: string | number,\r\n parentModuleType?: string,\r\n parentModuleId?: string | number,\r\n parentPath?: string,\r\n ): Observable<unknown> {\r\n return this.store.dispatch(\r\n new PermissionsActions.SetModuleInfo(\r\n moduleType,\r\n moduleId,\r\n parentModuleType,\r\n parentModuleId,\r\n parentPath,\r\n ),\r\n );\r\n }\r\n\r\n reset() {\r\n return this.store.dispatch(new PermissionsActions.Reset());\r\n }\r\n}\r\n","import {\r\n Component,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ToggleField } from '@masterteam/components/toggle-field';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\nimport { PermissionsFacade } from '../../../store/permissions/permissions.facade';\r\nimport {\r\n PermissionLog,\r\n PermissionAction,\r\n} from '../../../store/permissions/permissions.model';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { ModalRef } from '@masterteam/components/dialog';\r\nimport { Button } from '@masterteam/components/button';\r\n\r\n@Component({\r\n selector: 'mt-permissions-edit-dialog',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n ToggleField,\r\n TranslocoModule,\r\n FormsModule,\r\n Button,\r\n ],\r\n templateUrl: './permissions-edit-dialog.html',\r\n styleUrl: './permissions-edit-dialog.scss',\r\n})\r\nexport class PermissionsEditDialog {\r\n private permissionsFacade = inject(PermissionsFacade);\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n // permissionGroup = input.required<PermissionLog | null>();\r\n permissionGroup = input<PermissionLog | null>(null);\r\n addPermissionsLoading =\r\n this.permissionsFacade.selectors.addPermissionsLoading;\r\n addPermissionsError = this.permissionsFacade.selectors.error;\r\n\r\n levelId = input.required<string>();\r\n roleValue = input.required<string>();\r\n isGroup = input.required<boolean>();\r\n\r\n closeDialog = output<void>();\r\n\r\n actionControls = signal<Map<number, FormControl>>(new Map());\r\n toggleAll = signal<boolean>(false);\r\n\r\n constructor() {\r\n effect(() => {\r\n const group = this.permissionGroup();\r\n if (group) {\r\n const controls = new Map<number, FormControl>();\r\n group.actions.forEach((action) => {\r\n const control = new FormControl(action.isSelected);\r\n control.valueChanges.subscribe((value) => {\r\n if (value !== null) {\r\n this.onPermissionToggle(action.id, value);\r\n }\r\n });\r\n controls.set(action.id, control);\r\n });\r\n this.actionControls.set(controls);\r\n this.toggleAll.set(group.actions.every((action) => action.isSelected));\r\n }\r\n });\r\n }\r\n\r\n onPermissionToggle(actionId: number, isSelected: boolean) {\r\n const levelId = this.levelId();\r\n const roleValue = this.roleValue();\r\n if (levelId && roleValue) {\r\n if (this.isGroup()) {\r\n this.permissionsFacade.updateGroupPermissionLocally(\r\n roleValue,\r\n levelId,\r\n actionId,\r\n isSelected,\r\n );\r\n return;\r\n }\r\n this.permissionsFacade.updatePermissionLocally(\r\n roleValue,\r\n levelId,\r\n actionId,\r\n isSelected,\r\n );\r\n }\r\n }\r\n\r\n onClose() {\r\n // this.closeDialog.emit();\r\n this.ref.close();\r\n }\r\n\r\n trackByActionId(_index: number, action: PermissionAction) {\r\n return action.id;\r\n }\r\n\r\n getControl(actionId: number): FormControl {\r\n return this.actionControls().get(actionId) || new FormControl(false);\r\n }\r\n\r\n onSave(): void {\r\n const levelId = this.levelId();\r\n const roleValue = this.roleValue();\r\n const isGroup = this.isGroup();\r\n if (levelId && roleValue) {\r\n let subscription;\r\n if (isGroup) {\r\n subscription = this.permissionsFacade.updateGroupPermission(\r\n roleValue,\r\n [this.permissionGroup()!],\r\n levelId,\r\n );\r\n } else {\r\n subscription = this.permissionsFacade.updatePermission(\r\n roleValue,\r\n levelId,\r\n );\r\n }\r\n subscription.subscribe({\r\n next: () => {\r\n this.onClose();\r\n },\r\n error: (error: any) => {\r\n console.error('Failed to save accessibility permissions:', error);\r\n },\r\n });\r\n }\r\n }\r\n\r\n selectAll() {\r\n const group = this.permissionGroup();\r\n const actions = group?.actions || [];\r\n for (let i = 0; i < actions?.length; i++) {\r\n const control = this.actionControls().get(actions[i].id);\r\n control?.setValue(this.toggleAll());\r\n }\r\n }\r\n}\r\n","<div [class]=\"'flex flex-col gap-3 p-4 ' + modal.contentClass\">\r\n @if (permissionGroup(); as group) {\r\n <div\r\n class=\"flex items-center justify-between border rounded-lg p-3 border-surface mb-4\"\r\n >\r\n <span class=\"text-sm font-medium\">{{\r\n \"permissions.selectAll\" | transloco\r\n }}</span>\r\n <mt-toggle-field\r\n [(ngModel)]=\"toggleAll\"\r\n (onChange)=\"selectAll()\"\r\n ></mt-toggle-field>\r\n </div>\r\n @for (action of group.actions; track trackByActionId($index, action)) {\r\n <div\r\n class=\"flex items-center justify-between border rounded-lg p-3 border-surface\"\r\n >\r\n <span class=\"text-sm font-medium\">{{ action.name }}</span>\r\n <mt-toggle-field\r\n [formControl]=\"getControl(action.id)\"\r\n ></mt-toggle-field>\r\n </div>\r\n }\r\n }\r\n</div>\r\n<div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"'save'\"\r\n (click)=\"onSave()\"\r\n [loading]=\"addPermissionsLoading()\"\r\n />\r\n</div>\r\n","import {\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n inject,\r\n linkedSignal,\r\n OnDestroy,\r\n OnInit,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { ToggleField } from '@masterteam/components/toggle-field';\r\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { PermissionsFacade } from '../../store/permissions/permissions.facade';\r\nimport { PermissionLog } from '../../store/permissions/permissions.model';\r\nimport { PermissionsEditDialog } from './permissions-edit-dialog/permissions-edit-dialog';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { AccessibilitiesFacade } from '@masterteam/accessibilities';\r\n\r\n@Component({\r\n selector: 'mt-permissions-page',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n Card,\r\n Button,\r\n ToggleField,\r\n TranslocoModule,\r\n Avatar,\r\n SkeletonModule,\r\n Tabs,\r\n ],\r\n templateUrl: './permissions-page.html',\r\n styleUrl: './permissions-page.scss',\r\n})\r\nexport default class PermissionsPage implements OnInit, OnDestroy {\r\n private readonly permissionsFacade = inject(PermissionsFacade);\r\n private readonly accessibilitiesFacade = inject(AccessibilitiesFacade);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly router = inject(Router);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly modal = inject(ModalService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n private readonly defaultLevelName = 'Project';\r\n\r\n levelRoles = this.permissionsFacade.selectors.roles;\r\n selectedRoleValue = this.permissionsFacade.selectors.selectedRoleValue;\r\n selectedRole = linkedSignal(this.selectedRoleValue);\r\n selectedGroupValue = this.permissionsFacade.selectors.selectedGroupValue;\r\n selectedGroup = linkedSignal(this.selectedGroupValue);\r\n permissions = this.permissionsFacade.selectors.permissions;\r\n groupPermissions = this.permissionsFacade.selectors.groupPermissions;\r\n loading = this.permissionsFacade.selectors.loading;\r\n permissionsLoading = this.permissionsFacade.selectors.permissionsLoading;\r\n levelId = this.permissionsFacade.selectors.levelId;\r\n groups = this.accessibilitiesFacade.groups;\r\n\r\n allPermissionsToggle = new FormControl<boolean>(false);\r\n\r\n readonly groupOrRoleId = computed(() => {\r\n const idParam = this.route.snapshot.firstChild?.paramMap.get('id');\r\n return idParam ? idParam : '';\r\n });\r\n\r\n readonly selectedTabFromParams = computed(() => {\r\n const idParam = this.route.snapshot.firstChild?.data['selectedTab'];\r\n return idParam ? idParam : 'roles';\r\n });\r\n\r\n selectedTab = linkedSignal<string>(this.selectedTabFromParams);\r\n tabsList = signal<any[]>([\r\n {\r\n label: this.translocoService.translate('permissions.roles'),\r\n value: 'roles',\r\n },\r\n {\r\n label: this.translocoService.translate('permissions.groups'),\r\n value: 'groups',\r\n },\r\n ]);\r\n firstLoad = signal(true);\r\n\r\n constructor() {\r\n effect(() => {\r\n const allEnabled = this.isAllPermissionsEnabled();\r\n this.allPermissionsToggle.setValue(allEnabled, { emitEvent: false });\r\n });\r\n effect(() => {\r\n if (this.selectedTab() == 'roles') {\r\n if (this.levelRoles().length == 0) {\r\n if (this.firstLoad() && !this.loading()) {\r\n this.permissionsFacade.loadRoles();\r\n this.firstLoad.set(false);\r\n }\r\n return;\r\n }\r\n }\r\n if (this.groupOrRoleId() && this.groupPermissions().length == 0) {\r\n this.selectedGroup.set(+this.groupOrRoleId());\r\n this.permissionsFacade.selectGroup(+this.groupOrRoleId());\r\n }\r\n if (this.permissions().length == 0 && this.selectedTab() == 'roles') {\r\n if (this.groupOrRoleId() && this.levelRoles().length > 0) {\r\n const role = this.levelRoles()\r\n .map((levelRoles) => levelRoles.roles)\r\n .flat()\r\n .find((r) => r?.value === this.groupOrRoleId()?.toString());\r\n if (role) {\r\n this.selectedRole.set(this.groupOrRoleId().toString());\r\n this.permissionsFacade.selectRole(role.value);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.permissionsFacade.selectRole('');\r\n this.route.parent?.paramMap\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((params) => {\r\n const levelIdFromRoute = params.get('levelId');\r\n\r\n if (levelIdFromRoute) {\r\n this.permissionsFacade.reset();\r\n this.permissionsFacade.setModuleInfo('level', levelIdFromRoute);\r\n this.permissionsFacade.loadRoles();\r\n }\r\n });\r\n this.permissionsFacade.loadRoles();\r\n this.accessibilitiesFacade.getGroups();\r\n\r\n this.allPermissionsToggle.valueChanges\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((value) => {\r\n if (value !== null) {\r\n this.onToggleAllLevel(this.defaultLevelName, value);\r\n }\r\n });\r\n }\r\n\r\n selectRole(roleValue: string): void {\r\n this.router.navigate(['roles', roleValue], { relativeTo: this.route });\r\n this.permissionsFacade.selectRole(roleValue);\r\n }\r\n\r\n selectGroup(groupId: number): void {\r\n this.router.navigate(['groups', groupId], { relativeTo: this.route });\r\n this.permissionsFacade.selectGroup(groupId);\r\n }\r\n\r\n openPermissionDialog(group: PermissionLog): void {\r\n if (this.levelId() && (this.selectedRoleValue() || this.selectedGroup())) {\r\n this.modal.openModal(PermissionsEditDialog, 'drawer', {\r\n header: this.translocoService.translate('permissions.setPermissions'),\r\n position: 'end',\r\n styleClass: '!w-[24%] !absolute !shadow-none',\r\n appendTo: 'page-content',\r\n inputValues: {\r\n permissionGroup: group,\r\n levelId: this.levelId(),\r\n roleValue:\r\n this.selectedTab() == 'roles'\r\n ? this.selectedRoleValue()\r\n : this.selectedGroup(),\r\n isGroup: this.selectedTab() != 'roles',\r\n },\r\n dismissible: true,\r\n });\r\n }\r\n }\r\n\r\n onToggleAllLevel(levelName: string, enabled: boolean): void {\r\n const levelId = this.levelId();\r\n const roleValue = this.selectedRoleValue();\r\n\r\n if (levelId) {\r\n if (this.selectedTab() != 'roles') {\r\n this.permissionsFacade.toggleAllGroupPermissions(\r\n levelId,\r\n this.selectedGroup()!.toString(),\r\n enabled,\r\n );\r\n return;\r\n } else {\r\n if (!!roleValue) {\r\n this.permissionsFacade.toggleAllLevelPermissions(\r\n roleValue,\r\n levelId,\r\n levelName,\r\n enabled,\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n isAllPermissionsEnabled(): boolean {\r\n const groupsLogs = this.groupPermissions()\r\n .map((group) => group.logs)\r\n .flat();\r\n const perms =\r\n (this.selectedTab() == 'roles' ? this.permissions() : groupsLogs) || [];\r\n if (perms.length === 0) return false;\r\n\r\n return perms.every((log) =>\r\n log.actions.every((action) => action.isSelected),\r\n );\r\n }\r\n\r\n trackByRoleValue(_index: number, role: any) {\r\n return role.value;\r\n }\r\n\r\n onTabChange($event: any) {\r\n if ($event == 'roles') {\r\n this.router.navigate(['roles'], { relativeTo: this.route });\r\n } else if ($event == 'groups') {\r\n this.router.navigate(['groups'], { relativeTo: this.route });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.permissionsFacade.reset();\r\n }\r\n}\r\n","<div id=\"permissions-page-card\" class=\"flex gap-4 p-1\">\r\n <div class=\"w-1/5 flex-shrink-0\">\r\n <mt-card class=\"h-full flex flex-col\">\r\n <ng-template #headless>\r\n <div class=\"flex flex-col h-full\">\r\n <div\r\n class=\"p-4 pb-0 bg-surface-50 rounded-t-2xl border-b border-surface\"\r\n >\r\n <h2 class=\"text-lg font-semibold mb-3\">\r\n {{ \"permissions.rolesAndGroups\" | transloco }}\r\n </h2>\r\n\r\n <mt-tabs\r\n [(active)]=\"selectedTab\"\r\n [options]=\"tabsList()\"\r\n size=\"large\"\r\n (onChange)=\"onTabChange($event)\"\r\n />\r\n </div>\r\n\r\n <div class=\"flex-1 overflow-y-auto p-4\">\r\n @if (loading()) {\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n } @else {\r\n @if (selectedTab() === \"roles\") {\r\n @for (level of levelRoles(); track level.levelKey) {\r\n <div class=\"flex flex-col gap-2 mb-4\">\r\n <h2 class=\"font-semibold\">{{ level.level }}</h2>\r\n @for (role of level.roles; track role.value) {\r\n <div\r\n class=\"p-3 border-2 border-dashed border-gray-300 rounded-lg cursor-pointer transition-colors flex items-center gap-3\"\r\n [class.bg-primary-50]=\"selectedRole() === role.value\"\r\n [class.hover:bg-surface]=\"selectedRole() !== role.value\"\r\n [class.border-primary-400]=\"\r\n selectedRole() === role.value\r\n \"\r\n [style.--p-avatar-background]=\"\r\n selectedRole() === role.value\r\n ? 'var(--p-primary-color)'\r\n : 'var(--p-surface-100)'\r\n \"\r\n [style.--p-avatar-color]=\"\r\n selectedRole() === role.value ? '#ffffff' : ''\r\n \"\r\n (click)=\"selectRole(role.value)\"\r\n >\r\n <mt-avatar [icon]=\"'user.user-check-01'\" shape=\"square\">\r\n </mt-avatar>\r\n <div class=\"flex-1 min-w-0\">\r\n <div class=\"font-medium truncate\">\r\n {{ role.name }}\r\n </div>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noRolesFound\" | transloco }}\r\n </div>\r\n }\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noLevelRolesFound\" | transloco }}\r\n </div>\r\n }\r\n } @else {\r\n <div class=\"flex flex-col gap-2 mb-4\">\r\n @for (group of groups(); track group.name) {\r\n <div\r\n class=\"p-3 border-2 border-dashed border-gray-300 rounded-lg cursor-pointer transition-colors flex items-center gap-3\"\r\n [class.bg-primary-50]=\"selectedGroup() === group.id\"\r\n [class.hover:bg-surface]=\"selectedGroup() !== group.id\"\r\n [class.border-primary-400]=\"selectedGroup() === group.id\"\r\n [style.--p-avatar-background]=\"\r\n selectedGroup() === group.id\r\n ? 'var(--p-primary-color)'\r\n : 'var(--p-surface-100)'\r\n \"\r\n [style.--p-avatar-color]=\"\r\n selectedGroup() === group.id ? '#ffffff' : ''\r\n \"\r\n (click)=\"selectGroup(group.id)\"\r\n >\r\n <mt-avatar [icon]=\"'user.users-check'\" shape=\"square\">\r\n </mt-avatar>\r\n <div class=\"flex-1 min-w-0\">\r\n <div class=\"font-medium truncate\">{{ group.name }}</div>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noGroupsFound\" | transloco }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n </mt-card>\r\n </div>\r\n\r\n <div class=\"min-w-0 w-1/2\">\r\n @if (!selectedRole() && !selectedGroup()) {\r\n <mt-card class=\"h-full\">\r\n <ng-template #headless>\r\n <div class=\"flex items-center justify-center h-full text-muted-color\">\r\n {{ \"permissions.selectRoleToViewPermissions\" | transloco }}\r\n </div>\r\n </ng-template>\r\n </mt-card>\r\n } @else {\r\n <mt-card class=\"h-full\">\r\n <div class=\"flex flex-col h-full\">\r\n <ng-template #headless>\r\n <div class=\"p-4 pb-2 mb-5 border-b border-surface\">\r\n <h2 class=\"text-lg font-semibold mb-3\">\r\n {{\r\n (selectedTab() === \"roles\"\r\n ? \"permissions.levelPermissions\"\r\n : \"permissions.groupsPermissions\"\r\n ) | transloco\r\n }}\r\n </h2>\r\n </div>\r\n @if (permissionsLoading()) {\r\n <div class=\"mx-4\">\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"mb-5 p-3 mx-4 rounded-lg border-1 border-surface flex items-center justify-between\"\r\n >\r\n <div class=\"flex items-center gap-3\">\r\n <mt-avatar\r\n [icon]=\"'security.lock-unlocked-01'\"\r\n shape=\"square\"\r\n size=\"large\"\r\n [style.--p-avatar-background]=\"\r\n 'var(--p-' + 'surface' + '-100)'\r\n \"\r\n [style.--p-avatar-color]=\"'var(--p-' + 'primary' + '-600)'\"\r\n >\r\n </mt-avatar>\r\n <div>\r\n <div class=\"text-sm font-semibold\">\r\n {{\r\n (selectedTab() === \"roles\"\r\n ? \"permissions.setAllProjectPermissions\"\r\n : \"permissions.setAllGroupPermissions\"\r\n ) | transloco\r\n }}\r\n </div>\r\n <div class=\"text-xs text-muted-color\">\r\n {{ \"permissions.recommendedForSimpleForms\" | transloco }}\r\n </div>\r\n </div>\r\n </div>\r\n <mt-toggle-field\r\n [formControl]=\"allPermissionsToggle\"\r\n ></mt-toggle-field>\r\n </div>\r\n\r\n <div class=\"flex-1 px-4 overflow-y-auto border-t border-surface\">\r\n <div class=\"space-y-3 my-5\">\r\n @if (selectedTab() === \"roles\") {\r\n @for (group of permissions(); track group.name) {\r\n <div\r\n class=\"p-2 border-1 border-surface rounded-lg flex items-center justify-between hover:bg-surface-100 transition-colors\"\r\n >\r\n <div class=\"flex items-center gap-3\">\r\n <mt-avatar\r\n [icon]=\"'editor.dotpoints-02'\"\r\n shape=\"square\"\r\n size=\"normal\"\r\n [style.--p-avatar-background]=\"\r\n 'var(--p-' + 'surface' + '-100)'\r\n \"\r\n [style.--p-avatar-color]=\"\r\n 'var(--p-' + 'primary' + '-600)'\r\n \"\r\n >\r\n </mt-avatar>\r\n <span class=\"text-sm\">{{ group.name }}</span>\r\n </div>\r\n <mt-button\r\n [text]=\"true\"\r\n icon=\"custom.pencil\"\r\n severity=\"primary\"\r\n (click)=\"openPermissionDialog(group)\"\r\n >\r\n </mt-button>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noPermissionsFound\" | transloco }}\r\n </div>\r\n }\r\n } @else {\r\n @for (group of groupPermissions(); track group.levelName) {\r\n <div class=\"flex flex-col justify-between gap-3\">\r\n @for (log of group.logs; track log.name) {\r\n <div\r\n class=\"p-2 border-1 border-surface rounded-lg flex items-center justify-between hover:bg-surface-100 transition-colors\"\r\n >\r\n <div class=\"flex items-center gap-3\">\r\n <mt-avatar\r\n [icon]=\"'editor.dotpoints-02'\"\r\n shape=\"square\"\r\n size=\"normal\"\r\n [style.--p-avatar-background]=\"\r\n 'var(--p-' + 'surface' + '-100)'\r\n \"\r\n [style.--p-avatar-color]=\"\r\n 'var(--p-' + 'primary' + '-600)'\r\n \"\r\n >\r\n </mt-avatar>\r\n <span class=\"text-sm\">{{ log.name }}</span>\r\n </div>\r\n <mt-button\r\n [text]=\"true\"\r\n icon=\"custom.pencil\"\r\n severity=\"primary\"\r\n (click)=\"openPermissionDialog(log)\"\r\n >\r\n </mt-button>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{\r\n \"permissions.noPermissionsFoundForSelectedGroup\"\r\n | transloco\r\n }}\r\n </div>\r\n }\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noPermissionsFound\" | transloco }}\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n }\r\n </div>\r\n</div>\r\n","// store/index.ts\r\nexport * from './permissions';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PermissionsActions.LoadRolesSuccess","PermissionsActions.LoadRolesFail","PermissionsActions.LoadPermissions","PermissionsActions.LoadGroupPermissions","PermissionsActions.LoadPermissionsSuccess","PermissionsActions.LoadPermissionsFail","PermissionsActions.LoadGroupPermissionsSuccess","PermissionsActions.UpdatePermissionSuccess","PermissionsActions.UpdatePermissionFail","PermissionsActions.LoadRoles","PermissionsActions.SelectRole","PermissionsActions.SelectGroup","PermissionsActions.UpdatePermissionLocally","PermissionsActions.UpdateGroupPermissionLocally","PermissionsActions.UpdatePermission","PermissionsActions.UpdateGroupPermission","PermissionsActions.ToggleAllLevelPermissions","PermissionsActions.ToggleAllGroupPermissions","PermissionsActions.SetModuleInfo","PermissionsActions.Reset","i3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;IAsEY;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAJW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;MCpET,SAAS,CAAA;AACpB,IAAA,OAAgB,IAAI,GAAG,0BAA0B;AACjD,IAAA,WAAA,GAAA,EAAe;;MAGJ,gBAAgB,CAAA;AAER,IAAA,KAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,kCAAkC;AACzD,IAAA,WAAA,CAAmB,KAAY,EAAA;QAAZ,IAAA,CAAA,KAAK,GAAL,KAAK;IAAU;;MAGvB,aAAa,CAAA;AAEL,IAAA,KAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,+BAA+B;AACtD,IAAA,WAAA,CAAmB,KAAa,EAAA;QAAb,IAAA,CAAA,KAAK,GAAL,KAAK;IAAW;;MAGxB,UAAU,CAAA;AAEF,IAAA,SAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,2BAA2B;AAClD,IAAA,WAAA,CAAmB,SAAiB,EAAA;QAAjB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAW;;MAG5B,WAAW,CAAA;AAEH,IAAA,OAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,4BAA4B;AACnD,IAAA,WAAA,CAAmB,OAAe,EAAA;QAAf,IAAA,CAAA,OAAO,GAAP,OAAO;IAAW;;MAG1B,eAAe,CAAA;AAGjB,IAAA,SAAA;AACA,IAAA,OAAA;AAHT,IAAA,OAAgB,IAAI,GAAG,gCAAgC;IACvD,WAAA,CACS,SAAiB,EACjB,OAAe,EAAA;QADf,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,OAAO,GAAP,OAAO;IACb;;MAGQ,oBAAoB,CAAA;AAGtB,IAAA,OAAA;AACA,IAAA,OAAA;AAHT,IAAA,OAAgB,IAAI,GAAG,sCAAsC;IAC7D,WAAA,CACS,OAAe,EACf,OAAe,EAAA;QADf,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,OAAO,GAAP,OAAO;IACb;;MAGQ,sBAAsB,CAAA;AAEd,IAAA,WAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,wCAAwC;AAC/D,IAAA,WAAA,CAAmB,WAA4B,EAAA;QAA5B,IAAA,CAAA,WAAW,GAAX,WAAW;IAAoB;;MAGvC,2BAA2B,CAAA;AAEnB,IAAA,WAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,8CAA8C;AACrE,IAAA,WAAA,CAAmB,WAA8B,EAAA;QAA9B,IAAA,CAAA,WAAW,GAAX,WAAW;IAAsB;;MAGzC,mBAAmB,CAAA;AAEX,IAAA,KAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,qCAAqC;AAC5D,IAAA,WAAA,CAAmB,KAAa,EAAA;QAAb,IAAA,CAAA,KAAK,GAAL,KAAK;IAAW;;MAGxB,uBAAuB,CAAA;AAGzB,IAAA,SAAA;AACA,IAAA,OAAA;AACA,IAAA,QAAA;AACA,IAAA,UAAA;AALT,IAAA,OAAgB,IAAI,GAAG,yCAAyC;AAChE,IAAA,WAAA,CACS,SAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,UAAmB,EAAA;QAHnB,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,UAAU,GAAV,UAAU;IAChB;;MAGQ,4BAA4B,CAAA;AAG9B,IAAA,SAAA;AACA,IAAA,OAAA;AACA,IAAA,QAAA;AACA,IAAA,UAAA;AALT,IAAA,OAAgB,IAAI,GAAG,+CAA+C;AACtE,IAAA,WAAA,CACS,SAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,UAAmB,EAAA;QAHnB,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,UAAU,GAAV,UAAU;IAChB;;MAEQ,gBAAgB,CAAA;AAGlB,IAAA,SAAA;AACA,IAAA,OAAA;AAHT,IAAA,OAAgB,IAAI,GAAG,iCAAiC;IACxD,WAAA,CACS,SAAiB,EACjB,OAAe,EAAA;QADf,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,OAAO,GAAP,OAAO;IACb;;MAGQ,qBAAqB,CAAA;AAGvB,IAAA,OAAA;AACA,IAAA,cAAA;AACA,IAAA,OAAA;AAJT,IAAA,OAAgB,IAAI,GAAG,uCAAuC;AAC9D,IAAA,WAAA,CACS,OAAe,EACf,cAA+B,EAC/B,OAAe,EAAA;QAFf,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,OAAO,GAAP,OAAO;IACb;;MAGQ,uBAAuB,CAAA;AAClC,IAAA,OAAgB,IAAI,GAAG,yCAAyC;;MAGrD,oBAAoB,CAAA;AAEZ,IAAA,KAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,sCAAsC;AAC7D,IAAA,WAAA,CAAmB,KAAa,EAAA;QAAb,IAAA,CAAA,KAAK,GAAL,KAAK;IAAW;;MAGxB,yBAAyB,CAAA;AAG3B,IAAA,SAAA;AACA,IAAA,OAAA;AACA,IAAA,SAAA;AACA,IAAA,OAAA;AALT,IAAA,OAAgB,IAAI,GAAG,4CAA4C;AACnE,IAAA,WAAA,CACS,SAAiB,EACjB,OAAe,EACf,SAAiB,EACjB,OAAgB,EAAA;QAHhB,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,OAAO,GAAP,OAAO;IACb;;MAGQ,yBAAyB,CAAA;AAG3B,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AAJT,IAAA,OAAgB,IAAI,GAAG,4CAA4C;AACnE,IAAA,WAAA,CACS,OAAe,EACf,OAAe,EACf,OAAgB,EAAA;QAFhB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,OAAO,GAAP,OAAO;IACb;;MAGQ,aAAa,CAAA;AAIN,IAAA,UAAA;AACA,IAAA,QAAA;AACA,IAAA,gBAAA;AACA,IAAA,cAAA;AACA,IAAA,UAAA;AAPlB,IAAA,OAAgB,IAAI,GAAG,+BAA+B;IAEtD,WAAA,CACkB,UAAkB,EAClB,QAAyB,EACzB,gBAAyB,EACzB,cAAgC,EAChC,UAAmB,EAAA;QAJnB,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,UAAU,GAAV,UAAU;IACzB;;MAGQ,KAAK,CAAA;AAChB,IAAA,OAAgB,IAAI,GAAG,iCAAiC;AAExD,IAAA,WAAA,GAAA,EAAe;;;;;;;;;ACnFV,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB,CAAA;AACnB,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AAG1B,IAAP,OAAO,KAAK,CAAC,KAA4B,EAAA;QACvC,OAAO,KAAK,CAAC,KAAK;IACpB;AAGO,IAAP,OAAO,iBAAiB,CAAC,KAA4B,EAAA;QACnD,OAAO,KAAK,CAAC,iBAAiB;IAChC;AAGO,IAAP,OAAO,kBAAkB,CAAC,KAA4B,EAAA;QACpD,OAAO,KAAK,CAAC,kBAAkB;IACjC;AAGO,IAAP,OAAO,WAAW,CAAC,KAA4B,EAAA;QAC7C,OAAO,KAAK,CAAC,WAAW;IAC1B;AAGO,IAAP,OAAO,gBAAgB,CAAC,KAA4B,EAAA;QAClD,OAAO,KAAK,CAAC,gBAAgB;IAC/B;AAGO,IAAP,OAAO,OAAO,CAAC,KAA4B,EAAA;QACzC,OAAO,KAAK,CAAC,OAAO;IACtB;AAGO,IAAP,OAAO,kBAAkB,CAAC,KAA4B,EAAA;QACpD,OAAO,KAAK,CAAC,kBAAkB;IACjC;AAEO,IAAP,OAAO,qBAAqB,CAAC,KAA4B,EAAA;QACvD,OAAO,KAAK,CAAC,qBAAqB;IACpC;AAEO,IAAP,OAAO,UAAU,CAAC,KAA4B,EAAA;QAC5C,OAAO,KAAK,CAAC,UAAU;IACzB;AAGO,IAAP,OAAO,QAAQ,CAAC,KAA4B,EAAA;QAC1C,OAAO,KAAK,CAAC,QAAQ;IACvB;AAGO,IAAP,OAAO,OAAO,CAAC,KAA4B,EAAA;AACzC,QAAA,OAAO,KAAK,CAAC,UAAU,KAAK;AAC1B,cAAE,KAAK,CAAC,cAAe,CAAC,QAAQ;AAChC,cAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC/B;AAGO,IAAP,OAAO,KAAK,CAAC,KAA4B,EAAA;QACvC,OAAO,KAAK,CAAC,KAAK;IACpB;AAGA,IAAA,SAAS,CAAC,GAAwC,EAAA;QAChD,GAAG,CAAC,UAAU,CAAC;AACb,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,KAAK,EAAE,IAAI;YACX,cAAc,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE;AACzD,SAAA,CAAC;QAEF,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,CAAA,sBAAA,EAAyB,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAA,CAAA,EAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,iBAAiB;AAE/F,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,EAChC,GAAG,CAAC,CAAC,KAAK,KAAI;YACZ,GAAG,CAAC,QAAQ,CAAC,IAAIA,gBAAmC,CAAC,KAAK,CAAC,CAAC;AAC9D,QAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,GAAG,CAAC,QAAQ,CACV,IAAIC,aAAgC,CAClC,KAAK,CAAC,OAAO,IAAI,sBAAsB,CACxC,CACF;AACD,YAAA,MAAM,KAAK;QACb,CAAC,CAAC,CACH;IACL;IAGA,gBAAgB,CACd,GAAwC,EACxC,MAA2C,EAAA;QAE3C,GAAG,CAAC,UAAU,CAAC;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;IACJ;IAGA,aAAa,CACX,GAAwC,EACxC,MAAwC,EAAA;QAExC,GAAG,CAAC,UAAU,CAAC;AACb,YAAA,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,MAAM,CAAC,KAAK;AACpB,SAAA,CAAC;IACJ;IAGA,UAAU,CACR,GAAwC,EACxC,MAAqC,EAAA;AAErC,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;QAC5B,GAAG,CAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AAEvD,QAAA,IAAI,KAAK,CAAC,cAAc,EAAE;AACxB,YAAA,GAAG,CAAC,QAAQ,CACV,IAAIC,eAAkC,CACpC,MAAM,CAAC,SAAS,EAChB,KAAK,CAAC,cAAc,CACrB,CACF;QACH;IACF;IAGA,WAAW,CACT,GAAwC,EACxC,MAAsC,EAAA;AAEtC,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;QAC5B,GAAG,CAAC,UAAU,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AAEtD,QAAA,IAAI,KAAK,CAAC,cAAc,EAAE;AACxB,YAAA,GAAG,CAAC,QAAQ,CACV,IAAIC,oBAAuC,CACzC,MAAM,CAAC,OAAO,EACd,KAAK,CAAC,cAAc,CACrB,CACF;QACH;IACF;IAGA,eAAe,CACb,GAAwC,EACxC,MAA0C,EAAA;AAE1C,QAAA,GAAG,CAAC,UAAU,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;QAGzD,OAAO,IAAI,CAAC;aACT,GAAG,CACF,wBACE,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,KAAK;AAC5B,cAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;AACjB,cAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,QACrB,CAAA,CAAA,EAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,KAAK,QAAQ,GAAG,SAAS,GAAG,EAAE,CAAA,EACzD,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,KAAK;cAC1B,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAA,CAAA;AAC5B,cAAE,EACN,CAAA,EAAG,MAAM,CAAC,SAAS,cAAc,EACjC;AACE,YAAA,MAAM,EAAE;gBACN,OAAO,EACL,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,KAAK;AAC5B,sBAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;AACjB,sBAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ;gBAC7B,SAAS,EAAE,UAAU,CAAC,KAAK;AAC5B,aAAA;SACF;aAEF,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAC5C,GAAG,CAAC,CAAC,WAAW,KAAI;YAClB,GAAG,CAAC,QAAQ,CACV,IAAIC,sBAAyC,CAAC,WAAW,CAAC,CAC3D;AACH,QAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,GAAG,CAAC,QAAQ,CACV,IAAIC,mBAAsC,CACxC,KAAK,CAAC,OAAO,IAAI,4BAA4B,CAC9C,CACF;AACD,YAAA,MAAM,KAAK;QACb,CAAC,CAAC,CACH;IACL;IAGA,oBAAoB,CAClB,GAAwC,EACxC,MAA+C,EAAA;AAE/C,QAAA,GAAG,CAAC,UAAU,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAEzD,OAAO,IAAI,CAAC;aACT,GAAG,CACF,yBACE,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,KAAK;AAC5B,cAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;AACjB,cAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,QACrB,CAAA,CAAA,EAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,KAAK,QAAQ,GAAG,SAAS,GAAG,EAAE,CAAA,EACzD,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,KAAK;cAC1B,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAA,CAAA;AAC5B,cAAE,EACN,CAAA,EAAG,MAAM,CAAC,OAAO,cAAc;AAEhC,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,EAChC,GAAG,CAAC,CAAC,WAAW,KAAI;YAClB,GAAG,CAAC,QAAQ,CACV,IAAIC,2BAA8C,CAAC,WAAW,CAAC,CAChE;AACH,QAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,GAAG,CAAC,QAAQ,CACV,IAAID,mBAAsC,CACxC,KAAK,CAAC,OAAO,IAAI,4BAA4B,CAC9C,CACF;AACD,YAAA,MAAM,KAAK;QACb,CAAC,CAAC,CACH;IACL;IAGA,sBAAsB,CACpB,GAAwC,EACxC,MAAiD,EAAA;QAEjD,GAAG,CAAC,UAAU,CAAC;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;AAC/B,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;IACJ;IAGA,2BAA2B,CACzB,GAAwC,EACxC,MAAsD,EAAA;QAEtD,GAAG,CAAC,UAAU,CAAC;YACb,gBAAgB,EAAE,MAAM,CAAC,WAAW;AACpC,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;IACJ;IAGA,mBAAmB,CACjB,GAAwC,EACxC,MAA8C,EAAA;QAE9C,GAAG,CAAC,UAAU,CAAC;AACb,YAAA,kBAAkB,EAAE,KAAK;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;AACpB,SAAA,CAAC;IACJ;IAGA,uBAAuB,CACrB,GAAwC,EACxC,MAAkD,EAAA;AAElD,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;AAE5B,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AACzD,YAAA,GAAG,GAAG;AACN,YAAA,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAC3B,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC;kBACd,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU;kBACvC,GAAG,CACR;AACF,SAAA,CAAC,CAAC;QAEH,GAAG,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IACrD;IAGA,4BAA4B,CAC1B,GAAwC,EACxC,MAAuD,EAAA;AAEvD,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;AAE5B,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,UAAU,MAAM;AACrE,YAAA,GAAG,UAAU;AACb,YAAA,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAClC,gBAAA,GAAG,GAAG;AACN,gBAAA,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAC3B,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC;sBACd,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU;sBACvC,GAAG,CACR;AACF,aAAA,CAAC,CAAC;AACJ,SAAA,CAAC,CAAC;QAEH,GAAG,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IAC1D;IAGA,gBAAgB,CACd,GAAwC,EACxC,MAA2C,EAAA;AAE3C,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;AAC5B,QAAA,GAAG,CAAC,UAAU,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAE5D,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW;QAC5C,GAAG,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,CAAA,eAAA,EAAkB,MAAM,CAAC,SAAS,CAAA,kBAAA,CAAoB,EACtD,EAAE,WAAW,EAAE,kBAAkB,EAAE,EACnC;AACE,YAAA,MAAM,EAAE;gBACN,OAAO,EACL,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,KAAK;AAC5B,sBAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;AACjB,sBAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ;gBAC7B,SAAS,EAAE,UAAU,CAAC,KAAK;AAC5B,aAAA;SACF;AAEF,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,GAAG,CAAC,QAAQ,CAAC,IAAIE,uBAA0C,EAAE,CAAC;AAChE,QAAA,CAAC,CAAC,EACF,QAAQ,CAAC,MAAK;YACZ,GAAG,CAAC,UAAU,CAAC,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;AAClD,QAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;;YAEnB,GAAG,CAAC,UAAU,CAAC;gBACb,WAAW,EAAE,KAAK,CAAC,WAAW;AAC9B,gBAAA,qBAAqB,EAAE,KAAK;AAC7B,aAAA,CAAC;AACF,YAAA,GAAG,CAAC,QAAQ,CACV,IAAIC,oBAAuC,CACzC,KAAK,CAAC,OAAO,IAAI,6BAA6B,CAC/C,CACF;AACD,YAAA,MAAM,KAAK;QACb,CAAC,CAAC,CACH;IACL;IAGA,qBAAqB,CACnB,GAAwC,EACxC,MAAgD,EAAA;AAEhD,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;AAC5B,QAAA,GAAG,CAAC,UAAU,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAE5D,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,gBAAgB;QACjD,GAAG,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;QACxD,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,CAAA,gBAAA,EAAmB,MAAM,CAAC,OAAO,CAAA,kBAAA,CAAoB,EACrD,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE;AAElD,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,GAAG,CAAC,QAAQ,CAAC,IAAID,uBAA0C,EAAE,CAAC;AAChE,QAAA,CAAC,CAAC,EACF,QAAQ,CAAC,MAAK;YACZ,GAAG,CAAC,UAAU,CAAC,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;AAClD,QAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;;YAEnB,GAAG,CAAC,UAAU,CAAC;gBACb,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;AACxC,gBAAA,qBAAqB,EAAE,KAAK;AAC7B,aAAA,CAAC;AACF,YAAA,GAAG,CAAC,QAAQ,CACV,IAAIC,oBAAuC,CACzC,KAAK,CAAC,OAAO,IAAI,6BAA6B,CAC/C,CACF;AACD,YAAA,MAAM,KAAK;QACb,CAAC,CAAC,CACH;IACL;IAGA,yBAAyB,CACvB,GAAwC,EACxC,MAAoD,EAAA;AAEpD,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;AAE5B,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AACzD,YAAA,GAAG,GAAG;AACN,YAAA,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AACjC,gBAAA,GAAG,GAAG;gBACN,UAAU,EAAE,MAAM,CAAC,OAAO;AAC3B,aAAA,CAAC,CAAC;AACJ,SAAA,CAAC,CAAC;QAEH,GAAG,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;QAEnD,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,CAAA,eAAA,EAAkB,MAAM,CAAC,SAAS,CAAA,kBAAA,CAAoB,EACtD,EAAE,WAAW,EAAE,kBAAkB,EAAE,EACnC;AACE,YAAA,MAAM,EAAE;gBACN,OAAO,EACL,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,KAAK;AAC5B,sBAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;AACjB,sBAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ;gBAC7B,SAAS,EAAE,UAAU,CAAC,KAAK;AAC5B,aAAA;SACF;AAEF,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,GAAG,CAAC,QAAQ,CAAC,IAAID,uBAA0C,EAAE,CAAC;AAChE,QAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;YACnB,GAAG,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;AAClD,YAAA,GAAG,CAAC,QAAQ,CACV,IAAIC,oBAAuC,CACzC,KAAK,CAAC,OAAO,IAAI,kCAAkC,CACpD,CACF;AACD,YAAA,MAAM,KAAK;QACb,CAAC,CAAC,CACH;IACL;IAGA,yBAAyB,CACvB,GAAwC,EACxC,MAAoD,EAAA;AAEpD,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;AAE5B,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,UAAU,MAAM;AACrE,YAAA,GAAG,UAAU;AACb,YAAA,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAClC,gBAAA,GAAG,GAAG;AACN,gBAAA,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AACjC,oBAAA,GAAG,GAAG;oBACN,UAAU,EAAE,MAAM,CAAC,OAAO;AAC3B,iBAAA,CAAC,CAAC;AACJ,aAAA,CAAC,CAAC;AACJ,SAAA,CAAC,CAAC;QACH,GAAG,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;QAExD,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CACF,CAAA,gBAAA,EAAmB,MAAM,CAAC,OAAO,CAAA,kBAAA,CAAoB,EACrD,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE;AAElD,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,GAAG,CAAC,QAAQ,CAAC,IAAID,uBAA0C,EAAE,CAAC;AAChE,QAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;YACnB,GAAG,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC;AAC5D,YAAA,GAAG,CAAC,QAAQ,CACV,IAAIC,oBAAuC,CACzC,KAAK,CAAC,OAAO,IAAI,kCAAkC,CACpD,CACF;AACD,YAAA,MAAM,KAAK;QACb,CAAC,CAAC,CACH;IACL;IAGA,aAAa,CACX,GAAwC,EACxC,MAAwC,EAAA;QAExC,IAAI,UAAU,GAAG,EAAE;QACnB,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,cAAc,EAAE;YACpD,UAAU,GAAG,CAAA,CAAA,EAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,cAAc,CAAA,CAAE;QACrE;AAAO,aAAA,IAAI,MAAM,CAAC,UAAU,EAAE;AAC5B,YAAA,UAAU,GAAG,MAAM,CAAC,UAAU;QAChC;QACA,GAAG,CAAC,UAAU,CAAC;YACb,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,YAAA,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,IAAI;AACjD,YAAA,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;YAC7C,UAAU,EAAE,UAAU,IAAI,EAAE;AAC7B,SAAA,CAAC;IACJ;AAGA,IAAA,KAAK,CAAC,GAAwC,EAAA;QAC5C,GAAG,CAAC,UAAU,CAAC;AACb,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,kBAAkB,EAAE,IAAI;AACxB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,gBAAgB,EAAE,EAAE;AACrB,SAAA,CAAC;IACJ;uGApgBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAhB,gBAAgB,EAAA,CAAA;;AAgE3B,UAAA,CAAA;AADC,IAAA,MAAM,CAACC,SAA4B;AA0BnC,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACT,gBAAmC;AAU1C,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACC,aAAgC;AASvC,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACS,UAA6B;AAgBpC,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACC,WAA8B;AAgBrC,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACT,eAAkC;AA6CzC,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACC,oBAAuC;AAmC9C,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACC,sBAAyC;AAUhD,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACE,2BAA8C;AAUrD,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,6BAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACD,mBAAsC;AAS7C,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACO,uBAA0C;AAiBjD,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACC,4BAA+C;AAoBtD,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACC,gBAAmC;AA6C1C,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACC,qBAAwC;AAoC/C,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACC,yBAA4C;AA6CnD,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACC,yBAA4C;AAsCnD,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACC,aAAgC;AAkBvC,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;AADC,IAAA,MAAM,CAACC,KAAwB;AAc/B,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA;AAhgBM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,IAAA,CAAA;AAEM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,IAAA,CAAA;AAEM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAKR,CAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,IAAA,CAAA;AA7DU,gBAAgB,GAAA,UAAA,CAAA;AArB5B,IAAA,KAAK,CAAwB;AAC5B,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,QAAQ,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,kBAAkB,EAAE,IAAI;AACxB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,gBAAgB,EAAE,EAAE;AACpB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,qBAAqB,EAAE,KAAK;AAC5B,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,gBAAgB,EAAE,EAAE;AACpB,YAAA,cAAc,EAAE,EAAE;AAClB,YAAA,UAAU,EAAE,EAAE;AACf,SAAA;KACF;AAEY,CAAA,EAAA,gBAAgB,CAqgB5B;2FArgBY,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MC7CY,iBAAiB,CAAA;AACpB,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAE7B,IAAA,SAAS,GAAG;QACV,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC;QACtD,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CACxC,gBAAgB,CAAC,iBAAiB,CACnC;QACD,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CACzC,gBAAgB,CAAC,kBAAkB,CACpC;QACD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC;QAClE,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CACvC,gBAAgB,CAAC,gBAAgB,CAClC;QACD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAC1D,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CACzC,gBAAgB,CAAC,kBAAkB,CACpC;QACD,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAC5C,gBAAgB,CAAC,qBAAqB,CACvC;QACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC;QACtD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC;KAC3D;IAED,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAIV,SAA4B,EAAE,CAAC;IAChE;AAEA,IAAA,UAAU,CAAC,SAAiB,EAAA;QAC1B,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAIC,UAA6B,CAAC,SAAS,CAAC,CAAC;QAC1E;QACA;IACF;AAEA,IAAA,WAAW,CAAC,OAAe,EAAA;QACzB,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAIC,WAA8B,CAAC,OAAO,CAAC,CAAC;QACzE;QACA;IACF;IAEA,eAAe,CAAC,SAAiB,EAAE,OAAe,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,IAAIT,eAAkC,CAAC,SAAS,EAAE,OAAO,CAAC,CAC3D;IACH;IAEA,oBAAoB,CAAC,OAAe,EAAE,OAAe,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,IAAIC,oBAAuC,CAAC,OAAO,EAAE,OAAO,CAAC,CAC9D;IACH;AAEA,IAAA,uBAAuB,CACrB,SAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,UAAmB,EAAA;QAEnB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,IAAIS,uBAA0C,CAC5C,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,CACX,CACF;IACH;AAEA,IAAA,4BAA4B,CAC1B,SAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,UAAmB,EAAA;QAEnB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,IAAIC,4BAA+C,CACjD,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,CACX,CACF;IACH;IACA,gBAAgB,CAAC,SAAiB,EAAE,OAAe,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,IAAIC,gBAAmC,CAAC,SAAS,EAAE,OAAO,CAAC,CAC5D;IACH;AACA,IAAA,qBAAqB,CACnB,OAAe,EACf,cAA+B,EAC/B,OAAe,EAAA;AAEf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,IAAIC,qBAAwC,CAC1C,OAAO,EACP,cAAc,EACd,OAAO,CACR,CACF;IACH;AAEA,IAAA,yBAAyB,CACvB,SAAiB,EACjB,OAAe,EACf,SAAiB,EACjB,OAAgB,EAAA;QAEhB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,IAAIC,yBAA4C,CAC9C,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,CACR,CACF;IACH;AACA,IAAA,yBAAyB,CACvB,OAAe,EACf,OAAe,EACf,OAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,IAAIC,yBAA4C,CAC9C,OAAO,EACP,OAAO,EACP,OAAO,CACR,CACF;IACH;IACA,aAAa,CACX,UAAkB,EAClB,QAAyB,EACzB,gBAAyB,EACzB,cAAgC,EAChC,UAAmB,EAAA;QAEnB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,IAAIC,aAAgC,CAClC,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,UAAU,CACX,CACF;IACH;IAEA,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAIC,KAAwB,EAAE,CAAC;IAC5D;uGA1JW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA;;2FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MC4BrB,qBAAqB,CAAA;AACxB,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACrD,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,IAAA,GAAG,GAAa,MAAM,CAAC,QAAQ,CAAC;;AAEhC,IAAA,eAAe,GAAG,KAAK,CAAuB,IAAI,2DAAC;IACnD,qBAAqB,GACnB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,qBAAqB;IACxD,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK;AAE5D,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAU;AAClC,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAU;AACpC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAW;IAEnC,WAAW,GAAG,MAAM,EAAQ;AAE5B,IAAA,cAAc,GAAG,MAAM,CAA2B,IAAI,GAAG,EAAE,0DAAC;AAC5D,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,qDAAC;AAElC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;YACpC,IAAI,KAAK,EAAE;AACT,gBAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB;gBAC/C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;oBAC/B,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC;oBAClD,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACvC,wBAAA,IAAI,KAAK,KAAK,IAAI,EAAE;4BAClB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC;wBAC3C;AACF,oBAAA,CAAC,CAAC;oBACF,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC;AAClC,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;YACxE;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,CAAC,QAAgB,EAAE,UAAmB,EAAA;AACtD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,OAAO,IAAI,SAAS,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CACjD,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,CACX;gBACD;YACF;AACA,YAAA,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAC5C,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,CACX;QACH;IACF;IAEA,OAAO,GAAA;;AAEL,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;IAClB;IAEA,eAAe,CAAC,MAAc,EAAE,MAAwB,EAAA;QACtD,OAAO,MAAM,CAAC,EAAE;IAClB;AAEA,IAAA,UAAU,CAAC,QAAgB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC;IACtE;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,IAAI,OAAO,IAAI,SAAS,EAAE;AACxB,YAAA,IAAI,YAAY;YAChB,IAAI,OAAO,EAAE;AACX,gBAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CACzD,SAAS,EACT,CAAC,IAAI,CAAC,eAAe,EAAG,CAAC,EACzB,OAAO,CACR;YACH;iBAAO;gBACL,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CACpD,SAAS,EACT,OAAO,CACR;YACH;YACA,YAAY,CAAC,SAAS,CAAC;gBACrB,IAAI,EAAE,MAAK;oBACT,IAAI,CAAC,OAAO,EAAE;gBAChB,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAU,KAAI;AACpB,oBAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC;gBACnE,CAAC;AACF,aAAA,CAAC;QACJ;IACF;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;AACpC,QAAA,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,EAAE;AACpC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC;IACF;uGA9GW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnClC,0jCAgCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,WAAW,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,MAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,WAAW,uPACX,MAAM,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAKG,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;+BACE,4BAA4B,EAAA,UAAA,EAC1B,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,WAAW;wBACX,eAAe;wBACf,WAAW;wBACX,MAAM;AACP,qBAAA,EAAA,QAAA,EAAA,0jCAAA,EAAA;;;AEaW,MAAO,eAAe,CAAA;AACjB,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,IAAA,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACrD,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAE/B,gBAAgB,GAAG,SAAS;IAE7C,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK;IACnD,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,iBAAiB;AACtE,IAAA,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,iBAAiB,wDAAC;IACnD,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,kBAAkB;AACxE,IAAA,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,kBAAkB,yDAAC;IACrD,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW;IAC1D,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,gBAAgB;IACpE,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO;IAClD,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,kBAAkB;IACxE,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO;AAClD,IAAA,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM;AAE1C,IAAA,oBAAoB,GAAG,IAAI,WAAW,CAAU,KAAK,CAAC;AAE7C,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAClE,OAAO,OAAO,GAAG,OAAO,GAAG,EAAE;AAC/B,IAAA,CAAC,yDAAC;AAEO,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;QACnE,OAAO,OAAO,GAAG,OAAO,GAAG,OAAO;AACpC,IAAA,CAAC,iEAAC;AAEF,IAAA,WAAW,GAAG,YAAY,CAAS,IAAI,CAAC,qBAAqB,uDAAC;IAC9D,QAAQ,GAAG,MAAM,CAAQ;AACvB,QAAA;YACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAC3D,YAAA,KAAK,EAAE,OAAO;AACf,SAAA;AACD,QAAA;YACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,oBAAoB,CAAC;AAC5D,YAAA,KAAK,EAAE,QAAQ;AAChB,SAAA;AACF,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACF,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,qDAAC;AAExB,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,EAAE;AACjD,YAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACtE,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE;gBACjC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;oBACjC,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACvC,wBAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;AAClC,wBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;oBAC3B;oBACA;gBACF;YACF;AACA,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC/D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC7C,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3D;AACA,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE;AACnE,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AACxD,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU;yBACzB,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,KAAK;AACpC,yBAAA,IAAI;AACJ,yBAAA,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC;oBAC7D,IAAI,IAAI,EAAE;AACR,wBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC;wBACtD,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC/C;gBACF;YACF;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAChB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;YACpB,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YAE9C,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;gBAC9B,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,gBAAgB,CAAC;AAC/D,gBAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;YACpC;AACF,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE;QAEtC,IAAI,CAAC,oBAAoB,CAAC;AACvB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;gBAClB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;YACrD;AACF,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,UAAU,CAAC,SAAiB,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACtE,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC;IAC9C;AAEA,IAAA,WAAW,CAAC,OAAe,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACrE,QAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC;IAC7C;AAEA,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE;YACxE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,QAAQ,EAAE;gBACpD,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,4BAA4B,CAAC;AACrE,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,UAAU,EAAE,iCAAiC;AAC7C,gBAAA,QAAQ,EAAE,cAAc;AACxB,gBAAA,WAAW,EAAE;AACX,oBAAA,eAAe,EAAE,KAAK;AACtB,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,oBAAA,SAAS,EACP,IAAI,CAAC,WAAW,EAAE,IAAI;AACpB,0BAAE,IAAI,CAAC,iBAAiB;AACxB,0BAAE,IAAI,CAAC,aAAa,EAAE;AAC1B,oBAAA,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO;AACvC,iBAAA;AACD,gBAAA,WAAW,EAAE,IAAI;AAClB,aAAA,CAAC;QACJ;IACF;IAEA,gBAAgB,CAAC,SAAiB,EAAE,OAAgB,EAAA;AAClD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAE1C,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE;AACjC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAC9C,OAAO,EACP,IAAI,CAAC,aAAa,EAAG,CAAC,QAAQ,EAAE,EAChC,OAAO,CACR;gBACD;YACF;iBAAO;AACL,gBAAA,IAAI,CAAC,CAAC,SAAS,EAAE;AACf,oBAAA,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAC9C,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,CACR;gBACH;YACF;QACF;IACF;IAEA,uBAAuB,GAAA;AACrB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB;aACrC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI;AACzB,aAAA,IAAI,EAAE;QACT,MAAM,KAAK,GACT,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,UAAU,KAAK,EAAE;AACzE,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;QAEpC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KACrB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,CAAC,CACjD;IACH;IAEA,gBAAgB,CAAC,MAAc,EAAE,IAAS,EAAA;QACxC,OAAO,IAAI,CAAC,KAAK;IACnB;AAEA,IAAA,WAAW,CAAC,MAAW,EAAA;AACrB,QAAA,IAAI,MAAM,IAAI,OAAO,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7D;AAAO,aAAA,IAAI,MAAM,IAAI,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9D;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;IAChC;uGA9LmB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,+EC5CpC,01YA6QA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9OI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,0TACnB,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,MAAM,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,WAAW,0NACX,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,MAAM,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACN,cAAc,4LACd,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAKa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhBnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EACtB;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,IAAI;wBACJ,MAAM;wBACN,WAAW;wBACX,eAAe;wBACf,MAAM;wBACN,cAAc;wBACd,IAAI;AACL,qBAAA,EAAA,QAAA,EAAA,01YAAA,EAAA;;;AExCH;;ACAA;;AAEG;;;;"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@masterteam/permissions",
3
+ "version": "0.0.1",
4
+ "publishConfig": {
5
+ "directory": "../../../dist/masterteam/permissions",
6
+ "linkDirectory": false,
7
+ "access": "public"
8
+ },
9
+ "peerDependencies": {
10
+ "@angular/common": "^21.0.3",
11
+ "@angular/core": "^21.0.3",
12
+ "@angular/forms": "^21.0.3",
13
+ "@angular/cdk": "^21.0.2",
14
+ "@primeuix/themes": "^2.0.2",
15
+ "@tailwindcss/postcss": "^4.1.17",
16
+ "@jsverse/transloco": "^8.0.2",
17
+ "postcss": "^8.5.6",
18
+ "primeng": "21.0.1",
19
+ "rxjs": "^7.8.2",
20
+ "tailwindcss": "^4.1.17",
21
+ "tailwindcss-primeui": "^0.6.1",
22
+ "@ngxs/store": "^20.1.0",
23
+ "@masterteam/accessibilities": "^0.0.1",
24
+ "@masterteam/components": "^0.0.84"
25
+ },
26
+ "sideEffects": false,
27
+ "exports": {
28
+ "./assets/permissions.css": {
29
+ "style": "./assets/permissions.css"
30
+ },
31
+ "./assets/i18n/*.json": {
32
+ "default": "./assets/i18n/*.json"
33
+ },
34
+ "./package.json": {
35
+ "default": "./package.json"
36
+ },
37
+ ".": {
38
+ "types": "./types/masterteam-permissions.d.ts",
39
+ "default": "./fesm2022/masterteam-permissions.mjs"
40
+ }
41
+ },
42
+ "module": "fesm2022/masterteam-permissions.mjs",
43
+ "typings": "types/masterteam-permissions.d.ts",
44
+ "dependencies": {
45
+ "tslib": "^2.8.1"
46
+ }
47
+ }
@@ -0,0 +1,346 @@
1
+ import * as _masterteam_accessibilities from '@masterteam/accessibilities';
2
+ import * as _angular_core from '@angular/core';
3
+ import { OnInit, OnDestroy } from '@angular/core';
4
+ import * as _masterteam_permissions from '@masterteam/permissions';
5
+ import { FormControl } from '@angular/forms';
6
+ import { ModalService } from '@masterteam/components/modal';
7
+ import { ModalRef } from '@masterteam/components/dialog';
8
+ import * as rxjs from 'rxjs';
9
+ import { Observable } from 'rxjs';
10
+ import { StateContext } from '@ngxs/store';
11
+
12
+ interface Role {
13
+ name: string;
14
+ value: string;
15
+ }
16
+ interface LevelRoles {
17
+ level?: string;
18
+ levelKey?: string;
19
+ scopeType?: string;
20
+ scopeId?: string;
21
+ roles?: Role[];
22
+ }
23
+ interface PermissionAction {
24
+ id: number;
25
+ name: string;
26
+ isSelected: boolean;
27
+ }
28
+ interface PermissionLog {
29
+ name: string;
30
+ actions: PermissionAction[];
31
+ }
32
+ interface LevelPermission {
33
+ levelName: string;
34
+ logs: PermissionLog[];
35
+ }
36
+ interface RolesResponse {
37
+ endpoint: string;
38
+ status: number;
39
+ code: number;
40
+ locale: string;
41
+ message: string;
42
+ errors: null | string[];
43
+ data: Role[];
44
+ cacheSession: string;
45
+ }
46
+ interface PermissionsResponseData {
47
+ permissions: PermissionLog[];
48
+ }
49
+ interface PermissionsResponse {
50
+ endpoint: string;
51
+ status: number;
52
+ code: number;
53
+ locale: string;
54
+ message: string;
55
+ errors: null | string[];
56
+ data: PermissionsResponseData;
57
+ cacheSession: string;
58
+ }
59
+ interface GroupPermissionsResponse {
60
+ endpoint: string;
61
+ status: number;
62
+ code: number;
63
+ locale: string;
64
+ message: string;
65
+ errors: null | string[];
66
+ data: LevelPermission[];
67
+ cacheSession: string;
68
+ }
69
+ interface UpdatePermissionPayload {
70
+ roleValue: string;
71
+ levelId: string;
72
+ permissions: LevelPermission[];
73
+ }
74
+ declare enum ModuleType {
75
+ LEVEL = "level",
76
+ LOG = "log",
77
+ LEVELLOG = "levelLog"
78
+ }
79
+
80
+ declare class PermissionsPage implements OnInit, OnDestroy {
81
+ private readonly permissionsFacade;
82
+ private readonly accessibilitiesFacade;
83
+ private readonly route;
84
+ private readonly router;
85
+ private readonly translocoService;
86
+ private readonly modal;
87
+ private readonly destroyRef;
88
+ private readonly defaultLevelName;
89
+ levelRoles: _angular_core.Signal<_masterteam_permissions.LevelRoles[]>;
90
+ selectedRoleValue: _angular_core.Signal<string | null>;
91
+ selectedRole: _angular_core.WritableSignal<string | null>;
92
+ selectedGroupValue: _angular_core.Signal<string | number | null>;
93
+ selectedGroup: _angular_core.WritableSignal<string | number | null>;
94
+ permissions: _angular_core.Signal<PermissionLog[]>;
95
+ groupPermissions: _angular_core.Signal<_masterteam_permissions.LevelPermission[]>;
96
+ loading: _angular_core.Signal<boolean>;
97
+ permissionsLoading: _angular_core.Signal<boolean>;
98
+ levelId: _angular_core.Signal<string>;
99
+ groups: _angular_core.Signal<_masterteam_accessibilities.Group[]>;
100
+ allPermissionsToggle: FormControl<boolean | null>;
101
+ readonly groupOrRoleId: _angular_core.Signal<string>;
102
+ readonly selectedTabFromParams: _angular_core.Signal<any>;
103
+ selectedTab: _angular_core.WritableSignal<string>;
104
+ tabsList: _angular_core.WritableSignal<any[]>;
105
+ firstLoad: _angular_core.WritableSignal<boolean>;
106
+ constructor();
107
+ ngOnInit(): void;
108
+ selectRole(roleValue: string): void;
109
+ selectGroup(groupId: number): void;
110
+ openPermissionDialog(group: PermissionLog): void;
111
+ onToggleAllLevel(levelName: string, enabled: boolean): void;
112
+ isAllPermissionsEnabled(): boolean;
113
+ trackByRoleValue(_index: number, role: any): any;
114
+ onTabChange($event: any): void;
115
+ ngOnDestroy(): void;
116
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PermissionsPage, never>;
117
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PermissionsPage, "mt-permissions-page", never, {}, {}, never, never, true, never>;
118
+ }
119
+
120
+ declare class PermissionsEditDialog {
121
+ private permissionsFacade;
122
+ modal: ModalService;
123
+ ref: ModalRef;
124
+ permissionGroup: _angular_core.InputSignal<PermissionLog | null>;
125
+ addPermissionsLoading: _angular_core.Signal<boolean>;
126
+ addPermissionsError: _angular_core.Signal<string | null>;
127
+ levelId: _angular_core.InputSignal<string>;
128
+ roleValue: _angular_core.InputSignal<string>;
129
+ isGroup: _angular_core.InputSignal<boolean>;
130
+ closeDialog: _angular_core.OutputEmitterRef<void>;
131
+ actionControls: _angular_core.WritableSignal<Map<number, FormControl<any>>>;
132
+ toggleAll: _angular_core.WritableSignal<boolean>;
133
+ constructor();
134
+ onPermissionToggle(actionId: number, isSelected: boolean): void;
135
+ onClose(): void;
136
+ trackByActionId(_index: number, action: PermissionAction): number;
137
+ getControl(actionId: number): FormControl;
138
+ onSave(): void;
139
+ selectAll(): void;
140
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PermissionsEditDialog, never>;
141
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PermissionsEditDialog, "mt-permissions-edit-dialog", never, { "permissionGroup": { "alias": "permissionGroup"; "required": false; "isSignal": true; }; "levelId": { "alias": "levelId"; "required": true; "isSignal": true; }; "roleValue": { "alias": "roleValue"; "required": true; "isSignal": true; }; "isGroup": { "alias": "isGroup"; "required": true; "isSignal": true; }; }, { "closeDialog": "closeDialog"; }, never, never, true, never>;
142
+ }
143
+
144
+ declare class LoadRoles {
145
+ static readonly type = "[Permissions] Load Roles";
146
+ constructor();
147
+ }
148
+ declare class LoadRolesSuccess {
149
+ roles: any[];
150
+ static readonly type = "[Permissions] Load Roles Success";
151
+ constructor(roles: any[]);
152
+ }
153
+ declare class LoadRolesFail {
154
+ error: string;
155
+ static readonly type = "[Permissions] Load Roles Fail";
156
+ constructor(error: string);
157
+ }
158
+ declare class SelectRole {
159
+ roleValue: string;
160
+ static readonly type = "[Permissions] Select Role";
161
+ constructor(roleValue: string);
162
+ }
163
+ declare class SelectGroup {
164
+ groupId: number;
165
+ static readonly type = "[Permissions] Select Group";
166
+ constructor(groupId: number);
167
+ }
168
+ declare class LoadPermissions {
169
+ roleValue: string;
170
+ levelId: string;
171
+ static readonly type = "[Permissions] Load Permissions";
172
+ constructor(roleValue: string, levelId: string);
173
+ }
174
+ declare class LoadGroupPermissions {
175
+ groupId: number;
176
+ levelId: string;
177
+ static readonly type = "[Permissions] Load Group Permissions";
178
+ constructor(groupId: number, levelId: string);
179
+ }
180
+ declare class LoadPermissionsSuccess {
181
+ permissions: PermissionLog[];
182
+ static readonly type = "[Permissions] Load Permissions Success";
183
+ constructor(permissions: PermissionLog[]);
184
+ }
185
+ declare class LoadGroupPermissionsSuccess {
186
+ permissions: LevelPermission[];
187
+ static readonly type = "[Permissions] Load Group Permissions Success";
188
+ constructor(permissions: LevelPermission[]);
189
+ }
190
+ declare class LoadPermissionsFail {
191
+ error: string;
192
+ static readonly type = "[Permissions] Load Permissions Fail";
193
+ constructor(error: string);
194
+ }
195
+ declare class UpdatePermissionLocally {
196
+ roleValue: string;
197
+ levelId: string;
198
+ actionId: number;
199
+ isSelected: boolean;
200
+ static readonly type = "[Permissions] Update Permission Locally";
201
+ constructor(roleValue: string, levelId: string, actionId: number, isSelected: boolean);
202
+ }
203
+ declare class UpdateGroupPermissionLocally {
204
+ roleValue: string;
205
+ levelId: string;
206
+ actionId: number;
207
+ isSelected: boolean;
208
+ static readonly type = "[Permissions] Update Group Permission Locally";
209
+ constructor(roleValue: string, levelId: string, actionId: number, isSelected: boolean);
210
+ }
211
+ declare class UpdatePermission {
212
+ roleValue: string;
213
+ levelId: string;
214
+ static readonly type = "[Permissions] Update Permission";
215
+ constructor(roleValue: string, levelId: string);
216
+ }
217
+ declare class UpdateGroupPermission {
218
+ groupId: string;
219
+ permissionLogs: PermissionLog[];
220
+ levelId: string;
221
+ static readonly type = "[Permissions] Update Group Permission";
222
+ constructor(groupId: string, permissionLogs: PermissionLog[], levelId: string);
223
+ }
224
+ declare class UpdatePermissionSuccess {
225
+ static readonly type = "[Permissions] Update Permission Success";
226
+ }
227
+ declare class UpdatePermissionFail {
228
+ error: string;
229
+ static readonly type = "[Permissions] Update Permission Fail";
230
+ constructor(error: string);
231
+ }
232
+ declare class ToggleAllLevelPermissions {
233
+ roleValue: string;
234
+ levelId: string;
235
+ levelName: string;
236
+ enabled: boolean;
237
+ static readonly type = "[Permissions] Toggle All Level Permissions";
238
+ constructor(roleValue: string, levelId: string, levelName: string, enabled: boolean);
239
+ }
240
+ declare class ToggleAllGroupPermissions {
241
+ levelId: string;
242
+ groupId: string;
243
+ enabled: boolean;
244
+ static readonly type = "[Permissions] Toggle All Group Permissions";
245
+ constructor(levelId: string, groupId: string, enabled: boolean);
246
+ }
247
+ declare class SetModuleInfo {
248
+ readonly moduleType: string;
249
+ readonly moduleId: string | number;
250
+ readonly parentModuleType?: string | undefined;
251
+ readonly parentModuleId?: string | number | undefined;
252
+ readonly parentPath?: string | undefined;
253
+ static readonly type = "[Permissions] Set Module Info";
254
+ constructor(moduleType: string, moduleId: string | number, parentModuleType?: string | undefined, parentModuleId?: string | number | undefined, parentPath?: string | undefined);
255
+ }
256
+ declare class Reset {
257
+ static readonly type = "[Permissions] Reset Module Info";
258
+ constructor();
259
+ }
260
+
261
+ declare class PermissionsFacade {
262
+ private store;
263
+ selectors: {
264
+ roles: _angular_core.Signal<_masterteam_permissions.LevelRoles[]>;
265
+ selectedRoleValue: _angular_core.Signal<string | null>;
266
+ selectedGroupValue: _angular_core.Signal<string | number | null>;
267
+ permissions: _angular_core.Signal<PermissionLog[]>;
268
+ groupPermissions: _angular_core.Signal<_masterteam_permissions.LevelPermission[]>;
269
+ loading: _angular_core.Signal<boolean>;
270
+ permissionsLoading: _angular_core.Signal<boolean>;
271
+ addPermissionsLoading: _angular_core.Signal<boolean>;
272
+ error: _angular_core.Signal<string | null>;
273
+ levelId: _angular_core.Signal<string>;
274
+ };
275
+ loadRoles(): Observable<void>;
276
+ selectRole(roleValue: string): Observable<void> | undefined;
277
+ selectGroup(groupId: number): Observable<void> | undefined;
278
+ loadPermissions(roleValue: string, levelId: string): Observable<void>;
279
+ loadGroupPermissions(groupId: number, levelId: string): Observable<void>;
280
+ updatePermissionLocally(roleValue: string, levelId: string, actionId: number, isSelected: boolean): Observable<void>;
281
+ updateGroupPermissionLocally(roleValue: string, levelId: string, actionId: number, isSelected: boolean): Observable<void>;
282
+ updatePermission(roleValue: string, levelId: string): Observable<void>;
283
+ updateGroupPermission(groupId: string, permissionLogs: PermissionLog[], levelId: string): Observable<void>;
284
+ toggleAllLevelPermissions(roleValue: string, levelId: string, levelName: string, enabled: boolean): Observable<void>;
285
+ toggleAllGroupPermissions(levelId: string, groupId: string, enabled: boolean): Observable<void>;
286
+ setModuleInfo(moduleType: string, moduleId: string | number, parentModuleType?: string, parentModuleId?: string | number, parentPath?: string): Observable<unknown>;
287
+ reset(): Observable<void>;
288
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PermissionsFacade, never>;
289
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<PermissionsFacade>;
290
+ }
291
+
292
+ interface PermissionsStateModel {
293
+ roles: LevelRoles[];
294
+ selectedRoleValue: string | null;
295
+ selectedGroupValue: string | number | null;
296
+ permissions: PermissionLog[];
297
+ groupPermissions: LevelPermission[];
298
+ currentLevelId: string | null;
299
+ loading: boolean;
300
+ permissionsLoading: boolean;
301
+ addPermissionsLoading: boolean;
302
+ error: string | null;
303
+ moduleType: string;
304
+ moduleId: string | number;
305
+ parentModuleType?: string | null;
306
+ parentModuleId?: string | number | null;
307
+ parentPath?: string;
308
+ }
309
+ declare class PermissionsState {
310
+ private http;
311
+ static roles(state: PermissionsStateModel): LevelRoles[];
312
+ static selectedRoleValue(state: PermissionsStateModel): string | null;
313
+ static selectedGroupValue(state: PermissionsStateModel): string | number | null;
314
+ static permissions(state: PermissionsStateModel): PermissionLog[];
315
+ static groupPermissions(state: PermissionsStateModel): LevelPermission[];
316
+ static loading(state: PermissionsStateModel): boolean;
317
+ static permissionsLoading(state: PermissionsStateModel): boolean;
318
+ static addPermissionsLoading(state: PermissionsStateModel): boolean;
319
+ static moduleType(state: PermissionsStateModel): string | null;
320
+ static moduleId(state: PermissionsStateModel): string | number | null;
321
+ static levelId(state: PermissionsStateModel): string;
322
+ static error(state: PermissionsStateModel): string | null;
323
+ loadRoles(ctx: StateContext<PermissionsStateModel>): rxjs.Observable<_masterteam_permissions.Role[]>;
324
+ loadRolesSuccess(ctx: StateContext<PermissionsStateModel>, action: LoadRolesSuccess): void;
325
+ loadRolesFail(ctx: StateContext<PermissionsStateModel>, action: LoadRolesFail): void;
326
+ selectRole(ctx: StateContext<PermissionsStateModel>, action: SelectRole): void;
327
+ selectGroup(ctx: StateContext<PermissionsStateModel>, action: SelectGroup): void;
328
+ loadPermissions(ctx: StateContext<PermissionsStateModel>, action: LoadPermissions): rxjs.Observable<PermissionLog[]>;
329
+ loadGroupPermissions(ctx: StateContext<PermissionsStateModel>, action: LoadGroupPermissions): rxjs.Observable<LevelPermission[]>;
330
+ loadPermissionsSuccess(ctx: StateContext<PermissionsStateModel>, action: LoadPermissionsSuccess): void;
331
+ loadGroupPermissionsSuccess(ctx: StateContext<PermissionsStateModel>, action: LoadGroupPermissionsSuccess): void;
332
+ loadPermissionsFail(ctx: StateContext<PermissionsStateModel>, action: LoadPermissionsFail): void;
333
+ updatePermissionLocally(ctx: StateContext<PermissionsStateModel>, action: UpdatePermissionLocally): void;
334
+ updateGroupPermissionLocally(ctx: StateContext<PermissionsStateModel>, action: UpdateGroupPermissionLocally): void;
335
+ updatePermission(ctx: StateContext<PermissionsStateModel>, action: UpdatePermission): rxjs.Observable<PermissionsResponse>;
336
+ updateGroupPermission(ctx: StateContext<PermissionsStateModel>, action: UpdateGroupPermission): rxjs.Observable<PermissionsResponse>;
337
+ toggleAllLevelPermissions(ctx: StateContext<PermissionsStateModel>, action: ToggleAllLevelPermissions): rxjs.Observable<PermissionsResponse>;
338
+ toggleAllGroupPermissions(ctx: StateContext<PermissionsStateModel>, action: ToggleAllGroupPermissions): rxjs.Observable<PermissionsResponse>;
339
+ setModuleInfo(ctx: StateContext<PermissionsStateModel>, action: SetModuleInfo): void;
340
+ reset(ctx: StateContext<PermissionsStateModel>): void;
341
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PermissionsState, never>;
342
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<PermissionsState>;
343
+ }
344
+
345
+ export { LoadGroupPermissions, LoadGroupPermissionsSuccess, LoadPermissions, LoadPermissionsFail, LoadPermissionsSuccess, LoadRoles, LoadRolesFail, LoadRolesSuccess, ModuleType, PermissionsEditDialog, PermissionsFacade, PermissionsPage, PermissionsState, Reset, SelectGroup, SelectRole, SetModuleInfo, ToggleAllGroupPermissions, ToggleAllLevelPermissions, UpdateGroupPermission, UpdateGroupPermissionLocally, UpdatePermission, UpdatePermissionFail, UpdatePermissionLocally, UpdatePermissionSuccess };
346
+ export type { GroupPermissionsResponse, LevelPermission, LevelRoles, PermissionAction, PermissionLog, PermissionsResponse, PermissionsResponseData, PermissionsStateModel, Role, RolesResponse, UpdatePermissionPayload };