{"ast":null,"code":"import _asyncToGenerator from \"/home/mleku/src/orly.dev/next/signer/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport { inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IconButtonComponent, NavComponent, StorageService, getKindName } from '@common';\nimport * as i0 from \"@angular/core\";\nfunction PermissionsComponent_Conditional_4_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 2);\n    i0.ɵɵtext(1, \" Nothing configured so far.\\n\");\n    i0.ɵɵelementEnd();\n  }\n}\nfunction PermissionsComponent_Conditional_5_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r1 = i0.ɵɵgetCurrentView();\n    i0.ɵɵelementStart(0, \"button\", 5);\n    i0.ɵɵlistener(\"click\", function PermissionsComponent_Conditional_5_Template_button_click_0_listener() {\n      i0.ɵɵrestoreView(_r1);\n      const ctx_r1 = i0.ɵɵnextContext();\n      return i0.ɵɵresetView(ctx_r1.onClickRemoveAllPermissions());\n    });\n    i0.ɵɵtext(1, \" Remove All Permissions\\n\");\n    i0.ɵɵelementEnd();\n  }\n}\nfunction PermissionsComponent_For_7_For_4_Conditional_5_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 9);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const permission_r4 = i0.ɵɵnextContext().$implicit;\n    const ctx_r1 = i0.ɵɵnextContext(2);\n    i0.ɵɵproperty(\"title\", ctx_r1.getKindTooltip(permission_r4.kind));\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate1(\"(kind \", permission_r4.kind, \")\");\n  }\n}\nfunction PermissionsComponent_For_7_For_4_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r3 = i0.ɵɵgetCurrentView();\n    i0.ɵɵelementStart(0, \"div\", 7)(1, \"span\");\n    i0.ɵɵtext(2);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementStart(3, \"span\", 8);\n    i0.ɵɵtext(4);\n    i0.ɵɵelementEnd();\n    i0.ɵɵtemplate(5, PermissionsComponent_For_7_For_4_Conditional_5_Template, 2, 2, \"span\", 9);\n    i0.ɵɵelement(6, \"div\", 10);\n    i0.ɵɵelementStart(7, \"lib-icon-button\", 11);\n    i0.ɵɵlistener(\"click\", function PermissionsComponent_For_7_For_4_Template_lib_icon_button_click_7_listener() {\n      const permission_r4 = i0.ɵɵrestoreView(_r3).$implicit;\n      const ctx_r1 = i0.ɵɵnextContext(2);\n      return i0.ɵɵresetView(ctx_r1.onClickRevokePermission(permission_r4));\n    });\n    i0.ɵɵelementEnd()();\n  }\n  if (rf & 2) {\n    const permission_r4 = ctx.$implicit;\n    i0.ɵɵadvance();\n    i0.ɵɵclassProp(\"action-allow\", permission_r4.methodPolicy === \"allow\")(\"action-deny\", permission_r4.methodPolicy === \"deny\");\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate(permission_r4.methodPolicy);\n    i0.ɵɵadvance(2);\n    i0.ɵɵtextInterpolate(permission_r4.method);\n    i0.ɵɵadvance();\n    i0.ɵɵconditional(typeof permission_r4.kind !== \"undefined\" ? 5 : -1);\n  }\n}\nfunction PermissionsComponent_For_7_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 4)(1, \"span\", 6);\n    i0.ɵɵtext(2);\n    i0.ɵɵelementEnd();\n    i0.ɵɵrepeaterCreate(3, PermissionsComponent_For_7_For_4_Template, 8, 7, \"div\", 7, i0.ɵɵrepeaterTrackByIdentity);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const hostPermissions_r5 = ctx.$implicit;\n    i0.ɵɵadvance(2);\n    i0.ɵɵtextInterpolate1(\" \", hostPermissions_r5.host, \" \");\n    i0.ɵɵadvance();\n    i0.ɵɵrepeater(hostPermissions_r5.permissions);\n  }\n}\nexport let PermissionsComponent = /*#__PURE__*/(() => {\n  class PermissionsComponent extends NavComponent {\n    identity;\n    hostsPermissions = [];\n    #activatedRoute = inject(ActivatedRoute);\n    #storage = inject(StorageService);\n    ngOnInit() {\n      const selectedIdentityId = this.#activatedRoute.parent?.snapshot.params['id'];\n      if (!selectedIdentityId) {\n        return;\n      }\n      this.#initialize(selectedIdentityId);\n    }\n    onClickRevokePermission(permission) {\n      var _this = this;\n      return _asyncToGenerator(function* () {\n        yield _this.#storage.deletePermission(permission.id);\n        _this.#buildHostsPermissions(_this.identity?.id);\n      })();\n    }\n    onClickRemoveAllPermissions() {\n      var _this2 = this;\n      return _asyncToGenerator(function* () {\n        const allPermissions = _this2.hostsPermissions.flatMap(hp => hp.permissions);\n        for (const permission of allPermissions) {\n          yield _this2.#storage.deletePermission(permission.id);\n        }\n        _this2.#buildHostsPermissions(_this2.identity?.id);\n      })();\n    }\n    #initialize(identityId) {\n      this.identity = this.#storage.getBrowserSessionHandler().browserSessionData?.identities.find(x => x.id === identityId);\n      if (!this.identity) {\n        return;\n      }\n      this.#buildHostsPermissions(identityId);\n    }\n    #buildHostsPermissions(identityId) {\n      if (!identityId) {\n        return;\n      }\n      this.hostsPermissions = [];\n      const hostPermissions = (this.#storage.getBrowserSessionHandler().browserSessionData?.permissions ?? []).filter(x => x.identityId === identityId).sortBy(x => x.host).groupBy(x => x.host, y => y);\n      hostPermissions.forEach((permissions, host) => {\n        this.hostsPermissions.push({\n          host: host,\n          permissions: permissions.sortBy(x => x.method)\n        });\n      });\n    }\n    getKindTooltip(kind) {\n      return getKindName(kind);\n    }\n    static ɵfac = /*@__PURE__*/(() => {\n      let ɵPermissionsComponent_BaseFactory;\n      return function PermissionsComponent_Factory(__ngFactoryType__) {\n        return (ɵPermissionsComponent_BaseFactory || (ɵPermissionsComponent_BaseFactory = i0.ɵɵgetInheritedFactory(PermissionsComponent)))(__ngFactoryType__ || PermissionsComponent);\n      };\n    })();\n    static ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n      type: PermissionsComponent,\n      selectors: [[\"app-permissions\"]],\n      features: [i0.ɵɵInheritDefinitionFeature],\n      decls: 8,\n      vars: 1,\n      consts: [[1, \"header-pane\"], [\"icon\", \"chevron-left\", 3, \"click\"], [1, \"text-muted\", 2, \"font-size\", \"12px\"], [1, \"btn\", \"btn-danger\", \"btn-sm\", \"remove-all-btn\"], [1, \"permissions-card\"], [1, \"btn\", \"btn-danger\", \"btn-sm\", \"remove-all-btn\", 3, \"click\"], [2, \"margin-bottom\", \"4px\", \"font-weight\", \"500\"], [1, \"permission\"], [1, \"text-muted\"], [3, \"title\"], [1, \"sam-flex-grow\"], [\"icon\", \"trash\", \"title\", \"Revoke permission\", 3, \"click\"]],\n      template: function PermissionsComponent_Template(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵelementStart(0, \"div\", 0)(1, \"lib-icon-button\", 1);\n          i0.ɵɵlistener(\"click\", function PermissionsComponent_Template_lib_icon_button_click_1_listener() {\n            return ctx.navigateBack();\n          });\n          i0.ɵɵelementEnd();\n          i0.ɵɵelementStart(2, \"span\");\n          i0.ɵɵtext(3, \"Permissions\");\n          i0.ɵɵelementEnd()();\n          i0.ɵɵtemplate(4, PermissionsComponent_Conditional_4_Template, 2, 0, \"span\", 2)(5, PermissionsComponent_Conditional_5_Template, 2, 0, \"button\", 3);\n          i0.ɵɵrepeaterCreate(6, PermissionsComponent_For_7_Template, 5, 1, \"div\", 4, i0.ɵɵrepeaterTrackByIdentity);\n        }\n        if (rf & 2) {\n          i0.ɵɵadvance(4);\n          i0.ɵɵconditional(ctx.hostsPermissions.length === 0 ? 4 : 5);\n          i0.ɵɵadvance(2);\n          i0.ɵɵrepeater(ctx.hostsPermissions);\n        }\n      },\n      dependencies: [IconButtonComponent],\n      styles: [\"[_nghost-%COMP%] {\\n  height: 100%;\\n  overflow-y: auto;\\n  display: flex;\\n  flex-direction: column;\\n  padding-left: var(--size);\\n  padding-right: var(--size);\\n}\\n[_nghost-%COMP%]   .header-pane[_ngcontent-%COMP%] {\\n  display: flex;\\n  flex-direction: row;\\n  column-gap: var(--size-h);\\n  align-items: center;\\n  padding-bottom: var(--size);\\n  background-color: var(--background);\\n  position: sticky;\\n  top: 0;\\n}\\n[_nghost-%COMP%]   .remove-all-btn[_ngcontent-%COMP%] {\\n  margin-bottom: var(--size);\\n}\\n[_nghost-%COMP%]   .permissions-card[_ngcontent-%COMP%] {\\n  background: var(--background-light);\\n  border-radius: 8px;\\n  padding: calc(var(--size) / 2) var(--size);\\n  display: flex;\\n  flex-direction: column;\\n  margin-bottom: 4px;\\n}\\n[_nghost-%COMP%]   .permissions-card[_ngcontent-%COMP%]   .permission[_ngcontent-%COMP%] {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  column-gap: var(--size);\\n  font-size: 12px;\\n  margin-left: -8px;\\n  padding-left: 8px;\\n  margin-right: -8px;\\n  padding-right: 8px;\\n  border-radius: 4px;\\n}\\n[_nghost-%COMP%]   .permissions-card[_ngcontent-%COMP%]   .permission[_ngcontent-%COMP%]:hover {\\n  background: var(--background-light-hover);\\n}\\n[_nghost-%COMP%]   .permissions-card[_ngcontent-%COMP%]   .permission[_ngcontent-%COMP%]   .action-allow[_ngcontent-%COMP%] {\\n  background: var(--bs-green);\\n  border-radius: 4px;\\n  padding: 0 4px;\\n  width: 40px;\\n  text-align: center;\\n}\\n[_nghost-%COMP%]   .permissions-card[_ngcontent-%COMP%]   .permission[_ngcontent-%COMP%]   .action-deny[_ngcontent-%COMP%] {\\n  background: var(--bs-danger-border-subtle);\\n  border-radius: 4px;\\n  padding: 0 4px;\\n  width: 40px;\\n  text-align: center;\\n}\"]\n    });\n  }\n  return PermissionsComponent;\n})();","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]}