{"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/common/encode-url.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/header/base-header.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/header/default-header.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)\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 += '';\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 += '';\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 = 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 = 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\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}","const regexp = /^data:((?:\\w+\\/(?:(?!;).)+)?)((?:;[\\w\\W]*?[^;])*),(.+)$/;\n\nconst isDataUri = (str: string): boolean => {\n\treturn typeof(str) === 'string' ? str.match(regexp) : false;\n};\n\nexport default function encodeUrl(url: string): string\n{\n\tif (isDataUri(url))\n\t{\n\t\treturn url;\n\t}\n\n\treturn encodeURI(url);\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';\nimport encodeUrl from '../common/encode-url';\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 = null;\n\tchildItems: WeakMap = 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\thidden: boolean = false;\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\tborder: null,\n\t\t\t\tborderRadius: 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\tjustifyContent: 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\tjustifyContent: 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\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 captionJustifyContent = this.getCaptionOption('justifyContent');\n\t\tif (Type.isStringFilled(captionJustifyContent) || captionJustifyContent === null)\n\t\t{\n\t\t\tDom.style(\n\t\t\t\tthis.getCaptionContainer(),\n\t\t\t\t{\n\t\t\t\t\tflexGrow: captionJustifyContent ? '1' : null,\n\t\t\t\t\ttextAlign: captionJustifyContent || null,\n\t\t\t\t},\n\t\t\t);\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('${encodeUrl(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-image');\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\tconst border = this.getAvatarOption('border');\n\t\tif (Type.isStringFilled(border))\n\t\t{\n\t\t\tthis.getAvatarContainer().style.border = border;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getAvatarContainer().style.removeProperty('border');\n\t\t}\n\n\t\tconst borderRadius = this.getAvatarOption('borderRadius');\n\t\tif (Type.isStringFilled(borderRadius))\n\t\t{\n\t\t\tthis.getAvatarContainer().style.borderRadius = borderRadius;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getAvatarContainer().style.removeProperty('border-radius');\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 badgesJustifyContent = this.getBadgesOption('justifyContent');\n\t\tif (Type.isStringFilled(badgesJustifyContent) || badgesJustifyContent === null)\n\t\t{\n\t\t\tDom.style(\n\t\t\t\tthis.getBadgeContainer(),\n\t\t\t\t{\n\t\t\t\t\tflexGrow: badgesJustifyContent ? '1' : null,\n\t\t\t\t\tjustifyContent: badgesJustifyContent || null,\n\t\t\t\t},\n\t\t\t);\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\tif (this.hasChildren())\n\t\t{\n\t\t\tconst hasVisibleChild = this.getChildren().getAll().some((child: ItemNode) => {\n\t\t\t\treturn child.isHidden() !== true;\n\t\t\t});\n\n\t\t\tif (!hasVisibleChild)\n\t\t\t{\n\t\t\t\tthis.#setHidden(true);\n\t\t\t}\n\t\t}\n\n\t\tthis.toggleVisibility();\n\t\tthis.highlight();\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\tisHidden(): boolean\n\t{\n\t\treturn this.hidden === true || this.getItem().isHidden() === true;\n\t}\n\n\tsetHidden(flag: boolean): void\n\t{\n\t\tif (!Type.isBoolean(flag) || this.isRoot())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#setHidden(flag);\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.toggleVisibility();\n\n\t\t\tlet parentNode = this.getParentNode();\n\t\t\tconst isHidden = this.isHidden();\n\t\t\twhile (parentNode.isRoot() === false)\n\t\t\t{\n\t\t\t\tif (isHidden)\n\t\t\t\t{\n\t\t\t\t\tconst hasVisibleChild = parentNode.getChildren().getAll().some((child: ItemNode) => {\n\t\t\t\t\t\treturn child.isHidden() !== true;\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!hasVisibleChild)\n\t\t\t\t\t{\n\t\t\t\t\t\tparentNode.#setHidden(true);\n\t\t\t\t\t}\n\n\t\t\t\t\tparentNode.toggleVisibility();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tparentNode.#setHidden(false);\n\t\t\t\t\tparentNode.toggleVisibility();\n\t\t\t\t\tif (parentNode.isHidden())\n\t\t\t\t\t{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tparentNode = parentNode.getParentNode();\n\t\t\t}\n\t\t}\n\t}\n\n\t#setHidden(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag) && !this.isRoot())\n\t\t{\n\t\t\tthis.hidden = flag;\n\t\t}\n\t}\n\n\ttoggleVisibility(): boolean\n\t{\n\t\tif (this.isHidden())\n\t\t{\n\t\t\tDom.addClass(this.getOuterContainer(), '--hidden');\n\t\t}\n\t\telse if (this.getOuterContainer().classList.contains('--hidden'))\n\t\t{\n\t\t\tDom.removeClass(this.getOuterContainer(), '--hidden');\n\t\t}\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): 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, 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\telse if (field.getName() === 'caption')\n\t\t\t{\n\t\t\t\tthis.getCaptionContainer().innerHTML = (\n\t\t\t\t\tHighlighter.mark(this.getItem().getCaptionNode(), 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}\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 \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \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\telse if (field.getName() === 'caption')\n\t\t\t\t{\n\t\t\t\t\tconst textNode = item.getCaptionNode();\n\t\t\t\t\tconst stripTags = textNode !== null && textNode.getType() === 'html';\n\t\t\t\t\tindex.addIndex(this.createIndex(field, item.getCaption(), 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}\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 = null;\n\tdynamicLoad: boolean = false;\n\tdynamicSearch: boolean = false;\n\tsubstituteEntityId: string = null;\n\tsearchCacheLimits: RegExp[] = [];\n\tfilters: Map = new Map();\n\n\titemOptions: { [key: string]: any } = {};\n\ttagOptions: { [key: string]: any } = {};\n\tbadgeOptions: ItemBadgeOptions[] = [];\n\ttextNodes: Map> = 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\t\tthis.substituteEntityId = Type.isStringFilled(options.substituteEntityId) ? options.substituteEntityId : null;\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\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\tgetSubstituteEntityId(): string | null\n\t{\n\t\treturn this.substituteEntityId;\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\tsubstituteEntityId: this.getSubstituteEntityId(),\n\t\t};\n\t}\n}\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 = null;\n\tbadges: ItemBadgeOptions[] = null;\n\tbadgesOptions: BadgesOptions = {};\n\n\tdialog: Dialog = null;\n\tnodes: Set = 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 = 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): 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, 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\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\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getNodes().forEach((node: ItemNode) => {\n\t\t\t\t\tnode.setHidden(flag);\n\t\t\t\t});\n\t\t\t}\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\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\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
${this.render()}
\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';\nimport encodeUrl from '../../common/encode-url';\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('${encodeUrl(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
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
${title}
\n\t\t\t\t\t\t${\n\t\t\t\tsubtitle ?\n\t\t\t\t\tTag.render`
${subtitle}
`\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t${arrow ? Tag.render`
` : ''}\n\t\t\t\t
\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetDefaultTitle(): string\n\t{\n\t\tconst titleNode = this.getTab().getTitleNode();\n\t\tif (titleNode === null)\n\t\t{\n\t\t\treturn Loc.getMessage('UI_SELECTOR_TAB_STUB_TITLE').replace(/#TAB_TITLE#/, '');\n\t\t}\n\n\t\tconst titleContainer = Tag.render``;\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}\n","import { Tag, Type, Dom, Cache } from 'main.core';\nimport Dialog from '../dialog';\nimport type Tab from '../tabs/tab';\nimport type { HeaderOptions } from './header-content';\n\nexport default class BaseHeader\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: HeaderOptions)\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-header--show');\n\t}\n\n\thide(): void\n\t{\n\t\tDom.removeClass(this.getContainer(), 'ui-selector-header--show');\n\t}\n\n\tgetOptions(): HeaderOptions\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(): HTMLElement\n\t{\n\t\tif (this.container === null)\n\t\t{\n\t\t\tthis.container = Tag.render`\n\t\t\t\t
${this.render()}
\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 { 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(): HTMLElement\n\t{\n\t\tif (this.container === null)\n\t\t{\n\t\t\tthis.container = Tag.render`\n\t\t\t\t
${this.render()}
\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 BaseHeader from '../header/base-header';\nimport BaseFooter from '../footer/base-footer';\nimport TextNode from '../../common/text-node';\nimport encodeUrl from '../../common/encode-url';\n\nimport type { TabLabelState, TabLabelStates, TabOptions } from './tab-options';\nimport type { HeaderContent, HeaderOptions } from '../header/header-content';\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\theader: BaseHeader = null;\n\tshowDefaultHeader = true;\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.showDefaultHeader = options.showDefaultHeader !== false;\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.setHeader(options.header, options.headerOptions);\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\tgetHeader(): ?BaseHeader\n\t{\n\t\treturn this.header;\n\t}\n\n\tsetHeader(headerContent: ?HeaderContent, headerOptions?: HeaderOptions)\n\t{\n\t\t/** @var {BaseHeader} */\n\t\tlet header = null;\n\t\tif (headerContent !== null)\n\t\t{\n\t\t\theader = Dialog.createHeader(this, headerContent, headerOptions);\n\t\t\tif (header === null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this.isRendered() && this.getHeader() !== null)\n\t\t{\n\t\t\tDom.remove(this.getHeader().getContainer());\n\t\t\tthis.getDialog().adjustHeader();\n\t\t}\n\n\t\tthis.header = header;\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getDialog().appendHeader(header);\n\t\t\tthis.getDialog().adjustHeader();\n\t\t}\n\t}\n\n\tcanShowDefaultHeader(): boolean\n\t{\n\t\treturn this.showDefaultHeader;\n\t}\n\n\tenableDefaultHeader(): void\n\t{\n\t\tthis.showDefaultHeader = true;\n\t\tthis.getDialog().adjustHeader();\n\t}\n\n\tdisableDefaultHeader(): void\n\t{\n\t\tthis.showDefaultHeader = false;\n\t\tthis.getDialog().adjustHeader();\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 | null\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
${this.getItemsContainer()}
\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\n\t\t\t\t\t${this.getIconContainer()}\n\t\t\t\t\t${this.getTitleContainer()}\n\t\t\t\t\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
\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
\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
\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('${encodeUrl(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.getHeader())\n\t\t{\n\t\t\tthis.getHeader().show();\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.getHeader())\n\t\t{\n\t\t\tthis.getHeader().hide();\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}\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';\nimport encodeUrl from '../common/encode-url';\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 = 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): 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, 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\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('${encodeUrl(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\t\tconst border = this.getAvatarOption('border');\n\t\tconst borderRadius = this.getAvatarOption('borderRadius');\n\n\t\tDom.style(this.getAvatarContainer(), 'background-color', bgColor);\n\t\tDom.style(this.getAvatarContainer(), 'background-size', bgSize);\n\t\tDom.style(this.getAvatarContainer(), 'border', border);\n\t\tDom.style(this.getAvatarContainer(), 'border-radius', borderRadius);\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
\n\t\t\t\t\t${this.getContentContainer()}\n\t\t\t\t\t${this.getRemoveIcon()}\n\t\t\t\t
`\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\n\t\t\t\t\t\t${this.getAvatarContainer()}\n\t\t\t\t\t\t${this.getTitleContainer()}\n\t\t\t\t\t\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
\n\t\t\t\t\t\t${this.getAvatarContainer()}\n\t\t\t\t\t\t${this.getTitleContainer()}\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t`;\n\t\t\t}\n\t\t});\n\t}\n\n\tgetAvatarContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('avatar', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t
\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
\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
\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
${this.getContainer()}
\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
\n\t\t\t\t\t${this.getItemsContainer()}\n\t\t\t\t\t${this.getCreateButton()}\n\t\t\t\t
\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
\n\t\t\t\t\t${this.getTextBox()}\n\t\t\t\t\t${this.getAddButton()}\n\t\t\t\t
\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\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): 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, 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 34;\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\n\t\t\t\t\t${this.getAddButtonLink()}\n\t\t\t\t\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${caption}\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
\n\t\t\t\t\t${Text.encode(this.getCreateButtonCaption())}\n\t\t\t\t
\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}\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 = {\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}\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}\n","import { Dom, Tag, Type } from 'main.core';\nimport BaseHeader from './base-header';\nimport type Dialog from '../dialog';\nimport type Tab from '../tabs/tab';\nimport type { HeaderOptions } from './header-content';\n\nexport default class DefaultHeader extends BaseHeader\n{\n\tcontent: HTMLElement = null;\n\n\tconstructor(context: Dialog | Tab, options: HeaderOptions)\n\t{\n\t\tsuper(context, options);\n\n\t\tthis.setContent(this.getOption('content'));\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\tconst container = Tag.render`\n\t\t\t
\n\t\t\t\t${this.getContent() ? this.getContent() : '' }\n\t\t\t
\n\t\t`;\n\n\t\tconst className = this.getOption('containerClass', 'ui-selector-header-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[]): void\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 { 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(): HTMLElement\n\t{\n\t\tconst container = Tag.render`\n\t\t\t
\n\t\t\t\t${this.getContent() ? this.getContent() : '' }\n\t\t\t
\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[]): void\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 = 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\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
\n\t\t\t\t\t${this.getBoxContainer()}\n\t\t\t\t\t${this.getSpacerContainer()}\n\t\t\t\t
\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
\n\t\t\t\t\t${this.getIconContainer()}\n\t\t\t\t\t${this.getTextContainer()}\n\t\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});\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
${\n\t\t\t\t\tLoc.getMessage('UI_SELECTOR_SEARCH_LOADER_TEXT')\n\t\t\t\t}
\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`
`;\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
\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\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${\n\t\t\t\t\tthis.getOption('label', Loc.getMessage('UI_SELECTOR_CREATE_ITEM_LABEL'))\n\t\t\t}\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\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\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\tconst keyboardEvent: KeyboardEvent = event.getData().event;\n\t\tkeyboardEvent.stopPropagation();\n\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}\n","import { Runtime, ajax as Ajax, Type, Loc, type AjaxResponse } 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_MSGVER_1')\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 && matchSortA !== matchSortB)\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\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\tjson: {\n\t\t\t\tdialog: this.getDialog().getAjaxJson(),\n\t\t\t\tsearchQuery: searchQuery.getAjaxJson(),\n\t\t\t},\n\t\t\tonrequeststart: (xhr) => {\n\t\t\t\tthis.queryXhr = xhr;\n\t\t\t},\n\t\t\tgetParameters: {\n\t\t\t\tcontext: this.getDialog().getContext(),\n\t\t\t},\n\t\t})\n\t\t\t.then((response: AjaxResponse) => {\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\tthis.getDialog().emit('SearchTab:onLoad', { searchTab: this });\n\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\tif (this.getLastSearchQuery()?.getQuery() !== searchQuery.getQuery())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.loadWithDebounce();\n\t\t\t\t\t}\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\n\t\t\t\tthis.getDialog().emit('SearchTab:onLoad', { searchTab: this });\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}\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 BaseHeader from './header/base-header';\nimport DefaultHeader from './header/default-header';\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 { HeaderOptions, HeaderContent } from './header/header-content';\nimport type { FooterOptions, FooterContent } from './footer/footer-content';\nimport type { ItemNodeOptions } from '../item/item-node-options';\nimport type { TagItemOptions } from '../tag-selector/tag-item-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> = new Map();\n\ttabs: Map = new Map();\n\tentities: Map = 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\taddTagOnSelect: boolean = null;\n\tclearSearchOnSelect: boolean = true;\n\tcontext: string = null;\n\tselectedItems: Set = 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\trecentItemsLimit: ?number = null;\n\n\tnavigation: Navigation = null;\n\theader: BaseHeader = 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\toffsetAnimation: boolean = true;\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.tagSelector instanceof TagSelector)\n\t\t{\n\t\t\tthis.tagSelectorMode = TagSelectorMode.OUTSIDE;\n\t\t\tthis.setTagSelector(options.tagSelector);\n\t\t}\n\t\telse if (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: 102, // three lines\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\n\t\tthis.setTargetNode(options.targetNode);\n\t\tthis.setHideOnSelect(options.hideOnSelect);\n\t\tthis.setHideOnDeselect(options.hideOnDeselect);\n\t\tthis.setAddTagOnSelect(options.addTagOnSelect);\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\t\tthis.setRecentItemsLimit(options.recentItemsLimit);\n\t\tthis.setOffsetAnimation(options.offsetAnimation);\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 = new Set([\n\t\t\t\t'overlay',\n\t\t\t\t'bindOptions',\n\t\t\t\t'targetContainer',\n\t\t\t\t'zIndexOptions',\n\t\t\t\t'events',\n\t\t\t\t'animation',\n\t\t\t\t'className',\n\t\t\t]);\n\n\t\t\tconst popupOptions = {};\n\n\t\t\tObject.keys(options.popupOptions).forEach((option: string) => {\n\t\t\t\tif (allowedOptions.has(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) => {\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) => {\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>\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 | 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.adjustHeader();\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.getHeader())\n\t\t{\n\t\t\tDom.append(tab.getHeader().getContainer(), this.getHeaderContainer());\n\t\t}\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.getHeader())\n\t\t{\n\t\t\tDom.remove(tab.getHeader().getContainer(), this.getHeaderContainer());\n\t\t}\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\tgetHeader(): ?BaseHeader\n\t{\n\t\treturn this.header;\n\t}\n\n\tgetActiveHeader(): ?BaseHeader\n\t{\n\t\tif (!this.getActiveTab())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.getActiveTab().getHeader())\n\t\t{\n\t\t\treturn this.getActiveTab().getHeader();\n\t\t}\n\n\t\treturn this.getHeader() && this.getActiveTab().canShowDefaultHeader() ? this.getHeader() : null;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tadjustHeader(): void\n\t{\n\t\tif (!this.getActiveTab())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.getActiveTab().getHeader())\n\t\t{\n\t\t\tif (this.getHeader())\n\t\t\t{\n\t\t\t\tthis.getHeader().hide();\n\t\t\t}\n\n\t\t\tthis.getActiveTab().getHeader().show();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.getHeader())\n\t\t\t{\n\t\t\t\tif (this.getActiveTab().canShowDefaultHeader())\n\t\t\t\t{\n\t\t\t\t\tthis.getHeader().show();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.getHeader().hide();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsetHeader(headerContent: ?HeaderContent, headerOptions?: HeaderOptions): ?BaseHeader\n\t{\n\t\t/** @var {BaseHeader} */\n\t\tlet header = null;\n\t\tif (headerContent !== null)\n\t\t{\n\t\t\theader = this.constructor.createHeader(this, headerContent, headerOptions);\n\t\t\tif (header === 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.getHeader() !== null)\n\t\t{\n\t\t\tDom.remove(this.getHeader().getContainer());\n\t\t\tthis.adjustHeader();\n\t\t}\n\n\t\tthis.header = header;\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.appendHeader(header);\n\t\t\tthis.adjustHeader();\n\t\t}\n\n\t\treturn header;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tappendHeader(header: BaseHeader): void\n\t{\n\t\tif (header instanceof BaseHeader)\n\t\t{\n\t\t\tDom.append(header.getContainer(), this.getHeaderContainer());\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tstatic createHeader(context: Dialog | Tab, headerContent: HeaderContent, headerOptions?: HeaderOptions): ?BaseHeader\n\t{\n\t\tif (\n\t\t\t!Type.isStringFilled(headerContent) &&\n\t\t\t!Type.isArrayFilled(headerContent) &&\n\t\t\t!Type.isDomNode(headerContent) &&\n\t\t\t!Type.isFunction(headerContent)\n\t\t)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\t/** @var {BaseHeader} */\n\t\tlet header = null;\n\t\tconst options = Type.isPlainObject(headerOptions) ? headerOptions : {};\n\n\t\tif (Type.isFunction(headerContent) || Type.isString(headerContent))\n\t\t{\n\t\t\tconst className = Type.isString(headerContent) ? Reflection.getClass(headerContent) : headerContent;\n\t\t\tif (Type.isFunction(className))\n\t\t\t{\n\t\t\t\theader = new className(context, options);\n\t\t\t\tif (!(header instanceof BaseHeader))\n\t\t\t\t{\n\t\t\t\t\tconsole.error('EntitySelector: header is not an instance of BaseHeader.');\n\t\t\t\t\theader = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (headerContent !== null && !header)\n\t\t{\n\t\t\theader = new DefaultHeader(context, Object.assign({}, options, { content: headerContent }));\n\t\t}\n\n\t\treturn header;\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\tsetAddTagOnSelect(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.addTagOnSelect = flag;\n\t\t}\n\t}\n\n\tshouldAddTagOnSelect(): boolean\n\t{\n\t\tif (this.addTagOnSelect !== null)\n\t\t{\n\t\t\treturn this.addTagOnSelect;\n\t\t}\n\n\t\treturn this.isMultiple() || this.isTagSelectorOutside();\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\tsetRecentItemsLimit(recentItemsLimit: number): void\n\t{\n\t\tif (Type.isNumber(recentItemsLimit) && recentItemsLimit > 0)\n\t\t{\n\t\t\tthis.recentItemsLimit = recentItemsLimit;\n\t\t}\n\t}\n\n\tgetRecentItemsLimit(): ?number\n\t{\n\t\treturn this.recentItemsLimit;\n\t}\n\n\tsetOffsetAnimation(flag: boolean): any\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.offsetAnimation = flag;\n\n\t\t\tif (this.isRendered() && !this.offsetAnimation)\n\t\t\t{\n\t\t\t\tDom.removeClass(this.getPopup().getPopupContainer(), 'ui-selector-popup-offset-animation');\n\t\t\t}\n\t\t}\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.setHeader(options.header, options.headerOptions);\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\tconst popupOptions = { ...this.popupOptions };\n\t\tconst userEvents = popupOptions.events;\n\t\tdelete popupOptions.events;\n\n\t\tthis.popup = new Popup({\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\tonShow: this.handlePopupShow.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\t...popupOptions,\n\t\t});\n\n\t\tthis.popup.subscribeFromOptions(userEvents);\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`
`;\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\n\t\t\t\t\t${this.getHeaderContainer()}\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\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
\n\t\t\t\t\t${this.getTabContentsContainer()}\n\t\t\t\t\t${this.getLabelsContainer()}\n\t\t\t\t
\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`
`;\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\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetHeaderContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('header', () => {\n\t\t\tconst header = this.getHeader() && this.getHeader().getContainer();\n\n\t\t\treturn Tag.render`\n\t\t\t\t
${header ? header : ''}
\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\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 = 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\tconst shouldAnimate: boolean =\n\t\t\tthis.isMultiple()\n\t\t\t\t? animate\n\t\t\t\t: this.getSelectedItems().length === 0\n\t\t;\n\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.shouldAddTagOnSelect())\n\t\t{\n\t\t\tconst tag: TagItemOptions = item.createTag();\n\t\t\ttag.animate = shouldAnimate;\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\tconst shouldAnimate: boolean = this.isMultiple();\n\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}, shouldAnimate);\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\tthis.observeTabOverlapping();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupShow(): void\n\t{\n\t\tif (this.offsetAnimation)\n\t\t{\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tDom.addClass(this.getPopup().getPopupContainer(), 'ui-selector-popup-offset-animation');\n\t\t\t\t});\n\t\t\t});\n\t\t}\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.getLabelsContainer().offsetWidth > 0)\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\tif (this.offsetAnimation)\n\t\t{\n\t\t\tDom.removeClass(this.getPopup().getPopupContainer(), 'ui-selector-popup-offset-animation');\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\trecentItemsLimit: this.getRecentItemsLimit(),\n\t\t\tclearUnavailableItems: this.shouldClearUnavailableItems(),\n\t\t};\n\t}\n}\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 BaseHeader from './dialog/header/base-header';\nimport DefaultHeader from './dialog/header/default-header';\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\tBaseHeader,\n\tDefaultHeader,\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\tBaseHeader,\n\tDefaultHeader,\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","delete","size","Event","unbind","bind","animationName","regexp","isDataUri","str","encodeUrl","url","encodeURI","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","border","borderRadius","link","badges","captionOptions","fitContent","maxWidth","justifyContent","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","catch","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","captionJustifyContent","flexGrow","textAlign","captionMaxWidth","color","removeProperty","getAvatar","getAvatarContainer","backgroundImage","getAvatarOption","backgroundColor","backgroundSize","getBadgeContainer","getBadges","badge","badgesFitContent","getBadgesOption","badgesJustifyContent","badgesMaxWidth","linkTitleNode","getLinkTitleNode","getLinkTextContainer","getItemMaxDepth","classList","contains","hasVisibleChild","getAll","some","isHidden","toggleVisibility","highlight","renderChildren","isAutoOpen","rendered","stub","getStub","isAutoShow","hasDynamicLoad","previousSibling","insertAfter","hidden","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","searchFields","getSearchFields","textNode","stripTags","createIndex","getTitle","getSubtitle","getSupertitle","getCaption","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","substituteEntityId","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","getSubstituteEntityId","getExtensions","extension","settings","Extension","getSettings","entities","extensions","entityId","getDefaultOptions","getItemOptions","getTagOptions","TypeUtils","entries","obj","isMap","key","_classPrivateMethodInitSpec","selected","createMapFromOptions","setSaveable","saveable","setDeselectable","deselectable","setHidden","setContextSort","contextSort","setGlobalSort","globalSort","getEntityId","addEntity","resetSearchIndex","_classPrivateMethodGet","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","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","BaseHeader","Dialog","BaseFooter","Tab","tabOptions","setDialog","showDefaultHeader","showDefaultFooter","rootNode","setVisible","visible","setItemMaxDepth","itemMaxDepth","setIcon","setStub","stubOptions","setHeader","header","headerOptions","setFooter","footer","footerOptions","setShowAvatars","showAvatars","instance","Reflection","getClass","headerContent","createHeader","getHeader","adjustHeader","appendHeader","footerContent","createFooter","getFooter","adjustFooter","appendFooter","renderContainer","shouldShowAvatars","renderLabel","setProperty","state","getPropertyByState","states","labelState","isHovered","selectedHovered","hovered","default","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","sliderEvent","getData","getSlider","isDialogInSlider","freeze","DefaultHeader","setContent","getContent","containerStyles","content","DefaultFooter","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","keyboardEvent","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","pattern","isCacheable","found","queryCache","startsWith","isQueryCacheable","isQueryLoaded","addCacheQuery","onrequeststart","xhr","queryXhr","removeCacheQuery","searchTab","isTabEmpty","searchLoader","LoadState","TagSelectorMode","instances","UNSENT","saveRecentItems","clearUnavailableItems","compactView","dropdownMode","tagSelectorMode","OUTSIDE","setTagSelector","enableSearch","customOptions","mandatoryOptions","INSIDE","setTargetNode","targetNode","setHideOnSelect","hideOnSelect","setHideOnDeselect","hideOnDeselect","setAddTagOnSelect","addTagOnSelect","setClearSearchOnSelect","clearSearchOnSelect","setWidth","setHeight","setAutoHide","setAutoHideHandler","autoHideHandler","setHideByEsc","hideByEsc","setOffsetLeft","offsetLeft","setOffsetTop","offsetTop","setCacheable","setFocusOnFirst","focusOnFirst","setRecentItemsLimit","recentItemsLimit","setOffsetAnimation","offsetAnimation","recentTab","recentTabOptions","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","getHeaderContainer","getFooterContainer","onlyVisible","getTabs","getRecentTab","activeFound","hasEntity","removeEntityItems","canShowDefaultHeader","canShowDefaultFooter","getSelectedItems","isNull","setBindElement","getTagSelectorMode","isTagSelectorOutside","getPopupContainer","setClosingByEsc","setOffset","getZindex","focusedNode","validateItemIds","maxLabelWidth","minLabelWidth","handleTagSelectorInput","handleTagSelectorAddButtonClick","handleTagSelectorTagRemove","handleTagSelectorAfterTagRemove","handleTagSelectorAfterTagAdd","handleTagSelectorClick","getTabsContainer","userEvents","Popup","contentPadding","padding","getOffsetTop","getOffsetLeft","animation","showClassName","closeClassName","closeAnimationType","bindElement","getTargetNode","bindOptions","forceBindPosition","isAutoHide","handleAutoHide","closeByEsc","shouldHideByEsc","onFirstShow","handlePopupFirstShow","onShow","handlePopupShow","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","shouldAnimate","deselectAll","shouldAddTagOnSelect","createTag","observeTabOverlapping","overlappingObserver","MutationObserver","left","parseInt","getMinLabelWidth","observe","attributes","attributeFilter","disconnect","rect","getRelativePosition","getTargetContainer","freeSpace","right","getMaxLabelWidth","getRecentItemsLimit","shouldClearUnavailableItems","EntitySelector"],"mappings":"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"}