{"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};\n\t\t\tthis.badgesOptions = {\n\t\t\t\tfitContent: null,\n\t\t\t\tmaxWidth: null,\n\t\t\t};\n\t\t}\n\n\t\tthis.setTitle(options.title);\n\t\tthis.setSubtitle(options.subtitle);\n\t\tthis.setSupertitle(options.supertitle);\n\t\tthis.setCaption(options.caption);\n\t\tthis.setCaptionOptions(options.captionOptions);\n\t\tthis.setAvatar(options.avatar);\n\t\tthis.setAvatarOptions(options.avatarOptions);\n\t\tthis.setTextColor(options.textColor);\n\t\tthis.setLink(options.link);\n\t\tthis.setLinkTitle(options.linkTitle);\n\t\tthis.setBadges(options.badges);\n\t\tthis.setBadgesOptions(options.badgesOptions);\n\n\t\tthis.setDynamic(options.dynamic);\n\t\tthis.setOpen(options.open);\n\t}\n\n\tgetItem(): Item\n\t{\n\t\treturn this.item;\n\t}\n\n\tisRoot(): boolean\n\t{\n\t\treturn this.getParentNode() === null;\n\t}\n\n\tgetDialog(): Dialog\n\t{\n\t\treturn this.getTab().getDialog();\n\t}\n\n\tsetTab(tab: Tab): void\n\t{\n\t\tthis.tab = tab;\n\t}\n\n\tgetTab(): Tab\n\t{\n\t\treturn this.tab;\n\t}\n\n\tgetParentNode(): ?ItemNode\n\t{\n\t\treturn this.parentNode;\n\t}\n\n\tsetParentNode(parentNode: ItemNode): void\n\t{\n\t\tthis.parentNode = parentNode;\n\t}\n\n\tgetNextSibling(): ?ItemNode\n\t{\n\t\tif (!this.getParentNode())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst siblings = this.getParentNode().getChildren();\n\t\tconst index = siblings.getIndex(this);\n\n\t\treturn siblings.getByIndex(index + 1);\n\t}\n\n\tgetPreviousSibling(): ?ItemNode\n\t{\n\t\tif (!this.getParentNode())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst siblings = this.getParentNode().getChildren();\n\t\tconst index = siblings.getIndex(this);\n\n\t\treturn siblings.getByIndex(index - 1);\n\t}\n\n\taddChildren(children: ItemOptions[]): void\n\t{\n\t\tif (!Type.isArray(children))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tchildren.forEach((childOptions: ItemOptions) => {\n\t\t\tdelete childOptions.tabs;\n\t\t\tconst childItem = this.getDialog().addItem(childOptions);\n\n\t\t\tconst childNode = this.addItem(childItem, childOptions.nodeOptions);\n\t\t\tchildNode.addChildren(childOptions.children);\n\t\t});\n\t}\n\n\taddChild(child: ItemNode): ItemNode\n\t{\n\t\tif (!(child instanceof ItemNode))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.ItemNode: an item must be an instance of EntitySelector.ItemNode.');\n\t\t}\n\n\t\tif (this.isChildOf(child) || child === this)\n\t\t{\n\t\t\tthrow new Error('EntitySelector.ItemNode: a child item cannot be a parent of current item.');\n\t\t}\n\n\t\tif (this.getChildren().has(child) || this.childItems.has(child.getItem()))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tthis.getChildren().add(child);\n\t\tthis.childItems.set(child.getItem(), child);\n\n\t\tchild.setTab(this.getTab());\n\t\tchild.setParentNode(this);\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.renderWithDebounce();\n\t\t}\n\n\t\treturn child;\n\t}\n\n\tgetDepthLevel(): number\n\t{\n\t\treturn this.isRoot() ? 0 : this.getParentNode().getDepthLevel() + 1;\n\t}\n\n\taddItem(item: Item, nodeOptions: ItemNodeOptions): ItemNode\n\t{\n\t\tlet itemNode = this.childItems.get(item);\n\t\tif (!itemNode)\n\t\t{\n\t\t\titemNode = item.createNode(nodeOptions);\n\t\t\tthis.addChild(itemNode);\n\t\t}\n\n\t\treturn itemNode;\n\t}\n\n\taddItems(items: Item[] | Array<[Item, ItemNodeOptions]>): void\n\t{\n\t\tif (Type.isArray(items))\n\t\t{\n\t\t\tthis.disableRender();\n\n\t\t\titems.forEach((item: Item | [Item, ItemNodeOptions]) => {\n\t\t\t\tif (Type.isArray(item) && item.length === 2)\n\t\t\t\t{\n\t\t\t\t\tthis.addItem(item[0], item[1]);\n\t\t\t\t}\n\t\t\t\telse if (item instanceof Item)\n\t\t\t\t{\n\t\t\t\t\tthis.addItem(item);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.enableRender();\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.renderWithDebounce();\n\t\t\t}\n\t\t}\n\t}\n\n\thasItem(item: Item): boolean\n\t{\n\t\treturn this.childItems.has(item);\n\t}\n\n\tremoveChild(child: ItemNode): boolean\n\t{\n\t\tif (!this.getChildren().has(child))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tchild.removeChildren();\n\n\t\tif (child.isFocused())\n\t\t{\n\t\t\tchild.unfocus();\n\t\t}\n\n\t\tchild.setParentNode(null);\n\t\tchild.getItem().removeNode(child);\n\n\t\tthis.getChildren().delete(child);\n\t\tthis.childItems.delete(child.getItem());\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tDom.remove(child.getOuterContainer());\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tremoveChildren(): void\n\t{\n\t\tif (!this.hasChildren())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.getChildren().forEach((node: ItemNode) => {\n\n\t\t\tnode.removeChildren();\n\n\t\t\tif (node.isFocused())\n\t\t\t{\n\t\t\t\tnode.unfocus();\n\t\t\t}\n\n\t\t\tnode.setParentNode(null);\n\t\t\tnode.getItem().removeNode(node);\n\t\t});\n\n\t\tthis.getChildren().clear();\n\t\tthis.childItems = new WeakMap();\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tif (Browser.isIE())\n\t\t\t{\n\t\t\t\tDom.clean(this.getChildrenContainer());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getChildrenContainer().textContent = '';\n\t\t\t}\n\t\t}\n\t}\n\n\thasChild(child: ItemNode): boolean\n\t{\n\t\treturn this.getChildren().has(child);\n\t}\n\n\tisChildOf(parent: ItemNode): boolean\n\t{\n\t\tlet parentNode = this.getParentNode();\n\t\twhile (parentNode !== null)\n\t\t{\n\t\t\tif (parentNode === parent)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tparentNode = parentNode.getParentNode();\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tgetFirstChild(): ?ItemNode\n\t{\n\t\treturn this.children.getFirst();\n\t}\n\n\tgetLastChild(): ?ItemNode\n\t{\n\t\treturn this.children.getLast();\n\t}\n\n\tgetChildren(): OrderedArray\n\t{\n\t\treturn this.children;\n\t}\n\n\thasChildren(): boolean\n\t{\n\t\treturn this.children.count() > 0;\n\t}\n\n\tloadChildren(): Promise\n\t{\n\t\tif (!this.isDynamic())\n\t\t{\n\t\t\tthrow new Error('EntitySelector.ItemNode.loadChildren: an item node is not dynamic.');\n\t\t}\n\n\t\tif (this.dynamicPromise)\n\t\t{\n\t\t\treturn this.dynamicPromise;\n\t\t}\n\n\t\tthis.dynamicPromise = Ajax.runAction('ui.entityselector.getChildren', {\n\t\t\tjson: {\n\t\t\t\tparentItem: this.getItem().getAjaxJson(),\n\t\t\t\tdialog: this.getDialog().getAjaxJson()\n\t\t\t},\n\t\t\tgetParameters: {\n\t\t\t\tcontext: this.getDialog().getContext()\n\t\t\t}\n\t\t});\n\n\t\tthis.dynamicPromise.then((response) => {\n\t\t\tif (response && response.data && Type.isPlainObject(response.data.dialog))\n\t\t\t{\n\t\t\t\tthis.addChildren(response.data.dialog.items);\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tthis.loaded = true;\n\t\t});\n\n\t\tthis.dynamicPromise.catch((error) => {\n\t\t\tthis.loaded = false;\n\t\t\tthis.dynamicPromise = null;\n\t\t\tconsole.error(error);\n\t\t});\n\n\t\treturn this.dynamicPromise;\n\t}\n\n\tsetOpen(open: boolean): void\n\t{\n\t\tif (Type.isBoolean(open))\n\t\t{\n\t\t\tif (open && this.isDynamic() && !this.isLoaded())\n\t\t\t{\n\t\t\t\tthis.setAutoOpen(true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.open = open;\n\t\t\t}\n\t\t}\n\t}\n\n\tisOpen(): boolean\n\t{\n\t\treturn this.open;\n\t}\n\n\tisAutoOpen(): boolean\n\t{\n\t\treturn this.autoOpen && this.isDynamic() && !this.isLoaded();\n\t}\n\n\tsetAutoOpen(autoOpen: boolean): void\n\t{\n\t\tif (Type.isBoolean(autoOpen))\n\t\t{\n\t\t\tthis.autoOpen = autoOpen;\n\t\t}\n\t}\n\n\tsetDynamic(dynamic: boolean): void\n\t{\n\t\tif (Type.isBoolean(dynamic))\n\t\t{\n\t\t\tthis.dynamic = dynamic;\n\t\t}\n\t}\n\n\tisDynamic(): boolean\n\t{\n\t\treturn this.dynamic;\n\t}\n\n\tisLoaded(): boolean\n\t{\n\t\treturn this.loaded;\n\t}\n\n\tgetLoader(): Loader\n\t{\n\t\tif (this.loader === null)\n\t\t{\n\t\t\tthis.loader = new Loader({\n\t\t\t\ttarget: this.getIndicatorContainer(),\n\t\t\t\tsize: 30\n\t\t\t});\n\t\t}\n\n\t\treturn this.loader;\n\t}\n\n\tshowLoader(): void\n\t{\n\t\tvoid this.getLoader().show();\n\t\tDom.addClass(this.getIndicatorContainer(), 'ui-selector-item-indicator-hidden');\n\t}\n\n\thideLoader(): void\n\t{\n\t\tvoid this.getLoader().hide();\n\t\tDom.removeClass(this.getIndicatorContainer(), 'ui-selector-item-indicator-hidden');\n\t}\n\n\tdestroyLoader(): void\n\t{\n\t\tthis.getLoader().destroy();\n\t\tthis.loader = null;\n\t\tDom.removeClass(this.getIndicatorContainer(), 'ui-selector-item-indicator-hidden');\n\t}\n\n\texpand(): void\n\t{\n\t\tif (this.isOpen() || (!this.hasChildren() && !this.isDynamic()))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isDynamic() && !this.isLoaded())\n\t\t{\n\t\t\tthis.loadChildren().then(() => {\n\t\t\t\tthis.destroyLoader();\n\t\t\t\tthis.expand();\n\t\t\t});\n\n\t\t\tthis.showLoader();\n\n\t\t\treturn;\n\t\t}\n\n\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-item-box-open');\n\t\tDom.style(this.getChildrenContainer(), 'height', '0px');\n\t\tDom.style(this.getChildrenContainer(), 'opacity', 0);\n\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tDom.style(this.getChildrenContainer(), 'height', `${this.getChildrenContainer().scrollHeight}px`);\n\t\t\t\tDom.style(this.getChildrenContainer(), 'opacity', 1);\n\n\t\t\t\tAnimation.handleTransitionEnd(this.getChildrenContainer(), 'height').then(() => {\n\t\t\t\t\tDom.style(this.getChildrenContainer(), 'height', null);\n\t\t\t\t\tDom.style(this.getChildrenContainer(), 'opacity', null);\n\t\t\t\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-item-box-open');\n\t\t\t\t\tthis.setOpen(true);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tcollapse(): void\n\t{\n\t\tif (!this.isOpen())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.style(this.getChildrenContainer(), 'height', `${this.getChildrenContainer().offsetHeight}px`);\n\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tDom.style(this.getChildrenContainer(), 'height', '0px');\n\t\t\t\tDom.style(this.getChildrenContainer(), 'opacity', 0);\n\n\t\t\t\tAnimation.handleTransitionEnd(this.getChildrenContainer(), 'height').then(() => {\n\t\t\t\t\tDom.style(this.getChildrenContainer(), 'height', null);\n\t\t\t\t\tDom.style(this.getChildrenContainer(), 'opacity', null);\n\t\t\t\t\tDom.removeClass(this.getOuterContainer(), 'ui-selector-item-box-open');\n\t\t\t\t\tthis.setOpen(false);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\trender(appendChildren = false): void\n\t{\n\t\tif (this.isRoot())\n\t\t{\n\t\t\tthis.renderRoot(appendChildren);\n\t\t\treturn;\n\t\t}\n\n\t\tconst titleNode = this.getTitleNode();\n\t\tif (titleNode)\n\t\t{\n\t\t\ttitleNode.renderTo(this.getTitleContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getTitleContainer().textContent = '';\n\t\t}\n\n\t\tconst supertitleNode = this.getSupertitleNode();\n\t\tif (supertitleNode)\n\t\t{\n\t\t\tsupertitleNode.renderTo(this.getSupertitleContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getSupertitleContainer().textContent = '';\n\t\t}\n\n\t\tconst subtitleNode = this.getSubtitleNode();\n\t\tif (subtitleNode)\n\t\t{\n\t\t\tsubtitleNode.renderTo(this.getSubtitleContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getSubtitleContainer().textContent = '';\n\t\t}\n\n\t\tconst captionNode = this.getCaptionNode();\n\t\tif (captionNode)\n\t\t{\n\t\t\tcaptionNode.renderTo(this.getCaptionContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getCaptionContainer().textContent = '';\n\t\t}\n\n\t\tconst captionFitContent = this.getCaptionOption('fitContent');\n\t\tif (Type.isBoolean(captionFitContent))\n\t\t{\n\t\t\tDom.style(this.getCaptionContainer(), 'flex-shrink', captionFitContent ? 0 : null);\n\t\t}\n\n\t\tconst captionMaxWidth = this.getCaptionOption('maxWidth');\n\t\tif (Type.isString(captionMaxWidth) || Type.isNumber(captionMaxWidth))\n\t\t{\n\t\t\tDom.style(\n\t\t\t\tthis.getCaptionContainer(),\n\t\t\t\t'max-width',\n\t\t\t\tType.isNumber(captionMaxWidth) ? `${captionMaxWidth}px` : captionMaxWidth\n\t\t\t);\n\t\t}\n\n\t\tif (Type.isStringFilled(this.getTextColor()))\n\t\t{\n\t\t\tthis.getTitleContainer().style.color = this.getTextColor();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getTitleContainer().style.removeProperty('color');\n\t\t}\n\n\t\tconst avatar = this.getAvatar();\n\t\tif (Type.isStringFilled(avatar))\n\t\t{\n\t\t\tthis.getAvatarContainer().style.backgroundImage = `url('${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 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\t\t\t\tsubtitle ? \n\t\t\t\t\t\t\t\tTag.render`
${subtitle}
` \n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t\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()\n\t{\n\t\tconst titleNode = this.getTab().getTitleNode();\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}","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\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}","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 33;\n\t}\n\n\tsetMaxHeight(height: ?number): void\n\t{\n\t\tif ((Type.isNumber(height) && height > 0) || height === null)\n\t\t{\n\t\t\tthis.maxHeight = height;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tDom.style(this.getContainer(), 'max-height', height > 0 ? `${height}px` : null);\n\t\t\t\tDom.style(this.getContainer(), '-ms-overflow-style', height > 0 ? '-ms-autohiding-scrollbar' : null);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetAddButton(): HTMLElement\n\t{\n\t\treturn this.cache.remember('add-button', () => {\n\t\t\tconst className = this.addButtonVisible ? '' : ' ui-tag-selector-item-hidden';\n\n\t\t\treturn Tag.render`\n\t\t\t\t\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}","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\tthis.getDialog().unfreeze();\n\t}\n\n\thandleSliderOpen(event: BaseEvent): void\n\t{\n\t\tconst [sliderEvent] = event.getData();\n\t\tconst slider = sliderEvent.getSlider();\n\n\t\tif (!this.isDialogInSlider(slider))\n\t\t{\n\t\t\tthis.sliders.add(slider);\n\t\t\tthis.getDialog().freeze();\n\t\t}\n\t}\n\n\thandleSliderClose(event: BaseEvent): void\n\t{\n\t\tconst [sliderEvent] = event.getData();\n\t\tconst slider = sliderEvent.getSlider();\n\n\t\tthis.sliders.delete(slider);\n\t\tif (this.sliders.size === 0)\n\t\t{\n\t\t\tthis.getDialog().unfreeze();\n\t\t}\n\t}\n\n\thandleSliderDestroy(event: BaseEvent): void\n\t{\n\t\tconst [sliderEvent] = event.getData();\n\t\tconst slider = sliderEvent.getSlider();\n\n\t\tif (this.isDialogInSlider(slider))\n\t\t{\n\t\t\tthis.unbindEvents();\n\t\t\tthis.dialog.destroy();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.sliders.delete(slider);\n\t\t\tif (this.sliders.size === 0)\n\t\t\t{\n\t\t\t\tthis.getDialog().unfreeze();\n\t\t\t}\n\t\t}\n\t}\n}","import { Dom, Tag, Type } from 'main.core';\nimport 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\tif (this.getDialog().getActiveTab() !== this.getTab())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.handleClick();\n\t}\n\n\thandleOnSearch(event: BaseEvent): void\n\t{\n\t\tconst { query } = event.getData();\n\t\tthis.getQueryContainer().textContent = query;\n\t}\n}","import { Runtime, ajax as Ajax, Type, Loc } from 'main.core';\n\nimport Tab from './tab';\nimport SearchEngine from '../../search/search-engine';\nimport MatchResult from '../../search/match-result';\nimport SearchQuery from '../../search/search-query';\nimport SearchLoader from './search-loader';\nimport SearchTabFooter from '../footer/search-tab-footer';\n\nimport type { ItemOptions } from '../../item/item-options';\nimport type { TabOptions } from './tab-options';\nimport type Entity from '../../entity/entity';\nimport type Dialog from '../dialog';\nimport type { SearchOptions } from '../search-options';\n\nexport default class SearchTab extends Tab\n{\n\tlastSearchQuery: ?SearchQuery = null;\n\tqueryCache = new Set();\n\tqueryXhr = null;\n\tsearchLoader: SearchLoader = new SearchLoader(this);\n\tallowCreateItem: boolean = false;\n\n\tconstructor(dialog: Dialog, tabOptions: TabOptions, searchOptions: SearchOptions)\n\t{\n\t\tconst defaults = {\n\t\t\ttitle: Loc.getMessage('UI_SELECTOR_SEARCH_TAB_TITLE'),\n\t\t\tvisible: false,\n\t\t\tstub: true,\n\t\t\tstubOptions: {\n\t\t\t\tautoShow: false,\n\t\t\t\ttitle: Loc.getMessage('UI_SELECTOR_SEARCH_STUB_TITLE'),\n\t\t\t\tsubtitle: Loc.getMessage('UI_SELECTOR_SEARCH_STUB_SUBTITLE')\n\t\t\t}\n\t\t};\n\n\t\tconst options: TabOptions = Object.assign({}, defaults, tabOptions);\n\t\toptions.id = 'search';\n\t\toptions.stubOptions.autoShow = false;\n\n\t\tsuper(dialog, options);\n\n\t\tsearchOptions = Type.isPlainObject(searchOptions) ? searchOptions : {};\n\t\tthis.setAllowCreateItem(searchOptions.allowCreateItem, searchOptions.footerOptions);\n\n\t\tthis.loadWithDebounce = Runtime.debounce(() => {\n\t\t\tthis.load(this.getLastSearchQuery());\n\t\t}, 500);\n\t}\n\n\tsearch(query: string)\n\t{\n\t\tconst searchQuery = new SearchQuery(query);\n\t\tconst dynamicEntities = this.getDynamicEntities(searchQuery);\n\t\tsearchQuery.setDynamicSearchEntities(dynamicEntities);\n\n\t\tif (searchQuery.isEmpty())\n\t\t{\n\t\t\tthis.getSearchLoader().hide();\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.lastSearchQuery = searchQuery;\n\n\t\tconst matchResults = SearchEngine.matchItems(this.getDialog().getItems(), searchQuery);\n\t\tthis.clearResults();\n\t\tthis.appendResults(matchResults);\n\n\t\tif (this.getDialog().shouldFocusOnFirst())\n\t\t{\n\t\t\tthis.getDialog().focusOnFirstNode();\n\t\t}\n\n\t\tif (this.shouldLoad(searchQuery))\n\t\t{\n\t\t\tthis.loadWithDebounce();\n\t\t\tif (!this.isEmptyResult())\n\t\t\t{\n\t\t\t\tthis.getStub().hide();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (!this.getSearchLoader().isShown())\n\t\t\t{\n\t\t\t\tthis.toggleEmptyResult();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetLastSearchQuery(): ?SearchQuery\n\t{\n\t\treturn this.lastSearchQuery;\n\t}\n\n\tsetAllowCreateItem(flag: boolean, options?: { [option: string]: any }): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.allowCreateItem = flag;\n\n\t\t\tif (flag)\n\t\t\t{\n\t\t\t\tthis.setFooter(SearchTabFooter, options);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.setFooter(null);\n\t\t\t}\n\t\t}\n\t}\n\n\tcanCreateItem(): boolean\n\t{\n\t\treturn this.allowCreateItem;\n\t}\n\n\tappendResults(matchResults: MatchResult[]): void\n\t{\n\t\tmatchResults.sort((a: MatchResult, b: MatchResult) => {\n\n\t\t\tconst matchSortA = a.getSort();\n\t\t\tconst matchSortB = b.getSort();\n\n\t\t\tif (matchSortA !== null && matchSortB !== null && 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\t\t/*if (this.queryXhr)\n\t\t{\n\t\t\tthis.queryXhr.abort();\n\t\t}*/\n\n\t\tthis.addCacheQuery(searchQuery);\n\n\t\tthis.getStub().hide();\n\t\tthis.getSearchLoader().show();\n\n\t\tAjax.runAction('ui.entityselector.doSearch', {\n\t\t\t\tjson: {\n\t\t\t\t\tdialog: this.getDialog().getAjaxJson(),\n\t\t\t\t\tsearchQuery: searchQuery.getAjaxJson()\n\t\t\t\t},\n\t\t\t\tonrequeststart: (xhr) => {\n\t\t\t\t\tthis.queryXhr = xhr;\n\t\t\t\t},\n\t\t\t\tgetParameters: {\n\t\t\t\t\tcontext: this.getDialog().getContext()\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then(response => {\n\n\t\t\t\tthis.getSearchLoader().hide();\n\n\t\t\t\tif (!response || !response.data || !response.data.dialog || !response.data.dialog.items)\n\t\t\t\t{\n\t\t\t\t\tthis.removeCacheQuery(searchQuery);\n\t\t\t\t\tthis.toggleEmptyResult();\n\t\t\t\t\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}\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}","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\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\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: 99,\n\t\t\t\ttextBoxWidth: 105\n\t\t\t};\n\t\t\tconst customOptions = Type.isPlainObject(options.tagSelectorOptions) ? options.tagSelectorOptions : {};\n\t\t\tconst mandatoryOptions = {\n\t\t\t\tdialogOptions: null,\n\t\t\t\tshowTextBox: true,\n\t\t\t\tshowAddButton: false,\n\t\t\t\tshowCreateButton: false,\n\t\t\t\tmultiple: this.isMultiple()\n\t\t\t};\n\n\t\t\tconst tagSelectorOptions = Object.assign(defaultOptions, customOptions, mandatoryOptions);\n\t\t\tconst tagSelector = new TagSelector(tagSelectorOptions);\n\t\t\tthis.tagSelectorMode = TagSelectorMode.INSIDE;\n\t\t\tthis.setTagSelector(tagSelector);\n\t\t}\n\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\n\t\tthis.recentTab = new RecentTab(this, options.recentTabOptions);\n\t\tthis.searchTab = new SearchTab(this, options.searchTabOptions, options.searchOptions);\n\n\t\tthis.addTab(this.recentTab);\n\t\tthis.addTab(this.searchTab);\n\n\t\tthis.setPreselectedItems(options.preselectedItems);\n\t\tthis.setUndeselectedItems(options.undeselectedItems);\n\n\t\tthis.setOptions(options);\n\n\t\tconst preload = options.preload === true || this.getPreselectedItems().length > 0;\n\t\tif (preload)\n\t\t{\n\t\t\tthis.load();\n\t\t}\n\n\t\tif (Type.isPlainObject(options.popupOptions))\n\t\t{\n\t\t\tconst allowedOptions = ['overlay', 'bindOptions', 'targetContainer', 'zIndexOptions'];\n\t\t\tconst popupOptions = {};\n\n\t\t\tObject.keys(options.popupOptions).forEach((option: string) => {\n\t\t\t\tif (allowedOptions.includes(option))\n\t\t\t\t{\n\t\t\t\t\tpopupOptions[option] = options.popupOptions[option];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.popupOptions = popupOptions;\n\t\t}\n\n\t\tthis.navigation = new Navigation(this);\n\n\t\t(new SliderIntegration(this));\n\n\t\tthis.subscribe('ItemNode:onFocus', this.handleItemNodeFocus.bind(this));\n\t\tthis.subscribe('ItemNode:onUnfocus', this.handleItemNodeUnfocus.bind(this));\n\n\t\tthis.subscribeFromOptions(options.events);\n\n\t\tinstances.set(this.id, this);\n\t}\n\n\tshow(): void\n\t{\n\t\tthis.load();\n\t\tthis.getPopup().show();\n\t}\n\n\thide(): void\n\t{\n\t\tthis.getPopup().close();\n\t}\n\n\tdestroy(): void\n\t{\n\t\tif (this.destroying)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.destroying = true;\n\t\tthis.emit('onDestroy');\n\n\t\tthis.disconnectTabOverlapping();\n\t\tinstances.delete(this.getId());\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getPopup().destroy();\n\t\t}\n\n\t\tfor (const property in this)\n\t\t{\n\t\t\tif (this.hasOwnProperty(property))\n\t\t\t{\n\t\t\t\tdelete this[property];\n\t\t\t}\n\t\t}\n\n\t\tObject.setPrototypeOf(this, null);\n\t}\n\n\tisOpen(): boolean\n\t{\n\t\treturn this.popup && this.popup.isShown();\n\t}\n\n\tadjustPosition(): void\n\t{\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getPopup().adjustPosition();\n\t\t}\n\t}\n\n\tsearch(queryString: string): void\n\t{\n\t\tconst query = Type.isStringFilled(queryString) ? queryString.trim() : '';\n\n\t\tconst event = new BaseEvent({ data: { query } });\n\t\tthis.emit('onBeforeSearch', event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Type.isStringFilled(query))\n\t\t{\n\t\t\tthis.selectFirstTab();\n\t\t\tif (this.getSearchTab())\n\t\t\t{\n\t\t\t\tthis.getSearchTab().clearResults();\n\t\t\t}\n\t\t}\n\t\telse if (this.getSearchTab())\n\t\t{\n\t\t\tthis.selectTab(this.getSearchTab().getId());\n\t\t\tthis.getSearchTab().search(query);\n\t\t}\n\n\t\tthis.emit('onSearch', { query });\n\t}\n\n\taddItem(options: ItemOptions): Item\n\t{\n\t\tif (!Type.isPlainObject(options))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.addItem: wrong item options.');\n\t\t}\n\n\t\tlet item = this.getItem(options);\n\t\tif (!item)\n\t\t{\n\t\t\titem = new Item(options);\n\n\t\t\tconst undeselectable = this.getUndeselectedItems().some((itemId: ItemId) => {\n\t\t\t\treturn itemId[0] === item.getEntityId() && String(itemId[1]) === String(item.getId());\n\t\t\t});\n\n\t\t\tif (undeselectable)\n\t\t\t{\n\t\t\t\titem.setDeselectable(false);\n\t\t\t}\n\n\t\t\titem.setDialog(this);\n\n\t\t\tconst entity = this.getEntity(item.getEntityId());\n\t\t\tif (entity === null)\n\t\t\t{\n\t\t\t\tthis.addEntity({ id: item.getEntityId() });\n\t\t\t}\n\n\t\t\tlet entityItems = this.items.get(item.getEntityId());\n\t\t\tif (!entityItems)\n\t\t\t{\n\t\t\t\tentityItems = new Map();\n\t\t\t\tthis.items.set(item.getEntityId(), entityItems);\n\t\t\t}\n\n\t\t\tentityItems.set(String(item.getId()), item);\n\n\t\t\tif (item.isSelected())\n\t\t\t{\n\t\t\t\tthis.handleItemSelect(item);\n\t\t\t}\n\t\t}\n\n\t\tlet tabs = [];\n\t\tif (Type.isArray(options.tabs))\n\t\t{\n\t\t\ttabs = options.tabs;\n\t\t}\n\t\telse if (Type.isStringFilled(options.tabs))\n\t\t{\n\t\t\ttabs = [options.tabs];\n\t\t}\n\n\t\tconst children = Type.isArray(options.children) ? options.children : [];\n\n\t\ttabs.forEach((tabId) => {\n\t\t\tconst tab = this.getTab(tabId);\n\t\t\tif (tab)\n\t\t\t{\n\t\t\t\tconst itemNode = tab.getRootNode().addItem(item, options.nodeOptions);\n\t\t\t\titemNode.addChildren(children);\n\t\t\t}\n\t\t});\n\n\t\treturn item;\n\t}\n\n\tremoveItem(item: Item | ItemOptions): ?Item\n\t{\n\t\titem = this.getItem(item);\n\t\tif (item)\n\t\t{\n\t\t\tthis.handleItemDeselect(item);\n\n\t\t\titem.getNodes().forEach((node: ItemNode) => {\n\t\t\t\tnode.getParentNode().removeChild(node);\n\t\t\t});\n\n\t\t\tconst entityItems = this.getEntityItemsInternal(item.getEntityId());\n\t\t\tif (entityItems)\n\t\t\t{\n\t\t\t\tentityItems.delete(String(item.getId()));\n\t\t\t\tif (entityItems.size === 0)\n\t\t\t\t{\n\t\t\t\t\tthis.items.delete(item.getEntityId());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn item;\n\t}\n\n\tremoveItems(): void\n\t{\n\t\tthis.getItemsInternal().forEach((items: Map) => {\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\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\tthis.popup = new Popup(Object.assign({\n\t\t\tcontentPadding: 0,\n\t\t\tpadding: 0,\n\t\t\toffsetTop: this.getOffsetTop(),\n\t\t\toffsetLeft: this.getOffsetLeft(),\n\t\t\tanimation: {\n\t\t\t\tshowClassName: 'ui-selector-popup-animation-show',\n\t\t\t\tcloseClassName: 'ui-selector-popup-animation-close',\n\t\t\t\tcloseAnimationType: 'animation'\n\t\t\t},\n\t\t\tbindElement: this.getTargetNode(),\n\t\t\tbindOptions: {\n\t\t\t\tforceBindPosition: true\n\t\t\t},\n\t\t\tautoHide: this.isAutoHide(),\n\t\t\tautoHideHandler: this.handleAutoHide.bind(this),\n\t\t\tcloseByEsc: this.shouldHideByEsc(),\n\t\t\tcacheable: this.isCacheable(),\n\t\t\tevents: {\n\t\t\t\tonFirstShow: this.handlePopupFirstShow.bind(this),\n\t\t\t\tonAfterShow: this.handlePopupAfterShow.bind(this),\n\t\t\t\tonAfterClose: this.handlePopupAfterClose.bind(this),\n\t\t\t\tonDestroy: this.handlePopupDestroy.bind(this)\n\t\t\t},\n\t\t\tcontent: this.getContainer()\n\t\t}, this.popupOptions));\n\n\t\tthis.rendered = true;\n\n\t\tthis.selectFirstTab();\n\n\t\treturn this.popup;\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.rendered;\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\n\t\t\tlet searchContainer = '';\n\t\t\tif (this.getTagSelectorMode() === TagSelectorMode.INSIDE)\n\t\t\t{\n\t\t\t\tsearchContainer = Tag.render`
`;\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\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tDom.addClass(this.getPopup().getPopupContainer(), 'ui-selector-popup-container');\n\t\t\t});\n\t\t});\n\n\t\tthis.observeTabOverlapping();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleAutoHide(event: MouseEvent): void\n\t{\n\t\tconst target = event.target;\n\t\tconst el = this.getPopup().getPopupContainer();\n\t\tif (target === el || el.contains(target))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (\n\t\t\tthis.isTagSelectorOutside()\n\t\t\t&& target === this.getTagSelector().getTextBox()\n\t\t\t&& Type.isStringFilled(this.getTagSelector().getTextBoxValue())\n\t\t)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.autoHideHandler !== null)\n\t\t{\n\t\t\tconst result = this.autoHideHandler(event, this);\n\t\t\tif (Type.isBoolean(result))\n\t\t\t{\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tobserveTabOverlapping(): void\n\t{\n\t\tthis.disconnectTabOverlapping();\n\n\t\tthis.overlappingObserver = new MutationObserver(() => {\n\t\t\tif (this.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\tthis.emit('onHide');\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupDestroy(): void\n\t{\n\t\tthis.destroy();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleLabelsMouseEnter(): void\n\t{\n\t\tconst rect = Dom.getRelativePosition(this.getLabelsContainer(), this.getPopup().getTargetContainer());\n\t\tconst freeSpace = rect.right;\n\n\t\tif (freeSpace > this.getMinLabelWidth())\n\t\t{\n\t\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-hide');\n\t\t\tDom.addClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-show');\n\n\t\t\tDom.style(this.getLabelsContainer(), 'max-width', `${Math.min(freeSpace, this.getMaxLabelWidth())}px`);\n\t\t\tAnimation.handleTransitionEnd(this.getLabelsContainer(), 'max-width').then(() => {\n\t\t\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-show');\n\t\t\t\tDom.addClass(this.getLabelsContainer(), 'ui-selector-tab-labels--active');\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.getLabelsContainer(), 'ui-selector-tab-labels--active');\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleLabelsMouseLeave(): void\n\t{\n\t\tDom.addClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-hide');\n\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-show');\n\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--active');\n\n\t\tAnimation.handleTransitionEnd(this.getLabelsContainer(), 'max-width').then(() => {\n\t\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-hide');\n\t\t});\n\n\t\tDom.style(this.getLabelsContainer(), 'max-width', null);\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleItemNodeFocus(event: BaseEvent): void\n\t{\n\t\tconst { node } = event.getData();\n\t\tif (this.focusedNode === node)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearNodeFocus();\n\n\t\tthis.focusedNode = node;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleItemNodeUnfocus(): void\n\t{\n\t\tthis.clearNodeFocus();\n\t}\n\n\tgetAjaxJson(): { [key: string]: any }\n\t{\n\t\treturn {\n\t\t\tid: this.getId(),\n\t\t\tcontext: this.getContext(),\n\t\t\tentities: this.getEntities(),\n\t\t\tpreselectedItems: this.getPreselectedItems(),\n\t\t\tclearUnavailableItems: this.shouldClearUnavailableItems()\n\t\t};\n\t}\n}","import Dialog from './dialog/dialog';\nimport Item from './item/item';\nimport Tab from './dialog/tabs/tab';\nimport Entity from './entity/entity';\nimport TagSelector from './tag-selector/tag-selector';\nimport 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","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","captionMaxWidth","color","removeProperty","getAvatar","getAvatarContainer","backgroundImage","getAvatarOption","backgroundColor","backgroundSize","getBadgeContainer","getBadges","badge","badgesFitContent","getBadgesOption","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","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","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","setClosingByEsc","setOffset","getZindex","focusedNode","validateItemIds","maxLabelWidth","minLabelWidth","handleTagSelectorInput","handleTagSelectorAddButtonClick","handleTagSelectorTagRemove","handleTagSelectorAfterTagRemove","handleTagSelectorAfterTagAdd","handleTagSelectorClick","getTabsContainer","Popup","contentPadding","padding","getOffsetTop","getOffsetLeft","animation","showClassName","closeClassName","closeAnimationType","bindElement","getTargetNode","bindOptions","forceBindPosition","isAutoHide","handleAutoHide","closeByEsc","shouldHideByEsc","onFirstShow","handlePopupFirstShow","onAfterShow","handlePopupAfterShow","onAfterClose","handlePopupAfterClose","onDestroy","handlePopupDestroy","searchContainer","isCompactView","getWidth","getHeight","handleLabelsMouseEnter","handleLabelsMouseLeave","isFrozen","frozenProps","getNavigation","frozen","reject","recentItems","loadState","setTimeout","isLoading","LOADING","DONE","preselectedItem","nodeOptionsMap","itemsOptions","recentItem","addItems","recentItemsToSave","saveRecentItemsWithDebounce","adjustByTagSelector","newTagSelectorHeight","calcHeight","tagSelectorHeight","shouldAnimate","deselectAll","shouldAddTagOnSelect","createTag","getPopupContainer","observeTabOverlapping","overlappingObserver","MutationObserver","left","parseInt","getMinLabelWidth","observe","attributes","attributeFilter","disconnect","rect","getRelativePosition","getTargetContainer","freeSpace","right","getMaxLabelWidth","shouldClearUnavailableItems","EntitySelector"],"mappings":"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"}