@abp/ng.permission-management 5.0.1 → 5.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/{esm2015/abp-ng.permission-management.js → esm2020/abp-ng.permission-management.mjs} +0 -0
  2. package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +0 -0
  3. package/esm2020/lib/components/permission-management.component.mjs +233 -0
  4. package/{esm2015/lib/enums/components.js → esm2020/lib/enums/components.mjs} +0 -0
  5. package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +0 -0
  6. package/{esm2015/lib/models/permission-management.js → esm2020/lib/models/permission-management.mjs} +0 -0
  7. package/{esm2015/lib/permission-management.module.js → esm2020/lib/permission-management.module.mjs} +5 -5
  8. package/{esm2015/proxy/abp-ng.permission-management-proxy.js → esm2020/proxy/abp-ng.permission-management-proxy.mjs} +0 -0
  9. package/{esm2015/proxy/lib/index.js → esm2020/proxy/lib/index.mjs} +0 -0
  10. package/{esm2015/proxy/lib/proxy/index.js → esm2020/proxy/lib/proxy/index.mjs} +0 -0
  11. package/{esm2015/proxy/lib/proxy/models.js → esm2020/proxy/lib/proxy/models.mjs} +0 -0
  12. package/{esm2015/proxy/lib/proxy/permissions.service.js → esm2020/proxy/lib/proxy/permissions.service.mjs} +4 -4
  13. package/{esm2015/proxy/public-api.js → esm2020/proxy/public-api.mjs} +0 -0
  14. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  15. package/fesm2015/{abp-ng.permission-management-proxy.js → abp-ng.permission-management-proxy.mjs} +5 -5
  16. package/fesm2015/abp-ng.permission-management-proxy.mjs.map +1 -0
  17. package/fesm2015/abp-ng.permission-management.mjs +247 -0
  18. package/fesm2015/abp-ng.permission-management.mjs.map +1 -0
  19. package/fesm2020/abp-ng.permission-management-proxy.mjs +36 -0
  20. package/fesm2020/abp-ng.permission-management-proxy.mjs.map +1 -0
  21. package/fesm2020/abp-ng.permission-management.mjs +254 -0
  22. package/fesm2020/abp-ng.permission-management.mjs.map +1 -0
  23. package/package.json +29 -8
  24. package/proxy/package.json +5 -5
  25. package/proxy/src/lib/proxy/README.md +17 -0
  26. package/bundles/abp-ng.permission-management-proxy.umd.js +0 -65
  27. package/bundles/abp-ng.permission-management-proxy.umd.js.map +0 -1
  28. package/bundles/abp-ng.permission-management.umd.js +0 -615
  29. package/bundles/abp-ng.permission-management.umd.js.map +0 -1
  30. package/esm2015/lib/components/permission-management.component.js +0 -231
  31. package/fesm2015/abp-ng.permission-management-proxy.js.map +0 -1
  32. package/fesm2015/abp-ng.permission-management.js +0 -252
  33. package/fesm2015/abp-ng.permission-management.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"abp-ng.permission-management.umd.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../packages/permission-management/src/lib/components/permission-management.component.ts","../../../../packages/permission-management/src/lib/components/permission-management.component.html","../../../../packages/permission-management/src/lib/permission-management.module.ts","../../../../packages/permission-management/src/abp-ng.permission-management.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { ConfigStateService, CurrentUserDto } from '@abp/ng.core';\r\nimport {\r\n GetPermissionListResultDto,\r\n PermissionGrantInfoDto,\r\n PermissionGroupDto,\r\n PermissionsService,\r\n ProviderInfoDto,\r\n UpdatePermissionDto,\r\n} from '@abp/ng.permission-management/proxy';\r\nimport { LocaleDirection } from '@abp/ng.theme.shared';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n TrackByFunction,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { concat, of } from 'rxjs';\r\nimport { finalize, switchMap, take, tap } from 'rxjs/operators';\r\nimport { PermissionManagement } from '../models/permission-management';\r\n\r\ntype PermissionWithStyle = PermissionGrantInfoDto & {\r\n style: string;\r\n};\r\n\r\ntype PermissionWithGroupName = PermissionGrantInfoDto & {\r\n groupName: string;\r\n};\r\n\r\n@Component({\r\n selector: 'abp-permission-management',\r\n templateUrl: './permission-management.component.html',\r\n exportAs: 'abpPermissionManagement',\r\n styles: [\r\n `\r\n .overflow-scroll {\r\n max-height: 70vh;\r\n overflow-y: scroll;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class PermissionManagementComponent\r\n implements\r\n PermissionManagement.PermissionManagementComponentInputs,\r\n PermissionManagement.PermissionManagementComponentOutputs\r\n{\r\n @Input()\r\n readonly providerName: string;\r\n\r\n @Input()\r\n readonly providerKey: string;\r\n\r\n @Input()\r\n readonly hideBadges = false;\r\n\r\n protected _visible = false;\r\n\r\n @Input()\r\n get visible(): boolean {\r\n return this._visible;\r\n }\r\n\r\n set visible(value: boolean) {\r\n if (value === this._visible) return;\r\n\r\n if (value) {\r\n this.openModal().subscribe(() => {\r\n this._visible = true;\r\n this.visibleChange.emit(true);\r\n concat(this.selectAllInAllTabsRef.changes, this.selectAllInThisTabsRef.changes)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.initModal();\r\n });\r\n });\r\n } else {\r\n this.selectedGroup = null;\r\n this._visible = false;\r\n this.visibleChange.emit(false);\r\n }\r\n }\r\n\r\n @Output() readonly visibleChange = new EventEmitter<boolean>();\r\n\r\n @ViewChildren('selectAllInThisTabsRef')\r\n selectAllInThisTabsRef: QueryList<ElementRef<HTMLInputElement>>;\r\n @ViewChildren('selectAllInAllTabsRef')\r\n selectAllInAllTabsRef: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n data: GetPermissionListResultDto = { groups: [], entityDisplayName: null };\r\n\r\n selectedGroup: PermissionGroupDto;\r\n\r\n permissions: PermissionWithGroupName[] = [];\r\n\r\n selectThisTab = false;\r\n\r\n selectAllTab = false;\r\n\r\n modalBusy = false;\r\n\r\n trackByFn: TrackByFunction<PermissionGroupDto> = (_, item) => item.name;\r\n\r\n get selectedGroupPermissions(): PermissionWithStyle[] {\r\n if (!this.selectedGroup) return [];\r\n\r\n const margin = `margin-${\r\n (document.body.dir as LocaleDirection) === 'rtl' ? 'right' : 'left'\r\n }.px`;\r\n\r\n const permissions = this.data.groups.find(\r\n group => group.name === this.selectedGroup.name,\r\n ).permissions;\r\n\r\n return permissions.map(\r\n permission =>\r\n ({\r\n ...permission,\r\n style: { [margin]: findMargin(permissions, permission) },\r\n isGranted: this.permissions.find(per => per.name === permission.name).isGranted,\r\n } as unknown as PermissionWithStyle),\r\n );\r\n }\r\n\r\n constructor(protected service: PermissionsService, protected configState: ConfigStateService) {}\r\n\r\n getChecked(name: string) {\r\n return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted;\r\n }\r\n\r\n isGrantedByOtherProviderName(grantedProviders: ProviderInfoDto[]): boolean {\r\n if (grantedProviders.length) {\r\n return grantedProviders.findIndex(p => p.providerName !== this.providerName) > -1;\r\n }\r\n return false;\r\n }\r\n\r\n onClickCheckbox(clickedPermission: PermissionGrantInfoDto, value) {\r\n if (\r\n clickedPermission.isGranted &&\r\n this.isGrantedByOtherProviderName(clickedPermission.grantedProviders)\r\n )\r\n return;\r\n\r\n setTimeout(() => {\r\n this.permissions = this.permissions.map(per => {\r\n if (clickedPermission.name === per.name) {\r\n return { ...per, isGranted: !per.isGranted };\r\n } else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) {\r\n return { ...per, isGranted: false };\r\n } else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) {\r\n return { ...per, isGranted: true };\r\n }\r\n\r\n return per;\r\n });\r\n\r\n this.setTabCheckboxState();\r\n this.setGrantCheckboxState();\r\n }, 0);\r\n }\r\n\r\n setTabCheckboxState() {\r\n const selectedPermissions = this.selectedGroupPermissions.filter(per => per.isGranted);\r\n const element = document.querySelector('#select-all-in-this-tabs') as any;\r\n\r\n if (selectedPermissions.length === this.selectedGroupPermissions.length) {\r\n element.indeterminate = false;\r\n this.selectThisTab = true;\r\n } else if (selectedPermissions.length === 0) {\r\n element.indeterminate = false;\r\n this.selectThisTab = false;\r\n } else {\r\n element.indeterminate = true;\r\n }\r\n }\r\n\r\n setGrantCheckboxState() {\r\n const selectedAllPermissions = this.permissions.filter(per => per.isGranted);\r\n const checkboxElement = document.querySelector('#select-all-in-all-tabs') as any;\r\n\r\n if (selectedAllPermissions.length === this.permissions.length) {\r\n checkboxElement.indeterminate = false;\r\n this.selectAllTab = true;\r\n } else if (selectedAllPermissions.length === 0) {\r\n checkboxElement.indeterminate = false;\r\n this.selectAllTab = false;\r\n } else {\r\n checkboxElement.indeterminate = true;\r\n }\r\n }\r\n\r\n onClickSelectThisTab() {\r\n this.selectedGroupPermissions.forEach(permission => {\r\n if (permission.isGranted && this.isGrantedByOtherProviderName(permission.grantedProviders))\r\n return;\r\n\r\n const index = this.permissions.findIndex(per => per.name === permission.name);\r\n\r\n this.permissions = [\r\n ...this.permissions.slice(0, index),\r\n { ...this.permissions[index], isGranted: !this.selectThisTab },\r\n ...this.permissions.slice(index + 1),\r\n ];\r\n });\r\n\r\n this.setGrantCheckboxState();\r\n }\r\n\r\n onClickSelectAll() {\r\n this.permissions = this.permissions.map(permission => ({\r\n ...permission,\r\n isGranted:\r\n this.isGrantedByOtherProviderName(permission.grantedProviders) || !this.selectAllTab,\r\n }));\r\n\r\n this.selectThisTab = !this.selectAllTab;\r\n }\r\n\r\n onChangeGroup(group: PermissionGroupDto) {\r\n this.selectedGroup = group;\r\n this.setTabCheckboxState();\r\n }\r\n\r\n submit() {\r\n const unchangedPermissions = getPermissions(this.data.groups);\r\n\r\n const changedPermissions: UpdatePermissionDto[] = this.permissions\r\n .filter(per =>\r\n unchangedPermissions.find(unchanged => unchanged.name === per.name).isGranted ===\r\n per.isGranted\r\n ? false\r\n : true,\r\n )\r\n .map(({ name, isGranted }) => ({ name, isGranted }));\r\n\r\n if (!changedPermissions.length) {\r\n this.visible = false;\r\n return;\r\n }\r\n\r\n this.modalBusy = true;\r\n this.service\r\n .update(this.providerName, this.providerKey, { permissions: changedPermissions })\r\n .pipe(\r\n switchMap(() =>\r\n this.shouldFetchAppConfig() ? this.configState.refreshAppState() : of(null),\r\n ),\r\n finalize(() => (this.modalBusy = false)),\r\n )\r\n .subscribe(() => {\r\n this.visible = false;\r\n });\r\n }\r\n\r\n openModal() {\r\n if (!this.providerKey || !this.providerName) {\r\n throw new Error('Provider Key and Provider Name are required.');\r\n }\r\n\r\n return this.service.get(this.providerName, this.providerKey).pipe(\r\n tap((permissionRes: GetPermissionListResultDto) => {\r\n this.data = permissionRes;\r\n this.selectedGroup = permissionRes.groups[0];\r\n this.permissions = getPermissions(permissionRes.groups);\r\n }),\r\n );\r\n }\r\n\r\n initModal() {\r\n // TODO: Refactor\r\n setTimeout(() => {\r\n this.setTabCheckboxState();\r\n this.setGrantCheckboxState();\r\n });\r\n }\r\n\r\n getAssignedCount(groupName: string) {\r\n return this.permissions.reduce(\r\n (acc, val) => (val.groupName === groupName && val.isGranted ? acc + 1 : acc),\r\n 0,\r\n );\r\n }\r\n\r\n shouldFetchAppConfig() {\r\n const currentUser = this.configState.getOne('currentUser') as CurrentUserDto;\r\n\r\n if (this.providerName === 'R') return currentUser.roles.some(role => role === this.providerKey);\r\n\r\n if (this.providerName === 'U') return currentUser.id === this.providerKey;\r\n\r\n return false;\r\n }\r\n}\r\n\r\nfunction findMargin(permissions: PermissionGrantInfoDto[], permission: PermissionGrantInfoDto) {\r\n const parentPermission = permissions.find(per => per.name === permission.parentName);\r\n\r\n if (parentPermission && parentPermission.parentName) {\r\n let margin = 20;\r\n return (margin += findMargin(permissions, parentPermission));\r\n }\r\n\r\n return parentPermission ? 20 : 0;\r\n}\r\n\r\nfunction getPermissions(groups: PermissionGroupDto[]): PermissionWithGroupName[] {\r\n return groups.reduce(\r\n (acc, val) => [...acc, ...val.permissions.map(p => ({ ...p, groupName: val.name }))],\r\n [],\r\n );\r\n}\r\n","<abp-modal [(visible)]=\"visible\" [busy]=\"modalBusy\" [options]=\"{ size: 'lg' }\">\r\n <ng-container *ngIf=\"data.entityDisplayName\">\r\n <ng-template #abpHeader>\r\n <h4>\r\n {{ 'AbpPermissionManagement::Permissions' | abpLocalization }} -\r\n {{ data.entityDisplayName }}\r\n </h4>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <div class=\"form-check mb-2\">\r\n <input\r\n #selectAllInAllTabsRef\r\n type=\"checkbox\"\r\n id=\"select-all-in-all-tabs\"\r\n name=\"select-all-in-all-tabs\"\r\n class=\"form-check-input\"\r\n [(ngModel)]=\"selectAllTab\"\r\n (click)=\"onClickSelectAll()\"\r\n />\r\n <label class=\"form-check-label\" for=\"select-all-in-all-tabs\">{{\r\n 'AbpPermissionManagement::SelectAllInAllTabs' | abpLocalization\r\n }}</label>\r\n </div>\r\n\r\n <hr class=\"mt-2 mb-2\" />\r\n <div class=\"row\">\r\n <div class=\"overflow-scroll col-md-4\">\r\n <ul class=\"nav nav-pills flex-column\">\r\n <li *ngFor=\"let group of data.groups; trackBy: trackByFn\" class=\"nav-item\">\r\n <a\r\n *ngIf=\"{ assignedCount: getAssignedCount(group.name) } as count\"\r\n class=\"nav-link pointer\"\r\n [class.active]=\"selectedGroup?.name === group?.name\"\r\n (click)=\"onChangeGroup(group)\"\r\n >\r\n <div [class.font-weight-bold]=\"count.assignedCount\">\r\n {{ group?.displayName }}\r\n <span>({{ count.assignedCount }})</span>\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"col-md-8 overflow-scroll\">\r\n <h4>{{ selectedGroup?.displayName }}</h4>\r\n <hr class=\"mt-2 mb-3\" />\r\n <div class=\"ps-1 pt-1\">\r\n <div class=\"form-check mb-2\">\r\n <input\r\n #selectAllInThisTabsRef\r\n type=\"checkbox\"\r\n id=\"select-all-in-this-tabs\"\r\n name=\"select-all-in-this-tabs\"\r\n class=\"form-check-input\"\r\n [(ngModel)]=\"selectThisTab\"\r\n (click)=\"onClickSelectThisTab()\"\r\n />\r\n <label class=\"form-check-label\" for=\"select-all-in-this-tabs\">{{\r\n 'AbpPermissionManagement::SelectAllInThisTab' | abpLocalization\r\n }}</label>\r\n </div>\r\n <hr class=\"mb-3\" />\r\n <div\r\n *ngFor=\"let permission of selectedGroupPermissions; let i = index; trackBy: trackByFn\"\r\n [ngStyle]=\"permission.style\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n #permissionCheckbox\r\n type=\"checkbox\"\r\n [checked]=\"getChecked(permission.name)\"\r\n [value]=\"getChecked(permission.name)\"\r\n [attr.id]=\"permission.name\"\r\n class=\"form-check-input\"\r\n [disabled]=\"isGrantedByOtherProviderName(permission.grantedProviders)\"\r\n (click)=\"onClickCheckbox(permission, permissionCheckbox.value)\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"permission.name\"\r\n >{{ permission.displayName }}\r\n <ng-container *ngIf=\"!hideBadges\">\r\n <span\r\n *ngFor=\"let provider of permission.grantedProviders\"\r\n class=\"badge bg-light text-dark\"\r\n >{{ provider.providerName }}: {{ provider.providerKey }}</span\r\n >\r\n </ng-container>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" (click)=\"submit()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n </ng-container>\r\n</abp-modal>\r\n","import { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgModule } from '@angular/core';\r\nimport { PermissionManagementComponent } from './components/permission-management.component';\r\n\r\n@NgModule({\r\n declarations: [PermissionManagementComponent],\r\n imports: [CoreModule, ThemeSharedModule],\r\n exports: [PermissionManagementComponent],\r\n})\r\nexport class PermissionManagementModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["EventEmitter","concat","take","switchMap","of","finalize","tap","Component","Input","Output","ViewChildren","CoreModule","ThemeSharedModule","NgModule"],"mappings":"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"}
