{"version":3,"file":"c8y-ngx-components-user-roles.mjs","sources":["../../user-roles/inventory-role-selector/inventory-role-selector.component.ts","../../user-roles/roles-asset-tree/roles-asset-tree.component.ts","../../user-roles/roles-asset-tree/roles-asset-tree.component.html","../../user-roles/user-roles.module.ts","../../user-roles/c8y-ngx-components-user-roles.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, Injector, Input, Output } from '@angular/core';\nimport { UpgradeComponent } from '@angular/upgrade/static';\n\n@Directive({ selector: 'c8y-inventory-role-selector-upgraded' })\nexport class InventoryRoleSelector extends UpgradeComponent {\n  @Input() assignedRoles: any;\n  @Input() inheritedRoles: any;\n  @Input() inventoryRoles: any;\n  @Input() ownerAllowedRoles: any;\n  @Input() disableEditForExternalUsers: any;\n  @Output() onApply: EventEmitter<any>;\n\n  constructor(elementRef: ElementRef, injector: Injector) {\n    super('c8yInventoryRoleSelector', elementRef, injector);\n  }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Optional, Output } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { IconDirective, EmptyStateComponent, C8yTranslatePipe } from '@c8y/ngx-components';\n\nimport {\n  mergeWith,\n  map as _map,\n  filter,\n  flatten,\n  uniqBy,\n  identity,\n  property,\n  get,\n  reduce\n} from 'lodash-es';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { IIdentified } from '@c8y/client';\nimport {\n  Ng1RolesService,\n  Ng1UserInventoryRolesService\n} from '@c8y/ngx-components/upgrade/upgraded-services';\nimport { NgFor, NgStyle, NgIf, AsyncPipe, SlicePipe } from '@angular/common';\nimport { InventoryRoleSelector } from '../inventory-role-selector/inventory-role-selector.component';\n\n@Component({\n  selector: 'c8y-roles-asset-tree-upgraded',\n  templateUrl: './roles-asset-tree.component.html',\n  imports: [\n    NgFor,\n    NgStyle,\n    NgIf,\n    IconDirective,\n    InventoryRoleSelector,\n    EmptyStateComponent,\n    C8yTranslatePipe,\n    AsyncPipe,\n    SlicePipe\n  ]\n})\nexport class RolesAssetTreeComponent implements OnInit, OnChanges {\n  @Input() user;\n  @Input() searchFilter;\n  @Input() assignedRoles;\n  @Input() ownerAssignedRoles;\n  @Input() expandGroups;\n  @Input() pageSize;\n  @Input() paginationOffset;\n  @Input() disableEditForExternalUsers = false;\n  @Output() onChangeRoles = new EventEmitter();\n  @Output() onChangeItemCount = new EventEmitter();\n\n  rootGroups;\n  flatAssetTree;\n  inventoryRoles;\n  loadingAssetTree;\n  inheritedRoles;\n  ownerAllAssignedRoles;\n\n  noSubgroupTitle = gettext('No subgroups');\n  manySubgroupsTitle = gettext('Subgroups: {{ count }}');\n  oneSubgroupTitle = gettext('Subgroup: 1');\n  clickToOpenTitle = gettext('Click to fetch subgroups');\n  expandAriaLabel = gettext('Expand');\n  collapseAriaLabel = gettext('Collapse');\n\n  searchTermSubject = new BehaviorSubject<string>('');\n  flatTreeSubject = new BehaviorSubject<IIdentified[]>([]);\n\n  flatAssetTree$ = combineLatest([this.searchTermSubject, this.flatTreeSubject]).pipe(\n    map(([searchTerm, flatTree]) => {\n      return flatTree\n        .filter(group => group.name.toLowerCase().includes(searchTerm.toLowerCase()))\n        .filter(this.filterAsset.bind(this));\n    }),\n    tap(flatTree => {\n      this.onChangeItemCount.emit(flatTree.length);\n    })\n  );\n\n  constructor(\n    @Optional() public c8yUserInventoryRoles: Ng1UserInventoryRolesService,\n    @Optional() public c8yRoles: Ng1RolesService\n  ) {}\n\n  ngOnInit() {\n    this.loadInventoryRoles();\n  }\n\n  loadAssetTree() {\n    const onlyRootsUser = this.user.owner;\n    return this.c8yUserInventoryRoles.listRootGroups({ onlyRootsUser }).then(result => {\n      this.rootGroups = result;\n      this.updateTree();\n    });\n  }\n\n  updateTree() {\n    this.flatAssetTree = this.c8yUserInventoryRoles.flatTree(this.rootGroups);\n    this.setInheritedRoles();\n    this.flatTreeSubject.next(this.flatAssetTree);\n  }\n\n  loadChildren(mo) {\n    if (mo.isOpened) {\n      // eslint-disable-next-line no-underscore-dangle\n      mo._subGroups = [];\n      mo.isOpened = false;\n      this.updateTree();\n    } else {\n      this.c8yUserInventoryRoles.loadChildren(mo).then(_ => {\n        this.updateTree();\n      });\n      mo.isOpened = true;\n    }\n  }\n\n  loadInventoryRoles() {\n    this.c8yRoles.list({ pageSize: 1000 }).then(roles => {\n      this.inventoryRoles = roles;\n    });\n  }\n\n  ngOnChanges(changes) {\n    if (changes.searchFilter) {\n      this.searchTermSubject.next(this.searchFilter || '');\n    }\n    if (changes.user && !this.loadingAssetTree) {\n      this.loadingAssetTree = this.loadAssetTree();\n    }\n    if (changes.assignedRoles || changes.ownerAssignedRoles) {\n      this.loadingAssetTree.then(this.setInheritedRoles.bind(this));\n    }\n    if (changes.expandGroups && this.expandGroups) {\n      this.c8yUserInventoryRoles.expandAll(this.rootGroups, this.updateTree.bind(this));\n    }\n  }\n\n  setInheritedRoles() {\n    if (this.assignedRoles) {\n      this.inheritedRoles = this.getInventoryInheritedRoles(this.flatAssetTree, this.assignedRoles);\n    }\n    if (this.ownerAssignedRoles) {\n      const ownerInheritedRoles = this.getInventoryInheritedRoles(\n        this.flatAssetTree,\n        this.ownerAssignedRoles\n      );\n      this.ownerAllAssignedRoles = mergeWith(\n        ownerInheritedRoles,\n        this.ownerAssignedRoles,\n        (objValue, srcValue) => {\n          if (srcValue) {\n            if (objValue) {\n              return uniqBy(objValue.concat(srcValue.roles), 'id');\n            }\n            return srcValue.roles;\n          }\n          return objValue;\n        }\n      );\n    }\n  }\n\n  getInventoryInheritedRoles(flatTree, assignedRoles) {\n    return reduce(\n      flatTree,\n      (inheritedRoles, asset) => {\n        // eslint-disable-next-line no-underscore-dangle\n        let chain = asset._parentGroups;\n        chain = _map(chain, group => get(assignedRoles, group.id));\n        chain = filter(chain, identity);\n        chain = _map(chain, property('roles'));\n        chain = flatten(chain);\n        chain = uniqBy(chain, 'id');\n        inheritedRoles[asset.id] = chain;\n        return inheritedRoles;\n      },\n      {}\n    );\n  }\n\n  onApply(ev, managedObjectId) {\n    return this.onChangeRoles.emit({\n      managedObjectId: managedObjectId,\n      roles: ev.roles\n    });\n  }\n\n  filterAsset(asset) {\n    if (this.ownerAllAssignedRoles) {\n      return get(this.ownerAllAssignedRoles, [asset.id, 'length']);\n    }\n    return true;\n  }\n}\n","<div class=\"c8y-list__group m-b-0 no-border-last\">\n  <div\n    class=\"c8y-list__item\"\n    *ngFor=\"\n      let asset of flatAssetTree$ | async | slice: paginationOffset:paginationOffset + pageSize\n    \"\n  >\n    <div\n      class=\"c8y-list__item__block\"\n      [title]=\"\n        (asset._subGroups && asset.isOpened\n          ? asset._subGroups.length\n            ? asset._subGroups.length > 1\n              ? manySubgroupsTitle\n              : oneSubgroupTitle\n            : noSubgroupTitle\n          : clickToOpenTitle\n        ) | translate: { count: asset._subGroups?.length }\n      \"\n    >\n      <div [ngStyle]=\"{ 'padding-left': asset._depth * 8 + 'px' }\"></div>\n      <div class=\"c8y-list__item__icon m-t-4 p-l-0\">\n        <button\n          class=\"btn-clean\"\n          [attr.aria-label]=\"(!asset.isOpened ? expandAriaLabel : collapseAriaLabel) | translate\"\n          type=\"button\"\n          (click)=\"loadChildren(asset)\"\n        >\n          <i\n            class=\"c8y-icon-duocolor\"\n            c8yIcon=\"c8y-group\"\n            *ngIf=\"!asset.isOpened\"\n          ></i>\n          <i\n            class=\"c8y-icon-duocolor\"\n            c8yIcon=\"c8y-group-open\"\n            *ngIf=\"asset.isOpened\"\n          ></i>\n        </button>\n      </div>\n      <div class=\"c8y-list__item__body\">\n        <div class=\"d-flex a-i-center\">\n          <div class=\"col-sm-7 p-l-0 col-xs-12\">\n            <button\n              class=\"btn-clean\"\n              type=\"button\"\n              (click)=\"loadChildren(asset)\"\n            >\n              <span\n                class=\"text-truncate\"\n                [ngStyle]=\"{ cursor: 'pointer' }\"\n                title=\"{{ asset.name }}\"\n              >\n                {{ asset.name }}\n              </span>\n            </button>\n          </div>\n          <div class=\"p-t-8 col-xs-12 visible-xs\"></div>\n          <div class=\"col-sm-5 p-l-0 col-xs-12 p-r-0\">\n            <div class=\"d-flex\">\n              <div class=\"flex-grow form-group-sm max-width-100\">\n                <c8y-inventory-role-selector-upgraded\n                  [ownerAllowedRoles]=\"\n                    ownerAllAssignedRoles ? ownerAllAssignedRoles[asset.id] : undefined\n                  \"\n                  [inheritedRoles]=\"inheritedRoles ? inheritedRoles[asset.id] : undefined\"\n                  [assignedRoles]=\"assignedRoles ? assignedRoles[asset.id] : undefined\"\n                  [inventoryRoles]=\"inventoryRoles\"\n                  [disableEditForExternalUsers]=\"disableEditForExternalUsers\"\n                  (onApply)=\"onApply($event, asset.id)\"\n                  (click)=\"$event.stopPropagation()\"\n                ></c8y-inventory-role-selector-upgraded>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <c8y-ui-empty-state\n    [icon]=\"'search'\"\n    [title]=\"'No matching group found among the expanded groups.' | translate\"\n    [subtitle]=\"'Try to expand more groups or to refine your search term.' | translate\"\n    *ngIf=\"searchFilter && !(flatAssetTree$ | async).length\"\n    [horizontal]=\"false\"\n  ></c8y-ui-empty-state>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { InventoryRoleSelector } from './inventory-role-selector/inventory-role-selector.component';\nimport { RolesAssetTreeComponent } from './roles-asset-tree/roles-asset-tree.component';\n\n@NgModule({\n  imports: [CoreModule, InventoryRoleSelector, RolesAssetTreeComponent]\n})\nexport class UserRolesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_map"],"mappings":"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"}