File manager - Edit - /home/web/vm-3fadc827.na4u.ru/www/bitrix/modules/ui/install/js/ui/entity-selector/dist/entity-selector.bundle.js.map
Back
{"version":3,"file":"entity-selector.bundle.js","sources":["../src/item/item-node-comparator.js","../src/common/text-node-type.js","../src/common/text-node.js","../src/search/highlighter.js","../src/item/item-badge.js","../src/search/search-field.js","../src/search/match-index.js","../src/search/match-field.js","../src/common/animation.js","../src/item/item-node.js","../src/search/search-field-index.js","../src/search/word-index.js","../src/search/unicode-words.js","../src/search/search-index.js","../src/entity/entity-filter.js","../src/entity/entity.js","../src/common/type-utils.js","../src/item/item.js","../src/dialog/tabs/base-stub.js","../src/dialog/tabs/default-stub.js","../src/dialog/footer/base-footer.js","../src/dialog/tabs/tab.js","../src/tag-selector/tag-item.js","../src/tag-selector/tag-selector.js","../src/dialog/navigation.js","../src/dialog/integration/slider-integration.js","../src/dialog/footer/default-footer.js","../src/dialog/tabs/recent-tab.js","../src/search/match-result.js","../src/search/search-engine.js","../src/search/search-query.js","../src/dialog/tabs/search-loader.js","../src/dialog/footer/search-tab-footer.js","../src/dialog/tabs/search-tab.js","../src/dialog/dialog.js","../src/index.js"],"sourcesContent":["import { Type, Text } from 'main.core';\nimport type ItemNode from './item-node';\n\nexport default class ItemNodeComparator\n{\n\tstatic makeMultipleComparator(order: {[key: string]: 'asc' | 'desc'})\n\t{\n\t\tconst props = Object.keys(order).map(property => `get${Text.capitalize(property)}`);\n\n\t\t/*\n\t\tasc *\n\t\tasc nulls last *\n\t\tasc nulls first\n\n\t\tdesc *\n\t\tdesc nulls first *\n\t\tdesc nulls last\n\t\t*/\n\t\tconst directions: Array<{ ascOrdering: boolean, nullsOrdering: boolean }> = [];\n\n\t\tObject.values(order).forEach((element) => {\n\n\t\t\tconst direction = element.toLowerCase().trim();\n\n\t\t\t// Default sorting: 'asc' || 'asc nulls last'\n\t\t\tlet ascOrdering = true;\n\t\t\tlet nullsOrdering = true;\n\n\t\t\tif (direction === 'desc' || direction === 'desc nulls first')\n\t\t\t{\n\t\t\t\tascOrdering = false;\n\t\t\t}\n\t\t\telse if (direction === 'asc nulls first')\n\t\t\t{\n\t\t\t\tnullsOrdering = false;\n\t\t\t}\n\t\t\telse if (direction === 'desc nulls last')\n\t\t\t{\n\t\t\t\tascOrdering = false;\n\t\t\t\tnullsOrdering = false;\n\t\t\t}\n\n\t\t\tdirections.push({ ascOrdering, nullsOrdering });\n\t\t});\n\n\t\tconst numberOfProperties = props.length;\n\n\t\treturn (nodeA: ItemNode, nodeB : ItemNode) => {\n\t\t\tlet i = 0;\n\t\t\tlet result = 0;\n\n\t\t\twhile (result === 0 && i < numberOfProperties)\n\t\t\t{\n\t\t\t\tconst propertyGetter = props[i];\n\t\t\t\tconst direction = directions[i];\n\n\t\t\t\tresult = this.compareItemNodes(\n\t\t\t\t\tnodeA, nodeB, propertyGetter, direction.ascOrdering, direction.nullsOrdering\n\t\t\t\t);\n\n\t\t\t\ti += 1;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\t}\n\n\tstatic compareItemNodes(\n\t\tnodeA: ItemNode,\n\t\tnodeB: ItemNode,\n\t\tpropertyGetter: string,\n\t\tascOrdering: boolean,\n\t\tnullsOrdering: boolean\n\t)\n\t{\n\t\tconst itemA = nodeA.getItem();\n\t\tconst itemB = nodeB.getItem();\n\n\t\titemA.getCustomData().get();\n\n\t\tconst valueA = itemA[propertyGetter]();\n\t\tconst valueB = itemB[propertyGetter]();\n\n\t\tlet result = 0;\n\n\t\tif (valueA !== null && valueB === null)\n\t\t{\n\t\t\tresult = nullsOrdering ? -1 : 1;\n\t\t}\n\t\telse if (valueA === null && valueB !== null)\n\t\t{\n\t\t\tresult = nullsOrdering ? 1 : -1;\n\t\t}\n\t\telse if (valueA === null && valueB === null)\n\t\t{\n\t\t\tresult = ascOrdering ? -1 : 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (Type.isString(valueA))\n\t\t\t{\n\t\t\t\tresult = valueA.localeCompare(valueB);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult = valueA - valueB;\n\t\t\t}\n\t\t}\n\n\t\tconst sortOrder = ascOrdering ? 1 : -1;\n\n\t\treturn result * sortOrder;\n\t}\n}","import { Type } from 'main.core';\n\nexport default class TextNodeType\n{\n\tstatic TEXT: string = 'text';\n\tstatic HTML: string = 'html';\n\n\tstatic isValid(type: string)\n\t{\n\t\treturn Type.isString(type) && (type === this.HTML || type === this.TEXT);\n\t}\n}","import { Type } from 'main.core';\nimport TextNodeType from './text-node-type';\nimport type { TextNodeOptions } from './text-node-options';\n\nexport default class TextNode\n{\n\ttext: ?string = null;\n\ttype: ?TextNodeType = null;\n\n\tconstructor(options: TextNodeOptions | string)\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tif (Type.isString(options.text))\n\t\t\t{\n\t\t\t\tthis.text = options.text;\n\t\t\t}\n\n\t\t\tif (TextNodeType.isValid(options.type))\n\t\t\t{\n\t\t\t\tthis.type = options.type;\n\t\t\t}\n\t\t}\n\t\telse if (Type.isString(options))\n\t\t{\n\t\t\tthis.text = options;\n\t\t}\n\t}\n\n\tgetText(): ?string\n\t{\n\t\treturn this.text;\n\t}\n\n\tgetType(): ?TextNodeType\n\t{\n\t\treturn this.type;\n\t}\n\n\tisNullable(): boolean\n\t{\n\t\treturn this.getText() === null;\n\t}\n\n\trenderTo(element: HTMLElement): void\n\t{\n\t\tconst text = this.getText();\n\t\tif (text === null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.getType() === null || this.getType() === TextNodeType.TEXT)\n\t\t{\n\t\t\telement.textContent = text;\n\t\t}\n\t\telse if (this.getType() === TextNodeType.HTML)\n\t\t{\n\t\t\telement.innerHTML = text;\n\t\t}\n\t}\n\n\ttoString()\n\t{\n\t\treturn this.getText() ?? '';\n\t}\n\n\ttoJSON()\n\t{\n\t\tif (this.getType() === null)\n\t\t{\n\t\t\treturn this.getText();\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn {\n\t\t\t\ttext: this.getText(),\n\t\t\t\ttype: this.getType()\n\t\t\t};\n\t\t}\n\t}\n}","import { Type, Text } from 'main.core';\nimport TextNode from '../common/text-node';\nimport type MatchIndex from './match-index';\nimport type { OrderedArray } from 'main.core.collections';\n\nexport default class Highlighter\n{\n\tstatic mark(text: string | TextNode, matches: OrderedArray<MatchIndex>)\n\t{\n\t\tlet encode = true;\n\t\tif (text instanceof TextNode)\n\t\t{\n\t\t\tif (text.getType() === 'html')\n\t\t\t{\n\t\t\t\tencode = false;\n\t\t\t}\n\n\t\t\ttext = text.getText();\n\t\t}\n\n\t\tif (!Type.isStringFilled(text) || !matches || matches.count() === 0)\n\t\t{\n\t\t\treturn text;\n\t\t}\n\n\t\tlet result = '';\n\t\tlet offset = 0;\n\t\tlet chunk = '';\n\t\tmatches.forEach((match: MatchIndex) => {\n\n\t\t\tif (offset > match.getStartIndex())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tchunk = text.substring(offset, match.getStartIndex());\n\t\t\tresult += encode ? Text.encode(chunk) : chunk;\n\n\t\t\tresult += '<span class=\"ui-selector-highlight-mark\">';\n\n\t\t\tchunk = text.substring(match.getStartIndex(), match.getEndIndex());\n\t\t\tresult += encode ? Text.encode(chunk) : chunk;\n\n\t\t\tresult += '</span>';\n\n\t\t\toffset = match.getEndIndex();\n\n\t\t});\n\n\t\tchunk = text.substring(offset);\n\t\tresult += encode ? Text.encode(chunk) : chunk;\n\n\t\treturn result;\n\t}\n}","import { Type, Dom } from 'main.core';\nimport type { ItemBadgeOptions } from './item-badge-options';\nimport TextNode from '../common/text-node';\nimport type { TextNodeOptions } from '../common/text-node-options';\n\nexport default class ItemBadge\n{\n\ttitle: ?TextNode = null;\n\ttextColor: ?string = null;\n\tbgColor: ?string = null;\n\tcontainers: WeakMap<HTMLElement, HTMLElement> = new WeakMap();\n\n\tconstructor(badgeOptions: ItemBadgeOptions)\n\t{\n\t\tconst options: ItemBadgeOptions = Type.isPlainObject(badgeOptions) ? badgeOptions : {};\n\n\t\tthis.setTitle(options.title);\n\t\tthis.setTextColor(options.textColor);\n\t\tthis.setBgColor(options.bgColor);\n\t}\n\n\tgetTitle(): string\n\t{\n\t\tconst titleNode = this.getTitleNode();\n\n\t\treturn titleNode !== null && !titleNode.isNullable() ? titleNode.getText() : '';\n\t}\n\n\tgetTitleNode(): ?TextNode\n\t{\n\t\treturn this.title;\n\t}\n\n\tsetTitle(title: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isStringFilled(title) || Type.isPlainObject(title) || title === null)\n\t\t{\n\t\t\tthis.title = title === null ? null : new TextNode(title);\n\t\t}\n\t}\n\n\tgetTextColor(): ?string\n\t{\n\t\treturn this.textColor;\n\t}\n\n\tsetTextColor(textColor: ?string): void\n\t{\n\t\tif (Type.isString(textColor) || textColor === null)\n\t\t{\n\t\t\tthis.textColor = textColor;\n\t\t}\n\t}\n\n\tgetBgColor(): ?string\n\t{\n\t\treturn this.bgColor;\n\t}\n\n\tsetBgColor(bgColor: ?string): void\n\t{\n\t\tif (Type.isString(bgColor) || bgColor === null)\n\t\t{\n\t\t\tthis.bgColor = bgColor;\n\t\t}\n\t}\n\n\tgetContainer(target: HTMLElement): HTMLElement\n\t{\n\t\tlet container = this.containers.get(target);\n\t\tif (!container)\n\t\t{\n\t\t\tcontainer = document.createElement('span');\n\t\t\tcontainer.className = 'ui-selector-item-badge';\n\n\t\t\tthis.containers.set(target, container);\n\t\t}\n\n\t\treturn container;\n\t}\n\n\trenderTo(target: HTMLElement): void\n\t{\n\t\tconst container = this.getContainer(target);\n\n\t\tconst titleNode = this.getTitleNode();\n\t\tif (titleNode)\n\t\t{\n\t\t\tthis.getTitleNode().renderTo(container);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcontainer.textContent = '';\n\t\t}\n\n\t\tDom.style(container, 'color', this.getTextColor());\n\t\tDom.style(container, 'background-color', this.getBgColor())\n\t\tDom.append(container, target);\n\t}\n\n\ttoJSON()\n\t{\n\t\treturn {\n\t\t\ttitle: this.getTitleNode(),\n\t\t\ttextColor: this.getTextColor(),\n\t\t\tbgColor: this.getBgColor()\n\t\t}\n\t}\n}","import { Type } from 'main.core';\nimport type { SearchFieldOptions } from './search-field-options';\n\nexport default class SearchField\n{\n\tname: string = null;\n\ttype: string = 'string';\n\tsearchable: boolean = true;\n\tsystem: boolean = false;\n\tsort: ?number = null;\n\n\tconstructor(fieldOptions: SearchFieldOptions)\n\t{\n\t\tconst options = Type.isPlainObject(fieldOptions) ? fieldOptions : {};\n\n\t\tif (!Type.isStringFilled(options.name))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.SearchField: \"name\" parameter is required.');\n\t\t}\n\n\t\tthis.name = options.name;\n\t\tthis.setType(options.type);\n\t\tthis.setSystem(options.system);\n\t\tthis.setSort(options.sort);\n\t\tthis.setSearchable(options.searchable);\n\t}\n\n\tgetName(): string\n\t{\n\t\treturn this.name;\n\t}\n\n\tgetType(): string\n\t{\n\t\treturn this.type;\n\t}\n\n\tsetType(type: string): void\n\t{\n\t\tif (Type.isStringFilled(type))\n\t\t{\n\t\t\tthis.type = type;\n\t\t}\n\t}\n\n\tgetSort(): ?number\n\t{\n\t\treturn this.sort;\n\t}\n\n\tsetSort(sort: ?number): void\n\t{\n\t\tif (Type.isNumber(sort) || sort === null)\n\t\t{\n\t\t\tthis.sort = sort;\n\t\t}\n\t}\n\n\tsetSearchable(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.searchable = flag;\n\t\t}\n\t}\n\n\tisSearchable(): boolean\n\t{\n\t\treturn this.searchable;\n\t}\n\n\tsetSystem(flag: boolean)\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.system = flag;\n\t\t}\n\t}\n\n\tisCustom(): boolean\n\t{\n\t\treturn !this.isSystem();\n\t}\n\n\tisSystem(): boolean\n\t{\n\t\treturn this.system;\n\t}\n}","import SearchField from './search-field';\n\nexport default class MatchIndex\n{\n\tfield: SearchField = null;\n\tqueryWord: string = null;\n\tstartIndex: number = null;\n\tendIndex: number = null;\n\n\tconstructor(field: SearchField, queryWord: string, startIndex: number)\n\t{\n\t\tthis.field = field;\n\t\tthis.queryWord = queryWord;\n\t\tthis.startIndex = startIndex;\n\t\tthis.endIndex = startIndex + queryWord.length;\n\t}\n\n\tgetField(): SearchField\n\t{\n\t\treturn this.field;\n\t}\n\n\tgetQueryWord(): string\n\t{\n\t\treturn this.queryWord;\n\t}\n\n\tgetStartIndex(): number\n\t{\n\t\treturn this.startIndex;\n\t}\n\n\tgetEndIndex(): number\n\t{\n\t\treturn this.endIndex;\n\t}\n}","import { Type } from 'main.core';\n\nimport type SearchField from './search-field';\nimport MatchIndex from './match-index';\nimport { OrderedArray } from 'main.core.collections';\n\nconst comparator = (a: MatchIndex, b: MatchIndex) => {\n\n\tif (a.getStartIndex() === b.getStartIndex())\n\t{\n\t\treturn a.getEndIndex() > b.getEndIndex() ? -1 : 1;\n\t}\n\telse\n\t{\n\t\treturn a.getStartIndex() > b.getStartIndex() ? 1 : -1;\n\t}\n};\n\nexport default class MatchField\n{\n\tfield: SearchField = null;\n\tmatchIndexes: OrderedArray<MatchIndex> = new OrderedArray(comparator);\n\n\tconstructor(field: SearchField, indexes: MatchIndex[] = [])\n\t{\n\t\tthis.field = field;\n\t\tthis.addIndexes(indexes);\n\t}\n\n\tgetField(): SearchField\n\t{\n\t\treturn this.field;\n\t}\n\n\tgetMatches(): OrderedArray<MatchIndex>\n\t{\n\t\treturn this.matchIndexes;\n\t}\n\n\taddIndex(matchIndex: MatchIndex): void\n\t{\n\t\tthis.matchIndexes.add(matchIndex);\n\t}\n\n\taddIndexes(matchIndexes: MatchIndex[]): void\n\t{\n\t\tif (Type.isArray(matchIndexes))\n\t\t{\n\t\t\tmatchIndexes.forEach(matchIndex => {\n\t\t\t\tthis.addIndex(matchIndex);\n\t\t\t});\n\t\t}\n\t}\n}","import { Event, Type } from 'main.core';\n\nexport default class Animation\n{\n\tstatic handleTransitionEnd(element: HTMLElement, propertyName: string | string[]): Promise\n\t{\n\t\tconst properties = Type.isArray(propertyName) ? new Set(propertyName) : new Set([propertyName]);\n\n\t\treturn new Promise(function(resolve) {\n\t\t\tconst handler = (event: TransitionEvent) => {\n\t\t\t\tif (event.target !== element || !properties.has(event.propertyName))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tproperties.delete(event.propertyName);\n\t\t\t\tif (properties.size === 0)\n\t\t\t\t{\n\t\t\t\t\tresolve(event);\n\t\t\t\t\tEvent.unbind(element, 'transitionend', handler);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tEvent.bind(element, 'transitionend', handler);\n\t\t});\n\t}\n\n\tstatic handleAnimationEnd(element: HTMLElement, animationName: string)\n\t{\n\t\treturn new Promise(resolve => {\n\t\t\tconst handler = (event) => {\n\t\t\t\tif (!animationName || (event.animationName === animationName))\n\t\t\t\t{\n\t\t\t\t\tresolve(event);\n\t\t\t\t\tEvent.unbind(element, 'animationend', handler);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tEvent.bind(element, 'animationend', handler);\n\t\t});\n\t}\n}","import { ajax as Ajax, Cache, Dom, Runtime, Tag, Type, Browser, Event } from 'main.core';\nimport { OrderedArray } from 'main.core.collections';\nimport { Loader } from 'main.loader';\n\nimport ItemNodeComparator from './item-node-comparator';\nimport Highlighter from '../search/highlighter';\nimport ItemBadge from './item-badge';\nimport MatchField from '../search/match-field';\nimport TextNode from '../common/text-node';\nimport Animation from '../common/animation';\nimport Item from './item';\n\nimport type Tab from '../dialog/tabs/tab';\nimport type Dialog from '../dialog/dialog';\nimport type { ItemOptions } from './item-options';\nimport type { ItemNodeOptions } from './item-node-options';\nimport type { ItemBadgeOptions } from './item-badge-options';\nimport type { TextNodeOptions } from '../common/text-node-options';\nimport type { CaptionOptions } from './caption-options';\nimport type { BadgesOptions } from './badges-options';\nimport type { AvatarOptions } from './avatar-options';\n\nexport class RenderMode\n{\n\tstatic PARTIAL = 'partial';\n\tstatic OVERRIDE = 'override';\n}\n\nexport default class ItemNode\n{\n\titem: Item = null;\n\ttab: Tab = null;\n\tcache = new Cache.MemoryCache();\n\tparentNode: ItemNode = null;\n\n\tchildren: OrderedArray<ItemNode> = null;\n\tchildItems: WeakMap<Item, ItemNode> = new WeakMap(); // for the fast access\n\n\tloaded: boolean = false;\n\tdynamic: boolean = false;\n\tdynamicPromise: ?Promise = null;\n\tloader: Loader = null;\n\topen: boolean = false;\n\tautoOpen: boolean = false;\n\tfocused: boolean = false;\n\n\trenderMode: RenderMode = RenderMode.PARTIAL;\n\ttitle: ?TextNode = null;\n\tsubtitle: ?TextNode = null;\n\tsupertitle: ?TextNode = null;\n\tcaption: ?TextNode = null;\n\tcaptionOptions: CaptionOptions = {};\n\tavatar: ?string = null;\n\tavatarOptions: ?AvatarOptions = null;\n\tlink: ?string = null;\n\tlinkTitle: ?TextNode = null;\n\ttextColor: ?string = null;\n\tbadges: ItemBadgeOptions[] = null;\n\tbadgesOptions: BadgesOptions = {};\n\n\thighlights: MatchField[] = [];\n\n\trendered: false;\n\trenderWithDebounce = Runtime.debounce(this.render, 50, this);\n\n\tconstructor(item: Item, nodeOptions: ItemNodeOptions)\n\t{\n\t\tconst options: ItemNodeOptions = Type.isPlainObject(nodeOptions) ? nodeOptions : {};\n\n\t\tif (Type.isObject(item))\n\t\t{\n\t\t\tthis.item = item;\n\t\t}\n\n\t\tlet comparator = null;\n\t\tif (Type.isFunction(options.itemOrder))\n\t\t{\n\t\t\tcomparator = options.itemOrder;\n\t\t}\n\t\telse if (Type.isPlainObject(options.itemOrder))\n\t\t{\n\t\t\tcomparator = ItemNodeComparator.makeMultipleComparator(options.itemOrder);\n\t\t}\n\n\t\tthis.children = new OrderedArray(comparator);\n\n\t\tthis.renderMode = options.renderMode === RenderMode.OVERRIDE ? RenderMode.OVERRIDE : RenderMode.PARTIAL;\n\t\tif (this.renderMode === RenderMode.OVERRIDE)\n\t\t{\n\t\t\tthis.setTitle('');\n\t\t\tthis.setSubtitle('');\n\t\t\tthis.setSupertitle('');\n\t\t\tthis.setCaption('');\n\t\t\tthis.setLinkTitle('');\n\n\t\t\tthis.avatar = '';\n\t\t\tthis.avatarOptions = {\n\t\t\t\tbgSize: null,\n\t\t\t\tbgColor: null,\n\t\t\t\tbgImage: null,\n\t\t\t};\n\t\t\tthis.textColor = '';\n\t\t\tthis.link = '';\n\t\t\tthis.badges = [];\n\t\t\tthis.captionOptions = {\n\t\t\t\tfitContent: null,\n\t\t\t\tmaxWidth: null,\n\t\t\t};\n\t\t\tthis.badgesOptions = {\n\t\t\t\tfitContent: null,\n\t\t\t\tmaxWidth: null,\n\t\t\t};\n\t\t}\n\n\t\tthis.setTitle(options.title);\n\t\tthis.setSubtitle(options.subtitle);\n\t\tthis.setSupertitle(options.supertitle);\n\t\tthis.setCaption(options.caption);\n\t\tthis.setCaptionOptions(options.captionOptions);\n\t\tthis.setAvatar(options.avatar);\n\t\tthis.setAvatarOptions(options.avatarOptions);\n\t\tthis.setTextColor(options.textColor);\n\t\tthis.setLink(options.link);\n\t\tthis.setLinkTitle(options.linkTitle);\n\t\tthis.setBadges(options.badges);\n\t\tthis.setBadgesOptions(options.badgesOptions);\n\n\t\tthis.setDynamic(options.dynamic);\n\t\tthis.setOpen(options.open);\n\t}\n\n\tgetItem(): Item\n\t{\n\t\treturn this.item;\n\t}\n\n\tisRoot(): boolean\n\t{\n\t\treturn this.getParentNode() === null;\n\t}\n\n\tgetDialog(): Dialog\n\t{\n\t\treturn this.getTab().getDialog();\n\t}\n\n\tsetTab(tab: Tab): void\n\t{\n\t\tthis.tab = tab;\n\t}\n\n\tgetTab(): Tab\n\t{\n\t\treturn this.tab;\n\t}\n\n\tgetParentNode(): ?ItemNode\n\t{\n\t\treturn this.parentNode;\n\t}\n\n\tsetParentNode(parentNode: ItemNode): void\n\t{\n\t\tthis.parentNode = parentNode;\n\t}\n\n\tgetNextSibling(): ?ItemNode\n\t{\n\t\tif (!this.getParentNode())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst siblings = this.getParentNode().getChildren();\n\t\tconst index = siblings.getIndex(this);\n\n\t\treturn siblings.getByIndex(index + 1);\n\t}\n\n\tgetPreviousSibling(): ?ItemNode\n\t{\n\t\tif (!this.getParentNode())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst siblings = this.getParentNode().getChildren();\n\t\tconst index = siblings.getIndex(this);\n\n\t\treturn siblings.getByIndex(index - 1);\n\t}\n\n\taddChildren(children: ItemOptions[]): void\n\t{\n\t\tif (!Type.isArray(children))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tchildren.forEach((childOptions: ItemOptions) => {\n\t\t\tdelete childOptions.tabs;\n\t\t\tconst childItem = this.getDialog().addItem(childOptions);\n\n\t\t\tconst childNode = this.addItem(childItem, childOptions.nodeOptions);\n\t\t\tchildNode.addChildren(childOptions.children);\n\t\t});\n\t}\n\n\taddChild(child: ItemNode): ItemNode\n\t{\n\t\tif (!(child instanceof ItemNode))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.ItemNode: an item must be an instance of EntitySelector.ItemNode.');\n\t\t}\n\n\t\tif (this.isChildOf(child) || child === this)\n\t\t{\n\t\t\tthrow new Error('EntitySelector.ItemNode: a child item cannot be a parent of current item.');\n\t\t}\n\n\t\tif (this.getChildren().has(child) || this.childItems.has(child.getItem()))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tthis.getChildren().add(child);\n\t\tthis.childItems.set(child.getItem(), child);\n\n\t\tchild.setTab(this.getTab());\n\t\tchild.setParentNode(this);\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.renderWithDebounce();\n\t\t}\n\n\t\treturn child;\n\t}\n\n\tgetDepthLevel(): number\n\t{\n\t\treturn this.isRoot() ? 0 : this.getParentNode().getDepthLevel() + 1;\n\t}\n\n\taddItem(item: Item, nodeOptions: ItemNodeOptions): ItemNode\n\t{\n\t\tlet itemNode = this.childItems.get(item);\n\t\tif (!itemNode)\n\t\t{\n\t\t\titemNode = item.createNode(nodeOptions);\n\t\t\tthis.addChild(itemNode);\n\t\t}\n\n\t\treturn itemNode;\n\t}\n\n\taddItems(items: Item[] | Array<[Item, ItemNodeOptions]>): void\n\t{\n\t\tif (Type.isArray(items))\n\t\t{\n\t\t\tthis.disableRender();\n\n\t\t\titems.forEach((item: Item | [Item, ItemNodeOptions]) => {\n\t\t\t\tif (Type.isArray(item) && item.length === 2)\n\t\t\t\t{\n\t\t\t\t\tthis.addItem(item[0], item[1]);\n\t\t\t\t}\n\t\t\t\telse if (item instanceof Item)\n\t\t\t\t{\n\t\t\t\t\tthis.addItem(item);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.enableRender();\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.renderWithDebounce();\n\t\t\t}\n\t\t}\n\t}\n\n\thasItem(item: Item): boolean\n\t{\n\t\treturn this.childItems.has(item);\n\t}\n\n\tremoveChild(child: ItemNode): boolean\n\t{\n\t\tif (!this.getChildren().has(child))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tchild.removeChildren();\n\n\t\tif (child.isFocused())\n\t\t{\n\t\t\tchild.unfocus();\n\t\t}\n\n\t\tchild.setParentNode(null);\n\t\tchild.getItem().removeNode(child);\n\n\t\tthis.getChildren().delete(child);\n\t\tthis.childItems.delete(child.getItem());\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tDom.remove(child.getOuterContainer());\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tremoveChildren(): void\n\t{\n\t\tif (!this.hasChildren())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.getChildren().forEach((node: ItemNode) => {\n\n\t\t\tnode.removeChildren();\n\n\t\t\tif (node.isFocused())\n\t\t\t{\n\t\t\t\tnode.unfocus();\n\t\t\t}\n\n\t\t\tnode.setParentNode(null);\n\t\t\tnode.getItem().removeNode(node);\n\t\t});\n\n\t\tthis.getChildren().clear();\n\t\tthis.childItems = new WeakMap();\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tif (Browser.isIE())\n\t\t\t{\n\t\t\t\tDom.clean(this.getChildrenContainer());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getChildrenContainer().textContent = '';\n\t\t\t}\n\t\t}\n\t}\n\n\thasChild(child: ItemNode): boolean\n\t{\n\t\treturn this.getChildren().has(child);\n\t}\n\n\tisChildOf(parent: ItemNode): boolean\n\t{\n\t\tlet parentNode = this.getParentNode();\n\t\twhile (parentNode !== null)\n\t\t{\n\t\t\tif (parentNode === parent)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tparentNode = parentNode.getParentNode();\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tgetFirstChild(): ?ItemNode\n\t{\n\t\treturn this.children.getFirst();\n\t}\n\n\tgetLastChild(): ?ItemNode\n\t{\n\t\treturn this.children.getLast();\n\t}\n\n\tgetChildren(): OrderedArray<ItemNode>\n\t{\n\t\treturn this.children;\n\t}\n\n\thasChildren(): boolean\n\t{\n\t\treturn this.children.count() > 0;\n\t}\n\n\tloadChildren(): Promise\n\t{\n\t\tif (!this.isDynamic())\n\t\t{\n\t\t\tthrow new Error('EntitySelector.ItemNode.loadChildren: an item node is not dynamic.');\n\t\t}\n\n\t\tif (this.dynamicPromise)\n\t\t{\n\t\t\treturn this.dynamicPromise;\n\t\t}\n\n\t\tthis.dynamicPromise = Ajax.runAction('ui.entityselector.getChildren', {\n\t\t\tjson: {\n\t\t\t\tparentItem: this.getItem().getAjaxJson(),\n\t\t\t\tdialog: this.getDialog().getAjaxJson()\n\t\t\t},\n\t\t\tgetParameters: {\n\t\t\t\tcontext: this.getDialog().getContext()\n\t\t\t}\n\t\t});\n\n\t\tthis.dynamicPromise.then((response) => {\n\t\t\tif (response && response.data && Type.isPlainObject(response.data.dialog))\n\t\t\t{\n\t\t\t\tthis.addChildren(response.data.dialog.items);\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tthis.loaded = true;\n\t\t});\n\n\t\tthis.dynamicPromise.catch((error) => {\n\t\t\tthis.loaded = false;\n\t\t\tthis.dynamicPromise = null;\n\t\t\tconsole.error(error);\n\t\t});\n\n\t\treturn this.dynamicPromise;\n\t}\n\n\tsetOpen(open: boolean): void\n\t{\n\t\tif (Type.isBoolean(open))\n\t\t{\n\t\t\tif (open && this.isDynamic() && !this.isLoaded())\n\t\t\t{\n\t\t\t\tthis.setAutoOpen(true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.open = open;\n\t\t\t}\n\t\t}\n\t}\n\n\tisOpen(): boolean\n\t{\n\t\treturn this.open;\n\t}\n\n\tisAutoOpen(): boolean\n\t{\n\t\treturn this.autoOpen && this.isDynamic() && !this.isLoaded();\n\t}\n\n\tsetAutoOpen(autoOpen: boolean): void\n\t{\n\t\tif (Type.isBoolean(autoOpen))\n\t\t{\n\t\t\tthis.autoOpen = autoOpen;\n\t\t}\n\t}\n\n\tsetDynamic(dynamic: boolean): void\n\t{\n\t\tif (Type.isBoolean(dynamic))\n\t\t{\n\t\t\tthis.dynamic = dynamic;\n\t\t}\n\t}\n\n\tisDynamic(): boolean\n\t{\n\t\treturn this.dynamic;\n\t}\n\n\tisLoaded(): boolean\n\t{\n\t\treturn this.loaded;\n\t}\n\n\tgetLoader(): Loader\n\t{\n\t\tif (this.loader === null)\n\t\t{\n\t\t\tthis.loader = new Loader({\n\t\t\t\ttarget: this.getIndicatorContainer(),\n\t\t\t\tsize: 30\n\t\t\t});\n\t\t}\n\n\t\treturn this.loader;\n\t}\n\n\tshowLoader(): void\n\t{\n\t\tvoid this.getLoader().show();\n\t\tDom.addClass(this.getIndicatorContainer(), 'ui-selector-item-indicator-hidden');\n\t}\n\n\thideLoader(): void\n\t{\n\t\tvoid this.getLoader().hide();\n\t\tDom.removeClass(this.getIndicatorContainer(), 'ui-selector-item-indicator-hidden');\n\t}\n\n\tdestroyLoader(): void\n\t{\n\t\tthis.getLoader().destroy();\n\t\tthis.loader = null;\n\t\tDom.removeClass(this.getIndicatorContainer(), 'ui-selector-item-indicator-hidden');\n\t}\n\n\texpand(): void\n\t{\n\t\tif (this.isOpen() || (!this.hasChildren() && !this.isDynamic()))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isDynamic() && !this.isLoaded())\n\t\t{\n\t\t\tthis.loadChildren().then(() => {\n\t\t\t\tthis.destroyLoader();\n\t\t\t\tthis.expand();\n\t\t\t});\n\n\t\t\tthis.showLoader();\n\n\t\t\treturn;\n\t\t}\n\n\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-item-box-open');\n\t\tDom.style(this.getChildrenContainer(), 'height', '0px');\n\t\tDom.style(this.getChildrenContainer(), 'opacity', 0);\n\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tDom.style(this.getChildrenContainer(), 'height', `${this.getChildrenContainer().scrollHeight}px`);\n\t\t\t\tDom.style(this.getChildrenContainer(), 'opacity', 1);\n\n\t\t\t\tAnimation.handleTransitionEnd(this.getChildrenContainer(), 'height').then(() => {\n\t\t\t\t\tDom.style(this.getChildrenContainer(), 'height', null);\n\t\t\t\t\tDom.style(this.getChildrenContainer(), 'opacity', null);\n\t\t\t\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-item-box-open');\n\t\t\t\t\tthis.setOpen(true);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tcollapse(): void\n\t{\n\t\tif (!this.isOpen())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.style(this.getChildrenContainer(), 'height', `${this.getChildrenContainer().offsetHeight}px`);\n\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tDom.style(this.getChildrenContainer(), 'height', '0px');\n\t\t\t\tDom.style(this.getChildrenContainer(), 'opacity', 0);\n\n\t\t\t\tAnimation.handleTransitionEnd(this.getChildrenContainer(), 'height').then(() => {\n\t\t\t\t\tDom.style(this.getChildrenContainer(), 'height', null);\n\t\t\t\t\tDom.style(this.getChildrenContainer(), 'opacity', null);\n\t\t\t\t\tDom.removeClass(this.getOuterContainer(), 'ui-selector-item-box-open');\n\t\t\t\t\tthis.setOpen(false);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\trender(appendChildren = false): void\n\t{\n\t\tif (this.isRoot())\n\t\t{\n\t\t\tthis.renderRoot(appendChildren);\n\t\t\treturn;\n\t\t}\n\n\t\tconst titleNode = this.getTitleNode();\n\t\tif (titleNode)\n\t\t{\n\t\t\ttitleNode.renderTo(this.getTitleContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getTitleContainer().textContent = '';\n\t\t}\n\n\t\tconst supertitleNode = this.getSupertitleNode();\n\t\tif (supertitleNode)\n\t\t{\n\t\t\tsupertitleNode.renderTo(this.getSupertitleContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getSupertitleContainer().textContent = '';\n\t\t}\n\n\t\tconst subtitleNode = this.getSubtitleNode();\n\t\tif (subtitleNode)\n\t\t{\n\t\t\tsubtitleNode.renderTo(this.getSubtitleContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getSubtitleContainer().textContent = '';\n\t\t}\n\n\t\tconst captionNode = this.getCaptionNode();\n\t\tif (captionNode)\n\t\t{\n\t\t\tcaptionNode.renderTo(this.getCaptionContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getCaptionContainer().textContent = '';\n\t\t}\n\n\t\tconst captionFitContent = this.getCaptionOption('fitContent');\n\t\tif (Type.isBoolean(captionFitContent))\n\t\t{\n\t\t\tDom.style(this.getCaptionContainer(), 'flex-shrink', captionFitContent ? 0 : null);\n\t\t}\n\n\t\tconst captionMaxWidth = this.getCaptionOption('maxWidth');\n\t\tif (Type.isString(captionMaxWidth) || Type.isNumber(captionMaxWidth))\n\t\t{\n\t\t\tDom.style(\n\t\t\t\tthis.getCaptionContainer(),\n\t\t\t\t'max-width',\n\t\t\t\tType.isNumber(captionMaxWidth) ? `${captionMaxWidth}px` : captionMaxWidth\n\t\t\t);\n\t\t}\n\n\t\tif (Type.isStringFilled(this.getTextColor()))\n\t\t{\n\t\t\tthis.getTitleContainer().style.color = this.getTextColor();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getTitleContainer().style.removeProperty('color');\n\t\t}\n\n\t\tconst avatar = this.getAvatar();\n\t\tif (Type.isStringFilled(avatar))\n\t\t{\n\t\t\tthis.getAvatarContainer().style.backgroundImage = `url('${avatar}')`;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst bgImage = this.getAvatarOption('bgImage');\n\t\t\tif (Type.isStringFilled(bgImage))\n\t\t\t{\n\t\t\t\tthis.getAvatarContainer().style.backgroundImage = bgImage;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getAvatarContainer().style.removeProperty('background-size');\n\t\t\t}\n\t\t}\n\n\t\tconst bgColor = this.getAvatarOption('bgColor');\n\t\tif (Type.isStringFilled(bgColor))\n\t\t{\n\t\t\tthis.getAvatarContainer().style.backgroundColor = bgColor;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getAvatarContainer().style.removeProperty('background-color');\n\t\t}\n\n\t\tconst bgSize = this.getAvatarOption('bgSize');\n\t\tif (Type.isStringFilled(bgSize))\n\t\t{\n\t\t\tthis.getAvatarContainer().style.backgroundSize = bgSize;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getAvatarContainer().style.removeProperty('background-size');\n\t\t}\n\n\t\tDom.clean(this.getBadgeContainer());\n\t\tthis.getBadges().forEach((badge: ItemBadge) => {\n\t\t\tbadge.renderTo(this.getBadgeContainer());\n\t\t});\n\n\t\tconst badgesFitContent = this.getBadgesOption('fitContent');\n\t\tif (Type.isBoolean(badgesFitContent))\n\t\t{\n\t\t\tDom.style(this.getBadgeContainer(), 'flex-shrink', badgesFitContent ? 0 : null);\n\t\t}\n\n\t\tconst badgesMaxWidth = this.getBadgesOption('maxWidth');\n\t\tif (Type.isString(badgesMaxWidth) || Type.isNumber(badgesMaxWidth))\n\t\t{\n\t\t\tDom.style(\n\t\t\t\tthis.getBadgeContainer(),\n\t\t\t\t'max-width',\n\t\t\t\tType.isNumber(badgesMaxWidth) ? `${badgesMaxWidth}px` : badgesMaxWidth\n\t\t\t);\n\t\t}\n\n\t\tconst linkTitleNode = this.getLinkTitleNode();\n\t\tif (linkTitleNode)\n\t\t{\n\t\t\tlinkTitleNode.renderTo(this.getLinkTextContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getLinkTextContainer().textContent = '';\n\t\t}\n\n\t\tif (this.hasChildren() || this.isDynamic())\n\t\t{\n\t\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-item-box-has-children');\n\t\t\tif (this.getDepthLevel() >= this.getTab().getItemMaxDepth())\n\t\t\t{\n\t\t\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-item-box-max-depth');\n\t\t\t}\n\t\t}\n\t\telse if (this.getOuterContainer().classList.contains('ui-selector-item-box-has-children'))\n\t\t{\n\t\t\tDom.removeClass(\n\t\t\t\tthis.getOuterContainer(),\n\t\t\t\t['ui-selector-item-box-has-children', 'ui-selector-item-box-max-depth']\n\t\t\t);\n\t\t}\n\n\t\tthis.highlight();\n\n\t\tthis.renderChildren(appendChildren);\n\n\t\tif (this.isAutoOpen())\n\t\t{\n\t\t\tthis.setAutoOpen(false);\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tthis.expand();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tthis.rendered = true;\n\t}\n\n\t/**\n\t * @private\n\t */\n\trenderRoot(appendChildren = false): void\n\t{\n\t\tthis.renderChildren(appendChildren);\n\t\tthis.rendered = true;\n\n\t\tconst stub = this.getTab().getStub();\n\t\tif (stub && stub.isAutoShow() && (this.getDialog().isLoaded() || !this.getDialog().hasDynamicLoad()))\n\t\t{\n\t\t\tif (this.hasChildren())\n\t\t\t{\n\t\t\t\tstub.hide();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tstub.show();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\trenderChildren(appendChildren = false): void\n\t{\n\t\tif (!appendChildren)\n\t\t{\n\t\t\tif (Browser.isIE())\n\t\t\t{\n\t\t\t\tDom.clean(this.getChildrenContainer());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getChildrenContainer().textContent = '';\n\t\t\t}\n\t\t}\n\n\t\tif (this.hasChildren())\n\t\t{\n\t\t\tlet previousSibling: ItemNode = null;\n\t\t\tthis.getChildren().forEach((child: ItemNode) => {\n\t\t\t\tchild.render(appendChildren);\n\t\t\t\tconst container = child.getOuterContainer();\n\n\t\t\t\tif (!appendChildren)\n\t\t\t\t{\n\t\t\t\t\tDom.append(container, this.getChildrenContainer());\n\t\t\t\t}\n\t\t\t\tif (!container.parentNode)\n\t\t\t\t{\n\t\t\t\t\tif (previousSibling !== null)\n\t\t\t\t\t{\n\t\t\t\t\t\tDom.insertAfter(container, previousSibling.getOuterContainer());\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tDom.append(container, this.getChildrenContainer());\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpreviousSibling = child;\n\t\t\t});\n\t\t}\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.rendered && this.getDialog() && this.getDialog().isRendered();\n\t}\n\n\tenableRender(): void\n\t{\n\t\tthis.rendered = true;\n\t}\n\n\tdisableRender(): void\n\t{\n\t\tthis.rendered = false;\n\t}\n\n\tgetRenderMode(): RenderMode\n\t{\n\t\treturn this.renderMode;\n\t}\n\n\tgetTitle(): string\n\t{\n\t\tconst titleNode = this.getTitleNode();\n\n\t\treturn titleNode !== null ? titleNode.getText() : null;\n\t}\n\n\tgetTitleNode(): ?TextNode\n\t{\n\t\treturn this.title !== null ? this.title: this.getItem().getTitleNode();\n\t}\n\n\tsetTitle(title: string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(title) || Type.isPlainObject(title))\n\t\t{\n\t\t\tthis.title = new TextNode(title);\n\t\t}\n\t\telse if (title === null)\n\t\t{\n\t\t\tthis.title = null;\n\t\t}\n\t}\n\n\tgetSubtitle(): ?string\n\t{\n\t\tconst subtitleNode = this.getSubtitleNode();\n\n\t\treturn subtitleNode !== null ? subtitleNode.getText() : null;\n\t}\n\n\tgetSubtitleNode(): ?TextNode\n\t{\n\t\treturn this.subtitle !== null ? this.subtitle: this.getItem().getSubtitleNode();\n\t}\n\n\tsetSubtitle(subtitle: string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(subtitle) || Type.isPlainObject(subtitle))\n\t\t{\n\t\t\tthis.subtitle = new TextNode(subtitle);\n\t\t}\n\t\telse if (subtitle === null)\n\t\t{\n\t\t\tthis.subtitle = null;\n\t\t}\n\t}\n\n\tgetSupertitle(): ?string\n\t{\n\t\tconst supertitleNode = this.getSupertitleNode();\n\n\t\treturn supertitleNode !== null ? supertitleNode.getText() : null;\n\t}\n\n\tgetSupertitleNode(): ?TextNode\n\t{\n\t\treturn this.supertitle !== null ? this.supertitle: this.getItem().getSupertitleNode();\n\t}\n\n\tsetSupertitle(supertitle: string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(supertitle) || Type.isPlainObject(supertitle))\n\t\t{\n\t\t\tthis.supertitle = new TextNode(supertitle);\n\t\t}\n\t\telse if (supertitle === null)\n\t\t{\n\t\t\tthis.supertitle = null;\n\t\t}\n\t}\n\n\tgetCaption(): ?string\n\t{\n\t\tconst caption = this.getCaptionNode();\n\n\t\treturn caption !== null ? caption.getText() : null;\n\t}\n\n\tgetCaptionNode(): ?TextNode\n\t{\n\t\treturn this.caption !== null ? this.caption: this.getItem().getCaptionNode();\n\t}\n\n\tsetCaption(caption: string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(caption) || Type.isPlainObject(caption))\n\t\t{\n\t\t\tthis.caption = new TextNode(caption);\n\t\t}\n\t\telse if (caption === null)\n\t\t{\n\t\t\tthis.caption = null;\n\t\t}\n\t}\n\n\tgetCaptionOption(option: string): string | boolean | number | null\n\t{\n\t\tif (!Type.isUndefined(this.captionOptions[option]))\n\t\t{\n\t\t\treturn this.captionOptions[option];\n\t\t}\n\n\t\treturn this.getItem().getCaptionOption(option);\n\t}\n\n\tsetCaptionOption(option: string, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tthis.captionOptions[option] = value;\n\t\t}\n\t}\n\n\tsetCaptionOptions(options: {[key: string]: any } | null): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setCaptionOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetAvatar(): ?string\n\t{\n\t\treturn this.avatar !== null ? this.avatar : this.getItem().getAvatar();\n\t}\n\n\tsetAvatar(avatar: ?string): void\n\t{\n\t\tif (Type.isString(avatar) || avatar === null)\n\t\t{\n\t\t\tthis.avatar = avatar;\n\t\t}\n\t}\n\n\tgetAvatarOption(option: $Keys<AvatarOptions>): string | boolean | number | null\n\t{\n\t\treturn (\n\t\t\tthis.avatarOptions === null || Type.isUndefined(this.avatarOptions[option])\n\t\t\t\t? this.getItem().getAvatarOption(option)\n\t\t\t\t: this.avatarOptions[option]\n\t\t);\n\t}\n\n\tsetAvatarOption(option: $Keys<AvatarOptions>, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tif (this.avatarOptions === null)\n\t\t\t{\n\t\t\t\tthis.avatarOptions = {};\n\t\t\t}\n\n\t\t\tthis.avatarOptions[option] = value;\n\t\t}\n\t}\n\n\tsetAvatarOptions(avatarOptions: AvatarOptions): void\n\t{\n\t\tif (Type.isPlainObject(avatarOptions))\n\t\t{\n\t\t\tObject.keys(avatarOptions).forEach((option: string) => {\n\t\t\t\tthis.setAvatarOption(option, avatarOptions[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetTextColor(): ?string\n\t{\n\t\treturn this.textColor !== null ? this.textColor : this.getItem().getTextColor();\n\t}\n\n\tsetTextColor(textColor: ?string): void\n\t{\n\t\tif (Type.isString(textColor) || textColor === null)\n\t\t{\n\t\t\tthis.textColor = textColor;\n\t\t}\n\t}\n\n\tgetLink(): ?string\n\t{\n\t\treturn this.link !== null ? this.getItem().replaceMacros(this.link) : this.getItem().getLink();\n\t}\n\n\tsetLink(link: string): void\n\t{\n\t\tif (Type.isString(link) || link === null)\n\t\t{\n\t\t\tthis.link = link;\n\t\t}\n\t}\n\n\tgetLinkTitle(): ?string\n\t{\n\t\tconst linkTitle = this.getLinkTitleNode();\n\n\t\treturn linkTitle !== null ? linkTitle.getText() : null;\n\t}\n\n\tgetLinkTitleNode(): ?TextNode\n\t{\n\t\treturn this.linkTitle !== null ? this.linkTitle: this.getItem().getLinkTitleNode();\n\t}\n\n\tsetLinkTitle(title: string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(title) || Type.isPlainObject(title))\n\t\t{\n\t\t\tthis.linkTitle = new TextNode(title);\n\t\t}\n\t\telse if (title === null)\n\t\t{\n\t\t\tthis.linkTitle = null;\n\t\t}\n\t}\n\n\tgetBadges(): ItemBadge[]\n\t{\n\t\treturn this.badges !== null ? this.badges : this.getItem().getBadges();\n\t}\n\n\tsetBadges(badges: ?ItemBadgeOptions[]): void\n\t{\n\t\tif (Type.isArray(badges))\n\t\t{\n\t\t\tthis.badges = [];\n\t\t\tbadges.forEach(badge => {\n\t\t\t\tthis.badges.push(new ItemBadge(badge));\n\t\t\t});\n\t\t}\n\t\telse if (badges === null)\n\t\t{\n\t\t\tthis.badges = null;\n\t\t}\n\t}\n\n\tgetBadgesOption(option: string): string | boolean | number | null\n\t{\n\t\tif (!Type.isUndefined(this.badgesOptions[option]))\n\t\t{\n\t\t\treturn this.badgesOptions[option];\n\t\t}\n\n\t\treturn this.getItem().getBadgesOption(option);\n\t}\n\n\tsetBadgesOption(option: string, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tthis.badgesOptions[option] = value;\n\t\t}\n\t}\n\n\tsetBadgesOptions(options: {[key: string]: any } | null): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setBadgesOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetOuterContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('outer-container', () => {\n\n\t\t\tlet className = '';\n\n\t\t\tif (this.hasChildren() || this.isDynamic())\n\t\t\t{\n\t\t\t\tclassName += ' ui-selector-item-box-has-children';\n\t\t\t\tif (this.getDepthLevel() >= this.getTab().getItemMaxDepth())\n\t\t\t\t{\n\t\t\t\t\tclassName += ' ui-selector-item-box-max-depth';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this.getItem().isSelected())\n\t\t\t{\n\t\t\t\tclassName += ' ui-selector-item-box-selected';\n\t\t\t}\n\n\t\t\tif (this.isOpen())\n\t\t\t{\n\t\t\t\tclassName += ' ui-selector-item-box-open';\n\t\t\t}\n\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = `ui-selector-item-box${className}`;\n\t\t\tdiv.appendChild(this.getContainer());\n\t\t\tdiv.appendChild(this.getChildrenContainer());\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetChildrenContainer(): HTMLElement\n\t{\n\t\tif (this.isRoot() && this.getTab())\n\t\t{\n\t\t\treturn this.getTab().getItemsContainer();\n\t\t}\n\n\t\treturn this.cache.remember('children-container', () => {\n\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-children';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item';\n\n\t\t\tEvent.bind(div, 'click', this.handleClick.bind(this))\n\t\t\tEvent.bind(div, 'mouseenter', this.handleMouseEnter.bind(this))\n\t\t\tEvent.bind(div, 'mouseleave', this.handleMouseLeave.bind(this))\n\n\t\t\tdiv.appendChild(this.getAvatarContainer());\n\t\t\tdiv.appendChild(this.getTitlesContainer());\n\t\t\tdiv.appendChild(this.getIndicatorContainer());\n\n\t\t\tif (Type.isStringFilled(this.getLink()))\n\t\t\t{\n\t\t\t\tdiv.appendChild(this.getLinkContainer());\n\t\t\t}\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetAvatarContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('avatar', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-avatar';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetTitlesContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('titles', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-titles';\n\n\t\t\tdiv.appendChild(this.getSupertitleContainer());\n\t\t\tdiv.appendChild(this.getTitleBoxContainer());\n\t\t\tdiv.appendChild(this.getSubtitleContainer());\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetTitleBoxContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('title-box', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-title-box';\n\n\t\t\tdiv.appendChild(this.getTitleContainer());\n\t\t\tdiv.appendChild(this.getBadgeContainer());\n\t\t\tdiv.appendChild(this.getCaptionContainer());\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetTitleContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('title', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-title';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetSubtitleContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('subtitle', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-subtitle';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetSupertitleContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('supertitle', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-supertitle';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetCaptionContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('caption', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-caption';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetIndicatorContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('indicator', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-indicator';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetBadgeContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('badge', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-badges';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetLinkContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('link', () => {\n\t\t\tconst anchor: HTMLAnchorElement = document.createElement('a');\n\t\t\tanchor.className = 'ui-selector-item-link';\n\t\t\tanchor.href = this.getLink();\n\t\t\tanchor.target = '_blank';\n\t\t\tanchor.title = '';\n\n\t\t\tEvent.bind(anchor, 'click', this.handleLinkClick.bind(this));\n\t\t\tanchor.appendChild(this.getLinkTextContainer());\n\n\t\t\treturn anchor;\n\t\t});\n\t}\n\n\tgetLinkTextContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('link-text', () => {\n\t\t\tconst span = document.createElement('span');\n\t\t\tspan.className = 'ui-selector-item-link-text';\n\n\t\t\treturn span;\n\t\t});\n\t}\n\n\tshowLink(): void\n\t{\n\t\tif (Type.isStringFilled(this.getLink()))\n\t\t{\n\t\t\tDom.addClass(this.getLinkContainer(), 'ui-selector-item-link--show');\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tDom.addClass(this.getLinkContainer(), 'ui-selector-item-link--animate');\n\t\t\t\t});\n\t\t\t});\n\n\t\t}\n\t}\n\n\thideLink(): void\n\t{\n\t\tif (Type.isStringFilled(this.getLink()))\n\t\t{\n\t\t\tDom.removeClass(\n\t\t\t\tthis.getLinkContainer(), ['ui-selector-item-link--show', 'ui-selector-item-link--animate']\n\t\t\t);\n\t\t}\n\t}\n\n\tsetHighlights(highlights: MatchField[]): void\n\t{\n\t\tthis.highlights = highlights;\n\t}\n\n\tgetHighlights(): MatchField[]\n\t{\n\t\treturn this.highlights;\n\t}\n\n\thighlight(): void\n\t{\n\t\tthis.getHighlights().forEach(matchField => {\n\t\t\tconst field = matchField.getField();\n\t\t\tconst fieldName = field.getName();\n\n\t\t\tif (field.isCustom())\n\t\t\t{\n\t\t\t\tconst text = this.getItem().getCustomData().get(fieldName);\n\t\t\t\tthis.getSubtitleContainer().innerHTML = Highlighter.mark(text, matchField.getMatches());\n\t\t\t}\n\t\t\telse if (field.getName() === 'title')\n\t\t\t{\n\t\t\t\tthis.getTitleContainer().innerHTML =\n\t\t\t\t\tHighlighter.mark(this.getItem().getTitleNode(), matchField.getMatches())\n\t\t\t\t;\n\t\t\t}\n\t\t\telse if (field.getName() === 'subtitle')\n\t\t\t{\n\t\t\t\tthis.getSubtitleContainer().innerHTML =\n\t\t\t\t\tHighlighter.mark(this.getItem().getSubtitleNode(), matchField.getMatches())\n\t\t\t\t;\n\t\t\t}\n\t\t\telse if (field.getName() === 'supertitle')\n\t\t\t{\n\t\t\t\tthis.getSupertitleContainer().innerHTML =\n\t\t\t\t\tHighlighter.mark(this.getItem().getSupertitleNode(), matchField.getMatches())\n\t\t\t\t;\n\t\t\t}\n\t\t});\n\t}\n\n\tselect(): void\n\t{\n\t\tif (this.hasChildren() || this.isDynamic())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-item-box-selected');\n\t}\n\n\tdeselect(): void\n\t{\n\t\tif (this.hasChildren() || this.isDynamic())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.removeClass(this.getOuterContainer(), 'ui-selector-item-box-selected');\n\t}\n\n\tfocus(): void\n\t{\n\t\tif (this.isFocused())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.focused = true;\n\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-item-box-focused');\n\n\t\tthis.getDialog().emit('ItemNode:onFocus', { node: this });\n\t}\n\n\tunfocus(): void\n\t{\n\t\tif (!this.isFocused())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.focused = false;\n\t\tDom.removeClass(this.getOuterContainer(), 'ui-selector-item-box-focused');\n\n\t\tthis.getDialog().emit('ItemNode:onUnfocus', { node: this });\n\t}\n\n\tisFocused(): boolean\n\t{\n\t\treturn this.focused;\n\t}\n\n\tclick(): void\n\t{\n\t\tif (this.hasChildren() || this.isDynamic())\n\t\t{\n\t\t\tif (this.isOpen())\n\t\t\t{\n\t\t\t\tthis.collapse();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.expand();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.getItem().isSelected())\n\t\t\t{\n\t\t\t\tif (this.getItem().isDeselectable())\n\t\t\t\t{\n\t\t\t\t\tthis.getItem().deselect();\n\t\t\t\t}\n\n\t\t\t\tif (this.getDialog().shouldHideOnDeselect())\n\t\t\t\t{\n\t\t\t\t\tthis.getDialog().hide();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getItem().select();\n\n\t\t\t\tif (this.getDialog().shouldClearSearchOnSelect())\n\t\t\t\t{\n\t\t\t\t\tthis.getDialog().clearSearch();\n\t\t\t\t}\n\n\t\t\t\tif (this.getDialog().shouldHideOnSelect())\n\t\t\t\t{\n\t\t\t\t\tthis.getDialog().hide();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.getDialog().focusSearch();\n\t}\n\n\tscrollIntoView(): void\n\t{\n\t\tconst tabContainer = this.getTab().getContainer();\n\t\tconst nodeContainer = this.getContainer();\n\n\t\tconst tabRect = Dom.getPosition(tabContainer);\n\t\tconst nodeRect = Dom.getPosition(nodeContainer);\n\t\tconst margin = 9; // 'ui-selector-items' padding - 'ui-selector-item' margin = 10 - 1\n\n\t\tif (nodeRect.top < tabRect.top) // scroll up\n\t\t{\n\t\t\ttabContainer.scrollTop -= (tabRect.top - nodeRect.top + margin);\n\t\t}\n\t\telse if (nodeRect.bottom > tabRect.bottom) // scroll down\n\t\t{\n\t\t\ttabContainer.scrollTop += nodeRect.bottom - tabRect.bottom + margin;\n\t\t}\n\t}\n\n\t#makeEllipsisTitle(): void\n\t{\n\t\tif (this.constructor.#isEllipsisActive(this.getTitleContainer()))\n\t\t{\n\t\t\tthis.getContainer().setAttribute(\n\t\t\t\t'title',\n\t\t\t\tthis.constructor.#sanitizeTitle(this.getTitleContainer().textContent)\n\t\t\t);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.attr(this.getContainer(), 'title', null);\n\t\t}\n\n\t\tconst containers = [\n\t\t\tthis.getSupertitleContainer(),\n\t\t\tthis.getSubtitleContainer(),\n\t\t\tthis.getCaptionContainer(),\n\t\t\t...this.getBadges().map((badge: ItemBadge) => badge.getContainer(this.getBadgeContainer()))\n\t\t];\n\n\t\tcontainers.forEach(container => {\n\t\t\tif (this.constructor.#isEllipsisActive(container))\n\t\t\t{\n\t\t\t\tcontainer.setAttribute('title', this.constructor.#sanitizeTitle(container.textContent));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDom.attr(container, 'title', null);\n\t\t\t}\n\t\t});\n\t}\n\n\tstatic #isEllipsisActive(element: HTMLElement): boolean\n\t{\n\t\treturn element.offsetWidth < element.scrollWidth;\n\t}\n\n\tstatic #sanitizeTitle(text: string)\n\t{\n\t\treturn text.replace(/[\\t ]+/gm, ' ').replace(/\\n+/gm, '\\n').trim();\n\t}\n\n\thandleClick(): void\n\t{\n\t\tthis.click();\n\t}\n\n\thandleLinkClick(event: MouseEvent): void\n\t{\n\t\tthis.getDialog().emit('ItemNode:onLinkClick', { node: this, event });\n\t\tevent.stopPropagation();\n\t}\n\n\thandleMouseEnter(): void\n\t{\n\t\tthis.focus();\n\t\tthis.showLink();\n\t\tthis.#makeEllipsisTitle();\n\t}\n\n\thandleMouseLeave(): void\n\t{\n\t\tthis.unfocus();\n\t\tthis.hideLink();\n\t}\n}","import type SearchField from './search-field';\nimport type WordIndex from './word-index';\n\nexport default class SearchFieldIndex\n{\n\tfield: SearchField = null;\n\tindexes: WordIndex[] = [];\n\n\tconstructor(field: SearchField, indexes: WordIndex[] = [])\n\t{\n\t\tthis.field = field;\n\t\tthis.addIndexes(indexes);\n\t}\n\n\tgetField(): SearchField\n\t{\n\t\treturn this.field;\n\t}\n\n\tgetIndexes(): WordIndex[]\n\t{\n\t\treturn this.indexes;\n\t}\n\n\taddIndex(index: WordIndex)\n\t{\n\t\tthis.getIndexes().push(index);\n\t}\n\n\taddIndexes(indexes: WordIndex[])\n\t{\n\t\tindexes.forEach(index => {\n\t\t\tthis.addIndex(index);\n\t\t});\n\t}\n}","import { Type } from 'main.core';\n\nexport default class WordIndex\n{\n\tword: string = '';\n\tstartIndex: number = 0;\n\n\tconstructor(word: string, startIndex: number)\n\t{\n\t\tthis.setWord(word);\n\t\tthis.setStartIndex(startIndex);\n\t}\n\n\tgetWord(): string\n\t{\n\t\treturn this.word;\n\t}\n\n\tsetWord(word: string): this\n\t{\n\t\tif (Type.isStringFilled(word))\n\t\t{\n\t\t\tthis.word = word;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tgetStartIndex(): number\n\t{\n\t\treturn this.startIndex;\n\t}\n\n\tsetStartIndex(index: number): this\n\t{\n\t\tif (Type.isNumber(index) && index >= 0)\n\t\t{\n\t\t\tthis.startIndex = index;\n\t\t}\n\n\t\treturn this;\n\t}\n}","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used to compose unicode character classes. */\nconst rsAstralRange = '\\\\ud800-\\\\udfff';\nconst rsComboMarksRange = '\\\\u0300-\\\\u036f';\nconst reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f';\nconst rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff';\nconst rsComboMarksExtendedRange = '\\\\u1ab0-\\\\u1aff';\nconst rsComboMarksSupplementRange = '\\\\u1dc0-\\\\u1dff';\nconst rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange + rsComboMarksExtendedRange + rsComboMarksSupplementRange;\nconst rsDingbatRange = '\\\\u2700-\\\\u27bf';\nconst rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff';\nconst rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7';\nconst rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf';\nconst rsPunctuationRange = '\\\\u2000-\\\\u206f';\nconst rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000';\nconst rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde';\nconst rsVarRange = '\\\\ufe0e\\\\ufe0f';\nconst rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nconst rsApos = '[\\'\\u2019]';\nconst rsBreak = `[${rsBreakRange}]`;\nconst rsCombo = `[${rsComboRange}]`;\nconst rsDigit = '\\\\d';\nconst rsDingbat = `[${rsDingbatRange}]`;\nconst rsLower = `[${rsLowerRange}]`;\nconst rsMisc = `[^${rsAstralRange}${rsBreakRange + rsDigit + rsDingbatRange + rsLowerRange + rsUpperRange}]`;\nconst rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]';\nconst rsModifier = `(?:${rsCombo}|${rsFitz})`;\nconst rsNonAstral = `[^${rsAstralRange}]`;\nconst rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}';\nconst rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]';\nconst rsUpper = `[${rsUpperRange}]`;\nconst rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nconst rsMiscLower = `(?:${rsLower}|${rsMisc})`;\nconst rsMiscUpper = `(?:${rsUpper}|${rsMisc})`;\nconst rsOptContrLower = `(?:${rsApos}(?:d|ll|m|re|s|t|ve))?`;\nconst rsOptContrUpper = `(?:${rsApos}(?:D|LL|M|RE|S|T|VE))?`;\nconst reOptMod = `${rsModifier}?`;\nconst rsOptVar = `[${rsVarRange}]?`;\nconst rsOptJoin = `(?:${rsZWJ}(?:${[rsNonAstral, rsRegional, rsSurrPair].join('|')})${rsOptVar + reOptMod})*`;\nconst rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])';\nconst rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])';\nconst rsSeq = rsOptVar + reOptMod + rsOptJoin;\nconst rsEmoji = `(?:${[rsDingbat, rsRegional, rsSurrPair].join('|')})${rsSeq}`;\n\nconst unicodeWordsRegExp = new RegExp([\n\t`${rsUpper}?${rsLower}+${rsOptContrLower}(?=${[rsBreak, rsUpper, '$'].join('|')})`,\n\t`${rsMiscUpper}+${rsOptContrUpper}(?=${[rsBreak, rsUpper + rsMiscLower, '$'].join('|')})`,\n\t`${rsUpper}?${rsMiscLower}+${rsOptContrLower}`,\n\t`${rsUpper}+${rsOptContrUpper}`,\n\trsOrdUpper,\n\trsOrdLower,\n\t`${rsDigit}+`,\n\trsEmoji\n].join('|'), 'g');\n\nexport default unicodeWordsRegExp;","import { Type } from 'main.core';\n\nimport SearchFieldIndex from './search-field-index';\nimport WordIndex from './word-index';\n\nimport type Item from '../item/item';\nimport type SearchField from './search-field';\n\nimport unicodeWordsRegExp from './unicode-words';\nconst asciiWordRegExp = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\nconst hasUnicodeWordRegExp = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\nconst nonWhitespaceRegExp = /[^\\s]+/g;\nconst specialChars = `!\"#$%&'()*+,-.\\/:;<=>?@[\\\\]^_\\`{|}`;\nconst specialCharsRegExp = new RegExp(`[${specialChars}]`);\n\nexport default class SearchIndex\n{\n\tindexes: SearchFieldIndex[] = [];\n\n\tconstructor()\n\t{\n\t}\n\n\taddIndex(fieldIndex: SearchFieldIndex)\n\t{\n\t\tif (Type.isObject(fieldIndex))\n\t\t{\n\t\t\tthis.getIndexes().push(fieldIndex);\n\t\t}\n\t}\n\n\tgetIndexes()\n\t{\n\t\treturn this.indexes;\n\t}\n\n\tstatic create(item: Item)\n\t{\n\t\tconst index = new SearchIndex();\n\t\tconst entity = item.getEntity();\n\n\t\tif (!item.isSearchable() || !entity.isSearchable() || item.isHidden())\n\t\t{\n\t\t\treturn index;\n\t\t}\n\n\t\tconst searchFields = entity.getSearchFields();\n\t\tsearchFields.forEach(field => {\n\t\t\tif (!field.isSearchable())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (field.isSystem())\n\t\t\t{\n\t\t\t\tif (field.getName() === 'title')\n\t\t\t\t{\n\t\t\t\t\tconst textNode = item.getTitleNode();\n\t\t\t\t\tconst stripTags = textNode !== null && textNode.getType() === 'html';\n\t\t\t\t\tindex.addIndex(this.createIndex(field, item.getTitle(), stripTags));\n\t\t\t\t}\n\t\t\t\telse if (field.getName() === 'subtitle')\n\t\t\t\t{\n\t\t\t\t\tconst textNode = item.getSubtitleNode();\n\t\t\t\t\tconst stripTags = textNode !== null && textNode.getType() === 'html';\n\t\t\t\t\tindex.addIndex(this.createIndex(field, item.getSubtitle(), stripTags));\n\t\t\t\t}\n\t\t\t\telse if (field.getName() === 'supertitle')\n\t\t\t\t{\n\t\t\t\t\tconst textNode = item.getSupertitleNode();\n\t\t\t\t\tconst stripTags = textNode !== null && textNode.getType() === 'html';\n\t\t\t\t\tindex.addIndex(this.createIndex(field, item.getSupertitle(), stripTags));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst customData = item.getCustomData().get(field.getName());\n\t\t\t\tif (!Type.isUndefined(customData))\n\t\t\t\t{\n\t\t\t\t\tindex.addIndex(this.createIndex(field, customData));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn index;\n\t}\n\n\tstatic createIndex(field: SearchField, text: string, stripTags = false): SearchFieldIndex\n\t{\n\t\tif (!Type.isStringFilled(text))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (stripTags)\n\t\t{\n\t\t\ttext = text.replace(/<\\/?[^>]+>/g, (match) => ' '.repeat(match.length));\n\t\t\ttext = text.replace(/&(?:#\\d+|#x[\\da-fA-F]+|[0-9a-zA-Z]+);/g, (match) => ' '.repeat(match.length));\n\t\t}\n\n\t\tlet index: SearchFieldIndex = null;\n\t\tif (field.getType() === 'string')\n\t\t{\n\t\t\tconst wordIndexes = this.splitText(text);\n\t\t\tif (Type.isArrayFilled(wordIndexes))\n\t\t\t{\n\t\t\t\t// \"GoPro111 Leto15\"\n\t\t\t\t// [go, pro, 111, leto, 15] + [gopro111, leto15]\n\t\t\t\tthis.fillComplexWords(wordIndexes);\n\t\t\t\tthis.fillNonCharWords(wordIndexes, text);\n\n\t\t\t\tindex = new SearchFieldIndex(field, wordIndexes);\n\t\t\t}\n\t\t}\n\t\telse if (field.getType() === 'email')\n\t\t{\n\t\t\tconst position = text.indexOf('@');\n\t\t\tif (position !== -1)\n\t\t\t{\n\t\t\t\tindex = new SearchFieldIndex(\n\t\t\t\t\tfield,\n\t\t\t\t\t[\n\t\t\t\t\t\tnew WordIndex(text.toLowerCase(), 0),\n\t\t\t\t\t\tnew WordIndex(text.substr(position + 1).toLowerCase(), position + 1)\n\t\t\t\t\t]\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn index;\n\t}\n\n\tstatic splitText(text: string): WordIndex[]\n\t{\n\t\tif (!Type.isStringFilled(text))\n\t\t{\n\t\t\treturn [];\n\t\t}\n\n\t\treturn this.hasUnicodeWord(text) ? this.splitUnicodeText(text) : this.splitAsciiText(text);\n\t}\n\n\tstatic splitUnicodeText(text: string): WordIndex[]\n\t{\n\t\treturn this.splitTextInternal(text, unicodeWordsRegExp);\n\t}\n\n\tstatic splitAsciiText(text: string): WordIndex[]\n\t{\n\t\treturn this.splitTextInternal(text, asciiWordRegExp);\n\t}\n\n\tstatic hasUnicodeWord(text: string): boolean\n\t{\n\t\treturn hasUnicodeWordRegExp.test(text);\n\t}\n\n\tstatic splitTextInternal(text: string, regExp: RegExp): WordIndex[]\n\t{\n\t\tlet match;\n\t\tconst result = [];\n\n\t\tregExp.lastIndex = 0;\n\t\twhile ((match = regExp.exec(text)) !== null)\n\t\t{\n\t\t\tif (match.index === regExp.lastIndex)\n\t\t\t{\n\t\t\t\tregExp.lastIndex++;\n\t\t\t}\n\n\t\t\tresult.push(new WordIndex(match[0].toLowerCase(), match.index));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tstatic fillComplexWords(indexes: WordIndex[]): void\n\t{\n\t\tif (indexes.length < 2)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tlet complexWord: ?string = null;\n\t\tlet startIndex: ?number = null;\n\n\t\tindexes.forEach((currentIndex, currentArrayIndex) => {\n\t\t\tconst nextIndex = indexes[currentArrayIndex + 1];\n\t\t\tif (nextIndex)\n\t\t\t{\n\t\t\t\tconst sameWord =\n\t\t\t\t\tcurrentIndex.getStartIndex() + currentIndex.getWord().length === nextIndex.getStartIndex()\n\t\t\t\t;\n\n\t\t\t\tif (sameWord)\n\t\t\t\t{\n\t\t\t\t\tif (complexWord === null)\n\t\t\t\t\t{\n\t\t\t\t\t\tcomplexWord = currentIndex.getWord();\n\t\t\t\t\t\tstartIndex = currentIndex.getStartIndex();\n\t\t\t\t\t}\n\n\t\t\t\t\tcomplexWord += nextIndex.getWord();\n\t\t\t\t}\n\t\t\t\telse if (complexWord !== null)\n\t\t\t\t{\n\t\t\t\t\tindexes.push(new WordIndex(complexWord, startIndex));\n\t\t\t\t\tcomplexWord = null;\n\t\t\t\t\tstartIndex = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (complexWord !== null)\n\t\t\t{\n\t\t\t\tindexes.push(new WordIndex(complexWord, startIndex));\n\t\t\t\tcomplexWord = null;\n\t\t\t\tstartIndex = null;\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * @private\n\t */\n\tstatic fillNonCharWords(indexes: WordIndex[], text: string): void\n\t{\n\t\tif (!specialCharsRegExp.test(text))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tlet match;\n\t\twhile ((match = nonWhitespaceRegExp.exec(text)) !== null)\n\t\t{\n\t\t\tif (match.index === nonWhitespaceRegExp.lastIndex)\n\t\t\t{\n\t\t\t\tnonWhitespaceRegExp.lastIndex++;\n\t\t\t}\n\n\t\t\tconst word = match[0];\n\t\t\tif (specialCharsRegExp.test(word))\n\t\t\t{\n\t\t\t\tindexes.push(new WordIndex(word.toLowerCase(), match.index));\n\n\t\t\t\tfor (let i = 0; i < word.length; i++)\n\t\t\t\t{\n\t\t\t\t\tconst char = word[i];\n\t\t\t\t\tif (!specialChars.includes(char))\n\t\t\t\t\t{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst wordToIndex = word.substr(i + 1);\n\t\t\t\t\tif (wordToIndex.length)\n\t\t\t\t\t{\n\t\t\t\t\t\tindexes.push(new WordIndex(wordToIndex.toLowerCase(), match.index + i + 1));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tnonWhitespaceRegExp.lastIndex = 0;\n\t}\n}","import { Type } from 'main.core';\nimport type { EntityFilterOptions } from './entity-filter-options';\n\nexport default class EntityFilter\n{\n\tid: string = null;\n\toptions: { [key: string]: any } = {};\n\n\tconstructor(filterOptions: EntityFilterOptions)\n\t{\n\t\tconst options = Type.isPlainObject(filterOptions) ? filterOptions : {};\n\n\t\tthis.id = options.id;\n\t\tthis.options = options.options;\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\tgetOptions(): { [key: string]: any }\n\t{\n\t\treturn this.options;\n\t}\n\n\ttoJSON()\n\t{\n\t\treturn {\n\t\t\tid: this.getId(),\n\t\t\toptions: this.getOptions(),\n\t\t}\n\t}\n}","import { Extension, Runtime, Type } from 'main.core';\nimport { OrderedArray } from 'main.core.collections';\n\nimport SearchField from '../search/search-field';\nimport TextNode from '../common/text-node';\n\nimport type Item from '../item/item';\nimport type { EntityOptions } from './entity-options';\nimport type { SearchFieldOptions } from '../search/search-field-options';\nimport type { ItemBadgeOptions } from '../item/item-badge-options';\nimport type { EntityBadgeOptions } from './entity-badge-options';\nimport type { EntityFilterOptions } from \"./entity-filter-options\";\nimport EntityFilter from './entity-filter';\n\n/**\n * @memberof BX.UI.EntitySelector\n */\nexport default class Entity\n{\n\tstatic extensions: string[] = null;\n\tstatic defaultOptions: { [entityId: string]: { [key: string]: any } } = null;\n\n\tid: string = null;\n\toptions: { [key: string]: any } = {};\n\tsearchable: boolean = true;\n\tsearchFields: OrderedArray<SearchField> = null;\n\tdynamicLoad: boolean = false;\n\tdynamicSearch: boolean = false;\n\tsearchCacheLimits: RegExp[] = [];\n\tfilters: Map<string, EntityFilter> = new Map();\n\n\titemOptions: { [key: string]: any } = {};\n\ttagOptions: { [key: string]: any } = {};\n\tbadgeOptions: ItemBadgeOptions[] = [];\n\ttextNodes: Map<string, Map<string, TextNode>> = new Map();\n\n\tconstructor(entityOptions: EntityOptions)\n\t{\n\t\tlet options: EntityOptions = Type.isPlainObject(entityOptions) ? entityOptions : {};\n\t\tif (!Type.isStringFilled(options.id))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.Entity: \"id\" parameter is required.');\n\t\t}\n\n\t\tconst defaultOptions = this.constructor.getEntityDefaultOptions(options.id) || {};\n\t\toptions = Runtime.merge(JSON.parse(JSON.stringify(defaultOptions)), options);\n\n\t\tthis.id = options.id.toLowerCase();\n\t\tthis.options = Type.isPlainObject(options.options) ? options.options : {};\n\t\tthis.itemOptions = Type.isPlainObject(options.itemOptions) ? options.itemOptions : {};\n\t\tthis.tagOptions = Type.isPlainObject(options.tagOptions) ? options.tagOptions : {};\n\t\tthis.badgeOptions = Type.isArray(options.badgeOptions) ? options.badgeOptions : [];\n\n\t\tif (Type.isArray(options.filters))\n\t\t{\n\t\t\toptions.filters.forEach((filterOptions: EntityFilterOptions) => {\n\t\t\t\tthis.addFilter(filterOptions);\n\t\t\t});\n\t\t}\n\n\t\tthis.searchFields = new OrderedArray((fieldA: SearchField, fieldB: SearchField) => {\n\t\t\tif (fieldA.getSort() !== null && fieldB.getSort() === null)\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\telse if (fieldA.getSort() === null && fieldB.getSort() !== null)\n\t\t\t{\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\telse if (fieldA.getSort() === null && fieldB.getSort() === null)\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn fieldA.getSort() - fieldB.getSort();\n\t\t\t}\n\t\t});\n\n\t\tthis.setSearchable(options.searchable);\n\t\tthis.setDynamicLoad(options.dynamicLoad);\n\t\tthis.setDynamicSearch(options.dynamicSearch);\n\t\tthis.setSearchFields(options.searchFields);\n\t\tthis.setSearchCacheLimits(options.searchCacheLimits);\n\t}\n\n\tstatic getDefaultOptions()\n\t{\n\t\tif (this.defaultOptions === null)\n\t\t{\n\t\t\tthis.defaultOptions = {};\n\t\t\tthis.getExtensions().forEach((extension: string) => {\n\t\t\t\tconst settings = Extension.getSettings(extension);\n\t\t\t\tconst entities: [] = settings.get('entities', []);\n\t\t\t\tentities.forEach(entity => {\n\t\t\t\t\tif (Type.isStringFilled(entity.id) && Type.isPlainObject(entity.options))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.defaultOptions[entity.id] = JSON.parse(JSON.stringify(entity.options)); // clone\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn this.defaultOptions;\n\t}\n\n\tstatic getExtensions(): string[]\n\t{\n\t\tif (this.extensions === null)\n\t\t{\n\t\t\tconst settings = Extension.getSettings('ui.entity-selector');\n\t\t\tthis.extensions = settings.get('extensions', []);\n\t\t}\n\n\t\treturn this.extensions;\n\t}\n\n\tstatic getEntityDefaultOptions(entityId: string)\n\t{\n\t\treturn this.getDefaultOptions()[entityId] || null;\n\t}\n\n\tstatic getItemOptions(entityId: string, entityType: string)\n\t{\n\t\tif (!Type.isStringFilled(entityId))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst options = this.getEntityDefaultOptions(entityId);\n\t\tconst itemOptions = options && options['itemOptions'] ? options['itemOptions'] : null;\n\n\t\tif (Type.isUndefined(entityType))\n\t\t{\n\t\t\treturn itemOptions;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn itemOptions && !Type.isUndefined(itemOptions[entityType]) ? itemOptions[entityType] : null;\n\t\t}\n\t}\n\n\tstatic getTagOptions(entityId: string, entityType?: string)\n\t{\n\t\tif (!Type.isStringFilled(entityId))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst options = this.getEntityDefaultOptions(entityId);\n\t\tconst tagOptions = options && options['tagOptions'] ? options['tagOptions'] : null;\n\n\t\tif (Type.isUndefined(entityType))\n\t\t{\n\t\t\treturn tagOptions;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn tagOptions && !Type.isUndefined(tagOptions[entityType]) ? tagOptions[entityType] : null;\n\t\t}\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\tgetOptions(): { [key: string]: any }\n\t{\n\t\treturn this.options;\n\t}\n\n\tgetItemOptions(): { [key: string]: any }\n\t{\n\t\treturn this.itemOptions;\n\t}\n\n\tstatic getItemOption(entityId: string, option: string, entityType?: string): any\n\t{\n\t\treturn this.getOptionInternal(this.getItemOptions(entityId), option, entityType);\n\t}\n\n\tgetItemOption(option: string, entityType?: string): any\n\t{\n\t\treturn this.constructor.getOptionInternal(this.itemOptions, option, entityType);\n\t}\n\n\tgetTagOptions(): { [key: string]: any }\n\t{\n\t\treturn this.tagOptions;\n\t}\n\n\tstatic getTagOption(entityId: string, option: string, entityType?: string): any\n\t{\n\t\treturn this.getOptionInternal(this.getTagOptions(entityId), option, entityType);\n\t}\n\n\tgetTagOption(option: string, entityType?: string): any\n\t{\n\t\treturn this.constructor.getOptionInternal(this.tagOptions, option, entityType);\n\t}\n\n\tstatic getOptionInternal(options, option: string, type?: string): any\n\t{\n\t\tif (!Type.isPlainObject(options))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (options[type] && !Type.isUndefined(options[type][option]))\n\t\t{\n\t\t\treturn options[type][option];\n\t\t}\n\t\telse if (options['default'] && !Type.isUndefined(options['default'][option]))\n\t\t{\n\t\t\treturn options['default'][option];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetBadges(item: Item): EntityBadgeOptions[]\n\t{\n\t\tconst entityTypeBadges = this.getItemOption('badges', item.getEntityType()) || [];\n\t\tconst badges = [...entityTypeBadges];\n\n\t\tthis.badgeOptions.forEach((badge: EntityBadgeOptions) => {\n\t\t\tif (Type.isPlainObject(badge.conditions))\n\t\t\t{\n\t\t\t\tfor (const condition in badge.conditions)\n\t\t\t\t{\n\t\t\t\t\tif (item.getCustomData().get(condition) !== badge.conditions[condition])\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbadges.push(badge);\n\t\t\t}\n\t\t});\n\n\t\treturn badges;\n\t}\n\n\tgetOptionTextNode(option: string, entityType?: string): ?TextNode\n\t{\n\t\tif (!Type.isString(option))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!Type.isString(entityType))\n\t\t{\n\t\t\tentityType = 'default';\n\t\t}\n\n\t\tlet optionNodes = this.textNodes.get(option);\n\t\tlet node = optionNodes ? optionNodes.get(entityType) : undefined;\n\n\t\tif (Type.isUndefined(node))\n\t\t{\n\t\t\tif (!optionNodes)\n\t\t\t{\n\t\t\t\toptionNodes = new Map();\n\t\t\t\tthis.textNodes.set(option, optionNodes);\n\t\t\t}\n\n\t\t\tconst itemOption = this.getItemOption(option, entityType);\n\t\t\tnode = Type.isString(itemOption) || Type.isPlainObject(itemOption) ? new TextNode(itemOption) : null;\n\n\t\t\toptionNodes.set(entityType, node);\n\t\t}\n\n\t\treturn node;\n\t}\n\n\tisSearchable(): boolean\n\t{\n\t\treturn this.searchable;\n\t}\n\n\tsetSearchable(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.searchable = flag;\n\t\t}\n\t}\n\n\tgetSearchFields(): OrderedArray<SearchField>\n\t{\n\t\treturn this.searchFields;\n\t}\n\n\tsetSearchFields(searchFields: SearchFieldOptions[]): void\n\t{\n\t\tthis.searchFields.clear();\n\n\t\t// Default Search Fields\n\t\tconst titleField = new SearchField({ name: 'title', searchable: true, system: true, type: 'string' });\n\t\tconst subtitleField = new SearchField({ name: 'subtitle', searchable: true, system: true, type: 'string' });\n\t\tthis.searchFields.add(titleField);\n\t\tthis.searchFields.add(subtitleField);\n\n\t\t// Custom Search Fields\n\t\tconst customFields = Type.isArray(searchFields) ? searchFields : [];\n\t\tcustomFields.forEach(fieldOptions => {\n\t\t\tconst field = new SearchField(fieldOptions);\n\t\t\tif (field.isSystem()) // Entity can override default fields.\n\t\t\t{\n\t\t\t\t// delete a default title field\n\t\t\t\tif (field.getName() === 'title')\n\t\t\t\t{\n\t\t\t\t\tthis.searchFields.delete(titleField);\n\t\t\t\t}\n\t\t\t\telse if (field.getName() === 'subtitle')\n\t\t\t\t{\n\t\t\t\t\tthis.searchFields.delete(subtitleField);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.searchFields.add(field);\n\t\t});\n\n\t\tthis.searchFields.forEach((field: SearchField, index: number) => {\n\t\t\tfield.setSort(index);\n\t\t});\n\t}\n\n\tsetSearchCacheLimits(limits: string[]): void\n\t{\n\t\tif (Type.isArrayFilled(limits))\n\t\t{\n\t\t\tlimits.forEach((limit: string) => {\n\t\t\t\tif (Type.isStringFilled(limit))\n\t\t\t\t{\n\t\t\t\t\tthis.searchCacheLimits.push(new RegExp(limit, 'i'));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tgetSearchCacheLimits(): RegExp[]\n\t{\n\t\treturn this.searchCacheLimits;\n\t}\n\n\thasDynamicLoad(): boolean\n\t{\n\t\treturn this.dynamicLoad;\n\t}\n\n\tsetDynamicLoad(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.dynamicLoad = flag;\n\t\t}\n\t}\n\n\thasDynamicSearch(): boolean\n\t{\n\t\treturn this.dynamicSearch;\n\t}\n\n\tsetDynamicSearch(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.dynamicSearch = flag;\n\t\t}\n\t}\n\n\tgetFilters(): EntityFilter[]\n\t{\n\t\treturn Array.from(this.filters.values());\n\t}\n\n\taddFilters(filters: EntityFilterOptions[]): void\n\t{\n\t\tif (Type.isArray(filters))\n\t\t{\n\t\t\tfilters.forEach((filterOptions: EntityFilterOptions) => {\n\t\t\t\tthis.addFilter(filterOptions);\n\t\t\t});\n\t\t}\n\t}\n\n\taddFilter(filterOptions: EntityFilterOptions): void\n\t{\n\t\tif (Type.isPlainObject(filterOptions))\n\t\t{\n\t\t\tconst filter = new EntityFilter(filterOptions);\n\t\t\tthis.filters.set(filter.getId(), filter);\n\t\t}\n\t}\n\n\tgetFilter(id: string): ?Filter\n\t{\n\t\treturn this.filters.get(id) || null;\n\t}\n\n\ttoJSON()\n\t{\n\t\treturn {\n\t\t\tid: this.getId(),\n\t\t\toptions: this.getOptions(),\n\t\t\tsearchable: this.isSearchable(),\n\t\t\tdynamicLoad: this.hasDynamicLoad(),\n\t\t\tdynamicSearch: this.hasDynamicSearch(),\n\t\t\tfilters: this.getFilters(),\n\t\t};\n\t}\n}","import { Type } from 'main.core';\n\nexport default class TypeUtils\n{\n\tstatic createMapFromOptions(options)\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\treturn new Map(Object.entries(options));\n\t\t}\n\n\t\tconst map = new Map();\n\t\tif (Type.isArrayFilled(options))\n\t\t{\n\t\t\toptions.forEach((element: Array) => {\n\t\t\t\tif (Type.isArray(element) && element.length === 2 && Type.isString(element[0]))\n\t\t\t\t{\n\t\t\t\t\tmap.set(element[0], element[1]);\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\treturn map;\n\t}\n\n\tstatic convertMapToObject(map: Map): object\n\t{\n\t\tconst obj = {};\n\t\tif (Type.isMap(map))\n\t\t{\n\t\t\tmap.forEach((value, key) => {\n\t\t\t\tif (Type.isString(key))\n\t\t\t\t{\n\t\t\t\t\tobj[key] = value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn obj;\n\t}\n}","import { Type, Loc, Text } from 'main.core';\nimport { BaseEvent } from 'main.core.events';\n\nimport ItemNode from './item-node';\nimport SearchIndex from '../search/search-index';\nimport Entity from '../entity/entity';\nimport ItemBadge from './item-badge';\nimport TextNode from '../common/text-node';\nimport TypeUtils from '../common/type-utils';\n\nimport type Dialog from '../dialog/dialog';\nimport type { ItemOptions } from './item-options';\nimport type { ItemNodeOptions } from './item-node-options';\nimport type { ItemBadgeOptions } from './item-badge-options';\nimport type { TagItemOptions } from '../tag-selector/tag-item-options';\nimport type { TextNodeOptions } from '../common/text-node-options';\nimport type { CaptionOptions } from './caption-options';\nimport type { BadgesOptions } from './badges-options';\nimport type { AvatarOptions } from './avatar-options';\n\n/**\n * @memberof BX.UI.EntitySelector\n * @package ui.entity-selector\n */\nexport default class Item\n{\n\tid: string | number = null;\n\tentityId: string = null;\n\tentityType: string = null;\n\n\ttitle: ?TextNode = null;\n\tsubtitle: ?TextNode = null;\n\tsupertitle: ?TextNode = null;\n\tcaption: ?TextNode = null;\n\tcaptionOptions: CaptionOptions = {};\n\tavatar: ?string = null;\n\tavatarOptions: ?AvatarOptions = null;\n\ttextColor: ?string = null;\n\tlink: ?string = null;\n\tlinkTitle: ?TextNode = null;\n\ttagOptions: Map<string, any> = null;\n\tbadges: ItemBadgeOptions[] = null;\n\tbadgesOptions: BadgesOptions = {};\n\n\tdialog: Dialog = null;\n\tnodes: Set<ItemNode> = new Set();\n\tselected: boolean = false;\n\tsearchable: boolean = true;\n\tsaveable: boolean = true;\n\tdeselectable: boolean = true;\n\thidden: boolean = false;\n\tsearchIndex: { [key: string]: string[] } = null;\n\tcustomData: Map<string, any> = null;\n\n\tsort: number = null;\n\tcontextSort: number = null;\n\tglobalSort: number = null;\n\n\tconstructor(itemOptions: ItemOptions)\n\t{\n\t\tconst options: ItemOptions = Type.isPlainObject(itemOptions) ? itemOptions : {};\n\t\tif (!Type.isStringFilled(options.id) && !Type.isNumber(options.id))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.Item: \"id\" parameter is required.');\n\t\t}\n\n\t\tif (!Type.isStringFilled(options.entityId))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.Item: \"entityId\" parameter is required.');\n\t\t}\n\n\t\tthis.id = options.id;\n\t\tthis.entityId = options.entityId.toLowerCase();\n\t\tthis.entityType = Type.isStringFilled(options.entityType) ? options.entityType : 'default';\n\t\tthis.selected = Type.isBoolean(options.selected) ? options.selected : false;\n\n\t\tthis.customData = TypeUtils.createMapFromOptions(options.customData);\n\t\tthis.tagOptions = TypeUtils.createMapFromOptions(options.tagOptions);\n\n\t\tthis.setTitle(options.title);\n\t\tthis.setSubtitle(options.subtitle);\n\t\tthis.setSupertitle(options.supertitle);\n\t\tthis.setCaption(options.caption);\n\t\tthis.setCaptionOptions(options.captionOptions);\n\t\tthis.setAvatar(options.avatar);\n\t\tthis.setAvatarOptions(options.avatarOptions);\n\t\tthis.setTextColor(options.textColor);\n\t\tthis.setLink(options.link);\n\t\tthis.setLinkTitle(options.linkTitle);\n\t\tthis.setBadges(options.badges);\n\t\tthis.setBadgesOptions(options.badgesOptions);\n\n\t\tthis.setSearchable(options.searchable);\n\t\tthis.setSaveable(options.saveable);\n\t\tthis.setDeselectable(options.deselectable);\n\t\tthis.setHidden(options.hidden);\n\t\tthis.setContextSort(options.contextSort);\n\t\tthis.setGlobalSort(options.globalSort);\n\t\tthis.setSort(options.sort);\n\t}\n\n\tgetId(): string | number\n\t{\n\t\treturn this.id;\n\t}\n\n\tgetEntityId(): string\n\t{\n\t\treturn this.entityId;\n\t}\n\n\tgetEntity(): Entity\n\t{\n\t\tlet entity = this.getDialog().getEntity(this.getEntityId());\n\t\tif (entity === null)\n\t\t{\n\t\t\tentity = new Entity({ id: this.getEntityId() });\n\t\t\tthis.getDialog().addEntity(entity);\n\t\t}\n\n\t\treturn entity;\n\t}\n\n\tgetEntityType(): string\n\t{\n\t\treturn this.entityType;\n\t}\n\n\tgetTitle(): string\n\t{\n\t\tconst titleNode = this.getTitleNode();\n\n\t\treturn titleNode !== null && !titleNode.isNullable() ? titleNode.getText() : '';\n\t}\n\n\tgetTitleNode(): ?TextNode\n\t{\n\t\treturn this.title;\n\t}\n\n\tsetTitle(title: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isStringFilled(title) || Type.isPlainObject(title) || title === null)\n\t\t{\n\t\t\tthis.title = title === null ? null : new TextNode(title);\n\n\t\t\tthis.resetSearchIndex();\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetSubtitle(): ?string\n\t{\n\t\tconst subtitleNode = this.getSubtitleNode();\n\n\t\treturn subtitleNode !== null ? subtitleNode.getText() : null;\n\t}\n\n\tgetSubtitleNode(): ?TextNode\n\t{\n\t\treturn this.subtitle !== null ? this.subtitle : this.getEntityTextNode('subtitle');\n\t}\n\n\tsetSubtitle(subtitle: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(subtitle) || Type.isPlainObject(subtitle) || subtitle === null)\n\t\t{\n\t\t\tthis.subtitle = subtitle === null ? null : new TextNode(subtitle);\n\n\t\t\tthis.resetSearchIndex();\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetSupertitle(): ?string\n\t{\n\t\tconst supertitleNode = this.getSupertitleNode();\n\n\t\treturn supertitleNode !== null ? supertitleNode.getText() : null;\n\t}\n\n\tgetSupertitleNode(): ?TextNode\n\t{\n\t\treturn this.supertitle !== null ? this.supertitle : this.getEntityTextNode('supertitle');\n\t}\n\n\tsetSupertitle(supertitle: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(supertitle) || Type.isPlainObject(supertitle) || supertitle === null)\n\t\t{\n\t\t\tthis.supertitle = supertitle === null ? null : new TextNode(supertitle);\n\n\t\t\tthis.resetSearchIndex();\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetCaption(): ?string\n\t{\n\t\tconst captionNode = this.getCaptionNode();\n\n\t\treturn captionNode !== null ? captionNode.getText() : null;\n\t}\n\n\tgetCaptionNode(): ?TextNode\n\t{\n\t\treturn this.caption !== null ? this.caption : this.getEntityTextNode('caption');\n\t}\n\n\tsetCaption(caption: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(caption) || Type.isPlainObject(caption) || caption === null)\n\t\t{\n\t\t\tthis.caption = caption === null ? null : new TextNode(caption);\n\n\t\t\tthis.resetSearchIndex();\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetCaptionOption(option: string): string | boolean | number | null\n\t{\n\t\tif (!Type.isUndefined(this.captionOptions[option]))\n\t\t{\n\t\t\treturn this.captionOptions[option];\n\t\t}\n\n\t\tconst captionOptions = this.getEntityItemOption('captionOptions');\n\t\tif (Type.isPlainObject(captionOptions) && !Type.isUndefined(captionOptions[option]))\n\t\t{\n\t\t\treturn captionOptions[option];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetCaptionOption(option: string, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tthis.captionOptions[option] = value;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tsetCaptionOptions(options: {[key: string]: any }): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setCaptionOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetAvatar(): ?string\n\t{\n\t\treturn this.avatar !== null ? this.avatar : this.getEntityItemOption('avatar');\n\t}\n\n\tsetAvatar(avatar: ?string): void\n\t{\n\t\tif (Type.isString(avatar) || avatar === null)\n\t\t{\n\t\t\tthis.avatar = avatar;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetAvatarOption(option: $Keys<AvatarOptions>): string | boolean | number | null\n\t{\n\t\tif (this.avatarOptions !== null && !Type.isUndefined(this.avatarOptions[option]))\n\t\t{\n\t\t\treturn this.avatarOptions[option];\n\t\t}\n\n\t\tconst avatarOptions = this.getEntityItemOption('avatarOptions');\n\t\tif (Type.isPlainObject(avatarOptions) && !Type.isUndefined(avatarOptions[option]))\n\t\t{\n\t\t\treturn avatarOptions[option];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetAvatarOption(option: $Keys<AvatarOptions>, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tif (this.avatarOptions === null)\n\t\t\t{\n\t\t\t\tthis.avatarOptions = {};\n\t\t\t}\n\n\t\t\tthis.avatarOptions[option] = value;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tsetAvatarOptions(options: AvatarOptions): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setAvatarOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetTextColor(): ?string\n\t{\n\t\treturn this.textColor !== null ? this.textColor : this.getEntityItemOption('textColor');\n\t}\n\n\tsetTextColor(textColor: ?string): void\n\t{\n\t\tif (Type.isString(textColor) || textColor === null)\n\t\t{\n\t\t\tthis.textColor = textColor;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetLink(): ?string\n\t{\n\t\tconst link = this.link !== null ? this.link : this.getEntityItemOption('link');\n\n\t\treturn this.replaceMacros(link);\n\t}\n\n\tsetLink(link: ?string): void\n\t{\n\t\tif (Type.isString(link) || link === null)\n\t\t{\n\t\t\tthis.link = link;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetLinkTitle(): ?string\n\t{\n\t\tconst linkTitleNode = this.getLinkTitleNode();\n\n\t\treturn linkTitleNode !== null ? linkTitleNode.getText() : Loc.getMessage('UI_SELECTOR_ITEM_LINK_TITLE');\n\t}\n\n\tgetLinkTitleNode(): ?TextNode\n\t{\n\t\treturn this.linkTitle !== null ? this.linkTitle : this.getEntityTextNode('linkTitle');\n\t}\n\n\tsetLinkTitle(linkTitle: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(linkTitle) || Type.isPlainObject(linkTitle) || linkTitle === null)\n\t\t{\n\t\t\tthis.linkTitle = linkTitle === null ? null : new TextNode(linkTitle);\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetBadges(): ItemBadge[]\n\t{\n\t\tif (this.badges !== null)\n\t\t{\n\t\t\treturn this.badges;\n\t\t}\n\n\t\tconst badges = this.getEntity().getBadges(this);\n\t\tif (Type.isArray(badges))\n\t\t{\n\t\t\tthis.setBadges(badges);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.badges = [];\n\t\t}\n\n\t\treturn this.badges;\n\t}\n\n\tsetBadges(badges: ?ItemBadgeOptions[]): void\n\t{\n\t\tif (Type.isArray(badges))\n\t\t{\n\t\t\tthis.badges = [];\n\t\t\tbadges.forEach(badge => {\n\t\t\t\tthis.badges.push(new ItemBadge(badge));\n\t\t\t});\n\n\t\t\tthis.#renderNodes();\n\t\t}\n\t\telse if (badges === null)\n\t\t{\n\t\t\tthis.badges = null;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetBadgesOption(option: string): string | boolean | number | null\n\t{\n\t\tif (!Type.isUndefined(this.badgesOptions[option]))\n\t\t{\n\t\t\treturn this.badgesOptions[option];\n\t\t}\n\n\t\tconst badgesOptions = this.getEntityItemOption('badgesOptions');\n\t\tif (Type.isPlainObject(badgesOptions) && !Type.isUndefined(badgesOptions[option]))\n\t\t{\n\t\t\treturn badgesOptions[option];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetBadgesOption(option: string, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tthis.badgesOptions[option] = value;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tsetBadgesOptions(options: {[key: string]: any }): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setBadgesOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tsetDialog(dialog: Dialog): void\n\t{\n\t\tthis.dialog = dialog;\n\t}\n\n\tgetDialog(): Dialog\n\t{\n\t\treturn this.dialog;\n\t}\n\n\tcreateNode(nodeOptions: ItemNodeOptions): ItemNode\n\t{\n\t\tconst itemNode = new ItemNode(this, nodeOptions);\n\t\tthis.nodes.add(itemNode);\n\n\t\treturn itemNode;\n\t}\n\n\tremoveNode(node: ItemNode): void\n\t{\n\t\tthis.nodes.delete(node);\n\t}\n\n\tgetNodes(): Set<ItemNode>\n\t{\n\t\treturn this.nodes;\n\t}\n\n\tselect(preselectedMode: boolean = false): void\n\t{\n\t\tif (this.selected)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst dialog = this.getDialog();\n\t\tconst emitEvents = dialog && !preselectedMode;\n\n\t\tif (emitEvents)\n\t\t{\n\t\t\tconst event = new BaseEvent({ data: { item: this } });\n\t\t\tdialog.emit('Item:onBeforeSelect', event);\n\t\t\tif (event.isDefaultPrevented())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis.selected = true;\n\n\t\tif (dialog)\n\t\t{\n\t\t\tdialog.handleItemSelect(this, !preselectedMode);\n\t\t}\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getNodes().forEach((node: ItemNode) => {\n\t\t\t\tnode.select();\n\t\t\t});\n\t\t}\n\n\t\tif (emitEvents)\n\t\t{\n\t\t\tdialog.emit('Item:onSelect', { item: this });\n\t\t\tdialog.saveRecentItem(this);\n\t\t}\n\t}\n\n\tdeselect(): void\n\t{\n\t\tif (!this.selected)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst dialog = this.getDialog();\n\t\tif (dialog)\n\t\t{\n\t\t\tconst event = new BaseEvent({ data: { item: this } });\n\t\t\tdialog.emit('Item:onBeforeDeselect', event);\n\t\t\tif (event.isDefaultPrevented())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis.selected = false;\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getNodes().forEach(node => {\n\t\t\t\tnode.deselect();\n\t\t\t});\n\t\t}\n\n\t\tif (dialog)\n\t\t{\n\t\t\tdialog.handleItemDeselect(this);\n\t\t\tdialog.emit('Item:onDeselect', { item: this });\n\t\t}\n\t}\n\n\tisSelected(): boolean\n\t{\n\t\treturn this.selected;\n\t}\n\n\tsetSearchable(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.searchable = flag;\n\t\t}\n\t}\n\n\tisSearchable(): boolean\n\t{\n\t\treturn this.searchable;\n\t}\n\n\tsetSaveable(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.saveable = flag;\n\t\t}\n\t}\n\n\tisSaveable(): boolean\n\t{\n\t\treturn this.saveable;\n\t}\n\n\tsetDeselectable(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.deselectable = flag;\n\n\t\t\tif (this.getDialog() && this.getDialog().getTagSelector())\n\t\t\t{\n\t\t\t\tconst tag = this.getDialog().getTagSelector().getTag({\n\t\t\t\t\tid: this.getId(),\n\t\t\t\t\tentityId: this.getEntityId()\n\t\t\t\t});\n\n\t\t\t\tif (tag)\n\t\t\t\t{\n\t\t\t\t\ttag.setDeselectable(flag);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tisDeselectable(): boolean\n\t{\n\t\treturn this.deselectable;\n\t}\n\n\tsetHidden(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.hidden = flag;\n\t\t}\n\t}\n\n\tisHidden(): boolean\n\t{\n\t\treturn this.hidden;\n\t}\n\n\tsetContextSort(sort: ?number): void\n\t{\n\t\tif (Type.isNumber(sort) || sort === null)\n\t\t{\n\t\t\tthis.contextSort = sort;\n\t\t}\n\t}\n\n\tgetContextSort(): ?number\n\t{\n\t\treturn this.contextSort;\n\t}\n\n\tsetGlobalSort(sort: ?number): void\n\t{\n\t\tif (Type.isNumber(sort) || sort === null)\n\t\t{\n\t\t\tthis.globalSort = sort;\n\t\t}\n\t}\n\n\tgetGlobalSort(): ?number\n\t{\n\t\treturn this.globalSort;\n\t}\n\n\tsetSort(sort: ?number): void\n\t{\n\t\tif (Type.isNumber(sort) || sort === null)\n\t\t{\n\t\t\tthis.sort = sort;\n\t\t}\n\t}\n\n\tgetSort(): ?number\n\t{\n\t\treturn this.sort;\n\t}\n\n\tgetSearchIndex(): SearchIndex\n\t{\n\t\tif (this.searchIndex === null)\n\t\t{\n\t\t\tthis.searchIndex = SearchIndex.create(this);\n\t\t}\n\n\t\treturn this.searchIndex;\n\t}\n\n\tresetSearchIndex(): void\n\t{\n\t\tthis.searchIndex = null;\n\t}\n\n\tgetCustomData(): Map<string, any>\n\t{\n\t\treturn this.customData;\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.getDialog() && this.getDialog().isRendered();\n\t}\n\n\t#renderNodes(): void\n\t{\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getNodes().forEach((node: ItemNode) => {\n\t\t\t\tnode.render();\n\t\t\t});\n\t\t}\n\t}\n\n\tgetEntityItemOption(option): any\n\t{\n\t\treturn this.getEntity().getItemOption(option, this.getEntityType());\n\t}\n\n\tgetEntityTagOption(option): any\n\t{\n\t\treturn this.getEntity().getTagOption(option, this.getEntityType());\n\t}\n\n\tgetEntityTextNode(option): any\n\t{\n\t\treturn this.getEntity().getOptionTextNode(option, this.getEntityType());\n\t}\n\n\tgetTagOptions(): Map<string, any>\n\t{\n\t\treturn this.tagOptions;\n\t}\n\n\tgetTagOption(option: string): any\n\t{\n\t\tconst value = this.getTagOptions().get(option);\n\n\t\tif (!Type.isUndefined(value))\n\t\t{\n\t\t\treturn value;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetTagGlobalOption(option: string, useItemOptions: boolean = false): any\n\t{\n\t\tif (!Type.isStringFilled(option))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tlet value = this.getTagOption(option);\n\n\t\tif (value === null && useItemOptions === true && this[option] !== null)\n\t\t{\n\t\t\tvalue = this[option];\n\t\t}\n\n\t\tif (value === null && this.getDialog().getTagSelector())\n\t\t{\n\t\t\tconst fn = `getTag${Text.toPascalCase(option)}`;\n\t\t\tif (Type.isFunction(this.getDialog().getTagSelector()[fn]))\n\t\t\t{\n\t\t\t\tvalue = this.getDialog().getTagSelector()[fn]();\n\t\t\t}\n\t\t}\n\n\t\tif (value === null)\n\t\t{\n\t\t\tvalue = this.getEntityTagOption(option);\n\t\t}\n\n\t\tif (value === null && useItemOptions === true)\n\t\t{\n\t\t\tvalue = this.getEntityItemOption(option);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tgetTagBgColor(): ?string\n\t{\n\t\treturn this.getTagGlobalOption('bgColor');\n\t}\n\n\tgetTagTextColor(): ?string\n\t{\n\t\treturn this.getTagGlobalOption('textColor');\n\t}\n\n\tgetTagMaxWidth(): ?number\n\t{\n\t\treturn this.getTagGlobalOption('maxWidth');\n\t}\n\n\tgetTagFontWeight(): ?string\n\t{\n\t\treturn this.getTagGlobalOption('fontWeight');\n\t}\n\n\tgetTagAvatar(): ?string\n\t{\n\t\treturn this.getTagGlobalOption('avatar', true);\n\t}\n\n\tgetTagAvatarOptions(): ?AvatarOptions\n\t{\n\t\treturn this.getTagGlobalOption('avatarOptions', true);\n\t}\n\n\tgetTagLink(): ?string\n\t{\n\t\treturn this.replaceMacros(this.getTagGlobalOption('link', true));\n\t}\n\n\t/**\n\t * @internal\n\t */\n\treplaceMacros(str: string): string\n\t{\n\t\tif (!Type.isStringFilled(str))\n\t\t{\n\t\t\treturn str;\n\t\t}\n\n\t\treturn (\n\t\t\tstr\n\t\t\t\t.replace(/#id#/i, this.getId())\n\t\t\t\t.replace(/#element_id#/i, this.getId())\n\t\t);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tcreateTag(): TagItemOptions\n\t{\n\t\treturn {\n\t\t\tid: this.getId(),\n\t\t\tentityId: this.getEntityId(),\n\t\t\tentityType: this.getEntityType(),\n\t\t\ttitle: this.getTagOption('title') || (this.getTitleNode() && this.getTitleNode().toJSON()) || '',\n\t\t\tdeselectable: this.isDeselectable(),\n\t\t\tavatar: this.getTagAvatar(),\n\t\t\tavatarOptions: this.getTagAvatarOptions(),\n\t\t\tlink: this.getTagLink(),\n\t\t\tmaxWidth: this.getTagMaxWidth(),\n\t\t\ttextColor: this.getTagTextColor(),\n\t\t\tbgColor: this.getTagBgColor(),\n\t\t\tfontWeight: this.getTagFontWeight(),\n\t\t};\n\t}\n\n\tgetAjaxJson(): { [key: string]: any }\n\t{\n\t\treturn this.toJSON();\n\t}\n\n\ttoJSON(): { [key: string]: any }\n\t{\n\t\treturn {\n\t\t\tid: this.getId(),\n\t\t\tentityId: this.getEntityId(),\n\t\t\tentityType: this.getEntityType(),\n\t\t\tselected: this.isSelected(),\n\t\t\tdeselectable: this.isDeselectable(),\n\t\t\tsearchable: this.isSearchable(),\n\t\t\tsaveable: this.isSaveable(),\n\t\t\thidden: this.isHidden(),\n\t\t\ttitle: this.getTitleNode(),\n\t\t\tlink: this.getLink(),\n\t\t\tlinkTitle: this.getLinkTitleNode(),\n\t\t\tsubtitle: this.getSubtitleNode(),\n\t\t\tsupertitle: this.getSupertitleNode(),\n\t\t\tcaption: this.getCaptionNode(),\n\t\t\tavatar: this.getAvatar(),\n\t\t\ttextColor: this.getTextColor(),\n\t\t\tsort: this.getSort(),\n\t\t\tcontextSort: this.getContextSort(),\n\t\t\tglobalSort: this.getGlobalSort(),\n\t\t\tcustomData: TypeUtils.convertMapToObject(this.getCustomData()),\n\t\t\ttagOptions: TypeUtils.convertMapToObject(this.getTagOptions()),\n\t\t\tbadges: this.getBadges()\n\t\t};\n\t}\n}","import { Cache, Dom, Tag, Type } from 'main.core';\nimport type Tab from '../tabs/tab';\n\nexport default class BaseStub\n{\n\ttab: Tab = null;\n\tautoShow: boolean = true;\n\tcache = new Cache.MemoryCache();\n\tcontent: HTMLElement = null;\n\n\tconstructor(tab: Tab, options: { [option: string]: any })\n\t{\n\t\tthis.options = Type.isPlainObject(options) ? options : {};\n\t\tthis.tab = tab;\n\t\tthis.autoShow = this.getOption('autoShow', true);\n\t}\n\n\t/**\n\t * @abstract\n\t */\n\trender(): HTMLElement\n\t{\n\t\tthrow new Error('You must implement render() method.');\n\t}\n\n\tgetTab(): Tab\n\t{\n\t\treturn this.tab;\n\t}\n\n\tgetOuterContainer()\n\t{\n\t\treturn this.cache.remember('outer-container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-tab-stub\">${this.render()}</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tisAutoShow(): boolean\n\t{\n\t\treturn this.autoShow;\n\t}\n\n\tshow(): void\n\t{\n\t\tDom.append(this.getOuterContainer(), this.getTab().getContainer());\n\t\t/*requestAnimationFrame(() => {\n\t\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-tab-stub--show');\n\t\t});*/\n\t}\n\n\thide(): void\n\t{\n\t\t// Dom.removeClass(this.getOuterContainer(), 'ui-selector-tab-stub--show');\n\t\tDom.remove(this.getOuterContainer());\n\t}\n\n\tgetOptions(): { [option: string]: any }\n\t{\n\t\treturn this.options;\n\t}\n\n\tgetOption(option: string, defaultValue?: any): any\n\t{\n\t\tif (!Type.isUndefined(this.options[option]))\n\t\t{\n\t\t\treturn this.options[option];\n\t\t}\n\t\telse if (!Type.isUndefined(defaultValue))\n\t\t{\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\treturn null;\n\t}\n}","import { Tag, Type, Loc } from 'main.core';\nimport type Tab from '../tabs/tab';\nimport BaseStub from './base-stub';\n\nexport default class DefaultStub extends BaseStub\n{\n\tcontent: HTMLElement = null;\n\n\tconstructor(tab: Tab, options: { [option: string]: any })\n\t{\n\t\tsuper(tab, options);\n\t}\n\n\tgetContainer()\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\tconst subtitle = this.getOption('subtitle');\n\t\t\tconst title = Type.isStringFilled(this.getOption('title')) ? this.getOption('title') : this.getDefaultTitle();\n\n\t\t\tconst icon = this.getOption('icon') || this.getTab().getIcon('default');\n\t\t\tlet iconOpacity = 35;\n\t\t\tif (Type.isNumber(this.getOption('iconOpacity')))\n\t\t\t{\n\t\t\t\ticonOpacity = Math.min(100, Math.max(0, this.getOption('iconOpacity')));\n\t\t\t}\n\n\t\t\tconst iconStyle =\n\t\t\t\tType.isStringFilled(icon)\n\t\t\t\t\t? `style=\"background-image: url('${icon}'); opacity: ${iconOpacity / 100};\"`\n\t\t\t\t\t: ''\n\t\t\t;\n\n\t\t\tconst arrow = this.getOption('arrow', false) && this.getTab().getDialog().getActiveFooter() !== null;\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-tab-default-stub\">\n\t\t\t\t\t<div class=\"ui-selector-tab-default-stub-icon\" ${iconStyle}></div>\n\t\t\t\t\t<div class=\"ui-selector-tab-default-stub-titles\">\n\t\t\t\t\t\t<div class=\"ui-selector-tab-default-stub-title\">${title}</div>\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\tsubtitle ? \n\t\t\t\t\t\t\t\tTag.render`<div class=\"ui-selector-tab-default-stub-subtitle\">${subtitle}</div>` \n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t${arrow ? Tag.render`<div class=\"ui-selector-tab-default-stub-arrow\"></div>` : ''}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetDefaultTitle()\n\t{\n\t\tconst titleNode = this.getTab().getTitleNode();\n\n\t\tconst titleContainer = Tag.render`<span class=\"ui-selector-tab-default-stub-title\"></span>`;\n\t\ttitleNode.renderTo(titleContainer);\n\n\t\treturn Loc.getMessage('UI_SELECTOR_TAB_STUB_TITLE').replace(/#TAB_TITLE#/, titleContainer.innerHTML);\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\treturn this.getContainer();\n\t}\n}","import { Tag, Type, Dom, Cache } from 'main.core';\nimport Dialog from '../dialog';\nimport type Tab from '../tabs/tab';\nimport type { FooterOptions } from './footer-content';\n\nexport default class BaseFooter\n{\n\tdialog: Dialog = null;\n\ttab: Tab = null;\n\tcontainer: ?HTMLElement = null;\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(context: Dialog | Tab, options: FooterOptions)\n\t{\n\t\tthis.options = Type.isPlainObject(options) ? options : {};\n\n\t\tif (context instanceof Dialog)\n\t\t{\n\t\t\tthis.dialog = context;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.tab = context;\n\t\t\tthis.dialog = this.tab.getDialog();\n\t\t}\n\t}\n\n\tgetDialog(): Dialog\n\t{\n\t\treturn this.dialog;\n\t}\n\n\tgetTab(): ?Tab\n\t{\n\t\treturn this.tab;\n\t}\n\n\tshow(): void\n\t{\n\t\tDom.addClass(this.getContainer(), 'ui-selector-footer--show');\n\t}\n\n\thide(): void\n\t{\n\t\tDom.removeClass(this.getContainer(), 'ui-selector-footer--show');\n\t}\n\n\tgetOptions(): FooterOptions\n\t{\n\t\treturn this.options;\n\t}\n\n\tgetOption(option: string, defaultValue?: any): any\n\t{\n\t\tif (!Type.isUndefined(this.options[option]))\n\t\t{\n\t\t\treturn this.options[option];\n\t\t}\n\t\telse if (!Type.isUndefined(defaultValue))\n\t\t{\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetContainer()\n\t{\n\t\tif (this.container === null)\n\t\t{\n\t\t\tthis.container = Tag.render`\n\t\t\t\t<div class=\"ui-selector-footer\">${this.render()}</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.container;\n\t}\n\n\t/**\n\t * @abstract\n\t */\n\trender(): HTMLElement\n\t{\n\t\tthrow new Error('You must implement render() method.');\n\t}\n}","import { Type, Tag, Dom, Cache, Reflection } from 'main.core';\nimport ItemNode from '../../item/item-node';\nimport Dialog from '../dialog';\nimport BaseStub from './base-stub';\nimport DefaultStub from './default-stub';\nimport BaseFooter from '../footer/base-footer';\nimport TextNode from '../../common/text-node';\n\nimport type { TabLabelState, TabLabelStates, TabOptions } from './tab-options';\nimport type { FooterContent, FooterOptions } from '../footer/footer-content';\nimport type { TextNodeOptions } from '../../common/text-node-options';\n\n/**\n * @memberof BX.UI.EntitySelector\n */\nexport default class Tab\n{\n\tid: string = null;\n\ttitle: ?TextNode = null;\n\trootNode: ItemNode = null;\n\n\tdialog: Dialog = null;\n\tstub: BaseStub = null;\n\n\tvisible: boolean = true;\n\trendered: boolean = false;\n\tlocked: boolean = false;\n\tselected: boolean = false;\n\thovered: boolean = false;\n\n\ticon: TabLabelStates = {};\n\ttextColor: TabLabelStates = {};\n\tbgColor: TabLabelStates = {};\n\n\titemMaxDepth: number = 5;\n\n\tfooter: BaseFooter = null;\n\tshowDefaultFooter = true;\n\tshowAvatars: ?boolean = null;\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(dialog: Dialog, tabOptions: TabOptions)\n\t{\n\t\tconst options: TabOptions = Type.isPlainObject(tabOptions) ? tabOptions : {};\n\n\t\tif (!Type.isStringFilled(options.id))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.Tab: \"id\" parameter is required.');\n\t\t}\n\n\t\tthis.setDialog(dialog);\n\t\tthis.id = options.id;\n\t\tthis.showDefaultFooter = options.showDefaultFooter !== false;\n\n\t\tthis.rootNode = new ItemNode(null, { itemOrder: options.itemOrder });\n\t\tthis.rootNode.setTab(this);\n\n\t\tthis.setVisible(options.visible);\n\t\tthis.setTitle(options.title);\n\t\tthis.setItemMaxDepth(options.itemMaxDepth);\n\t\tthis.setIcon(options.icon);\n\t\tthis.setTextColor(options.textColor);\n\t\tthis.setBgColor(options.bgColor);\n\t\tthis.setStub(options.stub, options.stubOptions);\n\t\tthis.setFooter(options.footer, options.footerOptions);\n\t\tthis.setShowAvatars(options.showAvatars);\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tsetDialog(dialog: Dialog): void\n\t{\n\t\tthis.dialog = dialog;\n\t}\n\n\tgetDialog(): Dialog\n\t{\n\t\treturn this.dialog;\n\t}\n\n\tgetStub(): ?BaseStub\n\t{\n\t\treturn this.stub;\n\t}\n\n\tsetStub(stub?: boolean | string | Function, stubOptions?: { [option: string]: any }): void\n\t{\n\t\tlet instance = null;\n\t\tconst options = Type.isPlainObject(stubOptions) ? stubOptions : {};\n\n\t\tif (Type.isString(stub) || Type.isFunction(stub))\n\t\t{\n\t\t\tconst className = Type.isString(stub) ? Reflection.getClass(stub) : stub;\n\t\t\tif (Type.isFunction(className))\n\t\t\t{\n\t\t\t\tinstance = new className(this, options);\n\t\t\t\tif (!(instance instanceof BaseStub))\n\t\t\t\t{\n\t\t\t\t\tconsole.error('EntitySelector: stub is not an instance of BaseStub.');\n\t\t\t\t\tinstance = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!instance && stub !== false)\n\t\t{\n\t\t\tinstance = new DefaultStub(this, options);\n\t\t}\n\n\t\tthis.stub = instance;\n\t}\n\n\tgetFooter(): ?BaseFooter\n\t{\n\t\treturn this.footer;\n\t}\n\n\tsetFooter(footerContent: ?FooterContent, footerOptions?: FooterOptions)\n\t{\n\t\t/** @var {BaseFooter} */\n\t\tlet footer = null;\n\t\tif (footerContent !== null)\n\t\t{\n\t\t\tfooter = Dialog.createFooter(this, footerContent, footerOptions);\n\t\t\tif (footer === null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this.isRendered() && this.getFooter() !== null)\n\t\t{\n\t\t\tDom.remove(this.getFooter().getContainer());\n\t\t\tthis.getDialog().adjustFooter();\n\t\t}\n\n\t\tthis.footer = footer;\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getDialog().appendFooter(footer);\n\t\t\tthis.getDialog().adjustFooter();\n\t\t}\n\t}\n\n\tcanShowDefaultFooter(): boolean\n\t{\n\t\treturn this.showDefaultFooter;\n\t}\n\n\tenableDefaultFooter(): void\n\t{\n\t\tthis.showDefaultFooter = true;\n\t\tthis.getDialog().adjustFooter();\n\t}\n\n\tdisableDefaultFooter(): void\n\t{\n\t\tthis.showDefaultFooter = false;\n\t\tthis.getDialog().adjustFooter();\n\t}\n\n\tsetShowAvatars(flag: ?boolean): void\n\t{\n\t\tif (Type.isBoolean(flag) || flag === null)\n\t\t{\n\t\t\tthis.showAvatars = flag;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.renderContainer();\n\t\t\t}\n\t\t}\n\t}\n\n\tshouldShowAvatars(): boolean\n\t{\n\t\treturn this.showAvatars ?? this.getDialog().shouldShowAvatars();\n\t}\n\n\tgetRootNode(): ItemNode\n\t{\n\t\treturn this.rootNode;\n\t}\n\n\tsetTitle(title: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isStringFilled(title) || Type.isPlainObject(title) || title === null)\n\t\t{\n\t\t\tthis.title = title === null ? null : new TextNode(title);\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.renderLabel();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetTitle(): string\n\t{\n\t\tconst titleNode = this.getTitleNode();\n\n\t\treturn titleNode !== null && !titleNode.isNullable() ? titleNode.getText() : '';\n\t}\n\n\tgetTitleNode(): ?TextNode\n\t{\n\t\treturn this.title;\n\t}\n\n\tsetIcon(icon: TabLabelStates | string): void\n\t{\n\t\treturn this.setProperty('icon', icon);\n\t}\n\n\tgetIcon(state?: TabLabelState): ?string\n\t{\n\t\treturn this.getPropertyByState('icon', state);\n\t}\n\n\tsetBgColor(bgColor: TabLabelStates | string): void\n\t{\n\t\treturn this.setProperty('bgColor', bgColor);\n\t}\n\n\tgetBgColor(state?: TabLabelState): ?string\n\t{\n\t\treturn this.getPropertyByState('bgColor', state);\n\t}\n\n\tsetTextColor(textColor: TabLabelStates | string): void\n\t{\n\t\treturn this.setProperty('textColor', textColor);\n\t}\n\n\tgetTextColor(state?: TabLabelState): ?string\n\t{\n\t\treturn this.getPropertyByState('textColor', state);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tsetProperty(name: string, states: TabLabelStates | string): void\n\t{\n\t\tconst property = this[name];\n\t\tif (!property)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (Type.isPlainObject(states))\n\t\t{\n\t\t\tObject.keys(states).forEach(state => {\n\t\t\t\tif (Type.isStringFilled(states[state]))\n\t\t\t\t{\n\t\t\t\t\tproperty[state] = states[state];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse if (Type.isStringFilled(states))\n\t\t{\n\t\t\tproperty['default'] = states;\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tgetPropertyByState(name: string, state?: TabLabelState): ?string\n\t{\n\t\tconst property = this[name];\n\t\tconst labelState = Type.isStringFilled(state) ? state : 'default';\n\n\t\tif (!Type.isUndefined(property) && !Type.isUndefined(property[labelState]))\n\t\t{\n\t\t\treturn property[labelState];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tgetPropertyByCurrentState(name: string): ?string\n\t{\n\t\tconst property = this[name];\n\t\tif (this.isSelected() && this.isHovered() && property.selectedHovered)\n\t\t{\n\t\t\treturn property.selectedHovered;\n\t\t}\n\t\telse if (this.isSelected() && property.selected)\n\t\t{\n\t\t\treturn property.selected;\n\t\t}\n\t\telse if (this.isHovered() && property.hovered)\n\t\t{\n\t\t\treturn property.hovered;\n\t\t}\n\t\telse if (property.default)\n\t\t{\n\t\t\treturn property.default;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetItemMaxDepth(depth: number): void\n\t{\n\t\tif (Type.isNumber(depth) && depth > 0)\n\t\t{\n\t\t\tthis.itemMaxDepth = depth;\n\t\t}\n\t}\n\n\tgetItemMaxDepth(): number\n\t{\n\t\treturn this.itemMaxDepth;\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-tab-content\">${this.getItemsContainer()}</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetLabelContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('label', () => {\n\t\t\tconst className = this.isVisible() ? '' : ' ui-selector-tab-label-hidden';\n\t\t\treturn Tag.render`\n\t\t\t\t<div \n\t\t\t\t\tclass=\"ui-selector-tab-label${className}\" \n\t\t\t\t\tonclick=\"${this.handleLabelClick.bind(this)}\"\n\t\t\t\t\tonmouseenter=\"${this.handleLabelMouseEnter.bind(this)}\"\n\t\t\t\t\tonmouseleave=\"${this.handleLabelMouseLeave.bind(this)}\"\n\t\t\t\t>\n\t\t\t\t\t${this.getIconContainer()}\n\t\t\t\t\t${this.getTitleContainer()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetIconContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('icon', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-tab-icon\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetTitleContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('title', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-tab-title\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetItemsContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('items', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-items\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\trender(): void\n\t{\n\t\tthis.getRootNode().render();\n\t\tthis.rendered = true;\n\t}\n\n\t/** @internal **/\n\trenderLabel(): void\n\t{\n\t\tDom.style(this.getTitleContainer(), 'color', this.getPropertyByCurrentState('textColor'));\n\t\tDom.style(this.getLabelContainer(), 'background-color', this.getPropertyByCurrentState('bgColor'));\n\n\t\tconst icon = this.getPropertyByCurrentState('icon');\n\t\tDom.style(this.getIconContainer(), 'background-image', icon ? `url('${icon}')` : null);\n\n\t\tconst titleNode = this.getTitleNode();\n\t\tif (titleNode)\n\t\t{\n\t\t\tthis.getTitleNode().renderTo(this.getTitleContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getTitleContainer().textContent = '';\n\t\t}\n\t}\n\n\t/** @internal **/\n\trenderContainer(): void\n\t{\n\t\tconst className = 'ui-selector-tab-content--hide-avatars';\n\t\tif (this.shouldShowAvatars())\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), className);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.getContainer(), className);\n\t\t}\n\t}\n\n\tisVisible(): boolean\n\t{\n\t\treturn this.visible;\n\t}\n\n\tsetVisible(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.visible = flag;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tif (this.visible)\n\t\t\t\t{\n\t\t\t\t\tDom.remove(this.getLabelContainer(), 'ui-selector-tab-label-hidden');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tDom.addClass(this.getLabelContainer(), 'ui-selector-tab-label-hidden');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.rendered && this.getDialog() && this.getDialog().isRendered();\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tselect(): void\n\t{\n\t\tif (this.isSelected())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.addClass(this.getContainer(), 'ui-selector-tab-content-active');\n\t\tif (this.isVisible())\n\t\t{\n\t\t\tDom.addClass(this.getLabelContainer(), 'ui-selector-tab-label-active');\n\t\t\tthis.renderLabel();\n\t\t}\n\n\t\tthis.selected = true;\n\n\t\tif (this.isVisible())\n\t\t{\n\t\t\tthis.renderLabel();\n\t\t}\n\n\t\tif (this.getFooter())\n\t\t{\n\t\t\tthis.getFooter().show();\n\t\t}\n\n\t\tthis.getDialog().emit('Tab:onSelect', { tab: this });\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tdeselect(): void\n\t{\n\t\tif (!this.isSelected())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.removeClass(this.getContainer(), 'ui-selector-tab-content-active');\n\t\tif (this.isVisible())\n\t\t{\n\t\t\tDom.removeClass(this.getLabelContainer(), 'ui-selector-tab-label-active');\n\t\t}\n\n\t\tthis.selected = false;\n\n\t\tif (this.isVisible())\n\t\t{\n\t\t\tthis.renderLabel();\n\t\t}\n\n\t\tif (this.getFooter())\n\t\t{\n\t\t\tthis.getFooter().hide();\n\t\t}\n\n\t\tthis.getDialog().emit('Tab:onDeselect', { tab: this\t});\n\t}\n\n\thover(): void\n\t{\n\t\tif (this.isHovered())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.addClass(this.getLabelContainer(), 'ui-selector-tab-label-hover');\n\t\tthis.hovered = true;\n\n\t\tthis.renderLabel();\n\t}\n\n\tunhover(): void\n\t{\n\t\tif (!this.isHovered())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.removeClass(this.getLabelContainer(), 'ui-selector-tab-label-hover');\n\t\tthis.hovered = false;\n\n\t\tthis.renderLabel();\n\t}\n\n\tisSelected(): boolean\n\t{\n\t\treturn this.selected;\n\t}\n\n\tisHovered(): boolean\n\t{\n\t\treturn this.hovered;\n\t}\n\n\tlock(): void\n\t{\n\t\tthis.locked = true;\n\t\tDom.addClass(this.getContainer(), 'ui-selector-tab-content-locked');\n\t}\n\n\tunlock(): void\n\t{\n\t\tthis.locked = false;\n\t\tDom.removeClass(this.getContainer(), 'ui-selector-tab-content-locked');\n\t}\n\n\tisLocked(): boolean\n\t{\n\t\treturn this.locked;\n\t}\n\n\thandleLabelClick(): void\n\t{\n\t\tthis.getDialog().selectTab(this.getId());\n\t}\n\n\thandleLabelMouseEnter(): void\n\t{\n\t\tthis.hover();\n\t}\n\n\thandleLabelMouseLeave(): void\n\t{\n\t\tthis.unhover();\n\t}\n}","import { Cache, Tag, Type, Dom } from 'main.core';\nimport Entity from '../entity/entity';\nimport TextNode from '../common/text-node';\nimport Animation from '../common/animation';\nimport TypeUtils from '../common/type-utils';\n\nimport type TagSelector from './tag-selector';\nimport type { TagItemOptions } from './tag-item-options';\nimport type { TextNodeOptions } from '../common/text-node-options';\nimport type { AvatarOptions } from '../item/avatar-options';\n\nexport default class TagItem\n{\n\tid: string | number = null;\n\tentityId: string = null;\n\tentityType: string = null;\n\ttitle: ?TextNode = null;\n\n\tavatar: ?string = null;\n\tavatarOptions: ?AvatarOptions = null;\n\tmaxWidth: ?number = null;\n\ttextColor: ?string = null;\n\tbgColor: ?string = null;\n\tfontWeight: ?string = null;\n\n\tlink: ?string = null;\n\tonclick: ?Function = null;\n\n\tdeselectable: ?boolean = null;\n\tcustomData: Map<string, any> = null;\n\n\tcache = new Cache.MemoryCache();\n\tselector: TagSelector = null;\n\trendered: ?boolean = false;\n\n\tconstructor(itemOptions: TagItemOptions)\n\t{\n\t\tconst options = Type.isPlainObject(itemOptions) ? itemOptions : {};\n\t\tif (!Type.isStringFilled(options.id) && !Type.isNumber(options.id))\n\t\t{\n\t\t\tthrow new Error('TagSelector.TagItem: \"id\" parameter is required.');\n\t\t}\n\n\t\tif (!Type.isStringFilled(options.entityId))\n\t\t{\n\t\t\tthrow new Error('TagSelector.TagItem: \"entityId\" parameter is required.');\n\t\t}\n\n\t\tthis.id = options.id;\n\t\tthis.entityId = options.entityId.toLowerCase();\n\t\tthis.entityType = Type.isStringFilled(options.entityType) ? options.entityType : 'default';\n\t\tthis.customData = TypeUtils.createMapFromOptions(options.customData);\n\n\t\tthis.onclick = Type.isFunction(options.onclick) ? options.onclick : null;\n\t\tthis.link = Type.isStringFilled(options.link) ? options.link : null;\n\n\t\tthis.setTitle(options.title);\n\t\tthis.setDeselectable(options.deselectable);\n\n\t\tthis.setAvatar(options.avatar);\n\t\tthis.setAvatarOptions(options.avatarOptions);\n\t\tthis.setMaxWidth(options.maxWidth);\n\t\tthis.setTextColor(options.textColor);\n\t\tthis.setBgColor(options.bgColor);\n\t\tthis.setFontWeight(options.fontWeight);\n\t}\n\n\tgetId(): string | number\n\t{\n\t\treturn this.id;\n\t}\n\n\tgetEntityId(): string\n\t{\n\t\treturn this.entityId;\n\t}\n\n\tgetEntityType(): string\n\t{\n\t\treturn this.entityType;\n\t}\n\n\tgetSelector(): TagSelector\n\t{\n\t\treturn this.selector;\n\t}\n\n\tsetSelector(selector: TagSelector)\n\t{\n\t\tthis.selector = selector;\n\t}\n\n\tgetTitle(): string\n\t{\n\t\treturn this.getTitleNode() && !this.getTitleNode().isNullable() ? this.getTitleNode().getText() : '';\n\t}\n\n\tgetTitleNode(): ?TextNode\n\t{\n\t\treturn this.title;\n\t}\n\n\tsetTitle(title: string | TextNodeOptions): void\n\t{\n\t\tif (Type.isStringFilled(title) || Type.isPlainObject(title) || title === null)\n\t\t{\n\t\t\tthis.title = title === null ? null : new TextNode(title);\n\t\t}\n\t}\n\n\tgetAvatar(): ?string\n\t{\n\t\tif (this.avatar !== null)\n\t\t{\n\t\t\treturn this.avatar;\n\t\t}\n\t\telse if (this.getSelector().getTagAvatar() !== null)\n\t\t{\n\t\t\treturn this.getSelector().getTagAvatar();\n\t\t}\n\t\telse if (this.getEntityTagOption('avatar') !== null)\n\t\t{\n\t\t\treturn this.getEntityTagOption('avatar');\n\t\t}\n\n\t\treturn this.getEntityItemOption('avatar');\n\t}\n\n\tsetAvatar(avatar: ?string): void\n\t{\n\t\tif (Type.isString(avatar) || avatar === null)\n\t\t{\n\t\t\tthis.avatar = avatar;\n\t\t}\n\t}\n\n\tgetAvatarOption(option: $Keys<AvatarOptions>): string | boolean | number | null\n\t{\n\t\tif (this.avatarOptions !== null && !Type.isUndefined(this.avatarOptions[option]))\n\t\t{\n\t\t\treturn this.avatarOptions[option];\n\t\t}\n\n\t\tconst selectorAvatarOption = this.getSelector().getTagAvatarOption(option);\n\t\tif (selectorAvatarOption !== null)\n\t\t{\n\t\t\treturn selectorAvatarOption[option];\n\t\t}\n\n\t\tconst entityTagAvatarOptions = this.getEntityTagOption('avatarOptions');\n\t\tif (Type.isPlainObject(entityTagAvatarOptions) && !Type.isUndefined(entityTagAvatarOptions[option]))\n\t\t{\n\t\t\treturn entityTagAvatarOptions[option];\n\t\t}\n\n\t\tconst entityItemAvatarOptions = this.getEntityItemOption('avatarOptions');\n\t\tif (Type.isPlainObject(entityItemAvatarOptions) && !Type.isUndefined(entityItemAvatarOptions[option]))\n\t\t{\n\t\t\treturn entityItemAvatarOptions[option];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetAvatarOption(option: $Keys<AvatarOptions>, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tif (this.avatarOptions === null)\n\t\t\t{\n\t\t\t\tthis.avatarOptions = {};\n\t\t\t}\n\n\t\t\tthis.avatarOptions[option] = value;\n\t\t}\n\t}\n\n\tsetAvatarOptions(options: AvatarOptions): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setAvatarOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetTextColor(): ?string\n\t{\n\t\tif (this.textColor !== null)\n\t\t{\n\t\t\treturn this.textColor;\n\t\t}\n\t\telse if (this.getSelector().getTagTextColor() !== null)\n\t\t{\n\t\t\treturn this.getSelector().getTagTextColor();\n\t\t}\n\n\t\treturn this.getEntityTagOption('textColor');\n\t}\n\n\tsetTextColor(textColor: ?string): void\n\t{\n\t\tif (Type.isString(textColor) || textColor === null)\n\t\t{\n\t\t\tthis.textColor = textColor;\n\t\t}\n\t}\n\n\tgetBgColor(): ?string\n\t{\n\t\tif (this.bgColor !== null)\n\t\t{\n\t\t\treturn this.bgColor;\n\t\t}\n\t\telse if (this.getSelector().getTagBgColor() !== null)\n\t\t{\n\t\t\treturn this.getSelector().getTagBgColor();\n\t\t}\n\n\t\treturn this.getEntityTagOption('bgColor');\n\t}\n\n\tsetBgColor(bgColor: ?string): void\n\t{\n\t\tif (Type.isString(bgColor) || bgColor === null)\n\t\t{\n\t\t\tthis.bgColor = bgColor;\n\t\t}\n\t}\n\n\tgetFontWeight(): ?string\n\t{\n\t\tif (this.fontWeight !== null)\n\t\t{\n\t\t\treturn this.fontWeight;\n\t\t}\n\t\telse if (this.getSelector().getTagFontWeight() !== null)\n\t\t{\n\t\t\treturn this.getSelector().getTagFontWeight();\n\t\t}\n\n\t\treturn this.getEntityTagOption('fontWeight');\n\t}\n\n\tsetFontWeight(fontWeight: ?string): void\n\t{\n\t\tif (Type.isString(fontWeight) || fontWeight === null)\n\t\t{\n\t\t\tthis.fontWeight = fontWeight;\n\t\t}\n\t}\n\n\tgetMaxWidth(): ?number\n\t{\n\t\tif (this.maxWidth !== null)\n\t\t{\n\t\t\treturn this.maxWidth;\n\t\t}\n\t\telse if (this.getSelector().getTagMaxWidth() !== null)\n\t\t{\n\t\t\treturn this.getSelector().getTagMaxWidth();\n\t\t}\n\n\t\treturn this.getEntityTagOption('maxWidth');\n\t}\n\n\tsetMaxWidth(width: ?number): void\n\t{\n\t\tif ((Type.isNumber(width) && width >= 0) || width === null)\n\t\t{\n\t\t\tthis.maxWidth = width;\n\t\t}\n\t}\n\n\tsetDeselectable(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.deselectable = flag;\n\t\t}\n\t}\n\n\tisDeselectable(): boolean\n\t{\n\t\treturn this.deselectable !== null ? this.deselectable : this.getSelector().isDeselectable();\n\t}\n\n\tgetCustomData(): Map<string, any>\n\t{\n\t\treturn this.customData;\n\t}\n\n\tgetLink(): ?string\n\t{\n\t\treturn this.link;\n\t}\n\n\tgetOnclick(): ?Function\n\t{\n\t\treturn this.onclick;\n\t}\n\n\trender(): void\n\t{\n\t\tconst titleNode = this.getTitleNode();\n\t\tif (titleNode)\n\t\t{\n\t\t\ttitleNode.renderTo(this.getTitleContainer());\n\n\t\t\t//Dom.attr(this.getContentContainer(), 'title', this.getTitle());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getTitleContainer().textContent = '';\n\t\t\tDom.attr(this.getContentContainer(), 'title', '');\n\t\t}\n\n\t\tconst avatar = this.getAvatar();\n\t\tconst bgImage = this.getAvatarOption('bgImage');\n\t\tif (Type.isStringFilled(avatar))\n\t\t{\n\t\t\tDom.style(this.getAvatarContainer(), 'background-image', `url('${avatar}')`);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.style(this.getAvatarContainer(), 'background-image', bgImage);\n\t\t}\n\n\t\tconst bgColor = this.getAvatarOption('bgColor');\n\t\tconst bgSize = this.getAvatarOption('bgSize');\n\n\t\tDom.style(this.getAvatarContainer(), 'background-color', bgColor);\n\t\tDom.style(this.getAvatarContainer(), 'background-size', bgSize);\n\n\t\tconst hasAvatar = avatar || (bgColor && bgColor !== 'none') || (bgImage && bgImage !== 'none');\n\t\tif (hasAvatar)\n\t\t{\n\t\t\tDom.addClass(this.getContainer(), 'ui-tag-selector-tag--has-avatar');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), 'ui-tag-selector-tag--has-avatar');\n\t\t}\n\n\t\tconst maxWidth = this.getMaxWidth();\n\t\tif (maxWidth > 0)\n\t\t{\n\t\t\tDom.style(this.getContainer(), 'max-width', `${maxWidth}px`);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.style(this.getContainer(), 'max-width', null);\n\t\t}\n\n\t\tif (this.isDeselectable())\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), 'ui-tag-selector-tag-readonly');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.getContainer(), 'ui-tag-selector-tag-readonly');\n\t\t}\n\n\t\tDom.style(this.getTitleContainer(), 'color', this.getTextColor());\n\t\tDom.style(this.getTitleContainer(), 'font-weight', this.getFontWeight());\n\t\tDom.style(this.getContainer(), 'background-color', this.getBgColor());\n\n\t\tthis.rendered = true;\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-item ui-tag-selector-tag\">\n\t\t\t\t\t${this.getContentContainer()}\n\t\t\t\t\t${this.getRemoveIcon()}\n\t\t\t\t</div>`\n\t\t\t;\n\t\t});\n\t}\n\n\tgetContentContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('content-container', () => {\n\t\t\tif (Type.isStringFilled(this.getLink()))\n\t\t\t{\n\t\t\t\treturn Tag.render`\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"ui-tag-selector-tag-content\"\n\t\t\t\t\t\tonclick=\"${this.handleContainerClick.bind(this)}\"\n\t\t\t\t\t\thref=\"${this.getLink()}\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${this.getAvatarContainer()}\n\t\t\t\t\t\t${this.getTitleContainer()}\n\t\t\t\t\t</a>\n\t\t\t\t`;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst className = Type.isFunction(this.getOnclick()) ? ' ui-tag-selector-tag-content--clickable' : '';\n\t\t\t\treturn Tag.render`\n\t\t\t\t\t<div \n\t\t\t\t\t\tclass=\"ui-tag-selector-tag-content${className}\" \n\t\t\t\t\t\tonclick=\"${this.handleContainerClick.bind(this)}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${this.getAvatarContainer()}\n\t\t\t\t\t\t${this.getTitleContainer()}\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t`;\n\t\t\t}\n\t\t});\n\t}\n\n\tgetAvatarContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('avatar', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-tag-avatar\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetTitleContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('title', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-tag-title\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetRemoveIcon(): HTMLElement\n\t{\n\t\treturn this.cache.remember('remove-icon', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-tag-remove\" onclick=\"${this.handleRemoveIconClick.bind(this)}\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetEntityTagOption(option: string): any\n\t{\n\t\treturn Entity.getTagOption(this.getEntityId(), option, this.getEntityType());\n\t}\n\n\tgetEntityItemOption(option: string): any\n\t{\n\t\treturn Entity.getItemOption(this.getEntityId(), option, this.getEntityType());\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.rendered && this.getSelector() && this.getSelector().isRendered();\n\t}\n\n\tremove(animate: boolean = true): Promise\n\t{\n\t\tif (animate === false)\n\t\t{\n\t\t\tDom.remove(this.getContainer());\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\treturn new Promise(resolve => {\n\t\t\tDom.style(this.getContainer(), 'width', `${this.getContainer().offsetWidth}px`);\n\t\t\tDom.addClass(this.getContainer(), 'ui-tag-selector-tag--remove');\n\t\t\tAnimation.handleAnimationEnd(this.getContainer(), 'ui-tag-selector-tag-remove').then(() => {\n\t\t\t\tDom.remove(this.getContainer());\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\t}\n\n\tshow(): Promise\n\t{\n\t\treturn new Promise(resolve => {\n\t\t\tDom.addClass(this.getContainer(), 'ui-tag-selector-tag--show');\n\t\t\tAnimation.handleAnimationEnd(this.getContainer(), 'ui-tag-selector-tag-show').then(() => {\n\t\t\t\tDom.removeClass(this.getContainer(), 'ui-tag-selector-tag--show');\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\t}\n\n\thandleContainerClick(): void\n\t{\n\t\tconst fn = this.getOnclick();\n\t\tif (Type.isFunction(fn))\n\t\t{\n\t\t\tfn(this);\n\t\t}\n\t}\n\n\thandleRemoveIconClick(event: MouseEvent): void\n\t{\n\t\tevent.stopPropagation();\n\t\tif (this.isDeselectable())\n\t\t{\n\t\t\tthis.getSelector().removeTag(this);\n\t\t}\n\t}\n}","import { Cache, Dom, Tag, Text, Type, Loc, Browser } from 'main.core';\nimport { EventEmitter, BaseEvent } from 'main.core.events';\n\nimport Dialog from '../dialog/dialog';\nimport TagItem from './tag-item';\n\nimport type { TagSelectorOptions } from './tag-selector-options';\nimport type { ItemOptions } from '../item/item-options';\nimport type { TagItemOptions } from './tag-item-options';\nimport type { AvatarOptions } from '../item/avatar-options';\n\n/**\n * @memberof BX.UI.EntitySelector\n */\nexport default class TagSelector extends EventEmitter\n{\n\ttags: TagItem[] = [];\n\tcache = new Cache.MemoryCache();\n\trendered: false;\n\n\tmultiple: boolean = true;\n\treadonly: boolean = false;\n\tlocked: boolean = false;\n\tdeselectable: boolean = true;\n\n\taddButtonCaption: ?string = null;\n\taddButtonCaptionMore: ?string = null;\n\tcreateButtonCaption: ?string = null;\n\taddButtonVisible: boolean = true;\n\tcreateButtonVisible: boolean = false;\n\ttextBoxVisible: boolean = false;\n\ttextBoxWidth: string | number | null = null;\n\tmaxHeight: ?number = null;\n\n\tplaceholder: string = '';\n\ttextBoxAutoHide: boolean = false;\n\ttextBoxOldValue = '';\n\n\ttagAvatar: ?string = null;\n\ttagAvatarOptions: ?AvatarOptions = null;\n\ttagTextColor: ?string = null;\n\ttagBgColor: ?string = null;\n\ttagFontWeight: ?string = null;\n\ttagMaxWidth: ?number = null;\n\n\tdialog: ?Dialog = null;\n\n\tconstructor(selectorOptions: TagSelectorOptions)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.EntitySelector.TagSelector');\n\n\t\tconst options = Type.isPlainObject(selectorOptions) ? selectorOptions : {};\n\t\tthis.id = Type.isStringFilled(options.id) ? options.id : `ui-tag-selector-${Text.getRandom().toLowerCase()}`;\n\t\tthis.multiple = Type.isBoolean(options.multiple) ? options.multiple : true;\n\n\t\tthis.addButtonVisible = options.showAddButton !== false;\n\t\tthis.createButtonVisible = options.showCreateButton === true;\n\t\tthis.textBoxVisible = options.showTextBox === true;\n\n\t\tthis.setReadonly(options.readonly);\n\t\tthis.setLocked(options.locked);\n\t\tthis.setAddButtonCaption(options.addButtonCaption);\n\t\tthis.setAddButtonCaptionMore(options.addButtonCaptionMore);\n\t\tthis.setCreateButtonCaption(options.createButtonCaption);\n\t\tthis.setPlaceholder(options.placeholder);\n\t\tthis.setTextBoxAutoHide(options.textBoxAutoHide);\n\t\tthis.setTextBoxWidth(options.textBoxWidth);\n\t\tthis.setDeselectable(options.deselectable);\n\t\tthis.setMaxHeight(options.maxHeight);\n\n\t\tthis.setTagAvatar(options.tagAvatar);\n\t\tthis.setTagAvatarOptions(options.tagAvatarOptions);\n\t\tthis.setTagMaxWidth(options.tagMaxWidth);\n\t\tthis.setTagTextColor(options.tagTextColor);\n\t\tthis.setTagBgColor(options.tagBgColor);\n\t\tthis.setTagFontWeight(options.tagFontWeight);\n\n\t\tif (Type.isPlainObject(options.dialogOptions))\n\t\t{\n\t\t\tlet selectedItems = Type.isArray(options.items) ? options.items : [];\n\t\t\tif (Type.isArray(options.dialogOptions.selectedItems))\n\t\t\t{\n\t\t\t\tselectedItems = selectedItems.concat(options.dialogOptions.selectedItems);\n\t\t\t}\n\n\t\t\tconst dialogOptions = Object.assign(\n\t\t\t\t{},\n\t\t\t\toptions.dialogOptions,\n\t\t\t\t{\n\t\t\t\t\ttagSelectorOptions: null,\n\t\t\t\t\tselectedItems,\n\t\t\t\t\tmultiple: this.isMultiple(),\n\t\t\t\t\ttagSelector: this\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t(new Dialog(dialogOptions));\n\t\t}\n\t\telse if (Type.isArray(options.items))\n\t\t{\n\t\t\toptions.items.forEach((item) => {\n\t\t\t\tthis.addTag(item);\n\t\t\t});\n\t\t}\n\n\t\tthis.subscribeFromOptions(options.events);\n\t}\n\n\tgetDialog(): ?Dialog\n\t{\n\t\treturn this.dialog;\n\t}\n\n\t/**\n\t * @internal\n\t * @param dialog\n\t */\n\tsetDialog(dialog: ?Dialog): void\n\t{\n\t\tthis.dialog = dialog;\n\t}\n\n\tsetReadonly(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.readonly = flag;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tif (flag)\n\t\t\t\t{\n\t\t\t\t\tDom.addClass(this.getOuterContainer(), 'ui-tag-selector-container-readonly');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tDom.removeClass(this.getOuterContainer(), 'ui-tag-selector-container-readonly');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tisReadonly(): boolean\n\t{\n\t\treturn this.readonly;\n\t}\n\n\tsetLocked(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.locked = flag;\n\n\t\t\tif (flag)\n\t\t\t{\n\t\t\t\tDom.addClass(this.getOuterContainer(), 'ui-tag-selector-container-locked');\n\t\t\t\tthis.getTextBox().disabled = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDom.removeClass(this.getOuterContainer(), 'ui-tag-selector-container-locked');\n\t\t\t\tthis.getTextBox().disabled = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tlock(): void\n\t{\n\t\tif (!this.isLocked())\n\t\t{\n\t\t\tthis.setLocked(true);\n\t\t}\n\t}\n\n\tunlock(): void\n\t{\n\t\tif (this.isLocked())\n\t\t{\n\t\t\tthis.setLocked(false);\n\t\t}\n\t}\n\n\tisLocked(): boolean\n\t{\n\t\treturn this.locked;\n\t}\n\n\tisMultiple(): boolean\n\t{\n\t\treturn this.multiple;\n\t}\n\n\tsetDeselectable(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tconst changed = this.deselectable !== flag;\n\t\t\tthis.deselectable = flag;\n\n\t\t\tif (changed)\n\t\t\t{\n\t\t\t\tthis.updateTags();\n\t\t\t}\n\t\t}\n\t}\n\n\tisDeselectable(): boolean\n\t{\n\t\treturn this.deselectable;\n\t}\n\n\tgetTag(tagItem: TagItem | ItemOptions): ?TagItem\n\t{\n\t\tif (tagItem instanceof TagItem)\n\t\t{\n\t\t\treturn this.getTags().find(tag => tag === tagItem);\n\t\t}\n\t\telse if (Type.isPlainObject(tagItem))\n\t\t{\n\t\t\tconst { id, entityId } = tagItem;\n\t\t\treturn this.getTags().find((tag: TagItem) => tag.getId() === id && tag.getEntityId() === entityId);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\taddTag(tagOptions: TagItemOptions): ?TagItem\n\t{\n\t\tif (!Type.isObjectLike(tagOptions))\n\t\t{\n\t\t\tthrow new Error('TagSelector.addTag: wrong item options.');\n\t\t}\n\n\t\tif (this.getTag(tagOptions))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst tag = new TagItem(tagOptions);\n\t\ttag.setSelector(this);\n\n\t\tconst event = new BaseEvent({ data: { tag } });\n\t\tthis.emit('onBeforeTagAdd', event);\n\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this.isMultiple())\n\t\t{\n\t\t\tthis.removeTags();\n\t\t}\n\n\t\tthis.tags.push(tag);\n\n\t\tthis.emit('onTagAdd', { tag });\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\ttag.render();\n\t\t\tthis.getItemsContainer().insertBefore(tag.getContainer(), this.getTextBox());\n\n\t\t\tif (tagOptions.animate !== false)\n\t\t\t{\n\t\t\t\ttag.show().then(() => {\n\t\t\t\t\tthis.getContainer().scrollTop = this.getContainer().scrollHeight - this.getContainer().offsetHeight;\n\t\t\t\t\tthis.emit('onAfterTagAdd', { tag });\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.emit('onAfterTagAdd', { tag });\n\t\t\t}\n\n\t\t\tthis.toggleAddButtonCaption();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.emit('onAfterTagAdd', { tag });\n\t\t}\n\n\t\treturn tag;\n\t}\n\n\tremoveTag(item: TagItem | ItemOptions, animate = true): void\n\t{\n\t\tconst tagItem = this.getTag(item);\n\t\tif (!tagItem)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = new BaseEvent({ data: { tag: tagItem } });\n\t\tthis.emit('onBeforeTagRemove', event);\n\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.tags = this.tags.filter(el => el !== tagItem);\n\n\t\tthis.emit('onTagRemove', { tag: tagItem });\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\ttagItem.remove(animate).then(() => {\n\t\t\t\tthis.toggleAddButtonCaption();\n\t\t\t\tthis.emit('onAfterTagRemove', { tag: tagItem });\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.emit('onAfterTagRemove', { tag: tagItem });\n\t\t}\n\t}\n\n\tremoveTags(): void\n\t{\n\t\tthis.getTags().forEach(tag => {\n\t\t\tthis.removeTag(tag, false);\n\t\t});\n\t}\n\n\tgetTags(): TagItem[]\n\t{\n\t\treturn this.tags;\n\t}\n\n\trenderTo(node: HTMLElement): void\n\t{\n\t\tthis.rendered = true;\n\n\t\tthis.getTags().forEach((tag: TagItem) => {\n\t\t\ttag.render();\n\t\t\tthis.getItemsContainer().insertBefore(tag.getContainer(), this.getTextBox());\n\t\t});\n\n\t\tif (Type.isDomNode(node))\n\t\t{\n\t\t\tDom.append(this.getOuterContainer(), node);\n\t\t}\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.rendered;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tupdateTags(): void\n\t{\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getTags().forEach((tag: TagItem) => {\n\t\t\t\ttag.render();\n\t\t\t});\n\t\t}\n\t}\n\n\tgetOuterContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('outer-container', () => {\n\t\t\tlet className = this.isReadonly() ? ' ui-tag-selector-container-readonly' : '';\n\t\t\tclassName += this.isLocked() ? ' ui-tag-selector-container-locked' : '';\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-outer-container${className}\">${this.getContainer()}</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\tconst style =\n\t\t\t\tthis.getMaxHeight()\n\t\t\t\t\t? ` style=\"max-height: ${this.getMaxHeight()}px; -ms-overflow-style: -ms-autohiding-scrollbar;\"`\n\t\t\t\t\t: ''\n\t\t\t;\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div \n\t\t\t\t\tclass=\"ui-tag-selector-container\" \n\t\t\t\t\tonclick=\"${this.handleContainerClick.bind(this)}\"\n\t\t\t\t\t${style}\n\t\t\t\t>\n\t\t\t\t\t${this.getItemsContainer()}\n\t\t\t\t\t${this.getCreateButton()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetItemsContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('items-container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-items\">\n\t\t\t\t\t${this.getTextBox()}\n\t\t\t\t\t${this.getAddButton()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetTextBox(): HTMLInputElement\n\t{\n\t\treturn this.cache.remember('text-box', () => {\n\t\t\tconst className = this.textBoxVisible ? '' : ' ui-tag-selector-item-hidden';\n\t\t\tconst input = Tag.render`\n\t\t\t\t<input \n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"ui-tag-selector-item ui-tag-selector-text-box${className}\" \n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tplaceholder=\"${Text.encode(this.getPlaceholder())}\"\n\t\t\t\t\toninput=\"${this.handleTextBoxInput.bind(this)}\"\n\t\t\t\t\tonblur=\"${this.handleTextBoxBlur.bind(this)}\"\n\t\t\t\t\tonkeyup=\"${this.handleTextBoxKeyUp.bind(this)}\"\n\t\t\t\t\tonkeydown=\"${this.handleTextBoxKeyDown.bind(this)}\"\n\t\t\t\t\tvalue=\"\"\n\t\t\t\t>\n\t\t\t`;\n\n\t\t\tconst width = this.getTextBoxWidth();\n\t\t\tif (width !== null)\n\t\t\t{\n\t\t\t\tDom.style(input, 'width', Type.isStringFilled(width) ? width : `${width}px`);\n\t\t\t}\n\n\t\t\tif (this.isLocked())\n\t\t\t{\n\t\t\t\tinput.disabled = true;\n\t\t\t}\n\n\t\t\treturn input;\n\t\t});\n\t}\n\n\tgetItemsHeight(): number\n\t{\n\t\treturn this.getItemsContainer().scrollHeight;\n\t}\n\n\tcalcHeight(): number\n\t{\n\t\tif (this.getMaxHeight() !== null)\n\t\t{\n\t\t\treturn Math.min(this.getItemsHeight(), this.getMaxHeight());\n\t\t}\n\n\t\treturn Math.max(this.getItemsHeight(), this.getMinHeight());\n\t}\n\n\tgetTextBoxValue(): string\n\t{\n\t\treturn this.getTextBox().value;\n\t}\n\n\tclearTextBox(): void\n\t{\n\t\tthis.getTextBox().value = '';\n\t\tthis.textBoxOldValue = '';\n\t}\n\n\tshowTextBox(): void\n\t{\n\t\tthis.textBoxVisible = true;\n\t\tDom.removeClass(this.getTextBox(), 'ui-tag-selector-item-hidden');\n\t}\n\n\thideTextBox(): void\n\t{\n\t\tthis.textBoxVisible = false;\n\t\tDom.addClass(this.getTextBox(), 'ui-tag-selector-item-hidden');\n\t}\n\n\tfocusTextBox(): void\n\t{\n\t\tthis.getTextBox().focus();\n\t}\n\n\tsetTextBoxAutoHide(autoHide: boolean): void\n\t{\n\t\tif (Type.isBoolean(autoHide))\n\t\t{\n\t\t\tthis.textBoxAutoHide = autoHide;\n\t\t}\n\t}\n\n\tgetTextBoxWidth(): string | number | null\n\t{\n\t\treturn this.textBoxWidth;\n\t}\n\n\tsetTextBoxWidth(width: string | number | null): void\n\t{\n\t\tif (Type.isStringFilled(width) || width === null)\n\t\t{\n\t\t\tthis.textBoxWidth = width;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tDom.style(this.getTextBox(), 'width', width);\n\t\t\t}\n\t\t}\n\t\telse if (Type.isNumber(width) && width > 0)\n\t\t{\n\t\t\tthis.textBoxWidth = width;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tDom.style(this.getTextBox(), 'width', `${width}px`);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetTagMaxWidth(): ?number\n\t{\n\t\treturn this.tagMaxWidth;\n\t}\n\n\tsetTagMaxWidth(width: ?number): void\n\t{\n\t\tif ((Type.isNumber(width) && width >= 0) || width === null)\n\t\t{\n\t\t\tthis.tagMaxWidth = width;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tgetTagAvatar(): ?string\n\t{\n\t\treturn this.tagAvatar;\n\t}\n\n\tsetTagAvatar(tagAvatar: ?string): void\n\t{\n\t\tif (Type.isString(tagAvatar) || tagAvatar === null)\n\t\t{\n\t\t\tthis.tagAvatar = tagAvatar;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tgetTagAvatarOptions(): ?AvatarOptions\n\t{\n\t\treturn this.tagAvatarOptions;\n\t}\n\n\tgetTagAvatarOption(option: $Keys<AvatarOptions>): string | boolean | number | null\n\t{\n\t\tif (this.tagAvatarOptions !== null && !Type.isUndefined(this.tagAvatarOptions[option]))\n\t\t{\n\t\t\treturn this.tagAvatarOptions[option];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetTagAvatarOption(option: $Keys<AvatarOptions>, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tif (this.tagAvatarOptions === null)\n\t\t\t{\n\t\t\t\tthis.tagAvatarOptions = {};\n\t\t\t}\n\n\t\t\tthis.tagAvatarOptions[option] = value;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tsetTagAvatarOptions(options: AvatarOptions): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setTagAvatarOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetTagTextColor(): ?string\n\t{\n\t\treturn this.tagTextColor;\n\t}\n\n\tsetTagTextColor(textColor: ?string): void\n\t{\n\t\tif (Type.isString(textColor) || textColor === null)\n\t\t{\n\t\t\tthis.tagTextColor = textColor;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tgetTagBgColor(): ?string\n\t{\n\t\treturn this.tagBgColor;\n\t}\n\n\tsetTagBgColor(bgColor: ?string): void\n\t{\n\t\tif (Type.isString(bgColor) || bgColor === null)\n\t\t{\n\t\t\tthis.tagBgColor = bgColor;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tgetTagFontWeight(): ?string\n\t{\n\t\treturn this.tagFontWeight;\n\t}\n\n\tsetTagFontWeight(fontWeight: ?string): void\n\t{\n\t\tif (Type.isString(fontWeight) || fontWeight === null)\n\t\t{\n\t\t\tthis.tagFontWeight = fontWeight;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tgetPlaceholder(): string\n\t{\n\t\treturn this.placeholder;\n\t}\n\n\tsetPlaceholder(placeholder: string): void\n\t{\n\t\tif (Type.isStringFilled(placeholder))\n\t\t{\n\t\t\tthis.placeholder = placeholder;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getTextBox().placeholder = placeholder;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetMaxHeight(): ?number\n\t{\n\t\treturn this.maxHeight;\n\t}\n\n\tgetMinHeight(): number\n\t{\n\t\treturn 33;\n\t}\n\n\tsetMaxHeight(height: ?number): void\n\t{\n\t\tif ((Type.isNumber(height) && height > 0) || height === null)\n\t\t{\n\t\t\tthis.maxHeight = height;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tDom.style(this.getContainer(), 'max-height', height > 0 ? `${height}px` : null);\n\t\t\t\tDom.style(this.getContainer(), '-ms-overflow-style', height > 0 ? '-ms-autohiding-scrollbar' : null);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetAddButton(): HTMLElement\n\t{\n\t\treturn this.cache.remember('add-button', () => {\n\t\t\tconst className = this.addButtonVisible ? '' : ' ui-tag-selector-item-hidden';\n\n\t\t\treturn Tag.render`\n\t\t\t\t<span class=\"ui-tag-selector-item ui-tag-selector-add-button${className}\">\n\t\t\t\t\t${this.getAddButtonLink()}\n\t\t\t\t</span>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetAddButtonLink(): HTMLElement\n\t{\n\t\treturn this.cache.remember('add-button-link', () => {\n\t\t\tconst caption = Text.encode(this.getActualButtonCaption());\n\n\t\t\treturn Tag.render`\n\t\t\t\t<span \n\t\t\t\t\tclass=\"ui-tag-selector-add-button-caption\" \n\t\t\t\t\tonclick=\"${this.handleAddButtonClick.bind(this)}\">${caption}</span>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetAddButtonCaption(): string\n\t{\n\t\treturn (\n\t\t\tthis.addButtonCaption === null\n\t\t\t\t? Loc.getMessage('UI_TAG_SELECTOR_ADD_BUTTON_CAPTION')\n\t\t\t\t: this.addButtonCaption\n\t\t);\n\t}\n\n\tsetAddButtonCaption(caption: string): void\n\t{\n\t\tif (Type.isStringFilled(caption))\n\t\t{\n\t\t\tthis.addButtonCaption = caption;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.toggleAddButtonCaption();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetAddButtonCaptionMore(): ?string\n\t{\n\t\treturn (\n\t\t\tthis.addButtonCaptionMore === null\n\t\t\t\t? this.isMultiple()\n\t\t\t\t\t? Loc.getMessage('UI_TAG_SELECTOR_ADD_BUTTON_CAPTION')\n\t\t\t\t\t: Loc.getMessage('UI_TAG_SELECTOR_ADD_BUTTON_CAPTION_SINGLE')\n\t\t\t\t: this.addButtonCaptionMore\n\t\t);\n\t}\n\n\tsetAddButtonCaptionMore(caption: string): void\n\t{\n\t\tif (Type.isStringFilled(caption))\n\t\t{\n\t\t\tthis.addButtonCaptionMore = caption;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.toggleAddButtonCaption();\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleAddButtonCaption(): void\n\t{\n\t\tif (this.getAddButtonCaptionMore() === null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.getAddButtonLink().textContent = this.getActualButtonCaption();\n\t}\n\n\tgetActualButtonCaption(): string\n\t{\n\t\treturn (\n\t\t\tthis.getTags().length > 0 && this.getAddButtonCaptionMore() !== null\n\t\t\t\t? this.getAddButtonCaptionMore()\n\t\t\t\t: this.getAddButtonCaption()\n\t\t);\n\t}\n\n\tshowAddButton(): void\n\t{\n\t\tthis.addButtonVisible = true;\n\t\tDom.removeClass(this.getAddButton(), 'ui-tag-selector-item-hidden');\n\t}\n\n\thideAddButton(): void\n\t{\n\t\tthis.addButtonVisible = false;\n\t\tDom.addClass(this.getAddButton(), 'ui-tag-selector-item-hidden');\n\t}\n\n\tgetCreateButton(): HTMLElement\n\t{\n\t\treturn this.cache.remember('create-button', () => {\n\t\t\tconst className = this.createButtonVisible ? '' : ' ui-tag-selector-item-hidden';\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-create-button${className}\">\n\t\t\t\t\t<span \n\t\t\t\t\t\tclass=\"ui-tag-selector-create-button-caption\"\n\t\t\t\t\t\tonclick=\"${this.handleCreateButtonClick.bind(this)}\"\n\t\t\t\t\t>${Text.encode(this.getCreateButtonCaption())}</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tshowCreateButton(): void\n\t{\n\t\tthis.createButtonVisible = true;\n\t\tDom.removeClass(this.getCreateButton(), 'ui-tag-selector-item-hidden');\n\t}\n\n\thideCreateButton(): void\n\t{\n\t\tthis.createButtonVisible = false;\n\t\tDom.addClass(this.getCreateButton(), 'ui-tag-selector-item-hidden');\n\t}\n\n\tgetCreateButtonCaption(): string\n\t{\n\t\treturn (\n\t\t\tthis.createButtonCaption === null\n\t\t\t\t? Loc.getMessage('UI_TAG_SELECTOR_CREATE_BUTTON_CAPTION')\n\t\t\t\t: this.createButtonCaption\n\t\t);\n\t}\n\n\tsetCreateButtonCaption(caption: string): void\n\t{\n\t\tif (Type.isStringFilled(caption))\n\t\t{\n\t\t\tthis.createButtonCaption = caption;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getCreateButton().children[0].textContent = caption;\n\t\t\t}\n\t\t}\n\t}\n\n\thandleContainerClick(event: MouseEvent): void\n\t{\n\t\tthis.emit('onContainerClick', { event });\n\t}\n\n\thandleTextBoxInput(event: InputEvent): void\n\t{\n\t\tconst newValue = this.getTextBoxValue();\n\t\tif (newValue !== this.textBoxOldValue)\n\t\t{\n\t\t\tthis.textBoxOldValue = newValue;\n\t\t\tthis.emit('onInput', { event });\n\t\t}\n\t}\n\n\thandleTextBoxBlur(event: FocusEvent): void\n\t{\n\t\tthis.emit('onBlur', { event });\n\n\t\tif (this.textBoxAutoHide)\n\t\t{\n\t\t\tthis.clearTextBox();\n\t\t\tthis.showAddButton();\n\t\t\tthis.hideTextBox();\n\t\t}\n\t}\n\n\thandleTextBoxKeyUp(event: KeyboardEvent): void\n\t{\n\t\tthis.emit('onKeyUp', { event });\n\n\t\tif (event.key === 'Enter')\n\t\t{\n\t\t\tthis.emit('onEnter', { event });\n\n\t\t\tif (this.textBoxAutoHide)\n\t\t\t{\n\t\t\t\tthis.clearTextBox();\n\t\t\t\tthis.showAddButton();\n\t\t\t\tthis.hideTextBox();\n\t\t\t}\n\t\t}\n\t}\n\n\thandleTextBoxKeyDown(event: KeyboardEvent): void\n\t{\n\t\tif (event.key === 'Enter')\n\t\t{\n\t\t\t// prevent a form submit\n\t\t\tevent.preventDefault();\n\n\t\t\tif ((Browser.isMac() && event.metaKey) || event.ctrlKey)\n\t\t\t{\n\t\t\t\tthis.emit('onMetaEnter', { event });\n\t\t\t}\n\t\t}\n\n\t\tthis.emit('onKeyDown', { event });\n\t}\n\n\thandleAddButtonClick(event: MouseEvent): void\n\t{\n\t\tthis.hideAddButton();\n\t\tthis.showTextBox();\n\t\tthis.focusTextBox();\n\n\t\tthis.emit('onAddButtonClick', { event });\n\t}\n\n\thandleCreateButtonClick(event: MouseEvent): void\n\t{\n\t\tthis.emit('onCreateButtonClick', { event });\n\t}\n}","import { Event } from 'main.core';\nimport type ItemNode from '../item/item-node';\nimport type Tab from './tabs/tab';\nimport type Dialog from './dialog';\n\nexport default class Navigation\n{\n\tdialog: Dialog = null;\n\tlockedTab: Tab = null;\n\tenabled: boolean = false;\n\n\t// IE/Edge compatible event names\n\tstatic keyMap: Object<string, string> = {\n\t\t'Down': 'ArrowDown',\n\t\t'Up': 'ArrowUp',\n\t\t'Left': 'ArrowLeft',\n\t\t'Right': 'ArrowRight',\n\t\t'Spacebar': 'Space',\n\t\t' ': 'Space' // For all browsers\n\t};\n\n\tconstructor(dialog: Dialog)\n\t{\n\t\tthis.dialog = dialog;\n\n\t\tthis.dialog.subscribe('onShow', this.handleDialogShow.bind(this));\n\t\tthis.dialog.subscribe('onHide', this.handleDialogHide.bind(this));\n\t\tthis.dialog.subscribe('onDestroy', this.handleDialogDestroy.bind(this));\n\n\t\tthis.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n\t\tthis.handleDocumentMouseMove = this.handleDocumentMouseMove.bind(this);\n\t}\n\n\tgetDialog(): Dialog\n\t{\n\t\treturn this.dialog;\n\t}\n\n\tenable(): void\n\t{\n\t\tif (!this.isEnabled())\n\t\t{\n\t\t\tthis.bindEvents();\n\t\t}\n\n\t\tthis.enabled = true;\n\t}\n\n\tdisable(): void\n\t{\n\t\tif (this.isEnabled())\n\t\t{\n\t\t\tthis.unbindEvents();\n\t\t\tthis.unlockTab();\n\t\t}\n\n\t\tthis.enabled = false;\n\t}\n\n\tisEnabled(): boolean\n\t{\n\t\treturn this.enabled;\n\t}\n\n\tbindEvents(): void\n\t{\n\t\tEvent.bind(document, 'keydown', this.handleDocumentKeyDown);\n\t}\n\n\tunbindEvents(): void\n\t{\n\t\tEvent.unbind(document, 'keydown', this.handleDocumentKeyDown);\n\t}\n\n\tgetNextNode(): ?ItemNode\n\t{\n\t\tif (!this.getActiveNode())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tlet nextNode = null;\n\t\tlet currentNode = this.getActiveNode();\n\n\t\tif (currentNode.hasChildren() && currentNode.isOpen())\n\t\t{\n\t\t\tnextNode = currentNode.getFirstChild();\n\t\t}\n\n\t\twhile (nextNode === null && currentNode !== null)\n\t\t{\n\t\t\tnextNode = currentNode.getNextSibling();\n\t\t\tif (nextNode)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcurrentNode = currentNode.getParentNode();\n\t\t}\n\n\t\treturn nextNode;\n\t}\n\n\tgetPreviousNode(): ?ItemNode\n\t{\n\t\tif (!this.getActiveNode())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tlet previousNode = this.getActiveNode().getPreviousSibling();\n\t\tif (previousNode)\n\t\t{\n\t\t\twhile (previousNode.hasChildren() && previousNode.isOpen())\n\t\t\t{\n\t\t\t\tconst lastChild = previousNode.getLastChild();\n\t\t\t\tif (lastChild === null)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tpreviousNode = lastChild;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.getActiveNode().getParentNode() && !this.getActiveNode().getParentNode().isRoot())\n\t\t\t{\n\t\t\t\tpreviousNode = this.getActiveNode().getParentNode();\n\t\t\t}\n\t\t}\n\n\t\treturn previousNode;\n\t}\n\n\tgetFirstNode(): ?ItemNode\n\t{\n\t\tconst tab = this.getDialog().getActiveTab();\n\t\treturn tab && tab.getRootNode().getFirstChild();\n\t}\n\n\tgetLastNode(): ?ItemNode\n\t{\n\t\tconst tab = this.getDialog().getActiveTab();\n\t\tif (!tab)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tlet lastNode = tab.getRootNode().getLastChild();\n\t\tif (lastNode !== null)\n\t\t{\n\t\t\twhile (lastNode.hasChildren() && lastNode.isOpen())\n\t\t\t{\n\t\t\t\tconst lastChild = lastNode.getLastChild();\n\t\t\t\tif (lastChild === null)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlastNode = lastChild;\n\t\t\t}\n\t\t}\n\n\t\treturn lastNode;\n\t}\n\n\tgetActiveNode(): ?ItemNode\n\t{\n\t\treturn this.getDialog().getFocusedNode();\n\t}\n\n\tfocusOnNode(node: ItemNode): void\n\t{\n\t\tif (node)\n\t\t{\n\t\t\tnode.focus();\n\t\t\tnode.scrollIntoView();\n\t\t}\n\t}\n\n\tlockTab(): void\n\t{\n\t\tconst activeTab = this.getDialog().getActiveTab();\n\t\tif (this.lockedTab === activeTab)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\telse if (this.lockedTab !== null)\n\t\t{\n\t\t\tthis.unlockTab();\n\t\t}\n\n\t\tthis.lockedTab = activeTab;\n\t\tthis.lockedTab.lock();\n\n\t\tEvent.bind(document, 'mousemove', this.handleDocumentMouseMove);\n\t}\n\n\tunlockTab(): void\n\t{\n\t\tif (this.lockedTab === null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.lockedTab.unlock();\n\t\tthis.lockedTab = null;\n\n\t\tEvent.unbind(document, 'mousemove', this.handleDocumentMouseMove);\n\t}\n\n\thandleDialogShow(): void\n\t{\n\t\tthis.enable();\n\t}\n\n\thandleDialogHide(): void\n\t{\n\t\tthis.disable();\n\t}\n\n\thandleDialogDestroy(): void\n\t{\n\t\tthis.disable();\n\t}\n\n\thandleDocumentMouseMove(): void\n\t{\n\t\tthis.unlockTab();\n\t}\n\n\thandleDocumentKeyDown(event: KeyboardEvent): void\n\t{\n\t\tif (!this.getDialog().isOpen())\n\t\t{\n\t\t\tthis.unbindEvents();\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.metaKey || event.ctrlKey || event.altKey)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst activeTab = this.getDialog().getActiveTab();\n\t\tif (!activeTab)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst keyName = this.constructor.keyMap[event.key] || event.key;\n\t\tif (activeTab === this.getDialog().getSearchTab() && ['ArrowLeft', 'ArrowRight'].includes(keyName))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst handler: ?Function = this[`handle${keyName}Press`];\n\t\tif (handler)\n\t\t{\n\t\t\thandler.call(this, event);\n\t\t\tthis.lockTab(activeTab);\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\thandleArrowDownPress(): void\n\t{\n\t\tif (!this.getActiveNode())\n\t\t{\n\t\t\tconst firstNode = this.getFirstNode();\n\t\t\tthis.focusOnNode(firstNode);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst nextNode = this.getNextNode();\n\t\t\tif (nextNode)\n\t\t\t{\n\t\t\t\tthis.focusOnNode(nextNode);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst firstNode = this.getFirstNode();\n\t\t\t\tthis.focusOnNode(firstNode);\n\t\t\t}\n\t\t}\n\t}\n\n\thandleArrowUpPress(): void\n\t{\n\t\tif (!this.getActiveNode())\n\t\t{\n\t\t\tconst lastNode = this.getLastNode();\n\t\t\tthis.focusOnNode(lastNode);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst previousNode = this.getPreviousNode();\n\t\t\tif (previousNode)\n\t\t\t{\n\t\t\t\tthis.focusOnNode(previousNode);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst lastNode = this.getLastNode();\n\t\t\t\tthis.focusOnNode(lastNode);\n\t\t\t}\n\t\t}\n\t}\n\n\thandleArrowRightPress(): void\n\t{\n\t\tif (this.getActiveNode())\n\t\t{\n\t\t\tthis.getActiveNode().expand();\n\t\t}\n\t}\n\n\thandleArrowLeftPress(): void\n\t{\n\t\tif (!this.getActiveNode())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.getActiveNode().isOpen())\n\t\t{\n\t\t\tthis.getActiveNode().collapse();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst parentNode = this.getActiveNode().getParentNode();\n\t\t\tif (parentNode && !parentNode.isRoot())\n\t\t\t{\n\t\t\t\tthis.focusOnNode(parentNode);\n\t\t\t}\n\t\t}\n\t}\n\n\thandleEnterPress(): void\n\t{\n\t\tif (this.getActiveNode())\n\t\t{\n\t\t\tthis.getActiveNode().click();\n\t\t}\n\t}\n\n\t/*handleSpacePress(event: KeyboardEvent): void\n\t{\n\t\tconst searchQuery = this.getDialog().getTagSelector() && this.getDialog().getTagSelector().getTextBoxValue();\n\t\tif (this.getActiveNode() && !Type.isStringFilled(searchQuery))\n\t\t{\n\t\t\tthis.getActiveNode().click();\n\t\t\tevent.preventDefault();\n\t\t}\n\t}*/\n\n\thandleTabPress(event: KeyboardEvent): void\n\t{\n\t\tconst activeTab = this.getDialog().getActiveTab();\n\t\tif (!activeTab)\n\t\t{\n\t\t\tthis.getDialog().selectFirstTab();\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.shiftKey)\n\t\t{\n\t\t\tconst previousTab = this.getDialog().getPreviousTab();\n\t\t\tif (previousTab)\n\t\t\t{\n\t\t\t\tthis.getDialog().selectTab(previousTab.getId());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getDialog().selectLastTab();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst nextTab = this.getDialog().getNextTab();\n\t\t\tif (nextTab)\n\t\t\t{\n\t\t\t\tthis.getDialog().selectTab(nextTab.getId());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getDialog().selectFirstTab();\n\t\t\t}\n\t\t}\n\t}\n}","import type { BaseEvent } from 'main.core.events';\nimport type Dialog from '../dialog';\n\nexport default class SliderIntegration\n{\n\tdialog: Dialog = null;\n\tsliders: Set = new Set();\n\n\tconstructor(dialog: Dialog)\n\t{\n\t\tthis.dialog = dialog;\n\n\t\tthis.dialog.subscribe('onShow', this.handleDialogShow.bind(this));\n\t\tthis.dialog.subscribe('onHide', this.handleDialogHide.bind(this));\n\t\tthis.dialog.subscribe('onDestroy', this.handleDialogDestroy.bind(this));\n\n\t\tthis.handleSliderOpen = this.handleSliderOpen.bind(this);\n\t\tthis.handleSliderClose = this.handleSliderClose.bind(this);\n\t\tthis.handleSliderDestroy = this.handleSliderDestroy.bind(this);\n\t}\n\n\tgetDialog(): Dialog\n\t{\n\t\treturn this.dialog;\n\t}\n\n\tbindEvents(): void\n\t{\n\t\tthis.unbindEvents();\n\n\t\tif (top.BX)\n\t\t{\n\t\t\ttop.BX.Event.EventEmitter.subscribe('SidePanel.Slider:onOpen', this.handleSliderOpen);\n\t\t\ttop.BX.Event.EventEmitter.subscribe('SidePanel.Slider:onCloseComplete', this.handleSliderClose);\n\t\t\ttop.BX.Event.EventEmitter.subscribe('SidePanel.Slider:onDestroy', this.handleSliderDestroy);\n\t\t}\n\t}\n\n\tunbindEvents(): void\n\t{\n\t\tif (top.BX)\n\t\t{\n\t\t\ttop.BX.Event.EventEmitter.unsubscribe('SidePanel.Slider:onOpen', this.handleSliderOpen);\n\t\t\ttop.BX.Event.EventEmitter.unsubscribe('SidePanel.Slider:onCloseComplete', this.handleSliderClose);\n\t\t\ttop.BX.Event.EventEmitter.unsubscribe('SidePanel.Slider:onDestroy', this.handleSliderDestroy);\n\t\t}\n\t}\n\n\tisDialogInSlider(slider): boolean\n\t{\n\t\tif (slider.getFrameWindow())\n\t\t{\n\t\t\treturn slider.getFrameWindow().document.contains(this.getDialog().getContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn slider.getContainer().contains(this.getDialog().getContainer());\n\t\t}\n\t}\n\n\thandleDialogShow(): void\n\t{\n\t\tthis.bindEvents();\n\t}\n\n\thandleDialogHide(): void\n\t{\n\t\tthis.sliders.clear();\n\t\tthis.unbindEvents();\n\t\tthis.getDialog().unfreeze();\n\t}\n\n\thandleDialogDestroy(): void\n\t{\n\t\tthis.sliders.clear();\n\t\tthis.unbindEvents();\n\t\tthis.getDialog().unfreeze();\n\t}\n\n\thandleSliderOpen(event: BaseEvent): void\n\t{\n\t\tconst [sliderEvent] = event.getData();\n\t\tconst slider = sliderEvent.getSlider();\n\n\t\tif (!this.isDialogInSlider(slider))\n\t\t{\n\t\t\tthis.sliders.add(slider);\n\t\t\tthis.getDialog().freeze();\n\t\t}\n\t}\n\n\thandleSliderClose(event: BaseEvent): void\n\t{\n\t\tconst [sliderEvent] = event.getData();\n\t\tconst slider = sliderEvent.getSlider();\n\n\t\tthis.sliders.delete(slider);\n\t\tif (this.sliders.size === 0)\n\t\t{\n\t\t\tthis.getDialog().unfreeze();\n\t\t}\n\t}\n\n\thandleSliderDestroy(event: BaseEvent): void\n\t{\n\t\tconst [sliderEvent] = event.getData();\n\t\tconst slider = sliderEvent.getSlider();\n\n\t\tif (this.isDialogInSlider(slider))\n\t\t{\n\t\t\tthis.unbindEvents();\n\t\t\tthis.dialog.destroy();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.sliders.delete(slider);\n\t\t\tif (this.sliders.size === 0)\n\t\t\t{\n\t\t\t\tthis.getDialog().unfreeze();\n\t\t\t}\n\t\t}\n\t}\n}","import { Dom, Tag, Type } from 'main.core';\nimport BaseFooter from './base-footer';\nimport type Dialog from '../dialog';\nimport type Tab from '../tabs/tab';\nimport type { FooterOptions } from './footer-content';\n\nexport default class DefaultFooter extends BaseFooter\n{\n\tcontent: HTMLElement = null;\n\n\tconstructor(context: Dialog | Tab, options: FooterOptions)\n\t{\n\t\tsuper(context, options);\n\n\t\tthis.setContent(this.getOption('content'));\n\t}\n\n\trender()\n\t{\n\t\tconst container = Tag.render`\n\t\t\t<div>\n\t\t\t\t${this.getContent() ? this.getContent() : '' }\n\t\t\t</div>\n\t\t`;\n\n\t\tconst className = this.getOption('containerClass', 'ui-selector-footer-default');\n\t\tconst containerStyles = this.getOption('containerStyles', {});\n\n\t\tDom.addClass(container, className);\n\t\tDom.style(container, containerStyles);\n\n\t\treturn container;\n\t}\n\n\tgetContent(): HTMLElement | HTMLElement[] | string | null\n\t{\n\t\treturn this.content;\n\t}\n\n\tsetContent(content: string | HTMLElement | HTMLElement[])\n\t{\n\t\tif (Type.isStringFilled(content) || Type.isDomNode(content) || Type.isArrayFilled(content))\n\t\t{\n\t\t\tthis.content = content;\n\t\t}\n\t}\n}","import { Loc } from 'main.core';\nimport Tab from './tab';\nimport type { TabOptions } from './tab-options';\nimport type Dialog from '../dialog';\n\nexport default class RecentTab extends Tab\n{\n\tconstructor(dialog: Dialog, tabOptions: TabOptions)\n\t{\n\t\tconst icon =\n\t\t\t'data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2223%22%20height%3D%2223%22%20fill%3D%' +\n\t\t\t'22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M14.432%2013.985a.96.' +\n\t\t\t'96%200%2000-.96-.96H8.505a.96.96%200%20000%201.92h4.967c.53%200%20.96-.43.96-.96zM14.432%2011.' +\n\t\t\t'009a.96.96%200%2000-.96-.96H8.505a.96.96%200%20000%201.92h4.967c.53%200%20.96-.43.96-.96zM14.' +\n\t\t\t'432%208.033a.96.96%200%2000-.96-.96H8.505a.96.96%200%20000%201.92h4.967c.53%200%20.96-.43.96-.' +\n\t\t\t'96z%22%20fill%3D%22%23ABB1B8%22/%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd' +\n\t\t\t'%22%20d%3D%22M10.988%2019.52c1.8%200%203.469-.558%204.844-1.51l2.205%202.204a1.525%201.525%200%20' +\n\t\t\t'102.157-2.157l-2.205-2.205a8.512%208.512%200%2010-7%203.668zm0-2.403a6.108%206.108%200%20100-12.2' +\n\t\t\t'16%206.108%206.108%200%20000%2012.216z%22%20fill%3D%22%23ABB1B8%22/%3E%3C/svg%3E'\n\t\t;\n\n\t\tconst defaults = {\n\t\t\ttitle: Loc.getMessage('UI_SELECTOR_RECENT_TAB_TITLE'),\n\t\t\titemOrder: { sort: 'asc' },\n\t\t\tvisible: !dialog.isDropdownMode(),\n\t\t\tstub: !dialog.isDropdownMode(),\n\t\t\ticon: {\n\t\t\t\t//default: '/bitrix/js/ui/entity-selector/src/css/images/recent-tab-icon.svg',\n\t\t\t\t//selected: '/bitrix/js/ui/entity-selector/src/css/images/recent-tab-icon-selected.svg'\n\t\t\t\tdefault: icon,\n\t\t\t\tselected: icon.replace(/ABB1B8/g, 'fff'),\n\t\t\t}\n\t\t};\n\n\t\tconst options: TabOptions = Object.assign({}, defaults, tabOptions);\n\t\toptions.id = 'recents';\n\n\t\tsuper(dialog, options);\n\t}\n}","import MatchField from './match-field';\n\nimport type MatchIndex from './match-index';\nimport type SearchField from './search-field';\nimport type Item from '../item/item';\n\nexport default class MatchResult\n{\n\titem: Item = null;\n\tqueryWords: string[] = null;\n\tmatchFields: Map<SearchField, MatchField> = new Map();\n\tsort: ?number = null;\n\n\tconstructor(item: Item, queryWords: string[], matchIndexes: MatchIndex[] = [])\n\t{\n\t\tthis.item = item;\n\t\tthis.queryWords = queryWords;\n\t\tthis.addIndexes(matchIndexes);\n\t}\n\n\tgetItem(): Item\n\t{\n\t\treturn this.item;\n\t}\n\n\tgetQueryWords(): string[]\n\t{\n\t\treturn this.queryWords;\n\t}\n\n\tgetMatchFields(): Map<SearchField, MatchField>\n\t{\n\t\treturn this.matchFields;\n\t}\n\n\tgetSort(): ?number\n\t{\n\t\treturn this.sort;\n\t}\n\n\taddIndex(matchIndex: MatchIndex): void\n\t{\n\t\tlet matchField = this.matchFields.get(matchIndex.getField());\n\t\tif (!matchField)\n\t\t{\n\t\t\tmatchField = new MatchField(matchIndex.getField());\n\t\t\tthis.matchFields.set(matchIndex.getField(), matchField);\n\n\t\t\tconst fieldSort = matchIndex.getField().getSort();\n\t\t\tif (fieldSort !== null)\n\t\t\t{\n\t\t\t\tthis.sort = this.sort === null ? fieldSort : Math.min(this.sort, fieldSort);\n\t\t\t}\n\t\t}\n\n\t\tmatchField.addIndex(matchIndex);\n\t}\n\n\taddIndexes(matchIndexes: MatchIndex[]): void\n\t{\n\t\tmatchIndexes.forEach(matchIndex => {\n\t\t\tthis.addIndex(matchIndex);\n\t\t});\n\t}\n}","import MatchResult from './match-result';\nimport MatchIndex from './match-index';\n\nimport type SearchFieldIndex from './search-field-index';\nimport type Item from '../item/item';\nimport type SearchQuery from './search-query';\n\nconst collator = new Intl.Collator(undefined, { sensitivity: 'base' });\n\nexport default class SearchEngine\n{\n\tstatic matchItems(items: Item[], searchQuery: SearchQuery): MatchResult[]\n\t{\n\t\tconst matchResults = [];\n\t\tconst queryWords = searchQuery.getQueryWords();\n\t\tlet limit = searchQuery.getResultLimit();\n\n\t\tfor (let i = 0; i < items.length; i++)\n\t\t{\n\t\t\tif (limit === 0)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst item = items[i];\n\t\t\tif (item.isSelected() || !item.isSearchable() || item.isHidden() || !item.getEntity().isSearchable())\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst matchResult = this.matchItem(item, queryWords);\n\t\t\tif (matchResult)\n\t\t\t{\n\t\t\t\tmatchResults.push(matchResult);\n\t\t\t\tlimit--;\n\t\t\t}\n\t\t}\n\n\t\treturn matchResults;\n\t}\n\n\tstatic matchItem(item: Item, queryWords: string[]): MatchResult\n\t{\n\t\tlet matches = [];\n\t\tfor (let i = 0; i < queryWords.length; i++)\n\t\t{\n\t\t\tconst queryWord = queryWords[i];\n\t\t\tconst results = this.matchWord(item, queryWord);\n\t\t\t//const match = this.matchWord(item, queryWord);\n\t\t\t//if (match === null)\n\t\t\tif (results.length === 0)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmatches = matches.concat(results);\n\t\t\t\t//matches.push(match);\n\t\t\t}\n\t\t}\n\n\t\tif (matches.length > 0)\n\t\t{\n\t\t\treturn new MatchResult(item, queryWords, matches);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tstatic matchWord(item: Item, queryWord: string): MatchIndex[]\n\t{\n\t\tconst searchIndexes = item.getSearchIndex().getIndexes();\n\t\tconst matches = [];\n\n\t\tfor (let i = 0; i < searchIndexes.length; i++)\n\t\t{\n\t\t\tconst fieldIndex: SearchFieldIndex = searchIndexes[i];\n\t\t\tconst indexes = fieldIndex.getIndexes();\n\t\t\tfor (let j = 0; j < indexes.length; j++)\n\t\t\t{\n\t\t\t\tconst index = indexes[j];\n\t\t\t\tconst word = index.getWord().substring(0, queryWord.length);\n\t\t\t\tif (collator.compare(queryWord, word) === 0)\n\t\t\t\t{\n\t\t\t\t\tmatches.push(new MatchIndex(fieldIndex.getField(), queryWord, index.getStartIndex()));\n\t\t\t\t\t//return new MatchIndex(field, queryWord, index[i][1]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (matches.length > 0)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\n\t\treturn matches;\n\t\t//return null;\n\t}\n}","import { Type } from 'main.core';\n\nexport default class SearchQuery\n{\n\tqueryWords: string[] = [];\n\tquery: string = '';\n\tcacheable: boolean = true;\n\tdynamicSearchEntities: string[] = [];\n\tresultLimit: number = 100;\n\n\tconstructor(query: string)\n\t{\n\t\tthis.query = query.trim().replace(/\\s\\s+/g, ' ');\n\t\tthis.queryWords = Type.isStringFilled(this.query) ? this.query.split(' ') : [];\n\t}\n\n\tgetQueryWords(): string[]\n\t{\n\t\treturn this.queryWords;\n\t}\n\n\tgetQuery(): string\n\t{\n\t\treturn this.query;\n\t}\n\n\tisEmpty(): boolean\n\t{\n\t\treturn this.getQueryWords().length === 0;\n\t}\n\n\tsetCacheable(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.cacheable = flag;\n\t\t}\n\t}\n\n\tisCacheable(): boolean\n\t{\n\t\treturn this.cacheable;\n\t}\n\n\tsetResultLimit(limit: number)\n\t{\n\t\tif (Type.isNumber(limit) && limit >= 0)\n\t\t{\n\t\t\tthis.resultLimit = limit;\n\t\t}\n\t}\n\n\tgetResultLimit(): number\n\t{\n\t\treturn this.resultLimit;\n\t}\n\n\thasDynamicSearch(): boolean\n\t{\n\t\treturn this.getDynamicSearchEntities().length > 0;\n\t}\n\n\thasDynamicSearchEntity(entityId: string): boolean\n\t{\n\t\treturn this.getDynamicSearchEntities().includes(entityId);\n\t}\n\n\tsetDynamicSearchEntities(entities: string[]): void\n\t{\n\t\tif (Type.isArrayFilled(entities))\n\t\t{\n\t\t\tentities.forEach((entityId: string) => {\n\t\t\t\tif (Type.isStringFilled(entityId) && !this.hasDynamicSearchEntity(entityId))\n\t\t\t\t{\n\t\t\t\t\tthis.dynamicSearchEntities.push(entityId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn this.dynamicSearchEntities;\n\t}\n\n\tgetDynamicSearchEntities(): string[]\n\t{\n\t\treturn this.dynamicSearchEntities;\n\t}\n\n\tgetAjaxJson(): { [key: string]: any }\n\t{\n\t\treturn this.toJSON();\n\t}\n\n\ttoJSON(): { [key: string]: any }\n\t{\n\t\treturn {\n\t\t\tqueryWords: this.getQueryWords(),\n\t\t\tquery: this.getQuery(),\n\t\t\tdynamicSearchEntities: this.getDynamicSearchEntities(),\n\t\t};\n\t}\n}","import { Cache, Tag, Loc, Dom } from 'main.core';\nimport { Loader } from 'main.loader';\nimport type Tab from './tab';\n\nexport default class SearchLoader\n{\n\ttab: Tab = null;\n\tloader: Loader = null;\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(tab: Tab)\n\t{\n\t\tthis.tab = tab;\n\t}\n\n\tgetTab(): Tab\n\t{\n\t\treturn this.tab;\n\t}\n\n\tgetLoader(): Loader\n\t{\n\t\tif (this.loader === null)\n\t\t{\n\t\t\tthis.loader = new Loader({\n\t\t\t\ttarget: this.getIconContainer(),\n\t\t\t\tsize: 32\n\t\t\t});\n\t\t}\n\n\t\treturn this.loader;\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-search-loader\">\n\t\t\t\t\t${this.getBoxContainer()}\n\t\t\t\t\t${this.getSpacerContainer()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetBoxContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('box-container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-search-loader-box\">\n\t\t\t\t\t${this.getIconContainer()}\n\t\t\t\t\t${this.getTextContainer()}\n\t\t\t\t</div>`;\n\t\t});\n\t}\n\n\tgetIconContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('icon', () => {\n\t\t\treturn Tag.render`<div class=\"ui-selector-search-loader-icon\"></div>`;\n\t\t});\n\t}\n\n\tgetTextContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('text', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-search-loader-text\">${\n\t\t\t\t\tLoc.getMessage('UI_SELECTOR_SEARCH_LOADER_TEXT')\n\t\t\t\t}</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetSpacerContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('spacer', () => {\n\t\t\treturn Tag.render`<div class=\"ui-selector-search-loader-spacer\"></div>`;\n\t\t});\n\t}\n\n\tshow(): void\n\t{\n\t\tif (!this.getContainer().parentNode)\n\t\t{\n\t\t\tDom.append(this.getContainer(), this.getTab().getContainer());\n\t\t}\n\n\t\tvoid this.getLoader().show();\n\n\t\tDom.addClass(this.getContainer(), 'ui-selector-search-loader--show');\n\t\trequestAnimationFrame(() => {\n\t\t\tDom.addClass(this.getContainer(), 'ui-selector-search-loader--animate');\n\t\t});\n\t}\n\n\thide(): void\n\t{\n\t\tif (this.loader === null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.removeClass(\n\t\t\tthis.getContainer(),\n\t\t\t['ui-selector-search-loader--show', 'ui-selector-search-loader--animate']\n\t\t);\n\n\t\tvoid this.getLoader().hide();\n\t}\n\n\tisShown(): boolean\n\t{\n\t\treturn this.loader !== null && this.loader.isShown();\n\t}\n}","import { Tag, Browser, Loc, Type } from 'main.core';\nimport { Loader } from 'main.loader';\nimport BaseFooter from '../footer/base-footer';\n\nimport type { BaseEvent } from 'main.core.events';\nimport type Tab from '../tabs/tab';\nimport type { FooterOptions } from './footer-content';\n\nexport default class SearchTabFooter extends BaseFooter\n{\n\tloader: Loader = null;\n\n\tconstructor(tab: Tab, options: FooterOptions)\n\t{\n\t\tsuper(tab, options);\n\n\t\tthis.getDialog().subscribe('onSearch', this.handleOnSearch.bind(this));\n\t\tconst tagSelector = this.getDialog().getTagSelector();\n\t\tif (tagSelector)\n\t\t{\n\t\t\ttagSelector.subscribe('onMetaEnter', this.handleMetaEnter.bind(this));\n\t\t}\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"ui-selector-search-footer\" onclick=\"${this.handleClick.bind(this)}\">\n\t\t\t\t<div class=\"ui-selector-search-footer-box\">\n\t\t\t\t\t${this.getLabelContainer()}\n\t\t\t\t\t${this.getQueryContainer()}\n\t\t\t\t\t${this.getLoaderContainer()}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"ui-selector-search-footer-cmd\">${\n\t\t\t\t\tBrowser.isMac() ? '⌘+Enter' : 'Ctrl+Enter'\n\t\t\t\t}</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\tgetLoader(): Loader\n\t{\n\t\tif (this.loader === null)\n\t\t{\n\t\t\tthis.loader = new Loader({\n\t\t\t\ttarget: this.getLoaderContainer(),\n\t\t\t\tsize: 17,\n\t\t\t\tcolor: 'rgba(82, 92, 105, 0.9)'\n\t\t\t});\n\t\t}\n\n\t\treturn this.loader;\n\t}\n\n\tshowLoader(): void\n\t{\n\t\tvoid this.getLoader().show();\n\t}\n\n\thideLoader(): void\n\t{\n\t\tvoid this.getLoader().hide();\n\t}\n\n\tsetLabel(label: string)\n\t{\n\t\tif (Type.isString(label))\n\t\t{\n\t\t\tthis.getLabelContainer().textContent = label;\n\t\t}\n\t}\n\n\tgetLabelContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('label', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<span class=\"ui-selector-search-footer-label\">${\n\t\t\t\t\tthis.getOption('label', Loc.getMessage('UI_SELECTOR_CREATE_ITEM_LABEL'))\n\t\t\t}</span>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetQueryContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('name-container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<span class=\"ui-selector-search-footer-query\"></span>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetLoaderContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('loader', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-search-footer-loader\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tcreateItem(): void\n\t{\n\t\tconst tagSelector = this.getDialog().getTagSelector();\n\t\tif (tagSelector && tagSelector.isLocked())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst finalize = () => {\n\t\t\tthis.hideLoader();\n\t\t\tif (this.getDialog().getTagSelector())\n\t\t\t{\n\t\t\t\tthis.getDialog().getTagSelector().unlock();\n\t\t\t\tthis.getDialog().focusSearch();\n\t\t\t}\n\t\t};\n\n\t\tevent.preventDefault();\n\t\tthis.showLoader();\n\n\t\tif (tagSelector)\n\t\t{\n\t\t\ttagSelector.lock();\n\t\t}\n\n\t\tthis.getDialog()\n\t\t\t.emitAsync('Search:onItemCreateAsync', {\n\t\t\t\tsearchQuery: this.getTab().getLastSearchQuery()\n\t\t\t})\n\t\t\t.then(() => {\n\t\t\t\tthis.getTab().clearResults();\n\t\t\t\tthis.getDialog().clearSearch();\n\t\t\t\tif (this.getDialog().getActiveTab() === this.getTab())\n\t\t\t\t{\n\t\t\t\t\tthis.getDialog().selectFirstTab();\n\t\t\t\t}\n\n\t\t\t\tfinalize();\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tfinalize();\n\t\t\t})\n\t\t;\n\t}\n\n\thandleClick(): void\n\t{\n\t\tthis.createItem();\n\t}\n\n\thandleMetaEnter(event: BaseEvent): void\n\t{\n\t\tif (this.getDialog().getActiveTab() !== this.getTab())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.handleClick();\n\t}\n\n\thandleOnSearch(event: BaseEvent): void\n\t{\n\t\tconst { query } = event.getData();\n\t\tthis.getQueryContainer().textContent = query;\n\t}\n}","import { Runtime, ajax as Ajax, Type, Loc } from 'main.core';\n\nimport Tab from './tab';\nimport SearchEngine from '../../search/search-engine';\nimport MatchResult from '../../search/match-result';\nimport SearchQuery from '../../search/search-query';\nimport SearchLoader from './search-loader';\nimport SearchTabFooter from '../footer/search-tab-footer';\n\nimport type { ItemOptions } from '../../item/item-options';\nimport type { TabOptions } from './tab-options';\nimport type Entity from '../../entity/entity';\nimport type Dialog from '../dialog';\nimport type { SearchOptions } from '../search-options';\n\nexport default class SearchTab extends Tab\n{\n\tlastSearchQuery: ?SearchQuery = null;\n\tqueryCache = new Set();\n\tqueryXhr = null;\n\tsearchLoader: SearchLoader = new SearchLoader(this);\n\tallowCreateItem: boolean = false;\n\n\tconstructor(dialog: Dialog, tabOptions: TabOptions, searchOptions: SearchOptions)\n\t{\n\t\tconst defaults = {\n\t\t\ttitle: Loc.getMessage('UI_SELECTOR_SEARCH_TAB_TITLE'),\n\t\t\tvisible: false,\n\t\t\tstub: true,\n\t\t\tstubOptions: {\n\t\t\t\tautoShow: false,\n\t\t\t\ttitle: Loc.getMessage('UI_SELECTOR_SEARCH_STUB_TITLE'),\n\t\t\t\tsubtitle: Loc.getMessage('UI_SELECTOR_SEARCH_STUB_SUBTITLE')\n\t\t\t}\n\t\t};\n\n\t\tconst options: TabOptions = Object.assign({}, defaults, tabOptions);\n\t\toptions.id = 'search';\n\t\toptions.stubOptions.autoShow = false;\n\n\t\tsuper(dialog, options);\n\n\t\tsearchOptions = Type.isPlainObject(searchOptions) ? searchOptions : {};\n\t\tthis.setAllowCreateItem(searchOptions.allowCreateItem, searchOptions.footerOptions);\n\n\t\tthis.loadWithDebounce = Runtime.debounce(() => {\n\t\t\tthis.load(this.getLastSearchQuery());\n\t\t}, 500);\n\t}\n\n\tsearch(query: string)\n\t{\n\t\tconst searchQuery = new SearchQuery(query);\n\t\tconst dynamicEntities = this.getDynamicEntities(searchQuery);\n\t\tsearchQuery.setDynamicSearchEntities(dynamicEntities);\n\n\t\tif (searchQuery.isEmpty())\n\t\t{\n\t\t\tthis.getSearchLoader().hide();\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.lastSearchQuery = searchQuery;\n\n\t\tconst matchResults = SearchEngine.matchItems(this.getDialog().getItems(), searchQuery);\n\t\tthis.clearResults();\n\t\tthis.appendResults(matchResults);\n\n\t\tif (this.getDialog().shouldFocusOnFirst())\n\t\t{\n\t\t\tthis.getDialog().focusOnFirstNode();\n\t\t}\n\n\t\tif (this.shouldLoad(searchQuery))\n\t\t{\n\t\t\tthis.loadWithDebounce();\n\t\t\tif (!this.isEmptyResult())\n\t\t\t{\n\t\t\t\tthis.getStub().hide();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (!this.getSearchLoader().isShown())\n\t\t\t{\n\t\t\t\tthis.toggleEmptyResult();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetLastSearchQuery(): ?SearchQuery\n\t{\n\t\treturn this.lastSearchQuery;\n\t}\n\n\tsetAllowCreateItem(flag: boolean, options?: { [option: string]: any }): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.allowCreateItem = flag;\n\n\t\t\tif (flag)\n\t\t\t{\n\t\t\t\tthis.setFooter(SearchTabFooter, options);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.setFooter(null);\n\t\t\t}\n\t\t}\n\t}\n\n\tcanCreateItem(): boolean\n\t{\n\t\treturn this.allowCreateItem;\n\t}\n\n\tappendResults(matchResults: MatchResult[]): void\n\t{\n\t\tmatchResults.sort((a: MatchResult, b: MatchResult) => {\n\n\t\t\tconst matchSortA = a.getSort();\n\t\t\tconst matchSortB = b.getSort();\n\n\t\t\tif (matchSortA !== null && matchSortB !== null)\n\t\t\t{\n\t\t\t\treturn matchSortA - matchSortB;\n\t\t\t}\n\t\t\tif (matchSortA !== null && matchSortB === null)\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\telse if (matchSortA === null && matchSortB !== null)\n\t\t\t{\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tconst contextSortA = a.getItem().getContextSort();\n\t\t\tconst contextSortB = b.getItem().getContextSort();\n\n\t\t\tif (contextSortA !== null && contextSortB === null)\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\telse if (contextSortA === null && contextSortB !== null)\n\t\t\t{\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\telse if (contextSortA !== null && contextSortB !== null)\n\t\t\t{\n\t\t\t\treturn contextSortB - contextSortA;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst globalSortA = a.getItem().getGlobalSort();\n\t\t\t\tconst globalSortB = b.getItem().getGlobalSort();\n\n\t\t\t\tif (globalSortA !== null && globalSortB === null)\n\t\t\t\t{\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\telse if (globalSortA === null && globalSortB !== null)\n\t\t\t\t{\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\telse if (globalSortA !== null && globalSortB !== null)\n\t\t\t\t{\n\t\t\t\t\treturn globalSortB - globalSortA;\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\n\t\tthis.getRootNode().disableRender();\n\n\t\tmatchResults.forEach((matchResult: MatchResult) => {\n\t\t\tconst item = matchResult.getItem();\n\t\t\tif (!this.getRootNode().hasItem(item))\n\t\t\t{\n\t\t\t\tconst node = this.getRootNode().addItem(item);\n\t\t\t\tnode.setHighlights(matchResult.getMatchFields());\n\t\t\t}\n\t\t});\n\n\t\tthis.getRootNode().enableRender();\n\t\tthis.getRootNode().render(true);\n\t}\n\n\tgetDynamicEntities(searchQuery: SearchQuery): string[]\n\t{\n\t\tconst result = [];\n\n\t\tthis.getDialog().getEntities().forEach((entity: Entity) => {\n\t\t\tif (entity.isSearchable())\n\t\t\t{\n\t\t\t\tconst hasCacheLimit = entity.getSearchCacheLimits().some((pattern: RegExp) => {\n\t\t\t\t\treturn pattern.test(searchQuery.getQuery());\n\t\t\t\t});\n\n\t\t\t\tif (hasCacheLimit)\n\t\t\t\t{\n\t\t\t\t\tresult.push(entity.getId());\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tisQueryCacheable(searchQuery: SearchQuery): boolean\n\t{\n\t\treturn searchQuery.isCacheable() && !searchQuery.hasDynamicSearch();\n\t}\n\n\tisQueryLoaded(searchQuery: SearchQuery): boolean\n\t{\n\t\tlet found = false;\n\t\tthis.queryCache.forEach(query => {\n\t\t\tif (found === false && searchQuery.getQuery().startsWith(query))\n\t\t\t{\n\t\t\t\tfound = true;\n\t\t\t}\n\t\t});\n\n\t\treturn found;\n\t}\n\n\taddCacheQuery(searchQuery: SearchQuery): void\n\t{\n\t\tif (this.isQueryCacheable(searchQuery))\n\t\t{\n\t\t\tthis.queryCache.add(searchQuery.getQuery());\n\t\t}\n\t}\n\n\tremoveCacheQuery(searchQuery: SearchQuery): void\n\t{\n\t\tthis.queryCache.delete(searchQuery.getQuery());\n\t}\n\n\tshouldLoad(searchQuery: SearchQuery): boolean\n\t{\n\t\tif (!this.isQueryCacheable(searchQuery))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!this.getDialog().hasDynamicSearch())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !this.isQueryLoaded(searchQuery);\n\t}\n\n\tload(searchQuery: SearchQuery): void\n\t{\n\t\tif (!this.shouldLoad(searchQuery))\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t/*if (this.queryXhr)\n\t\t{\n\t\t\tthis.queryXhr.abort();\n\t\t}*/\n\n\t\tthis.addCacheQuery(searchQuery);\n\n\t\tthis.getStub().hide();\n\t\tthis.getSearchLoader().show();\n\n\t\tAjax.runAction('ui.entityselector.doSearch', {\n\t\t\t\tjson: {\n\t\t\t\t\tdialog: this.getDialog().getAjaxJson(),\n\t\t\t\t\tsearchQuery: searchQuery.getAjaxJson()\n\t\t\t\t},\n\t\t\t\tonrequeststart: (xhr) => {\n\t\t\t\t\tthis.queryXhr = xhr;\n\t\t\t\t},\n\t\t\t\tgetParameters: {\n\t\t\t\t\tcontext: this.getDialog().getContext()\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then(response => {\n\n\t\t\t\tthis.getSearchLoader().hide();\n\n\t\t\t\tif (!response || !response.data || !response.data.dialog || !response.data.dialog.items)\n\t\t\t\t{\n\t\t\t\t\tthis.removeCacheQuery(searchQuery);\n\t\t\t\t\tthis.toggleEmptyResult();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (response.data.searchQuery && response.data.searchQuery.cacheable === false)\n\t\t\t\t{\n\t\t\t\t\tthis.removeCacheQuery(searchQuery);\n\t\t\t\t}\n\n\t\t\t\tif (Type.isArrayFilled(response.data.dialog.items))\n\t\t\t\t{\n\t\t\t\t\tconst items = new Set();\n\t\t\t\t\tresponse.data.dialog.items.forEach((itemOptions: ItemOptions) => {\n\t\t\t\t\t\tdelete itemOptions.tabs;\n\t\t\t\t\t\tdelete itemOptions.children;\n\n\t\t\t\t\t\tconst item = this.getDialog().addItem(itemOptions);\n\t\t\t\t\t\titems.add(item);\n\t\t\t\t\t});\n\n\t\t\t\t\tconst isTabEmpty = this.isEmptyResult();\n\n\t\t\t\t\tconst matchResults = SearchEngine.matchItems(\n\t\t\t\t\t\tArray.from(items.values()),\n\t\t\t\t\t\tthis.getLastSearchQuery()\n\t\t\t\t\t);\n\t\t\t\t\tthis.appendResults(matchResults);\n\n\t\t\t\t\tif (isTabEmpty && this.getDialog().shouldFocusOnFirst())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.getDialog().focusOnFirstNode();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.toggleEmptyResult();\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.removeCacheQuery(searchQuery);\n\t\t\t\tthis.getSearchLoader().hide();\n\t\t\t\tthis.toggleEmptyResult();\n\n\t\t\t\tconsole.error(error);\n\t\t\t});\n\t}\n\n\tgetSearchLoader(): SearchLoader\n\t{\n\t\treturn this.searchLoader;\n\t}\n\n\tclearResults(): void\n\t{\n\t\tthis.getRootNode().removeChildren();\n\t}\n\n\tisEmptyResult(): boolean\n\t{\n\t\treturn !this.getRootNode().hasChildren();\n\t}\n\n\ttoggleEmptyResult(): void\n\t{\n\t\tif (this.isEmptyResult())\n\t\t{\n\t\t\tthis.getStub().show();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getStub().hide();\n\t\t}\n\t}\n}","import { Type, Text, Tag, Dom, ajax as Ajax, Cache, Loc, Runtime, Reflection } from 'main.core';\nimport { EventEmitter, BaseEvent } from 'main.core.events';\nimport { Popup } from 'main.popup';\nimport { Loader } from 'main.loader';\n\nimport Item from '../item/item';\nimport Tab from './tabs/tab';\nimport Entity from '../entity/entity';\nimport TagSelector from '../tag-selector/tag-selector';\nimport Navigation from './navigation';\nimport SliderIntegration from './integration/slider-integration';\nimport Animation from '../common/animation';\nimport BaseFooter from './footer/base-footer';\nimport DefaultFooter from './footer/default-footer';\n\nimport RecentTab from './tabs/recent-tab';\nimport SearchTab from './tabs/search-tab';\n\nimport type ItemNode from '../item/item-node';\nimport type { TabOptions } from './tabs/tab-options';\nimport type { DialogOptions } from './dialog-options';\nimport type { ItemOptions } from '../item/item-options';\nimport type { EntityOptions } from '../entity/entity-options';\nimport type { ItemId } from '../item/item-id';\nimport type { PopupOptions } from 'main.popup';\nimport type { FooterOptions, FooterContent } from './footer/footer-content';\nimport type { ItemNodeOptions } from '../item/item-node-options';\n\nclass LoadState\n{\n\tstatic UNSENT: string = 'UNSENT';\n\tstatic LOADING: string = 'LOADING';\n\tstatic DONE: string = 'DONE';\n}\n\nclass TagSelectorMode\n{\n\tstatic INSIDE: string = 'INSIDE';\n\tstatic OUTSIDE: string = 'OUTSIDE';\n}\n\nconst instances = new Map();\n\n/**\n * @memberof BX.UI.EntitySelector\n */\nexport default class Dialog extends EventEmitter\n{\n\tid: string = null;\n\titems: Map<string, Map<string, Item>> = new Map();\n\ttabs: Map<string, Entity> = new Map();\n\tentities: Map<string, Entity> = new Map();\n\ttargetNode: HTMLElement = null;\n\tpopup: Popup = null;\n\tcache = new Cache.MemoryCache();\n\tmultiple: boolean = true;\n\thideOnSelect: boolean = null;\n\thideOnDeselect: boolean = null;\n\tclearSearchOnSelect: boolean = true;\n\tcontext: string = null;\n\tselectedItems: Set<Item> = new Set();\n\tpreselectedItems: ItemId[] = [];\n\tundeselectedItems: ItemId[] = [];\n\tdropdownMode: boolean = false;\n\n\tfrozen: boolean = false;\n\tfrozenProps: { [propName: string]: any } = {};\n\n\thideByEsc: boolean = true;\n\tautoHide: boolean = true;\n\tautoHideHandler: Function = null;\n\toffsetTop: number = 5;\n\toffsetLeft: number = 0;\n\tcacheable: boolean = true;\n\n\twidth: number = 565;\n\theight: number = 420;\n\n\tmaxLabelWidth: number = 160;\n\tminLabelWidth: number = 45;\n\n\tshowAvatars: boolean = true;\n\tcompactView: boolean = false;\n\n\tactiveTab: Tab = null;\n\trecentTab: Tab = null;\n\tsearchTab: Tab = null;\n\n\trendered: boolean = false;\n\n\tloadState: LoadState = LoadState.UNSENT;\n\tloader: ?Loader = null;\n\n\ttagSelector: ?TagSelector = null;\n\ttagSelectorMode: ?TagSelectorMode = null;\n\ttagSelectorHeight: ?number = null;\n\n\tsaveRecentItemsWithDebounce: Function = Runtime.debounce(this.saveRecentItems, 2000, this);\n\trecentItemsToSave = [];\n\n\tnavigation: Navigation = null;\n\tfooter: BaseFooter = null;\n\tpopupOptions: PopupOptions = {};\n\n\tfocusOnFirst: boolean = true;\n\tfocusedNode: ItemNode = null;\n\n\tclearUnavailableItems: boolean = false;\n\toverlappingObserver: MutationObserver = null;\n\n\tstatic getById(id: string): ?Dialog\n\t{\n\t\treturn instances.get(id) || null;\n\t}\n\n\tstatic getInstances(): Dialog[]\n\t{\n\t\treturn Array.from(instances.values());\n\t}\n\n\tconstructor(dialogOptions: DialogOptions)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.EntitySelector.Dialog');\n\n\t\tconst options: DialogOptions = Type.isPlainObject(dialogOptions) ? dialogOptions : {};\n\t\tthis.id = Type.isStringFilled(options.id) ? options.id : `ui-selector-${Text.getRandom().toLowerCase()}`;\n\t\tthis.multiple = Type.isBoolean(options.multiple) ? options.multiple : true;\n\t\tthis.context = Type.isStringFilled(options.context) ? options.context : null;\n\t\tthis.clearUnavailableItems = options.clearUnavailableItems === true;\n\t\tthis.compactView = options.compactView === true;\n\t\tthis.dropdownMode = Type.isBoolean(options.dropdownMode) ? options.dropdownMode : false;\n\n\t\tif (Type.isArray(options.entities))\n\t\t{\n\t\t\toptions.entities.forEach((entity) => {\n\t\t\t\tthis.addEntity(entity);\n\t\t\t});\n\t\t}\n\n\t\tif (options.enableSearch === true)\n\t\t{\n\t\t\tconst defaultOptions = {\n\t\t\t\tplaceholder: Loc.getMessage('UI_TAG_SELECTOR_SEARCH_PLACEHOLDER'),\n\t\t\t\tmaxHeight: 99,\n\t\t\t\ttextBoxWidth: 105\n\t\t\t};\n\t\t\tconst customOptions = Type.isPlainObject(options.tagSelectorOptions) ? options.tagSelectorOptions : {};\n\t\t\tconst mandatoryOptions = {\n\t\t\t\tdialogOptions: null,\n\t\t\t\tshowTextBox: true,\n\t\t\t\tshowAddButton: false,\n\t\t\t\tshowCreateButton: false,\n\t\t\t\tmultiple: this.isMultiple()\n\t\t\t};\n\n\t\t\tconst tagSelectorOptions = Object.assign(defaultOptions, customOptions, mandatoryOptions);\n\t\t\tconst tagSelector = new TagSelector(tagSelectorOptions);\n\t\t\tthis.tagSelectorMode = TagSelectorMode.INSIDE;\n\t\t\tthis.setTagSelector(tagSelector);\n\t\t}\n\t\telse if (options.tagSelector instanceof TagSelector)\n\t\t{\n\t\t\tthis.tagSelectorMode = TagSelectorMode.OUTSIDE;\n\t\t\tthis.setTagSelector(options.tagSelector);\n\t\t}\n\n\t\tthis.setTargetNode(options.targetNode);\n\t\tthis.setHideOnSelect(options.hideOnSelect);\n\t\tthis.setHideOnDeselect(options.hideOnDeselect);\n\t\tthis.setClearSearchOnSelect(options.clearSearchOnSelect);\n\t\tthis.setWidth(options.width);\n\t\tvoid this.setHeight(options.height);\n\t\tthis.setAutoHide(options.autoHide);\n\t\tthis.setAutoHideHandler(options.autoHideHandler);\n\t\tthis.setHideByEsc(options.hideByEsc);\n\t\tthis.setOffsetLeft(options.offsetLeft);\n\t\tthis.setOffsetTop(options.offsetTop);\n\t\tthis.setCacheable(options.cacheable);\n\t\tthis.setFocusOnFirst(options.focusOnFirst);\n\t\tthis.setShowAvatars(options.showAvatars);\n\n\t\tthis.recentTab = new RecentTab(this, options.recentTabOptions);\n\t\tthis.searchTab = new SearchTab(this, options.searchTabOptions, options.searchOptions);\n\n\t\tthis.addTab(this.recentTab);\n\t\tthis.addTab(this.searchTab);\n\n\t\tthis.setPreselectedItems(options.preselectedItems);\n\t\tthis.setUndeselectedItems(options.undeselectedItems);\n\n\t\tthis.setOptions(options);\n\n\t\tconst preload = options.preload === true || this.getPreselectedItems().length > 0;\n\t\tif (preload)\n\t\t{\n\t\t\tthis.load();\n\t\t}\n\n\t\tif (Type.isPlainObject(options.popupOptions))\n\t\t{\n\t\t\tconst allowedOptions = ['overlay', 'bindOptions', 'targetContainer', 'zIndexOptions'];\n\t\t\tconst popupOptions = {};\n\n\t\t\tObject.keys(options.popupOptions).forEach((option: string) => {\n\t\t\t\tif (allowedOptions.includes(option))\n\t\t\t\t{\n\t\t\t\t\tpopupOptions[option] = options.popupOptions[option];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.popupOptions = popupOptions;\n\t\t}\n\n\t\tthis.navigation = new Navigation(this);\n\n\t\t(new SliderIntegration(this));\n\n\t\tthis.subscribe('ItemNode:onFocus', this.handleItemNodeFocus.bind(this));\n\t\tthis.subscribe('ItemNode:onUnfocus', this.handleItemNodeUnfocus.bind(this));\n\n\t\tthis.subscribeFromOptions(options.events);\n\n\t\tinstances.set(this.id, this);\n\t}\n\n\tshow(): void\n\t{\n\t\tthis.load();\n\t\tthis.getPopup().show();\n\t}\n\n\thide(): void\n\t{\n\t\tthis.getPopup().close();\n\t}\n\n\tdestroy(): void\n\t{\n\t\tif (this.destroying)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.destroying = true;\n\t\tthis.emit('onDestroy');\n\n\t\tthis.disconnectTabOverlapping();\n\t\tinstances.delete(this.getId());\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getPopup().destroy();\n\t\t}\n\n\t\tfor (const property in this)\n\t\t{\n\t\t\tif (this.hasOwnProperty(property))\n\t\t\t{\n\t\t\t\tdelete this[property];\n\t\t\t}\n\t\t}\n\n\t\tObject.setPrototypeOf(this, null);\n\t}\n\n\tisOpen(): boolean\n\t{\n\t\treturn this.popup && this.popup.isShown();\n\t}\n\n\tadjustPosition(): void\n\t{\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getPopup().adjustPosition();\n\t\t}\n\t}\n\n\tsearch(queryString: string): void\n\t{\n\t\tconst query = Type.isStringFilled(queryString) ? queryString.trim() : '';\n\n\t\tconst event = new BaseEvent({ data: { query } });\n\t\tthis.emit('onBeforeSearch', event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Type.isStringFilled(query))\n\t\t{\n\t\t\tthis.selectFirstTab();\n\t\t\tif (this.getSearchTab())\n\t\t\t{\n\t\t\t\tthis.getSearchTab().clearResults();\n\t\t\t}\n\t\t}\n\t\telse if (this.getSearchTab())\n\t\t{\n\t\t\tthis.selectTab(this.getSearchTab().getId());\n\t\t\tthis.getSearchTab().search(query);\n\t\t}\n\n\t\tthis.emit('onSearch', { query });\n\t}\n\n\taddItem(options: ItemOptions): Item\n\t{\n\t\tif (!Type.isPlainObject(options))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.addItem: wrong item options.');\n\t\t}\n\n\t\tlet item = this.getItem(options);\n\t\tif (!item)\n\t\t{\n\t\t\titem = new Item(options);\n\n\t\t\tconst undeselectable = this.getUndeselectedItems().some((itemId: ItemId) => {\n\t\t\t\treturn itemId[0] === item.getEntityId() && String(itemId[1]) === String(item.getId());\n\t\t\t});\n\n\t\t\tif (undeselectable)\n\t\t\t{\n\t\t\t\titem.setDeselectable(false);\n\t\t\t}\n\n\t\t\titem.setDialog(this);\n\n\t\t\tconst entity = this.getEntity(item.getEntityId());\n\t\t\tif (entity === null)\n\t\t\t{\n\t\t\t\tthis.addEntity({ id: item.getEntityId() });\n\t\t\t}\n\n\t\t\tlet entityItems = this.items.get(item.getEntityId());\n\t\t\tif (!entityItems)\n\t\t\t{\n\t\t\t\tentityItems = new Map();\n\t\t\t\tthis.items.set(item.getEntityId(), entityItems);\n\t\t\t}\n\n\t\t\tentityItems.set(String(item.getId()), item);\n\n\t\t\tif (item.isSelected())\n\t\t\t{\n\t\t\t\tthis.handleItemSelect(item);\n\t\t\t}\n\t\t}\n\n\t\tlet tabs = [];\n\t\tif (Type.isArray(options.tabs))\n\t\t{\n\t\t\ttabs = options.tabs;\n\t\t}\n\t\telse if (Type.isStringFilled(options.tabs))\n\t\t{\n\t\t\ttabs = [options.tabs];\n\t\t}\n\n\t\tconst children = Type.isArray(options.children) ? options.children : [];\n\n\t\ttabs.forEach((tabId) => {\n\t\t\tconst tab = this.getTab(tabId);\n\t\t\tif (tab)\n\t\t\t{\n\t\t\t\tconst itemNode = tab.getRootNode().addItem(item, options.nodeOptions);\n\t\t\t\titemNode.addChildren(children);\n\t\t\t}\n\t\t});\n\n\t\treturn item;\n\t}\n\n\tremoveItem(item: Item | ItemOptions): ?Item\n\t{\n\t\titem = this.getItem(item);\n\t\tif (item)\n\t\t{\n\t\t\tthis.handleItemDeselect(item);\n\n\t\t\titem.getNodes().forEach((node: ItemNode) => {\n\t\t\t\tnode.getParentNode().removeChild(node);\n\t\t\t});\n\n\t\t\tconst entityItems = this.getEntityItemsInternal(item.getEntityId());\n\t\t\tif (entityItems)\n\t\t\t{\n\t\t\t\tentityItems.delete(String(item.getId()));\n\t\t\t\tif (entityItems.size === 0)\n\t\t\t\t{\n\t\t\t\t\tthis.items.delete(item.getEntityId());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn item;\n\t}\n\n\tremoveItems(): void\n\t{\n\t\tthis.getItemsInternal().forEach((items: Map<string, Item>) => {\n\t\t\titems.forEach((item: Item) => {\n\t\t\t\tthis.removeItem(item);\n\t\t\t});\n\t\t});\n\t}\n\n\tgetItem(item: ItemId | Item | ItemOptions): ?Item\n\t{\n\t\tlet id = null;\n\t\tlet entityId = null;\n\n\t\tif (Type.isArray(item) && item.length === 2)\n\t\t{\n\t\t\t[entityId, id] = item;\n\t\t}\n\t\telse if (item instanceof Item)\n\t\t{\n\t\t\tid = item.getId();\n\t\t\tentityId = item.getEntityId();\n\t\t}\n\t\telse if (Type.isObjectLike(item))\n\t\t{\n\t\t\t({ id, entityId } = item);\n\t\t}\n\n\t\tconst entityItems = this.getEntityItemsInternal(entityId);\n\t\tif (entityItems)\n\t\t{\n\t\t\treturn entityItems.get(String(id)) || null;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetSelectedItems(): Item[]\n\t{\n\t\treturn Array.from(this.selectedItems);\n\t}\n\n\tgetItems(): Item[]\n\t{\n\t\tconst items = [];\n\t\tthis.getItemsInternal().forEach((entityItems: Map<string, Item>) => {\n\t\t\tArray.prototype.push.apply(items, Array.from(entityItems.values()));\n\t\t});\n\n\t\treturn items;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tgetItemsInternal(): Map<string, Map<string, Item>>\n\t{\n\t\treturn this.items;\n\t}\n\n\tgetEntityItems(entityId: string): Item[]\n\t{\n\t\tconst items = this.getEntityItemsInternal(entityId);\n\n\t\treturn items === null ? [] : Array.from(items.values());\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tgetEntityItemsInternal(entityId: string): Map<string, Item> | null\n\t{\n\t\treturn this.items.get(entityId) || null;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tvalidateItemIds(itemIds: ItemId[]): ItemId[]\n\t{\n\t\tif (!Type.isArrayFilled(itemIds))\n\t\t{\n\t\t\treturn [];\n\t\t}\n\n\t\tconst result = [];\n\t\titemIds.forEach((itemId: ItemId) => {\n\t\t\tif (!Type.isArray(itemId) || itemId.length !== 2)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst [entityId, id] = itemId;\n\n\t\t\tif (Type.isStringFilled(entityId) && (Type.isStringFilled(id) || Type.isNumber(id)))\n\t\t\t{\n\t\t\t\tresult.push(itemId);\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\taddTab(tab: Tab | TabOptions): Tab\n\t{\n\t\tif (Type.isPlainObject(tab))\n\t\t{\n\t\t\ttab = new Tab(this, tab);\n\t\t}\n\n\t\tif (!(tab instanceof Tab))\n\t\t{\n\t\t\tthrow new Error('EntitySelector: a tab must be an instance of EntitySelector.Tab.');\n\t\t}\n\n\t\tif (this.getTab(tab.getId()))\n\t\t{\n\t\t\tconsole.error(`EntitySelector: the \"${tab.getId()}\" tab is already existed.`);\n\t\t\treturn tab;\n\t\t}\n\n\t\ttab.setDialog(this);\n\t\tthis.tabs.set(tab.getId(), tab);\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.insertTab(tab);\n\t\t}\n\n\t\treturn tab;\n\t}\n\n\tgetTabs(): Tab[]\n\t{\n\t\treturn Array.from(this.tabs.values());\n\t}\n\n\tgetTab(id: string): ?Tab\n\t{\n\t\treturn this.tabs.get(id) || null;\n\t}\n\n\tgetRecentTab(): RecentTab\n\t{\n\t\treturn this.recentTab;\n\t}\n\n\tgetSearchTab(): SearchTab\n\t{\n\t\treturn this.searchTab;\n\t}\n\n\tselectTab(id: string): ?Tab\n\t{\n\t\tconst newActiveTab = this.getTab(id);\n\t\tif (!newActiveTab || newActiveTab === this.getActiveTab())\n\t\t{\n\t\t\treturn newActiveTab;\n\t\t}\n\n\t\tif (this.getActiveTab())\n\t\t{\n\t\t\tthis.getActiveTab().deselect();\n\t\t}\n\n\t\tthis.activeTab = newActiveTab;\n\t\tnewActiveTab.select();\n\n\t\tif (!newActiveTab.isRendered())\n\t\t{\n\t\t\tnewActiveTab.render();\n\t\t}\n\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.focusSearch();\n\t\t\t});\n\t\t});\n\n\t\tthis.clearNodeFocus();\n\t\tif (this.shouldFocusOnFirst())\n\t\t{\n\t\t\tthis.focusOnFirstNode();\n\t\t}\n\n\t\tthis.adjustFooter();\n\n\t\treturn newActiveTab;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tinsertTab(tab: Tab): void\n\t{\n\t\ttab.renderLabel();\n\t\ttab.renderContainer();\n\n\t\tDom.append(tab.getLabelContainer(), this.getLabelsContainer());\n\t\tDom.append(tab.getContainer(), this.getTabContentsContainer());\n\n\t\tif (tab.getFooter())\n\t\t{\n\t\t\tDom.append(tab.getFooter().getContainer(), this.getFooterContainer());\n\t\t}\n\t}\n\n\tselectFirstTab(onlyVisible = true): ?Tab\n\t{\n\t\tconst tabs = this.getTabs();\n\t\tfor (let i = 0; i < tabs.length; i++)\n\t\t{\n\t\t\tconst tab = tabs[i];\n\t\t\tif (onlyVisible === false || tab.isVisible())\n\t\t\t{\n\t\t\t\treturn this.selectTab(tab.getId());\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDropdownMode())\n\t\t{\n\t\t\treturn this.selectTab(this.getRecentTab().getId());\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tselectLastTab(onlyVisible = true): ?Tab\n\t{\n\t\tconst tabs = this.getTabs();\n\t\tfor (let i = tabs.length - 1; i >= 0; i--)\n\t\t{\n\t\t\tconst tab = tabs[i];\n\t\t\tif (onlyVisible === false || tab.isVisible())\n\t\t\t{\n\t\t\t\treturn this.selectTab(tab.getId());\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDropdownMode())\n\t\t{\n\t\t\treturn this.selectTab(this.getRecentTab().getId());\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetActiveTab(): ?Tab\n\t{\n\t\treturn this.activeTab;\n\t}\n\n\tgetNextTab(onlyVisible = true): ?Tab\n\t{\n\t\tlet nextTab = null;\n\t\tlet activeFound = false;\n\t\tconst tabs = this.getTabs();\n\t\tfor (let i = 0; i < tabs.length; i++)\n\t\t{\n\t\t\tconst tab = tabs[i];\n\t\t\tif (onlyVisible && !tab.isVisible())\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (tab === this.getActiveTab())\n\t\t\t{\n\t\t\t\tactiveFound = true;\n\t\t\t}\n\t\t\telse if (activeFound)\n\t\t\t{\n\t\t\t\tnextTab = tab;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn nextTab;\n\t}\n\n\tgetPreviousTab(onlyVisible = true): ?Tab\n\t{\n\t\tlet previousTab = null;\n\t\tlet activeFound = false;\n\t\tconst tabs = this.getTabs();\n\t\tfor (let i = tabs.length - 1; i >= 0; i--)\n\t\t{\n\t\t\tconst tab = tabs[i];\n\t\t\tif (onlyVisible && !tab.isVisible())\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (tab === this.getActiveTab())\n\t\t\t{\n\t\t\t\tactiveFound = true;\n\t\t\t}\n\t\t\telse if (activeFound)\n\t\t\t{\n\t\t\t\tpreviousTab = tab;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn previousTab;\n\t}\n\n\tremoveTab(id: string): void\n\t{\n\t\tconst tab = this.getTab(id);\n\t\tif (!tab)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\ttab.getRootNode().removeChildren();\n\n\t\tthis.tabs.delete(id);\n\n\t\tDom.remove(tab.getLabelContainer(), this.getLabelsContainer());\n\t\tDom.remove(tab.getContainer(), this.getTabContentsContainer());\n\n\t\tif (tab.getFooter())\n\t\t{\n\t\t\tDom.remove(tab.getFooter().getContainer(), this.getFooterContainer());\n\t\t}\n\n\t\tthis.selectFirstTab();\n\t}\n\n\taddEntity(entity: Entity | EntityOptions): Entity\n\t{\n\t\tif (Type.isPlainObject(entity))\n\t\t{\n\t\t\tentity = new Entity(entity);\n\t\t}\n\n\t\tif (!(entity instanceof Entity))\n\t\t{\n\t\t\tthrow new Error('EntitySelector: an entity must be an instance of EntitySelector.Entity.');\n\t\t}\n\n\t\tif (this.hasEntity(entity.getId()))\n\t\t{\n\t\t\tconsole.error(`EntitySelector: the \"${entity.getId()}\" entity is already existed.`);\n\t\t\treturn entity;\n\t\t}\n\n\t\tthis.entities.set(entity.getId(), entity);\n\n\t\treturn entity;\n\t}\n\n\tgetEntity(id: string): ?Entity\n\t{\n\t\treturn this.entities.get(id) || null;\n\t}\n\n\thasEntity(id: string): boolean\n\t{\n\t\treturn this.entities.has(id);\n\t}\n\n\tgetEntities(): Entity[]\n\t{\n\t\treturn Array.from(this.entities.values());\n\t}\n\n\tremoveEntity(id: string): void\n\t{\n\t\tthis.removeEntityItems(id);\n\t\tthis.entities.delete(id);\n\t}\n\n\tremoveEntityItems(id: string): void\n\t{\n\t\tconst items = this.getEntityItemsInternal(id);\n\t\tif (items)\n\t\t{\n\t\t\titems.forEach((item: Item) => {\n\t\t\t\tthis.removeItem(item);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetFooter(): ?BaseFooter\n\t{\n\t\treturn this.footer;\n\t}\n\n\tgetActiveFooter(): ?BaseFooter\n\t{\n\t\tif (!this.getActiveTab())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.getActiveTab().getFooter())\n\t\t{\n\t\t\treturn this.getActiveTab().getFooter();\n\t\t}\n\n\t\treturn this.getFooter() && this.getActiveTab().canShowDefaultFooter() ? this.getFooter() : null;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tadjustFooter(): void\n\t{\n\t\tif (!this.getActiveTab())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.getActiveTab().getFooter())\n\t\t{\n\t\t\tif (this.getFooter())\n\t\t\t{\n\t\t\t\tthis.getFooter().hide();\n\t\t\t}\n\n\t\t\tthis.getActiveTab().getFooter().show();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.getFooter())\n\t\t\t{\n\t\t\t\tif (this.getActiveTab().canShowDefaultFooter())\n\t\t\t\t{\n\t\t\t\t\tthis.getFooter().show();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.getFooter().hide();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsetFooter(footerContent: ?FooterContent, footerOptions?: FooterOptions): ?BaseFooter\n\t{\n\t\t/** @var {BaseFooter} */\n\t\tlet footer = null;\n\t\tif (footerContent !== null)\n\t\t{\n\t\t\tfooter = this.constructor.createFooter(this, footerContent, footerOptions);\n\t\t\tif (footer === null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tif (this.isRendered() && this.getFooter() !== null)\n\t\t{\n\t\t\tDom.remove(this.getFooter().getContainer());\n\t\t\tthis.adjustFooter();\n\t\t}\n\n\t\tthis.footer = footer;\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.appendFooter(footer);\n\t\t\tthis.adjustFooter();\n\t\t}\n\n\t\treturn footer;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tappendFooter(footer: BaseFooter): void\n\t{\n\t\tif (footer instanceof BaseFooter)\n\t\t{\n\t\t\tDom.append(footer.getContainer(), this.getFooterContainer());\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tstatic createFooter(context: Dialog | Tab, footerContent: FooterContent, footerOptions?: FooterOptions): ?BaseFooter\n\t{\n\t\tif (\n\t\t\t!Type.isStringFilled(footerContent) &&\n\t\t\t!Type.isArrayFilled(footerContent) &&\n\t\t\t!Type.isDomNode(footerContent) &&\n\t\t\t!Type.isFunction(footerContent)\n\t\t)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\t/** @var {BaseFooter} */\n\t\tlet footer = null;\n\t\tconst options = Type.isPlainObject(footerOptions) ? footerOptions : {};\n\n\t\tif (Type.isFunction(footerContent) || Type.isString(footerContent))\n\t\t{\n\t\t\tconst className = Type.isString(footerContent) ? Reflection.getClass(footerContent) : footerContent;\n\t\t\tif (Type.isFunction(className))\n\t\t\t{\n\t\t\t\tfooter = new className(context, options);\n\t\t\t\tif (!(footer instanceof BaseFooter))\n\t\t\t\t{\n\t\t\t\t\tconsole.error('EntitySelector: footer is not an instance of BaseFooter.');\n\t\t\t\t\tfooter = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (footerContent !== null && !footer)\n\t\t{\n\t\t\tfooter = new DefaultFooter(context, Object.assign({}, options, { content: footerContent }));\n\t\t}\n\n\t\treturn footer;\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\tgetContext(): ?string\n\t{\n\t\treturn this.context;\n\t}\n\n\tgetNavigation(): Navigation\n\t{\n\t\treturn this.navigation;\n\t}\n\n\tdeselectAll(): void\n\t{\n\t\tthis.getSelectedItems().forEach((item: Item) => {\n\t\t\titem.deselect();\n\t\t});\n\t}\n\n\tisMultiple(): boolean\n\t{\n\t\treturn this.multiple;\n\t}\n\n\tsetTargetNode(node: HTMLElement | { left: number, top: number } | null | MouseEvent): void\n\t{\n\t\tif (!Type.isDomNode(node) && !Type.isNull(node) && !Type.isObject(node))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.targetNode = node;\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getPopup().setBindElement(this.targetNode);\n\t\t\tthis.getPopup().adjustPosition();\n\t\t}\n\t}\n\n\tgetTargetNode(): ?HTMLElement\n\t{\n\t\tif (this.targetNode === null)\n\t\t{\n\t\t\tif (this.getTagSelectorMode() === TagSelectorMode.OUTSIDE)\n\t\t\t{\n\t\t\t\treturn this.getTagSelector().getOuterContainer();\n\t\t\t}\n\t\t}\n\n\t\treturn this.targetNode;\n\t}\n\n\tsetHideOnSelect(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.hideOnSelect = flag;\n\t\t}\n\t}\n\n\tshouldHideOnSelect(): boolean\n\t{\n\t\tif (this.hideOnSelect !== null)\n\t\t{\n\t\t\treturn this.hideOnSelect;\n\t\t}\n\n\t\treturn !this.isMultiple();\n\t}\n\n\tsetHideOnDeselect(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.hideOnDeselect = flag;\n\t\t}\n\t}\n\n\tshouldHideOnDeselect(): boolean\n\t{\n\t\tif (this.hideOnDeselect !== null)\n\t\t{\n\t\t\treturn this.hideOnDeselect;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tsetClearSearchOnSelect(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.clearSearchOnSelect = flag;\n\t\t}\n\t}\n\n\tshouldClearSearchOnSelect(): boolean\n\t{\n\t\treturn this.clearSearchOnSelect;\n\t}\n\n\tsetShowAvatars(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.showAvatars = flag;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getTabs().forEach((tab: Tab) => {\n\t\t\t\t\ttab.renderContainer();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tshouldShowAvatars(): boolean\n\t{\n\t\treturn this.showAvatars;\n\t}\n\n\tisCompactView(): boolean\n\t{\n\t\treturn this.compactView;\n\t}\n\n\tsetAutoHide(enable: boolean): void\n\t{\n\t\tif (Type.isBoolean(enable))\n\t\t{\n\t\t\tthis.autoHide = enable;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getPopup().setAutoHide(enable);\n\t\t\t}\n\t\t}\n\t}\n\n\tisAutoHide(): boolean\n\t{\n\t\treturn this.autoHide;\n\t}\n\n\tsetAutoHideHandler(handler?: (event: MouseEvent, dialog: Dialog) => boolean): void\n\t{\n\t\tif (Type.isFunction(handler) || handler === null)\n\t\t{\n\t\t\tthis.autoHideHandler = handler;\n\t\t}\n\t}\n\n\tsetHideByEsc(enable: boolean): void\n\t{\n\t\tif (Type.isBoolean(enable))\n\t\t{\n\t\t\tthis.hideByEsc = enable;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getPopup().setClosingByEsc(enable);\n\t\t\t}\n\t\t}\n\t}\n\n\tshouldHideByEsc(): boolean\n\t{\n\t\treturn this.hideByEsc;\n\t}\n\n\tgetWidth(): number\n\t{\n\t\treturn this.width;\n\t}\n\n\tsetWidth(width: number): void\n\t{\n\t\tif (Type.isNumber(width) && width > 0)\n\t\t{\n\t\t\tthis.width = width;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tDom.style(this.getContainer(), 'width', `${width}px`);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetHeight(): number\n\t{\n\t\treturn this.height;\n\t}\n\n\tsetHeight(height: number): Promise\n\t{\n\t\tif (Type.isNumber(height) && height > 0)\n\t\t{\n\t\t\tthis.height = height;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tDom.style(this.getContainer(), 'height', `${height}px`);\n\t\t\t\treturn Animation.handleTransitionEnd(this.getContainer(), 'height');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\n\tgetOffsetLeft(): number\n\t{\n\t\treturn this.offsetLeft;\n\t}\n\n\tsetOffsetLeft(offset: number): void\n\t{\n\t\tif (Type.isNumber(offset) && offset >= 0)\n\t\t{\n\t\t\tthis.offsetLeft = offset;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getPopup().setOffset({ offsetLeft: offset });\n\t\t\t\tthis.adjustPosition();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetOffsetTop(): number\n\t{\n\t\treturn this.offsetTop;\n\t}\n\n\tsetOffsetTop(offset: number): void\n\t{\n\t\tif (Type.isNumber(offset) && offset >= 0)\n\t\t{\n\t\t\tthis.offsetTop = offset;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getPopup().setOffset({ offsetTop: offset });\n\t\t\t\tthis.adjustPosition();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetZindex(): number\n\t{\n\t\treturn this.getPopup().getZindex();\n\t}\n\n\tisCacheable(): boolean\n\t{\n\t\treturn this.cacheable;\n\t}\n\n\tsetCacheable(cacheable: boolean): void\n\t{\n\t\tif (Type.isBoolean(cacheable))\n\t\t{\n\t\t\tthis.cacheable = cacheable;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getPopup().setCacheable(cacheable);\n\t\t\t}\n\t\t}\n\t}\n\n\tshouldFocusOnFirst(): boolean\n\t{\n\t\treturn this.focusOnFirst;\n\t}\n\n\tsetFocusOnFirst(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.focusOnFirst = flag;\n\t\t}\n\t}\n\n\tfocusOnFirstNode(): ?ItemNode\n\t{\n\t\tif (this.getActiveTab())\n\t\t{\n\t\t\tconst itemNode = this.getActiveTab().getRootNode().getFirstChild();\n\t\t\tif (itemNode)\n\t\t\t{\n\t\t\t\titemNode.focus();\n\n\t\t\t\treturn itemNode;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetFocusedNode(): ?ItemNode\n\t{\n\t\treturn this.focusedNode;\n\t}\n\n\tclearNodeFocus(): void\n\t{\n\t\tif (this.focusedNode)\n\t\t{\n\t\t\tthis.focusedNode.unfocus();\n\t\t\tthis.focusedNode = null;\n\t\t}\n\t}\n\n\tisDropdownMode(): boolean\n\t{\n\t\treturn this.dropdownMode;\n\t}\n\n\tsetPreselectedItems(itemIds: ItemId[]): void\n\t{\n\t\tthis.preselectedItems = this.validateItemIds(itemIds);\n\t}\n\n\tgetPreselectedItems(): ItemId[]\n\t{\n\t\treturn this.preselectedItems;\n\t}\n\n\tsetUndeselectedItems(itemIds: ItemId[]): void\n\t{\n\t\tthis.undeselectedItems = this.validateItemIds(itemIds);\n\t}\n\n\tgetUndeselectedItems()\n\t{\n\t\treturn this.undeselectedItems;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tsetOptions(dialogOptions: DialogOptions): void\n\t{\n\t\tconst options = Type.isPlainObject(dialogOptions) ? dialogOptions : {};\n\n\t\tif (Type.isArray(options.tabs))\n\t\t{\n\t\t\toptions.tabs.forEach((tab) => {\n\t\t\t\tthis.addTab(tab);\n\t\t\t});\n\t\t}\n\n\t\tif (Type.isArray(options.selectedItems))\n\t\t{\n\t\t\toptions.selectedItems.forEach((itemOptions: ItemOptions) => {\n\t\t\t\tconst options = Object.assign({}, Type.isPlainObject(itemOptions) ? itemOptions : {});\n\t\t\t\toptions.selected = true;\n\t\t\t\tthis.addItem(options);\n\t\t\t});\n\t\t}\n\n\t\tif (Type.isArray(options.items))\n\t\t{\n\t\t\toptions.items.forEach((itemOptions: ItemOptions) => {\n\t\t\t\tthis.addItem(itemOptions);\n\t\t\t});\n\t\t}\n\n\t\tthis.setFooter(options.footer, options.footerOptions);\n\t}\n\n\tgetMaxLabelWidth(): number\n\t{\n\t\treturn this.maxLabelWidth;\n\t}\n\n\tgetMinLabelWidth(): number\n\t{\n\t\treturn this.minLabelWidth;\n\t}\n\n\tgetTagSelector(): ?TagSelector\n\t{\n\t\treturn this.tagSelector;\n\t}\n\n\tgetTagSelectorMode(): ?TagSelectorMode\n\t{\n\t\treturn this.tagSelectorMode;\n\t}\n\n\tisTagSelectorInside(): boolean\n\t{\n\t\treturn this.getTagSelector() && this.getTagSelectorMode() === TagSelectorMode.INSIDE;\n\t}\n\n\tisTagSelectorOutside(): boolean\n\t{\n\t\treturn this.getTagSelector() && this.getTagSelectorMode() === TagSelectorMode.OUTSIDE;\n\t}\n\n\tgetTagSelectorQuery(): string\n\t{\n\t\treturn this.getTagSelector() ? this.getTagSelector().getTextBoxValue() : '';\n\t}\n\n\t/**\n\t * @private\n\t */\n\tsetTagSelector(tagSelector: TagSelector): void\n\t{\n\t\tthis.tagSelector = tagSelector;\n\n\t\tthis.tagSelector.subscribe('onInput', Runtime.debounce(this.handleTagSelectorInput, 200, this));\n\t\tthis.tagSelector.subscribe('onAddButtonClick', this.handleTagSelectorAddButtonClick.bind(this));\n\t\tthis.tagSelector.subscribe('onTagRemove', this.handleTagSelectorTagRemove.bind(this));\n\t\tthis.tagSelector.subscribe('onAfterTagRemove', this.handleTagSelectorAfterTagRemove.bind(this));\n\t\tthis.tagSelector.subscribe('onAfterTagAdd', this.handleTagSelectorAfterTagAdd.bind(this));\n\t\tthis.tagSelector.subscribe('onContainerClick', this.handleTagSelectorClick.bind(this));\n\n\t\tthis.tagSelector.setDialog(this);\n\t}\n\n\tfocusSearch(): void\n\t{\n\t\tif (this.getTagSelector())\n\t\t{\n\t\t\tif (this.getActiveTab() !== this.getSearchTab())\n\t\t\t{\n\t\t\t\tthis.getTagSelector().clearTextBox();\n\t\t\t}\n\n\t\t\tthis.getTagSelector().focusTextBox();\n\t\t}\n\t}\n\n\tclearSearch(): void\n\t{\n\t\tif (this.getTagSelector())\n\t\t{\n\t\t\tthis.getTagSelector().clearTextBox();\n\n\t\t\tif (this.getActiveTab() === this.getSearchTab())\n\t\t\t{\n\t\t\t\tthis.selectFirstTab();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetLoader(): Loader\n\t{\n\t\tif (this.loader === null)\n\t\t{\n\t\t\tthis.loader = new Loader({\n\t\t\t\ttarget: this.getTabsContainer(),\n\t\t\t\tsize: 100\n\t\t\t});\n\t\t}\n\n\t\treturn this.loader;\n\t}\n\n\tshowLoader(): void\n\t{\n\t\tvoid this.getLoader().show();\n\t}\n\n\thideLoader(): void\n\t{\n\t\tif (this.loader !== null)\n\t\t{\n\t\t\tvoid this.getLoader().hide();\n\t\t}\n\t}\n\n\tdestroyLoader(): void\n\t{\n\t\tif (this.loader !== null)\n\t\t{\n\t\t\tthis.getLoader().destroy();\n\t\t}\n\n\t\tthis.loader = null;\n\t}\n\n\tgetPopup(): Popup\n\t{\n\t\tif (this.popup !== null)\n\t\t{\n\t\t\treturn this.popup;\n\t\t}\n\n\t\tthis.getTabs().forEach((tab: Tab) => {\n\t\t\tthis.insertTab(tab);\n\t\t});\n\n\t\tthis.popup = new Popup(Object.assign({\n\t\t\tcontentPadding: 0,\n\t\t\tpadding: 0,\n\t\t\toffsetTop: this.getOffsetTop(),\n\t\t\toffsetLeft: this.getOffsetLeft(),\n\t\t\tanimation: {\n\t\t\t\tshowClassName: 'ui-selector-popup-animation-show',\n\t\t\t\tcloseClassName: 'ui-selector-popup-animation-close',\n\t\t\t\tcloseAnimationType: 'animation'\n\t\t\t},\n\t\t\tbindElement: this.getTargetNode(),\n\t\t\tbindOptions: {\n\t\t\t\tforceBindPosition: true\n\t\t\t},\n\t\t\tautoHide: this.isAutoHide(),\n\t\t\tautoHideHandler: this.handleAutoHide.bind(this),\n\t\t\tcloseByEsc: this.shouldHideByEsc(),\n\t\t\tcacheable: this.isCacheable(),\n\t\t\tevents: {\n\t\t\t\tonFirstShow: this.handlePopupFirstShow.bind(this),\n\t\t\t\tonAfterShow: this.handlePopupAfterShow.bind(this),\n\t\t\t\tonAfterClose: this.handlePopupAfterClose.bind(this),\n\t\t\t\tonDestroy: this.handlePopupDestroy.bind(this)\n\t\t\t},\n\t\t\tcontent: this.getContainer()\n\t\t}, this.popupOptions));\n\n\t\tthis.rendered = true;\n\n\t\tthis.selectFirstTab();\n\n\t\treturn this.popup;\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.rendered;\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\n\t\t\tlet searchContainer = '';\n\t\t\tif (this.getTagSelectorMode() === TagSelectorMode.INSIDE)\n\t\t\t{\n\t\t\t\tsearchContainer = Tag.render`<div class=\"ui-selector-search\"></div>`;\n\n\t\t\t\tthis.getTagSelector().renderTo(searchContainer);\n\t\t\t}\n\n\t\t\tconst className = this.isCompactView() ? ' ui-selector-dialog--compact-view' : '';\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div \n\t\t\t\t\tclass=\"ui-selector-dialog${className}\" \n\t\t\t\t\tstyle=\"width:${this.getWidth()}px; height:${this.getHeight()}px;\"\n\t\t\t\t>\n\t\t\t\t\t${searchContainer}\n\t\t\t\t\t${this.getTabsContainer()}\n\t\t\t\t\t${this.getFooterContainer()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetTabsContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('tabs-container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-tabs\">\n\t\t\t\t\t${this.getTabContentsContainer()}\n\t\t\t\t\t${this.getLabelsContainer()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetTabContentsContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('tab-contents', () => {\n\t\t\treturn Tag.render`<div class=\"ui-selector-tab-contents\"></div>`;\n\t\t});\n\t}\n\n\tgetLabelsContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('labels-container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div \n\t\t\t\t\tclass=\"ui-selector-tab-labels\"\n\t\t\t\t\tonmouseenter=\"${this.handleLabelsMouseEnter.bind(this)}\"\n\t\t\t\t\tonmouseleave=\"${this.handleLabelsMouseLeave.bind(this)}\"\n\t\t\t\t></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetFooterContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('footer', () => {\n\t\t\tconst footer = this.getFooter() && this.getFooter().getContainer();\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-footer-container\">${footer ? footer : ''}</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tfreeze(): void\n\t{\n\t\tif (this.isFrozen())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.frozenProps = {\n\t\t\tautoHide: this.isAutoHide(),\n\t\t\thideByEsc: this.shouldHideByEsc(),\n\t\t};\n\n\t\tthis.setAutoHide(false);\n\t\tthis.setHideByEsc(false);\n\n\t\tthis.getNavigation().disable();\n\t\tDom.addClass(this.getContainer(), 'ui-selector-dialog--freeze');\n\n\t\tthis.frozen = true;\n\t}\n\n\tunfreeze(): void\n\t{\n\t\tif (!this.isFrozen())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setAutoHide(this.frozenProps.autoHide !== false);\n\t\tthis.setHideByEsc(this.frozenProps.hideByEsc !== false);\n\n\t\tthis.getNavigation().enable();\n\t\tDom.removeClass(this.getContainer(), 'ui-selector-dialog--freeze');\n\n\t\tthis.frozen = false;\n\t}\n\n\tisFrozen(): boolean\n\t{\n\t\treturn this.frozen;\n\t}\n\n\thasRecentItems(): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tAjax\n\t\t\t\t.runAction('ui.entityselector.load', {\n\t\t\t\t\tjson: {\n\t\t\t\t\t\tdialog: this.getAjaxJson()\n\t\t\t\t\t},\n\t\t\t\t\tgetParameters: {\n\t\t\t\t\t\tcontext: this.getContext()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tresolve(\n\t\t\t\t\t\tresponse.data && response.data.dialog && Type.isArrayFilled(response.data.dialog.recentItems)\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n\n\tload(): void\n\t{\n\t\tif (this.loadState !== LoadState.UNSENT || !this.hasDynamicLoad())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.getTagSelector())\n\t\t{\n\t\t\tthis.getTagSelector().lock();\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tif (this.isLoading())\n\t\t\t{\n\t\t\t\tthis.showLoader();\n\t\t\t}\n\t\t}, 400);\n\n\t\tthis.loadState = LoadState.LOADING;\n\n\t\tAjax.runAction('ui.entityselector.load', {\n\t\t\t\tjson: {\n\t\t\t\t\tdialog: this.getAjaxJson()\n\t\t\t\t},\n\t\t\t\tgetParameters: {\n\t\t\t\t\tcontext: this.getContext()\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tif (response && response.data && Type.isPlainObject(response.data.dialog))\n\t\t\t\t{\n\t\t\t\t\tthis.loadState = LoadState.DONE;\n\n\t\t\t\t\tconst entities =\n\t\t\t\t\t\tType.isArrayFilled(response.data.dialog.entities)\n\t\t\t\t\t\t\t? response.data.dialog.entities\n\t\t\t\t\t\t\t: []\n\t\t\t\t\t;\n\n\t\t\t\t\tentities.forEach((entityOptions: EntityOptions) => {\n\t\t\t\t\t\tconst entity = this.getEntity(entityOptions.id);\n\t\t\t\t\t\tif (entity)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tentity.setDynamicSearch(entityOptions.dynamicSearch);\n\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.setOptions(response.data.dialog);\n\n\t\t\t\t\tthis.getPreselectedItems().forEach((preselectedItem: ItemId) => {\n\t\t\t\t\t\tconst item = this.getItem(preselectedItem);\n\t\t\t\t\t\tif (item)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titem.select(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tconst recentItems = response.data.dialog.recentItems;\n\t\t\t\t\tif (Type.isArray(recentItems))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst nodeOptionsMap: Map<Item, ItemNodeOptions> = new Map();\n\t\t\t\t\t\tconst itemsOptions: ItemOptions[] = response.data.dialog.items;\n\t\t\t\t\t\tif (Type.isArray(itemsOptions))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titemsOptions.forEach((itemOptions: ItemOptions) => {\n\t\t\t\t\t\t\t\tif (itemOptions.nodeOptions)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconst item = this.getItem(itemOptions);\n\t\t\t\t\t\t\t\t\tif (item)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tnodeOptionsMap.set(item, itemOptions.nodeOptions);\n\t\t\t\t\t\t\t\t\t}\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\n\t\t\t\t\t\tconst items = recentItems.map((recentItem: ItemId) => {\n\t\t\t\t\t\t\tconst item = this.getItem(recentItem);\n\n\t\t\t\t\t\t\treturn [item, nodeOptionsMap.get(item)];\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tthis.getRecentTab().getRootNode().addItems(items);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.getRecentTab().getRootNode().hasChildren() && this.getRecentTab().getStub())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.getRecentTab().getStub().show();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.getTagSelector())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.getTagSelector().unlock();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.isRendered())\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.isDropdownMode() && this.getActiveTab() === this.getRecentTab())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.selectFirstTab();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (!this.getActiveTab())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.selectFirstTab();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.focusSearch();\n\t\t\t\t\tthis.destroyLoader();\n\n\t\t\t\t\tif (this.shouldFocusOnFirst())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.focusOnFirstNode();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.emit('onLoad');\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.loadState = LoadState.UNSENT;\n\n\t\t\t\tif (this.getTagSelector())\n\t\t\t\t{\n\t\t\t\t\tthis.getTagSelector().unlock();\n\t\t\t\t}\n\n\t\t\t\tthis.focusSearch();\n\t\t\t\tthis.destroyLoader();\n\n\t\t\t\tthis.emit('onLoadError', { error });\n\n\t\t\t\tconsole.error(error);\n\t\t\t});\n\t}\n\n\tisLoaded(): boolean\n\t{\n\t\treturn this.loadState === LoadState.DONE;\n\t}\n\n\tisLoading(): boolean\n\t{\n\t\treturn this.loadState === LoadState.LOADING;\n\t}\n\n\thasDynamicLoad(): boolean\n\t{\n\t\tlet hasDynamicLoad = false;\n\t\tthis.entities.forEach((entity: Entity) => {\n\t\t\thasDynamicLoad = hasDynamicLoad || entity.hasDynamicLoad();\n\t\t});\n\n\t\treturn hasDynamicLoad;\n\t}\n\n\thasDynamicSearch(): boolean\n\t{\n\t\tlet hasDynamicSearch = false;\n\t\tthis.entities.forEach((entity: Entity) => {\n\t\t\thasDynamicSearch = hasDynamicSearch || (entity.isSearchable() && entity.hasDynamicSearch());\n\t\t});\n\n\t\treturn hasDynamicSearch;\n\t}\n\n\tsaveRecentItem(item: Item): void\n\t{\n\t\tif (this.getContext() === null || !item.isSaveable())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.recentItemsToSave.push(item);\n\t\tthis.saveRecentItemsWithDebounce();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tsaveRecentItems(): void\n\t{\n\t\tif (!Type.isArrayFilled(this.recentItemsToSave))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tAjax.runAction('ui.entityselector.saveRecentItems', {\n\t\t\t\tjson: {\n\t\t\t\t\tdialog: this.getAjaxJson(),\n\t\t\t\t\trecentItems: this.recentItemsToSave.map((item: Item) => item.getAjaxJson())\n\t\t\t\t},\n\t\t\t\tgetParameters: {\n\t\t\t\t\tcontext: this.getContext()\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then((response) => {\n\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.error(error);\n\t\t\t});\n\n\t\tthis.recentItemsToSave = [];\n\t}\n\n\tshouldClearUnavailableItems(): boolean\n\t{\n\t\treturn this.clearUnavailableItems;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleTagSelectorInput(): void\n\t{\n\t\tif (this.getTagSelectorMode() === TagSelectorMode.OUTSIDE && !this.isOpen())\n\t\t{\n\t\t\tthis.show();\n\t\t}\n\n\t\tconst query = this.getTagSelector().getTextBoxValue();\n\t\tthis.search(query);\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleTagSelectorAddButtonClick(): void\n\t{\n\t\tthis.show();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleTagSelectorTagRemove(event: BaseEvent): void\n\t{\n\t\tconst { tag } = event.getData();\n\n\t\tconst item = this.getItem({ id: tag.getId(), entityId: tag.getEntityId() });\n\t\tif (item)\n\t\t{\n\t\t\titem.deselect();\n\t\t}\n\n\t\tthis.focusSearch();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleTagSelectorAfterTagRemove(): void\n\t{\n\t\tthis.adjustByTagSelector();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleTagSelectorAfterTagAdd(): void\n\t{\n\t\tthis.adjustByTagSelector();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tadjustByTagSelector(): void\n\t{\n\t\tif (this.getTagSelectorMode() === TagSelectorMode.OUTSIDE)\n\t\t{\n\t\t\tthis.adjustPosition();\n\t\t}\n\t\telse if (this.getTagSelectorMode() === TagSelectorMode.INSIDE)\n\t\t{\n\t\t\tconst newTagSelectorHeight = this.getTagSelector().calcHeight();\n\t\t\tif (newTagSelectorHeight > 0)\n\t\t\t{\n\t\t\t\tconst offset = newTagSelectorHeight - (this.tagSelectorHeight || this.getTagSelector().getMinHeight());\n\t\t\t\tthis.tagSelectorHeight = newTagSelectorHeight;\n\t\t\t\tif (offset !== 0)\n\t\t\t\t{\n\t\t\t\t\tconst height = this.getHeight();\n\t\t\t\t\tthis.setHeight(height + offset).then(() => {\n\t\t\t\t\t\tthis.adjustPosition();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleTagSelectorClick(): void\n\t{\n\t\tthis.focusSearch();\n\t}\n\n\t/**\n\t * @internal\n\t */\n\thandleItemSelect(item: Item, animate: boolean = true): void\n\t{\n\t\tif (!this.isMultiple())\n\t\t{\n\t\t\tthis.deselectAll();\n\n\t\t\tif (this.getSelectedItems().length > 0)\n\t\t\t{\n\t\t\t\tconsole.error('EntitySelector: some items are still selected.', this.getSelectedItems());\n\t\t\t}\n\t\t}\n\n\t\tif (this.getTagSelector() && (this.isMultiple() || this.isTagSelectorOutside()))\n\t\t{\n\t\t\tconst tag = item.createTag();\n\t\t\ttag.animate = animate;\n\t\t\tthis.getTagSelector().addTag(tag);\n\t\t}\n\n\t\tthis.selectedItems.add(item);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\thandleItemDeselect(item: Item): void\n\t{\n\t\tthis.selectedItems.delete(item);\n\n\t\tif (this.getTagSelector())\n\t\t{\n\t\t\tthis.getTagSelector().removeTag({\n\t\t\t\tid: item.getId(),\n\t\t\t\tentityId: item.getEntityId()\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupAfterShow(): void\n\t{\n\t\tthis.focusSearch();\n\t\tthis.adjustByTagSelector();\n\n\t\tthis.emit('onShow');\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupFirstShow(): void\n\t{\n\t\tthis.emit('onFirstShow');\n\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tDom.addClass(this.getPopup().getPopupContainer(), 'ui-selector-popup-container');\n\t\t\t});\n\t\t});\n\n\t\tthis.observeTabOverlapping();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleAutoHide(event: MouseEvent): void\n\t{\n\t\tconst target = event.target;\n\t\tconst el = this.getPopup().getPopupContainer();\n\t\tif (target === el || el.contains(target))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (\n\t\t\tthis.isTagSelectorOutside()\n\t\t\t&& target === this.getTagSelector().getTextBox()\n\t\t\t&& Type.isStringFilled(this.getTagSelector().getTextBoxValue())\n\t\t)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.autoHideHandler !== null)\n\t\t{\n\t\t\tconst result = this.autoHideHandler(event, this);\n\t\t\tif (Type.isBoolean(result))\n\t\t\t{\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tobserveTabOverlapping(): void\n\t{\n\t\tthis.disconnectTabOverlapping();\n\n\t\tthis.overlappingObserver = new MutationObserver(() => {\n\t\t\tif (this.getTabs().some((tab: Tab) => tab.isVisible()))\n\t\t\t{\n\t\t\t\tconst left = parseInt(this.getPopup().getPopupContainer().style.left, 10);\n\t\t\t\tif (left < this.getMinLabelWidth())\n\t\t\t\t{\n\t\t\t\t\tDom.style(this.getPopup().getPopupContainer(), 'left', `${this.getMinLabelWidth()}px`);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.overlappingObserver.observe(this.getPopup().getPopupContainer(), {\n\t\t\tattributes: true,\n\t\t\tattributeFilter: ['style']\n\t\t});\n\t}\n\n\t/**\n\t * @private\n\t */\n\tdisconnectTabOverlapping(): void\n\t{\n\t\tif (this.overlappingObserver)\n\t\t{\n\t\t\tthis.overlappingObserver.disconnect();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupAfterClose(): void\n\t{\n\t\tif (this.isTagSelectorOutside())\n\t\t{\n\t\t\tif (this.getActiveTab() && this.getActiveTab() === this.getSearchTab())\n\t\t\t{\n\t\t\t\tthis.selectFirstTab();\n\t\t\t}\n\n\t\t\tthis.getTagSelector().clearTextBox();\n\t\t\tthis.getTagSelector().showAddButton();\n\t\t\tthis.getTagSelector().hideTextBox();\n\t\t}\n\n\t\tthis.emit('onHide');\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupDestroy(): void\n\t{\n\t\tthis.destroy();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleLabelsMouseEnter(): void\n\t{\n\t\tconst rect = Dom.getRelativePosition(this.getLabelsContainer(), this.getPopup().getTargetContainer());\n\t\tconst freeSpace = rect.right;\n\n\t\tif (freeSpace > this.getMinLabelWidth())\n\t\t{\n\t\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-hide');\n\t\t\tDom.addClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-show');\n\n\t\t\tDom.style(this.getLabelsContainer(), 'max-width', `${Math.min(freeSpace, this.getMaxLabelWidth())}px`);\n\t\t\tAnimation.handleTransitionEnd(this.getLabelsContainer(), 'max-width').then(() => {\n\t\t\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-show');\n\t\t\t\tDom.addClass(this.getLabelsContainer(), 'ui-selector-tab-labels--active');\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.getLabelsContainer(), 'ui-selector-tab-labels--active');\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleLabelsMouseLeave(): void\n\t{\n\t\tDom.addClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-hide');\n\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-show');\n\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--active');\n\n\t\tAnimation.handleTransitionEnd(this.getLabelsContainer(), 'max-width').then(() => {\n\t\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-hide');\n\t\t});\n\n\t\tDom.style(this.getLabelsContainer(), 'max-width', null);\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleItemNodeFocus(event: BaseEvent): void\n\t{\n\t\tconst { node } = event.getData();\n\t\tif (this.focusedNode === node)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearNodeFocus();\n\n\t\tthis.focusedNode = node;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleItemNodeUnfocus(): void\n\t{\n\t\tthis.clearNodeFocus();\n\t}\n\n\tgetAjaxJson(): { [key: string]: any }\n\t{\n\t\treturn {\n\t\t\tid: this.getId(),\n\t\t\tcontext: this.getContext(),\n\t\t\tentities: this.getEntities(),\n\t\t\tpreselectedItems: this.getPreselectedItems(),\n\t\t\tclearUnavailableItems: this.shouldClearUnavailableItems()\n\t\t};\n\t}\n}","import Dialog from './dialog/dialog';\nimport Item from './item/item';\nimport Tab from './dialog/tabs/tab';\nimport Entity from './entity/entity';\nimport TagSelector from './tag-selector/tag-selector';\nimport BaseFooter from './dialog/footer/base-footer';\nimport DefaultFooter from './dialog/footer/default-footer';\nimport BaseStub from './dialog/tabs/base-stub';\nimport DefaultStub from './dialog/tabs/default-stub';\n\nimport type { DialogOptions } from './dialog/dialog-options';\nimport type { TabOptions } from './dialog/tabs/tab-options';\nimport type { ItemOptions } from './item/item-options';\nimport type { EntityOptions } from './entity/entity-options';\nimport type { TagSelectorOptions } from './tag-selector/tag-selector-options';\n\nimport './css/dialog.css';\nimport './css/tab.css';\nimport './css/item.css';\nimport './css/tag-selector.css';\n\nconst EntitySelector = {\n\tDialog,\n\tItem,\n\tTab,\n\tEntity,\n\tTagSelector,\n\tBaseFooter,\n\tDefaultFooter,\n\tBaseStub,\n\tDefaultStub\n};\n\n/**\n * @namespace BX.UI.EntitySelector\n */\nexport {\n\tEntitySelector,\n\tDialog,\n\tItem,\n\tTab,\n\tEntity,\n\tTagSelector,\n\tBaseFooter,\n\tDefaultFooter,\n\tBaseStub,\n\tDefaultStub\n}\n\nexport type {\n\tDialogOptions,\n\tTabOptions,\n\tItemOptions,\n\tEntityOptions,\n\tTagSelectorOptions\n}"],"names":["ItemNodeComparator","order","props","Object","keys","map","property","Text","capitalize","directions","values","forEach","element","direction","toLowerCase","trim","ascOrdering","nullsOrdering","push","numberOfProperties","length","nodeA","nodeB","i","result","propertyGetter","compareItemNodes","itemA","getItem","itemB","getCustomData","get","valueA","valueB","Type","isString","localeCompare","sortOrder","TextNodeType","type","HTML","TEXT","TextNode","options","isPlainObject","text","isValid","getText","getType","textContent","innerHTML","Highlighter","matches","encode","isStringFilled","count","offset","chunk","match","getStartIndex","substring","getEndIndex","ItemBadge","badgeOptions","WeakMap","setTitle","title","setTextColor","textColor","setBgColor","bgColor","titleNode","getTitleNode","isNullable","target","container","containers","document","createElement","className","set","getContainer","renderTo","Dom","style","getTextColor","getBgColor","append","SearchField","fieldOptions","name","Error","setType","setSystem","system","setSort","sort","setSearchable","searchable","isNumber","flag","isBoolean","isSystem","MatchIndex","field","queryWord","startIndex","endIndex","comparator","a","b","MatchField","indexes","OrderedArray","addIndexes","matchIndexes","matchIndex","add","isArray","addIndex","Animation","propertyName","properties","Set","Promise","resolve","handler","event","has","size","Event","unbind","bind","animationName","RenderMode","ItemNode","item","nodeOptions","Cache","MemoryCache","PARTIAL","Runtime","debounce","render","isObject","isFunction","itemOrder","makeMultipleComparator","children","renderMode","OVERRIDE","setSubtitle","setSupertitle","setCaption","setLinkTitle","avatar","avatarOptions","bgSize","bgImage","link","badges","captionOptions","fitContent","maxWidth","badgesOptions","subtitle","supertitle","caption","setCaptionOptions","setAvatar","setAvatarOptions","setLink","linkTitle","setBadges","setBadgesOptions","setDynamic","dynamic","setOpen","open","getParentNode","getTab","getDialog","tab","parentNode","siblings","getChildren","index","getIndex","getByIndex","childOptions","tabs","childItem","addItem","childNode","addChildren","child","isChildOf","childItems","setTab","setParentNode","isRendered","renderWithDebounce","isRoot","getDepthLevel","itemNode","createNode","addChild","items","disableRender","Item","enableRender","removeChildren","isFocused","unfocus","removeNode","remove","getOuterContainer","hasChildren","node","clear","Browser","isIE","clean","getChildrenContainer","parent","getFirst","getLast","isDynamic","dynamicPromise","Ajax","runAction","json","parentItem","getAjaxJson","dialog","getParameters","context","getContext","then","response","data","loaded","error","console","isLoaded","setAutoOpen","autoOpen","loader","Loader","getIndicatorContainer","getLoader","show","addClass","hide","removeClass","destroy","isOpen","loadChildren","destroyLoader","expand","showLoader","requestAnimationFrame","scrollHeight","handleTransitionEnd","offsetHeight","appendChildren","renderRoot","getTitleContainer","supertitleNode","getSupertitleNode","getSupertitleContainer","subtitleNode","getSubtitleNode","getSubtitleContainer","captionNode","getCaptionNode","getCaptionContainer","captionFitContent","getCaptionOption","captionMaxWidth","color","removeProperty","getAvatar","getAvatarContainer","backgroundImage","getAvatarOption","backgroundColor","backgroundSize","getBadgeContainer","getBadges","badge","badgesFitContent","getBadgesOption","badgesMaxWidth","linkTitleNode","getLinkTitleNode","getLinkTextContainer","getItemMaxDepth","classList","contains","highlight","renderChildren","isAutoOpen","rendered","stub","getStub","isAutoShow","hasDynamicLoad","previousSibling","insertAfter","option","isUndefined","value","setCaptionOption","setAvatarOption","replaceMacros","getLink","setBadgesOption","cache","remember","isSelected","div","appendChild","getItemsContainer","handleClick","handleMouseEnter","handleMouseLeave","getTitlesContainer","getLinkContainer","getTitleBoxContainer","anchor","href","handleLinkClick","span","highlights","getHighlights","matchField","getField","fieldName","getName","isCustom","mark","getMatches","focused","emit","collapse","isDeselectable","deselect","shouldHideOnDeselect","select","shouldClearSearchOnSelect","clearSearch","shouldHideOnSelect","focusSearch","tabContainer","nodeContainer","tabRect","getPosition","nodeRect","margin","top","scrollTop","bottom","click","stopPropagation","focus","showLink","hideLink","constructor","setAttribute","attr","offsetWidth","scrollWidth","replace","SearchFieldIndex","getIndexes","WordIndex","word","setWord","setStartIndex","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboMarksExtendedRange","rsComboMarksSupplementRange","rsComboRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsApos","rsBreak","rsCombo","rsDigit","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsOptJoin","join","rsOrdLower","rsOrdUpper","rsSeq","rsEmoji","unicodeWordsRegExp","RegExp","asciiWordRegExp","hasUnicodeWordRegExp","nonWhitespaceRegExp","specialChars","specialCharsRegExp","SearchIndex","fieldIndex","entity","getEntity","isSearchable","isHidden","searchFields","getSearchFields","textNode","stripTags","createIndex","getTitle","getSubtitle","getSupertitle","customData","repeat","wordIndexes","splitText","isArrayFilled","fillComplexWords","fillNonCharWords","position","indexOf","substr","hasUnicodeWord","splitUnicodeText","splitAsciiText","splitTextInternal","test","regExp","lastIndex","exec","complexWord","currentIndex","currentArrayIndex","nextIndex","sameWord","getWord","char","includes","wordToIndex","EntityFilter","filterOptions","id","getId","getOptions","Entity","entityOptions","Map","defaultOptions","getEntityDefaultOptions","merge","JSON","parse","stringify","itemOptions","tagOptions","filters","addFilter","fieldA","fieldB","getSort","setDynamicLoad","dynamicLoad","setDynamicSearch","dynamicSearch","setSearchFields","setSearchCacheLimits","searchCacheLimits","entityType","getOptionInternal","entityTypeBadges","getItemOption","getEntityType","conditions","condition","optionNodes","textNodes","undefined","itemOption","titleField","subtitleField","customFields","limits","limit","Array","from","filter","hasDynamicSearch","getFilters","getExtensions","extension","settings","Extension","getSettings","entities","extensions","entityId","getDefaultOptions","getItemOptions","getTagOptions","TypeUtils","entries","obj","isMap","key","selected","createMapFromOptions","setSaveable","saveable","setDeselectable","deselectable","setHidden","hidden","setContextSort","contextSort","setGlobalSort","globalSort","getEntityId","addEntity","resetSearchIndex","getEntityTextNode","getEntityItemOption","Loc","getMessage","nodes","preselectedMode","emitEvents","BaseEvent","isDefaultPrevented","handleItemSelect","getNodes","saveRecentItem","handleItemDeselect","getTagSelector","tag","getTag","searchIndex","create","getTagOption","getOptionTextNode","useItemOptions","fn","toPascalCase","getEntityTagOption","getTagGlobalOption","str","toJSON","getTagAvatar","getTagAvatarOptions","getTagLink","getTagMaxWidth","getTagTextColor","getTagBgColor","fontWeight","getTagFontWeight","isSaveable","getContextSort","getGlobalSort","convertMapToObject","BaseStub","autoShow","getOption","Tag","defaultValue","DefaultStub","getDefaultTitle","icon","getIcon","iconOpacity","Math","min","max","iconStyle","arrow","getActiveFooter","titleContainer","BaseFooter","Dialog","Tab","tabOptions","setDialog","showDefaultFooter","rootNode","setVisible","visible","setItemMaxDepth","itemMaxDepth","setIcon","setStub","stubOptions","setFooter","footer","footerOptions","setShowAvatars","showAvatars","instance","Reflection","getClass","footerContent","createFooter","getFooter","adjustFooter","appendFooter","renderContainer","shouldShowAvatars","renderLabel","setProperty","state","getPropertyByState","states","labelState","isHovered","selectedHovered","hovered","depth","isVisible","handleLabelClick","handleLabelMouseEnter","handleLabelMouseLeave","getIconContainer","getRootNode","getPropertyByCurrentState","getLabelContainer","locked","selectTab","hover","unhover","TagItem","onclick","setMaxWidth","setFontWeight","selector","getSelector","selectorAvatarOption","getTagAvatarOption","entityTagAvatarOptions","entityItemAvatarOptions","width","getContentContainer","hasAvatar","getMaxWidth","getFontWeight","getRemoveIcon","handleContainerClick","getOnclick","handleRemoveIconClick","animate","handleAnimationEnd","removeTag","TagSelector","selectorOptions","setEventNamespace","getRandom","multiple","addButtonVisible","showAddButton","createButtonVisible","showCreateButton","textBoxVisible","showTextBox","setReadonly","readonly","setLocked","setAddButtonCaption","addButtonCaption","setAddButtonCaptionMore","addButtonCaptionMore","setCreateButtonCaption","createButtonCaption","setPlaceholder","placeholder","setTextBoxAutoHide","textBoxAutoHide","setTextBoxWidth","textBoxWidth","setMaxHeight","maxHeight","setTagAvatar","tagAvatar","setTagAvatarOptions","tagAvatarOptions","setTagMaxWidth","tagMaxWidth","setTagTextColor","tagTextColor","setTagBgColor","tagBgColor","setTagFontWeight","tagFontWeight","dialogOptions","selectedItems","concat","assign","tagSelectorOptions","isMultiple","tagSelector","addTag","subscribeFromOptions","events","getTextBox","disabled","isLocked","changed","updateTags","tagItem","getTags","find","isObjectLike","setSelector","removeTags","tags","insertBefore","toggleAddButtonCaption","el","isDomNode","isReadonly","getMaxHeight","getCreateButton","getAddButton","input","getPlaceholder","handleTextBoxInput","handleTextBoxBlur","handleTextBoxKeyUp","handleTextBoxKeyDown","getTextBoxWidth","getItemsHeight","getMinHeight","textBoxOldValue","autoHide","setTagAvatarOption","height","getAddButtonLink","getActualButtonCaption","handleAddButtonClick","getAddButtonCaptionMore","getAddButtonCaption","handleCreateButtonClick","getCreateButtonCaption","newValue","getTextBoxValue","clearTextBox","hideTextBox","preventDefault","isMac","metaKey","ctrlKey","hideAddButton","focusTextBox","EventEmitter","Navigation","subscribe","handleDialogShow","handleDialogHide","handleDialogDestroy","handleDocumentKeyDown","handleDocumentMouseMove","isEnabled","bindEvents","enabled","unbindEvents","unlockTab","getActiveNode","nextNode","currentNode","getFirstChild","getNextSibling","previousNode","getPreviousSibling","lastChild","getLastChild","getActiveTab","lastNode","getFocusedNode","scrollIntoView","activeTab","lockedTab","lock","unlock","enable","disable","altKey","keyName","keyMap","getSearchTab","call","lockTab","firstNode","getFirstNode","focusOnNode","getNextNode","getLastNode","getPreviousNode","selectFirstTab","shiftKey","previousTab","getPreviousTab","selectLastTab","nextTab","getNextTab","SliderIntegration","handleSliderOpen","handleSliderClose","handleSliderDestroy","BX","unsubscribe","slider","getFrameWindow","sliders","unfreeze","getData","sliderEvent","getSlider","isDialogInSlider","freeze","DefaultFooter","setContent","getContent","containerStyles","content","RecentTab","defaults","isDropdownMode","MatchResult","queryWords","matchFields","fieldSort","collator","Intl","Collator","sensitivity","SearchEngine","searchQuery","matchResults","getQueryWords","getResultLimit","matchResult","matchItem","results","matchWord","searchIndexes","getSearchIndex","j","compare","SearchQuery","query","split","cacheable","resultLimit","getDynamicSearchEntities","hasDynamicSearchEntity","dynamicSearchEntities","getQuery","SearchLoader","getBoxContainer","getSpacerContainer","getTextContainer","isShown","SearchTabFooter","handleOnSearch","handleMetaEnter","getQueryContainer","getLoaderContainer","label","finalize","hideLoader","emitAsync","getLastSearchQuery","clearResults","createItem","SearchTab","searchOptions","setAllowCreateItem","allowCreateItem","loadWithDebounce","load","dynamicEntities","getDynamicEntities","setDynamicSearchEntities","isEmpty","getSearchLoader","lastSearchQuery","matchItems","getItems","appendResults","shouldFocusOnFirst","focusOnFirstNode","shouldLoad","isEmptyResult","toggleEmptyResult","matchSortA","matchSortB","contextSortA","contextSortB","globalSortA","globalSortB","hasItem","setHighlights","getMatchFields","getEntities","hasCacheLimit","getSearchCacheLimits","some","pattern","isCacheable","found","queryCache","startsWith","isQueryCacheable","isQueryLoaded","addCacheQuery","onrequeststart","xhr","queryXhr","removeCacheQuery","isTabEmpty","searchLoader","LoadState","TagSelectorMode","instances","UNSENT","saveRecentItems","clearUnavailableItems","compactView","dropdownMode","enableSearch","customOptions","mandatoryOptions","tagSelectorMode","INSIDE","setTagSelector","OUTSIDE","setTargetNode","targetNode","setHideOnSelect","hideOnSelect","setHideOnDeselect","hideOnDeselect","setClearSearchOnSelect","clearSearchOnSelect","setWidth","setHeight","setAutoHide","setAutoHideHandler","autoHideHandler","setHideByEsc","hideByEsc","setOffsetLeft","offsetLeft","setOffsetTop","offsetTop","setCacheable","setFocusOnFirst","focusOnFirst","recentTab","recentTabOptions","searchTab","searchTabOptions","addTab","setPreselectedItems","preselectedItems","setUndeselectedItems","undeselectedItems","setOptions","preload","getPreselectedItems","popupOptions","allowedOptions","navigation","handleItemNodeFocus","handleItemNodeUnfocus","getPopup","close","destroying","disconnectTabOverlapping","hasOwnProperty","setPrototypeOf","popup","adjustPosition","queryString","search","undeselectable","getUndeselectedItems","itemId","String","entityItems","tabId","removeChild","getEntityItemsInternal","getItemsInternal","removeItem","prototype","apply","itemIds","insertTab","newActiveTab","clearNodeFocus","getLabelsContainer","getTabContentsContainer","getFooterContainer","onlyVisible","getTabs","getRecentTab","activeFound","hasEntity","removeEntityItems","canShowDefaultFooter","getSelectedItems","isNull","setBindElement","getTagSelectorMode","setClosingByEsc","setOffset","getZindex","focusedNode","validateItemIds","maxLabelWidth","minLabelWidth","handleTagSelectorInput","handleTagSelectorAddButtonClick","handleTagSelectorTagRemove","handleTagSelectorAfterTagRemove","handleTagSelectorAfterTagAdd","handleTagSelectorClick","getTabsContainer","Popup","contentPadding","padding","getOffsetTop","getOffsetLeft","animation","showClassName","closeClassName","closeAnimationType","bindElement","getTargetNode","bindOptions","forceBindPosition","isAutoHide","handleAutoHide","closeByEsc","shouldHideByEsc","onFirstShow","handlePopupFirstShow","onAfterShow","handlePopupAfterShow","onAfterClose","handlePopupAfterClose","onDestroy","handlePopupDestroy","searchContainer","isCompactView","getWidth","getHeight","handleLabelsMouseEnter","handleLabelsMouseLeave","isFrozen","frozenProps","getNavigation","frozen","reject","recentItems","loadState","setTimeout","isLoading","LOADING","DONE","preselectedItem","nodeOptionsMap","itemsOptions","recentItem","addItems","recentItemsToSave","saveRecentItemsWithDebounce","adjustByTagSelector","newTagSelectorHeight","calcHeight","tagSelectorHeight","deselectAll","isTagSelectorOutside","createTag","getPopupContainer","observeTabOverlapping","overlappingObserver","MutationObserver","left","parseInt","getMinLabelWidth","observe","attributes","attributeFilter","disconnect","rect","getRelativePosition","getTargetContainer","freeSpace","right","getMaxLabelWidth","shouldClearUnavailableItems","EntitySelector"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.26 |
proxy
|
phpinfo
|
Settings