403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/accessrights/v2/dist/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/accessrights/v2/dist/v2.bundle.js.map
{"version":3,"file":"v2.bundle.js","sources":["../src/service/value/type/base.js","../src/service/value/type/dependent-variables.js","../src/service/value/type/multivariables.js","../src/service/value/type/toggler.js","../src/service/value/type/variables.js","../src/service/service-locator.js","../src/integration/entity-selector/dictionary.js","../src/components/header/members/selector.js","../src/components/header/members/single-member.js","../src/components/header/members.js","../src/components/header/role-heading.js","../src/integration/entity-selector/items-mapper.js","../src/components/layout/cell-layout.js","../src/components/layout/column-layout.js","../src/components/header/roles-control.js","../src/components/util/sync-horizontal-scroll.js","../src/components/header.js","../src/components/searchbox.js","../src/utils.js","../src/store/model/transformation/internalizer/access-rights-internalizer.js","../src/store/model/access-rights-model.js","../src/components/section/column/menu-cell.js","../src/components/section/icon.js","../src/components/section/value/popup-header/locator.js","../src/components/section/value/popup-header/master-switcher.js","../src/components/section/value/popup-header/master-switcher/single-role-title.js","../src/components/section/value/dependent-variables/popup-header.js","../src/components/section/value/dependent-variables/popup-content.js","../src/components/section/value/popup-header/master-switcher/all-roles-title.js","../src/components/section/value/value-popup.js","../src/components/section/title-column/value/dependent-variables.js","../src/integration/entity-selector/footer.js","../src/integration/entity-selector/header.js","../src/components/section/value/multivariables/selector.js","../src/components/section/title-column/value/multivariables.js","../src/components/section/title-column/value/variables.js","../src/components/util/selected-hint.js","../src/components/section/column/value/dependent-variables.js","../src/components/section/column/value/multivariables.js","../src/components/section/column/value/toggler.js","../src/components/section/column/value/variables.js","../src/components/section/value/registry.js","../src/components/section/column/value-cell.js","../src/components/section/column.js","../src/components/section/column-list.js","../src/components/util/hint.js","../src/components/section/header.js","../src/components/section/title-column/menu-cell.js","../src/components/section/title-column/row-value.js","../src/components/section/title-column/title-cell.js","../src/components/section/title-column.js","../src/components/section.js","../src/components/grid.js","../src/integration/analytics-manager.js","../src/store/model/application-model.js","../src/store/model/user-groups-model.js","../src/store/index.js","../src/store/model/transformation/backend-exporter/access-rights-exporter.js","../src/store/model/transformation/backend-exporter/user-groups/base-user-groups-exporter.js","../src/store/model/transformation/backend-exporter/user-groups/all-user-groups-exporter.js","../src/store/model/transformation/backend-exporter/user-groups/only-changed-user-groups-exporter.js","../src/store/model/transformation/internalizer/application-internalizer.js","../src/store/model/transformation/internalizer/user-groups-internalizer.js","../src/store/model/transformation/shown-user-groups-copier.js","../src/app.js"],"sourcesContent":["import { Type } from 'main.core';\nimport type { AccessRightItem } from '../../../store/model/access-rights-model';\nimport { type ValueType } from './value-type';\n\n/**\n * @abstract\n */\nexport class Base implements ValueType\n{\n\t/*\n\t * @abstract\n\t */\n\tgetComponentName(): string\n\t{\n\t\tthrow new Error('not implemented');\n\t}\n\n\tgetEmptyValue(item: AccessRightItem): Set<string>\n\t{\n\t\treturn item.emptyValue ?? new Set();\n\t}\n\n\tgetMinValue(item: AccessRightItem): ?Set<string>\n\t{\n\t\tif (!Type.isNil(item.minValue))\n\t\t{\n\t\t\treturn item.minValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetMaxValue(item: AccessRightItem): ?Set<string>\n\t{\n\t\tif (!Type.isNil(item.maxValue))\n\t\t{\n\t\t\treturn item.maxValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tisRowValueConfigurable(): boolean\n\t{\n\t\treturn true;\n\t}\n}\n","import { Base } from './base';\n\nexport class DependentVariables extends Base\n{\n\tgetComponentName(): string\n\t{\n\t\treturn 'DependentVariables';\n\t}\n}\n","import { Base } from './base';\n\nexport class Multivariables extends Base\n{\n\tgetComponentName(): string\n\t{\n\t\treturn 'Multivariables';\n\t}\n}\n","import { Type } from 'main.core';\nimport type { AccessRightItem } from '../../../store/model/access-rights-model';\nimport { Base } from './base';\n\nexport class Toggler extends Base\n{\n\tgetComponentName(): string\n\t{\n\t\treturn 'Toggler';\n\t}\n\n\tgetEmptyValue(item: AccessRightItem): Set<string>\n\t{\n\t\tconst isFalsy = !item.emptyValue || !item.emptyValue[0];\n\t\tif (isFalsy)\n\t\t{\n\t\t\t// use explicit '0' for correctly identify modifications\n\t\t\treturn new Set(['0']);\n\t\t}\n\n\t\treturn super.getEmptyValue(item);\n\t}\n\n\tgetMinValue(item: AccessRightItem): ?Set<string>\n\t{\n\t\tconst explicit = super.getMinValue(item);\n\t\tif (!Type.isNull(explicit))\n\t\t{\n\t\t\treturn explicit;\n\t\t}\n\n\t\treturn new Set(['0']);\n\t}\n\n\tgetMaxValue(item: AccessRightItem): ?Set<string>\n\t{\n\t\tconst explicit = super.getMaxValue(item);\n\t\tif (!Type.isNull(explicit))\n\t\t{\n\t\t\treturn explicit;\n\t\t}\n\n\t\treturn new Set(['1']);\n\t}\n\n\tisRowValueConfigurable(): boolean\n\t{\n\t\treturn false;\n\t}\n}\n","import { Base } from './base';\n\nexport class Variables extends Base\n{\n\tgetComponentName(): string\n\t{\n\t\treturn 'Variables';\n\t}\n}\n","import { Cache } from 'main.core';\nimport type { AccessRightItem } from '../store/model/access-rights-model';\nimport { DependentVariables } from './value/type/dependent-variables';\nimport { Multivariables } from './value/type/multivariables';\nimport { Toggler } from './value/type/toggler';\nimport type { ValueType } from './value/type/value-type';\nimport { Variables } from './value/type/variables';\n\nexport class ServiceLocator\n{\n\tstatic #cache = new Cache.MemoryCache();\n\n\t/**\n\t * `BX.UI.Hint.createInstance` takes up to 30% of CPU time when multiple hints are mounted on page\n\t * (e.g. on a load, search), probably because of `Manager.initByClassName` call in `new Manager`.\n\t * therefore, we share a Manager instance across all hints in the app\n\t */\n\tstatic getHint(appGuid: string): BX.UI.Hint\n\t{\n\t\treturn this.#cache.remember(`hint-${appGuid}`, () => {\n\t\t\treturn BX.UI.Hint.createInstance({\n\t\t\t\tid: `ui-access-rights-v2-hint-${appGuid}`,\n\t\t\t\tpopupParameters: {\n\t\t\t\t\tclassName: 'ui-access-rights-v2-popup-pointer-events ui-hint-popup',\n\t\t\t\t\tautoHide: true,\n\t\t\t\t\tdarkMode: true,\n\t\t\t\t\tmaxWidth: 280,\n\t\t\t\t\toffsetTop: 0,\n\t\t\t\t\toffsetLeft: 8,\n\t\t\t\t\tangle: true,\n\t\t\t\t\tanimation: 'fading-slide',\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tstatic getValueTypeByRight(right: AccessRightItem): ?ValueType\n\t{\n\t\treturn this.getValueType(right.type);\n\t}\n\n\tstatic getValueType(type: string): ?ValueType\n\t{\n\t\tconst stringType = String(type);\n\n\t\treturn this.#cache.remember(stringType, () => {\n\t\t\tif (stringType === 'dependent_variables')\n\t\t\t{\n\t\t\t\treturn new DependentVariables();\n\t\t\t}\n\n\t\t\tif (stringType === 'multivariables')\n\t\t\t{\n\t\t\t\treturn new Multivariables();\n\t\t\t}\n\n\t\t\tif (stringType === 'toggler')\n\t\t\t{\n\t\t\t\treturn new Toggler();\n\t\t\t}\n\n\t\t\tif (stringType === 'variables')\n\t\t\t{\n\t\t\t\treturn new Variables();\n\t\t\t}\n\n\t\t\tconsole.warn('ui.accessrights.v2: Unknown access right type', type);\n\n\t\t\treturn null;\n\t\t});\n\t}\n}\n","export const EntitySelectorContext = Object.freeze({\n\tROLE: 'ui.accessrights.v2~role-selector',\n\tMEMBER: 'ui.accessrights.v2~member-selector',\n\tVARIABLE: 'ui.accessrights.v2~variable-selector',\n});\n\nexport const EntitySelectorEntities = Object.freeze({\n\tROLE: 'ui.accessrights.v2~role',\n\tVARIABLE: 'ui.accessrights.v2~variable',\n});\n","import { Type } from 'main.core';\nimport { Dialog, type EntityOptions, type Item, type ItemId } from 'ui.entity-selector';\nimport { mapState } from 'ui.vue3.vuex';\nimport { EntitySelectorContext } from '../../../integration/entity-selector/dictionary';\n\nexport const Selector = {\n\tname: 'Selector',\n\temits: ['close'],\n\tprops: {\n\t\tuserGroup: {\n\t\t\t/** @type UserGroup */\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tbindNode: {\n\t\t\ttype: HTMLElement,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\tselectedItems(): ItemId[] {\n\t\t\tconst result = [];\n\t\t\tfor (const accessCode of this.userGroup.members.keys())\n\t\t\t{\n\t\t\t\tresult.push(this.getItemIdByAccessCode(accessCode));\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t\t...mapState({\n\t\t\toptions: (state) => state.application.options,\n\t\t\taddUserGroupsProviderTab: (state) => state.application.options.additionalMembersParams.addUserGroupsProviderTab,\n\t\t\taddProjectsProviderTab: (state) => state.application.options.additionalMembersParams.addProjectsProviderTab,\n\t\t\taddStructureTeamsProviderTab: (state) => state.application.options.additionalMembersParams.addStructureTeamsProviderTab,\n\t\t}),\n\t},\n\tmounted()\n\t{\n\t\tconst entities = this.getEntities();\n\n\t\t(new Dialog({\n\t\t\tenableSearch: true,\n\t\t\tcontext: EntitySelectorContext.MEMBER,\n\t\t\talwaysShowLabels: true,\n\t\t\tentities,\n\t\t\ttargetNode: this.bindNode,\n\t\t\tpreselectedItems: this.selectedItems,\n\t\t\tcacheable: false,\n\t\t\tevents: {\n\t\t\t\t'Item:onSelect': this.onMemberAdd,\n\t\t\t\t'Item:onDeselect': this.onMemberRemove,\n\t\t\t\tonHide: () => {\n\t\t\t\t\tthis.$emit('close');\n\t\t\t\t},\n\t\t\t},\n\t\t})).show();\n\t},\n\tmethods: {\n\t\t// eslint-disable-next-line sonarjs/cognitive-complexity\n\t\tgetItemIdByAccessCode(accessCode: string): ItemId {\n\t\t\tif (/^I?U(\\d+)$/.test(accessCode))\n\t\t\t{\n\t\t\t\tconst match = accessCode.match(/^I?U(\\d+)$/) || null;\n\t\t\t\tconst userId = match ? match[1] : null;\n\n\t\t\t\treturn ['user', userId];\n\t\t\t}\n\n\t\t\tif (/^DR(\\d+)$/.test(accessCode))\n\t\t\t{\n\t\t\t\tconst match = accessCode.match(/^DR(\\d+)$/) || null;\n\t\t\t\tconst departmentId = match ? match[1] : null;\n\n\t\t\t\treturn ['department', departmentId];\n\t\t\t}\n\n\t\t\tif (/^D(\\d+)$/.test(accessCode))\n\t\t\t{\n\t\t\t\tconst match = accessCode.match(/^D(\\d+)$/) || null;\n\t\t\t\tconst departmentId = match ? match[1] : null;\n\n\t\t\t\treturn ['department', `${departmentId}:F`];\n\t\t\t}\n\n\t\t\tif (/^G(\\d+)$/.test(accessCode))\n\t\t\t{\n\t\t\t\tconst match = accessCode.match(/^G(\\d+)$/) || null;\n\t\t\t\tconst groupId = match ? match[1] : null;\n\n\t\t\t\treturn ['site-groups', groupId];\n\t\t\t}\n\n\t\t\tif (accessCode.at(0) === 'A')\n\t\t\t{\n\t\t\t\treturn ['user-groups', accessCode];\n\t\t\t}\n\n\t\t\tif (/^SG(\\d+)_([AEK])$/.test(accessCode))\n\t\t\t{\n\t\t\t\treturn ['project-access-codes', accessCode];\n\t\t\t}\n\n\t\t\tif (/^SNT(\\d+)$/.test(accessCode))\n\t\t\t{\n\t\t\t\tconst match = accessCode.match(/^SNT(\\d+)$/) || null;\n\t\t\t\tconst structureNodeId = match ? match[1] : null;\n\n\t\t\t\treturn ['structure-node', `${structureNodeId}:F`];\n\t\t\t}\n\n\t\t\tif (/^SNTR(\\d+)$/.test(accessCode))\n\t\t\t{\n\t\t\t\tconst match = accessCode.match(/^SNTR(\\d+)$/) || null;\n\t\t\t\tconst structureNodeId = match ? match[1] : null;\n\n\t\t\t\treturn ['structure-node', structureNodeId];\n\t\t\t}\n\n\t\t\treturn ['unknown', accessCode];\n\t\t},\n\t\tonMemberAdd(event: BaseEvent): void {\n\t\t\tconst member = this.getMemberFromEvent(event);\n\n\t\t\tthis.$store.dispatch('userGroups/addMember', {\n\t\t\t\tuserGroupId: this.userGroup.id,\n\t\t\t\taccessCode: member.id,\n\t\t\t\tmember,\n\t\t\t});\n\t\t},\n\t\tonMemberRemove(event: BaseEvent): void {\n\t\t\tconst member = this.getMemberFromEvent(event);\n\n\t\t\tthis.$store.dispatch('userGroups/removeMember', {\n\t\t\t\tuserGroupId: this.userGroup.id,\n\t\t\t\taccessCode: member.id,\n\t\t\t});\n\t\t},\n\t\tgetMemberFromEvent(event: BaseEvent): ?Member {\n\t\t\tconst { item } = event.getData();\n\n\t\t\treturn {\n\t\t\t\tid: this.getAccessCodeByItem(item),\n\t\t\t\ttype: this.getMemberTypeByItem(item),\n\t\t\t\tname: item.title.text,\n\t\t\t\tavatar: Type.isStringFilled(item.avatar) ? item.avatar : null,\n\t\t\t};\n\t\t},\n\t\t// eslint-disable-next-line sonarjs/cognitive-complexity\n\t\tgetAccessCodeByItem(item: Item): string {\n\t\t\tconst entityId = item.entityId;\n\n\t\t\tif (entityId === 'user')\n\t\t\t{\n\t\t\t\treturn `U${item.id}`;\n\t\t\t}\n\n\t\t\tif (entityId === 'department')\n\t\t\t{\n\t\t\t\tif (Type.isString(item.id) && item.id.endsWith(':F'))\n\t\t\t\t{\n\t\t\t\t\tconst match = item.id.match(/^(\\d+):F$/);\n\t\t\t\t\tconst originalId = match ? match[1] : null;\n\n\t\t\t\t\t// only members of the department itself\n\t\t\t\t\treturn `D${originalId}`;\n\t\t\t\t}\n\n\t\t\t\t// whole department recursively\n\t\t\t\treturn `DR${item.id}`;\n\t\t\t}\n\n\t\t\tif (entityId === 'structure-node')\n\t\t\t{\n\t\t\t\tif (Type.isString(item.id) && item.id.endsWith(':F'))\n\t\t\t\t{\n\t\t\t\t\tconst match = item.id.match(/^(\\d+):F$/);\n\t\t\t\t\tconst originalId = match ? match[1] : null;\n\n\t\t\t\t\treturn `SNT${originalId}`;\n\t\t\t\t}\n\n\t\t\t\treturn `SNTR${item.id}`;\n\t\t\t}\n\n\t\t\tif (entityId === 'site-groups')\n\t\t\t{\n\t\t\t\treturn `G${item.id}`;\n\t\t\t}\n\n\t\t\tif (entityId === 'user-groups')\n\t\t\t{\n\t\t\t\treturn item.id;\n\t\t\t}\n\n\t\t\tif (entityId === 'project-access-codes')\n\t\t\t{\n\t\t\t\treturn item.id;\n\t\t\t}\n\n\t\t\treturn '';\n\t\t},\n\t\tgetMemberTypeByItem(item: Item): string {\n\t\t\tswitch (item.entityId)\n\t\t\t{\n\t\t\t\tcase 'user':\n\t\t\t\t\treturn 'users';\n\t\t\t\tcase 'intranet':\n\t\t\t\tcase 'department':\n\t\t\t\t\treturn 'departments';\n\t\t\t\tcase 'socnetgroup':\n\t\t\t\tcase 'project-access-codes':\n\t\t\t\t\treturn 'sonetgroups';\n\t\t\t\tcase 'group':\n\t\t\t\t\treturn 'groups';\n\t\t\t\tcase 'structure-node':\n\t\t\t\t\treturn 'structureteams';\n\t\t\t\tcase 'site-groups':\n\t\t\t\tcase 'user-groups':\n\t\t\t\t\treturn 'usergroups';\n\t\t\t\tdefault:\n\t\t\t\t\treturn '';\n\t\t\t}\n\t\t},\n\t\tgetEntities(): EntityOptions[] {\n\t\t\tconst entities: EntityOptions[] = [\n\t\t\t\t{\n\t\t\t\t\tid: 'user',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tintranetUsersOnly: true,\n\t\t\t\t\t\temailUsers: false,\n\t\t\t\t\t\tinviteEmployeeLink: false,\n\t\t\t\t\t\tinviteGuestLink: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'department',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tselectMode: 'usersAndDepartments',\n\t\t\t\t\t\tallowSelectRootDepartment: true,\n\t\t\t\t\t\tallowFlatDepartments: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'site-groups',\n\t\t\t\t\tdynamicLoad: true,\n\t\t\t\t\tdynamicSearch: true,\n\t\t\t\t},\n\t\t\t];\n\n\t\t\tif (this.addStructureTeamsProviderTab)\n\t\t\t{\n\t\t\t\tentities.push({\n\t\t\t\t\tid: 'structure-node',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tselectMode: 'usersAndDepartments',\n\t\t\t\t\t\tallowSelectRootDepartment: true,\n\t\t\t\t\t\tallowFlatDepartments: true,\n\t\t\t\t\t\tincludedNodeEntityTypes: ['team'],\n\t\t\t\t\t\tuseMultipleTabs: true,\n\t\t\t\t\t\tvisual: {\n\t\t\t\t\t\t\tavatarMode: 'node',\n\t\t\t\t\t\t\ttagStyle: 'none',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this.addProjectsProviderTab)\n\t\t\t{\n\t\t\t\tentities.push({\n\t\t\t\t\tid: 'project-access-codes',\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this.addUserGroupsProviderTab)\n\t\t\t{\n\t\t\t\tentities.push({\n\t\t\t\t\tid: 'user-groups',\n\t\t\t\t\tdynamicLoad: true,\n\t\t\t\t\toptions: {},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn entities;\n\t\t},\n\t},\n\t// just a template stub\n\ttemplate: '<div hidden></div>',\n};\n","import type { Member } from '../../../store/model/user-groups-model';\n\nexport const SingleMember = {\n\tname: 'SingleMember',\n\tprops: {\n\t\tmember: {\n\t\t\t/** @type Member */\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\tavatarBackgroundImage(): string {\n\t\t\treturn `url(${encodeURI(this.member.avatar)})`;\n\t\t},\n\t\tnoAvatarClass(): string {\n\t\t\tif (this.member.type === 'groups')\n\t\t\t{\n\t\t\t\treturn 'ui-icon-common-user-group';\n\t\t\t}\n\n\t\t\tif (this.member.type === 'sonetgroups' || this.member.type === 'departments')\n\t\t\t{\n\t\t\t\treturn 'ui-icon-common-company';\n\t\t\t}\n\n\t\t\tif (this.member.type === 'usergroups')\n\t\t\t{\n\t\t\t\treturn 'ui-icon-common-user-group';\n\t\t\t}\n\n\t\t\tif (this.member.type === 'structureteams')\n\t\t\t{\n\t\t\t\treturn 'ui-icon-common-my-plan';\n\t\t\t}\n\n\t\t\treturn 'ui-icon-common-user';\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div class='ui-access-rights-v2-members-item'>\n\t\t\t<a v-if=\"member.avatar\" class='ui-access-rights-v2-members-item-avatar' :title=\"member.name\" :style=\"{\n\t\t\t\tbackgroundImage: avatarBackgroundImage,\n\t\t\t\tbackgroundSize: 'cover',\n\t\t\t}\"></a>\n\t\t\t<a v-else class='ui-icon ui-access-rights-v2-members-item-icon' :class=\"noAvatarClass\" :title=\"member.name\">\n\t\t\t\t<i></i>\n\t\t\t</a>\n\t\t</div>\n\t`,\n};\n","import type { MemberCollection } from '../../store/model/user-groups-model';\nimport { Selector } from './members/selector';\nimport { SingleMember } from './members/single-member';\n\nconst MAX_SHOWN_MEMBERS = 5;\n\nexport const Members = {\n\tname: 'Members',\n\tcomponents: { SingleMember, Selector },\n\tprops: {\n\t\tuserGroup: {\n\t\t\t/** @type UserGroup */\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata(): Object {\n\t\treturn {\n\t\t\tisSelectorShown: false,\n\t\t\tisSelectedMembersPopupShown: false,\n\t\t};\n\t},\n\tpopup: null,\n\tcomputed: {\n\t\tshownMembers(): MemberCollection\n\t\t{\n\t\t\tif (this.userGroup.members.size <= MAX_SHOWN_MEMBERS)\n\t\t\t{\n\t\t\t\treturn this.userGroup.members;\n\t\t\t}\n\n\t\t\tconst shownKeyValuePairs = [...this.userGroup.members].slice(0, MAX_SHOWN_MEMBERS);\n\n\t\t\treturn new Map(shownKeyValuePairs);\n\t\t},\n\t\tnotShownMembersCount(): number\n\t\t{\n\t\t\tif (this.userGroup.members.size > MAX_SHOWN_MEMBERS)\n\t\t\t{\n\t\t\t\treturn this.userGroup.members.size - MAX_SHOWN_MEMBERS;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t},\n\t\tbindNode(): HTMLElement\n\t\t{\n\t\t\treturn this.$refs.container;\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div ref=\"container\" class=\"ui-access-rights-v2-members-container\"  @click=\"isSelectorShown = true\">\n\t\t\t<div v-if=\"userGroup.members.size > 0\" class='ui-access-rights-v2-members'>\n\t\t\t\t<SingleMember v-for=\"[accessCode, member] in shownMembers\" :key=\"accessCode\" :member=\"member\"/>\n\t\t\t\t<span v-if=\"notShownMembersCount > 0\" class=\"ui-access-rights-v2-members-more\">\n\t\t\t\t\t+ {{ notShownMembersCount }}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass='ui-access-rights-v2-members-item ui-access-rights-v2-members-item-add'\n\t\t\t\t:class=\"{\n\t\t\t\t\t'--show-always': userGroup.members.size <= 0,\n\t\t\t\t\t'--has-siblings': userGroup.members.size > 0,\n\t\t\t\t}\"\n\t\t\t>\n\t\t\t\t<div class=\"ui-icon-set --plus-30\"></div>\n\t\t\t</div>\n\t\t\t<Selector\n\t\t\t\tv-if=\"isSelectorShown\"\n\t\t\t\t:user-group=\"userGroup\"\n\t\t\t\t:bind-node=\"bindNode\"\n\t\t\t\t@close=\"isSelectorShown = false\"\n\t\t\t/>\n\t\t</div>\n\t`,\n};\n","import { Event } from 'main.core';\nimport { Popup } from 'main.popup';\nimport { Button, ButtonColor, ButtonSize, CancelButton } from 'ui.buttons';\nimport { RichMenuItem, RichMenuItemIcon, RichMenuPopup } from 'ui.vue3.components.rich-menu';\nimport { mapGetters, mapState } from 'ui.vue3.vuex';\n\nexport const RoleHeading = {\n\tname: 'RoleHeading',\n\tcomponents: { RichMenuPopup, RichMenuItem },\n\tprops: {\n\t\tuserGroup: {\n\t\t\t/** @type UserGroup */\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata(): Object {\n\t\treturn {\n\t\t\tisEdit: false,\n\t\t\tisPopupShown: false,\n\t\t};\n\t},\n\tcomputed: {\n\t\tRichMenuItemIcon: () => RichMenuItemIcon,\n\t\t...mapState({\n\t\t\tisSaving: (state) => state.application.isSaving,\n\t\t\tguid: (state) => state.application.guid,\n\t\t\tmaxVisibleUserGroups: (state) => state.application.options.maxVisibleUserGroups,\n\t\t}),\n\t\t...mapGetters({\n\t\t\tisMaxVisibleUserGroupsReached: 'userGroups/isMaxVisibleUserGroupsReached',\n\t\t\tisMaxValueSetForAny: 'accessRights/isMaxValueSetForAny',\n\t\t\tisMinValueSetForAny: 'accessRights/isMinValueSetForAny',\n\t\t}),\n\t\ttitle: {\n\t\t\tget(): string {\n\t\t\t\treturn this.userGroup.title;\n\t\t\t},\n\t\t\tset(title: string): void {\n\t\t\t\tthis.$store.dispatch('userGroups/setRoleTitle', {\n\t\t\t\t\tuserGroupId: this.userGroup.id,\n\t\t\t\t\ttitle,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t},\n\twatch: {\n\t\tisEdit(newValue): void {\n\t\t\tif (newValue === true)\n\t\t\t{\n\t\t\t\tthis.bindClickedOutsideHandler();\n\n\t\t\t\tvoid this.$nextTick(() => {\n\t\t\t\t\tthis.$refs.input.scrollIntoView({\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\tblock: 'nearest',\n\t\t\t\t\t\tinline: 'nearest',\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.$refs.input.focus();\n\t\t\t\t\tthis.$refs.input.select();\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.unbindClickedOutsideHandler();\n\t\t\t}\n\t\t},\n\t},\n\tmounted()\n\t{\n\t\t// todo fix hide/show new role\n\t\tif (this.userGroup.isNew)\n\t\t{\n\t\t\t// start editing a newly created role right away\n\t\t\tthis.isEdit = true;\n\t\t}\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.unbindClickedOutsideHandler();\n\t},\n\tmethods: {\n\t\tbindClickedOutsideHandler(): void {\n\t\t\tEvent.bind(window, 'click', this.turnOffEditWhenClickedOutside, {\n\t\t\t\tcapture: true,\n\t\t\t});\n\t\t},\n\t\tunbindClickedOutsideHandler(): void {\n\t\t\tEvent.unbind(window, 'click', this.turnOffEditWhenClickedOutside, {\n\t\t\t\tcapture: true,\n\t\t\t});\n\t\t},\n\t\tturnOffEditWhenClickedOutside(event: PointerEvent): void {\n\t\t\tif (event.target !== this.$refs.input)\n\t\t\t{\n\t\t\t\tthis.isEdit = false;\n\t\t\t}\n\t\t},\n\t\tshowDeleteConfirmation(): void {\n\t\t\tconst popup = new Popup({\n\t\t\t\tbindElement: this.$refs.container,\n\t\t\t\twidth: 250,\n\t\t\t\toverlay: true,\n\t\t\t\tcontentPadding: 10,\n\t\t\t\tcontent: this.$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_POPUP_REMOVE_ROLE'),\n\t\t\t\tclassName: 'ui-access-rights-v2-text-center',\n\t\t\t\tanimation: 'fading-slide',\n\t\t\t\tcacheable: false,\n\t\t\t\tbuttons: [\n\t\t\t\t\tnew Button({\n\t\t\t\t\t\ttext: this.$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_POPUP_REMOVE_ROLE_YES'),\n\t\t\t\t\t\tsize: ButtonSize.SMALL,\n\t\t\t\t\t\tcolor: ButtonColor.PRIMARY,\n\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\tclick: () => {\n\t\t\t\t\t\t\t\tpopup.destroy();\n\t\t\t\t\t\t\t\tthis.$store.dispatch('userGroups/removeUserGroup', {\n\t\t\t\t\t\t\t\t\tuserGroupId: this.userGroup.id,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tnew CancelButton({\n\t\t\t\t\t\tsize: ButtonSize.SMALL,\n\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\tclick: () => {\n\t\t\t\t\t\t\t\tpopup.destroy();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tpopup.show();\n\t\t},\n\t\tshowActionsMenu(): void {\n\t\t\tif (!this.isSaving)\n\t\t\t{\n\t\t\t\tthis.isPopupShown = true;\n\t\t\t}\n\t\t},\n\t\tonSetMaxValuesClick(): void {\n\t\t\tthis.isPopupShown = false;\n\n\t\t\tthis.$store.dispatch('userGroups/setMaxAccessRightValues', {\n\t\t\t\tuserGroupId: this.userGroup.id,\n\t\t\t});\n\t\t},\n\t\tonSetMinValuesClick(): void {\n\t\t\tthis.isPopupShown = false;\n\n\t\t\tthis.$store.dispatch('userGroups/setMinAccessRightValues', {\n\t\t\t\tuserGroupId: this.userGroup.id,\n\t\t\t});\n\t\t},\n\t\tonEnableEditClick(): void {\n\t\t\tthis.isPopupShown = false;\n\n\t\t\tthis.isEdit = true;\n\t\t},\n\t\tonCopyRoleClick(): void {\n\t\t\tif (this.isMaxVisibleUserGroupsReached)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isPopupShown = false;\n\n\t\t\tthis.$store.dispatch('userGroups/copyUserGroup', { userGroupId: this.userGroup.id });\n\t\t},\n\t\tonDeleteRoleClick(): void {\n\t\t\tthis.isPopupShown = false;\n\n\t\t\tthis.showDeleteConfirmation();\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div ref=\"container\" class='ui-access-rights-v2-role'>\n\t\t\t<div class=\"ui-access-rights-v2-role-value-container\">\n\t\t\t\t<input\n\t\t\t\t\tv-if=\"isEdit && !isSaving\"\n\t\t\t\t\tref=\"input\"\n\t\t\t\t\ttype='text'\n\t\t\t\t\tclass='ui-access-rights-v2-role-input'\n\t\t\t\t\tv-model=\"title\"\n\t\t\t\t\t:placeholder=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ROLE_NAME')\"\n\t\t\t\t\t@keydown.enter=\"isEdit = false\"\n\t\t\t\t/>\n\t\t\t\t<div v-else class='ui-access-rights-v2-role-value' :title=\"title\">{{ title }}</div>\n\t\t\t</div>\n\t\t\t<div \n\t\t\t\tref=\"menu\"\n\t\t\t\tclass=\"ui-icon-set --more ui-access-rights-v2-icon-more\" \n\t\t\t\t@click=\"showActionsMenu\"\n\t\t\t>\n\t\t\t\t<RichMenuPopup v-if=\"isPopupShown\" @close=\"isPopupShown = false\" :popup-options=\"{bindElement: $refs.menu}\">\n\t\t\t\t\t<RichMenuItem\n\t\t\t\t\t\tv-if=\"isMaxValueSetForAny\"\n\t\t\t\t\t\t:icon=\"RichMenuItemIcon.check\"\n\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SET_MAX_ACCESS_RIGHTS')\"\n\t\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SET_MAX_ACCESS_RIGHTS_SUBTITLE')\"\n\t\t\t\t\t\t@click=\"onSetMaxValuesClick\"\n\t\t\t\t\t/>\n\t\t\t\t\t<RichMenuItem\n\t\t\t\t\t\tv-if=\"isMinValueSetForAny\"\n\t\t\t\t\t\t:icon=\"RichMenuItemIcon['red-lock']\"\n\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SET_MIN_ACCESS_RIGHTS')\"\n\t\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SET_MIN_ACCESS_RIGHTS_SUBTITLE')\"\n\t\t\t\t\t\t@click=\"onSetMinValuesClick\"\n\t\t\t\t\t/>\n\t\t\t\t\t<RichMenuItem\n\t\t\t\t\t\t:icon=\"RichMenuItemIcon.pencil\"\n\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_RENAME')\"\n\t\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_RENAME_SUBTITLE')\"\n\t\t\t\t\t\t@click=\"onEnableEditClick\"\n\t\t\t\t\t/>\n\t\t\t\t\t<RichMenuItem\n\t\t\t\t\t\t:icon=\"RichMenuItemIcon.copy\"\n\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_COPY')\"\n\t\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_COPY_ROLE_SUBTITLE')\"\n\t\t\t\t\t\t:disabled=\"isMaxVisibleUserGroupsReached\"\n\t\t\t\t\t\t:hint=\"\n\t\t\t\t\t\t\tisMaxVisibleUserGroupsReached\n\t\t\t\t\t\t\t\t? $Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ROLE_COPYING_DISABLED', {\n\t\t\t\t\t\t\t\t\t'#COUNT#': maxVisibleUserGroups,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t@click=\"onCopyRoleClick\"\n\t\t\t\t\t/>\n\t\t\t\t\t<RichMenuItem\n\t\t\t\t\t\t:icon=\"RichMenuItemIcon['trash-bin']\"\n\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_REMOVE')\"\n\t\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_REMOVE_SUBTITLE')\"\n\t\t\t\t\t\t@click=\"onDeleteRoleClick\"\n\t\t\t\t\t/>\n\t\t\t\t</RichMenuPopup>\n\t\t\t</div>\n\t\t</div>\n\t`,\n};\n","import { Loc, Runtime } from 'main.core';\nimport { type ItemOptions } from 'ui.entity-selector';\nimport type { Variable, VariableCollection } from '../../store/model/access-rights-model';\nimport type { UserGroup, UserGroupsCollection } from '../../store/model/user-groups-model';\nimport { EntitySelectorEntities } from './dictionary';\n\nexport class ItemsMapper\n{\n\tstatic mapUserGroups(userGroups: UserGroupsCollection): ItemOptions[]\n\t{\n\t\tconst result: ItemOptions[] = [];\n\n\t\tfor (const userGroup: UserGroup of userGroups.values())\n\t\t{\n\t\t\tresult.push({\n\t\t\t\tid: userGroup.id,\n\t\t\t\tentityId: EntitySelectorEntities.ROLE,\n\t\t\t\ttitle: userGroup.title,\n\t\t\t\tsupertitle: Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ROLE'),\n\t\t\t\tavatar: '/bitrix/js/ui/accessrights/v2/images/role-avatar.svg',\n\t\t\t\ttabs: [\n\t\t\t\t\t'recents',\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tstatic mapVariables(variables: VariableCollection): ItemOptions[]\n\t{\n\t\tconst items: ItemOptions[] = [];\n\n\t\tfor (const variable: Variable of variables.values())\n\t\t{\n\t\t\tconst item = Runtime.clone(variable);\n\t\t\titem.entityId = item.entityId || EntitySelectorEntities.VARIABLE;\n\t\t\titem.tabs = 'recents';\n\n\t\t\titems.push(item);\n\t\t}\n\n\t\treturn items;\n\t}\n}\n","export const CellLayout = {\n\ttemplate: `\n\t\t<div class='ui-access-rights-v2-column-item'>\n\t\t\t<slot/>\n\t\t</div>\n\t`,\n};\n","export const ColumnLayout = {\n\ttemplate: `\n\t\t<div class='ui-access-rights-v2-column'>\n\t\t\t<slot/>\n\t\t</div>\n\t`,\n};\n","import { type BaseEvent } from 'main.core.event';\nimport { Dialog, type ItemOptions } from 'ui.entity-selector';\nimport { RichMenuItem, RichMenuItemIcon, RichMenuPopup } from 'ui.vue3.components.rich-menu';\nimport { mapGetters, mapState } from 'ui.vue3.vuex';\nimport { EntitySelectorContext } from '../../integration/entity-selector/dictionary';\nimport { ItemsMapper } from '../../integration/entity-selector/items-mapper';\nimport { CellLayout } from '../layout/cell-layout';\nimport { ColumnLayout } from '../layout/column-layout';\nimport '../../css/header/roles-control.css';\n\nexport const RolesControl = {\n\tname: 'RolesControl',\n\tcomponents: { CellLayout, ColumnLayout, RichMenuPopup, RichMenuItem },\n\tprops: {\n\t\tuserGroups: {\n\t\t\ttype: Map,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tviewDialog: null,\n\tcomputed: {\n\t\tRichMenuItemIcon: () => RichMenuItemIcon,\n\t\t...mapState({\n\t\t\tallUserGroups: (state) => state.userGroups.collection,\n\t\t\tmaxVisibleUserGroups: (state) => state.application.options.maxVisibleUserGroups,\n\t\t\tguid: (state) => state.application.guid,\n\t\t}),\n\t\t...mapGetters({\n\t\t\tisMaxVisibleUserGroupsSet: 'application/isMaxVisibleUserGroupsSet',\n\t\t\tisMaxVisibleUserGroupsReached: 'userGroups/isMaxVisibleUserGroupsReached',\n\t\t}),\n\t\tshownGroupsCounter(): string {\n\t\t\treturn this.$Bitrix.Loc.getMessage(\n\t\t\t\t'JS_UI_ACCESSRIGHTS_V2_ROLE_COUNTER',\n\t\t\t\t{\n\t\t\t\t\t'#VISIBLE_ROLES#': this.userGroups.size,\n\t\t\t\t\t'#ALL_ROLES#': this.allUserGroups.size,\n\t\t\t\t\t'#GREY_START#': '<span style=\"opacity: var(--ui-opacity-30)\">',\n\t\t\t\t\t'#GREY_FINISH#': '</span>',\n\t\t\t\t},\n\t\t\t);\n\t\t},\n\t\tcopyDialogItems(): ItemOptions[] {\n\t\t\treturn ItemsMapper.mapUserGroups(this.allUserGroups);\n\t\t},\n\t\tviewDialogItems(): ItemOptions[] {\n\t\t\tconst result: ItemOptions[] = [];\n\n\t\t\tfor (const copyDialogItem of this.copyDialogItems)\n\t\t\t{\n\t\t\t\tresult.push({\n\t\t\t\t\t...copyDialogItem,\n\t\t\t\t\tselected: this.userGroups.has(copyDialogItem.id),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t},\n\tdata(): Object {\n\t\treturn {\n\t\t\tisPopupShown: false,\n\t\t};\n\t},\n\tmethods: {\n\t\tonCreateNewRoleClick(): void {\n\t\t\tif (this.isMaxVisibleUserGroupsReached)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isPopupShown = false;\n\n\t\t\tthis.$store.dispatch('userGroups/addUserGroup');\n\t\t},\n\t\tonRoleViewClick(): void {\n\t\t\tthis.isPopupShown = false;\n\n\t\t\tthis.showViewDialog(this.$refs.configure);\n\t\t},\n\t\tonCopyRoleClick(): void {\n\t\t\tif (this.isMaxVisibleUserGroupsReached)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isPopupShown = false;\n\n\t\t\tthis.showCopyDialog();\n\t\t},\n\t\tshowCopyDialog(): void {\n\t\t\tconst copyDialog = new Dialog({\n\t\t\t\tcontext: EntitySelectorContext.ROLE,\n\t\t\t\ttargetNode: this.$refs.configure,\n\t\t\t\tmultiple: false,\n\t\t\t\tdropdownMode: true,\n\t\t\t\tenableSearch: true,\n\t\t\t\tcacheable: false,\n\t\t\t\titems: this.copyDialogItems,\n\t\t\t\tevents: {\n\t\t\t\t\t'Item:onSelect': (dialogEvent: BaseEvent) => {\n\t\t\t\t\t\tconst { item } = dialogEvent.getData();\n\n\t\t\t\t\t\tthis.$store.dispatch('userGroups/copyUserGroup', { userGroupId: item.getId() });\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tcopyDialog.show();\n\t\t},\n\t\tshowViewDialog(target: HTMLElement): void {\n\t\t\tthis.viewDialog = new Dialog({\n\t\t\t\tcontext: EntitySelectorContext.ROLE,\n\t\t\t\tfooter: this.isMaxVisibleUserGroupsSet ? this.$Bitrix.Loc.getMessage(\n\t\t\t\t\t'JS_UI_ACCESSRIGHTS_V2_ROLE_SELECTOR_MAX_VISIBLE_WARNING',\n\t\t\t\t\t{\n\t\t\t\t\t\t'#COUNT#': this.maxVisibleUserGroups,\n\t\t\t\t\t},\n\t\t\t\t) : null,\n\t\t\t\ttargetNode: target,\n\t\t\t\tmultiple: true,\n\t\t\t\tdropdownMode: true,\n\t\t\t\tenableSearch: true,\n\t\t\t\tcacheable: false,\n\t\t\t\titems: this.viewDialogItems,\n\t\t\t\tevents: {\n\t\t\t\t\t'Item:onBeforeSelect': (dialogEvent: BaseEvent) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tthis.isMaxVisibleUserGroupsSet\n\t\t\t\t\t\t\t&& this.viewDialog.getSelectedItems().length >= this.maxVisibleUserGroups\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdialogEvent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'Item:onSelect': (dialogEvent: BaseEvent) => {\n\t\t\t\t\t\tconst { item } = dialogEvent.getData();\n\n\t\t\t\t\t\tthis.$store.dispatch('userGroups/showUserGroup', { userGroupId: item.getId() });\n\t\t\t\t\t},\n\t\t\t\t\t'Item:onDeselect': (dialogEvent: BaseEvent) => {\n\t\t\t\t\t\tconst { item } = dialogEvent.getData();\n\n\t\t\t\t\t\tthis.$store.dispatch('userGroups/hideUserGroup', { userGroupId: item.getId() });\n\t\t\t\t\t},\n\t\t\t\t\tonHide: () => {\n\t\t\t\t\t\tthis.viewDialog = null;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tthis.viewDialog.show();\n\t\t},\n\t\ttoggleViewDialog(target: HTMLElement): void {\n\t\t\tif (this.viewDialog)\n\t\t\t{\n\t\t\t\tthis.viewDialog.hide();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.showViewDialog(target);\n\t\t\t}\n\t\t},\n\t},\n\ttemplate: `\n\t\t<ColumnLayout>\n\t\t\t<CellLayout class=\"ui-access-rights-v2-header-roles-control\">\n\t\t\t\t<div class='ui-access-rights-v2-column-item-text ui-access-rights-v2-header-roles-control-header'>\n\t\t\t\t\t<div>{{ $Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ROLES') }}</div>\n\t\t\t\t\t<div\n\t\t\t\t\t\tref=\"configure\"\n\t\t\t\t\t\tclass=\"ui-icon-set --more ui-access-rights-v2-icon-more\"\n\t\t\t\t\t\t@click=\"isPopupShown = true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<RichMenuPopup v-if=\"isPopupShown\" @close=\"isPopupShown = false\" :popup-options=\"{bindElement: $refs.configure}\">\n\t\t\t\t\t\t\t<RichMenuItem\n\t\t\t\t\t\t\t\t:icon=\"RichMenuItemIcon.role\"\n\t\t\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_NEW_ROLE')\"\n\t\t\t\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_NEW_ROLE_SUBTITLE')\"\n\t\t\t\t\t\t\t\t:disabled=\"isMaxVisibleUserGroupsReached\"\n\t\t\t\t\t\t\t\t:hint=\"\n\t\t\t\t\t\t\t\t\tisMaxVisibleUserGroupsReached\n\t\t\t\t\t\t\t\t\t\t? $Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ROLE_ADDING_DISABLED', {\n\t\t\t\t\t\t\t\t\t\t\t'#COUNT#': maxVisibleUserGroups,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t@click=\"onCreateNewRoleClick\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<RichMenuItem\n\t\t\t\t\t\t\t\t:icon=\"RichMenuItemIcon.copy\"\n\t\t\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_COPY_ROLE')\"\n\t\t\t\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_COPY_ROLE_SUBTITLE')\"\n\t\t\t\t\t\t\t\t:disabled=\"isMaxVisibleUserGroupsReached\"\n\t\t\t\t\t\t\t\t:hint=\"\n\t\t\t\t\t\t\t\t\tisMaxVisibleUserGroupsReached\n\t\t\t\t\t\t\t\t\t\t? $Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ROLE_COPYING_DISABLED', {\n\t\t\t\t\t\t\t\t\t\t\t'#COUNT#': maxVisibleUserGroups,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t@click=\"onCopyRoleClick\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<RichMenuItem\n\t\t\t\t\t\t\t\t:icon=\"RichMenuItemIcon['opened-eye']\"\n\t\t\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ROLE_VIEW')\"\n\t\t\t\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ROLE_VIEW_SUBTITLE_MSGVER_1')\"\n\t\t\t\t\t\t\t\t@click=\"onRoleViewClick\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RichMenuPopup>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"ui-access-rights-v2-header-roles-control-actions\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tref=\"counter\"\n\t\t\t\t\t\tclass=\"ui-access-rights-v2-header-roles-control-counter\"\n\t\t\t\t\t\t@click=\"toggleViewDialog($refs.counter)\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div class=\"ui-icon-set --opened-eye\" style=\"--ui-icon-set__icon-size: 15px;\"></div>\n\t\t\t\t\t\t<span v-html=\"shownGroupsCounter\"></span>\n\t\t\t\t\t\t<div class=\"ui-icon-set --chevron-down ui-access-rights-v2-header-roles-control-chevron\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ui-access-rights-v2-header-roles-control-expander\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"ui-icon-set --collapse\"\n\t\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_COLLAPSE_ALL_SECTIONS')\"\n\t\t\t\t\t\t\t@click=\"$store.dispatch('accessRights/collapseAllSections')\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t\t<div \n\t\t\t\t\t\t\tclass=\"ui-icon-set --expand-1\"\n\t\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_EXPAND_ALL_SECTIONS')\"\n\t\t\t\t\t\t\t@click=\"$store.dispatch('accessRights/expandAllSections')\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</CellLayout>\n\t\t</ColumnLayout>\n\t`,\n};\n","import { Text } from 'main.core';\nimport { type BaseEvent } from 'main.core.events';\nimport { mapState } from 'ui.vue3.vuex';\n\nconst isMaxListenersSet: Map<string, boolean> = new Map();\nconst lastScrollLeft: Map<string, number> = new Map();\n\n/**\n * A div without styling that synchronizes horizontal scroll of all elements wrapped in this component with other\n * wrapped elements in this Vue application.\n */\nexport const SyncHorizontalScroll = {\n\tname: 'SyncHorizontalScroll',\n\tdata(): Object {\n\t\treturn {\n\t\t\tcomponentGuid: Text.getRandom(16),\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapState({\n\t\t\tguid: (state) => state.application.guid,\n\t\t}),\n\t},\n\tthrottledEmitScrollEvent: null,\n\tcreated()\n\t{\n\t\tthis.throttledEmitScrollEvent = requestAnimationFrameThrottle(this.emitScrollEvent);\n\t},\n\tmounted(): void {\n\t\tif (!isMaxListenersSet.has(this.guid))\n\t\t{\n\t\t\t// + 1 for header\n\t\t\tconst sectionsNumber = this.$store.state.accessRights.collection.size + 1;\n\n\t\t\t// correctly notify about memory leak\n\t\t\tthis.$Bitrix.eventEmitter.incrementMaxListeners('ui:accessrights:v2:syncScroll', sectionsNumber);\n\n\t\t\tisMaxListenersSet.set(this.guid, true);\n\t\t}\n\n\t\tthis.$Bitrix.eventEmitter.subscribe('ui:accessrights:v2:syncScroll', this.handleScrollEvent);\n\n\t\tvoid this.$nextTick(() => {\n\t\t\tif (lastScrollLeft.has(this.guid))\n\t\t\t{\n\t\t\t\tthis.syncScroll(lastScrollLeft.get(this.guid));\n\t\t\t}\n\t\t});\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.$Bitrix.eventEmitter.unsubscribe('ui:accessrights:v2:syncScroll', this.handleScrollEvent);\n\t},\n\tmethods: {\n\t\temitScrollEvent(event): void {\n\t\t\t// this component instance is being scrolled, we need to notify other instances\n\t\t\tconst { scrollLeft } = event.target;\n\n\t\t\tlastScrollLeft.set(this.guid, scrollLeft);\n\n\t\t\t// emit global application event so other SyncHorizontalScroll instances receive it\n\t\t\tthis.$Bitrix.eventEmitter.emit('ui:accessrights:v2:syncScroll', {\n\t\t\t\tscrollLeft,\n\t\t\t\tcomponentGuid: this.componentGuid,\n\t\t\t});\n\t\t},\n\t\thandleScrollEvent(event: BaseEvent): void {\n\t\t\tconst { scrollLeft, componentGuid } = event.getData();\n\t\t\tif (this.componentGuid === componentGuid)\n\t\t\t{\n\t\t\t\t// this event was sent by this exact instance\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.syncScroll(scrollLeft);\n\t\t},\n\t\tsyncScroll(scrollLeft: number): void {\n\t\t\t// magic hack - don't update the element if value not changed.\n\t\t\t// I'm not sure whether this works, but why not\n\t\t\tif (this.$el.scrollLeft !== scrollLeft)\n\t\t\t{\n\t\t\t\tthis.$el.scrollLeft = scrollLeft;\n\t\t\t}\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div @scroll=\"throttledEmitScrollEvent\">\n\t\t\t<slot/>\n\t\t</div>\n\t`,\n};\n\n/**\n * Same as `Runtime.throttle`, but uses `requestAnimationFrame` instead of setTimeout.\n * Why? To sync wait time with display refresh rate for smother animations.\n */\nfunction requestAnimationFrameThrottle(func: Function): Function\n{\n\tlet callbackSet = false;\n\tlet invoke = false;\n\n\treturn function wrapper(...args)\n\t{\n\t\tinvoke = true;\n\n\t\tif (!callbackSet)\n\t\t{\n\t\t\tconst q = function q()\n\t\t\t{\n\t\t\t\tif (invoke)\n\t\t\t\t{\n\t\t\t\t\tfunc(...args);\n\t\t\t\t\tinvoke = false;\n\t\t\t\t\trequestAnimationFrame(q);\n\t\t\t\t\tcallbackSet = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tcallbackSet = false;\n\t\t\t\t}\n\t\t\t};\n\t\t\tq();\n\t\t}\n\t};\n}\n","import { mapGetters, mapState } from 'ui.vue3.vuex';\nimport { Members } from './header/members';\nimport { RoleHeading } from './header/role-heading';\nimport { RolesControl } from './header/roles-control';\nimport { CellLayout } from './layout/cell-layout';\nimport { ColumnLayout } from './layout/column-layout';\nimport { SyncHorizontalScroll } from './util/sync-horizontal-scroll';\nimport { hint } from 'ui.vue3.directives.hint';\nimport 'ui.buttons';\n\n/**\n * A special case of Section\n */\n// @vue/component\nexport const Header = {\n\tname: 'Header',\n\tcomponents: { RoleHeading, SyncHorizontalScroll, Members, RolesControl, ColumnLayout, CellLayout },\n\tdirectives: {\n\t\thint,\n\t},\n\tprops: {\n\t\tuserGroups: {\n\t\t\ttype: Map,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\t...mapState({\n\t\t\tmaxVisibleUserGroups: (state) => state.application.options.maxVisibleUserGroups,\n\t\t}),\n\t\t...mapGetters({\n\t\t\tisMaxVisibleUserGroupsReached: 'userGroups/isMaxVisibleUserGroupsReached',\n\t\t}),\n\t},\n\tmethods: {\n\t\tonCreateNewRoleClick(): void\n\t\t{\n\t\t\tif (this.isMaxVisibleUserGroupsReached)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.$store.dispatch('userGroups/addUserGroup');\n\t\t},\n\t},\n\t// data attributes are needed for e2e automated tests\n\ttemplate: `\n\t\t<div class=\"ui-access-rights-v2-section ui-access-rights-v2--head-section\">\n\t\t\t<div class='ui-access-rights-v2-section-container'>\n\t\t\t\t<div class='ui-access-rights-v2-section-head'>\n\t\t\t\t\t<RolesControl :user-groups=\"userGroups\"/>\n\t\t\t\t</div>\n\t\t\t\t<div class='ui-access-rights-v2-section-content'>\n\t\t\t\t\t<SyncHorizontalScroll class='ui-access-rights-v2-section-wrapper'>\n\t\t\t\t\t\t<ColumnLayout\n\t\t\t\t\t\t\tv-for=\"[groupId, group] in userGroups\" \n\t\t\t\t\t\t\t:key=\"groupId\"\n\t\t\t\t\t\t\t:data-accessrights-user-group-id=\"groupId\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<CellLayout class=\"ui-access-rights-v2-header-role-cell\">\n\t\t\t\t\t\t\t\t<RoleHeading :user-group=\"group\"/>\n\t\t\t\t\t\t\t\t<Members :user-group=\"group\"/>\n\t\t\t\t\t\t\t</CellLayout>\n\t\t\t\t\t\t</ColumnLayout>\n\t\t\t\t\t\t<ColumnLayout>\n\t\t\t\t\t\t\t<div class=\"ui-access-rights-v2-header-role-add\">\n\t\t\t\t\t\t\t\t<button class=\"ui-btn ui-btn-light-border ui-btn-round ui-btn-disabled\"\n\t\t\t\t\t\t\t\t\t\tv-if=\"isMaxVisibleUserGroupsReached\"\n\t\t\t\t\t\t\t\t\t\tv-hint=\"$Bitrix.Loc.getMessage(\n\t\t\t\t\t\t\t\t\t 'JS_UI_ACCESSRIGHTS_V2_ROLE_ADDING_DISABLED', \n\t\t\t\t\t\t\t\t\t {'#COUNT#': maxVisibleUserGroups,})\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div class=\"ui-icon-set --plus-20\"/>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button class=\"ui-btn ui-btn-light-border ui-btn-round\"\n\t\t\t\t\t\t\t\t\t\tv-else\n\t\t\t\t\t\t\t\t\t\t@click=\"onCreateNewRoleClick\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div class=\"ui-icon-set --plus-20\"/>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ColumnLayout>\n\t\t\t\t\t</SyncHorizontalScroll>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`,\n};\n","import { Runtime } from 'main.core';\n\nexport const SearchBox = {\n\tname: 'SearchBox',\n\tdebouncedSetSearchQuery: null,\n\tcreated()\n\t{\n\t\tconst setSearchQuery = (query) => {\n\t\t\tthis.$store.dispatch('accessRights/search', { query });\n\t\t};\n\n\t\tthis.debouncedSetSearchQuery = Runtime.debounce(setSearchQuery, 200);\n\t},\n\tcomputed: {\n\t\tsearchQuery: {\n\t\t\tget(): string {\n\t\t\t\treturn this.$store.state.accessRights.searchQuery;\n\t\t\t},\n\t\t\tset(query: string): void {\n\t\t\t\tthis.debouncedSetSearchQuery(query);\n\t\t\t},\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div class=\"ui-ctl ui-ctl-after-icon ui-ctl-w100 ui-access-rights-v2-search\">\n\t\t\t<input\n\t\t\t\ttype=\"text\"\n\t\t\t\tclass=\"ui-ctl-element ui-ctl-textbox ui-access-rights-v2-search-input\"\n\t\t\t\t:placeholder=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SEARCH_PLACEHOLDER')\"\n\t\t\t\tv-model=\"searchQuery\"\n\t\t\t>\n\t\t\t<a class=\"ui-ctl-after ui-ctl-icon-search ui-access-rights-v2-search-icon\"></a>\n\t\t</div>\n\t`,\n};\n","import { Loc, Text, Type } from 'main.core';\nimport type { AccessRightItem, Variable, VariableCollection } from './store/model/access-rights-model';\n\nexport function shouldRowBeRendered(accessRightItem: AccessRightItem): boolean\n{\n\tif (!accessRightItem.isShown)\n\t{\n\t\treturn false;\n\t}\n\n\treturn !accessRightItem.group || accessRightItem.isGroupExpanded;\n}\n\nexport function getSelectedVariables(\n\tvariables: VariableCollection,\n\tselected: Set<string>,\n\tisAllSelected: boolean,\n): VariableCollection\n{\n\tif (isAllSelected)\n\t{\n\t\treturn variables;\n\t}\n\n\tconst selectedVariables = new Map();\n\n\tfor (const [variableId, variable] of variables)\n\t{\n\t\tif (selected.has(variableId))\n\t\t{\n\t\t\tselectedVariables.set(variableId, variable);\n\t\t}\n\t}\n\n\treturn selectedVariables;\n}\n\nexport function getMultipleSelectedVariablesTitle(selectedVariables: VariableCollection): string\n{\n\tconst lastVariable: Variable = [...selectedVariables.values()].pop();\n\n\tif (selectedVariables.size === 1)\n\t{\n\t\treturn lastVariable.title;\n\t}\n\n\treturn Loc.getMessage(\n\t\t'JS_UI_ACCESSRIGHTS_V2_HAS_SELECTED_ITEMS',\n\t\t{\n\t\t\t'#FIRST_ITEM_NAME#': cutLongTitle(lastVariable.title),\n\t\t\t'#COUNT_REST_ITEMS#': selectedVariables.size - 1,\n\t\t},\n\t);\n}\n\nfunction cutLongTitle(title: string): string\n{\n\tconst VARIABLE_TITLE_MAX_LENGTH = 15;\n\n\tif (title.length > VARIABLE_TITLE_MAX_LENGTH)\n\t{\n\t\treturn `${title.slice(0, VARIABLE_TITLE_MAX_LENGTH)}...`;\n\t}\n\n\treturn title;\n}\n\nexport function getMultipleSelectedVariablesHintHtml(\n\tselectedVariables: VariableCollection,\n\thintTitle: string,\n\tallVariables: VariableCollection,\n): string\n{\n\tif (selectedVariables.size < 2)\n\t{\n\t\treturn '';\n\t}\n\n\tlet listItems = '';\n\tfor (const value of makeSortedVariablesArray(selectedVariables, allVariables))\n\t{\n\t\tlistItems += `<li>${Text.encode(value.title)}</li>`;\n\t}\n\n\treturn `\n\t\t<p>${Text.encode(hintTitle)}</p>\n\t\t<ul>${listItems}</ul>\n\t`;\n}\n\nfunction makeSortedVariablesArray(toSort: VariableCollection, example: VariableCollection): Variable[]\n{\n\tconst orderMap = new Map();\n\n\tlet index = 0;\n\tfor (const [variableId] of example)\n\t{\n\t\torderMap.set(variableId, index);\n\n\t\tindex++;\n\t}\n\n\treturn [...toSort.values()].sort((a, b) => {\n\t\tconst indexA = orderMap.get(a.id);\n\t\tconst indexB = orderMap.get(b.id);\n\n\t\tif (Type.isNil(indexA))\n\t\t{\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (Type.isNil(indexB))\n\t\t{\n\t\t\treturn -1;\n\t\t}\n\n\t\treturn indexA - indexB;\n\t});\n}\n\nexport const DEFAULT_ALIAS_SEPARATOR = '|';\n\nexport function parseAliasKey(key: string, separator = DEFAULT_ALIAS_SEPARATOR): Set<string>\n{\n\tconst parts = key.split(separator);\n\n\treturn new Set(parts);\n}\n\nexport function compileAliasKey(parts: Set<string>, separator = DEFAULT_ALIAS_SEPARATOR): string\n{\n\tconst sortedParts = [...parts].sort();\n\n\treturn sortedParts.join(separator);\n}\n\nexport function normalizeAliasKey(key: string, separator = DEFAULT_ALIAS_SEPARATOR): string\n{\n\tconst parsed = parseAliasKey(key, separator);\n\n\treturn compileAliasKey(parsed, separator);\n}\n","import { Text, Type } from 'main.core';\nimport { DEFAULT_ALIAS_SEPARATOR, normalizeAliasKey } from '../../../../utils';\nimport type {\n\tAccessRightItem,\n\tAccessRightsCollection,\n\tAccessRightSection,\n\tAccessRightSectionAction,\n\tAccessRightSectionIcon,\n\tVariable,\n} from '../../access-rights-model';\nimport type { Transformer } from '../transformer';\n\nexport type ExternalAccessRightSection = {\n\tsectionTitle: ?any,\n\tsectionSubTitle: ?any,\n\tsectionCode: ?any,\n\tsectionHint: ?any,\n\tsectionIcon: ?any,\n\trights: ExternalAccessRightItem[],\n\taction: ?ExternalAccessRightSectionAction,\n};\n\nexport type ExternalAccessRightSectionAction = {\n\tbuttonText: string,\n};\n\nexport type ExternalAccessRightItem = {\n\tid: any,\n\ttype: any,\n\ttitle: any,\n\tsubtitle: ?any,\n\thint: ?any,\n\tgroup: ?any,\n\tgroupHead: ?any,\n\tminValue?: any | any[],\n\tmaxValue?: any | any[],\n\tdefaultValue?: any | any[],\n\tnothingSelectedValue?: any | any[],\n\tsetEmptyOnSetMinMaxValueInColumn: ?any,\n\n\tvariables?: ExternalVariable[],\n\n\tallSelectedCode: ?any,\n\tselectedVariablesAliases: {[key: string]: string} & {separator?: string},\n\tenableSearch?: any,\n\tshowAvatars?: any,\n\tcompactView?: any,\n\thintTitle: ?any,\n\tdependentVariablesPopupHint: ?any,\n\n\ticonClass: ?any,\n\tisClickable: ?any,\n\tisDeletable: ?any,\n\tisNew: ?any,\n\tisModified: ?any,\n};\n\nexport type ExternalVariable = {\n\tid: any,\n\ttitle: any,\n\tentityId: ?any,\n\tsupertitle: ?any,\n\tavatar: ?any,\n\tavatarOptions: ?any,\n\tconflictsWith?: any[],\n\trequires?: any[],\n\tsecondary: ?any,\n\thint: ?any,\n}\n\nexport class AccessRightsInternalizer implements Transformer<ExternalAccessRightSection[], AccessRightsCollection>\n{\n\ttransform(externalSource: ExternalAccessRightSection[]): AccessRightsCollection\n\t{\n\t\tconst result: AccessRightsCollection = new Map();\n\n\t\tfor (const external of externalSource)\n\t\t{\n\t\t\tconst internalized = this.#internalizeExternalSection(external);\n\t\t\tresult.set(internalized.sectionCode, internalized);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t#internalizeExternalSection(externalSection: ExternalAccessRightSection): AccessRightSection\n\t{\n\t\tconst internalizedSection: AccessRightSection = {\n\t\t\tsectionCode: Type.isStringFilled(externalSection.sectionCode)\n\t\t\t\t? externalSection.sectionCode\n\t\t\t\t: Text.getRandom(),\n\t\t\tsectionTitle: String(externalSection.sectionTitle),\n\t\t\tsectionSubTitle: Type.isStringFilled(externalSection.sectionSubTitle)\n\t\t\t\t? externalSection.sectionSubTitle\n\t\t\t\t: null,\n\t\t\tsectionHint: Type.isStringFilled(externalSection.sectionHint)\n\t\t\t\t? externalSection.sectionHint\n\t\t\t\t: null,\n\t\t\tsectionIcon: this.#internalizeExternalIcon(externalSection.sectionIcon),\n\t\t\trights: new Map(),\n\t\t\tisExpanded: true,\n\t\t\tisShown: true,\n\t\t\taction: this.#internalizeExternalSectionAction(externalSection.action),\n\t\t};\n\n\t\tfor (const externalItem of externalSection.rights)\n\t\t{\n\t\t\tconst internalizedItem = this.internalizeExternalItem(externalItem);\n\n\t\t\tinternalizedSection.rights.set(internalizedItem.id, internalizedItem);\n\t\t}\n\n\t\treturn internalizedSection;\n\t}\n\n\t#internalizeExternalIcon(externalIcon: ?any): ?AccessRightSectionIcon\n\t{\n\t\tif (Type.isStringFilled(externalIcon?.type) && Type.isStringFilled(externalIcon?.bgColor))\n\t\t{\n\t\t\treturn {\n\t\t\t\ttype: externalIcon.type,\n\t\t\t\tbgColor: externalIcon.bgColor,\n\t\t\t};\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t#internalizeExternalSectionAction(externalSectionAction: ExternalAccessRightSectionAction): ?AccessRightSectionAction\n\t{\n\t\tif (Type.isStringFilled(externalSectionAction?.buttonText))\n\t\t{\n\t\t\treturn {\n\t\t\t\tbuttonText: externalSectionAction.buttonText,\n\t\t\t};\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tinternalizeExternalItem(externalItem: ExternalAccessRightItem): AccessRightItem\n\t{\n\t\tconst [aliases, separator] = this.#internalizeSelectedVariablesAliases(externalItem.selectedVariablesAliases);\n\n\t\tconst normalizedItem: AccessRightItem = {\n\t\t\tid: String(externalItem.id),\n\t\t\ttype: String(externalItem.type),\n\t\t\ttitle: String(externalItem.title),\n\t\t\tsubtitle: Type.isStringFilled(externalItem.subtitle) ? externalItem.subtitle : null,\n\t\t\thint: Type.isStringFilled(externalItem.hint) ? externalItem.hint : null,\n\t\t\tgroup: Type.isNil(externalItem.group) ? null : String(externalItem.group),\n\t\t\tgroupHead: Type.isBoolean(externalItem.groupHead) ? externalItem.groupHead : false,\n\t\t\tisShown: true,\n\t\t\tminValue: this.#internalizeValueSet(externalItem.minValue),\n\t\t\tmaxValue: this.#internalizeValueSet(externalItem.maxValue),\n\t\t\tdefaultValue: this.#internalizeValueSet(externalItem.defaultValue),\n\t\t\temptyValue: this.#internalizeValueSet(externalItem.emptyValue),\n\t\t\tnothingSelectedValue: this.#internalizeValueSet(externalItem.nothingSelectedValue),\n\t\t\tsetEmptyOnSetMinMaxValueInColumn: this.#internalizeSetEmptyOnSetMinMaxValueInColumn(externalItem),\n\t\t\tvariables: Type.isArray(externalItem.variables) || Type.isMap(externalItem.variables) ? new Map() : null,\n\n\t\t\tallSelectedCode: Type.isStringFilled(externalItem.allSelectedCode) ? externalItem.allSelectedCode : null,\n\t\t\tselectedVariablesAliases: aliases,\n\t\t\tselectedVariablesAliasesSeparator: separator,\n\t\t\tenableSearch: Type.isBoolean(externalItem.enableSearch) ? externalItem.enableSearch : null,\n\t\t\tshowAvatars: Type.isBoolean(externalItem.showAvatars) ? externalItem.showAvatars : null,\n\t\t\tcompactView: Type.isBoolean(externalItem.compactView) ? externalItem.compactView : null,\n\t\t\thintTitle: Type.isStringFilled(externalItem.hintTitle) ? externalItem.hintTitle : null,\n\t\t\tdependentVariablesPopupHint: Type.isStringFilled(externalItem.dependentVariablesPopupHint)\n\t\t\t\t? externalItem.dependentVariablesPopupHint\n\t\t\t\t: null,\n\n\t\t\ticonClass: Type.isStringFilled(externalItem.iconClass) ? externalItem.iconClass : null,\n\t\t\tisClickable: Type.isBoolean(externalItem.isClickable) ? externalItem.isClickable : false,\n\t\t\tisDeletable: Type.isBoolean(externalItem.isDeletable) ? externalItem.isDeletable : false,\n\t\t\tisNew: Type.isBoolean(externalItem.isNew) ? externalItem.isNew : false,\n\t\t\tisModified: Type.isBoolean(externalItem.isModified) ? externalItem.isModified : false,\n\t\t};\n\t\tif (normalizedItem.groupHead || normalizedItem.group)\n\t\t{\n\t\t\tnormalizedItem.isGroupExpanded = false;\n\t\t}\n\n\t\tif (Type.isArray(externalItem.variables))\n\t\t{\n\t\t\tfor (const variable of externalItem.variables)\n\t\t\t{\n\t\t\t\tconst normalizedVariable = this.#internalizeExternalVariable(variable);\n\n\t\t\t\tnormalizedItem.variables.set(normalizedVariable.id, normalizedVariable);\n\t\t\t}\n\t\t}\n\t\telse if (Type.isMap(externalItem.variables))\n\t\t{\n\t\t\tfor (const variable of externalItem.variables.values())\n\t\t\t{\n\t\t\t\tconst normalizedVariable = this.#internalizeExternalVariable(variable);\n\n\t\t\t\tnormalizedItem.variables.set(normalizedVariable.id, normalizedVariable);\n\t\t\t}\n\t\t}\n\n\t\treturn normalizedItem;\n\t}\n\n\t#internalizeSelectedVariablesAliases(externalAliases: {[key: string]: string} & {separator?: string}): [Map, string]\n\t{\n\t\tif (!Type.isPlainObject(externalAliases))\n\t\t{\n\t\t\treturn [new Map(), DEFAULT_ALIAS_SEPARATOR];\n\t\t}\n\n\t\tconst separator = Type.isString(externalAliases.separator) ? externalAliases.separator : DEFAULT_ALIAS_SEPARATOR;\n\n\t\tconst result = new Map();\n\t\tfor (const [key, value] of Object.entries(externalAliases))\n\t\t{\n\t\t\tif (key === 'separator')\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tresult.set(normalizeAliasKey(key, separator), String(value));\n\t\t}\n\n\t\treturn [result, separator];\n\t}\n\n\t#internalizeValueSet(value: any | any[] | undefined): ?Set<string>\n\t{\n\t\tif (Type.isNil(value))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (Type.isArray(value))\n\t\t{\n\t\t\treturn new Set(value.map((item) => String(item)));\n\t\t}\n\n\t\tif (Type.isSet(value))\n\t\t{\n\t\t\treturn new Set(Array.from(value, (item) => String(item)));\n\t\t}\n\n\t\treturn new Set([String(value)]);\n\t}\n\n\t#internalizeSetEmptyOnSetMinMaxValueInColumn(externalItem: ExternalAccessRightItem): ?boolean\n\t{\n\t\tconst boolOrNull = (x: any) => (Type.isBoolean(x) ? x : null);\n\n\t\tif (!Type.isUndefined(externalItem.setEmptyOnSetMinMaxValueInColumn))\n\t\t{\n\t\t\treturn boolOrNull(externalItem.setEmptyOnSetMinMaxValueInColumn);\n\t\t}\n\n\t\t// todo compatibility, can be removed when crm update is out\n\t\treturn boolOrNull(externalItem.setEmptyOnGroupActions);\n\t}\n\n\t#internalizeExternalVariable(externalVariable: ExternalVariable): Variable\n\t{\n\t\treturn {\n\t\t\tid: String(externalVariable.id),\n\t\t\ttitle: String(externalVariable.title),\n\t\t\tentityId: Type.isStringFilled(externalVariable.entityId) ? externalVariable.entityId : null,\n\t\t\tsupertitle: Type.isStringFilled(externalVariable.supertitle) ? externalVariable.supertitle : null,\n\t\t\tavatar: Type.isStringFilled(externalVariable.avatar) ? externalVariable.avatar : null,\n\t\t\tavatarOptions: Type.isPlainObject(externalVariable.avatarOptions) ? externalVariable.avatarOptions : null,\n\t\t\tconflictsWith: Type.isArray(externalVariable.conflictsWith)\n\t\t\t\t? new Set(externalVariable.conflictsWith.map((x) => String(x)))\n\t\t\t\t: null,\n\t\t\trequires: Type.isArray(externalVariable.requires)\n\t\t\t\t? new Set(externalVariable.requires.map((x) => String(x)))\n\t\t\t\t: null,\n\t\t\tsecondary: Type.isBoolean(externalVariable.secondary) ? externalVariable.secondary : null,\n\t\t\thint: Type.isStringFilled(externalVariable.hint) ? externalVariable.hint : null,\n\t\t};\n\t}\n}\n","import { Runtime, Type } from 'main.core';\nimport { type ActionTree, BuilderModel, GetterTree, type MutationTree } from 'ui.vue3.vuex';\nimport { ServiceLocator } from '../../service/service-locator';\nimport { compileAliasKey } from '../../utils';\nimport { AccessRightsInternalizer } from './transformation/internalizer/access-rights-internalizer';\n\nexport type AccessRightsState = {\n\tcollection: AccessRightsCollection,\n\tsearchQuery: string,\n\tdeleted: Set<string>,\n}\n\nexport type AccessRightsCollection = Map<string, AccessRightSection>;\n\nexport type AccessRightSection = {\n\tsectionTitle: string,\n\tsectionSubTitle: ?string,\n\tsectionCode: string, // not sent to backend, frontend uses it only for indexing\n\tsectionHint: ?string,\n\tsectionIcon?: AccessRightSectionIcon,\n\trights: Map<string, AccessRightItem>,\n\tisExpanded: boolean,\n\tisShown: boolean,\n\taction: ?AccessRightSectionAction,\n};\n\nexport type AccessRightSectionIcon = {\n\ttype: string, // icon name from 'ui.icon-set'\n\tbgColor: string, // hex or --ui-color-palette-* variable name\n};\n\nexport type AccessRightSectionAction = {\n\tbuttonText: string,\n};\n\nexport type AccessRightItem = {\n\tid: string,\n\ttype: string,\n\ttitle: string,\n\tsubtitle: ?string,\n\thint: ?string, // hint for row title in the title column\n\tgroup: ?string, // id of parent item id\n\tgroupHead: boolean,\n\tisGroupExpanded: ?boolean, // only for group head and grouped items\n\tisShown: boolean,\n\tminValue?: Set<string>,\n\tmaxValue?: Set<string>,\n\tdefaultValue?: Set<string>,\n\temptyValue?: Set<string>,\n\tnothingSelectedValue?: Set<string>,\n\tsetEmptyOnSetMinMaxValueInColumn?: boolean,\n\n\tvariables: VariableCollection, // options to choose from in variable-like controls\n\n\t// only for multivariable\n\tallSelectedCode: ?string,\n\tselectedVariablesAliases: Map<string, string>,\n\tselectedVariablesAliasesSeparator: ?string,\n\tenableSearch?: boolean,\n\tshowAvatars?: boolean,\n\tcompactView?: boolean,\n\thintTitle: ?string, // title for 'already selected values' hint in multivariable and dependent-variables selector\n\tdependentVariablesPopupHint: ?string, // hint in dependent-variables popup under all switchers\n\n\t// clickable right with icon\n\ticonClass: ?string,\n\tisClickable: boolean,\n\tisDeletable: boolean,\n\tisNew: boolean,\n\tisModified: boolean,\n};\n\nexport type VariableCollection = Map<string, Variable>;\n\nexport type Variable = {\n\tid: string,\n\ttitle: string,\n\t// used only in multivariable selector\n\tentityId: ?string,\n\tsupertitle: ?string,\n\tavatar: ?string,\n\tavatarOptions: ?Object,\n\t// used only in dependent-variables\n\tconflictsWith?: Set<string>,\n\trequires?: Set<string>,\n\tsecondary: ?boolean, // switcher color and size for dependent-variables\n\thint: ?string,\n}\n\nexport class AccessRightsModel extends BuilderModel\n{\n\t#initialRights: AccessRightsCollection = new Map();\n\n\tgetName(): string\n\t{\n\t\treturn 'accessRights';\n\t}\n\n\tsetInitialAccessRights(rights: AccessRightsCollection): AccessRightsModel\n\t{\n\t\tthis.#initialRights = rights;\n\n\t\treturn this;\n\t}\n\n\tgetState(): AccessRightsState\n\t{\n\t\treturn {\n\t\t\tcollection: Runtime.clone(this.#initialRights),\n\t\t\tsearchQuery: '',\n\t\t\tdeleted: new Set(),\n\t\t};\n\t}\n\n\tgetElementState(params = {}): AccessRightSection\n\t{\n\t\tthrow new Error('Cant create AccessRightSection. You are doing something wrong');\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function\n\tgetGetters(): GetterTree<AccessRightsState>\n\t{\n\t\treturn {\n\t\t\tshown: (state): AccessRightsCollection => {\n\t\t\t\tconst result = new Map();\n\n\t\t\t\tfor (const [sectionCode, section] of state.collection)\n\t\t\t\t{\n\t\t\t\t\tif (section.isShown)\n\t\t\t\t\t{\n\t\t\t\t\t\tresult.set(sectionCode, section);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tisMinValueSetForAny: (state, getters): boolean => {\n\t\t\t\tfor (const section of state.collection.values())\n\t\t\t\t{\n\t\t\t\t\tfor (const item of section.rights.values())\n\t\t\t\t\t{\n\t\t\t\t\t\tconst isSet = getters.isMinValueSet(section.sectionCode, item.id);\n\t\t\t\t\t\tif (isSet)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisMinValueSet: (state) => (sectionCode: string, rightId: string): boolean => {\n\t\t\t\tconst item = state.collection.get(sectionCode)?.rights.get(rightId);\n\t\t\t\tif (!item)\n\t\t\t\t{\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'ui.accessrights.v2: attempt to check if min value set for unknown right',\n\t\t\t\t\t\t{ sectionCode, rightId },\n\t\t\t\t\t);\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn !Type.isNil(item.minValue);\n\t\t\t},\n\t\t\tisMaxValueSetForAny: (state, getters): boolean => {\n\t\t\t\tfor (const section of state.collection.values())\n\t\t\t\t{\n\t\t\t\t\tfor (const item of section.rights.values())\n\t\t\t\t\t{\n\t\t\t\t\t\tconst isSet = getters.isMaxValueSet(section.sectionCode, item.id);\n\t\t\t\t\t\tif (isSet)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisMaxValueSet: (state) => (sectionCode: string, rightId: string): boolean => {\n\t\t\t\tconst item = state.collection.get(sectionCode)?.rights.get(rightId);\n\t\t\t\tif (!item)\n\t\t\t\t{\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'ui.accessrights.v2: attempt to check if max value set for unknown right',\n\t\t\t\t\t\t{ sectionCode, rightId },\n\t\t\t\t\t);\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn !Type.isNil(item.maxValue);\n\t\t\t},\n\t\t\tgetEmptyValue: (state) => (sectionCode: string, valueId: string): Set<string> => {\n\t\t\t\tconst item = state.collection.get(sectionCode)?.rights.get(valueId);\n\t\t\t\tif (!item)\n\t\t\t\t{\n\t\t\t\t\treturn new Set();\n\t\t\t\t}\n\n\t\t\t\treturn ServiceLocator.getValueTypeByRight(item)?.getEmptyValue(item) ?? new Set();\n\t\t\t},\n\t\t\tgetNothingSelectedValue: (state, getters) => (sectionCode: string, valueId: string): Set<string> => {\n\t\t\t\tconst item = state.collection.get(sectionCode)?.rights.get(valueId);\n\n\t\t\t\treturn item?.nothingSelectedValue ?? getters.getEmptyValue(sectionCode, valueId);\n\t\t\t},\n\t\t\tgetSelectedVariablesAlias: (state) => (sectionCode: string, valueId: string, values: Set<string>): ?string => {\n\t\t\t\tconst item = state.collection.get(sectionCode)?.rights.get(valueId);\n\t\t\t\tif (!item)\n\t\t\t\t{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst key = compileAliasKey(values, item.selectedVariablesAliasesSeparator);\n\n\t\t\t\treturn item.selectedVariablesAliases.get(key);\n\t\t\t},\n\t\t\tisModified: (state): boolean => {\n\t\t\t\tif (state.deleted.size > 0)\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfor (const section: AccessRightSection of state.collection.values())\n\t\t\t\t{\n\t\t\t\t\tfor (const rightItem: AccessRightItem of section.rights.values())\n\t\t\t\t\t{\n\t\t\t\t\t\tif (rightItem.isNew || rightItem.isModified)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree<AccessRightsState>\n\t{\n\t\treturn {\n\t\t\ttoggleSection: (store, { sectionCode }): void => {\n\t\t\t\tif (!store.state.collection.has(sectionCode))\n\t\t\t\t{\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: Attempt to toggle section that dont exists', { sectionCode });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('toggleSection', { sectionCode });\n\t\t\t},\n\t\t\texpandAllSections: (store): void => {\n\t\t\t\tfor (const sectionCode of store.state.collection.keys())\n\t\t\t\t{\n\t\t\t\t\tstore.commit('expandSection', { sectionCode });\n\t\t\t\t}\n\t\t\t},\n\t\t\tcollapseAllSections: (store): void => {\n\t\t\t\tfor (const sectionCode of store.state.collection.keys())\n\t\t\t\t{\n\t\t\t\t\tstore.commit('collapseSection', { sectionCode });\n\t\t\t\t}\n\t\t\t},\n\t\t\ttoggleGroup: (store, { sectionCode, groupId }): void => {\n\t\t\t\tconst item = store.state.collection.get(sectionCode)?.rights.get(groupId);\n\t\t\t\tif (!item)\n\t\t\t\t{\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: Attempt to toggle group that dont exists', { groupId });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!item.groupHead)\n\t\t\t\t{\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: Attempt to toggle group that is not group head', { groupId });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('toggleGroup', { sectionCode, groupId });\n\t\t\t},\n\t\t\tsearch: (store, payload): void => {\n\t\t\t\tthis.#searchAction(store, payload);\n\t\t\t},\n\t\t\taddRight: (store, { sectionCode, right }): void => {\n\t\t\t\tif (!store.state.collection.has(sectionCode))\n\t\t\t\t{\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: Adding right to section that doesn`t exists', { sectionCode });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst section: AccessRightSection = store.state.collection.get(sectionCode);\n\t\t\t\tif (section)\n\t\t\t\t{\n\t\t\t\t\tconst internalRight: AccessRightItem = (new AccessRightsInternalizer()).internalizeExternalItem(right);\n\t\t\t\t\tstore.commit('expandSection', { sectionCode });\n\t\t\t\t\tstore.commit('addRight', { sectionCode, right: internalRight });\n\t\t\t\t}\n\t\t\t},\n\t\t\tupdateRightTitle: (store, { sectionCode, rightId, rightTitle }): void => {\n\t\t\t\tif (!store.state.collection.has(sectionCode))\n\t\t\t\t{\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: Updating right in section that doesn`t exists', { sectionCode });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst section: AccessRightSection = store.state.collection.get(sectionCode);\n\t\t\t\tif (!section.rights.has(rightId))\n\t\t\t\t{\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: Updating right that doesn`t exists', { rightId });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('expandSection', { sectionCode });\n\t\t\t\tstore.commit('setRightTitle', { sectionCode, rightId, title: rightTitle });\n\t\t\t},\n\t\t\tupdateRightSubtitle: (store, { sectionCode, rightId, rightSubtitle }): void => {\n\t\t\t\tif (!store.state.collection.has(sectionCode))\n\t\t\t\t{\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: Updating right in section that doesn`t exists', { sectionCode });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst section: AccessRightSection = store.state.collection.get(sectionCode);\n\t\t\t\tif (!section.rights.has(rightId))\n\t\t\t\t{\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: Updating right that doesn`t exists', { rightId });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('expandSection', { sectionCode });\n\t\t\t\tstore.commit('setRightSubtitle', { sectionCode, rightId, subtitle: rightSubtitle });\n\t\t\t},\n\t\t\tdeleteRight: (store, { sectionCode, rightId }): void => {\n\t\t\t\tif (!store.state.collection.has(sectionCode))\n\t\t\t\t{\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: Deleting right in section that doesn`t exists', { sectionCode });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst section: AccessRightSection = store.state.collection.get(sectionCode);\n\t\t\t\tif (!section.rights.has(rightId))\n\t\t\t\t{\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: Deleting right that doesn`t exists', { rightId });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('expandSection', { sectionCode });\n\t\t\t\tstore.commit('deleteRight', { sectionCode, rightId });\n\t\t\t},\n\t\t\tmarkRightAsModified: (store, { sectionCode, rightId, isModified }): void => {\n\t\t\t\tif (!store.state.collection.has(sectionCode))\n\t\t\t\t{\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: Updating right in section that doesn`t exists', { sectionCode });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst section: AccessRightSection = store.state.collection.get(sectionCode);\n\t\t\t\tif (!section.rights.has(rightId))\n\t\t\t\t{\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: Updating right that doesn`t exists', { rightId });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstore.commit('expandSection', { sectionCode });\n\t\t\t\tstore.commit('markRightAsModified', { sectionCode, rightId, isModified });\n\t\t\t},\n\t\t};\n\t}\n\n\t#searchAction(store, { query }): void\n\t{\n\t\tif (!Type.isString(query))\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: attempt to search with non-string search query');\n\n\t\t\treturn;\n\t\t}\n\n\t\tstore.commit('setSearchQuery', { query });\n\t\tif (query === '')\n\t\t{\n\t\t\tstore.commit('showAll');\n\n\t\t\treturn;\n\t\t}\n\n\t\tstore.commit('hideAll');\n\n\t\tconst lowerQuery = query.toLowerCase();\n\n\t\tfor (const section: AccessRightSection of store.state.collection.values())\n\t\t{\n\t\t\tif (\n\t\t\t\tsection.sectionTitle.toLowerCase().includes(lowerQuery)\n\t\t\t\t|| section.sectionSubTitle?.toLowerCase().includes(lowerQuery)\n\t\t\t)\n\t\t\t{\n\t\t\t\tstore.commit('showSection', { sectionCode: section.sectionCode });\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor (const item: AccessRightItem of section.rights.values())\n\t\t\t{\n\t\t\t\tif (!item.title.toLowerCase().includes(lowerQuery))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (item.groupHead)\n\t\t\t\t{\n\t\t\t\t\tstore.commit('showGroup', { sectionCode: section.sectionCode, groupId: item.id });\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tstore.commit('showItem', { sectionCode: section.sectionCode, itemId: item.id });\n\t\t\t\t\tif (item.group)\n\t\t\t\t\t{\n\t\t\t\t\t\tstore.commit('expandGroup', { sectionCode: section.sectionCode, groupId: item.group });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// eslint-disable-next-line max-lines-per-function\n\tgetMutations(): MutationTree<AccessRightsState>\n\t{\n\t\treturn {\n\t\t\taddRight: (state, { sectionCode, right }): void => {\n\t\t\t\tconst section = state.collection.get(sectionCode);\n\t\t\t\tsection.rights.set(right.id, right);\n\t\t\t},\n\t\t\tsetRightTitle: (state, { sectionCode, rightId, title }): void => {\n\t\t\t\tconst section = state.collection.get(sectionCode);\n\t\t\t\tsection.rights.get(rightId).title = title;\n\t\t\t},\n\t\t\tsetRightSubtitle: (state, { sectionCode, rightId, subtitle }): void => {\n\t\t\t\tconst section = state.collection.get(sectionCode);\n\t\t\t\tsection.rights.get(rightId).subtitle = subtitle;\n\t\t\t},\n\t\t\tdeleteRight: (state, { sectionCode, rightId }): void => {\n\t\t\t\tconst section: AccessRightSection = state.collection.get(sectionCode);\n\t\t\t\tsection.rights.delete(rightId);\n\t\t\t\tstate.deleted.add(rightId);\n\t\t\t},\n\t\t\tmarkRightAsModified: (state, { sectionCode, rightId, isModified }): void => {\n\t\t\t\tconst section = state.collection.get(sectionCode);\n\t\t\t\tsection.rights.get(rightId).isModified = isModified;\n\t\t\t},\n\t\t\ttoggleSection: (state, { sectionCode }): void => {\n\t\t\t\tconst section = state.collection.get(sectionCode);\n\n\t\t\t\tsection.isExpanded = !section.isExpanded;\n\t\t\t},\n\t\t\texpandSection: (state, { sectionCode }): void => {\n\t\t\t\tconst section = state.collection.get(sectionCode);\n\n\t\t\t\tsection.isExpanded = true;\n\t\t\t},\n\t\t\tcollapseSection: (state, { sectionCode }): void => {\n\t\t\t\tconst section = state.collection.get(sectionCode);\n\n\t\t\t\tsection.isExpanded = false;\n\t\t\t},\n\t\t\ttoggleGroup: (state, { sectionCode, groupId }): void => {\n\t\t\t\tconst section = state.collection.get(sectionCode);\n\n\t\t\t\tfor (const item of section.rights.values())\n\t\t\t\t{\n\t\t\t\t\tif (\n\t\t\t\t\t\t(item.id === groupId && item.groupHead)\n\t\t\t\t\t\t|| item.group === groupId\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\titem.isGroupExpanded = !item.isGroupExpanded;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\texpandGroup: (state, { sectionCode, groupId }): void => {\n\t\t\t\tconst section = state.collection.get(sectionCode);\n\n\t\t\t\tsection.isExpanded = true;\n\n\t\t\t\tfor (const item of section.rights.values())\n\t\t\t\t{\n\t\t\t\t\tif (\n\t\t\t\t\t\t(item.id === groupId && item.groupHead)\n\t\t\t\t\t\t|| item.group === groupId\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\titem.isGroupExpanded = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tshowItem: (state, { sectionCode, itemId }): void => {\n\t\t\t\tconst section = state.collection.get(sectionCode);\n\t\t\t\tsection.isShown = true;\n\n\t\t\t\tconst item = section.rights.get(itemId);\n\t\t\t\titem.isShown = true;\n\t\t\t\tif (item.group)\n\t\t\t\t{\n\t\t\t\t\tsection.rights.get(item.group).isShown = true;\n\t\t\t\t}\n\t\t\t},\n\t\t\tshowGroup: (state, { sectionCode, groupId }): void => {\n\t\t\t\tconst section = state.collection.get(sectionCode);\n\n\t\t\t\tsection.isShown = true;\n\n\t\t\t\tfor (const item of section.rights.values())\n\t\t\t\t{\n\t\t\t\t\tif (\n\t\t\t\t\t\t(item.id === groupId && item.groupHead)\n\t\t\t\t\t\t|| item.group === groupId\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\titem.isShown = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tshowSection: (state, { sectionCode }): void => {\n\t\t\t\tconst section = state.collection.get(sectionCode);\n\t\t\t\tsection.isShown = true;\n\t\t\t\tfor (const item of section.rights.values())\n\t\t\t\t{\n\t\t\t\t\titem.isShown = true;\n\t\t\t\t}\n\t\t\t},\n\t\t\tshowAll: (state): void => {\n\t\t\t\tfor (const section of state.collection.values())\n\t\t\t\t{\n\t\t\t\t\tsection.isShown = true;\n\t\t\t\t\tfor (const item of section.rights.values())\n\t\t\t\t\t{\n\t\t\t\t\t\titem.isShown = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\thideAll: (state): void => {\n\t\t\t\tfor (const section of state.collection.values())\n\t\t\t\t{\n\t\t\t\t\tsection.isShown = false;\n\t\t\t\t\tfor (const item of section.rights.values())\n\t\t\t\t\t{\n\t\t\t\t\t\titem.isShown = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tsetSearchQuery: (state, { query }): void => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.searchQuery = String(query);\n\t\t\t},\n\t\t};\n\t}\n}\n","import { Runtime } from 'main.core';\nimport { type PopupOptions } from 'main.popup';\nimport { Dialog, type ItemOptions } from 'ui.entity-selector';\nimport { RichMenuItem, RichMenuItemIcon, RichMenuPopup } from 'ui.vue3.components.rich-menu';\nimport { mapGetters } from 'ui.vue3.vuex';\nimport { EntitySelectorContext } from '../../../integration/entity-selector/dictionary';\nimport { ItemsMapper } from '../../../integration/entity-selector/items-mapper';\nimport type { UserGroupsCollection } from '../../../store/model/user-groups-model';\nimport { CellLayout } from '../../layout/cell-layout';\nimport '../../../css/section/menu-cell.css';\n\nexport const MenuCell = {\n\tname: 'MenuCell',\n\tcomponents: {\n\t\tCellLayout,\n\t\tRichMenuPopup,\n\t\tRichMenuItem,\n\t},\n\tinject: ['section', 'userGroup'],\n\tdata(): Object {\n\t\treturn {\n\t\t\tisMenuShown: false,\n\t\t};\n\t},\n\tcomputed: {\n\t\tRichMenuItemIcon: () => RichMenuItemIcon,\n\t\t...mapGetters({\n\t\t\tisMaxValueSetForAny: 'accessRights/isMaxValueSetForAny',\n\t\t\tisMinValueSetForAny: 'accessRights/isMinValueSetForAny',\n\t\t}),\n\t\tmenuPopupOptions(): PopupOptions {\n\t\t\tconst width = 290;\n\n\t\t\treturn {\n\t\t\t\tbindElement: this.$refs.icon,\n\t\t\t\twidth,\n\t\t\t\t// by default popup is positioned so that the left top angle is below the bind element.\n\t\t\t\t// we need to position it in the center of the column\n\t\t\t\toffsetLeft: -Math.floor(width / 2) + 9,\n\t\t\t};\n\t\t},\n\t\tshownUserGroupsWithoutCurrent(): UserGroupsCollection {\n\t\t\tconst shown: UserGroupsCollection = this.$store.getters['userGroups/shown'];\n\n\t\t\tconst shownWithoutCurrent: UserGroupsCollection = Runtime.clone(shown);\n\t\t\tshownWithoutCurrent.delete(this.userGroup.id);\n\n\t\t\treturn shownWithoutCurrent;\n\t\t},\n\t\tapplyDialogItems(): ItemOptions[] {\n\t\t\treturn ItemsMapper.mapUserGroups(this.shownUserGroupsWithoutCurrent);\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleMenu(): void\n\t\t{\n\t\t\tthis.isMenuShown = !this.isMenuShown;\n\t\t},\n\t\tshowApplyDialog(): void\n\t\t{\n\t\t\tthis.isMenuShown = false;\n\n\t\t\tconst applyDialog = new Dialog({\n\t\t\t\tcontext: EntitySelectorContext.ROLE,\n\t\t\t\ttargetNode: this.$refs.icon,\n\t\t\t\tmultiple: false,\n\t\t\t\tdropdownMode: true,\n\t\t\t\tenableSearch: true,\n\t\t\t\tcacheable: false,\n\t\t\t\titems: this.applyDialogItems,\n\t\t\t\tevents: {\n\t\t\t\t\t'Item:onSelect': (dialogEvent: BaseEvent) => {\n\t\t\t\t\t\tconst { item } = dialogEvent.getData();\n\n\t\t\t\t\t\tthis.$store.dispatch('userGroups/copySectionValues', {\n\t\t\t\t\t\t\tsrcUserGroupId: this.userGroup.id,\n\t\t\t\t\t\t\tdstUserGroupId: item.getId(),\n\t\t\t\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tapplyDialog.show();\n\t\t},\n\t\tsetMaxValuesInSection(): void\n\t\t{\n\t\t\tthis.isMenuShown = false;\n\n\t\t\tthis.$store.dispatch('userGroups/setMaxAccessRightValuesInSection', {\n\t\t\t\tuserGroupId: this.userGroup.id,\n\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t});\n\t\t},\n\t\tsetMinValuesInSection(): void\n\t\t{\n\t\t\tthis.isMenuShown = false;\n\n\t\t\tthis.$store.dispatch('userGroups/setMinAccessRightValuesInSection', {\n\t\t\t\tuserGroupId: this.userGroup.id,\n\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\n\t\t<CellLayout class=\"ui-access-rights-v2-menu-cell\" style=\"cursor: pointer\" @click=\"toggleMenu\">\n\t\t\t<div\n\t\t\t\tref=\"icon\"\n\t\t\t\tclass=\"ui-icon-set --more ui-access-rights-v2-icon-more\"\n\t\t\t>\n\t\t\t\t<RichMenuPopup\n\t\t\t\t\tv-if=\"isMenuShown\"\n\t\t\t\t\t@close=\"isMenuShown = false\"\n\t\t\t\t\t:popup-options=\"menuPopupOptions\"\n\t\t\t\t>\n\t\t\t\t\t<RichMenuItem\n\t\t\t\t\t\tv-if=\"isMaxValueSetForAny\"\n\t\t\t\t\t\t:icon=\"RichMenuItemIcon.check\"\n\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SET_MAX_ACCESS_RIGHTS')\"\n\t\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage(\n\t\t\t\t\t\t\t'JS_UI_ACCESSRIGHTS_V2_SET_MAX_ACCESS_RIGHTS_SUBTITLE_SECTION',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'#SECTION#': section.sectionTitle + (section.sectionSubTitle ? (' ' + section.sectionSubTitle) : ''),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\"\n\t\t\t\t\t\t@click=\"setMaxValuesInSection\"\n\t\t\t\t\t/>\n\t\t\t\t\t<RichMenuItem\n\t\t\t\t\t\tv-if=\"isMinValueSetForAny\"\n\t\t\t\t\t\t:icon=\"RichMenuItemIcon['red-lock']\"\n\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SET_MIN_ACCESS_RIGHTS')\"\n\t\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage(\n\t\t\t\t\t\t\t'JS_UI_ACCESSRIGHTS_V2_SET_MIN_ACCESS_RIGHTS_SUBTITLE_SECTION',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'#SECTION#': section.sectionTitle + (section.sectionSubTitle ? (' ' + section.sectionSubTitle) : ''),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\"\n\t\t\t\t\t\t@click=\"setMinValuesInSection\"\n\t\t\t\t\t/>\n\t\t\t\t\t<RichMenuItem\n\t\t\t\t\t\t:icon=\"RichMenuItemIcon.copy\"\n\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_APPLY_TO_ROLE')\"\n\t\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_APPLY_TO_ROLE_SUBTITLE')\"\n\t\t\t\t\t\t@click=\"showApplyDialog\"\n\t\t\t\t\t/>\n\t\t\t\t</RichMenuPopup>\n\t\t\t</div>\n\t\t</CellLayout>\n\t`,\n};\n","export const Icon = {\n\tname: 'Icon',\n\tinject: ['section'],\n\tcomputed: {\n\t\ticonBgColor(): string {\n\t\t\tif (this.section.sectionIcon.bgColor.startsWith('--'))\n\t\t\t{\n\t\t\t\t// css variable\n\t\t\t\treturn `var(${this.section.sectionIcon.bgColor})`;\n\t\t\t}\n\n\t\t\t// we assume its hex\n\t\t\treturn this.section.sectionIcon.bgColor;\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div v-if=\"section.sectionIcon\" class=\"ui-access-rights-v2-section-header-icon\" :style=\"{\n\t\t\tbackgroundColor: iconBgColor,\n\t\t}\">\n\t\t\t<div class=\"ui-icon-set\" :class=\"'--' + section.sectionIcon.type\"></div>\n\t\t</div>\n\t`,\n};\n","import { Icon as SectionIcon } from '../../icon';\nimport '../../../../css/value/popup-header/locator.css';\n\nexport const Locator = {\n\tname: 'Locator',\n\tcomponents: { SectionIcon },\n\tprops: {\n\t\tmaxWidth: {\n\t\t\ttype: Number,\n\t\t\t// same as value popup width\n\t\t\tdefault: 430,\n\t\t},\n\t},\n\tinject: ['section', 'right'],\n\tcomputed: {\n\t\trightOrGroupTitle(): string {\n\t\t\tif (!this.right.group)\n\t\t\t{\n\t\t\t\treturn this.right.title;\n\t\t\t}\n\n\t\t\tconst groupHead = this.section.rights.get(this.right.group);\n\n\t\t\treturn groupHead?.title;\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div class=\"ui-access-rights-v2-cell-popup-header-locator\" :style=\"{\n\t\t\tmaxWidth: maxWidth + 'px',\n\t\t}\">\n\t\t\t<SectionIcon/>\n\t\t\t<span\n\t\t\t\tclass=\"ui-access-rights-v2-text-ellipsis\"\n\t\t\t\t:title=\"section.sectionTitle\"\n\t\t\t>{{ section.sectionTitle }}</span>\n\t\t\t<span\n\t\t\t\tv-if=\"section.sectionSubTitle\" \n\t\t\t\tclass=\"ui-access-rights-v2-text-ellipsis\"\n\t\t\t\t:title=\"section.sectionSubTitle\"\n\t\t\t\tstyle=\"margin-left: 5px; color: var(--ui-color-palette-gray-70);\"\n\t\t\t>{{ section.sectionSubTitle }}</span>\n\t\t\t<div class=\"ui-icon-set --chevron-right ui-access-rights-v2-cell-popup-header-chevron\"></div>\n\t\t\t<template v-if=\"rightOrGroupTitle !== right.title\">\n\t\t\t\t<span class=\"ui-access-rights-v2-text-ellipsis\" :title=\"right.title\">{{ right.title }}</span>\n\t\t\t\t<div class=\"ui-icon-set --chevron-right ui-access-rights-v2-cell-popup-header-chevron\"></div>\n\t\t\t</template>\n\t\t\t<span class=\"ui-access-rights-v2-text-ellipsis\" :title=\"rightOrGroupTitle\">{{ rightOrGroupTitle }}</span>\n\t\t</div>\n\t`,\n};\n","import { Switcher } from 'ui.vue3.components.switcher';\nimport '../../../../css/value/popup-header/master-switcher.css';\n\nexport const MasterSwitcher = {\n\tname: 'MasterSwitcher',\n\tcomponents: { Switcher },\n\temits: ['check', 'uncheck'],\n\tprops: {\n\t\tisChecked: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tinject: ['section', 'right'],\n\tcomputed: {\n\t\tswitcherOptions(): Object {\n\t\t\treturn {\n\t\t\t\tsize: 'small',\n\t\t\t\tcolor: 'green',\n\t\t\t};\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div class=\"ui-access-rights-v2-cell-popup-header-master-switcher\" :class=\"{\n\t\t\t'--checked': isChecked,\n\t\t}\">\n\t\t\t<slot/>\n\t\t\t<div class=\"ui-access-rights-v2-cell-popup-header-toggle-container\">\n\t\t\t\t<Switcher\n\t\t\t\t\t:is-checked=\"isChecked\"\n\t\t\t\t\t@check=\"$emit('check')\"\n\t\t\t\t\t@uncheck=\"$emit('uncheck')\"\n\t\t\t\t\t:options=\"switcherOptions\"\n\t\t\t\t\tdata-accessrights-min-max\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t`,\n};\n","import '../../../../../css/value/popup-header/master-switcher/single-role-title.css';\n\nexport const SingleRoleTitle = {\n\tname: 'SingleRoleTitle',\n\tprops: {\n\t\tuserGroupTitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div class=\"ui-access-rights-v2-cell-popup-header-role-container\">\n\t\t\t<div>\n\t\t\t\t<div class=\"ui-access-rights-v2-cell-popup-header-role-caption\">\n\t\t\t\t\t{{ $Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ROLE') }}\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ui-access-rights-v2-cell-popup-header-role-title ui-access-rights-v2-text-ellipsis\"\n\t\t\t\t\t:title=\"userGroupTitle\"\n\t\t\t\t>\n\t\t\t\t\t{{ userGroupTitle }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`,\n};\n","import { Type } from 'main.core';\nimport { Locator } from '../popup-header/locator';\nimport { MasterSwitcher } from '../popup-header/master-switcher';\nimport { SingleRoleTitle } from '../popup-header/master-switcher/single-role-title';\n\nexport const PopupHeader = {\n\tname: 'DependentVariablesPopupHeader',\n\tcomponents: { Locator, MasterSwitcher, SingleRoleTitle },\n\temits: ['setMax', 'setMin'],\n\tprops: {\n\t\tvalues: {\n\t\t\t/** @type Set<string> */\n\t\t\ttype: Set,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tinject: ['right'],\n\tcomputed: {\n\t\tisChecked(): boolean {\n\t\t\tif (!this.isMinMaxValuesSet)\n\t\t\t{\n\t\t\t\treturn this.values.size > 0;\n\t\t\t}\n\n\t\t\treturn this.isSelectedAnythingBesidesMin;\n\t\t},\n\t\tisMinMaxValuesSet(): boolean {\n\t\t\treturn !Type.isNil(this.right.minValue) && !Type.isNil(this.right.maxValue);\n\t\t},\n\t\tisSelectedAnythingBesidesMin(): boolean {\n\t\t\tif (this.values.size <= 0)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor (const variableId of this.values)\n\t\t\t{\n\t\t\t\tif (!this.right.minValue.has(variableId))\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t},\n\tmethods: {\n\t\tsetMin(): void\n\t\t{\n\t\t\tif (this.isMinMaxValuesSet)\n\t\t\t{\n\t\t\t\tthis.$emit('setMin');\n\t\t\t}\n\t\t},\n\t\tsetMax(): void\n\t\t{\n\t\t\tif (this.isMinMaxValuesSet)\n\t\t\t{\n\t\t\t\tthis.$emit('setMax');\n\t\t\t}\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div>\n\t\t\t<Locator/>\n\t\t\t<MasterSwitcher\n\t\t\t\t:is-checked=\"isChecked\"\n\t\t\t\t@check=\"setMax\"\n\t\t\t\t@uncheck=\"setMin\"\n\t\t\t>\n\t\t\t\t<slot/>\n\t\t\t</MasterSwitcher>\n\t\t</div>\n\t`,\n};\n","import { Runtime, Type } from 'main.core';\nimport '../../../../css/value/dependent-variables/popup-content.css';\nimport 'ui.icon';\nimport 'ui.icon-set.actions';\nimport { Switcher } from 'ui.vue3.components.switcher';\nimport { BIcon as Icon, Set as IconSet } from 'ui.icon-set.api.vue';\nimport { hint } from 'ui.vue3.directives.hint';\nimport type { Variable, VariableCollection } from '../../../../store/model/access-rights-model';\nimport { PopupHeader } from './popup-header';\n\nexport const PopupContent = {\n\tname: 'DependentVariablesPopupContent',\n\temits: ['apply'],\n\tcomponents: { Switcher, PopupHeader, Icon },\n\tdirectives: { hint },\n\tprops: {\n\t\t// value for selector is id of a selected variable\n\t\tinitialValues: {\n\t\t\ttype: Set,\n\t\t\tdefault: new Set(),\n\t\t},\n\t},\n\tdata(): Object {\n\t\treturn {\n\t\t\t// values modified during popup lifetime and not yet dispatched to store\n\t\t\tnotSavedValues: this.getNotSavedValues(),\n\t\t};\n\t},\n\tinject: ['section', 'right', 'redefineApply'],\n\tcomputed: {\n\t\tisMinMaxValuesSet(): boolean {\n\t\t\treturn !Type.isNil(this.right.minValue) && !Type.isNil(this.right.maxValue);\n\t\t},\n\t\tvariablesShownInList(): VariableCollection {\n\t\t\tif (!this.isMinMaxValuesSet)\n\t\t\t{\n\t\t\t\treturn this.right.variables;\n\t\t\t}\n\n\t\t\tconst variablesWithoutMinAndSecondary: VariableCollection = Runtime.clone(this.right.variables);\n\t\t\tfor (const variableId of this.right.minValue)\n\t\t\t{\n\t\t\t\tvariablesWithoutMinAndSecondary.delete(variableId);\n\t\t\t}\n\n\t\t\tfor (const [variableId: string, variable: Variable] of variablesWithoutMinAndSecondary)\n\t\t\t{\n\t\t\t\tif (variable.secondary)\n\t\t\t\t{\n\t\t\t\t\tvariablesWithoutMinAndSecondary.delete(variableId);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn variablesWithoutMinAndSecondary;\n\t\t},\n\t\tsecondaryVariables(): VariableCollection {\n\t\t\tconst result: VariableCollection = new Map();\n\n\t\t\tfor (const [variableId, variable] of this.right.variables)\n\t\t\t{\n\t\t\t\tif (variable.secondary)\n\t\t\t\t{\n\t\t\t\t\tresult.set(variableId, variable);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t\tnothingSelectedValues(): ?Set<string> {\n\t\t\treturn this.$store.getters['accessRights/getNothingSelectedValue'](this.section.sectionCode, this.right.id);\n\t\t},\n\t\tswitcherOptions(): Object {\n\t\t\treturn {\n\t\t\t\tsize: 'small',\n\t\t\t\tcolor: 'primary',\n\t\t\t};\n\t\t},\n\t\tsecondarySwitcherOptions(): Object {\n\t\t\treturn {\n\t\t\t\tsize: 'extra-small',\n\t\t\t\tcolor: 'green',\n\t\t\t};\n\t\t},\n\t\ticonSet(): IconSet {\n\t\t\treturn IconSet;\n\t\t},\n\t},\n\tmounted()\n\t{\n\t\tthis.redefineApply(() => {\n\t\t\tthis.apply();\n\t\t});\n\t},\n\tmethods: {\n\t\taddValue(variableId: string): void {\n\t\t\tconst variable: ?Variable = this.right.variables.get(variableId);\n\t\t\tif (!variable)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.notSavedValues.add(variableId);\n\n\t\t\tif (!Type.isNil(variable.requires))\n\t\t\t{\n\t\t\t\tfor (const requiredId of variable.requires)\n\t\t\t\t{\n\t\t\t\t\tthis.notSavedValues.add(requiredId);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!Type.isNil(variable.conflictsWith))\n\t\t\t{\n\t\t\t\t// remove old variables that conflict with variable we want to add\n\t\t\t\tfor (const conflictId of variable.conflictsWith)\n\t\t\t\t{\n\t\t\t\t\tthis.notSavedValues.delete(conflictId);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const otherVariable of this.right.variables.values())\n\t\t\t{\n\t\t\t\tif (otherVariable.id === variableId)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// if one of the current variables conflicts with newly added variables, we remove old variable\n\t\t\t\tif (this.notSavedValues.has(otherVariable.id) && !Type.isNil(otherVariable.conflictsWith))\n\t\t\t\t{\n\t\t\t\t\tfor (const conflictId of otherVariable.conflictsWith)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.notSavedValues.has(conflictId))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.notSavedValues.delete(otherVariable.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tremoveValue(variableId: string): void {\n\t\t\tthis.notSavedValues.delete(variableId);\n\n\t\t\tfor (const otherVariableId of this.notSavedValues)\n\t\t\t{\n\t\t\t\tif (otherVariableId === variableId)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst otherVariable: ?Variable = this.right.variables.get(otherVariableId);\n\t\t\t\tif (!otherVariable)\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!Type.isNil(otherVariable.requires) && otherVariable.requires.has(variableId))\n\t\t\t\t{\n\t\t\t\t\tthis.notSavedValues.delete(otherVariableId);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsetMaxValue(): void {\n\t\t\tfor (const variableId of this.right.maxValue)\n\t\t\t{\n\t\t\t\tthis.addValue(variableId);\n\t\t\t}\n\t\t},\n\t\tsetMinValue(): void {\n\t\t\tfor (const variableId of this.right.minValue)\n\t\t\t{\n\t\t\t\tthis.addValue(variableId);\n\t\t\t}\n\t\t},\n\t\tapply(): void {\n\t\t\tlet values = this.notSavedValues;\n\t\t\tif (values.size <= 0)\n\t\t\t{\n\t\t\t\tvalues = this.nothingSelectedValues;\n\t\t\t}\n\n\t\t\tthis.$emit('apply', {\n\t\t\t\tvalues,\n\t\t\t});\n\t\t},\n\t\tgetNotSavedValues(): Set {\n\t\t\tconst result = new Set();\n\t\t\tthis.initialValues.forEach((value) => {\n\t\t\t\tif (this.right.variables.has(value))\n\t\t\t\t{\n\t\t\t\t\tresult.add(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result;\n\t\t},\n\t\tgetVariableHintOptions(variable: Variable): Object {\n\t\t\treturn {\n\t\t\t\ttext: variable.hint,\n\t\t\t\tpopupOptions: {\n\t\t\t\t\tbindOptions: {\n\t\t\t\t\t\tposition: 'bottom',\n\t\t\t\t\t},\n\t\t\t\t\twidth: 262,\n\t\t\t\t\tangle: {\n\t\t\t\t\t\tposition: 'top',\n\t\t\t\t\t\toffset: 33,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t},\n\t// data attributes are needed for e2e automated tests\n\ttemplate: `\n\t\t<div>\n\t\t\t<PopupHeader\n\t\t\t\t:values=\"notSavedValues\"\n\t\t\t\t@set-max=\"setMaxValue\"\n\t\t\t\t@set-min=\"setMinValue\"\n\t\t\t>\n\t\t\t\t<slot name=\"role-title\"/>\n\t\t\t</PopupHeader>\n\t\t\t<div class=\"ui-access-rights-v2-dv-popup--line-container\">\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"[variableId, variable] in variablesShownInList\"\n\t\t\t\t\t:key=\"variableId\"\n\t\t\t\t\tclass=\"ui-access-rights-v2-dv-popup--line\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"ui-access-rights-v2-dv-popup--line-title\">\n\t\t\t\t\t\t<span class=\"ui-access-rights-v2-text-ellipsis\" :title=\"variable.title\">{{ variable.title }}</span>\n\t\t\t\t\t\t<Icon v-if=\"variable.hint\" :name=\"iconSet.INFO_1\" :color=\"'var(--ui-color-palette-gray-40)'\" :size=\"20\" v-hint=\"getVariableHintOptions(variable)\"></Icon>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Switcher\n\t\t\t\t\t\t:is-checked=\"notSavedValues.has(variable.id)\"\n\t\t\t\t\t\t@check=\"addValue(variable.id)\"\n\t\t\t\t\t\t@uncheck=\"removeValue(variable.id)\"\n\t\t\t\t\t\t:options=\"switcherOptions\"\n\t\t\t\t\t\t:data-accessrights-variable-id=\"variable.id\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"[variableId, variable] in secondaryVariables\"\n\t\t\t\t\t:key=\"variableId\"\n\t\t\t\t\tclass=\"ui-access-rights-v2-dv-popup--line --secondary\"\n\t\t\t\t>\n\t\t\t\t\t<Switcher\n\t\t\t\t\t\t:is-checked=\"notSavedValues.has(variable.id)\"\n\t\t\t\t\t\t@check=\"addValue(variable.id)\"\n\t\t\t\t\t\t@uncheck=\"removeValue(variable.id)\"\n\t\t\t\t\t\t:options=\"secondarySwitcherOptions\"\n\t\t\t\t\t\tstyle=\"padding-right: 5px;\"\n\t\t\t\t\t\t:data-accessrights-variable-id=\"variable.id\"\n\t\t\t\t\t/>\n\t\t\t\t\t<span class=\"ui-access-rights-v2-text-ellipsis\">{{ variable.title }}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tv-if=\"right.dependentVariablesPopupHint\"\n\t\t\t\tclass=\"ui-access-rights-v2-dv-popup--hint\"\n\t\t\t>\n\t\t\t\t<Icon :name=\"iconSet.INFO_1\" :color=\"'var(--ui-color-palette-gray-40)'\" :size=\"20\"></Icon>\n\t\t\t\t<span>{{ right.dependentVariablesPopupHint }}</span>\n\t\t\t</div>\n\t\t</div>\n\t`,\n};\n","import '../../../../../css/value/popup-header/master-switcher/all-roles-title.css';\n\nexport const AllRolesTitle = {\n\tname: 'AllRolesTitle',\n\ttemplate: `\n\t\t<div class=\"ui-access-rights-v2-cell-popup-header-all-role-container\">\n\t\t\t<div class=\"ui-icon-set --persons-3\" style=\"margin-right: 4px;\"></div>\n\t\t\t<div class=\"ui-access-rights-v2-cell-popup-header-all-roles-caption\">{{ \n\t\t\t\t$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ALL_ROLES')\n\t\t\t}}</div>\n\t\t</div>\n\t`,\n};\n","import { ApplyButton, ButtonColor, CancelButton } from 'ui.buttons';\nimport { Popup } from 'ui.vue3.components.popup';\nimport '../../../css/value/value-popup.css';\n\nexport const ValuePopup = {\n\tname: 'ValuePopup',\n\tcomponents: { Popup },\n\temits: ['close', 'apply'],\n\tprovide(): Object {\n\t\treturn {\n\t\t\tredefineApply: (func: Function) => {\n\t\t\t\tthis.onApply = func;\n\t\t\t},\n\t\t};\n\t},\n\tdata(): Object {\n\t\treturn {\n\t\t\tonApply: () => {\n\t\t\t\tthis.$emit('apply');\n\t\t\t},\n\t\t};\n\t},\n\tcomputed: {\n\t\tpopupOptions(): PopupOptions {\n\t\t\treturn {\n\t\t\t\tautoHide: true,\n\t\t\t\tcloseEsc: true,\n\t\t\t\tcacheable: false,\n\t\t\t\tminWidth: 466,\n\t\t\t\tpadding: 18,\n\t\t\t};\n\t\t},\n\t},\n\tmounted()\n\t{\n\t\tvoid this.$nextTick(() => {\n\t\t\tconst applyButton = new ApplyButton({\n\t\t\t\tcolor: ButtonColor.PRIMARY,\n\t\t\t\tonclick: () => {\n\t\t\t\t\tthis.apply();\n\t\t\t\t\tthis.$emit('close');\n\t\t\t\t},\n\t\t\t});\n\t\t\tapplyButton.renderTo(this.$refs['button-container']);\n\n\t\t\tconst cancelButton = new CancelButton({\n\t\t\t\tonclick: () => {\n\t\t\t\t\tthis.$emit('close');\n\t\t\t\t},\n\t\t\t});\n\t\t\tcancelButton.renderTo(this.$refs['button-container']);\n\t\t});\n\t},\n\tmethods: {\n\t\tapply(): void\n\t\t{\n\t\t\tthis.onApply();\n\t\t},\n\t},\n\ttemplate: `\n\t\t<Popup @close=\"$emit('close')\" :options=\"popupOptions\">\n\t\t\t<slot/>\n\t\t\t<div ref=\"button-container\" class=\"ui-access-rights-v2-value-popup-buttons\"></div>\n\t\t</Popup>\n\t`,\n};\n","import { PopupContent } from '../../value/dependent-variables/popup-content';\nimport { AllRolesTitle } from '../../value/popup-header/master-switcher/all-roles-title';\nimport { ValuePopup } from '../../value/value-popup';\n\nexport const DependentVariables = {\n\tname: 'DependentVariables',\n\tcomponents: { PopupContent, AllRolesTitle, ValuePopup },\n\temits: ['close'],\n\tinject: ['section', 'right'],\n\tmethods: {\n\t\tapply({ values }): void\n\t\t{\n\t\t\tthis.$store.dispatch('userGroups/setAccessRightValuesForShown', {\n\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t\tvalueId: this.right.id,\n\t\t\t\tvalues,\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\n\t\t<ValuePopup @close=\"$emit('close')\">\n\t\t\t<PopupContent @apply=\"apply\">\n\t\t\t\t<template #role-title>\n\t\t\t\t\t<AllRolesTitle/>\n\t\t\t\t</template>\n\t\t\t</PopupContent>\n\t\t</ValuePopup>\n\t`,\n};\n","import { Dom, Event, Loc, Tag } from 'main.core';\nimport { DefaultFooter, Dialog, Item } from 'ui.entity-selector';\n\nexport class Footer extends DefaultFooter\n{\n\tconstructor(dialog: Dialog, options: { [option: string]: any })\n\t{\n\t\tsuper(dialog, options);\n\n\t\tthis.selectAllButton = Tag.render`<div class=\"ui-selector-footer-link\">${\n\t\t\tLoc.getMessage('JS_UI_ACCESSRIGHTS_V2_ALL_SELECT_LABEL')\n\t\t}</div>`;\n\t\tDom.hide(this.selectAllButton);\n\t\tEvent.bind(this.selectAllButton, 'click', this.#selectAll.bind(this));\n\n\t\tthis.deselectAllButton = Tag.render`<div class=\"ui-selector-footer-link\">${\n\t\t\tLoc.getMessage('JS_UI_ACCESSRIGHTS_V2_ALL_DESELECT_LABEL')\n\t\t}</div>`;\n\t\tDom.hide(this.deselectAllButton);\n\t\tEvent.bind(this.deselectAllButton, 'click', this.#deselectAll.bind(this));\n\n\t\tthis.getDialog().subscribe('Item:onSelect', this.#onItemStatusChange.bind(this));\n\t\tthis.getDialog().subscribe('Item:onDeselect', this.#onItemStatusChange.bind(this));\n\t}\n\n\tgetContent(): HTMLElement | HTMLElement[] | string | null\n\t{\n\t\tthis.#toggleSelectButtons();\n\n\t\treturn [this.selectAllButton, this.deselectAllButton];\n\t}\n\n\t#toggleSelectButtons(): void\n\t{\n\t\tif (this.getDialog().getSelectedItems().length === this.getDialog().getItems().length)\n\t\t{\n\t\t\tDom.hide(this.selectAllButton);\n\t\t\tDom.show(this.deselectAllButton);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.show(this.selectAllButton);\n\t\t\tDom.hide(this.deselectAllButton);\n\t\t}\n\t}\n\n\t#selectAll(): void\n\t{\n\t\tthis\n\t\t\t.getDialog()\n\t\t\t.getItems()\n\t\t\t.forEach((item: Item) => {\n\t\t\t\titem.select();\n\t\t\t})\n\t\t;\n\t}\n\n\t#deselectAll(): void\n\t{\n\t\tthis\n\t\t\t.getDialog()\n\t\t\t.getSelectedItems()\n\t\t\t.forEach((item: Item) => {\n\t\t\t\titem.deselect();\n\t\t\t})\n\t\t;\n\t}\n\n\t#onItemStatusChange(): void\n\t{\n\t\tthis.#toggleSelectButtons();\n\t}\n}\n","import { Tag } from 'main.core';\nimport { BaseHeader } from 'ui.entity-selector';\nimport { BitrixVue } from 'ui.vue3';\nimport { Locator } from '../../components/section/value/popup-header/locator';\n\nexport class Header extends BaseHeader\n{\n\trender(): HTMLElement\n\t{\n\t\treturn this.#renderVueApp();\n\t}\n\n\t#renderVueApp(): HTMLElement\n\t{\n\t\tconst container = Tag.render`<div style=\"padding: 20px 20px 0;\"></div>`;\n\n\t\tconst app = BitrixVue.createApp(Locator, {\n\t\t\tmaxWidth: this.getDialog().getWidth(),\n\t\t});\n\t\tapp.provide('section', this.getOption('section'));\n\t\tapp.provide('right', this.getOption('right'));\n\n\t\tapp.mount(container);\n\n\t\treturn container;\n\t}\n}\n","import { Runtime } from 'main.core';\nimport type { BaseEvent } from 'main.core.events';\nimport { Dialog, type Item, type ItemOptions } from 'ui.entity-selector';\nimport { EntitySelectorContext, EntitySelectorEntities } from '../../../../integration/entity-selector/dictionary';\nimport { Footer } from '../../../../integration/entity-selector/footer';\nimport { Header } from '../../../../integration/entity-selector/header';\nimport { ItemsMapper } from '../../../../integration/entity-selector/items-mapper';\nimport type { Variable, VariableCollection } from '../../../../store/model/access-rights-model';\nimport { getSelectedVariables } from '../../../../utils';\n\nexport const Selector = {\n\tname: 'Selector',\n\temits: ['apply', 'close'],\n\tprops: {\n\t\t// value for selector is id of a selected variable\n\t\tinitialValues: {\n\t\t\ttype: Set,\n\t\t\tdefault: new Set(),\n\t\t},\n\t},\n\tinject: ['section', 'right'],\n\tdata(): Object {\n\t\treturn {\n\t\t\t// values modified during popup lifetime and not yet dispatched to store\n\t\t\tvalues: this.initialValues,\n\t\t};\n\t},\n\tdialog: null,\n\tcomputed: {\n\t\tisAllSelected(): boolean {\n\t\t\treturn this.values.has(this.right.allSelectedCode);\n\t\t},\n\t\tselectedVariables(): VariableCollection {\n\t\t\treturn getSelectedVariables(this.right.variables, this.values, this.isAllSelected);\n\t\t},\n\t\tdialogItems(): ItemOptions[] {\n\t\t\treturn ItemsMapper.mapVariables(this.right.variables);\n\t\t},\n\t\tselectedDialogItems(): ItemOptions[] {\n\t\t\treturn this.dialogItems.filter((item) => this.selectedVariables.has(item.id));\n\t\t},\n\t},\n\tmounted()\n\t{\n\t\tthis.showSelector();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.dialog?.hide();\n\t},\n\tmethods: {\n\t\tshowSelector(): void {\n\t\t\tthis.dialog = new Dialog({\n\t\t\t\theight: 400,\n\t\t\t\tcontext: EntitySelectorContext.VARIABLE,\n\t\t\t\tenableSearch: this.right.enableSearch,\n\t\t\t\tmultiple: true,\n\t\t\t\tautoHide: true,\n\t\t\t\thideByEsc: true,\n\t\t\t\tdropdownMode: true,\n\t\t\t\tcompactView: this.right.compactView,\n\t\t\t\tshowAvatars: this.right.showAvatars,\n\t\t\t\tselectedItems: this.selectedDialogItems,\n\t\t\t\tsearchOptions: {\n\t\t\t\t\tallowCreateItem: false,\n\t\t\t\t},\n\t\t\t\tcacheable: false,\n\t\t\t\tevents: {\n\t\t\t\t\t'Item:onSelect': this.onItemSelect,\n\t\t\t\t\t'Item:onDeselect': this.onItemDeselect,\n\t\t\t\t\tonHide: this.apply,\n\t\t\t\t\tonDestroy: () => {\n\t\t\t\t\t\tthis.dialog = null;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tentities: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: EntitySelectorEntities.VARIABLE,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\titems: this.dialogItems,\n\t\t\t\theader: Header,\n\t\t\t\theaderOptions: {\n\t\t\t\t\tsection: this.section,\n\t\t\t\t\tright: this.right,\n\t\t\t\t},\n\t\t\t\tfooter: Footer,\n\t\t\t});\n\n\t\t\tthis.dialog.show();\n\t\t},\n\t\tonItemSelect(event: BaseEvent): void {\n\t\t\tconst addedItem: Item = event.getData().item;\n\n\t\t\tthis.addValue(String(addedItem.getId()));\n\t\t},\n\t\tonItemDeselect(event: BaseEvent): void {\n\t\t\tconst removedItem: Item = event.getData().item;\n\n\t\t\tthis.removeValue(String(removedItem.getId()));\n\t\t},\n\t\taddValue(value: string): void {\n\t\t\tconst newValues = Runtime.clone(this.values);\n\n\t\t\tnewValues.add(value);\n\n\t\t\tif (newValues.size >= this.right.variables.size)\n\t\t\t{\n\t\t\t\tthis.setValues(new Set([this.right.allSelectedCode]));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.setValues(newValues);\n\t\t\t}\n\t\t},\n\t\tremoveValue(value: string): void {\n\t\t\tif (this.values.has(this.right.allSelectedCode))\n\t\t\t{\n\t\t\t\tconst allVariablesIds = [...this.right.variables.values()].map((variable: Variable) => variable.id);\n\n\t\t\t\tconst allVariablesIdsWithoutRemoved = new Set(allVariablesIds);\n\t\t\t\tallVariablesIdsWithoutRemoved.delete(value);\n\n\t\t\t\tthis.setValues(allVariablesIdsWithoutRemoved);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst newValues = [...this.values].filter((candidate) => candidate !== value);\n\n\t\t\t\tthis.setValues(new Set(newValues));\n\t\t\t}\n\t\t},\n\t\tsetValues(newValues: Set<string>): void {\n\t\t\tthis.values = newValues;\n\t\t},\n\t\tapply(): void {\n\t\t\tthis.setNothingSelectedValueIfNeeded();\n\n\t\t\tthis.$emit('apply', {\n\t\t\t\tvalues: this.values,\n\t\t\t});\n\n\t\t\tthis.$emit('close');\n\t\t},\n\t\tsetNothingSelectedValueIfNeeded(): void {\n\t\t\tif (this.values.size <= 0)\n\t\t\t{\n\t\t\t\tconst nothingSelected = this.$store.getters['accessRights/getNothingSelectedValue'](\n\t\t\t\t\tthis.section.sectionCode,\n\t\t\t\t\tthis.right.id,\n\t\t\t\t);\n\n\t\t\t\tfor (const nothing of nothingSelected)\n\t\t\t\t{\n\t\t\t\t\tthis.addValue(nothing);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div></div>\n\t`,\n};\n","import { Selector } from '../../value/multivariables/selector';\n\nexport const Multivariables = {\n\tname: 'Multivariables',\n\temits: ['close'],\n\tcomponents: {\n\t\tSelector,\n\t},\n\tinject: ['section', 'right'],\n\tmethods: {\n\t\tapply({ values }): void\n\t\t{\n\t\t\tthis.$store.dispatch('userGroups/setAccessRightValuesForShown', {\n\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t\tvalueId: this.right.id,\n\t\t\t\tvalues,\n\t\t\t});\n\t\t},\n\t\tclose(): void\n\t\t{\n\t\t\tthis.$emit('close');\n\t\t},\n\t},\n\ttemplate: `\n\t\t<Selector @apply=\"apply\" @close=\"close\"/>\n\t`,\n};\n","import { MenuManager } from 'main.popup';\n\nconst POPUP_ID = 'ui-access-rights-v2-row-value-variables';\n\nexport const Variables = {\n\tname: 'Variables',\n\temits: ['close'],\n\tinject: ['section', 'right'],\n\tmounted()\n\t{\n\t\tthis.showSelector();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.closeSelector();\n\t},\n\tmethods: {\n\t\tshowSelector(): void {\n\t\t\tconst menuItems = [];\n\t\t\tfor (const variable of this.right.variables.values())\n\t\t\t{\n\t\t\t\tmenuItems.push({\n\t\t\t\t\tid: variable.id,\n\t\t\t\t\ttext: variable.title,\n\t\t\t\t\tonclick: (innerEvent, item) => {\n\t\t\t\t\t\titem\n\t\t\t\t\t\t\t.getMenuWindow()\n\t\t\t\t\t\t\t?.close()\n\t\t\t\t\t\t;\n\n\t\t\t\t\t\tthis.setValue(variable.id);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tMenuManager.show({\n\t\t\t\tid: POPUP_ID,\n\t\t\t\tbindElement: this.$el,\n\t\t\t\titems: menuItems,\n\t\t\t\tautoHide: true,\n\t\t\t\tcacheable: false,\n\t\t\t\tevents: {\n\t\t\t\t\tonClose: () => {\n\t\t\t\t\t\tthis.$emit('close');\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tsetValue(value): void {\n\t\t\tthis.$store.dispatch('userGroups/setAccessRightValuesForShown', {\n\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t\tvalueId: this.right.id,\n\t\t\t\tvalues: new Set([value]),\n\t\t\t});\n\t\t},\n\t\tcloseSelector(): void {\n\t\t\tMenuManager.getMenuById(POPUP_ID)?.close();\n\t\t},\n\t},\n\t// invisible div for binding selector to it\n\ttemplate: `\n\t\t<div></div>\n\t`,\n};\n","import { hint } from 'ui.vue3.directives.hint';\n\n/**\n * A special case of Hint. We don't need interactivity here, but we do need to wrap slot with a hint.\n * Combine these properties in a single vue hint wrapper is impossible.\n */\nexport const SelectedHint = {\n\tname: 'SelectedHint',\n\tprops: {\n\t\thtml: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata(): Object {\n\t\treturn {\n\t\t\tisRendered: true,\n\t\t};\n\t},\n\twatch: {\n\t\thtml(): void {\n\t\t\t// force hint directive to re-render\n\t\t\tthis.isRendered = false;\n\t\t\tvoid this.$nextTick(() => {\n\t\t\t\tthis.isRendered = true;\n\t\t\t});\n\t\t},\n\t},\n\tdirectives: {\n\t\thint,\n\t},\n\t// offsetTop is needed to fix infinite mouseenter/mouseleave loop in chromium. issue 204272\n\ttemplate: `\n\t\t<div v-if=\"isRendered\" v-hint=\"{\n\t\t\thtml,\n\t\t\tpopupOptions: {\n\t\t\t\toffsetTop: 3,\n\t\t\t},\n\t\t}\" data-hint-init=\"vue\">\n\t\t\t<slot/>\n\t\t</div>\n\t`,\n};\n","import { Type } from 'main.core';\nimport type { VariableCollection } from '../../../../store/model/access-rights-model';\nimport {\n\tgetMultipleSelectedVariablesHintHtml,\n\tgetMultipleSelectedVariablesTitle,\n\tgetSelectedVariables,\n} from '../../../../utils';\nimport { PopupContent } from '../../value/dependent-variables/popup-content';\nimport { SingleRoleTitle } from '../../value/popup-header/master-switcher/single-role-title';\nimport { ValuePopup } from '../../value/value-popup';\nimport { SelectedHint } from './../../../util/selected-hint';\n\nexport const DependentVariables = {\n\tname: 'DependentVariables',\n\tcomponents: { ValuePopup, PopupContent, SelectedHint, SingleRoleTitle },\n\tprops: {\n\t\t// value for selector is id of a selected variable\n\t\tvalue: {\n\t\t\t/** @type AccessRightValue */\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata(): Object {\n\t\treturn {\n\t\t\tisPopupShown: false,\n\t\t};\n\t},\n\tinject: ['section', 'userGroup', 'right'],\n\tcomputed: {\n\t\tselectedVariables(): VariableCollection {\n\t\t\treturn getSelectedVariables(this.right.variables, this.value.values, false);\n\t\t},\n\t\tcurrentAlias(): ?string {\n\t\t\treturn this.$store.getters['accessRights/getSelectedVariablesAlias'](this.section.sectionCode, this.value.id, this.value.values);\n\t\t},\n\t\ttitle(): string {\n\t\t\tif (Type.isString(this.currentAlias))\n\t\t\t{\n\t\t\t\treturn this.currentAlias;\n\t\t\t}\n\n\t\t\tif (this.selectedVariables.size <= 0)\n\t\t\t{\n\t\t\t\treturn this.$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ADD');\n\t\t\t}\n\n\t\t\treturn getMultipleSelectedVariablesTitle(this.selectedVariables);\n\t\t},\n\t\thintHtml(): string {\n\t\t\treturn getMultipleSelectedVariablesHintHtml(this.selectedVariables, this.hintTitle, this.right.variables);\n\t\t},\n\t\thintTitle(): string {\n\t\t\tif (Type.isString(this.right.hintTitle))\n\t\t\t{\n\t\t\t\treturn this.right.hintTitle;\n\t\t\t}\n\n\t\t\treturn this.$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SELECTED_ITEMS_TITLE');\n\t\t},\n\t},\n\tmethods: {\n\t\tapply({ values }): void\n\t\t{\n\t\t\tthis.$store.dispatch('userGroups/setAccessRightValues', {\n\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t\tuserGroupId: this.userGroup.id,\n\t\t\t\tvalueId: this.value.id,\n\t\t\t\tvalues,\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div class='ui-access-rights-v2-column-item-text-link' :class=\"{\n\t\t\t'ui-access-rights-v2-text-ellipsis': !hintHtml\n\t\t}\" @click=\"isPopupShown = true\">\n\t\t\t<SelectedHint v-if=\"hintHtml\" :html=\"hintHtml\">{{title}}</SelectedHint>\n\t\t\t<div v-else :title=\"title\">{{title}}</div>\n\t\t\t<ValuePopup v-if=\"isPopupShown\" @close=\"isPopupShown = false\">\n\t\t\t\t<PopupContent\n\t\t\t\t\t@apply=\"apply\"\n\t\t\t\t\t:initial-values=\"value.values\"\n\t\t\t\t>\n\t\t\t\t\t<template #role-title>\n\t\t\t\t\t\t<SingleRoleTitle :user-group-title=\"userGroup.title\"/>\n\t\t\t\t\t</template>\n\t\t\t\t</PopupContent>\n\t\t\t</ValuePopup>\n\t\t</div>\n\t`,\n};\n","import { Type } from 'main.core';\nimport type { VariableCollection } from '../../../../store/model/access-rights-model';\nimport {\n\tgetMultipleSelectedVariablesHintHtml,\n\tgetMultipleSelectedVariablesTitle,\n\tgetSelectedVariables,\n} from '../../../../utils';\nimport { Selector } from '../../value/multivariables/selector';\nimport { SelectedHint } from './../../../util/selected-hint';\n\nexport const Multivariables = {\n\tname: 'Multivariables',\n\tcomponents: {\n\t\tSelectedHint,\n\t\tSelector,\n\t},\n\tprops: {\n\t\t// value for selector is id of a selected variable\n\t\tvalue: {\n\t\t\t/** @type AccessRightValue */\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tinject: ['section', 'userGroup', 'right'],\n\tdata(): Object {\n\t\treturn {\n\t\t\tisSelectorShown: false,\n\t\t};\n\t},\n\tcomputed: {\n\t\tisAllSelected(): boolean {\n\t\t\treturn this.value.values.has(this.right.allSelectedCode);\n\t\t},\n\t\tselectedVariables(): VariableCollection {\n\t\t\treturn getSelectedVariables(this.right.variables, this.value.values, this.isAllSelected);\n\t\t},\n\t\tcurrentAlias(): ?string {\n\t\t\treturn this.$store.getters['accessRights/getSelectedVariablesAlias'](this.section.sectionCode, this.value.id, this.value.values);\n\t\t},\n\t\ttitle(): string {\n\t\t\tif (Type.isString(this.currentAlias))\n\t\t\t{\n\t\t\t\treturn this.currentAlias;\n\t\t\t}\n\n\t\t\tif (this.isAllSelected)\n\t\t\t{\n\t\t\t\treturn this.$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ALL_ACCEPTED');\n\t\t\t}\n\n\t\t\tif (this.selectedVariables.size <= 0)\n\t\t\t{\n\t\t\t\treturn this.$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ADD');\n\t\t\t}\n\n\t\t\treturn getMultipleSelectedVariablesTitle(this.selectedVariables);\n\t\t},\n\t\thintHtml(): string {\n\t\t\treturn getMultipleSelectedVariablesHintHtml(this.selectedVariables, this.hintTitle, this.right.variables);\n\t\t},\n\t\thintTitle(): string {\n\t\t\tif (Type.isString(this.right.hintTitle))\n\t\t\t{\n\t\t\t\treturn this.right.hintTitle;\n\t\t\t}\n\n\t\t\treturn this.$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SELECTED_ITEMS_TITLE');\n\t\t},\n\t},\n\tmethods: {\n\t\tshowSelector(): void {\n\t\t\tthis.isSelectorShown = true;\n\t\t},\n\t\tsetValues({ values }): void {\n\t\t\tthis.$store.dispatch('userGroups/setAccessRightValues', {\n\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t\tuserGroupId: this.userGroup.id,\n\t\t\t\tvalueId: this.value.id,\n\t\t\t\tvalues,\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\n\t\t<SelectedHint \n\t\t\tv-if=\"hintHtml\"\n\t\t\t:html=\"hintHtml\" \n\t\t\tclass='ui-access-rights-v2-column-item-text-link'\n\t\t\t@click=\"showSelector\"\n\t\t\tv-bind=\"$attrs\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</SelectedHint>\n\t\t<div \n\t\t\tv-else\n\t\t\tclass='ui-access-rights-v2-column-item-text-link ui-access-rights-v2-text-ellipsis'\n\t\t\t@click=\"showSelector\"\n\t\t\t:title=\"title\"\n\t\t\tv-bind=\"$attrs\"\n\t\t>\n\t\t\t{{ title }}\n\t\t</div>\n\t\t<Selector\n\t\t\tv-if=\"isSelectorShown\" \n\t\t\t:initial-values=\"value.values\"\n\t\t\t@close=\"isSelectorShown = false\"\n\t\t\t@apply=\"setValues\"\n\t\t/>\n\t`,\n};\n","import { Switcher } from 'ui.vue3.components.switcher';\n\nexport const Toggler = {\n\tname: 'Toggler',\n\tcomponents: { Switcher },\n\tprops: {\n\t\tvalue: {\n\t\t\t/** @type AccessRightValue */\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tinject: ['section', 'userGroup'],\n\tcomputed: {\n\t\tisChecked(): boolean {\n\t\t\treturn this.value.values.has('1');\n\t\t},\n\t},\n\tmethods: {\n\t\tsetValue(value): void {\n\t\t\tthis.$store.dispatch('userGroups/setAccessRightValues', {\n\t\t\t\tuserGroupId: this.userGroup.id,\n\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t\tvalueId: this.value.id,\n\t\t\t\tvalues: new Set([value]),\n\t\t\t});\n\t\t},\n\t},\n\t// eslint-disable-next-line quotes\n\ttemplate: `\n\t\t<Switcher\n\t\t\t:is-checked=\"isChecked\"\n\t\t\t@check=\"setValue('1')\"\n\t\t\t@uncheck=\"setValue('0')\"\n\t\t\t:options=\"{\n\t\t\t\tsize: 'extra-small',\n\t\t\t\tcolor: 'green',\n\t\t\t}\"\n\t\t/>\n\t`,\n};\n","import { Type } from 'main.core';\nimport { MenuManager } from 'main.popup';\n\nconst POPUP_ID = 'ui-access-rights-v2-column-item-popup-variables';\n\nexport const Variables = {\n\tname: 'Variables',\n\tprops: {\n\t\t// value for selector is id of a selected variable\n\t\tvalue: {\n\t\t\t/** @type AccessRightValue */\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tinject: ['section', 'userGroup', 'right'],\n\tcomputed: {\n\t\temptyVariableId(): ?string {\n\t\t\tconst emptyValue: Set<string> = this.$store.getters['accessRights/getEmptyValue'](\n\t\t\t\tthis.section.sectionCode,\n\t\t\t\tthis.value.id,\n\t\t\t);\n\n\t\t\treturn emptyValue[0];\n\t\t},\n\t\tcurrentVariableId(): ?string {\n\t\t\tif (this.value.values.size <= 0)\n\t\t\t{\n\t\t\t\treturn this.emptyVariableId;\n\t\t\t}\n\n\t\t\tconst [firstItem] = this.value.values;\n\n\t\t\treturn firstItem;\n\t\t},\n\t\tcurrentAlias(): ?string {\n\t\t\treturn this.$store.getters['accessRights/getSelectedVariablesAlias'](this.section.sectionCode, this.value.id, this.value.values);\n\t\t},\n\t\tcurrentVariableTitle(): string {\n\t\t\tif (Type.isString(this.currentAlias))\n\t\t\t{\n\t\t\t\treturn this.currentAlias;\n\t\t\t}\n\n\t\t\tconst variable = this.right.variables.get(this.currentVariableId);\n\t\t\tif (!variable)\n\t\t\t{\n\t\t\t\treturn this.$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ADD');\n\t\t\t}\n\n\t\t\treturn variable.title;\n\t\t},\n\t},\n\tmethods: {\n\t\tshowSelector(event: PointerEvent): void {\n\t\t\tconst menuItems = [];\n\t\t\tfor (const variable of this.right.variables.values())\n\t\t\t{\n\t\t\t\tmenuItems.push({\n\t\t\t\t\tid: variable.id,\n\t\t\t\t\ttext: variable.title,\n\t\t\t\t\tonclick: (innerEvent, item) => {\n\t\t\t\t\t\titem\n\t\t\t\t\t\t\t.getMenuWindow()\n\t\t\t\t\t\t\t?.close()\n\t\t\t\t\t\t;\n\n\t\t\t\t\t\tthis.setValue(variable.id);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tMenuManager.show({\n\t\t\t\tid: POPUP_ID,\n\t\t\t\tbindElement: event.target,\n\t\t\t\titems: menuItems,\n\t\t\t\tautoHide: true,\n\t\t\t\tcacheable: false,\n\t\t\t});\n\t\t},\n\t\tsetValue(value): void {\n\t\t\tthis.$store.dispatch('userGroups/setAccessRightValues', {\n\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t\tuserGroupId: this.userGroup.id,\n\t\t\t\tvalueId: this.value.id,\n\t\t\t\tvalues: new Set([value]),\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div\n\t\t\tclass='ui-access-rights-v2-column-item-text-link ui-access-rights-v2-text-ellipsis'\n\t\t\t:title=\"currentVariableTitle\"\n\t\t\t@click=\"showSelector\"\n\t\t>\n\t\t\t{{ currentVariableTitle }}\n\t\t</div>\n\t`,\n};\n","import { ServiceLocator } from '../../../service/service-locator';\nimport type { AccessRightItem } from '../../../store/model/access-rights-model';\n\nimport { DependentVariables as DependentVariablesRow } from '../title-column/value/dependent-variables';\nimport { Multivariables as MultivariablesRow } from '../title-column/value/multivariables';\nimport { Variables as VariablesRow } from '../title-column/value/variables';\n\nimport { DependentVariables as DependentVariablesCell } from './../column/value/dependent-variables';\nimport { Multivariables as MultivariablesCell } from './../column/value/multivariables';\nimport { Toggler as TogglerCell } from './../column/value/toggler';\nimport { Variables as VariablesCell } from './../column/value/variables';\n\nexport const Cells = Object.freeze({\n\tDependentVariables: DependentVariablesCell,\n\tMultivariables: MultivariablesCell,\n\tToggler: TogglerCell,\n\tVariables: VariablesCell,\n});\n\nexport const Rows = Object.freeze({\n\tDependentVariables: DependentVariablesRow,\n\tMultivariables: MultivariablesRow,\n\t// no row value for toggler\n\tVariables: VariablesRow,\n});\n\nexport function getValueComponent(accessRightItem: AccessRightItem): string\n{\n\tconst type = ServiceLocator.getValueTypeByRight(accessRightItem);\n\tif (!type)\n\t{\n\t\t// vue will render empty cell\n\t\treturn '';\n\t}\n\n\treturn type.getComponentName();\n}\n","import type { AccessRightItem } from '../../../store/model/access-rights-model';\nimport type { AccessRightValue } from '../../../store/model/user-groups-model';\nimport { CellLayout } from '../../layout/cell-layout';\nimport { Cells, getValueComponent } from '../value/registry';\n\nexport const ValueCell = {\n\tname: 'ValueCell',\n\tcomponents: {\n\t\tCellLayout,\n\t\t...Cells,\n\t},\n\tprops: {\n\t\tright: {\n\t\t\t/** @type AccessRightItem */\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tinject: ['section', 'userGroup'],\n\tprovide(): Object {\n\t\treturn {\n\t\t\tright: this.right,\n\t\t};\n\t},\n\tcomputed: {\n\t\tvalue(): AccessRightValue\n\t\t{\n\t\t\tconst value = this.userGroup.accessRights.get(this.right.id);\n\n\t\t\treturn value || this.$store.getters['userGroups/getEmptyAccessRightValue'](this.userGroup.id, this.section.sectionCode, this.right.id);\n\t\t},\n\t\tcellComponent(): string\n\t\t{\n\t\t\treturn getValueComponent(this.right);\n\t\t},\n\t},\n\t// data attributes are needed for e2e automated tests\n\ttemplate: `\n\t\t<CellLayout\n\t\t\t:class=\"{\n\t\t\t\t'ui-access-rights-v2-group-children': right.group,\n\t\t\t\t'--modified': value.isModified\n\t\t\t}\"\n\t\t\tv-memo=\"[userGroup.id, value.values, value.isModified]\"\n\t\t>\n\t\t\t<Component\n\t\t\t\t:is=\"cellComponent\"\n\t\t\t\t:value=\"value\"\n\t\t\t\t:data-accessrights-right-id=\"right.id\"\n\t\t\t/>\n\t\t</CellLayout>\n\t`,\n};\n","import { computed } from 'ui.vue3';\nimport { AccessRightItem } from '../../store/model/access-rights-model';\nimport type { UserGroup } from '../../store/model/user-groups-model';\nimport { shouldRowBeRendered } from '../../utils';\nimport { ColumnLayout } from '../layout/column-layout';\nimport { MenuCell } from './column/menu-cell';\nimport { ValueCell } from './column/value-cell';\n\nexport const Column = {\n\tname: 'Column',\n\tcomponents: {\n\t\tColumnLayout,\n\t\tValueCell,\n\t\tMenuCell,\n\t},\n\tprops: {\n\t\tuserGroup: {\n\t\t\t/** @type UserGroup */\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\trights: {\n\t\t\ttype: Map,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tprovide(): Object {\n\t\treturn {\n\t\t\tuserGroup: computed(() => this.userGroup),\n\t\t};\n\t},\n\tcomputed: {\n\t\trenderedRights(): Map<string, AccessRightItem> {\n\t\t\tconst result = new Map();\n\t\t\tfor (const [rightId: string, right: AccessRightItem] of this.rights)\n\t\t\t{\n\t\t\t\tif (shouldRowBeRendered(right))\n\t\t\t\t{\n\t\t\t\t\tresult.set(rightId, right);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t},\n\ttemplate: `\n\t\t<ColumnLayout ref=\"column\">\n\t\t\t<MenuCell/>\n\t\t\t<ValueCell\n\t\t\t\tv-for=\"[rightId, accessRightItem] in renderedRights\"\n\t\t\t\t:key=\"rightId\"\n\t\t\t\t:right=\"accessRightItem\"\n\t\t\t/>\n\t\t</ColumnLayout>\n\t`,\n};\n","import { Dom, Event, Runtime } from 'main.core';\nimport { Ears } from 'ui.ears';\nimport { SyncHorizontalScroll } from '../util/sync-horizontal-scroll';\nimport { Column } from './column';\nimport { ColumnLayout } from '../layout/column-layout';\n\nexport const ColumnList = {\n\tname: 'ColumnList',\n\tcomponents: { Column, SyncHorizontalScroll, ColumnLayout },\n\tprops: {\n\t\tuserGroups: {\n\t\t\ttype: Map,\n\t\t\trequired: true,\n\t\t},\n\t\trights: {\n\t\t\ttype: Map,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tthrottledScrollHandler: null,\n\tthrottledResizeHandler: null,\n\tears: null,\n\tisEarsInited: false,\n\tdata(): Object {\n\t\treturn {\n\t\t\tisLeftShadowShown: false,\n\t\t\tisRightShadowShown: false,\n\t\t};\n\t},\n\tcreated()\n\t{\n\t\tthis.throttledScrollHandler = Runtime.throttle(() => {\n\t\t\tthis.adjustShadowsVisibility();\n\t\t}, 200);\n\t\tthis.throttledResizeHandler = Runtime.throttle(() => {\n\t\t\tthis.adjustShadowsVisibility();\n\t\t\tthis.adjustEars();\n\t\t}, 200);\n\t},\n\tmounted()\n\t{\n\t\tEvent.bind(window, 'resize', this.throttledResizeHandler);\n\t\tthis.adjustShadowsVisibility();\n\n\t\tthis.initEars();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.destroyEars();\n\n\t\tEvent.unbind(window, 'resize', this.throttledResizeHandler);\n\t},\n\twatch: {\n\t\tuserGroups(newValue: Map, oldValue: Map): void {\n\t\t\tif (newValue.size !== oldValue.size)\n\t\t\t{\n\t\t\t\tthis.adjustShadowsVisibility();\n\t\t\t\tthis.adjustEars();\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tcalculateShadowsVisibility(): { isLeftShadowShown: boolean, isRightShadowShown: boolean } {\n\t\t\tif (!this.$refs['column-container'])\n\t\t\t{\n\t\t\t\t// in case it's accidentally called before mount or after unmount\n\t\t\t\treturn { isLeftShadowShown: false, isRightShadowShown: false };\n\t\t\t}\n\n\t\t\tconst scrollLeft = this.$refs['column-container'].$el.scrollLeft;\n\n\t\t\tconst isLeftShadowShown = scrollLeft > 0;\n\n\t\t\tconst offsetWidth = this.$refs['column-container'].$el.offsetWidth;\n\n\t\t\treturn {\n\t\t\t\tisLeftShadowShown,\n\t\t\t\tisRightShadowShown: this.$refs['column-container'].$el.scrollWidth > (Math.round(scrollLeft + offsetWidth)),\n\t\t\t};\n\t\t},\n\t\tadjustShadowsVisibility(): void {\n\t\t\t// avoid \"forced synchronous layout\"\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tconst { isLeftShadowShown, isRightShadowShown } = this.calculateShadowsVisibility();\n\t\t\t\tthis.isLeftShadowShown = isLeftShadowShown;\n\t\t\t\tthis.isRightShadowShown = isRightShadowShown;\n\t\t\t});\n\t\t},\n\t\tadjustEars(): void {\n\t\t\tif (!this.isEarsInited)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// avoid \"forced synchronous layout\"\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\t// force ears to recalculate its visibility\n\t\t\t\tthis.ears.toggleEars();\n\t\t\t});\n\t\t},\n\t\tinitEars(): void {\n\t\t\tif (!this.$refs['column-container'])\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.ears)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.ears = new Ears({\n\t\t\t\tcontainer: this.$refs['column-container'].$el,\n\t\t\t\timmediateInit: true,\n\t\t\t\tsmallSize: true,\n\t\t\t});\n\n\t\t\t// chrome is not happy when we query DOM values (scrollLeft, offsetWidth, ...) just after we've changed them\n\t\t\t// avoid \"forced synchronous layout\"\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (!this.ears || !this.$refs['column-container'])\n\t\t\t\t{\n\t\t\t\t\tthis.ears = null;\n\n\t\t\t\t\t// sometimes the callback is fired after the component is unmounted\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst scrollLeft = this.$refs['column-container'].$el.scrollLeft;\n\t\t\t\tthis.ears.init();\n\n\t\t\t\t// Ears add wrapper around the container, and it breaks our markup a little. Fix it\n\t\t\t\tDom.style(this.ears.getWrapper(), 'flex', 1);\n\t\t\t\tif (scrollLeft > 0)\n\t\t\t\t{\n\t\t\t\t\t// ears.init resets scrollLeft to 0\n\t\t\t\t\tthis.$refs['column-container'].$el.scrollLeft = scrollLeft;\n\t\t\t\t}\n\n\t\t\t\tthis.isEarsInited = true;\n\t\t\t});\n\t\t},\n\t\tdestroyEars(): void {\n\t\t\tthis.ears?.destroy();\n\t\t\tthis.isEarsInited = false;\n\t\t\tthis.ears = null;\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div\n\t\t\tclass='ui-access-rights-v2-section-content'\n\t\t\t:class=\"{\n\t\t\t\t'ui-access-rights-v2-section-shadow-left-shown': isLeftShadowShown,\n\t\t\t\t'ui-access-rights-v2-section-shadow-right-shown': isRightShadowShown,\n\t\t\t}\"\n\t\t>\n\t\t\t<SyncHorizontalScroll\n\t\t\t\tref=\"column-container\"\n\t\t\t\tclass='ui-access-rights-v2-section-wrapper'\n\t\t\t\t@scroll=\"throttledScrollHandler\"\n\t\t\t>\n\t\t\t\t<Column\n\t\t\t\t\tv-for=\"[groupId, group] in userGroups\"\n\t\t\t\t\t:key=\"groupId\"\n\t\t\t\t\t:user-group=\"group\"\n\t\t\t\t\t:rights=\"rights\"\n\t\t\t\t\t:data-accessrights-user-group-id=\"groupId\"\n\t\t\t\t/>\n\t\t\t\t<ColumnLayout/>\n\t\t\t</SyncHorizontalScroll>\n\t\t</div>\n\t`,\n};\n","import { Dom, Tag } from 'main.core';\nimport 'ui.hint';\nimport { mapState } from 'ui.vue3.vuex';\nimport { ServiceLocator } from '../../service/service-locator';\n\n/**\n * A special case of Hint that provides interactivity and reactivity.\n */\nexport const Hint = {\n\tname: 'Hint',\n\tprops: {\n\t\thtml: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\t...mapState({\n\t\t\tguid: (state) => state.application.guid,\n\t\t}),\n\t},\n\tmounted()\n\t{\n\t\tthis.renderHint();\n\t},\n\twatch: {\n\t\thtml(): void {\n\t\t\t// make ui.hint reactive :(\n\t\t\tDom.clean(this.$refs.container);\n\t\t\tthis.renderHint();\n\t\t},\n\t},\n\tmethods: {\n\t\trenderHint(): void {\n\t\t\tconst hintIconWrapper = Tag.render`<span data-hint-html=\"true\" data-hint-interactivity=\"true\"></span>`;\n\t\t\t// Tag.render cant set prop value with HTML properly :(\n\t\t\thintIconWrapper.setAttribute('data-hint', this.html);\n\n\t\t\tDom.append(\n\t\t\t\thintIconWrapper,\n\t\t\t\tthis.$refs.container,\n\t\t\t);\n\n\t\t\tthis.getHintManager().initNode(hintIconWrapper);\n\t\t},\n\t\tgetHintManager(): BX.UI.Hint {\n\t\t\treturn ServiceLocator.getHint(this.guid);\n\t\t},\n\t},\n\ttemplate: '<span class=\"ui-access-rights-v2-hint-container\" ref=\"container\"></span>',\n};\n","import { Hint } from '../util/hint';\nimport { Icon } from './icon';\nimport { EventEmitter } from 'main.core.events';\nimport '../../css/section/header.css';\n\nexport const Header = {\n\tname: 'Header',\n\tcomponents: { Hint, Icon },\n\tinject: ['section'],\n\tmethods: {\n\t\ttoggleSection(): void {\n\t\t\tthis.$store.dispatch('accessRights/toggleSection', { sectionCode: this.section.sectionCode });\n\t\t},\n\t\tonSectionEventButtonClick(): void {\n\t\t\tconst eventData = {\n\t\t\t\tguid: this.$store.getters['application/guid'],\n\t\t\t\tsection: this.section,\n\t\t\t};\n\t\t\tEventEmitter.emit('BX.UI.AccessRights.V2:onSectionHeaderClick', eventData);\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div\n\t\t\t@click=\"toggleSection\"\n\t\t\tclass='ui-access-rights-v2-section-header'\n\t\t\t:class=\"{\n\t\t\t\t'--expanded': section.isExpanded,\n\t\t\t}\" \n\t\t\tv-memo=\"[section.isExpanded]\"\n\t\t>\n\t\t\t<div class=\"ui-access-rights-v2-section-header-expander\">\n\t\t\t\t<div class='ui-icon-set' :class=\"{\n\t\t\t\t\t'--chevron-up': section.isExpanded,\n\t\t\t\t\t'--chevron-down': !section.isExpanded,\n\t\t\t\t}\"\n\t\t\t\t></div>\n\t\t\t</div>\n\t\t\t<Icon/>\n\t\t\t<span \n\t\t\t\tclass=\"ui-access-rights-v2-text-ellipsis ui-access-rights-v2-section-title\"\n\t\t\t\t:title=\"section.sectionTitle\"\n\t\t\t>{{ section.sectionTitle }}</span>\n\t\t\t<span\n\t\t\t\tv-if=\"section.sectionSubTitle\"\n\t\t\t\tclass=\"ui-access-rights-v2-text-ellipsis ui-access-rights-v2-section-subtitle\"\n\t\t\t\t:title=\"section.sectionSubTitle\"\n\t\t\t>\n\t\t\t\t{{ section.sectionSubTitle }}\n\t\t\t</span>\n\t\t\t<Hint v-if=\"section.sectionHint\" :html=\"section.sectionHint\"/>\n\t\t\t<span \n\t\t\t\tv-if=\"section.action\"\n\t\t\t\tclass=\"ui-btn ui-btn-light-border ui-btn-xs ui-access-rights-v2-section-action\"\n\t\t\t\t@click.stop=\"onSectionEventButtonClick\"\n\t\t\t>{{ section.action.buttonText }}</span>\n\t\t</div>\n\t`,\n};\n","import { CellLayout } from '../../layout/cell-layout';\nimport '../../../css/section/menu-cell.css';\n\nexport const MenuCell = {\n\tname: 'MenuCell',\n\tcomponents: { CellLayout },\n\ttemplate: `\n\t\t<CellLayout class=\"ui-access-rights-v2-menu-cell\"/>\n\t`,\n};\n","import { getValueComponent, Rows } from '../value/registry';\n\nexport const RowValue = {\n\tname: 'RowValue',\n\tcomponents: { ...Rows },\n\temits: ['close'],\n\tinject: ['right'],\n\tcomputed: {\n\t\tcomponent(): string\n\t\t{\n\t\t\treturn getValueComponent(this.right);\n\t\t},\n\t},\n\ttemplate: `\n\t\t<Component :is=\"component\" @close=\"$emit('close')\" />\n\t`,\n};\n","import '../../../css/section/title-column/title-cell.css';\nimport { RichMenuItem, RichMenuItemIcon, RichMenuPopup } from 'ui.vue3.components.rich-menu';\nimport { ServiceLocator } from '../../../service/service-locator';\nimport { Hint } from '../../util/hint';\nimport { RowValue } from './row-value';\nimport { EventEmitter } from 'main.core.events';\n\nexport const TitleCell = {\n\tname: 'TitleCell',\n\tcomponents: { Hint, RowValue, RichMenuItem, RichMenuPopup },\n\tprops: {\n\t\tright: {\n\t\t\t/** @type AccessRightItem */\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tinject: ['section'],\n\tprovide(): Object {\n\t\treturn {\n\t\t\tright: this.right,\n\t\t};\n\t},\n\tdata(): Object {\n\t\treturn {\n\t\t\tisMenuShown: false,\n\t\t\tisRowValueShown: false,\n\t\t};\n\t},\n\tcomputed: {\n\t\tRichMenuItemIcon: () => RichMenuItemIcon,\n\t\tisMinValueSet(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['accessRights/isMinValueSet'](this.section.sectionCode, this.right.id);\n\t\t},\n\t\tisMaxValueSet(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['accessRights/isMaxValueSet'](this.section.sectionCode, this.right.id);\n\t\t},\n\t\tisRowValueConfigurable(): boolean\n\t\t{\n\t\t\treturn ServiceLocator.getValueTypeByRight(this.right)?.isRowValueConfigurable() ?? false;\n\t\t},\n\t\tisRightDeletable(): boolean\n\t\t{\n\t\t\treturn this.right.isDeletable;\n\t\t},\n\t\trightCellStyle(): Object\n\t\t{\n\t\t\treturn {\n\t\t\t\t'margin-left': !this.right.groupHead && !this.right.group && !this.right.iconClass ? '23px' : null,\n\t\t\t\t'max-width': this.right.iconClass ? 'calc(100% - 52px)' : 'auto',\n\t\t\t};\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleGroup(): void\n\t\t{\n\t\t\tif (!this.right.groupHead)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.$store.dispatch('accessRights/toggleGroup', { sectionCode: this.section.sectionCode, groupId: this.right.id });\n\t\t},\n\t\ttoggleMenu(): void\n\t\t{\n\t\t\tthis.isMenuShown = !this.isMenuShown;\n\t\t},\n\t\tsetMaxValuesForRight(): void\n\t\t{\n\t\t\tthis.isRowValueShown = false;\n\t\t\tthis.isMenuShown = false;\n\n\t\t\tthis.$store.dispatch('userGroups/setMaxAccessRightValuesForRight', {\n\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t\trightId: this.right.id,\n\t\t\t});\n\t\t},\n\t\tsetMinValuesForRight(): void\n\t\t{\n\t\t\tthis.isRowValueShown = false;\n\t\t\tthis.isMenuShown = false;\n\n\t\t\tthis.$store.dispatch('userGroups/setMinAccessRightValuesForRight', {\n\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t\trightId: this.right.id,\n\t\t\t});\n\t\t},\n\t\topenRowValue(): void\n\t\t{\n\t\t\tthis.isMenuShown = false;\n\n\t\t\tthis.isRowValueShown = true;\n\t\t},\n\t\tonRightClick(): void\n\t\t{\n\t\t\tconst eventData = {\n\t\t\t\tguid: this.$store.getters['application/guid'],\n\t\t\t\tright: this.right,\n\t\t\t};\n\t\t\tEventEmitter.emit('BX.UI.AccessRights.V2:onRightClick', eventData);\n\t\t},\n\t\tdeleteRight(): void\n\t\t{\n\t\t\tthis.$store.dispatch('userGroups/deleteRight', { rightId: this.right.id });\n\t\t\tthis.$store.dispatch('accessRights/deleteRight', {\n\t\t\t\tsectionCode: this.section.sectionCode,\n\t\t\t\trightId: this.right.id,\n\t\t\t});\n\t\t\tEventEmitter.emit('BX.UI.AccessRights.V2:onRightDelete', {\n\t\t\t\tguid: this.$store.getters['application/guid'],\n\t\t\t\tright: this.right,\n\t\t\t});\n\t\t},\n\t},\n\t// data attributes are needed for e2e automated tests\n\ttemplate: `\n\t\t<div\n\t\t\tclass='ui-access-rights-v2-column-item-text ui-access-rights-v2-column-item-title'\n\t\t\t@click=\"toggleGroup\"\n\t\t\t:style=\"{\n\t\t\t\tcursor: right.groupHead ? 'pointer' : null,\n\t\t\t}\"\n\t\t\tv-memo=\"[right.isGroupExpanded, right.title, right.subtitle]\"\n\t\t\t:data-accessrights-right-id=\"right.id\"\n\t\t>\n\t\t\t<span\n\t\t\t\tv-if=\"right.groupHead\"\n\t\t\t\tclass=\"ui-icon-set\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'--minus-in-circle': right.isGroupExpanded,\n\t\t\t\t\t'--plus-in-circle': !right.isGroupExpanded,\n\t\t\t\t}\"\n\t\t\t></span>\n\t\t\t<div \n\t\t\t\tv-if=\"right.iconClass\" \n\t\t\t\t:class=\"right.iconClass\"\n\t\t\t\tclass=\"ui-access-rights-v2-column-item-title-icon\"\n\t\t\t><i></i></div>\n\t\t\t<div class=\"ui-access-rights-v2-column-item-title-block\" :style=\"rightCellStyle\">\n\t\t\t\t<span\n\t\t\t\t\tv-if=\"right.isClickable\"\n\t\t\t\t\tclass=\"ui-access-rights-v2-column-item-title-link ui-access-rights-v2-text-ellipsis\"\n\t\t\t\t\t@click=\"onRightClick\"\n\t\t\t\t>\n\t\t\t\t\t{{ right.title }}\n\t\t\t\t\t<Hint v-once v-if=\"right.hint\" :html=\"right.hint\"/>\n\t\t\t\t</span>\n\t\t\t\t<span \n\t\t\t\t\tv-else \n\t\t\t\t\tclass=\"ui-access-rights-v2-text-wrap\"\n\t\t\t\t>\n\t\t\t\t\t{{ right.title }}\n\t\t\t\t\t<Hint v-once v-if=\"right.hint\" :html=\"right.hint\"/>\n\t\t\t\t</span>\n\t\t\t\t<span \n\t\t\t\t\tv-if=\"right.subtitle\" \n\t\t\t\t\tclass=\"ui-access-rights-v2-column-item-subtitle ui-access-rights-v2-text-ellipsis\"\n\t\t\t\t>{{ right.subtitle }}</span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div\n\t\t\tref=\"icon\" \n\t\t\tclass=\"ui-icon-set --more ui-access-rights-v2-icon-more ui-access-rights-v2-title-column-menu\" \n\t\t\t@click=\"toggleMenu\"\n\t\t>\n\t\t\t<RichMenuPopup\n\t\t\t\tv-if=\"isMenuShown\"\n\t\t\t\t@close=\"isMenuShown = false\"\n\t\t\t\t:popup-options=\"{bindElement: $refs.icon, width: 300}\"\n\t\t\t>\n\t\t\t\t<RichMenuItem\n\t\t\t\t\tv-if=\"isMaxValueSet\"\n\t\t\t\t\t:icon=\"RichMenuItemIcon.check\"\n\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SET_MAX_ACCESS_RIGHTS_ROW')\"\n\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SET_MAX_ACCESS_RIGHTS_ROW_SUBTITLE')\"\n\t\t\t\t\t@click=\"setMaxValuesForRight\"\n\t\t\t\t/>\n\t\t\t\t<RichMenuItem\n\t\t\t\t\tv-if=\"isMinValueSet\"\n\t\t\t\t\t:icon=\"RichMenuItemIcon['red-lock']\"\n\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SET_MIN_ACCESS_RIGHTS_ROW')\"\n\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SET_MIN_ACCESS_RIGHTS_ROW_SUBTITLE')\"\n\t\t\t\t\t@click=\"setMinValuesForRight\"\n\t\t\t\t/>\n\t\t\t\t<RichMenuItem\n\t\t\t\t\tv-if=\"isRowValueConfigurable\"\n\t\t\t\t\t:icon=\"RichMenuItemIcon.settings\"\n\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_OPEN_ROW_VALUE')\"\n\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_OPEN_ROW_VALUE_SUBTITLE')\"\n\t\t\t\t\t@click=\"openRowValue\"\n\t\t\t\t/>\n\t\t\t\t<RichMenuItem\n\t\t\t\t\tv-if=\"isRightDeletable\"\n\t\t\t\t\t:icon=\"RichMenuItemIcon['trash-bin']\"\n\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_DELETE_ROW')\"\n\t\t\t\t\t:subtitle=\"$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_DELETE_ROW_SUBTITLE')\"\n\t\t\t\t\t@click=\"deleteRight\"\n\t\t\t\t/>\n\t\t\t</RichMenuPopup>\n\t\t\t<RowValue v-if=\"isRowValueShown\" @close=\"isRowValueShown = false\"/>\n\t\t</div>\n\t`,\n};\n","import { AccessRightItem } from '../../store/model/access-rights-model';\nimport { shouldRowBeRendered } from '../../utils';\nimport { CellLayout } from '../layout/cell-layout';\nimport { ColumnLayout } from '../layout/column-layout';\nimport { MenuCell } from './title-column/menu-cell';\nimport { TitleCell } from './title-column/title-cell';\n\nexport const TitleColumn = {\n\tname: 'TitleColumn',\n\tcomponents: { TitleCell, ColumnLayout, CellLayout, MenuCell },\n\tprops: {\n\t\trights: {\n\t\t\ttype: Map,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\trenderedRights(): Map<string, AccessRightItem> {\n\t\t\tconst result = new Map();\n\t\t\tfor (const [rightId: string, right: AccessRightItem] of this.rights)\n\t\t\t{\n\t\t\t\tif (shouldRowBeRendered(right))\n\t\t\t\t{\n\t\t\t\t\tresult.set(rightId, right);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t},\n\ttemplate: `\n\t\t<ColumnLayout>\n\t\t\t<MenuCell/>\n\t\t\t<CellLayout\n\t\t\t\tv-for=\"[rightId, accessRightItem] in renderedRights\"\n\t\t\t\t:key=\"rightId\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'ui-access-rights-v2-group-children': accessRightItem.group,\n\t\t\t\t}\"\n\t\t\t>\n\t\t\t\t<TitleCell :right=\"accessRightItem\" />\n\t\t\t</CellLayout>\n\t\t</ColumnLayout>\n\t`,\n};\n","import { computed } from 'ui.vue3';\nimport { Column } from './section/column';\nimport { ColumnList } from './section/column-list';\nimport { Header } from './section/header';\nimport { TitleColumn } from './section/title-column';\nimport { SyncHorizontalScroll } from './util/sync-horizontal-scroll';\n\n// @vue/component\nexport const Section = {\n\tname: 'Section',\n\tcomponents: { Column, SyncHorizontalScroll, TitleColumn, Header, ColumnList },\n\tprops: {\n\t\tuserGroups: {\n\t\t\ttype: Map,\n\t\t\trequired: true,\n\t\t},\n\t\trights: {\n\t\t\ttype: Map,\n\t\t\trequired: true,\n\t\t},\n\t\tcode: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisExpanded: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubTitle: {\n\t\t\ttype: String,\n\t\t},\n\t\thint: {\n\t\t\ttype: String,\n\t\t},\n\t\ticon: {\n\t\t\t/** @type AccessRightSectionIcon */\n\t\t\ttype: Object,\n\t\t},\n\t\taction: {\n\t\t\t/** @type AccessRightSectionAction */\n\t\t\ttype: Object,\n\t\t},\n\t},\n\tprovide(): Object {\n\t\treturn {\n\t\t\tsection: computed(() => {\n\t\t\t\treturn {\n\t\t\t\t\tsectionCode: this.code,\n\t\t\t\t\tsectionTitle: this.title,\n\t\t\t\t\tsectionSubTitle: this.subTitle,\n\t\t\t\t\tsectionIcon: this.icon,\n\t\t\t\t\tsectionHint: this.hint,\n\t\t\t\t\tisExpanded: this.isExpanded,\n\t\t\t\t\trights: this.rights,\n\t\t\t\t\taction: this.action,\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t},\n\t// data attributes are needed for e2e automated tests\n\ttemplate: `\n\t\t<div class=\"ui-access-rights-v2-section\" :data-accessrights-section-code=\"code\">\n\t\t\t<Header/>\n\t\t\t<div v-if=\"isExpanded\" class='ui-access-rights-v2-section-container'>\n\t\t\t\t<div class='ui-access-rights-v2-section-head'>\n\t\t\t\t\t<TitleColumn :rights=\"rights\" />\n\t\t\t\t</div>\n\t\t\t\t<ColumnList :rights=\"rights\" :user-groups=\"userGroups\"/>\n\t\t\t</div>\n\t\t</div>\n\t`,\n};\n","import { Dom } from 'main.core';\nimport { BaseEvent, EventEmitter } from 'main.core.events';\nimport { mapGetters, mapState } from 'ui.vue3.vuex';\nimport { ServiceLocator } from '../service/service-locator';\nimport { Header } from './header';\nimport { SearchBox } from './searchbox';\nimport { Section } from './section';\n\nexport const Grid = {\n\tname: 'Grid',\n\tcomponents: { Section, Header, SearchBox },\n\tloader: null,\n\tcomputed: {\n\t\t...mapState({\n\t\t\tisSaving: (state) => state.application.isSaving,\n\t\t\tguid: (state) => state.application.guid,\n\t\t\tsearchContainerSelector: (state) => state.application.options.searchContainerSelector,\n\t\t}),\n\t\t...mapGetters({\n\t\t\tshownSections: 'accessRights/shown',\n\t\t\tshownUserGroups: 'userGroups/shown',\n\t\t}),\n\t},\n\tmounted()\n\t{\n\t\tServiceLocator.getHint(this.guid).initOwnerDocument(this.$refs.container);\n\t\tEventEmitter.subscribe('BX.UI.AccessRights.V2:addRight', this.addRight);\n\t\tEventEmitter.subscribe('BX.UI.AccessRights.V2:updateRightTitle', this.updateRightTitle);\n\t\tEventEmitter.subscribe('BX.UI.AccessRights.V2:updateRightSubtitle', this.updateRightSubtitle);\n\t\tEventEmitter.subscribe('BX.UI.AccessRights.V2:markRightAsModified', this.markRightAsModified);\n\t},\n\tbeforeUnmount()\n\t{\n\t\tEventEmitter.unsubscribe('BX.UI.AccessRights.V2:addRight', this.addRight);\n\t\tEventEmitter.unsubscribe('BX.UI.AccessRights.V2:updateRightTitle', this.updateRightTitle);\n\t\tEventEmitter.unsubscribe('BX.UI.AccessRights.V2:updateRightSubtitle', this.updateRightSubtitle);\n\t\tEventEmitter.unsubscribe('BX.UI.AccessRights.V2:markRightAsModified', this.markRightAsModified);\n\t},\n\tmethods: {\n\t\tscrollToSection(sectionCode: string) {\n\t\t\tconst section = this.$refs.sections.find((item) => item.code === sectionCode);\n\t\t\tif (section)\n\t\t\t{\n\t\t\t\tscrollTo({\n\t\t\t\t\ttop: Dom.getPosition(section.$el).top - 155,\n\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\taddRight(event: BaseEvent) {\n\t\t\tconst { guid, sectionCode, right } = event.data;\n\t\t\tif (!guid)\n\t\t\t{\n\t\t\t\tconsole.warn('ui.accessrights.v2: addRight: application guid should be passed in event data');\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (guid === this.$store.getters['application/guid'])\n\t\t\t{\n\t\t\t\tthis.$store.dispatch('accessRights/addRight', { sectionCode, right });\n\t\t\t}\n\t\t},\n\t\tupdateRightTitle(event: BaseEvent) {\n\t\t\tconst { guid, sectionCode, rightId, rightTitle } = event.data;\n\t\t\tif (!guid)\n\t\t\t{\n\t\t\t\tconsole.warn('ui.accessrights.v2: updateRightTitle: application guid should be passed in event data');\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (guid === this.$store.getters['application/guid'])\n\t\t\t{\n\t\t\t\tthis.$store.dispatch('accessRights/updateRightTitle', { sectionCode, rightId, rightTitle });\n\t\t\t}\n\t\t},\n\t\tupdateRightSubtitle(event: BaseEvent) {\n\t\t\tconst { guid, sectionCode, rightId, rightSubtitle } = event.data;\n\t\t\tif (!guid)\n\t\t\t{\n\t\t\t\tconsole.warn('ui.accessrights.v2: updateRightSubtitle: application guid should be passed in event data');\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (guid === this.$store.getters['application/guid'])\n\t\t\t{\n\t\t\t\tthis.$store.dispatch('accessRights/updateRightSubtitle', { sectionCode, rightId, rightSubtitle });\n\t\t\t}\n\t\t},\n\t\tmarkRightAsModified(event: BaseEvent) {\n\t\t\tconst { guid, sectionCode, rightId, isModified } = event.data;\n\t\t\tif (!guid)\n\t\t\t{\n\t\t\t\tconsole.warn('ui.accessrights.v2: markRightAsModified: application guid should be passed in event data');\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (guid === this.$store.getters['application/guid'])\n\t\t\t{\n\t\t\t\tthis.$store.dispatch('accessRights/markRightAsModified', { sectionCode, rightId, isModified });\n\t\t\t}\n\t\t},\n\t},\n\ttemplate: `\n\t\t<Teleport v-if=\"searchContainerSelector\" :to=\"searchContainerSelector\">\n\t\t\t<SearchBox/>\n\t\t</Teleport>\n\t\t<div ref=\"container\" class='ui-access-rights-v2' :class=\"{\n\t\t\t'ui-access-rights-v2-block': isSaving,\n\t\t}\">\n\t\t\t<Header :user-groups=\"shownUserGroups\"/>\n\t\t\t<Section\n\t\t\t\tv-for=\"[sectionCode, accessRightSection] in shownSections\"\n\t\t\t\t:key=\"sectionCode\"\n\t\t\t\t:code=\"accessRightSection.sectionCode\"\n\t\t\t\t:is-expanded=\"accessRightSection.isExpanded\"\n\t\t\t\t:title=\"accessRightSection.sectionTitle\"\n\t\t\t\t:sub-title=\"accessRightSection.sectionSubTitle\"\n\t\t\t\t:hint=\"accessRightSection.sectionHint\"\n\t\t\t\t:icon=\"accessRightSection.sectionIcon\"\n\t\t\t\t:rights=\"accessRightSection.rights\"\n\t\t\t\t:action=\"accessRightSection.action\"\n\t\t\t\t:user-groups=\"shownUserGroups\"\n\t\t\t\tref=\"sections\"\n\t\t\t/>\n\t\t</div>\n\t`,\n};\n","import { type AjaxResponse, Text, Type } from 'main.core';\nimport { type AnalyticsOptions, sendData } from 'ui.analytics';\nimport type { Store } from 'ui.vue3.vuex';\nimport type { UserGroup } from '../store/model/user-groups-model';\n\nexport class AnalyticsManager\n{\n\t#store: Store;\n\t#data: AnalyticsOptions;\n\n\t#isEnabled: boolean;\n\t#isCancelAlreadyRegistered: boolean = false;\n\n\tconstructor(store: Store, analyticsData: AnalyticsOptions)\n\t{\n\t\tthis.#store = store;\n\t\tthis.#data = analyticsData;\n\n\t\t// check 2 out of 3 required fields\n\t\t// 'event' field is provided by AnalyticsManager\n\t\tthis.#isEnabled = Object.hasOwn(this.#data, 'tool') && Object.hasOwn(this.#data, 'category');\n\t}\n\n\tonSaveAttempt(): void\n\t{\n\t\tif (!this.#isEnabled)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst { createdRoles, editedRoles, deletedRoles } = this.#analyzeRoles();\n\n\t\tfor (let i = 0; i < createdRoles; i++)\n\t\t{\n\t\t\tthis.#registerRoleCreateEvent('attempt');\n\t\t}\n\n\t\tfor (let i = 0; i < editedRoles; i++)\n\t\t{\n\t\t\tthis.#registerRoleEditEvent('attempt');\n\t\t}\n\n\t\tfor (let i = 0; i < deletedRoles; i++)\n\t\t{\n\t\t\tthis.#registerRoleDeleteEvent('attempt');\n\t\t}\n\t}\n\n\tonSaveSuccess(): void\n\t{\n\t\tif (!this.#isEnabled)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst { createdRoles, editedRoles, deletedRoles } = this.#analyzeRoles();\n\n\t\tfor (let i = 0; i < createdRoles; i++)\n\t\t{\n\t\t\tthis.#registerRoleCreateEvent('success');\n\t\t}\n\n\t\tfor (let i = 0; i < editedRoles; i++)\n\t\t{\n\t\t\tthis.#registerRoleEditEvent('success');\n\t\t}\n\n\t\tfor (let i = 0; i < deletedRoles; i++)\n\t\t{\n\t\t\tthis.#registerRoleDeleteEvent('success');\n\t\t}\n\t}\n\n\tonSaveError(response: AjaxResponse): void\n\t{\n\t\tif (!this.#isEnabled)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst status = this.#getSaveErrorStatus(response);\n\n\t\tconst { createdRoles, editedRoles, deletedRoles } = this.#analyzeRoles();\n\n\t\tfor (let i = 0; i < createdRoles; i++)\n\t\t{\n\t\t\tthis.#registerRoleCreateEvent(status);\n\t\t}\n\n\t\tfor (let i = 0; i < editedRoles; i++)\n\t\t{\n\t\t\tthis.#registerRoleEditEvent(status);\n\t\t}\n\n\t\tfor (let i = 0; i < deletedRoles; i++)\n\t\t{\n\t\t\tthis.#registerRoleDeleteEvent(status);\n\t\t}\n\t}\n\n\tonCancelChanges(): void\n\t{\n\t\tif (!this.#isEnabled)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.#isCancelAlreadyRegistered)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tsendData({\n\t\t\t...this.#data,\n\t\t\tevent: 'settings_cancel',\n\t\t});\n\n\t\tthis.#isCancelAlreadyRegistered = true;\n\t}\n\n\tonCloseWithoutSave(): void\n\t{\n\t\tif (!this.#isEnabled)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tsendData({\n\t\t\t...this.#data,\n\t\t\tevent: 'settings_pop_cancel',\n\t\t});\n\t}\n\n\t#analyzeRoles(): {createdRoles: number, editedRoles: number, deletedRoles: number}\n\t{\n\t\tconst result = {\n\t\t\tcreatedRoles: 0,\n\t\t\teditedRoles: 0,\n\t\t\tdeletedRoles: this.#store.state.userGroups.deleted.size,\n\t\t};\n\n\t\tfor (const userGroup: UserGroup of this.#store.state.userGroups.collection.values())\n\t\t{\n\t\t\tif (userGroup.isNew)\n\t\t\t{\n\t\t\t\tresult.createdRoles++;\n\t\t\t}\n\t\t\telse if (this.#isUserGroupEdited(userGroup))\n\t\t\t{\n\t\t\t\tresult.editedRoles++;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t#isUserGroupEdited(userGroup: UserGroup): boolean\n\t{\n\t\tif (userGroup.isModified)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tfor (const value of userGroup.accessRights.values())\n\t\t{\n\t\t\tif (value.isModified)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t#getSaveErrorStatus(response: AjaxReponse): string\n\t{\n\t\tif (!Type.isArrayFilled(response?.errors))\n\t\t{\n\t\t\treturn 'error';\n\t\t}\n\n\t\tfor (const error of response.errors)\n\t\t{\n\t\t\tif (Type.isStringFilled(error?.code))\n\t\t\t{\n\t\t\t\treturn `error_${Text.toCamelCase(error.code)}`;\n\t\t\t}\n\t\t}\n\n\t\treturn 'error';\n\t}\n\n\t#registerRoleCreateEvent(status: string): void\n\t{\n\t\tconst data = {\n\t\t\t...this.#data,\n\t\t\tevent: 'role_create',\n\t\t\tstatus,\n\t\t};\n\n\t\tthis.#appendRoleCountView(data);\n\n\t\tsendData(data);\n\t}\n\n\t#registerRoleEditEvent(status: string): void\n\t{\n\t\tconst data = {\n\t\t\t...this.#data,\n\t\t\tevent: 'role_edit',\n\t\t\tstatus,\n\t\t};\n\n\t\tthis.#appendRoleCountView(data);\n\n\t\tsendData(data);\n\t}\n\n\t#registerRoleDeleteEvent(status: string): void\n\t{\n\t\tconst data = {\n\t\t\t...this.#data,\n\t\t\tevent: 'role_delete',\n\t\t\tstatus,\n\t\t};\n\n\t\tthis.#appendRoleCountView(data);\n\n\t\tsendData(data);\n\t}\n\n\t#appendRoleCountView(data: AnalyticsOptions): void\n\t{\n\t\tthis.#appendP(\n\t\t\tdata,\n\t\t\t'roleCountView',\n\t\t\tthis.#store.getters['userGroups/shown'].size,\n\t\t);\n\t}\n\n\t#appendP(data: AnalyticsOptions, name: string, value: any): void\n\t{\n\t\tfor (const pName of ['p1', 'p2', 'p3', 'p4', 'p5'])\n\t\t{\n\t\t\tif (!Object.hasOwn(data, pName))\n\t\t\t{\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tdata[pName] = `${name}_${value}`;\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n}\n","import { BuilderModel, type GetterTree, type MutationTree } from 'ui.vue3.vuex';\n\nexport type ApplicationState = {\n\toptions: Readonly<Options>,\n\tguid: string,\n\tisSaving: boolean,\n}\n\nexport type Options = {\n\tcomponent: string,\n\tactionSave: string,\n\tmode: string,\n\tbodyType?: 'json' | 'data',\n\tadditionalSaveParams: Object,\n\tisSaveOnlyChangedRights: boolean,\n\tmaxVisibleUserGroups: ?number,\n\tsearchContainerSelector: ?string,\n\tadditionalMembersParams: AdditionalMembersParams,\n\tisSaveAccessRightsList: boolean,\n}\n\nexport type AdditionalMembersParams = {\n\taddUserGroupsProviderTab?: boolean,\n\taddProjectsProviderTab?: boolean,\n\taddStructureTeamsProviderTab?: boolean,\n};\n\nexport const ACTION_SAVE = 'save';\nexport const MODE = 'ajax';\nexport const BODY_TYPE = 'data';\n\nexport class ApplicationModel extends BuilderModel\n{\n\t#guid: string;\n\t#options: Readonly<Options>;\n\n\tgetName(): string\n\t{\n\t\treturn 'application';\n\t}\n\n\tsetOptions(options: Options): ApplicationModel\n\t{\n\t\tthis.#options = options;\n\n\t\treturn this;\n\t}\n\n\tsetGuid(guid: string): ApplicationModel\n\t{\n\t\tthis.#guid = guid;\n\n\t\treturn this;\n\t}\n\n\tgetState(): ApplicationState\n\t{\n\t\treturn {\n\t\t\toptions: this.#options,\n\t\t\tguid: this.#guid,\n\t\t\tisSaving: false,\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree<ApplicationState>\n\t{\n\t\treturn {\n\t\t\tisMaxVisibleUserGroupsSet: (state): boolean => {\n\t\t\t\treturn state.options.maxVisibleUserGroups > 0;\n\t\t\t},\n\t\t\tisModified: (state, getters, rootState, rootGetters): boolean => {\n\t\t\t\treturn rootGetters['userGroups/isModified'] || rootGetters['accessRights/isModified'];\n\t\t\t},\n\t\t\tguid: (state): string => {\n\t\t\t\treturn state.guid;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetMutations(): MutationTree<ApplicationState>\n\t{\n\t\treturn {\n\t\t\tsetSaving: (state, isSaving: boolean): void => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.isSaving = Boolean(isSaving);\n\t\t\t},\n\t\t};\n\t}\n}\n","import { Loc, Runtime, Text, Type } from 'main.core';\nimport { type ActionTree, BuilderModel, type GetterTree, type MutationTree, type Store } from 'ui.vue3.vuex';\nimport { ServiceLocator } from '../../service/service-locator';\nimport type { AccessRightItem, AccessRightSection } from './access-rights-model';\n\nexport type UserGroupsState = {\n\tcollection: UserGroupsCollection,\n\tdeleted: Set<string>,\n}\n\nexport type UserGroupsStore = Store<UserGroupsState>;\n\nexport type UserGroupsCollection = Map<string, UserGroup>;\n\n// aka Role\nexport type UserGroup = {\n\tid: string,\n\tisNew: boolean,\n\tisModified: boolean, // whether group metadata is modified - title, members\n\tisShown: boolean,\n\ttitle: string,\n\taccessRights: Map<string, AccessRightValue>,\n\tmembers: MemberCollection, // access code => member\n};\n\nexport type AccessRightValue = {\n\tid: string,\n\tvalues: Set<string>,\n\tisModified: boolean,\n};\n\nexport type MemberCollection = Map<string, Member>; // access code => member\n\n// user/group/department/set of users\nexport type Member = {\n\ttype: string, // see main/install/components/bitrix/main.ui.selector/templates/.default/script.js\n\tid: string,\n\tname: string,\n\tavatar: ?string,\n};\n\ntype SetAccessRightValuesPayload = SetAccessRightValuesForShownPayload & {\n\tuserGroupId: string,\n};\n\ntype SetAccessRightValuesForShownPayload = {\n\tsectionCode: string,\n\tvalueId: string,\n\tvalues: Set<string>,\n};\n\nexport const NEW_USER_GROUP_ID_PREFIX = 'new~~~';\n\nexport class UserGroupsModel extends BuilderModel\n{\n\t#initialUserGroups: UserGroupsCollection = new Map();\n\n\tgetName(): string\n\t{\n\t\treturn 'userGroups';\n\t}\n\n\tsetInitialUserGroups(groups: UserGroupsCollection): UserGroupsModel\n\t{\n\t\tthis.#initialUserGroups = groups;\n\n\t\treturn this;\n\t}\n\n\tgetState(): UserGroupsState\n\t{\n\t\treturn {\n\t\t\tcollection: Runtime.clone(this.#initialUserGroups),\n\t\t\tdeleted: new Set(),\n\t\t};\n\t}\n\n\tgetElementState(params = {}): UserGroup\n\t{\n\t\treturn {\n\t\t\tid: `${NEW_USER_GROUP_ID_PREFIX}${Text.getRandom()}`,\n\t\t\tisNew: true,\n\t\t\tisModified: true,\n\t\t\tisShown: true,\n\t\t\ttitle: Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ROLE_NAME'),\n\t\t\taccessRights: new Map(),\n\t\t\tmembers: new Map(),\n\t\t};\n\t}\n\n\tgetGetters(): GetterTree<UserGroupsState>\n\t{\n\t\treturn {\n\t\t\tshown: (state): UserGroupsCollection => {\n\t\t\t\tconst result = new Map();\n\n\t\t\t\tfor (const [userGroupId, userGroup] of state.collection)\n\t\t\t\t{\n\t\t\t\t\tif (userGroup.isShown)\n\t\t\t\t\t{\n\t\t\t\t\t\tresult.set(userGroupId, userGroup);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tgetEmptyAccessRightValue: (state, getters, rootState, rootGetters) => (userGroupId: string, sectionCode: string, valueId: string): AccessRightValue => {\n\t\t\t\tconst values = rootGetters['accessRights/getEmptyValue'](sectionCode, valueId);\n\n\t\t\t\treturn {\n\t\t\t\t\tid: valueId,\n\t\t\t\t\tvalues,\n\t\t\t\t\tisModified: state.collection.get(userGroupId).isNew,\n\t\t\t\t};\n\t\t\t},\n\t\t\tdefaultAccessRightValues: (state, getters, rootState): Map<string, AccessRightValue> => {\n\t\t\t\tconst result = new Map();\n\n\t\t\t\tfor (const section of rootState.accessRights.collection.values())\n\t\t\t\t{\n\t\t\t\t\tfor (const [rightId, right] of section.rights)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (Type.isNil(right.defaultValue))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresult.set(rightId, {\n\t\t\t\t\t\t\tid: rightId,\n\t\t\t\t\t\t\tvalues: right.defaultValue,\n\t\t\t\t\t\t\tisModified: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tisModified: (state): boolean => {\n\t\t\t\tif (state.deleted.size > 0)\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfor (const userGroup of state.collection.values())\n\t\t\t\t{\n\t\t\t\t\tif (userGroup.isNew || userGroup.isModified)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (const value of userGroup.accessRights.values())\n\t\t\t\t\t{\n\t\t\t\t\t\tif (value.isModified)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tisMaxVisibleUserGroupsReached: (state, getters, rootState, rootGetters): boolean => {\n\t\t\t\tif (!rootGetters['application/isMaxVisibleUserGroupsSet'])\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn getters.shown.size >= rootState.application.options.maxVisibleUserGroups;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetActions(): ActionTree<UserGroupsState>\n\t{\n\t\treturn {\n\t\t\tsetAccessRightValues: (store, payload): void => {\n\t\t\t\tthis.#setAccessRightValuesAction(store, payload);\n\t\t\t},\n\t\t\tsetAccessRightValuesForShown: (store, payload): void => {\n\t\t\t\tthis.#setAccessRightValuesForShownAction(store, payload);\n\t\t\t},\n\t\t\tsetMinAccessRightValues: (store, payload): void => {\n\t\t\t\tthis.#setMinAccessRightValuesAction(store, payload);\n\t\t\t},\n\t\t\tsetMaxAccessRightValues: (store, payload): void => {\n\t\t\t\tthis.#setMaxAccessRightValuesAction(store, payload);\n\t\t\t},\n\t\t\tsetMinAccessRightValuesInSection: (store, payload): void => {\n\t\t\t\tthis.#setMinAccessRightValuesInSectionAction(store, payload);\n\t\t\t},\n\t\t\tsetMaxAccessRightValuesInSection: (store, payload): void => {\n\t\t\t\tthis.#setMaxAccessRightValuesInSectionAction(store, payload);\n\t\t\t},\n\t\t\tsetMinAccessRightValuesForRight: (store, payload): void => {\n\t\t\t\tthis.#setMinAccessRightValuesForRight(store, payload);\n\t\t\t},\n\t\t\tsetMaxAccessRightValuesForRight: (store, payload): void => {\n\t\t\t\tthis.#setMaxAccessRightValuesForRight(store, payload);\n\t\t\t},\n\t\t\tsetRoleTitle: (store, payload): void => {\n\t\t\t\tthis.#setRoleTitleAction(store, payload);\n\t\t\t},\n\t\t\taddMember: (store, payload): void => {\n\t\t\t\tthis.#addMemberAction(store, payload);\n\t\t\t},\n\t\t\tremoveMember: (store, payload): void => {\n\t\t\t\tthis.#removeMemberAction(store, payload);\n\t\t\t},\n\t\t\tcopyUserGroup: (store, payload): void => {\n\t\t\t\tthis.#copyUserGroupAction(store, payload);\n\t\t\t},\n\t\t\tcopySectionValues: (store, payload): void => {\n\t\t\t\tthis.#copySectionValuesAction(store, payload);\n\t\t\t},\n\t\t\taddUserGroup: (store): void => {\n\t\t\t\tthis.#addUserGroupAction(store);\n\t\t\t},\n\t\t\tremoveUserGroup: (store, payload): void => {\n\t\t\t\tthis.#removeUserGroupAction(store, payload);\n\t\t\t},\n\t\t\tshowUserGroup: (store, payload): void => {\n\t\t\t\tthis.#showUserGroupAction(store, payload);\n\t\t\t},\n\t\t\thideUserGroup: (store, payload): void => {\n\t\t\t\tthis.#hideUserGroupAction(store, payload);\n\t\t\t},\n\t\t\tdeleteRight: (store, payload): void => {\n\t\t\t\tthis.#deleteRightAction(store, payload);\n\t\t\t},\n\t\t};\n\t}\n\n\t#setAccessRightValuesAction(store: UserGroupsStore, payload: SetAccessRightValuesPayload): void\n\t{\n\t\tif (!Type.isSet(payload.values))\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to set not-Set values', payload);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.#isUserGroupExists(store, payload.userGroupId))\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to set value to a user group that dont exists', payload);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.#isValueExistsInStructure(store, payload.sectionCode, payload.valueId))\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to set value to a right that dont exists in structure', payload);\n\n\t\t\treturn;\n\t\t}\n\n\t\tstore.commit('setAccessRightValues', {\n\t\t\tuserGroupId: payload.userGroupId,\n\t\t\tvalueId: payload.valueId,\n\t\t\tvalues: payload.values,\n\t\t\tisModified: this.#isValueModified(\n\t\t\t\tpayload.userGroupId,\n\t\t\t\tpayload.valueId,\n\t\t\t\tpayload.values,\n\t\t\t\tstore.rootGetters['accessRights/getEmptyValue'](payload.sectionCode, payload.valueId),\n\t\t\t),\n\t\t});\n\t}\n\n\t#setAccessRightValuesForShownAction(store: UserGroupsStore, payload: SetAccessRightValuesForShownPayload): void\n\t{\n\t\tfor (const userGroupId of store.getters.shown.keys())\n\t\t{\n\t\t\tvoid store.dispatch('setAccessRightValues', {\n\t\t\t\t...payload,\n\t\t\t\tuserGroupId,\n\t\t\t});\n\t\t}\n\t}\n\n\t#setMinAccessRightValuesAction(store: UserGroupsStore, { userGroupId }): void\n\t{\n\t\tfor (const sectionCode: string of store.rootState.accessRights.collection.keys())\n\t\t{\n\t\t\tvoid store.dispatch('setMinAccessRightValuesInSection', { userGroupId, sectionCode });\n\t\t}\n\n\t\tvoid store.dispatch('accessRights/expandAllSections', null, { root: true });\n\t}\n\n\t#setMinAccessRightValuesInSectionAction(store: UserGroupsStore, { userGroupId, sectionCode }): void\n\t{\n\t\tconst section: ?AccessRightSection = store.rootState.accessRights.collection.get(sectionCode);\n\t\tif (!section)\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: attempt to set min values in section that dont exists', { sectionCode });\n\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const item of section.rights.values())\n\t\t{\n\t\t\tconst valueToSet = this.#getMinValueForColumnAction(\n\t\t\t\titem,\n\t\t\t\tstore.rootGetters['accessRights/getEmptyValue'](section.sectionCode, item.id),\n\t\t\t);\n\t\t\tif (Type.isNil(valueToSet))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvoid store.dispatch('setAccessRightValues', {\n\t\t\t\tuserGroupId,\n\t\t\t\tsectionCode: section.sectionCode,\n\t\t\t\tvalueId: item.id,\n\t\t\t\tvalues: valueToSet,\n\t\t\t});\n\t\t}\n\t}\n\n\t#setMinAccessRightValuesForRight(store: UserGroupsStore, { sectionCode, rightId }): void\n\t{\n\t\tconst right: ?AccessRightItem = store.rootState.accessRights.collection.get(sectionCode)?.rights.get(rightId);\n\t\tif (!right)\n\t\t{\n\t\t\tconsole.warn(\n\t\t\t\t'ui.accessrights.v2: attempt to set min values for right that dont exists',\n\t\t\t\t{ sectionCode, rightId },\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst valueToSet = this.#getMinValue(right);\n\t\tif (Type.isNil(valueToSet))\n\t\t{\n\t\t\tconsole.warn(\n\t\t\t\t'ui.accessrights.v2: attempt to set min values for right that dont have min value set',\n\t\t\t\t{ sectionCode, rightId },\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tvoid store.dispatch('setAccessRightValuesForShown', {\n\t\t\tsectionCode,\n\t\t\tvalueId: rightId,\n\t\t\tvalues: valueToSet,\n\t\t});\n\t}\n\n\t#getMinValueForColumnAction(item: AccessRightItem, emptyValue: Set<string>): ?Set<string>\n\t{\n\t\tconst setEmpty = Type.isBoolean(item.setEmptyOnSetMinMaxValueInColumn) && item.setEmptyOnSetMinMaxValueInColumn;\n\t\tif (setEmpty)\n\t\t{\n\t\t\treturn emptyValue;\n\t\t}\n\n\t\treturn this.#getMinValue(item);\n\t}\n\n\t#getMinValue(item: AccessRightItem): ?Set<string>\n\t{\n\t\treturn ServiceLocator.getValueTypeByRight(item)?.getMinValue(item);\n\t}\n\n\t#setMaxAccessRightValuesAction(store: UserGroupsStore, { userGroupId }): void\n\t{\n\t\tfor (const sectionCode: string of store.rootState.accessRights.collection.keys())\n\t\t{\n\t\t\tvoid store.dispatch('setMaxAccessRightValuesInSection', { userGroupId, sectionCode });\n\t\t}\n\n\t\tvoid store.dispatch('accessRights/expandAllSections', null, { root: true });\n\t}\n\n\t#setMaxAccessRightValuesInSectionAction(store: UserGroupsStore, { userGroupId, sectionCode }): void\n\t{\n\t\tconst section: ?AccessRightSection = store.rootState.accessRights.collection.get(sectionCode);\n\t\tif (!section)\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: attempt to set max values in section that dont exists', { sectionCode });\n\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const item of section.rights.values())\n\t\t{\n\t\t\tconst valueToSet = this.#getMaxValueForColumnAction(\n\t\t\t\titem,\n\t\t\t\tstore.rootGetters['accessRights/getEmptyValue'](section.sectionCode, item.id),\n\t\t\t);\n\t\t\tif (Type.isNil(valueToSet))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvoid store.dispatch('setAccessRightValues', {\n\t\t\t\tuserGroupId,\n\t\t\t\tsectionCode: section.sectionCode,\n\t\t\t\tvalueId: item.id,\n\t\t\t\tvalues: valueToSet,\n\t\t\t});\n\t\t}\n\t}\n\n\t#setMaxAccessRightValuesForRight(store: UserGroupsStore, { sectionCode, rightId }): void\n\t{\n\t\tconst right: ?AccessRightItem = store.rootState.accessRights.collection.get(sectionCode)?.rights.get(rightId);\n\t\tif (!right)\n\t\t{\n\t\t\tconsole.warn(\n\t\t\t\t'ui.accessrights.v2: attempt to set max values for right that dont exists',\n\t\t\t\t{ sectionCode, rightId },\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst valueToSet = this.#getMaxValue(right);\n\t\tif (Type.isNil(valueToSet))\n\t\t{\n\t\t\tconsole.warn(\n\t\t\t\t'ui.accessrights.v2: attempt to set max values for right that dont have max value set',\n\t\t\t\t{ sectionCode, rightId },\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tvoid store.dispatch('setAccessRightValuesForShown', {\n\t\t\tsectionCode,\n\t\t\tvalueId: rightId,\n\t\t\tvalues: valueToSet,\n\t\t});\n\t}\n\n\t#getMaxValueForColumnAction(item: AccessRightItem, emptyValue: Set<string>): ?Set<string>\n\t{\n\t\tconst setEmpty = Type.isBoolean(item.setEmptyOnSetMinMaxValueInColumn) && item.setEmptyOnSetMinMaxValueInColumn;\n\t\tif (setEmpty)\n\t\t{\n\t\t\treturn emptyValue;\n\t\t}\n\n\t\treturn this.#getMaxValue(item);\n\t}\n\n\t#getMaxValue(item: AccessRightItem): ?Set<string>\n\t{\n\t\treturn ServiceLocator.getValueTypeByRight(item)?.getMaxValue(item);\n\t}\n\n\t#copySectionValuesAction(\n\t\tstore: UserGroupsStore,\n\t\tpayload: { srcUserGroupId: string, dstUserGroupId: string, sectionCode: string },\n\t): void\n\t{\n\t\tconst src = this.#getUserGroup(store.state, payload.srcUserGroupId);\n\t\tif (!src)\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to copy values from user group that dont exists', payload);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst section: ?AccessRightSection = store.rootState.accessRights.collection.get(payload.sectionCode);\n\t\tif (!section)\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to copy values for section that dont exists', payload);\n\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const rightId of section.rights.keys())\n\t\t{\n\t\t\tconst value = src.accessRights.get(rightId);\n\t\t\tif (value)\n\t\t\t{\n\t\t\t\tvoid store.dispatch('setAccessRightValues', {\n\t\t\t\t\tuserGroupId: payload.dstUserGroupId,\n\t\t\t\t\tsectionCode: section.sectionCode,\n\t\t\t\t\tvalueId: value.id,\n\t\t\t\t\tvalues: value.values,\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst emptyValue = store.rootGetters['accessRights/getEmptyValue'](section.sectionCode, rightId);\n\n\t\t\t\tvoid store.dispatch('setAccessRightValues', {\n\t\t\t\t\tuserGroupId: payload.dstUserGroupId,\n\t\t\t\t\tsectionCode: section.sectionCode,\n\t\t\t\t\tvalueId: rightId,\n\t\t\t\t\tvalues: emptyValue,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t#setRoleTitleAction(store: UserGroupsStore, payload: {userGroupId: string, title: string}): void\n\t{\n\t\tif (!Type.isString(payload.title))\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to set role title with something other than string', payload);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.#isUserGroupExists(store, payload.userGroupId))\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to update user group that dont exists', payload);\n\n\t\t\treturn;\n\t\t}\n\n\t\tstore.commit('setRoleTitle', payload);\n\t}\n\n\t#addMemberAction(store: UserGroupsStore, payload: {userGroupId: string, accessCode: string, member: Member }): void\n\t{\n\t\tif (!this.#isUserGroupExists(store, payload.userGroupId))\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to add member to a user group that dont exists', payload);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\t!Type.isStringFilled(payload.accessCode)\n\t\t\t|| !Type.isStringFilled(payload.member.id)\n\t\t\t|| !Type.isStringFilled(payload.member.type)\n\t\t\t|| !Type.isStringFilled(payload.member.name)\n\t\t\t|| !(Type.isNil(payload.member.avatar) || Type.isStringFilled(payload.member.avatar))\n\t\t)\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to add member with invalid payload', payload);\n\n\t\t\treturn;\n\t\t}\n\n\t\tstore.commit('addMember', payload);\n\t}\n\n\t#removeMemberAction(store: UserGroupsStore, payload: {userGroupId: string, accessCode: string }): void\n\t{\n\t\tif (!this.#isUserGroupExists(store, payload.userGroupId))\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to remove member from a user group that dont exists', payload);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Type.isStringFilled(payload.accessCode))\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to remove member with invalid payload', payload);\n\n\t\t\treturn;\n\t\t}\n\n\t\tstore.commit('removeMember', payload);\n\t}\n\n\t#copyUserGroupAction(store: UserGroupsStore, { userGroupId }): void\n\t{\n\t\tconst sourceGroup = this.#getUserGroup(store.state, userGroupId);\n\n\t\tif (!sourceGroup)\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to copy user group that dont exists', { userGroupId });\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst emptyGroup = this.getElementState();\n\n\t\tconst copy: UserGroup = {\n\t\t\t...Runtime.clone(sourceGroup),\n\t\t\tid: emptyGroup.id,\n\t\t\ttitle: Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_COPIED_ROLE_NAME', {\n\t\t\t\t'#ORIGINAL#': sourceGroup.title,\n\t\t\t}),\n\t\t\tisNew: true,\n\t\t\tisModified: true,\n\t\t\tisShown: true,\n\t\t};\n\n\t\tfor (const value of copy.accessRights.values())\n\t\t{\n\t\t\t// is a new group all values are modified\n\t\t\tvalue.isModified = true;\n\t\t}\n\n\t\tstore.commit('addUserGroup', {\n\t\t\tuserGroup: copy,\n\t\t});\n\t}\n\n\t#addUserGroupAction(store: UserGroupsStore): void\n\t{\n\t\tconst newGroup = this.getElementState();\n\t\tnewGroup.accessRights = Runtime.clone(store.getters.defaultAccessRightValues);\n\n\t\tstore.commit('addUserGroup', {\n\t\t\tuserGroup: newGroup,\n\t\t});\n\t}\n\n\t#removeUserGroupAction(store: UserGroupsStore, { userGroupId }): void\n\t{\n\t\tconst userGroup = this.#getUserGroup(store.state, userGroupId);\n\t\tif (!userGroup)\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to remove user group that dont exists', { userGroupId });\n\n\t\t\treturn;\n\t\t}\n\n\t\tstore.commit('removeUserGroup', { userGroupId });\n\t\tif (!userGroup.isNew)\n\t\t{\n\t\t\tstore.commit('markUserGroupForDeletion', { userGroupId });\n\t\t}\n\t}\n\n\t#showUserGroupAction(store: UserGroupsState, { userGroupId }): void\n\t{\n\t\tif (!this.#isUserGroupExists(store, userGroupId))\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to show user group that dont exists', { userGroupId });\n\n\t\t\treturn;\n\t\t}\n\n\t\tstore.commit('showUserGroup', { userGroupId });\n\t}\n\n\t#hideUserGroupAction(store: UserGroupsState, { userGroupId }): void\n\t{\n\t\tif (!this.#isUserGroupExists(store, userGroupId))\n\t\t{\n\t\t\tconsole.warn('ui.accessrights.v2: Attempt to shrink user group that dont exists', { userGroupId });\n\n\t\t\treturn;\n\t\t}\n\n\t\tstore.commit('hideUserGroup', { userGroupId });\n\t}\n\n\t#isUserGroupExists(store, userGroupId: string): boolean\n\t{\n\t\tconst group = this.#getUserGroup(store.state, userGroupId);\n\n\t\treturn Boolean(group);\n\t}\n\n\t#getUserGroup(state: UserGroupsState, userGroupId: string): ?UserGroup\n\t{\n\t\treturn state.collection.get(userGroupId);\n\t}\n\n\t#isValueExistsInStructure(store, sectionCode: string, valueId: string): boolean\n\t{\n\t\tconst section: ?AccessRightSection = store.rootState.accessRights.collection.get(sectionCode);\n\n\t\treturn section?.rights.has(valueId);\n\t}\n\n\t#deleteRightAction(store: UserGroupsState, { rightId }): void\n\t{\n\t\tstore.commit('deleteRight', { rightId });\n\t}\n\n\tgetMutations(): MutationTree<UserGroupsState>\n\t{\n\t\treturn {\n\t\t\tsetAccessRightValues: (state, { userGroupId, valueId, values, isModified }) => {\n\t\t\t\tconst userGroup = this.#getUserGroup(state, userGroupId);\n\n\t\t\t\tconst accessRightValue = userGroup.accessRights.get(valueId);\n\n\t\t\t\tif (!accessRightValue)\n\t\t\t\t{\n\t\t\t\t\tuserGroup.accessRights.set(\n\t\t\t\t\t\tvalueId,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: valueId,\n\t\t\t\t\t\t\tvalues,\n\t\t\t\t\t\t\tisModified,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccessRightValue.values = values;\n\t\t\t\taccessRightValue.isModified = isModified;\n\t\t\t},\n\t\t\tsetRoleTitle: (state, { userGroupId, title }) => {\n\t\t\t\tconst userGroup = this.#getUserGroup(state, userGroupId);\n\t\t\t\tuserGroup.title = title;\n\t\t\t\tuserGroup.isModified = this.#isUserGroupModified(userGroup);\n\t\t\t},\n\t\t\taddMember: (state, { userGroupId, accessCode, member }) => {\n\t\t\t\tconst userGroup = this.#getUserGroup(state, userGroupId);\n\t\t\t\tuserGroup.members.set(accessCode, member);\n\t\t\t\tuserGroup.isModified = this.#isUserGroupModified(userGroup);\n\t\t\t},\n\t\t\tremoveMember: (state, { userGroupId, accessCode }) => {\n\t\t\t\tconst userGroup = this.#getUserGroup(state, userGroupId);\n\t\t\t\tuserGroup.members.delete(accessCode);\n\t\t\t\tuserGroup.isModified = this.#isUserGroupModified(userGroup);\n\t\t\t},\n\t\t\taddUserGroup: (state, { userGroup }) => {\n\t\t\t\tstate.collection.set(userGroup.id, userGroup);\n\t\t\t},\n\t\t\tremoveUserGroup: (state, { userGroupId }) => {\n\t\t\t\tstate.collection.delete(userGroupId);\n\t\t\t},\n\t\t\tmarkUserGroupForDeletion: (state, { userGroupId }) => {\n\t\t\t\tstate.deleted.add(userGroupId);\n\t\t\t},\n\t\t\tshowUserGroup: (state, { userGroupId }) => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.collection.get(userGroupId).isShown = true;\n\t\t\t},\n\t\t\thideUserGroup: (state, { userGroupId }) => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tstate.collection.get(userGroupId).isShown = false;\n\t\t\t},\n\t\t\tdeleteRight: (state: UserGroupsState, { rightId }) => {\n\t\t\t\tfor (const role: UserGroup of state.collection.values())\n\t\t\t\t{\n\t\t\t\t\tif (role.accessRights.get(rightId))\n\t\t\t\t\t{\n\t\t\t\t\t\trole.accessRights.delete(rightId);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\t#isValueModified(userGroupId: string, valueId: string, values: Set<string>, emptyValue: Set<string>): boolean\n\t{\n\t\tconst initialGroup = this.#initialUserGroups.get(userGroupId);\n\t\tif (!initialGroup)\n\t\t{\n\t\t\t// its a newly created group, all values are modified\n\n\t\t\treturn true;\n\t\t}\n\n\t\tconst initialValues = initialGroup.accessRights.get(valueId)?.values ?? emptyValue;\n\n\t\t// use native Sets instead of Vue-wrapped proxy-sets, they throw an error on `symmetricDifference`\n\t\treturn !this.#isSetsEqual(new Set(initialValues), new Set(values));\n\t}\n\n\t#isSetsEqual(a: Set, b: Set): boolean\n\t{\n\t\tif (Type.isFunction(a.symmetricDifference))\n\t\t{\n\t\t\t// native way to compare sets for modern browsers\n\t\t\treturn a.symmetricDifference(b).size === 0;\n\t\t}\n\n\t\t// polyfill\n\n\t\tif (a.size !== b.size)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (const value of a)\n\t\t{\n\t\t\tif (!b.has(value))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const value of b)\n\t\t{\n\t\t\tif (!a.has(value))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t#isUserGroupModified(userGroup: UserGroup): boolean\n\t{\n\t\tif (userGroup.isNew)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tconst initialGroup = this.#initialUserGroups.get(userGroup.id);\n\t\tif (!initialGroup)\n\t\t{\n\t\t\tthrow new Error('ui.accessrights.v2: initial user group not found');\n\t\t}\n\n\t\tif (userGroup.title !== initialGroup.title)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tconst initialAccessCodes = new Set(initialGroup.members.keys());\n\t\tconst currentAccessCodes = new Set(userGroup.members.keys());\n\n\t\treturn !this.#isSetsEqual(initialAccessCodes, currentAccessCodes);\n\t}\n}\n","import { EventEmitter } from 'main.core.events';\nimport { Builder, type Store } from 'ui.vue3.vuex';\nimport type { AccessRightsCollection } from './model/access-rights-model';\nimport { AccessRightsModel } from './model/access-rights-model';\nimport { ApplicationModel, type Options } from './model/application-model';\nimport type { UserGroupsCollection } from './model/user-groups-model';\nimport { UserGroupsModel } from './model/user-groups-model';\n\nexport function createStore(\n\toptions: Readonly<Options>,\n\tuserGroups: UserGroupsCollection,\n\taccessRights: AccessRightsCollection,\n\tappGuid: string | number,\n): {\n\tstore: Store,\n\tresetState: () => Promise<void>,\n\tuserGroupsModel: UserGroupsModel,\n}\n{\n\tconst userGroupsModel = UserGroupsModel.create()\n\t\t.setInitialUserGroups(userGroups)\n\t;\n\n\tconst accessRightsModel = AccessRightsModel.create()\n\t\t.setInitialAccessRights(accessRights)\n\t;\n\n\tconst { store } = Builder\n\t\t.init()\n\t\t.addModel(\n\t\t\tApplicationModel.create()\n\t\t\t\t.setOptions(options)\n\t\t\t\t.setGuid(appGuid)\n\t\t\t,\n\t\t)\n\t\t.addModel(accessRightsModel)\n\t\t.addModel(userGroupsModel)\n\t\t.syncBuild()\n\t;\n\n\treturn {\n\t\tstore,\n\t\tresetState: () => {\n\t\t\tuserGroupsModel.clearState();\n\t\t\taccessRightsModel.clearState();\n\t\t\tEventEmitter.emit('BX.UI.AccessRights.V2:onResetState', {\n\t\t\t\tguid: appGuid,\n\t\t\t});\n\t\t},\n\t\tuserGroupsModel,\n\t\taccessRightsModel,\n\t};\n}\n","import { AccessRightSection } from '../../access-rights-model';\nimport type { AccessRightItem, AccessRightsCollection } from '../../access-rights-model';\nimport { BaseEvent, EventEmitter } from 'main.core.events';\n\nexport type RightSaveData = {\n\tid: string,\n\tname: string,\n\trightData: Object,\n};\n\nexport class AccessRightsExporter implements Transformer<AccessRightsCollection, RightSaveData[]>\n{\n\ttransform(source: AccessRightsCollection, appGuid: string): RightSaveData[]\n\t{\n\t\tconst result: RightSaveData[] = [];\n\n\t\tfor (const accessRightSection: AccessRightSection of source.values())\n\t\t{\n\t\t\tfor (const accessRight: AccessRightItem of accessRightSection.rights.values())\n\t\t\t{\n\t\t\t\tconst data = {\n\t\t\t\t\tid: accessRight.id,\n\t\t\t\t\tname: accessRight.title,\n\t\t\t\t\tadditionalRightData: {},\n\t\t\t\t};\n\t\t\t\tconst eventResults = EventEmitter.emit('BX.UI.AccessRights.V2:additionalRightData', {\n\t\t\t\t\tguid: appGuid,\n\t\t\t\t\tright: accessRight,\n\t\t\t\t});\n\t\t\t\tfor (const eventResult: BaseEvent of eventResults)\n\t\t\t\t{\n\t\t\t\t\tdata.additionalRightData = { ...data.additionalRightData, ...eventResult.getData()?.additionalRightData };\n\t\t\t\t}\n\t\t\t\tresult.push(data);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n}\n","import type { AccessRightValue, Member, UserGroup, UserGroupsCollection } from '../../../user-groups-model';\nimport { NEW_USER_GROUP_ID_PREFIX } from '../../../user-groups-model';\nimport type { ExternalAccessRightValue, ExternalUserGroup } from '../../internalizer/user-groups-internalizer';\n\nexport type UserGroupSaveData = ExternalUserGroup & {\n\tmembers: null,\n\taccessCodes: { [accessCode: string]: string },\n};\n\n/**\n * @abstract\n */\nexport class BaseUserGroupsExporter implements Transformer<UserGroupsCollection, UserGroupSaveData[]>\n{\n\ttransform(source: UserGroupsCollection): UserGroupSaveData[]\n\t{\n\t\tconst result: UserGroupSaveData[] = [];\n\n\t\tfor (const userGroup of source.values())\n\t\t{\n\t\t\tresult.push({\n\t\t\t\tid: userGroup.id.startsWith(NEW_USER_GROUP_ID_PREFIX) ? '0' : userGroup.id,\n\t\t\t\ttitle: userGroup.title,\n\t\t\t\taccessCodes: this.#transformAccessCodes(userGroup.members),\n\t\t\t\taccessRights: this.#transformAccessRightValues(userGroup),\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t#transformAccessCodes(members: Map<string, Member>): { [accessCode: string]: string }\n\t{\n\t\tconst result = {};\n\n\t\tfor (const [accessCode, member] of members)\n\t\t{\n\t\t\tresult[accessCode] = member.type;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t#transformAccessRightValues(userGroup: UserGroup): ExternalAccessRightValue[]\n\t{\n\t\tconst result: ExternalAccessRightValue[] = [];\n\n\t\tfor (const accessRightValue of userGroup.accessRights.values())\n\t\t{\n\t\t\tif (!this.shouldBeIncludedInExport(userGroup, accessRightValue))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor (const singleValue of accessRightValue.values)\n\t\t\t{\n\t\t\t\tresult.push({\n\t\t\t\t\tid: accessRightValue.id,\n\t\t\t\t\tvalue: singleValue,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * @abstract\n\t * @protected\n\t */\n\tshouldBeIncludedInExport(userGroup: UserGroup, accessRightValue: AccessRightValue): boolean\n\t{\n\t\tthrow new Error('Not implemented');\n\t}\n}\n","import type { AccessRightValue, UserGroup } from '../../../user-groups-model';\nimport { BaseUserGroupsExporter } from './base-user-groups-exporter';\n\nexport class AllUserGroupsExporter extends BaseUserGroupsExporter\n{\n\tshouldBeIncludedInExport(userGroup: UserGroup, accessRightValue: AccessRightValue): boolean\n\t{\n\t\treturn true;\n\t}\n}\n","import type { AccessRightValue, UserGroup } from '../../../user-groups-model';\nimport { BaseUserGroupsExporter } from './base-user-groups-exporter';\n\nexport class OnlyChangedUserGroupsExporter extends BaseUserGroupsExporter\n{\n\tshouldBeIncludedInExport(userGroup: UserGroup, accessRightValue: AccessRightValue): boolean\n\t{\n\t\treturn userGroup.isNew || accessRightValue.isModified;\n\t}\n}\n","import { Type } from 'main.core';\nimport { ACTION_SAVE, BODY_TYPE, MODE, type Options } from '../../application-model';\nimport type { Transformer } from '../transformer';\n\nexport class ApplicationInternalizer implements Transformer<Options, Readonly<Options>>\n{\n\t// noinspection OverlyComplexFunctionJS\n\ttransform(externalSource: Options): Readonly<Options>\n\t{\n\t\t// freeze tells vue that we don't need reactivity on this state\n\t\t// and prevents accidental modification as well\n\t\treturn this.#deepFreeze({\n\t\t\tcomponent: String(externalSource.component),\n\t\t\tactionSave: Type.isStringFilled(externalSource.actionSave) ? externalSource.actionSave : ACTION_SAVE,\n\t\t\tmode: Type.isStringFilled(externalSource.mode) ? externalSource.mode : MODE,\n\t\t\tbodyType: Type.isStringFilled(externalSource.bodyType) ? externalSource.bodyType : BODY_TYPE,\n\t\t\tadditionalSaveParams: Type.isPlainObject(externalSource.additionalSaveParams)\n\t\t\t\t? externalSource.additionalSaveParams\n\t\t\t\t: null,\n\t\t\tisSaveOnlyChangedRights: Type.isBoolean(externalSource.isSaveOnlyChangedRights)\n\t\t\t\t? externalSource.isSaveOnlyChangedRights\n\t\t\t\t: false,\n\t\t\tmaxVisibleUserGroups: Type.isInteger(externalSource.maxVisibleUserGroups)\n\t\t\t\t? externalSource.maxVisibleUserGroups\n\t\t\t\t: null,\n\t\t\tsearchContainerSelector: Type.isStringFilled(externalSource.searchContainerSelector)\n\t\t\t\t? externalSource.searchContainerSelector\n\t\t\t\t: null,\n\t\t\tadditionalMembersParams: Type.isPlainObject(externalSource.additionalMembersParams)\n\t\t\t\t? {\n\t\t\t\t\taddUserGroupsProviderTab: Boolean(externalSource.additionalMembersParams?.addUserGroupsProviderTab ?? false),\n\t\t\t\t\taddProjectsProviderTab: Boolean(externalSource.additionalMembersParams?.addProjectsProviderTab ?? true),\n\t\t\t\t\taddStructureTeamsProviderTab: Boolean(externalSource.additionalMembersParams?.addStructureTeamsProviderTab ?? false),\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\taddUserGroupsProviderTab: false,\n\t\t\t\t\taddProjectsProviderTab: true,\n\t\t\t\t\taddStructureTeamsProviderTab: false,\n\t\t\t\t},\n\t\t\tisSaveAccessRightsList: Type.isBoolean(externalSource.isSaveAccessRightsList)\n\t\t\t\t? externalSource.isSaveAccessRightsList\n\t\t\t\t: false,\n\t\t});\n\t}\n\n\t#deepFreeze(target: Object): Readonly<Object>\n\t{\n\t\tif (Type.isObject(target))\n\t\t{\n\t\t\tObject.values(target).forEach((value) => {\n\t\t\t\tthis.#deepFreeze(value);\n\t\t\t});\n\n\t\t\treturn Object.freeze(target);\n\t\t}\n\n\t\treturn target;\n\t}\n}\n","import { Type } from 'main.core';\nimport type { AccessRightValue, UserGroupsCollection } from '../../user-groups-model';\nimport { Member, UserGroup } from '../../user-groups-model';\nimport type { Transformer } from '../transformer';\n\nexport type ExternalUserGroup = {\n\tid: any,\n\ttitle: any,\n\taccessRights: ExternalAccessRightValue[],\n\tmembers: {[accessCode: string]: ExternalMember},\n}\n\nexport type ExternalAccessRightValue = {\n\tid: any,\n\tvalue: any | any[],\n};\n\nexport type ExternalMember = {\n\ttype: any,\n\tid: any,\n\tname: any,\n\tavatar: any,\n};\n\nexport class UserGroupsInternalizer implements Transformer<ExternalUserGroup[], UserGroupsCollection>\n{\n\t#maxVisibleUserGroups: ?number = null;\n\n\tconstructor(maxVisibleUserGroups: ?number)\n\t{\n\t\tif (Type.isInteger(maxVisibleUserGroups))\n\t\t{\n\t\t\tthis.#maxVisibleUserGroups = maxVisibleUserGroups;\n\t\t}\n\t}\n\n\ttransform(externalSource: ExternalUserGroup[]): UserGroupsCollection\n\t{\n\t\tconst result = new Map();\n\n\t\tfor (const externalGroup of externalSource)\n\t\t{\n\t\t\tconst internalGroup = this.#internalizeExternalGroup(externalGroup);\n\t\t\tif (this.#maxVisibleUserGroups > 0 && result.size >= this.#maxVisibleUserGroups)\n\t\t\t{\n\t\t\t\tinternalGroup.isShown = false;\n\t\t\t}\n\n\t\t\tresult.set(internalGroup.id, internalGroup);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t#internalizeExternalGroup(externalGroup: ExternalUserGroup): UserGroup\n\t{\n\t\tconst internalizedGroup: UserGroup = {\n\t\t\tid: String(externalGroup.id),\n\t\t\tisNew: false,\n\t\t\tisModified: false,\n\t\t\tisShown: true,\n\t\t\ttitle: String(externalGroup.title),\n\t\t\taccessRights: new Map(),\n\t\t\tmembers: new Map(),\n\t\t};\n\n\t\tfor (const externalValue: ExternalAccessRightValue of externalGroup.accessRights)\n\t\t{\n\t\t\tconst internalizedValue = this.#internalizeExternalAccessRightsValue(externalValue);\n\n\t\t\tif (internalizedGroup.accessRights.has(internalizedValue.id))\n\t\t\t{\n\t\t\t\tfor (const previousValue of internalizedGroup.accessRights.get(internalizedValue.id).values)\n\t\t\t\t{\n\t\t\t\t\tinternalizedValue.values.add(previousValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinternalizedGroup.accessRights.set(internalizedValue.id, internalizedValue);\n\t\t}\n\n\t\tfor (const [accessCode: string, externalMember: ExternalMember] of Object.entries(externalGroup.members))\n\t\t{\n\t\t\tconst internalizedAccessCode = this.#internalizeExternalAccessCode(accessCode);\n\n\t\t\tinternalizedGroup.members.set(internalizedAccessCode, this.#internalizeExternalMember(externalMember));\n\t\t}\n\n\t\treturn internalizedGroup;\n\t}\n\n\t#internalizeExternalAccessRightsValue(externalAccessRightsValue: ExternalAccessRightValue): AccessRightValue\n\t{\n\t\tconst valueId = String(externalAccessRightsValue.id);\n\n\t\tconst internalized: AccessRightValue = {\n\t\t\tid: valueId,\n\t\t\tisModified: false,\n\t\t};\n\n\t\tconst values: Array<any> = Type.isArray(externalAccessRightsValue.value)\n\t\t\t? externalAccessRightsValue.value\n\t\t\t: [externalAccessRightsValue.value];\n\n\t\tinternalized.values = new Set(values.map((x) => String(x)));\n\n\t\treturn internalized;\n\t}\n\n\t#internalizeExternalAccessCode(accessCode: any): string\n\t{\n\t\tlet stringAccessCode = String(accessCode);\n\n\t\tif (/^IU(\\d+)$/.test(stringAccessCode))\n\t\t{\n\t\t\t// `IU` and `U` are basically the same in this extension. differentiation between them is not supported\n\t\t\t// for data consistency, force `U`\n\t\t\tstringAccessCode = stringAccessCode.replace('IU', 'U');\n\t\t}\n\n\t\treturn stringAccessCode;\n\t}\n\n\t#internalizeExternalMember(externalMember: ExternalMember): Member\n\t{\n\t\treturn {\n\t\t\ttype: String(externalMember.type),\n\t\t\tid: String(externalMember.id),\n\t\t\tname: String(externalMember.name),\n\t\t\tavatar: Type.isStringFilled(externalMember.avatar) ? externalMember.avatar : null,\n\t\t};\n\t}\n}\n","import { Type } from 'main.core';\nimport type { UserGroupsCollection } from '../user-groups-model';\nimport type { Transformer } from './transformer';\n\nexport class ShownUserGroupsCopier implements Transformer<UserGroupsCollection, UserGroupsCollection>\n{\n\t#srcUserGroups: UserGroupsCollection;\n\t#maxVisibleUserGroups: ?number = null;\n\n\tconstructor(srcUserGroups: UserGroupsCollection, maxVisibleUserGroups: ?number)\n\t{\n\t\tthis.#srcUserGroups = srcUserGroups;\n\t\tif (Type.isInteger(maxVisibleUserGroups))\n\t\t{\n\t\t\tthis.#maxVisibleUserGroups = maxVisibleUserGroups;\n\t\t}\n\t}\n\n\t/**\n\t * WARNING! Mutates `externalSource`. Src is not copied for perf reasons, since we don't need it functionally\n\t */\n\ttransform(externalSource: UserGroupsCollection): UserGroupsCollection\n\t{\n\t\tfor (const [userGroupId, userGroup] of externalSource)\n\t\t{\n\t\t\tconst srcUserGroup = this.#srcUserGroups.get(userGroupId);\n\t\t\tif (srcUserGroup)\n\t\t\t{\n\t\t\t\tuserGroup.isShown = srcUserGroup.isShown;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// likely it's a just created user group\n\t\t\t\tuserGroup.isShown = true;\n\t\t\t}\n\t\t}\n\n\t\tif (this.#maxVisibleUserGroups > 0)\n\t\t{\n\t\t\tthis.#ensureThatNoMoreUserGroupsThanMaxIsShown(externalSource);\n\t\t}\n\n\t\treturn externalSource;\n\t}\n\n\t#ensureThatNoMoreUserGroupsThanMaxIsShown(userGroups: UserGroupsCollection): void\n\t{\n\t\tlet shownCount = 0;\n\t\tfor (const userGroup of userGroups.values())\n\t\t{\n\t\t\tif (!userGroup.isShown)\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tshownCount++;\n\n\t\t\tif (shownCount > this.#maxVisibleUserGroups)\n\t\t\t{\n\t\t\t\tuserGroup.isShown = false;\n\t\t\t}\n\t\t}\n\t}\n}\n","import { ajax as Ajax, type AjaxResponse, Dom, type JsonObject, Loc, Runtime, Text, Type } from 'main.core';\nimport { BaseEvent, EventEmitter } from 'main.core.events';\nimport { Button, ButtonColor, ButtonSize, CancelButton } from 'ui.buttons';\nimport { MessageBox } from 'ui.dialogs.messagebox';\nimport { BitrixVue, type VueCreateAppResult } from 'ui.vue3';\nimport type { Store } from 'ui.vue3.vuex';\nimport { Grid } from './components/grid';\nimport 'ui.notification';\nimport { AnalyticsManager } from './integration/analytics-manager';\nimport { createStore } from './store/index';\nimport type { Options } from './store/model/application-model';\nimport { AccessRightsExporter } from './store/model/transformation/backend-exporter/access-rights-exporter';\nimport { AllUserGroupsExporter } from './store/model/transformation/backend-exporter/user-groups/all-user-groups-exporter';\nimport { OnlyChangedUserGroupsExporter } from './store/model/transformation/backend-exporter/user-groups/only-changed-user-groups-exporter';\nimport type { ExternalAccessRightSection } from './store/model/transformation/internalizer/access-rights-internalizer';\nimport { AccessRightsInternalizer } from './store/model/transformation/internalizer/access-rights-internalizer';\nimport { ApplicationInternalizer } from './store/model/transformation/internalizer/application-internalizer';\nimport type { ExternalUserGroup } from './store/model/transformation/internalizer/user-groups-internalizer';\nimport { UserGroupsInternalizer } from './store/model/transformation/internalizer/user-groups-internalizer';\nimport { ShownUserGroupsCopier } from './store/model/transformation/shown-user-groups-copier';\nimport type { UserGroupsCollection, UserGroupsModel } from './store/model/user-groups-model';\nimport type { AccessRightsModel } from './store/model/access-rights-model';\n\nexport type AppConstructOptions = Options & {\n\trenderTo: HTMLElement;\n\tuserGroups: ExternalUserGroup[];\n\taccessRights: ExternalAccessRightSection[];\n};\n\ntype SaveAjaxResponse = AjaxResponse<{ USER_GROUPS: JsonObject, ACCESS_RIGHTS: ?JsonObject }>;\n\n/**\n * @memberOf BX.UI.AccessRights.V2\n */\nexport class App\n{\n\t#options: AppConstructOptions = {};\n\t#renderTo: HTMLElement;\n\t#buttonPanel: BX.UI.ButtonPanel;\n\n\t#guid: string;\n\t#isUserConfirmedClose: boolean = false;\n\n\t#handleSliderClose: (BaseEvent<BX.SidePanel.Event[]>) => void;\n\n\t#app: VueCreateAppResult;\n\t#rootComponent: Element;\n\t#store: Store;\n\t#resetState: () => void;\n\t#unwatch: () => void;\n\t#userGroupsModel: UserGroupsModel;\n\t#accessRightsModel: AccessRightsModel;\n\t#analyticsManager: AnalyticsManager;\n\n\tconstructor(options: AppConstructOptions)\n\t{\n\t\tthis.#options = options || {};\n\t\tthis.#renderTo = this.#options.renderTo;\n\t\tthis.#buttonPanel = BX.UI.ButtonPanel || null;\n\n\t\tthis.#guid = Text.getRandom(16);\n\n\t\tthis.#bindEvents();\n\t}\n\n\t#bindEvents(): void\n\t{\n\t\tthis.#handleSliderClose = (event: BaseEvent<BX.SidePanel.Event[]>): void => {\n\t\t\tconst [sliderEvent] = event.getData();\n\n\t\t\tconst isSliderBelongsToThisApp = BX.SidePanel?.Instance?.getSliderByWindow(window) === sliderEvent?.getSlider();\n\n\t\t\tif (!isSliderBelongsToThisApp)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.#confirmBeforeClosingModifiedSlider(sliderEvent);\n\t\t};\n\n\t\tEventEmitter.subscribe('SidePanel.Slider:onClose', this.#handleSliderClose);\n\t}\n\n\t#unbindEvents(): void\n\t{\n\t\tEventEmitter.unsubscribe('SidePanel.Slider:onClose', this.#handleSliderClose);\n\n\t\tthis.#handleSliderClose = null;\n\t}\n\n\tfireEventReset(): void\n\t{\n\t\tconst box = MessageBox.create({\n\t\t\tmessage: Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_MODIFIED_CANCEL_WARNING'),\n\t\t\tmodal: true,\n\t\t\tbuttons: [\n\t\t\t\tnew Button({\n\t\t\t\t\tcolor: ButtonColor.PRIMARY,\n\t\t\t\t\tsize: ButtonSize.SMALL,\n\t\t\t\t\ttext: Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_MODIFIED_CANCEL_YES_CANCEL'),\n\t\t\t\t\tonclick: () => {\n\t\t\t\t\t\tthis.#analyticsManager.onCancelChanges();\n\t\t\t\t\t\tthis.#resetState();\n\t\t\t\t\t\tbox.close();\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tnew Button({\n\t\t\t\t\tcolor: ButtonColor.LINK,\n\t\t\t\t\tsize: ButtonSize.SMALL,\n\t\t\t\t\ttext: Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_MODIFIED_CANCEL_NO_CANCEL'),\n\t\t\t\t\tonclick: () => {\n\t\t\t\t\t\tbox.close();\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t});\n\n\t\tbox.show();\n\t}\n\n\t#tryShowFeaturePromoter(response: SaveAjaxResponse): boolean\n\t{\n\t\tif (!Type.isArrayFilled(response?.errors))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (const error of response.errors)\n\t\t{\n\t\t\tif (Type.isStringFilled(error?.customData?.sliderCode))\n\t\t\t{\n\t\t\t\tRuntime.loadExtension('ui.info-helper').then(({ FeaturePromotersRegistry }) => {\n\t\t\t\t\t/** @see BX.UI.FeaturePromotersRegistry */\n\t\t\t\t\tFeaturePromotersRegistry.getPromoter({ code: error.customData.sliderCode }).show();\n\t\t\t\t}).catch((loadError) => {\n\t\t\t\t\tconsole.error('ui.accessrights.v2: could not load ui.info-helper', loadError);\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t#showNotification(title): void\n\t{\n\t\tBX.UI.Notification.Center.notify({\n\t\t\tcontent: title,\n\t\t\tposition: 'top-right',\n\t\t\tautoHideDelay: 3000,\n\t\t});\n\t}\n\n\tsendActionRequest(): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (this.#store.state.application.isSaving || !this.#store.getters['application/isModified'])\n\t\t\t{\n\t\t\t\tresolve();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.#store.commit('application/setSaving', true);\n\n\t\t\tthis.#analyticsManager.onSaveAttempt();\n\n\t\t\tthis.#runSaveAjaxRequest()\n\t\t\t\t.then(({ userGroups, accessRights }) => {\n\t\t\t\t\tthis.#analyticsManager.onSaveSuccess();\n\t\t\t\t\tthis.#userGroupsModel.setInitialUserGroups(userGroups);\n\t\t\t\t\tif (accessRights)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.#accessRightsModel.setInitialAccessRights(accessRights);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst guid: string = this.#guid;\n\t\t\t\t\tEventEmitter.emit('BX.UI.AccessRights.V2:afterSave', { userGroups, accessRights, guid });\n\n\t\t\t\t\t// reset modification flags and stuff\n\t\t\t\t\tthis.#resetState();\n\n\t\t\t\t\tthis.#showNotification(Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SETTINGS_HAVE_BEEN_SAVED'));\n\t\t\t\t})\n\t\t\t\t.catch((response: SaveAjaxResponse) => {\n\t\t\t\t\tthis.#analyticsManager.onSaveError(response);\n\n\t\t\t\t\tconsole.warn('ui.accessrights.v2: error during save', response);\n\n\t\t\t\t\tif (this.#tryShowFeaturePromoter(response))\n\t\t\t\t\t{\n\t\t\t\t\t\treject(response);\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.#showNotification(response?.errors?.[0]?.message || 'Something went wrong');\n\t\t\t\t\tEventEmitter.emit('ui:accessRights:v2:onSaveError', { response });\n\n\t\t\t\t\treject(response);\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tconst waitContainer = this.#buttonPanel?.getContainer().querySelector('.ui-btn-wait');\n\t\t\t\t\tDom.removeClass(waitContainer, 'ui-btn-wait');\n\t\t\t\t\tthis.#store.commit('application/setSaving', false);\n\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t});\n\t}\n\n\t#runSaveAjaxRequest(): Promise<{ userGroups: UserGroupsCollection }>\n\t{\n\t\tconst internalUserGroups = this.#store.state.userGroups.collection;\n\n\t\tlet userGroups = null;\n\t\tif (this.#store.state.application.options.isSaveOnlyChangedRights)\n\t\t{\n\t\t\tuserGroups = (new OnlyChangedUserGroupsExporter()).transform(internalUserGroups);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tuserGroups = (new AllUserGroupsExporter()).transform(internalUserGroups);\n\t\t}\n\n\t\tconst bodyType = this.#store.state.application.options.bodyType;\n\n\t\tlet accessRights = null;\n\t\tlet deletedAccessRights = null;\n\t\tif (this.#store.state.application.options.isSaveAccessRightsList)\n\t\t{\n\t\t\taccessRights = (new AccessRightsExporter()).transform(\n\t\t\t\tthis.#store.state.accessRights.collection,\n\t\t\t\tthis.#guid,\n\t\t\t);\n\t\t\tdeletedAccessRights = [...this.#store.state.accessRights.deleted.values()];\n\t\t}\n\n\t\t// wrap ajax in native promise\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tAjax.runComponentAction(\n\t\t\t\tthis.#store.state.application.options.component,\n\t\t\t\tthis.#store.state.application.options.actionSave,\n\t\t\t\t{\n\t\t\t\t\tmode: this.#store.state.application.options.mode,\n\t\t\t\t\t[bodyType]: {\n\t\t\t\t\t\tuserGroups,\n\t\t\t\t\t\tdeletedUserGroups: [...this.#store.state.userGroups.deleted.values()],\n\t\t\t\t\t\tparameters: this.#store.state.application.options.additionalSaveParams,\n\t\t\t\t\t\taccessRights,\n\t\t\t\t\t\tdeletedAccessRights,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t)\n\t\t\t\t.then((response: SaveAjaxResponse) => {\n\t\t\t\t\tconst maxVisibleUserGroups = this.#store.state.application.options.maxVisibleUserGroups;\n\n\t\t\t\t\tconst newUserGroups = (new UserGroupsInternalizer(maxVisibleUserGroups))\n\t\t\t\t\t\t.transform(response.data.USER_GROUPS)\n\t\t\t\t\t;\n\n\t\t\t\t\t(new ShownUserGroupsCopier(internalUserGroups, maxVisibleUserGroups)).transform(newUserGroups);\n\n\t\t\t\t\tlet newAccessRights = null;\n\t\t\t\t\tif (response.data.ACCESS_RIGHTS)\n\t\t\t\t\t{\n\t\t\t\t\t\tnewAccessRights = (new AccessRightsInternalizer()).transform(response.data.ACCESS_RIGHTS);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tuserGroups: newUserGroups,\n\t\t\t\t\t\taccessRights: newAccessRights,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch(reject)\n\t\t\t;\n\t\t});\n\t}\n\n\t#confirmBeforeClosingModifiedSlider(sliderEvent: BX.SidePanel.Event): void\n\t{\n\t\tif (!this.#store.getters['application/isModified'] || this.#isUserConfirmedClose)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tsliderEvent.denyAction();\n\n\t\tconst box = MessageBox.create({\n\t\t\tmediumButtonSize: false,\n\t\t\ttitle: Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_MODIFIED_CLOSE_WARNING_TITLE'),\n\t\t\tmessage: Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_MODIFIED_CLOSE_WARNING'),\n\t\t\tmodal: true,\n\t\t\tbuttons: [\n\t\t\t\tnew Button({\n\t\t\t\t\tcolor: ButtonColor.PRIMARY,\n\t\t\t\t\tsize: ButtonSize.SMALL,\n\t\t\t\t\ttext: Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_MODIFIED_CLOSE_YES_CLOSE'),\n\t\t\t\t\tonclick: () => {\n\t\t\t\t\t\tthis.#analyticsManager.onCloseWithoutSave();\n\t\t\t\t\t\tthis.#isUserConfirmedClose = true;\n\t\t\t\t\t\tbox.close();\n\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tsliderEvent.getSlider().close();\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tnew CancelButton({\n\t\t\t\t\tsize: ButtonSize.SMALL,\n\t\t\t\t\tonclick: () => {\n\t\t\t\t\t\tbox.close();\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t});\n\n\t\tbox.show();\n\t}\n\n\tdraw(): void\n\t{\n\t\tconst applicationOptions = (new ApplicationInternalizer()).transform(this.#options);\n\n\t\tconst { store, resetState, userGroupsModel, accessRightsModel } = createStore(\n\t\t\tapplicationOptions,\n\t\t\t(new UserGroupsInternalizer(applicationOptions.maxVisibleUserGroups)).transform(this.#options.userGroups),\n\t\t\t(new AccessRightsInternalizer()).transform(this.#options.accessRights),\n\t\t\tthis.#guid,\n\t\t);\n\n\t\tthis.#store = store;\n\t\tthis.#resetState = resetState;\n\t\tthis.#userGroupsModel = userGroupsModel;\n\t\tthis.#accessRightsModel = accessRightsModel;\n\n\t\tthis.#unwatch = this.#store.watch(\n\t\t\t(state, getters) => getters['application/isModified'],\n\t\t\t(newValue) => {\n\t\t\t\tif (newValue)\n\t\t\t\t{\n\t\t\t\t\tthis.#buttonPanel?.show();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.#buttonPanel?.hide();\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\tthis.#app = BitrixVue.createApp(Grid);\n\t\tthis.#app.use(this.#store);\n\n\t\tDom.clean(this.#renderTo);\n\t\tthis.#rootComponent = this.#app.mount(this.#renderTo);\n\t\tthis.#analyticsManager = new AnalyticsManager(this.#store, this.#options.analytics);\n\t}\n\n\tdestroy(): void\n\t{\n\t\tthis.#analyticsManager = null;\n\n\t\tthis.#app.unmount();\n\t\tthis.#app = null;\n\n\t\tthis.#unbindEvents();\n\n\t\tthis.#unwatch();\n\t\tthis.#unwatch = null;\n\n\t\tthis.#store = null;\n\t\tthis.#resetState = null;\n\t\tthis.#userGroupsModel = null;\n\t\tthis.#options = null;\n\t\tthis.#buttonPanel = null;\n\n\t\tDom.clean(this.#renderTo);\n\t\tthis.#renderTo = null;\n\t}\n\n\thasUnsavedChanges(): boolean\n\t{\n\t\treturn !(!this.#store.getters['application/isModified'] || this.#isUserConfirmedClose);\n\t}\n\n\tscrollToSection(sectionCode)\n\t{\n\t\tthis.#rootComponent.scrollToSection(sectionCode);\n\t}\n\n\tgetGuid(): string\n\t{\n\t\treturn this.#guid;\n\t}\n}\n"],"names":["Base","getComponentName","Error","getEmptyValue","item","emptyValue","Set","getMinValue","Type","isNil","minValue","getMaxValue","maxValue","isRowValueConfigurable","DependentVariables","Multivariables","Toggler","isFalsy","explicit","isNull","Variables","ServiceLocator","getHint","appGuid","remember","BX","UI","Hint","createInstance","id","popupParameters","className","autoHide","darkMode","maxWidth","offsetTop","offsetLeft","angle","animation","getValueTypeByRight","right","getValueType","type","stringType","String","console","warn","Cache","MemoryCache","EntitySelectorContext","Object","freeze","ROLE","MEMBER","VARIABLE","EntitySelectorEntities","Selector","name","emits","props","userGroup","required","bindNode","HTMLElement","computed","selectedItems","result","accessCode","members","keys","push","getItemIdByAccessCode","mapState","options","state","application","addUserGroupsProviderTab","additionalMembersParams","addProjectsProviderTab","addStructureTeamsProviderTab","mounted","entities","getEntities","Dialog","enableSearch","context","alwaysShowLabels","targetNode","preselectedItems","cacheable","events","onMemberAdd","onMemberRemove","onHide","$emit","show","methods","test","match","userId","departmentId","groupId","at","structureNodeId","event","member","getMemberFromEvent","$store","dispatch","userGroupId","getData","getAccessCodeByItem","getMemberTypeByItem","title","text","avatar","isStringFilled","entityId","isString","endsWith","originalId","intranetUsersOnly","emailUsers","inviteEmployeeLink","inviteGuestLink","selectMode","allowSelectRootDepartment","allowFlatDepartments","dynamicLoad","dynamicSearch","includedNodeEntityTypes","useMultipleTabs","visual","avatarMode","tagStyle","template","SingleMember","avatarBackgroundImage","encodeURI","noAvatarClass","MAX_SHOWN_MEMBERS","Members","components","data","isSelectorShown","isSelectedMembersPopupShown","popup","shownMembers","size","shownKeyValuePairs","slice","Map","notShownMembersCount","$refs","container","RoleHeading","RichMenuPopup","RichMenuItem","isEdit","isPopupShown","RichMenuItemIcon","isSaving","guid","maxVisibleUserGroups","mapGetters","isMaxVisibleUserGroupsReached","isMaxValueSetForAny","isMinValueSetForAny","get","set","watch","newValue","bindClickedOutsideHandler","$nextTick","input","scrollIntoView","behavior","block","inline","focus","select","unbindClickedOutsideHandler","isNew","beforeUnmount","Event","bind","window","turnOffEditWhenClickedOutside","capture","unbind","target","showDeleteConfirmation","Popup","bindElement","width","overlay","contentPadding","content","$Bitrix","Loc","getMessage","buttons","Button","ButtonSize","SMALL","color","ButtonColor","PRIMARY","click","destroy","CancelButton","showActionsMenu","onSetMaxValuesClick","onSetMinValuesClick","onEnableEditClick","onCopyRoleClick","onDeleteRoleClick","ItemsMapper","mapUserGroups","userGroups","values","supertitle","tabs","mapVariables","variables","items","variable","Runtime","clone","CellLayout","ColumnLayout","RolesControl","viewDialog","allUserGroups","collection","isMaxVisibleUserGroupsSet","shownGroupsCounter","copyDialogItems","viewDialogItems","copyDialogItem","selected","has","onCreateNewRoleClick","onRoleViewClick","showViewDialog","configure","showCopyDialog","copyDialog","multiple","dropdownMode","dialogEvent","getId","footer","getSelectedItems","length","preventDefault","toggleViewDialog","hide","isMaxListenersSet","lastScrollLeft","SyncHorizontalScroll","componentGuid","Text","getRandom","throttledEmitScrollEvent","created","requestAnimationFrameThrottle","emitScrollEvent","sectionsNumber","accessRights","eventEmitter","incrementMaxListeners","subscribe","handleScrollEvent","syncScroll","unsubscribe","scrollLeft","emit","$el","func","callbackSet","invoke","wrapper","args","q","requestAnimationFrame","Header","directives","hint","SearchBox","debouncedSetSearchQuery","setSearchQuery","query","debounce","searchQuery","shouldRowBeRendered","accessRightItem","isShown","group","isGroupExpanded","getSelectedVariables","isAllSelected","selectedVariables","variableId","getMultipleSelectedVariablesTitle","lastVariable","pop","cutLongTitle","VARIABLE_TITLE_MAX_LENGTH","getMultipleSelectedVariablesHintHtml","hintTitle","allVariables","listItems","value","makeSortedVariablesArray","encode","toSort","example","orderMap","index","sort","a","b","indexA","indexB","DEFAULT_ALIAS_SEPARATOR","parseAliasKey","key","separator","parts","split","compileAliasKey","sortedParts","join","normalizeAliasKey","parsed","AccessRightsInternalizer","transform","externalSource","external","internalized","sectionCode","internalizeExternalItem","externalItem","aliases","selectedVariablesAliases","normalizedItem","subtitle","groupHead","isBoolean","defaultValue","nothingSelectedValue","setEmptyOnSetMinMaxValueInColumn","isArray","isMap","allSelectedCode","selectedVariablesAliasesSeparator","showAvatars","compactView","dependentVariablesPopupHint","iconClass","isClickable","isDeletable","isModified","normalizedVariable","externalSection","internalizedSection","sectionTitle","sectionSubTitle","sectionHint","sectionIcon","rights","isExpanded","action","internalizedItem","externalIcon","bgColor","externalSectionAction","buttonText","externalAliases","isPlainObject","entries","map","isSet","Array","from","boolOrNull","x","isUndefined","setEmptyOnGroupActions","externalVariable","avatarOptions","conflictsWith","requires","secondary","AccessRightsModel","BuilderModel","getName","setInitialAccessRights","getState","deleted","getElementState","params","getGetters","shown","section","getters","isMinValueSet","rightId","isMaxValueSet","valueId","getNothingSelectedValue","getSelectedVariablesAlias","rightItem","getActions","toggleSection","store","commit","expandAllSections","collapseAllSections","toggleGroup","search","payload","addRight","internalRight","updateRightTitle","rightTitle","updateRightSubtitle","rightSubtitle","deleteRight","markRightAsModified","getMutations","setRightTitle","setRightSubtitle","delete","add","expandSection","collapseSection","expandGroup","showItem","itemId","showGroup","showSection","showAll","hideAll","lowerQuery","toLowerCase","includes","MenuCell","inject","isMenuShown","menuPopupOptions","icon","Math","floor","shownUserGroupsWithoutCurrent","shownWithoutCurrent","applyDialogItems","toggleMenu","showApplyDialog","applyDialog","srcUserGroupId","dstUserGroupId","setMaxValuesInSection","setMinValuesInSection","Icon","iconBgColor","startsWith","Locator","SectionIcon","Number","default","rightOrGroupTitle","MasterSwitcher","Switcher","isChecked","Boolean","switcherOptions","SingleRoleTitle","userGroupTitle","PopupHeader","isMinMaxValuesSet","isSelectedAnythingBesidesMin","setMin","setMax","PopupContent","initialValues","notSavedValues","getNotSavedValues","variablesShownInList","variablesWithoutMinAndSecondary","secondaryVariables","nothingSelectedValues","secondarySwitcherOptions","iconSet","IconSet","redefineApply","apply","addValue","requiredId","conflictId","otherVariable","removeValue","otherVariableId","setMaxValue","setMinValue","forEach","getVariableHintOptions","popupOptions","bindOptions","position","offset","AllRolesTitle","ValuePopup","provide","onApply","closeEsc","minWidth","padding","applyButton","ApplyButton","onclick","renderTo","cancelButton","Footer","DefaultFooter","constructor","dialog","selectAllButton","Tag","render","Dom","deselectAllButton","getDialog","getContent","getItems","deselect","BaseHeader","app","BitrixVue","createApp","getWidth","getOption","mount","dialogItems","selectedDialogItems","filter","showSelector","height","hideByEsc","searchOptions","allowCreateItem","onItemSelect","onItemDeselect","onDestroy","header","headerOptions","addedItem","removedItem","newValues","setValues","allVariablesIds","allVariablesIdsWithoutRemoved","candidate","setNothingSelectedValueIfNeeded","nothingSelected","nothing","close","POPUP_ID","closeSelector","menuItems","innerEvent","getMenuWindow","setValue","MenuManager","onClose","getMenuById","SelectedHint","html","isRendered","currentAlias","hintHtml","emptyVariableId","currentVariableId","firstItem","currentVariableTitle","Cells","DependentVariablesCell","MultivariablesCell","TogglerCell","VariablesCell","Rows","DependentVariablesRow","MultivariablesRow","VariablesRow","getValueComponent","ValueCell","cellComponent","Column","renderedRights","ColumnList","throttledScrollHandler","throttledResizeHandler","ears","isEarsInited","isLeftShadowShown","isRightShadowShown","throttle","adjustShadowsVisibility","adjustEars","initEars","destroyEars","oldValue","calculateShadowsVisibility","offsetWidth","scrollWidth","round","toggleEars","Ears","immediateInit","smallSize","init","style","getWrapper","renderHint","clean","hintIconWrapper","setAttribute","append","getHintManager","initNode","onSectionEventButtonClick","eventData","EventEmitter","RowValue","component","TitleCell","isRowValueShown","isRightDeletable","rightCellStyle","setMaxValuesForRight","setMinValuesForRight","openRowValue","onRightClick","TitleColumn","Section","code","subTitle","Grid","loader","searchContainerSelector","shownSections","shownUserGroups","initOwnerDocument","scrollToSection","sections","find","scrollTo","top","getPosition","AnalyticsManager","analyticsData","hasOwn","onSaveAttempt","createdRoles","editedRoles","deletedRoles","i","onSaveSuccess","onSaveError","response","status","onCancelChanges","sendData","onCloseWithoutSave","isArrayFilled","errors","error","toCamelCase","pName","ACTION_SAVE","MODE","BODY_TYPE","ApplicationModel","setOptions","setGuid","rootState","rootGetters","setSaving","NEW_USER_GROUP_ID_PREFIX","UserGroupsModel","setInitialUserGroups","groups","getEmptyAccessRightValue","defaultAccessRightValues","setAccessRightValues","setAccessRightValuesForShown","setMinAccessRightValues","setMaxAccessRightValues","setMinAccessRightValuesInSection","setMaxAccessRightValuesInSection","setMinAccessRightValuesForRight","setMaxAccessRightValuesForRight","setRoleTitle","addMember","removeMember","copyUserGroup","copySectionValues","addUserGroup","removeUserGroup","showUserGroup","hideUserGroup","accessRightValue","markUserGroupForDeletion","role","root","valueToSet","setEmpty","src","sourceGroup","emptyGroup","copy","newGroup","initialGroup","isFunction","symmetricDifference","initialAccessCodes","currentAccessCodes","createStore","userGroupsModel","create","accessRightsModel","Builder","addModel","syncBuild","resetState","clearState","AccessRightsExporter","source","accessRightSection","accessRight","additionalRightData","eventResults","eventResult","BaseUserGroupsExporter","accessCodes","shouldBeIncludedInExport","singleValue","AllUserGroupsExporter","OnlyChangedUserGroupsExporter","ApplicationInternalizer","actionSave","mode","bodyType","additionalSaveParams","isSaveOnlyChangedRights","isInteger","isSaveAccessRightsList","isObject","UserGroupsInternalizer","externalGroup","internalGroup","internalizedGroup","externalValue","internalizedValue","previousValue","externalMember","internalizedAccessCode","externalAccessRightsValue","stringAccessCode","replace","ShownUserGroupsCopier","srcUserGroups","srcUserGroup","shownCount","App","ButtonPanel","fireEventReset","box","MessageBox","message","modal","LINK","sendActionRequest","Promise","resolve","reject","then","catch","finally","waitContainer","getContainer","querySelector","removeClass","draw","applicationOptions","use","analytics","unmount","hasUnsavedChanges","getGuid","sliderEvent","isSliderBelongsToThisApp","SidePanel","Instance","getSliderByWindow","getSlider","customData","sliderCode","loadExtension","FeaturePromotersRegistry","getPromoter","loadError","Notification","Center","notify","autoHideDelay","internalUserGroups","deletedAccessRights","Ajax","runComponentAction","deletedUserGroups","parameters","newUserGroups","USER_GROUPS","newAccessRights","ACCESS_RIGHTS","denyAction","mediumButtonSize","setTimeout"],"mappings":"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"}

Youez - 2016 - github.com/yon3zu
LinuXploit