Your IP : 3.135.195.180


Current Path : /var/www/www-root/data/www/monolith-realty.ru/bitrix/js/ui/accessrights/dist/
Upload File :
Current File : /var/www/www-root/data/www/monolith-realty.ru/bitrix/js/ui/accessrights/dist/accessrights.bundle.js

/* eslint-disable */
this.BX = this.BX || {};
(function (exports,main_loader,ui_notification,ui_switcher,main_popup,main_core_events,ui_entitySelector,main_core) {
	'use strict';

	let _ = t => t,
	  _t,
	  _t2;
	const BX$1 = main_core.Reflection.namespace('BX');
	class Grid {
	  constructor(options) {
	    options = options || {};
	    this.options = options;
	    this.renderTo = options.renderTo;
	    this.buttonPanel = BX$1.UI.ButtonPanel || null;
	    this.layout = {
	      container: null
	    };
	    this.component = options.component ? options.component : null;
	    this.actionSave = options.actionSave || Grid.ACTION_SAVE;
	    this.actionDelete = options.actionDelete || Grid.ACTION_DELETE;
	    this.actionLoad = options.actionLoad || Grid.ACTION_LOAD;
	    this.mode = options.mode || Grid.MODE;
	    this.openPopupEvent = options.openPopupEvent ? options.openPopupEvent : null;
	    this.popupContainer = options.popupContainer ? options.popupContainer : null;
	    this.additionalSaveParams = options.additionalSaveParams ? options.additionalSaveParams : null;
	    this.loadParams = options.loadParams ? options.loadParams : null;
	    this.loader = null;
	    this.timer = null;
	    this.initData();
	    if (options.userGroups) {
	      this.userGroups = options.userGroups;
	    }
	    if (options.accessRights) {
	      this.accessRights = options.accessRights;
	    }
	    this.isRequested = false;
	    this.loadData();
	    this.bindEvents();
	  }
	  bindEvents() {
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights.ColumnItem:updateRole', this.updateRole.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights.ColumnItem:selectAccessItems', this.updateAccessVariationRight.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights.ColumnItem:accessOn', this.updateAccessRight.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights.ColumnItem:accessOff', this.updateAccessRight.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights.ColumnItem:update', this.adjustButtonPanel.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights.ColumnItem:addRole', this.addUserGroup.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights.ColumnItem:addRole', this.addRoleColumn.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights.ColumnItem:copyRole', this.addRoleColumn.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights.ColumnItem:copyRole', this.addUserGroup.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights.ColumnItem:removeRole', this.removeRoleColumn.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights.ColumnItem:removeRole', this.adjustButtonPanel.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.Main.SelectorV2:onGetEntityTypes', this.onGetEntityTypes.bind(this));
	  }
	  initData() {
	    this.accessRights = [];
	    this.userGroups = [];
	    this.accessRightsSections = [];
	    this.headSection = null;
	    this.members = [];
	    this.columns = [];
	  }
	  fireEventReset() {
	    main_core_events.EventEmitter.emit('BX.UI.AccessRights:reset', this);
	  }
	  fireEventRefresh() {
	    main_core_events.EventEmitter.emit('BX.UI.AccessRights:refresh', this);
	  }
	  getButtonPanel() {
	    return this.buttonPanel;
	  }
	  showNotification(title) {
	    BX$1.UI.Notification.Center.notify({
	      content: title,
	      position: 'top-right',
	      autoHideDelay: 3000
	    });
	  }
	  sendActionRequest() {
	    if (this.isRequested) {
	      return;
	    }
	    this.isRequested = true;
	    main_core_events.EventEmitter.emit(this, 'onBeforeSave', this);
	    this.timer = setTimeout(() => {
	      this.blockGrid();
	    }, 1000);
	    let needReload = false;
	    const dataToSave = [];
	    for (let i = 0; i < this.userGroups.length; i++) {
	      if (main_core.Text.toNumber(this.userGroups[i].id) === 0) {
	        needReload = true;
	      }
	      dataToSave.push({
	        accessCodes: this.userGroups[i].accessCodes,
	        id: this.userGroups[i].id,
	        title: this.userGroups[i].title,
	        type: this.userGroups[i].type,
	        accessRights: this.userGroups[i].accessRights
	      });
	    }
	    BX$1.ajax.runComponentAction(this.component, this.actionSave, {
	      mode: this.mode,
	      data: {
	        userGroups: dataToSave,
	        parameters: this.additionalSaveParams
	      }
	      // analyticsLabel: {
	      // 	viewMode: 'grid',
	      // 	filterState: 'closed'
	      // }
	    }).then(() => {
	      if (needReload) {
	        this.reloadGrid();
	      }
	      this.isRequested = false;
	      this.showNotification(main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_STTINGS_HAVE_BEEN_SAVED'));
	      this.unBlockGrid();
	      this.fireEventRefresh();
	      setTimeout(() => {
	        this.adjustButtonPanel();
	      });
	      clearTimeout(this.timer);
	      const waitContainer = this.buttonPanel.getContainer().querySelector('.ui-btn-wait');
	      main_core.Dom.removeClass(waitContainer, 'ui-btn-wait');
	    }, response => {
	      let errorMessage = 'Error message';
	      if (response.errors) {
	        errorMessage = response.errors[0].message;
	      }
	      this.isRequested = false;
	      this.showNotification(errorMessage);
	      this.unBlockGrid();
	      clearTimeout(this.timer);
	      const waitContainer = this.buttonPanel.getContainer().querySelector('.ui-btn-wait');
	      main_core.Dom.removeClass(waitContainer, 'ui-btn-wait');
	    });
	    main_core_events.EventEmitter.emit('BX.UI.AccessRights:preservation', this);
	  }
	  lock() {
	    main_core.Dom.addClass(this.getMainContainer(), '--lock');
	  }
	  unlock() {
	    main_core.Dom.removeClass(this.getMainContainer(), '--lock');
	  }
	  deleteActionRequest(roleId) {
	    if (this.isRequested) {
	      return;
	    }
	    this.isRequested = true;
	    this.timer = setTimeout(() => {
	      this.blockGrid();
	    }, 1000);
	    BX$1.ajax.runComponentAction(this.component, this.actionDelete, {
	      mode: this.mode,
	      data: {
	        roleId: roleId
	      }
	      // analyticsLabel: {
	      // 	viewMode: 'grid',
	      // 	filterState: 'closed'
	      // }
	    }).then(() => {
	      this.isRequested = false;
	      this.showNotification(main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_ROLE_REMOVE'));
	      this.unBlockGrid();
	      clearTimeout(this.timer);
	    }, response => {
	      let errorMessage = 'Error message';
	      if (response.errors) {
	        errorMessage = response.errors[0].message;
	      }
	      this.isRequested = false;
	      this.showNotification(errorMessage);
	      this.unBlockGrid();
	      clearTimeout(this.timer);
	    });
	  }
	  reloadGrid() {
	    this.initData();
	    BX$1.ajax.runComponentAction(this.component, this.actionLoad, {
	      mode: this.mode,
	      data: {
	        parameters: this.loadParams
	      }
	    }).then(response => {
	      if (response.data['ACCESS_RIGHTS'] && response.data['USER_GROUPS']) {
	        this.accessRights = response.data.ACCESS_RIGHTS;
	        this.userGroups = response.data.USER_GROUPS;
	        this.loadData();
	        this.draw();
	      }
	      this.unBlockGrid();
	    }, () => this.unBlockGrid);
	  }
	  blockGrid() {
	    const offsetTop = this.layout.container.getBoundingClientRect().top < 0 ? '0' : this.layout.container.getBoundingClientRect().top;
	    main_core.Dom.addClass(this.layout.container, 'ui-access-rights-block');
	    main_core.Dom.style(this.layout.container, 'height', 'calc(100vh - ' + offsetTop + 'px)');
	    setTimeout(() => {
	      main_core.Dom.style(this.layout.container, 'height', 'calc(100vh - ' + offsetTop + 'px)');
	    });
	    this.getLoader().show();
	  }
	  unBlockGrid() {
	    main_core.Dom.removeClass(this.layout.container, 'ui-access-rights-block');
	    main_core.Dom.style(this.layout.container, 'height', null);
	    this.getLoader().hide();
	  }
	  getLoader() {
	    if (!this.loader) {
	      this.loader = new main_loader.Loader({
	        target: this.layout.container
	      });
	    }
	    return this.loader;
	  }
	  removeRoleColumn(param) {
	    this.headSection.removeColumn(param.data);
	    this.accessRightsSections.map(data => {
	      data.removeColumn(param.data);
	    });
	    const targetIndex = this.userGroups.indexOf(param.data.userGroup);
	    this.userGroups.splice(targetIndex, 1);
	    const roleId = param.data.userGroup.id;
	    if (roleId > 0) {
	      this.deleteActionRequest(roleId);
	    }
	  }
	  addRoleColumn(event) {
	    const [param] = event.getData();
	    if (!param) {
	      return;
	    }
	    const sections = this.accessRightsSections;
	    for (let i = 0; i < sections.length; i++) {
	      param.headSection = false;
	      param.newColumn = true;
	      sections[i].addColumn(param);
	      sections[i].scrollToRight(sections[i].getColumnsContainer().scrollWidth - sections[i].getColumnsContainer().offsetWidth, 'stop');
	    }
	    param.headSection = true;
	    param.newColumn = true;
	    this.headSection.addColumn(param);
	  }
	  addUserGroup(event) {
	    let [options] = event.getData();
	    options = options || {};
	    this.userGroups.push(options);
	  }
	  updateRole(event) {
	    const item = event.getData();
	    const index = this.userGroups.indexOf(item.userGroup);
	    if (index >= 0) {
	      this.userGroups[index].title = item.text;
	    }
	  }
	  adjustButtonPanel() {
	    const modifiedItems = this.getMainContainer().querySelectorAll('.ui-access-rights-column-item-changer-on');
	    const modifiedRoles = this.getMainContainer().querySelectorAll('.ui-access-rights-column-new');
	    const modifiedUsers = this.getMainContainer().querySelectorAll('.ui-access-rights-members-item-new');
	    const modifiedVariables = this.getMainContainer().querySelectorAll('.ui-tag-selector-container');
	    if (modifiedItems.length > 0 || modifiedRoles.length > 0 || modifiedUsers.length > 0 || modifiedVariables.length > 0) {
	      this.buttonPanel.show();
	    } else {
	      this.buttonPanel.hide();
	    }
	  }
	  updateAccessRight(event) {
	    const data = event.getData();
	    const userGroup = this.userGroups[this.userGroups.indexOf(data.userGroup)];
	    const accessId = data.access.id;
	    for (let i = 0; i < userGroup.accessRights.length; i++) {
	      const item = userGroup.accessRights[i];
	      if (item && item.id === accessId) {
	        item.value = item.value === '0' ? '1' : '0';
	        return;
	      }
	    }
	    userGroup.accessRights.push({
	      id: accessId,
	      value: data.switcher.isChecked() ? '1' : '0'
	    });
	  }
	  updateAccessVariationRight(event) {
	    const item = event.getData();
	    const userGroup = this.userGroups[this.userGroups.indexOf(item.userGroup)];
	    const accessId = item.access.id;
	    const deleteIds = [];
	    for (let i = 0; i < userGroup.accessRights.length; i++) {
	      const item = userGroup.accessRights[i];
	      if (item && item.id === accessId) {
	        deleteIds.push(i);
	      }
	    }
	    deleteIds.forEach(i => {
	      delete userGroup.accessRights[i];
	    });
	    const values = item.selectedValues || [];
	    values.forEach(value => {
	      userGroup.accessRights.push({
	        id: accessId,
	        value: value
	      });
	    });
	  }
	  loadData() {
	    this.accessRights.map((data, index) => {
	      data.id = index;
	      this.accessRightsSections.push(this.addSection(data));
	    });
	  }
	  getColumns() {
	    return this.columns;
	  }
	  getSections() {
	    return this.accessRightsSections;
	  }
	  getUserGroups() {
	    this.userGroups.forEach(item => {
	      if (item.accessCodes) {
	        for (const user in item.members) {
	          item.accessCodes[user] = item.members[user].type;
	        }
	      }
	    });
	    return this.userGroups;
	  }
	  getHeadSection() {
	    if (!this.headSection) {
	      this.headSection = new Section({
	        headSection: true,
	        userGroups: this.userGroups,
	        grid: this
	      });
	    }
	    return this.headSection;
	  }
	  addSection(options) {
	    options = options || {};
	    return new Section({
	      id: options.id,
	      hint: options.sectionHint,
	      title: options.sectionTitle,
	      rights: options.rights ? options.rights : [],
	      grid: this
	    });
	  }
	  getSectionNode() {
	    return main_core.Tag.render(_t || (_t = _`<div class='ui-access-rights-section'></div>`));
	  }
	  getMainContainer() {
	    if (!this.layout.container) {
	      this.layout.container = main_core.Tag.render(_t2 || (_t2 = _`<div class='ui-access-rights'></div>`));
	    }
	    return this.layout.container;
	  }
	  draw() {
	    const docFragmentSections = document.createDocumentFragment();
	    main_core.Dom.append(this.getHeadSection().render(), docFragmentSections);
	    this.getSections().map(data => {
	      main_core.Dom.append(data.render(), docFragmentSections);
	    });
	    this.layout.container = null;
	    main_core.Dom.append(docFragmentSections, this.getMainContainer());
	    this.renderTo.innerHTML = '';
	    main_core.Dom.append(this.getMainContainer(), this.renderTo);
	    this.afterRender();
	  }
	  afterRender() {
	    this.getHeadSection().adjustEars();
	    this.getSections().map(data => {
	      data.adjustEars();
	    });
	  }
	  onMemberSelect(params) {
	    const option = Grid.buildOption(params);
	    if (!option) {
	      return;
	    }
	    if (params.state === 'select') {
	      main_core_events.EventEmitter.emit('BX.UI.AccessRights:addToAccessCodes', option);
	    }
	  }
	  onMemberUnselect(params) {
	    const option = Grid.buildOption(params);
	    if (!option) {
	      return;
	    }
	    main_core_events.EventEmitter.emit('BX.UI.AccessRights:removeFromAccessCodes', option);
	  }
	  onGetEntityTypes() {
	    const controls = BX$1.Main.selectorManagerV2.controls;
	    const selectorInstance = controls[Object.keys(controls)[0]];
	    selectorInstance.entityTypes.USERGROUPS = {
	      options: {
	        enableSearch: 'Y',
	        searchById: 'Y',
	        addTab: 'Y',
	        returnItemUrl: selectorInstance.getOption('returnItemUrl') === 'N' ? 'N' : 'Y'
	      }
	    };
	  }
	  static buildOption(params) {
	    const controls = BX$1.Main.selectorManagerV2.controls;
	    const selectorInstance = controls[Object.keys(controls)[0]].selectorInstance;
	    const dataColumnAttribute = 'bx-data-column-id';
	    const node = selectorInstance.bindOptions.node;
	    if (!node.hasAttribute(dataColumnAttribute) || main_core.Type.isUndefined(params.item)) {
	      return false;
	    }
	    const columnId = node.getAttribute(dataColumnAttribute);
	    const accessItem = params.item.id;
	    const entityType = params.entityType;
	    const accessCodesResult = {};
	    accessCodesResult[accessItem] = entityType;
	    return {
	      accessCodes: accessCodesResult,
	      columnId: columnId,
	      item: params.item
	    };
	  }
	}
	Grid.ACTION_SAVE = 'save';
	Grid.ACTION_DELETE = 'delete';
	Grid.ACTION_LOAD = 'load';
	Grid.MODE = 'ajax';
	const namespace = main_core.Reflection.namespace('BX.UI');
	namespace.AccessRights = Grid;

	let _$1 = t => t,
	  _t$1;
	class Base {
	  constructor(options) {
	    this.currentValue = options.currentValue || null;
	    this.identificator = 'col-' + Math.random();
	    this.parentContainer = options.container;
	    this.grid = options.grid;
	    this.text = options.text;
	    this.userGroup = options.userGroup;
	    this.access = options.access;
	    this.bindEvents();
	  }
	  bindEvents() {}
	  render() {
	    return main_core.Tag.render(_t$1 || (_t$1 = _$1`<div></div>`));
	  }
	  getId() {
	    return this.identificator;
	  }
	}

	let _$2 = t => t,
	  _t$2;
	class Title extends Base {
	  render() {
	    const node = main_core.Tag.render(_t$2 || (_t$2 = _$2`
			<div 
				class='ui-access-rights-column-item-text'
				data-id='${0}'
			>
				${0}
			</div>
		`), this.getId(), main_core.Text.encode(this.text));
	    main_core.Event.bind(node, 'mouseenter', this.adjustPopupHelper.bind(this));
	    main_core.Event.bind(node, 'mouseleave', () => {
	      if (this.popupHelper) {
	        this.popupHelper.close();
	      }
	    });
	    return node;
	  }
	  adjustPopupHelper() {
	    const set = this.parentContainer.cloneNode(true);
	    main_core.Dom.style(set, 'position', 'absolute');
	    main_core.Dom.style(set, 'display', 'inline');
	    main_core.Dom.style(set, 'visibility', 'hidden');
	    main_core.Dom.style(set, 'height', '0');
	    main_core.Dom.append(set, document.body);
	    setTimeout(() => {
	      main_core.Dom.remove(set);
	    });
	    if (set.offsetWidth > this.parentContainer.offsetWidth) {
	      main_core.Dom.style(set, 'visibility', 'visible');
	      this.getPopupHelper().show();
	    }
	  }
	  getPopupHelper() {
	    if (!this.popupHelper) {
	      this.popupHelper = main_popup.PopupWindowManager.create(null, this.parentContainer, {
	        autoHide: true,
	        darkMode: true,
	        content: this.text,
	        maxWidth: this.parentContainer.offsetWidth,
	        offsetTop: -9,
	        offsetLeft: 5,
	        animation: 'fading-slide'
	      });
	    }
	    return this.popupHelper;
	  }
	}
	Title.TYPE = 'title';

	let _$3 = t => t,
	  _t$3;
	class Hint extends Base {
	  constructor(options) {
	    super(options);
	    this.hint = options.hint;
	    this.className = options.className;
	    this.hintNode = null;
	  }
	  render() {
	    if (!this.hintNode && this.hint) {
	      const hintManager = BX.UI.Hint.createInstance({
	        id: 'access-rights-ui-hint-' + this.getId(),
	        popupParameters: {
	          className: 'ui-access-rights-popup-pointer-events ui-hint-popup',
	          autoHide: true,
	          darkMode: true,
	          maxWidth: 280,
	          offsetTop: 0,
	          offsetLeft: 8,
	          angle: true,
	          animation: 'fading-slide'
	        }
	      });
	      this.hintNode = main_core.Tag.render(_t$3 || (_t$3 = _$3`<span class='${0}'></span>`), this.className);
	      this.hintNode.setAttribute(hintManager.attributeName, this.hint);
	      this.hintNode.setAttribute(hintManager.attributeHtmlName, true);
	      this.hintNode.setAttribute(hintManager.attributeInteractivityName, true);
	      hintManager.initNode(this.hintNode);
	    }
	    return this.hintNode;
	  }
	}

	let _$4 = t => t,
	  _t$4,
	  _t2$1,
	  _t3,
	  _t4,
	  _t5,
	  _t6,
	  _t7,
	  _t8,
	  _t9,
	  _t10,
	  _t11,
	  _t12,
	  _t13,
	  _t14,
	  _t15,
	  _t16,
	  _t17,
	  _t18,
	  _t19,
	  _t20;
	const BX$2 = main_core.Reflection.namespace('BX');
	class Member extends Base {
	  constructor(options) {
	    super(options);
	    this.openPopupEvent = options.openPopupEvent;
	    this.popupContainer = options.popupContainer;
	    this.accessCodes = options.accessCodes || [];
	  }
	  bindEvents() {
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:addToAccessCodes', this.addToAccessCodes.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:removeFromAccessCodes', this.removeFromAccessCodes.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:reset', this.resetNewMembers.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:refresh', this.resetNewMembers.bind(this));
	  }
	  getMember() {
	    if (!this.member) {
	      const members = this.userGroup.members || {};
	      const membersFragment = document.createDocumentFragment();
	      let counter = 0;
	      this.validateVariables();
	      Object.keys(members).reverse().forEach(item => {
	        counter++;
	        if (counter < 7) {
	          const user = members[item];
	          const userNode = main_core.Tag.render(_t$4 || (_t$4 = _$4`
							<div class='ui-access-rights-members-item'></div>
						`));
	          if (user.new) {
	            main_core.Dom.addClass(userNode, 'ui-access-rights-members-item-new');
	          }
	          if (user.avatar) {
	            const userAvatar = main_core.Tag.render(_t2$1 || (_t2$1 = _$4`<a class='ui-access-rights-members-item-avatar' title="${0}"></a>`), main_core.Text.encode(user.name));
	            main_core.Dom.style(userAvatar, 'backgroundImage', 'url(\'' + encodeURI(user.avatar) + '\')');
	            main_core.Dom.style(userAvatar, 'backgroundSize', 'cover');
	            main_core.Dom.append(userAvatar, userNode);
	          } else {
	            let avatarClass = 'ui-icon-common-user';
	            if (user.type === 'groups') {
	              avatarClass = 'ui-icon-common-user-group';
	            } else if (user.type === 'sonetgroups') {
	              avatarClass = 'ui-icon-common-company';
	            } else if (user.type === 'usergroups') {
	              avatarClass = 'ui-icon-common-user-group';
	            }
	            const emptyAvatar = main_core.Tag.render(_t3 || (_t3 = _$4`<a class='ui-icon ui-icon-xs' title="${0}"><i></i></a>`), main_core.Text.encode(user.name));
	            main_core.Dom.addClass(emptyAvatar, avatarClass);
	            main_core.Dom.append(emptyAvatar, userNode);
	          }
	          main_core.Dom.append(userNode, membersFragment);
	        }
	      });
	      main_core.Dom.append(this.getAddUserToRole(), membersFragment);
	      this.member = main_core.Tag.render(_t4 || (_t4 = _$4`<div class='ui-access-rights-members'>${0}</div>`), membersFragment);
	      main_core.Event.bind(this.member, 'click', this.adjustPopupUserControl.bind(this));
	    }
	    return this.member;
	  }
	  render() {
	    return this.getMember();
	  }
	  resetNewMembers() {
	    const newMembers = this.getMember().querySelectorAll('.ui-access-rights-members-item-new');
	    newMembers.forEach(item => {
	      main_core.Dom.removeClass(item, 'ui-access-rights-members-item-new');
	    });
	  }
	  validateVariables() {
	    if (main_core.Type.isUndefined(this.userGroup.accessCodes)) {
	      this.userGroup.accessCodes = [];
	    }
	  }
	  updateMembers() {
	    main_core.Dom.remove(this.member);
	    this.member = null;
	    main_core.Dom.append(this.getMember(), this.parentContainer);
	    this.grid.getButtonPanel().show();
	  }
	  addToAccessCodes(event) {
	    const params = event.getData();
	    if (params.columnId !== this.getId()) {
	      return;
	    }
	    const firstKey = Object.keys(params.accessCodes)[0];
	    const type = params.accessCodes[firstKey].toUpperCase();
	    this.userGroup.accessCodes = Object.keys(this.accessCodes);
	    const item = params.item;
	    if (!main_core.Type.isUndefined(item) && Object.keys(item).length) {
	      this.userGroup.members[firstKey] = {
	        id: item.entityId,
	        name: item.name,
	        avatar: item.avatar,
	        url: '',
	        new: true,
	        type: type.toLowerCase()
	      };
	      this.updateMembers();
	    }
	    this.userGroup.accessCodes = [];
	    for (const key in this.userGroup.members) {
	      this.userGroup.accessCodes[key] = this.userGroup.members[key].type;
	    }
	  }
	  removeFromAccessCodes(event) {
	    const params = event.data;
	    if (params.columnId !== this.identificator) {
	      return;
	    }
	    const firstKey = Object.keys(params.accessCodes)[0];
	    delete this.userGroup.members[firstKey];
	    this.updateMembers();
	    this.userGroup.accessCodes = [];
	    for (const key in this.userGroup.members) {
	      this.userGroup.accessCodes[key] = this.userGroup.members[key].type;
	    }
	  }
	  adjustPopupUserControl() {
	    const users = [];
	    const groups = [];
	    const departments = [];
	    const sonetgroups = [];
	    for (const item in this.userGroup.members) {
	      this.userGroup.members[item].key = item;
	      if (this.userGroup.members[item].type === 'users') {
	        users.push(this.userGroup.members[item]);
	      } else if (this.userGroup.members[item].type === 'groups') {
	        groups.push(this.userGroup.members[item]);
	      } else if (this.userGroup.members[item].type === 'usergroups') {
	        groups.push(this.userGroup.members[item]);
	      } else if (this.userGroup.members[item].type === 'departments') {
	        departments.push(this.userGroup.members[item]);
	      } else if (this.userGroup.members[item].type === 'sonetgroups') {
	        sonetgroups.push(this.userGroup.members[item]);
	      }
	    }
	    const counterUsers = [];
	    for (const key in this.userGroup.members) {
	      counterUsers.push(this.userGroup.members[key]);
	    }
	    if (counterUsers.length === 0) {
	      this.showUserSelectorPopup();
	      return;
	    }
	    this.getUserPopup(users, groups, departments, sonetgroups).show();
	  }
	  getAddUserToRole() {
	    if (!this.addUserToRole) {
	      this.addUserToRole = main_core.Tag.render(_t5 || (_t5 = _$4`
				<span 
					class='ui-access-rights-members-item ui-access-rights-members-item-add'
					bx-data-column-id='${0}'
				>
				</span>
			`), this.getId());
	    }
	    return this.addUserToRole;
	  }
	  getUserPopup(users, groups, departments, sonetgroups) {
	    if (!this.popupUsers) {
	      users = users || [];
	      groups = groups || [];
	      departments = departments || [];
	      sonetgroups = sonetgroups || [];
	      const content = main_core.Tag.render(_t6 || (_t6 = _$4`<div class='ui-access-rights-popup-toggler'></div>`));
	      const contentTitle = main_core.Tag.render(_t7 || (_t7 = _$4`<div class='ui-access-rights-popup-toggler-title'></div>`));
	      const onTitleClick = event => {
	        const node = event.target;
	        activate(node);
	        adjustSlicker(node);
	      };
	      if (groups.length > 0) {
	        const groupTitleItem = main_core.Tag.render(_t8 || (_t8 = _$4`
					<div 
						class='ui-access-rights-popup-toggler-title-item ui-access-rights-popup-toggler-title-item-active'
						data-role='ui-access-rights-popup-toggler-content-groups'
					>
						${0}
					</div>
				`), main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_USER_GROUPS'));
	        main_core.Event.bind(groupTitleItem, 'click', onTitleClick.bind(this));
	        main_core.Dom.append(groupTitleItem, contentTitle);
	      }
	      if (departments.length > 0) {
	        const groupTitleItem = main_core.Tag.render(_t9 || (_t9 = _$4`
					<div 
						class='ui-access-rights-popup-toggler-title-item'
						data-role='ui-access-rights-popup-toggler-content-departments'
					>
						${0}
					</div>
				`), main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_DEPARTMENTS'));
	        main_core.Event.bind(groupTitleItem, 'click', onTitleClick.bind(this));
	        main_core.Dom.append(groupTitleItem, contentTitle);
	      }
	      if (users.length > 0) {
	        const groupTitleItem = main_core.Tag.render(_t10 || (_t10 = _$4`
					<div 
						class='ui-access-rights-popup-toggler-title-item'
						data-role='ui-access-rights-popup-toggler-content-users'
					>
						${0}
					</div>
				`), main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_STAFF'));
	        main_core.Event.bind(groupTitleItem, 'click', onTitleClick.bind(this));
	        main_core.Dom.append(groupTitleItem, contentTitle);
	      }
	      if (sonetgroups.length > 0) {
	        const groupTitleItem = main_core.Tag.render(_t11 || (_t11 = _$4`
					<div 
						class='ui-access-rights-popup-toggler-title-item'
						data-role='ui-access-rights-popup-toggler-content-sonetgroups'
					>
						${0}
					</div>
				`), main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_SOCNETGROUP'));
	        main_core.Event.bind(groupTitleItem, 'click', onTitleClick.bind(this));
	        main_core.Dom.append(groupTitleItem, contentTitle);
	      }
	      main_core.Dom.append(main_core.Tag.render(_t12 || (_t12 = _$4`<div class='ui-access-rights-popup-toggler-title-slicker'></div>`)), contentTitle);
	      main_core.Dom.append(contentTitle, content);
	      if (groups.length > 0) {
	        main_core.Dom.append(this.getUserPopupTogglerGroup(groups, 'groups'), content);
	      }
	      if (departments.length > 0) {
	        main_core.Dom.append(this.getUserPopupTogglerGroup(departments, 'departments'), content);
	      }
	      if (users.length > 0) {
	        main_core.Dom.append(this.getUserPopupTogglerGroup(users, 'users'), content);
	      }
	      if (sonetgroups.length > 0) {
	        main_core.Dom.append(this.getUserPopupTogglerGroup(sonetgroups, 'sonetgroups'), content);
	      }
	      const footer = main_core.Tag.render(_t13 || (_t13 = _$4`<div class='ui-access-rights-popup-toggler-footer'></div>`));
	      const footerLink = main_core.Tag.render(_t14 || (_t14 = _$4`
				<div class='ui-access-rights-popup-toggler-footer-link'>
					${0}
				</div>
			`), main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_ADD'));
	      main_core.Event.bind(footerLink, 'click', event => {
	        this.popupUsers.close();
	        this.showUserSelectorPopup();
	        event.preventDefault();
	      });
	      main_core.Dom.append(footerLink, footer);
	      main_core.Dom.append(footer, content);
	      const adjustSlicker = node => {
	        if (!main_core.Type.isDomNode(node)) {
	          node = content.querySelector('.ui-access-rights-popup-toggler-title-item-active');
	        }
	        const slicker = content.querySelector('.ui-access-rights-popup-toggler-title-slicker');
	        main_core.Dom.style(slicker, 'left', node.offsetLeft + 'px');
	        main_core.Dom.style(slicker, 'width', node.offsetWidth + 'px');
	      };
	      const activate = node => {
	        const titles = content.querySelectorAll('.ui-access-rights-popup-toggler-title-item');
	        const contents = content.querySelectorAll('.ui-access-rights-popup-toggler-content');
	        const target = content.querySelector('.' + node.getAttribute('data-role'));
	        titles.forEach(item => {
	          main_core.Dom.removeClass(item, 'ui-access-rights-popup-toggler-title-item-active');
	        });
	        contents.forEach(item => {
	          main_core.Dom.style(item, 'display', 'none');
	        });
	        main_core.Dom.style(target, 'display', 'block');
	        main_core.Dom.addClass(node, 'ui-access-rights-popup-toggler-title-item-active');
	      };
	      this.popupUsers = main_popup.PopupWindowManager.create(null, this.getAddUserToRole(), {
	        contentPadding: 10,
	        animation: 'fading-slide',
	        content,
	        padding: 0,
	        offsetTop: 5,
	        angle: {
	          position: 'top',
	          offset: 35
	        },
	        autoHide: true,
	        closeEsc: true,
	        events: {
	          onPopupShow: () => {
	            setTimeout(() => {
	              const firstActiveNode = content.querySelector('.ui-access-rights-popup-toggler-title-item');
	              if (!firstActiveNode) {
	                return;
	              }
	              main_core.Dom.addClass(firstActiveNode, 'ui-access-rights-popup-toggler-title-item-active');
	              adjustSlicker(firstActiveNode);
	            });
	          },
	          onPopupClose: () => {
	            this.popupUsers.destroy();
	            this.popupUsers = null;
	          }
	        }
	      });
	    }
	    return this.popupUsers;
	  }
	  getUserPopupTogglerGroup(array, type) {
	    const node = main_core.Tag.render(_t15 || (_t15 = _$4`<div class='ui-access-rights-popup-toggler-content'></div>`));
	    main_core.Dom.addClass(node, 'ui-access-rights-popup-toggler-content-' + type);
	    array.forEach(item => {
	      const toggler = main_core.Tag.render(_t16 || (_t16 = _$4`<div class='ui-access-rights-popup-toggler-content-item'></div>`));
	      if (item.avatar) {
	        const avatar = main_core.Tag.render(_t17 || (_t17 = _$4`
					<a 
						class='ui-access-rights-popup-toggler-content-item-userpic'
						title="${0}"
					></a>
				`), main_core.Text.encode(item.name));
	        main_core.Dom.style(avatar, 'backgroundImage', 'url(\'' + encodeURI(item.avatar) + '\')');
	        main_core.Dom.style(avatar, 'backgroundSize', 'cover');
	        main_core.Dom.append(avatar, toggler);
	      } else {
	        let iconClass = '';
	        if (type === 'users') {
	          iconClass = 'ui-icon-common-user';
	        } else if (type === 'groups') {
	          iconClass = 'ui-icon-common-user-group';
	        } else if (type === 'sonetgroups' || type === 'departments') {
	          iconClass = 'ui-icon-common-company';
	        }
	        const emptyAvatar = main_core.Tag.render(_t18 || (_t18 = _$4`<a class='ui-icon ui-icon-sm' title="${0}"><i></i></a>`), main_core.Text.encode(item.name));
	        main_core.Dom.addClass(emptyAvatar, iconClass);
	        main_core.Dom.style(emptyAvatar, 'margin', '5px 10px');
	        main_core.Dom.append(emptyAvatar, toggler);
	      }
	      main_core.Dom.append(main_core.Tag.render(_t19 || (_t19 = _$4`<div class='ui-access-rights-popup-toggler-content-item-name'>${0}</div>`), main_core.Text.encode(item.name)), toggler);
	      const removeButton = main_core.Tag.render(_t20 || (_t20 = _$4`
				<div class='ui-access-rights-popup-toggler-content-item-remove'>${0}</div>
			`), main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_REMOVE'));
	      main_core.Event.bind(removeButton, 'click', () => {
	        this.userGroup.accessCodes.splice(this.userGroup.accessCodes.indexOf(item.key), 1);
	        delete this.userGroup.accessCodes[item.key];
	        delete this.userGroup.members[item.key];
	        main_core.Dom.remove(toggler);
	        this.updateMembers();
	        this.adjustPopupUserControl();
	        this.grid.getButtonPanel().show();
	      });
	      main_core.Dom.append(removeButton, toggler);
	      main_core.Dom.append(toggler, node);
	    });
	    return node;
	  }
	  showUserSelectorPopup() {
	    var _BX$Main$selectorMana;
	    const selectorInstance = (_BX$Main$selectorMana = BX$2.Main.selectorManagerV2.controls[this.popupContainer]) == null ? void 0 : _BX$Main$selectorMana.selectorInstance;
	    if (selectorInstance) {
	      selectorInstance.itemsSelected = {};
	    }
	    BX$2.onCustomEvent(this.openPopupEvent, [{
	      id: this.popupContainer,
	      bindNode: this.getAddUserToRole()
	    }]);
	    BX$2.onCustomEvent('BX.Main.SelectorV2:reInitDialog', [{
	      selectorId: this.popupContainer,
	      selectedItems: this.userGroup.accessCodes
	    }]);
	  }
	}
	Member.TYPE = 'members';

	let _$5 = t => t,
	  _t$5,
	  _t2$2,
	  _t3$1,
	  _t4$1,
	  _t5$1,
	  _t6$1;
	class Role extends Base {
	  constructor(options) {
	    super(options);
	    this.column = options.column;
	  }
	  bindEvents() {
	    main_core.Event.bind(window, 'click', event => {
	      if (event.target === this.getRole() || event.target.closest('.ui-access-rights-role')) {
	        return;
	      }
	      this.updateRole();
	      this.offRoleEditMode();
	    });
	    main_core_events.EventEmitter.subscribe(this.grid, 'onBeforeSave', () => {
	      this.updateRole();
	      this.offRoleEditMode();
	    });
	  }
	  getRole() {
	    if (this.role) {
	      return this.role;
	    }
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:preservation', this.updateRole.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:preservation', this.offRoleEditMode.bind(this));
	    this.roleInput = main_core.Tag.render(_t$5 || (_t$5 = _$5`
				<input
					type='text'
					class='ui-access-rights-role-input'
					value='${0}'
					placeholder='${0}'
				/>
			`), main_core.Text.encode(this.text), main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_ROLE_NAME'));
	    main_core.Event.bind(this.roleInput, 'keydown', event => {
	      if (event.keyCode === 13) {
	        this.updateRole();
	        this.offRoleEditMode();
	      }
	    });
	    main_core.Event.bind(this.roleInput, 'input', () => {
	      this.grid.getButtonPanel().show();
	    });
	    this.roleValue = main_core.Tag.render(_t2$2 || (_t2$2 = _$5`<div class='ui-access-rights-role-value'>${0}</div>`), main_core.Text.encode(this.text));
	    const editControl = main_core.Tag.render(_t3$1 || (_t3$1 = _$5`<div class='ui-access-rights-role-edit'></div>`));
	    main_core.Event.bind(editControl, 'click', this.onRoleEditMode.bind(this));
	    const removeControl = main_core.Tag.render(_t4$1 || (_t4$1 = _$5`<div class='ui-access-rights-role-remove'></div>`));
	    main_core.Event.bind(removeControl, 'click', this.showPopupConfirm.bind(this));
	    const roleControlWrapper = main_core.Tag.render(_t5$1 || (_t5$1 = _$5`
				<div class='ui-access-rights-role-controls'>
					${0}
					${0}
				</div>
			`), editControl, removeControl);
	    this.role = main_core.Tag.render(_t6$1 || (_t6$1 = _$5`
				<div class='ui-access-rights-role'>
					${0}
					${0}
					${0}
				</div>
			`), this.roleInput, this.roleValue, roleControlWrapper);
	    return this.role;
	  }
	  render() {
	    return this.getRole();
	  }
	  onRoleEditMode() {
	    main_core.Dom.addClass(this.getRole(), 'ui-access-rights-role-edit-mode');
	    this.roleInput.focus();
	  }
	  showPopupConfirm() {
	    if (!this.popupConfirm) {
	      /**@ToDO check role*/
	      this.popupConfirm = main_popup.PopupWindowManager.create(null, this.getRole(), {
	        width: 250,
	        overlay: true,
	        contentPadding: 10,
	        content: main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_POPUP_REMOVE_THIS_ROLE'),
	        animation: 'fading-slide'
	      });
	      this.popupConfirm.setButtons([new BX.UI.Button({
	        text: main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_POPUP_REMOVE'),
	        className: 'ui-btn ui-btn-sm ui-btn-primary',
	        events: {
	          click: () => {
	            this.popupConfirm.close();
	            main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:removeRole', this);
	          }
	        }
	      }), new BX.UI.Button({
	        text: main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_POPUP_CANCEL'),
	        className: 'ui-btn ui-btn-sm ui-btn-link',
	        events: {
	          click: () => {
	            this.popupConfirm.close();
	          }
	        }
	      })]);
	    }
	    this.popupConfirm.show();
	  }
	  updateRole() {
	    if (this.roleValue.innerHTML === this.roleInput.value || this.roleInput.value === '') {
	      return;
	    }
	    this.text = this.roleInput.value;
	    this.userGroup = this.column.getUserGroup();
	    this.roleValue.innerText = this.roleInput.value;
	    main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:updateRole', this);
	  }
	  offRoleEditMode() {
	    main_core.Dom.removeClass(this.getRole(), 'ui-access-rights-role-edit-mode');
	  }
	}
	Role.TYPE = 'role';

	let _$6 = t => t,
	  _t$6;
	class Changer extends Base {
	  constructor(options) {
	    super(options);
	    this.isModify = false;
	  }
	  getChanger() {
	    if (!this.changer) {
	      this.changer = main_core.Tag.render(_t$6 || (_t$6 = _$6`<a class='ui-access-rights-column-item-changer'></a>`));
	    }
	    return this.changer;
	  }
	  bindEvents() {
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:reset', this.offChanger.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:refresh', this.refreshStatus.bind(this));
	  }
	  refreshStatus() {
	    main_core.Dom.removeClass(this.getChanger(), 'ui-access-rights-column-item-changer-on');
	  }
	  offChanger() {
	    if (this.isModify) {
	      setTimeout(() => {
	        this.refreshStatus();
	      });
	    }
	  }
	  adjustChanger() {
	    this.isModify = !this.isModify;
	    main_core.Dom.toggleClass(this.getChanger(), 'ui-access-rights-column-item-changer-on');
	  }
	}

	class Toggler extends Changer {
	  constructor(options) {
	    super(options);
	    this.switcher = new BX.UI.Switcher({
	      size: 'small',
	      checked: this.currentValue === '1',
	      handlers: {
	        checked: () => {
	          main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:accessOn', this);
	        },
	        unchecked: () => {
	          main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:accessOff', this);
	        },
	        toggled: () => {
	          this.adjustChanger();
	          main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:update', this);
	        }
	      }
	    });
	  }
	  offChanger() {
	    if (this.isModify) {
	      this.switcher.check(!this.switcher.isChecked());
	    }
	    super.offChanger();
	  }
	  render() {
	    main_core.Dom.append(this.switcher.getNode(), this.getChanger());
	    return this.getChanger();
	  }
	}
	Toggler.TYPE = 'toggler';

	let _$7 = t => t,
	  _t$7,
	  _t2$3,
	  _t3$2;
	class Controller extends Base {
	  render() {
	    if (!this.controller) {
	      this.controllerLink = main_core.Tag.render(_t$7 || (_t$7 = _$7`
				<div class='ui-access-rights-column-item-controller-link'>
					${0}
				</div>
			`), main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_CREATE_ROLE'));
	      this.controllerMenu = main_core.Tag.render(_t2$3 || (_t2$3 = _$7`
				<div class='ui-access-rights-column-item-controller-link'>
					${0}
				</div>
			`), main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_COPY_ROLE'));
	      main_core.Event.bind(this.controllerMenu, 'click', () => {
	        if (this.popupMenu) {
	          this.popupMenu.close();
	        } else if (this.grid.getUserGroups().length > 0) {
	          this.getPopupMenu(this.grid.getUserGroups()).show();
	        }
	      });
	      this.toggleControllerMenu();
	      this.controller = main_core.Tag.render(_t3$2 || (_t3$2 = _$7`
				<div class='ui-access-rights-column-item-controller'>
					${0}
					${0}
				</div>
			`), this.controllerLink, this.controllerMenu);
	      main_core.Event.bind(this.controllerLink, 'click', () => {
	        main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:addRole', [{
	          id: '0',
	          title: main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_ROLE_NAME'),
	          accessRights: [],
	          members: [],
	          accessCodes: [],
	          type: Role.TYPE
	        }]);
	        main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:update', this);
	        this.toggleControllerMenu();
	        this.grid.lock();
	      });
	      main_core_events.EventEmitter.subscribe('BX.UI.AccessRights.ColumnItem:removeRole', this.toggleControllerMenu.bind(this));
	    }
	    return this.controller;
	  }
	  getPopupMenu(options) {
	    if (!options) {
	      return;
	    }
	    const menuItems = [];
	    options.map(data => {
	      menuItems.push({
	        text: main_core.Text.encode(data.title),
	        onclick: () => {
	          const accessRightsCopy = Object.assign([], data.accessRights);
	          const accessCodesCopy = Object.assign([], data.accessCodes);
	          main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:copyRole', [{
	            id: '0',
	            title: main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_ROLE_NAME'),
	            accessRights: accessRightsCopy,
	            accessCodes: accessCodesCopy,
	            type: Role.TYPE,
	            members: data.members
	          }]);
	          main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:update', this);
	          this.popupMenu.destroy();
	        }
	      });
	    });
	    return this.popupMenu = new main_popup.Menu('ui_accessrights_copy_role_list', this.controllerMenu, menuItems, {
	      events: {
	        onPopupClose: () => {
	          this.popupMenu.destroy();
	          this.popupMenu = null;
	        }
	      }
	    });
	  }
	  toggleControllerMenu() {
	    if (this.grid.getUserGroups().length === 0) {
	      main_core.Dom.addClass(this.controllerMenu, 'ui-access-rights-column-item-controller-link--disabled');
	    } else {
	      main_core.Dom.removeClass(this.controllerMenu, 'ui-access-rights-column-item-controller-link--disabled');
	    }
	  }
	}

	let _$8 = t => t,
	  _t$8;
	class VariableSelector extends Changer {
	  constructor(options) {
	    super(options);
	    this.selectedValues = [this.currentValue];
	    this.variables = options.variables || [];
	  }
	  bindEvents() {
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:reset', this.reset.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:refresh', this.refresh.bind(this));
	  }
	  render() {
	    var _this$getSelected$tit, _this$getSelected;
	    const title = (_this$getSelected$tit = (_this$getSelected = this.getSelected()) == null ? void 0 : _this$getSelected.title) != null ? _this$getSelected$tit : main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_ADD');
	    const variablesValue = main_core.Tag.render(_t$8 || (_t$8 = _$8`
				<div class='ui-access-rights-column-item-text-link'>
					${0}
				</div>
			`), main_core.Text.encode(title));
	    main_core.Event.bind(variablesValue, 'click', this.showVariablesPopup.bind(this));
	    main_core.Dom.append(variablesValue, this.getChanger());
	    return this.getChanger();
	  }
	  refresh() {
	    if (this.isModify) {
	      this.currentValue = this.selectedValues[0];
	      this.reset();
	    }
	  }
	  reset() {
	    if (this.isModify) {
	      this.selectedValues = [this.currentValue];
	      this.getChanger().innerHTML = '';
	      this.adjustChanger();
	      this.render();
	    }
	  }
	  getSelected() {
	    const selected = this.variables.filter(variable => this.selectedValues.includes(variable.id));
	    return selected[0];
	  }
	  showVariablesPopup(event) {
	    const menuItems = [];
	    this.variables.map(data => {
	      menuItems.push({
	        id: data.id,
	        text: data.title,
	        onclick: this.select.bind(this)
	      });
	    });
	    main_popup.PopupMenu.show('ui-access-rights-column-item-popup-variables', event.target, menuItems, {
	      autoHide: true,
	      events: {
	        onPopupClose: () => {
	          main_popup.PopupMenu.destroy('ui-access-rights-column-item-popup-variables');
	        }
	      }
	    });
	  }
	  select(event, item) {
	    var _item$getMenuWindow;
	    this.selectedValues = [item.id];
	    (_item$getMenuWindow = item.getMenuWindow()) == null ? void 0 : _item$getMenuWindow.close();
	    this.getChanger().innerHTML = '';
	    this.render();
	    this.adjustChanger();
	    main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:selectAccessItems', this);
	    main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:update', this);
	  }
	}
	VariableSelector.TYPE = 'variables';

	let _$9 = t => t,
	  _t$9;
	class UserGroupTitle extends Title {
	  render() {
	    return main_core.Tag.render(_t$9 || (_t$9 = _$9`
			<div 
				class='ui-access-rights-column-item-text'
				data-id='${0}'
			>
				${0}
			</div>
		`), this.getId(), main_core.Text.encode(this.text));
	  }
	}
	UserGroupTitle.TYPE = 'userGroupTitle';

	let _$a = t => t,
	  _t$a,
	  _t2$4,
	  _t3$3;
	class Footer extends ui_entitySelector.DefaultFooter {
	  constructor(dialog, options) {
	    super(dialog, options);
	    this.selectAllButton = main_core.Tag.render(_t$a || (_t$a = _$a`<div class="ui-selector-footer-link ui-selector-search-footer-label--hide">${0}</div>`), main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_ALL_SELECT_LABEL'));
	    main_core.Event.bind(this.selectAllButton, 'click', this.selectAll.bind(this));
	    this.deselectAllButton = main_core.Tag.render(_t2$4 || (_t2$4 = _$a`<div class="ui-selector-footer-link ui-selector-search-footer-label--hide">${0}</div>`), main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_ALL_DESELECT_LABEL'));
	    main_core.Event.bind(this.deselectAllButton, 'click', this.deselectAll.bind(this));
	    this.getDialog().subscribe('Item:onSelect', this.onItemStatusChange.bind(this));
	    this.getDialog().subscribe('Item:onDeselect', this.onItemStatusChange.bind(this));
	  }
	  getContent() {
	    this.toggleSelectButtons();
	    return main_core.Tag.render(_t3$3 || (_t3$3 = _$a`
			<div class="ui-selector-search-footer-box">
				${0}
				${0}
			</div>
		`), this.selectAllButton, this.deselectAllButton);
	  }
	  toggleSelectButtons() {
	    if (this.getDialog().getSelectedItems().length === this.getDialog().getItems().length) {
	      if (main_core.Dom.hasClass(this.deselectAllButton, 'ui-selector-search-footer-label--hide')) {
	        main_core.Dom.addClass(this.selectAllButton, 'ui-selector-search-footer-label--hide');
	        main_core.Dom.removeClass(this.deselectAllButton, 'ui-selector-search-footer-label--hide');
	      }
	    } else if (main_core.Dom.hasClass(this.selectAllButton, 'ui-selector-search-footer-label--hide')) {
	      main_core.Dom.addClass(this.deselectAllButton, 'ui-selector-search-footer-label--hide');
	      main_core.Dom.removeClass(this.selectAllButton, 'ui-selector-search-footer-label--hide');
	    }
	  }
	  selectAll() {
	    if (this.getDialog().getSelectedItems().length === this.getDialog().getItems().length) {
	      return;
	    }
	    this.getDialog().getItems().forEach(item => {
	      item.select();
	    });
	  }
	  deselectAll() {
	    this.getDialog().getSelectedItems().forEach(item => {
	      item.deselect();
	    });
	  }
	  onItemStatusChange() {
	    this.toggleSelectButtons();
	  }
	}

	let _$b = t => t,
	  _t$b;
	class MultiSelector extends Changer {
	  constructor(options) {
	    var _options$enableSearch, _options$showAvatars, _options$compactView;
	    super(options);
	    this.variables = options.variables || [];
	    this.enableSearch = (_options$enableSearch = options.enableSearch) != null ? _options$enableSearch : false;
	    this.placeholder = options.placeholder || '';
	    this.hintTitle = options.hintTitle || '';
	    this.allSelectedCode = main_core.Text.toNumber(options.allSelectedCode || -1);
	    this.showAvatars = (_options$showAvatars = options.showAvatars) != null ? _options$showAvatars : true;
	    this.compactView = (_options$compactView = options.compactView) != null ? _options$compactView : false;
	    this.currentValue = main_core.Type.isArray(options.currentValue) ? options.currentValue : [];
	    this.currentValue = this.currentValue.map(value => main_core.Text.toNumber(value));
	    this.selectedValues = this.currentValue;
	    this.variables = this.variables.map(item => {
	      item.entityId = item.entityId || 'editor-right-item';
	      item.tabs = 'recents';
	      return item;
	    });
	    this.selector = this.createSelector();
	  }
	  bindEvents() {
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:reset', this.reset.bind(this));
	    main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:refresh', this.refresh.bind(this));
	  }
	  createSelector() {
	    return new ui_entitySelector.Dialog({
	      height: 300,
	      id: this.getId(),
	      context: 'editor-right-items',
	      enableSearch: this.enableSearch,
	      multiple: true,
	      dropdownMode: true,
	      compactView: this.compactView,
	      showAvatars: this.showAvatars,
	      selectedItems: this.getSelected(),
	      searchOptions: {
	        allowCreateItem: false
	      },
	      events: {
	        'Item:onSelect': this.setSelectedInputs.bind(this),
	        'Item:onDeselect': this.setSelectedInputs.bind(this)
	      },
	      entities: [{
	        id: 'editor-right-item'
	      }],
	      items: this.variables,
	      footer: Footer
	    });
	  }
	  render() {
	    let title = '';
	    if (this.includesSelected(this.allSelectedCode)) {
	      title = main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_ALL_ACCEPTED');
	    } else {
	      var _this$getSelected;
	      const titles = [];
	      (_this$getSelected = this.getSelected()) == null ? void 0 : _this$getSelected.forEach(item => {
	        titles.push(item.title);
	      });
	      if (titles.length > 0) {
	        const firstItem = titles[0];
	        title = titles.length - 1 > 0 ? main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_HAS_SELECTED_ITEMS', {
	          '#FIRST_ITEM_NAME#': firstItem.length > 10 ? firstItem.slice(0, 10) + '...' : firstItem,
	          '#COUNT_REST_ITEMS#': titles.length - 1
	        }) : firstItem;
	      } else {
	        title = main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_ADD');
	      }
	    }
	    let hint = '';
	    if (this.selector.getSelectedItems().length > 0) {
	      const hintTitle = main_core.Type.isStringFilled(this.hintTitle) ? this.hintTitle : main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_SELECTED_ITEMS_TITLE_MSGVER_1');
	      hint += '<p>' + hintTitle + '</p>';
	      hint += '<ul>';
	      this.selector.getSelectedItems().forEach(item => hint += '<li>' + main_core.Text.encode(item.getTitle()));
	      hint += '</ul>';
	    }
	    const variablesValue = main_core.Tag.render(_t$b || (_t$b = _$b`
				<div class='ui-access-rights-column-item-text-link' data-hint-html data-hint-no-icon data-hint="${0}">
					${0}
				</div>
			`), main_core.Text.encode(hint), main_core.Text.encode(title));
	    main_core.Event.bind(variablesValue, 'click', this.showSelector.bind(this));
	    main_core.Dom.append(variablesValue, this.getChanger());
	    BX.UI.Hint.init(this.getChanger());
	    return this.getChanger();
	  }
	  refresh() {
	    if (this.isModify) {
	      this.currentValue = this.selectedValues;
	      this.reset();
	    }
	  }
	  reset() {
	    if (this.isModify) {
	      this.selectedValues = this.currentValue;
	      this.selector = this.createSelector();
	      this.getChanger().innerHTML = '';
	      this.adjustChanger();
	      this.render();
	    }
	  }
	  getSelected() {
	    if (this.includesSelected(this.allSelectedCode)) {
	      return this.variables;
	    }
	    return this.variables.filter(variable => this.includesSelected(variable.id));
	  }
	  includesSelected(item) {
	    return this.selectedValues.includes(main_core.Text.toNumber(item));
	  }
	  showSelector(event) {
	    this.selector.show();
	  }
	  setSelectedInputs() {
	    const selected = this.selector.getSelectedItems();
	    this.selectedValues = [];
	    if (selected.length === this.variables.length) {
	      this.selectedValues.push(this.allSelectedCode);
	    } else {
	      selected.forEach(item => {
	        this.selectedValues.push(main_core.Text.toNumber(item.id));
	      });
	    }
	    this.getChanger().innerHTML = '';
	    if (!this.isModify) {
	      this.adjustChanger();
	    }
	    this.render();
	    main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:update', this);
	    main_core_events.EventEmitter.emit('BX.UI.AccessRights.ColumnItem:selectAccessItems', this);
	  }
	}
	MultiSelector.TYPE = 'multivariables';

	let _$c = t => t,
	  _t$c;
	class ColumnItem {
	  constructor(options) {
	    this.options = options;
	    this.type = options.type ? options.type : null;
	    this.hint = options.hint ? options.hint : null;
	    this.controller = options.controller ? options.controller : null;
	    this.column = options.column;
	  }
	  render() {
	    let item = null;
	    const container = main_core.Tag.render(_t$c || (_t$c = _$c`<div class='ui-access-rights-column-item'></div>`));
	    this.options.container = container;
	    if (this.type === Role.TYPE) {
	      item = new Role(this.options);
	      if (this.column.newColumn) {
	        setTimeout(() => {
	          item.onRoleEditMode();
	          item.roleInput.value = '';
	        });
	      }
	    } else if (this.type === Member.TYPE) {
	      item = new Member(this.options);
	    } else if (this.type === Title.TYPE) {
	      item = new Title(this.options);
	    } else if (this.type === VariableSelector.TYPE) {
	      item = new VariableSelector(this.options);
	    } else if (this.type === MultiSelector.TYPE) {
	      item = new MultiSelector(this.options);
	    } else if (this.type === Toggler.TYPE) {
	      item = new Toggler(this.options);
	    }
	    if (item) {
	      main_core.Dom.append(item.render(), container);
	    }
	    if (this.hint) {
	      const hintOptions = {
	        className: 'ui-access-rights-column-item-notify',
	        ...this.options
	      };
	      main_core.Dom.append(new Hint(hintOptions).render(), container);
	    }
	    if (this.type === UserGroupTitle.TYPE) {
	      main_core.Dom.append(new UserGroupTitle(this.options).render(), container);
	    }
	    if (this.controller) {
	      main_core.Dom.append(new Controller(this.options).render(), container);
	    }
	    return container;
	  }
	}
	const namespace$1 = main_core.Reflection.namespace('BX.UI.AccessRights');
	namespace$1.ColumnItem = ColumnItem;

	let _$d = t => t,
	  _t$d;
	class Column {
	  constructor(options) {
	    this.layout = {
	      container: null
	    };
	    this.grid = options.grid ? options.grid : null;
	    this.items = options.items ? options.items : [];
	    this.userGroup = options.userGroup ? options.userGroup : null;
	    this.accessCodes = options.accessCodes ? options.accessCodes : null;
	    this.section = options.section ? options.section : null;
	    this.headSection = options.headSection;
	    this.newColumn = options.newColumn ? options.newColumn : null;
	    this.openPopupEvent = options.grid.openPopupEvent ? options.grid.openPopupEvent : null;
	    this.popupContainer = options.grid.popupContainer ? options.grid.popupContainer : null;
	  }
	  getItem(options) {
	    options = options || {};
	    let param = {};
	    if (options.type === UserGroupTitle.TYPE) {
	      param = {
	        type: options.type,
	        text: options.title,
	        controller: options.controller
	      };
	    }
	    if (options.type === Title.TYPE) {
	      param = {
	        id: options.id,
	        type: options.type,
	        hint: options.hint,
	        text: options.title,
	        controller: options.controller
	      };
	    }
	    if (options.type === Toggler.TYPE) {
	      param = {
	        type: options.type,
	        access: options.access
	      };
	    }
	    if (options.type === VariableSelector.TYPE || options.type === MultiSelector.TYPE) {
	      param = {
	        type: options.type,
	        text: options.title,
	        variables: options.variables,
	        access: options.access
	      };
	    }
	    if (options.type === MultiSelector.TYPE) {
	      param.allSelectedCode = options.allSelectedCode;
	      param.enableSearch = options.enableSearch;
	      param.showAvatars = options.showAvatars;
	      param.compactView = options.compactView;
	      param.hintTitle = options.hintTitle;
	    }
	    if (options.type === Role.TYPE) {
	      param = {
	        type: options.type,
	        text: options.title
	      };
	    }
	    if (options.type === Member.TYPE) {
	      const accessCodes = [];
	      for (const item in options.members) {
	        accessCodes[item] = options.members[item].type;
	      }
	      param = {
	        type: options.type,
	        accessCodes: accessCodes
	      };
	    }
	    param.column = this;
	    param.userGroup = this.userGroup;
	    param.openPopupEvent = this.openPopupEvent;
	    param.popupContainer = this.popupContainer;
	    param.currentValue = null;
	    param.grid = this.grid;
	    if (options.type === VariableSelector.TYPE || options.type === MultiSelector.TYPE || options.type === Toggler.TYPE) {
	      var _param$userGroup$acce, _param$userGroup;
	      const accessId = param.access.id.toString();
	      const accessRights = (_param$userGroup$acce = (_param$userGroup = param.userGroup) == null ? void 0 : _param$userGroup.accessRights) != null ? _param$userGroup$acce : [];
	      for (let i = 0; i < accessRights.length; i++) {
	        if (accessId === accessRights[i].id.toString()) {
	          if (options.type === MultiSelector.TYPE) {
	            var _param$currentValue;
	            param.currentValue = (_param$currentValue = param.currentValue) != null ? _param$currentValue : [];
	            param.currentValue.push(accessRights[i].value);
	          } else {
	            param.currentValue = accessRights[i].value;
	          }
	        }
	      }
	    }
	    return new ColumnItem(param);
	  }
	  getUserGroup() {
	    return this.userGroup;
	  }
	  remove() {
	    if (main_core.Dom.hasClass(this.layout.container, 'ui-access-rights-column-new')) {
	      this.resetClassNew();
	    }
	    main_core.Dom.addClass(this.layout.container, 'ui-access-rights-column-remove');
	    main_core.Dom.style(this.layout.container, 'width', this.layout.container.offsetWidth + 'px');
	    main_core.Event.bind(this.layout.container, 'animationend', () => {
	      main_core.Dom.style(this.layout.container, 'minWidth', '0px');
	      main_core.Dom.style(this.layout.container, 'maxWidth', '0px');
	    });
	    setTimeout(() => {
	      main_core.Dom.remove(this.layout.container);
	    }, 500);
	  }
	  resetClassNew() {
	    main_core.Dom.removeClass(this.layout.container, 'ui-access-rights-column-new');
	  }
	  render() {
	    if (!this.layout.container) {
	      const itemsFragment = document.createDocumentFragment();
	      if (this.headSection) {
	        this.userGroup.type = Role.TYPE;
	        main_core.Dom.append(this.getItem(this.userGroup).render(), itemsFragment);
	        this.userGroup.type = Member.TYPE;
	        main_core.Dom.append(this.getItem(this.userGroup).render(), itemsFragment);
	      }
	      this.items.map(data => {
	        const item = this.getItem(data);
	        main_core.Dom.append(item.render(), itemsFragment);
	      });
	      this.layout.container = main_core.Tag.render(_t$d || (_t$d = _$d`<div class='ui-access-rights-column'></div>`));
	      if (this.newColumn) {
	        main_core.Dom.addClass('ui-access-rights-column-new', this.layout.container);
	      }
	      main_core_events.EventEmitter.subscribe('BX.UI.AccessRights:refresh', this.resetClassNew.bind(this));
	      main_core.Dom.append(itemsFragment, this.layout.container);
	      return this.layout.container;
	    }
	  }
	}
	const namespace$2 = main_core.Reflection.namespace('BX.UI.AccessRights');
	namespace$2.Column = Column;

	let _$e = t => t,
	  _t$e,
	  _t2$5,
	  _t3$4,
	  _t4$2,
	  _t5$2,
	  _t6$2,
	  _t7$1,
	  _t8$1;
	class Section {
	  constructor(options) {
	    var _options$id;
	    this.id = (_options$id = options.id) != null ? _options$id : null;
	    this.headSection = options.headSection ? options.headSection : null;
	    this.title = options.title;
	    this.hint = options.hint;
	    this.rights = options.rights ? options.rights : [];
	    this.userGroups = options.userGroups ? options.userGroups : [];
	    this.grid = options.grid ? options.grid : null;
	    this.layout = {
	      title: null,
	      headColumn: null,
	      columns: null,
	      content: null,
	      earLeft: null,
	      earRight: null
	    };
	    this.scroll = 0;
	    this.earTimer = null;
	    this.earLeftTimer = null;
	    this.earRightTimer = null;
	    this.columns = [];
	    this.bindEvents();
	  }
	  bindEvents() {
	    main_core_events.EventEmitter.subscribe(this.grid, 'AccessRights.Section:scroll', event => {
	      const [object] = event.getData();
	      if (this.title !== object.title) {
	        this.getColumnsContainer().scrollLeft = object.getScroll();
	      }
	      object.adjustEars();
	      main_popup.PopupMenu.destroy('ui-access-rights-column-item-popup-variables');
	    });
	    main_core.Event.bind(window, 'resize', this.adjustEars.bind(this));
	  }
	  getGrid() {
	    return this.grid;
	  }
	  addColumn(param) {
	    if (!param) {
	      return;
	    }
	    const options = Object.assign({}, param);
	    options.userGroup = param;
	    const column = this.getColumn(options);
	    main_core.Dom.append(column.render(), this.layout.columns);
	    this.columns.push(column);
	  }
	  getColumn(options) {
	    const controls = [];
	    this.rights.map(data => {
	      const isVariable = data.type === VariableSelector.TYPE || data.type === MultiSelector.TYPE;
	      controls.push({
	        type: data.type,
	        title: isVariable ? data.title : null,
	        hint: data.hint,
	        variables: isVariable ? data.variables : [],
	        enableSearch: isVariable ? data.enableSearch : null,
	        showAvatars: isVariable ? data.showAvatars : false,
	        compactView: isVariable ? data.compactView : false,
	        hintTitle: isVariable ? data.hintTitle : null,
	        allSelectedCode: isVariable ? data.allSelectedCode : null,
	        access: data
	      });
	    });
	    return new Column({
	      items: controls,
	      userGroup: options.userGroup ? options.userGroup : null,
	      section: this,
	      headSection: options.headSection,
	      grid: this.grid,
	      newColumn: options.newColumn ? options.newColumn : null
	    });
	  }
	  removeColumn(param) {
	    if (!param) {
	      return;
	    }
	    for (let i = 0; i < this.columns.length; i++) {
	      if (param.userGroup === this.columns[i].userGroup) {
	        this.columns[i].remove();
	        break;
	      }
	    }
	  }
	  addHeadColumn() {
	    let titles = [];
	    if (!this.headSection) {
	      this.rights.map(data => {
	        titles.push({
	          id: data.id,
	          type: Title.TYPE,
	          title: data.title,
	          hint: data.hint
	        });
	      });
	    }
	    if (this.headSection) {
	      titles = [{
	        type: UserGroupTitle.TYPE,
	        title: main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_ROLES'),
	        controller: true
	      }, {
	        type: UserGroupTitle.TYPE,
	        title: main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_EMPLOYEES_AND_DEPARTMENTS'),
	        controller: false
	      }];
	    }
	    const column = new Column({
	      items: titles,
	      section: this,
	      grid: this.grid
	    });
	    main_core.Dom.append(column.render(), this.layout.headColumn);
	    return column;
	  }
	  getColumnsContainer() {
	    if (!this.layout.columns) {
	      const column = main_core.Tag.render(_t$e || (_t$e = _$e`<div class='ui-access-rights-section-wrapper'></div>`));
	      main_core.Event.bind(column, 'scroll', this.adjustScroll.bind(this));
	      this.layout.columns = column;
	    }
	    return this.layout.columns;
	  }
	  getTitleNode() {
	    const node = main_core.Tag.render(_t2$5 || (_t2$5 = _$e`<div class='ui-access-rights-section-title'>${0}</div>`), main_core.Text.encode(this.title));
	    if (this.hint) {
	      const hintNode = new Hint({
	        hint: this.hint,
	        className: 'ui-access-rights-section-title-hint'
	      });
	      node.appendChild(hintNode.render());
	    }
	    return node;
	  }
	  adjustScroll() {
	    if (main_core.Text.toNumber(this.scroll) !== main_core.Text.toNumber(this.getColumnsContainer().scrollLeft)) {
	      this.scroll = this.getColumnsContainer().scrollLeft;
	      main_core_events.EventEmitter.emit(this.grid, "AccessRights.Section:scroll", [this]);
	    }
	  }
	  adjustEars() {
	    const container = this.getColumnsContainer();
	    const scroll = container.scrollLeft;
	    const isLeftVisible = scroll > 0;
	    const isRightVisible = container.scrollWidth > Math.round(scroll + container.offsetWidth);
	    this.getContentContainer().classList[isLeftVisible ? 'add' : 'remove']('ui-access-rights-section-ear-left-shown');
	    this.getContentContainer().classList[isRightVisible ? 'add' : 'remove']('ui-access-rights-section-ear-right-shown');
	  }
	  getContentContainer() {
	    if (!this.layout.content) {
	      this.layout.content = main_core.Tag.render(_t3$4 || (_t3$4 = _$e`
				<div class='ui-access-rights-section-content'>
					${0}
					${0}
					${0}
				</div>
			`), this.getColumnsContainer(), this.getEarLeft(), this.getEarRight());
	    }
	    return this.layout.content;
	  }
	  getEarLeft() {
	    if (!this.layout.earLeft) {
	      this.layout.earLeft = main_core.Tag.render(_t4$2 || (_t4$2 = _$e`<div class='ui-access-rights-section-ear-left'></div>`));
	      main_core.Event.bind(this.layout.earLeft, 'mouseenter', () => {
	        this.stopAutoScroll();
	        this.earLeftTimer = setTimeout(() => {
	          this.scrollToLeft();
	        }, 110);
	      });
	      main_core.Event.bind(this.layout.earLeft, 'mouseleave', () => {
	        clearTimeout(this.earLeftTimer);
	        this.stopAutoScroll();
	      });
	    }
	    return this.layout.earLeft;
	  }
	  getEarRight() {
	    if (!this.layout.earRight) {
	      this.layout.earRight = main_core.Tag.render(_t5$2 || (_t5$2 = _$e`<div class='ui-access-rights-section-ear-right'></div>`));
	      main_core.Event.bind(this.layout.earRight, 'mouseenter', () => {
	        this.stopAutoScroll();
	        this.earRightTimer = setTimeout(() => {
	          this.scrollToRight();
	        }, 110);
	      });
	      main_core.Event.bind(this.layout.earRight, 'mouseleave', () => {
	        clearTimeout(this.earRightTimer);
	        this.stopAutoScroll();
	      });
	    }
	    return this.layout.earRight;
	  }
	  scrollToRight(param, stop) {
	    const interval = param ? 2 : 20;
	    this.earTimer = setInterval(() => {
	      this.getColumnsContainer().scrollLeft += 10;
	      if (param && param <= this.getColumnsContainer().scrollLeft) {
	        this.stopAutoScroll();
	      }
	    }, interval);
	    if (stop === 'stop') {
	      setTimeout(() => {
	        this.stopAutoScroll();
	        this.getGrid().unlock();
	      }, param * 2);
	    }
	  }
	  scrollToLeft() {
	    this.earTimer = setInterval(() => {
	      this.getColumnsContainer().scrollLeft -= 10;
	    }, 20);
	  }
	  stopAutoScroll() {
	    clearInterval(this.earTimer);
	  }
	  getScroll() {
	    return this.scroll;
	  }
	  render() {
	    var _this$grid$getUserGro;
	    const title = this.title ? this.getTitleNode() : null;
	    const sectionContainer = main_core.Tag.render(_t6$2 || (_t6$2 = _$e`
			<div class='ui-access-rights-section'>
				${0}
				${0}
			</div>
		`), title, this.getMainContainer());
	    if (this.headSection) {
	      main_core.Dom.addClass(sectionContainer, 'ui-access-rights--head-section');
	    }
	    this.addHeadColumn();
	    const columnsFragment = document.createDocumentFragment();
	    const userGroups = (_this$grid$getUserGro = this.grid.getUserGroups()) != null ? _this$grid$getUserGro : [];
	    for (let i = 0; i < userGroups.length; i++) {
	      const column = this.getColumn({
	        headSection: this.headSection ? this.headSection : null,
	        userGroup: userGroups[i]
	      });
	      this.columns.push(column);
	      main_core.Dom.append(column.render(), columnsFragment);
	    }
	    main_core.Dom.append(columnsFragment, this.getColumnsContainer());
	    return sectionContainer;
	  }
	  getMainContainer() {
	    this.layout.headColumn = main_core.Tag.render(_t7$1 || (_t7$1 = _$e`<div class='ui-access-rights-section-head'></div>`));
	    return main_core.Tag.render(_t8$1 || (_t8$1 = _$e`
			<div class='ui-access-rights-section-container'>
				${0}
				${0}
			</div>
		`), this.layout.headColumn, this.getContentContainer());
	  }
	}
	const namespace$3 = main_core.Reflection.namespace('BX.UI.AccessRights');
	namespace$3.Section = Section;

	exports.Grid = Grid;
	exports.Section = Section;
	exports.Column = Column;
	exports.ColumnItem = ColumnItem;

}((this.BX.UI = this.BX.UI || {}),BX,BX,BX.UI,BX.Main,BX.Event,BX.UI.EntitySelector,BX));
//# sourceMappingURL=accessrights.bundle.js.map