@@ -1,231 +0,0 @@
1
- import { ConfigStateService } from '@abp/ng.core';
2
- import { PermissionsService, } from '@abp/ng.permission-management/proxy';
3
- import { Component, EventEmitter, Input, Output, QueryList, ViewChildren, } from '@angular/core';
4
- import { concat, of } from 'rxjs';
5
- import { finalize, switchMap, take, tap } from 'rxjs/operators';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@abp/ng.permission-management/proxy";
8
- import * as i2 from "@abp/ng.core";
9
- import * as i3 from "@abp/ng.theme.shared";
10
- import * as i4 from "@angular/common";
11
- import * as i5 from "@angular/forms";
12
- export class PermissionManagementComponent {
13
- constructor(service, configState) {
14
- this.service = service;
15
- this.configState = configState;
16
- this.hideBadges = false;
17
- this._visible = false;
18
- this.visibleChange = new EventEmitter();
19
- this.data = { groups: [], entityDisplayName: null };
20
- this.permissions = [];
21
- this.selectThisTab = false;
22
- this.selectAllTab = false;
23
- this.modalBusy = false;
24
- this.trackByFn = (_, item) => item.name;
25
- }
26
- get visible() {
27
- return this._visible;
28
- }
29
- set visible(value) {
30
- if (value === this._visible)
31
- return;
32
- if (value) {
33
- this.openModal().subscribe(() => {
34
- this._visible = true;
35
- this.visibleChange.emit(true);
36
- concat(this.selectAllInAllTabsRef.changes, this.selectAllInThisTabsRef.changes)
37
- .pipe(take(1))
38
- .subscribe(() => {
39
- this.initModal();
40
- });
41
- });
42
- }
43
- else {
44
- this.selectedGroup = null;
45
- this._visible = false;
46
- this.visibleChange.emit(false);
47
- }
48
- }
49
- get selectedGroupPermissions() {
50
- if (!this.selectedGroup)
51
- return [];
52
- const margin = `margin-${document.body.dir === 'rtl' ? 'right' : 'left'}.px`;
53
- const permissions = this.data.groups.find(group => group.name === this.selectedGroup.name).permissions;
54
- return permissions.map(permission => (Object.assign(Object.assign({}, permission), { style: { [margin]: findMargin(permissions, permission) }, isGranted: this.permissions.find(per => per.name === permission.name).isGranted })));
55
- }
56
- getChecked(name) {
57
- return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted;
58
- }
59
- isGrantedByOtherProviderName(grantedProviders) {
60
- if (grantedProviders.length) {
61
- return grantedProviders.findIndex(p => p.providerName !== this.providerName) > -1;
62
- }
63
- return false;
64
- }
65
- onClickCheckbox(clickedPermission, value) {
66
- if (clickedPermission.isGranted &&
67
- this.isGrantedByOtherProviderName(clickedPermission.grantedProviders))
68
- return;
69
- setTimeout(() => {
70
- this.permissions = this.permissions.map(per => {
71
- if (clickedPermission.name === per.name) {
72
- return Object.assign(Object.assign({}, per), { isGranted: !per.isGranted });
73
- }
74
- else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) {
75
- return Object.assign(Object.assign({}, per), { isGranted: false });
76
- }
77
- else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) {
78
- return Object.assign(Object.assign({}, per), { isGranted: true });
79
- }
80
- return per;
81
- });
82
- this.setTabCheckboxState();
83
- this.setGrantCheckboxState();
84
- }, 0);
85
- }
86
- setTabCheckboxState() {
87
- const selectedPermissions = this.selectedGroupPermissions.filter(per => per.isGranted);
88
- const element = document.querySelector('#select-all-in-this-tabs');
89
- if (selectedPermissions.length === this.selectedGroupPermissions.length) {
90
- element.indeterminate = false;
91
- this.selectThisTab = true;
92
- }
93
- else if (selectedPermissions.length === 0) {
94
- element.indeterminate = false;
95
- this.selectThisTab = false;
96
- }
97
- else {
98
- element.indeterminate = true;
99
- }
100
- }
101
- setGrantCheckboxState() {
102
- const selectedAllPermissions = this.permissions.filter(per => per.isGranted);
103
- const checkboxElement = document.querySelector('#select-all-in-all-tabs');
104
- if (selectedAllPermissions.length === this.permissions.length) {
105
- checkboxElement.indeterminate = false;
106
- this.selectAllTab = true;
107
- }
108
- else if (selectedAllPermissions.length === 0) {
109
- checkboxElement.indeterminate = false;
110
- this.selectAllTab = false;
111
- }
112
- else {
113
- checkboxElement.indeterminate = true;
114
- }
115
- }
116
- onClickSelectThisTab() {
117
- this.selectedGroupPermissions.forEach(permission => {
118
- if (permission.isGranted && this.isGrantedByOtherProviderName(permission.grantedProviders))
119
- return;
120
- const index = this.permissions.findIndex(per => per.name === permission.name);
121
- this.permissions = [
122
- ...this.permissions.slice(0, index),
123
- Object.assign(Object.assign({}, this.permissions[index]), { isGranted: !this.selectThisTab }),
124
- ...this.permissions.slice(index + 1),
125
- ];
126
- });
127
- this.setGrantCheckboxState();
128
- }
129
- onClickSelectAll() {
130
- this.permissions = this.permissions.map(permission => (Object.assign(Object.assign({}, permission), { isGranted: this.isGrantedByOtherProviderName(permission.grantedProviders) || !this.selectAllTab })));
131
- this.selectThisTab = !this.selectAllTab;
132
- }
133
- onChangeGroup(group) {
134
- this.selectedGroup = group;
135
- this.setTabCheckboxState();
136
- }
137
- submit() {
138
- const unchangedPermissions = getPermissions(this.data.groups);
139
- const changedPermissions = this.permissions
140
- .filter(per => unchangedPermissions.find(unchanged => unchanged.name === per.name).isGranted ===
141
- per.isGranted
142
- ? false
143
- : true)
144
- .map(({ name, isGranted }) => ({ name, isGranted }));
145
- if (!changedPermissions.length) {
146
- this.visible = false;
147
- return;
148
- }
149
- this.modalBusy = true;
150
- this.service
151
- .update(this.providerName, this.providerKey, { permissions: changedPermissions })
152
- .pipe(switchMap(() => this.shouldFetchAppConfig() ? this.configState.refreshAppState() : of(null)), finalize(() => (this.modalBusy = false)))
153
- .subscribe(() => {
154
- this.visible = false;
155
- });
156
- }
157
- openModal() {
158
- if (!this.providerKey || !this.providerName) {
159
- throw new Error('Provider Key and Provider Name are required.');
160
- }
161
- return this.service.get(this.providerName, this.providerKey).pipe(tap((permissionRes) => {
162
- this.data = permissionRes;
163
- this.selectedGroup = permissionRes.groups[0];
164
- this.permissions = getPermissions(permissionRes.groups);
165
- }));
166
- }
167
- initModal() {
168
- // TODO: Refactor
169
- setTimeout(() => {
170
- this.setTabCheckboxState();
171
- this.setGrantCheckboxState();
172
- });
173
- }
174
- getAssignedCount(groupName) {
175
- return this.permissions.reduce((acc, val) => (val.groupName === groupName && val.isGranted ? acc + 1 : acc), 0);
176
- }
177
- shouldFetchAppConfig() {
178
- const currentUser = this.configState.getOne('currentUser');
179
- if (this.providerName === 'R')
180
- return currentUser.roles.some(role => role === this.providerKey);
181
- if (this.providerName === 'U')
182
- return currentUser.id === this.providerKey;
183
- return false;
184
- }
185
- }
186
- PermissionManagementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PermissionManagementComponent, deps: [{ token: i1.PermissionsService }, { token: i2.ConfigStateService }], target: i0.ɵɵFactoryTarget.Component });
187
- PermissionManagementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: PermissionManagementComponent, selector: "abp-permission-management", inputs: { providerName: "providerName", providerKey: "providerKey", hideBadges: "hideBadges", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, viewQueries: [{ propertyName: "selectAllInThisTabsRef", predicate: ["selectAllInThisTabsRef"], descendants: true }, { propertyName: "selectAllInAllTabsRef", predicate: ["selectAllInAllTabsRef"], descendants: true }], exportAs: ["abpPermissionManagement"], ngImport: i0, template: "<abp-modal [(visible)]=\"visible\" [busy]=\"modalBusy\" [options]=\"{ size: 'lg' }\">\r\n <ng-container *ngIf=\"data.entityDisplayName\">\r\n <ng-template #abpHeader>\r\n <h4>\r\n {{ 'AbpPermissionManagement::Permissions' | abpLocalization }} -\r\n {{ data.entityDisplayName }}\r\n </h4>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <div class=\"form-check mb-2\">\r\n <input\r\n #selectAllInAllTabsRef\r\n type=\"checkbox\"\r\n id=\"select-all-in-all-tabs\"\r\n name=\"select-all-in-all-tabs\"\r\n class=\"form-check-input\"\r\n [(ngModel)]=\"selectAllTab\"\r\n (click)=\"onClickSelectAll()\"\r\n />\r\n <label class=\"form-check-label\" for=\"select-all-in-all-tabs\">{{\r\n 'AbpPermissionManagement::SelectAllInAllTabs' | abpLocalization\r\n }}</label>\r\n </div>\r\n\r\n <hr class=\"mt-2 mb-2\" />\r\n <div class=\"row\">\r\n <div class=\"overflow-scroll col-md-4\">\r\n <ul class=\"nav nav-pills flex-column\">\r\n <li *ngFor=\"let group of data.groups; trackBy: trackByFn\" class=\"nav-item\">\r\n <a\r\n *ngIf=\"{ assignedCount: getAssignedCount(group.name) } as count\"\r\n class=\"nav-link pointer\"\r\n [class.active]=\"selectedGroup?.name === group?.name\"\r\n (click)=\"onChangeGroup(group)\"\r\n >\r\n <div [class.font-weight-bold]=\"count.assignedCount\">\r\n {{ group?.displayName }}\r\n <span>({{ count.assignedCount }})</span>\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"col-md-8 overflow-scroll\">\r\n <h4>{{ selectedGroup?.displayName }}</h4>\r\n <hr class=\"mt-2 mb-3\" />\r\n <div class=\"ps-1 pt-1\">\r\n <div class=\"form-check mb-2\">\r\n <input\r\n #selectAllInThisTabsRef\r\n type=\"checkbox\"\r\n id=\"select-all-in-this-tabs\"\r\n name=\"select-all-in-this-tabs\"\r\n class=\"form-check-input\"\r\n [(ngModel)]=\"selectThisTab\"\r\n (click)=\"onClickSelectThisTab()\"\r\n />\r\n <label class=\"form-check-label\" for=\"select-all-in-this-tabs\">{{\r\n 'AbpPermissionManagement::SelectAllInThisTab' | abpLocalization\r\n }}</label>\r\n </div>\r\n <hr class=\"mb-3\" />\r\n <div\r\n *ngFor=\"let permission of selectedGroupPermissions; let i = index; trackBy: trackByFn\"\r\n [ngStyle]=\"permission.style\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n #permissionCheckbox\r\n type=\"checkbox\"\r\n [checked]=\"getChecked(permission.name)\"\r\n [value]=\"getChecked(permission.name)\"\r\n [attr.id]=\"permission.name\"\r\n class=\"form-check-input\"\r\n [disabled]=\"isGrantedByOtherProviderName(permission.grantedProviders)\"\r\n (click)=\"onClickCheckbox(permission, permissionCheckbox.value)\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"permission.name\"\r\n >{{ permission.displayName }}\r\n <ng-container *ngIf=\"!hideBadges\">\r\n <span\r\n *ngFor=\"let provider of permission.grantedProviders\"\r\n class=\"badge bg-light text-dark\"\r\n >{{ provider.providerName }}: {{ provider.providerKey }}</span\r\n >\r\n </ng-container>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" (click)=\"submit()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n </ng-container>\r\n</abp-modal>\r\n", styles: ["\n .overflow-scroll {\n max-height: 70vh;\n overflow-y: scroll;\n }\n "], components: [{ type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.ModalCloseDirective, selector: "[abpClose]" }], pipes: { "abpLocalization": i2.LocalizationPipe } });
188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PermissionManagementComponent, decorators: [{
189
- type: Component,
190
- args: [{
191
- selector: 'abp-permission-management',
192
- templateUrl: './permission-management.component.html',
193
- exportAs: 'abpPermissionManagement',
194
- styles: [
195
- `
196
- .overflow-scroll {
197
- max-height: 70vh;
198
- overflow-y: scroll;
199
- }
200
- `,
201
- ],
202
- }]
203
- }], ctorParameters: function () { return [{ type: i1.PermissionsService }, { type: i2.ConfigStateService }]; }, propDecorators: { providerName: [{
204
- type: Input
205
- }], providerKey: [{
206
- type: Input
207
- }], hideBadges: [{
208
- type: Input
209
- }], visible: [{
210
- type: Input
211
- }], visibleChange: [{
212
- type: Output
213
- }], selectAllInThisTabsRef: [{
214
- type: ViewChildren,
215
- args: ['selectAllInThisTabsRef']
216
- }], selectAllInAllTabsRef: [{
217
- type: ViewChildren,
218
- args: ['selectAllInAllTabsRef']
219
- }] } });
220
- function findMargin(permissions, permission) {
221
- const parentPermission = permissions.find(per => per.name === permission.parentName);
222
- if (parentPermission && parentPermission.parentName) {
223
- let margin = 20;
224
- return (margin += findMargin(permissions, parentPermission));
225
- }
226
- return parentPermission ? 20 : 0;
227
- }
228
- function getPermissions(groups) {
229
- return groups.reduce((acc, val) => [...acc, ...val.permissions.map(p => (Object.assign(Object.assign({}, p), { groupName: val.name })))], []);
230
- }
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3Blcm1pc3Npb24tbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvcGVybWlzc2lvbi1tYW5hZ2VtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3Blcm1pc3Npb24tbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvcGVybWlzc2lvbi1tYW5hZ2VtZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBa0IsTUFBTSxjQUFjLENBQUM7QUFDbEUsT0FBTyxFQUlMLGtCQUFrQixHQUduQixNQUFNLHFDQUFxQyxDQUFDO0FBRTdDLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUVULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUF3QmhFLE1BQU0sT0FBTyw2QkFBNkI7SUFtRnhDLFlBQXNCLE9BQTJCLEVBQVksV0FBK0I7UUFBdEUsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFBWSxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUF2RW5GLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQTJCUixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFPL0QsU0FBSSxHQUErQixFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFJ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LENBQUM7UUFDaEIsT0FBTyxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztLQUM5RDtJQUVELE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxNQUE0QjtJQUNsRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQ2xCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsaUNBQU0sQ0FBQyxLQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFHLENBQUMsQ0FBQyxFQUNwRixFQUFFLENBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UsIEN1cnJlbnRVc2VyRHRvIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHtcclxuICBHZXRQZXJtaXNzaW9uTGlzdFJlc3VsdER0byxcclxuICBQZXJtaXNzaW9uR3JhbnRJbmZvRHRvLFxyXG4gIFBlcm1pc3Npb25Hcm91cER0byxcclxuICBQZXJtaXNzaW9uc1NlcnZpY2UsXHJcbiAgUHJvdmlkZXJJbmZvRHRvLFxyXG4gIFVwZGF0ZVBlcm1pc3Npb25EdG8sXHJcbn0gZnJvbSAnQGFicC9uZy5wZXJtaXNzaW9uLW1hbmFnZW1lbnQvcHJveHknO1xyXG5pbXBvcnQgeyBMb2NhbGVEaXJlY3Rpb24gfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVHJhY2tCeUZ1bmN0aW9uLFxyXG4gIFZpZXdDaGlsZHJlbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29uY2F0LCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25NYW5hZ2VtZW50IH0gZnJvbSAnLi4vbW9kZWxzL3Blcm1pc3Npb24tbWFuYWdlbWVudCc7XHJcblxyXG50eXBlIFBlcm1pc3Npb25XaXRoU3R5bGUgPSBQZXJtaXNzaW9uR3JhbnRJbmZvRHRvICYge1xyXG4gIHN0eWxlOiBzdHJpbmc7XHJcbn07XHJcblxyXG50eXBlIFBlcm1pc3Npb25XaXRoR3JvdXBOYW1lID0gUGVybWlzc2lvbkdyYW50SW5mb0R0byAmIHtcclxuICBncm91cE5hbWU6IHN0cmluZztcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWJwLXBlcm1pc3Npb24tbWFuYWdlbWVudCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Blcm1pc3Npb24tbWFuYWdlbWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgZXhwb3J0QXM6ICdhYnBQZXJtaXNzaW9uTWFuYWdlbWVudCcsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgXHJcbiAgICAgIC5vdmVyZmxvdy1zY3JvbGwge1xyXG4gICAgICAgIG1heC1oZWlnaHQ6IDcwdmg7XHJcbiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xyXG4gICAgICB9XHJcbiAgICBgLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uTWFuYWdlbWVudENvbXBvbmVudFxyXG4gIGltcGxlbWVudHNcclxuICAgIFBlcm1pc3Npb25NYW5hZ2VtZW50LlBlcm1pc3Npb25NYW5hZ2VtZW50Q29tcG9uZW50SW5wdXRzLFxyXG4gICAgUGVybWlzc2lvbk1hbmFnZW1lbnQuUGVybWlzc2lvbk1hbmFnZW1lbnRDb21wb25lbnRPdXRwdXRzXHJcbntcclxuICBASW5wdXQoKVxyXG4gIHJlYWRvbmx5IHByb3ZpZGVyTmFtZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHJlYWRvbmx5IHByb3ZpZGVyS2V5OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcmVhZG9ubHkgaGlkZUJhZGdlcyA9IGZhbHNlO1xyXG5cclxuICBwcm90ZWN0ZWQgX3Zpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fdmlzaWJsZSkgcmV0dXJuO1xyXG5cclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLm9wZW5Nb2RhbCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fdmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgY29uY2F0KHRoaXMuc2VsZWN0QWxsSW5BbGxUYWJzUmVmLmNoYW5nZXMsIHRoaXMuc2VsZWN0QWxsSW5UaGlzVGFic1JlZi5jaGFuZ2VzKVxyXG4gICAgICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRNb2RhbCgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwID0gbnVsbDtcclxuICAgICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbignc2VsZWN0QWxsSW5UaGlzVGFic1JlZicpXHJcbiAgc2VsZWN0QWxsSW5UaGlzVGFic1JlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+O1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ3NlbGVjdEFsbEluQWxsVGFic1JlZicpXHJcbiAgc2VsZWN0QWxsSW5BbGxUYWJzUmVmOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj47XHJcblxyXG4gIGRhdGE6IEdldFBlcm1pc3Npb25MaXN0UmVzdWx0RHRvID0geyBncm91cHM6IFtdLCBlbnRpdHlEaXNwbGF5TmFtZTogbnVsbCB9O1xyXG5cclxuICBzZWxlY3RlZEdyb3VwOiBQZXJtaXNzaW9uR3JvdXBEdG87XHJcblxyXG4gIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uV2l0aEdyb3VwTmFtZVtdID0gW107XHJcblxyXG4gIHNlbGVjdFRoaXNUYWIgPSBmYWxzZTtcclxuXHJcbiAgc2VsZWN0QWxsVGFiID0gZmFsc2U7XHJcblxyXG4gIG1vZGFsQnVzeSA9IGZhbHNlO1xyXG5cclxuICB0cmFja0J5Rm46IFRyYWNrQnlGdW5jdGlvbjxQZXJtaXNzaW9uR3JvdXBEdG8+ID0gKF8sIGl0ZW0pID0+IGl0ZW0ubmFtZTtcclxuXHJcbiAgZ2V0IHNlbGVjdGVkR3JvdXBQZXJtaXNzaW9ucygpOiBQZXJtaXNzaW9uV2l0aFN0eWxlW10ge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkR3JvdXApIHJldHVybiBbXTtcclxuXHJcbiAgICBjb25zdCBtYXJnaW4gPSBgbWFyZ2luLSR7XHJcbiAgICAgIChkb2N1bWVudC5ib2R5LmRpciBhcyBMb2NhbGVEaXJlY3Rpb24pID09PSAncnRsJyA/ICdyaWdodCcgOiAnbGVmdCdcclxuICAgIH0ucHhgO1xyXG5cclxuICAgIGNvbnN0IHBlcm1pc3Npb25zID0gdGhpcy5kYXRhLmdyb3Vwcy5maW5kKFxyXG4gICAgICBncm91cCA9PiBncm91cC5uYW1lID09PSB0aGlzLnNlbGVjdGVkR3JvdXAubmFtZSxcclxuICAgICkucGVybWlzc2lvbnM7XHJcblxyXG4gICAgcmV0dXJuIHBlcm1pc3Npb25zLm1hcChcclxuICAgICAgcGVybWlzc2lvbiA9PlxyXG4gICAgICAgICh7XHJcbiAgICAgICAgICAuLi5wZXJtaXNzaW9uLFxyXG4gICAgICAgICAgc3R5bGU6IHsgW21hcmdpbl06IGZpbmRNYXJnaW4ocGVybWlzc2lvbnMsIHBlcm1pc3Npb24pIH0sXHJcbiAgICAgICAgICBpc0dyYW50ZWQ6IHRoaXMucGVybWlzc2lvbnMuZmluZChwZXIgPT4gcGVyLm5hbWUgPT09IHBlcm1pc3Npb24ubmFtZSkuaXNHcmFudGVkLFxyXG4gICAgICAgIH0gYXMgdW5rbm93biBhcyBQZXJtaXNzaW9uV2l0aFN0eWxlKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc2VydmljZTogUGVybWlzc2lvbnNTZXJ2aWNlLCBwcm90ZWN0ZWQgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZSkge31cclxuXHJcbiAgZ2V0Q2hlY2tlZChuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiAodGhpcy5wZXJtaXNzaW9ucy5maW5kKHBlciA9PiBwZXIubmFtZSA9PT0gbmFtZSkgfHwgeyBpc0dyYW50ZWQ6IGZhbHNlIH0pLmlzR3JhbnRlZDtcclxuICB9XHJcblxyXG4gIGlzR3JhbnRlZEJ5T3RoZXJQcm92aWRlck5hbWUoZ3JhbnRlZFByb3ZpZGVyczogUHJvdmlkZXJJbmZvRHRvW10pOiBib29sZWFuIHtcclxuICAgIGlmIChncmFudGVkUHJvdmlkZXJzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZ3JhbnRlZFByb3ZpZGVycy5maW5kSW5kZXgocCA9PiBwLnByb3ZpZGVyTmFtZSAhPT0gdGhpcy5wcm92aWRlck5hbWUpID4gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQ2hlY2tib3goY2xpY2tlZFBlcm1pc3Npb246IFBlcm1pc3Npb25HcmFudEluZm9EdG8sIHZhbHVlKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGNsaWNrZWRQZXJtaXNzaW9uLmlzR3JhbnRlZCAmJlxyXG4gICAgICB0aGlzLmlzR3JhbnRlZEJ5T3RoZXJQcm92aWRlck5hbWUoY2xpY2tlZFBlcm1pc3Npb24uZ3JhbnRlZFByb3ZpZGVycylcclxuICAgIClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9ucy5tYXAocGVyID0+IHtcclxuICAgICAgICBpZiAoY2xpY2tlZFBlcm1pc3Npb24ubmFtZSA9PT0gcGVyLm5hbWUpIHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLnBlciwgaXNHcmFudGVkOiAhcGVyLmlzR3JhbnRlZCB9O1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY2xpY2tlZFBlcm1pc3Npb24ubmFtZSA9PT0gcGVyLnBhcmVudE5hbWUgJiYgY2xpY2tlZFBlcm1pc3Npb24uaXNHcmFudGVkKSB7XHJcbiAgICAgICAgICByZXR1cm4geyAuLi5wZXIsIGlzR3JhbnRlZDogZmFsc2UgfTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNsaWNrZWRQZXJtaXNzaW9uLnBhcmVudE5hbWUgPT09IHBlci5uYW1lICYmICFjbGlja2VkUGVybWlzc2lvbi5pc0dyYW50ZWQpIHtcclxuICAgICAgICAgIHJldHVybiB7IC4uLnBlciwgaXNHcmFudGVkOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcGVyO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc2V0VGFiQ2hlY2tib3hTdGF0ZSgpO1xyXG4gICAgICB0aGlzLnNldEdyYW50Q2hlY2tib3hTdGF0ZSgpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBzZXRUYWJDaGVja2JveFN0YXRlKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRQZXJtaXNzaW9ucyA9IHRoaXMuc2VsZWN0ZWRHcm91cFBlcm1pc3Npb25zLmZpbHRlcihwZXIgPT4gcGVyLmlzR3JhbnRlZCk7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NlbGVjdC1hbGwtaW4tdGhpcy10YWJzJykgYXMgYW55O1xyXG5cclxuICAgIGlmIChzZWxlY3RlZFBlcm1pc3Npb25zLmxlbmd0aCA9PT0gdGhpcy5zZWxlY3RlZEdyb3VwUGVybWlzc2lvbnMubGVuZ3RoKSB7XHJcbiAgICAgIGVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlbGVjdFRoaXNUYWIgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZFBlcm1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBlbGVtZW50LmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWxlY3RUaGlzVGFiID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlbGVtZW50LmluZGV0ZXJtaW5hdGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0R3JhbnRDaGVja2JveFN0YXRlKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRBbGxQZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnMuZmlsdGVyKHBlciA9PiBwZXIuaXNHcmFudGVkKTtcclxuICAgIGNvbnN0IGNoZWNrYm94RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZWxlY3QtYWxsLWluLWFsbC10YWJzJykgYXMgYW55O1xyXG5cclxuICAgIGlmIChzZWxlY3RlZEFsbFBlcm1pc3Npb25zLmxlbmd0aCA9PT0gdGhpcy5wZXJtaXNzaW9ucy5sZW5ndGgpIHtcclxuICAgICAgY2hlY2tib3hFbGVtZW50LmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWxlY3RBbGxUYWIgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZEFsbFBlcm1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBjaGVja2JveEVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlbGVjdEFsbFRhYiA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2hlY2tib3hFbGVtZW50LmluZGV0ZXJtaW5hdGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGlja1NlbGVjdFRoaXNUYWIoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBQZXJtaXNzaW9ucy5mb3JFYWNoKHBlcm1pc3Npb24gPT4ge1xyXG4gICAgICBpZiAocGVybWlzc2lvbi5pc0dyYW50ZWQgJiYgdGhpcy5pc0dyYW50ZWRCeU90aGVyUHJvdmlkZXJOYW1lKHBlcm1pc3Npb24uZ3JhbnRlZFByb3ZpZGVycykpXHJcbiAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBlcm1pc3Npb25zLmZpbmRJbmRleChwZXIgPT4gcGVyLm5hbWUgPT09IHBlcm1pc3Npb24ubmFtZSk7XHJcblxyXG4gICAgICB0aGlzLnBlcm1pc3Npb25zID0gW1xyXG4gICAgICAgIC4uLnRoaXMucGVybWlzc2lvbnMuc2xpY2UoMCwgaW5kZXgpLFxyXG4gICAgICAgIHsgLi4udGhpcy5wZXJtaXNzaW9uc1tpbmRleF0sIGlzR3JhbnRlZDogIXRoaXMuc2VsZWN0VGhpc1RhYiB9LFxyXG4gICAgICAgIC4uLnRoaXMucGVybWlzc2lvbnMuc2xpY2UoaW5kZXggKyAxKSxcclxuICAgICAgXTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2V0R3JhbnRDaGVja2JveFN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrU2VsZWN0QWxsKCkge1xyXG4gICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnMubWFwKHBlcm1pc3Npb24gPT4gKHtcclxuICAgICAgLi4ucGVybWlzc2lvbixcclxuICAgICAgaXNHcmFudGVkOlxyXG4gICAgICAgIHRoaXMuaXNHcmFudGVkQnlPdGhlclByb3ZpZGVyTmFtZShwZXJtaXNzaW9uLmdyYW50ZWRQcm92aWRlcnMpIHx8ICF0aGlzLnNlbGVjdEFsbFRhYixcclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdFRoaXNUYWIgPSAhdGhpcy5zZWxlY3RBbGxUYWI7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUdyb3VwKGdyb3VwOiBQZXJtaXNzaW9uR3JvdXBEdG8pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cCA9IGdyb3VwO1xyXG4gICAgdGhpcy5zZXRUYWJDaGVja2JveFN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKSB7XHJcbiAgICBjb25zdCB1bmNoYW5nZWRQZXJtaXNzaW9ucyA9IGdldFBlcm1pc3Npb25zKHRoaXMuZGF0YS5ncm91cHMpO1xyXG5cclxuICAgIGNvbnN0IGNoYW5nZWRQZXJtaXNzaW9uczogVXBkYXRlUGVybWlzc2lvbkR0b1tdID0gdGhpcy5wZXJtaXNzaW9uc1xyXG4gICAgICAuZmlsdGVyKHBlciA9PlxyXG4gICAgICAgIHVuY2hhbmdlZFBlcm1pc3Npb25zLmZpbmQodW5jaGFuZ2VkID0+IHVuY2hhbmdlZC5uYW1lID09PSBwZXIubmFtZSkuaXNHcmFudGVkID09PVxyXG4gICAgICAgIHBlci5pc0dyYW50ZWRcclxuICAgICAgICAgID8gZmFsc2VcclxuICAgICAgICAgIDogdHJ1ZSxcclxuICAgICAgKVxyXG4gICAgICAubWFwKCh7IG5hbWUsIGlzR3JhbnRlZCB9KSA9PiAoeyBuYW1lLCBpc0dyYW50ZWQgfSkpO1xyXG5cclxuICAgIGlmICghY2hhbmdlZFBlcm1pc3Npb25zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubW9kYWxCdXN5ID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAudXBkYXRlKHRoaXMucHJvdmlkZXJOYW1lLCB0aGlzLnByb3ZpZGVyS2V5LCB7IHBlcm1pc3Npb25zOiBjaGFuZ2VkUGVybWlzc2lvbnMgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+XHJcbiAgICAgICAgICB0aGlzLnNob3VsZEZldGNoQXBwQ29uZmlnKCkgPyB0aGlzLmNvbmZpZ1N0YXRlLnJlZnJlc2hBcHBTdGF0ZSgpIDogb2YobnVsbCksXHJcbiAgICAgICAgKSxcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiAodGhpcy5tb2RhbEJ1c3kgPSBmYWxzZSkpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW5Nb2RhbCgpIHtcclxuICAgIGlmICghdGhpcy5wcm92aWRlcktleSB8fCAhdGhpcy5wcm92aWRlck5hbWUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm92aWRlciBLZXkgYW5kIFByb3ZpZGVyIE5hbWUgYXJlIHJlcXVpcmVkLicpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZ2V0KHRoaXMucHJvdmlkZXJOYW1lLCB0aGlzLnByb3ZpZGVyS2V5KS5waXBlKFxyXG4gICAgICB0YXAoKHBlcm1pc3Npb25SZXM6IEdldFBlcm1pc3Npb25MaXN0UmVzdWx0RHRvKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gcGVybWlzc2lvblJlcztcclxuICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXAgPSBwZXJtaXNzaW9uUmVzLmdyb3Vwc1swXTtcclxuICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0gZ2V0UGVybWlzc2lvbnMocGVybWlzc2lvblJlcy5ncm91cHMpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpbml0TW9kYWwoKSB7XHJcbiAgICAvLyBUT0RPOiBSZWZhY3RvclxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0VGFiQ2hlY2tib3hTdGF0ZSgpO1xyXG4gICAgICB0aGlzLnNldEdyYW50Q2hlY2tib3hTdGF0ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBc3NpZ25lZENvdW50KGdyb3VwTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9ucy5yZWR1Y2UoXHJcbiAgICAgIChhY2MsIHZhbCkgPT4gKHZhbC5ncm91cE5hbWUgPT09IGdyb3VwTmFtZSAmJiB2YWwuaXNHcmFudGVkID8gYWNjICsgMSA6IGFjYyksXHJcbiAgICAgIDAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2hvdWxkRmV0Y2hBcHBDb25maWcoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuY29uZmlnU3RhdGUuZ2V0T25lKCdjdXJyZW50VXNlcicpIGFzIEN1cnJlbnRVc2VyRHRvO1xyXG5cclxuICAgIGlmICh0aGlzLnByb3ZpZGVyTmFtZSA9PT0gJ1InKSByZXR1cm4gY3VycmVudFVzZXIucm9sZXMuc29tZShyb2xlID0+IHJvbGUgPT09IHRoaXMucHJvdmlkZXJLZXkpO1xyXG5cclxuICAgIGlmICh0aGlzLnByb3ZpZGVyTmFtZSA9PT0gJ1UnKSByZXR1cm4gY3VycmVudFVzZXIuaWQgPT09IHRoaXMucHJvdmlkZXJLZXk7XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZmluZE1hcmdpbihwZXJtaXNzaW9uczogUGVybWlzc2lvbkdyYW50SW5mb0R0b1tdLCBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uR3JhbnRJbmZvRHRvKSB7XHJcbiAgY29uc3QgcGFyZW50UGVybWlzc2lvbiA9IHBlcm1pc3Npb25zLmZpbmQocGVyID0+IHBlci5uYW1lID09PSBwZXJtaXNzaW9uLnBhcmVudE5hbWUpO1xyXG5cclxuICBpZiAocGFyZW50UGVybWlzc2lvbiAmJiBwYXJlbnRQZXJtaXNzaW9uLnBhcmVudE5hbWUpIHtcclxuICAgIGxldCBtYXJnaW4gPSAyMDtcclxuICAgIHJldHVybiAobWFyZ2luICs9IGZpbmRNYXJnaW4ocGVybWlzc2lvbnMsIHBhcmVudFBlcm1pc3Npb24pKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBwYXJlbnRQZXJtaXNzaW9uID8gMjAgOiAwO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRQZXJtaXNzaW9ucyhncm91cHM6IFBlcm1pc3Npb25Hcm91cER0b1tdKTogUGVybWlzc2lvbldpdGhHcm91cE5hbWVbXSB7XHJcbiAgcmV0dXJuIGdyb3Vwcy5yZWR1Y2UoXHJcbiAgICAoYWNjLCB2YWwpID0+IFsuLi5hY2MsIC4uLnZhbC5wZXJtaXNzaW9ucy5tYXAocCA9PiAoeyAuLi5wLCBncm91cE5hbWU6IHZhbC5uYW1lIH0pKV0sXHJcbiAgICBbXSxcclxuICApO1xyXG59XHJcbiIsIjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCIgW2J1c3ldPVwibW9kYWxCdXN5XCIgW29wdGlvbnNdPVwieyBzaXplOiAnbGcnIH1cIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5lbnRpdHlEaXNwbGF5TmFtZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICAgIDxoND5cclxuICAgICAgICB7eyAnQWJwUGVybWlzc2lvbk1hbmFnZW1lbnQ6OlBlcm1pc3Npb25zJyB8IGFicExvY2FsaXphdGlvbiB9fSAtXHJcbiAgICAgICAge3sgZGF0YS5lbnRpdHlEaXNwbGF5TmFtZSB9fVxyXG4gICAgICA8L2g0PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItMlwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgI3NlbGVjdEFsbEluQWxsVGFic1JlZlxyXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgIGlkPVwic2VsZWN0LWFsbC1pbi1hbGwtdGFic1wiXHJcbiAgICAgICAgICBuYW1lPVwic2VsZWN0LWFsbC1pbi1hbGwtdGFic1wiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RBbGxUYWJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tTZWxlY3RBbGwoKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0LWFsbC1pbi1hbGwtdGFic1wiPnt7XHJcbiAgICAgICAgICAnQWJwUGVybWlzc2lvbk1hbmFnZW1lbnQ6OlNlbGVjdEFsbEluQWxsVGFicycgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGhyIGNsYXNzPVwibXQtMiBtYi0yXCIgLz5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1zY3JvbGwgY29sLW1kLTRcIj5cclxuICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtcGlsbHMgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBkYXRhLmdyb3VwczsgdHJhY2tCeTogdHJhY2tCeUZuXCIgY2xhc3M9XCJuYXYtaXRlbVwiPlxyXG4gICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInsgYXNzaWduZWRDb3VudDogZ2V0QXNzaWduZWRDb3VudChncm91cC5uYW1lKSB9IGFzIGNvdW50XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkR3JvdXA/Lm5hbWUgPT09IGdyb3VwPy5uYW1lXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNoYW5nZUdyb3VwKGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuZm9udC13ZWlnaHQtYm9sZF09XCJjb3VudC5hc3NpZ25lZENvdW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGdyb3VwPy5kaXNwbGF5TmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8c3Bhbj4oe3sgY291bnQuYXNzaWduZWRDb3VudCB9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCBvdmVyZmxvdy1zY3JvbGxcIj5cclxuICAgICAgICAgIDxoND57eyBzZWxlY3RlZEdyb3VwPy5kaXNwbGF5TmFtZSB9fTwvaDQ+XHJcbiAgICAgICAgICA8aHIgY2xhc3M9XCJtdC0yIG1iLTNcIiAvPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBzLTEgcHQtMVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAjc2VsZWN0QWxsSW5UaGlzVGFic1JlZlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbC1pbi10aGlzLXRhYnNcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdC1hbGwtaW4tdGhpcy10YWJzXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdFRoaXNUYWJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tTZWxlY3RUaGlzVGFiKClcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdC1hbGwtaW4tdGhpcy10YWJzXCI+e3tcclxuICAgICAgICAgICAgICAgICdBYnBQZXJtaXNzaW9uTWFuYWdlbWVudDo6U2VsZWN0QWxsSW5UaGlzVGFiJyB8IGFicExvY2FsaXphdGlvblxyXG4gICAgICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxociBjbGFzcz1cIm1iLTNcIiAvPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHBlcm1pc3Npb24gb2Ygc2VsZWN0ZWRHcm91cFBlcm1pc3Npb25zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInBlcm1pc3Npb24uc3R5bGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgI3Blcm1pc3Npb25DaGVja2JveFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWQocGVybWlzc2lvbi5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0Q2hlY2tlZChwZXJtaXNzaW9uLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cInBlcm1pc3Npb24ubmFtZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzR3JhbnRlZEJ5T3RoZXJQcm92aWRlck5hbWUocGVybWlzc2lvbi5ncmFudGVkUHJvdmlkZXJzKVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0NoZWNrYm94KHBlcm1pc3Npb24sIHBlcm1pc3Npb25DaGVja2JveC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIFthdHRyLmZvcl09XCJwZXJtaXNzaW9uLm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgPnt7IHBlcm1pc3Npb24uZGlzcGxheU5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZUJhZGdlc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm92aWRlciBvZiBwZXJtaXNzaW9uLmdyYW50ZWRQcm92aWRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1kYXJrXCJcclxuICAgICAgICAgICAgICAgICAgICA+e3sgcHJvdmlkZXIucHJvdmlkZXJOYW1lIH19OiB7eyBwcm92aWRlci5wcm92aWRlcktleSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICAgIHt7ICdBYnBJZGVudGl0eTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiAoY2xpY2spPVwic3VibWl0KClcIj57e1xyXG4gICAgICAgICdBYnBJZGVudGl0eTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgICAgfX08L2FicC1idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2FicC1tb2RhbD5cclxuIl19
@@ -1 +0,0 @@
1
- {"version":3,"file":"abp-ng.permission-management-proxy.js","sources":["../../../../packages/permission-management/proxy/src/lib/proxy/permissions.service.ts","../../../../packages/permission-management/proxy/src/abp-ng.permission-management-proxy.ts"],"sourcesContent":["import type { GetPermissionListResultDto, UpdatePermissionsDto } from './models';\r\nimport { RestService } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PermissionsService {\r\n apiName = 'AbpPermissionManagement';\r\n\r\n get = (providerName: string, providerKey: string) =>\r\n this.restService.request<any, GetPermissionListResultDto>({\r\n method: 'GET',\r\n url: '/api/permission-management/permissions',\r\n params: { providerName, providerKey },\r\n },\r\n { apiName: this.apiName });\r\n\r\n update = (providerName: string, providerKey: string, input: UpdatePermissionsDto) =>\r\n this.restService.request<any, void>({\r\n method: 'PUT',\r\n url: '/api/permission-management/permissions',\r\n params: { providerName, providerKey },\r\n body: input,\r\n },\r\n { apiName: this.apiName });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAOa,kBAAkB;IAoB7B,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QAnB5C,YAAO,GAAG,yBAAyB,CAAC;QAEpC,QAAG,GAAG,CAAC,YAAoB,EAAE,WAAmB,KAC9C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAkC;YACxD,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,wCAAwC;YAC7C,MAAM,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE;SACtC,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7B,WAAM,GAAG,CAAC,YAAoB,EAAE,WAAmB,EAAE,KAA2B,KAC9E,IAAI,CAAC,WAAW,CAAC,OAAO,CAAY;YAClC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,wCAAwC;YAC7C,MAAM,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE;YACrC,IAAI,EAAE,KAAK;SACZ,EACD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KAEmB;;gHApBrC,kBAAkB;oHAAlB,kBAAkB,cAFjB,MAAM;4FAEP,kBAAkB;kBAH9B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;ACND;;;;;;"}