| Current Path : /var/www/homesaver/www/bitrix/js/ui/accessrights/v2/dist/ |
| Current File : /var/www/homesaver/www/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/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/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/access-rights-internalizer.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 Item, type ItemId } from 'ui.entity-selector';\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},\n\tmounted()\n\t{\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\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: 'project',\n\t\t\t\t\tdynamicLoad: true,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\taddProjectMetaUsers: true,\n\t\t\t\t\t},\n\t\t\t\t\titemOptions: {\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tlink: '',\n\t\t\t\t\t\t\tlinkTitle: '',\n\t\t\t\t\t\t},\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\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 (/^SG(\\d+)_([AEK])$/.test(accessCode))\n\t\t\t{\n\t\t\t\tconst match = accessCode.match(/^SG(\\d+)_([AEK])$/) || null;\n\n\t\t\t\tconst projectId = match ? match[1] : null;\n\t\t\t\tconst postfix = match ? match[2] : null;\n\n\t\t\t\treturn ['project', `${projectId}:${postfix}`];\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 === 'site-groups')\n\t\t\t{\n\t\t\t\treturn `G${item.id}`;\n\t\t\t}\n\n\t\t\tif (entityId === 'project')\n\t\t\t{\n\t\t\t\tconst subType = item.customData.get('metauser');\n\t\t\t\tconst originalId = item.customData.get('projectId');\n\t\t\t\tif (subType === 'owner')\n\t\t\t\t{\n\t\t\t\t\treturn `SG${originalId}_A`;\n\t\t\t\t}\n\n\t\t\t\tif (subType === 'moderator')\n\t\t\t\t{\n\t\t\t\t\treturn `SG${originalId}_E`;\n\t\t\t\t}\n\n\t\t\t\tif (subType === 'all')\n\t\t\t\t{\n\t\t\t\t\treturn `SG${originalId}_K`;\n\t\t\t\t}\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':\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 'site-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},\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\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 { 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';\n\n/**\n * A special case of Section\n */\nexport const Header = {\n\tname: 'Header',\n\tcomponents: { RoleHeading, SyncHorizontalScroll, Members, RolesControl, ColumnLayout, CellLayout },\n\tprops: {\n\t\tuserGroups: {\n\t\t\ttype: Map,\n\t\t\trequired: true,\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</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 cutLongTitle(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 { 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';\n\nexport type AccessRightsState = {\n\tcollection: AccessRightsCollection,\n\tsearchQuery: 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};\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 AccessRightItem = {\n\tid: string,\n\ttype: string,\n\ttitle: 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};\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}\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};\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\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};\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};\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\tgetMutations(): MutationTree<AccessRightsState>\n\t{\n\t\treturn {\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<span class=\"ui-access-rights-v2-cell-popup-header-toggle-caption\">{{\n\t\t\t\t\t$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ACCESS')\n\t\t\t\t}}</span>\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 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 },\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},\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},\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<span class=\"ui-access-rights-v2-text-ellipsis\">{{ variable.title }}</span>\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</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.length >= 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';\n\nexport const ColumnList = {\n\tname: 'ColumnList',\n\tcomponents: { Column, SyncHorizontalScroll },\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</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 ref=\"container\"></span>',\n};\n","import { Hint } from '../util/hint';\nimport { Icon } from './icon';\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},\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</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';\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},\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},\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:title=\"right.title\"\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]\"\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<span class=\"ui-access-rights-v2-text-ellipsis\" :style=\"{\n\t\t\t\t'margin-left': !right.groupHead && !right.group ? '23px' : null,\n\t\t\t}\">{{ right.title }}</span>\n\t\t\t<Hint v-once v-if=\"right.hint\" :html=\"right.hint\" />\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</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\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},\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};\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 { 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},\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},\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: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}\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};\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};\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\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};\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 { 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 { 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(\n\t\t\tAccessRightsModel.create()\n\t\t\t\t.setInitialAccessRights(accessRights)\n\t\t\t,\n\t\t)\n\t\t.addModel(userGroupsModel)\n\t\t.syncBuild()\n\t;\n\n\treturn {\n\t\tstore,\n\t\tresetState: () => userGroupsModel.clearState(),\n\t\tuserGroupsModel,\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 { Text, Type } from 'main.core';\nimport { DEFAULT_ALIAS_SEPARATOR, normalizeAliasKey } from '../../../../utils';\nimport type {\n\tAccessRightItem,\n\tAccessRightsCollection,\n\tAccessRightSection,\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};\n\nexport type ExternalAccessRightItem = {\n\tid: any,\n\ttype: any,\n\ttitle: 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};\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}\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};\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#internalizeExternalItem(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\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) ? 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};\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\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\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};\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});\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 { 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';\n\nexport type AppConstructOptions = Options & {\n\trenderTo: HTMLElement;\n\tuserGroups: ExternalUserGroup[];\n\taccessRights: ExternalAccessRightSection[];\n};\n\ntype SaveAjaxResponse = AjaxResponse<{ USER_GROUPS: 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#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['userGroups/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 }) => {\n\t\t\t\t\tthis.#analyticsManager.onSaveSuccess();\n\t\t\t\t\tthis.#userGroupsModel.setInitialUserGroups(userGroups);\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\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\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},\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\tresolve({\n\t\t\t\t\t\tuserGroups: newUserGroups,\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['userGroups/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\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 } = 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\n\t\tthis.#unwatch = this.#store.watch(\n\t\t\t(state, getters) => getters['userGroups/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['userGroups/isModified'] || this.#isUserConfirmedClose);\n\t}\n\n\tscrollToSection(sectionCode)\n\t{\n\t\tthis.#rootComponent.scrollToSection(sectionCode);\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","mounted","Dialog","enableSearch","context","alwaysShowLabels","entities","options","intranetUsersOnly","emailUsers","inviteEmployeeLink","inviteGuestLink","selectMode","allowSelectRootDepartment","allowFlatDepartments","dynamicLoad","addProjectMetaUsers","itemOptions","default","link","linkTitle","dynamicSearch","targetNode","preselectedItems","cacheable","events","onMemberAdd","onMemberRemove","onHide","$emit","show","methods","test","match","userId","departmentId","groupId","projectId","postfix","event","member","getMemberFromEvent","$store","dispatch","userGroupId","getData","getAccessCodeByItem","getMemberTypeByItem","title","text","avatar","isStringFilled","entityId","isString","endsWith","originalId","subType","customData","get","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","mapState","isSaving","state","application","guid","maxVisibleUserGroups","mapGetters","isMaxVisibleUserGroupsReached","isMaxValueSetForAny","isMinValueSetForAny","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","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","AccessRightsModel","BuilderModel","getName","setInitialAccessRights","rights","getState","getElementState","params","getGetters","shown","sectionCode","section","getters","isSet","isMinValueSet","rightId","isMaxValueSet","valueId","getNothingSelectedValue","nothingSelectedValue","getSelectedVariablesAlias","selectedVariablesAliasesSeparator","selectedVariablesAliases","getActions","toggleSection","store","commit","expandAllSections","collapseAllSections","toggleGroup","groupHead","search","payload","getMutations","isExpanded","expandSection","collapseSection","expandGroup","showItem","itemId","showGroup","showSection","showAll","hideAll","lowerQuery","toLowerCase","sectionTitle","includes","sectionSubTitle","MenuCell","inject","isMenuShown","menuPopupOptions","icon","Math","floor","shownUserGroupsWithoutCurrent","shownWithoutCurrent","delete","applyDialogItems","toggleMenu","showApplyDialog","applyDialog","srcUserGroupId","dstUserGroupId","setMaxValuesInSection","setMinValuesInSection","Icon","iconBgColor","sectionIcon","bgColor","startsWith","Locator","SectionIcon","Number","rightOrGroupTitle","MasterSwitcher","Switcher","isChecked","Boolean","switcherOptions","SingleRoleTitle","userGroupTitle","PopupHeader","isMinMaxValuesSet","isSelectedAnythingBesidesMin","setMin","setMax","PopupContent","initialValues","notSavedValues","getNotSavedValues","variablesShownInList","variablesWithoutMinAndSecondary","secondary","secondaryVariables","nothingSelectedValues","secondarySwitcherOptions","redefineApply","apply","addValue","add","requires","requiredId","conflictsWith","conflictId","otherVariable","removeValue","otherVariableId","setMaxValue","setMinValue","forEach","AllRolesTitle","ValuePopup","provide","onApply","popupOptions","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","allSelectedCode","dialogItems","selectedDialogItems","filter","showSelector","height","hideByEsc","compactView","showAvatars","searchOptions","allowCreateItem","onItemSelect","onItemDeselect","onDestroy","header","headerOptions","addedItem","removedItem","newValues","setValues","allVariablesIds","map","allVariablesIdsWithoutRemoved","candidate","setNothingSelectedValueIfNeeded","nothingSelected","nothing","close","POPUP_ID","closeSelector","menuItems","innerEvent","getMenuWindow","setValue","MenuManager","onClose","getMenuById","SelectedHint","html","isRendered","directives","hint","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","RowValue","component","TitleCell","isRowValueShown","setMaxValuesForRight","setMinValuesForRight","openRowValue","TitleColumn","Section","code","subTitle","sectionHint","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","deleted","isModified","isArrayFilled","errors","error","toCamelCase","pName","ACTION_SAVE","MODE","BODY_TYPE","ApplicationModel","setOptions","setGuid","setSaving","NEW_USER_GROUP_ID_PREFIX","UserGroupsModel","setInitialUserGroups","groups","getEmptyAccessRightValue","rootState","rootGetters","defaultAccessRightValues","defaultValue","setAccessRightValues","setAccessRightValuesForShown","setMinAccessRightValues","setMaxAccessRightValues","setMinAccessRightValuesInSection","setMaxAccessRightValuesInSection","setMinAccessRightValuesForRight","setMaxAccessRightValuesForRight","setRoleTitle","addMember","removeMember","copyUserGroup","copySectionValues","addUserGroup","removeUserGroup","showUserGroup","hideUserGroup","accessRightValue","markUserGroupForDeletion","root","valueToSet","setEmpty","isBoolean","setEmptyOnSetMinMaxValueInColumn","src","sourceGroup","emptyGroup","copy","newGroup","initialGroup","isFunction","symmetricDifference","initialAccessCodes","currentAccessCodes","createStore","userGroupsModel","create","Builder","addModel","syncBuild","resetState","clearState","BaseUserGroupsExporter","transform","source","accessCodes","shouldBeIncludedInExport","singleValue","AllUserGroupsExporter","OnlyChangedUserGroupsExporter","AccessRightsInternalizer","externalSource","external","internalized","externalSection","internalizedSection","externalItem","internalizedItem","externalIcon","aliases","normalizedItem","isArray","normalizedVariable","externalAliases","isPlainObject","entries","boolOrNull","x","isUndefined","setEmptyOnGroupActions","externalVariable","avatarOptions","ApplicationInternalizer","actionSave","mode","bodyType","additionalSaveParams","isSaveOnlyChangedRights","isInteger","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","sliderEvent","isSliderBelongsToThisApp","SidePanel","Instance","getSliderByWindow","getSlider","EventEmitter","sliderCode","loadExtension","FeaturePromotersRegistry","getPromoter","loadError","Notification","Center","notify","position","autoHideDelay","internalUserGroups","Ajax","runComponentAction","deletedUserGroups","parameters","newUserGroups","USER_GROUPS","denyAction","setTimeout"],"mappings":"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"}